Description: Disable embedded libraries freeimage normally builds with embedded copies of libjpeg, libpng, libmng, libopenjpeg, libopenexr, zlib, libtiff. . Switch to using packaged versions for all of these except libtiff, where freeimage digs deep into its internals. . This patch does not modify Makefile.srcs and fipMakefile.srcs - those are patched as part of the patch build process. Origin: vendor Forwarded: no Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595560 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/freeimage/+bug/898825 Author: Julien Cristau <jcristau@debian.org> Author: Evan Broder <evan@ebroder.net> Last-Update: 2011-12-04 Index: freeimage-3.15.4/gensrclist.sh =================================================================== --- freeimage-3.15.4.orig/gensrclist.sh +++ freeimage-3.15.4/gensrclist.sh @@ -1,6 +1,6 @@ #!/bin/sh -DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJPEG Source/LibPNG Source/LibTIFF4 Source/ZLib Source/LibOpenJPEG Source/OpenEXR Source/OpenEXR/Half Source/OpenEXR/Iex Source/OpenEXR/IlmImf Source/OpenEXR/IlmThread Source/OpenEXR/Imath Source/LibRawLite Source/LibRawLite/dcraw Source/LibRawLite/internal Source/LibRawLite/libraw Source/LibRawLite/src" +DIRLIST=". Source Source/Metadata Source/FreeImageToolkit" echo "VER_MAJOR = 3" > Makefile.srcs echo "VER_MINOR = 15.4" >> Makefile.srcs @@ -12,15 +12,17 @@ for DIR in $DIRLIST; do egrep 'RelativePath=.*\.(c|cpp)' $DIR/*.2008.vcproj | cut -d'"' -f2 | tr '\\' '/' | awk '{print "'$DIR'/"$0}' | tr '\r\n' ' ' | tr -s ' ' >> Makefile.srcs fi done +echo -n ' Source/LibJPEG/transupp.c' >> Makefile.srcs echo >> Makefile.srcs echo -n "INCLS = " >> Makefile.srcs -find . -name "*.h" -print | xargs echo >> Makefile.srcs +find . \( -name 'Lib*' -or -name 'OpenEXR' -or -name 'ZLib' \) -prune -or -name '*.h' -print | sort | xargs echo -n >> Makefile.srcs echo >> Makefile.srcs echo -n "INCLUDE =" >> Makefile.srcs for DIR in $DIRLIST; do echo -n " -I$DIR" >> Makefile.srcs done +echo ' $(shell pkg-config --cflags zlib OpenEXR libraw libpng libtiff-4)' >> Makefile.srcs echo >> Makefile.srcs Index: freeimage-3.15.4/genfipsrclist.sh =================================================================== --- freeimage-3.15.4.orig/genfipsrclist.sh +++ freeimage-3.15.4/genfipsrclist.sh @@ -1,6 +1,6 @@ #!/bin/sh -DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJPEG Source/LibPNG Source/LibTIFF4 Source/ZLib Source/LibOpenJPEG Source/OpenEXR Source/OpenEXR/Half Source/OpenEXR/Iex Source/OpenEXR/IlmImf Source/OpenEXR/IlmThread Source/OpenEXR/Imath Source/LibRawLite Source/LibRawLite/dcraw Source/LibRawLite/internal Source/LibRawLite/libraw Source/LibRawLite/src Wrapper/FreeImagePlus" +DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Wrapper/FreeImagePlus" echo "VER_MAJOR = 3" > fipMakefile.srcs @@ -13,11 +13,13 @@ for DIR in $DIRLIST; do egrep 'RelativePath=.*\.(c|cpp)' $DIR/*.2008.vcproj | cut -d'"' -f2 | tr '\\' '/' | awk '{print "'$DIR'/"$0}' | tr '\r\n' ' ' | tr -s ' ' >> fipMakefile.srcs fi done +echo -n ' Source/LibJPEG/transupp.c' >> fipMakefile.srcs echo >> fipMakefile.srcs echo -n "INCLUDE =" >> fipMakefile.srcs for DIR in $DIRLIST; do echo -n " -I$DIR" >> fipMakefile.srcs done +echo ' $(shell pkg-config --cflags zlib OpenEXR libraw libpng libtiff-4)' >> fipMakefile.srcs echo >> fipMakefile.srcs Index: freeimage-3.15.4/Source/FreeImage/ZLibInterface.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/ZLibInterface.cpp +++ freeimage-3.15.4/Source/FreeImage/ZLibInterface.cpp @@ -19,10 +19,10 @@ // Use at your own risk! // ========================================================== -#include "../ZLib/zlib.h" +#include <zlib.h> #include "FreeImage.h" #include "Utilities.h" -#include "../ZLib/zutil.h" /* must be the last header because of error C3163 in VS2008 (_vsnprintf defined in stdio.h) */ +//#include "../ZLib/zutil.h" /* must be the last header because of error C3163 in VS2008 (_vsnprintf defined in stdio.h) */ /** Compresses a source buffer into a target buffer, using the ZLib library. @@ -115,7 +115,7 @@ FreeImage_ZLibGZip(BYTE *target, DWORD t return 0; case Z_OK: { // patch header, setup crc and length (stolen from mod_trace_output) - BYTE *p = target + 8; *p++ = 2; *p = OS_CODE; // xflags, os_code + BYTE *p = target + 8; *p++ = 2; *p = 0x03; // xflags, os_code crc = crc32(crc, source, source_size); memcpy(target + 4 + dest_len, &crc, 4); memcpy(target + 8 + dest_len, &source_size, 4); Index: freeimage-3.15.4/Source/FreeImage/PluginJPEG.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/PluginJPEG.cpp +++ freeimage-3.15.4/Source/FreeImage/PluginJPEG.cpp @@ -35,9 +35,10 @@ extern "C" { #undef FAR #include <setjmp.h> -#include "../LibJPEG/jinclude.h" -#include "../LibJPEG/jpeglib.h" -#include "../LibJPEG/jerror.h" +#include <sys/types.h> +#include <stdio.h> +#include <jpeglib.h> +#include <jerror.h> } #include "FreeImage.h" Index: freeimage-3.15.4/Source/FreeImage/PluginEXR.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/PluginEXR.cpp +++ freeimage-3.15.4/Source/FreeImage/PluginEXR.cpp @@ -22,16 +22,16 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../OpenEXR/IlmImf/ImfIO.h" -#include "../OpenEXR/Iex/Iex.h" -#include "../OpenEXR/IlmImf/ImfOutputFile.h" -#include "../OpenEXR/IlmImf/ImfInputFile.h" -#include "../OpenEXR/IlmImf/ImfRgbaFile.h" -#include "../OpenEXR/IlmImf/ImfChannelList.h" -#include "../OpenEXR/IlmImf/ImfRgba.h" -#include "../OpenEXR/IlmImf/ImfArray.h" -#include "../OpenEXR/IlmImf/ImfPreviewImage.h" -#include "../OpenEXR/Half/half.h" +#include <OpenEXR/ImfIO.h> +#include <OpenEXR/Iex.h> +#include <OpenEXR/ImfOutputFile.h> +#include <OpenEXR/ImfInputFile.h> +#include <OpenEXR/ImfRgbaFile.h> +#include <OpenEXR/ImfPreviewImage.h> +#include <OpenEXR/ImfChannelList.h> +#include <OpenEXR/ImfRgba.h> +#include <OpenEXR/ImfArray.h> +#include <OpenEXR/half.h> // ========================================================== Index: freeimage-3.15.4/Source/FreeImage/PluginJ2K.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/PluginJ2K.cpp +++ freeimage-3.15.4/Source/FreeImage/PluginJ2K.cpp @@ -21,7 +21,7 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../LibOpenJPEG/openjpeg.h" +#include <openjpeg.h> // ========================================================== // Plugin Interface Index: freeimage-3.15.4/Source/FreeImage/PluginPNG.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/PluginPNG.cpp +++ freeimage-3.15.4/Source/FreeImage/PluginPNG.cpp @@ -37,8 +37,7 @@ // ---------------------------------------------------------- -#include "../ZLib/zlib.h" -#include "../LibPNG/png.h" +#include <png.h> // ---------------------------------------------------------- @@ -106,7 +105,10 @@ ReadMetadata(png_structp png_ptr, png_in tag = FreeImage_CreateTag(); if(!tag) return FALSE; - DWORD tag_length = (DWORD) MAX(text_ptr[i].text_length, text_ptr[i].itxt_length); + DWORD tag_length = text_ptr[i].text_length; +#ifdef PNG_iTXt_SUPPORTED + tag_length = MAX(tag_length, text_ptr[i].itxt_length); +#endif FreeImage_SetTagLength(tag, tag_length); FreeImage_SetTagCount(tag, tag_length); @@ -149,13 +151,19 @@ WriteMetadata(png_structp png_ptr, png_i if(mdhandle) { do { memset(&text_metadata, 0, sizeof(png_text)); +#ifdef PNG_iTXt_SUPPORTED text_metadata.compression = 1; // iTXt, none +#else + text_metadata.compression = -1; +#endif text_metadata.key = (char*)FreeImage_GetTagKey(tag); // keyword, 1-79 character description of "text" text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "") text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string +#ifdef PNG_iTXt_SUPPORTED text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer +#endif // set the tag png_set_text(png_ptr, info_ptr, &text_metadata, 1); @@ -175,9 +183,11 @@ WriteMetadata(png_structp png_ptr, png_i text_metadata.key = (char*)g_png_xmp_keyword; // keyword, 1-79 character description of "text" text_metadata.text = (char*)FreeImage_GetTagValue(tag); // comment, may be an empty string (ie "") text_metadata.text_length = FreeImage_GetTagLength(tag);// length of the text string +#ifdef PNG_iTXt_SUPPORTED text_metadata.itxt_length = FreeImage_GetTagLength(tag);// length of the itxt string text_metadata.lang = 0; // language code, 0-79 characters or a NULL pointer text_metadata.lang_key = 0; // keyword translated UTF-8 string, 0 or more chars or a NULL pointer +#endif // set the tag png_set_text(png_ptr, info_ptr, &text_metadata, 1); @@ -559,7 +569,7 @@ Load(FreeImageIO *io, fi_handle handle, if (png_get_valid(png_ptr, info_ptr, PNG_INFO_iCCP)) { png_charp profile_name = NULL; - png_bytep profile_data = NULL; + png_charp profile_data = NULL; png_uint_32 profile_length = 0; int compression_type; @@ -599,7 +609,9 @@ Load(FreeImageIO *io, fi_handle handle, row_pointers[height - 1 - k] = FreeImage_GetScanLine(dib, k); } +#ifdef PNG_BENIGN_ERRORS_SUPPORTED png_set_benign_errors(png_ptr, 1); +#endif png_read_image(png_ptr, row_pointers); // check if the bitmap contains transparency, if so enable it in the header @@ -843,7 +855,7 @@ Save(FreeImageIO *io, FIBITMAP *dib, fi_ FIICCPROFILE *iccProfile = FreeImage_GetICCProfile(dib); if (iccProfile->size && iccProfile->data) { - png_set_iCCP(png_ptr, info_ptr, "Embedded Profile", 0, (png_const_bytep)iccProfile->data, iccProfile->size); + png_set_iCCP(png_ptr, info_ptr, "Embedded Profile", 0, (png_charp)iccProfile->data, iccProfile->size); } // write metadata Index: freeimage-3.15.4/Source/FreeImage/J2KHelper.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/J2KHelper.cpp +++ freeimage-3.15.4/Source/FreeImage/J2KHelper.cpp @@ -21,7 +21,7 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../LibOpenJPEG/openjpeg.h" +#include <openjpeg.h> /** Divide an integer by a power of 2 and round upwards Index: freeimage-3.15.4/Source/FreeImage/PluginJP2.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/PluginJP2.cpp +++ freeimage-3.15.4/Source/FreeImage/PluginJP2.cpp @@ -21,7 +21,7 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../LibOpenJPEG/openjpeg.h" +#include <openjpeg.h> // ========================================================== // Plugin Interface Index: freeimage-3.15.4/Source/FreeImage/PluginRAW.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/PluginRAW.cpp +++ freeimage-3.15.4/Source/FreeImage/PluginRAW.cpp @@ -19,7 +19,7 @@ // Use at your own risk! // ========================================================== -#include "../LibRawLite/libraw/libraw.h" +#include <libraw/libraw.h> #include "FreeImage.h" #include "Utilities.h" Index: freeimage-3.15.4/Source/FreeImageToolkit/JPEGTransform.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImageToolkit/JPEGTransform.cpp +++ freeimage-3.15.4/Source/FreeImageToolkit/JPEGTransform.cpp @@ -25,9 +25,10 @@ extern "C" { #undef FAR #include <setjmp.h> -#include "../LibJPEG/jinclude.h" -#include "../LibJPEG/jpeglib.h" -#include "../LibJPEG/jerror.h" +#include <sys/types.h> +#include <stdio.h> +#include <jpeglib.h> +#include <jerror.h> #include "../LibJPEG/transupp.h" } Index: freeimage-3.15.4/Makefile.fip =================================================================== --- freeimage-3.15.4.orig/Makefile.fip +++ freeimage-3.15.4/Makefile.fip @@ -11,7 +11,7 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib # Converts cr/lf to just lf DOS2UNIX = dos2unix -LIBRARIES = -lstdc++ +LIBRARIES = -lstdc++ -lmng -ljpeg -lopenjpeg $(shell pkg-config --libs zlib OpenEXR libraw libpng libtiff-4) MODULES = $(SRCS:.c=.o) MODULES := $(MODULES:.cpp=.o) Index: freeimage-3.15.4/Makefile.gnu =================================================================== --- freeimage-3.15.4.orig/Makefile.gnu +++ freeimage-3.15.4/Makefile.gnu @@ -11,7 +11,7 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib # Converts cr/lf to just lf DOS2UNIX = dos2unix -LIBRARIES = -lstdc++ +LIBRARIES = -lstdc++ -ljpeg -lmng -lopenjpeg $(shell pkg-config --libs zlib OpenEXR libraw libpng libtiff-4) -lm MODULES = $(SRCS:.c=.o) MODULES := $(MODULES:.cpp=.o) Index: freeimage-3.15.4/Source/FreeImage/PluginTIFF.cpp =================================================================== --- freeimage-3.15.4.orig/Source/FreeImage/PluginTIFF.cpp +++ freeimage-3.15.4/Source/FreeImage/PluginTIFF.cpp @@ -39,7 +39,7 @@ #include "Utilities.h" #include "../LibTIFF4/tiffiop.h" #include "../Metadata/FreeImageTag.h" -#include "../OpenEXR/Half/half.h" +#include <OpenEXR/half.h> #include "FreeImageIO.h" #include "PSDParser.h" Index: freeimage-3.15.4/Source/LibTIFF4/tiffiop.h =================================================================== --- freeimage-3.15.4.orig/Source/LibTIFF4/tiffiop.h +++ freeimage-3.15.4/Source/LibTIFF4/tiffiop.h @@ -30,7 +30,9 @@ * ``Library-private'' definitions. */ -#include "tif_config.h" +#include <tiffconf.h> +#define HAVE_SEARCH_H +#define HAVE_FCNTL_H #ifdef HAVE_FCNTL_H # include <fcntl.h>