Merge changes from topic "soong_mesa3d"

* changes:
  Convert genxml to Android.bp
  Convert libmesa_sse41 to Android.bp
  Convert mesa host builds to Android.bp
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..eaab04e
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,177 @@
+// Mesa 3-D graphics library
+//
+// Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+// Copyright (C) 2010-2011 LunarG Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+soong_namespace {}
+
+build = ["Android.gen.bp"]
+
+cc_library_headers {
+    name: "mesa_common_headers",
+    export_include_dirs: [
+        "src",
+        "include",
+    ],
+    host_supported: true,
+    vendor: true,
+    visibility: [":__subpackages__"],
+}
+
+// This needs to be kept in sync with Android.common.mk
+cc_defaults {
+    name: "mesa_common_defaults",
+    defaults: ["mesa_version_defaults"],
+
+    // uncomment to keep the debug symbols
+    // strip: { none: true, },
+
+    vendor: true,
+    header_libs: ["mesa_common_headers"],
+
+    cflags: [
+        "-Wno-error",
+        "-Werror=incompatible-pointer-types",
+        "-Wno-unused-parameter",
+        "-Wno-pointer-arith",
+        "-Wno-missing-field-initializers",
+        "-Wno-initializer-overrides",
+        "-Wno-mismatched-tags",
+        // PACKAGE_VERSION is in mesa_version_defaults
+        "-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"",
+
+        // XXX: The following __STDC_*_MACROS defines should not be needed.
+        // It's likely due to a bug elsewhere, but let's temporarily add them
+        // here to fix the radeonsi build.
+        "-DENABLE_SHADER_CACHE",
+        "-D__STDC_CONSTANT_MACROS",
+        "-D__STDC_LIMIT_MACROS",
+        "-DHAVE___BUILTIN_EXPECT",
+        "-DHAVE___BUILTIN_FFS",
+        "-DHAVE___BUILTIN_FFSLL",
+        "-DHAVE_DLFCN_H",
+        "-DHAVE_FUNC_ATTRIBUTE_FLATTEN",
+        "-DHAVE_FUNC_ATTRIBUTE_UNUSED",
+        "-DHAVE_FUNC_ATTRIBUTE_FORMAT",
+        "-DHAVE_FUNC_ATTRIBUTE_PACKED",
+        "-DHAVE_FUNC_ATTRIBUTE_ALIAS",
+        "-DHAVE_FUNC_ATTRIBUTE_NORETURN",
+        "-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL",
+        "-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT",
+        "-DHAVE___BUILTIN_CTZ",
+        "-DHAVE___BUILTIN_POPCOUNT",
+        "-DHAVE___BUILTIN_POPCOUNTLL",
+        "-DHAVE___BUILTIN_CLZ",
+        "-DHAVE___BUILTIN_CLZLL",
+        "-DHAVE___BUILTIN_UNREACHABLE",
+        "-DHAVE_PTHREAD=1",
+        "-DHAVE_DLADDR",
+        "-DHAVE_DL_ITERATE_PHDR",
+        "-DHAVE_LINUX_FUTEX_H",
+        "-DHAVE_ENDIAN_H",
+        "-DHAVE_ZLIB",
+        "-DMAJOR_IN_SYSMACROS",
+        "-DVK_USE_PLATFORM_ANDROID_KHR",
+        "-fvisibility=hidden",
+        "-fno-math-errno",
+        "-fno-trapping-math",
+        "-Werror",
+        "-Wno-#warnings",
+        "-Wno-asm-operand-widths",
+        "-Wno-cast-calling-convention",
+        "-Wno-constant-logical-operand",
+        "-Wno-enum-conversion",
+        "-Wno-format",
+        "-Wno-gnu-variable-sized-type-not-at-end",
+        "-Wno-implicit-fallthrough",
+        "-Wno-incompatible-pointer-types",
+        "-Wno-missing-braces",
+        "-Wno-overloaded-virtual",
+        "-Wno-self-assign",
+        "-Wno-shift-negative-value",
+        "-Wno-sign-compare",
+        "-Wno-sometimes-uninitialized",
+        "-Wno-switch",
+        "-Wno-typedef-redefinition",
+        "-Wno-uninitialized",
+        "-DHAVE_TIMESPEC_GET",
+    ],
+
+    // mesa requires at least c99 compiler
+    c_std: "c99",
+
+    cppflags: [
+        "-D__STDC_CONSTANT_MACROS",
+        "-D__STDC_FORMAT_MACROS",
+        "-D__STDC_LIMIT_MACROS",
+        "-Wno-error=non-virtual-dtor",
+        "-Wno-non-virtual-dtor",
+    ],
+
+    arch: {
+        arm: {
+            neon: {
+                cflags: ["-DUSE_ARM_ASM"],
+            },
+        },
+        arm64: {
+            cflags: ["-DUSE_AARCH64_ASM"],
+        },
+    },
+
+    multilib: {
+        lib32: {
+            cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib/dri\""],
+        },
+        lib64: {
+            cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib64/dri\""],
+        },
+    },
+
+    product_variables: {
+        platform_sdk_version: {
+            cflags: ["-DANDROID_API_LEVEL=%d"],
+        },
+    },
+
+    target: {
+        host: {
+            cflags: [
+                "-D_GNU_SOURCE",
+                "-DHAVE_LIBDRM",
+            ],
+            shared_libs: ["libdrm"],
+        },
+    },
+}
+
+genrule {
+    name: "mesa_genxml_genX",
+    cmd: "cp $(in) $(genDir)/genxml/",
+    srcs: [
+        "prebuilt-intermediates/genxml/genX_bits.h",
+        "prebuilt-intermediates/genxml/genX_xml.h",
+    ],
+    out: [
+        "genxml/genX_bits.h",
+        "genxml/genX_xml.h",
+    ],
+}
diff --git a/Android.common.mk b/Android.common.mk
index a8a6911..cc02e6e 100644
--- a/Android.common.mk
+++ b/Android.common.mk
@@ -21,6 +21,9 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
+# ! Whenever updating this file, make sure to keep mesa_common_defaults in the
+# ! Android.bp up to date.
+
 ifeq ($(LOCAL_IS_HOST_MODULE),true)
 LOCAL_CFLAGS += -D_GNU_SOURCE
 endif
