public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: media-libs/freeimage/, media-libs/freeimage/files/
@ 2017-01-21 20:04 David Seifert
  0 siblings, 0 replies; 6+ messages in thread
From: David Seifert @ 2017-01-21 20:04 UTC (permalink / raw
  To: gentoo-commits

commit:     19aae64ac3dfc8945dbf9c4edccd835778f81c1d
Author:     David Seifert <soap <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 21 20:01:22 2017 +0000
Commit:     David Seifert <soap <AT> gentoo <DOT> org>
CommitDate: Sat Jan 21 20:04:09 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=19aae64a

media-libs/freeimage: Add patches for CVE-2015-0852 and CVE-2016-5684

Gentoo-bug: 559006, 596350
* EAPI=6
* Make patches -p1 compliant

Package-Manager: Portage-2.3.3, Repoman-2.3.1

 .../files/freeimage-3.15.4-CVE-2015-0852.patch     | 214 +++++++++
 .../files/freeimage-3.15.4-CVE-2016-5684-1.patch   |  23 +
 .../files/freeimage-3.15.4-CVE-2016-5684-2.patch   |  11 +
 .../files/freeimage-3.15.4-libjpeg-turbo.patch     | 531 +++++++++++++++++++++
 .../files/freeimage-3.15.4-unbundling.patch        |  76 +--
 media-libs/freeimage/freeimage-3.15.4-r1.ebuild    | 116 +++++
 6 files changed, 933 insertions(+), 38 deletions(-)

diff --git a/media-libs/freeimage/files/freeimage-3.15.4-CVE-2015-0852.patch b/media-libs/freeimage/files/freeimage-3.15.4-CVE-2015-0852.patch
new file mode 100644
index 00000000..e0c4b0c
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.15.4-CVE-2015-0852.patch
@@ -0,0 +1,214 @@
+--- a/Source/FreeImage/PluginPCX.cpp
++++ b/Source/FreeImage/PluginPCX.cpp
+@@ -30,7 +30,7 @@
+ //   Constants + headers
+ // ----------------------------------------------------------
+ 
+-#define IO_BUF_SIZE	2048
++#define PCX_IO_BUF_SIZE	2048
+ 
+ // ----------------------------------------------------------
+ 
+@@ -120,17 +120,17 @@
+ 
+ 		while (length--) {
+ 			if (count == 0) {
+-				if (*ReadPos >= IO_BUF_SIZE - 1 ) {
+-					if (*ReadPos == IO_BUF_SIZE - 1) {
++				if (*ReadPos >= PCX_IO_BUF_SIZE - 1 ) {
++					if (*ReadPos == PCX_IO_BUF_SIZE - 1) {
+ 						// we still have one BYTE, copy it to the start pos
+ 
+-						*ReadBuf = ReadBuf[IO_BUF_SIZE - 1];
++						*ReadBuf = ReadBuf[PCX_IO_BUF_SIZE - 1];
+ 
+-						io.read_proc(ReadBuf + 1, 1, IO_BUF_SIZE - 1, handle);
++						io.read_proc(ReadBuf + 1, 1, PCX_IO_BUF_SIZE - 1, handle);
+ 					} else {
+ 						// read the complete buffer
+ 
+-						io.read_proc(ReadBuf, 1, IO_BUF_SIZE, handle);
++						io.read_proc(ReadBuf, 1, PCX_IO_BUF_SIZE, handle);
+ 					}
+ 
+ 					*ReadPos = 0;
+@@ -346,19 +346,9 @@
+ 	BOOL header_only = (flags & FIF_LOAD_NOPIXELS) == FIF_LOAD_NOPIXELS;
+ 
+ 	try {
+-		// check PCX identifier
+-
+-		long start_pos = io->tell_proc(handle);
+-		BOOL validated = pcx_validate(io, handle);		
+-		io->seek_proc(handle, start_pos, SEEK_SET);
+-		if(!validated) {
+-			throw FI_MSG_ERROR_MAGIC_NUMBER;
+-		}
+-
+-		// process the header
+-
+ 		PCXHEADER header;
+ 
++		// process the header
+ 		if(io->read_proc(&header, sizeof(PCXHEADER), 1, handle) != 1) {
+ 			throw FI_MSG_ERROR_PARSING;
+ 		}
+@@ -366,20 +356,38 @@
+ 		SwapHeader(&header);
+ #endif
+ 
+-		// allocate a new DIB
++		// process the window
++		const WORD *window = header.window;	// left, upper, right,lower pixel coord.
++		const int left		= window[0];
++		const int top		= window[1];
++		const int right		= window[2];
++		const int bottom	= window[3];
+ 
+-		unsigned width = header.window[2] - header.window[0] + 1;
+-		unsigned height = header.window[3] - header.window[1] + 1;
+-		unsigned bitcount = header.bpp * header.planes;
++		// check image size
++		if((left >= right) || (top >= bottom)) {
++			throw FI_MSG_ERROR_PARSING;
++		}
+ 
+-		if (bitcount == 24) {
+-			dib = FreeImage_AllocateHeader(header_only, width, height, bitcount, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
+-		} else {
+-			dib = FreeImage_AllocateHeader(header_only, width, height, bitcount);			
++		const unsigned width = right - left + 1;
++		const unsigned height = bottom - top + 1;
++		const unsigned bitcount = header.bpp * header.planes;
++
++		// allocate a new dib
++		switch(bitcount) {
++			case 1:
++			case 4:
++			case 8:
++				dib = FreeImage_AllocateHeader(header_only, width, height, bitcount);
++				break;
++			case 24:
++				dib = FreeImage_AllocateHeader(header_only, width, height, bitcount, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
++				break;
++			default:
++				throw FI_MSG_ERROR_DIB_MEMORY;
++				break;
+ 		}
+ 
+ 		// if the dib couldn't be allocated, throw an error
+-
+ 		if (!dib) {
+ 			throw FI_MSG_ERROR_DIB_MEMORY;
+ 		}
+@@ -426,19 +434,23 @@
+ 
+ 				if (palette_id == 0x0C) {
+ 					BYTE *cmap = (BYTE*)malloc(768 * sizeof(BYTE));
+-					io->read_proc(cmap, 768, 1, handle);
+ 
+-					pal = FreeImage_GetPalette(dib);
+-					BYTE *pColormap = &cmap[0];
++					if(cmap) {
++						io->read_proc(cmap, 768, 1, handle);
+ 
+-					for(int i = 0; i < 256; i++) {
+-						pal[i].rgbRed   = pColormap[0];
+-						pal[i].rgbGreen = pColormap[1];
+-						pal[i].rgbBlue  = pColormap[2];
+-						pColormap += 3;
++						pal = FreeImage_GetPalette(dib);
++						BYTE *pColormap = &cmap[0];
++
++						for(int i = 0; i < 256; i++) {
++							pal[i].rgbRed   = pColormap[0];
++							pal[i].rgbGreen = pColormap[1];
++							pal[i].rgbBlue  = pColormap[2];
++							pColormap += 3;
++						}
++
++						free(cmap);
+ 					}
+ 
+-					free(cmap);
+ 				}
+ 
+ 				// wrong palette ID, perhaps a gray scale is needed ?
+@@ -463,12 +475,12 @@
+ 			return dib;
+ 		}
+ 
+-		// calculate the line length for the PCX and the DIB
++		// calculate the line length for the PCX and the dib
+ 
+ 		// length of raster line in bytes
+-		unsigned linelength = header.bytes_per_line * header.planes;
+-		// length of DIB line (rounded to DWORD) in bytes
+-		unsigned pitch = FreeImage_GetPitch(dib);
++		const unsigned linelength = header.bytes_per_line * header.planes;
++		// length of dib line (rounded to DWORD) in bytes
++		const unsigned pitch = FreeImage_GetPitch(dib);
+ 
+ 		// run-length encoding ?
+ 
+@@ -478,14 +490,18 @@
+ 		// ---------------
+ 
+ 		line = (BYTE*)malloc(linelength * sizeof(BYTE));
+-		if(!line) throw FI_MSG_ERROR_MEMORY;
++		if(!line) {
++			throw FI_MSG_ERROR_MEMORY;
++		}
+ 		
+-		ReadBuf = (BYTE*)malloc(IO_BUF_SIZE * sizeof(BYTE));
+-		if(!ReadBuf) throw FI_MSG_ERROR_MEMORY;
++		ReadBuf = (BYTE*)malloc(PCX_IO_BUF_SIZE * sizeof(BYTE));
++		if(!ReadBuf) {
++			throw FI_MSG_ERROR_MEMORY;
++		}
+ 		
+ 		bits = FreeImage_GetScanLine(dib, height - 1);
+ 
+-		int ReadPos = IO_BUF_SIZE;
++		int ReadPos = PCX_IO_BUF_SIZE;
+ 
+ 		if ((header.planes == 1) && ((header.bpp == 1) || (header.bpp == 8))) {
+ 			BYTE skip;
+@@ -497,7 +513,7 @@
+ 				// skip trailing garbage at the end of the scanline
+ 
+ 				for (unsigned count = written; count < linelength; count++) {
+-					if (ReadPos < IO_BUF_SIZE) {
++					if (ReadPos < PCX_IO_BUF_SIZE) {
+ 						ReadPos++;
+ 					} else {
+ 						io->read_proc(&skip, sizeof(BYTE), 1, handle);
+@@ -513,7 +529,9 @@
+ 			unsigned x, y, written;
+ 
+ 			buffer = (BYTE*)malloc(width * sizeof(BYTE));
+-			if(!buffer) throw FI_MSG_ERROR_MEMORY;
++			if(!buffer) {
++				throw FI_MSG_ERROR_MEMORY;
++			}
+ 
+ 			for (y = 0; y < height; y++) {
+ 				written = readline(*io, handle, line, linelength, bIsRLE, ReadBuf, &ReadPos);
+@@ -532,7 +550,7 @@
+ 					}
+ 				}
+ 
+-				// then write the DIB row
++				// then write the dib row
+ 
+ 				for (x = 0; x < width / 2; x++) {
+ 					bits[x] = (buffer[2*x] << 4) | buffer[2*x+1];
+@@ -541,7 +559,7 @@
+ 				// skip trailing garbage at the end of the scanline
+ 
+ 				for (unsigned count = written; count < linelength; count++) {
+-					if (ReadPos < IO_BUF_SIZE) {
++					if (ReadPos < PCX_IO_BUF_SIZE) {
+ 						ReadPos++;
+ 					} else {
+ 						io->read_proc(&skip, sizeof(BYTE), 1, handle);

diff --git a/media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-1.patch b/media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-1.patch
new file mode 100644
index 00000000..1e94602
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-1.patch
@@ -0,0 +1,23 @@
+--- a/Source/FreeImage/PluginXPM.cpp
++++ b/Source/FreeImage/PluginXPM.cpp
+@@ -181,6 +181,11 @@
+ 		}
+ 		free(str);
+ 
++		// check info string
++		if((width <= 0) || (height <= 0) || (colors <= 0) || (cpp <= 0)) {
++			throw "Improperly formed info string";
++		}
++
+         if (colors > 256) {
+ 			dib = FreeImage_AllocateHeader(header_only, width, height, 24, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
+ 		} else {
+@@ -193,7 +198,7 @@
+ 			FILE_RGBA rgba;
+ 
+ 			str = ReadString(io, handle);
+-			if(!str)
++			if(!str || (strlen(str) < cpp))
+ 				throw "Error reading color strings";
+ 
+ 			std::string chrs(str,cpp); //create a string for the color chars using the first cpp chars

diff --git a/media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-2.patch b/media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-2.patch
new file mode 100644
index 00000000..542a9ae
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-2.patch
@@ -0,0 +1,11 @@
+--- a/Source/FreeImage/PluginXPM.cpp
++++ b/Source/FreeImage/PluginXPM.cpp
+@@ -198,7 +198,7 @@
+ 			FILE_RGBA rgba;
+ 
+ 			str = ReadString(io, handle);
+-			if(!str || (strlen(str) < cpp))
++			if(!str || (strlen(str) < (size_t)cpp))
+ 				throw "Error reading color strings";
+ 
+ 			std::string chrs(str,cpp); //create a string for the color chars using the first cpp chars

diff --git a/media-libs/freeimage/files/freeimage-3.15.4-libjpeg-turbo.patch b/media-libs/freeimage/files/freeimage-3.15.4-libjpeg-turbo.patch
new file mode 100644
index 00000000..62037c5
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.15.4-libjpeg-turbo.patch
@@ -0,0 +1,531 @@
+--- /dev/null
++++ b/LibJPEG/jpegcomp.h
+@@ -0,0 +1,26 @@
++/*
++ * jpegcomp.h
++ *
++ * Copyright (C) 2010, D. R. Commander
++ * For conditions of distribution and use, see the accompanying README file.
++ *
++ * JPEG compatibility macros
++ * These declarations are considered internal to the JPEG library; most
++ * applications using the library shouldn't need to include this file.
++ */
++
++#if JPEG_LIB_VERSION >= 70
++#define _DCT_scaled_size DCT_h_scaled_size
++#define _min_DCT_scaled_size min_DCT_h_scaled_size
++#define _min_DCT_h_scaled_size min_DCT_h_scaled_size
++#define _min_DCT_v_scaled_size min_DCT_v_scaled_size
++#define _jpeg_width jpeg_width
++#define _jpeg_height jpeg_height
++#else
++#define _DCT_scaled_size DCT_scaled_size
++#define _min_DCT_scaled_size min_DCT_scaled_size
++#define _min_DCT_h_scaled_size min_DCT_scaled_size
++#define _min_DCT_v_scaled_size min_DCT_scaled_size
++#define _jpeg_width image_width
++#define _jpeg_height image_height
++#endif
+--- a/LibJPEG/jpegint.h
++++ b/LibJPEG/jpegint.h
+@@ -2,7 +2,7 @@
+  * jpegint.h
+  *
+  * Copyright (C) 1991-1997, Thomas G. Lane.
+- * Modified 1997-2011 by Guido Vollbeding.
++ * Modified 1997-2009 by Guido Vollbeding.
+  * This file is part of the Independent JPEG Group's software.
+  * For conditions of distribution and use, see the accompanying README file.
+  *
+@@ -100,16 +100,14 @@
+ };
+ 
+ /* Forward DCT (also controls coefficient quantization) */
+-typedef JMETHOD(void, forward_DCT_ptr,
+-		(j_compress_ptr cinfo, jpeg_component_info * compptr,
+-		 JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
+-		 JDIMENSION start_row, JDIMENSION start_col,
+-		 JDIMENSION num_blocks));
+-
+ struct jpeg_forward_dct {
+   JMETHOD(void, start_pass, (j_compress_ptr cinfo));
+-  /* It is useful to allow each component to have a separate FDCT method. */
+-  forward_DCT_ptr forward_DCT[MAX_COMPONENTS];
++  /* perhaps this should be an array??? */
++  JMETHOD(void, forward_DCT, (j_compress_ptr cinfo,
++			      jpeg_component_info * compptr,
++			      JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
++			      JDIMENSION start_row, JDIMENSION start_col,
++			      JDIMENSION num_blocks));
+ };
+ 
+ /* Entropy encoding */
+@@ -213,6 +211,10 @@
+   JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
+   JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo,
+ 				JBLOCKROW *MCU_data));
++
++  /* This is here to share code between baseline and progressive decoders; */
++  /* other modules probably should not use it */
++  boolean insufficient_data;	/* set TRUE after emitting warning */
+ };
+ 
+ /* Inverse DCT (also performs dequantization) */
+@@ -302,6 +304,7 @@
+ #define jinit_downsampler	jIDownsampler
+ #define jinit_forward_dct	jIFDCT
+ #define jinit_huff_encoder	jIHEncoder
++#define jinit_phuff_encoder	jIPHEncoder
+ #define jinit_arith_encoder	jIAEncoder
+ #define jinit_marker_writer	jIMWriter
+ #define jinit_master_decompress	jIDMaster
+@@ -311,6 +314,7 @@
+ #define jinit_input_controller	jIInCtlr
+ #define jinit_marker_reader	jIMReader
+ #define jinit_huff_decoder	jIHDecoder
++#define jinit_phuff_decoder	jIPHDecoder
+ #define jinit_arith_decoder	jIADecoder
+ #define jinit_inverse_dct	jIIDCT
+ #define jinit_upsampler		jIUpsampler
+@@ -321,41 +325,15 @@
+ #define jinit_memory_mgr	jIMemMgr
+ #define jdiv_round_up		jDivRound
+ #define jround_up		jRound
+-#define jzero_far		jZeroFar
+ #define jcopy_sample_rows	jCopySamples
+ #define jcopy_block_row		jCopyBlocks
++#define jzero_far		jZeroFar
+ #define jpeg_zigzag_order	jZIGTable
+ #define jpeg_natural_order	jZAGTable
+-#define jpeg_natural_order7	jZAG7Table
+-#define jpeg_natural_order6	jZAG6Table
+-#define jpeg_natural_order5	jZAG5Table
+-#define jpeg_natural_order4	jZAG4Table
+-#define jpeg_natural_order3	jZAG3Table
+-#define jpeg_natural_order2	jZAG2Table
+ #define jpeg_aritab		jAriTab
+ #endif /* NEED_SHORT_EXTERNAL_NAMES */
+ 
+ 
+-/* On normal machines we can apply MEMCOPY() and MEMZERO() to sample arrays
+- * and coefficient-block arrays.  This won't work on 80x86 because the arrays
+- * are FAR and we're assuming a small-pointer memory model.  However, some
+- * DOS compilers provide far-pointer versions of memcpy() and memset() even
+- * in the small-model libraries.  These will be used if USE_FMEM is defined.
+- * Otherwise, the routines in jutils.c do it the hard way.
+- */
+-
+-#ifndef NEED_FAR_POINTERS	/* normal case, same as regular macro */
+-#define FMEMZERO(target,size)	MEMZERO(target,size)
+-#else				/* 80x86 case */
+-#ifdef USE_FMEM
+-#define FMEMZERO(target,size)	_fmemset((void FAR *)(target), 0, (size_t)(size))
+-#else
+-EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
+-#define FMEMZERO(target,size)	jzero_far(target, size)
+-#endif
+-#endif
+-
+-
+ /* Compression module initialization routines */
+ EXTERN(void) jinit_compress_master JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_c_master_control JPP((j_compress_ptr cinfo,
+@@ -370,6 +348,7 @@
+ EXTERN(void) jinit_downsampler JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_huff_encoder JPP((j_compress_ptr cinfo));
++EXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_arith_encoder JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_marker_writer JPP((j_compress_ptr cinfo));
+ /* Decompression module initialization routines */
+@@ -383,6 +362,7 @@
+ EXTERN(void) jinit_input_controller JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_marker_reader JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_huff_decoder JPP((j_decompress_ptr cinfo));
++EXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_arith_decoder JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_upsampler JPP((j_decompress_ptr cinfo));
+@@ -401,17 +381,12 @@
+ 				    int num_rows, JDIMENSION num_cols));
+ EXTERN(void) jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row,
+ 				  JDIMENSION num_blocks));
++EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
+ /* Constant tables in jutils.c */
+ #if 0				/* This table is not actually needed in v6a */
+ extern const int jpeg_zigzag_order[]; /* natural coef order to zigzag order */
+ #endif
+ extern const int jpeg_natural_order[]; /* zigzag coef order to natural order */
+-extern const int jpeg_natural_order7[]; /* zz to natural order for 7x7 block */
+-extern const int jpeg_natural_order6[]; /* zz to natural order for 6x6 block */
+-extern const int jpeg_natural_order5[]; /* zz to natural order for 5x5 block */
+-extern const int jpeg_natural_order4[]; /* zz to natural order for 4x4 block */
+-extern const int jpeg_natural_order3[]; /* zz to natural order for 3x3 block */
+-extern const int jpeg_natural_order2[]; /* zz to natural order for 2x2 block */
+ 
+ /* Arithmetic coding probability estimation tables in jaricom.c */
+ extern const INT32 jpeg_aritab[];
+--- a/LibJPEG/transupp.h
++++ b/LibJPEG/transupp.h
+@@ -1,7 +1,7 @@
+ /*
+  * transupp.h
+  *
+- * Copyright (C) 1997-2011, Thomas G. Lane, Guido Vollbeding.
++ * Copyright (C) 1997-2009, Thomas G. Lane, Guido Vollbeding.
+  * This file is part of the Independent JPEG Group's software.
+  * For conditions of distribution and use, see the accompanying README file.
+  *
+@@ -57,7 +57,6 @@
+  * corner up and/or left to make it so, simultaneously increasing the region
+  * dimensions to keep the lower right crop corner unchanged.  (Thus, the
+  * output image covers at least the requested region, but may cover more.)
+- * The adjustment of the region dimensions may be optionally disabled.
+  *
+  * We also provide a lossless-resize option, which is kind of a lossless-crop
+  * operation in the DCT coefficient block domain - it discards higher-order
+@@ -107,15 +106,13 @@
+ 
+ /*
+  * Codes for crop parameters, which can individually be unspecified,
+- * positive or negative for xoffset or yoffset,
+- * positive or forced for width or height.
++ * positive, or negative.  (Negative width or height makes no sense, though.)
+  */
+ 
+ typedef enum {
+-        JCROP_UNSET,
+-        JCROP_POS,
+-        JCROP_NEG,
+-        JCROP_FORCE
++	JCROP_UNSET,
++	JCROP_POS,
++	JCROP_NEG
+ } JCROP_CODE;
+ 
+ /*
+@@ -131,14 +128,21 @@
+   boolean trim;			/* if TRUE, trim partial MCUs as needed */
+   boolean force_grayscale;	/* if TRUE, convert color image to grayscale */
+   boolean crop;			/* if TRUE, crop source image */
++  boolean slow_hflip;  /* For best performance, the JXFORM_FLIP_H transform
++                          normally modifies the source coefficients in place.
++                          Setting this to TRUE will instead use a slower,
++                          double-buffered algorithm, which leaves the source
++                          coefficients in tact (necessary if other transformed
++                          images must be generated from the same set of
++                          coefficients. */
+ 
+   /* Crop parameters: application need not set these unless crop is TRUE.
+    * These can be filled in by jtransform_parse_crop_spec().
+    */
+   JDIMENSION crop_width;	/* Width of selected region */
+-  JCROP_CODE crop_width_set;	/* (forced disables adjustment) */
++  JCROP_CODE crop_width_set;
+   JDIMENSION crop_height;	/* Height of selected region */
+-  JCROP_CODE crop_height_set;	/* (forced disables adjustment) */
++  JCROP_CODE crop_height_set;
+   JDIMENSION crop_xoffset;	/* X offset of selected region */
+   JCROP_CODE crop_xoffset_set;	/* (negative measures from right edge) */
+   JDIMENSION crop_yoffset;	/* Y offset of selected region */
+--- a/LibJPEG/transupp.c
++++ b/LibJPEG/transupp.c
+@@ -1,7 +1,8 @@
+ /*
+  * transupp.c
+  *
+- * Copyright (C) 1997-2011, Thomas G. Lane, Guido Vollbeding.
++ * Copyright (C) 1997-2009, Thomas G. Lane, Guido Vollbeding.
++ * Copyright (C) 2010, D. R. Commander.
+  * This file is part of the Independent JPEG Group's software.
+  * For conditions of distribution and use, see the accompanying README file.
+  *
+@@ -20,9 +21,19 @@
+ #include "jinclude.h"
+ #include "jpeglib.h"
+ #include "transupp.h"		/* My own external interface */
++#include "jpegcomp.h"
+ #include <ctype.h>		/* to declare isdigit() */
+ 
+ 
++#if JPEG_LIB_VERSION >= 70
++#define dstinfo_min_DCT_h_scaled_size dstinfo->min_DCT_h_scaled_size
++#define dstinfo_min_DCT_v_scaled_size dstinfo->min_DCT_v_scaled_size
++#else
++#define dstinfo_min_DCT_h_scaled_size DCTSIZE
++#define dstinfo_min_DCT_v_scaled_size DCTSIZE
++#endif
++
++
+ #if TRANSFORMS_SUPPORTED
+ 
+ /*
+@@ -134,7 +145,7 @@
+    * Partial iMCUs at the right edge are left untouched.
+    */
+   MCU_cols = srcinfo->output_width /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -200,7 +211,7 @@
+    * this is essentially the same as the routine above.
+    */
+   MCU_cols = srcinfo->output_width /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -265,7 +276,7 @@
+    * Partial iMCUs at the bottom edge are copied verbatim.
+    */
+   MCU_rows = srcinfo->output_height /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -393,7 +404,7 @@
+    * not mirrored.
+    */
+   MCU_cols = srcinfo->output_height /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -474,7 +485,7 @@
+    * not mirrored.
+    */
+   MCU_rows = srcinfo->output_width /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -542,9 +553,9 @@
+   jpeg_component_info *compptr;
+ 
+   MCU_cols = srcinfo->output_width /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+   MCU_rows = srcinfo->output_height /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -653,9 +664,9 @@
+   jpeg_component_info *compptr;
+ 
+   MCU_cols = srcinfo->output_height /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+   MCU_rows = srcinfo->output_width /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -771,7 +782,7 @@
+  * The routine returns TRUE if the spec string is valid, FALSE if not.
+  *
+  * The crop spec string should have the format
+- *	<width>[f]x<height>[f]{+-}<xoffset>{+-}<yoffset>
++ *	<width>x<height>{+-}<xoffset>{+-}<yoffset>
+  * where width, height, xoffset, and yoffset are unsigned integers.
+  * Each of the elements can be omitted to indicate a default value.
+  * (A weakness of this style is that it is not possible to omit xoffset
+@@ -793,22 +804,14 @@
+     /* fetch width */
+     if (! jt_read_integer(&spec, &info->crop_width))
+       return FALSE;
+-    if (*spec == 'f' || *spec == 'F') {
+-      spec++;
+-      info->crop_width_set = JCROP_FORCE;
+-    } else
+-      info->crop_width_set = JCROP_POS;
++    info->crop_width_set = JCROP_POS;
+   }
+-  if (*spec == 'x' || *spec == 'X') {
++  if (*spec == 'x' || *spec == 'X') {	
+     /* fetch height */
+     spec++;
+     if (! jt_read_integer(&spec, &info->crop_height))
+       return FALSE;
+-    if (*spec == 'f' || *spec == 'F') {
+-      spec++;
+-      info->crop_height_set = JCROP_FORCE;
+-    } else
+-      info->crop_height_set = JCROP_POS;
++    info->crop_height_set = JCROP_POS;
+   }
+   if (*spec == '+' || *spec == '-') {
+     /* fetch xoffset */
+@@ -897,7 +900,12 @@
+     info->num_components = srcinfo->num_components;
+ 
+   /* Compute output image dimensions and related values. */
++#if JPEG_LIB_VERSION >= 80
+   jpeg_core_output_dimensions(srcinfo);
++#else
++  srcinfo->output_width = srcinfo->image_width;
++  srcinfo->output_height = srcinfo->image_height;
++#endif
+ 
+   /* Return right away if -perfect is given and transformation is not perfect.
+    */
+@@ -905,15 +913,15 @@
+     if (info->num_components == 1) {
+       if (!jtransform_perfect_transform(srcinfo->output_width,
+ 	  srcinfo->output_height,
+-	  srcinfo->min_DCT_h_scaled_size,
+-	  srcinfo->min_DCT_v_scaled_size,
++	  srcinfo->_min_DCT_h_scaled_size,
++	  srcinfo->_min_DCT_v_scaled_size,
+ 	  info->transform))
+ 	return FALSE;
+     } else {
+       if (!jtransform_perfect_transform(srcinfo->output_width,
+ 	  srcinfo->output_height,
+-	  srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size,
+-	  srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size,
++	  srcinfo->max_h_samp_factor * srcinfo->_min_DCT_h_scaled_size,
++	  srcinfo->max_v_samp_factor * srcinfo->_min_DCT_v_scaled_size,
+ 	  info->transform))
+ 	return FALSE;
+     }
+@@ -932,26 +940,26 @@
+     info->output_width = srcinfo->output_height;
+     info->output_height = srcinfo->output_width;
+     if (info->num_components == 1) {
+-      info->iMCU_sample_width = srcinfo->min_DCT_v_scaled_size;
+-      info->iMCU_sample_height = srcinfo->min_DCT_h_scaled_size;
++      info->iMCU_sample_width = srcinfo->_min_DCT_v_scaled_size;
++      info->iMCU_sample_height = srcinfo->_min_DCT_h_scaled_size;
+     } else {
+       info->iMCU_sample_width =
+-	srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
++	srcinfo->max_v_samp_factor * srcinfo->_min_DCT_v_scaled_size;
+       info->iMCU_sample_height =
+-	srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
++	srcinfo->max_h_samp_factor * srcinfo->_min_DCT_h_scaled_size;
+     }
+     break;
+   default:
+     info->output_width = srcinfo->output_width;
+     info->output_height = srcinfo->output_height;
+     if (info->num_components == 1) {
+-      info->iMCU_sample_width = srcinfo->min_DCT_h_scaled_size;
+-      info->iMCU_sample_height = srcinfo->min_DCT_v_scaled_size;
++      info->iMCU_sample_width = srcinfo->_min_DCT_h_scaled_size;
++      info->iMCU_sample_height = srcinfo->_min_DCT_v_scaled_size;
+     } else {
+       info->iMCU_sample_width =
+-	srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
++	srcinfo->max_h_samp_factor * srcinfo->_min_DCT_h_scaled_size;
+       info->iMCU_sample_height =
+-	srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
++	srcinfo->max_v_samp_factor * srcinfo->_min_DCT_v_scaled_size;
+     }
+     break;
+   }
+@@ -988,16 +996,10 @@
+     else
+       yoffset = info->crop_yoffset;
+     /* Now adjust so that upper left corner falls at an iMCU boundary */
+-    if (info->crop_width_set == JCROP_FORCE)
+-      info->output_width = info->crop_width;
+-    else
+-      info->output_width =
+-        info->crop_width + (xoffset % info->iMCU_sample_width);
+-    if (info->crop_height_set == JCROP_FORCE)
+-      info->output_height = info->crop_height;
+-    else
+-      info->output_height =
+-        info->crop_height + (yoffset % info->iMCU_sample_height);
++    info->output_width =
++      info->crop_width + (xoffset % info->iMCU_sample_width);
++    info->output_height =
++      info->crop_height + (yoffset % info->iMCU_sample_height);
+     /* Save x/y offsets measured in iMCUs */
+     info->x_crop_offset = xoffset / info->iMCU_sample_width;
+     info->y_crop_offset = yoffset / info->iMCU_sample_height;
+@@ -1020,7 +1022,7 @@
+   case JXFORM_FLIP_H:
+     if (info->trim)
+       trim_right_edge(info, srcinfo->output_width);
+-    if (info->y_crop_offset != 0)
++    if (info->y_crop_offset != 0 || info->slow_hflip)
+       need_workspace = TRUE;
+     /* do_flip_h_no_crop doesn't need a workspace array */
+     break;
+@@ -1124,9 +1126,11 @@
+   jtemp = dstinfo->image_width;
+   dstinfo->image_width = dstinfo->image_height;
+   dstinfo->image_height = jtemp;
++#if JPEG_LIB_VERSION >= 70
+   itemp = dstinfo->min_DCT_h_scaled_size;
+   dstinfo->min_DCT_h_scaled_size = dstinfo->min_DCT_v_scaled_size;
+   dstinfo->min_DCT_v_scaled_size = itemp;
++#endif
+ 
+   /* Transpose sampling factors */
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+@@ -1362,8 +1366,10 @@
+   /* Correct the destination's image dimensions as necessary
+    * for rotate/flip, resize, and crop operations.
+    */
++#if JPEG_LIB_VERSION >= 70
+   dstinfo->jpeg_width = info->output_width;
+   dstinfo->jpeg_height = info->output_height;
++#endif
+ 
+   /* Transpose destination image parameters */
+   switch (info->transform) {
+@@ -1371,9 +1377,17 @@
+   case JXFORM_TRANSVERSE:
+   case JXFORM_ROT_90:
+   case JXFORM_ROT_270:
++#if JPEG_LIB_VERSION < 70
++    dstinfo->image_width = info->output_height;
++    dstinfo->image_height = info->output_width;
++#endif
+     transpose_critical_parameters(dstinfo);
+     break;
+   default:
++#if JPEG_LIB_VERSION < 70
++    dstinfo->image_width = info->output_width;
++    dstinfo->image_height = info->output_height;
++#endif
+     break;
+   }
+ 
+@@ -1389,6 +1403,7 @@
+       GETJOCTET(srcinfo->marker_list->data[5]) == 0) {
+     /* Suppress output of JFIF marker */
+     dstinfo->write_JFIF_header = FALSE;
++#if JPEG_LIB_VERSION >= 70
+     /* Adjust Exif image parameters */
+     if (dstinfo->jpeg_width != srcinfo->image_width ||
+ 	dstinfo->jpeg_height != srcinfo->image_height)
+@@ -1396,6 +1411,7 @@
+       adjust_exif_parameters(srcinfo->marker_list->data + 6,
+ 	srcinfo->marker_list->data_length - 6,
+ 	dstinfo->jpeg_width, dstinfo->jpeg_height);
++#endif
+   }
+ 
+   /* Return the appropriate output data set */
+@@ -1432,7 +1448,7 @@
+ 	      src_coef_arrays, dst_coef_arrays);
+     break;
+   case JXFORM_FLIP_H:
+-    if (info->y_crop_offset != 0)
++    if (info->y_crop_offset != 0 || info->slow_hflip)
+       do_flip_h(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ 		src_coef_arrays, dst_coef_arrays);
+     else

diff --git a/media-libs/freeimage/files/freeimage-3.15.4-unbundling.patch b/media-libs/freeimage/files/freeimage-3.15.4-unbundling.patch
index f770b7e..ac2ac54 100644
--- a/media-libs/freeimage/files/freeimage-3.15.4-unbundling.patch
+++ b/media-libs/freeimage/files/freeimage-3.15.4-unbundling.patch
@@ -5,8 +5,8 @@ lots of fixes here:
 	- make static lib build optional
 	- link with CXX and CXXFLAGS (since this is C++ code)
 
---- Makefile.gnu
-+++ Makefile.gnu
+--- a/Makefile.gnu
++++ b/Makefile.gnu
 @@ -11,7 +11,24 @@
  # Converts cr/lf to just lf
  DOS2UNIX = dos2unix
@@ -53,8 +53,8 @@ lots of fixes here:
  	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
  	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
  #	ldconfig
---- Source/FreeImage/J2KHelper.cpp
-+++ Source/FreeImage/J2KHelper.cpp
+--- a/Source/FreeImage/J2KHelper.cpp
++++ b/Source/FreeImage/J2KHelper.cpp
 @@ -21,7 +21,7 @@
  
  #include "FreeImage.h"
@@ -64,8 +64,8 @@ lots of fixes here:
  
  /**
  Divide an integer by a power of 2 and round upwards
---- Source/FreeImage/PluginEXR.cpp
-+++ Source/FreeImage/PluginEXR.cpp
+--- a/Source/FreeImage/PluginEXR.cpp
++++ b/Source/FreeImage/PluginEXR.cpp
 @@ -22,16 +22,16 @@
  
  #include "FreeImage.h"
@@ -93,8 +93,8 @@ lots of fixes here:
  
  
  // ==========================================================
---- Source/FreeImage/PluginJ2K.cpp
-+++ Source/FreeImage/PluginJ2K.cpp
+--- a/Source/FreeImage/PluginJ2K.cpp
++++ b/Source/FreeImage/PluginJ2K.cpp
 @@ -21,7 +21,7 @@
  
  #include "FreeImage.h"
@@ -104,8 +104,8 @@ lots of fixes here:
  
  // ==========================================================
  // Plugin Interface
---- Source/FreeImage/PluginJP2.cpp
-+++ Source/FreeImage/PluginJP2.cpp
+--- a/Source/FreeImage/PluginJP2.cpp
++++ b/Source/FreeImage/PluginJP2.cpp
 @@ -21,7 +21,7 @@
  
  #include "FreeImage.h"
@@ -115,8 +115,8 @@ lots of fixes here:
  
  // ==========================================================
  // Plugin Interface
---- Source/FreeImage/PluginPNG.cpp
-+++ Source/FreeImage/PluginPNG.cpp
+--- a/Source/FreeImage/PluginPNG.cpp
++++ b/Source/FreeImage/PluginPNG.cpp
 @@ -37,8 +37,8 @@
  
  // ----------------------------------------------------------
@@ -128,8 +128,8 @@ lots of fixes here:
  
  // ----------------------------------------------------------
  
---- Source/transupp.c
-+++ Source/transupp.c
+--- a/Source/transupp.c
++++ b/Source/transupp.c
 @@ -15,8 +15,7 @@
  /* Although this file really shouldn't have access to the library internals,
   * it's helpful to let it call jround_up() and jcopy_block_row().
@@ -140,8 +140,8 @@ lots of fixes here:
  #include "jinclude.h"
  #include "jpeglib.h"
  #include "transupp.h"		/* My own external interface */
---- Source/FreeImage/ZLibInterface.cpp
-+++ Source/FreeImage/ZLibInterface.cpp
+--- a/Source/FreeImage/ZLibInterface.cpp
++++ b/Source/FreeImage/ZLibInterface.cpp
 @@ -19,10 +19,10 @@
  // Use at your own risk!
  // ==========================================================
@@ -155,8 +155,8 @@ lots of fixes here:
  
  /**
  Compresses a source buffer into a target buffer, using the ZLib library. 
---- Source/FreeImage/PluginG3.cpp
-+++ Source/FreeImage/PluginG3.cpp
+--- a/Source/FreeImage/PluginG3.cpp
++++ b/Source/FreeImage/PluginG3.cpp
 @@ -20,7 +20,7 @@
  // Use at your own risk!
  // ==========================================================
@@ -166,8 +166,8 @@ lots of fixes here:
  
  #include "FreeImage.h"
  #include "Utilities.h"
---- Source/FreeImage/PluginJPEG.cpp
-+++ Source/FreeImage/PluginJPEG.cpp
+--- a/Source/FreeImage/PluginJPEG.cpp
++++ b/Source/FreeImage/PluginJPEG.cpp
 @@ -35,11 +35,15 @@
  #undef FAR
  #include <setjmp.h>
@@ -187,8 +187,8 @@ lots of fixes here:
  #include "FreeImage.h"
  #include "Utilities.h"
  
---- Source/FreeImageToolkit/JPEGTransform.cpp
-+++ Source/FreeImageToolkit/JPEGTransform.cpp
+--- a/Source/FreeImageToolkit/JPEGTransform.cpp
++++ b/Source/FreeImageToolkit/JPEGTransform.cpp
 @@ -25,10 +25,11 @@
  #undef FAR
  #include <setjmp.h>
@@ -205,8 +205,8 @@ lots of fixes here:
  }
  
  #include "FreeImage.h"
---- Makefile.fip
-+++ Makefile.fip
+--- a/Makefile.fip
++++ b/Makefile.fip
 @@ -11,7 +11,24 @@
  # Converts cr/lf to just lf
  DOS2UNIX = dos2unix
@@ -257,8 +257,8 @@ lots of fixes here:
  
  clean:
  	rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
---- Makefile.srcs
-+++ Makefile.srcs
+--- a/Makefile.srcs
++++ b/Makefile.srcs
 @@ -1,6 +1,14 @@
 +USE_EXR ?= yes
 +USE_JPEG ?= yes
@@ -400,8 +400,8 @@ lots of fixes here:
 +INCLUDE-$(USE_TIFF)   += -DUSE_TIFF   $(shell $(PKG_CONFIG) --cflags-only-I libtiff-4 IlmBase)
 +INCLUDE-$(USE_RAW)    += -DUSE_RAW    $(shell $(PKG_CONFIG) --cflags-only-I libraw)
 +INCLUDE = $(INCLUDE-yes)
---- fipMakefile.srcs
-+++ fipMakefile.srcs
+--- a/fipMakefile.srcs
++++ b/fipMakefile.srcs
 @@ -1,6 +1,14 @@
 +USE_EXR ?= yes
 +USE_JPEG ?= yes
@@ -529,8 +529,8 @@ lots of fixes here:
  INCLUDE = -I. \
  	-ISource \
  	-ISource/Metadata \
---- Source/FreeImage/PluginRAW.cpp
-+++ Source/FreeImage/PluginRAW.cpp
+--- a/Source/FreeImage/PluginRAW.cpp
++++ b/Source/FreeImage/PluginRAW.cpp
 @@ -19,7 +19,7 @@
  // Use at your own risk!
  // ==========================================================
@@ -540,8 +540,8 @@ lots of fixes here:
  
  #include "FreeImage.h"
  #include "Utilities.h"
---- Source/Metadata/XTIFF.cpp
-+++ Source/Metadata/XTIFF.cpp
+--- a/Source/Metadata/XTIFF.cpp
++++ b/Source/Metadata/XTIFF.cpp
 @@ -29,7 +29,7 @@
  #pragma warning (disable : 4786) // identifier was truncated to 'number' characters
  #endif
@@ -551,8 +551,8 @@ lots of fixes here:
  
  #include "FreeImage.h"
  #include "Utilities.h"
---- Source/FreeImage/PluginTIFF.cpp
-+++ Source/FreeImage/PluginTIFF.cpp
+--- a/Source/FreeImage/PluginTIFF.cpp
++++ b/Source/FreeImage/PluginTIFF.cpp
 @@ -37,9 +37,9 @@
  
  #include "FreeImage.h"
@@ -565,8 +565,8 @@ lots of fixes here:
  
  #include "FreeImageIO.h"
  #include "PSDParser.h"
---- Source/tiffiop.h
-+++ Source/tiffiop.h
+--- a/Source/tiffiop.h
++++ b/Source/tiffiop.h
 @@ -30,7 +30,9 @@
   * ``Library-private'' definitions.
   */
@@ -578,8 +578,8 @@ lots of fixes here:
  
  #ifdef HAVE_FCNTL_H
  # include <fcntl.h>
---- Source/FreeImage/Plugin.cpp
-+++ Source/FreeImage/Plugin.cpp
+--- a/Source/FreeImage/Plugin.cpp
++++ b/Source/FreeImage/Plugin.cpp
 @@ -223,23 +223,33 @@
  			*/
  			s_plugins->AddNode(InitBMP);

diff --git a/media-libs/freeimage/freeimage-3.15.4-r1.ebuild b/media-libs/freeimage/freeimage-3.15.4-r1.ebuild
new file mode 100644
index 00000000..2b58afe
--- /dev/null
+++ b/media-libs/freeimage/freeimage-3.15.4-r1.ebuild
@@ -0,0 +1,116 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit toolchain-funcs eutils
+
+MY_PN=FreeImage
+MY_PV=${PV//.}
+MY_P=${MY_PN}${MY_PV}
+
+DESCRIPTION="Image library supporting many formats"
+HOMEPAGE="http://freeimage.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${MY_P}.zip
+	mirror://sourceforge/${PN}/${MY_P}.pdf"
+
+LICENSE="|| ( GPL-2 FIPL-1.0 )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86 ~amd64-linux ~x86-linux"
+IUSE="jpeg jpeg2k mng openexr png raw static-libs tiff"
+
+# The tiff/ilmbase isn't a typo.  The TIFF plugin cheats and
+# uses code from it to handle 16bit<->float conversions.
+RDEPEND="
+	sys-libs/zlib
+	jpeg? ( virtual/jpeg:0 )
+	jpeg2k? ( media-libs/openjpeg:0= )
+	mng? ( media-libs/libmng:= )
+	openexr? ( media-libs/openexr:= )
+	png? ( media-libs/libpng:0= )
+	raw? ( media-libs/libraw:= )
+	tiff? (
+		media-libs/ilmbase:=
+		media-libs/tiff:0
+	)"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig
+	app-arch/unzip"
+
+S=${WORKDIR}/${MY_PN}
+
+DOCS=( "${DISTDIR}"/${MY_P}.pdf README.linux Whatsnew.txt )
+PATCHES=(
+	"${FILESDIR}"/${PN}-3.15.4-{unbundling,raw}.patch
+	"${FILESDIR}"/${PN}-3.15.4-CVE-2016-5684-1.patch
+	"${FILESDIR}"/${PN}-3.15.4-CVE-2016-5684-2.patch
+	"${FILESDIR}"/${PN}-3.15.4-CVE-2015-0852.patch
+)
+
+src_prepare() {
+	pushd Source >/dev/null || die
+	if has_version ">=media-libs/libjpeg-turbo-1.2.1"; then
+		# Patch from Christian Heimes's fork (thanks)
+		# https://bitbucket.org/tiran/freeimageturbo
+		eapply "${FILESDIR}"/${PN}-3.15.4-libjpeg-turbo.patch
+		cp LibJPEG/{jpegcomp.h,jpegint.h} . || die
+	fi
+	cp LibJPEG/{transupp.c,transupp.h,jinclude.h} . || die
+	cp LibTIFF4/{tiffiop,tif_dir}.h . || die
+	rm -rf LibPNG LibMNG LibOpenJPEG ZLib OpenEXR LibRawLite LibTIFF4 LibJPEG || die
+	popd >/dev/null || die
+
+	edos2unix Makefile.{gnu,fip,srcs} fipMakefile.srcs */*.h */*/*.cpp
+	sed -i \
+		-e "s:/./:/:g" \
+		-e "s: ./: :g" \
+		-e 's: Source: \\\n\tSource:g' \
+		-e 's: Wrapper: \\\n\tWrapper:g' \
+		-e 's: Examples: \\\n\tExamples:g' \
+		-e 's: TestAPI: \\\n\tTestAPI:g' \
+		-e 's: -ISource: \\\n\t-ISource:g' \
+		-e 's: -IWrapper: \\\n\t-IWrapper:g' \
+		Makefile.srcs fipMakefile.srcs || die
+	sed -i \
+		-e "/LibJPEG/d" \
+		-e "/LibPNG/d" \
+		-e "/LibTIFF/d" \
+		-e "/Source\/ZLib/d" \
+		-e "/LibOpenJPEG/d" \
+		-e "/OpenEXR/d" \
+		-e "/LibRawLite/d" \
+		-e "/LibMNG/d" \
+		Makefile.srcs fipMakefile.srcs || die
+
+	default
+}
+
+foreach_make() {
+	local m
+	for m in Makefile.{gnu,fip} ; do
+		emake -f ${m} \
+			USE_EXR=$(usex openexr) \
+			USE_JPEG=$(usex jpeg) \
+			USE_JPEG2K=$(usex jpeg2k) \
+			USE_MNG=$(usex mng) \
+			USE_PNG=$(usex png) \
+			USE_TIFF=$(usex tiff) \
+			USE_RAW=$(usex raw) \
+			$(usex static-libs '' STATICLIB=) \
+			"$@"
+	done
+}
+
+src_compile() {
+	tc-export AR PKG_CONFIG
+	foreach_make \
+		CXX="$(tc-getCXX) -fPIC" \
+		CC="$(tc-getCC) -fPIC" \
+		${MY_PN}
+}
+
+src_install() {
+	foreach_make install DESTDIR="${ED}" INSTALLDIR="${ED%/}"/usr/$(get_libdir)
+	einstalldocs
+}


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/freeimage/, media-libs/freeimage/files/
@ 2018-03-25 20:15 James Le Cuirot
  0 siblings, 0 replies; 6+ messages in thread
From: James Le Cuirot @ 2018-03-25 20:15 UTC (permalink / raw
  To: gentoo-commits

commit:     1d002912bd07e18c25b0142774a7ab8b97f7489c
Author:     Peter Levine <plevine457 <AT> gmail <DOT> com>
AuthorDate: Sun Mar 25 03:38:40 2018 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sun Mar 25 20:14:38 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d002912

media-libs/freeimage: Fix building against =media-libs/jpeg-9*

Bug: https://bugs.gentoo.org/647422
Package-Manager: Portage-2.3.16, Repoman-2.3.6
Closes: https://github.com/gentoo/gentoo/pull/7603

 .../files/freeimage-3.15.4-libjpeg9.patch          | 45 ++++++++++++++++++++++
 media-libs/freeimage/freeimage-3.15.4-r1.ebuild    |  3 +-
 2 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/media-libs/freeimage/files/freeimage-3.15.4-libjpeg9.patch b/media-libs/freeimage/files/freeimage-3.15.4-libjpeg9.patch
new file mode 100644
index 00000000000..24eb9e010fc
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.15.4-libjpeg9.patch
@@ -0,0 +1,45 @@
+Bug: https://bugs.gentoo.org/647422
+Upstream Patch: https://sourceforge.net/p/freeimage/patches/130/
+
+diff -Naur a/Source/FreeImage/PluginJPEG.cpp b/Source/FreeImage/PluginJPEG.cpp
+--- a/Source/FreeImage/PluginJPEG.cpp	2018-03-24 23:24:11.062695375 -0400
++++ b/Source/FreeImage/PluginJPEG.cpp	2018-03-24 23:25:39.451124161 -0400
+@@ -1586,14 +1586,14 @@
+ 
+ 			// thumbnail support (JFIF 1.02 extension markers)
+ 			if(FreeImage_GetThumbnail(dib) != NULL) {
+-				cinfo.write_JFIF_header = 1; //<### force it, though when color is CMYK it will be incorrect
++				cinfo.write_JFIF_header = static_cast<boolean>(1); //<### force it, though when color is CMYK it will be incorrect
+ 				cinfo.JFIF_minor_version = 2;
+ 			}
+ 
+ 			// baseline JPEG support
+ 			if ((flags & JPEG_BASELINE) ==  JPEG_BASELINE) {
+-				cinfo.write_JFIF_header = 0;	// No marker for non-JFIF colorspaces
+-				cinfo.write_Adobe_marker = 0;	// write no Adobe marker by default				
++				cinfo.write_JFIF_header = static_cast<boolean>(0);	// No marker for non-JFIF colorspaces
++				cinfo.write_Adobe_marker = static_cast<boolean>(0);	// write no Adobe marker by default
+ 			}
+ 
+ 			// set subsampling options if required
+diff -Naur a/Source/FreeImage.h b/Source/FreeImage.h
+--- a/Source/FreeImage.h	2018-03-24 23:24:11.066695395 -0400
++++ b/Source/FreeImage.h	2018-03-24 23:26:35.945391182 -0400
+@@ -117,12 +117,17 @@
+ #ifndef _WINDOWS_
+ #define _WINDOWS_
+ 
++#if JPEG_LIB_VERSION < 90
++
+ #ifndef FALSE
+ #define FALSE 0
+ #endif
+ #ifndef TRUE
+ #define TRUE 1
+ #endif
++
++#endif
++
+ #ifndef NULL
+ #define NULL 0
+ #endif

diff --git a/media-libs/freeimage/freeimage-3.15.4-r1.ebuild b/media-libs/freeimage/freeimage-3.15.4-r1.ebuild
index 666fba9ba67..d40deb29685 100644
--- a/media-libs/freeimage/freeimage-3.15.4-r1.ebuild
+++ b/media-libs/freeimage/freeimage-3.15.4-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
@@ -45,6 +45,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-3.15.4-CVE-2016-5684-1.patch
 	"${FILESDIR}"/${PN}-3.15.4-CVE-2016-5684-2.patch
 	"${FILESDIR}"/${PN}-3.15.4-CVE-2015-0852.patch
+	"${FILESDIR}"/${PN}-3.15.4-libjpeg9.patch
 )
 
 src_prepare() {


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/freeimage/, media-libs/freeimage/files/
@ 2019-04-14 12:44 James Le Cuirot
  0 siblings, 0 replies; 6+ messages in thread
From: James Le Cuirot @ 2019-04-14 12:44 UTC (permalink / raw
  To: gentoo-commits

commit:     3b0e97797339cd968083a5da4829db5d6c81e619
Author:     Patrick Nicolas <patricknicolas <AT> laposte <DOT> net>
AuthorDate: Tue Nov 13 21:11:07 2018 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sun Apr 14 12:44:08 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3b0e9779

media-libs/freeimage: version bump to 3.18.0

Bug: https://bugs.gentoo.org/671106
Signed-off-by: Patrick Nicolas <patricknicolas <AT> laposte.net>

Package-Manager: Portage-2.3.51, Repoman-2.3.12
Closes: https://github.com/gentoo/gentoo/pull/10411
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 media-libs/freeimage/Manifest                      |   2 +
 .../files/freeimage-3.18.0-disable-plugin-G3.patch |  56 ++
 .../freeimage/files/freeimage-3.18.0-raw.patch     |  15 +
 .../freeimage-3.18.0-remove-jpeg-transform.patch   |  82 +++
 ...image-3.18.0-rename-jpeg_read_icc_profile.patch |  34 +
 .../files/freeimage-3.18.0-unbundling.patch        | 724 +++++++++++++++++++++
 media-libs/freeimage/freeimage-3.18.0.ebuild       | 116 ++++
 7 files changed, 1029 insertions(+)

diff --git a/media-libs/freeimage/Manifest b/media-libs/freeimage/Manifest
index 79302f32dcf..d7eb8ba5764 100644
--- a/media-libs/freeimage/Manifest
+++ b/media-libs/freeimage/Manifest
@@ -1,2 +1,4 @@
 DIST FreeImage3154.pdf 1007480 BLAKE2B 801d39c4b7eeab833c7225c2d53a3a0e8e9d2a91ea3f7173047705c8b750706f3a4a9ac60f7ba9d5e8150b548bd5add242e9e40f498c57ad9e5a623972bbb239 SHA512 cebde5e2609c9a0c06b4e07e1c595d7d6714895095cd9935f59c8b2ff9b34116248f5453b41f469f6242d87cae79be82d59f6a9ec0f75b1ea3df61ac1f651b28
 DIST FreeImage3154.zip 5513923 BLAKE2B 376b00faaae2c10c9eb36f89726a022734e109ca7ca11951c9e6525f21d2a7ee305ec195be29a272ecb7935ba5d0b61f3d84f26a6aec5f7a9229d5e47cd665bb SHA512 0db9eb7d0ed8e08e10ff4fa274c4484541ca119c3d437a85fdc3b2d9232bf14a7877c79b1e62c8c99278d7020a9f623c161f2342475f3ee526233404138112cc
+DIST FreeImage3180.pdf 1665541 BLAKE2B 5d40ee6fa0a1e73df0cc961edbd70a2835ef88fb540f123fd81f2bb826d4c949d2a60dfe3fc02406ce632a389935abac0d471c963c9803b8c2aece2b48afb003 SHA512 632f68b14f7a5916a1b95bbf86c268d0afe786a2537472301bb002254aa3195f046efb41f073133633211e985e90edbb99285ab6f42bc55501c756292a3c4c03
+DIST FreeImage3180.zip 7415716 BLAKE2B b695271f4e80eb304eccde66e38b5095eceae51fbe0dd97df69c55f364f8440d8c97139b8edc2f01c400f5c53a7336fdfab1e28aa3ea04f485901d5def443d25 SHA512 9d9cc7e2d57552c3115e277aeb036e0455204d389026b17a3f513da5be1fd595421655488bb1ec2f76faebed66049119ca55e26e2a6d37024b3fb7ef36ad4818

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-disable-plugin-G3.patch b/media-libs/freeimage/files/freeimage-3.18.0-disable-plugin-G3.patch
new file mode 100644
index 00000000000..a541bfa9464
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.18.0-disable-plugin-G3.patch
@@ -0,0 +1,56 @@
+From d07a573fa1e0593e6af4f59e7bef15b78a8edfca Mon Sep 17 00:00:00 2001
+From: Patrick Nicolas <xytovl@laposte.net>
+Date: Tue, 13 Nov 2018 20:48:39 +0100
+Subject: [PATCH 4/4] disable plugin G3
+
+---
+ Makefile.srcs               | 3 ---
+ Source/FreeImage/Plugin.cpp | 3 ---
+ fipMakefile.srcs            | 3 ---
+ 3 files changed, 9 deletions(-)
+
+diff --git a/Makefile.srcs b/Makefile.srcs
+index a306aae..dac3ec2 100644
+--- a/Makefile.srcs
++++ b/Makefile.srcs
+@@ -37,9 +37,6 @@ SRCS-yes += \
+ SRCS-$(USE_EXR) += \
+ 	Source/FreeImage/PluginEXR.cpp \
+ 
+-SRCS-$(USE_TIFF) += \
+-	Source/FreeImage/PluginG3.cpp \
+-
+ SRCS-yes += \
+ 	Source/FreeImage/PluginGIF.cpp \
+ 	Source/FreeImage/PluginHDR.cpp \
+diff --git a/Source/FreeImage/Plugin.cpp b/Source/FreeImage/Plugin.cpp
+index 7768a32..43d8b6d 100644
+--- a/Source/FreeImage/Plugin.cpp
++++ b/Source/FreeImage/Plugin.cpp
+@@ -273,9 +273,6 @@ FreeImage_Initialise(BOOL load_local_plugins_only) {
+ 			s_plugins->AddNode(InitDDS);
+ 	        s_plugins->AddNode(InitGIF);
+ 	        s_plugins->AddNode(InitHDR);
+-#ifdef USE_TIFF
+-			s_plugins->AddNode(InitG3);
+-#endif
+ 			s_plugins->AddNode(InitSGI);
+ #ifdef USE_EXR
+ 			s_plugins->AddNode(InitEXR);
+diff --git a/fipMakefile.srcs b/fipMakefile.srcs
+index 74c9ec0..8a48b67 100644
+--- a/fipMakefile.srcs
++++ b/fipMakefile.srcs
+@@ -37,9 +37,6 @@ SRCS-yes += \
+ SRCS-$(USE_EXR) += \
+ 	Source/FreeImage/PluginEXR.cpp \
+ 
+-SRCS-$(USE_TIFF) += \
+-	Source/FreeImage/PluginG3.cpp \
+-
+ SRCS-yes += \
+ 	Source/FreeImage/PluginGIF.cpp \
+ 	Source/FreeImage/PluginHDR.cpp \
+-- 
+2.19.1
+

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-raw.patch b/media-libs/freeimage/files/freeimage-3.18.0-raw.patch
new file mode 100644
index 00000000000..94accaba969
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.18.0-raw.patch
@@ -0,0 +1,15 @@
+Index: FreeImage/Source/FreeImage.h
+===================================================================
+--- FreeImage.orig/Source/FreeImage.h
++++ FreeImage/Source/FreeImage.h
+@@ -155,8 +155,10 @@ typedef uint8_t BYTE;
+ typedef uint16_t WORD;
+ typedef uint32_t DWORD;
+ typedef int32_t LONG;
++#ifndef _LIBRAW_TYPES_H
+ typedef int64_t INT64;
+ typedef uint64_t UINT64;
++#endif
+ #else
+ // MS is not C99 ISO compliant
+ typedef long BOOL;

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-remove-jpeg-transform.patch b/media-libs/freeimage/files/freeimage-3.18.0-remove-jpeg-transform.patch
new file mode 100644
index 00000000000..fb79cf7b513
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.18.0-remove-jpeg-transform.patch
@@ -0,0 +1,82 @@
+From cb27fc742dd0b569f9ffe91a99ebeb5f077971da Mon Sep 17 00:00:00 2001
+From: Patrick Nicolas <xytovl@laposte.net>
+Date: Tue, 13 Nov 2018 20:27:59 +0100
+Subject: [PATCH 2/4] remove jpeg transform
+
+---
+ Makefile.srcs      | 7 -------
+ Source/FreeImage.h | 2 ++
+ fipMakefile.srcs   | 8 --------
+ 3 files changed, 2 insertions(+), 15 deletions(-)
+
+diff --git a/Makefile.srcs b/Makefile.srcs
+index cb41903..a306aae 100644
+--- a/Makefile.srcs
++++ b/Makefile.srcs
+@@ -141,17 +141,10 @@ SRCS-yes += \
+ 	Source/FreeImageToolkit/CopyPaste.cpp \
+ 	Source/FreeImageToolkit/Display.cpp \
+ 	Source/FreeImageToolkit/Flip.cpp \
+-
+-SRCS-$(USE_JPEG) += \
+-	Source/FreeImageToolkit/JPEGTransform.cpp \
+-
+-SRCS-yes += \
+ 	Source/FreeImageToolkit/MultigridPoissonSolver.cpp \
+ 	Source/FreeImageToolkit/Rescale.cpp \
+ 	Source/FreeImageToolkit/Resize.cpp \
+ 
+-SRCS-$(USE_JPEG) += \
+-	Source/transupp.c
+ SRCS = $(SRCS-yes)
+ 
+ INCLS = Dist/FreeImage.h \
+diff --git a/Source/FreeImage.h b/Source/FreeImage.h
+index 12182cd..ac4e6a0 100644
+--- a/Source/FreeImage.h
++++ b/Source/FreeImage.h
+@@ -1089,6 +1089,7 @@ DLL_API const char* DLL_CALLCONV FreeImage_TagToString(FREE_IMAGE_MDMODEL model,
+ // JPEG lossless transformation routines
+ // --------------------------------------------------------------------------
+ 
++#if 0 // not supported on Gentoo
+ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransform(const char *src_file, const char *dst_file, FREE_IMAGE_JPEG_OPERATION operation, BOOL perfect FI_DEFAULT(TRUE));
+ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformU(const wchar_t *src_file, const wchar_t *dst_file, FREE_IMAGE_JPEG_OPERATION operation, BOOL perfect FI_DEFAULT(TRUE));
+ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGCrop(const char *src_file, const char *dst_file, int left, int top, int right, int bottom);
+@@ -1097,6 +1098,7 @@ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformFromHandle(FreeImageIO* src_io,
+ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformCombined(const char *src_file, const char *dst_file, FREE_IMAGE_JPEG_OPERATION operation, int* left, int* top, int* right, int* bottom, BOOL perfect FI_DEFAULT(TRUE));
+ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformCombinedU(const wchar_t *src_file, const wchar_t *dst_file, FREE_IMAGE_JPEG_OPERATION operation, int* left, int* top, int* right, int* bottom, BOOL perfect FI_DEFAULT(TRUE));
+ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformCombinedFromMemory(FIMEMORY* src_stream, FIMEMORY* dst_stream, FREE_IMAGE_JPEG_OPERATION operation, int* left, int* top, int* right, int* bottom, BOOL perfect FI_DEFAULT(TRUE));
++#endif
+ 
+ 
+ // --------------------------------------------------------------------------
+diff --git a/fipMakefile.srcs b/fipMakefile.srcs
+index e58f046..74c9ec0 100644
+--- a/fipMakefile.srcs
++++ b/fipMakefile.srcs
+@@ -141,11 +141,6 @@ SRCS-yes += \
+ 	Source/FreeImageToolkit/CopyPaste.cpp \
+ 	Source/FreeImageToolkit/Display.cpp \
+ 	Source/FreeImageToolkit/Flip.cpp \
+-
+-SRCS-$(USE_JPEG) += \
+-	Source/FreeImageToolkit/JPEGTransform.cpp \
+-
+-SRCS-yes += \
+ 	Source/FreeImageToolkit/MultigridPoissonSolver.cpp \
+ 	Source/FreeImageToolkit/Rescale.cpp \
+ 	Source/FreeImageToolkit/Resize.cpp \
+@@ -157,9 +152,6 @@ SRCS-yes += \
+ 	Wrapper/FreeImagePlus/src/fipWinImage.cpp \
+ 	Wrapper/FreeImagePlus/src/FreeImagePlus.cpp 
+ 
+-SRCS-$(USE_JPEG) += \
+-	Source/transupp.c
+-
+ SRCS = $(SRCS-yes)
+ INCLUDE = -I. \
+ 	-ISource \
+-- 
+2.19.1
+

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-rename-jpeg_read_icc_profile.patch b/media-libs/freeimage/files/freeimage-3.18.0-rename-jpeg_read_icc_profile.patch
new file mode 100644
index 00000000000..982d00747c5
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.18.0-rename-jpeg_read_icc_profile.patch
@@ -0,0 +1,34 @@
+From 27c02a3ed6196b4b0bab5524f2825da58a76d706 Mon Sep 17 00:00:00 2001
+From: Patrick Nicolas <xytovl@laposte.net>
+Date: Tue, 13 Nov 2018 20:28:51 +0100
+Subject: [PATCH 3/4] rename jpeg_read_icc_profile
+
+---
+ Source/FreeImage/PluginJPEG.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Source/FreeImage/PluginJPEG.cpp b/Source/FreeImage/PluginJPEG.cpp
+index dd97e63..569f71e 100644
+--- a/Source/FreeImage/PluginJPEG.cpp
++++ b/Source/FreeImage/PluginJPEG.cpp
+@@ -507,7 +507,7 @@ marker_is_icc(jpeg_saved_marker_ptr marker) {
+   return FALSE.  You might want to issue an error message instead.
+ */
+ static BOOL 
+-jpeg_read_icc_profile(j_decompress_ptr cinfo, JOCTET **icc_data_ptr, unsigned *icc_data_len) {
++_jpeg_read_icc_profile(j_decompress_ptr cinfo, JOCTET **icc_data_ptr, unsigned *icc_data_len) {
+ 	jpeg_saved_marker_ptr marker;
+ 	int num_markers = 0;
+ 	int seq_no;
+@@ -749,7 +749,7 @@ read_markers(j_decompress_ptr cinfo, FIBITMAP *dib) {
+ 	BYTE *icc_profile = NULL;
+ 	unsigned icc_length = 0;
+ 
+-	if( jpeg_read_icc_profile(cinfo, &icc_profile, &icc_length) ) {
++	if( _jpeg_read_icc_profile(cinfo, &icc_profile, &icc_length) ) {
+ 		// copy ICC profile data
+ 		FreeImage_CreateICCProfile(dib, icc_profile, icc_length);
+ 		// clean up
+-- 
+2.19.1
+

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch b/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch
new file mode 100644
index 00000000000..ad2e4961e44
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch
@@ -0,0 +1,724 @@
+From 03a713e62529d1bcb45aedf767c7cb33ddd6e1a7 Mon Sep 17 00:00:00 2001
+From: Patrick Nicolas <xytovl@laposte.net>
+Date: Tue, 13 Nov 2018 19:40:58 +0100
+Subject: [PATCH 1/4] unbundling
+
+diff --git a/Makefile.fip b/Makefile.fip
+index b59c419..c6b82bb 100644
+--- a/Makefile.fip
++++ b/Makefile.fip
+@@ -11,7 +11,26 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib
+ # Converts cr/lf to just lf
+ DOS2UNIX = dos2unix
+ 
+-LIBRARIES = -lstdc++
++PKG_CONFIG ?= pkg-config
++
++USE_EXR ?= yes
++USE_JPEG ?= yes
++USE_JPEG2K ?= yes
++USE_MNG ?= yes
++USE_PNG ?= yes
++USE_TIFF ?= yes
++USE_RAW ?= yes
++USE_WEBP ?= yes
++
++LIBRARIES-yes = $(shell $(PKG_CONFIG) --libs zlib)
++LIBRARIES-$(USE_EXR)    += $(shell $(PKG_CONFIG) --libs OpenEXR)
++LIBRARIES-$(USE_JPEG)   += -ljpeg
++LIBRARIES-$(USE_JPEG2K) += $(shell $(PKG_CONFIG) --libs libopenjp2)
++LIBRARIES-$(USE_MNG)    += -lmng
++LIBRARIES-$(USE_PNG)    += $(shell $(PKG_CONFIG) --libs libpng)
++LIBRARIES-$(USE_TIFF)   += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase)
++LIBRARIES-$(USE_RAW)    += $(shell $(PKG_CONFIG) --libs libraw)
++LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp)
+ 
+ MODULES = $(SRCS:.c=.o)
+ MODULES := $(MODULES:.cpp=.o)
+@@ -68,16 +87,18 @@ $(STATICLIB): $(MODULES)
+ 	$(AR) r $@ $(MODULES)
+ 
+ $(SHAREDLIB): $(MODULES)
+-	$(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
++	$(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES-yes)
+ 
+ install:
+ 	install -d $(INCDIR) $(INSTALLDIR)
+-	install -m 644 -o root -g root $(HEADER) $(INCDIR)
+-	install -m 644 -o root -g root $(HEADERFIP) $(INCDIR)
+-	install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
+-	install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
++	install -m 644 $(HEADER) $(INCDIR)
++	install -m 644 $(HEADERFIP) $(INCDIR)
++ifneq ($(STATICLIB),)
++	install -m 644 $(STATICLIB) $(INSTALLDIR)
++endif
++	install -m 755 $(SHAREDLIB) $(INSTALLDIR)
+ 	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
+-	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
++	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)
+ 
+ clean:
+ 	rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
+diff --git a/Makefile.gnu b/Makefile.gnu
+index 92f6358..345f0db 100644
+--- a/Makefile.gnu
++++ b/Makefile.gnu
+@@ -11,7 +11,26 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib
+ # Converts cr/lf to just lf
+ DOS2UNIX = dos2unix
+ 
+-LIBRARIES = -lstdc++
++PKG_CONFIG ?= pkg-config
++
++USE_EXR ?= yes
++USE_JPEG ?= yes
++USE_JPEG2K ?= yes
++USE_MNG ?= yes
++USE_PNG ?= yes
++USE_TIFF ?= yes
++USE_RAW ?= yes
++USE_WEBP ?= yes
++
++LIBRARIES-yes = $(shell $(PKG_CONFIG) --libs zlib)
++LIBRARIES-$(USE_EXR)    += $(shell $(PKG_CONFIG) --libs OpenEXR)
++LIBRARIES-$(USE_JPEG)   += -ljpeg
++LIBRARIES-$(USE_JPEG2K) += $(shell $(PKG_CONFIG) --libs libopenjp2)
++LIBRARIES-$(USE_MNG)    += -lmng
++LIBRARIES-$(USE_PNG)    += $(shell $(PKG_CONFIG) --libs libpng)
++LIBRARIES-$(USE_TIFF)   += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase)
++LIBRARIES-$(USE_RAW)    += $(shell $(PKG_CONFIG) --libs libraw)
++LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp)
+ 
+ MODULES = $(SRCS:.c=.o)
+ MODULES := $(MODULES:.cpp=.o)
+@@ -67,13 +86,15 @@ $(STATICLIB): $(MODULES)
+ 	$(AR) r $@ $(MODULES)
+ 
+ $(SHAREDLIB): $(MODULES)
+-	$(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
++	$(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES-yes)
+ 
+ install:
+ 	install -d $(INCDIR) $(INSTALLDIR)
+-	install -m 644 -o root -g root $(HEADER) $(INCDIR)
+-	install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
+-	install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
++	install -m 644 $(HEADER) $(INCDIR)
++ifneq ($(STATICLIB),)
++	install -m 644 $(STATICLIB) $(INSTALLDIR)
++endif
++	install -m 755 $(SHAREDLIB) $(INSTALLDIR)
+ 	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
+ 	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
+ #	ldconfig
+diff --git a/Makefile.srcs b/Makefile.srcs
+index de25754..cb41903 100644
+--- a/Makefile.srcs
++++ b/Makefile.srcs
+@@ -1,6 +1,15 @@
++USE_EXR ?= yes
++USE_JPEG ?= yes
++USE_JPEG2K ?= yes
++USE_MNG ?= yes
++USE_PNG ?= yes
++USE_TIFF ?= yes
++USE_RAW ?= yes
++USE_WEBP ?= yes
++
+ VER_MAJOR = 3
+ VER_MINOR = 18.0
+-SRCS = \
++SRCS-yes = \
+ 	Source/FreeImage/BitmapAccess.cpp \
+ 	Source/FreeImage/ColorLookup.cpp \
+ 	Source/FreeImage/ConversionRGBA16.cpp \
+@@ -12,39 +21,80 @@ SRCS = \
+ 	Source/FreeImage/LFPQuantizer.cpp \
+ 	Source/FreeImage/MemoryIO.cpp \
+ 	Source/FreeImage/PixelAccess.cpp \
++
++SRCS-$(USE_JPEG2K) += \
+ 	Source/FreeImage/J2KHelper.cpp \
++
++SRCS-$(USE_MNG) += \
+ 	Source/FreeImage/MNGHelper.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/Plugin.cpp \
+ 	Source/FreeImage/PluginBMP.cpp \
+ 	Source/FreeImage/PluginCUT.cpp \
+ 	Source/FreeImage/PluginDDS.cpp \
++
++SRCS-$(USE_EXR) += \
+ 	Source/FreeImage/PluginEXR.cpp \
++
++SRCS-$(USE_TIFF) += \
+ 	Source/FreeImage/PluginG3.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginGIF.cpp \
+ 	Source/FreeImage/PluginHDR.cpp \
+ 	Source/FreeImage/PluginICO.cpp \
+ 	Source/FreeImage/PluginIFF.cpp \
++
++SRCS-$(USE_JPEG2K) += \
+ 	Source/FreeImage/PluginJ2K.cpp \
++
++SRCS-$(USE_MNG) += \
+ 	Source/FreeImage/PluginJNG.cpp \
++
++SRCS-$(USE_JPEG2K) += \
+ 	Source/FreeImage/PluginJP2.cpp \
++
++SRCS-$(USE_JPEG) += \
+ 	Source/FreeImage/PluginJPEG.cpp \
+-	Source/FreeImage/PluginJXR.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginKOALA.cpp \
++
++SRCS-$(USE_MNG) += \
+ 	Source/FreeImage/PluginMNG.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginPCD.cpp \
+ 	Source/FreeImage/PluginPCX.cpp \
+ 	Source/FreeImage/PluginPFM.cpp \
+ 	Source/FreeImage/PluginPICT.cpp \
++
++SRCS-$(USE_PNG) += \
+ 	Source/FreeImage/PluginPNG.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginPNM.cpp \
+ 	Source/FreeImage/PluginPSD.cpp \
+ 	Source/FreeImage/PluginRAS.cpp \
++
++SRCS-$(USE_RAW) += \
+ 	Source/FreeImage/PluginRAW.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginSGI.cpp \
+ 	Source/FreeImage/PluginTARGA.cpp \
++
++SRCS-$(USE_TIFF) += \
+ 	Source/FreeImage/PluginTIFF.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginWBMP.cpp \
++
++SRCS-$(USE_WEBP) += \
+ 	Source/FreeImage/PluginWebP.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginXBM.cpp \
+ 	Source/FreeImage/PluginXPM.cpp \
+ 	Source/FreeImage/PSDParser.cpp \
+@@ -78,7 +128,11 @@ SRCS = \
+ 	Source/Metadata/IPTC.cpp \
+ 	Source/Metadata/TagConversion.cpp \
+ 	Source/Metadata/TagLib.cpp \
++
++SRCS-$(USE_TIFF) += \
+ 	Source/Metadata/XTIFF.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImageToolkit/Background.cpp \
+ 	Source/FreeImageToolkit/BSplineRotate.cpp \
+ 	Source/FreeImageToolkit/Channels.cpp \
+@@ -87,11 +141,19 @@ SRCS = \
+ 	Source/FreeImageToolkit/CopyPaste.cpp \
+ 	Source/FreeImageToolkit/Display.cpp \
+ 	Source/FreeImageToolkit/Flip.cpp \
++
++SRCS-$(USE_JPEG) += \
+ 	Source/FreeImageToolkit/JPEGTransform.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImageToolkit/MultigridPoissonSolver.cpp \
+ 	Source/FreeImageToolkit/Rescale.cpp \
+ 	Source/FreeImageToolkit/Resize.cpp \
+ 
++SRCS-$(USE_JPEG) += \
++	Source/transupp.c
++SRCS = $(SRCS-yes)
++
+ INCLS = Dist/FreeImage.h \
+ 	Examples/OpenGL/TextureManager/TextureManager.h \
+ 	Examples/Plugin/PluginCradle.h \
+@@ -117,7 +179,18 @@ INCLS = Dist/FreeImage.h \
+ 	Wrapper/FreeImagePlus/test/fipTest.h \
+ 	TestAPI/TestSuite.h
+ 
+-INCLUDE = -I. \
++INCLUDE-yes = -I. \
+ 	-ISource \
+ 	-ISource/Metadata \
+ 	-ISource/FreeImageToolkit \
++
++INCLUDE-yes += $(shell $(PKG_CONFIG) --cflags-only-I zlib)
++INCLUDE-$(USE_EXR)    += -DUSE_EXR    $(shell $(PKG_CONFIG) --cflags-only-I OpenEXR)
++INCLUDE-$(USE_JPEG)   += -DUSE_JPEG
++INCLUDE-$(USE_JPEG2K) += -DUSE_JPEG2K $(shell $(PKG_CONFIG) --cflags-only-I libopenjp2)
++INCLUDE-$(USE_MNG)    += -DUSE_MNG
++INCLUDE-$(USE_PNG)    += -DUSE_PNG    $(shell $(PKG_CONFIG) --cflags-only-I libpng)
++INCLUDE-$(USE_TIFF)   += -DUSE_TIFF   $(shell $(PKG_CONFIG) --cflags-only-I libtiff-4 IlmBase)
++INCLUDE-$(USE_RAW)    += -DUSE_RAW    $(shell $(PKG_CONFIG) --cflags-only-I libraw)
++INCLUDE-$(USE_WEBP)   += -DUSE_WEBP   $(shell $(PKG_CONFIG) --cflags-only-I libwebp)
++INCLUDE = $(INCLUDE-yes)
+diff --git a/Source/FreeImage/J2KHelper.cpp b/Source/FreeImage/J2KHelper.cpp
+index 1776c3b..538f1c5 100644
+--- a/Source/FreeImage/J2KHelper.cpp
++++ b/Source/FreeImage/J2KHelper.cpp
+@@ -21,7 +21,7 @@
+ 
+ #include "FreeImage.h"
+ #include "Utilities.h"
+-#include "../LibOpenJPEG/openjpeg.h"
++#include <openjpeg.h>
+ #include "J2KHelper.h"
+ 
+ // --------------------------------------------------------------------------
+diff --git a/Source/FreeImage/Plugin.cpp b/Source/FreeImage/Plugin.cpp
+index 11e7294..7768a32 100644
+--- a/Source/FreeImage/Plugin.cpp
++++ b/Source/FreeImage/Plugin.cpp
+@@ -238,23 +238,33 @@ FreeImage_Initialise(BOOL load_local_plugins_only) {
+ 			*/
+ 			s_plugins->AddNode(InitBMP);
+ 			s_plugins->AddNode(InitICO);
++#ifdef USE_JPEG
+ 			s_plugins->AddNode(InitJPEG);
++#endif
++#ifdef USE_MNG
+ 			s_plugins->AddNode(InitJNG);
++#endif
+ 			s_plugins->AddNode(InitKOALA);
+ 			s_plugins->AddNode(InitIFF);
++#ifdef USE_MNG
+ 			s_plugins->AddNode(InitMNG);
++#endif
+ 			s_plugins->AddNode(InitPNM, NULL, "PBM", "Portable Bitmap (ASCII)", "pbm", "^P1");
+ 			s_plugins->AddNode(InitPNM, NULL, "PBMRAW", "Portable Bitmap (RAW)", "pbm", "^P4");
+ 			s_plugins->AddNode(InitPCD);
+ 			s_plugins->AddNode(InitPCX);
+ 			s_plugins->AddNode(InitPNM, NULL, "PGM", "Portable Greymap (ASCII)", "pgm", "^P2");
+ 			s_plugins->AddNode(InitPNM, NULL, "PGMRAW", "Portable Greymap (RAW)", "pgm", "^P5");
++#ifdef USE_PNG
+ 			s_plugins->AddNode(InitPNG);
++#endif
+ 			s_plugins->AddNode(InitPNM, NULL, "PPM", "Portable Pixelmap (ASCII)", "ppm", "^P3");
+ 			s_plugins->AddNode(InitPNM, NULL, "PPMRAW", "Portable Pixelmap (RAW)", "ppm", "^P6");
+ 			s_plugins->AddNode(InitRAS);
+ 			s_plugins->AddNode(InitTARGA);
++#ifdef USE_TIFF
+ 			s_plugins->AddNode(InitTIFF);
++#endif
+ 			s_plugins->AddNode(InitWBMP);
+ 			s_plugins->AddNode(InitPSD);
+ 			s_plugins->AddNode(InitCUT);
+@@ -263,16 +273,26 @@ FreeImage_Initialise(BOOL load_local_plugins_only) {
+ 			s_plugins->AddNode(InitDDS);
+ 	        s_plugins->AddNode(InitGIF);
+ 	        s_plugins->AddNode(InitHDR);
++#ifdef USE_TIFF
+ 			s_plugins->AddNode(InitG3);
++#endif
+ 			s_plugins->AddNode(InitSGI);
++#ifdef USE_EXR
+ 			s_plugins->AddNode(InitEXR);
++#endif
++#ifdef USE_JPEG2K
+ 			s_plugins->AddNode(InitJ2K);
+ 			s_plugins->AddNode(InitJP2);
++#endif
+ 			s_plugins->AddNode(InitPFM);
+ 			s_plugins->AddNode(InitPICT);
++#ifdef USE_RAW
+ 			s_plugins->AddNode(InitRAW);
++#endif
++#ifdef USE_WEBP
+ 			s_plugins->AddNode(InitWEBP);
+-#if !(defined(_MSC_VER) && (_MSC_VER <= 1310))
++#endif
++#if 0
+ 			s_plugins->AddNode(InitJXR);
+ #endif // unsupported by MS Visual Studio 2003 !!!
+ 			
+diff --git a/Source/FreeImage/PluginEXR.cpp b/Source/FreeImage/PluginEXR.cpp
+index b286430..faa8037 100644
+--- a/Source/FreeImage/PluginEXR.cpp
++++ b/Source/FreeImage/PluginEXR.cpp
+@@ -28,16 +28,16 @@
+ #pragma warning (disable : 4800) // ImfVersion.h - 'const int' : forcing value to bool 'true' or 'false' (performance warning)
+ #endif 
+ 
+-#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 <ImfIO.h>
++#include <Iex.h>
++#include <ImfOutputFile.h>
++#include <ImfInputFile.h>
++#include <ImfRgbaFile.h>
++#include <ImfChannelList.h>
++#include <ImfRgba.h>
++#include <ImfArray.h>
++#include <ImfPreviewImage.h>
++#include <half.h>
+ 
+ 
+ // ==========================================================
+diff --git a/Source/FreeImage/PluginG3.cpp b/Source/FreeImage/PluginG3.cpp
+index 0a083b4..b3a9bd7 100644
+--- a/Source/FreeImage/PluginG3.cpp
++++ b/Source/FreeImage/PluginG3.cpp
+@@ -20,7 +20,7 @@
+ // Use at your own risk!
+ // ==========================================================
+ 
+-#include "../LibTIFF4/tiffiop.h"
++#include "tiffiop.h"
+ 
+ #include "FreeImage.h"
+ #include "Utilities.h"
+diff --git a/Source/FreeImage/PluginJ2K.cpp b/Source/FreeImage/PluginJ2K.cpp
+index b8bcfc8..621a903 100644
+--- a/Source/FreeImage/PluginJ2K.cpp
++++ b/Source/FreeImage/PluginJ2K.cpp
+@@ -21,7 +21,7 @@
+ 
+ #include "FreeImage.h"
+ #include "Utilities.h"
+-#include "../LibOpenJPEG/openjpeg.h"
++#include <openjpeg.h>
+ #include "J2KHelper.h"
+ 
+ // ==========================================================
+diff --git a/Source/FreeImage/PluginJP2.cpp b/Source/FreeImage/PluginJP2.cpp
+index 742fe2c..c57f626 100644
+--- a/Source/FreeImage/PluginJP2.cpp
++++ b/Source/FreeImage/PluginJP2.cpp
+@@ -21,7 +21,7 @@
+ 
+ #include "FreeImage.h"
+ #include "Utilities.h"
+-#include "../LibOpenJPEG/openjpeg.h"
++#include <openjpeg.h>
+ #include "J2KHelper.h"
+ 
+ // ==========================================================
+diff --git a/Source/FreeImage/PluginJPEG.cpp b/Source/FreeImage/PluginJPEG.cpp
+index 8db177d..dd97e63 100644
+--- a/Source/FreeImage/PluginJPEG.cpp
++++ b/Source/FreeImage/PluginJPEG.cpp
+@@ -35,11 +35,15 @@ extern "C" {
+ #undef FAR
+ #include <setjmp.h>
+ 
+-#include "../LibJPEG/jinclude.h"
+-#include "../LibJPEG/jpeglib.h"
+-#include "../LibJPEG/jerror.h"
++#include <string.h>
++#include <stdio.h>
++#include <jconfig.h>
++#include <jpeglib.h>
++#include <jerror.h>
+ }
+ 
++#define SIZEOF(object)        ((size_t) sizeof(object))
++
+ #include "FreeImage.h"
+ #include "Utilities.h"
+ 
+diff --git a/Source/FreeImage/PluginPNG.cpp b/Source/FreeImage/PluginPNG.cpp
+index 661f160..504fafe 100644
+--- a/Source/FreeImage/PluginPNG.cpp
++++ b/Source/FreeImage/PluginPNG.cpp
+@@ -40,8 +40,8 @@
+ 
+ // ----------------------------------------------------------
+ 
+-#include "../ZLib/zlib.h"
+-#include "../LibPNG/png.h"
++#include <zlib.h>
++#include <png.h>
+ 
+ // ----------------------------------------------------------
+ 
+diff --git a/Source/FreeImage/PluginRAW.cpp b/Source/FreeImage/PluginRAW.cpp
+index e9bd5bf..680e634 100644
+--- a/Source/FreeImage/PluginRAW.cpp
++++ b/Source/FreeImage/PluginRAW.cpp
+@@ -19,7 +19,7 @@
+ // Use at your own risk!
+ // ==========================================================
+ 
+-#include "../LibRawLite/libraw/libraw.h"
++#include <libraw.h>
+ 
+ #include "FreeImage.h"
+ #include "Utilities.h"
+diff --git a/Source/FreeImage/PluginTIFF.cpp b/Source/FreeImage/PluginTIFF.cpp
+index 67fab0b..36f99e8 100644
+--- a/Source/FreeImage/PluginTIFF.cpp
++++ b/Source/FreeImage/PluginTIFF.cpp
+@@ -37,9 +37,9 @@
+ 
+ #include "FreeImage.h"
+ #include "Utilities.h"
+-#include "../LibTIFF4/tiffiop.h"
++#include "tiffiop.h"
+ #include "../Metadata/FreeImageTag.h"
+-#include "../OpenEXR/Half/half.h"
++#include <half.h>
+ 
+ #include "FreeImageIO.h"
+ #include "PSDParser.h"
+diff --git a/Source/FreeImage/PluginWebP.cpp b/Source/FreeImage/PluginWebP.cpp
+index 7c9f62f..c401447 100644
+--- a/Source/FreeImage/PluginWebP.cpp
++++ b/Source/FreeImage/PluginWebP.cpp
+@@ -24,9 +24,9 @@
+ 
+ #include "../Metadata/FreeImageTag.h"
+ 
+-#include "../LibWebP/src/webp/decode.h"
+-#include "../LibWebP/src/webp/encode.h"
+-#include "../LibWebP/src/webp/mux.h"
++#include <webp/decode.h>
++#include <webp/encode.h>
++#include <webp/mux.h>
+ 
+ // ==========================================================
+ // Plugin Interface
+diff --git a/Source/FreeImage/ZLibInterface.cpp b/Source/FreeImage/ZLibInterface.cpp
+index 3ab6d32..7e32110 100644
+--- a/Source/FreeImage/ZLibInterface.cpp
++++ b/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) */
++#define OS_CODE 0x03
+ 
+ /**
+ Compresses a source buffer into a target buffer, using the ZLib library. 
+diff --git a/Source/FreeImageToolkit/JPEGTransform.cpp b/Source/FreeImageToolkit/JPEGTransform.cpp
+index 6f9ba8e..988d777 100644
+--- a/Source/FreeImageToolkit/JPEGTransform.cpp
++++ b/Source/FreeImageToolkit/JPEGTransform.cpp
+@@ -26,10 +26,11 @@ extern "C" {
+ #undef FAR
+ #include <setjmp.h>
+ 
+-#include "../LibJPEG/jinclude.h"
+-#include "../LibJPEG/jpeglib.h"
+-#include "../LibJPEG/jerror.h"
+-#include "../LibJPEG/transupp.h"
++#include <string.h>
++#include <stdio.h>
++#include <jpeglib.h>
++#include <jerror.h>
++#include "transupp.h"
+ }
+ 
+ #include "FreeImage.h"
+diff --git a/Source/Metadata/XTIFF.cpp b/Source/Metadata/XTIFF.cpp
+index d5be902..7f2be42 100644
+--- a/Source/Metadata/XTIFF.cpp
++++ b/Source/Metadata/XTIFF.cpp
+@@ -29,7 +29,7 @@
+ #pragma warning (disable : 4786) // identifier was truncated to 'number' characters
+ #endif
+ 
+-#include "../LibTIFF4/tiffiop.h"
++#include "tiffiop.h"
+ 
+ #include "FreeImage.h"
+ #include "Utilities.h"
+diff --git a/Source/tiffiop.h b/Source/tiffiop.h
+index 2fe7556..1642582 100644
+--- a/Source/tiffiop.h
++++ b/Source/tiffiop.h
+@@ -28,7 +28,10 @@
+  * ``Library-private'' definitions.
+  */
+ 
+-#include "tif_config.h"
++#include <tiffconf.h>
++#define HAVE_SEARCH_H
++#define HAVE_FCNTL_H
++#define HAVE_SNPRINTF
+ 
+ #ifdef HAVE_FCNTL_H
+ # include <fcntl.h>
+diff --git a/Source/transupp.c b/Source/transupp.c
+index d10f57b..d50216c 100644
+--- a/Source/transupp.c
++++ b/Source/transupp.c
+@@ -15,8 +15,7 @@
+ /* Although this file really shouldn't have access to the library internals,
+  * it's helpful to let it call jround_up() and jcopy_block_row().
+  */
+-#define JPEG_INTERNALS
+-
++#include <jerror.h>
+ #include "jinclude.h"
+ #include "jpeglib.h"
+ #include "transupp.h"		/* My own external interface */
+diff --git a/fipMakefile.srcs b/fipMakefile.srcs
+index d271b4b..e58f046 100644
+--- a/fipMakefile.srcs
++++ b/fipMakefile.srcs
+@@ -1,6 +1,15 @@
++USE_EXR ?= yes
++USE_JPEG ?= yes
++USE_JPEG2K ?= yes
++USE_MNG ?= yes
++USE_PNG ?= yes
++USE_TIFF ?= yes
++USE_RAW ?= yes
++USE_WEBP ?= yes
++
+ VER_MAJOR = 3
+ VER_MINOR = 18.0
+-SRCS = \
++SRCS-yes = \
+ 	Source/FreeImage/BitmapAccess.cpp \
+ 	Source/FreeImage/ColorLookup.cpp \
+ 	Source/FreeImage/ConversionRGBA16.cpp \
+@@ -12,39 +21,80 @@ SRCS = \
+ 	Source/FreeImage/LFPQuantizer.cpp \
+ 	Source/FreeImage/MemoryIO.cpp \
+ 	Source/FreeImage/PixelAccess.cpp \
++
++SRCS-$(USE_JPEG2K) += \
+ 	Source/FreeImage/J2KHelper.cpp \
++
++SRCS-$(USE_MNG) += \
+ 	Source/FreeImage/MNGHelper.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/Plugin.cpp \
+ 	Source/FreeImage/PluginBMP.cpp \
+ 	Source/FreeImage/PluginCUT.cpp \
+ 	Source/FreeImage/PluginDDS.cpp \
++
++SRCS-$(USE_EXR) += \
+ 	Source/FreeImage/PluginEXR.cpp \
++
++SRCS-$(USE_TIFF) += \
+ 	Source/FreeImage/PluginG3.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginGIF.cpp \
+ 	Source/FreeImage/PluginHDR.cpp \
+ 	Source/FreeImage/PluginICO.cpp \
+ 	Source/FreeImage/PluginIFF.cpp \
++
++SRCS-$(USE_JPEG2K) += \
+ 	Source/FreeImage/PluginJ2K.cpp \
++
++SRCS-$(USE_MNG) += \
+ 	Source/FreeImage/PluginJNG.cpp \
++
++SRCS-$(USE_JPEG2K) += \
+ 	Source/FreeImage/PluginJP2.cpp \
++
++SRCS-$(USE_JPEG) += \
+ 	Source/FreeImage/PluginJPEG.cpp \
+-	Source/FreeImage/PluginJXR.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginKOALA.cpp \
++
++SRCS-$(USE_MNG) += \
+ 	Source/FreeImage/PluginMNG.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginPCD.cpp \
+ 	Source/FreeImage/PluginPCX.cpp \
+ 	Source/FreeImage/PluginPFM.cpp \
+ 	Source/FreeImage/PluginPICT.cpp \
++
++SRCS-$(USE_PNG) += \
+ 	Source/FreeImage/PluginPNG.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginPNM.cpp \
+ 	Source/FreeImage/PluginPSD.cpp \
+ 	Source/FreeImage/PluginRAS.cpp \
++
++SRCS-$(USE_RAW) += \
+ 	Source/FreeImage/PluginRAW.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginSGI.cpp \
+ 	Source/FreeImage/PluginTARGA.cpp \
++
++SRCS-$(USE_TIFF) += \
+ 	Source/FreeImage/PluginTIFF.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginWBMP.cpp \
++
++SRCS-$(USE_WEBP) += \
+ 	Source/FreeImage/PluginWebP.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImage/PluginXBM.cpp \
+ 	Source/FreeImage/PluginXPM.cpp \
+ 	Source/FreeImage/PSDParser.cpp \
+@@ -78,7 +128,11 @@ SRCS = \
+ 	Source/Metadata/IPTC.cpp \
+ 	Source/Metadata/TagConversion.cpp \
+ 	Source/Metadata/TagLib.cpp \
++
++SRCS-$(USE_TIFF) += \
+ 	Source/Metadata/XTIFF.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImageToolkit/Background.cpp \
+ 	Source/FreeImageToolkit/BSplineRotate.cpp \
+ 	Source/FreeImageToolkit/Channels.cpp \
+@@ -87,7 +141,11 @@ SRCS = \
+ 	Source/FreeImageToolkit/CopyPaste.cpp \
+ 	Source/FreeImageToolkit/Display.cpp \
+ 	Source/FreeImageToolkit/Flip.cpp \
++
++SRCS-$(USE_JPEG) += \
+ 	Source/FreeImageToolkit/JPEGTransform.cpp \
++
++SRCS-yes += \
+ 	Source/FreeImageToolkit/MultigridPoissonSolver.cpp \
+ 	Source/FreeImageToolkit/Rescale.cpp \
+ 	Source/FreeImageToolkit/Resize.cpp \
+@@ -98,6 +156,11 @@ SRCS = \
+ 	Wrapper/FreeImagePlus/src/fipTag.cpp \
+ 	Wrapper/FreeImagePlus/src/fipWinImage.cpp \
+ 	Wrapper/FreeImagePlus/src/FreeImagePlus.cpp 
++
++SRCS-$(USE_JPEG) += \
++	Source/transupp.c
++
++SRCS = $(SRCS-yes)
+ INCLUDE = -I. \
+ 	-ISource \
+ 	-ISource/Metadata \
+-- 
+2.19.1
+

diff --git a/media-libs/freeimage/freeimage-3.18.0.ebuild b/media-libs/freeimage/freeimage-3.18.0.ebuild
new file mode 100644
index 00000000000..bde23753bf0
--- /dev/null
+++ b/media-libs/freeimage/freeimage-3.18.0.ebuild
@@ -0,0 +1,116 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils toolchain-funcs
+
+MY_PN=FreeImage
+MY_PV=${PV//.}
+MY_P=${MY_PN}${MY_PV}
+
+DESCRIPTION="Image library supporting many formats"
+HOMEPAGE="http://freeimage.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${MY_P}.zip
+	mirror://sourceforge/${PN}/${MY_P}.pdf"
+
+LICENSE="|| ( GPL-2 FIPL-1.0 )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86 ~amd64-linux ~x86-linux"
+IUSE="jpeg jpeg2k mng openexr png raw static-libs tiff webp"
+
+# The tiff/ilmbase isn't a typo.  The TIFF plugin cheats and
+# uses code from it to handle 16bit<->float conversions.
+RDEPEND="
+	sys-libs/zlib
+	jpeg? ( virtual/jpeg:0 )
+	jpeg2k? ( media-libs/openjpeg:2= )
+	mng? ( media-libs/libmng:= )
+	openexr? ( media-libs/openexr:= )
+	png? ( media-libs/libpng:0= )
+	raw? ( media-libs/libraw:= )
+	tiff? (
+		media-libs/ilmbase:=
+		media-libs/tiff:0
+	)
+	webp? ( media-libs/libwebp:= )"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig
+	app-arch/unzip"
+
+S=${WORKDIR}/${MY_PN}
+
+DOCS=( "${DISTDIR}"/${MY_P}.pdf README.linux Whatsnew.txt )
+PATCHES=(
+	"${FILESDIR}"/${PN}-3.18.0-unbundling.patch
+	"${FILESDIR}"/${PN}-3.18.0-remove-jpeg-transform.patch
+	"${FILESDIR}"/${PN}-3.18.0-rename-jpeg_read_icc_profile.patch
+	"${FILESDIR}"/${PN}-3.18.0-disable-plugin-G3.patch
+	"${FILESDIR}"/${PN}-3.18.0-raw.patch
+)
+
+src_prepare() {
+	pushd Source >/dev/null || die
+	cp LibJPEG/{transupp.c,transupp.h,jinclude.h} . || die
+	cp LibTIFF4/{tiffiop,tif_dir}.h . || die
+	rm -rf LibPNG LibMNG LibOpenJPEG ZLib OpenEXR LibRawLite LibTIFF4 LibJPEG LibWebP LibJXR || die
+	popd >/dev/null || die
+
+	edos2unix Makefile.{gnu,fip,srcs} fipMakefile.srcs */*.h */*/*.cpp
+	sed -i \
+		-e "s:/./:/:g" \
+		-e "s: ./: :g" \
+		-e 's: Source: \\\n\tSource:g' \
+		-e 's: Wrapper: \\\n\tWrapper:g' \
+		-e 's: Examples: \\\n\tExamples:g' \
+		-e 's: TestAPI: \\\n\tTestAPI:g' \
+		-e 's: -ISource: \\\n\t-ISource:g' \
+		-e 's: -IWrapper: \\\n\t-IWrapper:g' \
+		-e 's:INCLS:\nINCLS:g' \
+		Makefile.srcs fipMakefile.srcs || die
+	sed -i \
+		-e "/LibJPEG/d" \
+		-e "/LibJXR/d" \
+		-e "/LibPNG/d" \
+		-e "/LibTIFF/d" \
+		-e "/Source\/ZLib/d" \
+		-e "/LibOpenJPEG/d" \
+		-e "/OpenEXR/d" \
+		-e "/LibRawLite/d" \
+		-e "/LibMNG/d" \
+		-e "/LibWebP/d" \
+		-e "/LibJXR/d" \
+		Makefile.srcs fipMakefile.srcs || die
+
+	default
+}
+
+foreach_make() {
+	local m
+	for m in Makefile.{gnu,fip} ; do
+		emake -f ${m} \
+			USE_EXR=$(usex openexr) \
+			USE_JPEG=$(usex jpeg) \
+			USE_JPEG2K=$(usex jpeg2k) \
+			USE_MNG=$(usex mng) \
+			USE_PNG=$(usex png) \
+			USE_TIFF=$(usex tiff) \
+			USE_RAW=$(usex raw) \
+			USE_WEBP=$(usex webp) \
+			$(usex static-libs '' STATICLIB=) \
+			"$@"
+	done
+}
+
+src_compile() {
+	tc-export AR PKG_CONFIG
+	foreach_make \
+		CXX="$(tc-getCXX) -fPIC" \
+		CC="$(tc-getCC) -fPIC" \
+		${MY_PN}
+}
+
+src_install() {
+	foreach_make install DESTDIR="${ED}" INSTALLDIR="${ED%/}"/usr/$(get_libdir)
+	einstalldocs
+}


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/freeimage/, media-libs/freeimage/files/
@ 2019-05-05 20:42 James Le Cuirot
  0 siblings, 0 replies; 6+ messages in thread
From: James Le Cuirot @ 2019-05-05 20:42 UTC (permalink / raw
  To: gentoo-commits

commit:     4f14b921f51055be968c01d1b6c994918d0bc279
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun May  5 20:41:04 2019 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sun May  5 20:41:54 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4f14b921

media-libs/freeimage: Fix missing link against libwebpmux

Package-Manager: Portage-2.3.66, Repoman-2.3.12
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch        | 6 +++---
 .../{freeimage-3.18.0.ebuild => freeimage-3.18.0-r1.ebuild}         | 0
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch b/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch
index ad2e4961e44..ab2e0341b32 100644
--- a/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch
+++ b/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch
@@ -31,7 +31,7 @@ index b59c419..c6b82bb 100644
 +LIBRARIES-$(USE_PNG)    += $(shell $(PKG_CONFIG) --libs libpng)
 +LIBRARIES-$(USE_TIFF)   += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase)
 +LIBRARIES-$(USE_RAW)    += $(shell $(PKG_CONFIG) --libs libraw)
-+LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp)
++LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp libwebpmux)
  
  MODULES = $(SRCS:.c=.o)
  MODULES := $(MODULES:.cpp=.o)
@@ -88,7 +88,7 @@ index 92f6358..345f0db 100644
 +LIBRARIES-$(USE_PNG)    += $(shell $(PKG_CONFIG) --libs libpng)
 +LIBRARIES-$(USE_TIFF)   += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase)
 +LIBRARIES-$(USE_RAW)    += $(shell $(PKG_CONFIG) --libs libraw)
-+LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp)
++LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp libwebpmux)
  
  MODULES = $(SRCS:.c=.o)
  MODULES := $(MODULES:.cpp=.o)
@@ -265,7 +265,7 @@ index de25754..cb41903 100644
 +INCLUDE-$(USE_PNG)    += -DUSE_PNG    $(shell $(PKG_CONFIG) --cflags-only-I libpng)
 +INCLUDE-$(USE_TIFF)   += -DUSE_TIFF   $(shell $(PKG_CONFIG) --cflags-only-I libtiff-4 IlmBase)
 +INCLUDE-$(USE_RAW)    += -DUSE_RAW    $(shell $(PKG_CONFIG) --cflags-only-I libraw)
-+INCLUDE-$(USE_WEBP)   += -DUSE_WEBP   $(shell $(PKG_CONFIG) --cflags-only-I libwebp)
++INCLUDE-$(USE_WEBP)   += -DUSE_WEBP   $(shell $(PKG_CONFIG) --cflags-only-I libwebp libwebpmux)
 +INCLUDE = $(INCLUDE-yes)
 diff --git a/Source/FreeImage/J2KHelper.cpp b/Source/FreeImage/J2KHelper.cpp
 index 1776c3b..538f1c5 100644

diff --git a/media-libs/freeimage/freeimage-3.18.0.ebuild b/media-libs/freeimage/freeimage-3.18.0-r1.ebuild
similarity index 100%
rename from media-libs/freeimage/freeimage-3.18.0.ebuild
rename to media-libs/freeimage/freeimage-3.18.0-r1.ebuild


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/freeimage/, media-libs/freeimage/files/
@ 2020-11-15 15:31 Joonas Niilola
  0 siblings, 0 replies; 6+ messages in thread
From: Joonas Niilola @ 2020-11-15 15:31 UTC (permalink / raw
  To: gentoo-commits

commit:     cd8aa88c1bfe4d061ddd81b84c9f0e2c1d218687
Author:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 15 14:37:29 2020 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sun Nov 15 15:31:20 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cd8aa88c

media-libs/freeimage: fix SizeViolation issue

Closes: https://bugs.gentoo.org/748189
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 media-libs/freeimage/Manifest                      |   1 +
 .../files/freeimage-3.18.0-unbundling.patch        | 724 ---------------------
 media-libs/freeimage/freeimage-3.18.0-r1.ebuild    |   5 +-
 media-libs/freeimage/freeimage-3.18.0-r2.ebuild    |   5 +-
 4 files changed, 7 insertions(+), 728 deletions(-)

diff --git a/media-libs/freeimage/Manifest b/media-libs/freeimage/Manifest
index 292f9ee3c9d..9ea430da12a 100644
--- a/media-libs/freeimage/Manifest
+++ b/media-libs/freeimage/Manifest
@@ -1,2 +1,3 @@
 DIST FreeImage3180.pdf 1665541 BLAKE2B 5d40ee6fa0a1e73df0cc961edbd70a2835ef88fb540f123fd81f2bb826d4c949d2a60dfe3fc02406ce632a389935abac0d471c963c9803b8c2aece2b48afb003 SHA512 632f68b14f7a5916a1b95bbf86c268d0afe786a2537472301bb002254aa3195f046efb41f073133633211e985e90edbb99285ab6f42bc55501c756292a3c4c03
 DIST FreeImage3180.zip 7415716 BLAKE2B b695271f4e80eb304eccde66e38b5095eceae51fbe0dd97df69c55f364f8440d8c97139b8edc2f01c400f5c53a7336fdfab1e28aa3ea04f485901d5def443d25 SHA512 9d9cc7e2d57552c3115e277aeb036e0455204d389026b17a3f513da5be1fd595421655488bb1ec2f76faebed66049119ca55e26e2a6d37024b3fb7ef36ad4818
+DIST freeimage-3.18.0-unbundling.patch 20960 BLAKE2B 61ee63e7be0d5db7bf4a3bc053bb67f5a6ce6949ed252b1729e7542addd432d1105b7e70d834f05210be3c5c81a5378a2cb00d5b9d8e21590672a1ac6e1135fa SHA512 c56062099e17e8a16447fccc4bdf3089e7992273f1a09a2ff7f591b3bd68a8d1e80842400aaffdc8394ed64273e26a4f01e12fc8c55bb40d346db96eb5dcbe30

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch b/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch
deleted file mode 100644
index ab2e0341b32..00000000000
--- a/media-libs/freeimage/files/freeimage-3.18.0-unbundling.patch
+++ /dev/null
@@ -1,724 +0,0 @@
-From 03a713e62529d1bcb45aedf767c7cb33ddd6e1a7 Mon Sep 17 00:00:00 2001
-From: Patrick Nicolas <xytovl@laposte.net>
-Date: Tue, 13 Nov 2018 19:40:58 +0100
-Subject: [PATCH 1/4] unbundling
-
-diff --git a/Makefile.fip b/Makefile.fip
-index b59c419..c6b82bb 100644
---- a/Makefile.fip
-+++ b/Makefile.fip
-@@ -11,7 +11,26 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib
- # Converts cr/lf to just lf
- DOS2UNIX = dos2unix
- 
--LIBRARIES = -lstdc++
-+PKG_CONFIG ?= pkg-config
-+
-+USE_EXR ?= yes
-+USE_JPEG ?= yes
-+USE_JPEG2K ?= yes
-+USE_MNG ?= yes
-+USE_PNG ?= yes
-+USE_TIFF ?= yes
-+USE_RAW ?= yes
-+USE_WEBP ?= yes
-+
-+LIBRARIES-yes = $(shell $(PKG_CONFIG) --libs zlib)
-+LIBRARIES-$(USE_EXR)    += $(shell $(PKG_CONFIG) --libs OpenEXR)
-+LIBRARIES-$(USE_JPEG)   += -ljpeg
-+LIBRARIES-$(USE_JPEG2K) += $(shell $(PKG_CONFIG) --libs libopenjp2)
-+LIBRARIES-$(USE_MNG)    += -lmng
-+LIBRARIES-$(USE_PNG)    += $(shell $(PKG_CONFIG) --libs libpng)
-+LIBRARIES-$(USE_TIFF)   += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase)
-+LIBRARIES-$(USE_RAW)    += $(shell $(PKG_CONFIG) --libs libraw)
-+LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp libwebpmux)
- 
- MODULES = $(SRCS:.c=.o)
- MODULES := $(MODULES:.cpp=.o)
-@@ -68,16 +87,18 @@ $(STATICLIB): $(MODULES)
- 	$(AR) r $@ $(MODULES)
- 
- $(SHAREDLIB): $(MODULES)
--	$(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
-+	$(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES-yes)
- 
- install:
- 	install -d $(INCDIR) $(INSTALLDIR)
--	install -m 644 -o root -g root $(HEADER) $(INCDIR)
--	install -m 644 -o root -g root $(HEADERFIP) $(INCDIR)
--	install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
--	install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
-+	install -m 644 $(HEADER) $(INCDIR)
-+	install -m 644 $(HEADERFIP) $(INCDIR)
-+ifneq ($(STATICLIB),)
-+	install -m 644 $(STATICLIB) $(INSTALLDIR)
-+endif
-+	install -m 755 $(SHAREDLIB) $(INSTALLDIR)
- 	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
--	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
-+	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)
- 
- clean:
- 	rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
-diff --git a/Makefile.gnu b/Makefile.gnu
-index 92f6358..345f0db 100644
---- a/Makefile.gnu
-+++ b/Makefile.gnu
-@@ -11,7 +11,26 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib
- # Converts cr/lf to just lf
- DOS2UNIX = dos2unix
- 
--LIBRARIES = -lstdc++
-+PKG_CONFIG ?= pkg-config
-+
-+USE_EXR ?= yes
-+USE_JPEG ?= yes
-+USE_JPEG2K ?= yes
-+USE_MNG ?= yes
-+USE_PNG ?= yes
-+USE_TIFF ?= yes
-+USE_RAW ?= yes
-+USE_WEBP ?= yes
-+
-+LIBRARIES-yes = $(shell $(PKG_CONFIG) --libs zlib)
-+LIBRARIES-$(USE_EXR)    += $(shell $(PKG_CONFIG) --libs OpenEXR)
-+LIBRARIES-$(USE_JPEG)   += -ljpeg
-+LIBRARIES-$(USE_JPEG2K) += $(shell $(PKG_CONFIG) --libs libopenjp2)
-+LIBRARIES-$(USE_MNG)    += -lmng
-+LIBRARIES-$(USE_PNG)    += $(shell $(PKG_CONFIG) --libs libpng)
-+LIBRARIES-$(USE_TIFF)   += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase)
-+LIBRARIES-$(USE_RAW)    += $(shell $(PKG_CONFIG) --libs libraw)
-+LIBRARIES-$(USE_WEBP)    += $(shell $(PKG_CONFIG) --libs libwebp libwebpmux)
- 
- MODULES = $(SRCS:.c=.o)
- MODULES := $(MODULES:.cpp=.o)
-@@ -67,13 +86,15 @@ $(STATICLIB): $(MODULES)
- 	$(AR) r $@ $(MODULES)
- 
- $(SHAREDLIB): $(MODULES)
--	$(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
-+	$(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES-yes)
- 
- install:
- 	install -d $(INCDIR) $(INSTALLDIR)
--	install -m 644 -o root -g root $(HEADER) $(INCDIR)
--	install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
--	install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
-+	install -m 644 $(HEADER) $(INCDIR)
-+ifneq ($(STATICLIB),)
-+	install -m 644 $(STATICLIB) $(INSTALLDIR)
-+endif
-+	install -m 755 $(SHAREDLIB) $(INSTALLDIR)
- 	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
- 	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
- #	ldconfig
-diff --git a/Makefile.srcs b/Makefile.srcs
-index de25754..cb41903 100644
---- a/Makefile.srcs
-+++ b/Makefile.srcs
-@@ -1,6 +1,15 @@
-+USE_EXR ?= yes
-+USE_JPEG ?= yes
-+USE_JPEG2K ?= yes
-+USE_MNG ?= yes
-+USE_PNG ?= yes
-+USE_TIFF ?= yes
-+USE_RAW ?= yes
-+USE_WEBP ?= yes
-+
- VER_MAJOR = 3
- VER_MINOR = 18.0
--SRCS = \
-+SRCS-yes = \
- 	Source/FreeImage/BitmapAccess.cpp \
- 	Source/FreeImage/ColorLookup.cpp \
- 	Source/FreeImage/ConversionRGBA16.cpp \
-@@ -12,39 +21,80 @@ SRCS = \
- 	Source/FreeImage/LFPQuantizer.cpp \
- 	Source/FreeImage/MemoryIO.cpp \
- 	Source/FreeImage/PixelAccess.cpp \
-+
-+SRCS-$(USE_JPEG2K) += \
- 	Source/FreeImage/J2KHelper.cpp \
-+
-+SRCS-$(USE_MNG) += \
- 	Source/FreeImage/MNGHelper.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/Plugin.cpp \
- 	Source/FreeImage/PluginBMP.cpp \
- 	Source/FreeImage/PluginCUT.cpp \
- 	Source/FreeImage/PluginDDS.cpp \
-+
-+SRCS-$(USE_EXR) += \
- 	Source/FreeImage/PluginEXR.cpp \
-+
-+SRCS-$(USE_TIFF) += \
- 	Source/FreeImage/PluginG3.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginGIF.cpp \
- 	Source/FreeImage/PluginHDR.cpp \
- 	Source/FreeImage/PluginICO.cpp \
- 	Source/FreeImage/PluginIFF.cpp \
-+
-+SRCS-$(USE_JPEG2K) += \
- 	Source/FreeImage/PluginJ2K.cpp \
-+
-+SRCS-$(USE_MNG) += \
- 	Source/FreeImage/PluginJNG.cpp \
-+
-+SRCS-$(USE_JPEG2K) += \
- 	Source/FreeImage/PluginJP2.cpp \
-+
-+SRCS-$(USE_JPEG) += \
- 	Source/FreeImage/PluginJPEG.cpp \
--	Source/FreeImage/PluginJXR.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginKOALA.cpp \
-+
-+SRCS-$(USE_MNG) += \
- 	Source/FreeImage/PluginMNG.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginPCD.cpp \
- 	Source/FreeImage/PluginPCX.cpp \
- 	Source/FreeImage/PluginPFM.cpp \
- 	Source/FreeImage/PluginPICT.cpp \
-+
-+SRCS-$(USE_PNG) += \
- 	Source/FreeImage/PluginPNG.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginPNM.cpp \
- 	Source/FreeImage/PluginPSD.cpp \
- 	Source/FreeImage/PluginRAS.cpp \
-+
-+SRCS-$(USE_RAW) += \
- 	Source/FreeImage/PluginRAW.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginSGI.cpp \
- 	Source/FreeImage/PluginTARGA.cpp \
-+
-+SRCS-$(USE_TIFF) += \
- 	Source/FreeImage/PluginTIFF.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginWBMP.cpp \
-+
-+SRCS-$(USE_WEBP) += \
- 	Source/FreeImage/PluginWebP.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginXBM.cpp \
- 	Source/FreeImage/PluginXPM.cpp \
- 	Source/FreeImage/PSDParser.cpp \
-@@ -78,7 +128,11 @@ SRCS = \
- 	Source/Metadata/IPTC.cpp \
- 	Source/Metadata/TagConversion.cpp \
- 	Source/Metadata/TagLib.cpp \
-+
-+SRCS-$(USE_TIFF) += \
- 	Source/Metadata/XTIFF.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImageToolkit/Background.cpp \
- 	Source/FreeImageToolkit/BSplineRotate.cpp \
- 	Source/FreeImageToolkit/Channels.cpp \
-@@ -87,11 +141,19 @@ SRCS = \
- 	Source/FreeImageToolkit/CopyPaste.cpp \
- 	Source/FreeImageToolkit/Display.cpp \
- 	Source/FreeImageToolkit/Flip.cpp \
-+
-+SRCS-$(USE_JPEG) += \
- 	Source/FreeImageToolkit/JPEGTransform.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImageToolkit/MultigridPoissonSolver.cpp \
- 	Source/FreeImageToolkit/Rescale.cpp \
- 	Source/FreeImageToolkit/Resize.cpp \
- 
-+SRCS-$(USE_JPEG) += \
-+	Source/transupp.c
-+SRCS = $(SRCS-yes)
-+
- INCLS = Dist/FreeImage.h \
- 	Examples/OpenGL/TextureManager/TextureManager.h \
- 	Examples/Plugin/PluginCradle.h \
-@@ -117,7 +179,18 @@ INCLS = Dist/FreeImage.h \
- 	Wrapper/FreeImagePlus/test/fipTest.h \
- 	TestAPI/TestSuite.h
- 
--INCLUDE = -I. \
-+INCLUDE-yes = -I. \
- 	-ISource \
- 	-ISource/Metadata \
- 	-ISource/FreeImageToolkit \
-+
-+INCLUDE-yes += $(shell $(PKG_CONFIG) --cflags-only-I zlib)
-+INCLUDE-$(USE_EXR)    += -DUSE_EXR    $(shell $(PKG_CONFIG) --cflags-only-I OpenEXR)
-+INCLUDE-$(USE_JPEG)   += -DUSE_JPEG
-+INCLUDE-$(USE_JPEG2K) += -DUSE_JPEG2K $(shell $(PKG_CONFIG) --cflags-only-I libopenjp2)
-+INCLUDE-$(USE_MNG)    += -DUSE_MNG
-+INCLUDE-$(USE_PNG)    += -DUSE_PNG    $(shell $(PKG_CONFIG) --cflags-only-I libpng)
-+INCLUDE-$(USE_TIFF)   += -DUSE_TIFF   $(shell $(PKG_CONFIG) --cflags-only-I libtiff-4 IlmBase)
-+INCLUDE-$(USE_RAW)    += -DUSE_RAW    $(shell $(PKG_CONFIG) --cflags-only-I libraw)
-+INCLUDE-$(USE_WEBP)   += -DUSE_WEBP   $(shell $(PKG_CONFIG) --cflags-only-I libwebp libwebpmux)
-+INCLUDE = $(INCLUDE-yes)
-diff --git a/Source/FreeImage/J2KHelper.cpp b/Source/FreeImage/J2KHelper.cpp
-index 1776c3b..538f1c5 100644
---- a/Source/FreeImage/J2KHelper.cpp
-+++ b/Source/FreeImage/J2KHelper.cpp
-@@ -21,7 +21,7 @@
- 
- #include "FreeImage.h"
- #include "Utilities.h"
--#include "../LibOpenJPEG/openjpeg.h"
-+#include <openjpeg.h>
- #include "J2KHelper.h"
- 
- // --------------------------------------------------------------------------
-diff --git a/Source/FreeImage/Plugin.cpp b/Source/FreeImage/Plugin.cpp
-index 11e7294..7768a32 100644
---- a/Source/FreeImage/Plugin.cpp
-+++ b/Source/FreeImage/Plugin.cpp
-@@ -238,23 +238,33 @@ FreeImage_Initialise(BOOL load_local_plugins_only) {
- 			*/
- 			s_plugins->AddNode(InitBMP);
- 			s_plugins->AddNode(InitICO);
-+#ifdef USE_JPEG
- 			s_plugins->AddNode(InitJPEG);
-+#endif
-+#ifdef USE_MNG
- 			s_plugins->AddNode(InitJNG);
-+#endif
- 			s_plugins->AddNode(InitKOALA);
- 			s_plugins->AddNode(InitIFF);
-+#ifdef USE_MNG
- 			s_plugins->AddNode(InitMNG);
-+#endif
- 			s_plugins->AddNode(InitPNM, NULL, "PBM", "Portable Bitmap (ASCII)", "pbm", "^P1");
- 			s_plugins->AddNode(InitPNM, NULL, "PBMRAW", "Portable Bitmap (RAW)", "pbm", "^P4");
- 			s_plugins->AddNode(InitPCD);
- 			s_plugins->AddNode(InitPCX);
- 			s_plugins->AddNode(InitPNM, NULL, "PGM", "Portable Greymap (ASCII)", "pgm", "^P2");
- 			s_plugins->AddNode(InitPNM, NULL, "PGMRAW", "Portable Greymap (RAW)", "pgm", "^P5");
-+#ifdef USE_PNG
- 			s_plugins->AddNode(InitPNG);
-+#endif
- 			s_plugins->AddNode(InitPNM, NULL, "PPM", "Portable Pixelmap (ASCII)", "ppm", "^P3");
- 			s_plugins->AddNode(InitPNM, NULL, "PPMRAW", "Portable Pixelmap (RAW)", "ppm", "^P6");
- 			s_plugins->AddNode(InitRAS);
- 			s_plugins->AddNode(InitTARGA);
-+#ifdef USE_TIFF
- 			s_plugins->AddNode(InitTIFF);
-+#endif
- 			s_plugins->AddNode(InitWBMP);
- 			s_plugins->AddNode(InitPSD);
- 			s_plugins->AddNode(InitCUT);
-@@ -263,16 +273,26 @@ FreeImage_Initialise(BOOL load_local_plugins_only) {
- 			s_plugins->AddNode(InitDDS);
- 	        s_plugins->AddNode(InitGIF);
- 	        s_plugins->AddNode(InitHDR);
-+#ifdef USE_TIFF
- 			s_plugins->AddNode(InitG3);
-+#endif
- 			s_plugins->AddNode(InitSGI);
-+#ifdef USE_EXR
- 			s_plugins->AddNode(InitEXR);
-+#endif
-+#ifdef USE_JPEG2K
- 			s_plugins->AddNode(InitJ2K);
- 			s_plugins->AddNode(InitJP2);
-+#endif
- 			s_plugins->AddNode(InitPFM);
- 			s_plugins->AddNode(InitPICT);
-+#ifdef USE_RAW
- 			s_plugins->AddNode(InitRAW);
-+#endif
-+#ifdef USE_WEBP
- 			s_plugins->AddNode(InitWEBP);
--#if !(defined(_MSC_VER) && (_MSC_VER <= 1310))
-+#endif
-+#if 0
- 			s_plugins->AddNode(InitJXR);
- #endif // unsupported by MS Visual Studio 2003 !!!
- 			
-diff --git a/Source/FreeImage/PluginEXR.cpp b/Source/FreeImage/PluginEXR.cpp
-index b286430..faa8037 100644
---- a/Source/FreeImage/PluginEXR.cpp
-+++ b/Source/FreeImage/PluginEXR.cpp
-@@ -28,16 +28,16 @@
- #pragma warning (disable : 4800) // ImfVersion.h - 'const int' : forcing value to bool 'true' or 'false' (performance warning)
- #endif 
- 
--#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 <ImfIO.h>
-+#include <Iex.h>
-+#include <ImfOutputFile.h>
-+#include <ImfInputFile.h>
-+#include <ImfRgbaFile.h>
-+#include <ImfChannelList.h>
-+#include <ImfRgba.h>
-+#include <ImfArray.h>
-+#include <ImfPreviewImage.h>
-+#include <half.h>
- 
- 
- // ==========================================================
-diff --git a/Source/FreeImage/PluginG3.cpp b/Source/FreeImage/PluginG3.cpp
-index 0a083b4..b3a9bd7 100644
---- a/Source/FreeImage/PluginG3.cpp
-+++ b/Source/FreeImage/PluginG3.cpp
-@@ -20,7 +20,7 @@
- // Use at your own risk!
- // ==========================================================
- 
--#include "../LibTIFF4/tiffiop.h"
-+#include "tiffiop.h"
- 
- #include "FreeImage.h"
- #include "Utilities.h"
-diff --git a/Source/FreeImage/PluginJ2K.cpp b/Source/FreeImage/PluginJ2K.cpp
-index b8bcfc8..621a903 100644
---- a/Source/FreeImage/PluginJ2K.cpp
-+++ b/Source/FreeImage/PluginJ2K.cpp
-@@ -21,7 +21,7 @@
- 
- #include "FreeImage.h"
- #include "Utilities.h"
--#include "../LibOpenJPEG/openjpeg.h"
-+#include <openjpeg.h>
- #include "J2KHelper.h"
- 
- // ==========================================================
-diff --git a/Source/FreeImage/PluginJP2.cpp b/Source/FreeImage/PluginJP2.cpp
-index 742fe2c..c57f626 100644
---- a/Source/FreeImage/PluginJP2.cpp
-+++ b/Source/FreeImage/PluginJP2.cpp
-@@ -21,7 +21,7 @@
- 
- #include "FreeImage.h"
- #include "Utilities.h"
--#include "../LibOpenJPEG/openjpeg.h"
-+#include <openjpeg.h>
- #include "J2KHelper.h"
- 
- // ==========================================================
-diff --git a/Source/FreeImage/PluginJPEG.cpp b/Source/FreeImage/PluginJPEG.cpp
-index 8db177d..dd97e63 100644
---- a/Source/FreeImage/PluginJPEG.cpp
-+++ b/Source/FreeImage/PluginJPEG.cpp
-@@ -35,11 +35,15 @@ extern "C" {
- #undef FAR
- #include <setjmp.h>
- 
--#include "../LibJPEG/jinclude.h"
--#include "../LibJPEG/jpeglib.h"
--#include "../LibJPEG/jerror.h"
-+#include <string.h>
-+#include <stdio.h>
-+#include <jconfig.h>
-+#include <jpeglib.h>
-+#include <jerror.h>
- }
- 
-+#define SIZEOF(object)        ((size_t) sizeof(object))
-+
- #include "FreeImage.h"
- #include "Utilities.h"
- 
-diff --git a/Source/FreeImage/PluginPNG.cpp b/Source/FreeImage/PluginPNG.cpp
-index 661f160..504fafe 100644
---- a/Source/FreeImage/PluginPNG.cpp
-+++ b/Source/FreeImage/PluginPNG.cpp
-@@ -40,8 +40,8 @@
- 
- // ----------------------------------------------------------
- 
--#include "../ZLib/zlib.h"
--#include "../LibPNG/png.h"
-+#include <zlib.h>
-+#include <png.h>
- 
- // ----------------------------------------------------------
- 
-diff --git a/Source/FreeImage/PluginRAW.cpp b/Source/FreeImage/PluginRAW.cpp
-index e9bd5bf..680e634 100644
---- a/Source/FreeImage/PluginRAW.cpp
-+++ b/Source/FreeImage/PluginRAW.cpp
-@@ -19,7 +19,7 @@
- // Use at your own risk!
- // ==========================================================
- 
--#include "../LibRawLite/libraw/libraw.h"
-+#include <libraw.h>
- 
- #include "FreeImage.h"
- #include "Utilities.h"
-diff --git a/Source/FreeImage/PluginTIFF.cpp b/Source/FreeImage/PluginTIFF.cpp
-index 67fab0b..36f99e8 100644
---- a/Source/FreeImage/PluginTIFF.cpp
-+++ b/Source/FreeImage/PluginTIFF.cpp
-@@ -37,9 +37,9 @@
- 
- #include "FreeImage.h"
- #include "Utilities.h"
--#include "../LibTIFF4/tiffiop.h"
-+#include "tiffiop.h"
- #include "../Metadata/FreeImageTag.h"
--#include "../OpenEXR/Half/half.h"
-+#include <half.h>
- 
- #include "FreeImageIO.h"
- #include "PSDParser.h"
-diff --git a/Source/FreeImage/PluginWebP.cpp b/Source/FreeImage/PluginWebP.cpp
-index 7c9f62f..c401447 100644
---- a/Source/FreeImage/PluginWebP.cpp
-+++ b/Source/FreeImage/PluginWebP.cpp
-@@ -24,9 +24,9 @@
- 
- #include "../Metadata/FreeImageTag.h"
- 
--#include "../LibWebP/src/webp/decode.h"
--#include "../LibWebP/src/webp/encode.h"
--#include "../LibWebP/src/webp/mux.h"
-+#include <webp/decode.h>
-+#include <webp/encode.h>
-+#include <webp/mux.h>
- 
- // ==========================================================
- // Plugin Interface
-diff --git a/Source/FreeImage/ZLibInterface.cpp b/Source/FreeImage/ZLibInterface.cpp
-index 3ab6d32..7e32110 100644
---- a/Source/FreeImage/ZLibInterface.cpp
-+++ b/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) */
-+#define OS_CODE 0x03
- 
- /**
- Compresses a source buffer into a target buffer, using the ZLib library. 
-diff --git a/Source/FreeImageToolkit/JPEGTransform.cpp b/Source/FreeImageToolkit/JPEGTransform.cpp
-index 6f9ba8e..988d777 100644
---- a/Source/FreeImageToolkit/JPEGTransform.cpp
-+++ b/Source/FreeImageToolkit/JPEGTransform.cpp
-@@ -26,10 +26,11 @@ extern "C" {
- #undef FAR
- #include <setjmp.h>
- 
--#include "../LibJPEG/jinclude.h"
--#include "../LibJPEG/jpeglib.h"
--#include "../LibJPEG/jerror.h"
--#include "../LibJPEG/transupp.h"
-+#include <string.h>
-+#include <stdio.h>
-+#include <jpeglib.h>
-+#include <jerror.h>
-+#include "transupp.h"
- }
- 
- #include "FreeImage.h"
-diff --git a/Source/Metadata/XTIFF.cpp b/Source/Metadata/XTIFF.cpp
-index d5be902..7f2be42 100644
---- a/Source/Metadata/XTIFF.cpp
-+++ b/Source/Metadata/XTIFF.cpp
-@@ -29,7 +29,7 @@
- #pragma warning (disable : 4786) // identifier was truncated to 'number' characters
- #endif
- 
--#include "../LibTIFF4/tiffiop.h"
-+#include "tiffiop.h"
- 
- #include "FreeImage.h"
- #include "Utilities.h"
-diff --git a/Source/tiffiop.h b/Source/tiffiop.h
-index 2fe7556..1642582 100644
---- a/Source/tiffiop.h
-+++ b/Source/tiffiop.h
-@@ -28,7 +28,10 @@
-  * ``Library-private'' definitions.
-  */
- 
--#include "tif_config.h"
-+#include <tiffconf.h>
-+#define HAVE_SEARCH_H
-+#define HAVE_FCNTL_H
-+#define HAVE_SNPRINTF
- 
- #ifdef HAVE_FCNTL_H
- # include <fcntl.h>
-diff --git a/Source/transupp.c b/Source/transupp.c
-index d10f57b..d50216c 100644
---- a/Source/transupp.c
-+++ b/Source/transupp.c
-@@ -15,8 +15,7 @@
- /* Although this file really shouldn't have access to the library internals,
-  * it's helpful to let it call jround_up() and jcopy_block_row().
-  */
--#define JPEG_INTERNALS
--
-+#include <jerror.h>
- #include "jinclude.h"
- #include "jpeglib.h"
- #include "transupp.h"		/* My own external interface */
-diff --git a/fipMakefile.srcs b/fipMakefile.srcs
-index d271b4b..e58f046 100644
---- a/fipMakefile.srcs
-+++ b/fipMakefile.srcs
-@@ -1,6 +1,15 @@
-+USE_EXR ?= yes
-+USE_JPEG ?= yes
-+USE_JPEG2K ?= yes
-+USE_MNG ?= yes
-+USE_PNG ?= yes
-+USE_TIFF ?= yes
-+USE_RAW ?= yes
-+USE_WEBP ?= yes
-+
- VER_MAJOR = 3
- VER_MINOR = 18.0
--SRCS = \
-+SRCS-yes = \
- 	Source/FreeImage/BitmapAccess.cpp \
- 	Source/FreeImage/ColorLookup.cpp \
- 	Source/FreeImage/ConversionRGBA16.cpp \
-@@ -12,39 +21,80 @@ SRCS = \
- 	Source/FreeImage/LFPQuantizer.cpp \
- 	Source/FreeImage/MemoryIO.cpp \
- 	Source/FreeImage/PixelAccess.cpp \
-+
-+SRCS-$(USE_JPEG2K) += \
- 	Source/FreeImage/J2KHelper.cpp \
-+
-+SRCS-$(USE_MNG) += \
- 	Source/FreeImage/MNGHelper.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/Plugin.cpp \
- 	Source/FreeImage/PluginBMP.cpp \
- 	Source/FreeImage/PluginCUT.cpp \
- 	Source/FreeImage/PluginDDS.cpp \
-+
-+SRCS-$(USE_EXR) += \
- 	Source/FreeImage/PluginEXR.cpp \
-+
-+SRCS-$(USE_TIFF) += \
- 	Source/FreeImage/PluginG3.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginGIF.cpp \
- 	Source/FreeImage/PluginHDR.cpp \
- 	Source/FreeImage/PluginICO.cpp \
- 	Source/FreeImage/PluginIFF.cpp \
-+
-+SRCS-$(USE_JPEG2K) += \
- 	Source/FreeImage/PluginJ2K.cpp \
-+
-+SRCS-$(USE_MNG) += \
- 	Source/FreeImage/PluginJNG.cpp \
-+
-+SRCS-$(USE_JPEG2K) += \
- 	Source/FreeImage/PluginJP2.cpp \
-+
-+SRCS-$(USE_JPEG) += \
- 	Source/FreeImage/PluginJPEG.cpp \
--	Source/FreeImage/PluginJXR.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginKOALA.cpp \
-+
-+SRCS-$(USE_MNG) += \
- 	Source/FreeImage/PluginMNG.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginPCD.cpp \
- 	Source/FreeImage/PluginPCX.cpp \
- 	Source/FreeImage/PluginPFM.cpp \
- 	Source/FreeImage/PluginPICT.cpp \
-+
-+SRCS-$(USE_PNG) += \
- 	Source/FreeImage/PluginPNG.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginPNM.cpp \
- 	Source/FreeImage/PluginPSD.cpp \
- 	Source/FreeImage/PluginRAS.cpp \
-+
-+SRCS-$(USE_RAW) += \
- 	Source/FreeImage/PluginRAW.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginSGI.cpp \
- 	Source/FreeImage/PluginTARGA.cpp \
-+
-+SRCS-$(USE_TIFF) += \
- 	Source/FreeImage/PluginTIFF.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginWBMP.cpp \
-+
-+SRCS-$(USE_WEBP) += \
- 	Source/FreeImage/PluginWebP.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImage/PluginXBM.cpp \
- 	Source/FreeImage/PluginXPM.cpp \
- 	Source/FreeImage/PSDParser.cpp \
-@@ -78,7 +128,11 @@ SRCS = \
- 	Source/Metadata/IPTC.cpp \
- 	Source/Metadata/TagConversion.cpp \
- 	Source/Metadata/TagLib.cpp \
-+
-+SRCS-$(USE_TIFF) += \
- 	Source/Metadata/XTIFF.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImageToolkit/Background.cpp \
- 	Source/FreeImageToolkit/BSplineRotate.cpp \
- 	Source/FreeImageToolkit/Channels.cpp \
-@@ -87,7 +141,11 @@ SRCS = \
- 	Source/FreeImageToolkit/CopyPaste.cpp \
- 	Source/FreeImageToolkit/Display.cpp \
- 	Source/FreeImageToolkit/Flip.cpp \
-+
-+SRCS-$(USE_JPEG) += \
- 	Source/FreeImageToolkit/JPEGTransform.cpp \
-+
-+SRCS-yes += \
- 	Source/FreeImageToolkit/MultigridPoissonSolver.cpp \
- 	Source/FreeImageToolkit/Rescale.cpp \
- 	Source/FreeImageToolkit/Resize.cpp \
-@@ -98,6 +156,11 @@ SRCS = \
- 	Wrapper/FreeImagePlus/src/fipTag.cpp \
- 	Wrapper/FreeImagePlus/src/fipWinImage.cpp \
- 	Wrapper/FreeImagePlus/src/FreeImagePlus.cpp 
-+
-+SRCS-$(USE_JPEG) += \
-+	Source/transupp.c
-+
-+SRCS = $(SRCS-yes)
- INCLUDE = -I. \
- 	-ISource \
- 	-ISource/Metadata \
--- 
-2.19.1
-

diff --git a/media-libs/freeimage/freeimage-3.18.0-r1.ebuild b/media-libs/freeimage/freeimage-3.18.0-r1.ebuild
index e904c560e53..b6dc64c0ab9 100644
--- a/media-libs/freeimage/freeimage-3.18.0-r1.ebuild
+++ b/media-libs/freeimage/freeimage-3.18.0-r1.ebuild
@@ -12,7 +12,8 @@ MY_P=${MY_PN}${MY_PV}
 DESCRIPTION="Image library supporting many formats"
 HOMEPAGE="https://freeimage.sourceforge.io/"
 SRC_URI="mirror://sourceforge/${PN}/${MY_P}.zip
-	mirror://sourceforge/${PN}/${MY_P}.pdf"
+	mirror://sourceforge/${PN}/${MY_P}.pdf
+	https://dev.gentoo.org/~juippis/distfiles/tmp/freeimage-3.18.0-unbundling.patch"
 
 LICENSE="|| ( GPL-2 FIPL-1.0 )"
 SLOT="0"
@@ -43,7 +44,7 @@ S=${WORKDIR}/${MY_PN}
 
 DOCS=( "${DISTDIR}"/${MY_P}.pdf README.linux Whatsnew.txt )
 PATCHES=(
-	"${FILESDIR}"/${PN}-3.18.0-unbundling.patch
+	"${DISTDIR}"/${PN}-3.18.0-unbundling.patch
 	"${FILESDIR}"/${PN}-3.18.0-remove-jpeg-transform.patch
 	"${FILESDIR}"/${PN}-3.18.0-rename-jpeg_read_icc_profile.patch
 	"${FILESDIR}"/${PN}-3.18.0-disable-plugin-G3.patch

diff --git a/media-libs/freeimage/freeimage-3.18.0-r2.ebuild b/media-libs/freeimage/freeimage-3.18.0-r2.ebuild
index 3e551b4b349..d8b629ca9c1 100644
--- a/media-libs/freeimage/freeimage-3.18.0-r2.ebuild
+++ b/media-libs/freeimage/freeimage-3.18.0-r2.ebuild
@@ -12,7 +12,8 @@ MY_P=${MY_PN}${MY_PV}
 DESCRIPTION="Image library supporting many formats"
 HOMEPAGE="https://freeimage.sourceforge.io/"
 SRC_URI="mirror://sourceforge/${PN}/${MY_P}.zip
-	mirror://sourceforge/${PN}/${MY_P}.pdf"
+	mirror://sourceforge/${PN}/${MY_P}.pdf
+	https://dev.gentoo.org/~juippis/distfiles/tmp/freeimage-3.18.0-unbundling.patch"
 
 LICENSE="|| ( GPL-2 FIPL-1.0 )"
 SLOT="0"
@@ -43,7 +44,7 @@ S=${WORKDIR}/${MY_PN}
 
 DOCS=( "${DISTDIR}"/${MY_P}.pdf README.linux Whatsnew.txt )
 PATCHES=(
-	"${FILESDIR}"/${PN}-3.18.0-unbundling.patch
+	"${DISTDIR}"/${PN}-3.18.0-unbundling.patch
 	"${FILESDIR}"/${PN}-3.18.0-remove-jpeg-transform.patch
 	"${FILESDIR}"/${PN}-3.18.0-rename-jpeg_read_icc_profile.patch
 	"${FILESDIR}"/${PN}-3.18.0-disable-plugin-G3.patch


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/freeimage/, media-libs/freeimage/files/
@ 2022-12-23  2:03 Ionen Wolkens
  0 siblings, 0 replies; 6+ messages in thread
From: Ionen Wolkens @ 2022-12-23  2:03 UTC (permalink / raw
  To: gentoo-commits

commit:     cfbae17669d5be64dd7e9e6337c294e935fb984e
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 23 01:58:51 2022 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Dec 23 02:02:44 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cfbae176

media-libs/freeimage: adjust libraw patch style for consistency

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 ....18.0-libraw-0.21.patch => freeimage-3.18.0-libraw-0.21.0.patch} | 6 +++---
 media-libs/freeimage/freeimage-3.18.0-r10.ebuild                    | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/media-libs/freeimage/files/freeimage-3.18.0-libraw-0.21.patch b/media-libs/freeimage/files/freeimage-3.18.0-libraw-0.21.0.patch
similarity index 83%
rename from media-libs/freeimage/files/freeimage-3.18.0-libraw-0.21.patch
rename to media-libs/freeimage/files/freeimage-3.18.0-libraw-0.21.0.patch
index 3005bf44d623..906590bbd329 100644
--- a/media-libs/freeimage/files/freeimage-3.18.0-libraw-0.21.patch
+++ b/media-libs/freeimage/files/freeimage-3.18.0-libraw-0.21.0.patch
@@ -3,9 +3,9 @@ https://bugs.gentoo.org/887467
 +++ b/Source/FreeImage/PluginRAW.cpp
 @@ -693,3 +693,7 @@
  		// (-s [0..N-1]) Select one raw image from input file
-+		#if LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 21)
++#if LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 21)
 +		RawProcessor->imgdata.rawparams.shot_select = 0;
-+		#else
++#else
  		RawProcessor->imgdata.params.shot_select = 0;
-+		#endif
++#endif
  		// (-w) Use camera white balance, if possible (otherwise, fallback to auto_wb)

diff --git a/media-libs/freeimage/freeimage-3.18.0-r10.ebuild b/media-libs/freeimage/freeimage-3.18.0-r10.ebuild
index 24e12d89db37..502ee0298dbe 100644
--- a/media-libs/freeimage/freeimage-3.18.0-r10.ebuild
+++ b/media-libs/freeimage/freeimage-3.18.0-r10.ebuild
@@ -57,7 +57,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-3.18.0-libraw-0.20.0.patch
 	"${FILESDIR}"/${PN}-3.18.0-tiff-4.4.0.patch
 	"${FILESDIR}"/${PN}-3.18.0-null-to-false.patch
-	"${FILESDIR}"/${PN}-3.18.0-libraw-0.21.patch
+	"${FILESDIR}"/${PN}-3.18.0-libraw-0.21.0.patch
 )
 
 src_prepare() {


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-12-23  2:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-23  2:03 [gentoo-commits] repo/gentoo:master commit in: media-libs/freeimage/, media-libs/freeimage/files/ Ionen Wolkens
  -- strict thread matches above, loose matches on Subject: below --
2020-11-15 15:31 Joonas Niilola
2019-05-05 20:42 James Le Cuirot
2019-04-14 12:44 James Le Cuirot
2018-03-25 20:15 James Le Cuirot
2017-01-21 20:04 David Seifert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox