git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 06/12] MINGW: git-compat-util.h: use inttypes.h for printf macros

From
Marat Radchenko <marat@slonopotamus.org>
Date
Apr 29, 2014, 09:12 UTC
Message-ID
<1398762726-22825-7-git-send-email-marat@slonopotamus.org>
In-Reply-To
<1398762726-22825-1-git-send-email-marat@slonopotamus.org>
All MinGW flavors have inttypes.h, so just include it.

However, we need to pass -D__USE_MINGW_ANSI_STDIO=0 to select MSVCRT-compatible macro definitions on MinGW-W64: http://sourceforge.net/apps/trac/mingw-w64/wiki/gnu%20printf

As a side-effect, Git no longer builds with MSVC < 2010 due to its lack of stdint.h but hopefully that is not a problem.

Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
---
 compat/mingw.h    |  2 --
 compat/msvc.h     |  3 +++
 config.mak.uname  |  3 ++-
 git-compat-util.h | 11 ++++++-----
 4 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/compat/mingw.h b/compat/mingw.h
index 7e3d038..2fbc8ea 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -339,8 +339,6 @@ static inline char *mingw_find_last_dir_sep(const char *path)
 }
 #define find_last_dir_sep mingw_find_last_dir_sep
 #define PATH_SEP ';'
-#define PRIuMAX "I64u"
-#define PRId64 "I64d"
 
 void mingw_open_html(const char *path);
 #define open_html mingw_open_html
diff --git a/compat/msvc.h b/compat/msvc.h
index a63d878..84a03f9 100644
--- a/compat/msvc.h
+++ b/compat/msvc.h
@@ -17,6 +17,9 @@
 
 typedef int pid_t;
 
+#define PRIuMAX "I64u"
+#define PRId64 "I64d"
+
 static __inline int strcasecmp (const char *s1, const char *s2)
 {
 	int size1 = strlen(s1);
diff --git a/config.mak.uname b/config.mak.uname
index a626410..50c1114 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -316,6 +316,7 @@ ifeq ($(uname_S),Windows)
 	NO_PREAD = YesPlease
 	NEEDS_CRYPTO_WITH_SSL = YesPlease
 	NO_LIBGEN_H = YesPlease
+	NO_INTTYPES_H = UnfortunatelyYes
 	NO_POLL = YesPlease
 	NO_SYMLINK_HEAD = YesPlease
 	NO_IPV6 = YesPlease
@@ -497,7 +498,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))
 	NO_INET_NTOP = YesPlease
 	NO_POSIX_GOODIES = UnfortunatelyYes
 	DEFAULT_HELP_FORMAT = html
-	COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -D_USE_32BIT_TIME_T -DNOGDI -Icompat -Icompat/win32
+	COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -D__USE_MINGW_ACCESS -D_USE_32BIT_TIME_T -DNOGDI -Icompat -Icompat/win32
 	COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
 	COMPAT_OBJS += compat/mingw.o compat/winansi.o \
 		compat/win32/pthread.o compat/win32/syslog.o \
diff --git a/git-compat-util.h b/git-compat-util.h
index f6d3a46..65498a2 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -95,6 +95,12 @@
 #define GIT_WINDOWS_NATIVE
 #endif
 
+#ifndef NO_INTTYPES_H
+#include <inttypes.h>
+#else
+#include <stdint.h>
+#endif
+
 #include <unistd.h>
 #include <stdio.h>
 #include <sys/stat.h>
@@ -146,11 +152,6 @@
 #include <netdb.h>
 #include <pwd.h>
 #include <sys/un.h>
-#ifndef NO_INTTYPES_H
-#include <inttypes.h>
-#else
-#include <stdint.h>
-#endif
 #ifdef NO_INTPTR_T
 /*
  * On I16LP32, ILP32 and LP64 "long" is the save bet, however
-- 
1.9.1
Previous: Marat RadchenkoNext: Marat Radchenko
Message 7 of 29 in “MinGW(-W64) cross-compilation”
  1. MinGW(-W64) cross-compilationMarat Radchenko, Apr 29, 2014
  2. 01/12 MINGW: compat/mingw.h: do not attempt to redefine lseek on mingw-w64Marat Radchenko, Apr 29, 2014
  3. 02/12 MSVC: config.mak.uname: drop -D__USE_MINGW_ACCESS from CFLAGSMarat Radchenko, Apr 29, 2014
  4. 03/12 MINGW: compat/mingw.h: drop fork() definitionMarat Radchenko, Apr 29, 2014
  5. 04/12 MINGW: do not fail at redefining pid_t on MinGW-W64Marat Radchenko, Apr 29, 2014
  6. 05/12 MINGW: config.mak.uname: allow using cURL for non-msysGit buildsMarat Radchenko, Apr 29, 2014
  7. 06/12 MINGW: git-compat-util.h: use inttypes.h for printf macrosMarat Radchenko, Apr 29, 2014
  8. 07/12 MINGW: config.mak.uname: reorganize MINGW settingsMarat Radchenko, Apr 29, 2014
  9. 08/12 MINGW: fix main() signature in http-fetch.c and remote-curl.cMarat Radchenko, Apr 29, 2014
  10. Karsten BleesApr 30, 2014
  11. Erik Faye-LundApr 30, 2014
  12. Johannes SchindelinApr 30, 2014
  13. Felipe ContrerasApr 30, 2014
  14. Stepan KasalApr 30, 2014
  15. Win32: move main macro to a functionStepan Kasal, Apr 30, 2014
  16. Marat RadchenkoMay 3, 2014
  17. 09/12 Makefile: introduce CROSS_COMPILE variableMarat Radchenko, Apr 29, 2014
  18. 10/12 MINGW: compat/poll/poll.c: undef NOGDIMarat Radchenko, Apr 29, 2014
  19. Stepan KasalApr 30, 2014
  20. Marat RadchenkoMay 3, 2014
  21. Stepan KasalMay 4, 2014
  22. Marat RadchenkoMay 4, 2014
  23. '502304919' via msysGitMay 4, 2014
  24. Stepan KasalMay 5, 2014
  25. Felipe ContrerasMay 5, 2014
  26. Stepan KasalMay 5, 2014
  27. Felipe ContrerasMay 4, 2014
  28. 11/12 compat/nedmalloc/malloc.c.h: fix compilation under MinGW-W64Marat Radchenko, Apr 29, 2014
  29. 12/12 MINGW: config.mak.uname: add explicit way to request MinGW-buildMarat Radchenko, Apr 29, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.