1//
2// Copyright (C) 2018 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17package {
18    // See: http://go/android-license-faq
19    // A large-scale-change added 'default_applicable_licenses' to import
20    // all of the 'license_kinds' from "device_generic_opengl-transport_license"
21    // to get the below license kinds:
22    //   SPDX-license-identifier-Apache-2.0
23    //   SPDX-license-identifier-BSD
24    default_applicable_licenses: ["device_generic_opengl-transport_license"],
25}
26
27genrule {
28  name: "glesv1_dec_cuttlefish_gensrc",
29  srcs: ["GLESv1_dec/*"],
30  tools: ["emugen_cuttlefish"],
31  cmd: "$(location emugen_cuttlefish) " +
32       "-i device/generic/opengl-transport/host/libs/virglrenderer/GLESv1_dec " +
33       "-D $(genDir) gles1",
34  out: ["gles1_dec.cpp"],
35}
36
37genrule {
38  name: "glesv1_dec_cuttlefish_genhdr",
39  srcs: ["GLESv1_dec/*"],
40  tools: ["emugen_cuttlefish"],
41  cmd: "$(location emugen_cuttlefish) " +
42       "-i device/generic/opengl-transport/host/libs/virglrenderer/GLESv1_dec " +
43       "-D $(genDir) gles1",
44  out: [
45    "gles1_dec.h",
46    "gles1_opcodes.h",
47    "gles1_server_context.h",
48    "gles1_server_proc.h",
49  ],
50}
51
52genrule {
53  name: "glesv3_dec_cuttlefish_gensrc",
54  srcs: ["GLESv3_dec/*"],
55  tools: ["emugen_cuttlefish"],
56  cmd: "$(location emugen_cuttlefish) " +
57       "-i device/generic/opengl-transport/host/libs/virglrenderer/GLESv3_dec " +
58       "-D $(genDir) gles3",
59  out: ["gles3_dec.cpp"],
60}
61
62genrule {
63  name: "glesv3_dec_cuttlefish_genhdr",
64  srcs: ["GLESv3_dec/*"],
65  tools: ["emugen_cuttlefish"],
66  cmd: "$(location emugen_cuttlefish) " +
67       "-i device/generic/opengl-transport/host/libs/virglrenderer/GLESv3_dec " +
68       "-D $(genDir) gles3",
69  out: [
70    "gles3_dec.h",
71    "gles3_opcodes.h",
72    "gles3_server_context.h",
73    "gles3_server_proc.h",
74  ],
75}
76
77genrule {
78  name: "rendercontrol_dec_cuttlefish_gensrc",
79  srcs: ["renderControl_dec/*"],
80  tools: ["emugen_cuttlefish"],
81  cmd: "$(location emugen_cuttlefish) " +
82       "-i device/generic/opengl-transport/host/libs/virglrenderer/renderControl_dec " +
83       "-D $(genDir) renderControl",
84  out: ["renderControl_dec.cpp"],
85}
86
87genrule {
88  name: "rendercontrol_dec_cuttlefish_genhdr",
89  srcs: ["renderControl_dec/*"],
90  tools: ["emugen_cuttlefish"],
91  cmd: "$(location emugen_cuttlefish) " +
92       "-i device/generic/opengl-transport/host/libs/virglrenderer/renderControl_dec " +
93       "-D $(genDir) renderControl",
94  out: [
95    "renderControl_dec.h",
96    "renderControl_opcodes.h",
97    "renderControl_server_context.h",
98    "renderControl_server_proc.h",
99  ],
100}
101
102genrule {
103  name: "gles1_core_functions_hdr",
104  tool_files: ["gen_entries.py"],
105  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
106  srcs: ["OpenGLESDispatch/gles1_core.entries"],
107  out: ["gles1_core_functions.h"],
108}
109
110genrule {
111  name: "gles1_extensions_functions_hdr",
112  tool_files: ["gen_entries.py"],
113  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
114  srcs: ["OpenGLESDispatch/gles1_extensions.entries"],
115  out: ["gles1_extensions_functions.h"],
116}
117
118genrule {
119  name: "egl_functions_hdr",
120  tool_files: ["gen_entries.py"],
121  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
122  srcs: ["OpenGLESDispatch/egl.entries"],
123  out: ["egl_functions.h"],
124}
125
126genrule {
127  name: "gles3_only_functions_hdr",
128  tool_files: ["gen_entries.py"],
129  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
130  srcs: ["OpenGLESDispatch/gles3_only.entries"],
131  out: ["gles3_only_functions.h"],
132}
133
134genrule {
135  name: "gles31_only_functions_hdr",
136  tool_files: ["gen_entries.py"],
137  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
138  srcs: ["OpenGLESDispatch/gles31_only.entries"],
139  out: ["gles31_only_functions.h"],
140}
141
142genrule {
143  name: "gles2_extensions_functions_hdr",
144  tool_files: ["gen_entries.py"],
145  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
146  srcs: ["OpenGLESDispatch/gles2_extensions.entries"],
147  out: ["gles2_extensions_functions.h"],
148}
149
150genrule {
151  name: "egl_extensions_functions_hdr",
152  tool_files: ["gen_entries.py"],
153  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
154  srcs: ["OpenGLESDispatch/egl_extensions.entries"],
155  out: ["egl_extensions_functions.h"],
156}
157
158genrule {
159  name: "gles2_core_functions_hdr",
160  tool_files: ["gen_entries.py"],
161  cmd: "python3 $(location gen_entries.py) --mode=funcargs $(in) --output $(out)",
162  srcs: ["OpenGLESDispatch/gles2_core.entries"],
163  out: ["gles2_core_functions.h"],
164}
165
166cc_library_host_shared {
167    name: "libvirglrenderer_cuttlefish",
168    include_dirs: [
169        "external/libdrm",
170        "external/libdrm/include",
171        "device/generic/goldfish-opengl/system",
172    ],
173    local_include_dirs: [
174      "GLESv1_dec",
175      "GLESv3_dec",
176      "include",
177      "renderControl_dec",
178    ],
179    srcs: [
180        "AVDVirglRenderer.cpp",
181        "ChecksumCalculator.cpp",
182        "GLESv1.cpp",
183        "GLESv3.cpp",
184        "Gralloc1.cpp",
185        "OpenGLESDispatch/EGLDispatch.cpp",
186        "OpenGLESDispatch/GLESv1Dispatch.cpp",
187        "OpenGLESDispatch/GLESv3Dispatch.cpp",
188        "RenderControl.cpp",
189    ],
190    cflags: ["-Wno-unused-parameter", "-DOPENGL_DEBUG_PRINTOUT"],
191    host_ldlibs: [ "-ldl" ],
192    generated_sources: [
193      "glesv1_dec_cuttlefish_gensrc",
194      "glesv3_dec_cuttlefish_gensrc",
195      "rendercontrol_dec_cuttlefish_gensrc",
196    ],
197    generated_headers: [
198      "glesv1_dec_cuttlefish_genhdr",
199      "glesv3_dec_cuttlefish_genhdr",
200      "rendercontrol_dec_cuttlefish_genhdr",
201      "gles1_core_functions_hdr",
202      "gles1_extensions_functions_hdr",
203      "egl_functions_hdr",
204      "gles3_only_functions_hdr",
205      "gles31_only_functions_hdr",
206      "gles2_extensions_functions_hdr",
207      "egl_extensions_functions_hdr",
208      "gles2_core_functions_hdr",
209    ],
210    header_libs: [
211      "virtio_gpu_uapi_headers",
212      "virgl_headers"
213    ],
214
215    // TODO(b/118466250): Make this work on the Mac
216    version_script : "libvirglrenderer.lds",
217    defaults: [ "cuttlefish_buildhost_only" ],
218}
219