Files
video/frameworks/qt5base/Makefile
Hauke Mehrtens f348883282 qt5base: fix nls support
Instead of hard coding the dependency to libiconv-full use the macros
provided by OpenWrt. In the gnu iconv library the second parameter of
iconv(), often called inbuf, is not const, but qt5 assumes that it is
in the gnu version of libiconv. If we make qt5 use the code for the
posix version of libiconv it does not add the -liconv link parameter.
This patch adds the -liconv link parameter.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2015-12-10 23:22:42 +01:00

453 lines
12 KiB
Makefile

#
# Copyright (C) 2015 OpenWrt.org
# Author: Mirko Vogt <mirko@openwrt.org>
# 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 <mirko@openwrt.org>
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 $(ICONV_DEPENDS)
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-sqlite) \
-no-sql-db2 \
-no-sql-ibase \
-no-sql-mysql \
-no-sql-oci \
-no-sql-odbc \
-no-sql-psql \
-no-sql-sqlite2 \
-no-sql-tds \
-no-qml-debug \
-no-nis \
-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 \
-no-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 \
$(if $(CONFIG_BUILD_NLS),-iconv,-no-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))