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