Re: [PATCH 08/12] mingw: rely on MSYS2's metadata instead of hard-coding it
Junio C Hamano <[email protected]> Wed, 05 Aug 2026 10:29:49 -0700
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
"Johannes Schindelin via GitGitGadget" <[email protected]> writes: > - 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). > @@ -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). > 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 + '"' > + ] > + endif Lowercase 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?