Merge "Allow clang to build host binaries."
diff --git a/core/dex_preopt.mk b/core/dex_preopt.mk
index c9530c2..160f128 100644
--- a/core/dex_preopt.mk
+++ b/core/dex_preopt.mk
@@ -8,8 +8,8 @@
 endif
 
 # list of boot classpath jars for dexpreopt
-DEXPREOPT_BOOT_JARS := $(PRODUCT_BOOT_JARS)
-DEXPREOPT_BOOT_JARS_MODULES := $(subst :, ,$(DEXPREOPT_BOOT_JARS))
+DEXPREOPT_BOOT_JARS := $(subst $(space),:,$(PRODUCT_BOOT_JARS))
+DEXPREOPT_BOOT_JARS_MODULES := $(PRODUCT_BOOT_JARS)
 PRODUCT_BOOTCLASSPATH := $(subst $(space),:,$(foreach m,$(DEXPREOPT_BOOT_JARS_MODULES),/system/framework/$(m).jar))
 
 DEXPREOPT_BUILD_DIR := $(OUT_DIR)
diff --git a/core/dex_preopt_odex_install.mk b/core/dex_preopt_odex_install.mk
index 70b83a4..e0932a9 100644
--- a/core/dex_preopt_odex_install.mk
+++ b/core/dex_preopt_odex_install.mk
@@ -8,15 +8,13 @@
   LOCAL_DEX_PREOPT :=
 else # WITH_DEXPREOPT=true
   ifeq (,$(TARGET_BUILD_APPS)) # TARGET_BUILD_APPS empty
-    ifneq (,$(LOCAL_SRC_FILES)) # LOCAL_SRC_FILES not empty
-      ifndef LOCAL_DEX_PREOPT # LOCAL_DEX_PREOPT undefined
-        ifeq (,$(LOCAL_APK_LIBRARIES)) # LOCAL_APK_LIBRARIES empty
-          LOCAL_DEX_PREOPT := $(DEX_PREOPT_DEFAULT)
-        else # LOCAL_APK_LIBRARIES not empty
-          LOCAL_DEX_PREOPT := nostripping
-        endif # LOCAL_APK_LIBRARIES not empty
-      endif # LOCAL_DEX_PREOPT undefined
-    endif # LOCAL_SRC_FILES not empty
+    ifndef LOCAL_DEX_PREOPT # LOCAL_DEX_PREOPT undefined
+      ifeq (,$(LOCAL_APK_LIBRARIES)) # LOCAL_APK_LIBRARIES empty
+        LOCAL_DEX_PREOPT := $(DEX_PREOPT_DEFAULT)
+      else # LOCAL_APK_LIBRARIES not empty
+        LOCAL_DEX_PREOPT := nostripping
+      endif # LOCAL_APK_LIBRARIES not empty
+    endif # LOCAL_DEX_PREOPT undefined
   endif # TARGET_BUILD_APPS empty
 endif # WITH_DEXPREOPT=true
 ifeq (false,$(LOCAL_DEX_PREOPT))
diff --git a/core/product_config.mk b/core/product_config.mk
index a2be30b..0574c66 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -280,7 +280,7 @@
 #############################################################################
 
 # A list of module names of BOOTCLASSPATH (jar files)
-PRODUCT_BOOT_JARS := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BOOT_JARS)
+PRODUCT_BOOT_JARS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BOOT_JARS))
 
 # Find the device that this product maps to.
 TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)
diff --git a/target/board/generic/BoardConfig.mk b/target/board/generic/BoardConfig.mk
index 8f698ec..e0ad23a 100644
--- a/target/board/generic/BoardConfig.mk
+++ b/target/board/generic/BoardConfig.mk
@@ -76,4 +76,7 @@
 TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true
 
 BOARD_SEPOLICY_DIRS += build/target/board/generic/sepolicy
-BOARD_SEPOLICY_UNION += domain.te surfaceflinger.te
+BOARD_SEPOLICY_UNION += \
+        bootanim.te \
+        domain.te \
+        surfaceflinger.te
diff --git a/target/board/generic/sepolicy/bootanim.te b/target/board/generic/sepolicy/bootanim.te
new file mode 100644
index 0000000..d6506e1
--- /dev/null
+++ b/target/board/generic/sepolicy/bootanim.te
@@ -0,0 +1,2 @@
+allow bootanim self:process execmem;
+allow bootanim ashmem_device:chr_file execute;
diff --git a/target/board/generic/sepolicy/surfaceflinger.te b/target/board/generic/sepolicy/surfaceflinger.te
index 9523630..4c35469 100644
--- a/target/board/generic/sepolicy/surfaceflinger.te
+++ b/target/board/generic/sepolicy/surfaceflinger.te
@@ -1 +1,2 @@
 allow surfaceflinger self:process execmem;
+allow surfaceflinger ashmem_device:chr_file execute;
diff --git a/target/product/base.mk b/target/product/base.mk
index 6725c0d..68e3ff3 100644
--- a/target/product/base.mk
+++ b/target/product/base.mk
@@ -31,10 +31,10 @@
     dhcpcd-run-hooks \
     dnsmasq \
     framework \
+    framework2 \
     fsck_msdos \
     ime \
     javax.obex \
-    libSR_AudioIn \
     libandroid \
     libandroid_runtime \
     libandroid_servers \
diff --git a/target/product/core_base.mk b/target/product/core_base.mk
index cde2b85..658e502 100644
--- a/target/product/core_base.mk
+++ b/target/product/core_base.mk
@@ -67,5 +67,20 @@
     voip-common
 
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_minimal.mk)
-# Override the PRODUCT_BOOT_JARS set in core_minimal.mk
-PRODUCT_BOOT_JARS := core:conscrypt:okhttp:core-junit:bouncycastle:ext:framework:framework2:telephony-common:voip-common:mms-common:android.policy:services:apache-xml:webviewchromium
+# Override the PRODUCT_BOOT_JARS set in core_minimal.mk. The order matters.
+PRODUCT_BOOT_JARS := \
+    core \
+    conscrypt \
+    okhttp \
+    core-junit \
+    bouncycastle \
+    ext \
+    framework \
+    framework2 \
+    telephony-common \
+    voip-common \
+    mms-common \
+    android.policy \
+    services \
+    apache-xml \
+    webviewchromium
diff --git a/target/product/core_minimal.mk b/target/product/core_minimal.mk
index 159e7b2..21a6e8b 100644
--- a/target/product/core_minimal.mk
+++ b/target/product/core_minimal.mk
@@ -57,7 +57,20 @@
     sensorservice \
     uiautomator
 
-PRODUCT_BOOT_JARS := core:conscrypt:okhttp:core-junit:bouncycastle:ext:framework:framework2:android.policy:services:apache-xml:webviewchromium
+# The order of PRODUCT_BOOT_JARS matters.
+PRODUCT_BOOT_JARS := \
+    core \
+    conscrypt \
+    okhttp \
+    core-junit \
+    bouncycastle \
+    ext \
+    framework \
+    framework2 \
+    android.policy \
+    services \
+    apache-xml \
+    webviewchromium
 
 PRODUCT_RUNTIMES := runtime_libdvm_default
 PRODUCT_RUNTIMES += runtime_libart