Den 2010-09-20 23:30 skrev Roumen Petrov: > Peter Rosin wrote: >> Den 2010-09-18 00:04 skrev Roumen Petrov: >>> Hi Peter, >>> >>> Peter Rosin wrote: >>>> Hi! >>>> >>>> need_lib_prefix.at currently fails with MSVC. >>> >>> Hmm probably test fail as shared library is build without -no-undefined >>> flag. >>> >>> Did libtool MSC allow creation of shared libraries without -no-undefined ? >>> >>> On windows platforms (msc, gcc(mingw*)) may be the test require some PATH >>> magics. >>> (as example like func_fix_path from static.at test) >> >> You are barking up the wrong tree, since: >> >> 1. The test passes on MinGW and Cygwin with gcc, if wouldn't do that if >> -no-undefined was the cause of the fail. > > >> 2. The patch in the old quoted message makes the test pass on MSVC, which >> it wouldn't do if -no-undefined was the cause of the fail. >> >> "PATH magic" is not relevant if -no-undefined is not passed, since everything >> should be static in that case (no dlls created). > > But the libtool command contain -rpath so the test build shared and static > libraries . > > > 1) linux native build: > $ cd .../testsuite.dir/086 > $ strace -f ./main 2>&1 | grep foo > open("XXXX/.libs/tls/i686/libfoo1.so", O_RDONLY) = -1 ENOENT (No such file or > directory) > open("XXXX/.libs/tls/libfoo1.so", O_RDONLY) = -1 ENOENT (No such file or > directory) > open("XXXX/.libs/i686/libfoo1.so", O_RDONLY) = -1 ENOENT (No such file or > directory) > open("XXXX/.libs/libfoo1.so", O_RDONLY) = 3 > open("XXXX/.libs/libfoo2.so", O_RDONLY) = 3 > write(1, "libfoo1: 2\nlibfoo2: 3\n", 22libfoo1: 2 > libfoo2: 3 > > $ ls .../testsuite.dir/086/.libs/ > foo1.la@ foo1.lai foo1.o foo2.o libfoo1.a libfoo1.so* libfoo2.a > libfoo2.la@ libfoo2.lai libfoo2.so* lt-main* main* mainS.o > > Result test pass. Both static and shared libraries are created. The > executable load shared.
Of course. This is on a "normal" system where every library normally has a 'lib' prefix and that also has need_lib_prefix="no", because it really doesn't need the prefix. The test is valid on such "normal" systems, since it is designed to expose problems on "weird" systems where need_lib_prefix="unknown", even if the testsuite is running on a "normal" system. I can only speculate, but I would guess that the test is there to catch regressions early, before they happen on the "weird" systems that are not normally used in the development of libtool. *spends a minutes or two digging in git history* Let's quote the commit message from when the test was added: Add a test to simulate a failure visible on systems which need a library prefix like 'lib', such as BeOS. Fix a number of bugs exposed by this test in order for it to pass. Currently the prefix is hardcoded as 'lib', as I am not aware of systems that require a different prefix: My patch disables the test on MSVC, because it doesn't like the hardcoded 'lib' prefix. Cheers, Peter