From 80a791a193e921a92fef37429f46ebdce85f7bee Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Thu, 14 Apr 2016 07:35:40 +0200 Subject: [PATCH 3/9] gnu: Add mingw-w64. * 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-system.am | 3 + gnu/packages/mingw.scm | 109 +++++++++++++++++++++ .../patches/gcc-4.9.3-mingw-gthr-default.patch | 11 +++ .../patches/mingw-w64-5.0rc2-gcc-4.9.3.patch | 38 +++++++ 4 files changed, 161 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-system.am b/gnu-system.am index 8822d0b..7ab45cd 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -225,6 +225,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 \ @@ -478,6 +479,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 \ @@ -606,6 +608,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..7d9276a --- /dev/null +++ b/gnu/packages/mingw.scm @@ -0,0 +1,109 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Jan Nieuwenhuizen +;;; +;;; 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 . + +(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/" + name "/" name "-release/" name "-v" version ".tar.bz2")) + (sha256 + (base32 "0imdary8j07if8ih73pfgxiclpf2ax8h3mz8mxln07i8sbbd30c9")) + (patches (list + (search-patch "mingw-w64-5.0rc2-gcc-4.9.3.patch"))))) + (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"))))) + (native-inputs `(("xgcc-core" ,xgcc-sans-libc-i686-w64-mingw32) + ("xbinutils" ,xbinutils-i686-w64-mingw32) + ;; FIXME: these do not propagate along + ("gmp" ,gmp) + ("mpfr" ,mpfr) + ("mpc" ,mpc) + ("zlib" ,zlib))) + (arguments + `(#:configure-flags + '("--host=i686-w64-mingw32" + "--target=i686-w64-mingw32" + "--with-as=i686-w64-mingw32-as" + "--with-ld=i686-w64-mingw32-ld" + "--with-nm=i686-w64-mingw32-nm") + #:make-flags (list "DEFS=-DHAVE_CONFIG_H -D__MINGW_HAS_DXSDK=1") + #:tests? #f ;; FIXME: compiles and includes glibc headers + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'setenv + (lambda _ + (let (;; FIXME: these do not propagate along + (xgcc-core (assoc-ref %build-inputs "xgcc-core")) + (xbinutils (assoc-ref %build-inputs "xbinutils")) + (gmp (assoc-ref %build-inputs "gmp")) + (mpfr (assoc-ref %build-inputs "mpfr")) + (mpc (assoc-ref %build-inputs "mpc")) + (zlib (assoc-ref %build-inputs "zlib")) + (mingw-headers (string-append (getcwd) "/mingw-w64-headers"))) + ;; FIXME: LD_LIBRARY_PATH does not propagate along + (setenv "LD_LIBRARY_PATH" + (string-append + gmp "/lib" + ":" mpfr "/lib" + ":" mpc "/lib" + ":" zlib "/lib")) + (format (current-error-port) "LD_LIBRARY_PATH:~a\n" (getenv "LD_LIBRARY_PATH")) + (setenv "PATH" + (string-append xbinutils "/" "i686-w64-mingw32" "/bin" + ":" (getenv "PATH"))) + (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")))))))) + (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 do 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