#
# TODO:
-# - handle software which uses qmake in a more generic way (move functionality / generic qmake-config into buildroot)
-# - use generic qmake, moc, etc. executables since building them within the qt stack will get redundant and annyoing when other sw will need them as well
# - test/add X11/xcb support
# - handle plugins in a granular way (find out which packages should provide which plugins)
include $(TOPDIR)/rules.mk
PKG_NAME:=qt4
-PKG_VERSION:=4.6.2
+PKG_VERSION:=4.7.0-beta2
PKG_RELEASE:=1
PKG_SOURCE:=qt-everywhere-opensource-src-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.qt.nokia.com/qt/source
PKG_BUILD_DIR=$(BUILD_DIR)/qt-everywhere-opensource-src-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
+# this should be moved to a more generic place later, as other packages are configured different as well depending on available nptl support
+ifeq ($(CONFIG_USE_GLIBC),y)
+ NPTL:=y
+endif
+ifeq ($(CONFIG_USE_EGLIBC),y)
+ NPTL:=y
+endif
+ifeq ($(CONFIG_UCLIBC_VERSION_0_9_32),y)
+ NPTL:=y
+endif
+
define Package/qt4/Default
SECTION:=xorg-framework
CATEGORY:=Xorg
define Package/qt4
$(call Package/qt4/Default)
- DEPENDS:=@FEATURE_drawing-backend_DirectFB +FEATURE_drawing-backend_DirectFB:DirectFB +zlib +libstdcpp +libsqlite3 # require directfb for now, as other systems (libX11, xcb) are untested
+ DEPENDS:=@FEATURE_drawing-backend_DirectFB +FEATURE_drawing-backend_DirectFB:directfb +zlib +libstdcpp +libsqlite3 +tslib # require directfb for now, as other systems (libX11, xcb) are untested
endef
define Package/qt4-gui
$(call Package/qt4/Default)
- #DEPENDS+=+FEATURE_drawing-backend_DirectFB:DirectFB +libpng +libtiff +libjpeg +libfreetype
- DEPENDS+=+libpng +libtiff +libjpeg +libfreetype
+ #DEPENDS+=+FEATURE_drawing-backend_DirectFB:directfb +libpng +libtiff +libjpeg +libfreetype
+ DEPENDS+=+libpng +libtiff +libjpeg +libfreetype +qt4-network
TITLE+=(gui)
endef
TITLE+=(network)
endef
+define Package/qt4-sqlite
+ $(call Package/qt4/Default)
+ TITLE+=(sqlite)
+ DEPENDS+=+libsqlite3
+endef
+
+define Package/qt4-mysql
+ $(call Package/qt4/Default)
+ TITLE+=(mysql)
+ DEPENDS+=+libmysqlclient
+endef
+
#define Package/qt4-multimedia
# $(call Package/qt4/Default)
# TITLE+=(multimedia)
define Package/qt4-phonon
$(call Package/qt4/Default)
TITLE+=(phonon)
- DEPENDS+=+qt4-gui
+ DEPENDS+=+qt4-gui +qt4-xml +qt4-dbus +qt4-network
endef
#define Package/qt4-phonon-backend
$(call Package/qt4/Default)
TITLE+=(svg)
#DEPENDS+=+qt4-gui @BROKEN
- DEPENDS+=+qt4-gui
+ DEPENDS+=+qt4-gui +qt4-network
endef
define Package/qt4-webkit
$(call Package/qt4/Default)
TITLE+=(webkit)
- DEPENDS+=@USE_GLIBC||@USE_EGLIBC # until we do not have nptl-support within uclibc javascriptcore will fail to link against uclibc
+ DEPENDS+=@USE_GLIBC||@USE_EGLIBC||@UCLIBC_VERSION_0_9_32 +libsqlite3 +qt4-phonon +qt4-dbus +qt4-xml +qt4-gui +qt4-network # versions of uclibc prior 0.9.32 do not have nptl support
endef
define Package/qt4-script
$(call Package/qt4/Default)
TITLE+=(script)
- DEPENDS+=@USE_GLIBC||@USE_EGLIBC # until we do not have nptl-support within uclibc, javascriptcore will fail to link against uclibc
+ DEPENDS+=@USE_GLIBC||@USE_EGLIBC||@UCLIBC_VERSION_0_9_32 # versions of uclibc prior 0.9.32 do not have nptl support
endef
define Package/qt4-scripttools
$(call Package/qt4/Default)
TITLE+=(scripttools)
- DEPENDS+=+qt4-script
+ DEPENDS+=+qt4-script +qt4-gui +qt4-network
endef
#define Package/qt4-accessibility
define Package/qt4-dbus
$(call Package/qt4/Default)
TITLE+=(dbus)
- DEPENDS+=+libdbus
+ DEPENDS+=+libdbus +qt4-xml
endef
#define Package/qt4-gtkstyle
define Package/qt4-qt3support
$(call Package/qt4/Default)
TITLE+=(qt3support)
+ DEPENDS+=+qt4-gui +qt4-xml
+endef
+
+define Package/qt4-declarative
+ $(call Package/qt4/Default)
+ TITLE+=(declarative)
+ DEPENDS+=+qt4-script +qt4-xml +qt4-gui +qt4-network
+endef
+
+define Package/qt4-xml
+ $(call Package/qt4/Default)
+ TITLE+=(xml)
+endef
+
+###
+define Package/qt4-drivers-mouse/Default
+ $(call Package/qt4/Default)
+ TITLE+=mousedrivers
+endef
+
+define Package/qt4-drivers-mouse-tpmousedriver
+ $(call Package/qt4-drivers-mouse/Default)
+ TITLE+=tpmousedriver
+endef
+
+define Package/qt4-drivers-mouse-pcmousedriver
+ $(call Package/qt4-drivers-mouse/Default)
+ TITLE+=pcmousedriver
+endef
+
+define Package/qt4-drivers-mouse-tslibmousedriver
+ $(call Package/qt4-drivers-mouse/Default)
+ TITLE+=tslibmousedriver
endef
-TARGET_CFLAGS+="-I$(STAGING_DIR)/usr/include/freetype2"
+###
+define Package/qt4-drivers-gfx/Default
+ $(call Package/qt4/Default)
+ TITLE+=gfxdrivers
+endef
+
+define Package/qt4-drivers-gfx-directfb
+ $(call Package/qt4-drivers-gfx/Default)
+ TITLE+=directfb
+endef
+
+define Package/qt4-drivers-gfx-linuxfb
+ $(call Package/qt4-drivers-gfx/Default)
+ TITLE+=linuxfb
+endef
+
+###
+define Package/qt4-drivers-kbd/Default
+ $(call Package/qt4/Default)
+ TITLE+=kbddrivers
+endef
+
+define Package/qt4-drivers-kbd-linuxinput
+ $(call Package/qt4-drivers-kbd/Default)
+ TITLE+=linuxinput
+endef
+
+
+TARGET_INCDIRS+=$(STAGING_DIR)/include $(STAGING_DIR)/usr/include $(TOOLCHAIN_DIR)/include $(TOOLCHAIN_DIR)/usr/include
+TARGET_LIBDIRS+=$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib $(TOOLCHAIN_DIR)/lib $(TOOLCHAIN_DIR)/usr/lib
+TARGET_LDFLAGS+=-Wl,-rpath-link=$(STAGING_DIR)/usr/lib,-rpath-link=$(PKG_BUILD_DIR)/lib
+TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include/freetype2 -I$(PKG_BUILD_DIR)/include
define Build/Configure
- # demos/examples: which demos are going to be built depends on which features are going to to be compiled into qt
- # svg: svg support always compiled in, as once qt is built without, strange include errors occur when we're going to compile qt4-svg afterwards
- # linuxfb/directfb: since directfb is not much overhead compared to plain framebuffer, force using directfb
- # do not use fontconfig as it doesn't work anyway for qte
- ( \
- cd $(PKG_BUILD_DIR); \
- QPATH='mkspecs/qws/linux-openwrt-g++' ; \
- mkdir $$$$QPATH ; \
- echo '#include "../../linux-g++/qplatformdefs.h"' \
- >> $$$$QPATH/qplatformdefs.h ; \
- echo 'include(../../common/g++.conf)' \
- >> $$$$QPATH/qmake.conf ; \
- echo 'include(../../common/linux.conf)' \
- >> $$$$QPATH/qmake.conf ; \
- echo 'include(../../common/qws.conf)' \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_CC = $(TARGET_CC)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_CXX = $(TARGET_CXX)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_AR = $(TARGET_CROSS)ar cqs" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_OBJCOPY = $(TARGET_CROSS)objcopy" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_RANLIB = $(TARGET_CROSS)ranlib" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_CFLAGS = $(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_CXXFLAGS = $(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_LINK = $(TARGET_CXX)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_LINK_SHLIB = $(TARGET_CXX)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_LINK_C = $(TARGET_CC)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_LINK_C_SHLIB = $(TARGET_CC)" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_LFLAGS = -L$(PKG_BUILD_DIR)/lib $(TARGET_LDFLAGS) -Wl,-rpath-link=$(STAGING_DIR)/usr/lib" \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_STRIP = : " \
- >> $$$$QPATH/qmake.conf ; \
- echo "QMAKE_STRIPFLAGS_LIB = " \
- >> $$$$QPATH/qmake.conf ; \
- echo 'load(qt_config)' \
- >> $$$$QPATH/qmake.conf ; \
- echo yes | ./configure \
+ # NOTES:
+ # demos/examples: which demos are going to be built depends on which features are going to to be compiled into qt
+ # svg: always compile in svg-support, as once qt is built without, strange include errors occur when we're going to compile qt4-svg afterwards
+ # linuxfb/directfb: since directfb is not much overhead compared to plain framebuffer, force using directfb
+ # do not use fontconfig as it doesn't work anyway for qte
+ # bindir: bindir is where the host tools (qmake, moc, rcc, uic) will get installed into - they are just used on the host and not goig to be packaged
+ mkdir -p $(PKG_BUILD_DIR)/mkspecs/qws/linux-openwrt-g++
+ cp -a ./files/{qmake.conf,qplatformdefs.h} $(PKG_BUILD_DIR)/mkspecs/qws/linux-openwrt-g++/
+ ( cd $(PKG_BUILD_DIR) ; \
+ TARGET_CC="$(TARGET_CROSS)gcc" \
+ TARGET_CXX="$(TARGET_CROSS)g++" \
+ TARGET_AR="$(TARGET_CROSS)ar cqs" \
+ TARGET_OBJCOPY="$(TARGET_CROSS)objcopy" \
+ TARGET_RANLIB="$(TARGET_CROSS)ranlib" \
+ TARGET_CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
+ TARGET_CXXFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
+ TARGET_LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
+ TARGET_INCDIRS="$(TARGET_INCDIRS)" \
+ TARGET_LIBDIRS="$(TARGET_LIBDIRS)" \
+ STAGING_DIR="$(STAGING_DIR)" \
+ STAGING_DIR_HOST="$(STAGING_DIR)/../host" \
+ ./configure \
-prefix $(CONFIGURE_PREFIX) \
-bindir $(CONFIGURE_PREFIX)/bin \
-libdir $(CONFIGURE_PREFIX)/lib \
-no-rpath \
-force-pkg-config \
-nomake tools \
- -$(if $(CONFIG_PACKAGE_qt4-demos),make demos,nomake demos) \
- -$(if $(CONFIG_PACKAGE_qt4-examples),make examples,nomake examples) \
+ -make demos \
+ -make examples \
-nomake docs \
-nomake translations \
- -embedded openwrt \
+ -xplatform qws/linux-openwrt-g++ \
-platform linux-g++ \
+ -embedded \
-release \
+ -confirm-license \
-opensource \
-no-mmx \
-no-3dnow \
-system-libjpeg \
-system-freetype \
-system-sqlite \
+ -plugin-sql-sqlite \
+ -plugin-sql-mysql \
-no-decoration-styled \
-no-decoration-windows \
-no-decoration-default \
-verbose \
- -$(if $(CONFIG_PACKAGE_qt4-multimedia),multimedia,no-multimedia) \
- -$(if $(CONFIG_PACKAGE_qt4-audio-backend),audio-backend,no-audio-backend) \
- -$(if $(CONFIG_PACKAGE_qt4-phonon),phonon,no-phonon) \
- -$(if $(CONFIG_PACKAGE_qt4-phonon-backend),phonon-backend,no-phonon-backend) \
+ -no-multimedia \
+ -no-audio-backend \
+ -phonon \
+ -no-phonon-backend \
-svg \
- -$(if $(CONFIG_PACKAGE_qt4-webkit),webkit,no-webkit) \
- -$(if $(CONFIG_PACKAGE_qt4-javascript-jit),javascript-jit,no-javascript-jit) \
- -$(if $(CONFIG_PACKAGE_qt4-script),script,no-script) \
- -$(if $(CONFIG_PACKAGE_qt4-scripttools),scripttools,no-scripttools) \
- -$(if $(CONFIG_PACKAGE_qt4-accessibility),accessibility,no-accessibility) \
- -no-declarative \
+ $(if $(NPTL),-webkit,-no-webkit) \
+ -no-javascript-jit \
+ $(if $(NPTL),-script,-no-script) \
+ $(if $(NPTL),-scripttools,-no-scripttools) \
+ -no-accessibility \
+ $(if $(NPTL),-declarative,-no-declarative) \
-no-openssl \
-no-nis \
- -$(if $(CONFIG_PACKAGE_qt4-cups),cups,no-cups) \
+ -no-cups \
-no-iconv \
- -$(if $(CONFIG_PACKAGE_qt4-dbus),dbus,no-dbus) \
- -$(if $(CONFIG_PACKAGE_qt4-gtkstyle),gtkstyle,no-gtkstyle) \
+ -dbus \
+ -no-gtkstyle \
-no-nas-sound \
-no-opengl \
-no-openvg \
-no-fontconfig \
-no-xinput \
-no-xkb \
- -$(if $(CONFIG_PACKAGE_qt4-glib),glib,no-glib) \
- -$(if $(CONFIG_PACKAGE_qt4-qt3support),qt3support,no-qt3support) \
- -$(if $(CONFIG_FEATURE_drawing-backend_DirectFB),qt-gfx-directfb,) \
- -qt-gfx-linuxfb \
+ -no-glib \
+ -qt3support \
+ -no-gfx-transformed \
+ -no-gfx-qvfb \
+ -no-gfx-vnc \
-no-gfx-multiscreen \
+ -no-gfx-qnx \
+ -plugin-gfx-directfb \
+ -plugin-gfx-linuxfb \
+ -no-mouse-qvfb \
+ -no-mouse-qnx \
+ -qt-mouse-linuxinput \
+ -plugin-mouse-linuxtp \
+ -plugin-mouse-pc \
+ -plugin-mouse-tslib \
+ -no-kbd-qvfb \
+ -no-kbd-qnx \
+ -qt-kbd-tty \
+ -plugin-kbd-linuxinput \
)
endef
define Build/Compile
+ # just passing <make install> results in not building 3rdparty/webkit/JavaScriptCore
+ # unfortunately in this particular case, <make> makes further <qmake> calls, therewith
+ # uses the qmake.conf which needs get the cross-compiling vars passed once again
+ TARGET_CC="$(TARGET_CROSS)gcc" \
+ TARGET_CXX="$(TARGET_CROSS)g++" \
+ TARGET_AR="$(TARGET_CROSS)ar cqs" \
+ TARGET_OBJCOPY="$(TARGET_CROSS)objcopy" \
+ TARGET_RANLIB="$(TARGET_CROSS)ranlib" \
+ TARGET_CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
+ TARGET_CXXFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
+ TARGET_LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
+ TARGET_INCDIRS="$(TARGET_INCDIRS)" \
+ TARGET_LIBDIRS="$(TARGET_LIBDIRS)" \
+ STAGING_DIR="$(STAGING_DIR)" \
+ STAGING_DIR_HOST="$(STAGING_DIR)/../host" \
+ $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)
INSTALL_ROOT=$(PKG_INSTALL_DIR) \
$(MAKE) -C $(PKG_BUILD_DIR) install
endef
define Build/InstallDev
$(INSTALL_DIR) \
+ $(STAGING_DIR_HOST)/bin
+
+ # host tools (qmake, moc, rcc, uic)
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/bin/{qmake,moc,rcc,uic} \
+ $(STAGING_DIR_HOST)/bin/
+
+ $(INSTALL_DIR) \
+ $(1)/mk \
$(1)/usr/share/mkspecs \
$(1)/usr/lib/pkgconfig \
$(1)/usr/lib \
$(1)/usr/include \
$(1)/usr/lib/Qt/plugins
+ $(CP) \
+ ./files/qmake.mk \
+ $(1)/mk/
+
$(CP) \
$(PKG_INSTALL_DIR)/usr/share/Qt/mkspecs/* \
$(1)/usr/share/mkspecs/
$(1)/usr/lib/
endef
+define Package/qt4-sqlite/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/sqldrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/libQtSql.so* \
+ $(1)/usr/lib/
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/sqldrivers/libqsqlite.so \
+ $(1)/usr/lib/Qt/plugins/sqldrivers/
+endef
+
+define Package/qt4-mysql/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/sqldrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/libQtSql.so* \
+ $(1)/usr/lib/
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/sqldrivers/libqsqlmysql.so \
+ $(1)/usr/lib/Qt/plugins/sqldrivers/
+endef
+
#define Package/qt4-multimedia/install
# $(INSTALL_DIR) \
# $(1)/usr/bin
# $(1)/usr/lib/Qt/plugins/
endef
+define Package/qt4-declarative/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/libQtDeclarative.so* \
+ $(1)/usr/lib/
+endef
+
+define Package/qt4-xml/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/libQtXml.so* \
+ $(1)/usr/lib/
+endef
+
+# plugins
+# mouse drivers
+define Package/qt4-drivers-mouse-tpmousedriver/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/mousedrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/mousedrivers/libqlinuxtpmousedriver.so \
+ $(1)/usr/lib/Qt/plugins/mousedrivers/
+endef
+
+define Package/qt4-drivers-mouse-pcmousedriver/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/mousedrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/mousedrivers/libqpcmousedriver.so \
+ $(1)/usr/lib/Qt/plugins/mousedrivers/
+endef
+
+define Package/qt4-drivers-mouse-tslibmousedriver/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/mousedrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/mousedrivers/libqtslibmousedriver.so \
+ $(1)/usr/lib/Qt/plugins/mousedrivers/
+endef
+
+# graphics drivers
+define Package/qt4-drivers-gfx-directfb/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/gfxdrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/gfxdrivers/libqdirectfbscreen.so \
+ $(1)/usr/lib/Qt/plugins/gfxdrivers/
+endef
+
+define Package/qt4-drivers-gfx-linuxfb/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/gfxdrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/gfxdrivers/libqscreenlinuxfb.so \
+ $(1)/usr/lib/Qt/plugins/gfxdrivers/
+endef
+
+# keyboard drivers
+define Package/qt4-drivers-kbd-linuxinput/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/Qt/plugins/kbddrivers
+
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/kbddrivers/libqlinuxinputkbddriver.so \
+ $(1)/usr/lib/Qt/plugins/kbddrivers/
+endef
+
+
+
+
$(eval $(call BuildPackage,qt4))
$(eval $(call BuildPackage,qt4-gui))
$(eval $(call BuildPackage,qt4-demos))
$(eval $(call BuildPackage,qt4-examples))
$(eval $(call BuildPackage,qt4-network))
+$(eval $(call BuildPackage,qt4-sqlite))
+$(eval $(call BuildPackage,qt4-mysql))
#$(eval $(call BuildPackage,qt4-multimedia))
#$(eval $(call BuildPackage,qt4-audio-backend))
$(eval $(call BuildPackage,qt4-phonon))
#$(eval $(call BuildPackage,qt4-gtkstyle))
#$(eval $(call BuildPackage,qt4-glib))
$(eval $(call BuildPackage,qt4-qt3support))
+$(eval $(call BuildPackage,qt4-declarative))
+$(eval $(call BuildPackage,qt4-xml))
+
+$(eval $(call BuildPackage,qt4-drivers-mouse-tpmousedriver))
+$(eval $(call BuildPackage,qt4-drivers-mouse-pcmousedriver))
+$(eval $(call BuildPackage,qt4-drivers-mouse-tslibmousedriver))
+
+$(eval $(call BuildPackage,qt4-drivers-gfx-directfb))
+$(eval $(call BuildPackage,qt4-drivers-gfx-linuxfb))
+
+$(eval $(call BuildPackage,qt4-drivers-kbd-linuxinput))