# This file defines android-emu-base library
# This is a very generic library, and should have no knowledge of the emulator whatsoever.
# This library should be useable by any other project.

# Dependencies
prebuilt(UUID)
prebuilt(GLIB2) # Acts as windows stdio compatibility layer.
prebuilt(LIBUNWIND)
if (NOT DARWIN_AARCH64)
    prebuilt(TCMALLOC)
endif()
prebuilt(Threads)

# Let's add in the library
android_add_library(
  TARGET android-emu-base
  LICENSE Apache-2.0
  SRC # cmake-format: sortable
      android/base/AlignedBuf.cpp
      android/base/async/AsyncReader.cpp
      android/base/async/AsyncSocketServer.cpp
      android/base/async/AsyncWriter.cpp
      android/base/async/DefaultLooper.cpp
      android/base/async/Looper.cpp
      android/base/async/ScopedSocketWatch.cpp
      android/base/async/ThreadLooper.cpp
      android/base/Backtrace.cpp
      android/base/ContiguousRangeMapper.cpp
      android/base/CpuTime.cpp
      android/base/CpuUsage.cpp
      android/base/Debug.cpp
      android/base/files/CompressingStream.cpp
      android/base/files/DecompressingStream.cpp
      android/base/files/Fd.cpp
      android/base/files/FileShareOpen.cpp
      android/base/files/GzipStreambuf.cpp
      android/base/files/IniFile.cpp
      android/base/files/InplaceStream.cpp
      android/base/files/MemStream.cpp
      android/base/files/PathUtils.cpp
      android/base/files/QueueStreambuf.cpp
      android/base/files/StdioStream.cpp
      android/base/files/Stream.cpp
      android/base/files/StreamSerializing.cpp
      android/base/files/TarStream.cpp
      android/base/gl_object_counter.cpp
      android/base/GLObjectCounter.cpp
      android/base/IOVector.cpp
      android/base/JsonWriter.cpp
      android/base/Log.cpp
      android/base/LogFormatter.cpp
      android/base/memory/LazyInstance.cpp
      android/base/memory/MemoryHints.cpp
      android/base/memory/MemoryTracker.cpp
      android/base/misc/FileUtils.cpp
      android/base/misc/HttpUtils.cpp
      android/base/misc/IpcPipe.cpp
      android/base/misc/StringUtils.cpp
      android/base/misc/Utf8Utils.cpp
      android/base/network/Dns.cpp
      android/base/network/IpAddress.cpp
      android/base/network/NetworkUtils.cpp
      android/base/perflogger/Benchmark.cpp
      android/base/perflogger/BenchmarkLibrary.cpp
      android/base/perflogger/Metric.cpp
      android/base/perflogger/WindowDeviationAnalyzer.cpp
      android/base/Pool.cpp
      android/base/ProcessControl.cpp
      android/base/ring_buffer.c
      android/base/sockets/SocketDrainer.cpp
      android/base/sockets/SocketUtils.cpp
      android/base/sockets/SocketWaiter.cpp
      android/base/Stopwatch.cpp
      android/base/StringFormat.cpp
      android/base/StringParse.cpp
      android/base/StringView.cpp
      android/base/SubAllocator.cpp
      android/base/synchronization/MessageChannel.cpp
      android/base/system/System.cpp
      android/base/threads/Async.cpp
      android/base/threads/FunctorThread.cpp
      android/base/threads/internal/ParallelTaskBase.cpp
      android/base/threads/ThreadStore.cpp
      android/base/Tracing.cpp
      android/base/Uri.cpp
      android/base/Uuid.cpp
      android/base/Version.cpp
      android/utils/bufprint.c
      android/utils/bufprint_system.cpp
      android/utils/debug.c
      android/utils/debug_wrapper.cpp
      android/utils/dirscanner.cpp
      android/utils/eintr_wrapper.c
      android/utils/fd.cpp
      android/utils/file_io.cpp
      android/utils/looper.cpp
      android/utils/misc.c
      android/utils/panic.c
      android/utils/path.cpp
      android/utils/path_system.cpp
      android/utils/socket_drainer.cpp
      android/utils/sockets.c
      android/utils/stralloc.c
      android/utils/stream.cpp
      android/utils/string.cpp
      android/utils/system.c
      android/utils/tempfile.c
      android/utils/x86_cpuid.cpp
  LINUX android/base/memory/SharedMemory_posix.cpp
        android/base/threads/Thread_pthread.cpp
  DARWIN android/base/memory/SharedMemory_posix.cpp
         android/base/system/system-native-mac.mm
         android/base/threads/Thread_pthread.cpp
  WINDOWS android/base/files/preadwrite.cpp
          android/base/memory/SharedMemory_win32.cpp
          android/base/system/Win32UnicodeString.cpp
          android/base/system/Win32Utils.cpp
          android/base/threads/Thread_win32.cpp
          android/utils/win32_cmdline_quote.cpp
          android/utils/win32_unicode.cpp
          stubs/win32-stubs.c)

