
# Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'.
#
# Makefile for directory with subdirs to build.
#   Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
#   1999, 2000, 2001, 2002 Free Software Foundation
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#

# Tell GNU make 3.79 not to run the top level in parallel.  This 
# prevents contention for $builddir/$target/config.cache, as well
# as minimizing scatter in file system caches.
NOTPARALLEL = .NOTPARALLEL
$(NOTPARALLEL):

VPATH=@srcdir@
links=@configlinks@

build_alias=@build_alias@
build_cpu=@build_cpu@
build_vendor=@build_vendor@
build_os=@build_os@
build_canonical=@build_cpu@-@build_vendor@-@build_os@
host_alias=@host_alias@
host_cpu=@host_cpu@
host_vendor=@host_vendor@
host_os=@host_os@
host_canonical=@host_cpu@-@host_vendor@-@host_os@
target_alias=@target_alias@
target_cpu=@target_cpu@
target_vendor=@target_vendor@
target_os=@target_os@
target_canonical=@target_cpu@-@target_vendor@-@target_os@

enable_shared = @enable_shared@
enable_threads = @enable_threads@
enable_version_specific_runtime_libs = @enable_version_specific_runtime_libs@
# The file containing GCC's version number.
gcc_version_trigger = @gcc_version_trigger@
gcc_version = @gcc_version@

srcdir = @srcdir@

prefix = @prefix@
exec_prefix = @exec_prefix@

bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
includedir = @includedir@
oldincludedir = @oldincludedir@
infodir = @infodir@
mandir = @mandir@
gxx_include_dir = @gxx_include_dir@
libstdcxx_incdir = @libstdcxx_incdir@

tooldir = @tooldir@
build_tooldir = @build_tooldir@

program_transform_name = @program_transform_name@

man1dir = $(mandir)/man1
man2dir = $(mandir)/man2
man3dir = $(mandir)/man3
man4dir = $(mandir)/man4
man5dir = $(mandir)/man5
man6dir = $(mandir)/man6
man7dir = $(mandir)/man7
man8dir = $(mandir)/man8
man9dir = $(mandir)/man9
# Directory in which the compiler finds executables, libraries, etc.
libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)
GDB_NLM_DEPS = 

SHELL = @config_shell@

# pwd command to use.  Allow user to override default by setting PWDCMD in
# the environment to account for automounters.  The make variable must not
# be called PWDCMD, otherwise the value set here is passed to make
# subprocesses and overrides the setting from the user's environment.
PWD = $${PWDCMD-pwd}

# INSTALL_PROGRAM_ARGS is changed by configure.in to use -x for a
# cygwin host.
INSTALL_PROGRAM_ARGS =

INSTALL = $(SHELL) $$s/install-sh -c
INSTALL_PROGRAM = $(INSTALL) $(INSTALL_PROGRAM_ARGS)
INSTALL_SCRIPT = $(INSTALL)
INSTALL_DATA = $(INSTALL) -m 644

AS = @AS@
AR = @AR@
AR_FLAGS = rc
CC = @CC@

# Special variables passed down in EXTRA_GCC_FLAGS.  They are defined
# here so that they can be overridden by Makefile fragments.
BUILD_CC = $(CC_FOR_BUILD)
BUILD_PREFIX = @BUILD_PREFIX@
BUILD_PREFIX_1 = @BUILD_PREFIX_1@

CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@

LDFLAGS = 
LIBCFLAGS = $(CFLAGS)
CFLAGS_FOR_BUILD = $(CFLAGS)
# During gcc bootstrap, if we use some random cc for stage1 then
# CFLAGS will be just -g.  We want to ensure that TARGET libraries
# (which we know are built with gcc) are built with optimizations so
# prepend -O2 when setting CFLAGS_FOR_TARGET.
CFLAGS_FOR_TARGET = -O2 $(CFLAGS)
LDFLAGS_FOR_TARGET = 
LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
PICFLAG = 
PICFLAG_FOR_TARGET = 

CXX = @CXX@

# Use -O2 to stress test the compiler.
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
CXXFLAGS_FOR_TARGET = $(CXXFLAGS)
LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates

DLLTOOL = @DLLTOOL@
WINDRES = @WINDRES@

NM = @NM@

LD = @LD@

# These values are substituted by configure.
DEFAULT_YACC = @DEFAULT_YACC@
DEFAULT_LEX = @DEFAULT_LEX@
DEFAULT_M4 = @DEFAULT_M4@

BISON=@BISON@
USUAL_BISON = `if [ -f $$r/bison/bison ] ; then \
	    echo $$r/bison/bison -L $$s/bison/ ; \
	 else \
	    echo bison ; \
	 fi`

YACC=@YACC@
USUAL_YACC = `if [ -f $$r/bison/bison ] ; then \
	    echo $$r/bison/bison -y -L $$s/bison/ ; \
	elif [ -f $$r/byacc/byacc ] ; then \
	    echo $$r/byacc/byacc ; \
	else \
	    echo ${DEFAULT_YACC} ; \
	fi`

LEX=@LEX@
USUAL_LEX = `if [ -f $$r/flex/flex ] ; \
	then echo $$r/flex/flex ; \
	else echo ${DEFAULT_LEX} ; fi`

M4 = `if [ -f $$r/m4/m4 ] ; \
	then echo $$r/m4/m4 ; \
	else echo ${DEFAULT_M4} ; fi`

# For an installed makeinfo, we require it to be from texinfo 4 or
# higher, else we use the "missing" dummy.
MAKEINFO=@MAKEINFO@
USUAL_MAKEINFO = `if [ -f $$r/texinfo/makeinfo/makeinfo ] ; \
	then echo $$r/texinfo/makeinfo/makeinfo ; \
	else if (makeinfo --version \
	  | egrep 'texinfo[^0-9]*([1-3][0-9]|[4-9])') >/dev/null 2>&1; \
        then echo makeinfo; else echo $$s/missing makeinfo; fi; fi`

# This just becomes part of the MAKEINFO definition passed down to
# sub-makes.  It lets flags be given on the command line while still
# using the makeinfo from the object tree.
MAKEINFOFLAGS =

EXPECT = `if [ -f $$r/expect/expect ] ; \
	then echo $$r/expect/expect ; \
	else echo expect ; fi`

RUNTEST = `if [ -f $$s/dejagnu/runtest ] ; \
	then echo $$s/dejagnu/runtest ; \
	else echo runtest ; fi`


# compilers to use to create programs which must be run in the build
# environment.
CC_FOR_BUILD = @CC_FOR_BUILD@
CXX_FOR_BUILD = $(CXX)

SUBDIRS = @configdirs@

# This is set by the configure script to the list of directories which
# should be built using the target tools.
TARGET_CONFIGDIRS = @target_configdirs@

# Target libraries are put under this directory:
# Changed by configure to $(target_alias) if cross.
TARGET_SUBDIR = @target_subdir@

BUILD_CONFIGDIRS = libiberty
BUILD_SUBDIR = @build_subdir@

# This is set by the configure script to the arguments to use when configuring
# directories built for the build system.
BUILD_CONFIGARGS = @build_configargs@

# This is set by the configure script to the arguments to use when configuring
# directories built for the host system.
HOST_CONFIGARGS = @host_configargs@

# This is set by the configure script to the arguments to use when configuring
# directories built for the target.
TARGET_CONFIGARGS = @target_configargs@

# This is set by configure to REALLY_SET_LIB_PATH if --enable-shared
# was used.
SET_LIB_PATH = @SET_LIB_PATH@

# This is the name of the environment variable used for the path to
# the libraries.  This may be changed by configure.in.
RPATH_ENVVAR = @RPATH_ENVVAR@

# This is the list of directories that may be needed in RPATH_ENVVAR
# so that programs built for the host machine work.
HOST_LIB_PATH = $$r/bfd:$$r/opcodes

# This is the list of directories that may be needed in RPATH_ENVVAR
# so that prorgams built for the target machine work.
TARGET_LIB_PATH = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:

# configure.in sets SET_LIB_PATH to this if --enable-shared was used.
# Some platforms don't like blank entries, so we remove duplicate,
# leading and trailing colons.
REALLY_SET_LIB_PATH = \
  $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH):$(TARGET_LIB_PATH):$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR);

# Should be substed by configure.in
FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@
CC_FOR_TARGET = @CC_FOR_TARGET@
CXX_FOR_TARGET = @CXX_FOR_TARGET@
RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@
CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
GCJ_FOR_TARGET = @GCJ_FOR_TARGET@

# If GCC_FOR_TARGET is not overriden on the command line, then this
# variable is passed down to the gcc Makefile, where it is used to
# build libgcc2.a.  We define it here so that it can itself be
# overridden on the command line.
GCC_FOR_TARGET=@GCC_FOR_TARGET@
USUAL_GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) $$r/gcc/xgcc -B$$r/gcc/ $(FLAGS_FOR_TARGET)

AS_FOR_TARGET=@AS_FOR_TARGET@
USUAL_AS_FOR_TARGET = ` \
  if [ -f $$r/gas/as-new ] ; then \
    echo $$r/gas/as-new ; \
  elif [ -f $$r/gcc/xgcc ]; then \
    $(CC_FOR_TARGET) -print-prog-name=as ; \
  else \
    if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
      echo $(AS); \
    else \
       t='$(program_transform_name)'; echo as | sed -e 's/x/x/' $$t ; \
    fi; \
  fi`

LD_FOR_TARGET=@LD_FOR_TARGET@
USUAL_LD_FOR_TARGET = ` \
  if [ -f $$r/ld/ld-new ] ; then \
    echo $$r/ld/ld-new ; \
  elif [ -f $$r/gcc/xgcc ]; then \
    $(CC_FOR_TARGET) -print-prog-name=ld ; \
  else \
    if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
      echo $(LD); \
    else \
       t='$(program_transform_name)'; echo ld | sed -e 's/x/x/' $$t ; \
    fi; \
  fi`

DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
USUAL_DLLTOOL_FOR_TARGET = ` \
  if [ -f $$r/binutils/dlltool ] ; then \
    echo $$r/binutils/dlltool ; \
  else \
    if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
      echo $(DLLTOOL); \
    else \
       t='$(program_transform_name)'; echo dlltool | sed -e 's/x/x/' $$t ; \
    fi; \
  fi`

WINDRES_FOR_TARGET=@WINDRES_FOR_TARGET@
USUAL_WINDRES_FOR_TARGET = ` \
  if [ -f $$r/binutils/windres ] ; then \
    echo $$r/binutils/windres ; \
  else \
    if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
      echo $(WINDRES); \
    else \
       t='$(program_transform_name)'; echo windres | sed -e 's/x/x/' $$t ; \
    fi; \
  fi`

AR_FOR_TARGET=@AR_FOR_TARGET@
USUAL_AR_FOR_TARGET = ` \
  if [ -f $$r/binutils/ar ] ; then \
    echo $$r/binutils/ar ; \
  else \
    if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
      echo $(AR); \
    else \
       t='$(program_transform_name)'; echo ar | sed -e 's/x/x/' $$t ; \
    fi; \
  fi`

RANLIB_FOR_TARGET=@RANLIB_FOR_TARGET@
USUAL_RANLIB_FOR_TARGET = ` \
  if [ -f $$r/binutils/ranlib ] ; then \
    echo $$r/binutils/ranlib ; \
  else \
    if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
      if [ x'$(RANLIB)' != x ]; then \
         echo $(RANLIB); \
      else \
         echo ranlib; \
      fi; \
    else \
       t='$(program_transform_name)'; echo ranlib | sed -e 's/x/x/' $$t ; \
    fi; \
  fi`

NM_FOR_TARGET=@NM_FOR_TARGET@
USUAL_NM_FOR_TARGET = ` \
  if [ -f $$r/binutils/nm-new ] ; then \
    echo $$r/binutils/nm-new ; \
  elif [ -f $$r/gcc/xgcc ]; then \
    $(CC_FOR_TARGET) -print-prog-name=nm ; \
  else \
    if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
      echo $(NM); \
    else \
       t='$(program_transform_name)'; echo nm | sed -e 's/x/x/' $$t ; \
    fi; \
  fi`

# The first rule in the file had better be this one.  Don't put any above it.
# This lives here to allow makefile fragments to contain dependencies.
all: all.normal
.PHONY: all

#### host and target specific makefile fragments come in here.
###

