Den 2010-08-12 16:30 skrev Peter Rosin:
> Hi!
> 
> lib.exe is simply a wrapper around "link.exe -lib", this patch
> allows the latter form to also be wrapped by ar-lib.
> 
> While at it, the patch also allows some other options through
> to the wrapped archiver. I have quoted some of the output from
> "lib -?" below for your convenience (remember that '-' can be
> used instead of '/' as option specifier and that '/' isn't really
> supported when using ar-lib since it makes the option look like
> an absolute file name).

Oops, forgot to update scriptversion...

Cheers,
Peter
>From 8c406f64b66aedee8359ddf1383e087faa2ba233 Mon Sep 17 00:00:00 2001
From: Peter Rosin <p...@lysator.liu.se>
Date: Thu, 12 Aug 2010 18:01:18 +0200
Subject: [PATCH] Enable the use of "link -lib" as the wrapped archiver.

* lib/ar-lib: Enable the use of "link -lib" as the wrapped
archiver, as well as allowing some other options to be passed
through to the wrapped archiver.
* tests/ar-lib.test: Test the above.

Signed-off-by: Peter Rosin <p...@lysator.liu.se>
---
 ChangeLog         |    8 ++++++++
 lib/ar-lib        |   26 +++++++++++++++++++++++---
 tests/ar-lib.test |    4 ++++
 3 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8208906..2a1c514 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-08-12  Peter Rosin  <p...@lysator.liu.se>
+
+       Enable the use of "link -lib" as the wrapped archiver.
+       * lib/ar-lib: Enable the use of "link -lib" as the wrapped
+       archiver, as well as allowing some other options to be passed
+       through to the wrapped archiver.
+       * tests/ar-lib.test: Test the above.
+
 2010-08-06  Peter Rosin  <p...@lysator.liu.se>
 
        Add new auxiliary 'ar-lib' script, wrapping Microsoft lib.
diff --git a/lib/ar-lib b/lib/ar-lib
index aa4acbd..ef03430 100755
--- a/lib/ar-lib
+++ b/lib/ar-lib
@@ -2,7 +2,7 @@
 # Wrapper for Microsoft lib.exe
 
 me=ar-lib
-scriptversion=2010-08-08.07; # UTC
+scriptversion=2010-08-12.16; # UTC
 
 # Copyright (C) 2010 Free Software
 # Foundation, Inc.
@@ -121,8 +121,28 @@ fi
 
 AR=$1
 shift
-action=$1
-shift
+while :
+do
+  if test $# -lt 2; then
+    func_error "you must specify a program, an action and an archive"
+  fi
+  case $1 in
+    -lib | -LIB \
+    | -ltcg | -LTCG \
+    | -machine* | -MACHINE* \
+    | -subsystem* | -SUBSYSTEM* \
+    | -verbose | -VERBOSE \
+    | -wx* | -WX* )
+      AR="$AR $1"
+      shift
+      ;;
+    *)
+      action=$1
+      shift
+      break
+      ;;
+  esac
+done
 orig_archive=$1
 shift
 func_file_conv "$orig_archive"
diff --git a/tests/ar-lib.test b/tests/ar-lib.test
index 85f8242..d418c21 100755
--- a/tests/ar-lib.test
+++ b/tests/ar-lib.test
@@ -72,4 +72,8 @@ test x"$opts" = x"lib -NOLOGO -EXTRACT:foo.obj foo.lib"
 opts=`./ar-lib ./lib x foo.lib @foolist`
 test x"$opts" = x"lib -NOLOGO -EXTRACT:foo.obj foo.lib"
 
+# Check if ar-lib passes -lib and -LTCG through to the wrappee
+opts=`./ar-lib ./lib -lib -LTCG x foo.lib foo.obj`
+test x"$opts" = x"lib -lib -LTCG -NOLOGO -EXTRACT:foo.obj foo.lib"
+
 :
-- 
1.6.4.2

Reply via email to