Re: [PATCH 08/12] mingw: rely on MSYS2's metadata instead of hard-coding it
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 5, 2026, 17:29 UTC
- Message-ID
- <xmqq7bm4qxv6.fsf@gitster.g>
- In-Reply-To
- <1593d1d1a0dceb58640cfa56b49bf30d8a2c6365.1785939999.git.gitgitgadget@gmail.com>
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 8 quoted lines
> - ifeq (CLANGARM64,$(MSYSTEM)) > - prefix = /clangarm64 > - else > - prefix = /mingw64 > - endif > + ifneq (,$(MSYSTEM)) > + prefix = $(MINGW_PREFIX) > endif
Mental note: if $(MSYSTEM) is not an empty string, we set prefix to $(MINGW_PREFIX).
Show 8 quoted lines
> @@ -755,6 +749,10 @@ ifeq ($(uname_S),MINGW) > BASIC_LDFLAGS += -Wl,--dynamicbase > endif > ifneq (,$(MSYSTEM)) > + ifeq ($(MINGW_PREFIX),$(filter-out /%,$(MINGW_PREFIX))) > + # Override if empty or does not start with a slash > + MINGW_PREFIX := /$(shell echo '$(MSYSTEM)' | tr A-Z a-z) > + endif
Mental note: MINGW_PREFIX that does not begin with a slash is forced to begin with a slash.
> prefix = $(MINGW_PREFIX)
And that becomes $(prefix).
Show 27 quoted lines
> diff --git a/meson.build b/meson.build
> index 7073d5844d..6ddc461873 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1318,7 +1318,6 @@ elif host_machine.system() == 'windows'
>
> libgit_c_args += [
> '-DDETECT_MSYS_TTY',
> - '-DENSURE_MSYSTEM_IS_SET',
> '-DNATIVE_CRLF',
> '-DNOGDI',
> '-DNO_POSIX_GOODIES',
> @@ -1328,6 +1327,18 @@ elif host_machine.system() == 'windows'
> '-D__USE_MINGW_ANSI_STDIO=0',
> ]
>
> + msystem = get_option('msystem')
> + if msystem != ''
> + mingw_prefix = get_option('mingw_prefix')
> + if mingw_prefix == ''
> + mingw_prefix = '/' + msystem.to_lower()
> + endif
> + libgit_c_args += [
> + '-DENSURE_MSYSTEM_IS_SET="' + msystem + '"',
> + '-DMINGW_PREFIX="' + mingw_prefix + '"'
> + ]
> + endifLowercase mingw_prefix in Meson world corresponds to MINGW_PREFIX in Make world, I guess. -DMINGW_PRFIX gets mingw_prefix which begins with a slash.
I do not do Windows or Meson, but doesn't this contradict with what we have in [12/12], part of which says:
diff --git a/config.mak.uname b/config.mak.uname index 2f7d445eb3..0b63be10b7 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -535,7 +535,9 @@ endif compat/win32/pthread.o compat/win32/syslog.o \ compat/win32/trace2_win32_process_info.o \ compat/win32/dirent.o - COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DDETECT_MSYS_TTY -DNOGDI -DHAVE_STRING_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\" + COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DDETECT_MSYS_TTY \ + -DENSURE_MSYSTEM_IS_SET="\"$(MSYSTEM)\"" -DMINGW_PREFIX="\"$(patsubst /%,%,$(MINGW_PREFIX))\"" \ + -DNOGDI -DHAVE_STRING_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\" BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -ENTRY:wmainCRTStartup -SUBSYSTEM:CONSOLE # invalidcontinue.obj allows Git's source code to close the same file # handle twice, or to access the osfhandle of an already-closed stdout IOW, -DMINGW_PREFIX passed to the compiler strips leading slash from $(MINGW_PREFIX). Isn't it necessary to strip the leading slash from ming_prefix also on the Meson side?