1 [+ AutoGen5 template -*- Mode: Makefile -*- 2 in 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 29 ifeq (,$(.VARIABLES)) # The variable .VARIABLES, new with 3.80, is never empty. 30 $(error GNU make version 3.80 or newer is required.) 31 endif 32 @endif gcc 33 34 # ------------------------------- 35 # Standard Autoconf-set variables 36 # ------------------------------- 37 VPATH=@srcdir@ 38 39 build_alias=@build_noncanonical@ 40 build_vendor=@build_vendor@ 41 build_os=@build_os@ 42 build=@build@ 43 host_alias=@host_noncanonical@ 44 host_vendor=@host_vendor@ 45 host_os=@host_os@ 46 host=@host@ 47 target_alias=@target_noncanonical@ 48 target_vendor=@target_vendor@ 49 target_os=@target_os@ 50 target=@target@ 51 52 program_transform_name = @program_transform_name@ 53 54 prefix = @prefix@ 55 exec_prefix = @exec_prefix@ 56 57 srcdir = @srcdir@ 58 59 bindir = @bindir@ 60 sbindir = @sbindir@ 61 libexecdir = @libexecdir@ 62 datadir = @datadir@ 63 sysconfdir = @sysconfdir@ 64 sharedstatedir = @sharedstatedir@ 65 localstatedir = @localstatedir@ 66 libdir = @libdir@ 67 includedir = @includedir@ 68 oldincludedir = @oldincludedir@ 69 infodir = @infodir@ 70 datarootdir = @datarootdir@ 71 docdir = @docdir@ 72 pdfdir = @pdfdir@ 73 htmldir = @htmldir@ 74 mandir = @mandir@ 75 man1dir = $(mandir)/man1 76 man2dir = $(mandir)/man2 77 man3dir = $(mandir)/man3 78 man4dir = $(mandir)/man4 79 man5dir = $(mandir)/man5 80 man6dir = $(mandir)/man6 81 man7dir = $(mandir)/man7 82 man8dir = $(mandir)/man8 83 man9dir = $(mandir)/man9 84 85 INSTALL = @INSTALL@ 86 INSTALL_PROGRAM = @INSTALL_PROGRAM@ 87 INSTALL_SCRIPT = @INSTALL_SCRIPT@ 88 INSTALL_DATA = @INSTALL_DATA@ 89 LN = @LN@ 90 LN_S = @LN_S@ 91 MAINT = @MAINT@ 92 MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ 93 MAINTAINER_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. 100 TOPLEVEL_CONFIGURE_ARGUMENTS=@TOPLEVEL_CONFIGURE_ARGUMENTS@ 101 102 tooldir = @tooldir@ 103 build_tooldir = @build_tooldir@ 104 105 GDB_NLM_DEPS = 106 107 # This is the name of the environment variable used for the path to 108 # the libraries. 109 RPATH_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. 114 GCC_SHLIB_SUBDIR = @GCC_SHLIB_SUBDIR@ 115 116 # Build programs are put under this directory. 117 BUILD_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. 120 BUILD_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. 126 BASE_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. 136 BUILD_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. 157 EXTRA_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. 162 SUBDIRS = @configdirs@ 163 # This is set by the configure script to the arguments to use when configuring 164 # directories built for the host system. 165 HOST_CONFIGARGS = @host_configargs@ 166 # Host programs are put under this directory, which is . except if building 167 # with srcdir=.. 168 HOST_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. 172 HOST_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. 208 POSTSTAGE1_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: 219 TARGET_SUBDIR = @target_subdir@ 220 # This is set by the configure script to the arguments to use when configuring 221 # directories built for the target. 222 TARGET_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. 225 BASE_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 248 RAW_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 253 NORMAL_TARGET_EXPORTS = \ 254 $(BASE_TARGET_EXPORTS) \ 255 CXX="$(CXX_FOR_TARGET)"; export CXX; 256 257 # Where to find GMP 258 HOST_GMPLIBS = @gmplibs@ 259 HOST_GMPINC = @gmpinc@ 260 261 # ---------------------------------------------- 262 # Programs producing files for the BUILD machine 263 # ---------------------------------------------- 264 265 SHELL = @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. 273 PWD_COMMAND = $${PWDCMD-pwd} 274 275 # compilers to use to create programs which must be run in the build 276 # environment. 277 AR_FOR_BUILD = @AR_FOR_BUILD@ 278 AS_FOR_BUILD = @AS_FOR_BUILD@ 279 CC_FOR_BUILD = @CC_FOR_BUILD@ 280 CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ 281 CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ 282 CXX_FOR_BUILD = @CXX_FOR_BUILD@ 283 DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ 284 GCJ_FOR_BUILD = @GCJ_FOR_BUILD@ 285 GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ 286 LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ 287 LD_FOR_BUILD = @LD_FOR_BUILD@ 288 NM_FOR_BUILD = @NM_FOR_BUILD@ 289 RANLIB_FOR_BUILD = @RANLIB_FOR_BUILD@ 290 WINDMC_FOR_BUILD = @WINDMC_FOR_BUILD@ 291 WINDRES_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. 295 BUILD_PREFIX = @BUILD_PREFIX@ 296 BUILD_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. 300 BOOT_CFLAGS= -g -O2 301 BOOT_LDFLAGS= 302 BOOT_ADAFLAGS=-gnatpg -gnata 303 304 BISON = @BISON@ 305 YACC = @YACC@ 306 FLEX = @FLEX@ 307 LEX = @LEX@ 308 M4 = @M4@ 309 MAKEINFO = @MAKEINFO@ 310 EXPECT = @EXPECT@ 311 RUNTEST = @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.) 317 MAKEINFOFLAGS = --split-size=5000000 318 319 # --------------------------------------------- 320 # Programs producing files for the HOST machine 321 # --------------------------------------------- 322 323 AS = @AS@ 324 AR = @AR@ 325 AR_FLAGS = rc 326 CC = @CC@ 327 CXX = @CXX@ 328 DLLTOOL = @DLLTOOL@ 329 LD = @LD@ 330 LIPO = @LIPO@ 331 NM = @NM@ 332 OBJDUMP = @OBJDUMP@ 333 RANLIB = @RANLIB@ 334 STRIP = @STRIP@ 335 WINDRES = @WINDRES@ 336 WINDMC = @WINDMC@ 337 338 GNATBIND = @GNATBIND@ 339 GNATMAKE = @GNATMAKE@ 340 341 CFLAGS = @CFLAGS@ 342 LDFLAGS = @LDFLAGS@ 343 LIBCFLAGS = $(CFLAGS) 344 CXXFLAGS = @CXXFLAGS@ 345 LIBCXXFLAGS = $(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 353 STAGE1_CHECKING=@stage1_checking@ 354 STAGE1_LANGUAGES=@stage1_languages@ 355 356 STAGE1_CFLAGS=@stage1_cflags@ 357 STAGE2_CFLAGS=$(BOOT_CFLAGS) 358 STAGE3_CFLAGS=$(BOOT_CFLAGS) 359 STAGE4_CFLAGS=$(BOOT_CFLAGS) 360 361 STAGE1_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 362 STAGE2_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 363 STAGE3_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 364 STAGE4_LIBCFLAGS=$(CFLAGS_FOR_TARGET) 365 366 do-compare = @do_compare@ 367 do-compare3 = $(do-compare) 368 do-compare-debug = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 369 370 # ----------------------------------------------- 371 # Programs producing files for the TARGET machine 372 # ----------------------------------------------- 373 374 FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ 375 376 AR_FOR_TARGET=@AR_FOR_TARGET@ 377 AS_FOR_TARGET=@AS_FOR_TARGET@ 378 CC_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. 384 GCC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCC_FOR_TARGET@ $(FLAGS_FOR_TARGET) 385 CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) 386 RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) 387 GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) 388 GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ $(FLAGS_FOR_TARGET) 389 DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ 390 LD_FOR_TARGET=@LD_FOR_TARGET@ 391 392 LIPO_FOR_TARGET=@LIPO_FOR_TARGET@ 393 NM_FOR_TARGET=@NM_FOR_TARGET@ 394 OBJDUMP_FOR_TARGET=@OBJDUMP_FOR_TARGET@ 395 RANLIB_FOR_TARGET=@RANLIB_FOR_TARGET@ 396 STRIP_FOR_TARGET=@STRIP_FOR_TARGET@ 397 WINDRES_FOR_TARGET=@WINDRES_FOR_TARGET@ 398 WINDMC_FOR_TARGET=@WINDMC_FOR_TARGET@ 399 400 COMPILER_AS_FOR_TARGET=@COMPILER_AS_FOR_TARGET@ 401 COMPILER_LD_FOR_TARGET=@COMPILER_LD_FOR_TARGET@ 402 COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_TARGET@ 403 404 CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@ 405 CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@ 406 SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ 407 DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@ 408 409 LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) 410 LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates 411 LDFLAGS_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. 419 all: 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. 430 TARGET_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+] 435 TARGET_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. 442 HOST_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 448 HOST_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+] 453 HOST_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. 460 BASE_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. 467 RECURSE_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. 471 EXTRA_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 486 FLAGS_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 # 496 X11_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 502 POSTSTAGE1_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. 513 EXTRA_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 531 TARGET_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. 539 EXTRA_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 547 GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) 548 549 .PHONY: configure-host 550 configure-host: [+ 551 FOR host_modules +] \ 552 maybe-configure-[+module+][+ 553 ENDFOR host_modules +] 554 .PHONY: configure-target 555 configure-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 562 all: 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 +] 580 all-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 +] 585 all-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 +] 591 all-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+] 601 do-[+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 624 info: do-info 625 installcheck: do-installcheck 626 dvi: do-dvi 627 pdf: do-pdf 628 html: do-html 629 630 # Make sure makeinfo is built before we do a `make info', if we're 631 # in fact building texinfo. 632 do-info: maybe-all-texinfo 633 634 install-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 640 install-pdf: do-install-pdf 641 642 install-html: do-install-html 643 644 local-clean: 645 -rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E *.log 646 647 local-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 663 local-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 667 clean: do-clean local-clean 668 mostlyclean: do-mostlyclean local-clean 669 distclean: do-distclean local-clean local-distclean 670 maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean 671 maintainer-clean: local-distclean 672 realclean: maintainer-clean 673 674 # Check target. 675 676 .PHONY: check do-check 677 check: do-check 678 679 # Only include modules actually being configured and built. 680 .PHONY: check-host 681 check-host: [+ 682 FOR host_modules +] \ 683 maybe-check-[+module+][+ 684 ENDFOR host_modules +] 685 686 .PHONY: check-target 687 check-target: [+ 688 FOR target_modules +] \ 689 maybe-check-target-[+module+][+ 690 ENDFOR target_modules +] 691 692 do-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 700 warning.log: build.log 701 $(srcdir)/contrib/warn_summary build.log > $@ 702 703 mail-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 711 mail-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 722 install: 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 729 install-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 735 install-host: [+ 736 FOR host_modules +] \ 737 maybe-install-[+module+][+ 738 ENDFOR host_modules +] 739 740 .PHONY: install-target 741 install-target: [+ 742 FOR target_modules +] \ 743 maybe-install-target-[+module+][+ 744 ENDFOR target_modules +] 745 746 uninstall: 747 @echo "the uninstall target is not supported in this tree" 748 749 .PHONY: install.all 750 install.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 764 install-no-fixedincludes: installdirs install-host-nogcc \ 765 install-target gcc-no-fixedincludes 766 767 ### other supporting targets 768 769 MAKEDIRS= \ 770 $(DESTDIR)$(prefix) \ 771 $(DESTDIR)$(exec_prefix) 772 .PHONY: installdirs 773 installdirs: mkinstalldirs 774 $(SHELL) $(srcdir)/mkinstalldirs $(MAKEDIRS) 775 776 dir.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 783 dist: 784 @echo "Building a full distribution of this tree isn't done" 785 @echo "via 'make dist'. Check out the etc/ subdirectory" 786 787 etags 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. 795 TAGS: 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+] 803 maybe-configure-[+prefix+][+module+]: 804 @if gcc-bootstrap 805 configure-[+prefix+][+module+]: stage_current 806 @endif gcc-bootstrap 807 @if [+prefix+][+module+] 808 maybe-configure-[+prefix+][+module+]: configure-[+prefix+][+module+] 809 configure-[+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+] 849 maybe-configure-stage[+id+]-[+prefix+][+module+]: 850 @if [+prefix+][+module+]-bootstrap 851 maybe-configure-stage[+id+]-[+prefix+][+module+]: configure-stage[+id+]-[+prefix+][+module+] 852 configure-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+] 899 maybe-all-[+prefix+][+module+]: 900 @if gcc-bootstrap 901 all-[+prefix+][+module+]: stage_current 902 @endif gcc-bootstrap 903 @if [+prefix+][+module+] 904 TARGET-[+prefix+][+module+]=[+ 905 IF all_target +][+all_target+][+ ELSE +]all[+ ENDIF all_target +] 906 maybe-all-[+prefix+][+module+]: all-[+prefix+][+module+] 907 all-[+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+] 921 maybe-all-stage[+id+]-[+prefix+][+module+]: 922 maybe-clean-stage[+id+]-[+prefix+][+module+]: 923 @if [+prefix+][+module+]-bootstrap 924 maybe-all-stage[+id+]-[+prefix+][+module+]: all-stage[+id+]-[+prefix+][+module+] 925 all-stage[+id+]: all-stage[+id+]-[+prefix+][+module+] 926 TARGET-stage[+id+]-[+prefix+][+module+] = $(TARGET-[+prefix+][+module+]) 927 all-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 943 maybe-clean-stage[+id+]-[+prefix+][+module+]: clean-stage[+id+]-[+prefix+][+module+] 944 clean-stage[+id+]: clean-stage[+id+]-[+prefix+][+module+] 945 clean-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+] 993 maybe-check-[+module+]: 994 @if [+module+] 995 maybe-check-[+module+]: check-[+module+] 996 [+ IF no_check +] 997 check-[+module+]: 998 [+ ELIF no_check_cross +] 999 # This module is only tested in a native toolchain. 1000 check-[+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 +] 1010 check-[+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+] 1021 maybe-install-[+module+]: 1022 @if [+module+] 1023 maybe-install-[+module+]: install-[+module+] 1024 [+ IF no_install +] 1025 install-[+module+]: 1026 [+ ELSE install +] 1027 install-[+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+] 1040 maybe-[+make_target+]-[+module+]: 1041 @if [+module+] 1042 maybe-[+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+] 1102 maybe-check-target-[+module+]: 1103 @if target-[+module+] 1104 maybe-check-target-[+module+]: check-target-[+module+] 1105 [+ IF no_check +] 1106 # Dummy target for uncheckable module. 1107 check-target-[+module+]: 1108 [+ ELSE check +] 1109 check-target-[+module+]: 1110 @: $(MAKE); $(unstage) 1111 @r=`${PWD_COMMAND}`; export r; \ 1112 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+ 1113 IF raw_cxx +] 1114 $(RAW_CXX_TARGET_EXPORTS) \[+ 1115 ELSE normal_cxx +] 1116 $(NORMAL_TARGET_EXPORTS) \[+ 1117 ENDIF 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+] 1128 maybe-install-target-[+module+]: 1129 @if target-[+module+] 1130 maybe-install-target-[+module+]: install-target-[+module+] 1131 [+ IF no_install +] 1132 # Dummy target for uninstallable. 1133 install-target-[+module+]: 1134 [+ ELSE install +] 1135 install-target-[+module+]: installdirs 1136 @: $(MAKE); $(unstage) 1137 @r=`${PWD_COMMAND}`; export r; \ 1138 s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+ 1139 IF raw_cxx +] 1140 $(RAW_CXX_TARGET_EXPORTS) \[+ 1141 ELSE normal_cxx +] 1142 $(NORMAL_TARGET_EXPORTS) \[+ 1143 ENDIF 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+] 1152 maybe-[+make_target+]-target-[+module+]: 1153 @if target-[+module+] 1154 maybe-[+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; \[+ 1167 IF raw_cxx +] 1168 $(RAW_CXX_TARGET_EXPORTS) \[+ 1169 ELSE normal_cxx +] 1170 $(NORMAL_TARGET_EXPORTS) \[+ 1171 ENDIF 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 1194 cross: 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++ 1208 check-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++ 1219 check-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 1225 gcc-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 1257 unstage = : 1258 stage = : 1259 current_stage = "" 1260 1261 @if gcc-bootstrap 1262 unstage = if [ -f stage_last ]; then [ -f stage_current ] || $(MAKE) `cat stage_last`-start || exit 1; else :; fi 1263 stage = if [ -f stage_current ]; then $(MAKE) `cat stage_current`-end || exit 1; else :; fi 1264 current_stage = "`cat stage_current 2> /dev/null`" 1265 @endif gcc-bootstrap 1266 1267 .PHONY: unstage stage 1268 unstage: 1269 @: $(MAKE); $(unstage) 1270 stage: 1271 @: $(MAKE); $(stage) 1272 1273 # Disable commands for lean bootstrap. 1274 LEAN = 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. 1288 STAMP = echo timestamp > 1289 1290 # We only want to compare .o files, so set this! 1291 objext = .o 1292 1293 [+ FOR bootstrap-stage +] 1294 .PHONY: stage[+id+]-start stage[+id+]-end 1295 1296 stage[+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 1313 stage[+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 1330 stage[+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+] 1347 do-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+] 1418 distclean-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 1440 stageprofile-end:: 1441 $(MAKE) distclean-stagefeedback 1442 1443 stagefeedback-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 1454 do-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. 1458 stage_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. 1463 stage_current: 1464 @if test -f stage_last; then $(unstage); else $(MAKE) stage1-start; fi 1465 1466 .PHONY: restrap 1467 restrap:: 1468 @: $(MAKE); $(stage) 1469 rm -rf stage1-$(TARGET_SUBDIR) [+ FOR bootstrap-stage +][+ IF prev 1470 +]stage[+id+]-* [+ ENDIF prev +][+ ENDFOR bootstrap-stage +] 1471 restrap:: 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 +] 1481 configure-stage[+id+]-target-[+module+]: maybe-all-stage[+id+]-gcc[+ 1482 ENDFOR +][+ ELSE bootstrap +] 1483 configure-target-[+module+]: stage_last[+ 1484 ENDIF bootstrap +][+ ENDFOR target_modules +] 1485 @endif gcc-bootstrap 1486 1487 @if gcc-no-bootstrap[+ FOR target_modules +] 1488 configure-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 +][+ 1586 ENDFOR 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 +] 1614 configure-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")) +] 1619 configure-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")) +] 1624 configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss[+ 1625 ENDIF +][+ IF (lang-dep "cxx") +] 1626 configure-target-[+module+]: maybe-all-target-libstdc++-v3[+ 1627 ENDIF +] 1628 [+ ENDFOR target_modules +] 1629 1630 CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@ 1631 GDB_TK = @GDB_TK@ 1632 INSTALL_GDB_TK = @INSTALL_GDB_TK@ 1633 configure-gdb: $(CONFIGURE_GDB_TK) 1634 all-gdb: $(gdbnlmrequirements) $(GDB_TK) 1635 install-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. 1647 AUTOGEN = autogen 1648 $(srcdir)/Makefile.in: @MAINT@ $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def 1649 cd $(srcdir) && $(AUTOGEN) Makefile.def 1650 1651 # Rebuilding Makefile. 1652 Makefile: $(srcdir)/Makefile.in config.status 1653 CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status 1654 1655 config.status: configure 1656 CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck 1657 1658 # Rebuilding configure. 1659 AUTOCONF = 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: 1670 MAKEOVERRIDES= 1671 1672 # end of Makefile.in 1673