Hash :
0431dc44
Author :
Date :
2010-09-21T20:59:54
compile: implement library search to support MSVC static linking * lib/compile (func_cl_wrapper): Implement library search and -static option so that the user can select whether to prefer dll import libraries or static libraries. This enables MSVC to link against dlls generated by libtool without requiring libtool or workarounds such as -lfoo.dll etc. Makes the tests/static.at test case in libtool pass. * tests/compile3.test: Don't trip up if there happens to exist a "foo" library in the library search path. * tests/compile6.test: New test, verifying the library search. * tests/Makefile.am (TESTS): Update. Signed-off-by: Peter Rosin <peda@lysator.liu.se>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
#! /bin/sh
# Copyright (C) 2010 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Make sure `compile' wraps the Microsoft C/C++ compiler (cl) correctly
. ./defs || Exit 1
set -e
cp "$testsrcdir/../lib/compile" .
# Use a dummy cl, since cl isn't readily available on all systems
cat >cl <<'END'
#! /bin/sh
echo "$@"
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"
: