Skip to contentSkip to conversation

Windows: Do not redefine _WIN32_WINNT

PATCH In review Sebastian Schuberth 2 participants 5 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Windows: Do not redefine _WIN32_WINNT

With MinGW runtime version 4.0 this interferes with the previous definition from sdkddkver.h.

---
 compat/nedmalloc/malloc.c.h | 2 ++
 git-compat-util.h           | 2 ++
 2 files changed, 4 insertions(+)
compat/nedmalloc/malloc.c.h +2 -0
index 1401a67..930d03b 100644
@@ -495,7 +495,9 @@ MAX_RELEASE_CHECK_RATE   default: 4095 unless not HAVE_MMAP
 #endif  /* WIN32 */
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#ifndef _WIN32_WINNT
 #define _WIN32_WINNT 0x403
+#endif
 #include <windows.h>
 #define HAVE_MMAP 1
 #define HAVE_MORECORE 0
git-compat-util.h +2 -0
index 664305c..f5c756d 100644
@@ -93,7 +93,9 @@
 #undef __NO_INLINE__
 
 #ifdef WIN32 /* Both MinGW and MSVC */
+#ifndef _WIN32_WINNT
 #define _WIN32_WINNT 0x0502
+#endif
 #define WIN32_LEAN_AND_MEAN  /* stops windows.h including winsock.h */
 #include <winsock2.h>
 #include <windows.h>
Signature · 1 line
1.8.3.mingw.1.2.g56240b5.dirty
#1 lore raw
Quoted 5 lines · Sebastian Schuberth
git-compat-util.h +0 -0
index 664305c..f5c756d 100644

git-compat-util.h line 101

Quoted 9 lines
git-compat-util.h +2 -0
@@ -93,7 +93,9 @@
 #undef __NO_INLINE__
 
 #ifdef WIN32 /* Both MinGW and MSVC */
+#ifndef _WIN32_WINNT
 #define _WIN32_WINNT 0x0502
+#endif
 #define WIN32_LEAN_AND_MEAN  /* stops windows.h including winsock.h */
 #include <winsock2.h>
 #include <windows.h>

This unfortunately does not seem to match what I have. I think the patch is based on the codebase before these two:

380395d0 (mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE, 2013-05-02) 41f29991 (msvc: Fix compilation errors caused by poll.h emulation, 2013-01-31)

I could of course wiggle it in, if you want, but I wanted to know what is going on. Is it a pre-release freeze period on your side or something?

#2 lore raw
Quoted 9 lines · Junio C Hamano

This unfortunately does not seem to match what I have. I think the patch is based on the codebase before these two:

380395d0 (mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE, 2013-05-02) 41f29991 (msvc: Fix compilation errors caused by poll.h emulation, 2013-01-31)

I could of course wiggle it in, if you want, but I wanted to know what is going on. Is it a pre-release freeze period on your side or something?

That's right, I currently have a code freeze at Git 1.8.3 because I need to solve several other issues with Git 1.8.4 on Windows first. I'd be grateful if you could "wiggle it in".

Signature · 1 line
Sebastian Schuberth
#3 lore raw
Quoted 8 lines · Sebastian Schuberth
Quoted 6 lines · Junio C Hamano

This unfortunately does not seem to match what I have. I think the patch is based on the codebase before these two:

380395d0 (mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE, 2013-05-02) 41f29991 (msvc: Fix compilation errors caused by poll.h emulation, 2013-01-31)

Quoted 7 lines
Quoted 3 lines

I could of course wiggle it in, if you want, but I wanted to know what is going on. Is it a pre-release freeze period on your side or something?

That's right, I currently have a code freeze at Git 1.8.3 because I need to solve several other issues with Git 1.8.4 on Windows first. I'd be grateful if you could "wiggle it in".

It seems that compat/poll/poll.c also defines _WIN32_WINNT (but only with _MSC_VER defined). The change to git-compat-util.h in this patch avoids redefinition for both MinGW and MSVC case. Do you also need to have this, too?

Here is what I tentatively queued on top of the three from Karsten, and your "Fix stat definitions".

-- >8 --
From: Sebastian Schuberth <[email protected]>
Date: Wed, 11 Sep 2013 18:06:31 +0200
Subject: [PATCH] Windows: do not redefine _WIN32_WINNT

With MinGW runtime version 4.0 this interferes with the previous definition from sdkddkver.h.

---
 compat/nedmalloc/malloc.c.h | 2 ++
 compat/poll/poll.c          | 2 +-
 git-compat-util.h           | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)
compat/nedmalloc/malloc.c.h +2 -0
index ed4f1fa..f216a2a 100644
@@ -499,7 +499,9 @@ MAX_RELEASE_CHECK_RATE   default: 4095 unless not HAVE_MMAP
 #endif  /* WIN32 */
 #ifdef WIN32
 #define WIN32_LEAN_AND_MEAN
+#ifndef _WIN32_WINNT
 #define _WIN32_WINNT 0x403
+#endif
 #include <windows.h>
 #define HAVE_MMAP 1
 #define HAVE_MORECORE 0
compat/poll/poll.c +1 -1
index 4410310..31163f2 100644
@@ -39,7 +39,7 @@
 
 #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
 # define WIN32_NATIVE
-# if defined (_MSC_VER)
+# if defined (_MSC_VER) && !defined(_WIN32_WINNT)
 #  define _WIN32_WINNT 0x0502
 # endif
 # include <winsock2.h>
git-compat-util.h +1 -1
index 9549de6..7776f12 100644
@@ -86,7 +86,7 @@
 #define _SGI_SOURCE 1
 
 #if defined(WIN32) && !defined(__CYGWIN__) /* Both MinGW and MSVC */
-# if defined (_MSC_VER)
+# if defined (_MSC_VER) && !defined(_WIN32_WINNT)
 #  define _WIN32_WINNT 0x0502
 # endif
 #define WIN32_LEAN_AND_MEAN  /* stops windows.h including winsock.h */
Signature · 1 line
1.8.4-469-g57f7e3a
#4 lore raw
Quoted 4 lines · Junio C Hamano

It seems that compat/poll/poll.c also defines _WIN32_WINNT (but only with _MSC_VER defined). The change to git-compat-util.h in this patch avoids redefinition for both MinGW and MSVC case. Do you also need to have this, too?

In my patch I did not change poll.c because I did only check this issue with MinGW, not MSVC, so I never ran into the _MSC_VER code path. Back in 1.8.3 git-compat-util.h did define _WIN32_WINNT for both MinGW and MSVC, which is why in my patch I had to add the #ifndef / #endif. But I believe it's good to have these guards for both MinGW and MSVC, actually.

Quoted 2 lines

Here is what I tentatively queued on top of the three from Karsten, and your "Fix stat definitions".

Looks good to me, thanks!

Signature · 1 line
Sebastian Schuberth