• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test", "objc_library")
2# Interface library
3
4cc_library(
5    name = "aemu-base-headers",
6    hdrs = [
7        "include/aemu/base/AlignedBuf.h",
8        "include/aemu/base/Allocator.h",
9        "include/aemu/base/ArraySize.h",
10        "include/aemu/base/AsyncResult.h",
11        "include/aemu/base/Backtrace.h",
12        "include/aemu/base/BumpPool.h",
13        "include/aemu/base/Compiler.h",
14        "include/aemu/base/CppMacros.h",
15        "include/aemu/base/CpuTime.h",
16        "include/aemu/base/CpuUsage.h",
17        "include/aemu/base/Debug.h",
18        "include/aemu/base/EintrWrapper.h",
19        "include/aemu/base/EnumFlags.h",
20        "include/aemu/base/EventNotificationSupport.h",
21        "include/aemu/base/FunctionView.h",
22        "include/aemu/base/GLObjectCounter.h",
23        "include/aemu/base/GraphicsObjectCounter.h",
24        "include/aemu/base/HealthMonitor.h",
25        "include/aemu/base/IOVector.h",
26        "include/aemu/base/JsonWriter.h",
27        "include/aemu/base/LayoutResolver.h",
28        "include/aemu/base/Log.h",
29        "include/aemu/base/LruCache.h",
30        "include/aemu/base/ManagedDescriptor.h",
31        "include/aemu/base/ManagedDescriptor.hpp",
32        "include/aemu/base/Metrics.h",
33        "include/aemu/base/MruCache.h",
34        "include/aemu/base/Optional.h",
35        "include/aemu/base/Pool.h",
36        "include/aemu/base/ProcessControl.h",
37        "include/aemu/base/Profiler.h",
38        "include/aemu/base/Result.h",
39        "include/aemu/base/SharedLibrary.h",
40        "include/aemu/base/Stopwatch.h",
41        "include/aemu/base/StringFormat.h",
42        "include/aemu/base/StringParse.h",
43        "include/aemu/base/SubAllocator.h",
44        "include/aemu/base/ThreadAnnotations.h",
45        "include/aemu/base/Tracing.h",
46        "include/aemu/base/TypeTraits.h",
47        "include/aemu/base/Uri.h",
48        "include/aemu/base/Uuid.h",
49        "include/aemu/base/Version.h",
50        "include/aemu/base/address_space.h",
51        "include/aemu/base/async/AsyncReader.h",
52        "include/aemu/base/async/AsyncSocket.h",
53        "include/aemu/base/async/AsyncSocketAdapter.h",
54        "include/aemu/base/async/AsyncSocketServer.h",
55        "include/aemu/base/async/AsyncStatus.h",
56        "include/aemu/base/async/AsyncWriter.h",
57        "include/aemu/base/async/CallbackRegistry.h",
58        "include/aemu/base/async/DefaultLooper.h",
59        "include/aemu/base/async/Looper.h",
60        "include/aemu/base/async/RecurrentTask.h",
61        "include/aemu/base/async/ScopedSocketWatch.h",
62        "include/aemu/base/async/SubscriberList.h",
63        "include/aemu/base/async/ThreadLooper.h",
64        "include/aemu/base/c_header.h",
65        "include/aemu/base/containers/BufferQueue.h",
66        "include/aemu/base/containers/CircularBuffer.h",
67        "include/aemu/base/containers/EntityManager.h",
68        "include/aemu/base/containers/HybridComponentManager.h",
69        "include/aemu/base/containers/HybridEntityManager.h",
70        "include/aemu/base/containers/Lookup.h",
71        "include/aemu/base/containers/SmallVector.h",
72        "include/aemu/base/containers/StaticMap.h",
73        "include/aemu/base/export.h",
74        "include/aemu/base/files/CompressingStream.h",
75        "include/aemu/base/files/DecompressingStream.h",
76        "include/aemu/base/files/Fd.h",
77        "include/aemu/base/files/FileShareOpen.h",
78        "include/aemu/base/files/FileShareOpenImpl.h",
79        "include/aemu/base/files/FileSystemWatcher.h",
80        "include/aemu/base/files/GzipStreambuf.h",
81        "include/aemu/base/files/InplaceStream.h",
82        "include/aemu/base/files/MemStream.h",
83        "include/aemu/base/files/PathUtils.h",
84        "include/aemu/base/files/QueueStreambuf.h",
85        "include/aemu/base/files/ScopedFd.h",
86        "include/aemu/base/files/ScopedFileHandle.h",
87        "include/aemu/base/files/ScopedRegKey.h",
88        "include/aemu/base/files/ScopedStdioFile.h",
89        "include/aemu/base/files/StdioStream.h",
90        "include/aemu/base/files/Stream.h",
91        "include/aemu/base/files/StreamSerializing.h",
92        "include/aemu/base/files/TarStream.h",
93        "include/aemu/base/files/preadwrite.h",
94        "include/aemu/base/gl_object_counter.h",
95        "include/aemu/base/memory/ContiguousRangeMapper.h",
96        "include/aemu/base/memory/MallocUsableSize.h",
97        "include/aemu/base/memory/MemoryHints.h",
98        "include/aemu/base/memory/MemoryTracker.h",
99        "include/aemu/base/memory/NoDestructor.h",
100        "include/aemu/base/memory/ScopedPtr.h",
101        "include/aemu/base/memory/SharedMemory.h",
102        "include/aemu/base/misc/FileUtils.h",
103        "include/aemu/base/misc/HttpUtils.h",
104        "include/aemu/base/misc/IpcPipe.h",
105        "include/aemu/base/misc/StringUtils.h",
106        "include/aemu/base/misc/Utf8Utils.h",
107        "include/aemu/base/msvc.h",
108        "include/aemu/base/network/Dns.h",
109        "include/aemu/base/network/IpAddress.h",
110        "include/aemu/base/network/NetworkUtils.h",
111        "include/aemu/base/perflogger/Analyzer.h",
112        "include/aemu/base/perflogger/Benchmark.h",
113        "include/aemu/base/perflogger/BenchmarkLibrary.h",
114        "include/aemu/base/perflogger/Metric.h",
115        "include/aemu/base/perflogger/WindowDeviationAnalyzer.h",
116        "include/aemu/base/process-control.h",
117        "include/aemu/base/process/Command.h",
118        "include/aemu/base/process/Process.h",
119        "include/aemu/base/ring_buffer.h",
120        "include/aemu/base/sockets/ScopedSocket.h",
121        "include/aemu/base/sockets/SocketDrainer.h",
122        "include/aemu/base/sockets/SocketErrors.h",
123        "include/aemu/base/sockets/SocketUtils.h",
124        "include/aemu/base/sockets/SocketWaiter.h",
125        "include/aemu/base/sockets/Winsock.h",
126        "include/aemu/base/streams/RingStreambuf.h",
127        "include/aemu/base/synchronization/ConditionVariable.h",
128        "include/aemu/base/synchronization/Event.h",
129        "include/aemu/base/synchronization/Lock.h",
130        "include/aemu/base/synchronization/MessageChannel.h",
131        "include/aemu/base/system/Memory.h",
132        "include/aemu/base/system/System.h",
133        "include/aemu/base/system/Win32UnicodeString.h",
134        "include/aemu/base/system/Win32Utils.h",
135        "include/aemu/base/testing/GTestUtils.h",
136        "include/aemu/base/testing/GlmTestHelpers.h",
137        "include/aemu/base/testing/MockUtils.h",
138        "include/aemu/base/testing/ProtobufMatchers.h",
139        "include/aemu/base/testing/ResultMatchers.h",
140        "include/aemu/base/testing/TestClock.h",
141        "include/aemu/base/testing/TestDnsResolver.h",
142        "include/aemu/base/testing/TestEvent.h",
143        "include/aemu/base/testing/TestInputBufferSocketServerThread.h",
144        "include/aemu/base/testing/TestLooper.h",
145        "include/aemu/base/testing/TestMemoryOutputStream.h",
146        "include/aemu/base/testing/TestNetworkInterfaceNameResolver.h",
147        "include/aemu/base/testing/TestSystem.h",
148        "include/aemu/base/testing/TestTempDir.h",
149        "include/aemu/base/testing/TestThread.h",
150        "include/aemu/base/testing/TestUtils.h",
151        "include/aemu/base/testing/Utils.h",
152        "include/aemu/base/testing/file_io.h",
153        "include/aemu/base/threads/Async.h",
154        "include/aemu/base/threads/FunctorThread.h",
155        "include/aemu/base/threads/ParallelTask.h",
156        "include/aemu/base/threads/Thread.h",
157        "include/aemu/base/threads/ThreadPool.h",
158        "include/aemu/base/threads/ThreadStore.h",
159        "include/aemu/base/threads/Types.h",
160        "include/aemu/base/threads/WorkerThread.h",
161        "include/aemu/base/threads/internal/ParallelTaskBase.h",
162        "include/aemu/base/utils/status_macros.h",
163        "include/aemu/base/utils/status_matcher_macros.h",
164        "include/aemu/base/utils/stream.h",
165    ],
166    defines = select({
167        "@platforms//os:windows": [
168            "WIN32_LEAN_AND_MEAN",
169        ],
170        "//conditions:default": [],
171    }),
172    includes = ["include"],
173    visibility = ["//visibility:public"],
174    deps = [
175        "//host-common:aemu-host-common-headers",
176        "@com_google_absl//absl/strings:str_format",
177    ] + select({
178        "@platforms//os:windows": [
179            "//windows:compat-hdrs",
180        ],
181        "//conditions:default": [],
182    }),
183)
184
185cc_library(
186    name = "aemu-base-metrics",
187    srcs = ["Metrics.cpp"],
188    visibility = ["//visibility:public"],
189    deps = [":aemu-base-headers"],
190)
191
192cc_library(
193    name = "aemu-base-allocator",
194    srcs = ["SubAllocator.cpp"],
195    visibility = ["//visibility:public"],
196    deps = [":aemu-base-headers"],
197)
198
199objc_library(
200    name = "aemu-base-darwin",
201    srcs = [
202        "system-native-mac.mm",
203    ],
204    sdk_frameworks = [
205        "IOkit",
206        "AppKit",
207    ],
208    target_compatible_with = [
209        "@platforms//os:macos",
210    ],
211    deps = [":aemu-base-headers"],
212    alwayslink = True,
213)
214
215cc_library(
216    name = "aemu-base-logging",
217    srcs = [
218        "CLog.cpp",
219    ],
220    hdrs = [
221        "include/aemu/base/logging/CLog.h",
222        "include/aemu/base/logging/Log.h",
223        "include/aemu/base/logging/LogFormatter.h",
224        "include/aemu/base/logging/LogSeverity.h",
225        "include/aemu/base/logging/LogTags.h",
226    ],
227    defines = [
228        "BUILDING_EMUGL_COMMON_SHARED",
229        "LOGGING_API_SHARED",
230    ] + select({
231        "@platforms//os:windows": [
232            "WIN32_LEAN_AND_MEAN",
233        ],
234        "//conditions:default": [],
235    }),
236    includes = ["include"],
237    visibility = ["//visibility:public"],
238)
239
240cc_library(
241    name = "aemu-base",
242    srcs = [
243        "AlignedBuf.cpp",
244        "CompressingStream.cpp",
245        "CpuTime.cpp",
246        "Debug.cpp",
247        "DecompressingStream.cpp",
248        "FileUtils.cpp",
249        "FunctorThread.cpp",
250        "GLObjectCounter.cpp",
251        "GraphicsObjectCounter.cpp",
252        "HealthMonitor.cpp",
253        "LayoutResolver.cpp",
254        "MemStream.cpp",
255        "MemoryTracker.cpp",
256        "MessageChannel.cpp",
257        "PathUtils.cpp",
258        "SharedLibrary.cpp",
259        "StdioStream.cpp",
260        "Stream.cpp",
261        "StreamSerializing.cpp",
262        "StringFormat.cpp",
263        "SubAllocator.cpp",
264        "System.cpp",
265        "Tracing.cpp",
266        "ring_buffer.cpp",
267    ] + select({
268        "@platforms//os:windows": [
269            "SharedMemory_win32.cpp",
270            "Thread_win32.cpp",
271            "Win32UnicodeString.cpp",
272        ],
273        "@platforms//os:macos": [
274            "SharedMemory_posix.cpp",
275            "Thread_pthread.cpp",
276        ],
277        "@platforms//os:linux": [
278            "SharedMemory_posix.cpp",
279            "Thread_pthread.cpp",
280        ],
281    }),
282    defines = [
283        "BUILDING_EMUGL_COMMON_SHARED",
284        "LOGGING_API_SHARED",
285        "dfatal=\"(void*)\"",
286    ] + select({
287        "@platforms//os:windows": [
288            "WIN32_LEAN_AND_MEAN",
289        ],
290        "//conditions:default": [],
291    }),
292    linkopts = select({
293        "@platforms//os:linux": [
294            "-ldl",
295            "-lrt",
296        ],
297        "@platforms//os:windows": [
298            "-DEFAULTLIB:Shlwapi.lib",
299        ],
300        "@platforms//os:macos": [
301            "-framework Foundation",
302            "-framework AppKit",
303            "-framework IOKit",
304        ],
305        "//conditions:default": [],
306    }),
307    visibility = ["//visibility:public"],
308    deps = [
309        ":aemu-base-headers",
310        ":aemu-base-metrics",
311        "//host-common:logging",
312        "@lz4",
313    ] + select({
314        "@platforms//os:macos": [
315            ":aemu-base-darwin",
316        ],
317        "@platforms//os:windows": [
318            "@aemu//windows:compat",
319        ],
320        "//conditions:default": [],
321    }),
322)
323
324cc_library(
325    name = "test-io",
326    srcs = [
327        "testing/file_io.cpp",
328    ],
329    visibility = [
330        "//visibility:public",
331    ],
332    deps = [
333        ":aemu-base",
334        ":aemu-base-headers",
335    ],
336    alwayslink = True,
337)
338
339cc_test(
340    name = "aemu-base_unittests",
341    srcs = [
342        "AlignedBuf_unittest.cpp",
343        "ArraySize_unittest.cpp",
344        "HealthMonitor_unittest.cpp",
345        "HybridEntityManager_unittest.cpp",
346        "LayoutResolver_unittest.cpp",
347        "LruCache_unittest.cpp",
348        "ManagedDescriptor_unittest.cpp",
349        "NoDestructor_unittest.cpp",
350        "Optional_unittest.cpp",
351        "StringFormat_unittest.cpp",
352        "SubAllocator_unittest.cpp",
353        "TypeTraits_unittest.cpp",
354        "WorkerThread_unittest.cpp",
355        "ring_buffer_unittest.cpp",
356    ] + select({
357        "@platforms//os:windows": [
358            "Win32UnicodeString_unittest.cpp",
359        ],
360        "//conditions:default": [],
361    }),
362    linkopts = [
363        "-undefined error",
364    ],
365    deps = [
366        ":aemu-base",
367        ":aemu-base-headers",
368        ":aemu-base-logging",
369        "//base:aemu-base-metrics",
370        "//host-common:logging",
371        "@com_google_absl//absl/log",
372        "@com_google_absl//absl/strings",
373        "@com_google_absl//absl/strings:str_format",
374        "@com_google_googletest//:gtest_main",
375    ],
376)
377