OSDN Git Service

android: enable x86 asm and sse4 for x86 and x86_64
authorWuZhen <wuzhen@jidemail.com>
Wed, 24 Feb 2016 13:36:10 +0000 (21:36 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Tue, 11 Apr 2017 02:36:22 +0000 (10:36 +0800)
Support multilib compilation use runtime feature selection.

NO_REF_TASK
Tested: local run

Change-Id: Iee7961effdecde09cfbdaf09455bfb0912699ae3
Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Android.common.mk
Android.mk
src/mapi/Android.mk
src/mesa/Android.gen.mk
src/mesa/Android.libmesa_dricore.mk
src/mesa/Android.libmesa_sse41.mk
src/mesa/Android.libmesa_st_mesa.mk
src/mesa/Android.mesa_gen_matypes.mk
src/mesa/drivers/dri/i965/Android.mk

index c60514a..ef83a97 100644 (file)
@@ -70,13 +70,28 @@ LOCAL_CFLAGS += \
 LOCAL_CONLYFLAGS += \
        -std=c99
 
+x86_flags := \
+       -DUSE_SSE41 \
+
+x86_64_flags := \
+       -DUSE_SSE41 \
+
 ifeq ($(strip $(MESA_ENABLE_ASM)),true)
-ifeq ($(TARGET_ARCH),x86)
-LOCAL_CFLAGS += \
+x86_flags += \
        -DUSE_X86_ASM \
+       -DUSE_MMX_ASM \
+       -DUSE_3DNOW_ASM \
+       -DUSE_SSE_ASM \
+
+x86_64_flags += \
+       -DUSE_X86_64_ASM \
 
 endif
-endif
+
+LOCAL_ASFLAGS_x86 += $(x86_flags)
+LOCAL_ASFLAGS_x86_64 += $(x86_64_flags)
+LOCAL_CFLAGS_x86 += $(x86_flags)
+LOCAL_CFLAGS_x86_64 += $(x86_64_flags)
 
 ifeq ($(MESA_ENABLE_LLVM),true)
 LOCAL_CFLAGS += \
index fb29105..712d152 100644 (file)
@@ -63,12 +63,7 @@ $(warning invalid GPU drivers: $(invalid_drivers))
 MESA_GPU_DRIVERS := $(filter-out $(invalid_drivers), $(MESA_GPU_DRIVERS))
 endif
 
-# host and target must be the same arch to generate matypes.h
-ifeq ($(TARGET_ARCH),$(HOST_ARCH))
 MESA_ENABLE_ASM := true
-else
-MESA_ENABLE_ASM := false
-endif
 
 ifneq ($(filter $(classic_drivers), $(MESA_GPU_DRIVERS)),)
 MESA_BUILD_CLASSIC := true
index 4445218..b654c25 100644 (file)
@@ -57,6 +57,9 @@ intermediates := $(call local-generated-sources-dir)
 abi_header := $(intermediates)/$(abi_header)
 LOCAL_GENERATED_SOURCES := $(abi_header)
 
+# workaround build warning
+LOCAL_LDFLAGS_x86 += -Wl,--no-warn-shared-textrel
+
 $(abi_header): PRIVATE_PRINTER := shared-glapi
 
 mapi_abi_headers += $(abi_header)
index e336d0c..cf62bac 100644 (file)
@@ -45,10 +45,11 @@ LOCAL_SRC_FILES := $(filter-out $(sources), $(LOCAL_SRC_FILES))
 LOCAL_C_INCLUDES += $(intermediates)/main
 
 ifeq ($(strip $(MESA_ENABLE_ASM)),true)
-ifeq ($(TARGET_ARCH),x86)
-sources += x86/matypes.h
-LOCAL_C_INCLUDES += $(intermediates)/x86
-endif
+LOCAL_GENERATED_SOURCES_x86 += $(addprefix $(intermediates)/, x86/matypes.h)
+LOCAL_GENERATED_SOURCES_x86_64 += $(addprefix $(intermediates)/, x86_64/matypes.h)
+
+LOCAL_C_INCLUDES_x86 += $(intermediates)/x86
+LOCAL_C_INCLUDES_x86_64 += $(intermediates)/x86_64
 endif
 
 sources += main/git_sha1.h
@@ -79,12 +80,22 @@ $(intermediates)/main/git_sha1.h: $(wildcard $(MESA_TOP)/.git/logs/HEAD)
                        > $@; \
                fi
 
-matypes_deps := \
-       $(BUILD_OUT_EXECUTABLES)/mesa_gen_matypes$(BUILD_EXECUTABLE_SUFFIX) \
+matypes_deps32 := \
+       $(BUILD_OUT_EXECUTABLES)/mesa_gen_matypes32$(BUILD_EXECUTABLE_SUFFIX) \
+       $(LOCAL_PATH)/main/mtypes.h \
+       $(LOCAL_PATH)/tnl/t_context.h
+
+matypes_deps64 := \
+       $(BUILD_OUT_EXECUTABLES)/mesa_gen_matypes64$(BUILD_EXECUTABLE_SUFFIX) \
        $(LOCAL_PATH)/main/mtypes.h \
        $(LOCAL_PATH)/tnl/t_context.h
 
-$(intermediates)/x86/matypes.h: $(matypes_deps) 
+$(intermediates)/x86/matypes.h: $(matypes_deps32)
+       @mkdir -p $(dir $@)
+       @echo "MATYPES: $(PRIVATE_MODULE) <= $(notdir $@)"
+       $(hide) $< > $@
+
+$(intermediates)/x86_64/matypes.h: $(matypes_deps64)
        @mkdir -p $(dir $@)
        @echo "MATYPES: $(PRIVATE_MODULE) <= $(notdir $@)"
        $(hide) $< > $@
index 86196ce..8de90b8 100644 (file)
@@ -31,6 +31,7 @@ LOCAL_PATH := $(call my-dir)
 # Import the following variables:
 #     MESA_FILES
 #     X86_FILES
+#     X86_64_FILES
 include $(LOCAL_PATH)/Makefile.sources
 
 include $(CLEAR_VARS)
@@ -42,19 +43,10 @@ LOCAL_SRC_FILES := \
        $(MESA_FILES)
 
 ifeq ($(strip $(MESA_ENABLE_ASM)),true)
-ifeq ($(TARGET_ARCH),x86)
-       LOCAL_SRC_FILES += $(X86_FILES)
-endif # x86
+       LOCAL_SRC_FILES_x86 += $(X86_FILES)
+       LOCAL_SRC_FILES_x86_64 += $(X86_64_FILES)
 endif # MESA_ENABLE_ASM
 
-ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
-LOCAL_WHOLE_STATIC_LIBRARIES := \
-       libmesa_sse41
-LOCAL_CFLAGS := \
-       -msse4.1 \
-       -DUSE_SSE41
-endif
-
 LOCAL_C_INCLUDES := \
        $(MESA_TOP)/src/mapi \
        $(MESA_TOP)/src/mesa/main \
@@ -69,6 +61,12 @@ LOCAL_GENERATED_SOURCES += \
 LOCAL_WHOLE_STATIC_LIBRARIES += \
        libmesa_program
 
+LOCAL_WHOLE_STATIC_LIBRARIES_x86 += \
+       libmesa_sse41 \
+
+LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += \
+       libmesa_sse41 \
+
 include $(LOCAL_PATH)/Android.gen.mk
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
index 8562da6..3668785 100644 (file)
@@ -20,7 +20,7 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
-ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
+ifneq ($(filter x86 x86_64,$(TARGET_ARCH)),)
 
 LOCAL_PATH := $(call my-dir)
 
@@ -33,6 +33,9 @@ LOCAL_MODULE := libmesa_sse41
 LOCAL_SRC_FILES += \
        $(X86_SSE41_FILES)
 
+LOCAL_CFLAGS += \
+       -msse4.1 \
+
 LOCAL_C_INCLUDES := \
        $(MESA_TOP)/src/mapi \
        $(MESA_TOP)/src/gallium/include \
index 846a5b1..7872800 100644 (file)
@@ -45,18 +45,10 @@ LOCAL_GENERATED_SOURCES := \
        $(MESA_GEN_NIR_H)
 
 ifeq ($(strip $(MESA_ENABLE_ASM)),true)
-ifeq ($(TARGET_ARCH),x86)
-       LOCAL_SRC_FILES += $(X86_FILES)
-endif # x86
+       LOCAL_SRC_FILES_x86 += $(X86_FILES)
+       LOCAL_SRC_FILES_x86_64 += $(X86_64_FILES)
 endif # MESA_ENABLE_ASM
 
-ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
-LOCAL_WHOLE_STATIC_LIBRARIES := \
-       libmesa_sse41
-LOCAL_CFLAGS := \
-       -DUSE_SSE41
-endif
-
 LOCAL_C_INCLUDES := \
        $(MESA_TOP)/src/mapi \
        $(MESA_TOP)/src/mesa/main \
@@ -67,6 +59,12 @@ LOCAL_C_INCLUDES := \
 LOCAL_WHOLE_STATIC_LIBRARIES += \
        libmesa_program
 
+LOCAL_WHOLE_STATIC_LIBRARIES_x86 += \
+       libmesa_sse41 \
+
+LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += \
+       libmesa_sse41 \
+
 LOCAL_STATIC_LIBRARIES += libmesa_nir libmesa_glsl
 
 ifeq ($(MESA_LOLLIPOP_BUILD),true)
index 4fcf73a..163f0e2 100644 (file)
 # ---------------------------------------------------------------------
 
 ifeq ($(strip $(MESA_ENABLE_ASM)),true)
-ifeq ($(TARGET_ARCH),x86)
+ifneq ($(filter x86 x86_64,$(TARGET_ARCH)),)
 
 LOCAL_PATH := $(call my-dir)
 
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := mesa_gen_matypes
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
 LOCAL_IS_HOST_MODULE := true
 
 LOCAL_C_INCLUDES := \
@@ -43,5 +46,5 @@ LOCAL_SRC_FILES := \
 include $(MESA_COMMON_MK)
 include $(BUILD_HOST_EXECUTABLE)
 
-endif # x86
+endif # x86 x86_64
 endif # MESA_ENABLE_ASM
index 7dea3c2..91574a7 100644 (file)
@@ -194,11 +194,6 @@ endif
 LOCAL_CFLAGS := \
        $(MESA_DRI_CFLAGS)
 
-ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
-LOCAL_CFLAGS += \
-       -DUSE_SSE41
-endif
-
 LOCAL_C_INCLUDES := \
        $(MESA_DRI_C_INCLUDES)