зеркало из https://github.com/microsoft/git.git
Makefile: -lpthread may still be necessary when libc has only pthread stubs
Without this patch, systems that provide stubs for pthread functions in libc, but which still require libpthread for full the pthread implementation are not detected correctly. Also, some systems require -pthread in CFLAGS for each compilation unit for a successful link of an mt binary, which is also addressed by this patch. Signed-off-by: Gary V. Vaughan <gary@thewrittenword.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
66dbfd55e3
Коммит
48793cf46a
4
Makefile
4
Makefile
|
@ -294,6 +294,7 @@ RPMBUILD = rpmbuild
|
||||||
TCL_PATH = tclsh
|
TCL_PATH = tclsh
|
||||||
TCLTK_PATH = wish
|
TCLTK_PATH = wish
|
||||||
PTHREAD_LIBS = -lpthread
|
PTHREAD_LIBS = -lpthread
|
||||||
|
PTHREAD_CFLAGS =
|
||||||
|
|
||||||
export TCL_PATH TCLTK_PATH
|
export TCL_PATH TCLTK_PATH
|
||||||
|
|
||||||
|
@ -898,6 +899,8 @@ ifeq ($(uname_S),AIX)
|
||||||
BASIC_CFLAGS += -D_LARGE_FILES
|
BASIC_CFLAGS += -D_LARGE_FILES
|
||||||
ifeq ($(shell expr "$(uname_V)" : '[1234]'),1)
|
ifeq ($(shell expr "$(uname_V)" : '[1234]'),1)
|
||||||
NO_PTHREADS = YesPlease
|
NO_PTHREADS = YesPlease
|
||||||
|
else
|
||||||
|
PTHREAD_LIBS = -lpthread
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(uname_S),GNU)
|
ifeq ($(uname_S),GNU)
|
||||||
|
@ -1349,6 +1352,7 @@ endif
|
||||||
ifdef NO_PTHREADS
|
ifdef NO_PTHREADS
|
||||||
BASIC_CFLAGS += -DNO_PTHREADS
|
BASIC_CFLAGS += -DNO_PTHREADS
|
||||||
else
|
else
|
||||||
|
BASIC_CFLAGS += $(PTHREAD_CFLAGS)
|
||||||
EXTLIBS += $(PTHREAD_LIBS)
|
EXTLIBS += $(PTHREAD_LIBS)
|
||||||
LIB_OBJS += thread-utils.o
|
LIB_OBJS += thread-utils.o
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -57,4 +57,5 @@ NO_DEFLATE_BOUND=@NO_DEFLATE_BOUND@
|
||||||
FREAD_READS_DIRECTORIES=@FREAD_READS_DIRECTORIES@
|
FREAD_READS_DIRECTORIES=@FREAD_READS_DIRECTORIES@
|
||||||
SNPRINTF_RETURNS_BOGUS=@SNPRINTF_RETURNS_BOGUS@
|
SNPRINTF_RETURNS_BOGUS=@SNPRINTF_RETURNS_BOGUS@
|
||||||
NO_PTHREADS=@NO_PTHREADS@
|
NO_PTHREADS=@NO_PTHREADS@
|
||||||
|
PTHREAD_CFLAGS=@PTHREAD_CFLAGS@
|
||||||
PTHREAD_LIBS=@PTHREAD_LIBS@
|
PTHREAD_LIBS=@PTHREAD_LIBS@
|
||||||
|
|
17
configure.ac
17
configure.ac
|
@ -802,7 +802,11 @@ AC_DEFUN([PTHREADTEST_SRC], [
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
pthread_mutex_t test_mutex;
|
pthread_mutex_t test_mutex;
|
||||||
return (0);
|
int retcode = 0;
|
||||||
|
retcode |= pthread_mutex_init(&test_mutex,(void *)0);
|
||||||
|
retcode |= pthread_mutex_lock(&test_mutex);
|
||||||
|
retcode |= pthread_mutex_unlock(&test_mutex);
|
||||||
|
return retcode;
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -819,7 +823,8 @@ if test -n "$USER_NOPTHREAD"; then
|
||||||
# handle these separately since PTHREAD_CFLAGS could be '-lpthreads
|
# handle these separately since PTHREAD_CFLAGS could be '-lpthreads
|
||||||
# -D_REENTRANT' or some such.
|
# -D_REENTRANT' or some such.
|
||||||
elif test -z "$PTHREAD_CFLAGS"; then
|
elif test -z "$PTHREAD_CFLAGS"; then
|
||||||
for opt in -pthread -lpthread; do
|
threads_found=no
|
||||||
|
for opt in -mt -pthread -lpthread; do
|
||||||
old_CFLAGS="$CFLAGS"
|
old_CFLAGS="$CFLAGS"
|
||||||
CFLAGS="$opt $CFLAGS"
|
CFLAGS="$opt $CFLAGS"
|
||||||
AC_MSG_CHECKING([Checking for POSIX Threads with '$opt'])
|
AC_MSG_CHECKING([Checking for POSIX Threads with '$opt'])
|
||||||
|
@ -827,11 +832,18 @@ elif test -z "$PTHREAD_CFLAGS"; then
|
||||||
[AC_MSG_RESULT([yes])
|
[AC_MSG_RESULT([yes])
|
||||||
NO_PTHREADS=
|
NO_PTHREADS=
|
||||||
PTHREAD_LIBS="$opt"
|
PTHREAD_LIBS="$opt"
|
||||||
|
PTHREAD_CFLAGS="$opt"
|
||||||
|
threads_found=yes
|
||||||
break
|
break
|
||||||
],
|
],
|
||||||
[AC_MSG_RESULT([no])])
|
[AC_MSG_RESULT([no])])
|
||||||
CFLAGS="$old_CFLAGS"
|
CFLAGS="$old_CFLAGS"
|
||||||
done
|
done
|
||||||
|
if test $threads_found != yes; then
|
||||||
|
AC_CHECK_LIB([pthread], [pthread_create],
|
||||||
|
[PTHREAD_LIBS="-lpthread"],
|
||||||
|
[NO_PTHREADS=UnfortunatelyYes])
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
old_CFLAGS="$CFLAGS"
|
old_CFLAGS="$CFLAGS"
|
||||||
CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
|
CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
|
||||||
|
@ -848,6 +860,7 @@ fi
|
||||||
|
|
||||||
CFLAGS="$old_CFLAGS"
|
CFLAGS="$old_CFLAGS"
|
||||||
|
|
||||||
|
AC_SUBST(PTHREAD_CFLAGS)
|
||||||
AC_SUBST(PTHREAD_LIBS)
|
AC_SUBST(PTHREAD_LIBS)
|
||||||
AC_SUBST(NO_PTHREADS)
|
AC_SUBST(NO_PTHREADS)
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче