From e1610ee7b61bb7c99b0e1d24cb98b4fba4957ce3 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Thu, 3 May 2018 22:28:10 -0700 Subject: [PATCH] Preserve each variant of libwinpthread.dll ... in the corresponding /lib directory. Mingw-w64 installs it to /bin, so multiple variants in a multilib configuration override each other. Signed-off-by: Alexey Neyman --- scripts/build/libc/mingw-w64.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scripts/build/libc/mingw-w64.sh b/scripts/build/libc/mingw-w64.sh index 21afb29d..3026b879 100644 --- a/scripts/build/libc/mingw-w64.sh +++ b/scripts/build/libc/mingw-w64.sh @@ -161,11 +161,29 @@ do_mingw_pthreads() CT_DoLog EXTRA "Installing mingw-w64-winpthreads" CT_DoExecLog ALL make install DESTDIR=${CT_SYSROOT_DIR} + # Post-install hackery: all libwinpthread-1.dll end up being installed + # into /bin, which is broken on multilib install. Hence, stash it back + # into /lib - and after iterating over multilibs, copy the default one + # back into /bin. + if [ "${multi_index}" != 1 -o "${multi_count}" != 1 ]; then + CT_DoExecLog ALL mv "${CT_SYSROOT_DIR}${MINGW_INSTALL_PREFIX}/bin/libwinpthread-1.dll" \ + "${CT_SYSROOT_DIR}${libprefix}/libwinpthread-1.dll" + if [ "${multi_index}" = 1 ]; then + default_libprefix="${libprefix}" + elif [ "${multi_index}" = "${multi_count}" ]; then + CT_DoExecLog ALL cp "${CT_SYSROOT_DIR}${default_libprefix}/libwinpthread-1.dll" \ + "${CT_SYSROOT_DIR}${MINGW_INSTALL_PREFIX}/bin/libwinpthread-1.dll" + fi + fi + CT_EndStep } do_libc() { + # Used when iterating over libwinpthread + local default_libprefix + do_check_mingw_vendor_tuple CT_DoStep INFO "Building mingw-w64"