diff --git a/core/binary.mk b/core/binary.mk index 45ab0c00c5..762b155144 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -744,6 +744,19 @@ endif asm_objects := $(asm_objects_S) $(asm_objects_s) +# .asm for x86 needs to be compiled with yasm. +ifeq (x86,$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) +asm_sources_asm := $(filter %.asm,$(my_src_files)) +ifneq ($(strip $(asm_sources_asm)),) +asm_objects_asm := $(addprefix $(intermediates)/,$(asm_sources_asm:.asm=.o)) +$(asm_objects_asm): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.asm \ + $(LOCAL_ADDITIONAL_DEPENDENCIES) + $(transform-asm-to-o) + +asm_objects += $(asm_objects_asm) +endif +endif + #################################################### ## Import includes #################################################### diff --git a/core/config.mk b/core/config.mk index 715038053c..47d01ea4e3 100644 --- a/core/config.mk +++ b/core/config.mk @@ -367,6 +367,8 @@ BISON_PKGDATADIR := $(PWD)/external/bison/data BISON := prebuilts/misc/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/bison/bison YACC := $(BISON) -d +YASM := prebuilts/misc/$(BUILD_OS)-$(HOST_PREBUILT_ARCH)/yasm/yasm + DOXYGEN:= doxygen AAPT := $(HOST_OUT_EXECUTABLES)/aapt$(HOST_EXECUTABLE_SUFFIX) AIDL := $(HOST_OUT_EXECUTABLES)/aidl$(HOST_EXECUTABLE_SUFFIX) diff --git a/core/definitions.mk b/core/definitions.mk index 5d76285f8a..746becfbce 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1039,6 +1039,16 @@ $(transform-s-to-o-no-deps) $(transform-d-to-p) endef +# YASM compilation +define transform-asm-to-o +@mkdir -p $(dir $@) +$(hide) $(YASM) \ + $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ + -f elf32 -m x86 \ + $(PRIVATE_ASFLAGS) \ + -o $@ $< +endef + ########################################################### ## Commands for running gcc to compile an Objective-C file ## This should never happen for target builds but this