Skip to content
Snippets Groups Projects
Makefile.tpl 47.2 KiB
Newer Older
	    cd "$(TARGET_SUBDIR)/[+module+]" || exit 1; \
Nathanael Nerode's avatar
Nathanael Nerode committed
	    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}/[+module+] "no-such-file" ; then \
Nathanael Nerode's avatar
Nathanael Nerode committed
		  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}/[+module+]"; \
	      libsrcdir="$$s/[+module+]"; \
Nathanael Nerode's avatar
Nathanael Nerode committed
	    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-[+module+] maybe-all-target-[+module+]
maybe-all-target-[+module+]:
all-target-[+module+]: configure-target-[+module+]
	@r=`${PWD}`; export r; \
Nathanael Nerode's avatar
Nathanael Nerode committed
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/[+module+] && \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) [+
	       IF raw_cxx 
	         +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ 
	       ENDIF raw_cxx 
	    +] all)
[+ IF no_check +]
# Dummy target for uncheckable module.
.PHONY: check-target-[+module+]
check-target-[+module+]:
[+ ELSE check +]
.PHONY: check-target-[+module+]
check-target-[+module+]:
	@r=`${PWD}`; export r; \
Nathanael Nerode's avatar
Nathanael Nerode committed
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/[+module+] && \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) [+
	       IF raw_cxx 
	         +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ 
	       ENDIF raw_cxx 
	    +] check)
[+ ENDIF no_check +]
[+ IF no_install +]
.PHONY: install-target-[+module+] maybe-install-target-[+module+]
maybe-install-target-[+module+]:
# Dummy target for uninstallable.
install-target-[+module+]:
[+ ELSE install +]
.PHONY: install-target-[+module+] maybe-install-target-[+module+]
maybe-install-target-[+module+]:
install-target-[+module+]: installdirs
	@r=`${PWD}`; export r; \
Nathanael Nerode's avatar
Nathanael Nerode committed
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd $(TARGET_SUBDIR)/[+module+] && \
	    $(MAKE) $(TARGET_FLAGS_TO_PASS) install)
[+ ENDIF no_install +]
[+ ENDFOR target_modules +]
# ----------
# 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.
Nathanael Nerode's avatar
Nathanael Nerode committed

# gcc is the only module which uses GCC_FLAGS_TO_PASS.
.PHONY: configure-gcc maybe-configure-gcc
maybe-configure-gcc:
configure-gcc:
	@test ! -f gcc/Makefile || exit 0; \
	[ -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); \
Nathanael Nerode's avatar
Nathanael Nerode committed
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}`; export s; \
	  $(SET_LIB_PATH) \
	  (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) all); \
Nathanael Nerode's avatar
Nathanael Nerode committed
	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
Nathanael Nerode's avatar
Nathanael Nerode committed
	@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); \
.PHONY: check-gcc-c++
check-gcc-c++:
Nathanael Nerode's avatar
Nathanael Nerode committed
	@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++); \
Nathanael Nerode's avatar
Nathanael Nerode committed
	else \
	  true; \
	fi

.PHONY: check-c++
check-c++: check-target-libstdc++-v3 check-gcc-c++
.PHONY: install-gcc maybe-install-gcc
maybe-install-gcc:
Nathanael Nerode's avatar
Nathanael Nerode committed
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); \
# 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; \
Nathanael Nerode's avatar
Nathanael Nerode committed
	  r=`${PWD}`; export r; \
	  s=`cd $(srcdir); ${PWD}` ; export s; \
Nathanael Nerode's avatar
Nathanael Nerode committed
	  $(SET_LIB_PATH) \
	   $(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
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
# --------------------------------
# Multilib.out tells target dirs what multilibs they should build.
# There is really only one copy.  We use the 'timestamp' method to
# work around various timestamp bugs on some systems.
# We use move-if-change so that it's only considered updated when it
# actually changes, because it has to depend on a phony target.
	@r=`${PWD}`; export r; \
	echo "Checking multilib configuration..."; \
	$(CC_FOR_TARGET) --print-multi-lib > multilib.tmp 2> /dev/null ; \
	$(SHELL) $(srcdir)/move-if-change multilib.tmp multilib.out ; \

Nathanael Nerode's avatar
Nathanael Nerode committed
# Rebuilding Makefile.in, using autogen.
$(srcdir)/Makefile.in: # $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def
	cd $(srcdir) && $(AUTOGEN) Makefile.def
# Rebuilding Makefile.
Makefile: $(srcdir)/Makefile.in config.status
	CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status

config.status: configure $(gcc_version_trigger)
	$(SHELL) ./config.status --recheck
# Rebuilding configure.
AUTOCONF = autoconf
$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/config/acx.m4
	cd $(srcdir) && $(AUTOCONF)
Nathanael Nerode's avatar
Nathanael Nerode committed
#

.NOEXPORT:
MAKEOVERRIDES=

# 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):

Nathanael Nerode's avatar
Nathanael Nerode committed
# end of Makefile.in