# Flags to pass down to all sub-makes.
# Please keep these in alphabetical order.
BASE_FLAGS_TO_PASS = \
	"AR_FLAGS=$(AR_FLAGS)" \
	"AR_FOR_TARGET=$(AR_FOR_TARGET)" \
	"AS_FOR_TARGET=$(AS_FOR_TARGET)" \
	"BISON=$(BISON)" \
	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
	"CFLAGS=$(CFLAGS)" \
	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
	"GCJ_FOR_TARGET=$(GCJ_FOR_TARGET)" \
	"CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
	"CXXFLAGS=$(CXXFLAGS)" \
	"CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \
	"CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \
	"DLLTOOL_FOR_TARGET=$(DLLTOOL_FOR_TARGET)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
	"LDFLAGS=$(LDFLAGS)" \
	"LEX=$(LEX)" \
	"LD_FOR_TARGET=$(LD_FOR_TARGET)" \
	"LIBCFLAGS=$(LIBCFLAGS)" \
	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
	"LIBCXXFLAGS=$(LIBCXXFLAGS)" \
	"LIBCXXFLAGS_FOR_TARGET=$(LIBCXXFLAGS_FOR_TARGET)" \
	"M4=$(M4)" \
	"MAKE=$(MAKE)" \
	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
	"RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \
	"RPATH_ENVVAR=$(RPATH_ENVVAR)" \
	"SHELL=$(SHELL)" \
	"EXPECT=$(EXPECT)" \
	"RUNTEST=$(RUNTEST)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
	"TARGET_SUBDIR=$(TARGET_SUBDIR)" \
	"WINDRES_FOR_TARGET=$(WINDRES_FOR_TARGET)" \
	"YACC=$(YACC)" \
	"bindir=$(bindir)" \
	"datadir=$(datadir)" \
	"exec_prefix=$(exec_prefix)" \
	"includedir=$(includedir)" \
	"infodir=$(infodir)" \
	"libdir=$(libdir)" \
	"libexecdir=$(libexecdir)" \
	"lispdir=$(lispdir)" \
	"libstdcxx_incdir=$(libstdcxx_incdir)" \
	"libsubdir=$(libsubdir)" \
	"localstatedir=$(localstatedir)" \
	"mandir=$(mandir)" \
	"oldincludedir=$(oldincludedir)" \
	"prefix=$(prefix)" \
	"sbindir=$(sbindir)" \
	"sharedstatedir=$(sharedstatedir)" \
	"sysconfdir=$(sysconfdir)" \
	"tooldir=$(tooldir)" \
	"build_tooldir=$(build_tooldir)" \
	"gxx_include_dir=$(gxx_include_dir)" \
	"gcc_version=$(gcc_version)" \
	"gcc_version_trigger=$(gcc_version_trigger)" \
	"target_alias=$(target_alias)" 

# For any flags above that may contain shell code that varies from one
# target library to another.  When doing recursive invocations of the
# top-level Makefile, we don't want the outer make to evaluate them,
# so we pass these variables down unchanged.  They must not contain
# single nor double quotes.
RECURSE_FLAGS = \
	CXX_FOR_TARGET='$(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \
	RAW_CXX_FOR_TARGET='$(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \

# Flags to pass down to most sub-makes, in which we're building with
# the host environment.
# If any variables are added here, they must be added to do-*, below.
EXTRA_HOST_FLAGS = \
	'AR=$(AR)' \
	'AS=$(AS)' \
	'CC=$(CC)' \
	'CXX=$(CXX)' \
	'DLLTOOL=$(DLLTOOL)' \
	'LD=$(LD)' \
	'NM=$(NM)' \
	"`echo 'RANLIB=$(RANLIB)' | sed -e s/.*=$$/XFOO=/`" \
	'WINDRES=$(WINDRES)'

FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS)

# Flags that are concerned with the location of the X11 include files
# and library files
#
# NOTE: until the top-level is getting the values via autoconf, it only
# causes problems to have this top-level Makefile overriding the autoconf-set
# values in child directories.  Only variables that don't conflict with
# autoconf'ed ones should be passed by X11_FLAGS_TO_PASS for now.
#
X11_FLAGS_TO_PASS = \
	'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \
	'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)'

# Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; the variables
# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them.
# If any variables are added here, they must be added to do-*, below.
EXTRA_TARGET_FLAGS = \
	'AR=$$(AR_FOR_TARGET)' \
	'AS=$$(AS_FOR_TARGET)' \
	'CC=$$(CC_FOR_TARGET)' \
	'CFLAGS=$$(CFLAGS_FOR_TARGET)' \
	'CXX=$$(CXX_FOR_TARGET)' \
	'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
	'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
	'LD=$$(LD_FOR_TARGET)' \
	'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
	'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \
	'NM=$$(NM_FOR_TARGET)' \
	'RANLIB=$$(RANLIB_FOR_TARGET)' \
	'WINDRES=$$(WINDRES_FOR_TARGET)'

TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)

# Flags to pass down to gcc.  gcc builds a library, libgcc.a, so it
# unfortunately needs the native compiler and the target ar and
# ranlib.
# If any variables are added here, they must be added to do-*, below.
# The HOST_* variables are a special case, which are used for the gcc
# cross-building scheme.
EXTRA_GCC_FLAGS = \
	'AR=$(AR)' \
	'AS=$(AS)' \
	'CC=$(CC)' \
	'CXX=$(CXX)' \
	'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
	'BUILD_CC=$(CC_FOR_BUILD)' \
	'BUILD_PREFIX=$(BUILD_PREFIX)' \
	'BUILD_PREFIX_1=$(BUILD_PREFIX_1)' \
	'NM=$(NM)' \
	"`echo 'RANLIB=$(RANLIB)' | sed -e s/.*=$$/XFOO=/`" \
	'WINDRES=$$(WINDRES_FOR_TARGET)' \
	"GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
	"`echo 'LANGUAGES=$(LANGUAGES)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'LIBGCC2_CFLAGS=$(LIBGCC2_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'LIBGCC2_DEBUG_CFLAGS=$(LIBGCC2_DEBUG_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'ENQUIRE=$(ENQUIRE)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'STAGE1_CFLAGS=$(STAGE1_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
	"`echo 'BOOT_CFLAGS=$(BOOT_CFLAGS)' | sed -e s/.*=$$/XFOO=/`"

GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS)

configure-host: @configure_host_modules@
configure-target: @configure_target_modules@

# This is a list of the targets for which we can do a clean-{target}.
CLEAN_MODULES = \
	clean-ash \
	clean-autoconf \
	clean-automake \
	clean-bash \
	clean-bfd \
	clean-opcodes \
	clean-binutils \
	clean-bison \
	clean-byacc \
	clean-bzip2 \
	clean-db \
	clean-dejagnu \
	clean-diff \
	clean-dosutils \
	clean-etc \
	clean-fastjar \
	clean-fileutils \
	clean-findutils \
	clean-find \
	clean-flex \
	clean-gas \
	clean-gawk \
	clean-gettext \
	clean-gnuserv \
	clean-gprof \
	clean-grep \
	clean-gzip \
	clean-hello \
	clean-indent \
	clean-intl \
	clean-tcl \
	clean-itcl \
	clean-ld \
	clean-libgui \
	clean-libiberty \
	clean-libtool \
	clean-m4 \
	clean-make \
	clean-mmalloc \
	clean-patch \
	clean-perl \
	clean-prms \
	clean-rcs \
	clean-readline \
	clean-release \
	clean-recode \
	clean-sed \
	clean-send-pr \
	clean-shellutils \
	clean-sid \
	clean-sim \
	clean-snavigator \
	clean-tar \
	clean-texinfo \
	clean-textutils \
	clean-time \
	clean-uudecode \
	clean-wdiff \
	clean-zip \
	clean-zlib \
	clean-utils

# All of the target modules that can be cleaned
CLEAN_TARGET_MODULES = \
	clean-target-libstdc++-v3 \
	clean-target-newlib \
	clean-target-libf2c \
	clean-target-libobjc \
	clean-target-winsup \
	clean-target-libgloss \
	clean-target-libiberty \
	clean-target-gperf \
	clean-target-examples \
	clean-target-libffi \
	clean-target-libjava \
	clean-target-zlib \
	clean-target-boehm-gc \
	clean-target-qthreads \
	clean-target-rda

# All of the x11 modules that can be cleaned
CLEAN_X11_MODULES = \
	clean-gdb \
	clean-expect \
	clean-guile \
	clean-tk \
	clean-tix 

# The target built for a native build.
# This list only includes modules actually being configured and built.
.PHONY: all.normal
all.normal: @all_build_modules@ \
	@all_host_modules@ \
	@all_target_modules@

all-host: @all_host_modules@
all-target: @all_target_modules@

# Do a target for all the subdirectories.  A ``make do-X'' will do a
# ``make X'' in all subdirectories (because, in general, there is a
# dependency (below) of X upon do-X, a ``make X'' will also do this,
# but it may do additional work as well).
# This target ensures that $(BASE_FLAGS_TO_PASS) appears only once,
# because it is so large that it can easily overflow the command line
# length limit on some systems.

.PHONY: do-clean
do-clean:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			clean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			clean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-distclean
do-distclean:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			distclean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			distclean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-dvi
do-dvi:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			dvi); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			dvi); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-info
do-info:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			info); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			info); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-install-info
do-install-info:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			install-info); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			install-info); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-installcheck
do-installcheck:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			installcheck); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			installcheck); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-mostlyclean
do-mostlyclean:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			mostlyclean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			mostlyclean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-maintainer-clean
do-maintainer-clean:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			maintainer-clean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			maintainer-clean); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done

.PHONY: do-TAGS
do-TAGS:
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(SUBDIRS) -dummy-; do \
	  if [ -f ./$$i/Makefile ]; then \
	    case $$i in \
	    gcc) \
	      for flag in $(EXTRA_GCC_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    *) \
	      for flag in $(EXTRA_HOST_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	      done; \
	      ;; \
	    esac ; \
	    if (cd ./$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			TAGS); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done
	# Break into two pieces
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	for i in $(TARGET_CONFIGDIRS) -dummy-; do \
	  if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
	    for flag in $(EXTRA_TARGET_FLAGS); do \
		eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
	    done; \
	    if (cd $(TARGET_SUBDIR)/$$i; \
	        $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
			"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
	                "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \
			"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
			TAGS); \
	    then true; else exit 1; fi; \
	  else true; fi; \
	done



# Here are the targets which correspond to the do-X targets.

.PHONY: info installcheck dvi install-info
.PHONY: clean distclean mostlyclean maintainer-clean realclean
.PHONY: local-clean local-distclean local-maintainer-clean
info: do-info
installcheck: do-installcheck
dvi: do-dvi

# Make sure makeinfo is built before we do a `make info', if we're
# in fact building texinfo.
do-info: maybe-all-texinfo

install-info: do-install-info dir.info
	s=`cd $(srcdir); ${PWD}`; export s; \
	if [ -f dir.info ] ; then \
	  $(INSTALL_DATA) dir.info $(infodir)/dir.info ; \
	else true ; fi

local-clean:
	-rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E *.log

local-distclean:
	-rm -f Makefile config.status config.cache mh-frag mt-frag
	-if [ "$(TARGET_SUBDIR)" != "." ]; then \
	  rm -rf $(TARGET_SUBDIR); \
	else true; fi
	-rm -f texinfo/po/Makefile texinfo/po/Makefile.in texinfo/info/Makefile
	-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
	-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
	-rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null

local-maintainer-clean:
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."

clean: do-clean local-clean
mostlyclean: do-mostlyclean local-clean
distclean: do-distclean local-clean local-distclean
maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean 
maintainer-clean: local-distclean
realclean: maintainer-clean

# This rule is used to clean specific modules.
.PHONY: $(CLEAN_MODULES) $(CLEAN_X11_MODULES) clean-gcc
$(CLEAN_MODULES) $(CLEAN_X11_MODULES) clean-gcc:
	@dir=`echo $@ | sed -e 's/clean-//'`; \
	if [ -f ./$${dir}/Makefile ] ; then \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) clean); \
	else \
	  true; \
	fi

.PHONY: $(CLEAN_TARGET_MODULES)
$(CLEAN_TARGET_MODULES):
	@dir=`echo $@ | sed -e 's/clean-target-//'`; \
	rm -f $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/tmpmulti.out; \
	if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/$${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) clean); \
	else \
	  true; \
	fi

clean-target: $(CLEAN_TARGET_MODULES) clean-target-libgcc
clean-target-libgcc:
	test ! -d gcc/libgcc || \
	(cd gcc/libgcc && find . -type d -print) | \
	while read d; do rm -f gcc/$$d/libgcc.a || : ; done
	-rm -rf gcc/libgcc

# Check target.

.PHONY: check do-check
check:
	$(MAKE) do-check NOTPARALLEL=parallel-ok

