[project @ 2001-07-23 22:52:33 by ken]
authorken <unknown>
Mon, 23 Jul 2001 22:52:33 +0000 (22:52 +0000)
committerken <unknown>
Mon, 23 Jul 2001 22:52:33 +0000 (22:52 +0000)
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
mk/config.mk.in
mk/target.mk

index 0f164f6..67261b6 100644 (file)
@@ -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"
index a070225..40f5fd1 100644 (file)
@@ -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
 #
index 6eabebf..8b09305 100644 (file)
@@ -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):