1
2LOCAL_PATH:=frameworks/rs
3rs_base_CFLAGS := -Werror -Wall -Wno-unused-parameter -Wno-unused-variable \
4		  -Wno-overloaded-virtual -DRS_COMPATIBILITY_LIB -std=c++11
5
6ifeq ($(ARCH_ARM_HAVE_NEON),true)
7rs_base_CFLAGS += -DARCH_ARM_HAVE_NEON
8endif
9
10ifeq ($(TARGET_BUILD_PDK), true)
11  rs_base_CFLAGS += -D__RS_PDK__
12endif
13
14# Build rsg-generator ====================
15include $(CLEAR_VARS)
16
17LOCAL_MODULE := rsg-generator_support
18
19# These symbols are normally defined by BUILD_XXX, but we need to define them
20# here so that local-intermediates-dir works.
21
22LOCAL_IS_HOST_MODULE := true
23LOCAL_MODULE_CLASS := EXECUTABLES
24intermediates := $(local-intermediates-dir)
25LOCAL_MODULE_TAGS := optional
26
27LOCAL_SRC_FILES:= \
28    spec.l \
29    rsg_generator.c
30
31LOCAL_CXX_STL := none
32LOCAL_SANITIZE := never
33
34include $(BUILD_HOST_EXECUTABLE)
35
36# TODO: This should go into build/core/config.mk
37RSG_GENERATOR_SUPPORT:=$(LOCAL_BUILT_MODULE)
38
39include $(CLEAR_VARS)
40LOCAL_CLANG := true
41LOCAL_MODULE := libRSSupport
42LOCAL_SDK_VERSION := 9
43
44
45LOCAL_MODULE_CLASS := SHARED_LIBRARIES
46generated_sources_dir := $(call local-generated-sources-dir)
47
48# Generate custom headers
49
50GEN := $(addprefix $(generated_sources_dir)/, \
51            rsgApiStructs.h \
52            rsgApiFuncDecl.h \
53        )
54
55$(GEN) : PRIVATE_PATH := $(LOCAL_PATH)
56$(GEN) : PRIVATE_CUSTOM_TOOL = cat $(PRIVATE_PATH)/rs.spec $(PRIVATE_PATH)/rs_compat.spec | $(RSG_GENERATOR_SUPPORT) $< $@
57$(GEN) : $(RSG_GENERATOR_SUPPORT) $(LOCAL_PATH)/rs.spec $(LOCAL_PATH)/rs_compat.spec
58$(GEN): $(generated_sources_dir)/%.h : $(LOCAL_PATH)/%.h.rsg
59	$(transform-generated-source)
60
61# used in jni/Android.mk
62rs_generated_source += $(GEN)
63LOCAL_GENERATED_SOURCES += $(GEN)
64
65# Generate custom source files
66
67GEN := $(addprefix $(generated_sources_dir)/, \
68            rsgApi.cpp \
69            rsgApiReplay.cpp \
70        )
71
72$(GEN) : PRIVATE_PATH := $(LOCAL_PATH)
73$(GEN) : PRIVATE_CUSTOM_TOOL = cat $(PRIVATE_PATH)/rs.spec $(PRIVATE_PATH)/rs_compat.spec | $(RSG_GENERATOR_SUPPORT) $< $@
74$(GEN) : $(RSG_GENERATOR_SUPPORT) $(LOCAL_PATH)/rs.spec $(LOCAL_PATH)/rs_compat.spec
75$(GEN): $(generated_sources_dir)/%.cpp : $(LOCAL_PATH)/%.cpp.rsg
76	$(transform-generated-source)
77
78# used in jni/Android.mk
79rs_generated_source += $(GEN)
80
81LOCAL_GENERATED_SOURCES += $(GEN)
82
83LOCAL_SRC_FILES:= \
84	rsAllocation.cpp \
85	rsApiAllocation.cpp \
86	rsApiContext.cpp \
87	rsApiDevice.cpp \
88	rsApiElement.cpp \
89	rsApiType.cpp \
90	rsClosure.cpp \
91	rsCompatibilityLib.cpp \
92	rsComponent.cpp \
93	rsContext.cpp \
94	rsCppUtils.cpp \
95	rsDevice.cpp \
96	rsDriverLoader.cpp \
97	rsElement.cpp \
98	rsFifoSocket.cpp \
99	rsObjectBase.cpp \
100	rsMatrix2x2.cpp \
101	rsMatrix3x3.cpp \
102	rsMatrix4x4.cpp \
103	rsMutex.cpp \
104	rsSampler.cpp \
105	rsScript.cpp \
106	rsScriptC.cpp \
107	rsScriptC_Lib.cpp \
108	rsScriptGroup.cpp \
109	rsScriptGroup2.cpp \
110	rsScriptIntrinsic.cpp \
111	rsSignal.cpp \
112	rsStream.cpp \
113	rsThreadIO.cpp \
114	rsType.cpp \
115	driver/rsdAllocation.cpp \
116	driver/rsdBcc.cpp \
117	driver/rsdCore.cpp \
118	driver/rsdElement.cpp \
119	driver/rsdRuntimeStubs.cpp \
120	driver/rsdSampler.cpp \
121	driver/rsdScriptGroup.cpp \
122	driver/rsdType.cpp \
123	cpu_ref/rsCpuCore.cpp \
124	cpu_ref/rsCpuExecutable.cpp \
125	cpu_ref/rsCpuScript.cpp \
126	cpu_ref/rsCpuRuntimeMath.cpp \
127	cpu_ref/rsCpuScriptGroup.cpp \
128	cpu_ref/rsCpuScriptGroup2.cpp \
129	cpu_ref/rsCpuIntrinsic.cpp \
130	cpu_ref/rsCpuIntrinsic3DLUT.cpp \
131	cpu_ref/rsCpuIntrinsicBlend.cpp \
132	cpu_ref/rsCpuIntrinsicBlur.cpp \
133	cpu_ref/rsCpuIntrinsicBLAS.cpp \
134	cpu_ref/rsCpuIntrinsicColorMatrix.cpp \
135	cpu_ref/rsCpuIntrinsicConvolve3x3.cpp \
136	cpu_ref/rsCpuIntrinsicConvolve5x5.cpp \
137	cpu_ref/rsCpuIntrinsicHistogram.cpp \
138	cpu_ref/rsCpuIntrinsicLUT.cpp \
139	cpu_ref/rsCpuIntrinsicResize.cpp \
140	cpu_ref/rsCpuIntrinsicYuvToRGB.cpp
141
142ifeq ($(ARCH_ARM_HAVE_ARMV7A),true)
143LOCAL_CFLAGS_arm := -DARCH_ARM_HAVE_VFP -DARCH_ARM_USE_INTRINSICS
144LOCAL_ASFLAGS_arm := -mfpu=neon
145LOCAL_SRC_FILES_arm := \
146    cpu_ref/rsCpuIntrinsics_neon_3DLUT.S \
147    cpu_ref/rsCpuIntrinsics_neon_Blend.S \
148    cpu_ref/rsCpuIntrinsics_neon_Blur.S \
149    cpu_ref/rsCpuIntrinsics_neon_ColorMatrix.S \
150    cpu_ref/rsCpuIntrinsics_neon_Convolve.S \
151    cpu_ref/rsCpuIntrinsics_neon_Resize.S \
152    cpu_ref/rsCpuIntrinsics_neon_YuvToRGB.S
153endif
154
155LOCAL_CFLAGS_arm64 += \
156    -DARCH_ARM_USE_INTRINSICS \
157    -DARCH_ARM64_USE_INTRINSICS \
158    -DARCH_ARM64_HAVE_NEON
159LOCAL_SRC_FILES_arm64 += \
160    cpu_ref/rsCpuIntrinsics_advsimd_3DLUT.S \
161    cpu_ref/rsCpuIntrinsics_advsimd_Blend.S \
162    cpu_ref/rsCpuIntrinsics_advsimd_Blur.S \
163    cpu_ref/rsCpuIntrinsics_advsimd_ColorMatrix.S \
164    cpu_ref/rsCpuIntrinsics_advsimd_Convolve.S \
165    cpu_ref/rsCpuIntrinsics_advsimd_Resize.S \
166    cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S
167
168LOCAL_CFLAGS_x86 += -DARCH_X86_HAVE_SSSE3
169LOCAL_SRC_FILES_x86 += cpu_ref/rsCpuIntrinsics_x86.cpp
170LOCAL_CFLAGS_x86_64 += -DARCH_X86_HAVE_SSSE3
171LOCAL_SRC_FILES_x86_64 += cpu_ref/rsCpuIntrinsics_x86.cpp
172
173LOCAL_REQUIRED_MODULES := libblasV8
174LOCAL_STATIC_LIBRARIES := libbnnmlowpV8
175LOCAL_LDFLAGS += -llog -ldl -Wl,--exclude-libs,libc++_static.a
176LOCAL_NDK_STL_VARIANT := c++_static
177
178LOCAL_C_INCLUDES += external/cblas/include
179LOCAL_C_INCLUDES += external/gemmlowp/eight_bit_int_gemm
180
181LOCAL_CFLAGS += $(rs_base_CFLAGS) -DGEMMLOWP_USE_STLPORT
182
183LOCAL_MODULE:= libRSSupport
184LOCAL_MODULE_TAGS := optional
185
186# TODO: why isn't this picked up from the host GLOBAL_CFLAGS?
187LOCAL_CFLAGS += -D__STDC_FORMAT_MACROS
188
189include $(BUILD_SHARED_LIBRARY)
190