# Only include modules actually being configured and built.
do-check: @check_host_modules@ \
	@check_target_modules@

# Automated reporting of test results.

warning.log: build.log
	$(srcdir)/contrib/warn_summary build.log > $@

mail-report.log:
	if test x'$(BOOT_CFLAGS)' != x''; then \
	    BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \
	fi; \
	$(srcdir)/contrib/test_summary -t >$@
	chmod +x $@
	echo If you really want to send e-mail, run ./$@ now

mail-report-with-warnings.log: warning.log
	if test x'$(BOOT_CFLAGS)' != x''; then \
	    BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \
	fi; \
	$(srcdir)/contrib/test_summary -t -i warning.log >$@
	chmod +x $@
	echo If you really want to send e-mail, run ./$@ now

# Installation targets.

.PHONY: install uninstall
install: installdirs @install_host_modules@ @install_target_modules@

install-target: @install_target_modules@

uninstall:
	@echo "the uninstall target is not supported in this tree"

.PHONY: install.all
install.all: install-no-fixedincludes
	@if [ -f ./gcc/Makefile ] ; then \
		r=`${PWD}` ; export r ; \
		$(SET_LIB_PATH) \
		(cd ./gcc; \
		$(MAKE) $(FLAGS_TO_PASS) install-headers) ; \
	else \
		true ; \
	fi

# install-no-fixedincludes is used because Cygnus can not distribute
# the fixed header files.
.PHONY: install-no-fixedincludes
install-no-fixedincludes: installdirs @install_host_modules_nogcc@ \
	@install_target_modules@ gcc-no-fixedincludes

### other supporting targets

MAKEDIRS= \
	$(DESTDIR)$(prefix) \
	$(DESTDIR)$(exec_prefix)
.PHONY: installdirs
installdirs: mkinstalldirs
	$(SHELL) $(srcdir)/mkinstalldirs $(MAKEDIRS)

