blob: afbd0e5bbc4727332660979baffbac06b6feb18a [file] [log] [blame]
# This file defines android-emu-base library
# This is a library that has very few dependencies (and we would like to keep it like that)
# Dependencies
prebuilt(UUID)
prebuilt(GLIB2) # Acts as windows stdio compatibility layer.
prebuilt(LIBUNWIND)
prebuilt(TCMALLOC)
# Source configuration, the following set is shared amongst all targets
set(android-emu-base_src
android/base/AlignedBuf.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/IniFile.cpp
android/base/files/InplaceStream.cpp
android/base/files/MemStream.cpp
android/base/files/PathUtils.cpp
android/base/files/StdioStream.cpp
android/base/files/Stream.cpp
android/base/files/StreamSerializing.cpp
android/base/GLObjectCounter.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/IpAddress.cpp
android/base/network/NetworkUtils.cpp
android/base/Pool.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/JsonWriter.cpp
android/base/Log.cpp
android/base/memory/LazyInstance.cpp
android/base/memory/MemoryHints.cpp
android/base/memory/MemoryTracker.cpp
android/base/perflogger/Benchmark.cpp
android/base/perflogger/BenchmarkLibrary.cpp
android/base/perflogger/Metric.cpp
android/base/perflogger/WindowDeviationAnalyzer.cpp
android/base/ProcessControl.cpp
android/base/system/System.cpp
android/base/threads/Async.cpp
android/base/threads/FunctorThread.cpp
android/base/threads/ThreadStore.cpp
android/base/Tracing.cpp
android/base/Uri.cpp
android/base/Uuid.cpp
android/base/Version.cpp
android/utils/aconfig-file.c
android/utils/assert.c
android/utils/async.cpp
android/utils/bufprint.c
android/utils/bufprint_system.cpp
android/utils/cbuffer.c
android/utils/debug.c
android/utils/debug_wrapper.cpp
android/utils/dll.c
android/utils/dirscanner.cpp
android/utils/eintr_wrapper.c
android/utils/exec.cpp
android/utils/fd.cpp
android/utils/filelock.cpp
android/utils/file_data.c
android/utils/file_io.cpp
android/utils/format.cpp
android/utils/host_bitness.cpp
android/utils/http_utils.cpp
android/utils/iolooper.cpp
android/utils/ini.cpp
android/utils/intmap.c
android/utils/ipaddr.cpp
android/utils/lineinput.c
android/utils/lock.cpp
android/utils/mapfile.c
android/utils/misc.c
android/utils/panic.c
android/utils/path.cpp
android/utils/path_system.cpp
android/utils/property_file.c
android/utils/reflist.c
android/utils/refset.c
android/utils/stralloc.c
android/utils/stream.cpp
android/utils/string.cpp
android/utils/system.c
android/utils/system_wrapper.cpp
android/utils/tempfile.c
android/utils/timezone.cpp
android/utils/uri.cpp
android/utils/utf8_utils.cpp
android/utils/vector.c
android/utils/x86_cpuid.cpp)
# Windows 32-bit specific sources, these are only included in the windows 32 bit build
set(android-emu-base_windows_src
android/base/files/preadwrite.cpp
android/base/memory/SharedMemory_win32.cpp
android/base/threads/Thread_win32.cpp
android/base/system/Win32Utils.cpp
android/base/system/Win32UnicodeString.cpp
android/utils/win32_cmdline_quote.cpp
android/utils/win32_unicode.cpp)
# Mac specific sources, only included in the darwin build.
set(android-emu-base_darwin-x86_64_src android/base/memory/SharedMemory_posix.cpp
android/base/threads/Thread_pthread.cpp android/base/system/system-native-mac.mm)
# Linux specific sources.
set(android-emu-base_linux-x86_64_src android/base/memory/SharedMemory_posix.cpp
android/base/threads/Thread_pthread.cpp)
# Let's add in the library
android_add_library(android-emu-base)
# Windows-msvc specific dependencies. Need these for posix support.
android_target_link_libraries(android-emu-base windows_msvc-x86_64 PUBLIC
msvc-posix-compat
dirent-win32)
# Anyone who takes a dependency gets to use our header files.
target_include_directories(android-emu-base PUBLIC .)
# 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)
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 windows-x86_64 PUBLIC psapi::psapi Threads::Threads iphlpapi::iphlpapi)
android_target_link_libraries(android-emu-base
darwin-x86_64
PUBLIC
"-framework Foundation"
"-framework ApplicationServices"
"-framework IOKit")
android_target_compile_definitions(android-emu-base
darwin-x86_64
PRIVATE
"-D_DARWIN_C_SOURCE=1"
"-Dftello64=ftell"
"-Dfseeko64=fseek")
# Compiler flags, not 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")
# Add the benchmark
set(android-emu_benchmark_src android/base/synchronization/Lock_benchmark.cpp)
android_add_executable(android-emu_benchmark)
target_link_libraries(android-emu_benchmark PRIVATE android-emu-base emulator-gbench)