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