Hello,

I tried to build winpthreads using latest MSVC tools from Visual Studio 2022 
and have run into some issues. The issues were not serious and were easy to fix 
so I would like to contribute a few simple patches. Each patch is independent 
of each other.

I have attached the patches generated with git format-patch. The explanation of 
each patch follows.

patch1.txt
=========

Declaration of function __pth_gpointer_lockedin in 
mingw-w64-libraries/winpthreads/src/thread.h makes cl.exe choke with error code 
C2059 (syntax error) because of WINPTHREAD_API after the * character. Patch 
simply moves WINPTHREAD_API to the left of the return type.

patch2.txt
=========

Compiling and linking tests/t_nanosleep.c with MSVC tools fails due to 
unresolved reference to getntptimeofday. I assume this function is provided by 
mingw-w64 runtime.

Patch conditionally defines getntptimeofday as a static function written around 
either:

  *
timespec_get, if TIME_UTC is defined (which is true at least for latest 
versions of UCRT),
  *
or winpthreads' own clock_gettime (which is not great, but at least code will 
compile and link).

patch3-v1.txt and patch3-v2.txt
=========================

While winpthread.dll and export and static libraries are created successfully, 
the overall build fails when it tries to create libpthread[.dll].a from 
libwinpthread[.dll].a. While this works with mingw-w64 toolchains (GNU/LLVM) it 
fails with MSVC because of difference in library name conventions (.lib 
extension instead of .a). (Note also that we cannot use lib_LIBRARIES to define 
targets with .lib extension.)

Instead of copying during the build, create a copy of pthread[.dll].{a|lib} 
during installation with `install-exec-hook` Automake rule. Also provides 
`uninstall-hook` to ensure that pthread[.dll].{a|lib} version of export/static 
library is deleted with `make uninstall`.

There is also a little change in tests/Makefile.am which adds 
-L$(top_builddir)/fakelib to AM_LDFLAGS only when NOT using MSVC tools.  This 
directory is only created when using mingw-w64 toolchains and its absence makes 
libtool fail when linking executables in tests subdirectory.

The difference between patch3-v1.txt and patch3-v2.txt is that former only 
modifies Makefile.am and tests/Makefile.am without regenerating Makefile.in and 
tests/Makefile.in. I assume the maintainer may want to regenerate those files 
themself to make sure everything works. (Also patch3-v2.txt depends on 
patch3-v1.txt, but it probably should be a single commit.)

A comment regarding configure.ac
============================

The configure.ac checks value of $CC against '*cl | *cl.exe' wildcards which 
may fail if CC has value like "cl.exe -nologo -std:c11". Try to compile and 
check whether macro _MSC_VER is defined may be more robust. I may write a patch 
for this as well.


  *
Kirill Makurin
From 2d0ef83e3981ebf91fc81f9c48018d2a7fa4fe78 Mon Sep 17 00:00:00 2001
From: Kirill Makurin <maiddais...@outlook.com>
Date: Fri, 25 Oct 2024 19:51:45 +0900
Subject: [PATCH 1/4] headers: Fix mingw-w64-libraries/winpthreads/src/thread.h

Move WINPTHREAD_API left to return type of __pth_gpointer_locked so
cl.exe does not choke with C2059 (syntax error).

Signed-off-by: Kirill Makurin <maiddais...@outlook.com>
---
 mingw-w64-libraries/winpthreads/src/thread.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mingw-w64-libraries/winpthreads/src/thread.h 
b/mingw-w64-libraries/winpthreads/src/thread.h
index 5b88226e9..e556d2661 100644
--- a/mingw-w64-libraries/winpthreads/src/thread.h
+++ b/mingw-w64-libraries/winpthreads/src/thread.h
@@ -74,6 +74,6 @@ void thread_print_set(int state);
 void thread_print(volatile pthread_t t, char *txt);
 #endif
 int  __pthread_shallcancel(void);
-struct _pthread_v *WINPTHREAD_API __pth_gpointer_locked (pthread_t id);
+WINPTHREAD_API struct _pthread_v *__pth_gpointer_locked (pthread_t id);
 
 #endif
