# # Copyright (C) 2015 OpenWrt.org # Author: Mirko Vogt # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # # TODO / known bugs: # - plugins don't work when sstrip is used for stripping # - only framebuffer (linuxfb) support for now, XBC/DirectFB to come - thus no GL thus no qtquick2 / QML2, as it has a hard dependency on GL # - host_build functionality seems to be broken - qmake doesn't switch to the host toolchain (linux-g++) when host_build gets invoked include $(TOPDIR)/rules.mk PKG_NAME:=qt5base PKG_VERSION:=5.4.2 PKG_RELEASE:=1 PKG_MD5SUM:=67a95eec79ffc4a14f516ad6f3d24c96 PKG_SYS_NAME:=qtbase-opensource-src-$(PKG_VERSION) PKG_SOURCE:=$(PKG_SYS_NAME).tar.xz PKG_SOURCE_URL:=http://download.qt-project.org/official_releases/qt/$(basename $(PKG_VERSION))/$(PKG_VERSION)/submodules PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_SYS_NAME) PKG_BUILD_PARALLEL:=1 PKG_BUILD_DEPENDS:=librpc PKG_INSTALL:=1 PKG_USE_MIPS16:=0 include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/nls.mk include ./files/qmake.mk PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_qt5base-plugin-sqldrivers-sqlite \ CONFIG_PACKAGE_qt5base-plugin-imageformats-jpeg \ CONFIG_PACKAGE_qt5base-network \ CONFIG_PACKAGE_qt5base-gui \ CONFIG_PACKAGE_qt5base-plugin-imageformats-gif \ CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb \ CONFIG_PACKAGE_qt5base-plugin-platforms-minimal define Package/qt5base/Default SECTION:=video-frameworks CATEGORY:=Video SUBMENU:=Frameworks and Toolkits TITLE:=Qt5base DEPENDS:=qt5base URL:=http://qt.io MAINTAINER:=Mirko Vogt endef define Package/qt5base $(call Package/qt5base/Default) DEPENDS:= MENU:=1 endef define Package/qt5base-concurrent $(call Package/qt5base/Default) TITLE+=concurrent DEPENDS+=+qt5base-core endef define Package/qt5base-core $(call Package/qt5base/Default) TITLE+=core DEPENDS+=+libpthread +zlib +libpcre16 +libstdcpp +librt endef define Package/qt5base-gui $(call Package/qt5base/Default) TITLE+=gui DEPENDS+=+qt5base-core +libpng endef define Package/qt5base-network $(call Package/qt5base/Default) TITLE+=network DEPENDS+=+qt5base-core +libopenssl endef # seems to be only present as static lib # define Package/qt5base-paltformSupport # $(call Package/qt5base/Default) # DEPENDS+= # endef define Package/qt5base-printSupport $(call Package/qt5base/Default) TITLE+=print support DEPENDS+=+qt5base-core +qt5base-gui +qt5base-widgets endef define Package/qt5base-sql $(call Package/qt5base/Default) TITLE+=sql DEPENDS+=+qt5base-core endef define Package/qt5base-test $(call Package/qt5base/Default) TITLE+=test DEPENDS+=+qt5base-core endef define Package/qt5base-widgets $(call Package/qt5base/Default) TITLE+=widgets DEPENDS+=+qt5base-core +qt5base-gui endef define Package/qt5base-xml $(call Package/qt5base/Default) TITLE+=xml DEPENDS+=+qt5base-core endef #### plugins ####### bearer define Package/qt5base-plugin-bearer-generic $(call Package/qt5base/Default) TITLE+=bearer (plugin) DEPENDS+=+qt5base-core +qt5base-network endef ####### generic / input define Package/qt5base-plugin-input-evdevkeyboard $(call Package/qt5base/Default) TITLE+=evdev keyboard (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig endef define Package/qt5base-plugin-input-evdevmouse $(call Package/qt5base/Default) TITLE+=evdev mouse (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig endef define Package/qt5base-plugin-input-evdevtablet $(call Package/qt5base/Default) TITLE+=evdev tablet (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig endef define Package/qt5base-plugin-input-evdevtouch $(call Package/qt5base/Default) TITLE+=evdev touch (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig endef ####### imageformats define Package/qt5base-plugin-imageformats-gif $(call Package/qt5base/Default) TITLE+=imageformat gif (plugin) DEPENDS+=+qt5base-core +qt5base-gui endef define Package/qt5base-plugin-imageformats-ico $(call Package/qt5base/Default) TITLE+=imageformat ico (plugin) DEPENDS+=+qt5base-core +qt5base-gui endef define Package/qt5base-plugin-imageformats-jpeg $(call Package/qt5base/Default) TITLE+=imageformat jpeg (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libjpeg endef ####### platforms define Package/qt5base-plugin-platforms-linuxfb $(call Package/qt5base/Default) TITLE+=platform linuxfb (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig endef define Package/qt5base-plugin-platforms-minimal $(call Package/qt5base/Default) TITLE+=platform minimal (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig endef define Package/qt5base-plugin-platforms-offscreen $(call Package/qt5base/Default) TITLE+=platform offscreen (plugin) DEPENDS+=+qt5base-core +qt5base-gui +libfreetype +fontconfig endef ###### sql define Package/qt5base-plugin-sqldrivers-sqlite $(call Package/qt5base/Default) TITLE+=sqldriver sqlite (plugin) DEPENDS+=+qt5base-core +qt5base-sql +libsqlite3 endef define Package/qt5base-examples $(call Package/qt5base/Default) TITLE+=examples DEPENDS+=\ +qt5base-core \ +qt5base-gui \ +qt5base-widgets \ +qt5base-network \ +qt5base-sql \ +qt5base-xml \ +qt5base-printSupport \ +qt5base-concurrent endef define Build/Prepare $(call Build/Prepare/Default) $(CP) \ ./files/mkspecs/linux-openwrt-g++ \ $(PKG_BUILD_DIR)/mkspecs/ endef define Build/Configure # CROSS/TARGET_* need to be passed to configure, in order to use cross-compiling tools to check for requirements. # Usually used variables such as CC/CXX/CFLAGS/CXXFLAGS/LDFLAGS would be used for compilation of host tools (qmake, moc, etc.), # hence we use the TARGET_* nomenclature. ( cd $(PKG_BUILD_DIR) ; \ TARGET_CROSS="$(TARGET_CROSS)" \ TARGET_CFLAGS="$(TARGET_CFLAGS)" \ TARGET_CXXFLAGS="$(TARGET_CFLAGS) $(TARGET_CXXFLAGS)" \ TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ ./configure \ -prefix $(QT_INSTALL_PREFIX) \ -extprefix $(QT_EXTPREFIX) \ -hostprefix $(QT_HOST_PREFIX) \ -bindir $(QT_INSTALL_BINS) \ -headerdir $(QT_INSTALL_HEADERS) \ -libdir $(QT_INSTALL_LIBS) \ -archdatadir $(QT_INSTALL_ARCHDATA) \ -plugindir $(QT_INSTALL_PLUGINS) \ -libexecdir $(QT_INSTALL_LIBEXECS) \ -importdir $(QT_INSTALL_IMPORTS) \ -qmldir $(QT_INSTALL_QML) \ -datadir $(QT_INSTALL_DATA) \ -docdir $(QT_INSTALL_DOCS) \ -translationdir $(QT_INSTALL_TRANSLATIONS) \ -sysconfdir $(QT_INSTALL_CONFIGURATION) \ -examplesdir $(QT_INSTALL_EXAMPLES) \ -testsdir $(QT_INSTALL_TESTS) \ -hostbindir $(QT_HOST_BINS) \ -hostlibdir $(QT_HOST_LIBS) \ -hostdatadir $(QT_HOST_DATA) \ -v \ -release \ -opensource \ -confirm-license \ -c++11 \ -shared \ -largefile \ -accessibility \ $(if $(CONFIG_PACKAGE_qt5base-plugin-sqldrivers-sqlite),-system-sqlite,-no-sql-sqlite2) \ -no-qml-debug \ -no-sse2 \ -no-sse3 \ -no-ssse3 \ -no-sse4.1 \ -no-sse4.2 \ -no-avx \ -no-avx2 \ $(if $(findstring -mdsp,$(TARGET_CFLAGS)),,-no-mips_dsp)\ $(if $(findstring -mdspr2,$(TARGET_CFLAGS)),,-no-mips_dspr2)\ -force-pkg-config \ -system-zlib \ -mtdev \ -no-journald \ $(if $(CONFIG_PACKAGE_qt5base-gui),-system-libpng,-no-libpng) \ $(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-jpeg),-system-libjpeg,-no-libjpeg) \ -system-freetype \ -no-harfbuzz \ $(if $(CONFIG_PACKAGE_qt5base-network),-openssl-linked,-no-openssl) \ -system-pcre \ -system-xcb \ -system-xkbcommon \ -no-xinput2 \ -no-xcb-xlib \ -no-glib \ -no-pulseaudio \ -alsa \ -no-gtkstyle \ -nomake tools \ -make examples \ $(if $(CONFIG_PACKAGE_qt5base-gui),-gui,-no-gui) \ $(if $(CONFIG_PACKAGE_qt5base-plugin-imageformats-gif),,-no-gif) \ -widgets \ -no-optimized-qmake \ -no-cups \ -iconv \ -evdev \ -no-icu \ -fontconfig \ -no-strip \ -no-pch \ -no-dbus \ -no-reduce-relocations \ -no-use-gold-linker \ -no-xcb \ -no-eglfs \ -no-directfb \ $(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-linuxfb),-linuxfb,-no-linuxfb) \ -no-kms \ $(if $(CONFIG_PACKAGE_qt5base-plugin-platforms-minimal),,-qpa minimal) \ -xplatform linux-openwrt-g++ \ -no-opengl \ -no-system-proxies \ -no-warnings-are-errors \ ) endef define Build/InstallDev $(INSTALL_DIR) \ $(STAGING_DIR)/host/mk $(CP) \ ./files/qmake.mk \ $(STAGING_DIR)/host/mk/ $(call Build/Install/HostFiles,$(1)) $(call Build/Install/Headers,$(1)) $(call Build/Install/Libs,$(1),*) endef define Package/qt5base-concurrent/install $(call Build/Install/Libs,$(1),libQt5Concurrent) endef define Package/qt5base-core/install $(call Build/Install/Libs,$(1),libQt5Core) endef define Package/qt5base-gui/install $(call Build/Install/Libs,$(1),libQt5Gui) endef define Package/qt5base-network/install $(call Build/Install/Libs,$(1),libQt5Network) endef define Package/qt5base-printSupport/install $(call Build/Install/Libs,$(1),libQt5PrintSupport) endef define Package/qt5base-sql/install $(call Build/Install/Libs,$(1),libQt5Sql) endef define Package/qt5base-test/install $(call Build/Install/Libs,$(1),libQt5Test) endef define Package/qt5base-widgets/install $(call Build/Install/Libs,$(1),libQt5Widgets) endef define Package/qt5base-xml/install $(call Build/Install/Libs,$(1),libQt5Xml) endef define Package/qt5base-plugin-bearer-generic/install $(call Build/Install/Plugins,$(1),bearer,libqgenericbearer) endef define Package/qt5base-plugin-input-evdevkeyboard/install $(call Build/Install/Plugins,$(1),generic,libqevdevkeyboardplugin) endef define Package/qt5base-plugin-input-evdevmouse/install $(call Build/Install/Plugins,$(1),generic,libqevdevmouseplugin) endef define Package/qt5base-plugin-input-evdevtablet/install $(call Build/Install/Plugins,$(1),generic,libqevdevtabletplugin) endef define Package/qt5base-plugin-input-evdevtouch/install $(call Build/Install/Plugins,$(1),generic,libqevdevtouchplugin) endef define Package/qt5base-plugin-imageformats-gif/install $(call Build/Install/Plugins,$(1),imageformats,libqgif) endef define Package/qt5base-plugin-imageformats-ico/install $(call Build/Install/Plugins,$(1),imageformats,libqico) endef define Package/qt5base-plugin-imageformats-jpeg/install $(call Build/Install/Plugins,$(1),imageformats,libqjpeg) endef define Package/qt5base-plugin-platforms-linuxfb/install $(call Build/Install/Plugins,$(1),platforms,libqlinuxfb) endef define Package/qt5base-plugin-platforms-minimal/install $(call Build/Install/Plugins,$(1),platforms,libqminimal) endef define Package/qt5base-plugin-platforms-offscreen/install $(call Build/Install/Plugins,$(1),platforms,libqoffscreen) endef define Package/qt5base-plugin-sqldrivers/install $(call Build/Install/Plugins,$(1),sqldrivers,libqsqlite) endef define Package/qt5base-examples/install $(call Build/Install/Examples,$(1)) endef $(eval $(call BuildPackage,qt5base)) $(eval $(call BuildPackage,qt5base-concurrent)) $(eval $(call BuildPackage,qt5base-core)) $(eval $(call BuildPackage,qt5base-gui)) $(eval $(call BuildPackage,qt5base-network)) $(eval $(call BuildPackage,qt5base-printSupport)) $(eval $(call BuildPackage,qt5base-sql)) $(eval $(call BuildPackage,qt5base-test)) $(eval $(call BuildPackage,qt5base-widgets)) $(eval $(call BuildPackage,qt5base-xml)) $(eval $(call BuildPackage,qt5base-plugin-bearer-generic)) $(eval $(call BuildPackage,qt5base-plugin-input-evdevkeyboard)) $(eval $(call BuildPackage,qt5base-plugin-input-evdevmouse)) $(eval $(call BuildPackage,qt5base-plugin-input-evdevtablet)) $(eval $(call BuildPackage,qt5base-plugin-input-evdevtouch)) $(eval $(call BuildPackage,qt5base-plugin-imageformats-gif)) $(eval $(call BuildPackage,qt5base-plugin-imageformats-ico)) $(eval $(call BuildPackage,qt5base-plugin-imageformats-jpeg)) $(eval $(call BuildPackage,qt5base-plugin-platforms-linuxfb)) $(eval $(call BuildPackage,qt5base-plugin-platforms-minimal)) $(eval $(call BuildPackage,qt5base-plugin-platforms-offscreen)) $(eval $(call BuildPackage,qt5base-plugin-sqldrivers-sqlite)) $(eval $(call BuildPackage,qt5base-examples))