diff --git a/Android.gen.bp b/Android.gen.bp
new file mode 100644
index 0000000..b34aeec
--- /dev/null
+++ b/Android.gen.bp
@@ -0,0 +1,5 @@
+// Autogenerated by aosp-gen-bp.sh
+cc_defaults {
+    name: "mesa_version_defaults",
+    cflags: ["-DPACKAGE_VERSION=\"19.1.3\""],
+}
diff --git a/Android.mk b/Android.mk
index 9a34b25..4864b44 100644
--- a/Android.mk
+++ b/Android.mk
@@ -29,10 +29,16 @@
 # The main target is libGLES_mesa.  For each classic driver enabled, a DRI
 # module will also be built.  DRI modules will be loaded by libGLES_mesa.
 
+LOCAL_PATH := $(call my-dir)
+
 ifneq ($(BOARD_USE_CUSTOMIZED_MESA), true)
 ifneq ($(BOARD_GPU_DRIVERS),)
 
-MESA_TOP := $(call my-dir)
+MESA_TOP := $(LOCAL_PATH)
+
+ifeq ($(filter $(MESA_TOP),$(PRODUCT_SOONG_NAMESPACES)),)
+  $(error $(MESA_TOP) must be in PRODUCT_SOONG_NAMESPACES)
+endif
 
 MESA_ANDROID_MAJOR_VERSION := $(word 1, $(subst ., , $(PLATFORM_VERSION)))
 ifneq ($(filter 2 4, $(MESA_ANDROID_MAJOR_VERSION)),)
@@ -131,5 +137,13 @@
 INC_DIRS += $(call all-named-subdir-makefiles,src/gallium)
 include $(INC_DIRS)
 
+else
+  ifneq ($(filter $(LOCAL_PATH),$(PRODUCT_SOONG_NAMESPACES)),)
+    $(error $(LOCAL_PATH) in PRODUCT_SOONG_NAMESPACES, but not configured in Make)
+  endif
 endif # BOARD_GPU_DRIVERS != ""
