1LOCAL_PATH:=$(call my-dir)
2
3# Not building RenderScript modules in PDK builds, as libmediandk
4# is not available in PDK.
5ifneq ($(TARGET_BUILD_PDK), true)
6
7rs_base_CFLAGS := -Werror -Wall -Wextra \
8				  -Wno-unused-parameter -Wno-unused-variable
9
10ifneq ($(OVERRIDE_RS_DRIVER),)
11  rs_base_CFLAGS += -DOVERRIDE_RS_DRIVER=$(OVERRIDE_RS_DRIVER)
12endif
13
14ifeq ($(BUILD_ARM_FOR_X86),true)
15  rs_base_CFLAGS += -DBUILD_ARM_FOR_X86
16endif
17
18include $(CLEAR_VARS)
19ifneq ($(HOST_OS),windows)
20endif
21LOCAL_MODULE := libRSCpuRef
22LOCAL_MODULE_TARGET_ARCH := arm mips mips64 x86 x86_64 arm64
23
24LOCAL_SRC_FILES:= \
25        rsCpuCore.cpp \
26        rsCpuExecutable.cpp \
27        rsCpuScript.cpp \
28        rsCpuRuntimeMath.cpp \
29        rsCpuScriptGroup.cpp \
30        rsCpuScriptGroup2.cpp \
31        rsCpuIntrinsic.cpp \
32        rsCpuIntrinsic3DLUT.cpp \
33        rsCpuIntrinsicBLAS.cpp \
34        rsCpuIntrinsicBlend.cpp \
35        rsCpuIntrinsicBlur.cpp \
36        rsCpuIntrinsicColorMatrix.cpp \
37        rsCpuIntrinsicConvolve3x3.cpp \
38        rsCpuIntrinsicConvolve5x5.cpp \
39        rsCpuIntrinsicHistogram.cpp \
40        rsCpuIntrinsicResize.cpp \
41        rsCpuIntrinsicLUT.cpp \
42        rsCpuIntrinsicYuvToRGB.cpp
43
44LOCAL_CFLAGS_arm64 += -DARCH_ARM_USE_INTRINSICS -DARCH_ARM64_USE_INTRINSICS -DARCH_ARM64_HAVE_NEON
45
46ifeq ($(RS_DISABLE_A53_WORKAROUND),true)
47LOCAL_CFLAGS_arm64 += -DDISABLE_A53_WORKAROUND
48endif
49
50LOCAL_SRC_FILES_arm64 += \
51    rsCpuIntrinsics_advsimd_3DLUT.S \
52    rsCpuIntrinsics_advsimd_Convolve.S \
53    rsCpuIntrinsics_advsimd_Blur.S \
54    rsCpuIntrinsics_advsimd_ColorMatrix.S \
55    rsCpuIntrinsics_advsimd_Resize.S \
56    rsCpuIntrinsics_advsimd_YuvToRGB.S \
57    rsCpuIntrinsics_advsimd_Blend.S
58
59ifeq ($(ARCH_ARM_HAVE_NEON),true)
60    LOCAL_CFLAGS_arm += -DARCH_ARM_HAVE_NEON
61endif
62
63ifeq ($(ARCH_ARM_HAVE_VFP),true)
64    LOCAL_CFLAGS_arm += -DARCH_ARM_HAVE_VFP -DARCH_ARM_USE_INTRINSICS
65    LOCAL_SRC_FILES_arm += \
66    rsCpuIntrinsics_neon_3DLUT.S \
67    rsCpuIntrinsics_neon_Blend.S \
68    rsCpuIntrinsics_neon_Blur.S \
69    rsCpuIntrinsics_neon_Convolve.S \
70    rsCpuIntrinsics_neon_ColorMatrix.S \
71    rsCpuIntrinsics_neon_Resize.S \
72    rsCpuIntrinsics_neon_YuvToRGB.S \
73
74    LOCAL_ASFLAGS_arm := -mfpu=neon
75endif
76
77ifeq ($(ARCH_X86_HAVE_SSSE3),true)
78    LOCAL_CFLAGS_x86 += -DARCH_X86_HAVE_SSSE3
79    LOCAL_SRC_FILES_x86 += \
80    rsCpuIntrinsics_x86.cpp
81    LOCAL_CFLAGS_x86_64 += -DARCH_X86_HAVE_SSSE3
82    LOCAL_SRC_FILES_x86_64 += \
83    rsCpuIntrinsics_x86.cpp
84endif
85
86LOCAL_SHARED_LIBRARIES += libRS_internal libc++ liblog libz
87LOCAL_SHARED_LIBRARIES += libbcinfo libblas
88LOCAL_STATIC_LIBRARIES := libbnnmlowp
89
90LOCAL_C_INCLUDES += frameworks/compile/libbcc/include
91LOCAL_C_INCLUDES += frameworks/rs
92LOCAL_C_INCLUDES += external/cblas/include
93LOCAL_C_INCLUDES += external/gemmlowp/eight_bit_int_gemm
94LOCAL_C_INCLUDES += external/zlib
95
96include frameworks/compile/libbcc/libbcc-targets.mk
97
98LOCAL_CFLAGS += $(rs_base_CFLAGS)
99
100include $(BUILD_SHARED_LIBRARY)
101
102endif # TARGET_BUILD_PDK
103