dir.info: do-install-info
	if [ -f $(srcdir)/texinfo/gen-info-dir ] ; then \
	  $(srcdir)/texinfo/gen-info-dir $(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \
	  mv -f dir.info.new dir.info ; \
	else true ; \
	fi

dist:
	@echo "Building a full distribution of this tree isn't done"
	@echo "via 'make dist'.  Check out the etc/ subdirectory" 

etags tags: TAGS

# Right now this just builds TAGS in each subdirectory.  emacs19 has the
# ability to use several tags files at once, so there is probably no need
# to combine them into one big TAGS file (like CVS 1.3 does).  We could
# (if we felt like it) have this Makefile write a piece of elisp which
# the user could load to tell emacs19 where all the TAGS files we just
# built are.
TAGS: do-TAGS


# --------------------------------------
# Modules which run on the build machine
# --------------------------------------

.PHONY: configure-build-libiberty maybe-configure-build-libiberty
maybe-configure-build-libiberty:
configure-build-libiberty: $(BUILD_SUBDIR)/libiberty/Makefile
$(BUILD_SUBDIR)/libiberty/Makefile: config.status
	@[ -d $(BUILD_SUBDIR)/libiberty ] || mkdir $(BUILD_SUBDIR)/libiberty;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    AR="$(AR_FOR_BUILD)"; export AR; \
	    AS="$(AS_FOR_BUILD)"; export AS; \
	    CC="$(CC_FOR_BUILD)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
	    CXX="$(CXX_FOR_BUILD)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
	    LD="$(LD_FOR_BUILD)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \
	    NM="$(NM_FOR_BUILD)"; export NM; \
	    RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \
	    echo Configuring in $(BUILD_SUBDIR)/libiberty; \
	    cd "$(BUILD_SUBDIR)/libiberty" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(BUILD_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(BUILD_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libiberty "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libiberty"; \
	      libsrcdir="$$s/libiberty"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(BUILD_CONFIGARGS) $${srcdiroption} \
	      --with-build-subdir="$(BUILD_SUBDIR)" \
	      || exit 1

.PHONY: all-build-libiberty maybe-all-build-libiberty
maybe-all-build-libiberty:
all-build-libiberty: configure-build-libiberty
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  (cd $(BUILD_SUBDIR)/libiberty && $(MAKE) all)


# --------------------------------------
# Modules which run on the host machine
# --------------------------------------

.PHONY: configure-ash maybe-configure-ash
maybe-configure-ash:
configure-ash: ash/Makefile

ash/Makefile: config.status
	@[ -d ash ] || mkdir ash; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in ash; \
	cd ash || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/ash"; \
	    libsrcdir="$$s/ash";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/ash"; \
	    libsrcdir="$$s/ash";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-ash maybe-all-ash
maybe-all-ash:
all-ash: configure-ash
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd ash; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-ash
check-ash:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd ash; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-ash maybe-install-ash
maybe-install-ash:
install-ash: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd ash; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-autoconf maybe-configure-autoconf
maybe-configure-autoconf:
configure-autoconf: autoconf/Makefile

autoconf/Makefile: config.status
	@[ -d autoconf ] || mkdir autoconf; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in autoconf; \
	cd autoconf || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/autoconf"; \
	    libsrcdir="$$s/autoconf";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/autoconf"; \
	    libsrcdir="$$s/autoconf";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-autoconf maybe-all-autoconf
maybe-all-autoconf:
all-autoconf: configure-autoconf
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd autoconf; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-autoconf
check-autoconf:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd autoconf; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-autoconf maybe-install-autoconf
maybe-install-autoconf:
install-autoconf: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd autoconf; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-automake maybe-configure-automake
maybe-configure-automake:
configure-automake: automake/Makefile

automake/Makefile: config.status
	@[ -d automake ] || mkdir automake; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in automake; \
	cd automake || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/automake"; \
	    libsrcdir="$$s/automake";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/automake"; \
	    libsrcdir="$$s/automake";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-automake maybe-all-automake
maybe-all-automake:
all-automake: configure-automake
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd automake; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-automake
check-automake:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd automake; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-automake maybe-install-automake
maybe-install-automake:
install-automake: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd automake; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-bash maybe-configure-bash
maybe-configure-bash:
configure-bash: bash/Makefile

bash/Makefile: config.status
	@[ -d bash ] || mkdir bash; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in bash; \
	cd bash || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/bash"; \
	    libsrcdir="$$s/bash";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/bash"; \
	    libsrcdir="$$s/bash";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-bash maybe-all-bash
maybe-all-bash:
all-bash: configure-bash
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bash; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-bash
check-bash:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bash; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-bash maybe-install-bash
maybe-install-bash:
install-bash: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bash; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-bfd maybe-configure-bfd
maybe-configure-bfd:
configure-bfd: bfd/Makefile

bfd/Makefile: config.status
	@[ -d bfd ] || mkdir bfd; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in bfd; \
	cd bfd || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/bfd"; \
	    libsrcdir="$$s/bfd";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/bfd"; \
	    libsrcdir="$$s/bfd";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-bfd maybe-all-bfd
maybe-all-bfd:
all-bfd: configure-bfd
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bfd; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-bfd
check-bfd:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bfd; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-bfd maybe-install-bfd
maybe-install-bfd:
install-bfd: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bfd; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-opcodes maybe-configure-opcodes
maybe-configure-opcodes:
configure-opcodes: opcodes/Makefile

opcodes/Makefile: config.status
	@[ -d opcodes ] || mkdir opcodes; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in opcodes; \
	cd opcodes || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/opcodes"; \
	    libsrcdir="$$s/opcodes";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/opcodes"; \
	    libsrcdir="$$s/opcodes";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-opcodes maybe-all-opcodes
maybe-all-opcodes:
all-opcodes: configure-opcodes
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd opcodes; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-opcodes
check-opcodes:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd opcodes; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-opcodes maybe-install-opcodes
maybe-install-opcodes:
install-opcodes: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd opcodes; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-binutils maybe-configure-binutils
maybe-configure-binutils:
configure-binutils: binutils/Makefile

binutils/Makefile: config.status
	@[ -d binutils ] || mkdir binutils; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in binutils; \
	cd binutils || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/binutils"; \
	    libsrcdir="$$s/binutils";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/binutils"; \
	    libsrcdir="$$s/binutils";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-binutils maybe-all-binutils
maybe-all-binutils:
all-binutils: configure-binutils
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd binutils; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-binutils
check-binutils:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd binutils; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-binutils maybe-install-binutils
maybe-install-binutils:
install-binutils: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd binutils; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-bison maybe-configure-bison
maybe-configure-bison:
configure-bison: bison/Makefile

bison/Makefile: config.status
	@[ -d bison ] || mkdir bison; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in bison; \
	cd bison || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/bison"; \
	    libsrcdir="$$s/bison";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/bison"; \
	    libsrcdir="$$s/bison";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-bison maybe-all-bison
maybe-all-bison:
all-bison: configure-bison
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bison; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-bison
# This module is only tested in a native toolchain.
check-bison:
	@if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    (cd bison; $(MAKE) $(FLAGS_TO_PASS) check); \
	fi



.PHONY: install-bison maybe-install-bison
maybe-install-bison:
install-bison: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bison; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-byacc maybe-configure-byacc
maybe-configure-byacc:
configure-byacc: byacc/Makefile

byacc/Makefile: config.status
	@[ -d byacc ] || mkdir byacc; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in byacc; \
	cd byacc || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/byacc"; \
	    libsrcdir="$$s/byacc";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/byacc"; \
	    libsrcdir="$$s/byacc";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-byacc maybe-all-byacc
maybe-all-byacc:
all-byacc: configure-byacc
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd byacc; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-byacc
# This module is only tested in a native toolchain.
check-byacc:
	@if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    (cd byacc; $(MAKE) $(FLAGS_TO_PASS) check); \
	fi



.PHONY: install-byacc maybe-install-byacc
maybe-install-byacc:
install-byacc: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd byacc; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-bzip2 maybe-configure-bzip2
maybe-configure-bzip2:
configure-bzip2: bzip2/Makefile

bzip2/Makefile: config.status
	@[ -d bzip2 ] || mkdir bzip2; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in bzip2; \
	cd bzip2 || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/bzip2"; \
	    libsrcdir="$$s/bzip2";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/bzip2"; \
	    libsrcdir="$$s/bzip2";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-bzip2 maybe-all-bzip2
maybe-all-bzip2:
all-bzip2: configure-bzip2
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bzip2; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-bzip2
check-bzip2:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bzip2; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-bzip2 maybe-install-bzip2
maybe-install-bzip2:
install-bzip2: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd bzip2; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-db maybe-configure-db
maybe-configure-db:
configure-db: db/Makefile

db/Makefile: config.status
	@[ -d db ] || mkdir db; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in db; \
	cd db || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/db"; \
	    libsrcdir="$$s/db";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/db"; \
	    libsrcdir="$$s/db";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-db maybe-all-db
maybe-all-db:
all-db: configure-db
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd db; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-db
check-db:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd db; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-db maybe-install-db
maybe-install-db:
install-db: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd db; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-dejagnu maybe-configure-dejagnu
maybe-configure-dejagnu:
configure-dejagnu: dejagnu/Makefile

dejagnu/Makefile: config.status
	@[ -d dejagnu ] || mkdir dejagnu; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in dejagnu; \
	cd dejagnu || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/dejagnu"; \
	    libsrcdir="$$s/dejagnu";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/dejagnu"; \
	    libsrcdir="$$s/dejagnu";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-dejagnu maybe-all-dejagnu
maybe-all-dejagnu:
all-dejagnu: configure-dejagnu
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd dejagnu; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-dejagnu
check-dejagnu:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd dejagnu; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-dejagnu maybe-install-dejagnu
maybe-install-dejagnu:
install-dejagnu: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd dejagnu; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-diff maybe-configure-diff
maybe-configure-diff:
configure-diff: diff/Makefile

diff/Makefile: config.status
	@[ -d diff ] || mkdir diff; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in diff; \
	cd diff || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/diff"; \
	    libsrcdir="$$s/diff";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/diff"; \
	    libsrcdir="$$s/diff";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-diff maybe-all-diff
maybe-all-diff:
all-diff: configure-diff
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd diff; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-diff
check-diff:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd diff; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-diff maybe-install-diff
maybe-install-diff:
install-diff: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd diff; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-dosutils maybe-configure-dosutils
maybe-configure-dosutils:
configure-dosutils: dosutils/Makefile

dosutils/Makefile: config.status
	@[ -d dosutils ] || mkdir dosutils; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in dosutils; \
	cd dosutils || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/dosutils"; \
	    libsrcdir="$$s/dosutils";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/dosutils"; \
	    libsrcdir="$$s/dosutils";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-dosutils maybe-all-dosutils
maybe-all-dosutils:
all-dosutils: configure-dosutils
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd dosutils; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-dosutils
check-dosutils:



.PHONY: install-dosutils maybe-install-dosutils
maybe-install-dosutils:
install-dosutils: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd dosutils; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-etc maybe-configure-etc
maybe-configure-etc:
configure-etc: etc/Makefile

etc/Makefile: config.status
	@[ -d etc ] || mkdir etc; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in etc; \
	cd etc || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/etc"; \
	    libsrcdir="$$s/etc";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/etc"; \
	    libsrcdir="$$s/etc";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-etc maybe-all-etc
maybe-all-etc:
all-etc: configure-etc
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd etc; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-etc
check-etc:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd etc; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-etc maybe-install-etc
maybe-install-etc:
install-etc: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd etc; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-fastjar maybe-configure-fastjar
maybe-configure-fastjar:
configure-fastjar: fastjar/Makefile

fastjar/Makefile: config.status
	@[ -d fastjar ] || mkdir fastjar; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in fastjar; \
	cd fastjar || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/fastjar"; \
	    libsrcdir="$$s/fastjar";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/fastjar"; \
	    libsrcdir="$$s/fastjar";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-fastjar maybe-all-fastjar
maybe-all-fastjar:
all-fastjar: configure-fastjar
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd fastjar; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-fastjar
# This module is only tested in a native toolchain.
check-fastjar:
	@if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    (cd fastjar; $(MAKE) $(FLAGS_TO_PASS) check); \
	fi



.PHONY: install-fastjar maybe-install-fastjar
maybe-install-fastjar:
install-fastjar: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd fastjar; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-fileutils maybe-configure-fileutils
maybe-configure-fileutils:
configure-fileutils: fileutils/Makefile

fileutils/Makefile: config.status
	@[ -d fileutils ] || mkdir fileutils; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in fileutils; \
	cd fileutils || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/fileutils"; \
	    libsrcdir="$$s/fileutils";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/fileutils"; \
	    libsrcdir="$$s/fileutils";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-fileutils maybe-all-fileutils
maybe-all-fileutils:
all-fileutils: configure-fileutils
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd fileutils; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-fileutils
check-fileutils:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd fileutils; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-fileutils maybe-install-fileutils
maybe-install-fileutils:
install-fileutils: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd fileutils; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-findutils maybe-configure-findutils
maybe-configure-findutils:
configure-findutils: findutils/Makefile

findutils/Makefile: config.status
	@[ -d findutils ] || mkdir findutils; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in findutils; \
	cd findutils || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/findutils"; \
	    libsrcdir="$$s/findutils";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/findutils"; \
	    libsrcdir="$$s/findutils";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-findutils maybe-all-findutils
maybe-all-findutils:
all-findutils: configure-findutils
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd findutils; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-findutils
check-findutils:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd findutils; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-findutils maybe-install-findutils
maybe-install-findutils:
install-findutils: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd findutils; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-find maybe-configure-find
maybe-configure-find:
configure-find: find/Makefile

find/Makefile: config.status
	@[ -d find ] || mkdir find; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in find; \
	cd find || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/find"; \
	    libsrcdir="$$s/find";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/find"; \
	    libsrcdir="$$s/find";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-find maybe-all-find
maybe-all-find:
all-find: configure-find
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd find; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-find
check-find:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd find; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-find maybe-install-find
maybe-install-find:
install-find: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd find; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-flex maybe-configure-flex
maybe-configure-flex:
configure-flex: flex/Makefile

flex/Makefile: config.status
	@[ -d flex ] || mkdir flex; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in flex; \
	cd flex || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/flex"; \
	    libsrcdir="$$s/flex";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/flex"; \
	    libsrcdir="$$s/flex";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-flex maybe-all-flex
maybe-all-flex:
all-flex: configure-flex
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd flex; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-flex
# This module is only tested in a native toolchain.
check-flex:
	@if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    (cd flex; $(MAKE) $(FLAGS_TO_PASS) check); \
	fi



.PHONY: install-flex maybe-install-flex
maybe-install-flex:
install-flex: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd flex; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-gas maybe-configure-gas
maybe-configure-gas:
configure-gas: gas/Makefile

gas/Makefile: config.status
	@[ -d gas ] || mkdir gas; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gas; \
	cd gas || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gas"; \
	    libsrcdir="$$s/gas";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gas"; \
	    libsrcdir="$$s/gas";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-gas maybe-all-gas
maybe-all-gas:
all-gas: configure-gas
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gas; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-gas
check-gas:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gas; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-gas maybe-install-gas
maybe-install-gas:
install-gas: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gas; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-gawk maybe-configure-gawk
maybe-configure-gawk:
configure-gawk: gawk/Makefile

gawk/Makefile: config.status
	@[ -d gawk ] || mkdir gawk; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gawk; \
	cd gawk || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gawk"; \
	    libsrcdir="$$s/gawk";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gawk"; \
	    libsrcdir="$$s/gawk";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-gawk maybe-all-gawk
maybe-all-gawk:
all-gawk: configure-gawk
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gawk; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-gawk
check-gawk:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gawk; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-gawk maybe-install-gawk
maybe-install-gawk:
install-gawk: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gawk; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-gettext maybe-configure-gettext
maybe-configure-gettext:
configure-gettext: gettext/Makefile

gettext/Makefile: config.status
	@[ -d gettext ] || mkdir gettext; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gettext; \
	cd gettext || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gettext"; \
	    libsrcdir="$$s/gettext";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gettext"; \
	    libsrcdir="$$s/gettext";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-gettext maybe-all-gettext
maybe-all-gettext:
all-gettext: configure-gettext
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gettext; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-gettext
check-gettext:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gettext; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-gettext maybe-install-gettext
maybe-install-gettext:
install-gettext: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gettext; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-gnuserv maybe-configure-gnuserv
maybe-configure-gnuserv:
configure-gnuserv: gnuserv/Makefile

gnuserv/Makefile: config.status
	@[ -d gnuserv ] || mkdir gnuserv; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gnuserv; \
	cd gnuserv || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gnuserv"; \
	    libsrcdir="$$s/gnuserv";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gnuserv"; \
	    libsrcdir="$$s/gnuserv";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-gnuserv maybe-all-gnuserv
maybe-all-gnuserv:
all-gnuserv: configure-gnuserv
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gnuserv; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-gnuserv
check-gnuserv:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gnuserv; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-gnuserv maybe-install-gnuserv
maybe-install-gnuserv:
install-gnuserv: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gnuserv; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-gprof maybe-configure-gprof
maybe-configure-gprof:
configure-gprof: gprof/Makefile

gprof/Makefile: config.status
	@[ -d gprof ] || mkdir gprof; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gprof; \
	cd gprof || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gprof"; \
	    libsrcdir="$$s/gprof";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gprof"; \
	    libsrcdir="$$s/gprof";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-gprof maybe-all-gprof
maybe-all-gprof:
all-gprof: configure-gprof
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gprof; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-gprof
check-gprof:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gprof; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-gprof maybe-install-gprof
maybe-install-gprof:
install-gprof: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gprof; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-grep maybe-configure-grep
maybe-configure-grep:
configure-grep: grep/Makefile

grep/Makefile: config.status
	@[ -d grep ] || mkdir grep; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in grep; \
	cd grep || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/grep"; \
	    libsrcdir="$$s/grep";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/grep"; \
	    libsrcdir="$$s/grep";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-grep maybe-all-grep
maybe-all-grep:
all-grep: configure-grep
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd grep; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-grep
check-grep:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd grep; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-grep maybe-install-grep
maybe-install-grep:
install-grep: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd grep; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-gzip maybe-configure-gzip
maybe-configure-gzip:
configure-gzip: gzip/Makefile

gzip/Makefile: config.status
	@[ -d gzip ] || mkdir gzip; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gzip; \
	cd gzip || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gzip"; \
	    libsrcdir="$$s/gzip";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gzip"; \
	    libsrcdir="$$s/gzip";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-gzip maybe-all-gzip
maybe-all-gzip:
all-gzip: configure-gzip
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gzip; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-gzip
check-gzip:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gzip; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-gzip maybe-install-gzip
maybe-install-gzip:
install-gzip: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gzip; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-hello maybe-configure-hello
maybe-configure-hello:
configure-hello: hello/Makefile

hello/Makefile: config.status
	@[ -d hello ] || mkdir hello; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in hello; \
	cd hello || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/hello"; \
	    libsrcdir="$$s/hello";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/hello"; \
	    libsrcdir="$$s/hello";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-hello maybe-all-hello
maybe-all-hello:
all-hello: configure-hello
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd hello; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-hello
check-hello:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd hello; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-hello maybe-install-hello
maybe-install-hello:
install-hello: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd hello; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-indent maybe-configure-indent
maybe-configure-indent:
configure-indent: indent/Makefile

indent/Makefile: config.status
	@[ -d indent ] || mkdir indent; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in indent; \
	cd indent || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/indent"; \
	    libsrcdir="$$s/indent";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/indent"; \
	    libsrcdir="$$s/indent";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-indent maybe-all-indent
maybe-all-indent:
all-indent: configure-indent
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd indent; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-indent
check-indent:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd indent; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-indent maybe-install-indent
maybe-install-indent:
install-indent: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd indent; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-intl maybe-configure-intl
maybe-configure-intl:
configure-intl: intl/Makefile

intl/Makefile: config.status
	@[ -d intl ] || mkdir intl; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in intl; \
	cd intl || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/intl"; \
	    libsrcdir="$$s/intl";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/intl"; \
	    libsrcdir="$$s/intl";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-intl maybe-all-intl
maybe-all-intl:
all-intl: configure-intl
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd intl; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-intl
check-intl:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd intl; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-intl maybe-install-intl
maybe-install-intl:
install-intl: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd intl; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-tcl maybe-configure-tcl
maybe-configure-tcl:
configure-tcl: tcl/Makefile

tcl/Makefile: config.status
	@[ -d tcl ] || mkdir tcl; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in tcl; \
	cd tcl || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/tcl"; \
	    libsrcdir="$$s/tcl";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/tcl"; \
	    libsrcdir="$$s/tcl";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-tcl maybe-all-tcl
maybe-all-tcl:
all-tcl: configure-tcl
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tcl; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-tcl
check-tcl:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tcl; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-tcl maybe-install-tcl
maybe-install-tcl:
install-tcl: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tcl; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-itcl maybe-configure-itcl
maybe-configure-itcl:
configure-itcl: itcl/Makefile

itcl/Makefile: config.status
	@[ -d itcl ] || mkdir itcl; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in itcl; \
	cd itcl || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/itcl"; \
	    libsrcdir="$$s/itcl";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/itcl"; \
	    libsrcdir="$$s/itcl";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-itcl maybe-all-itcl
maybe-all-itcl:
all-itcl: configure-itcl
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd itcl; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-itcl
check-itcl:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd itcl; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-itcl maybe-install-itcl
maybe-install-itcl:
install-itcl: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd itcl; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-ld maybe-configure-ld
maybe-configure-ld:
configure-ld: ld/Makefile

ld/Makefile: config.status
	@[ -d ld ] || mkdir ld; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in ld; \
	cd ld || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/ld"; \
	    libsrcdir="$$s/ld";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/ld"; \
	    libsrcdir="$$s/ld";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-ld maybe-all-ld
maybe-all-ld:
all-ld: configure-ld
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd ld; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-ld
check-ld:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd ld; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-ld maybe-install-ld
maybe-install-ld:
install-ld: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd ld; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-libgui maybe-configure-libgui
maybe-configure-libgui:
configure-libgui: libgui/Makefile

libgui/Makefile: config.status
	@[ -d libgui ] || mkdir libgui; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in libgui; \
	cd libgui || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/libgui"; \
	    libsrcdir="$$s/libgui";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/libgui"; \
	    libsrcdir="$$s/libgui";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-libgui maybe-all-libgui
maybe-all-libgui:
all-libgui: configure-libgui
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libgui; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-libgui
check-libgui:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libgui; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-libgui maybe-install-libgui
maybe-install-libgui:
install-libgui: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libgui; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-libiberty maybe-configure-libiberty
maybe-configure-libiberty:
configure-libiberty: libiberty/Makefile

libiberty/Makefile: config.status
	@[ -d libiberty ] || mkdir libiberty; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in libiberty; \
	cd libiberty || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/libiberty"; \
	    libsrcdir="$$s/libiberty";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/libiberty"; \
	    libsrcdir="$$s/libiberty";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-libiberty maybe-all-libiberty
maybe-all-libiberty:
all-libiberty: configure-libiberty
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libiberty; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-libiberty
check-libiberty:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libiberty; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-libiberty maybe-install-libiberty
maybe-install-libiberty:
install-libiberty: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libiberty; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-libtool maybe-configure-libtool
maybe-configure-libtool:
configure-libtool: libtool/Makefile

libtool/Makefile: config.status
	@[ -d libtool ] || mkdir libtool; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in libtool; \
	cd libtool || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/libtool"; \
	    libsrcdir="$$s/libtool";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/libtool"; \
	    libsrcdir="$$s/libtool";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-libtool maybe-all-libtool
maybe-all-libtool:
all-libtool: configure-libtool
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libtool; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-libtool
check-libtool:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libtool; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-libtool maybe-install-libtool
maybe-install-libtool:
install-libtool: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libtool; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-m4 maybe-configure-m4
maybe-configure-m4:
configure-m4: m4/Makefile

m4/Makefile: config.status
	@[ -d m4 ] || mkdir m4; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in m4; \
	cd m4 || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/m4"; \
	    libsrcdir="$$s/m4";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/m4"; \
	    libsrcdir="$$s/m4";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-m4 maybe-all-m4
maybe-all-m4:
all-m4: configure-m4
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd m4; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-m4
check-m4:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd m4; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-m4 maybe-install-m4
maybe-install-m4:
install-m4: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd m4; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-make maybe-configure-make
maybe-configure-make:
configure-make: make/Makefile

make/Makefile: config.status
	@[ -d make ] || mkdir make; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in make; \
	cd make || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/make"; \
	    libsrcdir="$$s/make";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/make"; \
	    libsrcdir="$$s/make";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-make maybe-all-make
maybe-all-make:
all-make: configure-make
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd make; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-make
check-make:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd make; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-make maybe-install-make
maybe-install-make:
install-make: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd make; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-mmalloc maybe-configure-mmalloc
maybe-configure-mmalloc:
configure-mmalloc: mmalloc/Makefile

mmalloc/Makefile: config.status
	@[ -d mmalloc ] || mkdir mmalloc; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in mmalloc; \
	cd mmalloc || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/mmalloc"; \
	    libsrcdir="$$s/mmalloc";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/mmalloc"; \
	    libsrcdir="$$s/mmalloc";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-mmalloc maybe-all-mmalloc
maybe-all-mmalloc:
all-mmalloc: configure-mmalloc
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd mmalloc; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-mmalloc
check-mmalloc:



.PHONY: install-mmalloc maybe-install-mmalloc
maybe-install-mmalloc:
install-mmalloc: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd mmalloc; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-patch maybe-configure-patch
maybe-configure-patch:
configure-patch: patch/Makefile

patch/Makefile: config.status
	@[ -d patch ] || mkdir patch; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in patch; \
	cd patch || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/patch"; \
	    libsrcdir="$$s/patch";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/patch"; \
	    libsrcdir="$$s/patch";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-patch maybe-all-patch
maybe-all-patch:
all-patch: configure-patch
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd patch; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-patch
check-patch:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd patch; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-patch maybe-install-patch
maybe-install-patch:
install-patch: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd patch; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-perl maybe-configure-perl
maybe-configure-perl:
configure-perl: perl/Makefile

perl/Makefile: config.status
	@[ -d perl ] || mkdir perl; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in perl; \
	cd perl || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/perl"; \
	    libsrcdir="$$s/perl";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/perl"; \
	    libsrcdir="$$s/perl";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-perl maybe-all-perl
maybe-all-perl:
all-perl: configure-perl
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd perl; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-perl
check-perl:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd perl; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-perl maybe-install-perl
maybe-install-perl:
install-perl: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd perl; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-prms maybe-configure-prms
maybe-configure-prms:
configure-prms: prms/Makefile

prms/Makefile: config.status
	@[ -d prms ] || mkdir prms; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in prms; \
	cd prms || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/prms"; \
	    libsrcdir="$$s/prms";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/prms"; \
	    libsrcdir="$$s/prms";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-prms maybe-all-prms
maybe-all-prms:
all-prms: configure-prms
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd prms; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-prms
check-prms:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd prms; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-prms maybe-install-prms
maybe-install-prms:
install-prms: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd prms; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-rcs maybe-configure-rcs
maybe-configure-rcs:
configure-rcs: rcs/Makefile

rcs/Makefile: config.status
	@[ -d rcs ] || mkdir rcs; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in rcs; \
	cd rcs || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/rcs"; \
	    libsrcdir="$$s/rcs";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/rcs"; \
	    libsrcdir="$$s/rcs";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-rcs maybe-all-rcs
maybe-all-rcs:
all-rcs: configure-rcs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd rcs; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-rcs
check-rcs:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd rcs; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-rcs maybe-install-rcs
maybe-install-rcs:
install-rcs: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd rcs; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-readline maybe-configure-readline
maybe-configure-readline:
configure-readline: readline/Makefile

readline/Makefile: config.status
	@[ -d readline ] || mkdir readline; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in readline; \
	cd readline || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/readline"; \
	    libsrcdir="$$s/readline";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/readline"; \
	    libsrcdir="$$s/readline";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-readline maybe-all-readline
maybe-all-readline:
all-readline: configure-readline
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd readline; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-readline
check-readline:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd readline; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-readline maybe-install-readline
maybe-install-readline:
install-readline: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd readline; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-release maybe-configure-release
maybe-configure-release:
configure-release: release/Makefile

release/Makefile: config.status
	@[ -d release ] || mkdir release; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in release; \
	cd release || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/release"; \
	    libsrcdir="$$s/release";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/release"; \
	    libsrcdir="$$s/release";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-release maybe-all-release
maybe-all-release:
all-release: configure-release
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd release; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-release
check-release:



.PHONY: install-release maybe-install-release
maybe-install-release:
install-release:


.PHONY: configure-recode maybe-configure-recode
maybe-configure-recode:
configure-recode: recode/Makefile

recode/Makefile: config.status
	@[ -d recode ] || mkdir recode; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in recode; \
	cd recode || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/recode"; \
	    libsrcdir="$$s/recode";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/recode"; \
	    libsrcdir="$$s/recode";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-recode maybe-all-recode
maybe-all-recode:
all-recode: configure-recode
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd recode; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-recode
check-recode:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd recode; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-recode maybe-install-recode
maybe-install-recode:
install-recode: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd recode; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-sed maybe-configure-sed
maybe-configure-sed:
configure-sed: sed/Makefile

sed/Makefile: config.status
	@[ -d sed ] || mkdir sed; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in sed; \
	cd sed || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/sed"; \
	    libsrcdir="$$s/sed";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/sed"; \
	    libsrcdir="$$s/sed";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-sed maybe-all-sed
maybe-all-sed:
all-sed: configure-sed
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sed; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-sed
check-sed:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sed; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-sed maybe-install-sed
maybe-install-sed:
install-sed: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sed; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-send-pr maybe-configure-send-pr
maybe-configure-send-pr:
configure-send-pr: send-pr/Makefile

send-pr/Makefile: config.status
	@[ -d send-pr ] || mkdir send-pr; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in send-pr; \
	cd send-pr || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/send-pr"; \
	    libsrcdir="$$s/send-pr";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/send-pr"; \
	    libsrcdir="$$s/send-pr";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-send-pr maybe-all-send-pr
maybe-all-send-pr:
all-send-pr: configure-send-pr
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd send-pr; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-send-pr
check-send-pr:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd send-pr; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-send-pr maybe-install-send-pr
maybe-install-send-pr:
install-send-pr: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd send-pr; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-shellutils maybe-configure-shellutils
maybe-configure-shellutils:
configure-shellutils: shellutils/Makefile

shellutils/Makefile: config.status
	@[ -d shellutils ] || mkdir shellutils; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in shellutils; \
	cd shellutils || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/shellutils"; \
	    libsrcdir="$$s/shellutils";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/shellutils"; \
	    libsrcdir="$$s/shellutils";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-shellutils maybe-all-shellutils
maybe-all-shellutils:
all-shellutils: configure-shellutils
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd shellutils; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-shellutils
check-shellutils:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd shellutils; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-shellutils maybe-install-shellutils
maybe-install-shellutils:
install-shellutils: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd shellutils; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-sid maybe-configure-sid
maybe-configure-sid:
configure-sid: sid/Makefile

sid/Makefile: config.status
	@[ -d sid ] || mkdir sid; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in sid; \
	cd sid || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/sid"; \
	    libsrcdir="$$s/sid";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/sid"; \
	    libsrcdir="$$s/sid";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-sid maybe-all-sid
maybe-all-sid:
all-sid: configure-sid
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sid; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-sid
check-sid:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sid; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-sid maybe-install-sid
maybe-install-sid:
install-sid: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sid; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-sim maybe-configure-sim
maybe-configure-sim:
configure-sim: sim/Makefile

sim/Makefile: config.status
	@[ -d sim ] || mkdir sim; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in sim; \
	cd sim || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/sim"; \
	    libsrcdir="$$s/sim";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/sim"; \
	    libsrcdir="$$s/sim";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-sim maybe-all-sim
maybe-all-sim:
all-sim: configure-sim
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sim; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-sim
check-sim:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sim; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-sim maybe-install-sim
maybe-install-sim:
install-sim: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd sim; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-snavigator maybe-configure-snavigator
maybe-configure-snavigator:
configure-snavigator: snavigator/Makefile

snavigator/Makefile: config.status
	@[ -d snavigator ] || mkdir snavigator; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in snavigator; \
	cd snavigator || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/snavigator"; \
	    libsrcdir="$$s/snavigator";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/snavigator"; \
	    libsrcdir="$$s/snavigator";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-snavigator maybe-all-snavigator
maybe-all-snavigator:
all-snavigator: configure-snavigator
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd snavigator; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-snavigator
check-snavigator:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd snavigator; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-snavigator maybe-install-snavigator
maybe-install-snavigator:
install-snavigator: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd snavigator; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-tar maybe-configure-tar
maybe-configure-tar:
configure-tar: tar/Makefile

tar/Makefile: config.status
	@[ -d tar ] || mkdir tar; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in tar; \
	cd tar || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/tar"; \
	    libsrcdir="$$s/tar";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/tar"; \
	    libsrcdir="$$s/tar";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-tar maybe-all-tar
maybe-all-tar:
all-tar: configure-tar
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tar; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-tar
check-tar:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tar; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-tar maybe-install-tar
maybe-install-tar:
install-tar: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tar; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-texinfo maybe-configure-texinfo
maybe-configure-texinfo:
configure-texinfo: texinfo/Makefile

texinfo/Makefile: config.status
	@[ -d texinfo ] || mkdir texinfo; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in texinfo; \
	cd texinfo || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/texinfo"; \
	    libsrcdir="$$s/texinfo";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/texinfo"; \
	    libsrcdir="$$s/texinfo";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-texinfo maybe-all-texinfo
maybe-all-texinfo:
all-texinfo: configure-texinfo
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd texinfo; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-texinfo
check-texinfo:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd texinfo; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-texinfo maybe-install-texinfo
maybe-install-texinfo:
install-texinfo:


.PHONY: configure-textutils maybe-configure-textutils
maybe-configure-textutils:
configure-textutils: textutils/Makefile

textutils/Makefile: config.status
	@[ -d textutils ] || mkdir textutils; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in textutils; \
	cd textutils || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/textutils"; \
	    libsrcdir="$$s/textutils";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/textutils"; \
	    libsrcdir="$$s/textutils";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-textutils maybe-all-textutils
maybe-all-textutils:
all-textutils: configure-textutils
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd textutils; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-textutils
check-textutils:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd textutils; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-textutils maybe-install-textutils
maybe-install-textutils:
install-textutils: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd textutils; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-time maybe-configure-time
maybe-configure-time:
configure-time: time/Makefile

time/Makefile: config.status
	@[ -d time ] || mkdir time; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in time; \
	cd time || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/time"; \
	    libsrcdir="$$s/time";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/time"; \
	    libsrcdir="$$s/time";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-time maybe-all-time
maybe-all-time:
all-time: configure-time
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd time; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-time
check-time:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd time; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-time maybe-install-time
maybe-install-time:
install-time: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd time; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-uudecode maybe-configure-uudecode
maybe-configure-uudecode:
configure-uudecode: uudecode/Makefile

uudecode/Makefile: config.status
	@[ -d uudecode ] || mkdir uudecode; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in uudecode; \
	cd uudecode || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/uudecode"; \
	    libsrcdir="$$s/uudecode";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/uudecode"; \
	    libsrcdir="$$s/uudecode";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-uudecode maybe-all-uudecode
maybe-all-uudecode:
all-uudecode: configure-uudecode
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd uudecode; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-uudecode
check-uudecode:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd uudecode; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-uudecode maybe-install-uudecode
maybe-install-uudecode:
install-uudecode: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd uudecode; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-wdiff maybe-configure-wdiff
maybe-configure-wdiff:
configure-wdiff: wdiff/Makefile

wdiff/Makefile: config.status
	@[ -d wdiff ] || mkdir wdiff; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in wdiff; \
	cd wdiff || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/wdiff"; \
	    libsrcdir="$$s/wdiff";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/wdiff"; \
	    libsrcdir="$$s/wdiff";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-wdiff maybe-all-wdiff
maybe-all-wdiff:
all-wdiff: configure-wdiff
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd wdiff; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-wdiff
check-wdiff:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd wdiff; $(MAKE) $(FLAGS_TO_PASS) check)



