1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5cc_library_headers {
6    name: "rs-headers",
7    export_include_dirs: ["."],
8    sdk_version: "9",
9}
10
11cc_defaults {
12    name: "rs_defaults",
13    cflags: [
14        "-Werror",
15        "-Wall",
16        "-Wextra",
17        "-Wno-deprecated-declarations",
18        "-Wno-unused-parameter",
19        "-Wno-unused-variable",
20    ],
21}
22
23cc_library_shared {
24    name: "libRSDriver",
25    vendor_available: true,
26    native_bridge_supported: true,
27    vndk: {
28        enabled: true,
29        support_system_process: true,
30    },
31    defaults: ["rs_defaults"],
32
33    srcs: [
34        "driver/rsdAllocation.cpp",
35        "driver/rsdBcc.cpp",
36        "driver/rsdCore.cpp",
37        "driver/rsdElement.cpp",
38        "driver/rsdFrameBuffer.cpp",
39        "driver/rsdFrameBufferObj.cpp",
40        "driver/rsdGL.cpp",
41        "driver/rsdMesh.cpp",
42        "driver/rsdMeshObj.cpp",
43        "driver/rsdProgram.cpp",
44        "driver/rsdProgramRaster.cpp",
45        "driver/rsdProgramStore.cpp",
46        "driver/rsdRuntimeStubs.cpp",
47        "driver/rsdSampler.cpp",
48        "driver/rsdScriptGroup.cpp",
49        "driver/rsdShader.cpp",
50        "driver/rsdShaderCache.cpp",
51        "driver/rsdType.cpp",
52        "driver/rsdVertexArray.cpp",
53    ],
54
55    shared_libs: [
56        "libRS_internal",
57        "libRSCpuRef",
58
59        "liblog",
60        "libEGL",
61        "libGLESv1_CM",
62        "libGLESv2",
63
64        "libnativewindow",
65
66        "libbcinfo",
67    ],
68
69    static_libs: ["libarect"],
70
71    header_libs: [
72        "libcutils_headers",
73        "libutils_headers",
74        "libnativebase_headers",
75    ],
76
77    product_variables: {
78        pdk: {
79            enabled: false,
80        },
81    },
82
83    // Bug: http://b/77445194 - Disable x86 asan where rsdRuntimeStubs.cpp has
84    // undefined reference to half-conversion routines (__gnu_h2f_ieee,
85    // __gnu_f2h_ieee).
86    arch: {
87        x86: {
88            sanitize: {
89                never: true,
90            },
91        },
92    },
93
94    target: {
95        native_bridge : {
96            header_libs: [
97                "libnativewindow_headers",
98                "media_ndk_headers",
99            ],
100            shared_libs: [
101                "libnative_bridge_guest_libEGL",
102                "libnative_bridge_guest_libGLESv1_CM",
103                "libnative_bridge_guest_libGLESv2",
104                "libnative_bridge_guest_libnativewindow",
105            ],
106            exclude_shared_libs: [
107                "libEGL",
108                "libGLESv1_CM",
109                "libGLESv2",
110                "libnativewindow",
111            ],
112        },
113    },
114}
115
116// Build rsg-generator ====================
117
118cc_binary_host {
119    name: "rsg-generator",
120
121    srcs: [
122        "spec.l",
123        "rsg_generator.c",
124    ],
125
126    cflags: [
127        "-Wno-unused-function",
128    ],
129
130    stl: "none",
131    sanitize: {
132        never: true,
133    },
134}
135
136// Generate custom headers
137gensrcs {
138    name: "rs_generated_headers",
139    tools: ["rsg-generator"],
140    tool_files: [
141        "rs.spec",
142        "rsg.spec",
143    ],
144    cmd: "cat $(location rs.spec) $(location rsg.spec) | $(location rsg-generator) $(in) $(out)",
145    output_extension: "h",
146    srcs: [
147        "rsgApiStructs.h_rsg",
148        "rsgApiFuncDecl.h_rsg",
149    ],
150    export_include_dirs: ["."],
151}
152
153gensrcs {
154    name: "rs_generated_sources",
155    tools: ["rsg-generator"],
156    tool_files: [
157        "rs.spec",
158        "rsg.spec",
159    ],
160    cmd: "cat $(location rs.spec) $(location rsg.spec) | $(location rsg-generator) $(in) $(out)",
161    output_extension: "cpp",
162    srcs: [
163        "rsgApi.cpp_rsg",
164        "rsgApiReplay.cpp_rsg",
165    ],
166}
167
168cc_library_shared {
169    name: "libRS_internal",
170    vendor_available: true,
171    native_bridge_supported: true,
172    vndk: {
173        enabled: true,
174        support_system_process: true,
175    },
176    defaults: ["rs_defaults"],
177
178    srcs: [
179        "rsApiAllocation.cpp",
180        "rsApiContext.cpp",
181        "rsApiDevice.cpp",
182        "rsApiElement.cpp",
183        "rsApiFileA3D.cpp",
184        "rsApiMesh.cpp",
185        "rsApiType.cpp",
186        "rsAllocation.cpp",
187        "rsAnimation.cpp",
188        "rsComponent.cpp",
189        "rsContext.cpp",
190        "rsClosure.cpp",
191        "rsCppUtils.cpp",
192        "rsDevice.cpp",
193        "rsDriverLoader.cpp",
194        "rsElement.cpp",
195        "rsFBOCache.cpp",
196        "rsFifoSocket.cpp",
197        "rsFileA3D.cpp",
198        "rsFont.cpp",
199        "rsGrallocConsumer.cpp",
200        "rsObjectBase.cpp",
201        "rsMatrix2x2.cpp",
202        "rsMatrix3x3.cpp",
203        "rsMatrix4x4.cpp",
204        "rsMesh.cpp",
205        "rsMutex.cpp",
206        "rsProgram.cpp",
207        "rsProgramFragment.cpp",
208        "rsProgramStore.cpp",
209        "rsProgramRaster.cpp",
210        "rsProgramVertex.cpp",
211        "rsSampler.cpp",
212        "rsScript.cpp",
213        "rsScriptC.cpp",
214        "rsScriptC_Lib.cpp",
215        "rsScriptC_LibGL.cpp",
216        "rsScriptGroup.cpp",
217        "rsScriptGroup2.cpp",
218        "rsScriptIntrinsic.cpp",
219        "rsSignal.cpp",
220        "rsStream.cpp",
221        "rsThreadIO.cpp",
222        "rsType.cpp",
223    ],
224
225    generated_sources: ["rs_generated_sources"],
226    generated_headers: ["rs_generated_headers"],
227
228    shared_libs: [
229        "liblog",
230        "libutilscallstack",
231        "libutils",
232        "libEGL",
233        "libGLESv1_CM",
234        "libGLESv2",
235
236        "libdl",
237        "libnativewindow",
238
239        "libft2",
240
241        "libbcinfo",
242        "libmediandk",
243    ],
244
245    static_libs: ["libarect"],
246
247    // These runtime modules, including libcompiler_rt.so, are required for
248    // RenderScript.
249    required: [
250        "libclcore.bc",
251        "libclcore_debug.bc",
252        "libclcore_debug_g.bc",
253        "libclcore_g.bc",
254        "libcompiler_rt",
255    ],
256
257    arch: {
258        x86: {
259            required: ["libclcore_x86.bc"],
260        },
261        x86_64: {
262            required: ["libclcore_x86.bc"],
263        },
264
265        arm: {
266            neon: {
267                required: ["libclcore_neon.bc"],
268            },
269        },
270    },
271
272    product_variables: {
273        override_rs_driver: {
274            cflags: ["-DOVERRIDE_RS_DRIVER=%s"],
275        },
276        pdk: {
277            enabled: false,
278        },
279    },
280
281    target: {
282        native_bridge: {
283            header_libs: [
284                "libnativewindow_headers",
285                "media_ndk_headers",
286            ],
287            shared_libs: [
288                "libnative_bridge_guest_libEGL",
289                "libnative_bridge_guest_libGLESv1_CM",
290                "libnative_bridge_guest_libGLESv2",
291                "libnative_bridge_guest_libmediandk",
292                "libnative_bridge_guest_libnativewindow",
293            ],
294            exclude_shared_libs: [
295                "libEGL",
296                "libGLESv1_CM",
297                "libGLESv2",
298                "libmediandk",
299                "libnativewindow",
300            ],
301        },
302    },
303}
304
305cc_library_shared {
306    name: "libRS",
307    defaults: ["rs_defaults"],
308    native_bridge_supported: true,
309    llndk: {
310        symbol_file: "libRS.map",
311    },
312    srcs: [
313        "rsApiStubs.cpp",
314        "rsHidlAdaptation.cpp",
315        "rsFallbackAdaptation.cpp",
316    ],
317
318    // Default CPU fallback
319    required: [
320        "libRS_internal",
321        "libRSDriver",
322        "libRSCacheDir",
323    ],
324
325    // Treble configuration
326    shared_libs: [
327        "libhidlbase",
328        "libutilscallstack",
329        "libutils",
330        "android.hardware.renderscript@1.0",
331
332        "liblog",
333        "libcutils",
334    ],
335
336    product_variables: {
337        pdk: {
338            enabled: false,
339        },
340    },
341
342    static_libs: ["libRSDispatch"],
343
344    version_script: "libRS.map",
345}
346
347cc_library_shared {
348    name: "libRSCacheDir",
349    defaults: ["rs_defaults"],
350
351    srcs: ["rsCacheDir.cpp"],
352    shared_libs: [
353        "libandroid_runtime",
354        "liblog",
355    ],
356
357    product_variables: {
358        pdk: {
359            enabled: false,
360        },
361    },
362}
363
364build = [
365    "support.bp",
366]
367
368subdirs = [
369    "cpp",
370    "cpu_ref",
371    "script_api",
372    "support",
373]
374