diff options
author | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-12-16 18:23:00 +0000 |
---|---|---|
committer | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-12-16 18:23:00 +0000 |
commit | 805e22b2051e9c6a75377ea6599654d7415da483 (patch) | |
tree | c259697c448b0c6f548f153c48c46a8d7a75970f /Makefile.tpl | |
parent | 2c27ce73ee2229b0871c4ccad2342d8a4be85eff (diff) | |
download | gcc-805e22b2051e9c6a75377ea6599654d7415da483.tar.gz |
Merge basic-improvements-branch to trunk
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60174 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'Makefile.tpl')
-rw-r--r-- | Makefile.tpl | 1185 |
1 files changed, 525 insertions, 660 deletions
diff --git a/Makefile.tpl b/Makefile.tpl index e19af6ecae3..9f64035a380 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -29,6 +29,32 @@ in 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@ @@ -83,22 +109,19 @@ INSTALL_PROGRAM = $(INSTALL) $(INSTALL_PROGRAM_ARGS) INSTALL_SCRIPT = $(INSTALL) INSTALL_DATA = $(INSTALL) -m 644 -INSTALL_DOSREL = install-dosrel-fake - -AS = as -AR = ar +AS = @AS@ +AR = @AR@ AR_FLAGS = rc -CC = cc +CC = @CC@ # Special variables passed down in EXTRA_GCC_FLAGS. They are defined # here so that they can be overridden by Makefile fragments. -HOST_CC = $(CC_FOR_BUILD) -BUILD_PREFIX = -BUILD_PREFIX_1 = loser- +BUILD_CC = $(CC_FOR_BUILD) +BUILD_PREFIX = @BUILD_PREFIX@ +BUILD_PREFIX_1 = @BUILD_PREFIX_1@ -# These flag values are normally overridden by the configure script. -CFLAGS = -g -CXXFLAGS = -g -O2 +CFLAGS = @CFLAGS@ +CXXFLAGS = @CXXFLAGS@ LDFLAGS = LIBCFLAGS = $(CFLAGS) @@ -113,32 +136,34 @@ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) PICFLAG = PICFLAG_FOR_TARGET = -CXX = c++ +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 +DLLTOOL = @DLLTOOL@ +WINDRES = @WINDRES@ -NM = nm +NM = @NM@ -LD = ld +LD = @LD@ # These values are substituted by configure. DEFAULT_YACC = @DEFAULT_YACC@ DEFAULT_LEX = @DEFAULT_LEX@ DEFAULT_M4 = @DEFAULT_M4@ -BISON = `if [ -f $$r/bison/bison ] ; then \ +BISON=@BISON@ +USUAL_BISON = `if [ -f $$r/bison/bison ] ; then \ echo $$r/bison/bison -L $$s/bison/ ; \ else \ echo bison ; \ fi` -YACC = `if [ -f $$r/bison/bison ] ; then \ +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 ; \ @@ -146,7 +171,8 @@ YACC = `if [ -f $$r/bison/bison ] ; then \ echo ${DEFAULT_YACC} ; \ fi` -LEX = `if [ -f $$r/flex/flex ] ; \ +LEX=@LEX@ +USUAL_LEX = `if [ -f $$r/flex/flex ] ; \ then echo $$r/flex/flex ; \ else echo ${DEFAULT_LEX} ; fi` @@ -156,7 +182,8 @@ M4 = `if [ -f $$r/m4/m4 ] ; \ # For an installed makeinfo, we require it to be from texinfo 4 or # higher, else we use the "missing" dummy. -MAKEINFO = `if [ -f $$r/texinfo/makeinfo/makeinfo ] ; \ +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; \ @@ -178,7 +205,7 @@ RUNTEST = `if [ -f $$s/dejagnu/runtest ] ; \ # compilers to use to create programs which must be run in the build # environment. -CC_FOR_BUILD = $(CC) +CC_FOR_BUILD = @CC_FOR_BUILD@ CXX_FOR_BUILD = $(CXX) SUBDIRS = @configdirs@ @@ -195,13 +222,17 @@ 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 target. -TARGET_CONFIGARGS = @target_configargs@ - -# 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@ @@ -224,35 +255,24 @@ TARGET_LIB_PATH = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: REALLY_SET_LIB_PATH = \ $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH):$(TARGET_LIB_PATH):$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); -ALL = all.normal -INSTALL_TARGET = installdirs \ - install-gcc \ - $(INSTALL_MODULES) \ - $(INSTALL_TARGET_MODULES) \ - $(INSTALL_X11_MODULES) \ - $(INSTALL_DOSREL) - -INSTALL_TARGET_CROSS = installdirs \ - install-gcc-cross \ - $(INSTALL_MODULES) \ - $(INSTALL_TARGET_MODULES) \ - $(INSTALL_X11_MODULES) \ - $(INSTALL_DOSREL) - # 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 = $(STAGE_CC_WRAPPER) $$r/gcc/xgcc -B$$r/gcc/ $(FLAGS_FOR_TARGET) +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=@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 \ @@ -265,7 +285,8 @@ AS_FOR_TARGET = ` \ fi; \ fi` -LD_FOR_TARGET = ` \ +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 \ @@ -278,7 +299,8 @@ LD_FOR_TARGET = ` \ fi; \ fi` -DLLTOOL_FOR_TARGET = ` \ +DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +USUAL_DLLTOOL_FOR_TARGET = ` \ if [ -f $$r/binutils/dlltool ] ; then \ echo $$r/binutils/dlltool ; \ else \ @@ -289,7 +311,8 @@ DLLTOOL_FOR_TARGET = ` \ fi; \ fi` -WINDRES_FOR_TARGET = ` \ +WINDRES_FOR_TARGET=@WINDRES_FOR_TARGET@ +USUAL_WINDRES_FOR_TARGET = ` \ if [ -f $$r/binutils/windres ] ; then \ echo $$r/binutils/windres ; \ else \ @@ -300,7 +323,8 @@ WINDRES_FOR_TARGET = ` \ fi; \ fi` -AR_FOR_TARGET = ` \ +AR_FOR_TARGET=@AR_FOR_TARGET@ +USUAL_AR_FOR_TARGET = ` \ if [ -f $$r/binutils/ar ] ; then \ echo $$r/binutils/ar ; \ else \ @@ -311,7 +335,8 @@ AR_FOR_TARGET = ` \ fi; \ fi` -RANLIB_FOR_TARGET = ` \ +RANLIB_FOR_TARGET=@RANLIB_FOR_TARGET@ +USUAL_RANLIB_FOR_TARGET = ` \ if [ -f $$r/binutils/ranlib ] ; then \ echo $$r/binutils/ranlib ; \ else \ @@ -326,7 +351,8 @@ RANLIB_FOR_TARGET = ` \ fi; \ fi` -NM_FOR_TARGET = ` \ +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 \ @@ -344,13 +370,6 @@ NM_FOR_TARGET = ` \ all: all.normal .PHONY: all -# These can be overridden by config/mt-*. -# The _TARGET_ is because they're specified in mt-foo. -# The _HOST_ is because they're programs that run on the host. -EXTRA_TARGET_HOST_ALL_MODULES = -EXTRA_TARGET_HOST_INSTALL_MODULES = -EXTRA_TARGET_HOST_CHECK_MODULES = - #### host and target specific makefile fragments come in here. ### @@ -425,7 +444,8 @@ BASE_FLAGS_TO_PASS = \ # 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)' + 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. @@ -488,7 +508,7 @@ EXTRA_GCC_FLAGS = \ 'CC=$(CC)' \ 'CXX=$(CXX)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ - 'HOST_CC=$(CC_FOR_BUILD)' \ + 'BUILD_CC=$(CC_FOR_BUILD)' \ 'BUILD_PREFIX=$(BUILD_PREFIX)' \ 'BUILD_PREFIX_1=$(BUILD_PREFIX_1)' \ 'NM=$(NM)' \ @@ -508,126 +528,13 @@ EXTRA_GCC_FLAGS = \ GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) -# This is a list of the targets for all of the modules which are compiled -# using the build machine's native compiler. Configure edits the second -# macro for build!=host builds. -ALL_BUILD_MODULES_LIST = \ - all-build-libiberty -ALL_BUILD_MODULES = @all_build_modules@ - -# This is a list of the configure targets for all of the modules which -# are compiled using the native tools. -CONFIGURE_BUILD_MODULES = \ - configure-build-libiberty - -# This is a list of the targets for all of the modules which are compiled -# using $(FLAGS_TO_PASS). -ALL_MODULES =[+ - FOR host_modules +] \ - all-[+module+][+ - ENDFOR host_modules +] \ - $(EXTRA_TARGET_HOST_ALL_MODULES) - -# This is a list of the check targets for all of the modules which are -# compiled using $(FLAGS_TO_PASS). -# -# The list is in two parts. The first lists those tools which -# are tested as part of the host's native tool-chain, and not -# tested in a cross configuration. -NATIVE_CHECK_MODULES = \ - check-bison \ - check-byacc \ - check-fastjar \ - check-flex \ - check-zip - -CROSS_CHECK_MODULES =[+ - FOR host_modules +][+ - IF (not (or (exist? "no_check_cross") (exist? "no_check"))) - +] \ - check-[+module+][+ - ENDIF no_check +][+ - ENDFOR host_modules +] \ - $(EXTRA_TARGET_HOST_CHECK_MODULES) - -CHECK_MODULES=$(NATIVE_CHECK_MODULES) $(CROSS_CHECK_MODULES) - -# This is a list of the install targets for all of the modules which are -# compiled using $(FLAGS_TO_PASS). -INSTALL_MODULES =[+ - FOR host_modules+][+ - IF (not (exist? "no_install")) +] \ - install-[+module+][+ - ENDIF no_install +][+ - ENDFOR host_modules +] \ - $(EXTRA_TARGET_HOST_INSTALL_MODULES) - -# This is a list of the targets for all of the modules which are compiled -# using $(X11_FLAGS_TO_PASS). -ALL_X11_MODULES = \ - all-gdb \ - all-expect \ - all-guile \ - all-tclX \ - all-tk \ - all-tix - -# This is a list of the check targets for all of the modules which are -# compiled using $(X11_FLAGS_TO_PASS). -CHECK_X11_MODULES = \ - check-gdb \ - check-guile \ - check-expect \ - check-tclX \ - check-tk \ - check-tix - -# This is a list of the install targets for all the modules which are -# compiled using $(X11_FLAGS_TO_PASS). -INSTALL_X11_MODULES = \ - install-gdb \ - install-guile \ - install-expect \ - install-tclX \ - install-tk \ - install-tix - -# This is a list of the targets for all of the modules which are compiled -# using $(TARGET_FLAGS_TO_PASS). -ALL_TARGET_MODULES =[+ - FOR target_modules +] \ - all-target-[+module+][+ - ENDFOR target_modules +] - -# This is a list of the configure targets for all of the modules which -# are compiled using the target tools. -CONFIGURE_TARGET_MODULES =[+ - FOR target_modules +] \ - configure-target-[+module+][+ - ENDFOR target_modules +] - -# This is a list of the check targets for all of the modules which are -# compiled using $(TARGET_FLAGS_TO_PASS). -CHECK_TARGET_MODULES =[+ - FOR target_modules +][+ - IF (not (exist? "no_check")) +] \ - check-target-[+module+][+ - ENDIF no_check +][+ - ENDFOR target_modules +] - -# This is a list of the install targets for all of the modules which are -# compiled using $(TARGET_FLAGS_TO_PASS). -INSTALL_TARGET_MODULES =[+ - FOR target_modules +][+ - IF (not (exist? "no_install")) +] \ - install-target-[+module+][+ - ENDIF no_install +][+ - ENDFOR target_modules +] +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 =[+ FOR host_modules +][+ - IF (not (exist? "no_clean")) +] \ + IF (not (or (exist? "no_clean") (exist? "with_x"))) +] \ clean-[+module+][+ ENDIF no_clean +][+ ENDFOR host_modules +] @@ -641,22 +548,18 @@ CLEAN_TARGET_MODULES =[+ ENDFOR target_modules +] # All of the x11 modules that can be cleaned -CLEAN_X11_MODULES = \ - clean-gdb \ - clean-expect \ - clean-guile \ - clean-tclX \ - clean-tk \ - clean-tix +CLEAN_X11_MODULES = [+ FOR host_modules +][+ IF with_x +]\ + clean-[+module+] [+ ENDIF with_x +][+ ENDFOR host_modules +] # 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_MODULES) \ - $(ALL_X11_MODULES) \ - $(ALL_TARGET_MODULES) \ - all-gcc +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 @@ -665,20 +568,10 @@ all.normal: \ # 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. -DO_X = \ - do-clean \ - do-distclean \ - do-dvi \ - do-info \ - do-install-info \ - do-installcheck \ - do-mostlyclean \ - do-maintainer-clean \ - do-TAGS -.PHONY: $(DO_X) -$(DO_X): - @target=`echo $@ | sed -e 's/^do-//'`; \ - r=`${PWD}`; export r; \ +[+ FOR recursive_targets +] +.PHONY: do-[+target+] +do-[+target+]: + @r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ for i in $(SUBDIRS) -dummy-; do \ @@ -700,11 +593,11 @@ $(DO_X): "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - $${target}); \ + [+target+]); \ then true; else exit 1; fi; \ else true; fi; \ done - @target=`echo $@ | sed -e 's/^do-//'`; \ + # Break into two pieces r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ @@ -718,10 +611,12 @@ $(DO_X): "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "`echo \"RANLIB=$${RANLIB}\" | sed -e 's/.*=$$/XFOO=/'`" \ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ - $${target}); \ + [+target+]); \ then true; else exit 1; fi; \ else true; fi; \ done +[+ ENDFOR recursive_targets +] + # Here are the targets which correspond to the do-X targets. @@ -805,10 +700,9 @@ clean-target-libgcc: check: $(MAKE) do-check NOTPARALLEL=parallel-ok -do-check: $(CHECK_MODULES) \ - $(CHECK_TARGET_MODULES) \ - $(CHECK_X11_MODULES) \ - check-gcc +# Only include modules actually being configured and built. +do-check: @check_host_modules@ \ + @check_target_modules@ # Automated reporting of test results. @@ -833,28 +727,14 @@ mail-report-with-warnings.log: warning.log # Installation targets. -.PHONY: install install-cross uninstall source-vault binary-vault vault-install -install: $(INSTALL_TARGET) -install-cross: $(INSTALL_TARGET_CROSS) +.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" -source-vault: - $(MAKE) -f ./release/Build-A-Release \ - host=$(host_alias) source-vault - -binary-vault: - $(MAKE) -f ./release/Build-A-Release \ - host=$(host_alias) target=$(target_alias) - -vault-install: - @if [ -f ./release/vault-install ] ; then \ - ./release/vault-install $(host_alias) $(target_alias) ; \ - else \ - true ; \ - fi - .PHONY: install.all install.all: install-no-fixedincludes @if [ -f ./gcc/Makefile ] ; then \ @@ -869,59 +749,49 @@ install.all: install-no-fixedincludes # install-no-fixedincludes is used because Cygnus can not distribute # the fixed header files. .PHONY: install-no-fixedincludes -install-no-fixedincludes: \ - installdirs \ - $(INSTALL_MODULES) \ - $(INSTALL_TARGET_MODULES) \ - $(INSTALL_X11_MODULES) \ - gcc-no-fixedincludes +install-no-fixedincludes: installdirs @install_host_modules_nogcc@ \ + @install_target_modules@ gcc-no-fixedincludes -# 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 +### other supporting targets -# This rule is used to build the modules which are built with the -# build machine's native compiler. -.PHONY: $(ALL_BUILD_MODULES) -$(ALL_BUILD_MODULES): - dir=`echo $@ | sed -e 's/all-build-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ - s=`cd $(srcdir); ${PWD}`; export s; \ - (cd $(BUILD_SUBDIR)/$${dir} && $(MAKE) all); \ - else \ - true; \ +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 -# This rule is used to configure the modules which are built with the -# native tools. -.PHONY: $(CONFIGURE_BUILD_MODULES) -$(CONFIGURE_BUILD_MODULES): - @dir=`echo $@ | sed -e 's/configure-build-//'`; \ - if [ ! -d $(BUILD_SUBDIR) ]; then \ - true; \ - elif [ -f $(BUILD_SUBDIR)/$${dir}/Makefile ] ; then \ - true; \ - elif echo " $(BUILD_CONFIGDIRS) " | grep " $${dir} " >/dev/null 2>&1; then \ - if [ -d $(srcdir)/$${dir} ]; then \ - [ -d $(BUILD_SUBDIR)/$${dir} ] || mkdir $(BUILD_SUBDIR)/$${dir};\ +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 +# -------------------------------------- +[+ FOR build_modules +] +.PHONY: configure-build-[+module+] maybe-configure-build-[+module+] +maybe-configure-build-[+module+]: +configure-build-[+module+]: $(BUILD_SUBDIR)/[+module+]/Makefile +$(BUILD_SUBDIR)/[+module+]/Makefile: config.status + @[ -d $(BUILD_SUBDIR)/[+module+] ] || mkdir $(BUILD_SUBDIR)/[+module+];\ r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ AR="$(AR_FOR_BUILD)"; export AR; \ @@ -937,8 +807,8 @@ $(CONFIGURE_BUILD_MODULES): NM="$(NM_FOR_BUILD)"; export NM; \ RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \ WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \ - echo Configuring in $(BUILD_SUBDIR)/$${dir}; \ - cd "$(BUILD_SUBDIR)/$${dir}" || exit 1; \ + echo Configuring in $(BUILD_SUBDIR)/[+module+]; \ + cd "$(BUILD_SUBDIR)/[+module+]" || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) \ topdir=$(srcdir) ;; \ @@ -950,7 +820,7 @@ $(CONFIGURE_BUILD_MODULES): esac; \ if [ "$(srcdir)" = "." ] ; then \ if [ "$(BUILD_SUBDIR)" != "." ] ; then \ - if $(SHELL) $$s/symlink-tree $${topdir}/$${dir} "no-such-file" ; then \ + if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "no-such-file" ; then \ if [ -f Makefile ]; then \ if $(MAKE) distclean; then \ true; \ @@ -969,129 +839,156 @@ $(CONFIGURE_BUILD_MODULES): srcdiroption="--srcdir=."; \ libsrcdir="."; \ else \ - srcdiroption="--srcdir=$${topdir}/$${dir}"; \ - libsrcdir="$$s/$${dir}"; \ - fi; \ - if [ -f $${libsrcdir}/configure ] ; then \ - rm -f no-such-file skip-this-dir; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(BUILD_CONFIGARGS) $${srcdiroption} \ - --with-build-subdir="$(BUILD_SUBDIR)"; \ - else \ - rm -f no-such-file skip-this-dir; \ - CONFIG_SITE=no-such-file $(SHELL) $$s/configure \ - $(BUILD_CONFIGARGS) $${srcdiroption} \ - --with-build-subdir="$(BUILD_SUBDIR)"; \ - fi || exit 1; \ - if [ -f skip-this-dir ] ; then \ - sh skip-this-dir; \ - rm -f skip-this-dir; \ - cd ..; rmdir $${dir} || true; \ - else \ - true; \ + srcdiroption="--srcdir=$${topdir}/[+module+]"; \ + libsrcdir="$$s/[+module+]"; \ fi; \ - else \ - true; \ - fi; \ - else \ - true; \ - 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-[+module+] maybe-all-build-[+module+] +maybe-all-build-[+module+]: +all-build-[+module+]: configure-build-[+module+] + @r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ + (cd $(BUILD_SUBDIR)/[+module+] && $(MAKE) all) +[+ ENDFOR build_modules +] + +# -------------------------------------- +# Modules which run on the host machine +# -------------------------------------- +[+ FOR host_modules +] +.PHONY: configure-[+module+] maybe-configure-[+module+] +maybe-configure-[+module+]: +configure-[+module+]: [+module+]/Makefile + +[+module+]/Makefile: config.status + @[ -d [+module+] ] || mkdir [+module+]; \ + 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 [+module+]; \ + cd [+module+] || exit 1; \ + case $(srcdir) in \ + \.) \ + srcdiroption="--srcdir=."; \ + libsrcdir=".";; \ + /* | [A-Za-z]:[\\/]*) \ + srcdiroption="--srcdir=$(srcdir)/[+module+]"; \ + libsrcdir="$$s/[+module+]";; \ + *) \ + srcdiroption="--srcdir=../$(srcdir)/[+module+]"; \ + libsrcdir="$$s/[+module+]";; \ + esac; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) $${srcdiroption} \ + || exit 1 -# This rule is used to build the modules which use FLAGS_TO_PASS. To -# build a target all-X means to cd to X and make all. -.PHONY: $(ALL_MODULES) -$(ALL_MODULES): - @dir=`echo $@ | sed -e 's/all-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ +.PHONY: all-[+module+] maybe-all-[+module+] +maybe-all-[+module+]: +all-[+module+]: configure-[+module+] + @r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ - (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) all); \ - else \ - true; \ - fi - -# These rules are used to check the modules which use FLAGS_TO_PASS. -# To build a target check-X means to cd to X and make check. Some -# modules are only tested in a native toolchain. - -.PHONY: $(CHECK_MODULES) $(NATIVE_CHECK_MODULES) $(CROSS_CHECK_MODULES) -$(NATIVE_CHECK_MODULES): + (cd [+module+]; $(MAKE) $(FLAGS_TO_PASS)[+ + IF with_x + +] $(X11_FLAGS_TO_PASS)[+ + ENDIF with_x +] all) + +[+ IF no_check +] +.PHONY: check-[+module+] +check-[+module+]: +[+ ELIF no_check_cross +] +.PHONY: check-[+module+] +# This module is only tested in a native toolchain. +check-[+module+]: @if [ '$(host_canonical)' = '$(target_canonical)' ] ; then \ - dir=`echo $@ | sed -e 's/check-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ - (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \ - else \ - true; \ - fi; \ + (cd [+module+]; $(MAKE) $(FLAGS_TO_PASS)[+ + IF with_x + +] $(X11_FLAGS_TO_PASS)[+ + ENDIF with_x +] check); \ fi - -$(CROSS_CHECK_MODULES): - @dir=`echo $@ | sed -e 's/check-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ +[+ ELSE check +] +.PHONY: check-[+module+] +check-[+module+]: + @r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ - (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \ - else \ - true; \ - fi - -# This rule is used to install the modules which use FLAGS_TO_PASS. -# To build a target install-X means to cd to X and make install. -.PHONY: $(INSTALL_MODULES) -$(INSTALL_MODULES): installdirs - @dir=`echo $@ | sed -e 's/install-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ + (cd [+module+]; $(MAKE) $(FLAGS_TO_PASS)[+ + IF with_x + +] $(X11_FLAGS_TO_PASS)[+ + ENDIF with_x +] check) +[+ ENDIF no_check +] + +[+ IF no_install +] +.PHONY: install-[+module+] maybe-install-[+module+] +maybe-install-[+module+]: +install-[+module+]: +[+ ELSE install +] +.PHONY: install-[+module+] maybe-install-[+module+] +maybe-install-[+module+]: +install-[+module+]: installdirs + @r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ - (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \ - else \ - true; \ - fi + (cd [+module+]; $(MAKE) $(FLAGS_TO_PASS)[+ + IF with_x + +] $(X11_FLAGS_TO_PASS)[+ + ENDIF with_x +] install) +[+ ENDIF no_install +] +[+ ENDFOR host_modules +] + +# --------------------------------------- +# Modules which run on the target machine +# --------------------------------------- +[+ FOR target_modules +] +.PHONY: configure-target-[+module+] maybe-configure-target-[+module+] +maybe-configure-target-[+module+]: +configure-target-[+module+]: $(TARGET_SUBDIR)/[+module+]/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)/[+module+]/multilib.out: maybe-all-gcc + @[ -d $(TARGET_SUBDIR)/[+module+] ] || mkdir $(TARGET_SUBDIR)/[+module+];\ + r=`${PWD}`; export r; \ + echo "Configuring multilibs for [+module+]"; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/[+module+]/multilib.out 2> /dev/null -# This rule is used to configure the modules which are built with the -# target tools. -.PHONY: $(CONFIGURE_TARGET_MODULES) -$(CONFIGURE_TARGET_MODULES): - @dir=`echo $@ | sed -e 's/configure-target-//'`; \ - if [ -d $(TARGET_SUBDIR)/$${dir} ]; then \ - r=`${PWD}`; export r; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/$${dir}/tmpmulti.out 2> /dev/null; \ - if [ -s $(TARGET_SUBDIR)/$${dir}/tmpmulti.out ]; then \ - if [ -f $(TARGET_SUBDIR)/$${dir}/multilib.out ]; then \ - if cmp $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/tmpmulti.out > /dev/null; then \ - rm -f $(TARGET_SUBDIR)/$${dir}/tmpmulti.out; \ - else \ - echo "Multilibs changed for $${dir}, reconfiguring"; \ - rm -f $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/Makefile; \ - mv $(TARGET_SUBDIR)/$${dir}/tmpmulti.out $(TARGET_SUBDIR)/$${dir}/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/$${dir}/tmpmulti.out $(TARGET_SUBDIR)/$${dir}/multilib.out; \ - fi; \ - fi; \ - fi; exit 0 # break command into two pieces - @dir=`echo $@ | sed -e 's/configure-target-//'`; \ - if [ ! -d $(TARGET_SUBDIR) ]; then \ - true; \ - elif [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ - true; \ - elif echo " $(TARGET_CONFIGDIRS) " | grep " $${dir} " >/dev/null 2>&1; then \ - if [ -d $(srcdir)/$${dir} ]; then \ - [ -d $(TARGET_SUBDIR)/$${dir} ] || mkdir $(TARGET_SUBDIR)/$${dir};\ +$(TARGET_SUBDIR)/[+module+]/Makefile: config.status $(TARGET_SUBDIR)/[+module+]/multilib.out + @[ -d $(TARGET_SUBDIR)/[+module+] ] || mkdir $(TARGET_SUBDIR)/[+module+];\ 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; \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \[+ + IF raw_cxx +] + CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ + CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \[+ + ELSE normal_cxx +] + CXX="$(CXX_FOR_TARGET)"; export CXX; \[+ + ENDIF raw_cxx +] CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \ DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ @@ -1100,8 +997,8 @@ $(CONFIGURE_TARGET_MODULES): NM="$(NM_FOR_TARGET)"; export NM; \ RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \ WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \ - echo Configuring in $(TARGET_SUBDIR)/$${dir}; \ - cd "$(TARGET_SUBDIR)/$${dir}" || exit 1; \ + echo Configuring in $(TARGET_SUBDIR)/[+module+]; \ + cd "$(TARGET_SUBDIR)/[+module+]" || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) \ topdir=$(srcdir) ;; \ @@ -1113,7 +1010,7 @@ $(CONFIGURE_TARGET_MODULES): esac; \ if [ "$(srcdir)" = "." ] ; then \ if [ "$(TARGET_SUBDIR)" != "." ] ; then \ - if $(SHELL) $$s/symlink-tree $${topdir}/$${dir} "no-such-file" ; then \ + if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "no-such-file" ; then \ if [ -f Makefile ]; then \ if $(MAKE) distclean; then \ true; \ @@ -1132,135 +1029,124 @@ $(CONFIGURE_TARGET_MODULES): srcdiroption="--srcdir=."; \ libsrcdir="."; \ else \ - srcdiroption="--srcdir=$${topdir}/$${dir}"; \ - libsrcdir="$$s/$${dir}"; \ + srcdiroption="--srcdir=$${topdir}/[+module+]"; \ + libsrcdir="$$s/[+module+]"; \ fi; \ - if [ -f $${libsrcdir}/configure ] ; then \ - rm -f no-such-file skip-this-dir; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) $${srcdiroption} \ - --with-target-subdir="$(TARGET_SUBDIR)"; \ - else \ - rm -f no-such-file skip-this-dir; \ - CONFIG_SITE=no-such-file $(SHELL) $$s/configure \ - $(TARGET_CONFIGARGS) $${srcdiroption} \ - --with-target-subdir="$(TARGET_SUBDIR)"; \ - fi || exit 1; \ - if [ -f skip-this-dir ] ; then \ - sh skip-this-dir; \ - rm -f skip-this-dir; \ - cd ..; rmdir $${dir} || true; \ - else \ - true; \ - fi; \ - else \ - true; \ - fi; \ - else \ - true; \ - fi - -# This rule is used to build the modules which use TARGET_FLAGS_TO_PASS. -# To build a target all-X means to cd to X and make all. -.PHONY: $(ALL_TARGET_MODULES) -$(ALL_TARGET_MODULES): - @dir=`echo $@ | sed -e 's/all-target-//'`; \ - 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) all); \ - else \ - true; \ - fi - -# This rule is used to check the modules which use TARGET_FLAGS_TO_PASS. -# To build a target install-X means to cd to X and make install. -.PHONY: $(CHECK_TARGET_MODULES) -$(CHECK_TARGET_MODULES): - @dir=`echo $@ | sed -e 's/check-target-//'`; \ - if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ + 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; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ - (cd $(TARGET_SUBDIR)/$${dir}; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check);\ - else \ - true; \ - fi - -# This rule is used to install the modules which use -# TARGET_FLAGS_TO_PASS. To build a target install-X means to cd to X -# and make install. -.PHONY: $(INSTALL_TARGET_MODULES) -$(INSTALL_TARGET_MODULES): installdirs - @dir=`echo $@ | sed -e 's/install-target-//'`; \ - if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ + (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; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ - (cd $(TARGET_SUBDIR)/$${dir}; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install); \ - else \ - true; \ - fi - -# This rule is used to build the modules which use X11_FLAGS_TO_PASS. -# To build a target all-X means to cd to X and make all. -.PHONY: $(ALL_X11_MODULES) -$(ALL_X11_MODULES): - @dir=`echo $@ | sed -e 's/all-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ + (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; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ - (cd $${dir}; \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all); \ - else \ - true; \ - fi + (cd $(TARGET_SUBDIR)/[+module+]; \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install) +[+ ENDIF no_install +] +[+ ENDFOR target_modules +] -# This rule is used to check the modules which use X11_FLAGS_TO_PASS. -# To build a target check-X means to cd to X and make all. -.PHONY: $(CHECK_X11_MODULES) -$(CHECK_X11_MODULES): - @dir=`echo $@ | sed -e 's/check-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ - s=`cd $(srcdir); ${PWD}`; export s; \ - $(SET_LIB_PATH) \ - (cd $${dir}; \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check); \ - else \ - true; \ - fi +# ---------- +# GCC module +# ---------- -# This rule is used to install the modules which use X11_FLAGS_TO_PASS. -# To build a target install-X means to cd to X and make install. -.PHONY: $(INSTALL_X11_MODULES) -$(INSTALL_X11_MODULES): installdirs - @dir=`echo $@ | sed -e 's/install-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`${PWD}`; export r; \ - s=`cd $(srcdir); ${PWD}`; export s; \ - $(SET_LIB_PATH) \ - (cd $${dir}; \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install); \ - else \ - true; \ - fi +# 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: all-gcc -all-gcc: - @if [ -f ./gcc/Makefile ] ; then \ +.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 remake gcc if it's already been made by 'bootstrap'; that causes +# nothing but 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/xgcc ] ; then \ + exit 0 ; \ + else \ r=`${PWD}`; export r; \ s=`cd $(srcdir); ${PWD}`; export s; \ $(SET_LIB_PATH) \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) all); \ - else \ - true; \ fi # Building GCC uses some tools for rebuilding "source" files @@ -1274,7 +1160,7 @@ all-gcc: # 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 +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) \ @@ -1341,7 +1227,8 @@ check-gcc-c++: .PHONY: check-c++ check-c++: check-target-libstdc++-v3 check-gcc-c++ -.PHONY: install-gcc +.PHONY: install-gcc maybe-install-gcc +maybe-install-gcc: install-gcc: @if [ -f ./gcc/Makefile ] ; then \ r=`${PWD}`; export r; \ @@ -1352,181 +1239,156 @@ install-gcc: true; \ fi -.PHONY: install-gcc-cross -install-gcc-cross: - @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) LANGUAGES="c c++" install); \ - else \ - true; \ - fi -# EXPERIMENTAL STUFF -# This rule is used to install the modules which use FLAGS_TO_PASS. -# To build a target install-X means to cd to X and make install. -.PHONY: install-dosrel -install-dosrel: installdirs info - @dir=`echo $@ | sed -e 's/install-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ +# 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; \ + s=`cd $(srcdir); ${PWD}` ; export s; \ $(SET_LIB_PATH) \ - (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \ - else \ - true; \ - fi + (cd ./gcc; \ + $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ + rm -rf gcc/include; \ + mv gcc/tmp-include gcc/include 2>/dev/null; \ + else true; fi -install-dosrel-fake: - -ALL_GCC = all-gcc -ALL_GCC_C = $(ALL_GCC) all-target-newlib all-target-libgloss -ALL_GCC_CXX = $(ALL_GCC_C) all-target-libstdc++-v3 - -# This is a list of inter-dependencies among modules. -all-ash: -all-autoconf: all-m4 all-texinfo -all-automake: all-m4 all-texinfo -all-bash: -all-bfd: all-libiberty all-intl -all-binutils: all-libiberty all-opcodes all-bfd all-flex all-bison all-byacc all-intl -all-bison: all-texinfo -configure-target-boehm-gc: $(ALL_GCC_C) configure-target-qthreads -all-byacc: -all-bzip2: -all-db: -all-dejagnu: all-tcl all-expect all-tk -all-diff: all-libiberty -all-etc: -configure-target-examples: $(ALL_GCC_C) -all-expect: all-tcl all-tk -all-fileutils: all-libiberty -all-findutils: -all-find: -all-flex: all-libiberty all-bison all-byacc -all-gas: all-libiberty all-opcodes all-bfd all-intl -all-gawk: -all-gcc: all-bison all-byacc all-binutils all-gas all-ld all-zlib -all-bootstrap: all-libiberty all-texinfo all-bison all-byacc all-binutils all-gas all-ld all-zlib +# -------------------------------------- +# 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: all-libiberty all-opcodes all-bfd all-mmalloc all-readline all-bison all-byacc all-sim $(gdbnlmrequirements) $(GDB_TK) -all-gettext: -all-gnuserv: -configure-target-gperf: $(ALL_GCC_CXX) -all-target-gperf: all-target-libiberty all-target-libstdc++-v3 -all-gprof: all-libiberty all-bfd all-opcodes all-intl -all-grep: all-libiberty -all-guile: -all-gzip: all-libiberty -all-hello: all-libiberty -all-indent: -all-intl: -all-itcl: all-tcl all-tk -all-ld: all-libiberty all-bfd all-opcodes all-bison all-byacc all-flex all-intl -configure-target-libgloss: $(ALL_GCC) -all-target-libgloss: configure-target-newlib -all-libgui: all-tcl all-tk all-itcl -all-libiberty: - -all-build-libiberty: configure-build-libiberty - -configure-target-libffi: $(ALL_GCC_C) -configure-target-libjava: $(ALL_GCC_C) configure-target-zlib configure-target-boehm-gc configure-target-qthreads configure-target-libffi -all-target-libjava: all-fastjar all-target-zlib all-target-boehm-gc all-target-qthreads all-target-libffi -configure-target-libstdc++-v3: $(ALL_GCC_C) -all-target-libstdc++-v3: all-target-libiberty -all-libtool: -configure-target-libf2c: $(ALL_GCC_C) -all-target-libf2c: all-target-libiberty -configure-target-libobjc: $(ALL_GCC_C) -all-target-libobjc: all-target-libiberty -all-m4: all-libiberty all-texinfo -all-make: all-libiberty -all-mmalloc: -configure-target-newlib: $(ALL_GCC) -configure-target-libtermcap: $(ALL_GCC_C) -all-opcodes: all-bfd all-libiberty -all-patch: all-libiberty -all-perl: -all-prms: all-libiberty -configure-target-qthreads: $(ALL_GCC_C) -all-rcs: -all-readline: -all-recode: all-libiberty -all-sed: all-libiberty -all-send-pr: all-prms -all-shellutils: -all-sid: all-tcl all-tk -all-sim: all-libiberty all-bfd all-opcodes all-readline -all-snavigator: all-tcl all-tk all-itcl all-tix all-db all-grep all-libgui -all-tar: all-libiberty -all-tcl: -all-tclX: all-tcl all-tk -all-tk: all-tcl -all-texinfo: all-libiberty -all-textutils: -all-time: -all-tix: all-tcl all-tk -all-wdiff: -configure-target-winsup: $(ALL_GCC_C) -all-target-winsup: all-target-libiberty all-target-libtermcap -all-uudecode: all-libiberty -all-zip: -all-zlib: -configure-target-zlib: $(ALL_GCC_C) -all-fastjar: all-zlib all-libiberty -configure-target-fastjar: configure-target-zlib -all-target-fastjar: configure-target-fastjar all-target-zlib all-target-libiberty -configure-target-libiberty: $(ALL_GCC_C) -configure-target: $(CONFIGURE_TARGET_MODULES) -all-target: $(ALL_TARGET_MODULES) -install-target: $(INSTALL_TARGET_MODULES) -install-gdb: install-tcl install-tk install-itcl install-tix install-libgui -install-sid: install-tcl install-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 +libgui/Makefile: 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: install-opcodes - +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: install-tcl - - -# Dependencies of all-target-foo on configure-target-foo. -[+ FOR target_modules +]all-target-[+module+]: configure-target-[+module+] -[+ ENDFOR target_modules +] - -### other supporting targets +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) -MAKEDIRS= \ - $(DESTDIR)$(prefix) \ - $(DESTDIR)$(exec_prefix) -.PHONY: installdirs -installdirs: mkinstalldirs - $(SHELL) $(srcdir)/mkinstalldirs $(MAKEDIRS) +# 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 -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 +# 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) -dist: - @echo "Building a full distribution of this tree isn't done" - @echo "via 'make dist'. Check out the etc/ subdirectory" +# 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@ -etags tags: TAGS +# 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@ -# 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 +# -------------------------------- +# Regenerating top level configury +# -------------------------------- # Rebuilding Makefile.in, using autogen. $(srcdir)/Makefile.in: # $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def @@ -1534,6 +1396,9 @@ $(srcdir)/Makefile.in: # $(srcdir)/Makefile.tpl $(srcdir)/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 |