Skip to content

Commit abc2a28

Browse files
Blackhexgithub-actions
authored andcommitted
Add check if libgcc is available and link winpthreads against it instead of fakelib
1 parent 70d63e7 commit abc2a28

4 files changed

Lines changed: 94 additions & 14 deletions

File tree

mingw-w64-libraries/winpthreads/Makefile.am

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ AM_CFLAGS += -nologo
1919
libwinpthread_la_CPPFLAGS += -D_CRT_NONSTDC_NO_WARNINGS
2020
else
2121
libwinpthread_la_CPPFLAGS += -D__USE_MINGW_ANSI_STDIO=0
22-
libwinpthread_la_LDFLAGS += -L$(builddir)/fakelib -Wc,-no-pthread
22+
if !HAVE_LIBGCC
23+
libwinpthread_la_LDFLAGS += -L$(builddir)/fakelib
24+
2325
EXTRA_libwinpthread_la_DEPENDENCIES = fakelib/libgcc.a fakelib/libgcc_eh.a fakelib/libgcc_s.a
2426

2527
# Break circular dep on bootstrap
@@ -28,6 +30,8 @@ fakelib_libgcc_a_SOURCES = src/libgcc/dll_dependency.S src/libgcc/dll_math.c
2830
fakelib_libgcc_s_a_SOURCES =
2931
fakelib_libgcc_eh_a_SOURCES =
3032
endif
33+
libwinpthread_la_LDFLAGS += -Wc,-no-pthread
34+
endif
3135

3236
lib_LIBRARIES =
3337

mingw-w64-libraries/winpthreads/Makefile.in

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,10 @@ host_triplet = @host@
9393
@MSVC_TRUE@am__append_1 = -nologo
9494
@MSVC_TRUE@am__append_2 = -D_CRT_NONSTDC_NO_WARNINGS
9595
@MSVC_FALSE@am__append_3 = -D__USE_MINGW_ANSI_STDIO=0
96-
@MSVC_FALSE@am__append_4 = -L$(builddir)/fakelib -Wc,-no-pthread
97-
@COPY_STATIC_TRUE@am__append_5 = libpthread.a
98-
@COPY_SHARED_TRUE@am__append_6 = libpthread.dll.a
96+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@am__append_4 = -L$(builddir)/fakelib
97+
@MSVC_FALSE@am__append_5 = -Wc,-no-pthread
98+
@COPY_STATIC_TRUE@am__append_6 = libpthread.a
99+
@COPY_SHARED_TRUE@am__append_7 = libpthread.dll.a
99100
subdir = .
100101
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
101102
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
@@ -153,9 +154,8 @@ fakelib_libgcc_a_LIBADD =
153154
am__fakelib_libgcc_a_SOURCES_DIST = src/libgcc/dll_dependency.S \
154155
src/libgcc/dll_math.c
155156
am__dirstamp = $(am__leading_dot)dirstamp
156-
@MSVC_FALSE@am_fakelib_libgcc_a_OBJECTS = \
157-
@MSVC_FALSE@ src/libgcc/dll_dependency.$(OBJEXT) \
158-
@MSVC_FALSE@ src/libgcc/dll_math.$(OBJEXT)
157+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@am_fakelib_libgcc_a_OBJECTS = src/libgcc/dll_dependency.$(OBJEXT) \
158+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@ src/libgcc/dll_math.$(OBJEXT)
159159
fakelib_libgcc_a_OBJECTS = $(am_fakelib_libgcc_a_OBJECTS)
160160
fakelib_libgcc_eh_a_AR = $(AR) $(ARFLAGS)
161161
fakelib_libgcc_eh_a_LIBADD =
@@ -485,20 +485,20 @@ include_HEADERS = include/pthread.h include/sched.h include/semaphore.h include/
485485
libwinpthread_la_CPPFLAGS = -I$(srcdir)/include -DIN_WINPTHREAD \
486486
-DWINPTHREAD_DBG=1 $(am__append_2) $(am__append_3)
487487
libwinpthread_la_LDFLAGS = -no-undefined -version-info 1:0:0 \
488-
$(am__append_4)
488+
$(am__append_4) $(am__append_5)
489489
libwinpthread_la_SOURCES = \
490490
src/barrier.h src/cond.h src/misc.h src/mutex.h src/rwlock.h src/spinlock.h src/thread.h src/ref.h src/sem.h src/wpth_ver.h \
491491
src/barrier.c src/cond.c src/misc.c src/mutex.c src/rwlock.c src/spinlock.c src/thread.c src/ref.c src/sem.c src/sched.c \
492492
src/winpthread_internal.h src/clock.c src/nanosleep.c src/version.rc
493493

494-
@MSVC_FALSE@EXTRA_libwinpthread_la_DEPENDENCIES = fakelib/libgcc.a fakelib/libgcc_eh.a fakelib/libgcc_s.a
494+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@EXTRA_libwinpthread_la_DEPENDENCIES = fakelib/libgcc.a fakelib/libgcc_eh.a fakelib/libgcc_s.a
495495