.PHONY: install-wdiff maybe-install-wdiff
maybe-install-wdiff:
install-wdiff: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd wdiff; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-zip maybe-configure-zip
maybe-configure-zip:
configure-zip: zip/Makefile

zip/Makefile: config.status
	@[ -d zip ] || mkdir zip; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in zip; \
	cd zip || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/zip"; \
	    libsrcdir="$$s/zip";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/zip"; \
	    libsrcdir="$$s/zip";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-zip maybe-all-zip
maybe-all-zip:
all-zip: configure-zip
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd zip; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-zip
# This module is only tested in a native toolchain.
check-zip:
	@if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    (cd zip; $(MAKE) $(FLAGS_TO_PASS) check); \
	fi



.PHONY: install-zip maybe-install-zip
maybe-install-zip:
install-zip: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd zip; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-zlib maybe-configure-zlib
maybe-configure-zlib:
configure-zlib: zlib/Makefile

zlib/Makefile: config.status
	@[ -d zlib ] || mkdir zlib; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in zlib; \
	cd zlib || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/zlib"; \
	    libsrcdir="$$s/zlib";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/zlib"; \
	    libsrcdir="$$s/zlib";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-zlib maybe-all-zlib
maybe-all-zlib:
all-zlib: configure-zlib
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd zlib; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-zlib
check-zlib:



