blob: 4aa49e76fb956b0adffc41943e2372c67211a5aa [file] [log] [blame]
if (WIN32)
endif()
add_library(aemu-base.headers INTERFACE)
# TODO: Remove this once host-common/logging.h is moved into base.
target_link_libraries(aemu-base.headers INTERFACE aemu-host-common.headers)
target_include_directories(aemu-base.headers INTERFACE include)
if(WIN32)
target_compile_definitions(aemu-base.headers INTERFACE WIN32_LEAN_AND_MEAN)
endif()
if(ENABLE_CLANG_THREAD_SAFETY_CHECKS)
target_compile_definitions(aemu-base.headers INTERFACE -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS)
target_compile_options(aemu-base.headers INTERFACE -Wthread-safety)
endif()
if (BUILD_STANDALONE)
if (NOT DEFINED aemu-base-srcs)
# Build everything by default
set(aemu-base-srcs
AlignedBuf.cpp
CLog.cpp
CpuTime.cpp
FileUtils.cpp
FunctorThread.cpp
GLObjectCounter.cpp
HealthMonitor.cpp
LayoutResolver.cpp
MemStream.cpp
StdioStream.cpp
MemoryTracker.cpp
MessageChannel.cpp
PathUtils.cpp
ring_buffer.cpp
SharedLibrary.cpp
StringFormat.cpp
Stream.cpp
StreamSerializing.cpp
SubAllocator.cpp
System.cpp
Tracing.cpp)
set(aemu-base-posix-srcs
SharedMemory_posix.cpp
Thread_pthread.cpp)
set(aemu-base-windows-srcs
msvc.cpp
SharedMemory_win32.cpp
Thread_win32.cpp
Win32UnicodeString.cpp)
if(AEMU_BASE_USE_LZ4)
list(APPEND aemu-base-srcs CompressingStream.cpp DecompressingStream.cpp)
endif()
if (APPLE)
set(aemu-platform-srcs
${aemu-base-posix-srcs}
system-native-mac.mm)
elseif (WIN32)
set(aemu-platform-srcs
${aemu-base-windows-srcs})
else()
set(aemu-platform-srcs
${aemu-base-posix-srcs})
endif()
set(aemu-base-srcs ${aemu-base-srcs} ${aemu-platform-srcs})
endif()
add_library(aemu-base ${aemu-base-srcs})
if (WIN32)
set(aemu-base-platform-deps Shlwapi)
elseif (QNX)
set(aemu-base-platform-deps dl)
elseif(LINUX)
set(aemu-base-platform-deps dl rt)
elseif(APPLE)
set(aemu-base-platform-deps "-framework Foundation" "-framework AppKit" "-framework IOKit")
endif()
target_link_libraries(
aemu-base
PUBLIC
aemu-base.headers
# TODO(joshuaduong): Remove this when logging.h is moved into base
aemu-host-common.headers
PRIVATE
logging-base
${aemu-base-platform-deps})
target_include_directories(
aemu-base
PRIVATE
${AEMU_COMMON_REPO_ROOT}/include
PUBLIC
${AEMU_COMMON_REPO_ROOT})
if (NOT MSVC)
target_compile_options(
aemu-base PRIVATE -fvisibility=default)
endif()
if(AEMU_COMMON_USE_PERFETTO)
target_compile_definitions(aemu-base PRIVATE "USE_PERFETTO_TRACING")
target_link_libraries(aemu-base PRIVATE perfetto-tracing-only)
endif()
if(AEMU_BASE_USE_LZ4)
target_link_libraries(aemu-base PRIVATE lz4_static)
endif()
endif()
if (APPLE)
set(aemu-base-platform-test-srcs "")
elseif (WIN32)
set(aemu-base-platform-test-srcs Win32UnicodeString_unittest.cpp)
else()
set(aemu-base-platform-test-srcs "")
endif()
if (ENABLE_VKCEREAL_TESTS)
# Tests
add_library(
aemu-base-testing-support
testing/file_io.cpp)
target_link_libraries(
aemu-base-testing-support
PRIVATE
aemu-base.headers
gtest
gmock)
if (NOT DEFINED aemu-base-test-srcs)
set(aemu-base-test-srcs
AlignedBuf_unittest.cpp
HealthMonitor_unittest.cpp
ArraySize_unittest.cpp
LayoutResolver_unittest.cpp
LruCache_unittest.cpp
ManagedDescriptor_unittest.cpp
Optional_unittest.cpp
ring_buffer_unittest.cpp
StringFormat_unittest.cpp
SubAllocator_unittest.cpp
TypeTraits_unittest.cpp
WorkerThread_unittest.cpp)
endif()
add_executable(aemu-base_unittests ${aemu-base-test-srcs})
target_link_libraries(
aemu-base_unittests
PRIVATE
aemu-base.headers
${GFXSTREAM_BASE_LIB}
logging-base
aemu-base-testing-support
gmock
gtest_main)
gtest_discover_tests(aemu-base_unittests)
endif()