Split most core build rules into various BUILD.gn files in core.

Change-Id: I773eec2bbf104f073eba7a64ed19f6fba0131d21
Reviewed-on: https://pdfium-review.googlesource.com/c/43946
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index 87c3849..1df6100 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -2,7 +2,6 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//build/config/freetype/freetype.gni")
 import("//build/config/jumbo.gni")
 import("//testing/test.gni")
 import("pdfium.gni")
@@ -142,14 +141,14 @@
   configs += [ ":pdfium_core_config" ]
 
   deps = [
-    ":fdrm",
-    ":fpdfapi",
-    ":fpdfdoc",
-    ":fpdftext",
-    ":fxcodec",
     ":fxcrt",
-    ":fxge",
     "constants",
+    "core/fdrm",
+    "core/fpdfapi",
+    "core/fpdfdoc",
+    "core/fpdftext",
+    "core/fxcodec",
+    "core/fxge",
     "fpdfsdk",
     "fpdfsdk/formfiller",
     "fpdfsdk/pwl",
@@ -190,548 +189,6 @@
   "//:gn_visibility",
 ]
 
-jumbo_source_set("fdrm") {
-  sources = [
-    "core/fdrm/fx_crypt.cpp",
-    "core/fdrm/fx_crypt.h",
-    "core/fdrm/fx_crypt_aes.cpp",
-    "core/fdrm/fx_crypt_sha.cpp",
-  ]
-  configs += [ ":pdfium_core_config" ]
-  deps = [
-    ":fxcrt",
-  ]
-}
-
-jumbo_source_set("fpdfdoc") {
-  sources = [
-    "core/fpdfdoc/cline.cpp",
-    "core/fpdfdoc/cline.h",
-    "core/fpdfdoc/cpdf_aaction.cpp",
-    "core/fpdfdoc/cpdf_aaction.h",
-    "core/fpdfdoc/cpdf_action.cpp",
-    "core/fpdfdoc/cpdf_action.h",
-    "core/fpdfdoc/cpdf_actionfields.cpp",
-    "core/fpdfdoc/cpdf_actionfields.h",
-    "core/fpdfdoc/cpdf_annot.cpp",
-    "core/fpdfdoc/cpdf_annot.h",
-    "core/fpdfdoc/cpdf_annotlist.cpp",
-    "core/fpdfdoc/cpdf_annotlist.h",
-    "core/fpdfdoc/cpdf_apsettings.cpp",
-    "core/fpdfdoc/cpdf_apsettings.h",
-    "core/fpdfdoc/cpdf_bookmark.cpp",
-    "core/fpdfdoc/cpdf_bookmark.h",
-    "core/fpdfdoc/cpdf_bookmarktree.cpp",
-    "core/fpdfdoc/cpdf_bookmarktree.h",
-    "core/fpdfdoc/cpdf_defaultappearance.cpp",
-    "core/fpdfdoc/cpdf_defaultappearance.h",
-    "core/fpdfdoc/cpdf_dest.cpp",
-    "core/fpdfdoc/cpdf_dest.h",
-    "core/fpdfdoc/cpdf_docjsactions.cpp",
-    "core/fpdfdoc/cpdf_docjsactions.h",
-    "core/fpdfdoc/cpdf_filespec.cpp",
-    "core/fpdfdoc/cpdf_filespec.h",
-    "core/fpdfdoc/cpdf_formcontrol.cpp",
-    "core/fpdfdoc/cpdf_formcontrol.h",
-    "core/fpdfdoc/cpdf_formfield.cpp",
-    "core/fpdfdoc/cpdf_formfield.h",
-    "core/fpdfdoc/cpdf_iconfit.cpp",
-    "core/fpdfdoc/cpdf_iconfit.h",
-    "core/fpdfdoc/cpdf_interactiveform.cpp",
-    "core/fpdfdoc/cpdf_interactiveform.h",
-    "core/fpdfdoc/cpdf_link.cpp",
-    "core/fpdfdoc/cpdf_link.h",
-    "core/fpdfdoc/cpdf_linklist.cpp",
-    "core/fpdfdoc/cpdf_linklist.h",
-    "core/fpdfdoc/cpdf_metadata.cpp",
-    "core/fpdfdoc/cpdf_metadata.h",
-    "core/fpdfdoc/cpdf_nametree.cpp",
-    "core/fpdfdoc/cpdf_nametree.h",
-    "core/fpdfdoc/cpdf_numbertree.cpp",
-    "core/fpdfdoc/cpdf_numbertree.h",
-    "core/fpdfdoc/cpdf_occontext.cpp",
-    "core/fpdfdoc/cpdf_occontext.h",
-    "core/fpdfdoc/cpdf_pagelabel.cpp",
-    "core/fpdfdoc/cpdf_pagelabel.h",
-    "core/fpdfdoc/cpdf_structelement.cpp",
-    "core/fpdfdoc/cpdf_structelement.h",
-    "core/fpdfdoc/cpdf_structtree.cpp",
-    "core/fpdfdoc/cpdf_structtree.h",
-    "core/fpdfdoc/cpdf_variabletext.cpp",
-    "core/fpdfdoc/cpdf_variabletext.h",
-    "core/fpdfdoc/cpdf_viewerpreferences.cpp",
-    "core/fpdfdoc/cpdf_viewerpreferences.h",
-    "core/fpdfdoc/cpvt_floatrect.h",
-    "core/fpdfdoc/cpvt_fontmap.cpp",
-    "core/fpdfdoc/cpvt_fontmap.h",
-    "core/fpdfdoc/cpvt_generateap.cpp",
-    "core/fpdfdoc/cpvt_generateap.h",
-    "core/fpdfdoc/cpvt_line.h",
-    "core/fpdfdoc/cpvt_lineinfo.h",
-    "core/fpdfdoc/cpvt_word.h",
-    "core/fpdfdoc/cpvt_wordinfo.cpp",
-    "core/fpdfdoc/cpvt_wordinfo.h",
-    "core/fpdfdoc/cpvt_wordplace.h",
-    "core/fpdfdoc/cpvt_wordrange.h",
-    "core/fpdfdoc/csection.cpp",
-    "core/fpdfdoc/csection.h",
-    "core/fpdfdoc/ctypeset.cpp",
-    "core/fpdfdoc/ctypeset.h",
-    "core/fpdfdoc/ipdf_formnotify.h",
-    "core/fpdfdoc/ipvt_fontmap.h",
-  ]
-  configs += [ ":pdfium_core_config" ]
-  deps = [
-    ":fxcrt",
-  ]
-}
-
-jumbo_source_set("fpdfapi") {
-  sources = [
-    "core/fpdfapi/cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp",
-    "core/fpdfapi/cmaps/CNS1/B5pc-H_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/B5pc-V_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/CNS-EUC-H_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/CNS-EUC-V_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/ETen-B5-H_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/ETen-B5-V_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/ETenms-B5-H_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/ETenms-B5-V_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/HKscs-B5-H_5.cpp",
-    "core/fpdfapi/cmaps/CNS1/HKscs-B5-V_5.cpp",
-    "core/fpdfapi/cmaps/CNS1/UniCNS-UCS2-H_3.cpp",
-    "core/fpdfapi/cmaps/CNS1/UniCNS-UCS2-V_3.cpp",
-    "core/fpdfapi/cmaps/CNS1/UniCNS-UTF16-H_0.cpp",
-    "core/fpdfapi/cmaps/CNS1/cmaps_cns1.cpp",
-    "core/fpdfapi/cmaps/GB1/Adobe-GB1-UCS2_5.cpp",
-    "core/fpdfapi/cmaps/GB1/GB-EUC-H_0.cpp",
-    "core/fpdfapi/cmaps/GB1/GB-EUC-V_0.cpp",
-    "core/fpdfapi/cmaps/GB1/GBK-EUC-H_2.cpp",
-    "core/fpdfapi/cmaps/GB1/GBK-EUC-V_2.cpp",
-    "core/fpdfapi/cmaps/GB1/GBK2K-H_5.cpp",
-    "core/fpdfapi/cmaps/GB1/GBK2K-V_5.cpp",
-    "core/fpdfapi/cmaps/GB1/GBKp-EUC-H_2.cpp",
-    "core/fpdfapi/cmaps/GB1/GBKp-EUC-V_2.cpp",
-    "core/fpdfapi/cmaps/GB1/GBpc-EUC-H_0.cpp",
-    "core/fpdfapi/cmaps/GB1/GBpc-EUC-V_0.cpp",
-    "core/fpdfapi/cmaps/GB1/UniGB-UCS2-H_4.cpp",
-    "core/fpdfapi/cmaps/GB1/UniGB-UCS2-V_4.cpp",
-    "core/fpdfapi/cmaps/GB1/cmaps_gb1.cpp",
-    "core/fpdfapi/cmaps/Japan1/83pv-RKSJ-H_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/90ms-RKSJ-H_2.cpp",
-    "core/fpdfapi/cmaps/Japan1/90ms-RKSJ-V_2.cpp",
-    "core/fpdfapi/cmaps/Japan1/90msp-RKSJ-H_2.cpp",
-    "core/fpdfapi/cmaps/Japan1/90msp-RKSJ-V_2.cpp",
-    "core/fpdfapi/cmaps/Japan1/90pv-RKSJ-H_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/Add-RKSJ-H_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/Add-RKSJ-V_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp",
-    "core/fpdfapi/cmaps/Japan1/EUC-H_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/EUC-V_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/Ext-RKSJ-H_2.cpp",
-    "core/fpdfapi/cmaps/Japan1/Ext-RKSJ-V_2.cpp",
-    "core/fpdfapi/cmaps/Japan1/H_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp",
-    "core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp",
-    "core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-H_4.cpp",
-    "core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-V_4.cpp",
-    "core/fpdfapi/cmaps/Japan1/V_1.cpp",
-    "core/fpdfapi/cmaps/Japan1/cmaps_japan1.cpp",
-    "core/fpdfapi/cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp",
-    "core/fpdfapi/cmaps/Korea1/KSC-EUC-H_0.cpp",
-    "core/fpdfapi/cmaps/Korea1/KSC-EUC-V_0.cpp",
-    "core/fpdfapi/cmaps/Korea1/KSCms-UHC-HW-H_1.cpp",
-    "core/fpdfapi/cmaps/Korea1/KSCms-UHC-HW-V_1.cpp",
-    "core/fpdfapi/cmaps/Korea1/KSCms-UHC-H_1.cpp",
-    "core/fpdfapi/cmaps/Korea1/KSCms-UHC-V_1.cpp",
-    "core/fpdfapi/cmaps/Korea1/KSCpc-EUC-H_0.cpp",
-    "core/fpdfapi/cmaps/Korea1/UniKS-UCS2-H_1.cpp",
-    "core/fpdfapi/cmaps/Korea1/UniKS-UCS2-V_1.cpp",
-    "core/fpdfapi/cmaps/Korea1/UniKS-UTF16-H_0.cpp",
-    "core/fpdfapi/cmaps/Korea1/cmaps_korea1.cpp",
-    "core/fpdfapi/cmaps/cmap_int.h",
-    "core/fpdfapi/cmaps/fpdf_cmaps.cpp",
-    "core/fpdfapi/cpdf_modulemgr.cpp",
-    "core/fpdfapi/cpdf_modulemgr.h",
-    "core/fpdfapi/cpdf_pagerendercontext.cpp",
-    "core/fpdfapi/cpdf_pagerendercontext.h",
-    "core/fpdfapi/edit/cpdf_creator.cpp",
-    "core/fpdfapi/edit/cpdf_creator.h",
-    "core/fpdfapi/edit/cpdf_encryptor.cpp",
-    "core/fpdfapi/edit/cpdf_encryptor.h",
-    "core/fpdfapi/edit/cpdf_flateencoder.cpp",
-    "core/fpdfapi/edit/cpdf_flateencoder.h",
-    "core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp",
-    "core/fpdfapi/edit/cpdf_pagecontentgenerator.h",
-    "core/fpdfapi/edit/cpdf_pagecontentmanager.cpp",
-    "core/fpdfapi/edit/cpdf_pagecontentmanager.h",
-    "core/fpdfapi/edit/cpdf_stringarchivestream.cpp",
-    "core/fpdfapi/edit/cpdf_stringarchivestream.h",
-    "core/fpdfapi/font/cfx_cttgsubtable.cpp",
-    "core/fpdfapi/font/cfx_cttgsubtable.h",
-    "core/fpdfapi/font/cfx_stockfontarray.cpp",
-    "core/fpdfapi/font/cfx_stockfontarray.h",
-    "core/fpdfapi/font/cpdf_cid2unicodemap.cpp",
-    "core/fpdfapi/font/cpdf_cid2unicodemap.h",
-    "core/fpdfapi/font/cpdf_cidfont.cpp",
-    "core/fpdfapi/font/cpdf_cidfont.h",
-    "core/fpdfapi/font/cpdf_cmap.cpp",
-    "core/fpdfapi/font/cpdf_cmap.h",
-    "core/fpdfapi/font/cpdf_cmapmanager.cpp",
-    "core/fpdfapi/font/cpdf_cmapmanager.h",
-    "core/fpdfapi/font/cpdf_cmapparser.cpp",
-    "core/fpdfapi/font/cpdf_cmapparser.h",
-    "core/fpdfapi/font/cpdf_font.cpp",
-    "core/fpdfapi/font/cpdf_font.h",
-    "core/fpdfapi/font/cpdf_fontencoding.cpp",
-    "core/fpdfapi/font/cpdf_fontencoding.h",
-    "core/fpdfapi/font/cpdf_fontglobals.cpp",
-    "core/fpdfapi/font/cpdf_fontglobals.h",
-    "core/fpdfapi/font/cpdf_simplefont.cpp",
-    "core/fpdfapi/font/cpdf_simplefont.h",
-    "core/fpdfapi/font/cpdf_tounicodemap.cpp",
-    "core/fpdfapi/font/cpdf_tounicodemap.h",
-    "core/fpdfapi/font/cpdf_truetypefont.cpp",
-    "core/fpdfapi/font/cpdf_truetypefont.h",
-    "core/fpdfapi/font/cpdf_type1font.cpp",
-    "core/fpdfapi/font/cpdf_type1font.h",
-    "core/fpdfapi/font/cpdf_type3char.cpp",
-    "core/fpdfapi/font/cpdf_type3char.h",
-    "core/fpdfapi/font/cpdf_type3font.cpp",
-    "core/fpdfapi/font/cpdf_type3font.h",
-    "core/fpdfapi/page/cpdf_allstates.cpp",
-    "core/fpdfapi/page/cpdf_allstates.h",
-    "core/fpdfapi/page/cpdf_clippath.cpp",
-    "core/fpdfapi/page/cpdf_clippath.h",
-    "core/fpdfapi/page/cpdf_color.cpp",
-    "core/fpdfapi/page/cpdf_color.h",
-    "core/fpdfapi/page/cpdf_colorspace.cpp",
-    "core/fpdfapi/page/cpdf_colorspace.h",
-    "core/fpdfapi/page/cpdf_colorstate.cpp",
-    "core/fpdfapi/page/cpdf_colorstate.h",
-    "core/fpdfapi/page/cpdf_contentmarkitem.cpp",
-    "core/fpdfapi/page/cpdf_contentmarkitem.h",
-    "core/fpdfapi/page/cpdf_contentmarks.cpp",
-    "core/fpdfapi/page/cpdf_contentmarks.h",
-    "core/fpdfapi/page/cpdf_contentparser.cpp",
-    "core/fpdfapi/page/cpdf_contentparser.h",
-    "core/fpdfapi/page/cpdf_countedobject.h",
-    "core/fpdfapi/page/cpdf_devicecs.cpp",
-    "core/fpdfapi/page/cpdf_devicecs.h",
-    "core/fpdfapi/page/cpdf_docpagedata.cpp",
-    "core/fpdfapi/page/cpdf_docpagedata.h",
-    "core/fpdfapi/page/cpdf_expintfunc.cpp",
-    "core/fpdfapi/page/cpdf_expintfunc.h",
-    "core/fpdfapi/page/cpdf_form.cpp",
-    "core/fpdfapi/page/cpdf_form.h",
-    "core/fpdfapi/page/cpdf_formobject.cpp",
-    "core/fpdfapi/page/cpdf_formobject.h",
-    "core/fpdfapi/page/cpdf_function.cpp",
-    "core/fpdfapi/page/cpdf_function.h",
-    "core/fpdfapi/page/cpdf_generalstate.cpp",
-    "core/fpdfapi/page/cpdf_generalstate.h",
-    "core/fpdfapi/page/cpdf_graphicstates.cpp",
-    "core/fpdfapi/page/cpdf_graphicstates.h",
-    "core/fpdfapi/page/cpdf_iccprofile.cpp",
-    "core/fpdfapi/page/cpdf_iccprofile.h",
-    "core/fpdfapi/page/cpdf_image.cpp",
-    "core/fpdfapi/page/cpdf_image.h",
-    "core/fpdfapi/page/cpdf_imageobject.cpp",
-    "core/fpdfapi/page/cpdf_imageobject.h",
-    "core/fpdfapi/page/cpdf_meshstream.cpp",
-    "core/fpdfapi/page/cpdf_meshstream.h",
-    "core/fpdfapi/page/cpdf_page.cpp",
-    "core/fpdfapi/page/cpdf_page.h",
-    "core/fpdfapi/page/cpdf_pagemodule.cpp",
-    "core/fpdfapi/page/cpdf_pagemodule.h",
-    "core/fpdfapi/page/cpdf_pageobject.cpp",
-    "core/fpdfapi/page/cpdf_pageobject.h",
-    "core/fpdfapi/page/cpdf_pageobjectholder.cpp",
-    "core/fpdfapi/page/cpdf_pageobjectholder.h",
-    "core/fpdfapi/page/cpdf_pageobjectlist.cpp",
-    "core/fpdfapi/page/cpdf_pageobjectlist.h",
-    "core/fpdfapi/page/cpdf_path.cpp",
-    "core/fpdfapi/page/cpdf_path.h",
-    "core/fpdfapi/page/cpdf_pathobject.cpp",
-    "core/fpdfapi/page/cpdf_pathobject.h",
-    "core/fpdfapi/page/cpdf_pattern.cpp",
-    "core/fpdfapi/page/cpdf_pattern.h",
-    "core/fpdfapi/page/cpdf_patterncs.cpp",
-    "core/fpdfapi/page/cpdf_patterncs.h",
-    "core/fpdfapi/page/cpdf_psengine.cpp",
-    "core/fpdfapi/page/cpdf_psengine.h",
-    "core/fpdfapi/page/cpdf_psfunc.cpp",
-    "core/fpdfapi/page/cpdf_psfunc.h",
-    "core/fpdfapi/page/cpdf_sampledfunc.cpp",
-    "core/fpdfapi/page/cpdf_sampledfunc.h",
-    "core/fpdfapi/page/cpdf_shadingobject.cpp",
-    "core/fpdfapi/page/cpdf_shadingobject.h",
-    "core/fpdfapi/page/cpdf_shadingpattern.cpp",
-    "core/fpdfapi/page/cpdf_shadingpattern.h",
-    "core/fpdfapi/page/cpdf_stitchfunc.cpp",
-    "core/fpdfapi/page/cpdf_stitchfunc.h",
-    "core/fpdfapi/page/cpdf_streamcontentparser.cpp",
-    "core/fpdfapi/page/cpdf_streamcontentparser.h",
-    "core/fpdfapi/page/cpdf_streamparser.cpp",
-    "core/fpdfapi/page/cpdf_streamparser.h",
-    "core/fpdfapi/page/cpdf_textobject.cpp",
-    "core/fpdfapi/page/cpdf_textobject.h",
-    "core/fpdfapi/page/cpdf_textstate.cpp",
-    "core/fpdfapi/page/cpdf_textstate.h",
-    "core/fpdfapi/page/cpdf_tilingpattern.cpp",
-    "core/fpdfapi/page/cpdf_tilingpattern.h",
-    "core/fpdfapi/page/ipdf_page.h",
-    "core/fpdfapi/parser/cfdf_document.cpp",
-    "core/fpdfapi/parser/cfdf_document.h",
-    "core/fpdfapi/parser/cpdf_array.cpp",
-    "core/fpdfapi/parser/cpdf_array.h",
-    "core/fpdfapi/parser/cpdf_boolean.cpp",
-    "core/fpdfapi/parser/cpdf_boolean.h",
-    "core/fpdfapi/parser/cpdf_cross_ref_avail.cpp",
-    "core/fpdfapi/parser/cpdf_cross_ref_avail.h",
-    "core/fpdfapi/parser/cpdf_cross_ref_table.cpp",
-    "core/fpdfapi/parser/cpdf_cross_ref_table.h",
-    "core/fpdfapi/parser/cpdf_crypto_handler.cpp",
-    "core/fpdfapi/parser/cpdf_crypto_handler.h",
-    "core/fpdfapi/parser/cpdf_data_avail.cpp",
-    "core/fpdfapi/parser/cpdf_data_avail.h",
-    "core/fpdfapi/parser/cpdf_dictionary.cpp",
-    "core/fpdfapi/parser/cpdf_dictionary.h",
-    "core/fpdfapi/parser/cpdf_document.cpp",
-    "core/fpdfapi/parser/cpdf_document.h",
-    "core/fpdfapi/parser/cpdf_hint_tables.cpp",
-    "core/fpdfapi/parser/cpdf_hint_tables.h",
-    "core/fpdfapi/parser/cpdf_indirect_object_holder.cpp",
-    "core/fpdfapi/parser/cpdf_indirect_object_holder.h",
-    "core/fpdfapi/parser/cpdf_linearized_header.cpp",
-    "core/fpdfapi/parser/cpdf_linearized_header.h",
-    "core/fpdfapi/parser/cpdf_name.cpp",
-    "core/fpdfapi/parser/cpdf_name.h",
-    "core/fpdfapi/parser/cpdf_null.cpp",
-    "core/fpdfapi/parser/cpdf_null.h",
-    "core/fpdfapi/parser/cpdf_number.cpp",
-    "core/fpdfapi/parser/cpdf_number.h",
-    "core/fpdfapi/parser/cpdf_object.cpp",
-    "core/fpdfapi/parser/cpdf_object.h",
-    "core/fpdfapi/parser/cpdf_object_avail.cpp",
-    "core/fpdfapi/parser/cpdf_object_avail.h",
-    "core/fpdfapi/parser/cpdf_object_stream.cpp",
-    "core/fpdfapi/parser/cpdf_object_stream.h",
-    "core/fpdfapi/parser/cpdf_object_walker.cpp",
-    "core/fpdfapi/parser/cpdf_object_walker.h",
-    "core/fpdfapi/parser/cpdf_page_object_avail.cpp",
-    "core/fpdfapi/parser/cpdf_page_object_avail.h",
-    "core/fpdfapi/parser/cpdf_parser.cpp",
-    "core/fpdfapi/parser/cpdf_parser.h",
-    "core/fpdfapi/parser/cpdf_read_validator.cpp",
-    "core/fpdfapi/parser/cpdf_read_validator.h",
-    "core/fpdfapi/parser/cpdf_reference.cpp",
-    "core/fpdfapi/parser/cpdf_reference.h",
-    "core/fpdfapi/parser/cpdf_security_handler.cpp",
-    "core/fpdfapi/parser/cpdf_security_handler.h",
-    "core/fpdfapi/parser/cpdf_simple_parser.cpp",
-    "core/fpdfapi/parser/cpdf_simple_parser.h",
-    "core/fpdfapi/parser/cpdf_stream.cpp",
-    "core/fpdfapi/parser/cpdf_stream.h",
-    "core/fpdfapi/parser/cpdf_stream_acc.cpp",
-    "core/fpdfapi/parser/cpdf_stream_acc.h",
-    "core/fpdfapi/parser/cpdf_string.cpp",
-    "core/fpdfapi/parser/cpdf_string.h",
-    "core/fpdfapi/parser/cpdf_syntax_parser.cpp",
-    "core/fpdfapi/parser/cpdf_syntax_parser.h",
-    "core/fpdfapi/parser/fpdf_parser_decode.cpp",
-    "core/fpdfapi/parser/fpdf_parser_decode.h",
-    "core/fpdfapi/parser/fpdf_parser_utility.cpp",
-    "core/fpdfapi/parser/fpdf_parser_utility.h",
-    "core/fpdfapi/render/cpdf_charposlist.cpp",
-    "core/fpdfapi/render/cpdf_charposlist.h",
-    "core/fpdfapi/render/cpdf_devicebuffer.cpp",
-    "core/fpdfapi/render/cpdf_devicebuffer.h",
-    "core/fpdfapi/render/cpdf_dibbase.cpp",
-    "core/fpdfapi/render/cpdf_dibbase.h",
-    "core/fpdfapi/render/cpdf_dibtransferfunc.cpp",
-    "core/fpdfapi/render/cpdf_dibtransferfunc.h",
-    "core/fpdfapi/render/cpdf_docrenderdata.cpp",
-    "core/fpdfapi/render/cpdf_docrenderdata.h",
-    "core/fpdfapi/render/cpdf_imagecacheentry.cpp",
-    "core/fpdfapi/render/cpdf_imagecacheentry.h",
-    "core/fpdfapi/render/cpdf_imageloader.cpp",
-    "core/fpdfapi/render/cpdf_imageloader.h",
-    "core/fpdfapi/render/cpdf_imagerenderer.cpp",
-    "core/fpdfapi/render/cpdf_imagerenderer.h",
-    "core/fpdfapi/render/cpdf_pagerendercache.cpp",
-    "core/fpdfapi/render/cpdf_pagerendercache.h",
-    "core/fpdfapi/render/cpdf_progressiverenderer.cpp",
-    "core/fpdfapi/render/cpdf_progressiverenderer.h",
-    "core/fpdfapi/render/cpdf_rendercontext.cpp",
-    "core/fpdfapi/render/cpdf_rendercontext.h",
-    "core/fpdfapi/render/cpdf_renderoptions.cpp",
-    "core/fpdfapi/render/cpdf_renderoptions.h",
-    "core/fpdfapi/render/cpdf_renderstatus.cpp",
-    "core/fpdfapi/render/cpdf_renderstatus.h",
-    "core/fpdfapi/render/cpdf_scaledrenderbuffer.cpp",
-    "core/fpdfapi/render/cpdf_scaledrenderbuffer.h",
-    "core/fpdfapi/render/cpdf_textrenderer.cpp",
-    "core/fpdfapi/render/cpdf_textrenderer.h",
-    "core/fpdfapi/render/cpdf_transferfunc.cpp",
-    "core/fpdfapi/render/cpdf_transferfunc.h",
-    "core/fpdfapi/render/cpdf_transparency.cpp",
-    "core/fpdfapi/render/cpdf_transparency.h",
-    "core/fpdfapi/render/cpdf_type3cache.cpp",
-    "core/fpdfapi/render/cpdf_type3cache.h",
-    "core/fpdfapi/render/cpdf_type3glyphs.cpp",
-    "core/fpdfapi/render/cpdf_type3glyphs.h",
-  ]
-  configs += [ ":pdfium_core_config" ]
-  deps = [
-    ":fxcrt",
-    "third_party:lcms2",
-  ]
-}
-
-jumbo_source_set("fpdftext") {
-  sources = [
-    "core/fpdftext/cpdf_linkextract.cpp",
-    "core/fpdftext/cpdf_linkextract.h",
-    "core/fpdftext/cpdf_textpage.cpp",
-    "core/fpdftext/cpdf_textpage.h",
-    "core/fpdftext/cpdf_textpagefind.cpp",
-    "core/fpdftext/cpdf_textpagefind.h",
-    "core/fpdftext/unicodenormalizationdata.cpp",
-    "core/fpdftext/unicodenormalizationdata.h",
-  ]
-  configs += [ ":pdfium_core_config" ]
-  deps = [
-    ":fxcrt",
-  ]
-}
-
-jumbo_source_set("fxcodec") {
-  sources = [
-    "core/fxcodec/JBig2_DocumentContext.h",
-    "core/fxcodec/codec/ccodec_basicmodule.h",
-    "core/fxcodec/codec/ccodec_faxmodule.cpp",
-    "core/fxcodec/codec/ccodec_faxmodule.h",
-    "core/fxcodec/codec/ccodec_flatemodule.cpp",
-    "core/fxcodec/codec/ccodec_flatemodule.h",
-    "core/fxcodec/codec/ccodec_iccmodule.cpp",
-    "core/fxcodec/codec/ccodec_iccmodule.h",
-    "core/fxcodec/codec/ccodec_jbig2module.cpp",
-    "core/fxcodec/codec/ccodec_jbig2module.h",
-    "core/fxcodec/codec/ccodec_jpegmodule.cpp",
-    "core/fxcodec/codec/ccodec_jpegmodule.h",
-    "core/fxcodec/codec/ccodec_jpxmodule.cpp",
-    "core/fxcodec/codec/ccodec_jpxmodule.h",
-    "core/fxcodec/codec/ccodec_scanlinedecoder.cpp",
-    "core/fxcodec/codec/ccodec_scanlinedecoder.h",
-    "core/fxcodec/codec/cfx_codec_memory.cpp",
-    "core/fxcodec/codec/cfx_codec_memory.h",
-    "core/fxcodec/codec/cjpx_decoder.h",
-    "core/fxcodec/codec/codec_int.h",
-    "core/fxcodec/codec/codec_module_iface.h",
-    "core/fxcodec/codec/fx_codec.cpp",
-    "core/fxcodec/fx_codec.h",
-    "core/fxcodec/fx_codec_def.h",
-    "core/fxcodec/jbig2/JBig2_ArithDecoder.cpp",
-    "core/fxcodec/jbig2/JBig2_ArithDecoder.h",
-    "core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp",
-    "core/fxcodec/jbig2/JBig2_ArithIntDecoder.h",
-    "core/fxcodec/jbig2/JBig2_BitStream.cpp",
-    "core/fxcodec/jbig2/JBig2_BitStream.h",
-    "core/fxcodec/jbig2/JBig2_Context.cpp",
-    "core/fxcodec/jbig2/JBig2_Context.h",
-    "core/fxcodec/jbig2/JBig2_Define.h",
-    "core/fxcodec/jbig2/JBig2_GrdProc.cpp",
-    "core/fxcodec/jbig2/JBig2_GrdProc.h",
-    "core/fxcodec/jbig2/JBig2_GrrdProc.cpp",
-    "core/fxcodec/jbig2/JBig2_GrrdProc.h",
-    "core/fxcodec/jbig2/JBig2_HtrdProc.cpp",
-    "core/fxcodec/jbig2/JBig2_HtrdProc.h",
-    "core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp",
-    "core/fxcodec/jbig2/JBig2_HuffmanDecoder.h",
-    "core/fxcodec/jbig2/JBig2_HuffmanTable.cpp",
-    "core/fxcodec/jbig2/JBig2_HuffmanTable.h",
-    "core/fxcodec/jbig2/JBig2_Image.cpp",
-    "core/fxcodec/jbig2/JBig2_Image.h",
-    "core/fxcodec/jbig2/JBig2_Page.h",
-    "core/fxcodec/jbig2/JBig2_PatternDict.cpp",
-    "core/fxcodec/jbig2/JBig2_PatternDict.h",
-    "core/fxcodec/jbig2/JBig2_PddProc.cpp",
-    "core/fxcodec/jbig2/JBig2_PddProc.h",
-    "core/fxcodec/jbig2/JBig2_SddProc.cpp",
-    "core/fxcodec/jbig2/JBig2_SddProc.h",
-    "core/fxcodec/jbig2/JBig2_Segment.cpp",
-    "core/fxcodec/jbig2/JBig2_Segment.h",
-    "core/fxcodec/jbig2/JBig2_SymbolDict.cpp",
-    "core/fxcodec/jbig2/JBig2_SymbolDict.h",
-    "core/fxcodec/jbig2/JBig2_TrdProc.cpp",
-    "core/fxcodec/jbig2/JBig2_TrdProc.h",
-  ]
-  configs += [ ":pdfium_core_config" ]
-  include_dirs = []
-  deps = [
-    ":fxcrt",
-    "third_party:fx_libopenjpeg",
-    "third_party:lcms2",
-    "third_party:zlib",
-    "//third_party:jpeg",
-  ]
-
-  if (pdf_enable_xfa) {
-    sources += [
-      "core/fxcodec/codec/ccodec_progressivedecoder.cpp",
-      "core/fxcodec/codec/ccodec_progressivedecoder.h",
-    ]
-    if (pdf_enable_xfa_bmp) {
-      sources += [
-        "core/fxcodec/bmp/cfx_bmpcontext.cpp",
-        "core/fxcodec/bmp/cfx_bmpcontext.h",
-        "core/fxcodec/bmp/cfx_bmpdecompressor.cpp",
-        "core/fxcodec/bmp/cfx_bmpdecompressor.h",
-        "core/fxcodec/bmp/fx_bmp.cpp",
-        "core/fxcodec/bmp/fx_bmp.h",
-        "core/fxcodec/codec/ccodec_bmpmodule.cpp",
-        "core/fxcodec/codec/ccodec_bmpmodule.h",
-      ]
-    }
-    if (pdf_enable_xfa_gif) {
-      sources += [
-        "core/fxcodec/codec/ccodec_gifmodule.cpp",
-        "core/fxcodec/codec/ccodec_gifmodule.h",
-        "core/fxcodec/gif/cfx_gif.cpp",
-        "core/fxcodec/gif/cfx_gif.h",
-        "core/fxcodec/gif/cfx_gifcontext.cpp",
-        "core/fxcodec/gif/cfx_gifcontext.h",
-        "core/fxcodec/gif/cfx_lzwdecompressor.cpp",
-        "core/fxcodec/gif/cfx_lzwdecompressor.h",
-      ]
-    }
-    if (pdf_enable_xfa_png) {
-      sources += [
-        "core/fxcodec/codec/ccodec_pngmodule.cpp",
-        "core/fxcodec/codec/ccodec_pngmodule.h",
-      ]
-      deps += [ "third_party:png" ]
-    }
-    if (pdf_enable_xfa_tiff) {
-      sources += [
-        "core/fxcodec/codec/ccodec_tiffmodule.cpp",
-        "core/fxcodec/codec/ccodec_tiffmodule.h",
-      ]
-      deps += [ "third_party:fx_tiff" ]
-    }
-  }
-}
-
-config("fxge_warnings") {
-  if (is_clang) {
-    cflags = [
-      # http://code.google.com/p/pdfium/issues/detail?id=188
-      "-Wno-switch",
-    ]
-  }
-}
-
 jumbo_source_set("fxcrt") {
   sources = [
     "core/fxcrt/autorestorer.h",
@@ -813,6 +270,7 @@
   ]
   configs += [ ":pdfium_core_config" ]
   visibility += [
+    "core/*",
     "fxbarcode:*",
     "fpdfsdk/*",
     "fxjs:*",
@@ -893,167 +351,6 @@
   }
 }
 