.PHONY: install-zlib maybe-install-zlib
maybe-install-zlib:
install-zlib:


.PHONY: configure-gdb maybe-configure-gdb
maybe-configure-gdb:
configure-gdb: gdb/Makefile

gdb/Makefile: config.status
	@[ -d gdb ] || mkdir gdb; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gdb; \
	cd gdb || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gdb"; \
	    libsrcdir="$$s/gdb";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gdb"; \
	    libsrcdir="$$s/gdb";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-gdb maybe-all-gdb
maybe-all-gdb:
all-gdb: configure-gdb
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gdb; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all)


.PHONY: check-gdb
check-gdb:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gdb; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check)



.PHONY: install-gdb maybe-install-gdb
maybe-install-gdb:
install-gdb: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gdb; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install)


.PHONY: configure-expect maybe-configure-expect
maybe-configure-expect:
configure-expect: expect/Makefile

expect/Makefile: config.status
	@[ -d expect ] || mkdir expect; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in expect; \
	cd expect || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/expect"; \
	    libsrcdir="$$s/expect";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/expect"; \
	    libsrcdir="$$s/expect";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-expect maybe-all-expect
maybe-all-expect:
all-expect: configure-expect
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd expect; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all)


.PHONY: check-expect
check-expect:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd expect; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check)



.PHONY: install-expect maybe-install-expect
maybe-install-expect:
install-expect: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd expect; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install)


.PHONY: configure-guile maybe-configure-guile
maybe-configure-guile:
configure-guile: guile/Makefile

guile/Makefile: config.status
	@[ -d guile ] || mkdir guile; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in guile; \
	cd guile || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/guile"; \
	    libsrcdir="$$s/guile";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/guile"; \
	    libsrcdir="$$s/guile";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-guile maybe-all-guile
maybe-all-guile:
all-guile: configure-guile
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd guile; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all)


.PHONY: check-guile
check-guile:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd guile; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check)



.PHONY: install-guile maybe-install-guile
maybe-install-guile:
install-guile: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd guile; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install)


.PHONY: configure-tk maybe-configure-tk
maybe-configure-tk:
configure-tk: tk/Makefile

tk/Makefile: config.status
	@[ -d tk ] || mkdir tk; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in tk; \
	cd tk || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/tk"; \
	    libsrcdir="$$s/tk";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/tk"; \
	    libsrcdir="$$s/tk";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-tk maybe-all-tk
maybe-all-tk:
all-tk: configure-tk
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tk; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all)


.PHONY: check-tk
check-tk:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tk; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check)



.PHONY: install-tk maybe-install-tk
maybe-install-tk:
install-tk: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tk; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install)


.PHONY: configure-tix maybe-configure-tix
maybe-configure-tix:
configure-tix: tix/Makefile

tix/Makefile: config.status
	@[ -d tix ] || mkdir tix; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in tix; \
	cd tix || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/tix"; \
	    libsrcdir="$$s/tix";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/tix"; \
	    libsrcdir="$$s/tix";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-tix maybe-all-tix
maybe-all-tix:
all-tix: configure-tix
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tix; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all)


.PHONY: check-tix
check-tix:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tix; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check)



.PHONY: install-tix maybe-install-tix
maybe-install-tix:
install-tix: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd tix; $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install)


.PHONY: configure-libtermcap maybe-configure-libtermcap
maybe-configure-libtermcap:
configure-libtermcap: libtermcap/Makefile

libtermcap/Makefile: config.status
	@[ -d libtermcap ] || mkdir libtermcap; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in libtermcap; \
	cd libtermcap || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/libtermcap"; \
	    libsrcdir="$$s/libtermcap";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/libtermcap"; \
	    libsrcdir="$$s/libtermcap";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-libtermcap maybe-all-libtermcap
maybe-all-libtermcap:
all-libtermcap: configure-libtermcap
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libtermcap; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-libtermcap
check-libtermcap:



.PHONY: install-libtermcap maybe-install-libtermcap
maybe-install-libtermcap:
install-libtermcap: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd libtermcap; $(MAKE) $(FLAGS_TO_PASS) install)


.PHONY: configure-utils maybe-configure-utils
maybe-configure-utils:
configure-utils: utils/Makefile

utils/Makefile: config.status
	@[ -d utils ] || mkdir utils; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in utils; \
	cd utils || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/utils"; \
	    libsrcdir="$$s/utils";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/utils"; \
	    libsrcdir="$$s/utils";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

.PHONY: all-utils maybe-all-utils
maybe-all-utils:
all-utils: configure-utils
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd utils; $(MAKE) $(FLAGS_TO_PASS) all)


.PHONY: check-utils
check-utils:



.PHONY: install-utils maybe-install-utils
maybe-install-utils:
install-utils: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd utils; $(MAKE) $(FLAGS_TO_PASS) install)



# ---------------------------------------
# Modules which run on the target machine
# ---------------------------------------

.PHONY: configure-target-libstdc++-v3 maybe-configure-target-libstdc++-v3
maybe-configure-target-libstdc++-v3:
configure-target-libstdc++-v3: $(TARGET_SUBDIR)/libstdc++-v3/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libstdc++-v3/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libstdc++-v3 ] || mkdir $(TARGET_SUBDIR)/libstdc++-v3;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libstdc++-v3"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libstdc++-v3/Makefile: config.status $(TARGET_SUBDIR)/libstdc++-v3/multilib.out
	@[ -d $(TARGET_SUBDIR)/libstdc++-v3 ] || mkdir $(TARGET_SUBDIR)/libstdc++-v3;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
	    CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libstdc++-v3; \
	    cd "$(TARGET_SUBDIR)/libstdc++-v3" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libstdc++-v3 "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \
	      libsrcdir="$$s/libstdc++-v3"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libstdc++-v3 maybe-all-target-libstdc++-v3
maybe-all-target-libstdc++-v3:
all-target-libstdc++-v3: configure-target-libstdc++-v3
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libstdc++-v3; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'  all)

.PHONY: check-target-libstdc++-v3
check-target-libstdc++-v3:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libstdc++-v3; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'  check)


.PHONY: install-target-libstdc++-v3 maybe-install-target-libstdc++-v3
maybe-install-target-libstdc++-v3:
install-target-libstdc++-v3: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libstdc++-v3; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-newlib maybe-configure-target-newlib
maybe-configure-target-newlib:
configure-target-newlib: $(TARGET_SUBDIR)/newlib/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/newlib/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/newlib ] || mkdir $(TARGET_SUBDIR)/newlib;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for newlib"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/newlib/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/newlib/Makefile: config.status $(TARGET_SUBDIR)/newlib/multilib.out
	@[ -d $(TARGET_SUBDIR)/newlib ] || mkdir $(TARGET_SUBDIR)/newlib;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/newlib; \
	    cd "$(TARGET_SUBDIR)/newlib" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/newlib "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/newlib"; \
	      libsrcdir="$$s/newlib"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-newlib maybe-all-target-newlib
maybe-all-target-newlib:
all-target-newlib: configure-target-newlib
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/newlib; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-newlib
check-target-newlib:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/newlib; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-newlib maybe-install-target-newlib
maybe-install-target-newlib:
install-target-newlib: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/newlib; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-libf2c maybe-configure-target-libf2c
maybe-configure-target-libf2c:
configure-target-libf2c: $(TARGET_SUBDIR)/libf2c/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libf2c/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libf2c ] || mkdir $(TARGET_SUBDIR)/libf2c;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libf2c"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libf2c/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libf2c/Makefile: config.status $(TARGET_SUBDIR)/libf2c/multilib.out
	@[ -d $(TARGET_SUBDIR)/libf2c ] || mkdir $(TARGET_SUBDIR)/libf2c;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libf2c; \
	    cd "$(TARGET_SUBDIR)/libf2c" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libf2c "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libf2c"; \
	      libsrcdir="$$s/libf2c"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libf2c maybe-all-target-libf2c
maybe-all-target-libf2c:
all-target-libf2c: configure-target-libf2c
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libf2c; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-libf2c
check-target-libf2c:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libf2c; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-libf2c maybe-install-target-libf2c
maybe-install-target-libf2c:
install-target-libf2c: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libf2c; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-libobjc maybe-configure-target-libobjc
maybe-configure-target-libobjc:
configure-target-libobjc: $(TARGET_SUBDIR)/libobjc/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libobjc/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libobjc ] || mkdir $(TARGET_SUBDIR)/libobjc;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libobjc"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libobjc/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libobjc/Makefile: config.status $(TARGET_SUBDIR)/libobjc/multilib.out
	@[ -d $(TARGET_SUBDIR)/libobjc ] || mkdir $(TARGET_SUBDIR)/libobjc;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libobjc; \
	    cd "$(TARGET_SUBDIR)/libobjc" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libobjc "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libobjc"; \
	      libsrcdir="$$s/libobjc"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libobjc maybe-all-target-libobjc
maybe-all-target-libobjc:
all-target-libobjc: configure-target-libobjc
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libobjc; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-libobjc
check-target-libobjc:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libobjc; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-libobjc maybe-install-target-libobjc
maybe-install-target-libobjc:
install-target-libobjc: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libobjc; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-libtermcap maybe-configure-target-libtermcap
maybe-configure-target-libtermcap:
configure-target-libtermcap: $(TARGET_SUBDIR)/libtermcap/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libtermcap/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libtermcap ] || mkdir $(TARGET_SUBDIR)/libtermcap;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libtermcap"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libtermcap/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libtermcap/Makefile: config.status $(TARGET_SUBDIR)/libtermcap/multilib.out
	@[ -d $(TARGET_SUBDIR)/libtermcap ] || mkdir $(TARGET_SUBDIR)/libtermcap;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libtermcap; \
	    cd "$(TARGET_SUBDIR)/libtermcap" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libtermcap "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libtermcap"; \
	      libsrcdir="$$s/libtermcap"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libtermcap maybe-all-target-libtermcap
maybe-all-target-libtermcap:
all-target-libtermcap: configure-target-libtermcap
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libtermcap; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

# Dummy target for uncheckable module.
.PHONY: check-target-libtermcap
check-target-libtermcap:


