1cc_defaults {
2    name: "rs_support_defaults",
3    product_variables: {
4        unbundled_build: {
5            // Unbundled builds use prebuilts in prebuilts/sdk/renderscript instead
6            enabled: false,
7        },
8    },
9}
10
11// Generate custom headers
12gensrcs {
13    name: "rs_generated_headers_support",
14    tools: ["rsg-generator"],
15    tool_files: [
16        "rs.spec",
17        "rs_compat.spec",
18    ],
19    cmd: "cat $(location rs.spec) $(location rs_compat.spec) | $(location rsg-generator) $(in) $(out)",
20    output_extension: "h",
21    srcs: [
22        "rsgApiStructs.h_rsg",
23        "rsgApiFuncDecl.h_rsg",
24    ],
25    export_include_dirs: ["."],
26}
27
28gensrcs {
29    name: "rs_generated_sources_support",
30    tools: ["rsg-generator"],
31    tool_files: [
32        "rs.spec",
33        "rs_compat.spec",
34    ],
35    cmd: "cat $(location rs.spec) $(location rs_compat.spec) | $(location rsg-generator) $(in) $(out)",
36    output_extension: "cpp",
37    srcs: [
38        "rsgApi.cpp_rsg",
39        "rsgApiReplay.cpp_rsg",
40    ],
41}
42
43cc_library_shared {
44    name: "libRSSupport",
45    defaults: ["rs_support_defaults"],
46    sdk_version: "9",
47
48    srcs: [
49        "rsAllocation.cpp",
50        "rsApiAllocation.cpp",
51        "rsApiContext.cpp",
52        "rsApiDevice.cpp",
53        "rsApiElement.cpp",
54        "rsApiType.cpp",
55        "rsClosure.cpp",
56        "rsComponent.cpp",
57        "rsContext.cpp",
58        "rsCppUtils.cpp",
59        "rsDevice.cpp",
60        "rsDriverLoader.cpp",
61        "rsElement.cpp",
62        "rsFifoSocket.cpp",
63        "rsObjectBase.cpp",
64        "rsMatrix2x2.cpp",
65        "rsMatrix3x3.cpp",
66        "rsMatrix4x4.cpp",
67        "rsMutex.cpp",
68        "rsSampler.cpp",
69        "rsScript.cpp",
70        "rsScriptC.cpp",
71        "rsScriptC_Lib.cpp",
72        "rsScriptGroup.cpp",
73        "rsScriptGroup2.cpp",
74        "rsScriptIntrinsic.cpp",
75        "rsSignal.cpp",
76        "rsStream.cpp",
77        "rsThreadIO.cpp",
78        "rsType.cpp",
79        "driver/rsdAllocation.cpp",
80        "driver/rsdBcc.cpp",
81        "driver/rsdCore.cpp",
82        "driver/rsdElement.cpp",
83        "driver/rsdRuntimeStubs.cpp",
84        "driver/rsdSampler.cpp",
85        "driver/rsdScriptGroup.cpp",
86        "driver/rsdType.cpp",
87        "cpu_ref/rsCpuCore.cpp",
88        "cpu_ref/rsCpuExecutable.cpp",
89        "cpu_ref/rsCpuScript.cpp",
90        "cpu_ref/rsCpuRuntimeMath.cpp",
91        "cpu_ref/rsCpuScriptGroup.cpp",
92        "cpu_ref/rsCpuScriptGroup2.cpp",
93        "cpu_ref/rsCpuIntrinsic.cpp",
94        "cpu_ref/rsCpuIntrinsic3DLUT.cpp",
95        "cpu_ref/rsCpuIntrinsicBlend.cpp",
96        "cpu_ref/rsCpuIntrinsicBlur.cpp",
97        "cpu_ref/rsCpuIntrinsicBLAS.cpp",
98        "cpu_ref/rsCpuIntrinsicColorMatrix.cpp",
99        "cpu_ref/rsCpuIntrinsicConvolve3x3.cpp",
100        "cpu_ref/rsCpuIntrinsicConvolve5x5.cpp",
101        "cpu_ref/rsCpuIntrinsicHistogram.cpp",
102        "cpu_ref/rsCpuIntrinsicLUT.cpp",
103        "cpu_ref/rsCpuIntrinsicResize.cpp",
104        "cpu_ref/rsCpuIntrinsicYuvToRGB.cpp",
105    ],
106
107    generated_sources: ["rs_generated_sources_support"],
108    generated_headers: ["rs_generated_headers_support"],
109
110    arch: {
111        arm: {
112            cflags: [
113                "-DARCH_ARM_HAVE_VFP",
114                "-DARCH_ARM_USE_INTRINSICS",
115            ],
116            asflags: ["-mfpu=neon"],
117            srcs: [
118                "cpu_ref/rsCpuIntrinsics_neon_3DLUT.S",
119                "cpu_ref/rsCpuIntrinsics_neon_Blend.S",
120                "cpu_ref/rsCpuIntrinsics_neon_Blur.S",
121                "cpu_ref/rsCpuIntrinsics_neon_ColorMatrix.S",
122                "cpu_ref/rsCpuIntrinsics_neon_Convolve.S",
123                "cpu_ref/rsCpuIntrinsics_neon_Resize.S",
124                "cpu_ref/rsCpuIntrinsics_neon_YuvToRGB.S",
125            ],
126
127            neon: {
128                cflags: ["-DARCH_ARM_HAVE_NEON"]
129            },
130        },
131
132        arm64: {
133            cflags: [
134                "-DARCH_ARM_USE_INTRINSICS",
135                "-DARCH_ARM64_USE_INTRINSICS",
136                "-DARCH_ARM64_HAVE_NEON",
137            ],
138            srcs: [
139                "cpu_ref/rsCpuIntrinsics_advsimd_3DLUT.S",
140                "cpu_ref/rsCpuIntrinsics_advsimd_Blend.S",
141                "cpu_ref/rsCpuIntrinsics_advsimd_Blur.S",
142                "cpu_ref/rsCpuIntrinsics_advsimd_ColorMatrix.S",
143                "cpu_ref/rsCpuIntrinsics_advsimd_Convolve.S",
144                "cpu_ref/rsCpuIntrinsics_advsimd_Resize.S",
145                "cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S",
146            ],
147        },
148
149        x86: {
150            cflags: ["-DARCH_X86_HAVE_SSSE3"],
151            srcs: ["cpu_ref/rsCpuIntrinsics_x86.cpp"],
152        },
153
154        x86_64: {
155            cflags: ["-DARCH_X86_HAVE_SSSE3"],
156            srcs: ["cpu_ref/rsCpuIntrinsics_x86.cpp"],
157        },
158    },
159
160    required: ["libblasV8"],
161    static_libs: ["libbnnmlowpV8"],
162    shared_libs: [
163        "liblog",
164        "libdl",
165    ],
166    ldflags: [
167        "-Wl,--exclude-libs,libc++_static.a",
168        "-Wl,--hash-style=sysv",
169    ],
170    stl: "c++_static",
171
172    cflags: [
173        "-Werror",
174        "-Wall",
175        "-Wextra",
176        "-Wno-unused-parameter",
177        "-Wno-unused-variable",
178        "-Wno-overloaded-virtual",
179        "-DRS_COMPATIBILITY_LIB",
180
181        "-DGEMMLOWP_USE_STLPORT",
182        // TODO: why isn't this picked up from the host GLOBAL_CFLAGS?
183        "-D__STDC_FORMAT_MACROS",
184    ],
185}
186