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