1shared_library("libvulkan_goldfish") {
2  sources = [
3    "android-emu/aemu/base/AlignedBuf.cpp",
4    "android-emu/aemu/base/AlignedBuf.h",
5    "android-emu/aemu/base/Allocator.h",
6    "android-emu/aemu/base/AndroidSubAllocator.cpp",
7    "android-emu/aemu/base/AndroidSubAllocator.h",
8    "android-emu/aemu/base/BumpPool.h",
9    "android-emu/aemu/base/AndroidHealthMonitor.cpp",
10    "android-emu/aemu/base/AndroidHealthMonitor.h",
11    "android-emu/aemu/base/AndroidHealthMonitorConsumer.h",
12    "android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.cpp",
13    "android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.h",
14    "android-emu/aemu/base/Pool.cpp",
15    "android-emu/aemu/base/Pool.h",
16    "android-emu/aemu/base/Process.cpp",
17    "android-emu/aemu/base/Process.h",
18    "android-emu/aemu/base/Tracing.cpp",
19    "android-emu/aemu/base/Tracing.h",
20    "android-emu/aemu/base/files/MemStream.cpp",
21    "android-emu/aemu/base/files/MemStream.h",
22    "android-emu/aemu/base/files/Stream.cpp",
23    "android-emu/aemu/base/files/Stream.h",
24    "android-emu/aemu/base/files/StreamSerializing.cpp",
25    "android-emu/aemu/base/files/StreamSerializing.h",
26    "android-emu/aemu/base/fit/Defer.h",
27    "android-emu/aemu/base/fit/Function.h",
28    "android-emu/aemu/base/fit/FunctionInternal.h",
29    "android-emu/aemu/base/fit/Nullable.h",
30    "android-emu/aemu/base/fit/ThreadChecker.h",
31    "android-emu/aemu/base/fit/ThreadSafety.h",
32    "android-emu/aemu/base/fit/UtilityInternal.h",
33    "android-emu/aemu/base/ring_buffer.c",
34    "android-emu/aemu/base/synchronization/AndroidConditionVariable.h",
35    "android-emu/aemu/base/synchronization/AndroidLock.h",
36    "android-emu/aemu/base/synchronization/AndroidMessageChannel.cpp",
37    "android-emu/aemu/base/synchronization/AndroidMessageChannel.h",
38    "android-emu/aemu/base/testing/TestClock.h",
39    "android-emu/aemu/base/threads/AndroidFunctorThread.cpp",
40    "android-emu/aemu/base/threads/AndroidFunctorThread.h",
41    "android-emu/aemu/base/threads/AndroidThread.h",
42    "android-emu/aemu/base/threads/AndroidThreadStore.h",
43    "android-emu/aemu/base/threads/AndroidThreadTypes.h",
44    "android-emu/aemu/base/threads/AndroidThread_pthread.cpp",
45    "android-emu/aemu/base/threads/AndroidWorkPool.cpp",
46    "android-emu/aemu/base/threads/AndroidWorkPool.h",
47    "platform/include/VirtGpu.h",
48    "platform/stub/VirtGpuBlob.cpp",
49    "platform/stub/VirtGpuBlobMapping.cpp",
50    "platform/stub/VirtGpuDevice.cpp",
51    "shared/GoldfishAddressSpace/goldfish_address_space.cpp",
52    "shared/GoldfishAddressSpace/include/goldfish_address_space.h",
53    "shared/OpenglCodecCommon/ChecksumCalculator.cpp",
54    "shared/OpenglCodecCommon/ChecksumCalculator.h",
55    "shared/OpenglCodecCommon/glUtils.cpp",
56    "shared/OpenglCodecCommon/glUtils.h",
57    "shared/OpenglCodecCommon/goldfish_dma.cpp",
58    "shared/OpenglCodecCommon/goldfish_dma.h",
59    "shared/gralloc_cb/include/gralloc_cb_bp.h",
60    "shared/qemupipe/include-types/qemu_pipe_types_bp.h",
61    "shared/qemupipe/include/qemu_pipe_bp.h",
62    "shared/qemupipe/qemu_pipe_common.cpp",
63    "shared/qemupipe/qemu_pipe_guest.cpp",
64    "system/OpenglSystemCommon/AddressSpaceStream.cpp",
65    "system/OpenglSystemCommon/HostConnection.cpp",
66    "system/OpenglSystemCommon/HostConnection.h",
67    "system/OpenglSystemCommon/ProcessPipe.cpp",
68    "system/OpenglSystemCommon/ProcessPipe.h",
69    "system/OpenglSystemCommon/QemuPipeStream.cpp",
70    "system/OpenglSystemCommon/QemuPipeStream.h",
71    "system/OpenglSystemCommon/ThreadInfo.cpp",
72    "system/OpenglSystemCommon/ThreadInfo.h",
73    "system/renderControl_enc/renderControl_enc.cpp",
74    "system/renderControl_enc/renderControl_enc.h",
75    "system/vulkan/goldfish_vulkan.cpp",
76    "system/vulkan_enc/CommandBufferStagingStream.cpp",
77    "system/vulkan_enc/CommandBufferStagingStream.h",
78    "system/vulkan_enc/DescriptorSetVirtualization.cpp",
79    "system/vulkan_enc/DescriptorSetVirtualization.h",
80    "system/vulkan_enc/HostVisibleMemoryVirtualization.cpp",
81    "system/vulkan_enc/HostVisibleMemoryVirtualization.h",
82    "system/vulkan_enc/ResourceTracker.cpp",
83    "system/vulkan_enc/ResourceTracker.h",
84    "system/vulkan_enc/Resources.cpp",
85    "system/vulkan_enc/Resources.h",
86    "system/vulkan_enc/Validation.cpp",
87    "system/vulkan_enc/Validation.h",
88    "system/vulkan_enc/VkEncoder.cpp",
89    "system/vulkan_enc/VkEncoder.h",
90    "system/vulkan_enc/VulkanHandleMapping.cpp",
91    "system/vulkan_enc/VulkanHandleMapping.h",
92    "system/vulkan_enc/VulkanStreamGuest.cpp",
93    "system/vulkan_enc/VulkanStreamGuest.h",
94    "system/vulkan_enc/func_table.cpp",
95    "system/vulkan_enc/func_table.h",
96    "system/vulkan_enc/goldfish_vk_counting_guest.cpp",
97    "system/vulkan_enc/goldfish_vk_counting_guest.h",
98    "system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp",
99    "system/vulkan_enc/goldfish_vk_deepcopy_guest.h",
100    "system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp",
101    "system/vulkan_enc/goldfish_vk_extension_structs_guest.h",
102    "system/vulkan_enc/goldfish_vk_marshaling_guest.cpp",
103    "system/vulkan_enc/goldfish_vk_marshaling_guest.h",
104    "system/vulkan_enc/goldfish_vk_reserved_marshaling_guest.cpp",
105    "system/vulkan_enc/goldfish_vk_reserved_marshaling_guest.h",
106    "system/vulkan_enc/goldfish_vk_transform_guest.cpp",
107    "system/vulkan_enc/goldfish_vk_transform_guest.h",
108    "system/vulkan_enc/vulkan_gfxstream.h",
109    "system/vulkan_enc/vulkan_gfxstream_structure_type.h",
110  ]
111
112  include_dirs = [
113    "android-emu",
114    "host/include/libOpenglRender",
115    "shared/GoldfishAddressSpace/include",
116    "shared/OpenglCodecCommon",
117    "shared/gralloc_cb/include",
118    "shared/qemupipe/include",
119    "shared/qemupipe/include-types",
120    "system/OpenglSystemCommon",
121    "system/renderControl_enc",
122    "system/vulkan_enc",
123    "system/include",
124  ]
125
126  defines = [
127    "LOG_TAG=\"goldfish_vulkan\"",
128    "GFXSTREAM",
129    "GOLDFISH_NO_GL",
130    "VK_GFXSTREAM_STRUCTURE_TYPE_EXT",
131    "VK_USE_PLATFORM_FUCHSIA",
132    "PLATFORM_SDK_VERSION=1",
133    "PAGE_SIZE=4096",
134  ]
135
136  cflags = [ "-Wextra-semi" ]
137
138  cflags_c = [
139    "-Wstrict-prototypes",
140    "-Wno-missing-field-initializers",
141    "-Wno-newline-eof",
142    "-Wno-sign-compare",
143    "-Wno-unused-function",
144    "-Wno-unused-value",
145    "-Wno-unused-variable",
146  ]
147
148  cflags_cc = [
149    "-Wno-conversion",
150    "-Wno-missing-field-initializers",
151    "-Wno-newline-eof",
152    "-Wno-pessimizing-move",
153    "-Wno-sign-compare",
154    "-Wno-unused-function",
155    "-Wno-unused-value",
156    "-Wno-unused-variable",
157    "-Wno-unused-but-set-parameter",
158    "-Wno-unused-but-set-variable",
159  ]
160
161  ldflags = [ "-static-libstdc++" ]
162
163  if (target_os == "fuchsia") {
164    sources -= [
165      "shared/OpenglCodecCommon/goldfish_dma.cpp",
166      "shared/OpenglCodecCommon/goldfish_dma.h",
167      "shared/qemupipe/qemu_pipe_common.cpp",
168      "shared/qemupipe/qemu_pipe_guest.cpp",
169      "system/OpenglSystemCommon/QemuPipeStream.cpp",
170    ]
171    sources += [
172      "fuchsia/fuchsia_stdio.cc",
173      "fuchsia/port.cc",
174      "fuchsia/service_connector.cc",
175      "system/OpenglSystemCommon/QemuPipeStreamFuchsia.cpp",
176      "system/OpenglSystemCommon/TraceProviderFuchsia.cpp",
177      "system/OpenglSystemCommon/TraceProviderFuchsia.h",
178    ]
179
180    include_dirs += [
181      "fuchsia/include",
182      "platform/include",
183      "//third_party/Vulkan-Headers/include",
184    ]
185
186    deps = [
187      "//sdk/fidl/fuchsia.hardware.goldfish:fuchsia.hardware.goldfish_cpp_wire",
188      "//sdk/fidl/fuchsia.logger:fuchsia.logger_cpp_wire",
189      "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp_wire",
190      "//src/zircon/lib/zircon",
191      "//zircon/system/ulib/async:async-cpp",
192      "//zircon/system/ulib/async-loop:async-loop-cpp",
193      "//zircon/system/ulib/syslog:syslog-static",
194      "//zircon/system/ulib/trace:trace-with-static-engine",
195      "//zircon/system/ulib/trace-provider:trace-provider-with-static-engine",
196      "//zircon/system/ulib/zx",
197      "//zircon/system/ulib/zxio",
198    ]
199
200    # Vulkan ICDs on Fuchsia are only allowed to depend on (parts of) libc
201    # and libzircon, and no other shared libraries.
202    assert_no_deps = [
203      "//sdk/lib/fdio",
204      "//zircon/system/ulib/async-default",
205    ]
206
207    defines += [
208      "QEMU_PIPE_PATH=\"/loader-gpu-devices/class/goldfish-pipe/000\"",
209      "GOLDFISH_ADDRESS_SPACE_DEVICE_NAME=\"/loader-gpu-devices/class/goldfish-address-space/000\"",
210    ]
211  }
212}
213