diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-04-08 17:23:57 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-12-03 13:35:59 +0000 |
commit | 55a15a1c1b93d36d705fc69e44b5c806b807dd55 (patch) | |
tree | 5b98c29c723bda2f298a394ee46e63f3c23ec74f /src | |
parent | c800a6240353eb54bd7a2ad06c455ac9374c2476 (diff) |
Add initial support for cross-building to iOS
Tested locally with the following configurations:
- iOS device builds (arm64)
- iOS simulator builds (x86_64)
- iOS simulator_and_device builds (fat arm64 and x86_64 archives)
All iOS builds currently require a custom vcpkg fork which contains
fixes for building the required 3rd party libraries.
qtsvg, qtdeclarative, qtgraphicaleffects and qtquickcontrols2
have also been tested to build successfully.
simulator_and_device builds are also supported, but require an umerged
patch in upstream CMake as well as further patches to vcpkg.
Task-number: QTBUG-75576
Change-Id: Icd29913fbbd52a60e07ea5253fd9c7af7f8ce44c
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/CMakeLists.txt | 10 | ||||
-rw-r--r-- | src/plugins/platforms/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/plugins/platforms/ios/.prev_CMakeLists.txt | 81 | ||||
-rw-r--r-- | src/plugins/platforms/ios/CMakeLists.txt | 72 | ||||
-rw-r--r-- | src/plugins/platforms/ios/optional/CMakeLists.txt | 6 | ||||
-rw-r--r-- | src/plugins/platforms/ios/optional/nsphotolibrarysupport/CMakeLists.txt | 30 |
6 files changed, 200 insertions, 1 deletions
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index f081979aff..9f146721c0 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -594,6 +594,16 @@ qt_extend_target(Gui CONDITION QT_FEATURE_harfbuzz WrapHarfbuzz::WrapHarfbuzz ) +# special case begin +# Replicate what src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro does, which is link CoreText +# when targeting uikit. + +qt_extend_target(Gui CONDITION QT_FEATURE_harfbuzz AND APPLE_UIKIT + LIBRARIES + ${FWCoreText} +) +# special case end + qt_extend_target(Gui CONDITION QT_FEATURE_textodfwriter SOURCES text/qtextodfwriter.cpp text/qtextodfwriter_p.h diff --git a/src/plugins/platforms/CMakeLists.txt b/src/plugins/platforms/CMakeLists.txt index aba67bd59b..57c3952e4c 100644 --- a/src/plugins/platforms/CMakeLists.txt +++ b/src/plugins/platforms/CMakeLists.txt @@ -13,7 +13,7 @@ if(QT_FEATURE_xcb) add_subdirectory(xcb) endif() if(APPLE_UIKIT AND NOT APPLE_WATCHOS) - # add_subdirectory(ios) special case TODO + add_subdirectory(ios) endif() if(APPLE_OSX) add_subdirectory(cocoa) diff --git a/src/plugins/platforms/ios/.prev_CMakeLists.txt b/src/plugins/platforms/ios/.prev_CMakeLists.txt new file mode 100644 index 0000000000..f23cf8c300 --- /dev/null +++ b/src/plugins/platforms/ios/.prev_CMakeLists.txt @@ -0,0 +1,81 @@ +# Generated from ios.pro. + +##################################################################### +## qios Plugin: +##################################################################### + +add_qt_plugin(qios + TYPE platforms + CLASS_NAME QIOSIntegrationPlugin + SOURCES + plugin.mm + qiosapplicationdelegate.h qiosapplicationdelegate.mm + qiosapplicationstate.h qiosapplicationstate.mm + qiosbackingstore.h qiosbackingstore.mm + qioscontext.h qioscontext.mm + qioseventdispatcher.h qioseventdispatcher.mm + qiosglobal.h qiosglobal.mm + qiosinputcontext.h qiosinputcontext.mm + qiosintegration.h qiosintegration.mm + qiosplatformaccessibility.h qiosplatformaccessibility.mm + qiosscreen.h qiosscreen.mm + qiosservices.h qiosservices.mm + qiostextresponder.h qiostextresponder.mm + qiostheme.h qiostheme.mm + qiosviewcontroller.h qiosviewcontroller.mm + qioswindow.h qioswindow.mm + quiaccessibilityelement.h quiaccessibilityelement.mm + quiview.h quiview.mm + LIBRARIES + Qt::ClipboardSupportPrivate + Qt::CorePrivate + Qt::FontDatabaseSupportPrivate + Qt::GraphicsSupportPrivate + Qt::GuiPrivate + PUBLIC_LIBRARIES + ${FWAudioToolbox} + ${FWFoundation} + ${FWQuartzCore} + ${FWUIKit} + Qt::ClipboardSupport + Qt::Core + Qt::FontDatabaseSupport + Qt::GraphicsSupport + Qt::Gui +) + +#### Keys ignored in scope 2:.:.:kernel.pro:<TRUE>: +# OTHER_FILES = "quiview_textinput.mm" "quiview_accessibility.mm" +# PLUGIN_CLASS_NAME = "QIOSIntegrationPlugin" +# PLUGIN_TYPE = "platforms" +# _LOADED = "qt_plugin" + +## Scopes: +##################################################################### + +#### Keys ignored in scope 3:.:.:kernel.pro:QT_FEATURE_shared: +# CONFIG = "static" + +extend_target(qios CONDITION NOT APPLE_TVOS + SOURCES + qiosclipboard.h qiosclipboard.mm + qiosfiledialog.h qiosfiledialog.mm + qiosmenu.h qiosmenu.mm + qiosmessagedialog.h qiosmessagedialog.mm + qiostextinputoverlay.h qiostextinputoverlay.mm + PUBLIC_LIBRARIES + ${FWAssetsLibrary} +) + +#### Keys ignored in scope 5:.:.:kernel.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(optional) + + if(QT_FEATURE_shared) + endif() + + if(NOT APPLE_TVOS) + endif() + + if(NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN) + endif() diff --git a/src/plugins/platforms/ios/CMakeLists.txt b/src/plugins/platforms/ios/CMakeLists.txt new file mode 100644 index 0000000000..4c9cac2bee --- /dev/null +++ b/src/plugins/platforms/ios/CMakeLists.txt @@ -0,0 +1,72 @@ +# Generated from ios.pro. + +##################################################################### +## qios Plugin: +##################################################################### + +add_qt_plugin(qios + TYPE platforms + CLASS_NAME QIOSIntegrationPlugin + SOURCES + plugin.mm + qiosapplicationdelegate.h qiosapplicationdelegate.mm + qiosapplicationstate.h qiosapplicationstate.mm + qiosbackingstore.h qiosbackingstore.mm + qioscontext.h qioscontext.mm + qioseventdispatcher.h qioseventdispatcher.mm + qiosglobal.h qiosglobal.mm + qiosinputcontext.h qiosinputcontext.mm + qiosintegration.h qiosintegration.mm + qiosplatformaccessibility.h qiosplatformaccessibility.mm + qiosscreen.h qiosscreen.mm + qiosservices.h qiosservices.mm + qiostextresponder.h qiostextresponder.mm + qiostheme.h qiostheme.mm + qiosviewcontroller.h qiosviewcontroller.mm + qioswindow.h qioswindow.mm + quiaccessibilityelement.h quiaccessibilityelement.mm + quiview.h quiview.mm + LIBRARIES + Qt::ClipboardSupportPrivate + Qt::CorePrivate + Qt::FontDatabaseSupportPrivate + Qt::GraphicsSupportPrivate + Qt::GuiPrivate + PUBLIC_LIBRARIES + ${FWAudioToolbox} + ${FWFoundation} + ${FWQuartzCore} + ${FWUIKit} + Qt::ClipboardSupport + Qt::Core + Qt::FontDatabaseSupport + Qt::GraphicsSupport + Qt::Gui +) + +#### Keys ignored in scope 2:.:.:kernel.pro:<TRUE>: +# OTHER_FILES = "quiview_textinput.mm" "quiview_accessibility.mm" +# PLUGIN_CLASS_NAME = "QIOSIntegrationPlugin" +# PLUGIN_TYPE = "platforms" +# _LOADED = "qt_plugin" + +## Scopes: +##################################################################### + +#### Keys ignored in scope 3:.:.:kernel.pro:QT_FEATURE_shared: +# CONFIG = "static" + +extend_target(qios CONDITION NOT APPLE_TVOS + SOURCES + qiosclipboard.h qiosclipboard.mm + qiosfiledialog.h qiosfiledialog.mm + qiosmenu.h qiosmenu.mm + qiosmessagedialog.h qiosmessagedialog.mm + qiostextinputoverlay.h qiostextinputoverlay.mm + PUBLIC_LIBRARIES + ${FWAssetsLibrary} +) + +#### Keys ignored in scope 5:.:.:kernel.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(optional) diff --git a/src/plugins/platforms/ios/optional/CMakeLists.txt b/src/plugins/platforms/ios/optional/CMakeLists.txt new file mode 100644 index 0000000000..a3807bee6c --- /dev/null +++ b/src/plugins/platforms/ios/optional/CMakeLists.txt @@ -0,0 +1,6 @@ +# Generated from optional.pro. + + +if(APPLE_IOS) + add_subdirectory(nsphotolibrarysupport) +endif() diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/CMakeLists.txt b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/CMakeLists.txt new file mode 100644 index 0000000000..5adac3cabb --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/CMakeLists.txt @@ -0,0 +1,30 @@ +# Generated from nsphotolibrarysupport.pro. + +##################################################################### +## qiosnsphotolibrarysupport Plugin: +##################################################################### + +add_qt_plugin(qiosnsphotolibrarysupport + TYPE platforms/darwin + CLASS_NAME QIosOptionalPlugin_NSPhotoLibrary + SOURCES + plugin.mm + qiosfileengineassetslibrary.h qiosfileengineassetslibrary.mm + qiosfileenginefactory.h + qiosimagepickercontroller.h qiosimagepickercontroller.mm + LIBRARIES + Qt::GuiPrivate + PUBLIC_LIBRARIES + ${FWAssetsLibrary} + ${FWFoundation} + ${FWUIKit} + Qt::Core + Qt::Gui +) + +#### Keys ignored in scope 1:.:.:nsphotolibrarysupport.pro:<TRUE>: +# OTHER_FILES = "plugin.json" +# PLUGIN_EXTENDS = "-" + +## Scopes: +##################################################################### |