Convert external/pdfium to Android.bp

See build/soong/README.md for more information.

Test: m -j checkbuild
Merged-In: Id230fda51411f772bbb92b1443467212cc2bbdbd
Change-Id: Id230fda51411f772bbb92b1443467212cc2bbdbd
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..1883094
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,31 @@
+cc_defaults {
+    name: "pdfium-defaults",
+    cflags: [
+        "-O3",
+        "-fstrict-aliasing",
+        "-fprefetch-loop-arrays",
+        "-fexceptions",
+
+        "-Wno-non-virtual-dtor",
+        "-Wall",
+    ],
+
+    arch: {
+        arm: {
+            instruction_set: "arm",
+        },
+    },
+
+    header_libs: ["pdfium-headers"],
+}
+
+cc_library_headers {
+    name: "pdfium-headers",
+    export_include_dirs: ["."],
+}
+
+subdirs = [
+    "core",
+    "fpdfsdk",
+    "third_party",
+]
diff --git a/core/Android.bp b/core/Android.bp
new file mode 100644
index 0000000..3ad5256
--- /dev/null
+++ b/core/Android.bp
@@ -0,0 +1,9 @@
+build = [
+    "pdfiumfdrm.bp",
+    "pdfiumfpdfapi.bp",
+    "pdfiumfpdfdoc.bp",
+    "pdfiumfpdftext.bp",
+    "pdfiumfxcodec.bp",
+    "pdfiumfxcrt.bp",
+    "pdfiumfxge.bp",
+]
diff --git a/core/Android.mk b/core/Android.mk
deleted file mode 100644
index 122af68..0000000
--- a/core/Android.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-BASE_PATH := $(call my-dir)
-
-include $(BASE_PATH)/pdfiumfdrm.mk
-include $(BASE_PATH)/pdfiumfpdfapi.mk
-include $(BASE_PATH)/pdfiumfpdfdoc.mk
-include $(BASE_PATH)/pdfiumfpdftext.mk
-include $(BASE_PATH)/pdfiumfxcodec.mk
-include $(BASE_PATH)/pdfiumfxcrt.mk
-include $(BASE_PATH)/pdfiumfxge.mk
diff --git a/core/pdfiumfdrm.bp b/core/pdfiumfdrm.bp
new file mode 100644
index 0000000..601c912
--- /dev/null
+++ b/core/pdfiumfdrm.bp
@@ -0,0 +1,21 @@
+cc_library_static {
+    name: "libpdfiumfdrm",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "src/fdrm/crypto/fx_crypt.cpp",
+        "src/fdrm/crypto/fx_crypt_aes.cpp",
+        "src/fdrm/crypto/fx_crypt_sha.cpp",
+    ],
+}
diff --git a/core/pdfiumfdrm.mk b/core/pdfiumfdrm.mk
deleted file mode 100644
index f279122..0000000
--- a/core/pdfiumfdrm.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfdrm
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/fdrm/crypto/fx_crypt.cpp \
-    src/fdrm/crypto/fx_crypt_aes.cpp \
-    src/fdrm/crypto/fx_crypt_sha.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/core/pdfiumfpdfapi.bp b/core/pdfiumfpdfapi.bp
new file mode 100644
index 0000000..482958d
--- /dev/null
+++ b/core/pdfiumfpdfapi.bp
@@ -0,0 +1,118 @@
+cc_library_static {
+    name: "libpdfiumfpdfapi",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+        "-Wno-missing-field-initializers",
+    ],
+
+    srcs: [
+        "src/fpdfapi/fpdf_basic_module.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp",
+        "src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp",
+        "src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp",
+        "src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp",
+        "src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp",
+        "src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp",
+        "src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp",
+        "src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp",
+        "src/fpdfapi/fpdf_font/fpdf_font.cpp",
+        "src/fpdfapi/fpdf_font/fpdf_font_charset.cpp",
+        "src/fpdfapi/fpdf_font/fpdf_font_cid.cpp",
+        "src/fpdfapi/fpdf_font/ttgsubtable.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_colors.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_doc.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_func.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_image.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_parser.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_path.cpp",
+        "src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp",
+        "src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp",
+        "src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp",
+        "src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp",
+        "src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp",
+        "src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp",
+        "src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp",
+        "src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp",
+        "src/fpdfapi/fpdf_render/fpdf_render.cpp",
+        "src/fpdfapi/fpdf_render/fpdf_render_cache.cpp",
+        "src/fpdfapi/fpdf_render/fpdf_render_image.cpp",
+        "src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp",
+        "src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp",
+        "src/fpdfapi/fpdf_render/fpdf_render_text.cpp",
+    ],
+
+    include_dirs: [
+        "external/freetype/include",
+        "external/freetype/include/freetype",
+    ],
+}
diff --git a/core/pdfiumfpdfapi.mk b/core/pdfiumfpdfapi.mk
deleted file mode 100644
index bfbf008..0000000
--- a/core/pdfiumfpdfapi.mk
+++ /dev/null
@@ -1,120 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfpdfapi
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/fpdfapi/fpdf_basic_module.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp \
-    src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp \
-    src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp \
-    src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp \
-    src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp \
-    src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp \
-    src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp \
-    src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp \
-    src/fpdfapi/fpdf_font/fpdf_font.cpp \
-    src/fpdfapi/fpdf_font/fpdf_font_charset.cpp \
-    src/fpdfapi/fpdf_font/fpdf_font_cid.cpp \
-    src/fpdfapi/fpdf_font/ttgsubtable.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_colors.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_doc.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_func.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_image.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_parser.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_path.cpp \
-    src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp \
-    src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp \
-    src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp \
-    src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp \
-    src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp \
-    src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp \
-    src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp \
-    src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp \
-    src/fpdfapi/fpdf_render/fpdf_render.cpp \
-    src/fpdfapi/fpdf_render/fpdf_render_cache.cpp \
-    src/fpdfapi/fpdf_render/fpdf_render_image.cpp \
-    src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp \
-    src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp \
-    src/fpdfapi/fpdf_render/fpdf_render_text.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/core/pdfiumfpdfdoc.bp b/core/pdfiumfpdfdoc.bp
new file mode 100644
index 0000000..ffceada
--- /dev/null
+++ b/core/pdfiumfpdfdoc.bp
@@ -0,0 +1,34 @@
+cc_library_static {
+    name: "libpdfiumfpdfdoc",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "src/fpdfdoc/doc_action.cpp",
+        "src/fpdfdoc/doc_annot.cpp",
+        "src/fpdfdoc/doc_ap.cpp",
+        "src/fpdfdoc/doc_basic.cpp",
+        "src/fpdfdoc/doc_bookmark.cpp",
+        "src/fpdfdoc/doc_form.cpp",
+        "src/fpdfdoc/doc_formcontrol.cpp",
+        "src/fpdfdoc/doc_formfield.cpp",
+        "src/fpdfdoc/doc_link.cpp",
+        "src/fpdfdoc/doc_metadata.cpp",
+        "src/fpdfdoc/doc_ocg.cpp",
+        "src/fpdfdoc/doc_tagged.cpp",
+        "src/fpdfdoc/doc_utils.cpp",
+        "src/fpdfdoc/doc_viewerPreferences.cpp",
+        "src/fpdfdoc/doc_vt.cpp",
+        "src/fpdfdoc/doc_vtmodule.cpp",
+    ],
+}
diff --git a/core/pdfiumfpdfdoc.mk b/core/pdfiumfpdfdoc.mk
deleted file mode 100644
index 98ffc3a..0000000
--- a/core/pdfiumfpdfdoc.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfpdfdoc
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/fpdfdoc/doc_action.cpp \
-    src/fpdfdoc/doc_annot.cpp \
-    src/fpdfdoc/doc_ap.cpp \
-    src/fpdfdoc/doc_basic.cpp \
-    src/fpdfdoc/doc_bookmark.cpp \
-    src/fpdfdoc/doc_form.cpp \
-    src/fpdfdoc/doc_formcontrol.cpp \
-    src/fpdfdoc/doc_formfield.cpp \
-    src/fpdfdoc/doc_link.cpp \
-    src/fpdfdoc/doc_metadata.cpp \
-    src/fpdfdoc/doc_ocg.cpp \
-    src/fpdfdoc/doc_tagged.cpp \
-    src/fpdfdoc/doc_utils.cpp \
-    src/fpdfdoc/doc_viewerPreferences.cpp \
-    src/fpdfdoc/doc_vt.cpp \
-    src/fpdfdoc/doc_vtmodule.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/core/pdfiumfpdftext.bp b/core/pdfiumfpdftext.bp
new file mode 100644
index 0000000..21afc4f
--- /dev/null
+++ b/core/pdfiumfpdftext.bp
@@ -0,0 +1,23 @@
+cc_library_static {
+    name: "libpdfiumfpdftext",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "src/fpdftext/fpdf_text.cpp",
+        "src/fpdftext/fpdf_text_int.cpp",
+        "src/fpdftext/fpdf_text_search.cpp",
+        "src/fpdftext/unicodenormalization.cpp",
+        "src/fpdftext/unicodenormalizationdata.cpp",
+    ],
+}
diff --git a/core/pdfiumfpdftext.mk b/core/pdfiumfpdftext.mk
deleted file mode 100644
index ce6c5f8..0000000
--- a/core/pdfiumfpdftext.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfpdftext
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/fpdftext/fpdf_text.cpp \
-    src/fpdftext/fpdf_text_int.cpp \
-    src/fpdftext/fpdf_text_search.cpp \
-    src/fpdftext/unicodenormalization.cpp \
-    src/fpdftext/unicodenormalizationdata.cpp \
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/core/pdfiumfxcodec.bp b/core/pdfiumfxcodec.bp
new file mode 100644
index 0000000..7d62c47
--- /dev/null
+++ b/core/pdfiumfxcodec.bp
@@ -0,0 +1,45 @@
+cc_library_static {
+    name: "libpdfiumfxcodec",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-pointer-to-int-cast",
+        "-Wno-unused-parameter",
+    ],
+
+    shared_libs: ["libz"],
+
+    srcs: [
+        "src/fxcodec/codec/fx_codec.cpp",
+        "src/fxcodec/codec/fx_codec_fax.cpp",
+        "src/fxcodec/codec/fx_codec_flate.cpp",
+        "src/fxcodec/codec/fx_codec_icc.cpp",
+        "src/fxcodec/codec/fx_codec_jbig.cpp",
+        "src/fxcodec/codec/fx_codec_jpeg.cpp",
+        "src/fxcodec/codec/fx_codec_jpx_opj.cpp",
+        "src/fxcodec/jbig2/JBig2_ArithDecoder.cpp",
+        "src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp",
+        "src/fxcodec/jbig2/JBig2_BitStream.cpp",
+        "src/fxcodec/jbig2/JBig2_Context.cpp",
+        "src/fxcodec/jbig2/JBig2_GrdProc.cpp",
+        "src/fxcodec/jbig2/JBig2_GrrdProc.cpp",
+        "src/fxcodec/jbig2/JBig2_GsidProc.cpp",
+        "src/fxcodec/jbig2/JBig2_HtrdProc.cpp",
+        "src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp",
+        "src/fxcodec/jbig2/JBig2_HuffmanTable.cpp",
+        "src/fxcodec/jbig2/JBig2_Image.cpp",
+        "src/fxcodec/jbig2/JBig2_PatternDict.cpp",
+        "src/fxcodec/jbig2/JBig2_PddProc.cpp",
+        "src/fxcodec/jbig2/JBig2_SddProc.cpp",
+        "src/fxcodec/jbig2/JBig2_Segment.cpp",
+        "src/fxcodec/jbig2/JBig2_SymbolDict.cpp",
+        "src/fxcodec/jbig2/JBig2_TrdProc.cpp",
+    ],
+}
diff --git a/core/pdfiumfxcodec.mk b/core/pdfiumfxcodec.mk
deleted file mode 100644
index aa0c50f..0000000
--- a/core/pdfiumfxcodec.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfxcodec
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-pointer-to-int-cast -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SHARED_LIBRARIES := libz
-
-LOCAL_SRC_FILES := \
-    src/fxcodec/codec/fx_codec.cpp \
-    src/fxcodec/codec/fx_codec_fax.cpp \
-    src/fxcodec/codec/fx_codec_flate.cpp \
-    src/fxcodec/codec/fx_codec_icc.cpp \
-    src/fxcodec/codec/fx_codec_jbig.cpp \
-    src/fxcodec/codec/fx_codec_jpeg.cpp \
-    src/fxcodec/codec/fx_codec_jpx_opj.cpp \
-    src/fxcodec/jbig2/JBig2_ArithDecoder.cpp \
-    src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp \
-    src/fxcodec/jbig2/JBig2_BitStream.cpp \
-    src/fxcodec/jbig2/JBig2_Context.cpp \
-    src/fxcodec/jbig2/JBig2_GrdProc.cpp \
-    src/fxcodec/jbig2/JBig2_GrrdProc.cpp \
-    src/fxcodec/jbig2/JBig2_GsidProc.cpp \
-    src/fxcodec/jbig2/JBig2_HtrdProc.cpp \
-    src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp \
-    src/fxcodec/jbig2/JBig2_HuffmanTable.cpp \
-    src/fxcodec/jbig2/JBig2_Image.cpp \
-    src/fxcodec/jbig2/JBig2_PatternDict.cpp \
-    src/fxcodec/jbig2/JBig2_PddProc.cpp \
-    src/fxcodec/jbig2/JBig2_SddProc.cpp \
-    src/fxcodec/jbig2/JBig2_Segment.cpp \
-    src/fxcodec/jbig2/JBig2_SymbolDict.cpp \
-    src/fxcodec/jbig2/JBig2_TrdProc.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/core/pdfiumfxcrt.bp b/core/pdfiumfxcrt.bp
new file mode 100644
index 0000000..b74f90d
--- /dev/null
+++ b/core/pdfiumfxcrt.bp
@@ -0,0 +1,48 @@
+cc_library_static {
+    name: "libpdfiumfxcrt",
+    defaults: ["pdfium-defaults"],
+
+    arch: {
+        arm64: {
+            cflags: [
+                "-D_FX_CPU_=_FX_X64_",
+                "-fPIC",
+            ],
+        },
+    },
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "src/fxcrt/fx_basic_array.cpp",
+        "src/fxcrt/fx_basic_bstring.cpp",
+        "src/fxcrt/fx_basic_buffer.cpp",
+        "src/fxcrt/fx_basic_coords.cpp",
+        "src/fxcrt/fx_basic_gcc.cpp",
+        "src/fxcrt/fx_basic_list.cpp",
+        "src/fxcrt/fx_basic_maps.cpp",
+        "src/fxcrt/fx_basic_memmgr.cpp",
+        "src/fxcrt/fx_basic_plex.cpp",
+        "src/fxcrt/fx_basic_utf.cpp",
+        "src/fxcrt/fx_basic_util.cpp",
+        "src/fxcrt/fx_basic_wstring.cpp",
+        "src/fxcrt/fx_bidi.cpp",
+        "src/fxcrt/fx_extension.cpp",
+        "src/fxcrt/fx_ucddata.cpp",
+        "src/fxcrt/fx_unicode.cpp",
+        "src/fxcrt/fx_xml_composer.cpp",
+        "src/fxcrt/fx_xml_parser.cpp",
+        "src/fxcrt/fxcrt_platforms.cpp",
+        "src/fxcrt/fxcrt_posix.cpp",
+        "src/fxcrt/fxcrt_windows.cpp",
+    ],
+}
diff --git a/core/pdfiumfxcrt.mk b/core/pdfiumfxcrt.mk
deleted file mode 100644
index 842dd5f..0000000
--- a/core/pdfiumfxcrt.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfxcrt
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-LOCAL_CFLAGS_arm64 += -D_FX_CPU_=_FX_X64_ -fPIC
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/fxcrt/fx_basic_array.cpp \
-    src/fxcrt/fx_basic_bstring.cpp \
-    src/fxcrt/fx_basic_buffer.cpp \
-    src/fxcrt/fx_basic_coords.cpp \
-    src/fxcrt/fx_basic_gcc.cpp \
-    src/fxcrt/fx_basic_list.cpp \
-    src/fxcrt/fx_basic_maps.cpp \
-    src/fxcrt/fx_basic_memmgr.cpp \
-    src/fxcrt/fx_basic_plex.cpp \
-    src/fxcrt/fx_basic_utf.cpp \
-    src/fxcrt/fx_basic_util.cpp \
-    src/fxcrt/fx_basic_wstring.cpp \
-    src/fxcrt/fx_bidi.cpp \
-    src/fxcrt/fx_extension.cpp \
-    src/fxcrt/fx_ucddata.cpp \
-    src/fxcrt/fx_unicode.cpp \
-    src/fxcrt/fx_xml_composer.cpp \
-    src/fxcrt/fx_xml_parser.cpp \
-    src/fxcrt/fxcrt_platforms.cpp \
-    src/fxcrt/fxcrt_posix.cpp \
-    src/fxcrt/fxcrt_windows.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/core/pdfiumfxge.bp b/core/pdfiumfxge.bp
new file mode 100644
index 0000000..ef92003
--- /dev/null
+++ b/core/pdfiumfxge.bp
@@ -0,0 +1,64 @@
+cc_library_static {
+    name: "libpdfiumfxge",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    clang_cflags: ["-Wno-switch"],
+
+    srcs: [
+        "src/fxge/agg/src/fx_agg_driver.cpp",
+        "src/fxge/android/fpf_skiafont.cpp",
+        "src/fxge/android/fpf_skiafontmgr.cpp",
+        "src/fxge/android/fpf_skiamodule.cpp",
+        "src/fxge/android/fx_android_font.cpp",
+        "src/fxge/android/fx_android_imp.cpp",
+        "src/fxge/apple/fx_apple_platform.cpp",
+        "src/fxge/apple/fx_mac_imp.cpp",
+        "src/fxge/apple/fx_quartz_device.cpp",
+        "src/fxge/dib/fx_dib_composite.cpp",
+        "src/fxge/dib/fx_dib_convert.cpp",
+        "src/fxge/dib/fx_dib_engine.cpp",
+        "src/fxge/dib/fx_dib_main.cpp",
+        "src/fxge/dib/fx_dib_transform.cpp",
+        "src/fxge/fontdata/chromefontdata/FoxitDingbats.c",
+        "src/fxge/fontdata/chromefontdata/FoxitFixed.c",
+        "src/fxge/fontdata/chromefontdata/FoxitFixedBold.c",
+        "src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.c",
+        "src/fxge/fontdata/chromefontdata/FoxitFixedItalic.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSans.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSansBold.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSansItalic.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSansMM.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSerif.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSerifBold.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSerifItalic.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSerifMM.c",
+        "src/fxge/fontdata/chromefontdata/FoxitSymbol.c",
+        "src/fxge/freetype/fx_freetype.c",
+        "src/fxge/ge/fx_ge.cpp",
+        "src/fxge/ge/fx_ge_device.cpp",
+        "src/fxge/ge/fx_ge_font.cpp",
+        "src/fxge/ge/fx_ge_fontmap.cpp",
+        "src/fxge/ge/fx_ge_linux.cpp",
+        "src/fxge/ge/fx_ge_path.cpp",
+        "src/fxge/ge/fx_ge_ps.cpp",
+        "src/fxge/ge/fx_ge_text.cpp",
+    ],
+
+    include_dirs: [
+        "external/freetype/include",
+        "external/freetype/include/freetype",
+    ],
+}
diff --git a/core/pdfiumfxge.mk b/core/pdfiumfxge.mk
deleted file mode 100644
index 8e12746..0000000
--- a/core/pdfiumfxge.mk
+++ /dev/null
@@ -1,65 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfxge
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare -Wno-switch
-
-LOCAL_SRC_FILES := \
-    src/fxge/agg/src/fx_agg_driver.cpp \
-    src/fxge/android/fpf_skiafont.cpp \
-    src/fxge/android/fpf_skiafontmgr.cpp \
-    src/fxge/android/fpf_skiamodule.cpp \
-    src/fxge/android/fx_android_font.cpp \
-    src/fxge/android/fx_android_imp.cpp \
-    src/fxge/apple/fx_apple_platform.cpp \
-    src/fxge/apple/fx_mac_imp.cpp \
-    src/fxge/apple/fx_quartz_device.cpp \
-    src/fxge/dib/fx_dib_composite.cpp \
-    src/fxge/dib/fx_dib_convert.cpp \
-    src/fxge/dib/fx_dib_engine.cpp \
-    src/fxge/dib/fx_dib_main.cpp \
-    src/fxge/dib/fx_dib_transform.cpp \
-    src/fxge/fontdata/chromefontdata/FoxitDingbats.c \
-    src/fxge/fontdata/chromefontdata/FoxitFixed.c \
-    src/fxge/fontdata/chromefontdata/FoxitFixedBold.c \
-    src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.c \
-    src/fxge/fontdata/chromefontdata/FoxitFixedItalic.c \
-    src/fxge/fontdata/chromefontdata/FoxitSans.c \
-    src/fxge/fontdata/chromefontdata/FoxitSansBold.c \
-    src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.c \
-    src/fxge/fontdata/chromefontdata/FoxitSansItalic.c \
-    src/fxge/fontdata/chromefontdata/FoxitSansMM.c \
-    src/fxge/fontdata/chromefontdata/FoxitSerif.c \
-    src/fxge/fontdata/chromefontdata/FoxitSerifBold.c \
-    src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.c \
-    src/fxge/fontdata/chromefontdata/FoxitSerifItalic.c \
-    src/fxge/fontdata/chromefontdata/FoxitSerifMM.c \
-    src/fxge/fontdata/chromefontdata/FoxitSymbol.c \
-    src/fxge/freetype/fx_freetype.c \
-    src/fxge/ge/fx_ge.cpp \
-    src/fxge/ge/fx_ge_device.cpp \
-    src/fxge/ge/fx_ge_font.cpp \
-    src/fxge/ge/fx_ge_fontmap.cpp \
-    src/fxge/ge/fx_ge_linux.cpp \
-    src/fxge/ge/fx_ge_path.cpp \
-    src/fxge/ge/fx_ge_ps.cpp \
-    src/fxge/ge/fx_ge_text.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/fpdfsdk/Android.bp b/fpdfsdk/Android.bp
new file mode 100644
index 0000000..07632e0
--- /dev/null
+++ b/fpdfsdk/Android.bp
@@ -0,0 +1,7 @@
+build = [
+    "pdfium.bp",
+    "pdfiumformfiller.bp",
+    "pdfiumfxedit.bp",
+    "pdfiumjavascript.bp",
+    "pdfiumpdfwindow.bp",
+]
diff --git a/fpdfsdk/Android.mk b/fpdfsdk/Android.mk
deleted file mode 100644
index 1b0fc98..0000000
--- a/fpdfsdk/Android.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-BASE_PATH := $(call my-dir)
-
-include $(BASE_PATH)/pdfium.mk
-include $(BASE_PATH)/pdfiumformfiller.mk
-include $(BASE_PATH)/pdfiumfxedit.mk
-include $(BASE_PATH)/pdfiumjavascript.mk
-include $(BASE_PATH)/pdfiumpdfwindow.mk
diff --git a/fpdfsdk/pdfium.bp b/fpdfsdk/pdfium.bp
new file mode 100644
index 0000000..c8859a6
--- /dev/null
+++ b/fpdfsdk/pdfium.bp
@@ -0,0 +1,64 @@
+cc_library_shared {
+    name: "libpdfium",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    static_libs: [
+        "libpdfiumformfiller",
+        "libpdfiumpdfwindow",
+        "libpdfiumjavascript",
+        "libpdfiumfpdfapi",
+        "libpdfiumfxge",
+        "libpdfiumfxedit",
+        "libpdfiumfpdftext",
+        "libpdfiumfxcrt",
+        "libpdfiumfxcodec",
+        "libpdfiumfpdfdoc",
+        "libpdfiumfdrm",
+        "libpdfiumagg23",
+        "libpdfiumbigint",
+        "libpdfiumlcms",
+        "libpdfiumjpeg",
+        "libpdfiumopenjpeg",
+        "libpdfiumzlib",
+    ],
+
+    // TODO: figure out why turning on exceptions requires manually linking libdl
+    shared_libs: [
+        "libdl",
+        "libft2",
+    ],
+
+    srcs: [
+        "src/fpdf_dataavail.cpp",
+        "src/fpdf_ext.cpp",
+        "src/fpdf_flatten.cpp",
+        "src/fpdf_progressive.cpp",
+        "src/fpdf_searchex.cpp",
+        "src/fpdf_sysfontinfo.cpp",
+        "src/fpdf_transformpage.cpp",
+        "src/fpdfdoc.cpp",
+        "src/fpdfeditimg.cpp",
+        "src/fpdfeditpage.cpp",
+        "src/fpdfformfill.cpp",
+        "src/fpdfppo.cpp",
+        "src/fpdfsave.cpp",
+        "src/fpdftext.cpp",
+        "src/fpdfview.cpp",
+        "src/fsdk_actionhandler.cpp",
+        "src/fsdk_annothandler.cpp",
+        "src/fsdk_baseannot.cpp",
+        "src/fsdk_baseform.cpp",
+        "src/fsdk_mgr.cpp",
+        "src/fsdk_rendercontext.cpp",
+    ],
+}
diff --git a/fpdfsdk/pdfium.mk b/fpdfsdk/pdfium.mk
deleted file mode 100644
index e0dc7f6..0000000
--- a/fpdfsdk/pdfium.mk
+++ /dev/null
@@ -1,69 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libpdfium
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_STATIC_LIBRARIES := libpdfiumformfiller \
-                          libpdfiumpdfwindow \
-                          libpdfiumjavascript \
-                          libpdfiumfpdfapi \
-                          libpdfiumfxge \
-                          libpdfiumfxedit \
-                          libpdfiumfpdftext \
-                          libpdfiumfxcrt \
-                          libpdfiumfxcodec \
-                          libpdfiumfpdfdoc \
-                          libpdfiumfdrm \
-                          libpdfiumagg23 \
-                          libpdfiumbigint \
-                          libpdfiumlcms \
-                          libpdfiumjpeg \
-                          libpdfiumopenjpeg \
-                          libpdfiumzlib
-
-
-# TODO: figure out why turning on exceptions requires manually linking libdl
-LOCAL_SHARED_LIBRARIES := libdl libft2
-
-LOCAL_SRC_FILES := \
-    src/fpdf_dataavail.cpp \
-    src/fpdf_ext.cpp \
-    src/fpdf_flatten.cpp \
-    src/fpdf_progressive.cpp \
-    src/fpdf_searchex.cpp \
-    src/fpdf_sysfontinfo.cpp \
-    src/fpdf_transformpage.cpp \
-    src/fpdfdoc.cpp \
-    src/fpdfeditimg.cpp \
-    src/fpdfeditpage.cpp \
-    src/fpdfformfill.cpp \
-    src/fpdfppo.cpp \
-    src/fpdfsave.cpp \
-    src/fpdftext.cpp \
-    src/fpdfview.cpp \
-    src/fsdk_actionhandler.cpp \
-    src/fsdk_annothandler.cpp \
-    src/fsdk_baseannot.cpp \
-    src/fsdk_baseform.cpp \
-    src/fsdk_mgr.cpp \
-    src/fsdk_rendercontext.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/fpdfsdk/pdfiumformfiller.bp b/fpdfsdk/pdfiumformfiller.bp
new file mode 100644
index 0000000..9f5e1b1
--- /dev/null
+++ b/fpdfsdk/pdfiumformfiller.bp
@@ -0,0 +1,27 @@
+cc_library_static {
+    name: "libpdfiumformfiller",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "src/formfiller/FFL_CBA_Fontmap.cpp",
+        "src/formfiller/FFL_CheckBox.cpp",
+        "src/formfiller/FFL_ComboBox.cpp",
+        "src/formfiller/FFL_FormFiller.cpp",
+        "src/formfiller/FFL_IFormFiller.cpp",
+        "src/formfiller/FFL_ListBox.cpp",
+        "src/formfiller/FFL_PushButton.cpp",
+        "src/formfiller/FFL_RadioButton.cpp",
+        "src/formfiller/FFL_TextField.cpp",
+    ],
+}
diff --git a/fpdfsdk/pdfiumformfiller.mk b/fpdfsdk/pdfiumformfiller.mk
deleted file mode 100644
index e5abfaf..0000000
--- a/fpdfsdk/pdfiumformfiller.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumformfiller
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/formfiller/FFL_CBA_Fontmap.cpp \
-    src/formfiller/FFL_CheckBox.cpp \
-    src/formfiller/FFL_ComboBox.cpp \
-    src/formfiller/FFL_FormFiller.cpp \
-    src/formfiller/FFL_IFormFiller.cpp \
-    src/formfiller/FFL_ListBox.cpp \
-    src/formfiller/FFL_PushButton.cpp \
-    src/formfiller/FFL_RadioButton.cpp \
-    src/formfiller/FFL_TextField.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/fpdfsdk/pdfiumfxedit.bp b/fpdfsdk/pdfiumfxedit.bp
new file mode 100644
index 0000000..821c1a6
--- /dev/null
+++ b/fpdfsdk/pdfiumfxedit.bp
@@ -0,0 +1,23 @@
+cc_library_static {
+    name: "libpdfiumfxedit",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "src/fxedit/fxet_ap.cpp",
+        "src/fxedit/fxet_edit.cpp",
+        "src/fxedit/fxet_list.cpp",
+        "src/fxedit/fxet_module.cpp",
+        "src/fxedit/fxet_pageobjs.cpp",
+    ],
+}
diff --git a/fpdfsdk/pdfiumfxedit.mk b/fpdfsdk/pdfiumfxedit.mk
deleted file mode 100644
index 5a51af8..0000000
--- a/fpdfsdk/pdfiumfxedit.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumfxedit
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/fxedit/fxet_ap.cpp \
-    src/fxedit/fxet_edit.cpp \
-    src/fxedit/fxet_list.cpp \
-    src/fxedit/fxet_module.cpp \
-    src/fxedit/fxet_pageobjs.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-include $(BUILD_STATIC_LIBRARY)
diff --git a/fpdfsdk/pdfiumjavascript.bp b/fpdfsdk/pdfiumjavascript.bp
new file mode 100644
index 0000000..5528aa2
--- /dev/null
+++ b/fpdfsdk/pdfiumjavascript.bp
@@ -0,0 +1,17 @@
+cc_library_static {
+    name: "libpdfiumjavascript",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: ["src/javascript/JS_Runtime_Stub.cpp"],
+}
diff --git a/fpdfsdk/pdfiumjavascript.mk b/fpdfsdk/pdfiumjavascript.mk
deleted file mode 100644
index 9f39f73..0000000
--- a/fpdfsdk/pdfiumjavascript.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumjavascript
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/javascript/JS_Runtime_Stub.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/fpdfsdk/pdfiumpdfwindow.bp b/fpdfsdk/pdfiumpdfwindow.bp
new file mode 100644
index 0000000..cb2a932
--- /dev/null
+++ b/fpdfsdk/pdfiumpdfwindow.bp
@@ -0,0 +1,35 @@
+cc_library_static {
+    name: "libpdfiumpdfwindow",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        "-DOPJ_STATIC",
+        "-DV8_DEPRECATION_WARNINGS",
+        "-D_CRT_SECURE_NO_WARNINGS",
+
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "src/pdfwindow/PWL_Button.cpp",
+        "src/pdfwindow/PWL_Caret.cpp",
+        "src/pdfwindow/PWL_ComboBox.cpp",
+        "src/pdfwindow/PWL_Edit.cpp",
+        "src/pdfwindow/PWL_EditCtrl.cpp",
+        "src/pdfwindow/PWL_FontMap.cpp",
+        "src/pdfwindow/PWL_Icon.cpp",
+        "src/pdfwindow/PWL_IconList.cpp",
+        "src/pdfwindow/PWL_Label.cpp",
+        "src/pdfwindow/PWL_ListBox.cpp",
+        "src/pdfwindow/PWL_ListCtrl.cpp",
+        "src/pdfwindow/PWL_Note.cpp",
+        "src/pdfwindow/PWL_ScrollBar.cpp",
+        "src/pdfwindow/PWL_Signature.cpp",
+        "src/pdfwindow/PWL_SpecialButton.cpp",
+        "src/pdfwindow/PWL_Utils.cpp",
+        "src/pdfwindow/PWL_Wnd.cpp",
+    ],
+}
diff --git a/fpdfsdk/pdfiumpdfwindow.mk b/fpdfsdk/pdfiumpdfwindow.mk
deleted file mode 100644
index 3932ba4..0000000
--- a/fpdfsdk/pdfiumpdfwindow.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libpdfiumpdfwindow
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall -DOPJ_STATIC \
-                -DV8_DEPRECATION_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-LOCAL_CLANG_CFLAGS += -Wno-sign-compare
-
-LOCAL_SRC_FILES := \
-    src/pdfwindow/PWL_Button.cpp \
-    src/pdfwindow/PWL_Caret.cpp \
-    src/pdfwindow/PWL_ComboBox.cpp \
-    src/pdfwindow/PWL_Edit.cpp \
-    src/pdfwindow/PWL_EditCtrl.cpp \
-    src/pdfwindow/PWL_FontMap.cpp \
-    src/pdfwindow/PWL_Icon.cpp \
-    src/pdfwindow/PWL_IconList.cpp \
-    src/pdfwindow/PWL_Label.cpp \
-    src/pdfwindow/PWL_ListBox.cpp \
-    src/pdfwindow/PWL_ListCtrl.cpp \
-    src/pdfwindow/PWL_Note.cpp \
-    src/pdfwindow/PWL_ScrollBar.cpp \
-    src/pdfwindow/PWL_Signature.cpp \
-    src/pdfwindow/PWL_SpecialButton.cpp \
-    src/pdfwindow/PWL_Utils.cpp \
-    src/pdfwindow/PWL_Wnd.cpp
-
-LOCAL_C_INCLUDES := \
-    external/pdfium \
-    external/freetype/include \
-    external/freetype/include/freetype
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/third_party/Android.bp b/third_party/Android.bp
new file mode 100644
index 0000000..fe99487
--- /dev/null
+++ b/third_party/Android.bp
@@ -0,0 +1,8 @@
+build = [
+    "pdfiumagg23.bp",
+    "pdfiumbigint.bp",
+    "pdfiumlcms.bp",
+    "pdfiumjpeg.bp",
+    "pdfiumopenjpeg.bp",
+    "pdfiumzlib.bp",
+]
diff --git a/third_party/Android.mk b/third_party/Android.mk
deleted file mode 100644
index e43bca8..0000000
--- a/third_party/Android.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-BASE_PATH := $(call my-dir)
-
-include $(BASE_PATH)/pdfiumagg23.mk
-include $(BASE_PATH)/pdfiumbigint.mk
-include $(BASE_PATH)/pdfiumlcms.mk
-include $(BASE_PATH)/pdfiumjpeg.mk
-include $(BASE_PATH)/pdfiumopenjpeg.mk
-include $(BASE_PATH)/pdfiumzlib.mk
diff --git a/third_party/pdfiumagg23.bp b/third_party/pdfiumagg23.bp
new file mode 100644
index 0000000..960e594
--- /dev/null
+++ b/third_party/pdfiumagg23.bp
@@ -0,0 +1,19 @@
+cc_library_static {
+    name: "libpdfiumagg23",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-unused-parameter",
+        "-Wno-unused-function",
+    ],
+
+    srcs: [
+        "agg23/agg_curves.cpp",
+        "agg23/agg_path_storage.cpp",
+        "agg23/agg_rasterizer_scanline_aa.cpp",
+        "agg23/agg_vcgen_dash.cpp",
+        "agg23/agg_vcgen_stroke.cpp",
+    ],
+}
diff --git a/third_party/pdfiumagg23.mk b/third_party/pdfiumagg23.mk
deleted file mode 100644
index ca58477..0000000
--- a/third_party/pdfiumagg23.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libpdfiumagg23
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
-
-LOCAL_SRC_FILES := \
-    agg23/agg_curves.cpp \
-    agg23/agg_path_storage.cpp \
-    agg23/agg_rasterizer_scanline_aa.cpp \
-    agg23/agg_vcgen_dash.cpp \
-    agg23/agg_vcgen_stroke.cpp \
-
-LOCAL_C_INCLUDES := \
-    external/pdfium
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/third_party/pdfiumbigint.bp b/third_party/pdfiumbigint.bp
new file mode 100644
index 0000000..536b115
--- /dev/null
+++ b/third_party/pdfiumbigint.bp
@@ -0,0 +1,11 @@
+cc_library_static {
+    name: "libpdfiumbigint",
+    defaults: ["pdfium-defaults"],
+
+    srcs: [
+        "bigint/BigInteger.cc",
+        "bigint/BigIntegerUtils.cc",
+        "bigint/BigUnsigned.cc",
+        "bigint/BigUnsignedInABase.cc",
+    ],
+}
diff --git a/third_party/pdfiumbigint.mk b/third_party/pdfiumbigint.mk
deleted file mode 100644
index 68df030..0000000
--- a/third_party/pdfiumbigint.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libpdfiumbigint
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall
-
-LOCAL_CPP_EXTENSION := .cc
-LOCAL_SRC_FILES := \
-    bigint/BigInteger.cc \
-    bigint/BigIntegerUtils.cc \
-    bigint/BigUnsigned.cc \
-    bigint/BigUnsignedInABase.cc
-
-LOCAL_C_INCLUDES := \
-    external/pdfium
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/third_party/pdfiumjpeg.bp b/third_party/pdfiumjpeg.bp
new file mode 100644
index 0000000..9113e7a
--- /dev/null
+++ b/third_party/pdfiumjpeg.bp
@@ -0,0 +1,54 @@
+cc_library_static {
+    name: "libpdfiumjpeg",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-shift-negative-value",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "libjpeg/fpdfapi_jcapimin.c",
+        "libjpeg/fpdfapi_jcapistd.c",
+        "libjpeg/fpdfapi_jccoefct.c",
+        "libjpeg/fpdfapi_jccolor.c",
+        "libjpeg/fpdfapi_jcdctmgr.c",
+        "libjpeg/fpdfapi_jchuff.c",
+        "libjpeg/fpdfapi_jcinit.c",
+        "libjpeg/fpdfapi_jcmainct.c",
+        "libjpeg/fpdfapi_jcmarker.c",
+        "libjpeg/fpdfapi_jcmaster.c",
+        "libjpeg/fpdfapi_jcomapi.c",
+        "libjpeg/fpdfapi_jcparam.c",
+        "libjpeg/fpdfapi_jcphuff.c",
+        "libjpeg/fpdfapi_jcprepct.c",
+        "libjpeg/fpdfapi_jcsample.c",
+        "libjpeg/fpdfapi_jctrans.c",
+        "libjpeg/fpdfapi_jdapimin.c",
+        "libjpeg/fpdfapi_jdapistd.c",
+        "libjpeg/fpdfapi_jdcoefct.c",
+        "libjpeg/fpdfapi_jdcolor.c",
+        "libjpeg/fpdfapi_jddctmgr.c",
+        "libjpeg/fpdfapi_jdhuff.c",
+        "libjpeg/fpdfapi_jdinput.c",
+        "libjpeg/fpdfapi_jdmainct.c",
+        "libjpeg/fpdfapi_jdmarker.c",
+        "libjpeg/fpdfapi_jdmaster.c",
+        "libjpeg/fpdfapi_jdmerge.c",
+        "libjpeg/fpdfapi_jdphuff.c",
+        "libjpeg/fpdfapi_jdpostct.c",
+        "libjpeg/fpdfapi_jdsample.c",
+        "libjpeg/fpdfapi_jdtrans.c",
+        "libjpeg/fpdfapi_jerror.c",
+        "libjpeg/fpdfapi_jfdctfst.c",
+        "libjpeg/fpdfapi_jfdctint.c",
+        "libjpeg/fpdfapi_jidctfst.c",
+        "libjpeg/fpdfapi_jidctint.c",
+        "libjpeg/fpdfapi_jidctred.c",
+        "libjpeg/fpdfapi_jmemmgr.c",
+        "libjpeg/fpdfapi_jmemnobs.c",
+        "libjpeg/fpdfapi_jutils.c",
+    ],
+}
diff --git a/third_party/pdfiumjpeg.mk b/third_party/pdfiumjpeg.mk
deleted file mode 100644
index f8ee5a1..0000000
--- a/third_party/pdfiumjpeg.mk
+++ /dev/null
@@ -1,62 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libpdfiumjpeg
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-shift-negative-value -Wno-unused-parameter
-
-LOCAL_SRC_FILES := \
-    libjpeg/fpdfapi_jcapimin.c \
-    libjpeg/fpdfapi_jcapistd.c \
-    libjpeg/fpdfapi_jccoefct.c \
-    libjpeg/fpdfapi_jccolor.c \
-    libjpeg/fpdfapi_jcdctmgr.c \
-    libjpeg/fpdfapi_jchuff.c \
-    libjpeg/fpdfapi_jcinit.c \
-    libjpeg/fpdfapi_jcmainct.c \
-    libjpeg/fpdfapi_jcmarker.c \
-    libjpeg/fpdfapi_jcmaster.c \
-    libjpeg/fpdfapi_jcomapi.c \
-    libjpeg/fpdfapi_jcparam.c \
-    libjpeg/fpdfapi_jcphuff.c \
-    libjpeg/fpdfapi_jcprepct.c \
-    libjpeg/fpdfapi_jcsample.c \
-    libjpeg/fpdfapi_jctrans.c \
-    libjpeg/fpdfapi_jdapimin.c \
-    libjpeg/fpdfapi_jdapistd.c \
-    libjpeg/fpdfapi_jdcoefct.c \
-    libjpeg/fpdfapi_jdcolor.c \
-    libjpeg/fpdfapi_jddctmgr.c \
-    libjpeg/fpdfapi_jdhuff.c \
-    libjpeg/fpdfapi_jdinput.c \
-    libjpeg/fpdfapi_jdmainct.c \
-    libjpeg/fpdfapi_jdmarker.c \
-    libjpeg/fpdfapi_jdmaster.c \
-    libjpeg/fpdfapi_jdmerge.c \
-    libjpeg/fpdfapi_jdphuff.c \
-    libjpeg/fpdfapi_jdpostct.c \
-    libjpeg/fpdfapi_jdsample.c \
-    libjpeg/fpdfapi_jdtrans.c \
-    libjpeg/fpdfapi_jerror.c \
-    libjpeg/fpdfapi_jfdctfst.c \
-    libjpeg/fpdfapi_jfdctint.c \
-    libjpeg/fpdfapi_jidctfst.c \
-    libjpeg/fpdfapi_jidctint.c \
-    libjpeg/fpdfapi_jidctred.c \
-    libjpeg/fpdfapi_jmemmgr.c \
-    libjpeg/fpdfapi_jmemnobs.c \
-    libjpeg/fpdfapi_jutils.c
-
-LOCAL_C_INCLUDES := \
-    external/pdfium
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/third_party/pdfiumlcms.bp b/third_party/pdfiumlcms.bp
new file mode 100644
index 0000000..2eab7eb
--- /dev/null
+++ b/third_party/pdfiumlcms.bp
@@ -0,0 +1,40 @@
+cc_library_static {
+    name: "libpdfiumlcms",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-unused-parameter",
+        "-Wno-missing-braces",
+        "-Wno-unused-function",
+    ],
+
+    srcs: [
+        "lcms2-2.6/src/cmscam02.c",
+        "lcms2-2.6/src/cmscgats.c",
+        "lcms2-2.6/src/cmscnvrt.c",
+        "lcms2-2.6/src/cmserr.c",
+        "lcms2-2.6/src/cmsgamma.c",
+        "lcms2-2.6/src/cmsgmt.c",
+        "lcms2-2.6/src/cmshalf.c",
+        "lcms2-2.6/src/cmsintrp.c",
+        "lcms2-2.6/src/cmsio0.c",
+        "lcms2-2.6/src/cmsio1.c",
+        "lcms2-2.6/src/cmslut.c",
+        "lcms2-2.6/src/cmsmd5.c",
+        "lcms2-2.6/src/cmsmtrx.c",
+        "lcms2-2.6/src/cmsnamed.c",
+        "lcms2-2.6/src/cmsopt.c",
+        "lcms2-2.6/src/cmspack.c",
+        "lcms2-2.6/src/cmspcs.c",
+        "lcms2-2.6/src/cmsplugin.c",
+        "lcms2-2.6/src/cmsps2.c",
+        "lcms2-2.6/src/cmssamp.c",
+        "lcms2-2.6/src/cmssm.c",
+        "lcms2-2.6/src/cmstypes.c",
+        "lcms2-2.6/src/cmsvirt.c",
+        "lcms2-2.6/src/cmswtpnt.c",
+        "lcms2-2.6/src/cmsxform.c",
+    ],
+}
diff --git a/third_party/pdfiumlcms.mk b/third_party/pdfiumlcms.mk
deleted file mode 100644
index 7168571..0000000
--- a/third_party/pdfiumlcms.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libpdfiumlcms
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-unused-parameter -Wno-missing-braces -Wno-unused-function
-
-LOCAL_SRC_FILES := \
-    lcms2-2.6/src/cmscam02.c \
-    lcms2-2.6/src/cmscgats.c \
-    lcms2-2.6/src/cmscnvrt.c \
-    lcms2-2.6/src/cmserr.c \
-    lcms2-2.6/src/cmsgamma.c \
-    lcms2-2.6/src/cmsgmt.c \
-    lcms2-2.6/src/cmshalf.c \
-    lcms2-2.6/src/cmsintrp.c \
-    lcms2-2.6/src/cmsio0.c \
-    lcms2-2.6/src/cmsio1.c \
-    lcms2-2.6/src/cmslut.c \
-    lcms2-2.6/src/cmsmd5.c \
-    lcms2-2.6/src/cmsmtrx.c \
-    lcms2-2.6/src/cmsnamed.c \
-    lcms2-2.6/src/cmsopt.c \
-    lcms2-2.6/src/cmspack.c \
-    lcms2-2.6/src/cmspcs.c \
-    lcms2-2.6/src/cmsplugin.c \
-    lcms2-2.6/src/cmsps2.c \
-    lcms2-2.6/src/cmssamp.c \
-    lcms2-2.6/src/cmssm.c \
-    lcms2-2.6/src/cmstypes.c \
-    lcms2-2.6/src/cmsvirt.c \
-    lcms2-2.6/src/cmswtpnt.c \
-    lcms2-2.6/src/cmsxform.c
-
-LOCAL_C_INCLUDES := \
-    external/pdfium
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/third_party/pdfiumopenjpeg.bp b/third_party/pdfiumopenjpeg.bp
new file mode 100644
index 0000000..076306f
--- /dev/null
+++ b/third_party/pdfiumopenjpeg.bp
@@ -0,0 +1,33 @@
+cc_library_static {
+    name: "libpdfiumopenjpeg",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-sign-compare",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "libopenjpeg20/bio.c",
+        "libopenjpeg20/cio.c",
+        "libopenjpeg20/dwt.c",
+        "libopenjpeg20/event.c",
+        "libopenjpeg20/function_list.c",
+        "libopenjpeg20/image.c",
+        "libopenjpeg20/invert.c",
+        "libopenjpeg20/j2k.c",
+        "libopenjpeg20/jp2.c",
+        "libopenjpeg20/mct.c",
+        "libopenjpeg20/mqc.c",
+        "libopenjpeg20/openjpeg.c",
+        "libopenjpeg20/opj_clock.c",
+        "libopenjpeg20/pi.c",
+        "libopenjpeg20/raw.c",
+        "libopenjpeg20/t1.c",
+        "libopenjpeg20/t2.c",
+        "libopenjpeg20/tcd.c",
+        "libopenjpeg20/tgt.c",
+    ],
+}
diff --git a/third_party/pdfiumopenjpeg.mk b/third_party/pdfiumopenjpeg.mk
deleted file mode 100644
index 6eed86c..0000000
--- a/third_party/pdfiumopenjpeg.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libpdfiumopenjpeg
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-parameter
-
-LOCAL_SRC_FILES := \
-    libopenjpeg20/bio.c \
-    libopenjpeg20/cio.c \
-    libopenjpeg20/dwt.c \
-    libopenjpeg20/event.c \
-    libopenjpeg20/function_list.c \
-    libopenjpeg20/image.c \
-    libopenjpeg20/invert.c \
-    libopenjpeg20/j2k.c \
-    libopenjpeg20/jp2.c \
-    libopenjpeg20/mct.c \
-    libopenjpeg20/mqc.c \
-    libopenjpeg20/openjpeg.c \
-    libopenjpeg20/opj_clock.c \
-    libopenjpeg20/pi.c \
-    libopenjpeg20/raw.c \
-    libopenjpeg20/t1.c \
-    libopenjpeg20/t2.c \
-    libopenjpeg20/tcd.c \
-    libopenjpeg20/tgt.c
-
-LOCAL_C_INCLUDES := \
-    external/pdfium
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/third_party/pdfiumzlib.bp b/third_party/pdfiumzlib.bp
new file mode 100644
index 0000000..efd60c3
--- /dev/null
+++ b/third_party/pdfiumzlib.bp
@@ -0,0 +1,29 @@
+cc_library_static {
+    name: "libpdfiumzlib",
+    defaults: ["pdfium-defaults"],
+
+    cflags: [
+        // Mask some warnings. These are benign, but we probably want to fix them
+        // upstream at some point.
+        "-Wno-shift-negative-value",
+        "-Wno-unused-parameter",
+    ],
+
+    srcs: [
+        "zlib_v128/adler32.c",
+        "zlib_v128/compress.c",
+        "zlib_v128/crc32.c",
+        "zlib_v128/deflate.c",
+        "zlib_v128/gzclose.c",
+        "zlib_v128/gzlib.c",
+        "zlib_v128/gzread.c",
+        "zlib_v128/gzwrite.c",
+        "zlib_v128/infback.c",
+        "zlib_v128/inffast.c",
+        "zlib_v128/inflate.c",
+        "zlib_v128/inftrees.c",
+        "zlib_v128/trees.c",
+        "zlib_v128/uncompr.c",
+        "zlib_v128/zutil.c",
+    ],
+}
diff --git a/third_party/pdfiumzlib.mk b/third_party/pdfiumzlib.mk
deleted file mode 100644
index 19007f9..0000000
--- a/third_party/pdfiumzlib.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libpdfiumzlib
-
-LOCAL_ARM_MODE := arm
-LOCAL_NDK_STL_VARIANT := gnustl_static
-
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays -fexceptions
-LOCAL_CFLAGS += -Wno-non-virtual-dtor -Wall
-
-# Mask some warnings. These are benign, but we probably want to fix them
-# upstream at some point.
-LOCAL_CFLAGS += -Wno-shift-negative-value -Wno-unused-parameter
-
-LOCAL_SRC_FILES := \
-    zlib_v128/adler32.c \
-    zlib_v128/compress.c \
-    zlib_v128/crc32.c \
-    zlib_v128/deflate.c \
-    zlib_v128/gzclose.c \
-    zlib_v128/gzlib.c \
-    zlib_v128/gzread.c \
-    zlib_v128/gzwrite.c \
-    zlib_v128/infback.c \
-    zlib_v128/inffast.c \
-    zlib_v128/inflate.c \
-    zlib_v128/inftrees.c \
-    zlib_v128/trees.c \
-    zlib_v128/uncompr.c \
-    zlib_v128/zutil.c
-
-LOCAL_C_INCLUDES := \
-    external/pdfium
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/update_pdfium.py b/update_pdfium.py
index e946574..e194a17 100755
--- a/update_pdfium.py
+++ b/update_pdfium.py
@@ -14,27 +14,28 @@
 
 PDFIUM_GIT_REPO = "https://pdfium.googlesource.com/pdfium.git"
 