# Windows-msvc specific dependencies. Need these for posix support.
android_target_link_libraries(android-emu-base windows_msvc-x86_64
                              PUBLIC dirent-win32)

# Anyone who takes a dependency gets to use our header files.
target_include_directories(android-emu-base
                           PUBLIC . ../android-emugl/host/include)

# Library dependencies, these are public so they will propagate, if you link
# against the base you will link against LZ4 & UUID
target_link_libraries(
  android-emu-base PRIVATE lz4 UUID::UUID perfetto-tracing-only
  PUBLIC libprotobuf Threads::Threads absl::str_format)

if(OPTION_TCMALLOC)
  android_target_link_libraries(
    android-emu-base linux-x86_64
    PUBLIC TCMALLOC::TCMALLOC LIBUNWIND::LIBUNWIND -ldl Threads::Threads -lrt)
  android_target_link_libraries(
    android-emu-base linux-aarch64
    PUBLIC TCMALLOC::TCMALLOC LIBUNWIND::LIBUNWIND -ldl Threads::Threads -lrt)
  target_compile_definitions(android-emu-base
                             PRIVATE "-DAEMU_TCMALLOC_ENABLED=1")
else()
  android_target_link_libraries(
    android-emu-base linux-aarch64 PUBLIC LIBUNWIND::LIBUNWIND -ldl
                                          Threads::Threads -lrt)
  android_target_link_libraries(
    android-emu-base linux-x86_64 PUBLIC LIBUNWIND::LIBUNWIND -ldl
                                         Threads::Threads -lrt)
  target_compile_definitions(android-emu-base
                             PUBLIC "-DAEMU_TCMALLOC_ENABLED=0")
endif()

if(OPTION_GFXSTREAM_BACKEND)
  target_compile_definitions(android-emu-base
                             PUBLIC "-DAEMU_GFXSTREAM_BACKEND=1")
endif()

android_target_link_libraries(
  android-emu-base windows PUBLIC psapi::psapi iphlpapi::iphlpapi
                                  ws2_32::ws2_32 shlwapi::shlwapi)

android_target_link_libraries(
  android-emu-base darwin-x86_64
  PUBLIC "-framework Foundation" "-framework ApplicationServices"
         "-framework AppKit" "-framework IOKit")

android_target_compile_definitions(
  android-emu-base darwin-x86_64 PRIVATE "-D_DARWIN_C_SOURCE=1"
  "-Dftello64=ftell" "-Dfseeko64=fseek")

android_target_link_libraries(
  android-emu-base darwin-aarch64
  PUBLIC "-framework Foundation" "-framework ApplicationServices"
         "-framework AppKit" "-framework IOKit")

android_target_compile_definitions(
  android-emu-base darwin-aarch64 PRIVATE "-D_DARWIN_C_SOURCE=1"
  "-Dftello64=ftell" "-Dfseeko64=fseek")

# Compiler flags, note that these should never propagate (i.e. set to public) as
# we really want to limit the usage of these flags.
android_target_compile_options(
  android-emu-base Clang PRIVATE "-Wno-parentheses" "-Wno-invalid-constexpr")

