[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-2057
From: |
Peter Rosin |
Subject: |
[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-2057-g5f624a6 |
Date: |
Tue, 06 Mar 2012 08:32:29 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".
http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=5f624a6af8abbbd9695bee8d21d0713238ccba03
The branch, master has been updated
via 5f624a6af8abbbd9695bee8d21d0713238ccba03 (commit)
via 8902f83dcd7874d57d88f742bd4c62724634cc82 (commit)
from 74a7f49212cb3428846da599ac488e4a31ff57ed (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 5f624a6af8abbbd9695bee8d21d0713238ccba03
Merge: 74a7f49 8902f83
Author: Peter Rosin <address@hidden>
Date: Tue Mar 6 09:31:43 2012 +0100
Merge branch 'msvc'
* msvc:
scripts: support -I <dir> -L <dir> and -l <lib> for cl in compile
-----------------------------------------------------------------------
Summary of changes:
NEWS | 4 ++
lib/compile | 91 ++++++++++++++++++++++++++++++--------------
tests/compile3.test | 43 ++++++++++++---------
tests/compile4.test | 11 ++++-
tests/compile5.test | 25 +++++++-----
tests/compile6.test | 103 +++++++++++++++++++++++++++------------------------
6 files changed, 169 insertions(+), 108 deletions(-)
diff --git a/NEWS b/NEWS
index 2fae024..d4de72b 100644
--- a/NEWS
+++ b/NEWS
@@ -207,6 +207,10 @@ New in 1.11a:
action is now a synonym for "r" (replace). Also, the script has been
ignoring the "v" (verbose) modifier already since Automake 1.11.3.
+ - When the 'compile' script is used to wrap MSVC, it now accepts an
+ optional space between the -I, -L and -l options and their respective
+ arguments, for better POSIX compliance.
+
Bugs fixed in 1.11a:
- Various minor bugfixes for recent or long-standing bugs.
diff --git a/lib/compile b/lib/compile
index e8a13ea..7b4a9a7 100755
--- a/lib/compile
+++ b/lib/compile
@@ -1,7 +1,7 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2012-01-04.17; # UTC
+scriptversion=2012-03-05.13; # UTC
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
# Written by Tom Tromey <address@hidden>.
@@ -78,6 +78,48 @@ func_file_conv ()
esac
}
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
@@ -108,43 +150,34 @@ func_cl_wrapper ()
;;
esac
;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
-l*)
- lib=${1#-l}
- found=no
- save_IFS=$IFS
- IFS=';'
- for dir in $lib_path $LIB
- do
- IFS=$save_IFS
- if $shared && test -f "$dir/$lib.dll.lib"; then
- found=yes
- set x "$@" "$dir/$lib.dll.lib"
- break
- fi
- if test -f "$dir/$lib.lib"; then
- found=yes
- set x "$@" "$dir/$lib.lib"
- break
- fi
- done
- IFS=$save_IFS
-
- test "$found" != yes && set x "$@" "$lib.lib"
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
shift
;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
-L*)
- func_file_conv "${1#-L}"
- if test -z "$lib_path"; then
- lib_path=$file
- else
- lib_path="$lib_path;$file"
- fi
- linker_opts="$linker_opts -LIBPATH:$file"
+ func_cl_dashL "${1#-L}"
;;
-static)
shared=false
diff --git a/tests/compile3.test b/tests/compile3.test
index 6393e11..009de70 100755
--- a/tests/compile3.test
+++ b/tests/compile3.test
@@ -30,24 +30,29 @@ END
chmod +x ./cl
-# Check if compile handles "-o foo", -I, -l, -L, -Xlinker -Wl,
-opts=`LIB= ./compile ./cl foo.c -o foo -lbar -Lgazonk -Ibaz -Xlinker foobar
-Wl,-foo,bar`
-test x"$opts" = x"foo.c -Fefoo bar.lib -Ibaz -link -LIBPATH:gazonk foobar -foo
bar"
-
-# Check if compile handles "-o foo.obj"
-opts=`./compile ./cl -c foo.c -o foo.obj -Ibaz`
-test x"$opts" = x"-c foo.c -Fofoo.obj -Ibaz"
-
-# Check if compile handles "-o foo.o"
-opts=`./compile ./cl -c foo.c -o foo.o -Ibaz`
-test x"$opts" = x"-c foo.c -Fofoo.o -Ibaz"
-
-# Check if compile handles "foo.cc" as C++.
-opts=`./compile ./cl -c foo.cc -o foo.o -Ibaz`
-test x"$opts" = x"-c -Tpfoo.cc -Fofoo.o -Ibaz"
-
-# Check if compile clears the "eat" variable properly.
-opts=`eat=1 ./compile ./cl -c foo.c -o foo.obj -Ibaz`
-test x"$opts" = x"-c foo.c -Fofoo.obj -Ibaz"
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments. Traditionally,
+# this should work also without a space. Try both usages.
+for sp in '' ' '; do
+ # Check if compile handles "-o foo", -I, -l, -L, -Xlinker -Wl,
+ opts=`LIB= ./compile ./cl foo.c -o foo -l${sp}bar -L${sp}gazonk -I${sp}baz
-Xlinker foobar -Wl,-foo,bar`
+ test x"$opts" = x"foo.c -Fefoo bar.lib -Ibaz -link -LIBPATH:gazonk foobar
-foo bar"
+
+ # Check if compile handles "-o foo.obj"
+ opts=`./compile ./cl -c foo.c -o foo.obj -I${sp}baz`
+ test x"$opts" = x"-c foo.c -Fofoo.obj -Ibaz"
+
+ # Check if compile handles "-o foo.o"
+ opts=`./compile ./cl -c foo.c -o foo.o -I${sp}baz`
+ test x"$opts" = x"-c foo.c -Fofoo.o -Ibaz"
+
+ # Check if compile handles "foo.cc" as C++.
+ opts=`./compile ./cl -c foo.cc -o foo.o -I${sp}baz`
+ test x"$opts" = x"-c -Tpfoo.cc -Fofoo.o -Ibaz"
+
+ # Check if compile clears the "eat" variable properly.
+ opts=`eat=1 ./compile ./cl -c foo.c -o foo.obj -I${sp}baz`
+ test x"$opts" = x"-c foo.c -Fofoo.obj -Ibaz"
+done
:
diff --git a/tests/compile4.test b/tests/compile4.test
index 4fc8d9e..bb9f671 100755
--- a/tests/compile4.test
+++ b/tests/compile4.test
@@ -79,8 +79,15 @@ if test -f sub/libfoo.a; then
cp sub/libfoo.a sub/foo.lib
fi
-./compile cl $CFLAGS $LDFLAGS -L"$absfoodir" "$absmainobj" -o main -lfoo
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments. Traditionally,
+# this should work also without a space. Try both usages.
+for sp in '' ' '; do
+ rm -f main
-./main
+ ./compile cl $CFLAGS $LDFLAGS -L${sp}"$absfoodir" "$absmainobj" -o main
-l${sp}foo
+
+ ./main
+done
:
diff --git a/tests/compile5.test b/tests/compile5.test
index 7e0fdde..02afca3 100755
--- a/tests/compile5.test
+++ b/tests/compile5.test
@@ -64,17 +64,22 @@ $AUTOMAKE -a
pwd=`pwd`
-# Check if "compile cl" transforms absolute file names to
-# host format (e.g /somewhere -> c:/msys/1.0/somewhere).
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments. Traditionally,
+# this should work also without a space. Try both usages.
+for sp in '' ' '; do
+ # Check if "compile cl" transforms absolute file names to
+ # host format (e.g /somewhere -> c:/msys/1.0/somewhere).
-res=`./compile ./cl -L"$pwd" | sed -e 's/-link -LIBPATH://'`
+ res=`./compile ./cl -L${sp}"$pwd" | sed -e 's/-link -LIBPATH://'`
-case $res in
- ?:[\\/]*)
- ;;
- *)
- Exit 1
- ;;
-esac
+ case $res in
+ ?:[\\/]*)
+ ;;
+ *)
+ Exit 1
+ ;;
+ esac
+done
:
diff --git a/tests/compile6.test b/tests/compile6.test
index e20850b..9db3373 100755
--- a/tests/compile6.test
+++ b/tests/compile6.test
@@ -30,69 +30,76 @@ END
chmod +x ./cl
-mkdir syslib
-:> syslib/foo.lib
+# POSIX mandates that the compiler accepts a space between the -I,
+# -l and -L options and their respective arguments. Traditionally,
+# this should work also without a space. Try both usages.
+for sp in '' ' '; do
+ rm -rf lib lib2 syslib "sys lib2"
-syslib=`pwd`/syslib
-LIB=$syslib
-export LIB
+ mkdir syslib
+ :> syslib/foo.lib
-mkdir lib
-:> lib/bar.lib
-:> lib/bar.dll.lib
+ syslib=`pwd`/syslib
+ LIB=$syslib
+ export LIB
-# Check if compile library search correctly
-opts=`./compile ./cl foo.c -o foo -Llib -lbar -lfoo`
-test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib"
+ mkdir lib
+ :> lib/bar.lib
+ :> lib/bar.dll.lib
-# Check if -static makes compile avoid bar.dll.lib
-opts=`./compile ./cl foo.c -o foo -Llib -static -lbar -lfoo`
-test x"$opts" = x"foo.c -Fefoo lib/bar.lib $syslib/foo.lib -link -LIBPATH:lib"
+ # Check if compile library search correctly
+ opts=`./compile ./cl foo.c -o foo -L${sp}lib -l${sp}bar -l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib"
-:> syslib/bar.lib
-:> syslib/bar.dll.lib
+ # Check if -static makes compile avoid bar.dll.lib
+ opts=`./compile ./cl foo.c -o foo -L${sp}lib -static -l${sp}bar -l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo lib/bar.lib $syslib/foo.lib -link
-LIBPATH:lib"
-# Check if compile finds bar.dll.lib in syslib
-opts=`./compile ./cl foo.c -o foo -lbar -lfoo`
-test x"$opts" = x"foo.c -Fefoo $syslib/bar.dll.lib $syslib/foo.lib"
+ :> syslib/bar.lib
+ :> syslib/bar.dll.lib
-# Check if compile prefers -L over $LIB
-opts=`./compile ./cl foo.c -o foo -Llib -lbar -lfoo`
-test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib"
+ # Check if compile finds bar.dll.lib in syslib
+ opts=`./compile ./cl foo.c -o foo -l${sp}bar -l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo $syslib/bar.dll.lib $syslib/foo.lib"
-mkdir lib2
-:> lib2/bar.dll.lib
+ # Check if compile prefers -L over $LIB
+ opts=`./compile ./cl foo.c -o foo -L${sp}lib -l${sp}bar -l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib"
-# Check if compile avoids bar.dll.lib in lib2 when -static
-opts=`./compile ./cl foo.c -o foo -Llib2 -static -lbar -lfoo`
-test x"$opts" = x"foo.c -Fefoo $syslib/bar.lib $syslib/foo.lib -link
-LIBPATH:lib2"
+ mkdir lib2
+ :> lib2/bar.dll.lib
-# Check if compile gets two different bar libraries when -static
-# is added in the middle
-opts=`./compile ./cl foo.c -o foo -Llib2 -Llib -lbar -static -lbar`
-test x"$opts" = x"foo.c -Fefoo lib2/bar.dll.lib lib/bar.lib -link
-LIBPATH:lib2 -LIBPATH:lib"
+ # Check if compile avoids bar.dll.lib in lib2 when -static
+ opts=`./compile ./cl foo.c -o foo -L${sp}lib2 -static -l${sp}bar -l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo $syslib/bar.lib $syslib/foo.lib -link
-LIBPATH:lib2"
-# Check if compile gets the correct bar.dll.lib
-opts=`./compile ./cl foo.c -o foo -Llib -Llib2 -lbar -lfoo`
-test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib -LIBPATH:lib2"
+ # Check if compile gets two different bar libraries when -static
+ # is added in the middle
+ opts=`./compile ./cl foo.c -o foo -L${sp}lib2 -L${sp}lib -l${sp}bar -static
-l${sp}bar`
+ test x"$opts" = x"foo.c -Fefoo lib2/bar.dll.lib lib/bar.lib -link
-LIBPATH:lib2 -LIBPATH:lib"
-# Check if compile gets the correct bar.dll.lib
-opts=`./compile ./cl foo.c -o foo -Llib2 -Llib -lbar -lfoo`
-test x"$opts" = x"foo.c -Fefoo lib2/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib2 -LIBPATH:lib"
+ # Check if compile gets the correct bar.dll.lib
+ opts=`./compile ./cl foo.c -o foo -L${sp}lib -L${sp}lib2 -l${sp}bar
-l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo lib/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib -LIBPATH:lib2"
-mkdir "sys lib2"
-:> "sys lib2/foo.dll.lib"
+ # Check if compile gets the correct bar.dll.lib
+ opts=`./compile ./cl foo.c -o foo -L${sp}lib2 -L${sp}lib -l${sp}bar
-l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo lib2/bar.dll.lib $syslib/foo.lib -link
-LIBPATH:lib2 -LIBPATH:lib"
-syslib2="`pwd`/sys lib2"
-LIB="$syslib2;$LIB"
+ mkdir "sys lib2"
+ :> "sys lib2/foo.dll.lib"
-# Check if compile handles spaces in $LIB and that it prefers the order
-# in a multi-component $LIB.
-opts=`./compile ./cl foo.c -o foo -lfoo`
-test x"$opts" = x"foo.c -Fefoo $syslib2/foo.dll.lib"
+ syslib2="`pwd`/sys lib2"
+ LIB="$syslib2;$LIB"
-# Check if compile handles the 2nd directory in a multi-component $LIB.
-opts=`./compile ./cl foo.c -o foo -static -lfoo`
-test x"$opts" = x"foo.c -Fefoo $syslib/foo.lib"
+ # Check if compile handles spaces in $LIB and that it prefers the order
+ # in a multi-component $LIB.
+ opts=`./compile ./cl foo.c -o foo -l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo $syslib2/foo.dll.lib"
+
+ # Check if compile handles the 2nd directory in a multi-component $LIB.
+ opts=`./compile ./cl foo.c -o foo -static -l${sp}foo`
+ test x"$opts" = x"foo.c -Fefoo $syslib/foo.lib"
+done
:
hooks/post-receive
--
GNU Automake
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.11-2057-g5f624a6,
Peter Rosin <=