From c12d9b4c66bc9e1607842175e73851d1d03d1f13 Mon Sep 17 00:00:00 2001 From: "K. Richard Pixley" Date: Fri, 10 Jul 1992 21:24:19 +0000 Subject: [PATCH] copied from progressive --- test-build.mk | 341 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 341 insertions(+) create mode 100644 test-build.mk diff --git a/test-build.mk b/test-build.mk new file mode 100644 index 00000000000..43338e391e1 --- /dev/null +++ b/test-build.mk @@ -0,0 +1,341 @@ +### +### Makefile used to three-stage build a tree of source code. Also used to +### compile other bundles, first with cc, then with gcc. +### + +### This file was written and is maintained by K. Richard Pixley, +### . + +### Every invocation of this Makefile needs to have a variable set (host), +### which is the named used for ./configure, and also the prefix for the +### various files and directories used in a three stage. + +ifndef host +error:; @echo You must set the variable \"host\" to use this Makefile ; exit 1 +else + +### from here to very near the end of the file is the real guts of this +### Makefile, and it is not seen if the variable 'host' is not set + +### +### START EDITTING HERE!!! +### These things will need to be set differently for each release. +### + +### from which cvs tree are we working? +TREE := progressive + +### binaries should be installed into? +ROOTING := /usr/cygnus + +### When working from a tagged set of source, this should be the tag. If not, +### then set the macro to be empty. +CVS_TAG := -r emacs-920529 + +### The name of the cvs module for this release. The intersection of +### CVS_MODULE and CVS_TAG defines the source files in this release. +CVS_MODULE := progressive-emacs + +### Historically, this was identical to CVS_TAG. This is changing. +RELEASE_TAG := progressive-920529 + +### Historically, binaries were installed here. This is changing. +release_root := $(ROOTING)/$(RELEASE_TAG) + +### STOP EDITTING HERE!!! +### With luck, eventually, nothing else will need to be editted. + +TIME := time +GCC := gcc -O +GNU_MAKE := /usr/latest/bin/make +override MAKE := make +override MAKEFLAGS := +override MFLAGS := + +SHELL := /bin/sh + +.NOEXPORT: + +FLAGS_TO_PASS := \ + "GCC=$(GCC)" \ + "TIME=$(TIME)" \ + "MF=$(MF)" + +### general config stuff +WORKING_DIR := $(host)-objdir +STAGE1DIR := $(WORKING_DIR).1 +STAGE2DIR := $(WORKING_DIR).2 +STAGE3DIR := $(WORKING_DIR).3 +HOLESDIR := $(host)-holes + +.PHONY: all +all: $(TREE) do1 do2 do3 comparison + +.PHONY: do1 +do1: $(host)-stamp-holes $(host)-stamp-stage1 + +$(host)-stamp-stage1: + if [ -d $(STAGE1DIR) ] ; then \ + mv $(STAGE1DIR) $(WORKING_DIR) ; \ + else \ + true ; \ + fi + PATH=`pwd`/$(HOLESDIR) ; \ + export PATH ; \ + SHELL=sh ; export SHELL ; \ + $(TIME) $(GNU_MAKE) $(host)-stamp-stage1-installed host=$(host) $(FLAGS_TO_PASS) + touch $(host)-stamp-stage1 + mv $(WORKING_DIR) $(STAGE1DIR) + +$(host)-stamp-stage1-installed: $(host)-stamp-stage1-checked + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(MF) install host=$(host)) + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(MF) install-info host=$(host)) + touch $@ + +$(host)-stamp-stage1-checked: $(host)-stamp-stage1-built +# (cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(MF) check host=$(host)) + touch $@ + +$(host)-stamp-stage1-built: $(host)-stamp-stage1-configured + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(MF) all host=$(host)) + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(MF) info host=$(host)) + touch $@ + +$(host)-stamp-stage1-configured: + [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) + (cd $(WORKING_DIR) ; \ + $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \ + -prefix=$(release_root) \ + -exec_prefix=$(release_root)/H-$(host)) + touch $@ + +.PHONY: do2 +do2: $(HOLESDIR) $(host)-stamp-stage2 + +$(host)-stamp-stage2: + if [ -d $(STAGE2DIR) ] ; then \ + mv $(STAGE2DIR) $(WORKING_DIR) ; \ + else \ + true ; \ + fi + PATH=$(release_root)/H-$(host)/bin:`pwd`/$(HOLESDIR) ; \ + export PATH ; \ + SHELL=sh ; export SHELL ; \ + $(TIME) $(MAKE) -w $(STAGE2DIR) host=$(host) $(FLAGS_TO_PASS) + touch $(host)-stamp-stage2 + +$(STAGE2DIR): $(host)-stamp-stage2-installed + mv $(WORKING_DIR) $(STAGE2DIR) + +$(host)-stamp-stage2-installed: $(host)-stamp-stage2-checked + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" install host=$(host)) + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" install-info host=$(host)) + touch $@ + +$(host)-stamp-stage2-checked: $(host)-stamp-stage2-built +# (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" check host=$(host)) + touch $@ + +$(host)-stamp-stage2-built: $(host)-stamp-stage2-configured + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" all host=$(host)) + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" info host=$(host)) + touch $@ + +$(host)-stamp-stage2-configured: + [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) + (cd $(WORKING_DIR) ; \ + $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \ + -prefix=$(release_root) \ + -exec_prefix=$(release_root)/H-$(host)) + touch $@ + +.PHONY: do3 +do3: $(HOLESDIR) $(host)-stamp-stage3 + +$(host)-stamp-stage3: + if [ -d $(STAGE3DIR) ] ; then \ + mv $(STAGE3DIR) $(WORKING_DIR) ; \ + else \ + true ; \ + fi + PATH=$(release_root)/H-$(host)/bin:`pwd`/$(HOLESDIR) ; \ + export PATH ; \ + SHELL=sh ; export SHELL ; \ + $(TIME) $(MAKE) -w $(STAGE3DIR) host=$(host) $(FLAGS_TO_PASS) + touch $(host)-stamp-stage3 + +$(STAGE3DIR): $(host)-stamp-stage3-checked + mv $(WORKING_DIR) $(STAGE3DIR) + +$(host)-stamp-stage3-installed: $(host)-stamp-stage3-checked + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" install host=$(host)) + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" install-info host=$(host)) + touch $@ + +$(host)-stamp-stage3-checked: $(host)-stamp-stage3-built +# (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" check host=$(host)) + touch $@ + +$(host)-stamp-stage3-built: $(host)-stamp-stage3-configured + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" all host=$(host)) + (cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(MF) "CC=$(GCC)" info host=$(host)) + touch $@ + +$(host)-stamp-stage3-configured: + [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) + (cd $(WORKING_DIR) ; \ + $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \ + -prefix=$(release_root) \ + -exec_prefix=$(release_root)/H-$(host)) + touch $@ + +# These things are needed by a three-stage, but are not included locally. + +HOLES := \ + [ \ + ar \ + as \ + awk \ + basename \ + cat \ + cc \ + chmod \ + cmp \ + cp \ + date \ + diff \ + echo \ + egrep \ + ex \ + expr \ + find \ + grep \ + hostname \ + install \ + ld \ + lex \ + ln \ + ls \ + make \ + mkdir \ + mv \ + nm \ + pwd \ + ranlib \ + rm \ + rmdir \ + sed \ + sh \ + sort \ + test \ + time \ + touch \ + tr \ + true \ + whoami + +### so far only sun make supports VPATH +ifeq ($(subst sun3,sun4,$(host)),sun4) +MAKE_HOLE := +else +MAKE_HOLE := make +endif + +### rs6000 as is busted. We cache a patched version in unsupported. +ifeq ($(subst sun3,rs6000,$(host)),rs6000) +AS_HOLE := as +else +AS_HOLE := +endif + +### These things are also needed by a three-stage, but in this case, the GNU version of the tool is required. +PARTIAL_HOLES := \ + $(AS_HOLE) \ + $(MAKE_HOLE) \ + flex \ + m4 + +### look in these directories for things missing from a three-stage +HOLE_DIRS := \ + /bin \ + /usr/bin \ + /usr/ucb \ + /usr/unsupported/bin + +### look in these directories for alternate versions of some tools. +PARTIAL_HOLE_DIRS := \ + /usr/latest/bin \ + /usr/progressive/bin \ + /usr/vintage/bin \ + /usr/unsupported/bin + +$(HOLESDIR): $(host)-stamp-holes + +$(host)-stamp-holes: + -rm -rf $(HOLESDIR) + -mkdir $(HOLESDIR) + for i in $(HOLES) ; do \ + found= ; \ + for j in $(HOLE_DIRS) ; do \ + if [ -x $$j/$$i ] ; then \ + cp $$j/$$i $(HOLESDIR) ; \ + echo $$i from $$j ; \ + found=t ; \ + break ; \ + fi ; \ + done ; \ + case "$$found" in \ + t) ;; \ + *) echo $$i is NOT found ;; \ + esac ; \ + done + for i in $(PARTIAL_HOLES) ; do \ + found= ; \ + for j in $(PARTIAL_HOLE_DIRS) ; do \ + if [ -x $$j/$$i ] ; then \ + rm -f $(HOLESDIR)/$$i ; \ + cp $$j/$$i $(HOLESDIR)/$$i || exit 1; \ + echo $$i from $$j ; \ + found=t ; \ + break ; \ + fi ; \ + done ; \ + case "$$found" in \ + t) ;; \ + *) echo $$i is NOT found ;; \ + esac ; \ + done + touch $(host)-stamp-holes + +.PHONY: comparison +comparison: +ifeq ($(subst rs6000,iris4,$(subst decstation,iris4,$(host))),iris4) + for i in `cd $(STAGE3DIR) ; find . -name \*.o -print` ; do \ + tail +10c $(STAGE2DIR)/$$i > foo1 ; \ + tail +10c $(STAGE3DIR)/$$i > foo2 ; \ + cmp foo1 foo2 || echo $$i ; \ + done +else + for i in `cd $(STAGE3DIR) ; find . -name \*.o -print` ; do \ + cmp $(STAGE2DIR)/$$i $(STAGE3DIR)/$$i ; \ + done +endif + +.PHONY: clean +clean: + rm -rf $(HOLESDIR) $(WORKING_DIR)* $(host)-stamp-* *~ + +.PHONY: very +very: + rm -rf $(TREE) + +$(TREE): + $(TIME) cvs co $(CVS_TAG) $(CVS_MODULE) + +force: + +endif # host + +### Local Variables: +### fill-column: 131 +### End: -- 2.30.2