diff --git a/core/binary.mk b/core/binary.mk index d3d050e68..ba559354f 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -40,6 +40,8 @@ my_shared_libraries := $(LOCAL_SHARED_LIBRARIES) my_cflags := $(LOCAL_CFLAGS) my_conlyflags := $(LOCAL_CONLYFLAGS) my_cppflags := $(LOCAL_CPPFLAGS) +my_cflags_no_override := $(GLOBAL_CFLAGS_NO_OVERRIDE) +my_cppflags_no_override := $(GLOBAL_CPPFLAGS_NO_OVERRIDE) my_ldflags := $(LOCAL_LDFLAGS) my_ldlibs := $(LOCAL_LDLIBS) my_asflags := $(LOCAL_ASFLAGS) @@ -1031,6 +1033,8 @@ ifeq ($(my_clang),true) my_cflags += $(LOCAL_CLANG_CFLAGS) my_conlyflags += $(LOCAL_CLANG_CONLYFLAGS) my_cppflags += $(LOCAL_CLANG_CPPFLAGS) +my_cflags_no_override += $(GLOBAL_CLANG_CFLAGS_NO_OVERRIDE) +my_cppflags_no_override += $(GLOBAL_CLANG_CPPFLAGS_NO_OVERRIDE) my_asflags += $(LOCAL_CLANG_ASFLAGS) my_ldflags += $(LOCAL_CLANG_LDFLAGS) my_cflags += $(LOCAL_CLANG_CFLAGS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_CLANG_CFLAGS_$(my_32_64_bit_suffix)) @@ -1055,6 +1059,8 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(my_asflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CONLYFLAGS := $(my_conlyflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CFLAGS := $(my_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPPFLAGS := $(my_cppflags) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CFLAGS_NO_OVERRIDE := $(my_cflags_no_override) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPPFLAGS_NO_OVERRIDE := $(my_cppflags_no_override) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RTTI_FLAG := $(LOCAL_RTTI_FLAG) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEBUG_CFLAGS := $(debug_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(my_c_includes) diff --git a/core/config.mk b/core/config.mk index 502dd7a73..07c392adb 100644 --- a/core/config.mk +++ b/core/config.mk @@ -117,10 +117,15 @@ COMMON_RELEASE_CFLAGS:= -DNDEBUG -UDEBUG COMMON_GLOBAL_CPPFLAGS:= $(COMMON_GLOBAL_CFLAGS) -Wsign-promo -std=gnu++11 COMMON_RELEASE_CPPFLAGS:= $(COMMON_RELEASE_CFLAGS) -GLOBAL_CFLAGS_NO_OVERRIDE := \ +GLOBAL_CFLAGS_NO_OVERRIDE := \ -Werror=int-to-pointer-cast \ -Werror=pointer-to-int-cast \ +GLOBAL_CLANG_CFLAGS_NO_OVERRIDE := \ + -Werror=address-of-temporary \ + -Werror=null-dereference \ + -Werror=return-type \ + GLOBAL_CPPFLAGS_NO_OVERRIDE := # Set the extensions used for various packages diff --git a/core/definitions.mk b/core/definitions.mk index db51f9497..c1841dc2b 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1032,8 +1032,8 @@ $(hide) $(PRIVATE_CXX) \ $(PRIVATE_CFLAGS) \ $(PRIVATE_CPPFLAGS) \ $(PRIVATE_DEBUG_CFLAGS) \ - $(GLOBAL_CFLAGS_NO_OVERRIDE) \ - $(GLOBAL_CPPFLAGS_NO_OVERRIDE) \ + $(PRIVATE_CFLAGS_NO_OVERRIDE) \ + $(PRIVATE_CPPFLAGS_NO_OVERRIDE) \ -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< $(transform-d-to-p) endef @@ -1070,7 +1070,7 @@ $(call transform-c-or-s-to-o-no-deps, \ $(PRIVATE_CFLAGS) \ $(PRIVATE_CONLYFLAGS) \ $(PRIVATE_DEBUG_CFLAGS) \ - $(GLOBAL_CFLAGS_NO_OVERRIDE)) + $(PRIVATE_CFLAGS_NO_OVERRIDE)) endef define transform-s-to-o-no-deps @@ -1137,6 +1137,8 @@ $(hide) $(PRIVATE_CXX) \ $(PRIVATE_CFLAGS) \ $(PRIVATE_CPPFLAGS) \ $(PRIVATE_DEBUG_CFLAGS) \ + $(PRIVATE_CFLAGS_NO_OVERRIDE) \ + $(PRIVATE_CPPFLAGS_NO_OVERRIDE) \ -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< $(transform-d-to-p) endef @@ -1163,6 +1165,7 @@ $(hide) $(PRIVATE_CC) \ $(PRIVATE_HOST_GLOBAL_CONLYFLAGS) \ ) \ $(1) \ + $(PRIVATE_CFLAGS_NO_OVERRIDE) \ -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< endef diff --git a/core/product.mk b/core/product.mk index 46fad8951..ac5f85440 100644 --- a/core/product.mk +++ b/core/product.mk @@ -270,6 +270,7 @@ _product_stash_var_list += \ _product_stash_var_list += \ GLOBAL_CFLAGS_NO_OVERRIDE \ GLOBAL_CPPFLAGS_NO_OVERRIDE \ + GLOBAL_CLANG_CFLAGS_NO_OVERRIDE \ # # Stash values of the variables in _product_stash_var_list.