diff options
author | 2016-02-16 13:16:39 -0800 | |
---|---|---|
committer | 2016-02-16 13:16:40 -0800 | |
commit | 4691d99d7ede02c86c09312b0da56a4460f69940 (patch) | |
tree | 5458400107a13f3480f5364e9b406991acefea9b | |
parent | ed828001da75f4a3a5d31d9f1c1935e3595ce920 (diff) |
Add SkCodec to the CMake build
BUG=skia:4956
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1705503002
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot
Review URL: https://codereview.chromium.org/1705503002
-rw-r--r-- | cmake/CMakeLists.txt | 13 | ||||
-rw-r--r-- | cmake/README.md | 4 | ||||
-rw-r--r-- | src/codec/SkGifCodec.cpp | 23 | ||||
-rw-r--r-- | src/codec/SkPngCodec.cpp | 2 |
4 files changed, 33 insertions, 9 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 58c04db8d9..751361a927 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -113,7 +113,6 @@ if (WIN32) endif() remove_srcs(../src/gpu/gl/angle/*) # TODO -remove_srcs(../src/codec/* ../src/android/*) # TODO: Requires Chromium's libjpeg-turbo, and incompatible giflib. # Certain files must be compiled with support for SSSE3, SSE4.1, AVX, or AVX2 intrinsics. file (GLOB_RECURSE ssse3_srcs ../src/*ssse3*.cpp ../src/*SSSE3*.cpp) @@ -146,6 +145,16 @@ if (UNIX AND NOT APPLE) find_package (PNG) endif() +# Decide whether to turn on SkCodec. +# TODO (skbug.com/4956): We should be able to turn specific codecs on and off rather than +# disabling all of them if one library is missing. +if (NOT (GIF_FOUND AND JPEG_FOUND AND PNG_FOUND AND WEBP_INCLUDE_DIRS AND WEBP_LIBRARIES)) + remove_srcs(../src/codec/* ../src/android/*) +endif() + +# Do not compile SkRawCodec. +remove_srcs(../src/codec/*Raw*.cpp) + # TODO: macro away this if (found) ... else() ... endif() stuff. if (EXPAT_FOUND) @@ -179,6 +188,8 @@ endif() if (PNG_FOUND) list (APPEND private_includes ${PNG_INCLUDE_DIRS}) list (APPEND libs ${PNG_LIBRARIES}) + add_definitions(-DPNG_SKIP_SETJMP_CHECK) + add_definitions(-DPNG_SKIP_SKIA_OPTS) else() remove_srcs(../src/images/*png*) endif() diff --git a/cmake/README.md b/cmake/README.md index 9fd84a7b1c..0cbd2b369e 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -21,7 +21,3 @@ Currently supported platforms Currently maybe-kinda-working platforms --------------------------------------- - x86-64 Mac OS X, Ubuntu 15.04 - -Caveats -------- - - SkCodec, Skia's new image decoder library, does not yet build. diff --git a/src/codec/SkGifCodec.cpp b/src/codec/SkGifCodec.cpp index 785c17e0f1..699554706b 100644 --- a/src/codec/SkGifCodec.cpp +++ b/src/codec/SkGifCodec.cpp @@ -49,7 +49,11 @@ static int32_t read_bytes_callback(GifFileType* fileType, GifByteType* out, int3 * Open the gif file */ static GifFileType* open_gif(SkStream* stream) { +#if GIFLIB_MAJOR < 5 + return DGifOpen(stream, read_bytes_callback); +#else return DGifOpen(stream, read_bytes_callback, nullptr); +#endif } /* @@ -117,7 +121,11 @@ inline uint32_t get_output_row_interlaced(uint32_t encodedRow, uint32_t height) * It is used in a SkAutoTCallIProc template */ void SkGifCodec::CloseGif(GifFileType* gif) { - DGifCloseFile(gif, NULL); +#if GIFLIB_MAJOR < 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR == 0) + DGifCloseFile(gif); +#else + DGifCloseFile(gif, nullptr); +#endif } /* @@ -126,7 +134,11 @@ void SkGifCodec::CloseGif(GifFileType* gif) { */ void SkGifCodec::FreeExtension(SavedImage* image) { if (NULL != image->ExtensionBlocks) { +#if GIFLIB_MAJOR < 5 + FreeExtension(image); +#else GifFreeExtensions(&image->ExtensionBlockCount, &image->ExtensionBlocks); +#endif } } @@ -311,10 +323,15 @@ SkCodec::Result SkGifCodec::ReadUpToFirstImage(GifFileType* gif, uint32_t* trans // Create an extension block with our data while (nullptr != extData) { // Add a single block + +#if GIFLIB_MAJOR < 5 + if (AddExtensionBlock(&saveExt, extData[0], + &extData[1]) == GIF_ERROR) { +#else if (GIF_ERROR == GifAddExtensionBlock(&saveExt.ExtensionBlockCount, &saveExt.ExtensionBlocks, - extFunction, extData[0], &extData[1])) - { + extFunction, extData[0], &extData[1])) { +#endif return gif_error("Could not add extension block.\n", kIncompleteInput); } // Move to the next block diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp index 54a82c4b27..974befc86d 100644 --- a/src/codec/SkPngCodec.cpp +++ b/src/codec/SkPngCodec.cpp @@ -19,7 +19,7 @@ #include "SkTemplates.h" // png_struct::read_filter[] was added in libpng 1.5.7. -#if defined(__SSE2__) && PNG_LIBPNG_VER >= 10507 +#if defined(__SSE2__) && PNG_LIBPNG_VER >= 10507 && !defined(PNG_SKIP_SKIA_OPTS) #include "pngstruct.h" extern "C" void sk_png_init_filter_functions_sse2(png_structp png, unsigned int bpp) { |