-- 
2.46.1.windows.1

From 4b50ff068eaa5e2b8bd3d2ea5b18ff6c79a8aeba Mon Sep 17 00:00:00 2001
From: Kirill Makurin <maiddais...@outlook.com>
Date: Fri, 25 Oct 2024 21:40:00 +0900
Subject: [PATCH 2/4] tests: Make
 mingw-w64-libraries/winpthreads/tests/t_nanosleep.c compile with MSVC

Define getntptimeofday as a static function when compiling using MSVC tools.
Implemented in terms of timespec_get if TIME_UTC is defined, otherwise in
terms of winpthreads' own clock_gettime.

Signed-off-by: Kirill Makurin <maiddais...@outlook.com>
---
 mingw-w64-libraries/winpthreads/tests/t_nanosleep.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/mingw-w64-libraries/winpthreads/tests/t_nanosleep.c 
b/mingw-w64-libraries/winpthreads/tests/t_nanosleep.c
index 21c0ceb8d..69664bbb1 100644
--- a/mingw-w64-libraries/winpthreads/tests/t_nanosleep.c
+++ b/mingw-w64-libraries/winpthreads/tests/t_nanosleep.c
@@ -8,7 +8,20 @@
 #define POW10_3                 1000
 #define POW10_6                 1000000
 
+#ifndef _MSC_VER
 extern int __cdecl getntptimeofday(struct timespec *tp, struct timezone *tz);
