xref: /aosp_15_r20/external/pdfium/BUILD.gn (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker# Copyright 2016 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker# found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker
5*3ac0a46fSAndroid Build Coastguard Workerimport("//build/config/clang/clang.gni")
6*3ac0a46fSAndroid Build Coastguard Workerimport("//build/config/gclient_args.gni")
7*3ac0a46fSAndroid Build Coastguard Workerimport("//testing/test.gni")
8*3ac0a46fSAndroid Build Coastguard Workerimport("pdfium.gni")
9*3ac0a46fSAndroid Build Coastguard Worker
10*3ac0a46fSAndroid Build Coastguard Workergroup("default") {
11*3ac0a46fSAndroid Build Coastguard Worker  testonly = true
12*3ac0a46fSAndroid Build Coastguard Worker  deps = [ ":pdfium" ]
13*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_is_standalone) {
14*3ac0a46fSAndroid Build Coastguard Worker    deps += [ ":pdfium_all" ]
15*3ac0a46fSAndroid Build Coastguard Worker  }
16*3ac0a46fSAndroid Build Coastguard Worker}
17*3ac0a46fSAndroid Build Coastguard Worker
18*3ac0a46fSAndroid Build Coastguard Workergroup("freetype_common") {
19*3ac0a46fSAndroid Build Coastguard Worker  public_deps = []
20*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_bundle_freetype) {
21*3ac0a46fSAndroid Build Coastguard Worker    public_deps += [ "third_party:fx_freetype" ]
22*3ac0a46fSAndroid Build Coastguard Worker  } else {
23*3ac0a46fSAndroid Build Coastguard Worker    public_deps += [ "//build/config/freetype" ]
24*3ac0a46fSAndroid Build Coastguard Worker  }
25*3ac0a46fSAndroid Build Coastguard Worker}
26*3ac0a46fSAndroid Build Coastguard Worker
27*3ac0a46fSAndroid Build Coastguard Workerconfig("pdfium_common_config") {
28*3ac0a46fSAndroid Build Coastguard Worker  cflags = []
29*3ac0a46fSAndroid Build Coastguard Worker  cflags_cc = []
30*3ac0a46fSAndroid Build Coastguard Worker  ldflags = []
31*3ac0a46fSAndroid Build Coastguard Worker  include_dirs = [ "." ]
32*3ac0a46fSAndroid Build Coastguard Worker  defines = []
33*3ac0a46fSAndroid Build Coastguard Worker
34*3ac0a46fSAndroid Build Coastguard Worker  if (!use_system_libopenjpeg2) {
35*3ac0a46fSAndroid Build Coastguard Worker    defines += [ "OPJ_STATIC" ]
36*3ac0a46fSAndroid Build Coastguard Worker  }
37*3ac0a46fSAndroid Build Coastguard Worker
38*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_enable_click_logging) {
39*3ac0a46fSAndroid Build Coastguard Worker    defines += [ "PDF_ENABLE_CLICK_LOGGING" ]
40*3ac0a46fSAndroid Build Coastguard Worker  }
41*3ac0a46fSAndroid Build Coastguard Worker
42*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_use_skia) {
43*3ac0a46fSAndroid Build Coastguard Worker    defines += [ "_SKIA_SUPPORT_" ]
44*3ac0a46fSAndroid Build Coastguard Worker  }
45*3ac0a46fSAndroid Build Coastguard Worker
46*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_use_partition_alloc) {
47*3ac0a46fSAndroid Build Coastguard Worker    defines += [ "PDF_USE_PARTITION_ALLOC" ]
48*3ac0a46fSAndroid Build Coastguard Worker  }
49*3ac0a46fSAndroid Build Coastguard Worker
50*3ac0a46fSAndroid Build Coastguard Worker  if (is_win) {
51*3ac0a46fSAndroid Build Coastguard Worker    # Assume UTF-8 by default to avoid code page dependencies.
52*3ac0a46fSAndroid Build Coastguard Worker    cflags += [ "/utf-8" ]
53*3ac0a46fSAndroid Build Coastguard Worker
54*3ac0a46fSAndroid Build Coastguard Worker    if (!is_clang) {
55*3ac0a46fSAndroid Build Coastguard Worker      cflags += [
56*3ac0a46fSAndroid Build Coastguard Worker        # Warnings permanently disabled:
57*3ac0a46fSAndroid Build Coastguard Worker
58*3ac0a46fSAndroid Build Coastguard Worker        # C4091: 'typedef ': ignored on left of 'X' when no variable is
59*3ac0a46fSAndroid Build Coastguard Worker        #                    declared.
60*3ac0a46fSAndroid Build Coastguard Worker        # This happens in a number of Windows headers. Dumb.
61*3ac0a46fSAndroid Build Coastguard Worker        "/wd4091",
62*3ac0a46fSAndroid Build Coastguard Worker
63*3ac0a46fSAndroid Build Coastguard Worker        # C4127: conditional expression is constant
64*3ac0a46fSAndroid Build Coastguard Worker        # This warning can in theory catch dead code and other problems, but
65*3ac0a46fSAndroid Build Coastguard Worker        # triggers in far too many desirable cases where the conditional
66*3ac0a46fSAndroid Build Coastguard Worker        # expression is either set by macros or corresponds some legitimate
67*3ac0a46fSAndroid Build Coastguard Worker        # compile-time constant expression (due to constant template args,
68*3ac0a46fSAndroid Build Coastguard Worker        # conditionals comparing the sizes of different types, etc.).  Some of
69*3ac0a46fSAndroid Build Coastguard Worker        # these can be worked around, but it's not worth it.
70*3ac0a46fSAndroid Build Coastguard Worker        "/wd4127",
71*3ac0a46fSAndroid Build Coastguard Worker
72*3ac0a46fSAndroid Build Coastguard Worker        # C4251: 'identifier' : class 'type' needs to have dll-interface to be
73*3ac0a46fSAndroid Build Coastguard Worker        #        used by clients of class 'type2'
74*3ac0a46fSAndroid Build Coastguard Worker        # This is necessary for the shared library build.
75*3ac0a46fSAndroid Build Coastguard Worker        "/wd4251",
76*3ac0a46fSAndroid Build Coastguard Worker
77*3ac0a46fSAndroid Build Coastguard Worker        # C4275:  non dll-interface class used as base for dll-interface class
78*3ac0a46fSAndroid Build Coastguard Worker        # This points out a potential (but rare) problem with referencing static
79*3ac0a46fSAndroid Build Coastguard Worker        # fields of a non-exported base, through the base's non-exported inline
80*3ac0a46fSAndroid Build Coastguard Worker        # functions, or directly. The warning is subtle enough that people just
81*3ac0a46fSAndroid Build Coastguard Worker        # suppressed it when they saw it, so it's not worth it.
82*3ac0a46fSAndroid Build Coastguard Worker        "/wd4275",
83*3ac0a46fSAndroid Build Coastguard Worker
84*3ac0a46fSAndroid Build Coastguard Worker        # C4312 is a VS 2015 64-bit warning for integer to larger pointer.
85*3ac0a46fSAndroid Build Coastguard Worker        # TODO(brucedawson): fix warnings, crbug.com/554200
86*3ac0a46fSAndroid Build Coastguard Worker        "/wd4312",
87*3ac0a46fSAndroid Build Coastguard Worker
88*3ac0a46fSAndroid Build Coastguard Worker        # C4324 warns when padding is added to fulfill alignas requirements,
89*3ac0a46fSAndroid Build Coastguard Worker        # but can trigger in benign cases that are difficult to individually
90*3ac0a46fSAndroid Build Coastguard Worker        # suppress.
91*3ac0a46fSAndroid Build Coastguard Worker        "/wd4324",
92*3ac0a46fSAndroid Build Coastguard Worker
93*3ac0a46fSAndroid Build Coastguard Worker        # C4351: new behavior: elements of array 'array' will be default
94*3ac0a46fSAndroid Build Coastguard Worker        #        initialized
95*3ac0a46fSAndroid Build Coastguard Worker        # This is a silly "warning" that basically just alerts you that the
96*3ac0a46fSAndroid Build Coastguard Worker        # compiler is going to actually follow the language spec like it's
97*3ac0a46fSAndroid Build Coastguard Worker        # supposed to, instead of not following it like old buggy versions did.
98*3ac0a46fSAndroid Build Coastguard Worker        # There's absolutely no reason to turn this on.
99*3ac0a46fSAndroid Build Coastguard Worker        "/wd4351",
100*3ac0a46fSAndroid Build Coastguard Worker
101*3ac0a46fSAndroid Build Coastguard Worker        # C4355: 'this': used in base member initializer list
102*3ac0a46fSAndroid Build Coastguard Worker        # It's commonly useful to pass |this| to objects in a class' initializer
103*3ac0a46fSAndroid Build Coastguard Worker        # list.  While this warning can catch real bugs, most of the time the
104*3ac0a46fSAndroid Build Coastguard Worker        # constructors in question don't attempt to call methods on the passed-in
105*3ac0a46fSAndroid Build Coastguard Worker        # pointer (until later), and annotating every legit usage of this is
106*3ac0a46fSAndroid Build Coastguard Worker        # simply more hassle than the warning is worth.
107*3ac0a46fSAndroid Build Coastguard Worker        "/wd4355",
108*3ac0a46fSAndroid Build Coastguard Worker
109*3ac0a46fSAndroid Build Coastguard Worker        # C4503: 'identifier': decorated name length exceeded, name was
110*3ac0a46fSAndroid Build Coastguard Worker        #        truncated
111*3ac0a46fSAndroid Build Coastguard Worker        # This only means that some long error messages might have truncated
112*3ac0a46fSAndroid Build Coastguard Worker        # identifiers in the presence of lots of templates.  It has no effect on
113*3ac0a46fSAndroid Build Coastguard Worker        # program correctness and there's no real reason to waste time trying to
114*3ac0a46fSAndroid Build Coastguard Worker        # prevent it.
115*3ac0a46fSAndroid Build Coastguard Worker        "/wd4503",
116*3ac0a46fSAndroid Build Coastguard Worker
117*3ac0a46fSAndroid Build Coastguard Worker        # Warning C4589 says: "Constructor of abstract class ignores
118*3ac0a46fSAndroid Build Coastguard Worker        # initializer for virtual base class." Disable this warning because it
119*3ac0a46fSAndroid Build Coastguard Worker        # is flaky in VS 2015 RTM. It triggers on compiler generated
120*3ac0a46fSAndroid Build Coastguard Worker        # copy-constructors in some cases.
121*3ac0a46fSAndroid Build Coastguard Worker        "/wd4589",
122*3ac0a46fSAndroid Build Coastguard Worker
123*3ac0a46fSAndroid Build Coastguard Worker        # C4611: interaction between 'function' and C++ object destruction is
124*3ac0a46fSAndroid Build Coastguard Worker        #        non-portable
125*3ac0a46fSAndroid Build Coastguard Worker        # This warning is unavoidable when using e.g. setjmp/longjmp.  MSDN
126*3ac0a46fSAndroid Build Coastguard Worker        # suggests using exceptions instead of setjmp/longjmp for C++, but
127*3ac0a46fSAndroid Build Coastguard Worker        # Chromium code compiles without exception support.  We therefore have to
128*3ac0a46fSAndroid Build Coastguard Worker        # use setjmp/longjmp for e.g. JPEG decode error handling, which means we
129*3ac0a46fSAndroid Build Coastguard Worker        # have to turn off this warning (and be careful about how object
130*3ac0a46fSAndroid Build Coastguard Worker        # destruction happens in such cases).
131*3ac0a46fSAndroid Build Coastguard Worker        "/wd4611",
132*3ac0a46fSAndroid Build Coastguard Worker
133*3ac0a46fSAndroid Build Coastguard Worker        # Warnings to evaluate and possibly fix/reenable later:
134*3ac0a46fSAndroid Build Coastguard Worker
135*3ac0a46fSAndroid Build Coastguard Worker        "/wd4100",  # Unreferenced formal function parameter.
136*3ac0a46fSAndroid Build Coastguard Worker        "/wd4121",  # Alignment of a member was sensitive to packing.
137*3ac0a46fSAndroid Build Coastguard Worker        "/wd4244",  # Conversion: possible loss of data.
138*3ac0a46fSAndroid Build Coastguard Worker        "/wd4505",  # Unreferenced local function has been removed.
139*3ac0a46fSAndroid Build Coastguard Worker        "/wd4510",  # Default constructor could not be generated.
140*3ac0a46fSAndroid Build Coastguard Worker        "/wd4512",  # Assignment operator could not be generated.
141*3ac0a46fSAndroid Build Coastguard Worker        "/wd4610",  # Class can never be instantiated, constructor required.
142*3ac0a46fSAndroid Build Coastguard Worker        "/wd4838",  # Narrowing conversion. Doesn't seem to be very useful.
143*3ac0a46fSAndroid Build Coastguard Worker        "/wd4995",  # 'X': name was marked as #pragma deprecated
144*3ac0a46fSAndroid Build Coastguard Worker        "/wd4996",  # Deprecated function warning.
145*3ac0a46fSAndroid Build Coastguard Worker
146*3ac0a46fSAndroid Build Coastguard Worker        # These are variable shadowing warnings that are new in VS2015. We
147*3ac0a46fSAndroid Build Coastguard Worker        # should work through these at some point -- they may be removed from
148*3ac0a46fSAndroid Build Coastguard Worker        # the RTM release in the /W4 set.
149*3ac0a46fSAndroid Build Coastguard Worker        "/wd4456",
150*3ac0a46fSAndroid Build Coastguard Worker        "/wd4457",
151*3ac0a46fSAndroid Build Coastguard Worker        "/wd4458",
152*3ac0a46fSAndroid Build Coastguard Worker        "/wd4459",
153*3ac0a46fSAndroid Build Coastguard Worker
154*3ac0a46fSAndroid Build Coastguard Worker        # All of our compilers support the extensions below.
155*3ac0a46fSAndroid Build Coastguard Worker        "/wd4200",  # nonstandard extension used: zero-sized array in
156*3ac0a46fSAndroid Build Coastguard Worker                    # struct/union
157*3ac0a46fSAndroid Build Coastguard Worker        "/wd4201",  # nonstandard extension used: nameless struct/union
158*3ac0a46fSAndroid Build Coastguard Worker        "/wd4204",  # nonstandard extension used : non-constant aggregate
159*3ac0a46fSAndroid Build Coastguard Worker                    # initializer
160*3ac0a46fSAndroid Build Coastguard Worker
161*3ac0a46fSAndroid Build Coastguard Worker        "/wd4221",  # nonstandard extension used : 'identifier' : cannot be
162*3ac0a46fSAndroid Build Coastguard Worker                    # initialized using address of automatic variable
163*3ac0a46fSAndroid Build Coastguard Worker
164*3ac0a46fSAndroid Build Coastguard Worker        # http://crbug.com/588506 - Conversion suppressions waiting on Clang
165*3ac0a46fSAndroid Build Coastguard Worker        # -Wconversion.
166*3ac0a46fSAndroid Build Coastguard Worker        "/wd4245",  # 'conversion' : conversion from 'type1' to 'type2',
167*3ac0a46fSAndroid Build Coastguard Worker                    # signed/unsigned mismatch
168*3ac0a46fSAndroid Build Coastguard Worker
169*3ac0a46fSAndroid Build Coastguard Worker        "/wd4267",  # 'var' : conversion from 'size_t' to 'type', possible loss
170*3ac0a46fSAndroid Build Coastguard Worker                    # of data
171*3ac0a46fSAndroid Build Coastguard Worker
172*3ac0a46fSAndroid Build Coastguard Worker        "/wd4305",  # 'identifier' : truncation from 'type1' to 'type2'
173*3ac0a46fSAndroid Build Coastguard Worker        "/wd4389",  # 'operator' : signed/unsigned mismatch
174*3ac0a46fSAndroid Build Coastguard Worker
175*3ac0a46fSAndroid Build Coastguard Worker        "/wd4702",  # unreachable code
176*3ac0a46fSAndroid Build Coastguard Worker
177*3ac0a46fSAndroid Build Coastguard Worker        # http://crbug.com/848979 - MSVC is more conservative than Clang with
178*3ac0a46fSAndroid Build Coastguard Worker        # regards to variables initialized and consumed in different branches.
179*3ac0a46fSAndroid Build Coastguard Worker        "/wd4701",  # Potentially uninitialized local variable 'name' used
180*3ac0a46fSAndroid Build Coastguard Worker        "/wd4703",  # Potentially uninitialized local pointer variable 'name'
181*3ac0a46fSAndroid Build Coastguard Worker                    # used
182*3ac0a46fSAndroid Build Coastguard Worker
183*3ac0a46fSAndroid Build Coastguard Worker        # http://crbug.com/848979 - Remaining Clang permitted warnings.
184*3ac0a46fSAndroid Build Coastguard Worker        "/wd4661",  # 'identifier' : no suitable definition provided for
185*3ac0a46fSAndroid Build Coastguard Worker                    # explicit
186*3ac0a46fSAndroid Build Coastguard Worker                    # template instantiation request
187*3ac0a46fSAndroid Build Coastguard Worker
188*3ac0a46fSAndroid Build Coastguard Worker        "/wd4706",  # assignment within conditional expression
189*3ac0a46fSAndroid Build Coastguard Worker                    # MSVC is stricter and requires a boolean expression.
190*3ac0a46fSAndroid Build Coastguard Worker
191*3ac0a46fSAndroid Build Coastguard Worker        "/wd4715",  # 'function' : not all control paths return a value'
192*3ac0a46fSAndroid Build Coastguard Worker                    # MSVC does not analyze switch (enum) for completeness.
193*3ac0a46fSAndroid Build Coastguard Worker      ]
194*3ac0a46fSAndroid Build Coastguard Worker
195*3ac0a46fSAndroid Build Coastguard Worker      cflags_cc += [
196*3ac0a46fSAndroid Build Coastguard Worker        # Allow "noexcept" annotations even though we compile with exceptions
197*3ac0a46fSAndroid Build Coastguard Worker        # disabled.
198*3ac0a46fSAndroid Build Coastguard Worker        "/wd4577",
199*3ac0a46fSAndroid Build Coastguard Worker      ]
200*3ac0a46fSAndroid Build Coastguard Worker
201*3ac0a46fSAndroid Build Coastguard Worker      if (current_cpu == "x86") {
202*3ac0a46fSAndroid Build Coastguard Worker        if (msvc_use_sse2) {
203*3ac0a46fSAndroid Build Coastguard Worker          cflags += [ "/arch:SSE2" ]
204*3ac0a46fSAndroid Build Coastguard Worker        }
205*3ac0a46fSAndroid Build Coastguard Worker      }
206*3ac0a46fSAndroid Build Coastguard Worker    }
207*3ac0a46fSAndroid Build Coastguard Worker  }
208*3ac0a46fSAndroid Build Coastguard Worker
209*3ac0a46fSAndroid Build Coastguard Worker  if (is_clang) {
210*3ac0a46fSAndroid Build Coastguard Worker    # Override -Wno-c++11-narrowing.
211*3ac0a46fSAndroid Build Coastguard Worker    cflags += [ "-Wc++11-narrowing" ]
212*3ac0a46fSAndroid Build Coastguard Worker
213*3ac0a46fSAndroid Build Coastguard Worker    # TODO(crbug.com/1213098): Remove once this is in //build.
214*3ac0a46fSAndroid Build Coastguard Worker    cflags += [ "-Wdeprecated-copy" ]
215*3ac0a46fSAndroid Build Coastguard Worker
216*3ac0a46fSAndroid Build Coastguard Worker    # May flag some issues when converting int to size_t.
217*3ac0a46fSAndroid Build Coastguard Worker    cflags += [ "-Wtautological-unsigned-zero-compare" ]
218*3ac0a46fSAndroid Build Coastguard Worker  }
219*3ac0a46fSAndroid Build Coastguard Worker
220*3ac0a46fSAndroid Build Coastguard Worker  if (!is_win && !is_clang) {
221*3ac0a46fSAndroid Build Coastguard Worker    cflags += [
222*3ac0a46fSAndroid Build Coastguard Worker      # Override -Wno-narrowing for GCC.
223*3ac0a46fSAndroid Build Coastguard Worker      "-Wnarrowing",
224*3ac0a46fSAndroid Build Coastguard Worker
225*3ac0a46fSAndroid Build Coastguard Worker      # GCC assumes that control can get past an exhaustive switch and then
226*3ac0a46fSAndroid Build Coastguard Worker      # warns if there's no return there.
227*3ac0a46fSAndroid Build Coastguard Worker      "-Wno-return-type",
228*3ac0a46fSAndroid Build Coastguard Worker    ]
229*3ac0a46fSAndroid Build Coastguard Worker  }
230*3ac0a46fSAndroid Build Coastguard Worker}
231*3ac0a46fSAndroid Build Coastguard Worker
232*3ac0a46fSAndroid Build Coastguard Workerconfig("pdfium_implementation_config") {
233*3ac0a46fSAndroid Build Coastguard Worker  defines = [ "FPDF_IMPLEMENTATION" ]
234*3ac0a46fSAndroid Build Coastguard Worker  visibility = [ ":pdfium_public_headers" ]
235*3ac0a46fSAndroid Build Coastguard Worker}
236*3ac0a46fSAndroid Build Coastguard Worker
237*3ac0a46fSAndroid Build Coastguard Workerconfig("pdfium_public_config") {
238*3ac0a46fSAndroid Build Coastguard Worker  defines = []
239*3ac0a46fSAndroid Build Coastguard Worker
240*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_enable_v8) {
241*3ac0a46fSAndroid Build Coastguard Worker    defines += [ "PDF_ENABLE_V8" ]
242*3ac0a46fSAndroid Build Coastguard Worker
243*3ac0a46fSAndroid Build Coastguard Worker    if (pdf_enable_xfa) {
244*3ac0a46fSAndroid Build Coastguard Worker      defines += [ "PDF_ENABLE_XFA" ]
245*3ac0a46fSAndroid Build Coastguard Worker      if (pdf_enable_xfa_bmp) {
246*3ac0a46fSAndroid Build Coastguard Worker        defines += [ "PDF_ENABLE_XFA_BMP" ]
247*3ac0a46fSAndroid Build Coastguard Worker      }
248*3ac0a46fSAndroid Build Coastguard Worker      if (pdf_enable_xfa_gif) {
249*3ac0a46fSAndroid Build Coastguard Worker        defines += [ "PDF_ENABLE_XFA_GIF" ]
250*3ac0a46fSAndroid Build Coastguard Worker      }
251*3ac0a46fSAndroid Build Coastguard Worker      if (pdf_enable_xfa_png) {
252*3ac0a46fSAndroid Build Coastguard Worker        defines += [ "PDF_ENABLE_XFA_PNG" ]
253*3ac0a46fSAndroid Build Coastguard Worker      }
254*3ac0a46fSAndroid Build Coastguard Worker      if (pdf_enable_xfa_tiff) {
255*3ac0a46fSAndroid Build Coastguard Worker        defines += [ "PDF_ENABLE_XFA_TIFF" ]
256*3ac0a46fSAndroid Build Coastguard Worker      }
257*3ac0a46fSAndroid Build Coastguard Worker    }
258*3ac0a46fSAndroid Build Coastguard Worker  }
259*3ac0a46fSAndroid Build Coastguard Worker}
260*3ac0a46fSAndroid Build Coastguard Worker
261*3ac0a46fSAndroid Build Coastguard Workerconfig("pdfium_core_config") {
262*3ac0a46fSAndroid Build Coastguard Worker  cflags = []
263*3ac0a46fSAndroid Build Coastguard Worker  configs = [
264*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_common_config",
265*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_public_config",
266*3ac0a46fSAndroid Build Coastguard Worker    "//build/config/compiler:noshadowing",
267*3ac0a46fSAndroid Build Coastguard Worker  ]
268*3ac0a46fSAndroid Build Coastguard Worker  defines = []
269*3ac0a46fSAndroid Build Coastguard Worker  if (is_win) {
270*3ac0a46fSAndroid Build Coastguard Worker    cflags += [
271*3ac0a46fSAndroid Build Coastguard Worker      "/wd4324",
272*3ac0a46fSAndroid Build Coastguard Worker      "/wd4577",
273*3ac0a46fSAndroid Build Coastguard Worker    ]
274*3ac0a46fSAndroid Build Coastguard Worker  }
275*3ac0a46fSAndroid Build Coastguard Worker  if (is_clang) {
276*3ac0a46fSAndroid Build Coastguard Worker    cflags += [ "-Wcovered-switch-default" ]
277*3ac0a46fSAndroid Build Coastguard Worker  }
278*3ac0a46fSAndroid Build Coastguard Worker}
279*3ac0a46fSAndroid Build Coastguard Worker
280*3ac0a46fSAndroid Build Coastguard Workerconfig("pdfium_plugin_config") {
281*3ac0a46fSAndroid Build Coastguard Worker  cflags = []
282*3ac0a46fSAndroid Build Coastguard Worker  defines = []
283*3ac0a46fSAndroid Build Coastguard Worker  if (clang_use_chrome_plugins) {
284*3ac0a46fSAndroid Build Coastguard Worker    # Catch misuse of C-style pointers.
285*3ac0a46fSAndroid Build Coastguard Worker    # TODO(tsepez): enable for windows, too.
286*3ac0a46fSAndroid Build Coastguard Worker    if (!is_win) {
287*3ac0a46fSAndroid Build Coastguard Worker      cflags += [
288*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
289*3ac0a46fSAndroid Build Coastguard Worker        "-plugin-arg-find-bad-constructs",
290*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
291*3ac0a46fSAndroid Build Coastguard Worker        "check-raw-ptr-fields",
292*3ac0a46fSAndroid Build Coastguard Worker
293*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
294*3ac0a46fSAndroid Build Coastguard Worker        "-plugin-arg-find-bad-constructs",
295*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
296*3ac0a46fSAndroid Build Coastguard Worker        "raw-ptr-exclude-path=public",
297*3ac0a46fSAndroid Build Coastguard Worker
298*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
299*3ac0a46fSAndroid Build Coastguard Worker        "-plugin-arg-find-bad-constructs",
300*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
301*3ac0a46fSAndroid Build Coastguard Worker        "raw-ptr-exclude-path=test",
302*3ac0a46fSAndroid Build Coastguard Worker
303*3ac0a46fSAndroid Build Coastguard Worker        # TODO(tsepez): enforce raw_ref<> as well.
304*3ac0a46fSAndroid Build Coastguard Worker        # "-Xclang",
305*3ac0a46fSAndroid Build Coastguard Worker        # "-plugin-arg-find-bad-constructs",
306*3ac0a46fSAndroid Build Coastguard Worker        # "-Xclang",
307*3ac0a46fSAndroid Build Coastguard Worker        # "check-raw-ref-fields",
308*3ac0a46fSAndroid Build Coastguard Worker      ]
309*3ac0a46fSAndroid Build Coastguard Worker      defines += [ "PDF_ENABLE_UNOWNED_PTR_EXCLUSION" ]
310*3ac0a46fSAndroid Build Coastguard Worker    }
311*3ac0a46fSAndroid Build Coastguard Worker
312*3ac0a46fSAndroid Build Coastguard Worker    # Catch misuse of cppgc in XFA.
313*3ac0a46fSAndroid Build Coastguard Worker    if (pdf_enable_xfa) {
314*3ac0a46fSAndroid Build Coastguard Worker      cflags += [
315*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
316*3ac0a46fSAndroid Build Coastguard Worker        "-add-plugin",
317*3ac0a46fSAndroid Build Coastguard Worker        "-Xclang",
318*3ac0a46fSAndroid Build Coastguard Worker        "blink-gc-plugin",
319*3ac0a46fSAndroid Build Coastguard Worker      ]
320*3ac0a46fSAndroid Build Coastguard Worker    }
321*3ac0a46fSAndroid Build Coastguard Worker  }
322*3ac0a46fSAndroid Build Coastguard Worker}
323*3ac0a46fSAndroid Build Coastguard Worker
324*3ac0a46fSAndroid Build Coastguard Workerconfig("pdfium_strict_config") {
325*3ac0a46fSAndroid Build Coastguard Worker  configs = [
326*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_core_config",
327*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_plugin_config",
328*3ac0a46fSAndroid Build Coastguard Worker    "//build/config/compiler:wexit_time_destructors",
329*3ac0a46fSAndroid Build Coastguard Worker    "//build/config/compiler:wglobal_constructors",
330*3ac0a46fSAndroid Build Coastguard Worker  ]
331*3ac0a46fSAndroid Build Coastguard Worker}
332*3ac0a46fSAndroid Build Coastguard Worker
333*3ac0a46fSAndroid Build Coastguard Workerconfig("pdfium_noshorten_config") {
334*3ac0a46fSAndroid Build Coastguard Worker  cflags = []
335*3ac0a46fSAndroid Build Coastguard Worker  if (is_clang) {
336*3ac0a46fSAndroid Build Coastguard Worker    cflags += [ "-Wshorten-64-to-32" ]
337*3ac0a46fSAndroid Build Coastguard Worker  }
338*3ac0a46fSAndroid Build Coastguard Worker}
339*3ac0a46fSAndroid Build Coastguard Worker
340*3ac0a46fSAndroid Build Coastguard Workersource_set("pdfium_public_headers_impl") {
341*3ac0a46fSAndroid Build Coastguard Worker  sources = [
342*3ac0a46fSAndroid Build Coastguard Worker    "public/cpp/fpdf_deleters.h",
343*3ac0a46fSAndroid Build Coastguard Worker    "public/cpp/fpdf_scopers.h",
344*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_annot.h",
345*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_attachment.h",
346*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_catalog.h",
347*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_dataavail.h",
348*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_doc.h",
349*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_edit.h",
350*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_ext.h",
351*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_flatten.h",
352*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_formfill.h",
353*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_fwlevent.h",
354*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_javascript.h",
355*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_ppo.h",
356*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_progressive.h",
357*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_save.h",
358*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_searchex.h",
359*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_signature.h",
360*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_structtree.h",
361*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_sysfontinfo.h",
362*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_text.h",
363*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdf_transformpage.h",
364*3ac0a46fSAndroid Build Coastguard Worker    "public/fpdfview.h",
365*3ac0a46fSAndroid Build Coastguard Worker  ]
366*3ac0a46fSAndroid Build Coastguard Worker}
367*3ac0a46fSAndroid Build Coastguard Worker
368*3ac0a46fSAndroid Build Coastguard Workergroup("pdfium_public_headers") {
369*3ac0a46fSAndroid Build Coastguard Worker  public_deps = [ ":pdfium_public_headers_impl" ]
370*3ac0a46fSAndroid Build Coastguard Worker  public_configs = [
371*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_public_config",
372*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_implementation_config",
373*3ac0a46fSAndroid Build Coastguard Worker  ]
374*3ac0a46fSAndroid Build Coastguard Worker}
375*3ac0a46fSAndroid Build Coastguard Worker
376*3ac0a46fSAndroid Build Coastguard Workercomponent("pdfium") {
377*3ac0a46fSAndroid Build Coastguard Worker  output_name = "pdfium"
378*3ac0a46fSAndroid Build Coastguard Worker  libs = []
379*3ac0a46fSAndroid Build Coastguard Worker  configs += [ ":pdfium_strict_config" ]
380*3ac0a46fSAndroid Build Coastguard Worker  public_configs = [ ":pdfium_public_config" ]
381*3ac0a46fSAndroid Build Coastguard Worker
382*3ac0a46fSAndroid Build Coastguard Worker  deps = [
383*3ac0a46fSAndroid Build Coastguard Worker    "constants",
384*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/page",
385*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/parser",
386*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfdoc",
387*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcodec",
388*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt",
389*3ac0a46fSAndroid Build Coastguard Worker    "core/fxge",
390*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk",
391*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk/formfiller",
392*3ac0a46fSAndroid Build Coastguard Worker    "fxjs",
393*3ac0a46fSAndroid Build Coastguard Worker    "third_party:pdfium_base",
394*3ac0a46fSAndroid Build Coastguard Worker  ]
395*3ac0a46fSAndroid Build Coastguard Worker
396*3ac0a46fSAndroid Build Coastguard Worker  public_deps = [
397*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_public_headers_impl",
398*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt",
399*3ac0a46fSAndroid Build Coastguard Worker  ]
400*3ac0a46fSAndroid Build Coastguard Worker
401*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_enable_xfa) {
402*3ac0a46fSAndroid Build Coastguard Worker    deps += [
403*3ac0a46fSAndroid Build Coastguard Worker      "fpdfsdk/fpdfxfa",
404*3ac0a46fSAndroid Build Coastguard Worker      "xfa/fxfa",
405*3ac0a46fSAndroid Build Coastguard Worker      "xfa/fxfa/parser",
406*3ac0a46fSAndroid Build Coastguard Worker    ]
407*3ac0a46fSAndroid Build Coastguard Worker  }
408*3ac0a46fSAndroid Build Coastguard Worker
409*3ac0a46fSAndroid Build Coastguard Worker  if (is_win) {
410*3ac0a46fSAndroid Build Coastguard Worker    libs += [
411*3ac0a46fSAndroid Build Coastguard Worker      "advapi32.lib",
412*3ac0a46fSAndroid Build Coastguard Worker      "gdi32.lib",
413*3ac0a46fSAndroid Build Coastguard Worker      "user32.lib",
414*3ac0a46fSAndroid Build Coastguard Worker    ]
415*3ac0a46fSAndroid Build Coastguard Worker  }
416*3ac0a46fSAndroid Build Coastguard Worker
417*3ac0a46fSAndroid Build Coastguard Worker  if (is_mac) {
418*3ac0a46fSAndroid Build Coastguard Worker    frameworks = [
419*3ac0a46fSAndroid Build Coastguard Worker      "AppKit.framework",
420*3ac0a46fSAndroid Build Coastguard Worker      "CoreFoundation.framework",
421*3ac0a46fSAndroid Build Coastguard Worker    ]
422*3ac0a46fSAndroid Build Coastguard Worker  }
423*3ac0a46fSAndroid Build Coastguard Worker
424*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_is_complete_lib) {
425*3ac0a46fSAndroid Build Coastguard Worker    static_component_type = "static_library"
426*3ac0a46fSAndroid Build Coastguard Worker    complete_static_lib = true
427*3ac0a46fSAndroid Build Coastguard Worker    configs -= [ "//build/config/compiler:thin_archive" ]
428*3ac0a46fSAndroid Build Coastguard Worker  }
429*3ac0a46fSAndroid Build Coastguard Worker}
430*3ac0a46fSAndroid Build Coastguard Worker
431*3ac0a46fSAndroid Build Coastguard Worker# Targets below this are only visible within this file.
432*3ac0a46fSAndroid Build Coastguard Workervisibility = [ ":*" ]
433*3ac0a46fSAndroid Build Coastguard Worker
434*3ac0a46fSAndroid Build Coastguard Workergroup("pdfium_unittest_deps") {
435*3ac0a46fSAndroid Build Coastguard Worker  testonly = true
436*3ac0a46fSAndroid Build Coastguard Worker  public_deps = [
437*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt",
438*3ac0a46fSAndroid Build Coastguard Worker    "testing:unit_test_support",
439*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gmock",
440*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gtest",
441*3ac0a46fSAndroid Build Coastguard Worker  ]
442*3ac0a46fSAndroid Build Coastguard Worker  visibility += [
443*3ac0a46fSAndroid Build Coastguard Worker    "core/*",
444*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk/*",
445*3ac0a46fSAndroid Build Coastguard Worker    "fxbarcode/*",
446*3ac0a46fSAndroid Build Coastguard Worker    "fxjs/*",
447*3ac0a46fSAndroid Build Coastguard Worker    "xfa/*",
448*3ac0a46fSAndroid Build Coastguard Worker  ]
449*3ac0a46fSAndroid Build Coastguard Worker}
450*3ac0a46fSAndroid Build Coastguard Worker
451*3ac0a46fSAndroid Build Coastguard Workertest("pdfium_unittests") {
452*3ac0a46fSAndroid Build Coastguard Worker  testonly = true
453*3ac0a46fSAndroid Build Coastguard Worker  sources = [ "testing/unit_test_main.cpp" ]
454*3ac0a46fSAndroid Build Coastguard Worker  deps = [
455*3ac0a46fSAndroid Build Coastguard Worker    "core/fdrm:unittests",
456*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/edit:unittests",
457*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/font:unittests",
458*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/page:unittests",
459*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/parser:unittests",
460*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/render:unittests",
461*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfdoc:unittests",
462*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdftext:unittests",
463*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcodec:unittests",
464*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt",
465*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt:unittests",
466*3ac0a46fSAndroid Build Coastguard Worker    "core/fxge:unittests",
467*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk:unittests",
468*3ac0a46fSAndroid Build Coastguard Worker    "testing:unit_test_support",
469*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gmock",
470*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gtest",
471*3ac0a46fSAndroid Build Coastguard Worker  ]
472*3ac0a46fSAndroid Build Coastguard Worker  configs += [ ":pdfium_core_config" ]
473*3ac0a46fSAndroid Build Coastguard Worker  if (is_android) {
474*3ac0a46fSAndroid Build Coastguard Worker    use_raw_android_executable = true
475*3ac0a46fSAndroid Build Coastguard Worker  }
476*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_enable_v8) {
477*3ac0a46fSAndroid Build Coastguard Worker    configs += [ "//v8:external_startup_data" ]
478*3ac0a46fSAndroid Build Coastguard Worker    deps += [
479*3ac0a46fSAndroid Build Coastguard Worker      "fxjs:unittests",
480*3ac0a46fSAndroid Build Coastguard Worker      "//v8",
481*3ac0a46fSAndroid Build Coastguard Worker    ]
482*3ac0a46fSAndroid Build Coastguard Worker    if (pdf_enable_xfa) {
483*3ac0a46fSAndroid Build Coastguard Worker      deps += [
484*3ac0a46fSAndroid Build Coastguard Worker        "core/fxcrt/css:unittests",
485*3ac0a46fSAndroid Build Coastguard Worker        "fxbarcode:unittests",
486*3ac0a46fSAndroid Build Coastguard Worker        "xfa/fde:unittests",
487*3ac0a46fSAndroid Build Coastguard Worker        "xfa/fgas/crt:unittests",
488*3ac0a46fSAndroid Build Coastguard Worker        "xfa/fgas/font:unittests",
489*3ac0a46fSAndroid Build Coastguard Worker        "xfa/fgas/layout:unittests",
490*3ac0a46fSAndroid Build Coastguard Worker        "xfa/fxfa:unittests",
491*3ac0a46fSAndroid Build Coastguard Worker        "xfa/fxfa/formcalc:unittests",
492*3ac0a46fSAndroid Build Coastguard Worker        "xfa/fxfa/parser:unittests",
493*3ac0a46fSAndroid Build Coastguard Worker      ]
494*3ac0a46fSAndroid Build Coastguard Worker    }
495*3ac0a46fSAndroid Build Coastguard Worker  }
496*3ac0a46fSAndroid Build Coastguard Worker}
497*3ac0a46fSAndroid Build Coastguard Worker
498*3ac0a46fSAndroid Build Coastguard Workergroup("pdfium_embeddertest_deps") {
499*3ac0a46fSAndroid Build Coastguard Worker  testonly = true
500*3ac0a46fSAndroid Build Coastguard Worker  public_deps = [
501*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_public_headers",
502*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt",
503*3ac0a46fSAndroid Build Coastguard Worker    "testing:embedder_test_support",
504*3ac0a46fSAndroid Build Coastguard Worker    "third_party:pdfium_base_test_support",
505*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gmock",
506*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gtest",
507*3ac0a46fSAndroid Build Coastguard Worker  ]
508*3ac0a46fSAndroid Build Coastguard Worker  visibility += [
509*3ac0a46fSAndroid Build Coastguard Worker    "core/*",
510*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk/*",
511*3ac0a46fSAndroid Build Coastguard Worker    "fxjs/*",
512*3ac0a46fSAndroid Build Coastguard Worker    "xfa/*",
513*3ac0a46fSAndroid Build Coastguard Worker  ]
514*3ac0a46fSAndroid Build Coastguard Worker}
515*3ac0a46fSAndroid Build Coastguard Worker
516*3ac0a46fSAndroid Build Coastguard Workertest("pdfium_embeddertests") {
517*3ac0a46fSAndroid Build Coastguard Worker  testonly = true
518*3ac0a46fSAndroid Build Coastguard Worker  sources = [ "testing/embedder_test_main.cpp" ]
519*3ac0a46fSAndroid Build Coastguard Worker  deps = [
520*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_embeddertest_deps",
521*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/edit:embeddertests",
522*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/parser:embeddertests",
523*3ac0a46fSAndroid Build Coastguard Worker    "core/fpdfapi/render:embeddertests",
524*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcodec:embeddertests",
525*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt",
526*3ac0a46fSAndroid Build Coastguard Worker    "core/fxge:embeddertests",
527*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk:embeddertests",
528*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk/formfiller:embeddertests",
529*3ac0a46fSAndroid Build Coastguard Worker    "fpdfsdk/pwl:embeddertests",
530*3ac0a46fSAndroid Build Coastguard Worker    "testing/image_diff",
531*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gmock",
532*3ac0a46fSAndroid Build Coastguard Worker    "//testing/gtest",
533*3ac0a46fSAndroid Build Coastguard Worker  ]
534*3ac0a46fSAndroid Build Coastguard Worker  include_dirs = [ "testing/gmock/include" ]
535*3ac0a46fSAndroid Build Coastguard Worker  configs += [ ":pdfium_core_config" ]
536*3ac0a46fSAndroid Build Coastguard Worker
537*3ac0a46fSAndroid Build Coastguard Worker  if (is_android) {
538*3ac0a46fSAndroid Build Coastguard Worker    ignore_all_data_deps = true
539*3ac0a46fSAndroid Build Coastguard Worker    use_raw_android_executable = true
540*3ac0a46fSAndroid Build Coastguard Worker  }
541*3ac0a46fSAndroid Build Coastguard Worker
542*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_enable_v8) {
543*3ac0a46fSAndroid Build Coastguard Worker    deps += [
544*3ac0a46fSAndroid Build Coastguard Worker      "fxjs:embeddertests",
545*3ac0a46fSAndroid Build Coastguard Worker      "//v8",
546*3ac0a46fSAndroid Build Coastguard Worker    ]
547*3ac0a46fSAndroid Build Coastguard Worker    configs += [ "//v8:external_startup_data" ]
548*3ac0a46fSAndroid Build Coastguard Worker  }
549*3ac0a46fSAndroid Build Coastguard Worker
550*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_enable_xfa) {
551*3ac0a46fSAndroid Build Coastguard Worker    deps += [
552*3ac0a46fSAndroid Build Coastguard Worker      "fpdfsdk/fpdfxfa:embeddertests",
553*3ac0a46fSAndroid Build Coastguard Worker      "xfa/fwl:embeddertests",
554*3ac0a46fSAndroid Build Coastguard Worker      "xfa/fxfa/layout:embeddertests",
555*3ac0a46fSAndroid Build Coastguard Worker      "xfa/fxfa/parser:embeddertests",
556*3ac0a46fSAndroid Build Coastguard Worker    ]
557*3ac0a46fSAndroid Build Coastguard Worker  }
558*3ac0a46fSAndroid Build Coastguard Worker}
559*3ac0a46fSAndroid Build Coastguard Worker
560*3ac0a46fSAndroid Build Coastguard Workerexecutable("pdfium_diff") {
561*3ac0a46fSAndroid Build Coastguard Worker  visibility += [ "testing/tools:test_runner_py" ]
562*3ac0a46fSAndroid Build Coastguard Worker  testonly = true
563*3ac0a46fSAndroid Build Coastguard Worker  sources = [ "testing/image_diff/image_diff.cpp" ]
564*3ac0a46fSAndroid Build Coastguard Worker  deps = [
565*3ac0a46fSAndroid Build Coastguard Worker    "core/fxcrt",
566*3ac0a46fSAndroid Build Coastguard Worker    "testing:path_service",
567*3ac0a46fSAndroid Build Coastguard Worker    "testing/image_diff",
568*3ac0a46fSAndroid Build Coastguard Worker    "//build/win:default_exe_manifest",
569*3ac0a46fSAndroid Build Coastguard Worker  ]
570*3ac0a46fSAndroid Build Coastguard Worker  configs += [ ":pdfium_strict_config" ]
571*3ac0a46fSAndroid Build Coastguard Worker}
572*3ac0a46fSAndroid Build Coastguard Worker
573*3ac0a46fSAndroid Build Coastguard Workergroup("pdfium_all") {
574*3ac0a46fSAndroid Build Coastguard Worker  testonly = true
575*3ac0a46fSAndroid Build Coastguard Worker  deps = [
576*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_diff",
577*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_embeddertests",
578*3ac0a46fSAndroid Build Coastguard Worker    ":pdfium_unittests",
579*3ac0a46fSAndroid Build Coastguard Worker    "samples",
580*3ac0a46fSAndroid Build Coastguard Worker    "testing/fuzzers",
581*3ac0a46fSAndroid Build Coastguard Worker  ]
582*3ac0a46fSAndroid Build Coastguard Worker
583*3ac0a46fSAndroid Build Coastguard Worker  if (pdf_is_standalone) {
584*3ac0a46fSAndroid Build Coastguard Worker    deps += [ "testing/tools:test_runner_py" ]
585*3ac0a46fSAndroid Build Coastguard Worker  }
586*3ac0a46fSAndroid Build Coastguard Worker}
587*3ac0a46fSAndroid Build Coastguard Worker
588*3ac0a46fSAndroid Build Coastguard Worker# Makes additional targets reachable only for "gn check". These are not always
589*3ac0a46fSAndroid Build Coastguard Worker# built by the "all" Ninja target, which uses the "default" group, which in turn
590*3ac0a46fSAndroid Build Coastguard Worker# depends on the "pdfium_all" group.
591*3ac0a46fSAndroid Build Coastguard Workergroup("gn_check") {
592*3ac0a46fSAndroid Build Coastguard Worker  deps = []
593*3ac0a46fSAndroid Build Coastguard Worker
594*3ac0a46fSAndroid Build Coastguard Worker  # TODO(crbug.com/pdfium/1832): Remove !is_android when //third_party/expat is
595*3ac0a46fSAndroid Build Coastguard Worker  # available.
596*3ac0a46fSAndroid Build Coastguard Worker  if (defined(checkout_skia) && checkout_skia && !is_android) {
597*3ac0a46fSAndroid Build Coastguard Worker    deps += [ "//skia" ]
598*3ac0a46fSAndroid Build Coastguard Worker  }
599*3ac0a46fSAndroid Build Coastguard Worker}
600