xref: /aosp_15_r20/external/pdfium/third_party/BUILD.gn (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1# Copyright 2014 The PDFium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/arm.gni")
6import("//build/config/linux/pkg_config.gni")
7import("//build/config/mips.gni")
8import("//build_overrides/build.gni")
9import("../pdfium.gni")
10
11config("pdfium_third_party_config") {
12  configs = [
13    "..:pdfium_common_config",
14    "..:pdfium_public_config",
15  ]
16}
17
18if (pdf_enable_xfa) {
19  source_set("bigint") {
20    configs -= [ "//build/config/compiler:chromium_code" ]
21    configs += [
22      "//build/config/compiler:no_chromium_code",
23      ":pdfium_third_party_config",
24    ]
25    sources = [
26      "bigint/BigInteger.cc",
27      "bigint/BigInteger.hh",
28      "bigint/BigIntegerLibrary.hh",
29      "bigint/BigIntegerUtils.cc",
30      "bigint/BigIntegerUtils.hh",
31      "bigint/BigUnsigned.cc",
32      "bigint/BigUnsigned.hh",
33      "bigint/BigUnsignedInABase.cc",
34      "bigint/BigUnsignedInABase.hh",
35      "bigint/NumberlikeArray.hh",
36    ]
37  }
38}
39
40if (pdf_bundle_freetype) {
41  config("freetype_public_includes_config") {
42    # The relative freetype/include path points to PDFium's custom config.
43    # The absolute path points to whatever copy of FreeType is in
44    # //third_party/freetype.
45    include_dirs = [
46      "freetype/include",
47      "//third_party/freetype/src/include",
48    ]
49    defines = [
50      # GN currently does not escape '<' and '>' when generating xml based
51      # Visual Studio project files. As a result, use quotes instead of pointy
52      # brackets in these defines.
53      "FT_CONFIG_MODULES_H=\"freetype-custom-config/ftmodule.h\"",
54      "FT_CONFIG_OPTIONS_H=\"freetype-custom-config/ftoption.h\"",
55    ]
56  }
57
58  config("freetype_private_config") {
59    if (is_clang) {
60      # Multiple functions in freetype/src/src/truetype/ttobjs.h are unused.
61      cflags = [ "-Wno-unused-function" ]
62    }
63  }
64
65  # Tests may link against this even if the production library doesn't,
66  # so it needs to be separate from it.
67  source_set("fx_freetype") {
68    configs -= [ "//build/config/compiler:chromium_code" ]
69    configs += [
70      "//build/config/compiler:no_chromium_code",
71      ":freetype_private_config",
72      ":pdfium_third_party_config",
73    ]
74
75    public_configs = [ ":freetype_public_includes_config" ]
76
77    defines = [ "FT2_BUILD_LIBRARY" ]
78    sources = [
79      "//third_party/freetype/include/pstables.h",
80      "//third_party/freetype/src/include/freetype/config/ftconfig.h",
81      "//third_party/freetype/src/include/freetype/config/ftheader.h",
82      "//third_party/freetype/src/include/freetype/config/ftmodule.h",
83      "//third_party/freetype/src/include/freetype/config/ftoption.h",
84      "//third_party/freetype/src/include/freetype/config/ftstdlib.h",
85      "//third_party/freetype/src/include/freetype/freetype.h",
86      "//third_party/freetype/src/include/freetype/ftadvanc.h",
87      "//third_party/freetype/src/include/freetype/ftbbox.h",
88      "//third_party/freetype/src/include/freetype/ftbdf.h",
89      "//third_party/freetype/src/include/freetype/ftbitmap.h",
90      "//third_party/freetype/src/include/freetype/ftbzip2.h",
91      "//third_party/freetype/src/include/freetype/ftcache.h",
92      "//third_party/freetype/src/include/freetype/ftchapters.h",
93      "//third_party/freetype/src/include/freetype/ftcid.h",
94      "//third_party/freetype/src/include/freetype/ftcolor.h",
95      "//third_party/freetype/src/include/freetype/ftdriver.h",
96      "//third_party/freetype/src/include/freetype/fterrdef.h",
97      "//third_party/freetype/src/include/freetype/fterrors.h",
98      "//third_party/freetype/src/include/freetype/ftfntfmt.h",
99      "//third_party/freetype/src/include/freetype/ftgasp.h",
100      "//third_party/freetype/src/include/freetype/ftglyph.h",
101      "//third_party/freetype/src/include/freetype/ftgxval.h",
102      "//third_party/freetype/src/include/freetype/ftgzip.h",
103      "//third_party/freetype/src/include/freetype/ftimage.h",
104      "//third_party/freetype/src/include/freetype/ftincrem.h",
105      "//third_party/freetype/src/include/freetype/ftlcdfil.h",
106      "//third_party/freetype/src/include/freetype/ftlist.h",
107      "//third_party/freetype/src/include/freetype/ftlzw.h",
108      "//third_party/freetype/src/include/freetype/ftmac.h",
109      "//third_party/freetype/src/include/freetype/ftmm.h",
110      "//third_party/freetype/src/include/freetype/ftmodapi.h",
111      "//third_party/freetype/src/include/freetype/ftmoderr.h",
112      "//third_party/freetype/src/include/freetype/ftotval.h",
113      "//third_party/freetype/src/include/freetype/ftoutln.h",
114      "//third_party/freetype/src/include/freetype/ftparams.h",
115      "//third_party/freetype/src/include/freetype/ftpfr.h",
116      "//third_party/freetype/src/include/freetype/ftrender.h",
117      "//third_party/freetype/src/include/freetype/ftsizes.h",
118      "//third_party/freetype/src/include/freetype/ftsnames.h",
119      "//third_party/freetype/src/include/freetype/ftstroke.h",
120      "//third_party/freetype/src/include/freetype/ftsynth.h",
121      "//third_party/freetype/src/include/freetype/ftsystem.h",
122      "//third_party/freetype/src/include/freetype/fttrigon.h",
123      "//third_party/freetype/src/include/freetype/fttypes.h",
124      "//third_party/freetype/src/include/freetype/ftwinfnt.h",
125      "//third_party/freetype/src/include/freetype/internal/autohint.h",
126      "//third_party/freetype/src/include/freetype/internal/cffotypes.h",
127      "//third_party/freetype/src/include/freetype/internal/cfftypes.h",
128      "//third_party/freetype/src/include/freetype/internal/ftcalc.h",
129      "//third_party/freetype/src/include/freetype/internal/ftdebug.h",
130      "//third_party/freetype/src/include/freetype/internal/ftdrv.h",
131      "//third_party/freetype/src/include/freetype/internal/ftgloadr.h",
132      "//third_party/freetype/src/include/freetype/internal/fthash.h",
133      "//third_party/freetype/src/include/freetype/internal/ftmemory.h",
134      "//third_party/freetype/src/include/freetype/internal/ftobjs.h",
135      "//third_party/freetype/src/include/freetype/internal/ftpsprop.h",
136      "//third_party/freetype/src/include/freetype/internal/ftrfork.h",
137      "//third_party/freetype/src/include/freetype/internal/ftserv.h",
138      "//third_party/freetype/src/include/freetype/internal/ftstream.h",
139      "//third_party/freetype/src/include/freetype/internal/fttrace.h",
140      "//third_party/freetype/src/include/freetype/internal/ftvalid.h",
141      "//third_party/freetype/src/include/freetype/internal/psaux.h",
142      "//third_party/freetype/src/include/freetype/internal/pshints.h",
143      "//third_party/freetype/src/include/freetype/internal/services/svbdf.h",
144      "//third_party/freetype/src/include/freetype/internal/services/svcfftl.h",
145      "//third_party/freetype/src/include/freetype/internal/services/svcid.h",
146      "//third_party/freetype/src/include/freetype/internal/services/svfntfmt.h",
147      "//third_party/freetype/src/include/freetype/internal/services/svgldict.h",
148      "//third_party/freetype/src/include/freetype/internal/services/svgxval.h",
149      "//third_party/freetype/src/include/freetype/internal/services/svkern.h",
150      "//third_party/freetype/src/include/freetype/internal/services/svmetric.h",
151      "//third_party/freetype/src/include/freetype/internal/services/svmm.h",
152      "//third_party/freetype/src/include/freetype/internal/services/svotval.h",
153      "//third_party/freetype/src/include/freetype/internal/services/svpfr.h",
154      "//third_party/freetype/src/include/freetype/internal/services/svpostnm.h",
155      "//third_party/freetype/src/include/freetype/internal/services/svprop.h",
156      "//third_party/freetype/src/include/freetype/internal/services/svpscmap.h",
157      "//third_party/freetype/src/include/freetype/internal/services/svpsinfo.h",
158      "//third_party/freetype/src/include/freetype/internal/services/svsfnt.h",
159      "//third_party/freetype/src/include/freetype/internal/services/svttcmap.h",
160      "//third_party/freetype/src/include/freetype/internal/services/svtteng.h",
161      "//third_party/freetype/src/include/freetype/internal/services/svttglyf.h",
162      "//third_party/freetype/src/include/freetype/internal/services/svwinfnt.h",
163      "//third_party/freetype/src/include/freetype/internal/sfnt.h",
164      "//third_party/freetype/src/include/freetype/internal/t1types.h",
165      "//third_party/freetype/src/include/freetype/internal/tttypes.h",
166      "//third_party/freetype/src/include/freetype/t1tables.h",
167      "//third_party/freetype/src/include/freetype/ttnameid.h",
168      "//third_party/freetype/src/include/freetype/tttables.h",
169      "//third_party/freetype/src/include/freetype/tttags.h",
170      "//third_party/freetype/src/include/ft2build.h",
171      "//third_party/freetype/src/src/base/ftbase.c",
172      "//third_party/freetype/src/src/base/ftbase.h",
173      "//third_party/freetype/src/src/base/ftbitmap.c",
174      "//third_party/freetype/src/src/base/ftdebug.c",
175      "//third_party/freetype/src/src/base/ftfstype.c",
176      "//third_party/freetype/src/src/base/ftglyph.c",
177      "//third_party/freetype/src/src/base/ftinit.c",
178      "//third_party/freetype/src/src/base/ftmm.c",
179      "//third_party/freetype/src/src/base/ftsystem.c",
180      "//third_party/freetype/src/src/cff/cff.c",
181      "//third_party/freetype/src/src/cff/cffobjs.h",
182      "//third_party/freetype/src/src/cid/type1cid.c",
183      "//third_party/freetype/src/src/psaux/psaux.c",
184      "//third_party/freetype/src/src/pshinter/pshinter.c",
185      "//third_party/freetype/src/src/psnames/psmodule.c",
186      "//third_party/freetype/src/src/raster/raster.c",
187      "//third_party/freetype/src/src/sfnt/sfnt.c",
188      "//third_party/freetype/src/src/smooth/smooth.c",
189      "//third_party/freetype/src/src/truetype/truetype.c",
190      "//third_party/freetype/src/src/type1/type1.c",
191    ]
192    if (pdf_use_skia) {
193      sources += [
194        "//third_party/freetype/src/include/freetype/ftsynth.h",
195        "//third_party/freetype/src/src/base/fttype1.c",
196      ]
197    }
198  }
199}
200
201if (is_linux || is_chromeos) {
202  config("system_fontconfig") {
203    libs = [ "fontconfig" ]
204  }
205  group("fontconfig") {
206    public_configs = [ ":system_fontconfig" ]
207  }
208}
209
210config("fx_agg_warnings") {
211  visibility = [ ":fx_agg" ]
212  if (is_clang) {
213    # calc_butt_cap() in agg_vcgen_stroke.cpp is unused.
214    cflags = [ "-Wno-unused-function" ]
215  }
216}
217source_set("fx_agg") {
218  configs -= [ "//build/config/compiler:chromium_code" ]
219  configs += [
220    "//build/config/compiler:no_chromium_code",
221    ":pdfium_third_party_config",
222
223    # Must be after no_chromium_code for warning flags to be ordered correctly.
224    ":fx_agg_warnings",
225  ]
226  sources = [
227    "agg23/agg_array.h",
228    "agg23/agg_basics.h",
229    "agg23/agg_clip_liang_barsky.h",
230    "agg23/agg_color_gray.h",
231    "agg23/agg_conv_adaptor_vcgen.h",
232    "agg23/agg_conv_dash.h",
233    "agg23/agg_conv_stroke.h",
234    "agg23/agg_curves.cpp",
235    "agg23/agg_curves.h",
236    "agg23/agg_math.h",
237    "agg23/agg_math_stroke.h",
238    "agg23/agg_path_storage.cpp",
239    "agg23/agg_path_storage.h",
240    "agg23/agg_pixfmt_gray.h",
241    "agg23/agg_rasterizer_scanline_aa.cpp",
242    "agg23/agg_rasterizer_scanline_aa.h",
243    "agg23/agg_render_scanlines.h",
244    "agg23/agg_renderer_base.h",
245    "agg23/agg_renderer_scanline.h",
246    "agg23/agg_rendering_buffer.h",
247    "agg23/agg_scanline_u.h",
248    "agg23/agg_shorten_path.h",
249    "agg23/agg_vcgen_dash.cpp",
250    "agg23/agg_vcgen_dash.h",
251    "agg23/agg_vcgen_stroke.cpp",
252    "agg23/agg_vcgen_stroke.h",
253    "agg23/agg_vertex_sequence.h",
254  ]
255  deps = [ "../core/fxcrt" ]
256}
257
258config("fx_lcms2_warnings") {
259  visibility = [ ":*" ]
260  if (is_clang) {
261    cflags = [
262      # cmslut.cc is sloppy with aggregate initialization. Version 2.7 of this
263      # library doesn't appear to have this problem.
264      "-Wno-missing-braces",
265    ]
266  }
267}
268
269source_set("fx_lcms2") {
270  configs -= [ "//build/config/compiler:chromium_code" ]
271  configs += [
272    "//build/config/compiler:no_chromium_code",
273    "//build/config/sanitizers:cfi_icall_generalize_pointers",
274    ":pdfium_third_party_config",
275
276    # Must be after no_chromium_code for warning flags to be ordered correctly.
277    ":fx_lcms2_warnings",
278  ]
279  sources = [
280    "lcms/include/lcms2.h",
281    "lcms/include/lcms2_plugin.h",
282    "lcms/src/cmsalpha.c",
283    "lcms/src/cmscam02.c",
284    "lcms/src/cmscgats.c",
285    "lcms/src/cmscnvrt.c",
286    "lcms/src/cmserr.c",
287    "lcms/src/cmsgamma.c",
288    "lcms/src/cmsgmt.c",
289    "lcms/src/cmshalf.c",
290    "lcms/src/cmsintrp.c",
291    "lcms/src/cmsio0.c",
292    "lcms/src/cmsio1.c",
293    "lcms/src/cmslut.c",
294    "lcms/src/cmsmd5.c",
295    "lcms/src/cmsmtrx.c",
296    "lcms/src/cmsnamed.c",
297    "lcms/src/cmsopt.c",
298    "lcms/src/cmspack.c",
299    "lcms/src/cmspcs.c",
300    "lcms/src/cmsplugin.c",
301    "lcms/src/cmsps2.c",
302    "lcms/src/cmssamp.c",
303    "lcms/src/cmssm.c",
304    "lcms/src/cmstypes.c",
305    "lcms/src/cmsvirt.c",
306    "lcms/src/cmswtpnt.c",
307    "lcms/src/cmsxform.c",
308  ]
309  deps = [ "../core/fxcrt" ]
310}
311
312if (!build_with_chromium) {
313  declare_args() {
314    # Uses system libjpeg. If true, overrides use_libjpeg_turbo.
315    use_system_libjpeg = false
316
317    # Uses libjpeg_turbo as the jpeg implementation. Has no effect if
318    # use_system_libjpeg is set.
319    use_libjpeg_turbo = true
320  }
321
322  config("system_libjpeg_config") {
323    libs = [ "jpeg" ]
324    defines = [ "USE_SYSTEM_LIBJPEG" ]
325  }
326
327  config("libjpeg_turbo_config") {
328    defines = [ "USE_LIBJPEG_TURBO=1" ]
329  }
330
331  # This is a meta target that forwards to the system's libjpeg,
332  # third_party/libjpeg, or third_party/libjpeg_turbo depending on the build args
333  # declared in this file.
334  group("jpeg") {
335    if (use_system_libjpeg) {
336      public_configs = [ ":system_libjpeg_config" ]
337    } else if (use_libjpeg_turbo) {
338      public_deps = [ "//third_party/libjpeg_turbo:libjpeg" ]
339      public_configs = [ ":libjpeg_turbo_config" ]
340    } else {
341      public_deps = [ "//third_party/libjpeg:libjpeg" ]
342    }
343  }
344}
345
346config("system_zlib_config") {
347  libs = [ "z" ]
348  defines = [ "USE_SYSTEM_ZLIB" ]
349}
350
351group("zlib") {
352  if (use_system_zlib) {
353    public_configs = [ ":system_zlib_config" ]
354  } else {
355    public_deps = [ "//third_party/zlib" ]
356  }
357}
358
359if (use_system_lcms2) {
360  pkg_config("lcms2_from_pkgconfig") {
361    defines = [ "USE_SYSTEM_LCMS2" ]
362    packages = [ "lcms2" ]
363  }
364}
365group("lcms2") {
366  if (use_system_lcms2) {
367    public_configs = [ ":lcms2_from_pkgconfig" ]
368  } else {
369    public_deps = [ ":fx_lcms2" ]
370  }
371}
372
373if (use_system_libopenjpeg2) {
374  pkg_config("libopenjpeg2_from_pkgconfig") {
375    defines = [ "USE_SYSTEM_LIBOPENJPEG2" ]
376    packages = [ "libopenjp2" ]
377  }
378}
379group("libopenjpeg2") {
380  if (use_system_libopenjpeg2) {
381    public_configs = [ ":libopenjpeg2_from_pkgconfig" ]
382  } else {
383    public_deps = [ ":fx_libopenjpeg" ]
384  }
385}
386
387config("fx_libopenjpeg_warnings") {
388  visibility = [ ":*" ]
389  if (is_clang) {
390    cflags = [
391      # Various files convert MAX_INT to double and similar without casting.
392      "-Wno-implicit-int-float-conversion",
393    ]
394  } else if (is_win && target_cpu == "x86") {
395    cflags = [
396      # Signed/unsigned comparisons.
397      "/wd4018",
398    ]
399  }
400}
401
402source_set("fx_libopenjpeg") {
403  configs -= [ "//build/config/compiler:chromium_code" ]
404  configs += [
405    "//build/config/compiler:no_chromium_code",
406    "//build/config/sanitizers:cfi_icall_generalize_pointers",
407    ":pdfium_third_party_config",
408
409    # Must be after no_chromium_code for warning flags to be ordered correctly.
410    ":fx_libopenjpeg_warnings",
411  ]
412  sources = [
413    "libopenjpeg/bio.c",
414    "libopenjpeg/cio.c",
415    "libopenjpeg/dwt.c",
416    "libopenjpeg/event.c",
417    "libopenjpeg/function_list.c",
418    "libopenjpeg/ht_dec.c",
419    "libopenjpeg/image.c",
420    "libopenjpeg/invert.c",
421    "libopenjpeg/j2k.c",
422    "libopenjpeg/jp2.c",
423    "libopenjpeg/mct.c",
424    "libopenjpeg/mqc.c",
425    "libopenjpeg/openjpeg.c",
426
427    # NOTE: libopenjpeg/opj_clock.c is not used.
428    "libopenjpeg/opj_malloc.cc",
429    "libopenjpeg/opj_malloc.h",
430    "libopenjpeg/pi.c",
431    "libopenjpeg/sparse_array.c",
432    "libopenjpeg/sparse_array.h",
433    "libopenjpeg/t1.c",
434    "libopenjpeg/t1_ht_luts.h",
435    "libopenjpeg/t2.c",
436    "libopenjpeg/tcd.c",
437    "libopenjpeg/tgt.c",
438    "libopenjpeg/thread.c",
439  ]
440  deps = [ "../core/fxcrt" ]
441}
442
443config("system_libpng_config") {
444  libs = [ "png" ]
445  defines = [ "USE_SYSTEM_LIBPNG" ]
446}
447
448group("png") {
449  if (use_system_libpng) {
450    public_configs = [ ":system_libpng_config" ]
451  } else {
452    public_deps = [ "//third_party/libpng" ]
453  }
454}
455
456if (pdf_enable_xfa_tiff) {
457  if (use_system_libtiff) {
458    config("system_tiff_config") {
459      libs = [ "tiff" ]
460    }
461  } else {
462    source_set("fx_tiff") {
463      configs -= [ "//build/config/compiler:chromium_code" ]
464      configs += [
465        "//build/config/compiler:no_chromium_code",
466        ":pdfium_third_party_config",
467      ]
468      if (is_win) {
469        # Need to undefine the macro since it is redefined in tif_jpeg.c.
470        configs -= [ "//build/config/win:lean_and_mean" ]
471      }
472      deps = [
473        ":zlib",
474        "../core/fxcrt",
475        "//third_party:jpeg",
476      ]
477      sources = [
478        "libtiff/tif_aux.c",
479        "libtiff/tif_close.c",
480        "libtiff/tif_codec.c",
481        "libtiff/tif_color.c",
482        "libtiff/tif_compress.c",
483        "libtiff/tif_dir.c",
484        "libtiff/tif_dirinfo.c",
485        "libtiff/tif_dirread.c",
486        "libtiff/tif_dirwrite.c",
487        "libtiff/tif_dumpmode.c",
488        "libtiff/tif_error.c",
489        "libtiff/tif_extension.c",
490        "libtiff/tif_fax3.c",
491        "libtiff/tif_fax3sm.c",
492        "libtiff/tif_flush.c",
493        "libtiff/tif_getimage.c",
494        "libtiff/tif_hash_set.c",
495        "libtiff/tif_hash_set.h",
496        "libtiff/tif_jpeg.c",
497        "libtiff/tif_luv.c",
498        "libtiff/tif_lzw.c",
499        "libtiff/tif_next.c",
500        "libtiff/tif_open.c",
501        "libtiff/tif_packbits.c",
502        "libtiff/tif_pixarlog.c",
503        "libtiff/tif_predict.c",
504        "libtiff/tif_print.c",
505        "libtiff/tif_read.c",
506        "libtiff/tif_strip.c",
507        "libtiff/tif_swab.c",
508        "libtiff/tif_thunder.c",
509        "libtiff/tif_tile.c",
510        "libtiff/tif_version.c",
511        "libtiff/tif_warning.c",
512        "libtiff/tif_write.c",
513        "libtiff/tiffiop.h",
514        "libtiff/tiffvers.h",
515      ]
516    }
517  }
518
519  group("tiff") {
520    if (use_system_libtiff) {
521      public_configs = [ ":system_tiff_config" ]
522    } else {
523      public_deps = [ ":fx_tiff" ]
524    }
525  }
526}
527
528source_set("pdfium_compiler_specific") {
529  configs -= [ "//build/config/compiler:chromium_code" ]
530  configs += [
531    "//build/config/compiler:no_chromium_code",
532    ":pdfium_third_party_config",
533  ]
534  sources = [ "base/compiler_specific.h" ]
535}
536
537source_set("pdfium_base") {
538  configs -= [ "//build/config/compiler:chromium_code" ]
539  configs += [
540    "//build/config/compiler:no_chromium_code",
541    ":pdfium_third_party_config",
542  ]
543  sources = [
544    "base/base_export.h",
545    "base/bits.h",
546    "base/check.h",
547    "base/check_op.h",
548    "base/component_export.h",
549    "base/containers/adapters.h",
550    "base/containers/contains.h",
551    "base/containers/span.h",
552    "base/debug/alias.cc",
553    "base/debug/alias.h",
554    "base/immediate_crash.h",
555    "base/memory/aligned_memory.cc",
556    "base/memory/aligned_memory.h",
557    "base/memory/ptr_util.h",
558    "base/no_destructor.h",
559    "base/notreached.h",
560    "base/numerics/checked_math.h",
561    "base/numerics/checked_math_impl.h",
562    "base/numerics/clamped_math.h",
563    "base/numerics/clamped_math_impl.h",
564    "base/numerics/safe_conversions.h",
565    "base/numerics/safe_conversions_arm_impl.h",
566    "base/numerics/safe_conversions_impl.h",
567    "base/numerics/safe_math.h",
568    "base/numerics/safe_math_arm_impl.h",
569    "base/numerics/safe_math_clang_gcc_impl.h",
570    "base/numerics/safe_math_shared_impl.h",
571    "base/sys_byteorder.h",
572    "base/template_util.h",
573  ]
574  public_deps = [
575    ":pdfium_compiler_specific",
576    "../core/fxcrt:unowned_ptr",
577    "//third_party/abseil-cpp:absl",
578  ]
579  if (is_win) {
580    sources += [
581      "base/win/scoped_select_object.h",
582      "base/win/win_util.cc",
583      "base/win/win_util.h",
584    ]
585  }
586}
587
588source_set("pdfium_base_test_support") {
589  testonly = true
590  sources = []
591  configs += [
592    "../:pdfium_strict_config",
593    "../:pdfium_noshorten_config",
594  ]
595  deps = []
596  if (is_posix || is_fuchsia) {
597    sources += [
598      "base/test/scoped_locale.cc",
599      "base/test/scoped_locale.h",
600    ]
601    deps += [ "//testing/gtest" ]
602  }
603}
604