android_add_test(
  TARGET android-emu-base_unittests
  SRC # cmake-format: sortable
      android/base/AlignedBuf_unittest.cpp
      android/base/ArraySize_unittest.cpp
      android/base/async/AsyncSocketServer_unittest.cpp
      android/base/async/Looper_unittest.cpp
      android/base/async/RecurrentTask_unittest.cpp
      android/base/async/ScopedSocketWatch_unittest.cpp
      android/base/async/SubscriberList_unittest.cpp
      android/base/containers/BufferQueue_unittest.cpp
      android/base/containers/CircularBuffer_unittest.cpp
      android/base/containers/EntityManager_unittest.cpp
      android/base/containers/Lookup_unittest.cpp
      android/base/containers/SmallVector_unittest.cpp
      android/base/containers/StaticMap_unittest.cpp
      android/base/ContiguousRangeMapper_unittest.cpp
      android/base/EintrWrapper_unittest.cpp
      android/base/EventNotificationSupport_unittest.cpp
      android/base/files/FileShareOpen_unittest.cpp
      android/base/files/GzipStreambuf_unittest.cpp
      android/base/files/IniFile_unittest.cpp
      android/base/files/InplaceStream_unittest.cpp
      android/base/files/MemStream_unittest.cpp
      android/base/files/PathUtils_unittest.cpp
      android/base/files/ScopedFd_unittest.cpp
      android/base/files/ScopedStdioFile_unittest.cpp
      android/base/files/Stream_unittest.cpp
      android/base/files/StreamSerializing_unittest.cpp
      android/base/files/TarStream_unittest.cpp
      android/base/FunctionView_unittest.cpp
      android/base/JsonWriter_unittest.cpp
      android/base/Log_unittest.cpp
      android/base/LogFormatter_unittest.cpp
      android/base/memory/LazyInstance_unittest.cpp
      android/base/memory/MallocUsableSize_unittest.cpp
      android/base/memory/MemoryHints_unittest.cpp
      android/base/memory/OnDemand_unittest.cpp
      android/base/memory/ScopedPtr_unittest.cpp
      android/base/memory/SharedMemory_unittest.cpp
      android/base/misc/FileUtils_unittest.cpp
      android/base/misc/HttpUtils_unittest.cpp
      android/base/misc/IpcPipe_unittest.cpp
      android/base/misc/StringUtils_unittest.cpp
      android/base/misc/Utf8Utils_unittest.cpp
      android/base/network/Dns_unittest.cpp
      android/base/network/IpAddress_unittest.cpp
      android/base/network/NetworkUtils_unittest.cpp
      android/base/Optional_unittest.cpp
      android/base/perflogger/Benchmark_unittest.cpp
      android/base/Pool_unittest.cpp
      android/base/ProcessControl_unittest.cpp
      android/base/Result_unittest.cpp
      android/base/ring_buffer_unittest.cpp
      android/base/sockets/ScopedSocket_unittest.cpp
      android/base/sockets/SocketDrainer_unittest.cpp
      android/base/sockets/SocketUtils_unittest.cpp
      android/base/sockets/SocketWaiter_unittest.cpp
      android/base/StringFormat_unittest.cpp
      android/base/StringParse_unittest.cpp
      android/base/StringView_unittest.cpp
      android/base/SubAllocator_unittest.cpp
      android/base/synchronization/ConditionVariable_unittest.cpp
      android/base/synchronization/Lock_unittest.cpp
      android/base/synchronization/MessageChannel_unittest.cpp
      android/base/synchronization/ReadWriteLock_unittest.cpp
      android/base/system/System_unittest.cpp
      android/base/testing/MockUtils_unittest.cpp
      android/base/testing/TestEvent_unittest.cpp
      android/base/threads/Async_unittest.cpp
      android/base/threads/FunctorThread_unittest.cpp
      android/base/threads/ParallelTask_unittest.cpp
      android/base/threads/Thread_unittest.cpp
      android/base/threads/ThreadStore_unittest.cpp
      android/base/TypeTraits_unittest.cpp
      android/base/Uri_unittest.cpp
      android/base/Uuid_unittest.cpp
      android/base/Version_unittest.cpp
      android/utils/bufprint_unittest.cpp
      android/utils/dirscanner_unittest.cpp
      android/utils/eintr_wrapper_unittest.cpp
      android/utils/string_unittest.cpp
      android/utils/tempfile_unittest.cpp
      android/utils/x86_cpuid_unittest.cpp
  WINDOWS android/base/files/ScopedFileHandle_unittest.cpp
          android/base/files/ScopedRegKey_unittest.cpp
          android/base/system/Win32UnicodeString_unittest.cpp
          android/base/system/Win32Utils_unittest.cpp
  MSVC android/base/system/WinMsvcSystem_unittest.cpp)

android_target_compile_options(
  android-emu-base_unittests Clang PRIVATE -O0 -Wno-invalid-constexpr
                                           -Wno-string-plus-int)

# Setup the targets compile config etc..
target_link_libraries(android-emu-base_unittests PRIVATE android-emu-base
                                                         gmock_main)

# Add the benchmark
android_add_executable(
  TARGET android-emu_benchmark
  NODISTRIBUTE
  SRC # cmake-format: sortable
      android/base/Log_benchmark.cpp
      android/base/synchronization/Lock_benchmark.cpp
      android/base/TranslateBenchmark.cpp)
target_link_libraries(android-emu_benchmark PRIVATE android-emu-base absl::strings absl::str_format
                                                    emulator-gbench)