+else
+  ifneq ($(filter $(LOCAL_PATH),$(PRODUCT_SOONG_NAMESPACES)),)
+    $(error $(LOCAL_PATH) in PRODUCT_SOONG_NAMESPACES, but not configured in Make)
+  endif
 endif # BOARD_USE_CUSTOMIZED_MESA != true
diff --git a/aosp-gen-bp.sh b/aosp-gen-bp.sh
new file mode 100755
index 0000000..e00d73d
--- /dev/null
+++ b/aosp-gen-bp.sh
@@ -0,0 +1,33 @@
+#!/bin/bash -e
+
+echo "// Autogenerated by aosp-gen-bp.sh" >Android.gen.bp
+echo 'cc_defaults { name: "mesa_version_defaults", cflags: ["-DPACKAGE_VERSION=\"'$(cat VERSION)'\""] }' >>Android.gen.bp
+bpfmt -w Android.gen.bp
+
+
+echo '
+nothing:
+	@true
+include $(DIR)/Makefile.sources
+comma := ,
+$(file >$(DIR)/Android.sources.bp,// Generated by aosp-gen-bp.sh)
+$(foreach extract,$(EXTRACT),\
+  $(eval kv := $(subst :, ,$(extract)))\
+  $(eval fgname := $(word 1,$(kv)))\
+  $(eval sym := $(word 2,$(kv)))\
+  $(file >>$(DIR)/Android.sources.bp,filegroup{name:"$(fgname)",\
+    visibility: [":__subpackages__"],\
+    srcs:[$(foreach f,$(filter %.c,$($(sym))),"$(f)"$(comma))]}))
+
+output := $(shell bpfmt -w $(DIR)/Android.sources.bp 2>&1 || echo "Failed")
+ifneq ($(output),)
+  $(error bpfmt returned: $(output))
+endif
+' >android_extract.mk
+
+make -f android_extract.mk DIR=src/mesa \
+  EXTRACT="\
+    mesa_x86_sse41_srcs:X86_SSE41_FILES \
+    "
+
+rm android_extract.mk
diff --git a/src/Android.bp b/src/Android.bp
new file mode 100644
index 0000000..741022d
--- /dev/null
+++ b/src/Android.bp
@@ -0,0 +1,31 @@
+cc_library_headers {
+    name: "libmesa_glsl_utils_includes",
+    export_include_dirs: [
+        "compiler/nir",
+        "mapi",
+        "gallium/include",
+        "gallium/auxiliary",
+    ],
+    host_supported: true,
+    vendor: true,
+    visibility: [":__subpackages__"],
+}
+
+cc_library_headers {
+    name: "mesa_mapi_headers",
+    export_include_dirs: ["mapi"],
+    host_supported: true,
+    vendor: true,
+    visibility: [":__subpackages__"],
+}
+
+cc_library_headers {
+    name: "libmesa_sse41_includes",
+    export_include_dirs: [
+        "mapi",
+        "gallium/include",
+        "gallium/auxiliary",
+    ],
+    vendor: true,
+    visibility: [":__subpackages__"],
+}
diff --git a/src/gallium/drivers/iris/Android.mk b/src/gallium/drivers/iris/Android.mk
index 4074f98..281299c 100644
--- a/src/gallium/drivers/iris/Android.mk
+++ b/src/gallium/drivers/iris/Android.mk
@@ -55,7 +55,7 @@
 
 LOCAL_STATIC_LIBRARIES := $(LIBIRIS_STATIC_LIBS)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -75,7 +75,7 @@
 
 LOCAL_STATIC_LIBRARIES := $(LIBIRIS_STATIC_LIBS)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -95,7 +95,7 @@
 
 LOCAL_STATIC_LIBRARIES := $(LIBIRIS_STATIC_LIBS)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -115,7 +115,7 @@
 
 LOCAL_STATIC_LIBRARIES := $(LIBIRIS_STATIC_LIBS)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -159,8 +159,10 @@
 	libmesa_intel_common \
 	libmesa_nir
 
+LOCAL_HEADER_LIBRARIES := \
+	libmesa_genxml
+
 LOCAL_WHOLE_STATIC_LIBRARIES := \
-	libmesa_genxml \
 	libmesa_blorp \
 	libmesa_intel_common \
 	libmesa_intel_compiler \
diff --git a/src/intel/Android.bp b/src/intel/Android.bp
new file mode 100644
index 0000000..447a1d9
--- /dev/null
+++ b/src/intel/Android.bp
@@ -0,0 +1,129 @@
+// Copyright © 2016 Intel Corporation
+// Copyright © 2016 Mauro Rossi <issor.oruam@gmail.com>
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+
+genrule_defaults {
+    name: "mesa_genxml_genrule_defaults",
+    tool_files: ["genxml/gen_pack_header.py"],
+    cmd: "python $(location) $(in) >$(out)",
+}
+
+genrule {
+    name: "mesa_genxml_gen4",
+    srcs: ["genxml/gen4.xml"],
+    out: ["genxml/gen4_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen45",
+    srcs: ["genxml/gen45.xml"],
+    out: ["genxml/gen45_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen5",
+    srcs: ["genxml/gen5.xml"],
+    out: ["genxml/gen5_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen6",
+    srcs: ["genxml/gen6.xml"],
+    out: ["genxml/gen6_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen7",
+    srcs: ["genxml/gen7.xml"],
+    out: ["genxml/gen7_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen75",
+    srcs: ["genxml/gen75.xml"],
+    out: ["genxml/gen75_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen8",
+    srcs: ["genxml/gen8.xml"],
+    out: ["genxml/gen8_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen9",
+    srcs: ["genxml/gen9.xml"],
+    out: ["genxml/gen9_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen10",
+    srcs: ["genxml/gen10.xml"],
+    out: ["genxml/gen10_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+genrule {
+    name: "mesa_genxml_gen11",
+    srcs: ["genxml/gen11.xml"],
+    out: ["genxml/gen11_pack.h"],
+    defaults: ["mesa_genxml_genrule_defaults"],
+}
+
+cc_library_headers {
+    name: "libmesa_genxml",
+    defaults: ["mesa_common_defaults"],
+    generated_headers: [
+        "mesa_genxml_genX",
+        "mesa_genxml_gen4",
+        "mesa_genxml_gen45",
+        "mesa_genxml_gen5",
+        "mesa_genxml_gen6",
+        "mesa_genxml_gen7",
+        "mesa_genxml_gen75",
+        "mesa_genxml_gen8",
+        "mesa_genxml_gen9",
+        "mesa_genxml_gen10",
+        "mesa_genxml_gen11",
+    ],
+    export_generated_headers: [
+        "mesa_genxml_genX",
+        "mesa_genxml_gen4",
+        "mesa_genxml_gen45",
+        "mesa_genxml_gen5",
+        "mesa_genxml_gen6",
+        "mesa_genxml_gen7",
+        "mesa_genxml_gen75",
+        "mesa_genxml_gen8",
+        "mesa_genxml_gen9",
+        "mesa_genxml_gen10",
+        "mesa_genxml_gen11",
+    ],
+    export_include_dirs: ["."],
+}
\ No newline at end of file
diff --git a/src/intel/Android.common.mk b/src/intel/Android.common.mk
index 245ba07..eb15f5e 100644
--- a/src/intel/Android.common.mk
+++ b/src/intel/Android.common.mk
@@ -49,7 +49,7 @@
 	libexpat
 endif
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
diff --git a/src/intel/Android.compiler.mk b/src/intel/Android.compiler.mk
index a8fa458..91c2101 100644
--- a/src/intel/Android.compiler.mk
+++ b/src/intel/Android.compiler.mk
@@ -53,7 +53,7 @@
 	@mkdir -p $(dir $@)
 	@cp -f $< $@
 
-LOCAL_STATIC_LIBRARIES = libmesa_genxml
+LOCAL_HEADER_LIBRARIES = libmesa_genxml
 
 LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, \
 	$(COMPILER_GENERATED_FILES))
diff --git a/src/intel/Android.genxml.mk b/src/intel/Android.genxml.mk
deleted file mode 100644
index 0a0c2ff..0000000
--- a/src/intel/Android.genxml.mk
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright © 2016 Intel Corporation
-# Copyright © 2016 Mauro Rossi <issor.oruam@gmail.com>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-#
-
-# ---------------------------------------
-# Build libmesa_genxml
-# ---------------------------------------
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libmesa_genxml
-
-LOCAL_MODULE_CLASS := STATIC_LIBRARIES
-
-intermediates := $(call local-generated-sources-dir)
-prebuilt_intermediates := $(MESA_TOP)/prebuilt-intermediates
-
-# dummy.c source file is generated to meet the build system's rules.
-LOCAL_GENERATED_SOURCES += $(intermediates)/dummy.c
-
-$(intermediates)/dummy.c:
-	@mkdir -p $(dir $@)
-	@echo "Gen Dummy: $(PRIVATE_MODULE) <= $(notdir $(@))"
-	$(hide) touch $@
-
-# This is the list of auto-generated files headers
-LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, $(GENXML_GENERATED_FILES))
-
-define header-gen
-	@mkdir -p $(dir $@)
-	@echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
-	$(hide) $(PRIVATE_SCRIPT) $(PRIVATE_SCRIPT_FLAGS) $(PRIVATE_XML) > $@
-endef
-
-$(intermediates)/genxml/genX_bits.h: $(prebuilt_intermediates)/genxml/genX_bits.h
-	@mkdir -p $(dir $@)
-	@cp -f $< $@
-
-$(intermediates)/genxml/gen4_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen4_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen4.xml
-$(intermediates)/genxml/gen4_pack.h: $(LOCAL_PATH)/genxml/gen4.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen45_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen45_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen45.xml
-$(intermediates)/genxml/gen45_pack.h: $(LOCAL_PATH)/genxml/gen45.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen5_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen5_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen5.xml
-$(intermediates)/genxml/gen5_pack.h: $(LOCAL_PATH)/genxml/gen5.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen6_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen6_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen6.xml
-$(intermediates)/genxml/gen6_pack.h: $(LOCAL_PATH)/genxml/gen6.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen7_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen7_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen7.xml
-$(intermediates)/genxml/gen7_pack.h: $(LOCAL_PATH)/genxml/gen7.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen75_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen75_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen75.xml
-$(intermediates)/genxml/gen75_pack.h: $(LOCAL_PATH)/genxml/gen75.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen8_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen8_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen8.xml
-$(intermediates)/genxml/gen8_pack.h: $(LOCAL_PATH)/genxml/gen8.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen9_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen9_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen9.xml
-$(intermediates)/genxml/gen9_pack.h: $(LOCAL_PATH)/genxml/gen9.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen10_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen10_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen10.xml
-$(intermediates)/genxml/gen10_pack.h: $(LOCAL_PATH)/genxml/gen10.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/gen11_pack.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/genxml/gen_pack_header.py
-$(intermediates)/genxml/gen11_pack.h: PRIVATE_XML := $(LOCAL_PATH)/genxml/gen11.xml
-$(intermediates)/genxml/gen11_pack.h: $(LOCAL_PATH)/genxml/gen11.xml $(LOCAL_PATH)/genxml/gen_pack_header.py
-	$(call header-gen)
-
-$(intermediates)/genxml/genX_xml.h: $(prebuilt_intermediates)/genxml/genX_xml.h
-	@mkdir -p $(dir $@)
-	@echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
-	@cp -f $< $@
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := \
-	$(MESA_TOP)/src/intel \
-	$(intermediates)
-
-include $(MESA_COMMON_MK)
-include $(BUILD_STATIC_LIBRARY)
diff --git a/src/intel/Android.isl.mk b/src/intel/Android.isl.mk
index 0d31711..eb533d0 100644
--- a/src/intel/Android.isl.mk
+++ b/src/intel/Android.isl.mk
@@ -41,7 +41,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -60,7 +60,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -79,7 +79,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -98,7 +98,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -117,7 +117,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -136,7 +136,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -155,7 +155,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -174,7 +174,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -193,7 +193,7 @@
 
 LOCAL_C_INCLUDES := $(LIBISL_GENX_COMMON_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_genxml
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -258,6 +258,9 @@
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(MESA_TOP)/src/intel
 
+LOCAL_HEADER_LIBRARIES := \
+	libmesa_genxml
+
 LOCAL_WHOLE_STATIC_LIBRARIES := \
 	libmesa_isl_gen4 \
 	libmesa_isl_gen5 \
@@ -268,7 +271,6 @@
 	libmesa_isl_gen9 \
 	libmesa_isl_gen10 \
 	libmesa_isl_gen11 \
-	libmesa_genxml \
 	libmesa_isl_tiled_memcpy
 
 ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
diff --git a/src/intel/Android.mk b/src/intel/Android.mk
index 9649814..32d1712 100644
--- a/src/intel/Android.mk
+++ b/src/intel/Android.mk
@@ -29,7 +29,6 @@
 include $(LOCAL_PATH)/Android.common.mk
 include $(LOCAL_PATH)/Android.compiler.mk
 include $(LOCAL_PATH)/Android.dev.mk
-include $(LOCAL_PATH)/Android.genxml.mk
 include $(LOCAL_PATH)/Android.isl.mk
 include $(LOCAL_PATH)/Android.perf.mk
 include $(LOCAL_PATH)/Android.vulkan.mk
diff --git a/src/intel/Android.vulkan.mk b/src/intel/Android.vulkan.mk
index 071462c..0d48064 100644
--- a/src/intel/Android.vulkan.mk
+++ b/src/intel/Android.vulkan.mk
@@ -123,12 +123,13 @@
 
 LOCAL_C_INCLUDES := $(ANV_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml
+LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints
 
 LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES)
 LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES)
 LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
 LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)
+LOCAL_HEADER_LIBRARIES += libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -146,12 +147,13 @@
 
 LOCAL_C_INCLUDES := $(ANV_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml
+LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints
 
 LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES)
 LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES)
 LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
 LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)
+LOCAL_HEADER_LIBRARIES += libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -169,12 +171,13 @@
 
 LOCAL_C_INCLUDES := $(ANV_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml
+LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints
 
 LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES)
 LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES)
 LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
 LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)
+LOCAL_HEADER_LIBRARIES += libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -192,12 +195,13 @@
 
 LOCAL_C_INCLUDES := $(ANV_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml
+LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints
 
 LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES)
 LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES)
 LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
 LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)
+LOCAL_HEADER_LIBRARIES += libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -215,12 +219,13 @@
 
 LOCAL_C_INCLUDES := $(ANV_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml
+LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints
 
 LOCAL_HEADER_LIBRARIES := $(ANV_HEADER_LIBRARIES)
 LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES)
 LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
 LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)
