diff options
Diffstat (limited to 'sol-GNUmakefile')
-rwxr-xr-x | sol-GNUmakefile | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/sol-GNUmakefile b/sol-GNUmakefile new file mode 100755 index 0000000..d359c1b --- /dev/null +++ b/sol-GNUmakefile @@ -0,0 +1,222 @@ +#!/usr/latest/bin/make -f +# +# Makefile used to three-stage build a tree of source code, usually devo. +# + +# 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 + @echo + @echo You must set the variable \"host\" to use this Makefile + @echo + @echo + @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 +# + +TREE := progressive +ROOTING := /opt/cygnus-sol2-1.0 +CVS_MODULE := progressive-solaris +TAG_DATE := 920615 +RELEASE_TAG := $(CVS_MODULE)-$(TAG_DATE) +release_root := $(ROOTING) + +TIME := time +NICE := nice -17 +MF := -w +GNUC := gcc -g + +SHELL := /bin/sh + +INSTDIR := $(shell pwd)/$(host) +PREFIXES := prefix=$(ROOTING) + +ifdef target +arch=$(host)=$(target) +endif + +.PHONY: all +all: do1 do2 do3 + +.PHONY: configuration +configuration: $(TREE) $(host)-stamp-stage1-configured + +.PHONY: comparison +comparison: + for i in `cd $(host)-objdir.3 ; find . -name \*.o -print` ; do \ + cmp $(host)-objdir.2/$$i $(host)-objdir.3/$$i ; \ + done + +.PHONY: clean +clean: + rm -rf $(host)-$(TREE)-holes $(host)-objdir $(host)-objdir.[123] $(host)-stamp-stage[123]* $(host)-stamp-holes *~ + +.PHONY: very +very: + rm -rf $(TREE) + +$(TREE): + $(TIME) cvs co $(CVS_TAG) $(CVS_MODULE) + +.PHONY: do1 +do1: $(host)-$(TREE)-holes $(host)-stamp-stage1 + +$(host)-stamp-stage1: $(host)-objdir.1 + touch $(host)-stamp-stage1 + +$(host)-objdir.1: $(TREE) $(host)-stamp-stage1-configured + (cd $(host)-objdir ; $(TIME) make $(MF) all info host=$(host)) + @echo CONFIGURE: make all completed for $(host) + (cd $(host)-objdir ; $(TIME) make $(MF) install install-info host=$(host)) + @echo CONFIGURE: make install-all completed for $(host) + mv $(host)-objdir $(host)-objdir.1 + +$(host)-stamp-stage1-configured: + [ -d $(host)-objdir ] || mkdir $(host)-objdir + (cd $(host)-objdir ; \ + $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \ + -prefix=$(ROOTING)) + touch $@ + +.PHONY: do2 +do2: $(host)-$(TREE)-holes $(host)-stamp-stage2 + +$(host)-stamp-stage2: $(host)-objdir.2 + PATH=$(release_root)/bin:`pwd`/$(host)-$(TREE)-holes ; \ + export PATH ; \ + echo $$PATH ; \ + SHELL=sh ; export SHELL ; \ + $(TIME) make $(host)-objdir.2 host=$(host) + touch $(host)-stamp-stage2 + +$(host)-objdir.2: $(TREE) $(host)-stamp-stage2-configured + [ -d $(host)-objdir ] || mkdir $(host)-objdir + (cd $(host)-objdir ; $(TIME) make $(MF) all info "CC=$(GNUC)" host=$(host)) + (cd $(host)-objdir ; $(TIME) make $(MF) $(PREFIXES) install install-info "CC=$(GNUC)" host=$(host)) + mv $(host)-objdir $(host)-objdir.2 + +$(host)-stamp-stage2-configured: + [ -d $(host)-objdir ] || mkdir $(host)-objdir + (cd $(host)-objdir ; \ + $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \ + -prefix=$(ROOTING)) + touch $@ + +.PHONY: do3 +do3: $(host)-$(TREE)-holes $(host)-stamp-stage3 + +$(host)-stamp-stage3: $(host)-objdir.3 + PATH=$(release_root)/bin:`pwd`/$(host)-$(TREE)-holes ; \ + export PATH ; \ + SHELL=sh ; export SHELL ; \ + $(TIME) make $(host)-objdir.3 host=$(host) + touch $(host)-stamp-stage3 + +$(host)-objdir.3: $(TREE) $(host)-stamp-stage3-configured + [ -d $(host)-objdir ] || mkdir $(host)-objdir + (cd $(host)-objdir ; $(TIME) make $(MF) all info "CC=$(GNUC)" host=$(host)) + (cd $(host)-objdir ; $(TIME) make $(MF) install-no-fixedincludes install-info "CC=$(GNUC)" host=$(host)) + mv $(host)-objdir $(host)-objdir.3 + +$(host)-stamp-stage3-configured: + [ -d $(host)-objdir ] || mkdir $(host)-objdir + (cd $(host)-objdir ; \ + $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \ + -prefix=$(ROOTING)) + touch $@ + +HOLES := [ \ + ar \ + as \ + awk \ + basename \ + cat \ + cc \ + chmod \ + cmp \ + cp \ + date \ + echo \ + egrep \ + ex \ + expr \ + find \ + grep \ + hostname \ + install \ + ld \ + lex \ + ln \ + ls \ + mkdir \ + mv \ + pwd \ + ranlib \ + rm \ + rmdir \ + sed \ + sh \ + sort \ + time \ + touch \ + tr \ + true \ + whoami + +PARTIAL_HOLES := \ + gcc \ + make + + +$(host)-$(TREE)-holes: $(host)-stamp-holes + +$(host)-stamp-holes: + -rm -rf $(host)-$(TREE)-holes + -mkdir $(host)-$(TREE)-holes + for i in $(HOLES) ; do \ + if [ -x $(host)-$(TREE)-holes/$$i ] ; then \ + echo "$$i already present" ; \ + else if [ -x /bin/$$i ] ; then \ + cp /bin/$$i $(host)-$(TREE)-holes ; \ + echo $$i from /bin ; \ + else if [ -x /usr/bin/$$i ] ; then \ + cp /usr/bin/$$i $(host)-$(TREE)-holes ; \ + echo $$i from /usr/bin ; \ + else if [ -x /usr/ccs/bin/$$i ] ; then \ + cp /usr/ccs/bin/$$i $(host)-$(TREE)-holes ; \ + echo $$i from /usr/ccs/bin ; \ + else if [ -x /usr/unsupported/bin/$$i ] ; then \ + cp /usr/unsupported/bin/$$i $(host)-$(TREE)-holes ; \ + echo $$i from /usr/unsupported/bin ; \ + else \ + echo $$i is NOT found ; \ + fi; fi ; fi ; fi ; fi ; true ; \ + done + for i in $(PARTIAL_HOLES) ; do \ + if [ -x /usr/latest/bin/$$i ] ; then \ + cp /usr/latest/bin/$$i $(host)-$(TREE)-holes ; \ + echo $$i from /usr/latest/bin ; \ + else if [ -x /usr/unsupported/bin/$$i ] ; then \ + cp /usr/unsupported/bin/$$i $(host)-$(TREE)-holes ; \ + echo $$i from /usr/unsupported/bin ; \ + fi; fi; \ + done + touch $(host)-stamp-holes + +force: + +endif # host + +### Local Variables: +### fill-column: 131 +### End: + |