Avoid compiling libjpeg when pdf_enable_rust_jpeg is true Windows continues to include jpeg_common and //third_party:jpeg for JpegModule::JpegEncode (used for EMF printing). -- Remove skia -> zune setup since PDFium calls directly. TAG=agy CONV=c3f50f4d-d4bd-4291-82fb-209ee1c19248 Change-Id: I7168228367222a97fd1657fdb041fddf4c8e3f85 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/157010 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcodec/BUILD.gn b/core/fxcodec/BUILD.gn index 184c328..2e1dedb 100644 --- a/core/fxcodec/BUILD.gn +++ b/core/fxcodec/BUILD.gn
@@ -220,17 +220,6 @@ } } - # Windows requires libjpeg for JpegModule::JpegEncode (used for EMF printing) - # regardless of whether Rust JPEG is enabled for decoding. Libjpeg is also - # used as fallback for CMYK / 4-component JPEG decoding in JpegModule. - sources += [ - "jpeg/jpeg_common.c", - "jpeg/jpeg_common.h", - "jpeg/libjpeg_scanline_decoder.cpp", - "jpeg/libjpeg_scanline_decoder.h", - ] - deps += [ "//third_party:jpeg" ] - if (pdf_enable_rust_jpeg) { sources += [ "jpeg/rust_jpeg_scanline_decoder.cpp", @@ -240,6 +229,21 @@ ":rust_jpeg_ffi", "//build/rust:cxx_cppdeps", ] + } else { + sources += [ + "jpeg/libjpeg_scanline_decoder.cpp", + "jpeg/libjpeg_scanline_decoder.h", + ] + } + + if (!pdf_enable_rust_jpeg || is_win) { + # Windows requires libjpeg for JpegModule::JpegEncode (used for EMF + # printing). + sources += [ + "jpeg/jpeg_common.c", + "jpeg/jpeg_common.h", + ] + deps += [ "//third_party:jpeg" ] } visibility = [ "../../*" ] }
diff --git a/core/fxcodec/jpeg/jpegmodule.cpp b/core/fxcodec/jpeg/jpegmodule.cpp index bf71bdc..41a9c09 100644 --- a/core/fxcodec/jpeg/jpegmodule.cpp +++ b/core/fxcodec/jpeg/jpegmodule.cpp
@@ -10,12 +10,13 @@ #include <optional> #include "build/build_config.h" -#include "core/fxcodec/jpeg/libjpeg_scanline_decoder.h" #include "core/fxcodec/scanlinedecoder.h" #include "core/fxcrt/span.h" #if defined(PDF_ENABLE_RUST_JPEG) #include "core/fxcodec/jpeg/rust_jpeg_scanline_decoder.h" +#else +#include "core/fxcodec/jpeg/libjpeg_scanline_decoder.h" #endif #if BUILDFLAG(IS_WIN)
diff --git a/pdfium.gni b/pdfium.gni index 11cc0a4..795e0ab 100644 --- a/pdfium.gni +++ b/pdfium.gni
@@ -66,7 +66,8 @@ # `pdf_enable_rust_bmp` requires Skia and Rust support. pdf_enable_rust_bmp = pdf_enable_rust_bmp_override - # Build PDFium with Skia/Rust-based JPEG decoder. + # Build PDFium with Rust-based JPEG decoder. If enabled, it ensures that + # PDFium doesn't depend on `libjpeg`. pdf_enable_rust_jpeg = pdf_enable_rust_jpeg_override # Build PDFium with Rust-based PNG decoder and encoder.
diff --git a/skia/BUILD.gn b/skia/BUILD.gn index 258f663..aa54741 100644 --- a/skia/BUILD.gn +++ b/skia/BUILD.gn
@@ -202,13 +202,6 @@ defines += [ "SK_CODEC_DECODES_BMP_WITH_RUST" ] } - if (pdf_enable_rust_jpeg) { - defines += [ - "SK_CODEC_DECODES_JPEG", - "SK_CODEC_DECODES_JPEG_WITH_RUST", - ] - } - if (pdf_enable_rust_png) { defines += [ "SK_CODEC_DECODES_PNG", @@ -479,15 +472,6 @@ sources += skia_encode_png_base sources += skia_encode_public sources += skia_encode_srcs - sources += [ - "//third_party/skia/src/codec/SkJpegCodec.cpp", - "//third_party/skia/src/codec/SkJpegDecoderMgr.cpp", - "//third_party/skia/src/codec/SkJpegMetadataDecoderImpl.cpp", - "//third_party/skia/src/codec/SkJpegMultiPicture.cpp", - "//third_party/skia/src/codec/SkJpegSegmentScan.cpp", - "//third_party/skia/src/codec/SkJpegSourceMgr.cpp", - "//third_party/skia/src/codec/SkJpegUtility.cpp", - ] if (pdf_enable_rust_png) { sources += skia_codec_rust_png @@ -504,7 +488,6 @@ sources += skia_encode_png_public deps += [ "../third_party:png" ] } - deps += [ "../third_party:jpeg" ] } # Template for things that are logically part of :skia, but need to be split out