# Copyright 2016 The Chromium 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("//testing/test.gni") import("pdfium.gni") group("freetype_common") { public_deps = [] if (pdf_bundle_freetype) { public_deps += [ "third_party:fx_freetype" ] } else { public_deps += [ "//build/config/freetype" ] } } config("pdfium_common_config") { cflags = [] ldflags = [] include_dirs = [ "." ] defines = [ "OPJ_STATIC", "PNG_PREFIX", "PNG_USE_READ_MACROS", ] if (pdf_enable_v8) { defines += [ "PDF_ENABLE_V8" ] } if (pdf_enable_click_logging) { defines += [ "PDF_ENABLE_CLICK_LOGGING" ] } if (pdf_enable_xfa) { defines += [ "PDF_ENABLE_XFA" ] if (pdf_enable_xfa_bmp) { defines += [ "PDF_ENABLE_XFA_BMP" ] } if (pdf_enable_xfa_gif) { defines += [ "PDF_ENABLE_XFA_GIF" ] } if (pdf_enable_xfa_png) { defines += [ "PDF_ENABLE_XFA_PNG" ] } if (pdf_enable_xfa_tiff) { defines += [ "PDF_ENABLE_XFA_TIFF" ] } } if (pdf_use_skia) { defines += [ "_SKIA_SUPPORT_" ] } if (pdf_use_skia_paths) { defines += [ "_SKIA_SUPPORT_PATHS_" ] } if (pdf_use_win32_gdi) { defines += [ "PDFIUM_PRINT_TEXT_WITH_GDI" ] } if (is_win) { # Assume UTF-8 by default to avoid code page dependencies. cflags += [ "/utf-8" ] } } config("pdfium_core_config") { cflags = [] configs = [ ":pdfium_common_config" ] defines = [ "V8_DEPRECATION_WARNINGS" ] if (is_clang) { cflags += [ "-Wshadow" ] } if (is_linux) { if (current_cpu == "x64") { defines += [ "_FX_CPU_=_FX_X64_" ] cflags += [ "-fPIC" ] } else if (current_cpu == "x86") { defines += [ "_FX_CPU_=_FX_X86_" ] } } if (is_win) { cflags += [ "/wd4324", "/wd4577", ] } configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] } jumbo_source_set("pdfium_public_headers") { sources = [ "public/cpp/fpdf_deleters.h", "public/cpp/fpdf_scopers.h", "public/fpdf_annot.h", "public/fpdf_attachment.h", "public/fpdf_catalog.h", "public/fpdf_dataavail.h", "public/fpdf_doc.h", "public/fpdf_edit.h", "public/fpdf_ext.h", "public/fpdf_flatten.h", "public/fpdf_formfill.h", "public/fpdf_fwlevent.h", "public/fpdf_ppo.h", "public/fpdf_progressive.h", "public/fpdf_save.h", "public/fpdf_searchex.h", "public/fpdf_structtree.h", "public/fpdf_sysfontinfo.h", "public/fpdf_text.h", "public/fpdf_transformpage.h", "public/fpdfview.h", ] } jumbo_static_library("pdfium") { sources = [ "fpdfsdk/fpdf_annot.cpp", "fpdfsdk/fpdf_attachment.cpp", "fpdfsdk/fpdf_catalog.cpp", "fpdfsdk/fpdf_dataavail.cpp", "fpdfsdk/fpdf_doc.cpp", "fpdfsdk/fpdf_editimg.cpp", "fpdfsdk/fpdf_editpage.cpp", "fpdfsdk/fpdf_editpath.cpp", "fpdfsdk/fpdf_edittext.cpp", "fpdfsdk/fpdf_ext.cpp", "fpdfsdk/fpdf_flatten.cpp", "fpdfsdk/fpdf_formfill.cpp", "fpdfsdk/fpdf_ppo.cpp", "fpdfsdk/fpdf_progressive.cpp", "fpdfsdk/fpdf_save.cpp", "fpdfsdk/fpdf_searchex.cpp", "fpdfsdk/fpdf_structtree.cpp", "fpdfsdk/fpdf_sysfontinfo.cpp", "fpdfsdk/fpdf_text.cpp", "fpdfsdk/fpdf_transformpage.cpp", "fpdfsdk/fpdf_view.cpp", ] libs = [] configs += [ ":pdfium_core_config" ] deps = [ ":pdfium_public_headers", "constants", "core/fdrm", "core/fpdfapi", "core/fpdfapi/edit", "core/fpdfapi/font", "core/fpdfapi/page", "core/fpdfapi/parser", "core/fpdfapi/render", "core/fpdfdoc", "core/fpdftext", "core/fxcodec", "core/fxcrt", "core/fxge", "fpdfsdk", "fpdfsdk/formfiller", "fpdfsdk/pwl", "fxjs", "third_party:pdfium_base", "third_party:skia_shared", ] public_deps = [ ":pdfium_public_headers", "core/fxcrt", ] if (pdf_enable_xfa) { deps += [ "fpdfsdk/fpdfxfa", "fxbarcode", "xfa/fxfa", "xfa/fxfa/parser", ] } if (is_win) { libs += [ "advapi32.lib", "gdi32.lib", "user32.lib", ] } if (is_mac) { libs += [ "AppKit.framework", "CoreFoundation.framework", ] } if (pdf_is_complete_lib) { complete_static_lib = true configs -= [ "//build/config/compiler:thin_archive" ] } } # Targets below this are only visible within this file (and to the # top-level gn_visibility target used to help gn_all build everything). visibility = [ ":*", "//:gn_visibility", ] group("pdfium_unittest_deps") { testonly = true public_deps = [ "core/fxcrt", "testing:test_support", "//testing/gmock", "//testing/gtest", ] visibility += [ "core/*", "fpdfsdk/*", "fxbarcode/*", "fxjs/*", "xfa/*", ] } test("pdfium_unittests") { testonly = true sources = [ "testing/unit_test_main.cpp", ] deps = [ "core/fdrm:unittests", "core/fpdfapi/edit:unittests", "core/fpdfapi/font:unittests", "core/fpdfapi/page:unittests", "core/fpdfapi/parser:unittests", "core/fpdfdoc:unittests", "core/fpdftext:unittests", "core/fxcodec:unittests", "core/fxcrt", "core/fxcrt:unittests", "core/fxge", "core/fxge:unittests", "fpdfsdk:unittests", "testing:test_support", "//testing/gmock", "//testing/gtest", ] configs += [ ":pdfium_core_config" ] if (is_android) { use_raw_android_executable = true } if (pdf_enable_v8) { configs += [ "//v8:external_startup_data" ] deps += [ "fxjs:unittests", "//v8", ] } if (pdf_enable_xfa) { deps += [ "fxbarcode:unittests", "xfa/fde:unittests", "xfa/fgas", "xfa/fgas:unittests", "xfa/fwl:unittests", "xfa/fxfa:unittests", "xfa/fxfa/fm2js:unittests", "xfa/fxfa/parser:unittests", ] } } group("pdfium_embeddertest_deps") { testonly = true public_deps = [ ":pdfium_public_headers", "core/fxcrt", "testing:embedder_test_support", "testing:test_support", "//testing/gmock", "//testing/gtest", ] visibility += [ "core/*", "fpdfsdk/*", "fxjs/*", "xfa/*", ] } test("pdfium_embeddertests") { testonly = true sources = [ "testing/embedder_test_main.cpp", ] deps = [ ":pdfium", "core/fpdfapi/edit:embeddertests", "core/fpdfapi/page:embeddertests", "core/fpdfapi/parser:embeddertests", "core/fpdfapi/render:embeddertests", "core/fxcodec:embeddertests", "core/fxge:embeddertests", "fpdfsdk:embeddertests", "fpdfsdk/pwl:embeddertests", "testing:test_support", "testing/image_diff", "//testing/gmock", "//testing/gtest", ] include_dirs = [ "testing/gmock/include" ] configs += [ ":pdfium_core_config" ] if (is_android) { ignore_all_data_deps = true use_raw_android_executable = true } if (pdf_enable_v8) { deps += [ "fxjs:embeddertests", "//v8", ] configs += [ "//v8:external_startup_data" ] } if (pdf_enable_xfa) { deps += [ "xfa/fwl:embeddertests", "xfa/fxfa/parser:embeddertests", ] } } executable("pdfium_diff") { testonly = true sources = [ "testing/image_diff/image_diff.cpp", ] deps = [ ":pdfium", "testing/image_diff", "//build/win:default_exe_manifest", ] configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] configs += [ ":pdfium_core_config" ] } if (pdf_is_standalone) { jumbo_source_set("samples") { testonly = true deps = [ "//samples", ] } group("fuzzers") { testonly = true deps = [ "//testing/fuzzers", ] } } group("pdfium_all") { testonly = true deps = [ ":pdfium_diff", ":pdfium_embeddertests", ":pdfium_unittests", ] if (pdf_is_standalone) { deps += [ ":fuzzers", ":samples", ] } }