[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/10] gnu: Add mingw-w64.
From: |
Jan Nieuwenhuizen |
Subject: |
[PATCH 03/10] gnu: Add mingw-w64. |
Date: |
Fri, 29 Apr 2016 17:12:24 +0200 |
* gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch,
gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch,
gnu/packages/mingw.scm: New files.
* gnu-system.am: Add them.
---
gnu/local.mk | 3 +
gnu/packages/mingw.scm | 81 ++++++++++++++++++++++
.../patches/gcc-4.9.3-mingw-gthr-default.patch | 11 +++
.../patches/mingw-w64-5.0rc2-gcc-4.9.3.patch | 38 ++++++++++
4 files changed, 133 insertions(+)
create mode 100644 gnu/packages/mingw.scm
create mode 100644 gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch
create mode 100644 gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 9e31ef9..0c2776d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -229,6 +229,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/mcrypt.scm \
gnu/packages/messaging.scm \
gnu/packages/mg.scm \
+ gnu/packages/mingw.scm \
gnu/packages/mit-krb5.scm \
gnu/packages/moe.scm \
gnu/packages/moreutils.scm \
@@ -485,6 +486,7 @@ dist_patch_DATA =
\
gnu/packages/patches/gcc-arm-link-spec-fix.patch \
gnu/packages/patches/gcc-cross-environment-variables.patch \
gnu/packages/patches/gcc-libvtv-runpath.patch \
+ gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch \
gnu/packages/patches/gcc-5.0-libvtv-runpath.patch \
gnu/packages/patches/geoclue-config.patch \
gnu/packages/patches/ghostscript-CVE-2015-3228.patch \
@@ -623,6 +625,7 @@ dist_patch_DATA =
\
gnu/packages/patches/mcron-install.patch \
gnu/packages/patches/mdadm-gcc-4.9-fix.patch \
gnu/packages/patches/mhash-keygen-test-segfault.patch \
+ gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \
gnu/packages/patches/mit-krb5-CVE-2015-8629.patch \
gnu/packages/patches/mit-krb5-CVE-2015-8630.patch \
gnu/packages/patches/mit-krb5-CVE-2015-8631.patch \
diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm
new file mode 100644
index 0000000..aa9f53a
--- /dev/null
+++ b/gnu/packages/mingw.scm
@@ -0,0 +1,81 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Jan Nieuwenhuizen <address@hidden>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mingw)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages cross-base)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (ice-9 match))
+
+(define-public mingw-w64
+ (package
+ (name "mingw-w64")
+ (version "5.0-rc2")
+ (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 "0imdary8j07if8ih73pfgxiclpf2ax8h3mz8mxln07i8sbbd30c9"))
+ (patches (search-patches "mingw-w64-5.0rc2-gcc-4.9.3.patch"))))
+ (native-inputs `(("xgcc-core" ,xgcc-sans-libc-i686-w64-mingw32)
+ ("xbinutils" ,xbinutils-i686-w64-mingw32)))
+ (build-system gnu-build-system)
+ (search-paths
+ (list (search-path-specification
+ (variable "CROSS_C_INCLUDE_PATH")
+ (files '("include" "i686-w64-mingw32/include")))
+ (search-path-specification
+ (variable "CROSS_LIBRARY_PATH")
+ (files
+ '("lib" "lib64" "i686-w64-mingw32/lib"
"i686-w64-mingw32/lib64")))))
+ (arguments
+ `(#:configure-flags '("--host=i686-w64-mingw32")
+ #:phases (modify-phases %standard-phases
+ (add-before
+ 'configure 'setenv
+ (lambda _
+ (let ((xgcc-core (assoc-ref %build-inputs "xgcc-core"))
+ (mingw-headers (string-append (getcwd)
"/mingw-w64-headers")))
+ (setenv "CPP"
+ (string-append xgcc-core "/bin/i686-w64-mingw32-cpp"))
+ (setenv "CROSS_C_INCLUDE_PATH"
+ (string-append
+ mingw-headers
+ ":" mingw-headers "/include"
+ ":" mingw-headers "/crt"
+ ":" mingw-headers "/defaults/include"
+ ":" mingw-headers "/direct-x/include"))))))
+ #:make-flags (list "DEFS=-DHAVE_CONFIG_H -D__MINGW_HAS_DXSDK=1")
+ #:tests? #f ; compiles and includes glibc headers
+ #:strip-binaries? #f))
+ (home-page "http://mingw.org")
+ (synopsis "Minimalist GNU for Windows")
+ (description "MinGW provides a complete Open Source programming tool set
+which is suitable for the development of native MS-Windows applications, and
+which does not depend on any 3rd-party C-Runtime dlls.")
+ (license license:fdl1.3+)))
diff --git a/gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch
b/gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch
new file mode 100644
index 0000000..0ea008a
--- /dev/null
+++ b/gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch
@@ -0,0 +1,11 @@
+--- a/libgcc/config/i386/gthr-win32.h 2016-03-30 07:45:33.388684463 +0200
++++ b/libgcc/config/i386/gthr-win32.h 2016-03-30 15:51:24.123896436 +0200
+@@ -30,7 +30,7 @@
+
+ /* Make sure CONST_CAST2 (origin in system.h) is declared. */
+ #ifndef CONST_CAST2
+-#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q;
TOTYPE _nq;})(X))._nq)
++#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)X)
+ #endif
+
+ /* Windows32 threads specific definitions. The windows32 threading model
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
new file mode 100644
index 0000000..6048fb2
--- /dev/null
+++ b/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch
@@ -0,0 +1,38 @@
+--- mingw-w64-v5.0-rc2/mingw-w64-headers/include/winnt.h.orig 2016-03-30
21:32:21.111586941 +0200
++++ mingw-w64-v5.0-rc2/mingw-w64-headers/include/winnt.h 2016-03-30
21:31:53.607559496 +0200
+@@ -6895,7 +6895,7 @@
+ DWORD Reg : 3;
+ DWORD R : 1;
+ DWORD L : 1;
+- DWORD C : 1;
++ DWORD C_ : 1;
+ DWORD StackAdjust : 10;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+--- mingw-w64-v5.0-rc2/mingw-w64-headers/crt/math.h.orig 2016-03-30
21:27:25.375475927 +0200
++++ mingw-w64-v5.0-rc2/mingw-w64-headers/crt/math.h 2016-03-30
21:28:57.871461798 +0200
+@@ -216,6 +216,7 @@
+ #endif
+ }
+
++#if 0
+ __CRT_INLINE long double __cdecl fabsl (long double x)
+ {
+ #ifdef __arm__
+@@ -226,6 +227,7 @@
+ return res;
+ #endif
+ }
++#endif
+
+ __CRT_INLINE double __cdecl fabs (double x)
+ {
+@@ -905,7 +907,7 @@
+ /* 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);
--
2.7.3
- [PATCH 01/10] gnu: cross: Use CROSS_*_INCLUDE_PATH for system headers., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 03/10] gnu: Add mingw-w64.,
Jan Nieuwenhuizen <=
- [PATCH 04/10] gnu: cross-build: i686-w64-mingw32: new cross target., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 06/10] gnu: Add libiconv., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 05/10] gnu: gmp: build shared library for mingw., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 07/10] gnu: ncurses: support mingw., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 08/10] gnu: readline: support mingw., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 02/10] gnu: bootstrap: Add i686-mingw., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 09/10] gnu: libunistring: support mingw: propagate libiconv if needed., Jan Nieuwenhuizen, 2016/04/29
- [PATCH 10/10] gnu: guile-2.0: support mingw., Jan Nieuwenhuizen, 2016/04/29