Merge "Remove USE_NINJA=false"
diff --git a/core/cleanbuild.mk b/core/cleanbuild.mk
index c5b15bc..0d6a406 100644
--- a/core/cleanbuild.mk
+++ b/core/cleanbuild.mk
@@ -253,6 +253,7 @@
 	$(PRODUCT_OUT)/obj/EXECUTABLES/init_intermediates \
 	$(PRODUCT_OUT)/obj/ETC/mac_permissions.xml_intermediates \
 	$(PRODUCT_OUT)/obj/ETC/sepolicy_intermediates \
+	$(PRODUCT_OUT)/obj/ETC/sepolicy.recovery_intermediates \
 	$(PRODUCT_OUT)/obj/ETC/init.environ.rc_intermediates
 
 # The files/dirs to delete during a dataclean, which removes any files
diff --git a/core/java_common.mk b/core/java_common.mk
index ddf2958..d9ce9df 100644
--- a/core/java_common.mk
+++ b/core/java_common.mk
@@ -4,7 +4,11 @@
 ## Java version
 ###########################################################
 ifeq (,$(LOCAL_JAVA_LANGUAGE_VERSION))
-  LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+  ifeq (,$(LEGACY_USE_JAVA7))
+    LOCAL_JAVA_LANGUAGE_VERSION := 1.8
+  else
+    LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+  endif
 endif
 LOCAL_JAVACFLAGS += -source $(LOCAL_JAVA_LANGUAGE_VERSION) -target $(LOCAL_JAVA_LANGUAGE_VERSION)
 
diff --git a/core/ninja.mk b/core/ninja.mk
index 2878514..b7729c1 100644
--- a/core/ninja.mk
+++ b/core/ninja.mk
@@ -116,6 +116,10 @@
 NINJA_ARGS += "-v"
 endif
 
+# Make multiple rules to generate the same target an error instead of
+# proceeding with undefined behavior.
+NINJA_ARGS += -w dupbuild=err
+
 ifdef USE_GOMA
 KATI_MAKEPARALLEL := $(MAKEPARALLEL)
 # Ninja runs remote jobs (i.e., commands which contain gomacc) with
@@ -159,7 +163,8 @@
 KATI_LD := $(CLANG_CXX) $(CLANG_HOST_GLOBAL_LDFLAGS)
 # Build static ckati. Unfortunately Mac OS X doesn't officially support static exectuables.
 ifeq ($(BUILD_OS),linux)
-KATI_LD += -static
+# We need everything in libpthread.a otherwise C++11's threading library will be disabled.
+KATI_LD += -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -ldl
 endif
 
 KATI_INTERMEDIATES_PATH := $(HOST_OUT_INTERMEDIATES)/EXECUTABLES/ckati_intermediates