# Copyright 2015 The PDFium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build_overrides/pdfium.gni")

# This file contains PDFium-related build flags.

declare_args() {
  # Build PDFium either:
  # 1) When set to true, with a bundled FreeType, built from FreeType source
  #    code in //third_party/freetype and PDFium's FreeType configs in
  #    third_party/freetype/include.
  # 2) When set to false, use whatever FreeType target is defined in
  #    //build/config/freetype.
  pdf_bundle_freetype = pdf_bundle_freetype_override

  # Generate logging messages for click events that reach PDFium
  pdf_enable_click_logging = false

  # Build PDFium either with or without v8 support.
  pdf_enable_v8 = pdf_enable_v8_override

  # Build PDFium either with or without XFA Forms support.
  pdf_enable_xfa = pdf_enable_xfa_override

  # If XFA, also support bmp codec. Ignored if not XFA.
  pdf_enable_xfa_bmp = true

  # If XFA, also support gif codec. Ignored if not XFA.
  pdf_enable_xfa_gif = true

  # If XFA, also support png codec. Ignored if not XFA.
  pdf_enable_xfa_png = true

  # If XFA, also support tiff codec. Ignored if not XFA.
  pdf_enable_xfa_tiff = true

  # Build PDFium with PartitionAlloc as the memory allocator.
  pdf_use_partition_alloc = pdf_use_partition_alloc_override

  # Build PDFium to use Skia (experimental) for all PDFium graphics.
  # If enabled, coexists in build with AGG graphics and the default
  # renderer is selectable at runtime.
  pdf_use_skia = pdf_use_skia_override

  # Build PDFium against Skia (experimental) rather than AGG. Use Skia to draw
  # paths.
  pdf_use_skia_paths = pdf_use_skia_paths_override

  # Build PDFium standalone
  pdf_is_standalone = false

  # Build a complete static library
  pdf_is_complete_lib = false

  # Enable callgrind for performance profiling
  enable_callgrind = false

  # Don't build against bundled zlib.
  use_system_zlib = false

  # Don't build against bundled lcms2.
  use_system_lcms2 = false

  # Don't build against bundled libopenjpeg2.
  use_system_libopenjpeg2 = false

  # Don't build against bundled libpng.
  use_system_libpng = false

  # Enable SSE2 for MSVC builds. Ignored if it's not a MSVC build.
  msvc_use_sse2 = true
}

if (pdf_use_skia && pdf_use_skia_paths) {
  assert(false, "Enable at most ONE of pdf_use_skia and pdf_use_skia_paths")
}

assert(!pdf_is_complete_lib || !is_component_build,
       "pdf_is_complete_lib=true requires is_component_build=false")
