libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MSVC status


From: Peter Rosin
Subject: Re: MSVC status
Date: Fri, 13 Aug 2010 13:09:02 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2

Hi Chris,

Den 2010-08-13 12:26 skrev Christopher Hulbert:
> On Mon, Aug 9, 2010 at 3:55 PM, Peter Rosin <address@hidden> wrote:
>> Hi!
>>
>> Christopher Hulbert asked for some MSVC status in a private message,
>> but I figured more people might be interested. So, I'm posting a
>> testsuite log from libtool master.
>>
>> It was configured with:
>>
>> ../configure \
>> CC="/c/cygwin/home/peda/automake/git/automake/lib/compile cl" CFLAGS="-MD
>> -Zi -EHsc" \
>> CXX="/c/cygwin/home/peda/automake/git/automake/lib/compile cl" CXXFLAGS="-MD
>> -Zi -EHsc" \
>> LD=link NM="dumpbin -symbols" STRIP=: \
>> AR="/c/cygwin/home/peda/automake/git/automake/lib/archive lib" RANLIB=:
>> F77=no FC=no GCJ=no
>>
>> Don't be fooled by /c/cygwin in the above paths, or in the log for that
>> matter. This was all using MSYS/MSVC. /c/cygwin is just where the files
>> live on my system.
>>
>> I do not have automake installed in my MSYS environment, so there are
>> a fair number of skips caused by that. I also did not run the old
>> testsuite as it has to many variables that are not imported correctly
>> from dlls.
>>
>> The compile script above is from the master branch of automake, and
>> the archive script is from this pending automake patch:
>> http://www.mail-archive.com/address@hidden/msg02374.html
>>
>> (Note that the final name of the latter script might not be 'archive')
>>
>> Further, there are two things left todo, that were done in the old
>> pr-msvc-support branch that I have identified so far.
>>
>> 1. libtool needs to support archivers with @FILE support, since
>> libtool currently falls back to piecewise linking for long
>> command lines. MSVC doesn't support piecewise linking. I have a
>> patch sitting on disk that I fiddle with from time to time, expect
>> it to appear on a list near you when the above pending automake
>> patch is commited, if not sooner.
>>
>> 2. Support for other C++ file extensions, MSVC only handles .cpp
>> files as C++ code without feeding it a hint. But this change is
>> best done in the compile script so it's a thing for automake...
>>
>> Anyway, I have attached a full testsuite log.
> 
> Attached are my logs. I am building from cygwin. I have not yet looked
> into any of the failures. I believe your logs had 28 failures with 22
> expected. I don't think all of our failures line up though. Note that
> I ran it once without setting --host (testsuite.log.bz2), and once
> setting --host=i686-pc-mingw32 (testsuite_cross.log.bz2).

You will not get comparable results on Cygwin. MSYS has automatic
path conversion when it invokes Windows binaries that simply isn't
there in Cygwin.  So, you are in unsupported territory.  As an
example, test 38 "Link order test" fails for you like this (quoting
the interesting lines):


libtool: link:  /apps/autotools/automake/lib/compile cl -o src/.libs/b-0.dll  
src/.libs/b.obj      -L/apps/autotools/libtool/tests/testsuite.dir/038/old/lib 
/apps/autotools/libtool/tests/testsuite.dir/038/old/lib/cee-0.lib 
@src/.libs/b-0.dll.exp -Wl,-DLL
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl -link -EXPORT:b_old

cl : Command line warning D9002 : ignoring unknown option 
'/apps/autotools/libtool/tests/testsuite.dir/038/old/lib/cee-0.lib'
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:src/.libs/b-0.dll 
-EXPORT:b_old 
-LIBPATH:C:/cygwin/apps/autotools/libtool/tests/testsuite.dir/038/old/lib 
-DLL 
src/.libs/b.obj 
   Creating library src/.libs/b-0.lib and object src/.libs/b-0.exp
b.obj : error LNK2001: unresolved external symbol __imp__c
src/.libs/b-0.dll : fatal error LNK1120: 1 unresolved externals


Notice how MSVC can't find the absolute path:
/apps/autotools/libtool/tests/testsuite.dir/038/old/lib/cee-0.lib
MSYS would have converted that for you. Corresponding snippet when
I run under MSYS:


libtool: link:  /c/cygwin/home/peda/automake/git/automake/lib/compile cl -o 
src/.libs/b-0.dll  src/.libs/b.obj      
-L/c/cygwin/home/peda/libtool/git/libtool-msvc/msvc/tests/testsuite.dir/038/old/lib
 
/c/cygwin/home/peda/libtool/git/libtool-msvc/msvc/tests/testsuite.dir/038/old/lib/cee-0.lib
 @src/.libs/b-0.dll.exp -Wl,-DLL
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl -link -EXPORT:b_old

Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:src/.libs/b-0.dll 
-EXPORT:b_old 
-LIBPATH:c:/cygwin/home/peda/libtool/git/libtool-msvc/msvc/tests/testsuite.dir/038/old/lib
 
-DLL 
src/.libs/b.obj 
c:/cygwin/home/peda/libtool/git/libtool-msvc/msvc/tests/testsuite.dir/038/old/lib/cee-0.lib
 
   Creating library src/.libs/b-0.lib and object src/.libs/b-0.exp


And then the test proceeds to successful completion. Notice how cl
lists c:/cygwin/..../038/old/lib/cee-0.lib as input even if libtool
never did anything with /c/cygwin/..../038/old/lib/cee-0.lib

I expect many of your failures to be similar. In short, you need
to use MSYS instead of Cygwin to get matching behaviour.

Cheers,
Peter



reply via email to

[Prev in Thread] Current Thread [Next in Thread]