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, 2004, 2005, 2006, 2007 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 24# 25 26# First, test for a proper version of make, but only where one is required. 27 28@if gcc 29ifeq (,$(.VARIABLES)) # The variable .VARIABLES, new with 3.80, is never empty. 30$(error GNU make version 3.80 or newer is required.) 31endif 32@endif gcc 33 34# ------------------------------- 35# Standard Autoconf-set variables 36# ------------------------------- 37VPATH=@srcdir@ 38 39build_alias=@build_noncanonical@ 40build_vendor=@build_vendor@ 41build_os=@build_os@ 42build=@build@ 43host_alias=@host_noncanonical@ 44host_vendor=@host_vendor@ 45host_os=@host_os@ 46host=@host@ 47target_alias=@target_noncanonical@ 48target_vendor=@target_vendor@ 49target_os=@target_os@ 50target=@target@ 51 52program_transform_name = @program_transform_name@ 53 54prefix = @prefix@ 55exec_prefix = @exec_prefix@ 56 57srcdir = @srcdir@ 58 59bindir = @bindir@ 60sbindir = @sbindir@ 61libexecdir = @libexecdir@ 62datadir = @datadir@ 63sysconfdir = @sysconfdir@ 64sharedstatedir = @sharedstatedir@ 65localstatedir = @localstatedir@ 66libdir = @libdir@ 67includedir = @includedir@ 68oldincludedir = @oldincludedir@ 69infodir = @infodir@ 70datarootdir = @datarootdir@ 71docdir = @docdir@ 72pdfdir = @pdfdir@ 73htmldir = @htmldir@ 74mandir = @mandir@ 75man1dir = $(mandir)/man1 76man2dir = $(mandir)/man2 77man3dir = $(mandir)/man3 78man4dir = $(mandir)/man4 79man5dir = $(mandir)/man5 80man6dir = $(mandir)/man6 81man7dir = $(mandir)/man7 82man8dir = $(mandir)/man8 83man9dir = $(mandir)/man9 84 85INSTALL = @INSTALL@ 86INSTALL_PROGRAM = @INSTALL_PROGRAM@ 87INSTALL_SCRIPT = @INSTALL_SCRIPT@ 88INSTALL_DATA = @INSTALL_DATA@ 89LN = @LN@ 90LN_S = @LN_S@ 91MAINT = @MAINT@ 92MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ 93MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ 94 95# ------------------------------------------------- 96# Miscellaneous non-standard autoconf-set variables 97# ------------------------------------------------- 98 99# The gcc driver likes to know the arguments it was configured with. 100TOPLEVEL_CONFIGURE_ARGUMENTS=@TOPLEVEL_CONFIGURE_ARGUMENTS@ 101 102tooldir = @tooldir@ 103build_tooldir = @build_tooldir@ 104 105GDB_NLM_DEPS = 106 107# This is the name of the environment variable used for the path to 108# the libraries. 109RPATH_ENVVAR = @RPATH_ENVVAR@ 110 111# On targets where RPATH_ENVVAR is PATH, a subdirectory of the GCC build path 112# is used instead of the directory itself to avoid including built 113# executables in PATH. 114GCC_SHLIB_SUBDIR = @GCC_SHLIB_SUBDIR@ 115 116# Build programs are put under this directory. 117BUILD_SUBDIR = @build_subdir@ 118# This is set by the configure script to the arguments to use when configuring 119# directories built for the build system. 120BUILD_CONFIGARGS = @build_configargs@ --with-build-subdir="$(BUILD_SUBDIR)" 121 122# This is the list of variables to export in the environment when 123# configuring any subdirectory. It must also be exported whenever 124# recursing into a build directory in case that directory's Makefile 125# re-runs configure. 126BASE_EXPORTS = \ 127 FLEX="$(FLEX)"; export FLEX; \ 128 LEX="$(LEX)"; export LEX; \ 129 BISON="$(BISON)"; export BISON; \ 130 YACC="$(YACC)"; export YACC; \ 131 M4="$(M4)"; export M4; \ 132 MAKEINFO="$(MAKEINFO)"; export MAKEINFO; 133 134# This is the list of variables to export in the environment when 135# configuring subdirectories for the build system. 136BUILD_EXPORTS = \ 137 $(BASE_EXPORTS) \ 138 AR="$(AR_FOR_BUILD)"; export AR; \ 139 AS="$(AS_FOR_BUILD)"; export AS; \ 140 CC="$(CC_FOR_BUILD)"; export CC; \ 141 CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \ 142 CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ 143 CXX="$(CXX_FOR_BUILD)"; export CXX; \ 144 CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ 145 GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ 146 GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \ 147 DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ 148 LD="$(LD_FOR_BUILD)"; export LD; \ 149 LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ 150 NM="$(NM_FOR_BUILD)"; export NM; \ 151 RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \ 152 WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \ 153 WINDMC="$(WINDMC_FOR_BUILD)"; export WINDMC; 154 155# These variables must be set on the make command line for directories 156# built for the build system to override those in BASE_FLAGS_TO_PASSS. 157EXTRA_BUILD_FLAGS = \ 158 CFLAGS="$(CFLAGS_FOR_BUILD)" \ 159 LDFLAGS="$(LDFLAGS_FOR_BUILD)" 160 161# This is the list of directories to built for the host system. 162SUBDIRS = @configdirs@ 163# This is set by the configure script to the arguments to use when configuring 164# directories built for the host system. 165HOST_CONFIGARGS = @host_configargs@ 166# Host programs are put under this directory, which is . except if building 167# with srcdir=.. 168HOST_SUBDIR = @host_subdir@ 169# This is the list of variables to export in the environment when 170# configuring subdirectories for the host system. We need to pass 171# some to the GCC configure because of its hybrid host/target nature. 172HOST_EXPORTS = \ 173 $(BASE_EXPORTS) \ 174 CC="$(CC)"; export CC; \ 175 ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \ 176 CFLAGS="$(CFLAGS)"; export CFLAGS; \ 177 CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ 178 CXX="$(CXX)"; export CXX; \ 179 CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ 180 AR="$(AR)"; export AR; \ 181 AS="$(AS)"; export AS; \ 182 CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ 183 DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \ 184 LD="$(LD)"; export LD; \ 185 LDFLAGS="$(LDFLAGS)"; export LDFLAGS; \ 186 NM="$(NM)"; export NM; \ 187 RANLIB="$(RANLIB)"; export RANLIB; \ 188 WINDRES="$(WINDRES)"; export WINDRES; \ 189 WINDMC="$(WINDMC)"; export WINDMC; \ 190 OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \ 191 OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \ 192 AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \ 193 AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \ 194 GCC_FOR_TARGET="$(GCC_FOR_TARGET)"; export GCC_FOR_TARGET; \ 195 LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \ 196 NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \ 197 OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \ 198 RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)"; export RANLIB_FOR_TARGET; \ 199 TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \ 200 GMPLIBS="$(HOST_GMPLIBS)"; export GMPLIBS; \ 201 GMPINC="$(HOST_GMPINC)"; export GMPINC; \ 202@if gcc-bootstrap 203 $(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ 204@endif gcc-bootstrap 205 $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); 206 207# Similar, for later GCC stages. 208POSTSTAGE1_HOST_EXPORTS = \ 209 $(HOST_EXPORTS) \ 210 CC="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \ 211 -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/"; export CC; \ 212 CC_FOR_BUILD="$(STAGE_CC_WRAPPER) \ 213 $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \ 214 -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ 215 -B$(build_tooldir)/bin/"; export CC_FOR_BUILD; \ 216 LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; 217 218# Target libraries are put under this directory: 219TARGET_SUBDIR = @target_subdir@ 220# This is set by the configure script to the arguments to use when configuring 221# directories built for the target. 222TARGET_CONFIGARGS = @target_configargs@ --with-target-subdir="$(TARGET_SUBDIR)" 223# This is the list of variables to export in the environment when 224# configuring subdirectories for the host system. 225BASE_TARGET_EXPORTS = \ 226 $(BASE_EXPORTS) \ 227 AR="$(AR_FOR_TARGET)"; export AR; \ 228 AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \ 229 CC="$(CC_FOR_TARGET)"; export CC; \ 230 CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ 231 CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ 232 CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ 233 CXXFLAGS="$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ 234 GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \ 235 GFORTRAN="$(GFORTRAN_FOR_TARGET)"; export GFORTRAN; \ 236 DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ 237 LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ 238 LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ 239 LIPO="$(LIPO_FOR_TARGET)"; export LIPO; \ 240 NM="$(COMPILER_NM_FOR_TARGET)"; export NM; \ 241 OBJDUMP="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP; \ 242 RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \ 243 STRIP="$(STRIP_FOR_TARGET)"; export STRIP; \ 244 WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \ 245 WINDMC="$(WINDMC_FOR_TARGET)"; export WINDMC; \ 246 $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); 247 248RAW_CXX_TARGET_EXPORTS = \ 249 $(BASE_TARGET_EXPORTS) \ 250 CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ 251 CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; 252 253NORMAL_TARGET_EXPORTS = \ 254 $(BASE_TARGET_EXPORTS) \ 255 CXX="$(CXX_FOR_TARGET)"; export CXX; 256 257# Where to find GMP 258HOST_GMPLIBS = @gmplibs@ 259HOST_GMPINC = @gmpinc@ 260 261# ---------------------------------------------- 262# Programs producing files for the BUILD machine 263# ---------------------------------------------- 264 265SHELL = @config_shell@ 266 267# pwd command to use. Allow user to override default by setting PWDCMD in 268# the environment to account for automounters. The make variable must not 269# be called PWDCMD, otherwise the value set here is passed to make 270# subprocesses and overrides the setting from the user's environment. 271# Don't use PWD since it is a common shell environment variable and we 272# don't want to corrupt it. 273PWD_COMMAND = $${PWDCMD-pwd} 274 275# compilers to use to create programs which must be run in the build 276# environment. 277AR_FOR_BUILD = @AR_FOR_BUILD@ 278AS_FOR_BUILD = @AS_FOR_BUILD@ 279CC_FOR_BUILD = @CC_FOR_BUILD@ 280CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ 281CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ 282CXX_FOR_BUILD = @CXX_FOR_BUILD@ 283DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ 284GCJ_FOR_BUILD = @GCJ_FOR_BUILD@ 285GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ 286LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ 287LD_FOR_BUILD = @LD_FOR_BUILD@ 288NM_FOR_BUILD = @NM_FOR_BUILD@ 289RANLIB_FOR_BUILD = @RANLIB_FOR_BUILD@ 290WINDMC_FOR_BUILD = @WINDMC_FOR_BUILD@ 291WINDRES_FOR_BUILD = @WINDRES_FOR_BUILD@ 292 293# Special variables passed down in EXTRA_GCC_FLAGS. They are defined 294# here so that they can be overridden by Makefile fragments. 295BUILD_PREFIX = @BUILD_PREFIX@ 296BUILD_PREFIX_1 = @BUILD_PREFIX_1@ 297 298# Flags to pass to stage2 and later makes. They are defined 299# here so that they can be overridden by Makefile fragments. 300BOOT_CFLAGS= -g -O2 301BOOT_LDFLAGS= 302BOOT_ADAFLAGS=-gnatpg -gnata 303 304BISON = @BISON@ 305YACC = @YACC@ 306FLEX = @FLEX@ 307LEX = @LEX@ 308M4 = @M4@ 309MAKEINFO = @MAKEINFO@ 310EXPECT = @EXPECT@ 311RUNTEST = @RUNTEST@ 312 313# This just becomes part of the MAKEINFO definition passed down to 314# sub-makes. It lets flags be given on the command line while still 315# using the makeinfo from the object tree. 316# (Default to avoid splitting info files by setting the threshold high.) 317MAKEINFOFLAGS = --split-size=5000000 318 319# --------------------------------------------- 320# Programs producing files for the HOST machine 321# --------------------------------------------- 322 323AS = @AS@ 324AR = @AR@ 325AR_FLAGS = rc 326CC = @CC@ 327CXX = @CXX@ 328DLLTOOL = @DLLTOOL@ 329LD = @LD@ 330LIPO = @LIPO@ 331NM = @NM@ 332OBJDUMP = @OBJDUMP@ 333RANLIB = @RANLIB@ 334STRIP = @STRIP@ 335WINDRES = @WINDRES@ 336WINDMC = @WINDMC@ 337 338GNATBIND = @GNATBIND@ 339GNATMAKE = @GNATMAKE@ 340 341CFLAGS = @CFLAGS@ 342LDFLAGS = @LDFLAGS@ 343LIBCFLAGS = $(CFLAGS) 344CXXFLAGS = @CXXFLAGS@ 345LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates 346 347# Only build the C compiler for stage1, because that is the only one that 348# we can guarantee will build with the native compiler, and also it is the 349# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS), 350# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them 351# overrideable (for a bootstrap build stage1 also builds gcc.info). 352 353STAGE1_CHECKING=@stage1_checking@ 354STAGE1_LANGUAGES=@stage1_languages@ 355 356STAGE1_CFLAGS=@stage1_cflags@ 357STAGE2_CFLAGS=$(BOOT_CFLAGS) 358STAGE3_CFLAGS=$(BOOT_CFLAGS) 359STAGE4_CFLAGS=$(BOOT_CFLAGS) 360 361STAGE1_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 362STAGE2_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 363STAGE3_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 364STAGE4_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 365 366do-compare = @do_compare@ 367do-compare3 = $(do-compare) 368do-compare-debug = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 369 370# ----------------------------------------------- 371# Programs producing files for the TARGET machine 372# ----------------------------------------------- 373 374FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ 375 376AR_FOR_TARGET=@AR_FOR_TARGET@ 377AS_FOR_TARGET=@AS_FOR_TARGET@ 378CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ $(FLAGS_FOR_TARGET) 379 380# If GCC_FOR_TARGET is not overriden on the command line, then this 381# variable is passed down to the gcc Makefile, where it is used to 382# build libgcc2.a. We define it here so that it can itself be 383# overridden on the command line. 384GCC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCC_FOR_TARGET@ $(FLAGS_FOR_TARGET) 385CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) 386RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) 387GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) 388GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ $(FLAGS_FOR_TARGET) 389DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ 390LD_FOR_TARGET=@LD_FOR_TARGET@ 391 392LIPO_FOR_TARGET=@LIPO_FOR_TARGET@ 393NM_FOR_TARGET=@NM_FOR_TARGET@ 394OBJDUMP_FOR_TARGET=@OBJDUMP_FOR_TARGET@ 395RANLIB_FOR_TARGET=@RANLIB_FOR_TARGET@ 396STRIP_FOR_TARGET=@STRIP_FOR_TARGET@ 397WINDRES_FOR_TARGET=@WINDRES_FOR_TARGET@ 398WINDMC_FOR_TARGET=@WINDMC_FOR_TARGET@ 399 400COMPILER_AS_FOR_TARGET=@COMPILER_AS_FOR_TARGET@ 401COMPILER_LD_FOR_TARGET=@COMPILER_LD_FOR_TARGET@ 402COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_TARGET@ 403 404CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@ 405CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@ 406SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ 407DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@ 408 409LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) 410LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates 411LDFLAGS_FOR_TARGET = 412 413# ------------------------------------ 414# Miscellaneous targets and flag lists 415# ------------------------------------ 416 417# The first rule in the file had better be this one. Don't put any above it. 418# This lives here to allow makefile fragments to contain dependencies. 419all: 420 421#### host and target specific makefile fragments come in here. 422@target_makefile_frag@ 423@alphaieee_frag@ 424@ospace_frag@ 425@host_makefile_frag@ 426### 427 428# This is the list of directories that may be needed in RPATH_ENVVAR 429# so that prorgams built for the target machine work. 430TARGET_LIB_PATH = [+ FOR target_modules +][+ 431 IF lib_path +]$(TARGET_LIB_PATH_[+module+])[+ ENDIF lib_path +][+ 432 ENDFOR target_modules +]$(HOST_LIB_PATH_gcc) 433[+ FOR target_modules +][+ IF lib_path +] 434@if target-[+module+] 435TARGET_LIB_PATH_[+module+] = $$r/$(TARGET_SUBDIR)/[+module+]/[+lib_path+]: 436@endif target-[+module+] 437[+ ENDIF lib_path +][+ ENDFOR target_modules +] 438 439 440# This is the list of directories that may be needed in RPATH_ENVVAR 441# so that programs built for the host machine work. 442HOST_LIB_PATH = [+ FOR host_modules +][+ 443 IF lib_path +]$(HOST_LIB_PATH_[+module+])[+ ENDIF lib_path +][+ 444 ENDFOR host_modules +] 445 446# Define HOST_LIB_PATH_gcc here, for the sake of TARGET_LIB_PATH, ouch 447@if gcc 448HOST_LIB_PATH_gcc = $$r/$(HOST_SUBDIR)/gcc$(GCC_SHLIB_SUBDIR):$$r/$(HOST_SUBDIR)/prev-gcc$(GCC_SHLIB_SUBDIR): 449@endif gcc 450 451[+ FOR host_modules +][+ IF lib_path +] 452@if [+module+] 453HOST_LIB_PATH_[+module+] = \ 454 $$r/$(HOST_SUBDIR)/[+module+]/[+lib_path+]:[+ IF bootstrap 455 +]$$r/$(HOST_SUBDIR)/prev-[+module+]/[+lib_path+]:[+ ENDIF bootstrap +] 456@endif [+module+] 457[+ ENDIF lib_path +][+ ENDFOR host_modules +] 458 459# Flags to pass down to all sub-makes. 460BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass +][+ IF optional +] \ 461 "`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \ 462 "[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +] \ 463 "CONFIG_SHELL=$(SHELL)" \ 464 "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" 465 466# We leave this in just in case, but it is not needed anymore. 467RECURSE_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) 468 469# Flags to pass down to most sub-makes, in which we're building with 470# the host environment. 471EXTRA_HOST_FLAGS = \ 472 'AR=$(AR)' \ 473 'AS=$(AS)' \ 474 'CC=$(CC)' \ 475 'CXX=$(CXX)' \ 476 'DLLTOOL=$(DLLTOOL)' \ 477 'LD=$(LD)' \ 478 'LIPO=$(LIPO)' \ 479 'NM=$(NM)' \ 480 'OBJDUMP=$(OBJDUMP)' \ 481 'RANLIB=$(RANLIB)' \ 482 'STRIP=$(STRIP)' \ 483 'WINDRES=$(WINDRES)' \ 484 'WINDMC=$(WINDMC)' 485 486FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) 487 488# Flags that are concerned with the location of the X11 include files 489# and library files 490# 491# NOTE: until the top-level is getting the values via autoconf, it only 492# causes problems to have this top-level Makefile overriding the autoconf-set 493# values in child directories. Only variables that don't conflict with 494# autoconf'ed ones should be passed by X11_FLAGS_TO_PASS for now. 495# 496X11_FLAGS_TO_PASS = \ 497 'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \ 498 'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)' 499 500# Flags to pass to stage2 and later makes. 501 502POSTSTAGE1_FLAGS_TO_PASS = \ 503 CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ 504 GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind" \ 505 LDFLAGS="$(BOOT_LDFLAGS)" \ 506 "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" 507 508# Flags to pass down to makes which are built with the target environment. 509# The double $ decreases the length of the command line; those variables 510# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The 511# *_CFLAGS_FOR_TARGET variables are not passed down and most often empty, 512# so we expand them here. 513EXTRA_TARGET_FLAGS = \ 514 'AR=$$(AR_FOR_TARGET)' \ 515 'AS=$(COMPILER_AS_FOR_TARGET)' \ 516 'CC=$$(CC_FOR_TARGET)' \ 517 'CFLAGS=$$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ 518 'CXX=$$(CXX_FOR_TARGET)' \ 519 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ 520 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 521 'LD=$(COMPILER_LD_FOR_TARGET)' \ 522 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ 523 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ 524 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ 525 'NM=$(COMPILER_NM_FOR_TARGET)' \ 526 'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \ 527 'RANLIB=$$(RANLIB_FOR_TARGET)' \ 528 'WINDRES=$$(WINDRES_FOR_TARGET)' \ 529 'WINDMC=$$(WINDMC_FOR_TARGET)' 530 531TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 532 533# Flags to pass down to gcc. gcc builds a library, libgcc.a, so it 534# unfortunately needs the native compiler and the target ar and 535# ranlib. 536# If any variables are added here, they must be added to do-*, below. 537# The BUILD_* variables are a special case, which are used for the gcc 538# cross-building scheme. 539EXTRA_GCC_FLAGS = \ 540 "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \ 541 "`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ 542 "`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ 543 "`echo 'LIBGCC2_CFLAGS=$(LIBGCC2_CFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ 544 "`echo 'LIBGCC2_DEBUG_CFLAGS=$(LIBGCC2_DEBUG_CFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ 545 "`echo 'LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" 546 547GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) 548 549.PHONY: configure-host 550configure-host: [+ 551 FOR host_modules +] \ 552 maybe-configure-[+module+][+ 553 ENDFOR host_modules +] 554.PHONY: configure-target 555configure-target: [+ 556 FOR target_modules +] \ 557 maybe-configure-target-[+module+][+ 558 ENDFOR target_modules +] 559 560# The target built for a native non-bootstrap build. 561.PHONY: all 562all: 563@if gcc-bootstrap 564 [ -f stage_final ] || echo stage3 > stage_final 565 @r=`${PWD_COMMAND}`; export r; \ 566 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 567 $(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble 568@endif gcc-bootstrap 569 @: $(MAKE); $(unstage) 570 @r=`${PWD_COMMAND}`; export r; \ 571 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 572 if [ -f stage_last ]; then \ 573 $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \ 574 else \ 575 $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target; \ 576 fi 577 578.PHONY: all-build 579[+ FOR build_modules +] 580all-build: maybe-all-build-[+module+][+ ENDFOR build_modules +] 581 582.PHONY: all-host 583[+ FOR host_modules +][+ IF bootstrap +] 584@if [+module+]-no-bootstrap[+ ENDIF bootstrap +] 585all-host: maybe-all-[+module+][+ IF bootstrap +] 586@endif [+module+]-no-bootstrap[+ ENDIF bootstrap +][+ ENDFOR host_modules +] 587 588.PHONY: all-target 589[+ FOR target_modules +][+ IF bootstrap +] 590@if target-[+module+]-no-bootstrap[+ ENDIF bootstrap +] 591all-target: maybe-all-target-[+module+][+ IF bootstrap +] 592@endif target-[+module+]-no-bootstrap[+ 593 ENDIF bootstrap +][+ ENDFOR target_modules +] 594 595# Do a target for all the subdirectories. A ``make do-X'' will do a 596# ``make X'' in all subdirectories (because, in general, there is a 597# dependency (below) of X upon do-X, a ``make X'' will also do this, 598# but it may do additional work as well). 599[+ FOR recursive_targets +] 600.PHONY: do-[+make_target+] 601do-[+make_target+]: 602 @: $(MAKE); $(unstage) 603 @r=`${PWD_COMMAND}`; export r; \ 604 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 605 $(MAKE) $(RECURSE_FLAGS_TO_PASS) [+make_target+]-host \ 606 [+make_target+]-target 607 608 609.PHONY: [+make_target+]-host 610[+ FOR host_modules +] 611[+make_target+]-host: maybe-[+make_target+]-[+module+][+ ENDFOR host_modules +] 612 613.PHONY: [+make_target+]-target 614[+ FOR target_modules +] 615[+make_target+]-target: maybe-[+make_target+]-target-[+module+][+ ENDFOR target_modules +] 616[+ ENDFOR recursive_targets +] 617 618# Here are the targets which correspond to the do-X targets. 619 620.PHONY: info installcheck dvi pdf html 621.PHONY: install-info install-pdf install-html 622.PHONY: clean distclean mostlyclean maintainer-clean realclean 623.PHONY: local-clean local-distclean local-maintainer-clean 624info: do-info 625installcheck: do-installcheck 626dvi: do-dvi 627pdf: do-pdf 628html: do-html 629 630# Make sure makeinfo is built before we do a `make info', if we're 631# in fact building texinfo. 632do-info: maybe-all-texinfo 633 634install-info: do-install-info dir.info 635 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 636 if [ -f dir.info ] ; then \ 637 $(INSTALL_DATA) dir.info $(DESTDIR)$(infodir)/dir.info ; \ 638 else true ; fi 639 640install-pdf: do-install-pdf 641 642install-html: do-install-html 643 644local-clean: 645 -rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E *.log 646 647local-distclean: 648 -rm -f Makefile config.status config.cache mh-frag mt-frag 649 -rm -f maybedep.tmp serdep.tmp 650 -if [ "$(TARGET_SUBDIR)" != "." ]; then \ 651 rm -rf $(TARGET_SUBDIR); \ 652 else true; fi 653 -rm -rf $(BUILD_SUBDIR) 654 -if [ "$(HOST_SUBDIR)" != "." ]; then \ 655 rm -rf $(HOST_SUBDIR); \ 656 else true; fi 657 -rm -f texinfo/po/Makefile texinfo/po/Makefile.in texinfo/info/Makefile 658 -rm -f texinfo/doc/Makefile texinfo/po/POTFILES 659 -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null 660 -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null 661 -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null 662 663local-maintainer-clean: 664 @echo "This command is intended for maintainers to use;" 665 @echo "it deletes files that may require special tools to rebuild." 666 667clean: do-clean local-clean 668mostlyclean: do-mostlyclean local-clean 669distclean: do-distclean local-clean local-distclean 670maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean 671maintainer-clean: local-distclean 672realclean: maintainer-clean 673 674# Check target. 675 676.PHONY: check do-check 677check: do-check 678 679# Only include modules actually being configured and built. 680.PHONY: check-host 681check-host: [+ 682 FOR host_modules +] \ 683 maybe-check-[+module+][+ 684 ENDFOR host_modules +] 685 686.PHONY: check-target 687check-target: [+ 688 FOR target_modules +] \ 689 maybe-check-target-[+module+][+ 690 ENDFOR target_modules +] 691 692do-check: 693 @: $(MAKE); $(unstage) 694 @r=`${PWD_COMMAND}`; export r; \ 695 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 696 $(MAKE) $(RECURSE_FLAGS_TO_PASS) check-host check-target 697 698# Automated reporting of test results. 699 700warning.log: build.log 701 $(srcdir)/contrib/warn_summary build.log > $@ 702 703mail-report.log: 704 if test x'$(BOOT_CFLAGS)' != x''; then \ 705 BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \ 706 fi; \ 707 $(srcdir)/contrib/test_summary -t >$@ 708 chmod +x $@ 709 echo If you really want to send e-mail, run ./$@ now 710 711mail-report-with-warnings.log: warning.log 712 if test x'$(BOOT_CFLAGS)' != x''; then \ 713 BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \ 714 fi; \ 715 $(srcdir)/contrib/test_summary -t -i warning.log >$@ 716 chmod +x $@ 717 echo If you really want to send e-mail, run ./$@ now 718 719# Installation targets. 720 721.PHONY: install uninstall 722install: 723 @: $(MAKE); $(unstage) 724 @r=`${PWD_COMMAND}`; export r; \ 725 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 726 $(MAKE) $(RECURSE_FLAGS_TO_PASS) installdirs install-host install-target 727 728.PHONY: install-host-nogcc 729install-host-nogcc: [+ 730 FOR host_modules +][+ IF (not (= (get "module") "gcc")) +] \ 731 maybe-install-[+module+][+ ENDIF +][+ 732 ENDFOR host_modules +] 733 734.PHONY: install-host 735install-host: [+ 736 FOR host_modules +] \ 737 maybe-install-[+module+][+ 738 ENDFOR host_modules +] 739 740.PHONY: install-target 741install-target: [+ 742 FOR target_modules +] \ 743 maybe-install-target-[+module+][+ 744 ENDFOR target_modules +] 745 746uninstall: 747 @echo "the uninstall target is not supported in this tree" 748 749.PHONY: install.all 750install.all: install-no-fixedincludes 751 @if [ -f ./gcc/Makefile ] ; then \ 752 r=`${PWD_COMMAND}` ; export r ; \ 753 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 754 $(HOST_EXPORTS) \ 755 (cd ./gcc && \ 756 $(MAKE) $(FLAGS_TO_PASS) install-headers) ; \ 757 else \ 758 true ; \ 759 fi 760 761# install-no-fixedincludes is used because Cygnus can not distribute 762# the fixed header files. 763.PHONY: install-no-fixedincludes 764install-no-fixedincludes: installdirs install-host-nogcc \ 765 install-target gcc-no-fixedincludes 766 767### other supporting targets 768 769MAKEDIRS= \ 770 $(DESTDIR)$(prefix) \ 771 $(DESTDIR)$(exec_prefix) 772.PHONY: installdirs 773installdirs: mkinstalldirs 774 $(SHELL) $(srcdir)/mkinstalldirs $(MAKEDIRS) 775 776dir.info: do-install-info 777 if [ -f $(srcdir)/texinfo/gen-info-dir ] ; then \ 778 $(srcdir)/texinfo/gen-info-dir $(DESTDIR)$(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \ 779 mv -f dir.info.new dir.info ; \ 780 else true ; \ 781 fi 782 783dist: 784 @echo "Building a full distribution of this tree isn't done" 785 @echo "via 'make dist'. Check out the etc/ subdirectory" 786 787etags tags: TAGS 788 789# Right now this just builds TAGS in each subdirectory. emacs19 has the 790# ability to use several tags files at once, so there is probably no need 791# to combine them into one big TAGS file (like CVS 1.3 does). We could 792# (if we felt like it) have this Makefile write a piece of elisp which 793# the user could load to tell emacs19 where all the TAGS files we just 794# built are. 795TAGS: do-TAGS 796 797# ------------------------------------ 798# Macros for configure and all targets 799# ------------------------------------ 800 801[+ DEFINE configure +] 802.PHONY: configure-[+prefix+][+module+] maybe-configure-[+prefix+][+module+] 803maybe-configure-[+prefix+][+module+]: 804@if gcc-bootstrap 805configure-[+prefix+][+module+]: stage_current 806@endif gcc-bootstrap 807@if [+prefix+][+module+] 808maybe-configure-[+prefix+][+module+]: configure-[+prefix+][+module+] 809configure-[+prefix+][+module+]: [+ IF bootstrap +][+ ELSE +] 810 @: $(MAKE); $(unstage)[+ ENDIF bootstrap +] 811 @r=`${PWD_COMMAND}`; export r; \ 812 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 813 [+ IF check_multilibs 814 +]echo "Checking multilib configuration for [+module+]..."; \ 815 $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \ 816 $(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp 2> /dev/null ; \ 817 if test -r [+subdir+]/[+module+]/multilib.out; then \ 818 if cmp -s [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; then \ 819 rm -f [+subdir+]/[+module+]/multilib.tmp; \ 820 else \ 821 rm -f [+subdir+]/[+module+]/Makefile; \ 822 mv [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; \ 823 fi; \ 824 else \ 825 mv [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; \ 826 fi; \ 827 [+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \ 828 $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \ 829 [+exports+] \ 830 echo Configuring in [+subdir+]/[+module+]; \ 831 cd "[+subdir+]/[+module+]" || exit 1; \ 832 case $(srcdir) in \ 833 /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ 834 *) topdir=`echo [+subdir+]/[+module+]/ | \ 835 sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ 836 esac; \ 837 srcdiroption="--srcdir=$${topdir}/[+module+]"; \ 838 libsrcdir="$$s/[+module+]"; \ 839 [+ IF no-config-site +]rm -f no-such-file || : ; \ 840 CONFIG_SITE=no-such-file [+ ENDIF +]$(SHELL) $${libsrcdir}/configure \ 841 [+args+] --build=${build_alias} --host=[+host_alias+] \ 842 --target=[+target_alias+] $${srcdiroption} [+extra_configure_flags+] \ 843 || exit 1 844@endif [+prefix+][+module+] 845 846[+ IF bootstrap +] 847[+ FOR bootstrap_stage +] 848.PHONY: configure-stage[+id+]-[+prefix+][+module+] maybe-configure-stage[+id+]-[+prefix+][+module+] 849maybe-configure-stage[+id+]-[+prefix+][+module+]: 850@if [+prefix+][+module+]-bootstrap 851maybe-configure-stage[+id+]-[+prefix+][+module+]: configure-stage[+id+]-[+prefix+][+module+] 852configure-stage[+id+]-[+prefix+][+module+]: 853 @[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start 854 @$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] 855 @r=`${PWD_COMMAND}`; export r; \ 856 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 857 [+ IF check_multilibs 858 +]echo "Checking multilib configuration for [+module+]..."; \ 859 $(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp 2> /dev/null ; \ 860 if test -r [+subdir+]/[+module+]/multilib.out; then \ 861 if cmp -s [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; then \ 862 rm -f [+subdir+]/[+module+]/multilib.tmp; \ 863 else \ 864 rm -f [+subdir+]/[+module+]/Makefile; \ 865 mv [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; \ 866 fi; \ 867 else \ 868 mv [+subdir+]/[+module+]/multilib.tmp [+subdir+]/[+module+]/multilib.out; \ 869 fi; \ 870 [+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \ 871 [+exports+][+ IF prev +] \ 872 [+poststage1_exports+][+ ENDIF prev +] [+ IF prefix +] \ 873 CFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ 874 CXXFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; [+ ELSE +] \ 875 CFLAGS="[+stage_cflags+]"; export CFLAGS; \ 876 CXXFLAGS="[+stage_cflags+]"; export CXXFLAGS; [+ ENDIF +] \ 877 echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \ 878 $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \ 879 cd [+subdir+]/[+module+] || exit 1; \ 880 case $(srcdir) in \ 881 /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ 882 *) topdir=`echo [+subdir+]/[+module+]/ | \ 883 sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ 884 esac; \ 885 srcdiroption="--srcdir=$${topdir}/[+module+]"; \ 886 libsrcdir="$$s/[+module+]"; \ 887 $(SHELL) $${libsrcdir}/configure \ 888 [+args+] --build=${build_alias} --host=[+host_alias+] \ 889 --target=[+target_alias+] $${srcdiroption} \ 890 [+ IF prev +]--with-build-libsubdir=$(HOST_SUBDIR)[+ ENDIF prev +] \ 891 [+stage_configure_flags+] [+extra_configure_flags+] 892@endif [+prefix+][+module+]-bootstrap 893[+ ENDFOR bootstrap_stage +] 894[+ ENDIF bootstrap +] 895[+ ENDDEF +] 896 897[+ DEFINE all +] 898.PHONY: all-[+prefix+][+module+] maybe-all-[+prefix+][+module+] 899maybe-all-[+prefix+][+module+]: 900@if gcc-bootstrap 901all-[+prefix+][+module+]: stage_current 902@endif gcc-bootstrap 903@if [+prefix+][+module+] 904TARGET-[+prefix+][+module+]=[+ 905 IF all_target +][+all_target+][+ ELSE +]all[+ ENDIF all_target +] 906maybe-all-[+prefix+][+module+]: all-[+prefix+][+module+] 907all-[+prefix+][+module+]: configure-[+prefix+][+module+][+ IF bootstrap +][+ ELSE +] 908 @: $(MAKE); $(unstage)[+ ENDIF bootstrap +] 909 @r=`${PWD_COMMAND}`; export r; \ 910 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 911 [+exports+] \ 912 (cd [+subdir+]/[+module+] && \ 913 $(MAKE) $(BASE_FLAGS_TO_PASS) [+args+] [+extra_make_flags+] \ 914 $(TARGET-[+prefix+][+module+])) 915@endif [+prefix+][+module+] 916 917[+ IF bootstrap +] 918[+ FOR bootstrap_stage +] 919.PHONY: all-stage[+id+]-[+prefix+][+module+] maybe-all-stage[+id+]-[+prefix+][+module+] 920.PHONY: clean-stage[+id+]-[+prefix+][+module+] maybe-clean-stage[+id+]-[+prefix+][+module+] 921maybe-all-stage[+id+]-[+prefix+][+module+]: 922maybe-clean-stage[+id+]-[+prefix+][+module+]: 923@if [+prefix+][+module+]-bootstrap 924maybe-all-stage[+id+]-[+prefix+][+module+]: all-stage[+id+]-[+prefix+][+module+] 925all-stage[+id+]: all-stage[+id+]-[+prefix+][+module+] 926TARGET-stage[+id+]-[+prefix+][+module+] = $(TARGET-[+prefix+][+module+]) 927all-stage[+id+]-[+prefix+][+module+]: configure-stage[+id+]-[+prefix+][+module+] 928 @[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start 929 @r=`${PWD_COMMAND}`; export r; \ 930 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 931 [+exports+][+ IF prev +] \ 932 [+poststage1_exports+][+ ENDIF prev +] \ 933 cd [+subdir+]/[+module+] && \ 934 $(MAKE) $(BASE_FLAGS_TO_PASS) \ 935 CFLAGS="[+stage_cflags+]" CXXFLAGS="[+stage_cflags+]" \ 936 LIBCFLAGS="[+stage_libcflags+]" \ 937 CFLAGS_FOR_TARGET="[+stage_libcflags+]" \ 938 CXXFLAGS_FOR_TARGET="[+stage_libcflags+]" [+args+] [+ 939 IF prev +][+poststage1_args+][+ ENDIF prev 940 +] [+extra_make_flags+] \ 941 $(TARGET-stage[+id+]-[+prefix+][+module+]) 942 943maybe-clean-stage[+id+]-[+prefix+][+module+]: clean-stage[+id+]-[+prefix+][+module+] 944clean-stage[+id+]: clean-stage[+id+]-[+prefix+][+module+] 945clean-stage[+id+]-[+prefix+][+module+]: 946 @if [ $(current_stage) = stage[+id+] ]; then \ 947 [ -f [+subdir+]/[+module+]/Makefile ] || exit 0; \ 948 else \ 949 [ -f [+subdir+]/stage[+id+]-[+module+]/Makefile ] || exit 0; \ 950 $(MAKE) stage[+id+]-start; \ 951 fi; \ 952 cd [+subdir+]/[+module+] && \ 953 $(MAKE) [+args+] [+ IF prev +] \ 954 [+poststage1_args+] [+ ENDIF prev +] \ 955 [+extra_make_flags+] clean 956@endif [+prefix+][+module+]-bootstrap 957 958[+ ENDFOR bootstrap_stage +] 959[+ ENDIF bootstrap +] 960[+ ENDDEF +] 961 962# -------------------------------------- 963# Modules which run on the build machine 964# -------------------------------------- 965[+ FOR build_modules +] 966[+ configure prefix="build-" subdir="$(BUILD_SUBDIR)" exports="$(BUILD_EXPORTS)" 967 host_alias=(get "host" "${build_alias}") 968 target_alias=(get "target" "${target_alias}") 969 args="$(BUILD_CONFIGARGS)" no-config-site=true +] 970 971[+ all prefix="build-" subdir="$(BUILD_SUBDIR)" exports="$(BUILD_EXPORTS)" 972 args="$(EXTRA_BUILD_FLAGS)" +] 973[+ ENDFOR build_module +] 974 975# -------------------------------------- 976# Modules which run on the host machine 977# -------------------------------------- 978[+ FOR host_modules +] 979[+ configure prefix="" subdir="$(HOST_SUBDIR)" 980 exports="$(HOST_EXPORTS)" 981 poststage1_exports="$(POSTSTAGE1_HOST_EXPORTS)" 982 host_alias=(get "host" "${host_alias}") 983 target_alias=(get "target" "${target_alias}") 984 args="$(HOST_CONFIGARGS)" +] 985 986[+ all prefix="" subdir="$(HOST_SUBDIR)" 987 exports="$(HOST_EXPORTS)" 988 poststage1_exports="$(POSTSTAGE1_HOST_EXPORTS)" 989 args="$(EXTRA_HOST_FLAGS)" 990 poststage1_args="$(POSTSTAGE1_FLAGS_TO_PASS)" +] 991 992.PHONY: check-[+module+] maybe-check-[+module+] 993maybe-check-[+module+]: 994@if [+module+] 995maybe-check-[+module+]: check-[+module+] 996[+ IF no_check +] 997check-[+module+]: 998[+ ELIF no_check_cross +] 999# This module is only tested in a native toolchain. 1000check-[+module+]: 1001 @: $(MAKE); $(unstage) 1002 @if [ '$(host)' = '$(target)' ] ; then \ 1003 r=`${PWD_COMMAND}`; export r; \ 1004 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1005 $(HOST_EXPORTS) \ 1006 (cd $(HOST_SUBDIR)/[+module+] && \ 1007 $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check); \ 1008 fi 1009[+ ELSE check +] 1010check-[+module+]: 1011 @: $(MAKE); $(unstage) 1012 @r=`${PWD_COMMAND}`; export r; \ 1013 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1014 $(HOST_EXPORTS) \ 1015 (cd $(HOST_SUBDIR)/[+module+] && \ 1016 $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check) 1017[+ ENDIF no_check +] 1018@endif [+module+] 1019 1020.PHONY: install-[+module+] maybe-install-[+module+] 1021maybe-install-[+module+]: 1022@if [+module+] 1023maybe-install-[+module+]: install-[+module+] 1024[+ IF no_install +] 1025install-[+module+]: 1026[+ ELSE install +] 1027install-[+module+]: installdirs 1028 @: $(MAKE); $(unstage) 1029 @r=`${PWD_COMMAND}`; export r; \ 1030 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1031 $(HOST_EXPORTS) \ 1032 (cd $(HOST_SUBDIR)/[+module+] && \ 1033 $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] install) 1034[+ ENDIF no_install +] 1035@endif [+module+] 1036 1037# Other targets (info, dvi, pdf, etc.) 1038[+ FOR recursive_targets +] 1039.PHONY: maybe-[+make_target+]-[+module+] [+make_target+]-[+module+] 1040maybe-[+make_target+]-[+module+]: 1041@if [+module+] 1042maybe-[+make_target+]-[+module+]: [+make_target+]-[+module+] 1043[+ IF (match-value? = "missing" (get "make_target") ) +] 1044# [+module+] doesn't support [+make_target+]. 1045[+make_target+]-[+module+]: 1046[+ ELSE +] 1047[+make_target+]-[+module+]: [+ 1048 FOR depend +]\ 1049 [+depend+]-[+module+] [+ 1050 ENDFOR depend +] 1051 @[+ IF bootstrap +][+ ELSE +]: $(MAKE); $(unstage) 1052 @[+ ENDIF bootstrap +][ -f ./[+module+]/Makefile ] || exit 0; \ 1053 r=`${PWD_COMMAND}`; export r; \ 1054 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1055 $(HOST_EXPORTS) \ 1056 for flag in $(EXTRA_HOST_FLAGS) [+extra_make_flags+]; do \ 1057 eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ 1058 done; \ 1059 echo "Doing [+make_target+] in [+module+]" ; \ 1060 (cd $(HOST_SUBDIR)/[+module+] && \ 1061 $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ 1062 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ 1063 "RANLIB=$${RANLIB}" \ 1064 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ 1065 [+make_target+]) \ 1066 || exit 1 1067[+ ENDIF +] 1068@endif [+module+] 1069[+ ENDFOR recursive_targets +] 1070[+ ENDFOR host_modules +] 1071 1072# --------------------------------------- 1073# Modules which run on the target machine 1074# --------------------------------------- 1075[+ FOR target_modules +] 1076 1077[+ IF raw_cxx +] 1078[+ configure prefix="target-" subdir="$(TARGET_SUBDIR)" 1079 check_multilibs=true 1080 exports="$(RAW_CXX_TARGET_EXPORTS)" 1081 host_alias=(get "host" "${target_alias}") 1082 target_alias=(get "target" "${target_alias}") 1083 args="$(TARGET_CONFIGARGS)" no-config-site=true +] 1084 1085[+ all prefix="target-" subdir="$(TARGET_SUBDIR)" 1086 exports="$(RAW_CXX_TARGET_EXPORTS)" 1087 args="$(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'" +] 1088[+ ELSE +] 1089[+ configure prefix="target-" subdir="$(TARGET_SUBDIR)" 1090 check_multilibs=true 1091 exports="$(NORMAL_TARGET_EXPORTS)" 1092 host_alias=(get "host" "${target_alias}") 1093 target_alias=(get "target" "${target_alias}") 1094 args="$(TARGET_CONFIGARGS)" no-config-site=true +] 1095 1096[+ all prefix="target-" subdir="$(TARGET_SUBDIR)" 1097 exports="$(NORMAL_TARGET_EXPORTS)" 1098 args="$(EXTRA_TARGET_FLAGS)" +] 1099[+ ENDIF +] 1100 1101.PHONY: check-target-[+module+] maybe-check-target-[+module+] 1102maybe-check-target-[+module+]: 1103@if target-[+module+] 1104maybe-check-target-[+module+]: check-target-[+module+] 1105[+ IF no_check +] 1106# Dummy target for uncheckable module. 1107check-target-[+module+]: 1108[+ ELSE check +] 1109check-target-[+module+]: 1110 @: $(MAKE); $(unstage) 1111 @r=`${PWD_COMMAND}`; export r; \ 1112 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+ 1113IF raw_cxx +] 1114 $(RAW_CXX_TARGET_EXPORTS) \[+ 1115ELSE normal_cxx +] 1116 $(NORMAL_TARGET_EXPORTS) \[+ 1117ENDIF raw_cxx +] 1118 (cd $(TARGET_SUBDIR)/[+module+] && \ 1119 $(MAKE) $(TARGET_FLAGS_TO_PASS) [+ 1120 IF raw_cxx 1121 +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ 1122 ENDIF raw_cxx 1123 +] [+extra_make_flags+] check) 1124[+ ENDIF no_check +] 1125@endif target-[+module+] 1126 1127.PHONY: install-target-[+module+] maybe-install-target-[+module+] 1128maybe-install-target-[+module+]: 1129@if target-[+module+] 1130maybe-install-target-[+module+]: install-target-[+module+] 1131[+ IF no_install +] 1132# Dummy target for uninstallable. 1133install-target-[+module+]: 1134[+ ELSE install +] 1135install-target-[+module+]: installdirs 1136 @: $(MAKE); $(unstage) 1137 @r=`${PWD_COMMAND}`; export r; \ 1138 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+ 1139IF raw_cxx +] 1140 $(RAW_CXX_TARGET_EXPORTS) \[+ 1141ELSE normal_cxx +] 1142 $(NORMAL_TARGET_EXPORTS) \[+ 1143ENDIF raw_cxx +] 1144 (cd $(TARGET_SUBDIR)/[+module+] && \ 1145 $(MAKE) $(TARGET_FLAGS_TO_PASS) [+extra_make_flags+] install) 1146[+ ENDIF no_install +] 1147@endif target-[+module+] 1148 1149# Other targets (info, dvi, pdf, etc.) 1150[+ FOR recursive_targets +] 1151.PHONY: maybe-[+make_target+]-target-[+module+] [+make_target+]-target-[+module+] 1152maybe-[+make_target+]-target-[+module+]: 1153@if target-[+module+] 1154maybe-[+make_target+]-target-[+module+]: [+make_target+]-target-[+module+] 1155[+ IF (match-value? = "missing" (get "make_target") ) +] 1156# [+module+] doesn't support [+make_target+]. 1157[+make_target+]-target-[+module+]: 1158[+ ELSE +] 1159[+make_target+]-target-[+module+]: [+ 1160 FOR depend +]\ 1161 [+depend+]-target-[+module+] [+ 1162 ENDFOR depend +] 1163 @: $(MAKE); $(unstage) 1164 @[ -f $(TARGET_SUBDIR)/[+module+]/Makefile ] || exit 0 ; \ 1165 r=`${PWD_COMMAND}`; export r; \ 1166 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+ 1167IF raw_cxx +] 1168 $(RAW_CXX_TARGET_EXPORTS) \[+ 1169ELSE normal_cxx +] 1170 $(NORMAL_TARGET_EXPORTS) \[+ 1171ENDIF raw_cxx +] 1172 echo "Doing [+make_target+] in $(TARGET_SUBDIR)/[+module+]" ; \ 1173 for flag in $(EXTRA_TARGET_FLAGS); do \ 1174 eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ 1175 done; \ 1176 (cd $(TARGET_SUBDIR)/[+module+] && \ 1177 $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ 1178 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ 1179 "RANLIB=$${RANLIB}" \ 1180 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ 1181 [+extra_make_flags+] [+make_target+]) \ 1182 || exit 1 1183[+ ENDIF +] 1184@endif target-[+module+] 1185[+ ENDFOR recursive_targets +] 1186[+ ENDFOR target_modules +] 1187 1188# ---------- 1189# GCC module 1190# ---------- 1191 1192@if gcc-no-bootstrap 1193.PHONY: cross 1194cross: all-build all-gas all-ld 1195 @r=`${PWD_COMMAND}`; export r; \ 1196 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1197 $(HOST_EXPORTS) \ 1198 echo "Building the C and C++ compiler"; \ 1199 cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++" 1200 @r=`${PWD_COMMAND}`; export r; \ 1201 s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \ 1202 echo "Building runtime libraries"; \ 1203 $(MAKE) $(RECURSE_FLAGS_TO_PASS) LANGUAGES="c c++" all 1204@endif gcc-no-bootstrap 1205 1206@if gcc 1207.PHONY: check-gcc-c++ 1208check-gcc-c++: 1209 @if [ -f ./gcc/Makefile ] ; then \ 1210 r=`${PWD_COMMAND}`; export r; \ 1211 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1212 $(HOST_EXPORTS) \ 1213 (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); \ 1214 else \ 1215 true; \ 1216 fi 1217 1218.PHONY: check-c++ 1219check-c++: check-target-libstdc++-v3 check-gcc-c++ 1220 1221# Install the gcc headers files, but not the fixed include files, 1222# which Cygnus is not allowed to distribute. This rule is very 1223# dependent on the workings of the gcc Makefile.in. 1224.PHONY: gcc-no-fixedincludes 1225gcc-no-fixedincludes: 1226 @if [ -f ./gcc/Makefile ]; then \ 1227 rm -rf gcc/tmp-include; \ 1228 mv gcc/include gcc/tmp-include 2>/dev/null; \ 1229 mkdir gcc/include; \ 1230 cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \ 1231 touch gcc/stmp-fixinc gcc/include/fixed; \ 1232 rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \ 1233 r=`${PWD_COMMAND}`; export r; \ 1234 s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \ 1235 $(HOST_EXPORTS) \ 1236 (cd ./gcc && \ 1237 $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ 1238 rm -rf gcc/include; \ 1239 mv gcc/tmp-include gcc/include 2>/dev/null; \ 1240 else true; fi 1241@endif gcc 1242 1243# --------------------- 1244# GCC bootstrap support 1245# --------------------- 1246 1247# We track the current stage (the one in 'gcc') in the stage_current file. 1248# stage_last instead tracks the stage that was built last. These targets 1249# are dummy when toplevel bootstrap is not active. 1250 1251# While making host and target tools, symlinks to the final stage must be 1252# there, so $(unstage) should be run at various points. To avoid excessive 1253# recursive invocations of make, we "inline" them using a variable. These 1254# must be referenced as ": $(MAKE) ; $(unstage)" rather than "$(unstage)" 1255# to avoid warnings from the GNU Make job server. 1256 1257unstage = : 1258stage = : 1259current_stage = "" 1260 1261@if gcc-bootstrap 1262unstage = if [ -f stage_last ]; then [ -f stage_current ] || $(MAKE) `cat stage_last`-start || exit 1; else :; fi 1263stage = if [ -f stage_current ]; then $(MAKE) `cat stage_current`-end || exit 1; else :; fi 1264current_stage = "`cat stage_current 2> /dev/null`" 1265@endif gcc-bootstrap 1266 1267.PHONY: unstage stage 1268unstage: 1269 @: $(MAKE); $(unstage) 1270stage: 1271 @: $(MAKE); $(stage) 1272 1273# Disable commands for lean bootstrap. 1274LEAN = false 1275 1276# We name the build directories for the various stages "stage1-gcc", 1277# "stage2-gcc","stage3-gcc", etc. 1278 1279# Since the 'compare' process will fail (on debugging information) if any 1280# directory names are different, we need to link the gcc directory for 1281# the previous stage to a constant name ('prev-gcc'), and to make the name of 1282# the build directories constant as well. For the latter, we use naked names 1283# like 'gcc', because the scripts in that directory assume it. We use 1284# mv on platforms where symlinks to directories do not work or are not 1285# reliable. 1286 1287# 'touch' doesn't work right on some platforms. 1288STAMP = echo timestamp > 1289 1290# We only want to compare .o files, so set this! 1291objext = .o 1292 1293[+ FOR bootstrap-stage +] 1294.PHONY: stage[+id+]-start stage[+id+]-end 1295 1296stage[+id+]-start:: 1297 @: $(MAKE); $(stage); \ 1298 echo stage[+id+] > stage_current ; \ 1299 echo stage[+id+] > stage_last; \ 1300 $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)[+ 1301 FOR host_modules +][+ IF bootstrap +] 1302@if [+ module +] 1303 @cd $(HOST_SUBDIR); [ -d stage[+id+]-[+module+] ] || \ 1304 mkdir stage[+id+]-[+module+]; \ 1305 mv stage[+id+]-[+module+] [+module+] [+ IF prev +] ; \ 1306 mv stage[+prev+]-[+module+] prev-[+module+] || test -f stage[+prev+]-lean [+ ENDIF prev +] 1307@endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +] 1308 @[ -d stage[+id+]-$(TARGET_SUBDIR) ] || \ 1309 mkdir stage[+id+]-$(TARGET_SUBDIR); \ 1310 mv stage[+id+]-$(TARGET_SUBDIR) $(TARGET_SUBDIR) [+ IF prev +] ; \ 1311 mv stage[+prev+]-$(TARGET_SUBDIR) prev-$(TARGET_SUBDIR) || test -f stage[+prev+]-lean [+ ENDIF prev +] 1312 1313stage[+id+]-end:: [+ FOR host_modules +][+ IF bootstrap +] 1314@if [+ module +] 1315 @if test -d $(HOST_SUBDIR)/[+module+] ; then \ 1316 cd $(HOST_SUBDIR); mv [+module+] stage[+id+]-[+module+] [+ IF prev +]; \ 1317 mv prev-[+module+] stage[+prev+]-[+module+] ; : [+ ENDIF prev +] ; \ 1318 fi 1319@endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +] 1320 @if test -d $(TARGET_SUBDIR) ; then \ 1321 mv $(TARGET_SUBDIR) stage[+id+]-$(TARGET_SUBDIR) [+ IF prev +] ; \ 1322 mv prev-$(TARGET_SUBDIR) stage[+prev+]-$(TARGET_SUBDIR) ; : [+ ENDIF prev +] ; \ 1323 fi 1324 rm -f stage_current 1325 1326# Bubble a bug fix through all the stages up to stage [+id+]. They are 1327# remade, but not reconfigured. The next stage (if any) will not be 1328# reconfigured either. 1329.PHONY: stage[+id+]-bubble 1330stage[+id+]-bubble:: [+ IF prev +]stage[+prev+]-bubble[+ ENDIF +] 1331 @r=`${PWD_COMMAND}`; export r; \ 1332 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1333 if test -f stage[+id+]-lean [+ 1334 IF prev +]|| test -f stage[+prev+]-lean [+ ENDIF prev +] ; then \ 1335 echo Skipping rebuild of stage[+id+] ; \ 1336 else \ 1337 $(MAKE) stage[+id+]-start; \[+IF lean +] 1338 if $(LEAN); then \ 1339 rm -rf stage[+lean+]-* ; \ 1340 $(STAMP) stage[+lean+]-lean ; \ 1341 fi; \[+ ENDIF lean +] 1342 $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage[+id+]; \ 1343 fi[+ IF compare-target +] 1344 $(MAKE) $(RECURSE_FLAGS_TO_PASS) [+compare-target+][+ ENDIF compare-target +] 1345 1346.PHONY: all-stage[+id+] clean-stage[+id+] 1347do-clean: clean-stage[+id+] 1348 1349# FIXME: Will not need to be conditional when toplevel bootstrap is the 1350# only possibility, but now it conflicts with no-bootstrap rules 1351@if gcc-bootstrap 1352[+ IF compare-target +] 1353[+compare-target+]: 1354 @r=`${PWD_COMMAND}`; export r; \ 1355 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1356 if test -f stage[+prev+]-lean; then \ 1357 echo Cannot compare object files as stage [+prev+] was deleted. ; \ 1358 exit 0 ; \ 1359 fi; \ 1360 : $(MAKE); $(stage); \ 1361 rm -f .bad_compare ; \ 1362 echo Comparing stages [+prev+] and [+id+] ; \ 1363 cd stage[+id+]-gcc; \ 1364 files=`find . -name "*$(objext)" -print` ; \ 1365 cd .. ; \ 1366 for file in $${files} ; do \ 1367 f1=$$r/stage[+prev+]-gcc/$$file; f2=$$r/stage[+id+]-gcc/$$file; \ 1368 $(do-[+compare-target+]) > /dev/null 2>&1; \ 1369 if test $$? -eq 1; then \ 1370 case $$file in \ 1371 ./cc*-checksum$(objext) | ./libgcc/* ) \ 1372 echo warning: $$file differs ;; \ 1373 *) \ 1374 echo $$file differs >> .bad_compare ;; \ 1375 esac ; \ 1376 fi ; \ 1377 done ; \ 1378 if [ -f .bad_compare ]; then \ 1379 echo "Bootstrap comparison failure!"; \ 1380 cat .bad_compare; \ 1381 exit 1; \ 1382 else \ 1383 echo Comparison successful.; \ 1384 fi ; \ 1385 $(STAMP) [+compare-target+][+ IF prev +] 1386 if $(LEAN); then \ 1387 rm -rf stage[+prev+]-*; \ 1388 $(STAMP) stage[+prev+]-lean; \ 1389 fi[+ ENDIF prev +] 1390[+ ENDIF compare-target +] 1391 1392[+ IF bootstrap-target +] 1393.PHONY: [+bootstrap-target+] [+bootstrap-target+]-lean 1394[+bootstrap-target+]: 1395 echo stage[+id+] > stage_final 1396 @r=`${PWD_COMMAND}`; export r; \ 1397 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1398 $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage[+id+]-bubble 1399 @: $(MAKE); $(unstage) 1400 @r=`${PWD_COMMAND}`; export r; \ 1401 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1402 $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target 1403 1404[+bootstrap-target+]-lean: 1405 echo stage[+id+] > stage_final 1406 @r=`${PWD_COMMAND}`; export r; \ 1407 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1408 $(MAKE) $(RECURSE_FLAGS_TO_PASS) LEAN=: stage[+id+]-bubble 1409 @: $(MAKE); $(unstage) 1410 @r=`${PWD_COMMAND}`; export r; \ 1411 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1412 $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target 1413[+ ENDIF bootstrap-target +] 1414 1415# Rules to wipe a stage and all the following ones, also used for cleanstrap 1416[+ IF prev +]distclean-stage[+prev+]:: distclean-stage[+id+] [+ ENDIF prev +] 1417.PHONY: distclean-stage[+id+] 1418distclean-stage[+id+]:: 1419 @: $(MAKE); $(stage) 1420 @test "`cat stage_last`" != stage[+id+] || rm -f stage_last 1421 rm -rf stage[+id+]-* [+ 1422 IF compare-target +][+compare-target+] [+ ENDIF compare-target +] 1423 1424[+ IF cleanstrap-target +] 1425.PHONY: [+cleanstrap-target+] 1426[+cleanstrap-target+]: do-distclean local-clean 1427 echo stage[+id+] > stage_final 1428 @r=`${PWD_COMMAND}`; export r; \ 1429 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1430 $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage[+id+]-bubble 1431 @: $(MAKE); $(unstage) 1432 @r=`${PWD_COMMAND}`; export r; \ 1433 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1434 $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target 1435[+ ENDIF cleanstrap-target +] 1436@endif gcc-bootstrap 1437 1438[+ ENDFOR bootstrap-stage +] 1439 1440stageprofile-end:: 1441 $(MAKE) distclean-stagefeedback 1442 1443stagefeedback-start:: 1444 @r=`${PWD_COMMAND}`; export r; \ 1445 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ 1446 for i in prev-*; do \ 1447 j=`echo $$i | sed s/^prev-//` ; \ 1448 cd $$r/$$i && \ 1449 { find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../'$$j'/&",' | $(SHELL) ; } && \ 1450 { find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../'$$j'/&",' | $(SHELL) ; } ; \ 1451 done 1452 1453@if gcc-bootstrap 1454do-distclean: distclean-stage1 1455 1456# Provide a GCC build when we're building target libraries. This does 1457# not work as a dependency, just as the minimum necessary to avoid errors. 1458stage_last: 1459 $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage1-bubble 1460 1461# Same as unstage, but not phony and defaulting to stage1-start. We place 1462# it in the dependency so that for example `make -j3 all-gcc' works. 1463stage_current: 1464 @if test -f stage_last; then $(unstage); else $(MAKE) stage1-start; fi 1465 1466.PHONY: restrap 1467restrap:: 1468 @: $(MAKE); $(stage) 1469 rm -rf stage1-$(TARGET_SUBDIR) [+ FOR bootstrap-stage +][+ IF prev 1470 +]stage[+id+]-* [+ ENDIF prev +][+ ENDFOR bootstrap-stage +] 1471restrap:: all 1472@endif gcc-bootstrap 1473 1474# -------------------------------------- 1475# Dependencies between different modules 1476# -------------------------------------- 1477 1478# Generic dependencies for target modules on host stuff, especially gcc 1479@if gcc-bootstrap[+ FOR target_modules +][+ IF bootstrap 1480 +][+ FOR bootstrap_stage +] 1481configure-stage[+id+]-target-[+module+]: maybe-all-stage[+id+]-gcc[+ 1482 ENDFOR +][+ ELSE bootstrap +] 1483configure-target-[+module+]: stage_last[+ 1484 ENDIF bootstrap +][+ ENDFOR target_modules +] 1485@endif gcc-bootstrap 1486 1487@if gcc-no-bootstrap[+ FOR target_modules +] 1488configure-target-[+module+]: maybe-all-gcc[+ 1489 ENDFOR target_modules +] 1490@endif gcc-no-bootstrap 1491 1492 1493# There are two types of dependencies here: 'hard' dependencies, where one 1494# module simply won't build without the other; and 'soft' dependencies, where 1495# if the depended-on module is missing, the depending module will do without 1496# or find a substitute somewhere (perhaps installed). Soft dependencies 1497# are made here to depend on a 'maybe-' target. If you're not sure, 1498# it's safer to use a soft dependency. 1499 1500[+ ;; These Scheme functions build the bulk of the dependencies. 1501 ;; dep-target builds a string like "maybe-all-MODULE_KIND-gcc", 1502 ;; where "maybe-" is only included if HARD is not true, and all-gcc 1503 ;; is taken from VAR-NAME. 1504 (define dep-target (lambda (module-kind var-name hard) 1505 (string-append 1506 (if hard "" "maybe-") 1507 (dep-subtarget var-name) 1508 module-kind 1509 (dep-module var-name) 1510 ))) 1511 1512 ;; make-dep builds a dependency from the MODULE and ON AutoGen vars. 1513 (define make-dep (lambda (module-kind on-kind) 1514 (string-append 1515 (dep-target module-kind "module" #t) ": " 1516 (dep-target on-kind "on" (exist? "hard"))))) 1517 1518 ;; dep-subtarget extracts everything up to the first dash in the given 1519 ;; AutoGen variable, for example it extracts "all-" out of "all-gcc". 1520 (define dep-subtarget (lambda (var-name) 1521 (substring (get var-name) 0 (+ 1 (string-index (get var-name) #\-))))) 1522 1523 ;; dep-module extracts everything up to the first dash in the given 1524 ;; AutoGen variable, for example it extracts "gcc" out of "all-gcc". 1525 (define dep-module (lambda (var-name) 1526 (substring (get var-name) (+ 1 (string-index (get var-name) #\-))))) 1527 1528 ;; dep-stage builds a string for the prefix of a bootstrap stage. 1529 (define dep-stage (lambda () 1530 (string-append 1531 "stage" 1532 (get "id") 1533 "-"))) 1534 1535 ;; dep-maybe is the same as the AutoGen expression "- hard 'maybe-'" 1536 ;; but is written in Scheme. 1537 (define dep-maybe (lambda () 1538 (if (exist? "hard") "" "maybe-"))) 1539 1540 ;; dep-kind returns "normal" if the dependency is on an "install" target, 1541 ;; or if either module is not bootstrapped. It returns "bootstrap" for 1542 ;; configure or build dependencies between bootstrapped modules; it returns 1543 ;; "prebootstrap" for configure or build dependencies of bootstrapped 1544 ;; modules on a build module (e.g. all-gcc on all-build-bison). All this 1545 ;; is only necessary for host modules. 1546 (define dep-kind (lambda () 1547 (if (and (hash-ref boot-modules (dep-module "module")) 1548 (=* (dep-module "on") "build-")) 1549 "prebootstrap" 1550 1551 (if (or (= (dep-subtarget "on") "install-") 1552 (not (hash-ref boot-modules (dep-module "module"))) 1553 (not (hash-ref boot-modules (dep-module "on")))) 1554 "normal" 1555 "bootstrap")))) 1556 1557 ;; We now build the hash table that is used by dep-kind. 1558 (define boot-modules (make-hash-table 113)) 1559+] 1560 1561[+ FOR host_modules +][+ 1562 (if (exist? "bootstrap") 1563 (hash-create-handle! boot-modules (get "module") #t)) 1564 "" +][+ ENDFOR host_modules +] 1565[+ FOR target_modules +][+ 1566 (if (exist? "bootstrap") 1567 (hash-create-handle! boot-modules (string-append "target-" (get "module")) #t)) 1568 "" +][+ ENDFOR target_modules +] 1569 1570# With all the machinery above in place, it is pretty easy to generate 1571# dependencies. Host dependencies are a bit more complex because we have 1572# to check for bootstrap/prebootstrap dependencies. To resolve 1573# prebootstrap dependencies, prebootstrap modules are gathered in 1574# a hash table. 1575[+ FOR dependencies +][+ (make-dep "" "") +] 1576[+ CASE (dep-kind) +] 1577[+ == "prebootstrap" 1578 +][+ FOR bootstrap_stage +] 1579[+ (make-dep (dep-stage) "") +][+ 1580 ENDFOR bootstrap_stage +] 1581[+ == "bootstrap" 1582 +][+ FOR bootstrap_stage +] 1583[+ (make-dep (dep-stage) (dep-stage)) +][+ 1584 ENDFOR bootstrap_stage +] 1585[+ ESAC +][+ 1586ENDFOR dependencies +] 1587 1588# Dependencies for target modules on other target modules are 1589# described by lang_env_dependencies; the defaults apply to anything 1590# not mentioned there. 1591[+ 1592 ;; Predicate for whether LANG was specified in lang_env_dependencies. 1593 (define lang-dep (lambda (lang) 1594 (hash-ref lang-env-deps (string-append (get "module") "-" lang)))) 1595 1596 ;; Build the hash table we will need. 1597 (define lang-env-deps (make-hash-table 7)) 1598+][+ FOR lang_env_dependencies +][+ 1599 (if (exist? "cxx") 1600 (hash-create-handle! lang-env-deps 1601 (string-append (get "module") "-" "cxx") #t)) 1602 1603 (if (exist? "no_c") 1604 (hash-create-handle! lang-env-deps 1605 (string-append (get "module") "-" "no_c") #t)) 1606 1607 (if (exist? "no_gcc") 1608 (hash-create-handle! lang-env-deps 1609 (string-append (get "module") "-" "no_gcc") #t)) 1610 "" +][+ ENDFOR lang_env_dependencies +] 1611 1612@if gcc-bootstrap[+ FOR target_modules +][+ IF (not (lang-dep "no_gcc")) 1613 +][+ IF bootstrap +][+ FOR bootstrap_stage +] 1614configure-stage[+id+]-target-[+module+]: maybe-all-stage[+id+]-target-libgcc[+ 1615 ENDFOR +][+ ENDIF bootstrap +][+ ENDIF +][+ ENDFOR target_modules +] 1616@endif gcc-bootstrap 1617 1618@if gcc-no-bootstrap[+ FOR target_modules +][+ IF (not (lang-dep "no_gcc")) +] 1619configure-target-[+module+]: maybe-all-target-libgcc[+ 1620 ENDIF +][+ ENDFOR target_modules +] 1621@endif gcc-no-bootstrap 1622 1623[+ FOR target_modules +][+ IF (not (lang-dep "no_c")) +] 1624configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss[+ 1625 ENDIF +][+ IF (lang-dep "cxx") +] 1626configure-target-[+module+]: maybe-all-target-libstdc++-v3[+ 1627 ENDIF +] 1628[+ ENDFOR target_modules +] 1629 1630CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@ 1631GDB_TK = @GDB_TK@ 1632INSTALL_GDB_TK = @INSTALL_GDB_TK@ 1633configure-gdb: $(CONFIGURE_GDB_TK) 1634all-gdb: $(gdbnlmrequirements) $(GDB_TK) 1635install-gdb: $(INSTALL_GDB_TK) 1636 1637# Serialization dependencies. Host configures don't work well in parallel to 1638# each other, due to contention over config.cache. Target configures and 1639# build configures are similar. 1640@serialization_dependencies@ 1641 1642# -------------------------------- 1643# Regenerating top level configury 1644# -------------------------------- 1645 1646# Rebuilding Makefile.in, using autogen. 1647AUTOGEN = autogen 1648$(srcdir)/Makefile.in: @MAINT@ $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def 1649 cd $(srcdir) && $(AUTOGEN) Makefile.def 1650 1651# Rebuilding Makefile. 1652Makefile: $(srcdir)/Makefile.in config.status 1653 CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status 1654 1655config.status: configure 1656 CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck 1657 1658# Rebuilding configure. 1659AUTOCONF = autoconf 1660$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/config/acx.m4 \ 1661 $(srcdir)/config/override.m4 $(srcdir)/config/proginstall.m4 1662 cd $(srcdir) && $(AUTOCONF) 1663 1664# ------------------------------ 1665# Special directives to GNU Make 1666# ------------------------------ 1667 1668# Don't pass command-line variables to submakes. 1669.NOEXPORT: 1670MAKEOVERRIDES= 1671 1672# end of Makefile.in 1673