# Copyright 2014 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/config/sanitizers/sanitizers.gni")
import("../pdfium.gni")

group("samples") {
  testonly = true
  deps = [ ":pdfium_test" ]
}

config("pdfium_samples_config") {
  cflags = []
  ldflags = []
  defines = []
  include_dirs = [ ".." ]
  if (pdf_use_skia) {
    defines += [ "PDF_ENABLE_SKIA" ]
  }
  if (is_asan) {
    defines += [ "PDF_ENABLE_ASAN" ]
  }
  if (pdf_use_partition_alloc) {
    defines += [ "PDF_USE_PARTITION_ALLOC" ]
  }
  if (enable_callgrind) {
    defines += [ "ENABLE_CALLGRIND" ]
  }
  if (build_with_chromium) {
    defines += [ "BUILD_WITH_CHROMIUM" ]
  }
}

executable("pdfium_test") {
  testonly = true
  sources = [
    "helpers/dump.cc",
    "helpers/dump.h",
    "helpers/event.cc",
    "helpers/event.h",
    "helpers/page_renderer.cc",
    "helpers/page_renderer.h",
    "helpers/write.cc",
    "helpers/write.h",
    "pdfium_test.cc",
  ]

  # Note: One should write programs that depend on ../:pdfium. Whereas this
  # sample program does not set a good example, and depends on PDFium internals,
  # as well as test support code, for convenience.
  deps = [
    "../:pdfium_public_headers",
    "../fpdfsdk",
    "../testing:test_support",
    "../testing/image_diff",
    "//build/win:default_exe_manifest",
  ]
  configs += [ ":pdfium_samples_config" ]

  if (is_win) {
    sources += [
      "helpers/win32/com_factory.cc",
      "helpers/win32/com_factory.h",
    ]
  }

  if (pdf_enable_v8) {
    deps += [
      "//v8:v8_headers",
      "//v8:v8_libplatform",
    ]
    include_dirs = [ "//v8" ]
    configs += [ "//v8:external_startup_data" ]
  }
  if (pdf_use_skia) {
    deps += [ "//skia" ]
    if (build_with_chromium) {
      sources += [
        "chromium_support/discardable_memory_allocator.cc",
        "chromium_support/discardable_memory_allocator.h",
      ]
      deps += [ "//base/test:test_support" ]
    }
  }
}
