From e99733ffee71d1f3737f3ea39a31e9449f51be94 Mon Sep 17 00:00:00 2001 From: ken Date: Mon, 23 Jul 2001 22:52:33 +0000 Subject: [PATCH] [project @ 2001-07-23 22:52:33 by ken] Improved how we build library archives: On Digital UNIX (or where otherwise available), use the "Z" option to compress archives as we build them. On Digital UNIX 5 (or where otherwise available), use the "-input" option, which reads from a specified file the list of objects to archive. This is significantly faster than piping the list of objects to xargs when the number of objects to archive is large. --- aclocal.m4 | 19 ++++++++++++++++--- mk/config.mk.in | 1 + mk/target.mk | 11 +++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 0f164f6..67261b6 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl $Id: aclocal.m4,v 1.81 2001/07/19 22:08:07 sof Exp $ +dnl $Id: aclocal.m4,v 1.82 2001/07/23 22:52:33 ken Exp $ dnl dnl Extra autoconf macros for the Glasgow fptools dnl @@ -280,7 +280,9 @@ AC_SUBST(YaccCmd) dnl *** Checking for ar and its arguments + whether we need ranlib. dnl -dnl ArCmd and RANLIB are AC_SUBST'ed +dnl ArCmd, ArSupportsInput and RANLIB are AC_SUBST'ed +dnl On Digital UNIX, we test for the -Z (compress) and +dnl -input (take list of files from external file) flags. dnl AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB, [AC_PATH_PROG(ArCmd,ar) @@ -288,7 +290,10 @@ if test -z "$ArCmd"; then echo "You don't seem to have ar in your PATH...I have no idea how to make a library" exit 1; fi -if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then +if $ArCmd clqsZ conftest.a >/dev/null 2>/dev/null; then + ArCmd="$ArCmd clqsZ" + NeedRanLib='' +elif $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then ArCmd="$ArCmd clqs" NeedRanLib='' elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then @@ -310,6 +315,14 @@ fi rm -rf conftest* test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd" AC_SUBST(ArCmd) +if $ArCmd conftest.a -input /dev/null >/dev/null 2>/dev/null; then + ArSupportsInput='-input' +else + ArSupportsInput='' +fi +rm -rf conftest* +test -n "$ArSupportsInput" && test -n "$verbose" && echo " setting ArSupportsInput to $ArSupportsInput" +AC_SUBST(ArSupportsInput) if test -z "$NeedRanLib"; then RANLIB=':' test -n "$verbose" && echo " setting RANLIB to $RANLIB" diff --git a/mk/config.mk.in b/mk/config.mk.in index a070225..40f5fd1 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -658,6 +658,7 @@ FLEX_LIB = # Other standard (ha!) Unix utilities AR = @ArCmd@ +ArSupportsInput = @ArSupportsInput@ # Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!! BASH = /usr/local/bin/bash # diff --git a/mk/target.mk b/mk/target.mk index 6eabebf..8b09305 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -418,11 +418,22 @@ ifneq "$(way)" "u" SRC_HC_OPTS += -split-objs +ifeq "$(ArSupportsInput)" "" define BUILD_LIB $(RM) $@ (echo $(STUBOBJS); $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o') | xargs ar q $@ $(RANLIB) $@ endef +else +define BUILD_LIB +$(RM) $@ +echo $(STUBOBJS) > $@.list +$(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o' >> $@.list +$(AR) $(AR_OPTS) $@ $(ArSupportsInput) $@.list +$(RM) $@.list +$(RANLIB) $@ +endef +endif # Extra stuff for compiling Haskell files with $(SplitObjs): -- 1.7.10.4