From f27ca4d0f1e1df6ff92a7455ddea39730ec30f60 Mon Sep 17 00:00:00 2001 From: Gabor Pali Date: Thu, 9 Jan 2014 21:29:39 +0000 Subject: - Fix a run-time problem with lang/ghc on FreeBSD 10.0 and later, caused by the iconv changes (basically GHCi was rendered unusable) - Fix build for x11-toolkits/hs-wxc, while here - Bump port revision for all Haskell Cabal ports as they have to be rebuilt PR: ports/184806 Reported by: many Obtained from: FreeBSD Haskell MFH: 2014Q1 --- .../files/patch-libraries__base__cbits__iconv.c | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lang/ghc/files/patch-libraries__base__cbits__iconv.c (limited to 'lang/ghc/files/patch-libraries__base__cbits__iconv.c') diff --git a/lang/ghc/files/patch-libraries__base__cbits__iconv.c b/lang/ghc/files/patch-libraries__base__cbits__iconv.c new file mode 100644 index 000000000000..daee90381f02 --- /dev/null +++ b/lang/ghc/files/patch-libraries__base__cbits__iconv.c @@ -0,0 +1,51 @@ +--- libraries/base/cbits/iconv.c.orig 2013-04-18 23:30:14.000000000 +0200 ++++ libraries/base/cbits/iconv.c 2013-12-15 22:08:45.995398103 +0100 +@@ -1,12 +1,28 @@ + #ifndef __MINGW32__ + ++#ifdef __FreeBSD__ ++#include ++#endif ++ + #include + #include + ++#if __FreeBSD_version >= 1000502 ++iconv_t __bsd_iconv_open(const char *, const char *); ++size_t __bsd_iconv(iconv_t, const char ** __restrict, ++ size_t * __restrict, char ** __restrict, ++ size_t * __restrict); ++int __bsd_iconv_close(iconv_t); ++#endif ++ + iconv_t hs_iconv_open(const char* tocode, + const char* fromcode) + { ++#if __FreeBSD_version >= 1000502 ++ return __bsd_iconv_open(tocode, fromcode); ++#else + return iconv_open(tocode, fromcode); ++#endif + } + + size_t hs_iconv(iconv_t cd, +@@ -15,11 +31,19 @@ + { + // (void*) cast avoids a warning. Some iconvs use (const + // char**inbuf), other use (char **inbuf). ++#if __FreeBSD_version >= 1000502 ++ return __bsd_iconv(cd, (void*)inbuf, inbytesleft, outbuf, outbytesleft); ++#else + return iconv(cd, (void*)inbuf, inbytesleft, outbuf, outbytesleft); ++#endif + } + + int hs_iconv_close(iconv_t cd) { ++#if __FreeBSD_version >= 1000502 ++ return __bsd_iconv_close(cd); ++#else + return iconv_close(cd); ++#endif + } + + #endif -- cgit v1.2.3