diff options
Diffstat (limited to 'tests/compile6.test')
-rwxr-xr-x | tests/compile6.test | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/tests/compile6.test b/tests/compile6.test new file mode 100755 index 000000000..f45a5342f --- /dev/null +++ b/tests/compile6.test @@ -0,0 +1,99 @@ +#! /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' searches libraries correctly + +required=xsi-shell +. ./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 + +mkdir syslib +:> syslib/foo.lib + +syslib=`pwd`/syslib +LIB=$syslib +export LIB + +mkdir lib +:> lib/bar.lib +:> lib/bar.dll.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" + +# 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" + +:> syslib/bar.lib +:> syslib/bar.dll.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" + +# 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" + +mkdir lib2 +:> lib2/bar.dll.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" + +# 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 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 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" + +mkdir "sys lib2" +:> "sys lib2/foo.dll.lib" + +syslib2="`pwd`/sys lib2" +LIB="$syslib2;$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" + +# 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" + +: |