-MAKE_FILES = ["third_party/pdfiumopenjpeg.mk",
-              "third_party/pdfiumlcms.mk",
-              "third_party/pdfiumjpeg.mk",
-              "third_party/pdfiumagg23.mk",
-              "third_party/pdfiumzlib.mk",
-              "third_party/pdfiumbigint.mk",
-              "third_party/Android.mk",
-              "core/pdfiumfpdftext.mk",
-              "core/pdfiumfpdfdoc.mk",
-              "core/pdfiumfdrm.mk",
-              "core/pdfiumfxcodec.mk",
-              "core/pdfiumfpdfapi.mk",
-              "core/pdfiumfxcrt.mk",
-              "core/pdfiumfxge.mk",
-              "core/Android.mk",
-              "fpdfsdk/pdfiumjavascript.mk",
-              "fpdfsdk/pdfiumformfiller.mk",
-              "fpdfsdk/pdfiumfxedit.mk",
-              "fpdfsdk/pdfiumpdfwindow.mk",
-              "fpdfsdk/pdfium.mk",
-              "fpdfsdk/Android.mk"]
+MAKE_FILES = ["Android.bp",
+              "third_party/pdfiumopenjpeg.bp",
+              "third_party/pdfiumlcms.bp",
+              "third_party/pdfiumjpeg.bp",
+              "third_party/pdfiumagg23.bp",
+              "third_party/pdfiumzlib.bp",
+              "third_party/pdfiumbigint.bp",
+              "third_party/Android.bp",
+              "core/pdfiumfpdftext.bp",
+              "core/pdfiumfpdfdoc.bp",
+              "core/pdfiumfdrm.bp",
+              "core/pdfiumfxcodec.bp",
+              "core/pdfiumfpdfapi.bp",
+              "core/pdfiumfxcrt.bp",
+              "core/pdfiumfxge.bp",
+              "core/Android.bp",
+              "fpdfsdk/pdfiumjavascript.bp",
+              "fpdfsdk/pdfiumformfiller.bp",
+              "fpdfsdk/pdfiumfxedit.bp",
+              "fpdfsdk/pdfiumpdfwindow.bp",
+              "fpdfsdk/pdfium.bp",
+              "fpdfsdk/Android.bp"]
 
 OWNERS_FILES = ["OWNERS", "docs/OWNERS", "third_party/base/numerics/OWNERS"]