-jumbo_source_set("fxge") {
-  sources = [
-    "core/fxge/android/cfpf_skiadevicemodule.cpp",
-    "core/fxge/android/cfpf_skiadevicemodule.h",
-    "core/fxge/android/cfpf_skiafont.cpp",
-    "core/fxge/android/cfpf_skiafont.h",
-    "core/fxge/android/cfpf_skiafontmgr.cpp",
-    "core/fxge/android/cfpf_skiafontmgr.h",
-    "core/fxge/android/cfpf_skiapathfont.cpp",
-    "core/fxge/android/cfpf_skiapathfont.h",
-    "core/fxge/android/cfx_androidfontinfo.cpp",
-    "core/fxge/android/cfx_androidfontinfo.h",
-    "core/fxge/android/fx_android_imp.cpp",
-    "core/fxge/cfx_cliprgn.cpp",
-    "core/fxge/cfx_cliprgn.h",
-    "core/fxge/cfx_color.cpp",
-    "core/fxge/cfx_color.h",
-    "core/fxge/cfx_defaultrenderdevice.h",
-    "core/fxge/cfx_facecache.cpp",
-    "core/fxge/cfx_facecache.h",
-    "core/fxge/cfx_folderfontinfo.cpp",
-    "core/fxge/cfx_folderfontinfo.h",
-    "core/fxge/cfx_font.cpp",
-    "core/fxge/cfx_fontcache.cpp",
-    "core/fxge/cfx_fontcache.h",
-    "core/fxge/cfx_fontmapper.cpp",
-    "core/fxge/cfx_fontmapper.h",
-    "core/fxge/cfx_fontmgr.cpp",
-    "core/fxge/cfx_fontmgr.h",
-    "core/fxge/cfx_gemodule.cpp",
-    "core/fxge/cfx_gemodule.h",
-    "core/fxge/cfx_graphstate.cpp",
-    "core/fxge/cfx_graphstate.h",
-    "core/fxge/cfx_graphstatedata.cpp",
-    "core/fxge/cfx_graphstatedata.h",
-    "core/fxge/cfx_pathdata.cpp",
-    "core/fxge/cfx_pathdata.h",
-    "core/fxge/cfx_renderdevice.cpp",
-    "core/fxge/cfx_renderdevice.h",
-    "core/fxge/cfx_substfont.cpp",
-    "core/fxge/cfx_substfont.h",
-    "core/fxge/cfx_unicodeencoding.cpp",
-    "core/fxge/cfx_unicodeencoding.h",
-    "core/fxge/cttfontdesc.cpp",
-    "core/fxge/cttfontdesc.h",
-    "core/fxge/dib/cfx_bitmapcomposer.cpp",
-    "core/fxge/dib/cfx_bitmapcomposer.h",
-    "core/fxge/dib/cfx_bitmapstorer.cpp",
-    "core/fxge/dib/cfx_bitmapstorer.h",
-    "core/fxge/dib/cfx_dibbase.cpp",
-    "core/fxge/dib/cfx_dibbase.h",
-    "core/fxge/dib/cfx_dibextractor.cpp",
-    "core/fxge/dib/cfx_dibextractor.h",
-    "core/fxge/dib/cfx_dibitmap.cpp",
-    "core/fxge/dib/cfx_dibitmap.h",
-    "core/fxge/dib/cfx_filtereddib.cpp",
-    "core/fxge/dib/cfx_filtereddib.h",
-    "core/fxge/dib/cfx_imagerenderer.cpp",
-    "core/fxge/dib/cfx_imagerenderer.h",
-    "core/fxge/dib/cfx_imagestretcher.cpp",
-    "core/fxge/dib/cfx_imagestretcher.h",
-    "core/fxge/dib/cfx_imagetransformer.cpp",
-    "core/fxge/dib/cfx_imagetransformer.h",
-    "core/fxge/dib/cfx_scanlinecompositor.cpp",
-    "core/fxge/dib/cfx_scanlinecompositor.h",
-    "core/fxge/dib/cstretchengine.cpp",
-    "core/fxge/dib/cstretchengine.h",
-    "core/fxge/dib/fx_dib_main.cpp",
-    "core/fxge/dib/scanlinecomposer_iface.h",
-    "core/fxge/fontdata/chromefontdata/FoxitDingbats.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitFixed.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSans.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSansBold.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSerif.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp",
-    "core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp",
-    "core/fxge/fontdata/chromefontdata/chromefontdata.h",
-    "core/fxge/freetype/fx_freetype.cpp",
-    "core/fxge/fx_dib.h",
-    "core/fxge/fx_font.h",
-    "core/fxge/fx_freetype.h",
-    "core/fxge/fx_ge_fontmap.cpp",
-    "core/fxge/fx_ge_linux.cpp",
-    "core/fxge/fx_ge_text.cpp",
-    "core/fxge/renderdevicedriver_iface.cpp",
-    "core/fxge/renderdevicedriver_iface.h",
-    "core/fxge/systemfontinfo_iface.h",
-    "core/fxge/win32/cfx_windowsdib.h",
-  ]
-
-  configs += [
-    ":fxge_warnings",
-    ":pdfium_core_config",
-  ]
-
-  deps = [
-    ":fxcrt",
-  ]
-
-  if (is_component_build || use_system_freetype) {
-    # ft_adobe_glyph_list is not exported from the Freetype shared library so we
-    # need it defined in component builds and builds using system freetype.
-    defines = [ "DEFINE_PS_TABLES_DATA" ]
-  }
-
-  if (pdf_enable_xfa) {
-    sources += [
-      "core/fxge/cfx_unicodeencodingex.cpp",
-      "core/fxge/cfx_unicodeencodingex.h",
-    ]
-  }
-
-  if (pdf_use_skia || pdf_use_skia_paths) {
-    sources += [ "core/fxge/skia/fx_skia_device.cpp" ]
-    deps += [ "//skia" ]
-  } else {
-    sources += [
-      "core/fxge/agg/fx_agg_driver.cpp",
-      "core/fxge/agg/fx_agg_driver.h",
-    ]
-    deps += [ "third_party:fx_agg" ]
-  }
-
-  if (is_mac) {
-    sources += [ "core/fxge/apple/fx_apple_platform.cpp" ]
-  }
-
-  if (is_win) {
-    sources += [
-      "core/fxge/cfx_windowsrenderdevice.h",
-      "core/fxge/win32/cfx_psrenderer.cpp",
-      "core/fxge/win32/cfx_psrenderer.h",
-      "core/fxge/win32/cpsoutput.cpp",
-      "core/fxge/win32/cpsoutput.h",
-      "core/fxge/win32/fx_win32_device.cpp",
-      "core/fxge/win32/fx_win32_dib.cpp",
-      "core/fxge/win32/fx_win32_gdipext.cpp",
-      "core/fxge/win32/fx_win32_print.cpp",
-      "core/fxge/win32/win32_int.h",
-    ]
-    configs -= [ "//build/config/win:lean_and_mean" ]
-  }
-
-  if (is_mac) {
-    sources += [
-      "core/fxge/apple/apple_int.h",
-      "core/fxge/apple/fx_mac_imp.cpp",
-      "core/fxge/apple/fx_quartz_device.cpp",
-    ]
-  }
-}
-
 test("pdfium_unittests") {
   testonly = true
   sources = [
diff --git a/core/fdrm/BUILD.gn b/core/fdrm/BUILD.gn
new file mode 100644
index 0000000..d030f01
--- /dev/null
+++ b/core/fdrm/BUILD.gn
@@ -0,0 +1,20 @@
+# 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")
+
+jumbo_source_set("fdrm") {
+  sources = [
+    "fx_crypt.cpp",
+    "fx_crypt.h",
+    "fx_crypt_aes.cpp",
+    "fx_crypt_sha.cpp",
+  ]
+  configs += [ "../../:pdfium_core_config" ]
+  deps = [
+    "../../:fxcrt",
+  ]
+  visibility = [ "../../*" ]
+}
diff --git a/core/fpdfapi/BUILD.gn b/core/fpdfapi/BUILD.gn
new file mode 100644
index 0000000..489df0b
--- /dev/null
+++ b/core/fpdfapi/BUILD.gn
@@ -0,0 +1,310 @@
+# 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")
+
+jumbo_source_set("fpdfapi") {
+  sources = [
+    "cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp",
+    "cmaps/CNS1/B5pc-H_0.cpp",
+    "cmaps/CNS1/B5pc-V_0.cpp",
+    "cmaps/CNS1/CNS-EUC-H_0.cpp",
+    "cmaps/CNS1/CNS-EUC-V_0.cpp",
+    "cmaps/CNS1/ETen-B5-H_0.cpp",
+    "cmaps/CNS1/ETen-B5-V_0.cpp",
+    "cmaps/CNS1/ETenms-B5-H_0.cpp",
+    "cmaps/CNS1/ETenms-B5-V_0.cpp",
+    "cmaps/CNS1/HKscs-B5-H_5.cpp",
+    "cmaps/CNS1/HKscs-B5-V_5.cpp",
+    "cmaps/CNS1/UniCNS-UCS2-H_3.cpp",
+    "cmaps/CNS1/UniCNS-UCS2-V_3.cpp",
+    "cmaps/CNS1/UniCNS-UTF16-H_0.cpp",
+    "cmaps/CNS1/cmaps_cns1.cpp",
+    "cmaps/GB1/Adobe-GB1-UCS2_5.cpp",
+    "cmaps/GB1/GB-EUC-H_0.cpp",
+    "cmaps/GB1/GB-EUC-V_0.cpp",
+    "cmaps/GB1/GBK-EUC-H_2.cpp",
+    "cmaps/GB1/GBK-EUC-V_2.cpp",
+    "cmaps/GB1/GBK2K-H_5.cpp",
+    "cmaps/GB1/GBK2K-V_5.cpp",
+    "cmaps/GB1/GBKp-EUC-H_2.cpp",
+    "cmaps/GB1/GBKp-EUC-V_2.cpp",
+    "cmaps/GB1/GBpc-EUC-H_0.cpp",
+    "cmaps/GB1/GBpc-EUC-V_0.cpp",
+    "cmaps/GB1/UniGB-UCS2-H_4.cpp",
+    "cmaps/GB1/UniGB-UCS2-V_4.cpp",
+    "cmaps/GB1/cmaps_gb1.cpp",
+    "cmaps/Japan1/83pv-RKSJ-H_1.cpp",
+    "cmaps/Japan1/90ms-RKSJ-H_2.cpp",
+    "cmaps/Japan1/90ms-RKSJ-V_2.cpp",
+    "cmaps/Japan1/90msp-RKSJ-H_2.cpp",
+    "cmaps/Japan1/90msp-RKSJ-V_2.cpp",
+    "cmaps/Japan1/90pv-RKSJ-H_1.cpp",
+    "cmaps/Japan1/Add-RKSJ-H_1.cpp",
+    "cmaps/Japan1/Add-RKSJ-V_1.cpp",
+    "cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp",
+    "cmaps/Japan1/EUC-H_1.cpp",
+    "cmaps/Japan1/EUC-V_1.cpp",
+    "cmaps/Japan1/Ext-RKSJ-H_2.cpp",
+    "cmaps/Japan1/Ext-RKSJ-V_2.cpp",
+    "cmaps/Japan1/H_1.cpp",
+    "cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp",
+    "cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp",
+    "cmaps/Japan1/UniJIS-UCS2-H_4.cpp",
+    "cmaps/Japan1/UniJIS-UCS2-V_4.cpp",
+    "cmaps/Japan1/V_1.cpp",
+    "cmaps/Japan1/cmaps_japan1.cpp",
+    "cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp",
+    "cmaps/Korea1/KSC-EUC-H_0.cpp",
+    "cmaps/Korea1/KSC-EUC-V_0.cpp",
+    "cmaps/Korea1/KSCms-UHC-HW-H_1.cpp",
+    "cmaps/Korea1/KSCms-UHC-HW-V_1.cpp",
+    "cmaps/Korea1/KSCms-UHC-H_1.cpp",
+    "cmaps/Korea1/KSCms-UHC-V_1.cpp",
+    "cmaps/Korea1/KSCpc-EUC-H_0.cpp",
+    "cmaps/Korea1/UniKS-UCS2-H_1.cpp",
+    "cmaps/Korea1/UniKS-UCS2-V_1.cpp",
+    "cmaps/Korea1/UniKS-UTF16-H_0.cpp",
+    "cmaps/Korea1/cmaps_korea1.cpp",
+    "cmaps/cmap_int.h",
+    "cmaps/fpdf_cmaps.cpp",
+    "cpdf_modulemgr.cpp",
+    "cpdf_modulemgr.h",
+    "cpdf_pagerendercontext.cpp",
+    "cpdf_pagerendercontext.h",
+    "edit/cpdf_creator.cpp",
+    "edit/cpdf_creator.h",
+    "edit/cpdf_encryptor.cpp",
+    "edit/cpdf_encryptor.h",
+    "edit/cpdf_flateencoder.cpp",
+    "edit/cpdf_flateencoder.h",
+    "edit/cpdf_pagecontentgenerator.cpp",
+    "edit/cpdf_pagecontentgenerator.h",
+    "edit/cpdf_pagecontentmanager.cpp",
+    "edit/cpdf_pagecontentmanager.h",
+    "edit/cpdf_stringarchivestream.cpp",
+    "edit/cpdf_stringarchivestream.h",
+    "font/cfx_cttgsubtable.cpp",
+    "font/cfx_cttgsubtable.h",
+    "font/cfx_stockfontarray.cpp",
+    "font/cfx_stockfontarray.h",
+    "font/cpdf_cid2unicodemap.cpp",
+    "font/cpdf_cid2unicodemap.h",
+    "font/cpdf_cidfont.cpp",
+    "font/cpdf_cidfont.h",
+    "font/cpdf_cmap.cpp",
+    "font/cpdf_cmap.h",
+    "font/cpdf_cmapmanager.cpp",
+    "font/cpdf_cmapmanager.h",
+    "font/cpdf_cmapparser.cpp",
+    "font/cpdf_cmapparser.h",
+    "font/cpdf_font.cpp",
+    "font/cpdf_font.h",
+    "font/cpdf_fontencoding.cpp",
+    "font/cpdf_fontencoding.h",
+    "font/cpdf_fontglobals.cpp",
+    "font/cpdf_fontglobals.h",
+    "font/cpdf_simplefont.cpp",
+    "font/cpdf_simplefont.h",
+    "font/cpdf_tounicodemap.cpp",
+    "font/cpdf_tounicodemap.h",
+    "font/cpdf_truetypefont.cpp",
+    "font/cpdf_truetypefont.h",
+    "font/cpdf_type1font.cpp",
+    "font/cpdf_type1font.h",
+    "font/cpdf_type3char.cpp",
+    "font/cpdf_type3char.h",
+    "font/cpdf_type3font.cpp",
+    "font/cpdf_type3font.h",
+    "page/cpdf_allstates.cpp",
+    "page/cpdf_allstates.h",
+    "page/cpdf_clippath.cpp",
+    "page/cpdf_clippath.h",
+    "page/cpdf_color.cpp",
+    "page/cpdf_color.h",
+    "page/cpdf_colorspace.cpp",
+    "page/cpdf_colorspace.h",
+    "page/cpdf_colorstate.cpp",
+    "page/cpdf_colorstate.h",
+    "page/cpdf_contentmarkitem.cpp",
+    "page/cpdf_contentmarkitem.h",
+    "page/cpdf_contentmarks.cpp",
+    "page/cpdf_contentmarks.h",
+    "page/cpdf_contentparser.cpp",
+    "page/cpdf_contentparser.h",
+    "page/cpdf_countedobject.h",
+    "page/cpdf_devicecs.cpp",
+    "page/cpdf_devicecs.h",
+    "page/cpdf_docpagedata.cpp",
+    "page/cpdf_docpagedata.h",
+    "page/cpdf_expintfunc.cpp",
+    "page/cpdf_expintfunc.h",
+    "page/cpdf_form.cpp",
+    "page/cpdf_form.h",
+    "page/cpdf_formobject.cpp",
+    "page/cpdf_formobject.h",
+    "page/cpdf_function.cpp",
+    "page/cpdf_function.h",
+    "page/cpdf_generalstate.cpp",
+    "page/cpdf_generalstate.h",
+    "page/cpdf_graphicstates.cpp",
+    "page/cpdf_graphicstates.h",
+    "page/cpdf_iccprofile.cpp",
+    "page/cpdf_iccprofile.h",
+    "page/cpdf_image.cpp",
+    "page/cpdf_image.h",
+    "page/cpdf_imageobject.cpp",
+    "page/cpdf_imageobject.h",
+    "page/cpdf_meshstream.cpp",
+    "page/cpdf_meshstream.h",
+    "page/cpdf_page.cpp",
+    "page/cpdf_page.h",
+    "page/cpdf_pagemodule.cpp",
+    "page/cpdf_pagemodule.h",
+    "page/cpdf_pageobject.cpp",
+    "page/cpdf_pageobject.h",
+    "page/cpdf_pageobjectholder.cpp",
+    "page/cpdf_pageobjectholder.h",
+    "page/cpdf_pageobjectlist.cpp",
+    "page/cpdf_pageobjectlist.h",
+    "page/cpdf_path.cpp",
+    "page/cpdf_path.h",
+    "page/cpdf_pathobject.cpp",
+    "page/cpdf_pathobject.h",
+    "page/cpdf_pattern.cpp",
+    "page/cpdf_pattern.h",
+    "page/cpdf_patterncs.cpp",
+    "page/cpdf_patterncs.h",
+    "page/cpdf_psengine.cpp",
+    "page/cpdf_psengine.h",
+    "page/cpdf_psfunc.cpp",
+    "page/cpdf_psfunc.h",
+    "page/cpdf_sampledfunc.cpp",
+    "page/cpdf_sampledfunc.h",
+    "page/cpdf_shadingobject.cpp",
+    "page/cpdf_shadingobject.h",
+    "page/cpdf_shadingpattern.cpp",
+    "page/cpdf_shadingpattern.h",
+    "page/cpdf_stitchfunc.cpp",
+    "page/cpdf_stitchfunc.h",
+    "page/cpdf_streamcontentparser.cpp",
+    "page/cpdf_streamcontentparser.h",
+    "page/cpdf_streamparser.cpp",
+    "page/cpdf_streamparser.h",
+    "page/cpdf_textobject.cpp",
+    "page/cpdf_textobject.h",
+    "page/cpdf_textstate.cpp",
+    "page/cpdf_textstate.h",
+    "page/cpdf_tilingpattern.cpp",
+    "page/cpdf_tilingpattern.h",
+    "page/ipdf_page.h",
+    "parser/cfdf_document.cpp",
+    "parser/cfdf_document.h",
+    "parser/cpdf_array.cpp",
+    "parser/cpdf_array.h",
+    "parser/cpdf_boolean.cpp",
+    "parser/cpdf_boolean.h",
+    "parser/cpdf_cross_ref_avail.cpp",
+    "parser/cpdf_cross_ref_avail.h",
+    "parser/cpdf_cross_ref_table.cpp",
+    "parser/cpdf_cross_ref_table.h",
+    "parser/cpdf_crypto_handler.cpp",
+    "parser/cpdf_crypto_handler.h",
+    "parser/cpdf_data_avail.cpp",
+    "parser/cpdf_data_avail.h",
+    "parser/cpdf_dictionary.cpp",
+    "parser/cpdf_dictionary.h",
+    "parser/cpdf_document.cpp",
+    "parser/cpdf_document.h",
+    "parser/cpdf_hint_tables.cpp",
+    "parser/cpdf_hint_tables.h",
+    "parser/cpdf_indirect_object_holder.cpp",
+    "parser/cpdf_indirect_object_holder.h",
+    "parser/cpdf_linearized_header.cpp",
+    "parser/cpdf_linearized_header.h",
+    "parser/cpdf_name.cpp",
+    "parser/cpdf_name.h",
+    "parser/cpdf_null.cpp",
+    "parser/cpdf_null.h",
+    "parser/cpdf_number.cpp",
+    "parser/cpdf_number.h",
+    "parser/cpdf_object.cpp",
+    "parser/cpdf_object.h",
+    "parser/cpdf_object_avail.cpp",
+    "parser/cpdf_object_avail.h",
+    "parser/cpdf_object_stream.cpp",
+    "parser/cpdf_object_stream.h",
+    "parser/cpdf_object_walker.cpp",
+    "parser/cpdf_object_walker.h",
+    "parser/cpdf_page_object_avail.cpp",
+    "parser/cpdf_page_object_avail.h",
+    "parser/cpdf_parser.cpp",
+    "parser/cpdf_parser.h",
+    "parser/cpdf_read_validator.cpp",
+    "parser/cpdf_read_validator.h",
+    "parser/cpdf_reference.cpp",
+    "parser/cpdf_reference.h",
+    "parser/cpdf_security_handler.cpp",
+    "parser/cpdf_security_handler.h",
+    "parser/cpdf_simple_parser.cpp",
+    "parser/cpdf_simple_parser.h",
+    "parser/cpdf_stream.cpp",
+    "parser/cpdf_stream.h",
+    "parser/cpdf_stream_acc.cpp",
+    "parser/cpdf_stream_acc.h",
+    "parser/cpdf_string.cpp",
+    "parser/cpdf_string.h",
+    "parser/cpdf_syntax_parser.cpp",
+    "parser/cpdf_syntax_parser.h",
+    "parser/fpdf_parser_decode.cpp",
+    "parser/fpdf_parser_decode.h",
+    "parser/fpdf_parser_utility.cpp",
+    "parser/fpdf_parser_utility.h",
+    "render/cpdf_charposlist.cpp",
+    "render/cpdf_charposlist.h",
+    "render/cpdf_devicebuffer.cpp",
+    "render/cpdf_devicebuffer.h",
+    "render/cpdf_dibbase.cpp",
+    "render/cpdf_dibbase.h",
+    "render/cpdf_dibtransferfunc.cpp",
+    "render/cpdf_dibtransferfunc.h",
+    "render/cpdf_docrenderdata.cpp",
+    "render/cpdf_docrenderdata.h",
+    "render/cpdf_imagecacheentry.cpp",
+    "render/cpdf_imagecacheentry.h",
+    "render/cpdf_imageloader.cpp",
+    "render/cpdf_imageloader.h",
+    "render/cpdf_imagerenderer.cpp",
+    "render/cpdf_imagerenderer.h",
+    "render/cpdf_pagerendercache.cpp",
+    "render/cpdf_pagerendercache.h",
+    "render/cpdf_progressiverenderer.cpp",
+    "render/cpdf_progressiverenderer.h",
+    "render/cpdf_rendercontext.cpp",
+    "render/cpdf_rendercontext.h",
+    "render/cpdf_renderoptions.cpp",
+    "render/cpdf_renderoptions.h",
+    "render/cpdf_renderstatus.cpp",
+    "render/cpdf_renderstatus.h",
+    "render/cpdf_scaledrenderbuffer.cpp",
+    "render/cpdf_scaledrenderbuffer.h",
+    "render/cpdf_textrenderer.cpp",
+    "render/cpdf_textrenderer.h",
+    "render/cpdf_transferfunc.cpp",
+    "render/cpdf_transferfunc.h",
+    "render/cpdf_transparency.cpp",
+    "render/cpdf_transparency.h",
+    "render/cpdf_type3cache.cpp",
+    "render/cpdf_type3cache.h",
+    "render/cpdf_type3glyphs.cpp",
+    "render/cpdf_type3glyphs.h",
+  ]
+  configs += [ "../../:pdfium_core_config" ]
+  deps = [
+    "../../:fxcrt",
+    "../../third_party:lcms2",
+  ]
+  visibility = [ "../../*" ]
+}
diff --git a/core/fpdfdoc/BUILD.gn b/core/fpdfdoc/BUILD.gn
new file mode 100644
index 0000000..e76486d
--- /dev/null
+++ b/core/fpdfdoc/BUILD.gn
@@ -0,0 +1,90 @@
+# 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")
+
+jumbo_source_set("fpdfdoc") {
+  sources = [
+    "cline.cpp",
+    "cline.h",
+    "cpdf_aaction.cpp",
+    "cpdf_aaction.h",
+    "cpdf_action.cpp",
+    "cpdf_action.h",
+    "cpdf_actionfields.cpp",
+    "cpdf_actionfields.h",
+    "cpdf_annot.cpp",
+    "cpdf_annot.h",
+    "cpdf_annotlist.cpp",
+    "cpdf_annotlist.h",
+    "cpdf_apsettings.cpp",
+    "cpdf_apsettings.h",
+    "cpdf_bookmark.cpp",
+    "cpdf_bookmark.h",
+    "cpdf_bookmarktree.cpp",
+    "cpdf_bookmarktree.h",
+    "cpdf_defaultappearance.cpp",
+    "cpdf_defaultappearance.h",
+    "cpdf_dest.cpp",
+    "cpdf_dest.h",
+    "cpdf_docjsactions.cpp",
+    "cpdf_docjsactions.h",
+    "cpdf_filespec.cpp",
+    "cpdf_filespec.h",
+    "cpdf_formcontrol.cpp",
+    "cpdf_formcontrol.h",
+    "cpdf_formfield.cpp",
+    "cpdf_formfield.h",
+    "cpdf_iconfit.cpp",
+    "cpdf_iconfit.h",
+    "cpdf_interactiveform.cpp",
+    "cpdf_interactiveform.h",
+    "cpdf_link.cpp",
+    "cpdf_link.h",
+    "cpdf_linklist.cpp",
+    "cpdf_linklist.h",
+    "cpdf_metadata.cpp",
+    "cpdf_metadata.h",
+    "cpdf_nametree.cpp",
+    "cpdf_nametree.h",
+    "cpdf_numbertree.cpp",
+    "cpdf_numbertree.h",
+    "cpdf_occontext.cpp",
+    "cpdf_occontext.h",
+    "cpdf_pagelabel.cpp",
+    "cpdf_pagelabel.h",
+    "cpdf_structelement.cpp",
+    "cpdf_structelement.h",
+    "cpdf_structtree.cpp",
+    "cpdf_structtree.h",
+    "cpdf_variabletext.cpp",
+    "cpdf_variabletext.h",
+    "cpdf_viewerpreferences.cpp",
+    "cpdf_viewerpreferences.h",
+    "cpvt_floatrect.h",
+    "cpvt_fontmap.cpp",
+    "cpvt_fontmap.h",
+    "cpvt_generateap.cpp",
+    "cpvt_generateap.h",
+    "cpvt_line.h",
+    "cpvt_lineinfo.h",
+    "cpvt_word.h",
+    "cpvt_wordinfo.cpp",
+    "cpvt_wordinfo.h",
+    "cpvt_wordplace.h",
+    "cpvt_wordrange.h",
+    "csection.cpp",
+    "csection.h",
+    "ctypeset.cpp",
+    "ctypeset.h",
+    "ipdf_formnotify.h",
+    "ipvt_fontmap.h",
+  ]
+  configs += [ "../../:pdfium_core_config" ]
+  deps = [
+    "../../:fxcrt",
+  ]
+  visibility = [ "../../*" ]
+}
diff --git a/core/fpdftext/BUILD.gn b/core/fpdftext/BUILD.gn
new file mode 100644
index 0000000..9f3104e
--- /dev/null
+++ b/core/fpdftext/BUILD.gn
@@ -0,0 +1,24 @@
+# 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")
+
+jumbo_source_set("fpdftext") {
+  sources = [
+    "cpdf_linkextract.cpp",
+    "cpdf_linkextract.h",
+    "cpdf_textpage.cpp",
+    "cpdf_textpage.h",
+    "cpdf_textpagefind.cpp",
+    "cpdf_textpagefind.h",
+    "unicodenormalizationdata.cpp",
+    "unicodenormalizationdata.h",
+  ]
+  configs += [ "../../:pdfium_core_config" ]
+  deps = [
+    "../../:fxcrt",
+  ]
+  visibility = [ "../../*" ]
+}
diff --git a/core/fxcodec/BUILD.gn b/core/fxcodec/BUILD.gn
new file mode 100644
index 0000000..ec4843f
--- /dev/null
+++ b/core/fxcodec/BUILD.gn
@@ -0,0 +1,124 @@
+# 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")
+
+jumbo_source_set("fxcodec") {
+  sources = [
+    "JBig2_DocumentContext.h",
+    "codec/ccodec_basicmodule.h",
+    "codec/ccodec_faxmodule.cpp",
+    "codec/ccodec_faxmodule.h",
+    "codec/ccodec_flatemodule.cpp",
+    "codec/ccodec_flatemodule.h",
+    "codec/ccodec_iccmodule.cpp",
+    "codec/ccodec_iccmodule.h",
+    "codec/ccodec_jbig2module.cpp",
+    "codec/ccodec_jbig2module.h",
+    "codec/ccodec_jpegmodule.cpp",
+    "codec/ccodec_jpegmodule.h",
+    "codec/ccodec_jpxmodule.cpp",
+    "codec/ccodec_jpxmodule.h",
+    "codec/ccodec_scanlinedecoder.cpp",
+    "codec/ccodec_scanlinedecoder.h",
+    "codec/cfx_codec_memory.cpp",
+    "codec/cfx_codec_memory.h",
+    "codec/cjpx_decoder.h",
+    "codec/codec_int.h",
+    "codec/codec_module_iface.h",
+    "codec/fx_codec.cpp",
+    "fx_codec.h",
+    "fx_codec_def.h",
+    "jbig2/JBig2_ArithDecoder.cpp",
+    "jbig2/JBig2_ArithDecoder.h",
+    "jbig2/JBig2_ArithIntDecoder.cpp",
+    "jbig2/JBig2_ArithIntDecoder.h",
+    "jbig2/JBig2_BitStream.cpp",
+    "jbig2/JBig2_BitStream.h",
+    "jbig2/JBig2_Context.cpp",
+    "jbig2/JBig2_Context.h",
+    "jbig2/JBig2_Define.h",
+    "jbig2/JBig2_GrdProc.cpp",
+    "jbig2/JBig2_GrdProc.h",
+    "jbig2/JBig2_GrrdProc.cpp",
+    "jbig2/JBig2_GrrdProc.h",
+    "jbig2/JBig2_HtrdProc.cpp",
+    "jbig2/JBig2_HtrdProc.h",
+    "jbig2/JBig2_HuffmanDecoder.cpp",
+    "jbig2/JBig2_HuffmanDecoder.h",
+    "jbig2/JBig2_HuffmanTable.cpp",
+    "jbig2/JBig2_HuffmanTable.h",
+    "jbig2/JBig2_Image.cpp",
+    "jbig2/JBig2_Image.h",
+    "jbig2/JBig2_Page.h",
+    "jbig2/JBig2_PatternDict.cpp",
+    "jbig2/JBig2_PatternDict.h",
+    "jbig2/JBig2_PddProc.cpp",
+    "jbig2/JBig2_PddProc.h",
+    "jbig2/JBig2_SddProc.cpp",
+    "jbig2/JBig2_SddProc.h",
+    "jbig2/JBig2_Segment.cpp",
+    "jbig2/JBig2_Segment.h",
+    "jbig2/JBig2_SymbolDict.cpp",
+    "jbig2/JBig2_SymbolDict.h",
+    "jbig2/JBig2_TrdProc.cpp",
+    "jbig2/JBig2_TrdProc.h",
+  ]
+  configs += [ "../../:pdfium_core_config" ]
+  include_dirs = []
+  deps = [
+    "../../:fxcrt",
+    "../../third_party:fx_libopenjpeg",
+    "../../third_party:lcms2",
+    "../../third_party:zlib",
+    "//third_party:jpeg",
+  ]
+
+  if (pdf_enable_xfa) {
+    sources += [
+      "codec/ccodec_progressivedecoder.cpp",
+      "codec/ccodec_progressivedecoder.h",
+    ]
+    if (pdf_enable_xfa_bmp) {
+      sources += [
+        "bmp/cfx_bmpcontext.cpp",
+        "bmp/cfx_bmpcontext.h",
+        "bmp/cfx_bmpdecompressor.cpp",
+        "bmp/cfx_bmpdecompressor.h",
+        "bmp/fx_bmp.cpp",
+        "bmp/fx_bmp.h",
+        "codec/ccodec_bmpmodule.cpp",
+        "codec/ccodec_bmpmodule.h",
+      ]
+    }
+    if (pdf_enable_xfa_gif) {
+      sources += [
+        "codec/ccodec_gifmodule.cpp",
+        "codec/ccodec_gifmodule.h",
+        "gif/cfx_gif.cpp",
+        "gif/cfx_gif.h",
+        "gif/cfx_gifcontext.cpp",
+        "gif/cfx_gifcontext.h",
+        "gif/cfx_lzwdecompressor.cpp",
+        "gif/cfx_lzwdecompressor.h",
+      ]
+    }
+    if (pdf_enable_xfa_png) {
+      sources += [
+        "codec/ccodec_pngmodule.cpp",
+        "codec/ccodec_pngmodule.h",
+      ]
+      deps += [ "../../third_party:png" ]
+    }
+    if (pdf_enable_xfa_tiff) {
+      sources += [
+        "codec/ccodec_tiffmodule.cpp",
+        "codec/ccodec_tiffmodule.h",
+      ]
+      deps += [ "../../third_party:fx_tiff" ]
+    }
+  }
+  visibility = [ "../../*" ]
+}
diff --git a/core/fxge/BUILD.gn b/core/fxge/BUILD.gn
new file mode 100644
index 0000000..9d50e0a
--- /dev/null
+++ b/core/fxge/BUILD.gn
@@ -0,0 +1,177 @@
+# 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/freetype/freetype.gni")
+import("//build/config/jumbo.gni")
+import("../../pdfium.gni")
+
+config("fxge_warnings") {
+  visibility = [ ":*" ]
+  if (is_clang) {
+    cflags = [
+      # http://code.google.com/p/pdfium/issues/detail?id=188
+      "-Wno-switch",
+    ]
+  }
+}
+
+jumbo_source_set("fxge") {
+  sources = [
+    "android/cfpf_skiadevicemodule.cpp",
+    "android/cfpf_skiadevicemodule.h",
+    "android/cfpf_skiafont.cpp",
+    "android/cfpf_skiafont.h",
+    "android/cfpf_skiafontmgr.cpp",
+    "android/cfpf_skiafontmgr.h",
+    "android/cfpf_skiapathfont.cpp",
+    "android/cfpf_skiapathfont.h",
+    "android/cfx_androidfontinfo.cpp",
+    "android/cfx_androidfontinfo.h",
+    "android/fx_android_imp.cpp",
+    "cfx_cliprgn.cpp",
+    "cfx_cliprgn.h",
+    "cfx_color.cpp",
+    "cfx_color.h",
+    "cfx_defaultrenderdevice.h",
+    "cfx_facecache.cpp",
+    "cfx_facecache.h",
+    "cfx_folderfontinfo.cpp",
+    "cfx_folderfontinfo.h",
+    "cfx_font.cpp",
+    "cfx_fontcache.cpp",
+    "cfx_fontcache.h",
+    "cfx_fontmapper.cpp",
+    "cfx_fontmapper.h",
+    "cfx_fontmgr.cpp",
+    "cfx_fontmgr.h",
+    "cfx_gemodule.cpp",
+    "cfx_gemodule.h",
+    "cfx_graphstate.cpp",
+    "cfx_graphstate.h",
+    "cfx_graphstatedata.cpp",
+    "cfx_graphstatedata.h",
+    "cfx_pathdata.cpp",
+    "cfx_pathdata.h",
+    "cfx_renderdevice.cpp",
+    "cfx_renderdevice.h",
+    "cfx_substfont.cpp",
+    "cfx_substfont.h",
+    "cfx_unicodeencoding.cpp",
+    "cfx_unicodeencoding.h",
+    "cttfontdesc.cpp",
+    "cttfontdesc.h",
+    "dib/cfx_bitmapcomposer.cpp",
+    "dib/cfx_bitmapcomposer.h",
+    "dib/cfx_bitmapstorer.cpp",
+    "dib/cfx_bitmapstorer.h",
+    "dib/cfx_dibbase.cpp",
+    "dib/cfx_dibbase.h",
+    "dib/cfx_dibextractor.cpp",
+    "dib/cfx_dibextractor.h",
+    "dib/cfx_dibitmap.cpp",
+    "dib/cfx_dibitmap.h",
+    "dib/cfx_filtereddib.cpp",
+    "dib/cfx_filtereddib.h",
+    "dib/cfx_imagerenderer.cpp",
+    "dib/cfx_imagerenderer.h",
+    "dib/cfx_imagestretcher.cpp",
+    "dib/cfx_imagestretcher.h",
+    "dib/cfx_imagetransformer.cpp",
+    "dib/cfx_imagetransformer.h",
+    "dib/cfx_scanlinecompositor.cpp",
+    "dib/cfx_scanlinecompositor.h",
+    "dib/cstretchengine.cpp",
+    "dib/cstretchengine.h",
+    "dib/fx_dib_main.cpp",
+    "dib/scanlinecomposer_iface.h",
+    "fontdata/chromefontdata/FoxitDingbats.cpp",
+    "fontdata/chromefontdata/FoxitFixed.cpp",
+    "fontdata/chromefontdata/FoxitFixedBold.cpp",
+    "fontdata/chromefontdata/FoxitFixedBoldItalic.cpp",
+    "fontdata/chromefontdata/FoxitFixedItalic.cpp",
+    "fontdata/chromefontdata/FoxitSans.cpp",
+    "fontdata/chromefontdata/FoxitSansBold.cpp",
+    "fontdata/chromefontdata/FoxitSansBoldItalic.cpp",
+    "fontdata/chromefontdata/FoxitSansItalic.cpp",
+    "fontdata/chromefontdata/FoxitSansMM.cpp",
+    "fontdata/chromefontdata/FoxitSerif.cpp",
+    "fontdata/chromefontdata/FoxitSerifBold.cpp",
+    "fontdata/chromefontdata/FoxitSerifBoldItalic.cpp",
+    "fontdata/chromefontdata/FoxitSerifItalic.cpp",
+    "fontdata/chromefontdata/FoxitSerifMM.cpp",
+    "fontdata/chromefontdata/FoxitSymbol.cpp",
+    "fontdata/chromefontdata/chromefontdata.h",
+    "freetype/fx_freetype.cpp",
+    "fx_dib.h",
+    "fx_font.h",
+    "fx_freetype.h",
+    "fx_ge_fontmap.cpp",
+    "fx_ge_linux.cpp",
+    "fx_ge_text.cpp",
+    "renderdevicedriver_iface.cpp",
+    "renderdevicedriver_iface.h",
+    "systemfontinfo_iface.h",
+    "win32/cfx_windowsdib.h",
+  ]
+
+  configs += [
+    ":fxge_warnings",
+    "../../:pdfium_core_config",
+  ]
+
+  deps = [
+    "../../:fxcrt",
+  ]
+
+  if (is_component_build || use_system_freetype) {
+    # ft_adobe_glyph_list is not exported from the Freetype shared library so we
+    # need it defined in component builds and builds using system freetype.
+    defines = [ "DEFINE_PS_TABLES_DATA" ]
+  }
+
+  if (pdf_enable_xfa) {
+    sources += [
+      "cfx_unicodeencodingex.cpp",
+      "cfx_unicodeencodingex.h",
+    ]
+  }
+
+  if (pdf_use_skia || pdf_use_skia_paths) {
+    sources += [ "skia/fx_skia_device.cpp" ]
+    deps += [ "//skia" ]
+  } else {
+    sources += [
+      "agg/fx_agg_driver.cpp",
+      "agg/fx_agg_driver.h",
+    ]
+    deps += [ "../../third_party:fx_agg" ]
+  }
+
+  if (is_mac) {
+    sources += [
+      "apple/apple_int.h",
+      "apple/fx_apple_platform.cpp",
+      "apple/fx_mac_imp.cpp",
+      "apple/fx_quartz_device.cpp",
+    ]
+  }
+
+  if (is_win) {
+    sources += [
+      "cfx_windowsrenderdevice.h",
+      "win32/cfx_psrenderer.cpp",
+      "win32/cfx_psrenderer.h",
+      "win32/cpsoutput.cpp",
+      "win32/cpsoutput.h",
+      "win32/fx_win32_device.cpp",
+      "win32/fx_win32_dib.cpp",
+      "win32/fx_win32_gdipext.cpp",
+      "win32/fx_win32_print.cpp",
+      "win32/win32_int.h",
+    ]
+    configs -= [ "//build/config/win:lean_and_mean" ]
+  }
+
+  visibility = [ "../../*" ]
+}
diff --git a/fxbarcode/BUILD.gn b/fxbarcode/BUILD.gn
index 88235be..524ca7b 100644
--- a/fxbarcode/BUILD.gn
+++ b/fxbarcode/BUILD.gn
@@ -136,7 +136,7 @@
   ]
   deps = [
     "../:fxcrt",
-    "../:fxge",
+    "../core/fxge",
     "../third_party:bigint",
   ]
   configs += [ "../:pdfium_core_config" ]