+#else
+# ifdef TIME_UTC
+static int getntptimeofday(struct timespec *tp, struct timezone *tz) {
+    return timespec_get(tp, TIME_UTC);
+}
+# else /* !TIME_UTC */
+#include "pthread_time.h"
+static int getntptimeofday(struct timespec *tp, struct timezone *tz) {
+    return clock_gettime(CLOCK_REALTIME, tp);
+}
+# endif /* TIME_UTC */
+#endif
 
 __int64 timespec_diff_as_ms(struct timespec *__old, struct timespec *__new)
 {
-- 
2.46.1.windows.1

From 2dccb59752a8ce14b161282aa0b157be36da4e41 Mon Sep 17 00:00:00 2001
From: Kirill Makurin <maiddais...@outlook.com>
Date: Sat, 26 Oct 2024 06:28:46 +0900
Subject: [PATCH 3/4] Update Makefile.am and test/Makefile.am in
 mingw-w64-libraries/winpthreads

Make alias for winpthread[.dll].{a|lib} as pthread[.dll].{a|lib}
work with both mingw-w64 and MSVC (as used by libtool) library names.

Old method worked only with mingw-w64 library names (lib*[.dll].a).

Signed-off-by: Kirill Makurin <maiddais...@outlook.com>
---
 mingw-w64-libraries/winpthreads/Makefile.am   | 50 +++++++++++--------
 .../winpthreads/tests/Makefile.am             |  8 ++-
 2 files changed, 37 insertions(+), 21 deletions(-)

diff --git a/mingw-w64-libraries/winpthreads/Makefile.am 
b/mingw-w64-libraries/winpthreads/Makefile.am
index 54eca7b81..ee85e9b10 100644
--- a/mingw-w64-libraries/winpthreads/Makefile.am
+++ b/mingw-w64-libraries/winpthreads/Makefile.am
@@ -29,29 +29,39 @@ fakelib_libgcc_s_a_SOURCES =
 fakelib_libgcc_eh_a_SOURCES =
 endif
 
-lib_LIBRARIES = 
-
-if COPY_STATIC
-lib_LIBRARIES += libpthread.a
-libpthread_a_SOURCES =
-libpthread_a_DEPENDENCIES = libwinpthread.la
-#FIXME: Use cp kludge until a better method presents itself
-#libpthread_a_LIBADD = $(LT_OBJDIR)/libwinpthread.a
-libpthread_a_AR = cp -f $(LT_OBJDIR)/libwinpthread.a
-endif
-
-if COPY_SHARED
-lib_LIBRARIES += libpthread.dll.a
-libpthread_dll_a_SOURCES =
-libpthread_dll_a_DEPENDENCIES = libwinpthread.la
-#FIXME: Use cp kludge until a better method presents itself
-#libpthread_dll_a_LIBADD = $(LT_OBJDIR)/libwinpthread.dll.a
-libpthread_dll_a_AR = cp -f $(LT_OBJDIR)/libwinpthread.dll.a
-endif
-
 # Tell libtool how to use the resource compiler
 .rc.lo:
        $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile 
$(RC) $(RCFLAGS) -i $< -o $@
 
+# Handle pthread[.dll].{lib|a} alias when installing
+install-exec-hook:
+       if test -f $(DESTDIR)$(libdir)/libwinpthread.a; then \
+               cp -f $(DESTDIR)$(libdir)/libwinpthread.a 
$(DESTDIR)$(libdir)/libpthread.a; \
+       else \
+               :; \
+       fi
+       if test -f $(DESTDIR)$(libdir)/libwinpthread.dll.a; then \
+               cp -f $(DESTDIR)$(libdir)/libwinpthread.dll.a 
$(DESTDIR)$(libdir)/libpthread.dll.a; \
+       else \
+               :; \
+       fi
+       if test -f $(DESTDIR)$(libdir)/winpthread.lib; then \
+               cp -f $(DESTDIR)$(libdir)/winpthread.lib 
$(DESTDIR)$(libdir)/pthread.lib; \
+       else \
+               :; \
+       fi
+       if test -f $(DESTDIR)$(libdir)/winpthread.dll.lib; then \
+               cp -f $(DESTDIR)$(libdir)/winpthread.dll.lib 
$(DESTDIR)$(libdir)/pthread.dll.lib; \
+       else \
+               :; \
+       fi
+
+# Likewise when uninstalling
+uninstall-hook:
+       for file in $(DESTDIR)$(libdir)/libpthread.a 
$(DESTDIR)$(libdir)/libpthread.dll.a \
+                       $(DESTDIR)$(libdir)/pthread.lib 
$(DESTDIR)$(libdir)/pthread.dll.lib; do \
+               rm -f $${file}; \
+       done
+
 DISTCHECK_CONFIGURE_FLAGS = --host=$(host_triplet)
 
diff --git a/mingw-w64-libraries/winpthreads/tests/Makefile.am 
b/mingw-w64-libraries/winpthreads/tests/Makefile.am
index 19ab5f23e..9dda82f73 100644
--- a/mingw-w64-libraries/winpthreads/tests/Makefile.am
+++ b/mingw-w64-libraries/winpthreads/tests/Makefile.am
@@ -1,5 +1,11 @@
 AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
-AM_LDFLAGS = -L$(top_builddir)/fakelib -L$(top_builddir) -lwinpthread -static
+AM_LDFLAGS =
+
+if !MSVC
+AM_LDFLAGS += -L$(top_builddir)/fakelib
+endif
+
+AM_LDFLAGS += -L$(top_builddir) -lwinpthread -static
 
 #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
-- 
2.46.1.windows.1

From 35b1e962908419df91d6973a597cf4a58a91b01e Mon Sep 17 00:00:00 2001
From: Kirill Makurin <maiddais...@outlook.com>
Date: Sat, 26 Oct 2024 06:32:28 +0900
Subject: [PATCH 4/4] Regenerate Makefile.in and tests/Makefile.in in
 mingw-w64-libraries/winpthreads

Signed-off-by: Kirill Makurin <maiddais...@outlook.com>
---
 mingw-w64-libraries/winpthreads/Makefile.in   | 139 +++++++-----------
 .../winpthreads/tests/Makefile.in             |   3 +-
 2 files changed, 56 insertions(+), 86 deletions(-)

diff --git a/mingw-w64-libraries/winpthreads/Makefile.in 
b/mingw-w64-libraries/winpthreads/Makefile.in
index e14a95843..bf77bbfba 100644
--- a/mingw-w64-libraries/winpthreads/Makefile.in
+++ b/mingw-w64-libraries/winpthreads/Makefile.in
@@ -94,8 +94,6 @@ host_triplet = @host@
 @MSVC_TRUE@am__append_2 = -D_CRT_NONSTDC_NO_WARNINGS
 @MSVC_FALSE@am__append_3 = -D__USE_MINGW_ANSI_STDIO=0
 @MSVC_FALSE@am__append_4 = -L$(builddir)/fakelib -Wc,-no-pthread
-@COPY_STATIC_TRUE@am__append_5 = libpthread.a
-@COPY_SHARED_TRUE@am__append_6 = libpthread.dll.a
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
@@ -112,6 +110,7 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -139,9 +138,7 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" \
-       "$(DESTDIR)$(includedir)"
-LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 ARFLAGS = cru
 AM_V_AR = $(am__v_AR_@AM_V@)
@@ -165,12 +162,6 @@ fakelib_libgcc_s_a_AR = $(AR) $(ARFLAGS)
 fakelib_libgcc_s_a_LIBADD =
 am_fakelib_libgcc_s_a_OBJECTS =
 fakelib_libgcc_s_a_OBJECTS = $(am_fakelib_libgcc_s_a_OBJECTS)
-libpthread_a_LIBADD =
-am_libpthread_a_OBJECTS =
-libpthread_a_OBJECTS = $(am_libpthread_a_OBJECTS)
-libpthread_dll_a_LIBADD =
-am_libpthread_dll_a_OBJECTS =
-libpthread_dll_a_OBJECTS = $(am_libpthread_dll_a_OBJECTS)
 libwinpthread_la_LIBADD =
 am_libwinpthread_la_OBJECTS = src/libwinpthread_la-barrier.lo \
        src/libwinpthread_la-cond.lo src/libwinpthread_la-misc.lo \
@@ -248,11 +239,9 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(fakelib_libgcc_a_SOURCES) $(fakelib_libgcc_eh_a_SOURCES) \
-       $(fakelib_libgcc_s_a_SOURCES) $(libpthread_a_SOURCES) \
-       $(libpthread_dll_a_SOURCES) $(libwinpthread_la_SOURCES)
+       $(fakelib_libgcc_s_a_SOURCES) $(libwinpthread_la_SOURCES)
 DIST_SOURCES = $(am__fakelib_libgcc_a_SOURCES_DIST) \
        $(fakelib_libgcc_eh_a_SOURCES) $(fakelib_libgcc_s_a_SOURCES) \
-       $(libpthread_a_SOURCES) $(libpthread_dll_a_SOURCES) \
        $(libwinpthread_la_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
        ctags-recursive dvi-recursive html-recursive info-recursive \
@@ -498,17 +487,6 @@ libwinpthread_la_SOURCES = \
 @MSVC_FALSE@fakelib_libgcc_a_SOURCES = src/libgcc/dll_dependency.S 
src/libgcc/dll_math.c
 @MSVC_FALSE@fakelib_libgcc_s_a_SOURCES = 
 @MSVC_FALSE@fakelib_libgcc_eh_a_SOURCES = 
-lib_LIBRARIES = $(am__append_5) $(am__append_6)
-@COPY_STATIC_TRUE@libpthread_a_SOURCES = 
-@COPY_STATIC_TRUE@libpthread_a_DEPENDENCIES = libwinpthread.la
-#FIXME: Use cp kludge until a better method presents itself
-#libpthread_a_LIBADD = $(LT_OBJDIR)/libwinpthread.a
-@COPY_STATIC_TRUE@libpthread_a_AR = cp -f $(LT_OBJDIR)/libwinpthread.a
-@COPY_SHARED_TRUE@libpthread_dll_a_SOURCES = 
-@COPY_SHARED_TRUE@libpthread_dll_a_DEPENDENCIES = libwinpthread.la
-#FIXME: Use cp kludge until a better method presents itself
-#libpthread_dll_a_LIBADD = $(LT_OBJDIR)/libwinpthread.dll.a
-@COPY_SHARED_TRUE@libpthread_dll_a_AR = cp -f $(LT_OBJDIR)/libwinpthread.dll.a
 DISTCHECK_CONFIGURE_FLAGS = --host=$(host_triplet)
 all: config.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -563,37 +541,6 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ 
$(am__configure_deps)
 
 distclean-hdr:
        -rm -f config.h stamp-h1
-install-libLIBRARIES: $(lib_LIBRARIES)
-       @$(NORMAL_INSTALL)
-       @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-       list2=; for p in $$list; do \
-         if test -f $$p; then \
-           list2="$$list2 $$p"; \
-         else :; fi; \
-       done; \
-       test -z "$$list2" || { \
-         echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-         echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
-         $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
-       @$(POST_INSTALL)
-       @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-       for p in $$list; do \
-         if test -f $$p; then \
-           $(am__strip_dir) \
-           echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
-           ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
-         else :; fi; \
-       done
-
-uninstall-libLIBRARIES:
-       @$(NORMAL_UNINSTALL)
-       @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir)
-
-clean-libLIBRARIES:
-       -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
 
 clean-noinstLIBRARIES:
        -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -660,16 +607,6 @@ fakelib/libgcc_s.a: $(fakelib_libgcc_s_a_OBJECTS) 
$(fakelib_libgcc_s_a_DEPENDENC
        $(AM_V_at)-rm -f fakelib/libgcc_s.a
        $(AM_V_AR)$(fakelib_libgcc_s_a_AR) fakelib/libgcc_s.a 
$(fakelib_libgcc_s_a_OBJECTS) $(fakelib_libgcc_s_a_LIBADD)
        $(AM_V_at)$(RANLIB) fakelib/libgcc_s.a
-
-libpthread.a: $(libpthread_a_OBJECTS) $(libpthread_a_DEPENDENCIES) 
$(EXTRA_libpthread_a_DEPENDENCIES) 
-       $(AM_V_at)-rm -f libpthread.a
-       $(AM_V_AR)$(libpthread_a_AR) libpthread.a $(libpthread_a_OBJECTS) 
$(libpthread_a_LIBADD)
-       $(AM_V_at)$(RANLIB) libpthread.a
-
-libpthread.dll.a: $(libpthread_dll_a_OBJECTS) $(libpthread_dll_a_DEPENDENCIES) 
$(EXTRA_libpthread_dll_a_DEPENDENCIES) 
-       $(AM_V_at)-rm -f libpthread.dll.a
-       $(AM_V_AR)$(libpthread_dll_a_AR) libpthread.dll.a 
$(libpthread_dll_a_OBJECTS) $(libpthread_dll_a_LIBADD)
-       $(AM_V_at)$(RANLIB) libpthread.dll.a
 src/$(am__dirstamp):
        @$(MKDIR_P) src
        @: > src/$(am__dirstamp)
@@ -1205,7 +1142,7 @@ check: check-recursive
 all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) config.h
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" 
"$(DESTDIR)$(includedir)"; do \
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
@@ -1245,8 +1182,8 @@ maintainer-clean-generic:
        @echo "it deletes files that may require special tools to rebuild."
 clean: clean-recursive
 
-clean-am: clean-generic clean-libLIBRARIES clean-libLTLIBRARIES \
-       clean-libtool clean-noinstLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+       clean-noinstLIBRARIES mostlyclean-am
 
 distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1286,8 +1223,9 @@ install-dvi: install-dvi-recursive
 
 install-dvi-am:
 
-install-exec-am: install-libLIBRARIES install-libLTLIBRARIES
-
+install-exec-am: install-libLTLIBRARIES
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
 install-html: install-html-recursive
 
 install-html-am:
@@ -1341,31 +1279,32 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-includeHEADERS uninstall-libLIBRARIES \
-       uninstall-libLTLIBRARIES
-
-.MAKE: $(am__recursive_targets) all install-am install-strip
+uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: $(am__recursive_targets) all install-am install-exec-am \
+       install-strip uninstall-am
 
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
        am--depfiles am--refresh check check-am clean clean-cscope \
-       clean-generic clean-libLIBRARIES clean-libLTLIBRARIES \
-       clean-libtool clean-noinstLIBRARIES cscope cscopelist-am ctags \
-       ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \
-       dist-shar dist-tarZ dist-xz dist-zip dist-zstd distcheck \
-       distclean distclean-compile distclean-generic distclean-hdr \
+       clean-generic clean-libLTLIBRARIES clean-libtool \
+       clean-noinstLIBRARIES cscope cscopelist-am ctags ctags-am dist \
+       dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+       dist-xz dist-zip dist-zstd distcheck distclean \
+       distclean-compile distclean-generic distclean-hdr \
        distclean-libtool distclean-tags distcleancheck distdir \
        distuninstallcheck dvi dvi-am html html-am info info-am \
        install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-includeHEADERS install-info \
-       install-info-am install-libLIBRARIES install-libLTLIBRARIES \
+       install-dvi-am install-exec install-exec-am install-exec-hook \
+       install-html install-html-am install-includeHEADERS \
+       install-info install-info-am install-libLTLIBRARIES \
        install-man install-pdf install-pdf-am install-ps \
        install-ps-am install-strip installcheck installcheck-am \
        installdirs installdirs-am maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
-       uninstall-libLIBRARIES uninstall-libLTLIBRARIES
+       tags tags-am uninstall uninstall-am uninstall-hook \
+       uninstall-includeHEADERS uninstall-libLTLIBRARIES
 
 .PRECIOUS: Makefile
 
@@ -1374,6 +1313,36 @@ uninstall-am: uninstall-includeHEADERS 
uninstall-libLIBRARIES \
 .rc.lo:
        $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile 
$(RC) $(RCFLAGS) -i $< -o $@
 
+# Handle pthread[.dll].{lib|a} alias when installing
+install-exec-hook:
+       if test -f $(DESTDIR)$(libdir)/libwinpthread.a; then \
+               cp -f $(DESTDIR)$(libdir)/libwinpthread.a 
$(DESTDIR)$(libdir)/libpthread.a; \
+       else \
+               :; \
+       fi
+       if test -f $(DESTDIR)$(libdir)/libwinpthread.dll.a; then \
+               cp -f $(DESTDIR)$(libdir)/libwinpthread.dll.a 
$(DESTDIR)$(libdir)/libpthread.dll.a; \
+       else \
+               :; \
+       fi
+       if test -f $(DESTDIR)$(libdir)/winpthread.lib; then \
+               cp -f $(DESTDIR)$(libdir)/winpthread.lib 
$(DESTDIR)$(libdir)/pthread.lib; \
+       else \
+               :; \
+       fi
+       if test -f $(DESTDIR)$(libdir)/winpthread.dll.lib; then \
+               cp -f $(DESTDIR)$(libdir)/winpthread.dll.lib 
$(DESTDIR)$(libdir)/pthread.dll.lib; \
+       else \
+               :; \
+       fi
+
+# Likewise when uninstalling
+uninstall-hook:
+       for file in $(DESTDIR)$(libdir)/libpthread.a 
$(DESTDIR)$(libdir)/libpthread.dll.a \
+                       $(DESTDIR)$(libdir)/pthread.lib 
$(DESTDIR)$(libdir)/pthread.dll.lib; do \
+               rm -f $${file}; \
+       done
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/mingw-w64-libraries/winpthreads/tests/Makefile.in 
b/mingw-w64-libraries/winpthreads/tests/Makefile.in
index bb0e75bcc..89f6eed39 100644
--- a/mingw-w64-libraries/winpthreads/tests/Makefile.in
+++ b/mingw-w64-libraries/winpthreads/tests/Makefile.in
@@ -87,6 +87,7 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+@MSVC_FALSE@am__append_1 = -L$(top_builddir)/fakelib
 check_PROGRAMS = t_clock_getres$(EXEEXT) t_clock_gettime$(EXEEXT) \
        t_clock_nanosleep$(EXEEXT) t_clock_settime$(EXEEXT) \
        t_nanosleep$(EXEEXT)
@@ -523,7 +524,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
-AM_LDFLAGS = -L$(top_builddir)/fakelib -L$(top_builddir) -lwinpthread -static
+AM_LDFLAGS = $(am__append_1) -L$(top_builddir) -lwinpthread -static
 TESTS = $(check_PROGRAMS)
 all: all-am
 
-- 
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