.PHONY: install-target-libtermcap maybe-install-target-libtermcap
maybe-install-target-libtermcap:
install-target-libtermcap: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libtermcap; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-winsup maybe-configure-target-winsup
maybe-configure-target-winsup:
configure-target-winsup: $(TARGET_SUBDIR)/winsup/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/winsup/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/winsup ] || mkdir $(TARGET_SUBDIR)/winsup;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for winsup"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/winsup/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/winsup/Makefile: config.status $(TARGET_SUBDIR)/winsup/multilib.out
	@[ -d $(TARGET_SUBDIR)/winsup ] || mkdir $(TARGET_SUBDIR)/winsup;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/winsup; \
	    cd "$(TARGET_SUBDIR)/winsup" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/winsup "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/winsup"; \
	      libsrcdir="$$s/winsup"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-winsup maybe-all-target-winsup
maybe-all-target-winsup:
all-target-winsup: configure-target-winsup
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/winsup; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-winsup
check-target-winsup:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/winsup; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-winsup maybe-install-target-winsup
maybe-install-target-winsup:
install-target-winsup: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/winsup; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-libgloss maybe-configure-target-libgloss
maybe-configure-target-libgloss:
configure-target-libgloss: $(TARGET_SUBDIR)/libgloss/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libgloss/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libgloss ] || mkdir $(TARGET_SUBDIR)/libgloss;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libgloss"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgloss/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libgloss/Makefile: config.status $(TARGET_SUBDIR)/libgloss/multilib.out
	@[ -d $(TARGET_SUBDIR)/libgloss ] || mkdir $(TARGET_SUBDIR)/libgloss;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libgloss; \
	    cd "$(TARGET_SUBDIR)/libgloss" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libgloss "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libgloss"; \
	      libsrcdir="$$s/libgloss"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libgloss maybe-all-target-libgloss
maybe-all-target-libgloss:
all-target-libgloss: configure-target-libgloss
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libgloss; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

# Dummy target for uncheckable module.
.PHONY: check-target-libgloss
check-target-libgloss:


.PHONY: install-target-libgloss maybe-install-target-libgloss
maybe-install-target-libgloss:
install-target-libgloss: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libgloss; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-libiberty maybe-configure-target-libiberty
maybe-configure-target-libiberty:
configure-target-libiberty: $(TARGET_SUBDIR)/libiberty/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libiberty/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libiberty ] || mkdir $(TARGET_SUBDIR)/libiberty;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libiberty"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libiberty/Makefile: config.status $(TARGET_SUBDIR)/libiberty/multilib.out
	@[ -d $(TARGET_SUBDIR)/libiberty ] || mkdir $(TARGET_SUBDIR)/libiberty;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libiberty; \
	    cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libiberty "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libiberty"; \
	      libsrcdir="$$s/libiberty"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libiberty maybe-all-target-libiberty
maybe-all-target-libiberty:
all-target-libiberty: configure-target-libiberty
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libiberty; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-libiberty
check-target-libiberty:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libiberty; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-libiberty maybe-install-target-libiberty
maybe-install-target-libiberty:
install-target-libiberty: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libiberty; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-gperf maybe-configure-target-gperf
maybe-configure-target-gperf:
configure-target-gperf: $(TARGET_SUBDIR)/gperf/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/gperf/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/gperf ] || mkdir $(TARGET_SUBDIR)/gperf;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for gperf"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/gperf/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/gperf/Makefile: config.status $(TARGET_SUBDIR)/gperf/multilib.out
	@[ -d $(TARGET_SUBDIR)/gperf ] || mkdir $(TARGET_SUBDIR)/gperf;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/gperf; \
	    cd "$(TARGET_SUBDIR)/gperf" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/gperf "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/gperf"; \
	      libsrcdir="$$s/gperf"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-gperf maybe-all-target-gperf
maybe-all-target-gperf:
all-target-gperf: configure-target-gperf
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/gperf; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-gperf
check-target-gperf:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/gperf; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-gperf maybe-install-target-gperf
maybe-install-target-gperf:
install-target-gperf: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/gperf; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-examples maybe-configure-target-examples
maybe-configure-target-examples:
configure-target-examples: $(TARGET_SUBDIR)/examples/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/examples/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/examples ] || mkdir $(TARGET_SUBDIR)/examples;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for examples"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/examples/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/examples/Makefile: config.status $(TARGET_SUBDIR)/examples/multilib.out
	@[ -d $(TARGET_SUBDIR)/examples ] || mkdir $(TARGET_SUBDIR)/examples;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/examples; \
	    cd "$(TARGET_SUBDIR)/examples" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/examples "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/examples"; \
	      libsrcdir="$$s/examples"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-examples maybe-all-target-examples
maybe-all-target-examples:
all-target-examples: configure-target-examples
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/examples; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

# Dummy target for uncheckable module.
.PHONY: check-target-examples
check-target-examples:


.PHONY: install-target-examples maybe-install-target-examples
maybe-install-target-examples:
# Dummy target for uninstallable.
install-target-examples:


.PHONY: configure-target-libffi maybe-configure-target-libffi
maybe-configure-target-libffi:
configure-target-libffi: $(TARGET_SUBDIR)/libffi/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libffi/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libffi ] || mkdir $(TARGET_SUBDIR)/libffi;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libffi"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libffi/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libffi/Makefile: config.status $(TARGET_SUBDIR)/libffi/multilib.out
	@[ -d $(TARGET_SUBDIR)/libffi ] || mkdir $(TARGET_SUBDIR)/libffi;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libffi; \
	    cd "$(TARGET_SUBDIR)/libffi" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libffi "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libffi"; \
	      libsrcdir="$$s/libffi"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libffi maybe-all-target-libffi
maybe-all-target-libffi:
all-target-libffi: configure-target-libffi
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libffi; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-libffi
check-target-libffi:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libffi; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-libffi maybe-install-target-libffi
maybe-install-target-libffi:
# Dummy target for uninstallable.
install-target-libffi:


.PHONY: configure-target-libjava maybe-configure-target-libjava
maybe-configure-target-libjava:
configure-target-libjava: $(TARGET_SUBDIR)/libjava/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/libjava/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/libjava ] || mkdir $(TARGET_SUBDIR)/libjava;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for libjava"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libjava/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/libjava/Makefile: config.status $(TARGET_SUBDIR)/libjava/multilib.out
	@[ -d $(TARGET_SUBDIR)/libjava ] || mkdir $(TARGET_SUBDIR)/libjava;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
	    CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/libjava; \
	    cd "$(TARGET_SUBDIR)/libjava" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/libjava "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/libjava"; \
	      libsrcdir="$$s/libjava"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-libjava maybe-all-target-libjava
maybe-all-target-libjava:
all-target-libjava: configure-target-libjava
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libjava; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'  all)

.PHONY: check-target-libjava
check-target-libjava:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libjava; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)'  check)


.PHONY: install-target-libjava maybe-install-target-libjava
maybe-install-target-libjava:
install-target-libjava: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/libjava; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-zlib maybe-configure-target-zlib
maybe-configure-target-zlib:
configure-target-zlib: $(TARGET_SUBDIR)/zlib/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/zlib/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/zlib ] || mkdir $(TARGET_SUBDIR)/zlib;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for zlib"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/zlib/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/zlib/Makefile: config.status $(TARGET_SUBDIR)/zlib/multilib.out
	@[ -d $(TARGET_SUBDIR)/zlib ] || mkdir $(TARGET_SUBDIR)/zlib;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/zlib; \
	    cd "$(TARGET_SUBDIR)/zlib" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/zlib "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/zlib"; \
	      libsrcdir="$$s/zlib"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-zlib maybe-all-target-zlib
maybe-all-target-zlib:
all-target-zlib: configure-target-zlib
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/zlib; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-zlib
check-target-zlib:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/zlib; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-zlib maybe-install-target-zlib
maybe-install-target-zlib:
install-target-zlib: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/zlib; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-boehm-gc maybe-configure-target-boehm-gc
maybe-configure-target-boehm-gc:
configure-target-boehm-gc: $(TARGET_SUBDIR)/boehm-gc/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/boehm-gc/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/boehm-gc ] || mkdir $(TARGET_SUBDIR)/boehm-gc;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for boehm-gc"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/boehm-gc/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/boehm-gc/Makefile: config.status $(TARGET_SUBDIR)/boehm-gc/multilib.out
	@[ -d $(TARGET_SUBDIR)/boehm-gc ] || mkdir $(TARGET_SUBDIR)/boehm-gc;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/boehm-gc; \
	    cd "$(TARGET_SUBDIR)/boehm-gc" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/boehm-gc "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/boehm-gc"; \
	      libsrcdir="$$s/boehm-gc"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-boehm-gc maybe-all-target-boehm-gc
maybe-all-target-boehm-gc:
all-target-boehm-gc: configure-target-boehm-gc
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/boehm-gc; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-boehm-gc
check-target-boehm-gc:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/boehm-gc; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-boehm-gc maybe-install-target-boehm-gc
maybe-install-target-boehm-gc:
install-target-boehm-gc: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/boehm-gc; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-qthreads maybe-configure-target-qthreads
maybe-configure-target-qthreads:
configure-target-qthreads: $(TARGET_SUBDIR)/qthreads/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/qthreads/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/qthreads ] || mkdir $(TARGET_SUBDIR)/qthreads;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for qthreads"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/qthreads/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/qthreads/Makefile: config.status $(TARGET_SUBDIR)/qthreads/multilib.out
	@[ -d $(TARGET_SUBDIR)/qthreads ] || mkdir $(TARGET_SUBDIR)/qthreads;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/qthreads; \
	    cd "$(TARGET_SUBDIR)/qthreads" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/qthreads "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/qthreads"; \
	      libsrcdir="$$s/qthreads"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-qthreads maybe-all-target-qthreads
maybe-all-target-qthreads:
all-target-qthreads: configure-target-qthreads
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/qthreads; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-qthreads
check-target-qthreads:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/qthreads; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-qthreads maybe-install-target-qthreads
maybe-install-target-qthreads:
install-target-qthreads: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/qthreads; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)


.PHONY: configure-target-rda maybe-configure-target-rda
maybe-configure-target-rda:
configure-target-rda: $(TARGET_SUBDIR)/rda/Makefile

# Don't manually override CC_FOR_TARGET at make time; get it set right
# at configure time.  Otherwise multilibs may be wrong.
$(TARGET_SUBDIR)/rda/multilib.out: maybe-all-gcc
	@[ -d $(TARGET_SUBDIR)/rda ] || mkdir $(TARGET_SUBDIR)/rda;\
	r=`${PWD}`; export r; \
	echo "Configuring multilibs for rda"; \
	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/rda/multilib.out 2> /dev/null