+LOCAL_HEADER_LIBRARIES += libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -238,10 +243,11 @@
 
 LOCAL_C_INCLUDES := $(ANV_INCLUDES)
 
-LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints libmesa_genxml
+LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_anv_entrypoints
 
 LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
 LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)
+LOCAL_HEADER_LIBRARIES += libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
@@ -265,7 +271,6 @@
 
 LOCAL_WHOLE_STATIC_LIBRARIES := \
 	libmesa_anv_entrypoints \
-	libmesa_genxml \
 	libmesa_git_sha1 \
 	libmesa_vulkan_util
 
@@ -290,6 +295,7 @@
 LOCAL_STATIC_LIBRARIES := $(ANV_STATIC_LIBRARIES)
 LOCAL_SHARED_LIBRARIES := $(ANV_SHARED_LIBRARIES)
 LOCAL_HEADER_LIBRARIES += $(VULKAN_COMMON_HEADER_LIBRARIES)
+LOCAL_HEADER_LIBRARIES += libmesa_genxml
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
diff --git a/src/mesa/Android.bp b/src/mesa/Android.bp
new file mode 100644
index 0000000..711254c
--- /dev/null
+++ b/src/mesa/Android.bp
@@ -0,0 +1,82 @@
+// Copyright 2012 Intel Corporation
+// Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+// Copyright (C) 2010-2011 LunarG Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+build = ["Android.sources.bp"]
+
+//
+// The libmesa_glsl_utils libraries allow us to avoid a circular dependency
+// between core mesa and glsl.
+//
+cc_library_static {
+    name: "libmesa_glsl_utils",
+    defaults: ["mesa_common_defaults"],
+    host_supported: true,
+
+    srcs: [
+        "main/extensions_table.c",
+        "main/imports.c",
+        "program/symbol_table.c",
+        "program/dummy_errors.c",
+    ],
+    header_libs: ["libmesa_glsl_utils_includes"],
+
+    target: {
+        host: {
+            cflags: ["-D_POSIX_C_SOURCE=199309L"],
+        },
+    },
+}
+
+cc_binary_host {
+    name: "mesa_gen_matypes",
+    defaults: ["mesa_common_defaults"],
+    srcs: ["x86/gen_matypes.c"],
+    header_libs: ["mesa_mapi_headers"],
+    compile_multilib: "32",
+}
+
+cc_library_static {
+    name: "libmesa_sse41",
+    defaults: ["mesa_common_defaults"],
+
+    srcs: [":mesa_x86_sse41_srcs"],
+
+    cflags: [
+        "-msse4.1",
+        "-mstackrealign",
+    ],
+    header_libs: ["libmesa_sse41_includes"],
+
+    enabled: false,
+    arch: {
+        x86: {
+            sse4_1: {
+                enabled: true,
+            },
+        },
+        x86_64: {
+            sse4_1: {
+                enabled: true,
+            },
+        },
+    },
+}
diff --git a/src/mesa/Android.libmesa_glsl_utils.mk b/src/mesa/Android.libmesa_glsl_utils.mk
deleted file mode 100644
index 0d83cd5..0000000
--- a/src/mesa/Android.libmesa_glsl_utils.mk
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright 2012 Intel Corporation
-# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
-# Copyright (C) 2010-2011 LunarG Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-LOCAL_PATH := $(call my-dir)
-
-#
-# The libmesa_glsl_utils libraries allow us to avoid a circular dependency
-# between core mesa and glsl.
-#
-
-# ---------------------------------------
-# libmesa_glsl_utils.a for target
-# ---------------------------------------
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libmesa_glsl_utils
-
-LOCAL_C_INCLUDES := \
-	$(MESA_TOP)/src/compiler/nir \
-	$(MESA_TOP)/src/mapi \
-	$(MESA_TOP)/src/gallium/include \
-	$(MESA_TOP)/src/gallium/auxiliary
-
-LOCAL_SRC_FILES := \
-	main/extensions_table.c \
-	main/imports.c \
-	program/symbol_table.c \
-	program/dummy_errors.c
-
-include $(MESA_COMMON_MK)
-include $(BUILD_STATIC_LIBRARY)
-
-# ---------------------------------------
-# libmesa_glsl_utils.a for host
-# ---------------------------------------
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libmesa_glsl_utils
-LOCAL_IS_HOST_MODULE := true
-LOCAL_CFLAGS := -D_POSIX_C_SOURCE=199309L
-
-LOCAL_C_INCLUDES := \
-	$(MESA_TOP)/src/compiler/nir \
-	$(MESA_TOP)/src/mapi \
-	$(MESA_TOP)/src/gallium/include \
-	$(MESA_TOP)/src/gallium/auxiliary
-
-LOCAL_SRC_FILES := \
-	main/extensions_table.c \
-	main/imports.c \
-	program/symbol_table.c \
-	program/dummy_errors.c
-
-include $(MESA_COMMON_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/src/mesa/Android.libmesa_sse41.mk b/src/mesa/Android.libmesa_sse41.mk
deleted file mode 100644
index de19a1f..0000000
--- a/src/mesa/Android.libmesa_sse41.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2012 Intel Corporation
-# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
-# Copyright (C) 2010-2011 LunarG Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
-
-LOCAL_PATH := $(call my-dir)
-
-include $(LOCAL_PATH)/Makefile.sources
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libmesa_sse41
-
-LOCAL_SRC_FILES += \
-	$(X86_SSE41_FILES)
-
-LOCAL_CFLAGS := \
-	-msse4.1 -mstackrealign
-
-LOCAL_C_INCLUDES := \
-	$(MESA_TOP)/src/mapi \
-	$(MESA_TOP)/src/gallium/include \
-	$(MESA_TOP)/src/gallium/auxiliary
-
-include $(MESA_COMMON_MK)
-include $(BUILD_STATIC_LIBRARY)
-
-endif
diff --git a/src/mesa/Android.mesa_gen_matypes.mk b/src/mesa/Android.mesa_gen_matypes.mk
deleted file mode 100644
index 4fcf73a..0000000
--- a/src/mesa/Android.mesa_gen_matypes.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2012 Intel Corporation
-# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
-# Copyright (C) 2010-2011 LunarG Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-# ---------------------------------------------------------------------
-# host executable: mesa_gen_matypes
-# ---------------------------------------------------------------------
-
-ifeq ($(strip $(MESA_ENABLE_ASM)),true)
-ifeq ($(TARGET_ARCH),x86)
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := mesa_gen_matypes
-LOCAL_IS_HOST_MODULE := true
-
-LOCAL_C_INCLUDES := \
-	$(MESA_TOP)/src/mapi
-
-LOCAL_SRC_FILES := \
-	x86/gen_matypes.c
-
-include $(MESA_COMMON_MK)
-include $(BUILD_HOST_EXECUTABLE)
-
-endif # x86
-endif # MESA_ENABLE_ASM
diff --git a/src/mesa/Android.mk b/src/mesa/Android.mk
index e89de82..138c5c5 100644
--- a/src/mesa/Android.mk
+++ b/src/mesa/Android.mk
@@ -20,11 +20,8 @@
 
 LOCAL_PATH := $(call my-dir)
 
-include $(LOCAL_PATH)/Android.mesa_gen_matypes.mk
-include $(LOCAL_PATH)/Android.libmesa_glsl_utils.mk
 include $(LOCAL_PATH)/Android.libmesa_dricore.mk
 include $(LOCAL_PATH)/Android.libmesa_st_mesa.mk
-include $(LOCAL_PATH)/Android.libmesa_sse41.mk
 include $(LOCAL_PATH)/Android.libmesa_git_sha1.mk
 
 include $(LOCAL_PATH)/program/Android.mk
diff --git a/src/mesa/Android.sources.bp b/src/mesa/Android.sources.bp
new file mode 100644
index 0000000..0e3d255
--- /dev/null
+++ b/src/mesa/Android.sources.bp
@@ -0,0 +1,9 @@
+// Generated by aosp-gen-bp.sh
+filegroup {
+    name: "mesa_x86_sse41_srcs",
+    visibility: [":__subpackages__"],
+    srcs: [
+        "main/streaming-load-memcpy.c",
+        "main/sse_minmax.c",
+    ],
+}
diff --git a/src/mesa/drivers/dri/i965/Android.mk b/src/mesa/drivers/dri/i965/Android.mk
index 29b4614..d937046 100644
--- a/src/mesa/drivers/dri/i965/Android.mk
+++ b/src/mesa/drivers/dri/i965/Android.mk
@@ -36,7 +36,6 @@
 	$(MESA_DRI_SHARED_LIBRARIES)
 
 I965_PERGEN_STATIC_LIBRARIES := \
-	libmesa_genxml \
 	libmesa_nir
 
 I965_PERGEN_LIBS := \
@@ -65,6 +64,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=40
@@ -86,6 +86,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=45
@@ -107,6 +108,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=50
@@ -128,6 +130,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=60
@@ -149,6 +152,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=70
@@ -170,6 +174,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=75
@@ -191,6 +196,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=80
@@ -212,6 +218,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=90
@@ -233,6 +240,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=100
@@ -254,6 +262,7 @@
 
 LOCAL_SHARED_LIBRARIES := $(I965_PERGEN_SHARED_LIBRARIES)
 
+LOCAL_HEADER_LIBRARIES := libmesa_genxml
 LOCAL_STATIC_LIBRARIES := $(I965_PERGEN_STATIC_LIBRARIES)
 
 LOCAL_CFLAGS := -DGEN_VERSIONx10=110