| # Copyright 2018 The PDFium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("../../pdfium.gni") |
| import("../../testing/test.gni") |
| |
| if (pdf_enable_rust_bmp || pdf_enable_rust_jpeg || pdf_enable_rust_png) { |
| import("//build/rust/rust_static_library.gni") |
| } |
| |
| if (pdf_enable_rust_bmp || pdf_enable_rust_jpeg || pdf_enable_rust_png) { |
| config("pdfium_rust_ffi_config") { |
| include_dirs = [ "$target_gen_dir/../.." ] |
| } |
| } |
| |
| if (pdf_enable_rust_bmp) { |
| rust_static_library("rust_bmp_ffi") { |
| crate_name = "rust_bmp_ffi" |
| allow_unsafe = true |
| crate_root = "bmp/rust_bmp_ffi.rs" |
| sources = [ crate_root ] |
| cxx_bindings = [ crate_root ] |
| public_configs = [ ":pdfium_rust_ffi_config" ] |
| deps = [ |
| "//build/rust:cxx_cppdeps", |
| "//third_party/rust/image/v0_25:lib", |
| ] |
| } |
| } |
| |
| if (pdf_enable_rust_jpeg) { |
| rust_static_library("rust_jpeg_ffi") { |
| crate_name = "rust_jpeg_ffi" |
| allow_unsafe = true |
| crate_root = "jpeg/rust_jpeg_ffi.rs" |
| sources = [ crate_root ] |
| cxx_bindings = [ crate_root ] |
| public_configs = [ ":pdfium_rust_ffi_config" ] |
| deps = [ |
| "//build/rust:cxx_cppdeps", |
| "//third_party/rust/zune_jpeg/v0_5:lib", |
| ] |
| } |
| } |
| |
| if (pdf_enable_rust_png) { |
| rust_static_library("pdfium_rust_png_ffi") { |
| crate_name = "pdfium_rust_png_ffi" |
| allow_unsafe = true |
| crate_root = "png/rust_png_ffi.rs" |
| sources = [ crate_root ] |
| cxx_bindings = [ crate_root ] |
| public_configs = [ ":pdfium_rust_ffi_config" ] |
| deps = [ |
| "//build/rust:cxx_cppdeps", |
| "//third_party/rust/png/v0_18:lib", |
| ] |
| } |
| } |
| |
| source_set("fxcodec") { |
| sources = [ |
| "basic/basicmodule.cpp", |
| "basic/basicmodule.h", |
| "data_and_bytes_consumed.cpp", |
| "data_and_bytes_consumed.h", |
| "fax/faxmodule.cpp", |
| "fax/faxmodule.h", |
| "flate/flatemodule.cpp", |
| "flate/flatemodule.h", |
| "fx_codec.cpp", |
| "fx_codec.h", |
| "fx_codec_def.h", |
| "icc/icc_transform.cpp", |
| "icc/icc_transform.h", |
| "jbig2/jbig2_arith_decoder.cpp", |
| "jbig2/jbig2_arith_decoder.h", |
| "jbig2/jbig2_arith_int_decoder.cpp", |
| "jbig2/jbig2_arith_int_decoder.h", |
| "jbig2/jbig2_bit_stream.cpp", |
| "jbig2/jbig2_bit_stream.h", |
| "jbig2/jbig2_context.cpp", |
| "jbig2/jbig2_context.h", |
| "jbig2/jbig2_decoder.cpp", |
| "jbig2/jbig2_decoder.h", |
| "jbig2/jbig2_define.h", |
| "jbig2/jbig2_document_context.cpp", |
| "jbig2/jbig2_document_context.h", |
| "jbig2/jbig2_grd_proc.cpp", |
| "jbig2/jbig2_grd_proc.h", |
| "jbig2/jbig2_grrd_proc.cpp", |
| "jbig2/jbig2_grrd_proc.h", |
| "jbig2/jbig2_htrd_proc.cpp", |
| "jbig2/jbig2_htrd_proc.h", |
| "jbig2/jbig2_huffman_decoder.cpp", |
| "jbig2/jbig2_huffman_decoder.h", |
| "jbig2/jbig2_huffman_table.cpp", |
| "jbig2/jbig2_huffman_table.h", |
| "jbig2/jbig2_image.cpp", |
| "jbig2/jbig2_image.h", |
| "jbig2/jbig2_page.h", |
| "jbig2/jbig2_pattern_dict.cpp", |
| "jbig2/jbig2_pattern_dict.h", |
| "jbig2/jbig2_pdd_proc.cpp", |
| "jbig2/jbig2_pdd_proc.h", |
| "jbig2/jbig2_sdd_proc.cpp", |
| "jbig2/jbig2_sdd_proc.h", |
| "jbig2/jbig2_segment.cpp", |
| "jbig2/jbig2_segment.h", |
| "jbig2/jbig2_symbol_dict.cpp", |
| "jbig2/jbig2_symbol_dict.h", |
| "jbig2/jbig2_trd_proc.cpp", |
| "jbig2/jbig2_trd_proc.h", |
| "jpeg/jpegmodule.cpp", |
| "jpeg/jpegmodule.h", |
| "jpx/cjpx_decoder.cpp", |
| "jpx/cjpx_decoder.h", |
| "jpx/jpx_decode_utils.cpp", |
| "jpx/jpx_decode_utils.h", |
| "scanlinedecoder.cpp", |
| "scanlinedecoder.h", |
| ] |
| configs += [ |
| "../../:pdfium_strict_config", |
| "../../:pdfium_noshorten_config", |
| ] |
| public_deps = [ "../fxcrt" ] |
| deps = [ |
| "../../third_party:lcms2", |
| "../../third_party:libopenjpeg2", |
| "../../third_party:zlib", |
| "../fxge", |
| ] |
| defines = [] |
| if (pdf_enable_brotli) { |
| sources += [ |
| "brotli/brotli_decoder.cpp", |
| "brotli/brotli_decoder.h", |
| ] |
| deps += [ "//third_party/brotli:dec" ] |
| } |
| if (pdf_enable_xfa) { |
| sources += [ |
| "cfx_codec_memory.cpp", |
| "cfx_codec_memory.h", |
| "gif/cfx_gif.cpp", |
| "gif/cfx_gif.h", |
| "gif/cfx_gifcontext.cpp", |
| "gif/cfx_gifcontext.h", |
| "gif/lzw_decompressor.cpp", |
| "gif/lzw_decompressor.h", |
| "progressive_decoder.cpp", |
| "progressive_decoder.h", |
| "progressive_decoder_context.cpp", |
| "progressive_decoder_context.h", |
| "progressive_decoder_context_delegate.h", |
| "tiff/libtiff_tiff_context.cpp", |
| "tiff/libtiff_tiff_context.h", |
| ] |
| deps += [ "../../third_party:tiff" ] |
| if (pdf_enable_rust_bmp) { |
| sources += [ |
| "bmp/rust_bmp_context.cpp", |
| "bmp/rust_bmp_context.h", |
| ] |
| deps += [ |
| ":rust_bmp_ffi", |
| "//build/rust:cxx_cppdeps", |
| ] |
| } else { |
| sources += [ |
| "bmp/cfx_bmpcontext.cpp", |
| "bmp/cfx_bmpcontext.h", |
| "bmp/cfx_bmpdecompressor.cpp", |
| "bmp/cfx_bmpdecompressor.h", |
| "bmp/fx_bmp.h", |
| ] |
| } |
| if (pdf_enable_rust_jpeg) { |
| sources += [ |
| "jpeg/rust_jpeg_context.cpp", |
| "jpeg/rust_jpeg_context.h", |
| ] |
| deps += [ |
| ":rust_jpeg_ffi", |
| "//build/rust:cxx_cppdeps", |
| ] |
| } else { |
| sources += [ |
| "jpeg/libjpeg_jpeg_context.cpp", |
| "jpeg/libjpeg_jpeg_context.h", |
| ] |
| } |
| |
| if (pdf_enable_rust_png) { |
| sources += [ |
| "png/rust_png_context.cpp", |
| "png/rust_png_context.h", |
| ] |
| deps += [ |
| ":pdfium_rust_png_ffi", |
| "//build/rust:cxx_cppdeps", |
| ] |
| } else { |
| sources += [ |
| "png/libpng_png_context.cpp", |
| "png/libpng_png_context.h", |
| ] |
| deps += [ "../../third_party:png" ] |
| } |
| if (pdf_use_skia) { |
| sources += [ |
| "codec_memory_sk_stream.cpp", |
| "codec_memory_sk_stream.h", |
| ] |
| } |
| } |
| |
| # 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", |
| "jpeg/rust_jpeg_scanline_decoder.h", |
| ] |
| deps += [ |
| ":rust_jpeg_ffi", |
| "//build/rust:cxx_cppdeps", |
| ] |
| } |
| visibility = [ "../../*" ] |
| } |
| |
| pdfium_unittest_source_set("unittests") { |
| sources = [ |
| "basic/a85_unittest.cpp", |
| "basic/rle_unittest.cpp", |
| "flate/flatemodule_unittest.cpp", |
| "jbig2/jbig2_bit_stream_unittest.cpp", |
| "jbig2/jbig2_image_unittest.cpp", |
| "jpeg/jpegmodule_unittest.cpp", |
| "jpx/jpx_unittest.cpp", |
| ] |
| deps = [ |
| ":fxcodec", |
| "../../third_party:libopenjpeg2", |
| "../fpdfapi/parser", |
| ] |
| pdfium_root_dir = "../../" |
| |
| if (pdf_enable_xfa) { |
| sources += [ |
| "gif/cfx_gifcontext_unittest.cpp", |
| "gif/lzw_decompressor_unittest.cpp", |
| "progressive_decoder_unittest.cpp", |
| ] |
| deps += [ "../fxge" ] |
| if (pdf_use_skia) { |
| sources += [ "codec_memory_sk_stream_unittest.cpp" ] |
| deps += [ "//skia" ] |
| } |
| } |
| } |
| |
| pdfium_embeddertest_source_set("embeddertests") { |
| sources = [ "jbig2/jbig2_embeddertest.cpp" ] |
| pdfium_root_dir = "../../" |
| if (pdf_enable_brotli) { |
| sources += [ "brotli/brotli_embeddertest.cpp" ] |
| deps = [ "//third_party/brotli:dec" ] |
| } |
| } |