Ping^3.

Cc Jonathan Yong, I don't want to be rude, but it looks like few people here 
are interested in mingw-related patches :(

The patch has generally working well in both MSYS2 and Conda-forge for several 
months, except:

>>> +#if !defined(STANDARD_STARTFILE_PREFIX_2) && 
>>> !defined(CROSS_DIRECTORY_STRUCTURE)
>>> +#define STANDARD_STARTFILE_PREFIX_2 "" /* MSYS2 doesn't use /usr/lib for 
>>> MINGW */

This part causes a regression in conda-forge, as they use /usr/lib instead of 
/lib,
see also https://github.com/conda-forge/ctng-compilers-feedstock/issues/229.

It's OK to revert this part, and keep this as a MSYS2-specific patch. Or keep 
this part, and let conda-forge to patch it.
I'm not sure which one is better and/or more acceptable.

On 2026/08/25 12:31, Zhongteng Gui wrote:
> Ping^2.
> 
> On 2026/08/17 22:18, Zhongteng Gui wrote:
>> Gentle ping. This has been merged into MSYS2 at
>> https://github.com/msys2/MINGW-packages/commit/fc4afbaccc4fc855b2c96a881cc1a5bc81ab41d2,
>> and no regression till now.
>>
>> On 2026/08/05 16:18, Zhongteng Gui wrote:
>>> On 2026/08/03 09:46, Zhongteng Gui wrote:
>>> Updated the patch a little.
>>>
>>> Changes since v1: additional -L and -isystem appended to FLAGS_FOR_TARGET
>>> for mingw-w64 targets are all redundant.
>>>
>>> Tested on MSYS2 and Conda-forge that this won't break building. Also
>>> avoids accidentally links to host libraries instead of newly built ones,
>>> because ${prefix}/mingw/lib is usually sed'ed to ${prefix}/lib by many
>>> distributions. See
>>> https://github.com/msys2/MINGW-packages/pull/29280#issuecomment-5180468708
>>>
>>> ---
>>>
>>> From 85dc1d24e8039aa343eac2978e36b11feecc6607 Mon Sep 17 00:00:00 2001
>>> From: Zhongteng Gui <[email protected]>
>>> Date: Thu, 30 Jul 2026 18:46:38 +0800
>>> Subject: [PATCH v2] mingw: Remove outdated /mingw stuff
>>>
>>> /mingw is only used by MSYS 1, which has been obsolete for a long time.
>>> The current users of target *-w64-mingw32 either uses their own prefix
>>> (MSYS2 and its derivatives, w64devkit, etc.), or use the default prefix
>>> /usr (Cross-compiling on linux, e.g. Conda-forge).
>>>
>>> Native mingw users usually use --sysroot=<prefix>, so don't hardcode
>>> NATIVE_SYSTEM_HEADER_DIR to /mingw/include, but use the default
>>> /usr/include (and can be overridden by --with-native-system-header-dir).
>>> Similar logic for STANDARD_STARTFILE_PREFIX_{1,2}, but since
>>> STANDARD_STARTFILE_PREFIX_2 can not be overridden from configure, we set
>>> it to empty for native builds because /usr/lib is not used for native
>>> builds. Cross-compiling users can still use the default /usr/lib.
>>>
>>> local_include_dir is previously set to <prefix>/include in
>>> config/i386/x-mingw32, which forbids distributions to set their own
>>> local include dir, so we use the value from --with-local-prefix instead.
>>>
>>> Commit 5d571eaa95b9b3413287f46a183912b2445d7667 added -L and -isystem
>>> for x86_64-*mingw* and *-w64-mingw* to FLAGS_FOR_TARGET in configure.ac,
>>> this is no longer needed since /mingw symlink is not used anymore, and
>>> ${prefix}/${target}/{lib,include} is always searched for all targets.
>>>
>>> ChangeLog:
>>>
>>>     * configure.ac (FLAGS_FOR_TARGET): Do not add -L or -isystem for
>>>     x86_64-*mingw* and *-w64-mingw*.
>>>
>>> gcc/ChangeLog:
>>>
>>>     * config.gcc (-mingw*): Don't hardcode native_system_header_dir
>>>     to /mingw/include.
>>>     * config/mingw/mingw32.h: Don't hardcode /mingw stuff.
>>>     (STANDARD_STARTFILE_PREFIX_1): Use the default /lib.
>>>     (STANDARD_STARTFILE_PREFIX_2): Set to empty for native builds,
>>>     use the default /usr/lib for cross-compiling.
>>>     (NATIVE_SYSTEM_HEADER_DIR): Don't hardcode /mingw/include, use
>>>     value from --with-native-system-header-dir.
>>>     * config/i386/x-mingw32: Don't force changing local_include_dir,
>>>     honor values from --with-local-prefix.
>>>
>>> Signed-off-by: Zhongteng Gui <[email protected]>
>>> ---
>>>  configure.ac               |  4 +---
>>>  gcc/config.gcc             |  2 --
>>>  gcc/config/i386/x-mingw32  |  4 ----
>>>  gcc/config/mingw/mingw32.h | 12 ++----------
>>>  4 files changed, 3 insertions(+), 19 deletions(-)
>>>
>>> diff --git a/configure.ac b/configure.ac
>>> index c5de225b0ac..c81755ebbb6 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -3948,9 +3948,7 @@ esac
>>>  
>>>  case "$target" in
>>>    x86_64-*mingw* | *-w64-mingw*)
>>> -  # MinGW-w64 does not use newlib, nor does it use winsup. It may,
>>> -  # however, use a symlink named 'mingw' in ${prefix} .
>>> -    FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L${prefix}/${target}/lib 
>>> -L${prefix}/mingw/lib -isystem ${prefix}/${target}/include -isystem 
>>> ${prefix}/mingw/include'
>>> +  # MinGW-w64 does not use newlib, nor does it use winsup. No special 
>>> flags needed.
>>>      ;;
>>>    *-mingw*)
>>>    # MinGW can't be handled as Cygwin above since it does not use newlib.
>>> diff --git a/gcc/config.gcc b/gcc/config.gcc
>>> index 8fe99616f82..55339363c6c 100644
>>> --- a/gcc/config.gcc
>>> +++ b/gcc/config.gcc
>>> @@ -1331,7 +1331,6 @@ aarch64-*-mingw*)
>>>     tm_file="${tm_file} mingw/winnt-dll.h"
>>>     tmake_file="${tmake_file} aarch64/t-aarch64"
>>>     tmake_file="${tmake_file} aarch64/t-aarch64-mingw"
>>> -        native_system_header_dir=/mingw/include
>>>     target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
>>>     target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
>>>     extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt"
>>> @@ -2339,7 +2338,6 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
>>>                     tmake_file="${tmake_file} i386/t-mingw-w32"
>>>                     ;;
>>>     esac
>>> -        native_system_header_dir=/mingw/include
>>>     target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
>>>     target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
>>>     extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt"
>>> diff --git a/gcc/config/i386/x-mingw32 b/gcc/config/i386/x-mingw32
>>> index 3ac2ba57631..5a0d8b8ec4a 100644
>>> --- a/gcc/config/i386/x-mingw32
>>> +++ b/gcc/config/i386/x-mingw32
>>> @@ -16,10 +16,6 @@
>>>  # along with GCC; see the file COPYING3.  If not see
>>>  # <http://www.gnu.org/licenses/>.
>>>  #
>>> -#
>>> -# Make local_includedir relative to EXEC_PREFIX 
>>> -#
>>> -local_includedir=$(libsubdir)/$(unlibsubdir)/..`echo $(exec_prefix) | sed 
>>> -e 's|^$(prefix)||' -e 's|/[^/]*|/..|g'`/include
>>>  
>>>  # Add Windows socket library.
>>>  LIBS += -lws2_32
>>> diff --git a/gcc/config/mingw/mingw32.h b/gcc/config/mingw/mingw32.h
>>> index 1d319b77bf8..3afbee65974 100644
>>> --- a/gcc/config/mingw/mingw32.h
>>> +++ b/gcc/config/mingw/mingw32.h
>>> @@ -231,17 +231,9 @@ along with GCC; see the file COPYING3.  If not see
>>>    crtend.o%s"
>>>  
>>>  /* Override startfile prefix defaults.  */
>>> -#ifndef STANDARD_STARTFILE_PREFIX_1
>>> -#define STANDARD_STARTFILE_PREFIX_1 "/mingw/lib/"
>>> +#if !defined(STANDARD_STARTFILE_PREFIX_2) && 
>>> !defined(CROSS_DIRECTORY_STRUCTURE)
>>> +#define STANDARD_STARTFILE_PREFIX_2 "" /* MSYS2 doesn't use /usr/lib for 
>>> MINGW */
>>>  #endif
>>> -#ifndef STANDARD_STARTFILE_PREFIX_2
>>> -#define STANDARD_STARTFILE_PREFIX_2 ""
>>> -#endif
>>> -
>>> -/* For native mingw-version we need to take care that 
>>> NATIVE_SYSTEM_HEADER_DIR
>>> -   macro contains POSIX-style path.  See bug 52947.  */
>>> -#undef NATIVE_SYSTEM_HEADER_DIR
>>> -#define NATIVE_SYSTEM_HEADER_DIR "/mingw/include"
>>>  
>>>  /* Output STRING, a string representing a filename, to FILE.
>>>     We canonicalize it to be in Unix format (backslashes are replaced
>>
> 

Reply via email to