Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
graphics/camlimages: Fix tiff-4.0 regression
When tiff was upgraded to 4.0, camlimages stopped building. Both caml and tiff redefine several common typedefs such as uint32. Unlike the 3-series of tiff, tiff-4.0 also redefined int64 and uint64. The existing hack didn't foresee int64 and uint64 getting used, and so camlimages broke. One patch was created and another revised to override the caml typedef definitions with macros before tiff.h is included. The original tiffread.c patch was reworked to override uint16 and uint32 *again* after the tiff.h include and not before as it was originally. Very ugly all around, but I just extended what camlimages was already doing.
- Loading branch information
marino
committed
Jul 29, 2012
1 parent
743fe1e
commit 6934ead
Showing
4 changed files
with
59 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,10 @@ | ||
$NetBSD: distinfo,v 1.8 2011/08/07 20:36:20 wiz Exp $ | ||
$NetBSD: distinfo,v 1.9 2012/07/29 12:52:55 marino Exp $ | ||
|
||
SHA1 (camlimages-4.0.1/v4.0.1.tar.gz) = 4c1eee28f02749f53ed8345b448ce11375ce6dce | ||
RMD160 (camlimages-4.0.1/v4.0.1.tar.gz) = 6ae0f4c2ad3f0a8d7f4d84109d413e0b4bc1a86b | ||
Size (camlimages-4.0.1/v4.0.1.tar.gz) = 2190252 bytes | ||
SHA1 (patch-OMakefile) = de4f35f576b4a5a6de477b0f50cc6e5d4cfbe24c | ||
SHA1 (patch-src_pngread.c) = 00d753b8570b5ff9ffa71e6e62328496b03f9654 | ||
SHA1 (patch-src_pngwrite.c) = 4df4f69851769e0eefc2249a30ac8dd53aa8d755 | ||
SHA1 (patch-src_tiffread.c) = 319411cb6454ce276f540e260e4054054a60c700 | ||
SHA1 (patch-src_tiffread.c) = 4dab0fe8da42fe7d0720d5edddf45743c7fa41fd | ||
SHA1 (patch-src_tiffwrite.c) = e1acae308004b22a7d46c694cd0a387bd8bf6546 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,33 @@ | ||
$NetBSD: patch-src_tiffread.c,v 1.1 2011/08/07 20:36:20 wiz Exp $ | ||
$NetBSD: patch-src_tiffread.c,v 1.2 2012/07/29 12:52:55 marino Exp $ | ||
|
||
--- src/tiffread.c.orig 2011-01-25 14:10:44.000000000 +0000 | ||
+++ src/tiffread.c 2011-04-17 13:37:39.000000000 +0000 | ||
@@ -28,6 +28,8 @@ | ||
Both ocaml/caml/config.h and tiff.h define int32, uint32, etc. | ||
The workaround of this name polution is to intentionally overwrite the | ||
first caml definition with a garbage macro before tiff.h is included and | ||
then unset it after the include. After tiff version 4.0.1, the same hack | ||
has to be applied to 64-bit types. Unlike tiffwrite.c, tiffread.c forgot | ||
to unset the bogus definitions. The uint16 and uint32 then has to be | ||
redefined correctly. (ugly hack) | ||
|
||
--- src/tiffread.c.orig 2011-06-22 18:04:32.000000000 +0000 | ||
+++ src/tiffread.c | ||
@@ -28,9 +28,20 @@ | ||
#define uint16 uint16tiff | ||
#define int32 int32tiff | ||
#define uint32 uint32tiff | ||
+#define uint16 uint16_t | ||
+#define uint32 uint32_t | ||
+#define int64 int64tiff | ||
+#define uint64 uint64tiff | ||
|
||
#include <tiffio.h> | ||
|
||
+#undef int16 | ||
+#undef uint16 | ||
+#undef int32 | ||
+#undef uint32 | ||
+#undef int64 | ||
+#undef uint64 | ||
+#define uint16 uint16_t | ||
+#define uint32 uint32_t | ||
+ | ||
extern value *imglib_error; | ||
|
||
value open_tiff_file_for_read( name ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
$NetBSD: patch-src_tiffwrite.c,v 1.1 2012/07/29 12:52:55 marino Exp $ | ||
|
||
Both ocaml/caml/config.h and tiff.h define int32, uint32, etc. | ||
The workaround of this name polution is to intentionally overwrite the | ||
first caml definition with a garbage macro before tiff.h is included and | ||
then unset it after the include. After tiff version 4.0.1, the same hack | ||
has to be applied to 64-bit types | ||
|
||
--- src/tiffwrite.c.orig 2011-06-22 18:04:32.000000000 +0000 | ||
+++ src/tiffwrite.c | ||
@@ -25,6 +25,8 @@ | ||
#define uint16 uint16tiff | ||
#define int32 int32tiff | ||
#define uint32 uint32tiff | ||
+#define int64 int64tiff | ||
+#define uint64 uint64tiff | ||
|
||
#include <tiffio.h> | ||
|
||
@@ -32,6 +34,8 @@ | ||
#undef uint16 | ||
#undef int32 | ||
#undef uint32 | ||
+#undef int64 | ||
+#undef uint64 | ||
|
||
extern value *imglib_error; | ||
|