Loading core/binary.mk +37 −9 Original line number Diff line number Diff line Loading @@ -118,9 +118,6 @@ endif my_compiler_dependencies := ifeq ($(strip $(LOCAL_CLANG)),true) LOCAL_CFLAGS += $(CLANG_CONFIG_EXTRA_CFLAGS) LOCAL_ASFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) LOCAL_LDFLAGS += $(CLANG_CONFIG_EXTRA_LDFLAGS) my_compiler_dependencies := $(CLANG) $(CLANG_CXX) endif Loading Loading @@ -162,16 +159,40 @@ my_target_c_includes := $(TARGET_C_INCLUDES) endif # LOCAL_SDK_VERSION ifeq ($(LOCAL_CLANG),true) my_target_global_cflags := $(TARGET_GLOBAL_CLANG_FLAGS) my_target_global_cflags := $(CLANG_TARGET_GLOBAL_CFLAGS) my_target_global_cppflags := $(CLANG_TARGET_GLOBAL_CPPFLAGS) my_target_global_ldflags := $(CLANG_TARGET_GLOBAL_LDFLAGS) my_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES) else my_target_global_cflags := $(TARGET_GLOBAL_CFLAGS) my_target_global_cppflags := $(TARGET_GLOBAL_CPPFLAGS) my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS) endif # LOCAL_CLANG $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_PROJECT_INCLUDES := $(my_target_project_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_C_INCLUDES := $(my_target_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CFLAGS := $(my_target_global_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(TARGET_GLOBAL_CPPFLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(my_target_global_cppflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags) ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),) ifeq ($(LOCAL_CLANG),true) my_host_global_cflags := $(CLANG_HOST_GLOBAL_CFLAGS) my_host_global_cppflags := $(CLANG_HOST_GLOBAL_CPPFLAGS) my_host_global_ldflags := $(CLANG_HOST_GLOBAL_LDFLAGS) my_host_c_includes := $(HOST_C_INCLUDES) $(CLANG_CONFIG_EXTRA_HOST_C_INCLUDES) else my_host_global_cflags := $(HOST_GLOBAL_CFLAGS) my_host_global_cppflags := $(HOST_GLOBAL_CPPFLAGS) my_host_global_ldflags := $(HOST_GLOBAL_LDFLAGS) my_host_c_includes := $(HOST_C_INCLUDES) endif # LOCAL_CLANG $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_C_INCLUDES := $(my_host_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_CFLAGS := $(my_host_global_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_CPPFLAGS := $(my_host_global_cppflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_LDFLAGS := $(my_host_global_ldflags) endif # LOCAL_IS_HOST_MODULE ########################################################### ## Define PRIVATE_ variables used by multiple module types Loading Loading @@ -257,12 +278,11 @@ normal_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),thumb) # Read the values from something like TARGET_arm_CFLAGS or # TARGET_thumb_CFLAGS. HOST_(arm|thumb)_CFLAGS values aren't # actually used (although they are usually empty). ifeq ($(strip $(LOCAL_CLANG)),true) arm_objects_cflags := $($(my_prefix)$(arm_objects_mode)_CLANG_CFLAGS) normal_objects_cflags := $($(my_prefix)$(normal_objects_mode)_CLANG_CFLAGS) else arm_objects_cflags := $($(my_prefix)$(arm_objects_mode)_CFLAGS) normal_objects_cflags := $($(my_prefix)$(normal_objects_mode)_CFLAGS) ifeq ($(strip $(LOCAL_CLANG)),true) arm_objects_cflags := $(call convert-to-$(my_host)clang-flags,$(arm_objects_cflags)) normal_objects_cflags := $(call convert-to-$(my_host)clang-flags,$(normal_objects_cflags)) endif else Loading Loading @@ -751,6 +771,14 @@ endif ########################################################### # Rule-specific variable definitions ########################################################### ifeq ($(LOCAL_CLANG),true) LOCAL_CFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_CFLAGS)) LOCAL_CPPFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_CPPFLAGS)) LOCAL_ASFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_ASFLAGS)) LOCAL_LDFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_LDFLAGS)) endif $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_YACCFLAGS := $(LOCAL_YACCFLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(LOCAL_ASFLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CONLYFLAGS := $(LOCAL_CONLYFLAGS) Loading core/definitions.mk +7 −7 Original line number Diff line number Diff line Loading @@ -1032,11 +1032,11 @@ $(hide) $(PRIVATE_CXX) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(filter-out $(PRIVATE_C_INCLUDES), \ $(HOST_PROJECT_INCLUDES) \ $(HOST_C_INCLUDES)))) \ $(PRIVATE_HOST_C_INCLUDES)))) \ -c \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_CFLAGS) \ $(HOST_GLOBAL_CPPFLAGS) \ $(PRIVATE_HOST_GLOBAL_CFLAGS) \ $(PRIVATE_HOST_GLOBAL_CPPFLAGS) \ ) \ $(PRIVATE_CFLAGS) \ $(PRIVATE_CPPFLAGS) \ Loading @@ -1060,10 +1060,10 @@ $(hide) $(PRIVATE_CC) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(filter-out $(PRIVATE_C_INCLUDES), \ $(HOST_PROJECT_INCLUDES) \ $(HOST_C_INCLUDES)))) \ $(PRIVATE_HOST_C_INCLUDES)))) \ -c \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_CFLAGS) \ $(PRIVATE_HOST_GLOBAL_CFLAGS) \ ) \ $(1) \ -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< Loading Loading @@ -1207,7 +1207,7 @@ $(hide) $(PRIVATE_CXX) \ $(PRIVATE_LDFLAGS) \ $(HOST_GLOBAL_LD_DIRS) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_LDFLAGS) \ $(PRIVATE_HOST_GLOBAL_LDFLAGS) \ ) \ $(PRIVATE_ALL_OBJECTS) \ -Wl,--whole-archive \ Loading Loading @@ -1367,7 +1367,7 @@ $(hide) $(PRIVATE_CXX) \ $(HOST_GLOBAL_LD_DIRS) \ $(PRIVATE_LDFLAGS) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_LDFLAGS) \ $(PRIVATE_HOST_GLOBAL_LDFLAGS) \ -fPIE -pie \ ) \ -o $@ \ Loading core/executable.mk +4 −0 Original line number Diff line number Diff line Loading @@ -39,7 +39,11 @@ include $(BUILD_SYSTEM)/dynamic_binary.mk # Define PRIVATE_ variables from global vars my_target_global_ld_dirs := $(TARGET_GLOBAL_LD_DIRS) ifeq ($(LOCAL_CLANG),true) my_target_global_ldflags := $(CLANG_TARGET_GLOBAL_LDFLAGS) else my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS) endif my_target_fdo_lib := $(TARGET_FDO_LIB) my_target_libgcc := $(TARGET_LIBGCC) my_target_crtbegin_dynamic_o := $(TARGET_CRTBEGIN_DYNAMIC_O) Loading core/llvm_config.mk +168 −106 Original line number Diff line number Diff line Loading @@ -3,35 +3,39 @@ CLANG_CXX := $(HOST_OUT_EXECUTABLES)/clang++$(HOST_EXECUTABLE_SUFFIX) LLVM_AS := $(HOST_OUT_EXECUTABLES)/llvm-as$(HOST_EXECUTABLE_SUFFIX) LLVM_LINK := $(HOST_OUT_EXECUTABLES)/llvm-link$(HOST_EXECUTABLE_SUFFIX) define do-clang-flags-subst TARGET_GLOBAL_CLANG_FLAGS := $(subst $(1),$(2),$(TARGET_GLOBAL_CLANG_FLAGS)) HOST_GLOBAL_CLANG_FLAGS := $(subst $(1),$(2),$(HOST_GLOBAL_CLANG_FLAGS)) endef define clang-flags-subst $(eval $(call do-clang-flags-subst,$(1),$(2))) endef # Clang flags for all host or target rules CLANG_CONFIG_EXTRA_ASFLAGS := CLANG_CONFIG_EXTRA_CPPFLAGS := CLANG_CONFIG_EXTRA_LDFLAGS := CLANG_CONFIG_EXTRA_CFLAGS := \ -D__compiler_offsetof=__builtin_offsetof \ -D__compiler_offsetof=__builtin_offsetof CLANG_CONFIG_UNKNOWN_CFLAGS := \ -funswitch-loops -funswitch-loops \ -Wno-psabi \ -Wno-unused-but-set-variable \ -Wno-unused-but-set-parameter ifeq ($(TARGET_ARCH),arm) RS_TRIPLE := armv7-none-linux-gnueabi CLANG_CONFIG_EXTRA_ASFLAGS += \ -target arm-linux-androideabi \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/arm-linux-androideabi/bin CLANG_CONFIG_EXTRA_CFLAGS += \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ # Clang flags for all host rules CLANG_CONFIG_HOST_EXTRA_ASFLAGS := CLANG_CONFIG_HOST_EXTRA_CFLAGS := CLANG_CONFIG_HOST_EXTRA_CPPFLAGS := CLANG_CONFIG_HOST_EXTRA_LDFLAGS := # Clang flags for all target rules CLANG_CONFIG_TARGET_EXTRA_ASFLAGS := CLANG_CONFIG_TARGET_EXTRA_CFLAGS := -nostdlibinc CLANG_CONFIG_TARGET_EXTRA_CPPFLAGS := -nostdlibinc CLANG_CONFIG_TARGET_EXTRA_LDFLAGS := # ARM llvm_arch := arm CLANG_CONFIG_arm_EXTRA_ASFLAGS := CLANG_CONFIG_arm_EXTRA_CFLAGS := \ -mllvm -arm-enable-ehabi CLANG_CONFIG_EXTRA_LDFLAGS += \ -target arm-linux-androideabi \ -B$(TARGET_TOOLCHAIN_ROOT)/arm-linux-androideabi/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ CLANG_CONFIG_arm_EXTRA_LDFLAGS := CLANG_CONFIG_arm_UNKNOWN_CFLAGS := \ -mthumb-interwork \ -fgcse-after-reload \ -frerun-cse-after-loop \ Loading @@ -40,18 +44,18 @@ ifeq ($(TARGET_ARCH),arm) -fno-strict-volatile-bitfields \ -fno-align-jumps \ -Wa,--noexecstack endif ifeq ($(TARGET_ARCH),mips) RS_TRIPLE := mipsel-unknown-linux CLANG_CONFIG_EXTRA_ASFLAGS += \ -target mipsel-linux-androideabi \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/mipsel-linux-android/bin CLANG_CONFIG_EXTRA_CFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) CLANG_CONFIG_EXTRA_LDFLAGS += \ -target mipsel-linux-androideabi \ -B$(TARGET_TOOLCHAIN_ROOT)/mipsel-linux-android/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ CLANG_CONFIG_arm_HOST_TRIPLE := CLANG_CONFIG_arm_TARGET_TRIPLE := arm-linux-androideabi include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # MIPS llvm_arch := mips CLANG_CONFIG_mips_EXTRA_ASFLAGS := CLANG_CONFIG_mips_EXTRA_CFLAGS := CLANG_CONFIG_mips_EXTRA_LDFLAGS := CLANG_CONFIG_mips_UNKNOWN_CFLAGS := \ -EL \ -mips32 \ -mips32r2 \ Loading @@ -66,64 +70,69 @@ ifeq ($(TARGET_ARCH),mips) -mtune=mips32 \ -msynci \ -mno-fused-madd endif ifeq ($(TARGET_ARCH),x86) RS_TRIPLE := i686-unknown-linux CLANG_CONFIG_EXTRA_ASFLAGS += \ -target i686-linux-android \ -msse3 \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_EXTRA_CFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) CLANG_CONFIG_EXTRA_LDFLAGS += \ -target i686-linux-android \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ CLANG_CONFIG_mips_HOST_TRIPLE := CLANG_CONFIG_mips_TARGET_TRIPLE := mipsel-linux-android include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # X86 llvm_arch := x86 CLANG_CONFIG_x86_EXTRA_ASFLAGS := \ -msse3 CLANG_CONFIG_x86_EXTRA_CFLAGS := CLANG_CONFIG_x86_EXTRA_LDFLAGS := CLANG_CONFIG_x86_UNKNOWN_CFLAGS := \ -finline-limit=300 \ -fno-inline-functions-called-once \ -mfpmath=sse \ -mbionic ifeq ($(HOST_OS),linux) CLANG_CONFIG_x86_HOST_TRIPLE := i686-linux-gnu endif ifeq ($(TARGET_ARCH),x86_64) RS_TRIPLE := x86_64-unknown-linux CLANG_CONFIG_EXTRA_ASFLAGS += \ -target x86_64-linux-android \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_EXTRA_CFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) CLANG_CONFIG_EXTRA_LDFLAGS += \ -target x86_64-linux-android \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ ifeq ($(HOST_OS),darwin) CLANG_CONFIG_x86_HOST_TRIPLE := i686-apple-darwin endif ifeq ($(HOST_OS),windows) CLANG_CONFIG_x86_HOST_TRIPLE := i686-pc-mingw32 endif CLANG_CONFIG_x86_TARGET_TRIPLE := i686-linux-android CLANG_CONFIG_x86_TARGET_TOOLCHAIN_PREFIX := \ $(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # X86_64 llvm_arch := x86_64 CLANG_CONFIG_x86_64_EXTRA_ASFLAGS := \ CLANG_CONFIG_x86_64_EXTRA_CFLAGS := CLANG_CONFIG_x86_64_EXTRA_LDFLAGS := \ CLANG_CONFIG_x86_64_UNKNOWN_CFLAGS := \ -finline-limit=300 \ -fno-inline-functions-called-once \ -mfpmath=sse \ -mbionic ifeq ($(HOST_OS),linux) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-linux-gnu endif ifeq ($(HOST_OS),darwin) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-apple-darwin endif ifeq ($(HOST_OS),windows) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-pc-mingw64 endif CLANG_CONFIG_x86_64_TARGET_TRIPLE := x86_64-linux-android include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # Clang compiler-specific libc headers CLANG_CONFIG_EXTRA_HOST_C_INCLUDES := external/clang/lib/include CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES := external/clang/lib/include $(TARGET_OUT_HEADERS)/clang # remove unknown flags to define CLANG_FLAGS TARGET_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_GLOBAL_CFLAGS)) HOST_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(HOST_GLOBAL_CFLAGS)) TARGET_arm_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_arm_CFLAGS)) TARGET_thumb_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_thumb_CFLAGS)) # llvm does not yet support -march=armv5e nor -march=armv5te, fall back to armv5 or armv5t $(call clang-flags-subst,-march=armv5te,-march=armv5t) $(call clang-flags-subst,-march=armv5e,-march=armv5) # clang does not support -Wno-psabi, -Wno-unused-but-set-variable, and # -Wno-unused-but-set-parameter $(call clang-flags-subst,-Wno-psabi,) $(call clang-flags-subst,-Wno-unused-but-set-variable,) $(call clang-flags-subst,-Wno-unused-but-set-parameter,) # clang does not support -mcpu=cortex-a15 yet - fall back to armv7-a for now $(call clang-flags-subst,-mcpu=cortex-a15,-march=armv7-a) # Address sanitizer clang config ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -fsanitize=address ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl libasan_preload Loading @@ -132,3 +141,56 @@ ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan # This allows us to use the superset of functionality that compiler-rt # provides to Clang (for supporting features like -ftrapv). COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES := libcompiler_rt-extras # Macros to convert gcc flags to clang flags define subst-clang-incompatible-flags $(subst -march=armv5te,-march=armv5t,\ $(subst -march=armv5e,-march=armv5,\ $(subst -mcpu=cortex-a15,-march=armv7-a,\ $(1)))) endef define convert-to-host-clang-flags $(strip \ $(call subst-clang-incompatible-flags,\ $(filter-out $(CLANG_CONFIG_$(HOST_ARCH)_UNKNOWN_CFLAGS),\ $(1)))) endef define convert-to-clang-flags $(strip \ $(call subst-clang-incompatible-flags,\ $(filter-out $(CLANG_CONFIG_$(TARGET_ARCH)_UNKNOWN_CFLAGS),\ $(1)))) endef # Define clang global flags define get-clang-host-global-flags $(call convert-to-host-clang-flags,$(HOST_GLOBAL_$(1))) $(CLANG_CONFIG_$(HOST_ARCH)_HOST_EXTRA_$(1)) endef define get-clang-global-flags $(call convert-to-clang-flags,$(TARGET_GLOBAL_$(1))) $(CLANG_CONFIG_$(TARGET_ARCH)_TARGET_EXTRA_$(1)) endef CLANG_HOST_GLOBAL_CFLAGS := $(call get-clang-host-global-flags,CFLAGS) CLANG_HOST_GLOBAL_CPPFLAGS := $(call get-clang-host-global-flags,CPPFLAGS) CLANG_HOST_GLOBAL_LDFLAGS := $(call get-clang-host-global-flags,LDFLAGS) CLANG_TARGET_GLOBAL_CFLAGS := $(call get-clang-global-flags,CFLAGS) CLANG_TARGET_GLOBAL_CPPFLAGS := $(call get-clang-global-flags,CPPFLAGS) CLANG_TARGET_GLOBAL_LDFLAGS := $(call get-clang-global-flags,LDFLAGS) # Renderscript clang target triple ifeq ($(TARGET_ARCH),arm) RS_TRIPLE := armv7-none-linux-gnueabi endif ifeq ($(TARGET_ARCH),mips) RS_TRIPLE := mipsel-unknown-linux endif ifeq ($(TARGET_ARCH),x86) RS_TRIPLE := i686-unknown-linux endif ifeq ($(TARGET_ARCH),x86_64) RS_TRIPLE := x86_64-unknown-linux endif core/llvm_config_define_clang_flags.mk 0 → 100644 +76 −0 Original line number Diff line number Diff line ifeq ($(strip $(llvm_arch)),) $(error "$$(llvm_arch) should be defined.") endif ifeq ($(strip $(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE)),) $(error "$$(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE) should be defined.") endif ifeq ($(strip $(CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX)),) CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX := \ $(TARGET_TOOLCHAIN_ROOT)/$(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE)/bin endif # Include common unknown flags CLANG_CONFIG_$(llvm_arch)_UNKNOWN_CFLAGS += \ $(CLANG_CONFIG_UNKNOWN_CFLAGS) # Clang extra flags for host CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_ASFLAGS := \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_ASFLAGS) ifneq ($(strip $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE)),) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_ASFLAGS += \ -target $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE) endif CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_CFLAGS := \ $(CLANG_CONFIG_EXTRA_CFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_ASFLAGS) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_CPPFLAGS := \ $(CLANG_CONFIG_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CPPFLAGS) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_LDFLAGS := \ $(CLANG_CONFIG_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_LDFLAGS) ifneq ($(strip $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE)),) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_LDFLAGS += \ -target $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE) endif # Clang extra flags for target CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_ASFLAGS := \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_ASFLAGS) \ -target $(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE) \ -B$(CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX) CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_CFLAGS := \ $(CLANG_CONFIG_EXTRA_CFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_ASFLAGS) CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_CPPFLAGS := \ $(CLANG_CONFIG_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CPPFLAGS) CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_LDFLAGS := \ $(CLANG_CONFIG_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_LDFLAGS) \ -target $(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE) \ -B$(CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX) llvm_arch := Loading
core/binary.mk +37 −9 Original line number Diff line number Diff line Loading @@ -118,9 +118,6 @@ endif my_compiler_dependencies := ifeq ($(strip $(LOCAL_CLANG)),true) LOCAL_CFLAGS += $(CLANG_CONFIG_EXTRA_CFLAGS) LOCAL_ASFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) LOCAL_LDFLAGS += $(CLANG_CONFIG_EXTRA_LDFLAGS) my_compiler_dependencies := $(CLANG) $(CLANG_CXX) endif Loading Loading @@ -162,16 +159,40 @@ my_target_c_includes := $(TARGET_C_INCLUDES) endif # LOCAL_SDK_VERSION ifeq ($(LOCAL_CLANG),true) my_target_global_cflags := $(TARGET_GLOBAL_CLANG_FLAGS) my_target_global_cflags := $(CLANG_TARGET_GLOBAL_CFLAGS) my_target_global_cppflags := $(CLANG_TARGET_GLOBAL_CPPFLAGS) my_target_global_ldflags := $(CLANG_TARGET_GLOBAL_LDFLAGS) my_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES) else my_target_global_cflags := $(TARGET_GLOBAL_CFLAGS) my_target_global_cppflags := $(TARGET_GLOBAL_CPPFLAGS) my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS) endif # LOCAL_CLANG $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_PROJECT_INCLUDES := $(my_target_project_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_C_INCLUDES := $(my_target_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CFLAGS := $(my_target_global_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(TARGET_GLOBAL_CPPFLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(my_target_global_cppflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags) ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),) ifeq ($(LOCAL_CLANG),true) my_host_global_cflags := $(CLANG_HOST_GLOBAL_CFLAGS) my_host_global_cppflags := $(CLANG_HOST_GLOBAL_CPPFLAGS) my_host_global_ldflags := $(CLANG_HOST_GLOBAL_LDFLAGS) my_host_c_includes := $(HOST_C_INCLUDES) $(CLANG_CONFIG_EXTRA_HOST_C_INCLUDES) else my_host_global_cflags := $(HOST_GLOBAL_CFLAGS) my_host_global_cppflags := $(HOST_GLOBAL_CPPFLAGS) my_host_global_ldflags := $(HOST_GLOBAL_LDFLAGS) my_host_c_includes := $(HOST_C_INCLUDES) endif # LOCAL_CLANG $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_C_INCLUDES := $(my_host_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_CFLAGS := $(my_host_global_cflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_CPPFLAGS := $(my_host_global_cppflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_LDFLAGS := $(my_host_global_ldflags) endif # LOCAL_IS_HOST_MODULE ########################################################### ## Define PRIVATE_ variables used by multiple module types Loading Loading @@ -257,12 +278,11 @@ normal_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),thumb) # Read the values from something like TARGET_arm_CFLAGS or # TARGET_thumb_CFLAGS. HOST_(arm|thumb)_CFLAGS values aren't # actually used (although they are usually empty). ifeq ($(strip $(LOCAL_CLANG)),true) arm_objects_cflags := $($(my_prefix)$(arm_objects_mode)_CLANG_CFLAGS) normal_objects_cflags := $($(my_prefix)$(normal_objects_mode)_CLANG_CFLAGS) else arm_objects_cflags := $($(my_prefix)$(arm_objects_mode)_CFLAGS) normal_objects_cflags := $($(my_prefix)$(normal_objects_mode)_CFLAGS) ifeq ($(strip $(LOCAL_CLANG)),true) arm_objects_cflags := $(call convert-to-$(my_host)clang-flags,$(arm_objects_cflags)) normal_objects_cflags := $(call convert-to-$(my_host)clang-flags,$(normal_objects_cflags)) endif else Loading Loading @@ -751,6 +771,14 @@ endif ########################################################### # Rule-specific variable definitions ########################################################### ifeq ($(LOCAL_CLANG),true) LOCAL_CFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_CFLAGS)) LOCAL_CPPFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_CPPFLAGS)) LOCAL_ASFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_ASFLAGS)) LOCAL_LDFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_LDFLAGS)) endif $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_YACCFLAGS := $(LOCAL_YACCFLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(LOCAL_ASFLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CONLYFLAGS := $(LOCAL_CONLYFLAGS) Loading
core/definitions.mk +7 −7 Original line number Diff line number Diff line Loading @@ -1032,11 +1032,11 @@ $(hide) $(PRIVATE_CXX) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(filter-out $(PRIVATE_C_INCLUDES), \ $(HOST_PROJECT_INCLUDES) \ $(HOST_C_INCLUDES)))) \ $(PRIVATE_HOST_C_INCLUDES)))) \ -c \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_CFLAGS) \ $(HOST_GLOBAL_CPPFLAGS) \ $(PRIVATE_HOST_GLOBAL_CFLAGS) \ $(PRIVATE_HOST_GLOBAL_CPPFLAGS) \ ) \ $(PRIVATE_CFLAGS) \ $(PRIVATE_CPPFLAGS) \ Loading @@ -1060,10 +1060,10 @@ $(hide) $(PRIVATE_CC) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(filter-out $(PRIVATE_C_INCLUDES), \ $(HOST_PROJECT_INCLUDES) \ $(HOST_C_INCLUDES)))) \ $(PRIVATE_HOST_C_INCLUDES)))) \ -c \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_CFLAGS) \ $(PRIVATE_HOST_GLOBAL_CFLAGS) \ ) \ $(1) \ -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< Loading Loading @@ -1207,7 +1207,7 @@ $(hide) $(PRIVATE_CXX) \ $(PRIVATE_LDFLAGS) \ $(HOST_GLOBAL_LD_DIRS) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_LDFLAGS) \ $(PRIVATE_HOST_GLOBAL_LDFLAGS) \ ) \ $(PRIVATE_ALL_OBJECTS) \ -Wl,--whole-archive \ Loading Loading @@ -1367,7 +1367,7 @@ $(hide) $(PRIVATE_CXX) \ $(HOST_GLOBAL_LD_DIRS) \ $(PRIVATE_LDFLAGS) \ $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ $(HOST_GLOBAL_LDFLAGS) \ $(PRIVATE_HOST_GLOBAL_LDFLAGS) \ -fPIE -pie \ ) \ -o $@ \ Loading
core/executable.mk +4 −0 Original line number Diff line number Diff line Loading @@ -39,7 +39,11 @@ include $(BUILD_SYSTEM)/dynamic_binary.mk # Define PRIVATE_ variables from global vars my_target_global_ld_dirs := $(TARGET_GLOBAL_LD_DIRS) ifeq ($(LOCAL_CLANG),true) my_target_global_ldflags := $(CLANG_TARGET_GLOBAL_LDFLAGS) else my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS) endif my_target_fdo_lib := $(TARGET_FDO_LIB) my_target_libgcc := $(TARGET_LIBGCC) my_target_crtbegin_dynamic_o := $(TARGET_CRTBEGIN_DYNAMIC_O) Loading
core/llvm_config.mk +168 −106 Original line number Diff line number Diff line Loading @@ -3,35 +3,39 @@ CLANG_CXX := $(HOST_OUT_EXECUTABLES)/clang++$(HOST_EXECUTABLE_SUFFIX) LLVM_AS := $(HOST_OUT_EXECUTABLES)/llvm-as$(HOST_EXECUTABLE_SUFFIX) LLVM_LINK := $(HOST_OUT_EXECUTABLES)/llvm-link$(HOST_EXECUTABLE_SUFFIX) define do-clang-flags-subst TARGET_GLOBAL_CLANG_FLAGS := $(subst $(1),$(2),$(TARGET_GLOBAL_CLANG_FLAGS)) HOST_GLOBAL_CLANG_FLAGS := $(subst $(1),$(2),$(HOST_GLOBAL_CLANG_FLAGS)) endef define clang-flags-subst $(eval $(call do-clang-flags-subst,$(1),$(2))) endef # Clang flags for all host or target rules CLANG_CONFIG_EXTRA_ASFLAGS := CLANG_CONFIG_EXTRA_CPPFLAGS := CLANG_CONFIG_EXTRA_LDFLAGS := CLANG_CONFIG_EXTRA_CFLAGS := \ -D__compiler_offsetof=__builtin_offsetof \ -D__compiler_offsetof=__builtin_offsetof CLANG_CONFIG_UNKNOWN_CFLAGS := \ -funswitch-loops -funswitch-loops \ -Wno-psabi \ -Wno-unused-but-set-variable \ -Wno-unused-but-set-parameter ifeq ($(TARGET_ARCH),arm) RS_TRIPLE := armv7-none-linux-gnueabi CLANG_CONFIG_EXTRA_ASFLAGS += \ -target arm-linux-androideabi \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/arm-linux-androideabi/bin CLANG_CONFIG_EXTRA_CFLAGS += \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ # Clang flags for all host rules CLANG_CONFIG_HOST_EXTRA_ASFLAGS := CLANG_CONFIG_HOST_EXTRA_CFLAGS := CLANG_CONFIG_HOST_EXTRA_CPPFLAGS := CLANG_CONFIG_HOST_EXTRA_LDFLAGS := # Clang flags for all target rules CLANG_CONFIG_TARGET_EXTRA_ASFLAGS := CLANG_CONFIG_TARGET_EXTRA_CFLAGS := -nostdlibinc CLANG_CONFIG_TARGET_EXTRA_CPPFLAGS := -nostdlibinc CLANG_CONFIG_TARGET_EXTRA_LDFLAGS := # ARM llvm_arch := arm CLANG_CONFIG_arm_EXTRA_ASFLAGS := CLANG_CONFIG_arm_EXTRA_CFLAGS := \ -mllvm -arm-enable-ehabi CLANG_CONFIG_EXTRA_LDFLAGS += \ -target arm-linux-androideabi \ -B$(TARGET_TOOLCHAIN_ROOT)/arm-linux-androideabi/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ CLANG_CONFIG_arm_EXTRA_LDFLAGS := CLANG_CONFIG_arm_UNKNOWN_CFLAGS := \ -mthumb-interwork \ -fgcse-after-reload \ -frerun-cse-after-loop \ Loading @@ -40,18 +44,18 @@ ifeq ($(TARGET_ARCH),arm) -fno-strict-volatile-bitfields \ -fno-align-jumps \ -Wa,--noexecstack endif ifeq ($(TARGET_ARCH),mips) RS_TRIPLE := mipsel-unknown-linux CLANG_CONFIG_EXTRA_ASFLAGS += \ -target mipsel-linux-androideabi \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/mipsel-linux-android/bin CLANG_CONFIG_EXTRA_CFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) CLANG_CONFIG_EXTRA_LDFLAGS += \ -target mipsel-linux-androideabi \ -B$(TARGET_TOOLCHAIN_ROOT)/mipsel-linux-android/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ CLANG_CONFIG_arm_HOST_TRIPLE := CLANG_CONFIG_arm_TARGET_TRIPLE := arm-linux-androideabi include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # MIPS llvm_arch := mips CLANG_CONFIG_mips_EXTRA_ASFLAGS := CLANG_CONFIG_mips_EXTRA_CFLAGS := CLANG_CONFIG_mips_EXTRA_LDFLAGS := CLANG_CONFIG_mips_UNKNOWN_CFLAGS := \ -EL \ -mips32 \ -mips32r2 \ Loading @@ -66,64 +70,69 @@ ifeq ($(TARGET_ARCH),mips) -mtune=mips32 \ -msynci \ -mno-fused-madd endif ifeq ($(TARGET_ARCH),x86) RS_TRIPLE := i686-unknown-linux CLANG_CONFIG_EXTRA_ASFLAGS += \ -target i686-linux-android \ -msse3 \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_EXTRA_CFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) CLANG_CONFIG_EXTRA_LDFLAGS += \ -target i686-linux-android \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ CLANG_CONFIG_mips_HOST_TRIPLE := CLANG_CONFIG_mips_TARGET_TRIPLE := mipsel-linux-android include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # X86 llvm_arch := x86 CLANG_CONFIG_x86_EXTRA_ASFLAGS := \ -msse3 CLANG_CONFIG_x86_EXTRA_CFLAGS := CLANG_CONFIG_x86_EXTRA_LDFLAGS := CLANG_CONFIG_x86_UNKNOWN_CFLAGS := \ -finline-limit=300 \ -fno-inline-functions-called-once \ -mfpmath=sse \ -mbionic ifeq ($(HOST_OS),linux) CLANG_CONFIG_x86_HOST_TRIPLE := i686-linux-gnu endif ifeq ($(TARGET_ARCH),x86_64) RS_TRIPLE := x86_64-unknown-linux CLANG_CONFIG_EXTRA_ASFLAGS += \ -target x86_64-linux-android \ -nostdlibinc \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_EXTRA_CFLAGS += $(CLANG_CONFIG_EXTRA_ASFLAGS) CLANG_CONFIG_EXTRA_LDFLAGS += \ -target x86_64-linux-android \ -B$(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin CLANG_CONFIG_UNKNOWN_CFLAGS += \ ifeq ($(HOST_OS),darwin) CLANG_CONFIG_x86_HOST_TRIPLE := i686-apple-darwin endif ifeq ($(HOST_OS),windows) CLANG_CONFIG_x86_HOST_TRIPLE := i686-pc-mingw32 endif CLANG_CONFIG_x86_TARGET_TRIPLE := i686-linux-android CLANG_CONFIG_x86_TARGET_TOOLCHAIN_PREFIX := \ $(TARGET_TOOLCHAIN_ROOT)/x86_64-linux-android/bin include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # X86_64 llvm_arch := x86_64 CLANG_CONFIG_x86_64_EXTRA_ASFLAGS := \ CLANG_CONFIG_x86_64_EXTRA_CFLAGS := CLANG_CONFIG_x86_64_EXTRA_LDFLAGS := \ CLANG_CONFIG_x86_64_UNKNOWN_CFLAGS := \ -finline-limit=300 \ -fno-inline-functions-called-once \ -mfpmath=sse \ -mbionic ifeq ($(HOST_OS),linux) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-linux-gnu endif ifeq ($(HOST_OS),darwin) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-apple-darwin endif ifeq ($(HOST_OS),windows) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-pc-mingw64 endif CLANG_CONFIG_x86_64_TARGET_TRIPLE := x86_64-linux-android include $(BUILD_SYSTEM)/llvm_config_define_clang_flags.mk # Clang compiler-specific libc headers CLANG_CONFIG_EXTRA_HOST_C_INCLUDES := external/clang/lib/include CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES := external/clang/lib/include $(TARGET_OUT_HEADERS)/clang # remove unknown flags to define CLANG_FLAGS TARGET_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_GLOBAL_CFLAGS)) HOST_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(HOST_GLOBAL_CFLAGS)) TARGET_arm_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_arm_CFLAGS)) TARGET_thumb_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_thumb_CFLAGS)) # llvm does not yet support -march=armv5e nor -march=armv5te, fall back to armv5 or armv5t $(call clang-flags-subst,-march=armv5te,-march=armv5t) $(call clang-flags-subst,-march=armv5e,-march=armv5) # clang does not support -Wno-psabi, -Wno-unused-but-set-variable, and # -Wno-unused-but-set-parameter $(call clang-flags-subst,-Wno-psabi,) $(call clang-flags-subst,-Wno-unused-but-set-variable,) $(call clang-flags-subst,-Wno-unused-but-set-parameter,) # clang does not support -mcpu=cortex-a15 yet - fall back to armv7-a for now $(call clang-flags-subst,-mcpu=cortex-a15,-march=armv7-a) # Address sanitizer clang config ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -fsanitize=address ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl libasan_preload Loading @@ -132,3 +141,56 @@ ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan # This allows us to use the superset of functionality that compiler-rt # provides to Clang (for supporting features like -ftrapv). COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES := libcompiler_rt-extras # Macros to convert gcc flags to clang flags define subst-clang-incompatible-flags $(subst -march=armv5te,-march=armv5t,\ $(subst -march=armv5e,-march=armv5,\ $(subst -mcpu=cortex-a15,-march=armv7-a,\ $(1)))) endef define convert-to-host-clang-flags $(strip \ $(call subst-clang-incompatible-flags,\ $(filter-out $(CLANG_CONFIG_$(HOST_ARCH)_UNKNOWN_CFLAGS),\ $(1)))) endef define convert-to-clang-flags $(strip \ $(call subst-clang-incompatible-flags,\ $(filter-out $(CLANG_CONFIG_$(TARGET_ARCH)_UNKNOWN_CFLAGS),\ $(1)))) endef # Define clang global flags define get-clang-host-global-flags $(call convert-to-host-clang-flags,$(HOST_GLOBAL_$(1))) $(CLANG_CONFIG_$(HOST_ARCH)_HOST_EXTRA_$(1)) endef define get-clang-global-flags $(call convert-to-clang-flags,$(TARGET_GLOBAL_$(1))) $(CLANG_CONFIG_$(TARGET_ARCH)_TARGET_EXTRA_$(1)) endef CLANG_HOST_GLOBAL_CFLAGS := $(call get-clang-host-global-flags,CFLAGS) CLANG_HOST_GLOBAL_CPPFLAGS := $(call get-clang-host-global-flags,CPPFLAGS) CLANG_HOST_GLOBAL_LDFLAGS := $(call get-clang-host-global-flags,LDFLAGS) CLANG_TARGET_GLOBAL_CFLAGS := $(call get-clang-global-flags,CFLAGS) CLANG_TARGET_GLOBAL_CPPFLAGS := $(call get-clang-global-flags,CPPFLAGS) CLANG_TARGET_GLOBAL_LDFLAGS := $(call get-clang-global-flags,LDFLAGS) # Renderscript clang target triple ifeq ($(TARGET_ARCH),arm) RS_TRIPLE := armv7-none-linux-gnueabi endif ifeq ($(TARGET_ARCH),mips) RS_TRIPLE := mipsel-unknown-linux endif ifeq ($(TARGET_ARCH),x86) RS_TRIPLE := i686-unknown-linux endif ifeq ($(TARGET_ARCH),x86_64) RS_TRIPLE := x86_64-unknown-linux endif
core/llvm_config_define_clang_flags.mk 0 → 100644 +76 −0 Original line number Diff line number Diff line ifeq ($(strip $(llvm_arch)),) $(error "$$(llvm_arch) should be defined.") endif ifeq ($(strip $(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE)),) $(error "$$(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE) should be defined.") endif ifeq ($(strip $(CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX)),) CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX := \ $(TARGET_TOOLCHAIN_ROOT)/$(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE)/bin endif # Include common unknown flags CLANG_CONFIG_$(llvm_arch)_UNKNOWN_CFLAGS += \ $(CLANG_CONFIG_UNKNOWN_CFLAGS) # Clang extra flags for host CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_ASFLAGS := \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_ASFLAGS) ifneq ($(strip $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE)),) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_ASFLAGS += \ -target $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE) endif CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_CFLAGS := \ $(CLANG_CONFIG_EXTRA_CFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_ASFLAGS) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_CPPFLAGS := \ $(CLANG_CONFIG_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CPPFLAGS) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_LDFLAGS := \ $(CLANG_CONFIG_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_LDFLAGS) ifneq ($(strip $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE)),) CLANG_CONFIG_$(llvm_arch)_HOST_EXTRA_LDFLAGS += \ -target $(CLANG_CONFIG_$(llvm_arch)_HOST_TRIPLE) endif # Clang extra flags for target CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_ASFLAGS := \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_ASFLAGS) \ -target $(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE) \ -B$(CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX) CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_CFLAGS := \ $(CLANG_CONFIG_EXTRA_CFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_ASFLAGS) CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_CPPFLAGS := \ $(CLANG_CONFIG_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_CPPFLAGS) CLANG_CONFIG_$(llvm_arch)_TARGET_EXTRA_LDFLAGS := \ $(CLANG_CONFIG_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_TARGET_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_$(llvm_arch)_EXTRA_LDFLAGS) \ -target $(CLANG_CONFIG_$(llvm_arch)_TARGET_TRIPLE) \ -B$(CLANG_CONFIG_$(llvm_arch)_TARGET_TOOLCHAIN_PREFIX) llvm_arch :=