# 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}/system/profiler/Android.mk" "509a207b833d50fabb0eacdfe4168c395de928e3a84864768669ce1c63aa8553")
set(GoldfishProfiler_src profiler_stub.cpp)
android_add_library(TARGET GoldfishProfiler SHARED LICENSE Apache-2.0 SRC profiler_stub.cpp)
target_include_directories(GoldfishProfiler PRIVATE ${GOLDFISH_DEVICE_ROOT}/system/profiler ${GOLDFISH_DEVICE_ROOT}/./host/include/libOpenglRender ${GOLDFISH_DEVICE_ROOT}/./system/include ${GOLDFISH_DEVICE_ROOT}/./../../../external/qemu/android/android-emugl/guest)
target_compile_definitions(GoldfishProfiler PRIVATE "-DWITH_GLES2" "-DPLATFORM_SDK_VERSION=29" "-DGOLDFISH_HIDL_GRALLOC" "-DEMULATOR_OPENGL_POST_O=1" "-DHOST_BUILD" "-DANDROID" "-DGL_GLEXT_PROTOTYPES" "-DPAGE_SIZE=4096" "-DGFXSTREAM")
target_compile_options(GoldfishProfiler PRIVATE "-fvisibility=default" "-Wno-unused-parameter")
target_link_libraries(GoldfishProfiler PRIVATE android-emu-shared vulkan_enc gui log _renderControl_enc GLESv2_enc GLESv1_enc OpenglCodecCommon_host cutils utils androidemu PRIVATE gralloc_cb_host GoldfishAddressSpace_host qemupipe_host)