496496
# Break circular dep on bootstrap
497-
@MSVC_FALSE@noinst_LIBRARIES = fakelib/libgcc.a fakelib/libgcc_eh.a fakelib/libgcc_s.a
498-
@MSVC_FALSE@fakelib_libgcc_a_SOURCES = src/libgcc/dll_dependency.S src/libgcc/dll_math.c
499-
@MSVC_FALSE@fakelib_libgcc_s_a_SOURCES =
500-
@MSVC_FALSE@fakelib_libgcc_eh_a_SOURCES =
501-
lib_LIBRARIES = $(am__append_5) $(am__append_6)
497+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@noinst_LIBRARIES = fakelib/libgcc.a fakelib/libgcc_eh.a fakelib/libgcc_s.a
498+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@fakelib_libgcc_a_SOURCES = src/libgcc/dll_dependency.S src/libgcc/dll_math.c
499+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@fakelib_libgcc_s_a_SOURCES =
500+
@HAVE_LIBGCC_FALSE@@MSVC_FALSE@fakelib_libgcc_eh_a_SOURCES =
501+
lib_LIBRARIES = $(am__append_6) $(am__append_7)
502502
@COPY_STATIC_TRUE@libpthread_a_SOURCES =
503503
@COPY_STATIC_TRUE@libpthread_a_DEPENDENCIES = libwinpthread.la
504504
#FIXME: Use cp kludge until a better method presents itself

mingw-w64-libraries/winpthreads/configure

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,8 @@ ac_subst_vars='am__EXEEXT_FALSE
657657
am__EXEEXT_TRUE
658658
LTLIBOBJS
659659
LIBOBJS
660+
HAVE_LIBGCC_FALSE
661+
HAVE_LIBGCC_TRUE
660662
COPY_STATIC_FALSE
661663
COPY_STATIC_TRUE
662664
COPY_SHARED_FALSE
@@ -13843,6 +13845,65 @@ fi
1384313845
# FIXME: Replace `main' with a function in `-lpthread':
1384413846
#AC_CHECK_LIB([pthread], [main])
1384513847

13848+
# Check if libgcc is available
13849+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lgcc" >&5
13850+
printf %s "checking for main in -lgcc... " >&6; }
13851+
if test ${ac_cv_lib_gcc_main+y}
13852+
then :
13853+
printf %s "(cached) " >&6
13854+
else $as_nop
13855+
ac_check_lib_save_LIBS=$LIBS
13856+
LIBS="-lgcc $LIBS"
13857+
if test x$ac_no_link = xyes; then
13858+
as_fn_error $? "link tests are not allowed after AC_NO_EXECUTABLES" "$LINENO" 5
13859+
fi
13860+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13861+
/* end confdefs.h. */
13862+
13863+
13864+
int
13865+
main (void)
13866+
{
13867+
return main ();
13868+
;
13869+
return 0;
13870+
}
13871+
_ACEOF
13872+
if ac_fn_c_try_link "$LINENO"
13873+
then :
13874+
ac_cv_lib_gcc_main=yes
13875+
else $as_nop
13876+
ac_cv_lib_gcc_main=no
13877+
fi
13878+
rm -f core conftest.err conftest.$ac_objext conftest.beam \
13879+
conftest$ac_exeext conftest.$ac_ext
13880+
LIBS=$ac_check_lib_save_LIBS
13881+
fi
13882+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gcc_main" >&5
13883+
printf "%s\n" "$ac_cv_lib_gcc_main" >&6; }
13884+
if test "x$ac_cv_lib_gcc_main" = xyes
13885+
then :
13886+
if true ; then
13887+
HAVE_LIBGCC_TRUE=
13888+
HAVE_LIBGCC_FALSE='#'
13889+
else
13890+
HAVE_LIBGCC_TRUE='#'
13891+
HAVE_LIBGCC_FALSE=
13892+
fi
13893+
13894+
else $as_nop
13895+
if false ; then
13896+
HAVE_LIBGCC_TRUE=
13897+
HAVE_LIBGCC_FALSE='#'
13898+
else
13899+
HAVE_LIBGCC_TRUE='#'
13900+
HAVE_LIBGCC_FALSE=
13901+
fi
13902+
13903+
13904+
fi
13905+
13906+
1384613907
# Checks for header files.
1384713908
ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
1384813909
if test "x$ac_cv_header_limits_h" = xyes
@@ -14077,6 +14138,14 @@ if test -z "${COPY_STATIC_TRUE}" && test -z "${COPY_STATIC_FALSE}"; then
1407714138
as_fn_error $? "conditional \"COPY_STATIC\" was never defined.
1407814139
Usually this means the macro was only invoked conditionally." "$LINENO" 5
1407914140
fi
14141+
if test -z "${HAVE_LIBGCC_TRUE}" && test -z "${HAVE_LIBGCC_FALSE}"; then
14142+
as_fn_error $? "conditional \"HAVE_LIBGCC\" was never defined.
14143+
Usually this means the macro was only invoked conditionally." "$LINENO" 5
14144+
fi
14145+
if test -z "${HAVE_LIBGCC_TRUE}" && test -z "${HAVE_LIBGCC_FALSE}"; then
14146+
as_fn_error $? "conditional \"HAVE_LIBGCC\" was never defined.
14147+
Usually this means the macro was only invoked conditionally." "$LINENO" 5
14148+
fi
1408014149

1408114150
: "${CONFIG_STATUS=./config.status}"
1408214151
ac_write_fail=0

mingw-w64-libraries/winpthreads/configure.ac

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ AM_CONDITIONAL( [COPY_STATIC], [AS_VAR_TEST_SET([copy_static])] )
4545
# FIXME: Replace `main' with a function in `-lpthread':
4646
#AC_CHECK_LIB([pthread], [main])
4747

48+
# Check if libgcc is available
49+
AC_CHECK_LIB(
50+
[gcc], [main],
51+
[AM_CONDITIONAL( [HAVE_LIBGCC], [true] )],
52+
[AM_CONDITIONAL( [HAVE_LIBGCC], [false] )]
53+
)
54+
4855
# Checks for header files.
4956
AC_CHECK_HEADERS([limits.h sys/timeb.h])
5057

0 commit comments

Comments
 (0)