You are right. `libtool --mode=execute` is no longer needed.

I forgot that libtool creates wrapper executables which handle search path.

I attached update patch.

- Kirill Makurin

________________________________
From: LIU Hao
Sent: Tuesday, June 3, 2025 7:11 PM
To: Kirill Makurin; mingw-w64-public@lists.sourceforge.net
Subject: Re: [Mingw-w64-public] winpthreads: make testing shared library work

在 2025-6-3 17:44, Kirill Makurin 写道:
> This is a good idea. Plain `LDADD` (not `LIBADD`) is used to add libraries to 
> all programs in current
> Makefile.am.

Oh thank you. I keep forgetting that.


> From 2347a4099e1340a2789ac9f11001c25548463e69 Mon Sep 17 00:00:00 2001
> From: Kirill Makurin <maiddais...@outlook.com>
> Date: Tue, 3 Jun 2025 18:34:24 +0900
> Subject: [PATCH] winpthreads: make testing shared library work
>
> Running `make check` when configured with `--disable-static`,
> depending on whether an installed winpthread library can be found
> when linking tests, has the following consequences:
>
> If an installed winpthread library is found, tests will be linked
> against installed library instead of the one we just built.
>
> If there is no installed winpthread library, tests will be linked
> against shared library. This will result in tests failing, since
> they will fail to locate just built DLL at runtime.
>
> To fix this:
>
> Use `libtool --mode=execute` to run tests. Libtool will handle
> runtime search path.

I suspect this change is unnecessary now? libtool should take care of that.


> Remove `-static` from `AM_LDFLAGS`, so we can link against the DLL.
>
> During link, pass libwinpthread.la instead of `-lwinpthread`. This
> will prevent libtool from linking against an installed winpthread library.

I suggest you rephrase. `-l` is for linking against a preinstalled library. 
Libraries that are to be
built should almost always be linked in LDADD.






--
Best regards,
LIU Hao
From 23a4a42d3ee044da90d554966678f908962f5b66 Mon Sep 17 00:00:00 2001
From: Kirill Makurin <maiddais...@outlook.com>
Date: Wed, 4 Jun 2025 00:27:01 +0900
Subject: [PATCH] winpthreads: make testing shared library work

Running `make check` when configured with `--disable-static`,
depending on whether an installed winpthread library can be found
when linking tests, has the following consequences:

If an installed winpthread library is found, tests will be linked
against installed library instead of the one we just built.

If there is no installed winpthread library, tests will be linked
against shared library. This will result in tests failing, since
they will fail to locate just built DLL at runtime.

To fix this:

Remove `-static` from `AM_LDFLAGS`, so we can link against the DLL.

Use LDADD to link tests against just built winpthread library.
Using `-l` is inappropriate to link against built libraries as it
should only be used for preinstalled libraries. Instead, pass
winpthread.la through LDADD.

Executable wrappers created by libtool now will handle runtime
search path.

Signed-off-by: Kirill Makurin <maiddais...@outlook.com>
---
 mingw-w64-libraries/winpthreads/tests/Makefile.am | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/mingw-w64-libraries/winpthreads/tests/Makefile.am 
b/mingw-w64-libraries/winpthreads/tests/Makefile.am
index 9dda82f73..7fc84d09d 100644
--- a/mingw-w64-libraries/winpthreads/tests/Makefile.am
+++ b/mingw-w64-libraries/winpthreads/tests/Makefile.am
@@ -1,13 +1,12 @@
 AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
-AM_LDFLAGS =
+AM_LDFLAGS = -L$(top_builddir)
 
 if !MSVC
 AM_LDFLAGS += -L$(top_builddir)/fakelib
 endif
 
-AM_LDFLAGS += -L$(top_builddir) -lwinpthread -static
+LDADD = $(top_builddir)/libwinpthread.la
 
 #FIXME: The test "test.c" is inherently broken currently.
 check_PROGRAMS = t_clock_getres  t_clock_gettime  t_clock_nanosleep  
t_clock_settime  t_nanosleep  #test
 TESTS = $(check_PROGRAMS)
-
-- 
2.46.1.windows.1

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to