blob: 6466b72e9f26c06901afeeba7e2d90e01f04f2ed [file] [log] [blame]
# The list of dependencies.
prebuilt(QT5)
prebuilt(FFMPEG)
set(ANDROID_LIBUI_HEADLESS_SRC_FILES
android/skin/charmap.c
android/skin/rect.c
android/skin/generic-event.cpp
android/skin/generic-event-buffer.cpp
android/skin/image.c
android/skin/trackball.c
android/skin/keyboard.c
android/skin/keycode.c
android/skin/keycode-buffer.c
android/skin/file.c
android/skin/window.c
android/skin/resource.c
android/skin/ui.c
android/skin/winsys-headless.cpp
android/skin/event-headless.cpp
android/skin/surface-headless.cpp
android/skin/qt/emulator-no-qt-no-window.cpp
android/skin/LibuiAgent.cpp
android/gpu_frame.cpp
android/emulator-window.c
android/emulation/control/ScreenCapturer.cpp
android/window-agent-headless-impl.cpp
android/main-common-ui.c
android/resource.c
android/recording/audio/AudioProducer.cpp
android/recording/codecs/audio/VorbisCodec.cpp
android/recording/codecs/video/VP9Codec.cpp
android/recording/FfmpegRecorder.cpp
android/recording/Frame.cpp
android/recording/GifConverter.cpp
android/recording/screen-recorder.cpp
android/recording/video/GuestReadbackWorker.cpp
android/recording/video/player/Clock.cpp
android/recording/video/player/FrameQueue.cpp
android/recording/video/player/PacketQueue.cpp
android/recording/video/player/VideoPlayer.cpp
android/recording/video/player/VideoPlayerNotifier.cpp
android/recording/video/VideoProducer.cpp
android/recording/video/VideoFrameSharer.cpp)
set(ANDROID_LIBUI_SRC_FILES
android/skin/charmap.c
android/skin/rect.c
android/skin/generic-event.cpp
android/skin/generic-event-buffer.cpp
android/skin/image.c
android/skin/trackball.c
android/skin/keyboard.c
android/skin/keycode.c
android/skin/keycode-buffer.c
android/skin/file.c
android/skin/window.c
android/skin/resource.c
android/skin/ui.c
android/skin/qt/car-cluster-window.cpp
android/skin/qt/event-qt.cpp
android/skin/qt/init-qt.cpp
android/skin/qt/surface-qt.cpp
android/skin/qt/winsys-qt.cpp
android/skin/qt/accelerometer-3d-widget.cpp
android/skin/qt/angle-input-widget.cpp
android/skin/qt/editable-slider-widget.cpp
android/skin/qt/emulator-container.cpp
android/skin/qt/emulator-no-qt-no-window.cpp
android/skin/qt/emulator-overlay.cpp
android/skin/qt/emulator-qt-window.cpp
android/skin/qt/event-capturer.cpp
android/skin/qt/event-serializer.cpp
android/skin/qt/event-subscriber.cpp
android/skin/qt/error-dialog.cpp
android/skin/qt/gl-canvas.cpp
android/skin/qt/gl-common.cpp
android/skin/qt/gl-texture-draw.cpp
android/skin/qt/gl-widget.cpp
android/skin/qt/extended-pages/common.cpp
android/skin/qt/extended-pages/battery-page.cpp
android/skin/qt/extended-pages/bug-report-page.cpp
android/skin/qt/extended-pages/camera-page.cpp
android/skin/qt/extended-pages/camera-virtualscene-subpage.cpp
android/skin/qt/extended-pages/car-cluster-connector/car-cluster-connector.cpp
android/skin/qt/extended-pages/car-data-emulation/car-property-table.cpp
android/skin/qt/extended-pages/car-data-emulation/car-property-utils.cpp
android/skin/qt/extended-pages/car-data-emulation/car-sensor-data.cpp
android/skin/qt/extended-pages/car-data-page.cpp
android/skin/qt/extended-pages/cellular-page.cpp
android/skin/qt/extended-pages/dpad-page.cpp
android/skin/qt/extended-pages/finger-page.cpp
android/skin/qt/extended-pages/google-play-page.cpp
android/skin/qt/extended-pages/help-page.cpp
android/skin/qt/extended-pages/instr-cluster-render/car-cluster-widget.cpp
android/skin/qt/extended-pages/location-page-point.cpp
android/skin/qt/extended-pages/location-page-route.cpp
android/skin/qt/extended-pages/location-page-route-playback.cpp
android/skin/qt/extended-pages/location-page.cpp
android/skin/qt/extended-pages/microphone-page.cpp
android/skin/qt/extended-pages/perfstats-page.cpp
android/skin/qt/extended-pages/record-and-playback-page.cpp
android/skin/qt/extended-pages/record-macro-page.cpp
android/skin/qt/extended-pages/record-macro-saved-item.cpp
android/skin/qt/extended-pages/record-screen-page.cpp
android/skin/qt/extended-pages/rotary-input-dial.cpp
android/skin/qt/extended-pages/rotary-input-page.cpp
android/skin/qt/extended-pages/settings-page-proxy.cpp
android/skin/qt/extended-pages/settings-page.cpp
android/skin/qt/extended-pages/snapshot-page.cpp
android/skin/qt/extended-pages/telephony-page.cpp
android/skin/qt/extended-pages/virtual-sensors-page.cpp
android/skin/qt/extended-window.cpp
android/skin/qt/FramelessDetector.cpp
android/skin/qt/ModalOverlay.cpp
android/skin/qt/OverlayMessageCenter.cpp
android/skin/qt/perf-stats-3d-widget.cpp
android/skin/qt/poster-image-well.cpp
android/skin/qt/qt-ui-commands.cpp
android/skin/qt/QtLooper.cpp
android/skin/qt/QtThreading.cpp
android/skin/qt/screen-mask.cpp
android/skin/qt/size-tweaker.cpp
android/skin/qt/stylesheet.cpp
android/skin/qt/tool-window.cpp
android/skin/qt/tool-window-2.cpp
android/skin/qt/ui-event-recorder.cpp
android/skin/qt/user-actions-counter.cpp
android/skin/qt/virtualscene-control-window.cpp
android/skin/qt/VirtualSceneInfoDialog.cpp
android/skin/qt/wavefront-obj-parser.cpp
android/skin/qt/video-player/QtVideoPlayerNotifier.cpp
android/skin/qt/video-player/VideoInfo.cpp
android/skin/qt/video-player/VideoPlayerWidget.cpp
android/skin/LibuiAgent.cpp
android/gpu_frame.cpp
android/emulator-window.c
android/emulation/control/ScreenCapturer.cpp
android/window-agent-impl.cpp
android/main-common-ui.c
android/resource.c
android/recording/audio/AudioProducer.cpp
android/recording/codecs/audio/VorbisCodec.cpp
android/recording/codecs/video/VP9Codec.cpp
android/recording/FfmpegRecorder.cpp
android/recording/Frame.cpp
android/recording/GifConverter.cpp
android/recording/screen-recorder.cpp
android/recording/video/GuestReadbackWorker.cpp
android/recording/video/player/Clock.cpp
android/recording/video/player/FrameQueue.cpp
android/recording/video/player/PacketQueue.cpp
android/recording/video/player/VideoPlayer.cpp
android/recording/video/player/VideoPlayerNotifier.cpp
android/recording/video/VideoProducer.cpp
android/recording/video/VideoFrameSharer.cpp)
# Note, these are separated for historical reasons only, the
# uic compiler will find this automatically
set(ANDROID_SKIN_QT_UI_SRC_FILES
android/skin/qt/extended.ui
android/skin/qt/extended-pages/battery-page.ui
android/skin/qt/extended-pages/bug-report-page.ui
android/skin/qt/extended-pages/camera-page.ui
android/skin/qt/extended-pages/camera-virtualscene-subpage.ui
android/skin/qt/extended-pages/car-data-emulation/car-property-table.ui
android/skin/qt/extended-pages/car-data-page.ui
android/skin/qt/extended-pages/cellular-page.ui
android/skin/qt/extended-pages/dpad-page.ui
android/skin/qt/extended-pages/finger-page.ui
android/skin/qt/extended-pages/google-play-page.ui
android/skin/qt/extended-pages/help-page.ui
android/skin/qt/extended-pages/microphone-page.ui
android/skin/qt/extended-pages/record-and-playback-page.ui
android/skin/qt/extended-pages/record-macro-page.ui
android/skin/qt/extended-pages/record-macro-saved-item.ui
android/skin/qt/extended-pages/record-screen-page.ui
android/skin/qt/extended-pages/rotary-input-page.ui
android/skin/qt/extended-pages/settings-page.ui
android/skin/qt/extended-pages/snapshot-page.ui
android/skin/qt/extended-pages/telephony-page.ui
android/skin/qt/extended-pages/virtual-sensors-page.ui
android/skin/qt/extended-pages/car-data-emulation/car-sensor-data.ui
android/skin/qt/poster-image-well.ui
android/skin/qt/tools.ui
android/skin/qt/virtualscene-controls.ui
android/skin/qt/virtualscene-info-dialog.ui)
# Same here, the MOC compiler will find these files automatically.
set(ANDROID_SKIN_QT_MOC_SRC_FILES
android/skin/qt/accelerometer-3d-widget.h
android/skin/qt/angle-input-widget.h
android/skin/qt/editable-slider-widget.h
android/skin/qt/gl-widget.h
android/skin/qt/emulator-container.h
android/skin/qt/emulator-no-qt-no-window.h
android/skin/qt/emulator-overlay.h
android/skin/qt/emulator-qt-window.h
android/skin/qt/event-capturer.h
android/skin/qt/event-subscriber.h
android/skin/qt/extended-pages/battery-page.h
android/skin/qt/extended-pages/bug-report-page.h
android/skin/qt/extended-pages/camera-page.h
android/skin/qt/extended-pages/camera-virtualscene-subpage.h
android/skin/qt/extended-pages/car-data-emulation/car-property-table.h
android/skin/qt/extended-pages/car-data-page.h
android/skin/qt/extended-pages/cellular-page.h
android/skin/qt/extended-pages/dpad-page.h
android/skin/qt/extended-pages/finger-page.h
android/skin/qt/extended-pages/google-play-page.h
android/skin/qt/extended-pages/help-page.h
android/skin/qt/extended-pages/location-page.h
android/skin/qt/extended-pages/microphone-page.h
android/skin/qt/extended-pages/record-and-playback-page.h
android/skin/qt/extended-pages/record-macro-page.h
android/skin/qt/extended-pages/record-macro-saved-item.h
android/skin/qt/extended-pages/record-screen-page-tasks.h
android/skin/qt/extended-pages/record-screen-page.h
android/skin/qt/extended-pages/rotary-input-dial.h
android/skin/qt/extended-pages/rotary-input-page.h
android/skin/qt/extended-pages/settings-page.h
android/skin/qt/extended-pages/snapshot-page.h
android/skin/qt/extended-pages/telephony-page.h
android/skin/qt/extended-pages/virtual-sensors-page.h
android/skin/qt/extended-pages/car-data-emulation/car-sensor-data.h
android/skin/qt/extended-window.h
android/skin/qt/raised-material-button.h
android/skin/qt/ModalOverlay.h
android/skin/qt/poster-image-well.h
android/skin/qt/OverlayMessageCenter.h
android/skin/qt/QtLooperImpl.h
android/skin/qt/VirtualSceneInfoDialog.h
android/skin/qt/screen-mask.h
android/skin/qt/size-tweaker.h
android/skin/qt/tool-window.h
android/skin/qt/tool-window-2.h
android/skin/qt/user-actions-counter.h
android/skin/qt/virtualscene-control-window.h
android/skin/qt/video-player/QtVideoPlayerNotifier.h
android/skin/qt/video-player/VideoPlayerWidget.h
android/skin/qt/video-player/VideoInfo.h)
# Resources will now always be compiled in.
set(ANDROID_SKIN_QT_DYNAMIC_RESOURCES android/skin/qt/resources.qrc)
set(ANDROID_SKIN_QT_UI_SRC_FILES android/skin/qt/static_resources.qrc)
set(ANDROID_SKIN_SOURCES
android/skin/qt/event-qt.cpp
android/skin/qt/init-qt.cpp
android/skin/qt/surface-qt.cpp
android/skin/qt/winsys-qt.cpp
android/skin/qt/QtLogger.cpp)
# Set the target specific sources.
if (NOT QTWEBENGINE)
message(STATUS "Webengine disabled." )
set(emulator-libui_darwin-x86_64_src
android/skin/qt/mac-native-window.mm
android/skin/qt/extended-pages/location-page_noMaps.ui)
set(emulator-libui_windows-x86_64_src
android/skin/qt/windows-native-window.cpp
android/skin/qt/extended-pages/location-page_noMaps.ui)
set(emulator-libui_windows_msvc-x86_64_src
android/skin/qt/windows-native-window.cpp
android/skin/qt/extended-pages/location-page_noMaps.ui)
set(emulator-libui_linux-x86_64_src
android/skin/qt/extended-pages/location-page_noMaps.ui)
else ()
message(STATUS "Webengine enabled")
set(emulator-libui_darwin-x86_64_src
android/skin/qt/mac-native-window.mm
android/skin/qt/websockets/websocketclientwrapper.cpp
android/skin/qt/websockets/websockettransport.cpp
android/skin/qt/extended-pages/location-page.ui)
set(emulator-libui_windows-x86_64_src
android/skin/qt/windows-native-window.cpp
android/skin/qt/extended-pages/location-page_noMaps.ui)
set(emulator-libui_windows_msvc-x86_64_src
android/skin/qt/windows-native-window.cpp
android/skin/qt/websockets/websocketclientwrapper.cpp
android/skin/qt/websockets/websockettransport.cpp
android/skin/qt/extended-pages/location-page.ui)
set(emulator-libui_linux-x86_64_src
android/skin/qt/websockets/websocketclientwrapper.cpp
android/skin/qt/websockets/websockettransport.cpp
android/skin/qt/extended-pages/location-page.ui)
endif()
# Set the sources
set(emulator-libui_src
${ANDROID_HW_CONFIG_H}
${ANDROID_LIBUI_SRC_FILES}
${ANDROID_SKIN_QT_DYNAMIC_RESOURCES}
${ANDROID_SKIN_QT_MOC_SRC_FILES}
${ANDROID_SKIN_QT_UI_SRC_FILES}
${ANDROID_SKIN_SOURCES})
android_add_library(emulator-libui)
# TODO: Remove this and the "USE_WEBENGINE" defines once we have:
# --no-window mode has no dependency on Qt
if (QTWEBENGINE AND NOT ANDROID_TARGET_TAG STREQUAL "windows-x86_64")
target_compile_definitions(emulator-libui PRIVATE "-DUSE_WEBENGINE")
target_link_libraries(emulator-libui PRIVATE
Qt5::Network
Qt5::WebEngineWidgets
Qt5::WebChannel
Qt5::WebSockets)
endif()
target_compile_options(emulator-libui PRIVATE "-DUSE_MMX=1" "-mmmx")
# Target specific compiler flags for windows, since we include FFMPEG C sources from C++ we need to make sure this flag
# is set for c++ sources.
if(NOT MSVC)
android_target_compile_options(emulator-libui windows PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:-Wno-literal-suffix>")
endif()
# Linux compiler settings
android_target_compile_options(emulator-libui
linux-x86_64
PRIVATE
"-Wno-reserved-user-defined-literal"
"-Wno-pointer-bool-conversion"
"-Wno-deprecated-declarations"
"-Wno-inconsistent-missing-override"
"-Wno-return-type-c-linkage"
"-Wno-invalid-constexpr")
# Mac Os compiler settings
android_target_compile_options(emulator-libui
darwin-x86_64
PRIVATE
"-Wno-reserved-user-defined-literal"
"-Wno-pointer-bool-conversion"
"-Wno-deprecated-declarations"
"-Wno-inconsistent-missing-override"
"-Wno-return-type-c-linkage"
"-Wno-invalid-constexpr")
# dependencies will remain internal, we should not be leaking out internal headers and defines.
target_link_libraries(emulator-libui
PRIVATE
android-emu
emulator-libyuv
FFMPEG::FFMPEG
Qt5::Core
Qt5::Widgets
Qt5::Gui
Qt5::Svg
zlib)
# gl-widget.cpp needs to call XInitThreads() directly to work around a Qt bug. This implies a direct dependency to
# libX11.so
android_target_link_libraries(emulator-libui linux-x86_64 PRIVATE -lX11)
# Windows-msvc specific dependencies. Need these for posix support.
android_target_link_libraries(emulator-libui windows_msvc-x86_64 PUBLIC
msvc-posix-compat
dirent-win32)
set(emulator-libui_unittests_src
android/skin/keycode_unittest.cpp
android/skin/keycode-buffer_unittest.cpp
android/skin/rect_unittest.cpp
android/recording/test/DummyAudioProducer.cpp
android/recording/test/DummyVideoProducer.cpp
android/recording/FfmpegRecorder.cpp
android/recording/test/FfmpegRecorder_unittest.cpp
)
set(emulator-libui_unittests_windows_src android/skin/qt/qtmain_dummy_test.cpp)
android_add_test(emulator-libui_unittests)
target_compile_options(emulator-libui_unittests PRIVATE -O0 -UNDEBUG)
# Target specific compiler flags for windows
android_target_compile_options(emulator-libui_unittests windows PRIVATE
"$<$<COMPILE_LANGUAGE:CXX>:-Wno-literal-suffix>")
# Linux compiler settings
android_target_compile_options(emulator-libui_unittests linux-x86_64 PRIVATE "-Wno-reserved-user-defined-literal")
# Mac Os compiler settings
android_target_compile_options(emulator-libui_unittests darwin-x86_64 PRIVATE "-Wno-reserved-user-defined-literal")
android_target_dependency(emulator-libui_unittests all QT5_SHARED_DEPENDENCIES)
android_target_properties(emulator-libui_unittests all "${QT5_SHARED_PROPERTIES}")
# Make sure we disable rtti in gtest
target_compile_definitions(emulator-libui_unittests PRIVATE -DGTEST_HAS_RTTI=0)
target_link_libraries(emulator-libui_unittests PRIVATE gmock_main emulator-libui android-mock-vm-operations OpenGLESDispatch FFMPEG::FFMPEG)
# Version of libui without Qt
set(emulator-libui-headless_src
${ANDROID_HW_CONFIG_H}
${ANDROID_LIBUI_HEADLESS_SRC_FILES})
android_add_library(emulator-libui-headless)
android_target_link_libraries(emulator-libui-headless windows_msvc-x86_64 PUBLIC
msvc-posix-compat
dirent-win32)
target_compile_definitions(emulator-libui-headless PRIVATE -DCONFIG_HEADLESS)
target_compile_options(emulator-libui-headless PRIVATE "-DUSE_MMX=1" "-mmmx")
# Target specific compiler flags for windows, since we include FFMPEG C sources from C++ we need to make sure this flag
# is set for c++ sources.
if(NOT MSVC)
android_target_compile_options(emulator-libui-headless windows PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:-Wno-literal-suffix>")
endif()
# Linux compiler settings
android_target_compile_options(emulator-libui-headless
linux-x86_64
PRIVATE
"-Wno-reserved-user-defined-literal"
"-Wno-pointer-bool-conversion"
"-Wno-deprecated-declarations"
"-Wno-inconsistent-missing-override"
"-Wno-return-type-c-linkage"
"-Wno-invalid-constexpr")
# Mac Os compiler settings
android_target_compile_options(emulator-libui-headless
darwin-x86_64
PRIVATE
"-Wno-reserved-user-defined-literal"
"-Wno-pointer-bool-conversion"
"-Wno-deprecated-declarations"
"-Wno-inconsistent-missing-override"
"-Wno-return-type-c-linkage"
"-Wno-invalid-constexpr")
# dependencies will remain internal, we should not be leaking out internal headers and defines.
target_link_libraries(emulator-libui-headless
PRIVATE
android-emu
emulator-libyuv
FFMPEG::FFMPEG
zlib)