# This is an autogenerated file! Do not edit!
# instead run make from .../device/generic/goldfish-opengl
# which will re-generate this file.
android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/android-emu/Android.mk" "db8796ed60d925c8940c3ad8b125c0f8e8e6731f67d165040a6d478a8b894a0d")
set(androidemu_src aemu/base/AlignedBuf.cpp aemu/base/files/MemStream.cpp aemu/base/files/Stream.cpp aemu/base/files/StreamSerializing.cpp aemu/base/Pool.cpp aemu/base/StringFormat.cpp aemu/base/Process.cpp aemu/base/AndroidSubAllocator.cpp aemu/base/synchronization/AndroidMessageChannel.cpp aemu/base/threads/AndroidFunctorThread.cpp aemu/base/threads/AndroidThreadStore.cpp aemu/base/threads/AndroidThread_pthread.cpp aemu/base/threads/AndroidWorkPool.cpp aemu/base/AndroidHealthMonitor.cpp aemu/base/AndroidHealthMonitorConsumerBasic.cpp aemu/base/Tracing.cpp android/utils/debug.c)
android_add_library(TARGET androidemu SHARED LICENSE Apache-2.0 SRC aemu/base/AlignedBuf.cpp aemu/base/files/MemStream.cpp aemu/base/files/Stream.cpp aemu/base/files/StreamSerializing.cpp aemu/base/Pool.cpp aemu/base/StringFormat.cpp aemu/base/Process.cpp aemu/base/AndroidSubAllocator.cpp aemu/base/synchronization/AndroidMessageChannel.cpp aemu/base/threads/AndroidFunctorThread.cpp aemu/base/threads/AndroidThreadStore.cpp aemu/base/threads/AndroidThread_pthread.cpp aemu/base/threads/AndroidWorkPool.cpp aemu/base/AndroidHealthMonitor.cpp aemu/base/AndroidHealthMonitorConsumerBasic.cpp aemu/base/Tracing.cpp android/utils/debug.c)
target_include_directories(androidemu PRIVATE ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
target_compile_definitions(androidemu PRIVATE "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DENABLE_ANDROID_HEALTH_MONITOR" "-DLOG_TAG=\"androidemu\"")
target_compile_options(androidemu PRIVATE "-fvisibility=default" "-Wno-unused-parameter" "-Wno-missing-field-initializers" "-fstrict-aliasing")
target_link_libraries(androidemu PRIVATE cutils utils log android-emu-shared)
# This is an autogenerated file! Do not edit!
# instead run make from .../device/generic/goldfish-opengl
# which will re-generate this file.
android_validate_sha256("${GOLDFISH_DEVICE_ROOT}/android-emu/Android.mk" "db8796ed60d925c8940c3ad8b125c0f8e8e6731f67d165040a6d478a8b894a0d")
set(ringbuffer_src aemu/base/ring_buffer.c)
android_add_library(TARGET ringbuffer LICENSE Apache-2.0 SRC aemu/base/ring_buffer.c)
target_include_directories(ringbuffer PRIVATE ${GOLDFISH_DEVICE_ROOT}/android-emu ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
target_compile_definitions(ringbuffer PRIVATE "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM" "-DENABLE_ANDROID_HEALTH_MONITOR")
target_compile_options(ringbuffer PRIVATE "-fvisibility=default" "-Wno-unused-parameter")
target_link_libraries(ringbuffer PRIVATE cutils utils log android-emu-shared)