summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/build/cross-toolchain.scm6
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/mingw.scm6
-rw-r--r--gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch218
-rw-r--r--gnu/packages/patches/mingw-w64-6.0.0-gcc.patch65
5 files changed, 74 insertions, 223 deletions
diff --git a/gnu/build/cross-toolchain.scm b/gnu/build/cross-toolchain.scm
index 201b36ff7c..7ab0a355b0 100644
--- a/gnu/build/cross-toolchain.scm
+++ b/gnu/build/cross-toolchain.scm
@@ -130,7 +130,11 @@ C_*INCLUDE_PATH."
 
             (substitute* (string-append mingw-headers "/crt/_mingw.h")
               (("@MINGW_HAS_SECURE_API@")
-               "#define MINGW_HAS_SECURE_API 1"))
+               "#define MINGW_HAS_SECURE_API 1")
+              (("@DEFAULT_WIN32_WINNT@")
+               "0x502")
+              (("@DEFAULT_MSVCRT_VERSION@")
+               "0x700"))
 
             (let ((cpath (string-append mingw-headers "/include"
                                         ":" mingw-headers "/crt"
diff --git a/gnu/local.mk b/gnu/local.mk
index a756316f77..d539c3c85b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1098,7 +1098,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/meson-for-build-rpath.patch		\
   %D%/packages/patches/metabat-fix-compilation.patch		\
   %D%/packages/patches/mhash-keygen-test-segfault.patch		\
-  %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch		\
+  %D%/packages/patches/mingw-w64-6.0.0-gcc.patch		\
   %D%/packages/patches/mpc123-initialize-ao.patch		\
   %D%/packages/patches/module-init-tools-moduledir.patch	\
   %D%/packages/patches/monero-use-system-miniupnpc.patch			\
diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm
index 017f9453ab..fe51780fa3 100644
--- a/gnu/packages/mingw.scm
+++ b/gnu/packages/mingw.scm
@@ -36,15 +36,15 @@
   (let ((triplet (string-append machine "-" "w64-mingw32")))
     (package
       (name (string-append "mingw-w64" "-" machine))
-      (version "5.0.4")
+      (version "6.0.0")
       (source (origin
                 (method url-fetch)
                 (uri (string-append
                       "https://sourceforge.net/projects/mingw-w64/files/mingw-w64/"
                       "mingw-w64-release/mingw-w64-v" version ".tar.bz2"))
                 (sha256
-                 (base32 "00zq3z1hbzd5yzmskskjg79xrzwsqx7ihyprfaxy4hb897vf29sm"))
-                (patches (search-patches "mingw-w64-5.0rc2-gcc-4.9.3.patch"))))
+                 (base32 "1w28mynv500y03h92nh87rgw3fnp82qwnjbxrrzqkmr63q812pl0"))
+                (patches (search-patches "mingw-w64-6.0.0-gcc.patch"))))
       (native-inputs `(("xgcc-core" ,(cross-gcc triplet))
                        ("xbinutils" ,(cross-binutils triplet))))
       (build-system gnu-build-system)
diff --git a/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch b/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch
deleted file mode 100644
index e8f841c4fd..0000000000
--- a/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-This patch includes
-
-   * mingw-w64-headers/include/winnt.h: compile fixes for1 gcc-4.9.3
-   * mingw-w64-headers/crt/math.h: Likewise
-   * mingw-w64-headers/crt/float.h (FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON): Add
-   symbols.
-   * mingw-w64-headers/crt/stat.h (S_ISLNK,S_ISSOCK,S_ISUID,S_ISGID,S_ISLINK):
-   Add symbols.
-   (lstat): Add function.
-   * mingw-w64-headers/crt/_mingw_stat64.h: Likewise
-   * mingw-w64-headers/crt/stdlib.h (realpath): Add function.
-
-Needed for building with gcc-4.9.3 and using with cross-libtool-2.4.6.
-
-Upstream status: not yet presented upstream.
-
-index 9c5cf87..74a8541 100644
---- a/mingw-w64-crt/misc/dirname.c
-+++ b/mingw-w64-crt/misc/dirname.c
-@@ -29,6 +29,12 @@
- #define __cdecl  /* this may not be defined.                   */
- #endif
- 
-+char *__cdecl
-+realpath(const char *name, char *resolved)
-+{
-+  return resolved ? strcpy (resolved, name) : strdup (name);
-+}
-+
- char * __cdecl
- dirname(char *path)
- {
-diff --git a/mingw-w64-headers/crt/_mingw_stat64.h b/mingw-w64-headers/crt/_mingw_stat64.h
-index 17e754c..7d2339b 100644
---- a/mingw-w64-headers/crt/_mingw_stat64.h
-+++ b/mingw-w64-headers/crt/_mingw_stat64.h
-@@ -2,13 +2,17 @@
- 
- #ifdef _USE_32BIT_TIME_T
- #define _fstat32 _fstat
-+#define _lstat32 _lstat
- #define _stat32 _stat
- #define _wstat32 _wstat
- #define _fstat32i64 _fstati64
-+#define _lstat32i64 _lstati64
- #define _stat32i64 _stati64
- #define _wstat32i64 _wstati64
- #else
- #define _fstat _fstat64i32
-+#define _lstat _lstat64i32
-+#define _lstati64 _lstat64
- #define _fstati64 _fstat64
- #define _stat _stat64i32
- #define _stati64 _stat64
-diff --git a/mingw-w64-headers/crt/float.h b/mingw-w64-headers/crt/float.h
-index 5874f4e..bdf4ead 100644
---- a/mingw-w64-headers/crt/float.h
-+++ b/mingw-w64-headers/crt/float.h
-@@ -22,6 +22,15 @@
- #if (__GNUC__ < 4)
- #error Corrupt install of gcc-s internal headers, or search order was changed.
- #else
-+
-+        /* From gcc-4.9.3 float.h.  */
-+        #undef FLT_EPSILON
-+        #undef DBL_EPSILON
-+        #undef LDBL_EPSILON
-+        #define FLT_EPSILON	__FLT_EPSILON__
-+        #define DBL_EPSILON	__DBL_EPSILON__
-+        #define LDBL_EPSILON	__LDBL_EPSILON__
-+
- 	/* #include_next <float_ginclude.h> */
- 	
-    	/* Number of decimal digits, q, such that any floating-point number with q
-diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h
-index 1e970f4..99a332f 100644
---- a/mingw-w64-headers/crt/math.h
-+++ b/mingw-w64-headers/crt/math.h
-@@ -216,6 +216,7 @@ extern "C" {
- #endif
-   }
- 
-+#if 0
-   __CRT_INLINE long double __cdecl fabsl (long double x)
-   {
- #ifdef __arm__
-@@ -226,6 +227,7 @@ extern "C" {
-     return res;
- #endif
-   }
-+#endif
- 
-   __CRT_INLINE double __cdecl fabs (double x)
-   {
-@@ -905,7 +907,7 @@ __mingw_choose_expr (                                         \
- /* 7.12.7.3  */
-   extern double __cdecl hypot (double, double) __MINGW_ATTRIB_DEPRECATED_MSVC2005; /* in libmoldname.a */
-   extern float __cdecl hypotf (float x, float y);
--#ifndef __CRT__NO_INLINE
-+#if 0 //ndef __CRT__NO_INLINE
-   __CRT_INLINE float __cdecl hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);}
- #endif
-   extern long double __cdecl hypotl (long double, long double);
-diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h
-index dfc5ae4..6f0fee3 100644
---- a/mingw-w64-headers/crt/stdlib.h
-+++ b/mingw-w64-headers/crt/stdlib.h
-@@ -8,6 +8,7 @@
- 
- #include <crtdefs.h>
- #include <limits.h>
-+#include <string.h>
- 
- #if defined (__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) && !defined (__USE_MINGW_STRTOX)
- #define __USE_MINGW_STRTOX 1
-@@ -676,6 +677,8 @@ unsigned long __cdecl _lrotr(unsigned long,int);
- 
- #endif /* !__NO_ISOCEXT */
- 
-+char *__cdecl realpath (const char *name, char *resolved);
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/mingw-w64-headers/crt/sys/stat.h b/mingw-w64-headers/crt/sys/stat.h
-index ed60219..d88b4f1 100644
---- a/mingw-w64-headers/crt/sys/stat.h
-+++ b/mingw-w64-headers/crt/sys/stat.h
-@@ -58,16 +58,21 @@ extern "C" {
- #include <_mingw_stat64.h>
- 
- #define _S_IFMT 0xF000
-+#define _S_IFLNK 0xA000
-+#define _S_IFSOCK 0xC000
- #define _S_IFDIR 0x4000
- #define _S_IFCHR 0x2000
- #define _S_IFIFO 0x1000
- #define _S_IFREG 0x8000
-+#define _S_ISUID 0x0400
-+#define _S_ISGID 0x0200
- #define _S_IREAD 0x0100
- #define _S_IWRITE 0x0080
- #define _S_IEXEC 0x0040
- 
-   _CRTIMP int __cdecl _fstat32(int _FileDes,struct _stat32 *_Stat);
-   _CRTIMP int __cdecl _stat32(const char *_Name,struct _stat32 *_Stat);
-+  static inline int __cdecl _lstat32(const char *_Name,struct _stat32 *_Stat) {return _stat32(_Name, _Stat);}
-   _CRTIMP int __cdecl _fstat64(int _FileDes,struct _stat64 *_Stat);
-   _CRTIMP int __cdecl _fstat32i64(int _FileDes,struct _stat32i64 *_Stat);
-   int __cdecl _fstat64i32(int _FileDes,struct _stat64i32 *_Stat);
-@@ -97,6 +102,9 @@ extern "C" {
-   _CRTIMP int __cdecl _stat64(const char *_Name,struct _stat64 *_Stat);
-   _CRTIMP int __cdecl _stat32i64(const char *_Name,struct _stat32i64 *_Stat);
-   int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat);
-+  static inline int __cdecl _lstat64(const char *_Name,struct _stat64 *_Stat) {return _stat64(_Name, _Stat);}
-+  static inline int __cdecl _lstat32i64(const char *_Name,struct _stat32i64 *_Stat) {return _stat32i64(_Name, _Stat);}
-+  static inline int __cdecl _lstat64i32(const char *_Name,struct _stat64i32 *_Stat) {return _stat64i32(_Name, _Stat);}
- #ifndef __CRT__NO_INLINE
-   __CRT_INLINE int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat)
-   {
-@@ -132,6 +140,8 @@ extern "C" {
- #ifndef	NO_OLDNAMES
- #define	_S_IFBLK	0x3000	/* Block: Is this ever set under w32? */
- 
-+#define S_IFLNK _S_IFLNK
-+#define S_IFSOCK _S_IFSOCK
- #define S_IFMT _S_IFMT
- #define S_IFDIR _S_IFDIR
- #define S_IFCHR _S_IFCHR
-@@ -162,6 +172,11 @@ extern "C" {
- #define S_IXOTH    (S_IXGRP >> 3)
- #define S_IRWXO    (S_IRWXG >> 3)
- 
-+#define S_ISUID _S_ISUID
-+#define S_ISGID _S_ISGID
-+
-+#define S_ISLNK(m)	(((m) & S_IFMT) == S_IFLNK)
-+#define S_ISSOCK(m)	(((m) & S_IFMT) == S_IFSOCK)
- #define	S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
- #define	S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
- #define	S_ISCHR(m)	(((m) & S_IFMT) == S_IFCHR)
-@@ -174,6 +189,7 @@ extern "C" {
- int __cdecl stat(const char *_Filename,struct stat *_Stat);
- int __cdecl fstat(int _Desc,struct stat *_Stat);
- int __cdecl wstat(const wchar_t *_Filename,struct stat *_Stat);
-+static inline int __cdecl lstat(const char *_Filename,struct stat *_Stat){return stat(_Filename, _Stat);}
- 
- #ifndef __CRT__NO_INLINE
- #ifdef _USE_32BIT_TIME_T
-@@ -262,9 +278,11 @@ __CRT_INLINE int __cdecl
- 
- #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
- #ifdef _USE_32BIT_TIME_T
-+#define lstat _lstat32i64
- #define stat _stat32i64
- #define fstat _fstat32i64
- #else
-+#define lstat _lstat64
- #define stat _stat64
- #define fstat _fstat64
- #endif
-diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
-index 52af29b..8626396 100644
---- a/mingw-w64-headers/include/winnt.h
-+++ b/mingw-w64-headers/include/winnt.h
-@@ -6895,7 +6895,12 @@ __buildmemorybarrier()
- 	  DWORD Reg : 3;
- 	  DWORD R : 1;
- 	  DWORD L : 1;
-+/* C is used as a const specifier */
-+#define save_C C
-+#undef C
- 	  DWORD C : 1;
-+#define C save_C
-+#undef save_C
- 	  DWORD StackAdjust : 10;
- 	} DUMMYSTRUCTNAME;
-       } DUMMYUNIONNAME;
diff --git a/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch b/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch
new file mode 100644
index 0000000000..036cf79f91
--- /dev/null
+++ b/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch
@@ -0,0 +1,65 @@
+This patch includes
+
+   * mingw-w64-headers/include/winnt.h: compile fixes for1 gcc-4.9.3
+   * mingw-w64-headers/crt/math.h: Likewise
+   * mingw-w64-headers/crt/float.h (FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON): Add
+   symbols.
+   * mingw-w64-headers/crt/stat.h (S_ISLNK,S_ISSOCK,S_ISUID,S_ISGID,S_ISLINK):
+   Add symbols.
+   (lstat): Add function.
+   * mingw-w64-headers/crt/_mingw_stat64.h: Likewise
+   * mingw-w64-headers/crt/stdlib.h (realpath): Add function.
+
+Needed for building with gcc-4.9.3 and using with cross-libtool-2.4.6.
+
+Upstream status: not yet presented upstream.
+
+diff --git a/mingw-w64-headers/crt/float.h b/mingw-w64-headers/crt/float.h
+index 5874f4e..bdf4ead 100644
+--- a/mingw-w64-headers/crt/float.h
++++ b/mingw-w64-headers/crt/float.h
+@@ -22,6 +22,15 @@
+ #if (__GNUC__ < 4)
+ #error Corrupt install of gcc-s internal headers, or search order was changed.
+ #else
++
++        /* From gcc-4.9.3 float.h.  */
++        #undef FLT_EPSILON
++        #undef DBL_EPSILON
++        #undef LDBL_EPSILON
++        #define FLT_EPSILON	__FLT_EPSILON__
++        #define DBL_EPSILON	__DBL_EPSILON__
++        #define LDBL_EPSILON	__LDBL_EPSILON__
++
+ 	/* #include_next <float_ginclude.h> */
+
+    	/* Number of decimal digits, q, such that any floating-point number with q
+diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h
+index 1e970f4..99a332f 100644
+--- a/mingw-w64-headers/crt/math.h
++++ b/mingw-w64-headers/crt/math.h
+@@ -216,6 +216,7 @@ extern "C" {
+ #endif
+   }
+
++#if 0
+   __CRT_INLINE long double __cdecl fabsl (long double x)
+   {
+ #ifdef __arm__
+@@ -226,6 +227,7 @@ extern "C" {
+     return res;
+ #endif
+   }
++#endif
+
+   __CRT_INLINE double __cdecl fabs (double x)
+   {
+@@ -905,7 +907,7 @@ __mingw_choose_expr (                                         \
+ /* 7.12.7.3  */
+   extern double __cdecl hypot (double, double) __MINGW_ATTRIB_DEPRECATED_MSVC2005; /* in libmoldname.a */
+   extern float __cdecl hypotf (float x, float y);
+-#ifndef __CRT__NO_INLINE
++#if 0 //ndef __CRT__NO_INLINE
+   __CRT_INLINE float __cdecl hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);}
+ #endif
+   extern long double __cdecl hypotl (long double, long double);