# This file is part of Desktop App Toolkit, # a set of libraries for developing nice desktop applications. # # For license and copyright information please follow this link: # https://github.com/desktop-app/legal/blob/master/LEGAL add_library(external_qt INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_qt ALIAS external_qt) add_subdirectory(qt_static_plugins) if (DESKTOP_APP_USE_PACKAGED) target_link_libraries(external_qt INTERFACE Qt::Core Qt::CorePrivate Qt::Gui Qt::GuiPrivate $ Qt::Widgets Qt::WidgetsPrivate $ Qt::Network Qt::Svg $ $ $ $ $ ) return() endif() target_include_directories(external_qt SYSTEM INTERFACE ${qt_loc}/include ${qt_loc}/include/QtCore ${qt_loc}/include/QtGui $<$:${qt_loc}/include/QtOpenGL> ${qt_loc}/include/QtWidgets $<$:${qt_loc}/include/QtOpenGLWidgets> ${qt_loc}/include/QtSvg $<$:${qt_loc}/include/QtDBus> $<$:${qt_loc}/include/QtQml> $<$:${qt_loc}/include/QtQuick> $<$:${qt_loc}/include/QtQuickWidgets> $<$:${qt_loc}/include/QtWaylandCompositor> ${qt_loc}/include/QtCore/${qt_version} ${qt_loc}/include/QtGui/${qt_version} ${qt_loc}/include/QtWidgets/${qt_version} ${qt_loc}/include/QtCore/${qt_version}/QtCore ${qt_loc}/include/QtGui/${qt_version}/QtGui ${qt_loc}/include/QtWidgets/${qt_version}/QtWidgets ) target_compile_definitions(external_qt INTERFACE _REENTRANT QT_STATICPLUGIN QT_PLUGIN QT_CORE_LIB QT_GUI_LIB $<$:QT_OPENGL_LIB> QT_WIDGETS_LIB $<$:QT_OPENGLWIDGETS_LIB> QT_NETWORK_LIB QT_SVG_LIB $<$:QT_DBUS_LIB> $<$:QT_QML_LIB> $<$:QT_QUICK_LIB> $<$:QT_QUICKWIDGETS_LIB> $<$:QT_WAYLANDCOMPOSITOR_LIB> ) if (WIN32) set(qt_lib_prefix "") set(qt_lib_suffix $<$:d>.lib) else() set(qt_lib_prefix lib) if (APPLE) set(qt_lib_suffix $<$:_debug>.a) else() set(qt_lib_suffix .a) endif() endif() set(common_qt_libs plugins/imageformats/${qt_lib_prefix}qwebp plugins/imageformats/${qt_lib_prefix}qgif plugins/imageformats/${qt_lib_prefix}qjpeg lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Svg lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Network lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Widgets lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Gui lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Core ) if (TARGET Qt::OpenGL) list(PREPEND common_qt_libs lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}OpenGL ) endif() if (TARGET Qt::OpenGLWidgets) list(PREPEND common_qt_libs lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}OpenGLWidgets ) endif() if (TARGET Qt::Qml) list(PREPEND common_qt_libs qml/QtQml/WorkerScript/${qt_lib_prefix}workerscriptplugin qml/QtQml/Models/${qt_lib_prefix}modelsplugin qml/QtQml/Base/${qt_lib_prefix}qmlplugin qml/QtQml/${qt_lib_prefix}qmlmetaplugin lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}QmlWorkerScript lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}QmlModels lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Qml ) endif() if (TARGET Qt::Quick) list(PREPEND common_qt_libs qml/QtQuick/Window/${qt_lib_prefix}quickwindowplugin qml/QtQuick/${qt_lib_prefix}qtquick2plugin lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Quick ) endif() if (TARGET Qt::QuickWidgets) list(PREPEND common_qt_libs lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}QuickWidgets ) endif() if (QT_VERSION_MAJOR GREATER_EQUAL 6) list(APPEND common_qt_libs lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledHarfbuzz lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledLibpng lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledPcre2 ) else() list(APPEND common_qt_libs lib/${qt_lib_prefix}qtharfbuzz lib/${qt_lib_prefix}qtlibpng lib/${qt_lib_prefix}qtpcre2 ) endif() set(qt_libs_list "") if (WIN32) target_include_directories(external_qt SYSTEM INTERFACE ${qt_loc}/mkspecs/win32-msvc ) set(qt_libs plugins/bearer/${qt_lib_prefix}qgenericbearer lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}AccessibilitySupport lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}FontDatabaseSupport lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}EventDispatcherSupport lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}ThemeSupport ${common_qt_libs} lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}WindowsUIAutomationSupport lib/${qt_lib_prefix}qtmain lib/${qt_lib_prefix}qtfreetype plugins/platforms/${qt_lib_prefix}qwindows ) foreach (lib ${qt_libs}) list(APPEND qt_libs_list "${qt_loc}/${lib}${qt_lib_suffix}") endforeach() target_link_libraries(external_qt INTERFACE desktop-app::external_angle ) elseif (APPLE) target_include_directories(external_qt SYSTEM INTERFACE ${qt_loc}/mkspecs/macx-clang ) set(qt_libs ${common_qt_libs} lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}BundledFreetype plugins/platforms/${qt_lib_prefix}qcocoa plugins/tls/${qt_lib_prefix}qsecuretransportbackend plugins/networkinformation/${qt_lib_prefix}qscnetworkreachability ) foreach (lib ${qt_libs}) list(APPEND qt_libs_list "${qt_loc}/${lib}${qt_lib_suffix}") endforeach() list(APPEND qt_libs_list $ ) else() set(qt_libs plugins/platforminputcontexts/${qt_lib_prefix}composeplatforminputcontextplugin plugins/platformthemes/${qt_lib_prefix}qgtk3 plugins/platforms/${qt_lib_prefix}qxcb plugins/tls/${qt_lib_prefix}qopensslbackend plugins/xcbglintegrations/${qt_lib_prefix}qxcb-egl-integration plugins/iconengines/${qt_lib_prefix}qsvgicon lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}XcbQpa ${common_qt_libs} ) if (TARGET Qt::DBus) list(APPEND qt_libs plugins/platforminputcontexts/${qt_lib_prefix}ibusplatforminputcontextplugin plugins/platformthemes/${qt_lib_prefix}qxdgdesktopportal lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}DBus lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}Core ) endif() if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION) list(PREPEND qt_libs plugins/platforms/${qt_lib_prefix}qwayland-generic plugins/platforms/${qt_lib_prefix}qwayland-egl plugins/wayland-graphics-integration-client/${qt_lib_prefix}qt-plugin-wayland-egl plugins/wayland-shell-integration/${qt_lib_prefix}xdg-shell plugins/wayland-decoration-client/${qt_lib_prefix}bradient lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}WaylandEglClientHwIntegration lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}WaylandClient ) endif() if (TARGET Qt::WaylandCompositor) list(PREPEND qt_libs lib/${qt_lib_prefix}Qt${QT_VERSION_MAJOR}WaylandCompositor ) list(APPEND qt_libs_list $ ) if (TARGET Qt::Quick) list(PREPEND qt_libs qml/QtWayland/Compositor/${qt_lib_prefix}qwaylandcompositorplugin qml/QtWayland/Compositor/XdgShell/${qt_lib_prefix}waylandcompositorxdgshellplugin ) list(APPEND qt_libs_list $ $ $ $ $ $ ) endif() endif() foreach (lib ${qt_libs}) list(APPEND qt_libs_list "${qt_loc}/${lib}${qt_lib_suffix}") endforeach() endif() if (QT_VERSION_MAJOR GREATER_EQUAL 6) list(APPEND qt_libs_list $ $<$:$> $ $ $ ) if (TARGET Qt::Qml) list(APPEND qt_libs_list $ $ $ $ $ $ $ $ ) endif() if (TARGET Qt::Quick) list(APPEND qt_libs_list $ $ $ $ $ ) endif() endif() target_link_libraries(external_qt INTERFACE ${qt_libs_list} $ $ $ $ $ $ $ ) if (LINUX) target_include_directories(external_qt SYSTEM INTERFACE ${qt_loc}/mkspecs/linux-g++ ) target_link_static_libraries(external_qt INTERFACE proxy lcms2 xkbcommon xkbcommon-x11 xcb-cursor xcb-xkb xcb-randr xcb-icccm xcb-shm xcb-render xcb-image xcb-xfixes xcb-shape xcb-sync xcb-util xcb-render-util xcb-keysyms ) if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION) target_link_libraries(external_qt INTERFACE desktop-app::linux_wayland_helper ) endif() if (TARGET Qt::WaylandCompositor) target_link_static_libraries(external_qt INTERFACE wayland-server ffi ) endif() target_link_libraries(external_qt INTERFACE desktop-app::linux_xcb_helper fontconfig freetype EGL GL xcb glib-2.0 ) endif()