$(TARGET_SUBDIR)/rda/Makefile: config.status $(TARGET_SUBDIR)/rda/multilib.out
	@[ -d $(TARGET_SUBDIR)/rda ] || mkdir $(TARGET_SUBDIR)/rda;\
	    r=`${PWD}`; export r; \
	    s=`cd $(srcdir); ${PWD}`; export s; \
	    $(SET_LIB_PATH) \
	    AR="$(AR_FOR_TARGET)"; export AR; \
	    AS="$(AS_FOR_TARGET)"; export AS; \
	    CC="$(CC_FOR_TARGET)"; export CC; \
	    CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
	    CXX="$(CXX_FOR_TARGET)"; export CXX; \
	    CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
	    GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
	    DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
	    LD="$(LD_FOR_TARGET)"; export LD; \
            LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
	    NM="$(NM_FOR_TARGET)"; export NM; \
	    RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
	    WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
	    echo Configuring in $(TARGET_SUBDIR)/rda; \
	    cd "$(TARGET_SUBDIR)/rda" || exit 1; \
	    case $(srcdir) in \
	    /* | [A-Za-z]:[\\/]*) \
	      topdir=$(srcdir) ;; \
	    *) \
	      case "$(TARGET_SUBDIR)" in \
	      .) topdir="../$(srcdir)" ;; \
	      *) topdir="../../$(srcdir)" ;; \
	      esac ;; \
	    esac; \
	    if [ "$(srcdir)" = "." ] ; then \
	      if [ "$(TARGET_SUBDIR)" != "." ] ; then \
		if $(SHELL) $$s/symlink-tree $${topdir}/rda "no-such-file" ; then \
		  if [ -f Makefile ]; then \
		    if $(MAKE) distclean; then \
		      true; \
		    else \
		      exit 1; \
		    fi; \
		  else \
		    true; \
		  fi; \
		else \
		  exit 1; \
		fi; \
	      else \
		true; \
	      fi; \
	      srcdiroption="--srcdir=."; \
	      libsrcdir="."; \
	    else \
	      srcdiroption="--srcdir=$${topdir}/rda"; \
	      libsrcdir="$$s/rda"; \
	    fi; \
	    rm -f no-such-file || : ; \
	    CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
	      $(TARGET_CONFIGARGS) $${srcdiroption} \
	      --with-target-subdir="$(TARGET_SUBDIR)" \
	      || exit 1

.PHONY: all-target-rda maybe-all-target-rda
maybe-all-target-rda:
all-target-rda: configure-target-rda
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/rda; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  all)

.PHONY: check-target-rda
check-target-rda:
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/rda; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS)  check)


.PHONY: install-target-rda maybe-install-target-rda
maybe-install-target-rda:
install-target-rda: installdirs
	@r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/rda; \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)



# ----------
# GCC module
# ----------

# Unfortunately, while gcc _should_ be a host module,
# libgcc is a target module, and gen* programs are
# build modules.  So GCC is a sort of hybrid.

# gcc is the only module which uses GCC_FLAGS_TO_PASS.
.PHONY: configure-gcc maybe-configure-gcc
maybe-configure-gcc:
configure-gcc: gcc/Makefile

gcc/Makefile: config.status
	@[ -d gcc ] || mkdir gcc; \
	r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	CC="$(CC)"; export CC; \
	CFLAGS="$(CFLAGS)"; export CFLAGS; \
	CXX="$(CXX)"; export CXX; \
	CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
	if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
	  AR="$(AR)"; export AR; \
	  AS="$(AS)"; export AS; \
	  CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
	  DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
	  LD="$(LD)"; export LD; \
	  NM="$(NM)"; export NM; \
	  RANLIB="$(RANLIB)"; export RANLIB; \
	  WINDRES="$(WINDRES)"; export WINDRES; \
	  OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
	  OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
	fi; \
	echo Configuring in gcc; \
	cd gcc || exit 1; \
	case $(srcdir) in \
	  \.) \
	    srcdiroption="--srcdir=."; \
	    libsrcdir=".";; \
	  /* | [A-Za-z]:[\\/]*) \
	    srcdiroption="--srcdir=$(srcdir)/gcc"; \
	    libsrcdir="$$s/gcc";; \
	  *) \
	    srcdiroption="--srcdir=../$(srcdir)/gcc"; \
	    libsrcdir="$$s/gcc";; \
	esac; \
	$(SHELL) $${libsrcdir}/configure \
	  $(HOST_CONFIGARGS) $${srcdiroption} \
	  || exit 1

# Don't 'make all' in gcc if it's already been made by 'bootstrap'; that
# causes trouble.  This wart will be fixed eventually by moving
# the bootstrap behavior to this file.
.PHONY: all-gcc maybe-all-gcc
maybe-all-gcc:
all-gcc: configure-gcc
	@if [ -f gcc/stage_last ] ; then \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) quickstrap); \
	else \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) all); \
	fi

# Building GCC uses some tools for rebuilding "source" files
# like texinfo, bison/byacc, etc.  So we must depend on those.
#
# While building GCC, it may be necessary to run various target
# programs like the assembler, linker, etc.  So we depend on
# those too.
#
# In theory, on an SMP all those dependencies can be resolved
# in parallel.
#
.PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap
bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap: all-bootstrap configure-gcc
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	echo "Bootstrapping the compiler"; \
	cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $@
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	case "$@" in \
	  *bootstrap4-lean ) \
			msg="Comparing stage3 and stage4 of the compiler"; \
	  		compare=compare3-lean ;; \
	  *bootstrap4 ) msg="Comparing stage3 and stage4 of the compiler"; \
	  		compare=compare3 ;; \
	  *-lean )	msg="Comparing stage2 and stage3 of the compiler"; \
	  		compare=compare-lean ;; \
	  * )		msg="Comparing stage2 and stage3 of the compiler"; \
	  		compare=compare ;; \
	esac; \
	$(SET_LIB_PATH) \
	echo "$$msg"; \
	cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $$compare
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}` ; export s; \
	$(SET_LIB_PATH) \
	echo "Building runtime libraries"; \
	$(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all

.PHONY: cross
cross: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}`; export s; \
	$(SET_LIB_PATH) \
	echo "Building the C and C++ compiler"; \
	cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++"
	@r=`${PWD}`; export r; \
	s=`cd $(srcdir); ${PWD}` ; export s; \
	$(SET_LIB_PATH) \
	echo "Building runtime libraries"; \
	$(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) \
	  LANGUAGES="c c++" all

.PHONY: check-gcc
check-gcc:
	@if [ -f ./gcc/Makefile ] ; then \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) check); \
	else \
	  true; \
	fi

.PHONY: check-gcc-c++
check-gcc-c++:
	@if [ -f ./gcc/Makefile ] ; then \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); \
	else \
	  true; \
	fi

.PHONY: check-c++
check-c++: check-target-libstdc++-v3 check-gcc-c++

.PHONY: install-gcc maybe-install-gcc
maybe-install-gcc:
install-gcc:
	@if [ -f ./gcc/Makefile ] ; then \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
	else \
	  true; \
	fi

# Install the gcc headers files, but not the fixed include files,
# which Cygnus is not allowed to distribute.  This rule is very
# dependent on the workings of the gcc Makefile.in.
.PHONY: gcc-no-fixedincludes
gcc-no-fixedincludes:
	@if [ -f ./gcc/Makefile ]; then \
	  rm -rf gcc/tmp-include; \
	  mv gcc/include gcc/tmp-include 2>/dev/null; \
	  mkdir gcc/include; \
	  cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \
	  touch gcc/stmp-fixinc gcc/include/fixed; \
	  rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}` ; export s; \
	  $(SET_LIB_PATH) \
	  (cd ./gcc; \
	   $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
	  rm -rf gcc/include; \
	  mv gcc/tmp-include gcc/include 2>/dev/null; \
	else true; fi

# --------------------------------------
# Dependencies between different modules
# --------------------------------------

# There are two types of dependencies here: 'hard' dependencies, where one
# module simply won't build without the other; and 'soft' dependencies, where
# if the depended-on module is missing, the depending module will do without
# or find a substitute somewhere (perhaps installed).  Soft dependencies
# are specified by depending on a 'maybe-' target.  If you're not sure,
# it's safer to use a soft dependency.

# Host modules specific to gcc.
# GCC needs to identify certain tools.
configure-gcc: maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex
all-gcc: maybe-all-libiberty maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
# This is a slightly kludgy method of getting dependencies on 
# all-build-libiberty correct; it would be better to build it every time.
all-gcc: maybe-all-build-libiberty
all-bootstrap: maybe-all-libiberty maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib

# Host modules specific to gdb.
# GDB needs to know that the simulator is being built.
configure-gdb: maybe-configure-tcl maybe-configure-tk maybe-configure-sim
GDB_TK = @GDB_TK@
all-gdb: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK)
install-gdb: maybe-install-tcl maybe-install-tk maybe-install-itcl maybe-install-tix maybe-install-libgui
configure-libgui: maybe-configure-tcl maybe-configure-tk
all-libgui: maybe-all-tcl maybe-all-tk maybe-all-itcl

# Host modules specific to binutils.
configure-bfd: configure-libiberty
all-bfd: maybe-all-libiberty maybe-all-intl
all-binutils: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl
# We put install-opcodes before install-binutils because the installed
# binutils might be on PATH, and they might need the shared opcodes
# library.
install-binutils: maybe-install-opcodes
all-gas: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-intl
all-gprof: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-intl
all-ld: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl
all-opcodes: maybe-all-bfd maybe-all-libiberty

# Other host modules in the 'src' repository.
all-dejagnu: maybe-all-tcl maybe-all-expect maybe-all-tk
configure-expect: maybe-configure-tcl maybe-configure-tk
all-expect: maybe-all-tcl maybe-all-tk
configure-itcl: maybe-configure-tcl maybe-configure-tk
all-itcl: maybe-all-tcl maybe-all-tk
# We put install-tcl before install-itcl because itcl wants to run a
# program on installation which uses the Tcl libraries.
install-itcl: maybe-install-tcl
all-sid: maybe-all-tcl maybe-all-tk
install-sid: maybe-install-tcl maybe-install-tk
all-sim: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb
configure-tk: maybe-configure-tcl
all-tk: maybe-all-tcl
configure-tix: maybe-configure-tcl maybe-configure-tk
all-tix: maybe-all-tcl maybe-all-tk
all-texinfo: maybe-all-libiberty

# Other host modules.  Warning, these are not well tested.
all-autoconf: maybe-all-m4 maybe-all-texinfo
all-automake: maybe-all-m4 maybe-all-texinfo
all-bison: maybe-all-texinfo
all-diff: maybe-all-libiberty
all-fastjar: maybe-all-zlib maybe-all-libiberty
all-fileutils: maybe-all-libiberty
all-flex: maybe-all-libiberty maybe-all-bison maybe-all-byacc
all-grep: maybe-all-libiberty
all-gzip: maybe-all-libiberty
all-hello: maybe-all-libiberty
all-m4: maybe-all-libiberty maybe-all-texinfo
all-make: maybe-all-libiberty
all-patch: maybe-all-libiberty
all-prms: maybe-all-libiberty
all-recode: maybe-all-libiberty
all-sed: maybe-all-libiberty
all-send-pr: maybe-all-prms
all-snavigator: maybe-all-tcl maybe-all-tk maybe-all-itcl maybe-all-tix maybe-all-db maybe-all-grep maybe-all-libgui
all-tar: maybe-all-libiberty
all-uudecode: maybe-all-libiberty

ALL_GCC = maybe-all-gcc
ALL_GCC_C = $(ALL_GCC) maybe-all-target-newlib maybe-all-target-libgloss
ALL_GCC_CXX = $(ALL_GCC_C) maybe-all-target-libstdc++-v3

# Target modules specific to gcc.
configure-target-boehm-gc: $(ALL_GCC_C) maybe-configure-target-qthreads
configure-target-fastjar: maybe-configure-target-zlib
all-target-fastjar: maybe-all-target-zlib maybe-all-target-libiberty
configure-target-libf2c: $(ALL_GCC_C)
all-target-libf2c: maybe-all-target-libiberty
configure-target-libffi: $(ALL_GCC_C) 
configure-target-libjava: $(ALL_GCC_C) maybe-configure-target-zlib maybe-configure-target-boehm-gc maybe-configure-target-qthreads maybe-configure-target-libffi
all-target-libjava: maybe-all-fastjar maybe-all-target-zlib maybe-all-target-boehm-gc maybe-all-target-qthreads maybe-all-target-libffi
configure-target-libobjc: $(ALL_GCC_C)
all-target-libobjc: maybe-all-target-libiberty
configure-target-libstdc++-v3: $(ALL_GCC_C)
all-target-libstdc++-v3: maybe-all-target-libiberty
configure-target-zlib: $(ALL_GCC_C)

# Target modules in the 'src' repository.
configure-target-examples: $(ALL_GCC_C)
configure-target-libgloss: $(ALL_GCC)
all-target-libgloss: maybe-configure-target-newlib
configure-target-libiberty: $(ALL_GCC_C)
configure-target-libtermcap: $(ALL_GCC_C)
configure-target-newlib: $(ALL_GCC)
configure-target-rda: $(ALL_GCC_C)
configure-target-winsup: $(ALL_GCC_C)
all-target-winsup: maybe-all-target-libiberty maybe-all-target-libtermcap

# Other target modules.  Warning, these are not well tested.
configure-target-gperf: $(ALL_GCC_CXX)
all-target-gperf: maybe-all-target-libiberty maybe-all-target-libstdc++-v3
configure-target-qthreads: $(ALL_GCC_C)

# Dependencies of maybe-foo on foo.  These are used because, for example,
# all-gcc only depends on all-gas if gas is present and being configured.
@maybe_dependencies@

# Serialization dependencies.  Host configures don't work well in parallel to
# each other, due to contention over config.cache.  Target configures and 
# build configures are similar.
@serialization_dependencies@

# --------------------------------
# Regenerating top level configury
# --------------------------------

# Rebuilding Makefile.in, using autogen.
$(srcdir)/Makefile.in: # $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def
	cd $(srcdir) && autogen Makefile.def

# with the gnu make, this is done automatically.

host_makefile_frag=@host_makefile_frag@
target_makefile_frag=@target_makefile_frag@

Makefile: Makefile.in configure.in $(host_makefile_frag) $(target_makefile_frag) $(gcc_version_trigger)
	$(SHELL) ./config.status

#

.NOEXPORT:
MAKEOVERRIDES=

# end of Makefile.in
