From 4f2d7949f03e1c198bc888f2d05f421d35c57e21 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 9 Oct 2017 18:53:29 +0100 Subject: reinit the tree, so we can have metadata --- media-libs/freeimage/Manifest | 12 + .../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 +++++++++++++++++ .../freeimage/files/freeimage-3.15.4-raw.patch | 16 + .../files/freeimage-3.15.4-unbundling.patch | 639 +++++++++++++++++++++ media-libs/freeimage/freeimage-3.15.4-r1.ebuild | 115 ++++ media-libs/freeimage/metadata.xml | 11 + 9 files changed, 1572 insertions(+) create mode 100644 media-libs/freeimage/Manifest create mode 100644 media-libs/freeimage/files/freeimage-3.15.4-CVE-2015-0852.patch create mode 100644 media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-1.patch create mode 100644 media-libs/freeimage/files/freeimage-3.15.4-CVE-2016-5684-2.patch create mode 100644 media-libs/freeimage/files/freeimage-3.15.4-libjpeg-turbo.patch create mode 100644 media-libs/freeimage/files/freeimage-3.15.4-raw.patch create mode 100644 media-libs/freeimage/files/freeimage-3.15.4-unbundling.patch create mode 100644 media-libs/freeimage/freeimage-3.15.4-r1.ebuild create mode 100644 media-libs/freeimage/metadata.xml (limited to 'media-libs/freeimage') diff --git a/media-libs/freeimage/Manifest b/media-libs/freeimage/Manifest new file mode 100644 index 000000000000..8697d8fdbe2a --- /dev/null +++ b/media-libs/freeimage/Manifest @@ -0,0 +1,12 @@ +AUX freeimage-3.15.4-CVE-2015-0852.patch 6191 SHA256 8929713a75fd1da15cb11fb2f622b48e8dca171e00e65d7224fbc81064a8ee40 SHA512 bd42281246aeddbea7810ec3037b8d264afe96fe5fb4551ed617784c0b7c6b7ef6af2429c63c941ab7642c30948242050c088677716dcb9b4282776a95957e9f WHIRLPOOL a4c2adf3186e60d6ee538b945553760499ecc857b53468ecb9f64c1148bac7cd6212f27b178f8ffc520182428b5779ac0c8422072fa0049546a58a5e8837df89 +AUX freeimage-3.15.4-CVE-2016-5684-1.patch 690 SHA256 2fcc7fe50e8133cb316ab5960931a7570c48206a85f4285b4b44c0e50deece3a SHA512 7c535725fddb0a4f97c2634cf6144c9fea9d5963279265e0f08d9cc2f6a4aaf24a6fa27096dc5a50457db90bb93b895936d5967ae08ea9d93ebea89cd2ff724d WHIRLPOOL 3640a2cc3b36272fad5c6f535ad9e80e53a39b01ff19ea776c075c5509e9170af0cdf5973fbe430f3ca73accb78c32cbed4284b32779f1aabc929a2031786951 +AUX freeimage-3.15.4-CVE-2016-5684-2.patch 369 SHA256 07daf2b9647ca77d45691e362df166aaecedb3ff6f67a56ec1219f9c824770e2 SHA512 275871b569301af72d7db03c390113124b15a16d043bb7c95d10b4fe7a79cd092e2d320efe0ec6038f64f29e07ea443b97c367ff78dbd718ae04393e956be533 WHIRLPOOL d28f3e61fb018c8321112511de58e7146100c1e71dfec6c993be6649cda22aa1dc23c3bfe5c4e7d64c35ff5fe6d592fb28855a9c67083e129d129a5607a79b84 +AUX freeimage-3.15.4-libjpeg-turbo.patch 20346 SHA256 0ea677b1ae7f3f846d8306650913f7c2e49b585d03e1e2fe613ab8784c3b3f91 SHA512 effe0dd7d47400e57d4754a5d9b4533051aae0410fc9b579dd4af902c39538bf071bcc492a68cb027b0a28bc2f627357f26f4cb4f1d0ba93a34d0d5c0dfc524e WHIRLPOOL 2963088cf35ad48a1ce995c9f2fc98fe017a8a614fa4d1b957e4bff1bfb0d3baa130e87161647d25176c3218c5db0083e1357fe3d394cdbbbed59417e92341c4 +AUX freeimage-3.15.4-raw.patch 350 SHA256 78bf8997dc5d8da113eb2fdb7d6efbdf97641e1dd4b1d5623bbddf01ffcdde0f SHA512 2429bec7ec8f4963d3b0bd658093e8c3ff83d8ea5d934beb28526b80e89cb3aee6fe849800d80a81680614fa98e962744ced33ee198e04e32fc4be4d105e528b WHIRLPOOL 9de8738e401889fef8b8c95ea83e9322dd2fd2a5c898718696e5c0b6f45308e1ab62ec5a40449205e275f91e5fb1107aa3db055337747d657d3531991442c0f0 +AUX freeimage-3.15.4-unbundling.patch 17258 SHA256 198c0d36c89828b30c842edf7d9a87ff91c9987096f1d7de54ce6379e2e1f8e8 SHA512 96883a598a6386b322e69497760cff606d95e354dd7a197b858060b41402641c9188bf6c77a9a249d04a8c3d59561ccb034581a43e1df3fd0806f3a2a521f3a0 WHIRLPOOL e7e0a2e605aed5663d078a106cc376ff7d088b3c5abf125d9d7dbe5c2920b51648f38407c02197ded61befff9821e88a8cc26733af95ba453f52cea5d5acf62b +DIST FreeImage3154.pdf 1007480 SHA256 455b0ba7cf571f3fc3027681a70abf3c2321d0a4fd7956c5ba58bd7ccb7b5373 SHA512 cebde5e2609c9a0c06b4e07e1c595d7d6714895095cd9935f59c8b2ff9b34116248f5453b41f469f6242d87cae79be82d59f6a9ec0f75b1ea3df61ac1f651b28 WHIRLPOOL a1e8b575d198b61e74db9eb31e9472460158e86989ed822c156cae3f625f6ea0d156e4b7ddffc8b7a1d16a601be39b4cf0e20558d36bb4dd73195fea4faa43e7 +DIST FreeImage3154.zip 5513923 SHA256 eb6361519d33131690a0e726b085a05825e5adf9fb72c752d8d39100e48dc829 SHA512 0db9eb7d0ed8e08e10ff4fa274c4484541ca119c3d437a85fdc3b2d9232bf14a7877c79b1e62c8c99278d7020a9f623c161f2342475f3ee526233404138112cc WHIRLPOOL 2747bb7a35d8de24a1a876616626a9e840495f06da836ce15135aafaa21bc1d8d9cece17f7512424b66edfcc521ed096ea85da5ea5b5b90b4c032bf080356b4d +EBUILD freeimage-3.15.4-r1.ebuild 2961 SHA256 003be201ca625b0c03493f35ef9a53c8ea3ff793f3507079621a9a1f82519243 SHA512 746d2c66294780d0b3b702b659f0c4217887474d954633bbc80b43e0333c2364e5f56c59e97bb3708160a5fc28a0ef78642befdef71fabc0b13f3ac340683ccc WHIRLPOOL eaf22a351479baa75754bbe3a909a4d9318d8e1e1a9aff31d338add084dba52c77761d48c98017b605f687a9bdc68e195f4135445a5a0b68f06ce578cfe813d1 +MISC ChangeLog 2809 SHA256 70df4002ef66b697259c5a21ed864e54ac3520b606265f43e330b8a4169eba03 SHA512 a2bf54331f488312c589b57996fa9b36e7888b042ca1da9272654a7eae84436f3efd7a5dc5c97e91daaff879313b9f78e898b8950897848f892214b348ce306b WHIRLPOOL 73521d141c3b6229283463b161871ac7ee0edc0eb121c7ad7efcf3c3af4af976e2864d014237fe32ad21dd91e93b4d4bb525f9593f967401cd026eea8d8a656e +MISC ChangeLog-2015 5611 SHA256 28bafe2a0ca9b5c922c01132a355f325278cac07d6be74294f88cfd5eaedf80d SHA512 562b06cfcabea1a0aed6d646d1e42e3a8cb11491f2bf7c0aa8b82edefd001c65bd7e1f65341bd6ff543156e68eb70fd7fcfe7a92d15e43db9b13ad02313a01bf WHIRLPOOL 3d1af4f41f7de034499adb0479e3feeecebe159fd84754826092bb9bbaa2140770e6e2e540b705f6a4627479b1a08fa9af1bde42b628f9e378260a3e6859f66c +MISC metadata.xml 332 SHA256 cfa43d31c8fdaf868ceeabcbd5cb3313760b0e06e3c94b6f77adfd1e29560351 SHA512 060e17cbb418ebf7df3ee40bb1e99e12ce281101fc50e62e1a1d9cf0294fffbb2f475df1c25e954cb049bf065b316e155ccbf94dcae0bf49acf9e45e306144c5 WHIRLPOOL d69dba3f3b6008484d4c06d0a897027d62b69f694a3e01866d8b76efbaf054d2ea7653df605707c115fce0a62cad58b3e9876b987eaeb8fc2191784c8a700148 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 000000000000..e0c4b0cf19c4 --- /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 000000000000..1e94602e0e5e --- /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 000000000000..542a9aeab094 --- /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 000000000000..62037c59deb2 --- /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 /* 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 +- * [f]x[f]{+-}{+-} ++ * x{+-}{+-} + * 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-raw.patch b/media-libs/freeimage/files/freeimage-3.15.4-raw.patch new file mode 100644 index 000000000000..44f566627e2f --- /dev/null +++ b/media-libs/freeimage/files/freeimage-3.15.4-raw.patch @@ -0,0 +1,16 @@ +https://bugs.gentoo.org/show_bug.cgi?id=458516 + +--- FreeImage/Source/FreeImage.h ++++ FreeImage/Source/FreeImage.h +@@ -141,8 +141,10 @@ + 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.15.4-unbundling.patch b/media-libs/freeimage/files/freeimage-3.15.4-unbundling.patch new file mode 100644 index 000000000000..ac2ac54ce5cf --- /dev/null +++ b/media-libs/freeimage/files/freeimage-3.15.4-unbundling.patch @@ -0,0 +1,639 @@ +lots of fixes here: + - use system graphics libraries + - make all of them optional + - drop root users from install (fix user installs) + - make static lib build optional + - link with CXX and CXXFLAGS (since this is C++ code) + +--- a/Makefile.gnu ++++ b/Makefile.gnu +@@ -11,7 +11,24 @@ + # 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 ++ ++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 libopenjpeg) ++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) + + MODULES = $(SRCS:.c=.o) + MODULES := $(MODULES:.cpp=.o) +@@ -64,13 +81,15 @@ + $(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 +--- 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 + + /** + Divide an integer by a power of 2 and round upwards +--- a/Source/FreeImage/PluginEXR.cpp ++++ b/Source/FreeImage/PluginEXR.cpp +@@ -22,16 +22,16 @@ + + #include "FreeImage.h" + #include "Utilities.h" +-#include "../OpenEXR/IlmImf/ImfIO.h" +-#include "../OpenEXR/Iex/Iex.h" +-#include "../OpenEXR/IlmImf/ImfOutputFile.h" +-#include "../OpenEXR/IlmImf/ImfInputFile.h" +-#include "../OpenEXR/IlmImf/ImfRgbaFile.h" +-#include "../OpenEXR/IlmImf/ImfChannelList.h" +-#include "../OpenEXR/IlmImf/ImfRgba.h" +-#include "../OpenEXR/IlmImf/ImfArray.h" +-#include "../OpenEXR/IlmImf/ImfPreviewImage.h" +-#include "../OpenEXR/Half/half.h" ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include + + + // ========================================================== +--- 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 + + // ========================================================== + // Plugin Interface +--- 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 + + // ========================================================== + // Plugin Interface +--- a/Source/FreeImage/PluginPNG.cpp ++++ b/Source/FreeImage/PluginPNG.cpp +@@ -37,8 +37,8 @@ + + // ---------------------------------------------------------- + +-#include "../ZLib/zlib.h" +-#include "../LibPNG/png.h" ++#include ++#include + + // ---------------------------------------------------------- + +--- 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 + #include "jinclude.h" + #include "jpeglib.h" + #include "transupp.h" /* My own external interface */ +--- a/Source/FreeImage/ZLibInterface.cpp ++++ b/Source/FreeImage/ZLibInterface.cpp +@@ -19,10 +19,10 @@ + // Use at your own risk! + // ========================================================== + +-#include "../ZLib/zlib.h" ++#include + #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. +--- 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" +--- a/Source/FreeImage/PluginJPEG.cpp ++++ b/Source/FreeImage/PluginJPEG.cpp +@@ -35,11 +35,15 @@ + #undef FAR + #include + +-#include "../LibJPEG/jinclude.h" +-#include "../LibJPEG/jpeglib.h" +-#include "../LibJPEG/jerror.h" ++#include ++#include ++#include ++#include ++#include + } + ++#define SIZEOF(object) ((size_t) sizeof(object)) ++ + #include "FreeImage.h" + #include "Utilities.h" + +--- a/Source/FreeImageToolkit/JPEGTransform.cpp ++++ b/Source/FreeImageToolkit/JPEGTransform.cpp +@@ -25,10 +25,11 @@ + #undef FAR + #include + +-#include "../LibJPEG/jinclude.h" +-#include "../LibJPEG/jpeglib.h" +-#include "../LibJPEG/jerror.h" +-#include "../LibJPEG/transupp.h" ++#include ++#include ++#include ++#include ++#include "transupp.h" + } + + #include "FreeImage.h" +--- a/Makefile.fip ++++ b/Makefile.fip +@@ -11,7 +11,24 @@ + # 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 ++ ++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 libopenjpeg) ++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) + + MODULES = $(SRCS:.c=.o) + MODULES := $(MODULES:.cpp=.o) +@@ -65,14 +82,18 @@ + $(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) + + clean: + rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME) +--- a/Makefile.srcs ++++ b/Makefile.srcs +@@ -1,6 +1,14 @@ ++USE_EXR ?= yes ++USE_JPEG ?= yes ++USE_JPEG2K ?= yes ++USE_MNG ?= yes ++USE_PNG ?= yes ++USE_TIFF ?= yes ++USE_RAW ?= yes ++ + VER_MAJOR = 3 + VER_MINOR = 15.4 +-SRCS = \ ++SRCS-yes = \ + Source/FreeImage/BitmapAccess.cpp \ + Source/FreeImage/ColorLookup.cpp \ + Source/FreeImage/FreeImage.cpp \ +@@ -17,36 +25,74 @@ SRCS = \ + Source/FreeImage/GetType.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 \ ++ ++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 \ + Source/FreeImage/PluginXBM.cpp \ + Source/FreeImage/PluginXPM.cpp \ +@@ -83,7 +129,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 \ +@@ -92,10 +142,18 @@ 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 = \ + Examples/OpenGL/TextureManager/TextureManager.h \ + Examples/Plugin/PluginCradle.h \ +@@ -116,7 +174,17 @@ + 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 libopenjpeg) ++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 = $(INCLUDE-yes) +--- a/fipMakefile.srcs ++++ b/fipMakefile.srcs +@@ -1,6 +1,14 @@ ++USE_EXR ?= yes ++USE_JPEG ?= yes ++USE_JPEG2K ?= yes ++USE_MNG ?= yes ++USE_PNG ?= yes ++USE_TIFF ?= yes ++USE_RAW ?= yes ++ + VER_MAJOR = 3 + VER_MINOR = 15.4 +-SRCS = \ ++SRCS-yes = \ + Source/FreeImage/BitmapAccess.cpp \ + Source/FreeImage/ColorLookup.cpp \ + Source/FreeImage/FreeImage.cpp \ +@@ -9,36 +17,74 @@ + Source/FreeImage/GetType.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 \ ++ ++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 \ + Source/FreeImage/PluginXBM.cpp \ + Source/FreeImage/PluginXPM.cpp \ +@@ -75,7 +121,11 @@ + 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 \ +@@ -84,7 +134,11 @@ + 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 \ +@@ -95,6 +149,11 @@ + 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 \ +--- 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 + + #include "FreeImage.h" + #include "Utilities.h" +--- 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" +--- 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 + + #include "FreeImageIO.h" + #include "PSDParser.h" +--- a/Source/tiffiop.h ++++ b/Source/tiffiop.h +@@ -30,7 +30,9 @@ + * ``Library-private'' definitions. + */ + +-#include "tif_config.h" ++#include ++#define HAVE_SEARCH_H ++#define HAVE_FCNTL_H + + #ifdef HAVE_FCNTL_H + # include +--- a/Source/FreeImage/Plugin.cpp ++++ b/Source/FreeImage/Plugin.cpp +@@ -223,23 +223,33 @@ + */ + 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); +@@ -248,14 +258,22 @@ + 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 + + // external plugin initialization + 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 000000000000..666fba9ba67b --- /dev/null +++ b/media-libs/freeimage/freeimage-3.15.4-r1.ebuild @@ -0,0 +1,115 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +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 +} diff --git a/media-libs/freeimage/metadata.xml b/media-libs/freeimage/metadata.xml new file mode 100644 index 000000000000..fec64097dad5 --- /dev/null +++ b/media-libs/freeimage/metadata.xml @@ -0,0 +1,11 @@ + + + + + games@gentoo.org + Gentoo Games Project + + + freeimage + + -- cgit v1.2.3