diff --git a/config/libc.in b/config/libc.in index 4cc75300..e018634c 100644 --- a/config/libc.in +++ b/config/libc.in @@ -35,6 +35,10 @@ config LIBC_SUPPORT_THREADS_LT config LIBC_SUPPORT_THREADS_NONE bool +config LIBC_SUPPORT_THREADS_POSIX + bool + select LIBC_SUPPORT_THREADS_ANY + config LIBC_PROVIDES_CXA_ATEXIT bool @@ -52,6 +56,7 @@ choice prompt "Threading implementation to use:" default THREADS_NATIVE if LIBC_SUPPORT_THREADS_NATIVE default THREADS_THREADS_LT if LIBC_SUPPORT_THREADS_LT && ! LIBC_SUPPORT_THREADS_NATIVE + default THREADS_THREADS_POSIX if LIBC_SUPPORT_THREADS_POSIX && ! LIBC_SUPPORT_THREADS_NATIVE && ! LIBC_SUPPORT_THREADS_LT default THREADS_NONE if ! LIBC_SUPPORT_THREADS_ANY config THREADS_NATIVE @@ -70,6 +75,11 @@ config THREADS_LT prompt "linuxthreads" depends on LIBC_SUPPORT_THREADS_LT +config THREADS_POSIX + bool + prompt "posix" + depends on LIBC_SUPPORT_THREADS_POSIX + config THREADS_NONE bool prompt "none" diff --git a/config/libc/mingw.in b/config/libc/mingw.in index 88088e9b..45b69715 100644 --- a/config/libc/mingw.in +++ b/config/libc/mingw.in @@ -3,12 +3,14 @@ ## depends on WINDOWS ## ## select LIBC_SUPPORT_THREADS_NATIVE +## select LIBC_SUPPORT_THREADS_POSIX ## select CC_CORE_PASS_2_NEEDED ## ## help The de-facto standard for Mingw distributions. config THREADS - default "win32" + default "win32" if THREADS_NATIVE + default "posix" if THREADS_POSIX choice bool diff --git a/scripts/build/libc/mingw.sh b/scripts/build/libc/mingw.sh index 964a11d9..a22c2baa 100644 --- a/scripts/build/libc/mingw.sh +++ b/scripts/build/libc/mingw.sh @@ -114,8 +114,35 @@ do_libc() { CT_DoExecLog ALL ${make} install DESTDIR=${CT_SYSROOT_DIR} CT_EndStep + + if [ "${CT_THREADS}" = "posix" ]; then + do_pthreads + fi } do_libc_post_cc() { : } + +do_pthreads() { + CT_DoStep INFO "Building mingw-w64-winpthreads files" + + CT_DoLog EXTRA "Configuring mingw-w64-winpthreads" + + CT_mkdir_pushd "${CT_BUILD_DIR}/build-mingw-w64-winpthreads" + + CT_DoExecLog CFG \ + "${CT_SRC_DIR}/mingw-w64-${CT_WINAPI_VERSION_DOWNLOADED}/mingw-w64-libraries/winpthreads/configure" \ + --with-sysroot=${CT_SYSROOT_DIR} \ + --prefix=${MINGW_INSTALL_PREFIX} \ + --build=${CT_BUILD} \ + --host=${CT_TARGET} \ + + CT_DoLog EXTRA "Building mingw-w64-winpthreads" + CT_DoExecLog ALL ${make} ${JOBSFLAGS} + + CT_DoLog EXTRA "Installing mingw-w64-winpthreads" + CT_DoExecLog ALL ${make} install DESTDIR=${CT_SYSROOT_DIR} + + CT_EndStep +}