From 824344af004bc87a7b7a301e53814258c8412e4f Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Tue, 27 May 2014 13:03:36 -0700 Subject: [PATCH] Support LOCAL_CLANG with arch/bit suffix. Precedence: LOCAL_CLANG_ > LOCAL_CLANG_<32|64> > LOCAL_CLANG. Bug: 15257067 Change-Id: I86b72f3bec162834591287d3b5231b5f40f9a431 --- core/binary.mk | 28 ++++++++++++++++++---------- core/clear_vars.mk | 8 +++++++- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/core/binary.mk b/core/binary.mk index 46f36454b..bee4428f6 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -122,6 +122,14 @@ my_asflags += $(LOCAL_ASFLAGS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $ my_c_includes += $(LOCAL_C_INCLUDES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_C_INCLUDES_$(my_32_64_bit_suffix)) my_generated_sources += $(LOCAL_GENERATED_SOURCES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_GENERATED_SOURCES_$(my_32_64_bit_suffix)) +my_clang := $(LOCAL_CLANG) +ifdef LOCAL_CLANG_$(my_32_64_bit_suffix) +my_clang := $(LOCAL_CLANG_$(my_32_64_bit_suffix)) +endif +ifdef LOCAL_CLANG_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) +my_clang := $(LOCAL_CLANG_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) +endif + # arch-specific static libraries go first so that generic ones can depend on them my_static_libraries := $(LOCAL_STATIC_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_STATIC_LIBRARIES_$(my_32_64_bit_suffix)) $(my_static_libraries) my_whole_static_libraries := $(LOCAL_WHOLE_STATIC_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_WHOLE_STATIC_LIBRARIES_$(my_32_64_bit_suffix)) $(my_whole_static_libraries) @@ -145,7 +153,7 @@ b_lib := endif ifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true) - LOCAL_CLANG := true + my_clang := true my_cflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS) my_ldflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS) my_shared_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES) @@ -153,7 +161,7 @@ ifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true) endif ifeq ($(strip $($(LOCAL_2ND_ARCH_VAR_PREFIX)WITHOUT_$(my_prefix)CLANG)),true) - LOCAL_CLANG := + my_clang := endif # Add in libcompiler_rt for all regular device builds @@ -219,7 +227,7 @@ my_target_c_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_C_INCLUDES) my_target_global_cppflags := endif # LOCAL_SDK_VERSION -ifeq ($(LOCAL_CLANG),true) +ifeq ($(my_clang),true) my_target_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_TARGET_GLOBAL_CFLAGS) my_target_global_cppflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_TARGET_GLOBAL_CPPFLAGS) my_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_TARGET_GLOBAL_LDFLAGS) @@ -228,7 +236,7 @@ else my_target_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CFLAGS) my_target_global_cppflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CPPFLAGS) my_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS) -endif # LOCAL_CLANG +endif # my_clang $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_PROJECT_INCLUDES := $(my_target_project_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_C_INCLUDES := $(my_target_c_includes) @@ -238,7 +246,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_glob else # LOCAL_IS_HOST_MODULE -ifeq ($(LOCAL_CLANG),true) +ifeq ($(my_clang),true) my_host_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_HOST_GLOBAL_CFLAGS) my_host_global_cppflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_HOST_GLOBAL_CPPFLAGS) my_host_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_HOST_GLOBAL_LDFLAGS) @@ -248,7 +256,7 @@ my_host_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_CFLAGS) my_host_global_cppflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_CPPFLAGS) my_host_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_LDFLAGS) my_host_c_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_C_INCLUDES) -endif # LOCAL_CLANG +endif # my_clang $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_C_INCLUDES := $(my_host_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_CFLAGS := $(my_host_global_cflags) @@ -277,7 +285,7 @@ else endif ifeq ($(strip $(my_cc)),) - ifeq ($(strip $(LOCAL_CLANG)),true) + ifeq ($(strip $(my_clang)),true) my_cc := $(CLANG) else my_cc := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)CC) @@ -293,7 +301,7 @@ endif $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CC := $(my_cc) ifeq ($(strip $(my_cxx)),) - ifeq ($(strip $(LOCAL_CLANG)),true) + ifeq ($(strip $(my_clang)),true) my_cxx := $(CLANG_CXX) else my_cxx := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)CXX) @@ -342,7 +350,7 @@ normal_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),thumb) # actually used (although they are usually empty). arm_objects_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)$(arm_objects_mode)_CFLAGS) normal_objects_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)$(normal_objects_mode)_CFLAGS) -ifeq ($(strip $(LOCAL_CLANG)),true) +ifeq ($(strip $(my_clang)),true) arm_objects_cflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(arm_objects_cflags)) normal_objects_cflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(normal_objects_cflags)) endif @@ -873,7 +881,7 @@ endif # Rule-specific variable definitions ########################################################### -ifeq ($(LOCAL_CLANG),true) +ifeq ($(my_clang),true) my_cflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(my_cflags)) my_cppflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(my_cppflags)) my_asflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(my_asflags)) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index be1def1aa..801b0faf2 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -145,6 +145,7 @@ LOCAL_HAL_STATIC_LIBRARIES:= LOCAL_NO_SYNTAX_CHECK:= LOCAL_NO_STATIC_ANALYZER:= LOCAL_32_BIT_ONLY:= # '',true +LOCAL_MULTILIB:= LOCAL_MODULE_TARGET_ARCH:= LOCAL_MODULE_TARGET_ARCH_WARN:= LOCAL_MODULE_UNSUPPORTED_TARGET_ARCH:= @@ -167,6 +168,7 @@ LOCAL_STATIC_LIBRARIES_$(TARGET_ARCH):= LOCAL_WHOLE_STATIC_LIBRARIES_$(TARGET_ARCH):= LOCAL_GENERATED_SOURCES_$(TARGET_ARCH):= LOCAL_REQUIRED_MODULES_$(TARGET_ARCH):= +LOCAL_CLANG_$(TARGET_ARCH):= ifdef TARGET_2ND_ARCH LOCAL_SRC_FILES_$(TARGET_2ND_ARCH):= LOCAL_CFLAGS_$(TARGET_2ND_ARCH):= @@ -180,6 +182,7 @@ LOCAL_STATIC_LIBRARIES_$(TARGET_2ND_ARCH):= LOCAL_WHOLE_STATIC_LIBRARIES_$(TARGET_2ND_ARCH):= LOCAL_GENERATED_SOURCES_$(TARGET_2ND_ARCH):= LOCAL_REQUIRED_MODULES_$(TARGET_2ND_ARCH):= +LOCAL_CLANG_$(TARGET_2ND_ARCH):= endif LOCAL_SRC_FILES_$(HOST_ARCH):= LOCAL_CFLAGS_$(HOST_ARCH):= @@ -193,6 +196,7 @@ LOCAL_STATIC_LIBRARIES_$(HOST_ARCH):= LOCAL_WHOLE_STATIC_LIBRARIES_$(HOST_ARCH):= LOCAL_GENERATED_SOURCES_$(HOST_ARCH):= LOCAL_REQUIRED_MODULES_$(HOST_ARCH):= +LOCAL_CLANG_$(HOST_ARCH):= ifdef HOST_2ND_ARCH LOCAL_SRC_FILES_$(HOST_2ND_ARCH):= LOCAL_CFLAGS_$(HOST_2ND_ARCH):= @@ -206,6 +210,7 @@ LOCAL_STATIC_LIBRARIES_$(HOST_2ND_ARCH):= LOCAL_WHOLE_STATIC_LIBRARIES_$(HOST_2ND_ARCH):= LOCAL_GENERATED_SOURCES_$(HOST_2ND_ARCH):= LOCAL_REQUIRED_MODULES_$(HOST_2ND_ARCH):= +LOCAL_CLANG_$(HOST_2ND_ARCH):= endif LOCAL_SRC_FILES_32:= @@ -232,7 +237,8 @@ LOCAL_MODULE_PATH_32:= LOCAL_MODULE_PATH_64:= LOCAL_MODULE_STEM_32:= LOCAL_MODULE_STEM_64:= -LOCAL_MULTILIB:= +LOCAL_CLANG_32:= +LOCAL_CLANG_64:= # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time.