load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test", "objc_library") # Interface library cc_library( name = "aemu-base-headers", hdrs = [ "include/aemu/base/AlignedBuf.h", "include/aemu/base/Allocator.h", "include/aemu/base/ArraySize.h", "include/aemu/base/AsyncResult.h", "include/aemu/base/Backtrace.h", "include/aemu/base/BumpPool.h", "include/aemu/base/Compiler.h", "include/aemu/base/CppMacros.h", "include/aemu/base/CpuTime.h", "include/aemu/base/CpuUsage.h", "include/aemu/base/Debug.h", "include/aemu/base/EintrWrapper.h", "include/aemu/base/EnumFlags.h", "include/aemu/base/EventNotificationSupport.h", "include/aemu/base/FunctionView.h", "include/aemu/base/GLObjectCounter.h", "include/aemu/base/GraphicsObjectCounter.h", "include/aemu/base/HealthMonitor.h", "include/aemu/base/IOVector.h", "include/aemu/base/JsonWriter.h", "include/aemu/base/LayoutResolver.h", "include/aemu/base/Log.h", "include/aemu/base/LruCache.h", "include/aemu/base/ManagedDescriptor.h", "include/aemu/base/ManagedDescriptor.hpp", "include/aemu/base/Metrics.h", "include/aemu/base/MruCache.h", "include/aemu/base/Optional.h", "include/aemu/base/Pool.h", "include/aemu/base/ProcessControl.h", "include/aemu/base/Profiler.h", "include/aemu/base/Result.h", "include/aemu/base/SharedLibrary.h", "include/aemu/base/Stopwatch.h", "include/aemu/base/StringFormat.h", "include/aemu/base/StringParse.h", "include/aemu/base/SubAllocator.h", "include/aemu/base/ThreadAnnotations.h", "include/aemu/base/Tracing.h", "include/aemu/base/TypeTraits.h", "include/aemu/base/Uri.h", "include/aemu/base/Uuid.h", "include/aemu/base/Version.h", "include/aemu/base/address_space.h", "include/aemu/base/async/AsyncReader.h", "include/aemu/base/async/AsyncSocket.h", "include/aemu/base/async/AsyncSocketAdapter.h", "include/aemu/base/async/AsyncSocketServer.h", "include/aemu/base/async/AsyncStatus.h", "include/aemu/base/async/AsyncWriter.h", "include/aemu/base/async/CallbackRegistry.h", "include/aemu/base/async/DefaultLooper.h", "include/aemu/base/async/Looper.h", "include/aemu/base/async/RecurrentTask.h", "include/aemu/base/async/ScopedSocketWatch.h", "include/aemu/base/async/SubscriberList.h", "include/aemu/base/async/ThreadLooper.h", "include/aemu/base/c_header.h", "include/aemu/base/containers/BufferQueue.h", "include/aemu/base/containers/CircularBuffer.h", "include/aemu/base/containers/EntityManager.h", "include/aemu/base/containers/HybridComponentManager.h", "include/aemu/base/containers/HybridEntityManager.h", "include/aemu/base/containers/Lookup.h", "include/aemu/base/containers/SmallVector.h", "include/aemu/base/containers/StaticMap.h", "include/aemu/base/export.h", "include/aemu/base/files/CompressingStream.h", "include/aemu/base/files/DecompressingStream.h", "include/aemu/base/files/Fd.h", "include/aemu/base/files/FileShareOpen.h", "include/aemu/base/files/FileShareOpenImpl.h", "include/aemu/base/files/FileSystemWatcher.h", "include/aemu/base/files/GzipStreambuf.h", "include/aemu/base/files/InplaceStream.h", "include/aemu/base/files/MemStream.h", "include/aemu/base/files/PathUtils.h", "include/aemu/base/files/QueueStreambuf.h", "include/aemu/base/files/ScopedFd.h", "include/aemu/base/files/ScopedFileHandle.h", "include/aemu/base/files/ScopedRegKey.h", "include/aemu/base/files/ScopedStdioFile.h", "include/aemu/base/files/StdioStream.h", "include/aemu/base/files/Stream.h", "include/aemu/base/files/StreamSerializing.h", "include/aemu/base/files/TarStream.h", "include/aemu/base/files/preadwrite.h", "include/aemu/base/gl_object_counter.h", "include/aemu/base/memory/ContiguousRangeMapper.h", "include/aemu/base/memory/MallocUsableSize.h", "include/aemu/base/memory/MemoryHints.h", "include/aemu/base/memory/MemoryTracker.h", "include/aemu/base/memory/NoDestructor.h", "include/aemu/base/memory/ScopedPtr.h", "include/aemu/base/memory/SharedMemory.h", "include/aemu/base/misc/FileUtils.h", "include/aemu/base/misc/HttpUtils.h", "include/aemu/base/misc/IpcPipe.h", "include/aemu/base/misc/StringUtils.h", "include/aemu/base/misc/Utf8Utils.h", "include/aemu/base/msvc.h", "include/aemu/base/network/Dns.h", "include/aemu/base/network/IpAddress.h", "include/aemu/base/network/NetworkUtils.h", "include/aemu/base/perflogger/Analyzer.h", "include/aemu/base/perflogger/Benchmark.h", "include/aemu/base/perflogger/BenchmarkLibrary.h", "include/aemu/base/perflogger/Metric.h", "include/aemu/base/perflogger/WindowDeviationAnalyzer.h", "include/aemu/base/process-control.h", "include/aemu/base/process/Command.h", "include/aemu/base/process/Process.h", "include/aemu/base/ring_buffer.h", "include/aemu/base/sockets/ScopedSocket.h", "include/aemu/base/sockets/SocketDrainer.h", "include/aemu/base/sockets/SocketErrors.h", "include/aemu/base/sockets/SocketUtils.h", "include/aemu/base/sockets/SocketWaiter.h", "include/aemu/base/sockets/Winsock.h", "include/aemu/base/streams/RingStreambuf.h", "include/aemu/base/synchronization/ConditionVariable.h", "include/aemu/base/synchronization/Event.h", "include/aemu/base/synchronization/Lock.h", "include/aemu/base/synchronization/MessageChannel.h", "include/aemu/base/system/Memory.h", "include/aemu/base/system/System.h", "include/aemu/base/system/Win32UnicodeString.h", "include/aemu/base/system/Win32Utils.h", "include/aemu/base/testing/GTestUtils.h", "include/aemu/base/testing/GlmTestHelpers.h", "include/aemu/base/testing/MockUtils.h", "include/aemu/base/testing/ProtobufMatchers.h", "include/aemu/base/testing/ResultMatchers.h", "include/aemu/base/testing/TestClock.h", "include/aemu/base/testing/TestDnsResolver.h", "include/aemu/base/testing/TestEvent.h", "include/aemu/base/testing/TestInputBufferSocketServerThread.h", "include/aemu/base/testing/TestLooper.h", "include/aemu/base/testing/TestMemoryOutputStream.h", "include/aemu/base/testing/TestNetworkInterfaceNameResolver.h", "include/aemu/base/testing/TestSystem.h", "include/aemu/base/testing/TestTempDir.h", "include/aemu/base/testing/TestThread.h", "include/aemu/base/testing/TestUtils.h", "include/aemu/base/testing/Utils.h", "include/aemu/base/testing/file_io.h", "include/aemu/base/threads/Async.h", "include/aemu/base/threads/FunctorThread.h", "include/aemu/base/threads/ParallelTask.h", "include/aemu/base/threads/Thread.h", "include/aemu/base/threads/ThreadPool.h", "include/aemu/base/threads/ThreadStore.h", "include/aemu/base/threads/Types.h", "include/aemu/base/threads/WorkerThread.h", "include/aemu/base/threads/internal/ParallelTaskBase.h", "include/aemu/base/utils/status_macros.h", "include/aemu/base/utils/status_matcher_macros.h", "include/aemu/base/utils/stream.h", ], defines = select({ "@platforms//os:windows": [ "WIN32_LEAN_AND_MEAN", ], "//conditions:default": [], }), includes = ["include"], visibility = ["//visibility:public"], deps = [ "//host-common:aemu-host-common-headers", "@com_google_absl//absl/strings:str_format", ] + select({ "@platforms//os:windows": [ "//windows:compat-hdrs", ], "//conditions:default": [], }), ) cc_library( name = "aemu-base-metrics", srcs = ["Metrics.cpp"], visibility = ["//visibility:public"], deps = [":aemu-base-headers"], ) cc_library( name = "aemu-base-allocator", srcs = ["SubAllocator.cpp"], visibility = ["//visibility:public"], deps = [":aemu-base-headers"], ) objc_library( name = "aemu-base-darwin", srcs = [ "system-native-mac.mm", ], sdk_frameworks = [ "IOkit", "AppKit", ], target_compatible_with = [ "@platforms//os:macos", ], deps = [":aemu-base-headers"], alwayslink = True, ) cc_library( name = "aemu-base-logging", srcs = [ "CLog.cpp", ], hdrs = [ "include/aemu/base/logging/CLog.h", "include/aemu/base/logging/Log.h", "include/aemu/base/logging/LogFormatter.h", "include/aemu/base/logging/LogSeverity.h", "include/aemu/base/logging/LogTags.h", ], defines = [ "BUILDING_EMUGL_COMMON_SHARED", "LOGGING_API_SHARED", ] + select({ "@platforms//os:windows": [ "WIN32_LEAN_AND_MEAN", ], "//conditions:default": [], }), includes = ["include"], visibility = ["//visibility:public"], ) cc_library( name = "aemu-base", srcs = [ "AlignedBuf.cpp", "CompressingStream.cpp", "CpuTime.cpp", "Debug.cpp", "DecompressingStream.cpp", "FileUtils.cpp", "FunctorThread.cpp", "GLObjectCounter.cpp", "GraphicsObjectCounter.cpp", "HealthMonitor.cpp", "LayoutResolver.cpp", "MemStream.cpp", "MemoryTracker.cpp", "MessageChannel.cpp", "PathUtils.cpp", "SharedLibrary.cpp", "StdioStream.cpp", "Stream.cpp", "StreamSerializing.cpp", "StringFormat.cpp", "SubAllocator.cpp", "System.cpp", "Tracing.cpp", "ring_buffer.cpp", ] + select({ "@platforms//os:windows": [ "SharedMemory_win32.cpp", "Thread_win32.cpp", "Win32UnicodeString.cpp", ], "@platforms//os:macos": [ "SharedMemory_posix.cpp", "Thread_pthread.cpp", ], "@platforms//os:linux": [ "SharedMemory_posix.cpp", "Thread_pthread.cpp", ], }), defines = [ "BUILDING_EMUGL_COMMON_SHARED", "LOGGING_API_SHARED", "dfatal=\"(void*)\"", ] + select({ "@platforms//os:windows": [ "WIN32_LEAN_AND_MEAN", ], "//conditions:default": [], }), linkopts = select({ "@platforms//os:linux": [ "-ldl", "-lrt", ], "@platforms//os:windows": [ "-DEFAULTLIB:Shlwapi.lib", ], "@platforms//os:macos": [ "-framework Foundation", "-framework AppKit", "-framework IOKit", ], "//conditions:default": [], }), visibility = ["//visibility:public"], deps = [ ":aemu-base-headers", ":aemu-base-metrics", "//host-common:logging", "@lz4", ] + select({ "@platforms//os:macos": [ ":aemu-base-darwin", ], "@platforms//os:windows": [ "@aemu//windows:compat", ], "//conditions:default": [], }), ) cc_library( name = "test-io", srcs = [ "testing/file_io.cpp", ], visibility = [ "//visibility:public", ], deps = [ ":aemu-base", ":aemu-base-headers", ], alwayslink = True, ) cc_test( name = "aemu-base_unittests", srcs = [ "AlignedBuf_unittest.cpp", "ArraySize_unittest.cpp", "HealthMonitor_unittest.cpp", "HybridEntityManager_unittest.cpp", "LayoutResolver_unittest.cpp", "LruCache_unittest.cpp", "ManagedDescriptor_unittest.cpp", "NoDestructor_unittest.cpp", "Optional_unittest.cpp", "StringFormat_unittest.cpp", "SubAllocator_unittest.cpp", "TypeTraits_unittest.cpp", "WorkerThread_unittest.cpp", "ring_buffer_unittest.cpp", ] + select({ "@platforms//os:windows": [ "Win32UnicodeString_unittest.cpp", ], "//conditions:default": [], }), linkopts = [ "-undefined error", ], deps = [ ":aemu-base", ":aemu-base-headers", ":aemu-base-logging", "//base:aemu-base-metrics", "//host-common:logging", "@com_google_absl//absl/log", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", "@com_google_googletest//:gtest_main", ], )