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

import("//build/config/jumbo.gni")
import("../../pdfium.gni")
import("../../testing/test.gni")

jumbo_source_set("pwl") {
  sources = [
    "cpwl_appstream.cpp",
    "cpwl_appstream.h",
    "cpwl_button.cpp",
    "cpwl_button.h",
    "cpwl_caret.cpp",
    "cpwl_caret.h",
    "cpwl_combo_box.cpp",
    "cpwl_combo_box.h",
    "cpwl_edit.cpp",
    "cpwl_edit.h",
    "cpwl_edit_ctrl.cpp",
    "cpwl_edit_ctrl.h",
    "cpwl_edit_impl.cpp",
    "cpwl_edit_impl.h",
    "cpwl_icon.cpp",
    "cpwl_icon.h",
    "cpwl_list_box.cpp",
    "cpwl_list_box.h",
    "cpwl_list_impl.cpp",
    "cpwl_list_impl.h",
    "cpwl_scroll_bar.cpp",
    "cpwl_scroll_bar.h",
    "cpwl_special_button.cpp",
    "cpwl_special_button.h",
    "cpwl_timer.cpp",
    "cpwl_timer.h",
    "cpwl_timer_handler.cpp",
    "cpwl_timer_handler.h",
    "cpwl_wnd.cpp",
    "cpwl_wnd.h",
  ]
  configs += [ "../../:pdfium_core_config" ]
  deps = [
    "../../:pdfium_public_headers",
    "../../core/fpdfapi/font",
    "../../core/fpdfapi/page",
    "../../core/fpdfapi/parser",
    "../../core/fpdfapi/render",
    "../../core/fpdfdoc",
    "../../core/fxcrt",
    "../../core/fxge",
    "../formfiller:fontmap",
  ]
  visibility = [ "../../*" ]
}

pdfium_embeddertest_source_set("embeddertests") {
  sources = [
    "cpwl_combo_box_embeddertest.cpp",
    "cpwl_edit_embeddertest.cpp",
  ]
  deps = [
    ":pwl",
    "../:fpdfsdk",
    "../formfiller",
  ]
  pdfium_root_dir = "../../"
}
