packages/Xorg/lib/qt4/Makefile
mirko db2027dd5e qt4: do not compile parts which require nptl support when no nptl support is available (as uClibc < 0.9.32)
git-svn-id: svn://svn.openwrt.org/openwrt/packages@22300 3c298f89-4303-0410-b956-a3cf2f4a3e73
2010-07-20 00:27:39 +00:00

608 lines
14 KiB
Makefile

#
# Copyright (C) 2008-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# 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.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)
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
SUBMENU:=framework
TITLE:=qt4
DEPENDS:=qt4
URL:=http://qt.nokia.com/
endef
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
endef
define Package/qt4-gui
$(call Package/qt4/Default)
#DEPENDS+=+FEATURE_drawing-backend_DirectFB:directfb +libpng +libtiff +libjpeg +libfreetype
DEPENDS+=+libpng +libtiff +libjpeg +libfreetype +qt4-network
TITLE+=(gui)
endef
define Package/qt4-demos
$(call Package/qt4/Default)
TITLE+=(demos)
DEPENDS+=+qt4-gui
endef
define Package/qt4-examples
$(call Package/qt4/Default)
TITLE+=(examples)
DEPENDS+=+qt4-gui
endef
define Package/qt4-network
$(call Package/qt4/Default)
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)
#endef
#define Package/qt4-audio-backend
# $(call Package/qt4/Default)
# TITLE+=(audio-backend)
#endef
define Package/qt4-phonon
$(call Package/qt4/Default)
TITLE+=(phonon)
DEPENDS+=+qt4-gui +qt4-xml +qt4-dbus +qt4-network
endef
#define Package/qt4-phonon-backend
# $(call Package/qt4/Default)
# TITLE+=(phonon-backend)
#endef
define Package/qt4-svg
$(call Package/qt4/Default)
TITLE+=(svg)
#DEPENDS+=+qt4-gui @BROKEN
DEPENDS+=+qt4-gui +qt4-network
endef
define Package/qt4-webkit
$(call Package/qt4/Default)
TITLE+=(webkit)
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||@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 +qt4-gui +qt4-network
endef
#define Package/qt4-accessibility
# $(call Package/qt4/Default)
# TITLE+=(accessibility)
#endef
#define Package/qt4-javascript-jit
# $(call Package/qt4/Default)
# TITLE+=(javascript-jit)
#endef
#define Package/qt4-cups
# $(call Package/qt4/Default)
# TITLE+=(cups)
#endef
define Package/qt4-dbus
$(call Package/qt4/Default)
TITLE+=(dbus)
DEPENDS+=+libdbus +qt4-xml
endef
#define Package/qt4-gtkstyle
# $(call Package/qt4/Default)
# TITLE+=(gtkstyle)
#endef
#define Package/qt4-glib
# $(call Package/qt4/Default)
# TITLE+=(glib)
#endef
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
TARGET_CFLAGS+="-I$(STAGING_DIR)/usr/include/freetype2 -I$(PKG_BUILD_DIR)/include"
define Build/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
( \
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 \
-prefix $(CONFIGURE_PREFIX) \
-bindir $(CONFIGURE_PREFIX)/bin \
-libdir $(CONFIGURE_PREFIX)/lib \
-datadir $(CONFIGURE_PREFIX)/share/Qt \
-plugindir $(CONFIGURE_PREFIX)/lib/Qt/plugins \
-demosdir $(CONFIGURE_PREFIX)/share/Qt/demos \
-examplesdir $(CONFIGURE_PREFIX)/share/Qt/examples \
-sysconfdir /etc/Qt \
-no-rpath \
-force-pkg-config \
-nomake tools \
-make demos \
-make examples \
-nomake docs \
-nomake translations \
-embedded openwrt \
-platform linux-g++ \
-release \
-opensource \
-no-mmx \
-no-3dnow \
-no-sse \
-no-sse2 \
-system-zlib \
-system-libtiff \
-system-libpng \
-system-libjpeg \
-system-freetype \
-system-sqlite \
-plugin-sql-sqlite \
-plugin-sql-mysql \
-no-decoration-styled \
-no-decoration-windows \
-no-decoration-default \
-verbose \
-no-multimedia \
-no-audio-backend \
-phonon \
-no-phonon-backend \
-svg \
-$(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 \
-no-cups \
-no-iconv \
-dbus \
-no-gtkstyle \
-no-nas-sound \
-no-opengl \
-no-openvg \
-no-sm \
-no-xshape \
-no-xsync \
-no-xinerama \
-no-xcursor \
-no-xfixes \
-no-xrandr \
-no-xrender \
-no-mitshm \
-no-fontconfig \
-no-xinput \
-no-xkb \
-no-glib \
-qt3support \
-qt-gfx-directfb \
-qt-gfx-linuxfb \
-no-gfx-multiscreen \
)
endef
define Build/Compile
# just passing <make install> results in not building 3rdparty/webkit/JavaScriptCore
$(MAKE) -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)/usr/share/mkspecs \
$(1)/usr/lib/pkgconfig \
$(1)/usr/lib \
$(1)/usr/include \
$(1)/usr/lib/Qt/plugins
$(CP) \
$(PKG_INSTALL_DIR)/usr/share/Qt/mkspecs/* \
$(1)/usr/share/mkspecs/
$(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
$(1)/usr/lib/pkgconfig/
$(CP) \
$(PKG_INSTALL_DIR)/usr/include/* \
$(1)/usr/include/
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/*.so* \
$(1)/usr/lib/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/* \
# $(1)/usr/lib/Qt/plugins/
endef
define Package/qt4/install
$(INSTALL_DIR) \
$(1)/usr/lib \
$(1)/usr/lib/Qt/plugins
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtCore.so* \
$(1)/usr/lib/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/codecs/*.so \
# $(1)/usr/lib/Qt/plugins/codecs/
endef
define Package/qt4-gui/install
$(INSTALL_DIR) \
$(1)/usr/lib \
$(1)/usr/lib/Qt/plugins
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtGui.so* \
$(1)/usr/lib/
#HACK: Qt4 requires having truetype fonts stored in /usr/lib/fonts - no subdirectories allowed, so use the dejavue set by default
ln -s \
/usr/share/fonts/ttf-dejavu \
$(1)/usr/lib/fonts
# we use the dejavue font package instead
#$(INSTALL_DATA) \
# $(PKG_INSTALL_DIR)/usr/lib/fonts/*.ttf \
# $(1)/usr/lib/fonts/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/accessible \
# $(1)/usr/lib/Qt/plugins/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/imageformats \
# $(1)/usr/lib/Qt/plugins/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/inputmethods \
# $(1)/usr/lib/Qt/plugins/
endef
define Package/qt4-demos/install
$(INSTALL_DIR) \
$(1)/usr/share/Qt
$(CP) \
$(PKG_INSTALL_DIR)/usr/share/Qt/demos \
$(1)/usr/share/Qt/
$(FIND) \
$(1) \
-name "*.cpp" -o \
-name "*.h" -o \
-name "*.pro" \
| $(XARGS) rm
endef
define Package/qt4-examples/install
$(INSTALL_DIR) \
$(1)/usr/share/Qt
$(CP) \
$(PKG_INSTALL_DIR)/usr/share/Qt/examples \
$(1)/usr/share/Qt/
$(FIND) \
$(1) \
-name "*.cpp" -o \
-name "*.h" -o \
-name "*.pro" \
| $(XARGS) rm
endef
define Package/qt4-network/install
$(INSTALL_DIR) \
$(1)/usr/lib
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtNetwork.so* \
$(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
#
# $(CP) \
# $(PKG_INSTALL_DIR)/usr/bin/examples/* \
# $(1)/usr/bin/
#endef
define Package/qt4-phonon/install
$(INSTALL_DIR) \
$(1)/usr/lib
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libphonon.so* \
$(1)/usr/lib/
endef
define Package/qt4-svg/install
$(INSTALL_DIR) \
$(1)/usr/lib \
$(1)/usr/lib/Qt/plugins
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtSvg.so* \
$(1)/usr/lib/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/iconengines \
# $(1)/usr/lib/Qt/plugins/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/imageformats \
# $(1)/usr/lib/Qt/plugins/
endef
define Package/qt4-webkit/install
$(INSTALL_DIR) \
$(1)/usr/lib \
$(1)/usr/lib/Qt/plugins
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtWebKit.so* \
$(1)/usr/lib/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/designer \
# $(1)/usr/lib/Qt/plugins/
endef
define Package/qt4-script/install
$(INSTALL_DIR) \
$(1)/usr/lib \
$(1)/usr/lib/Qt/plugins
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtScript.so* \
$(1)/usr/lib/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/script \
# $(1)/usr/lib/Qt/plugins/
endef
define Package/qt4-scripttools/install
$(INSTALL_DIR) \
$(1)/usr/lib
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtScriptTools.so* \
$(1)/usr/lib/
endef
define Package/qt4-dbus/install
$(INSTALL_DIR) \
$(1)/usr/lib
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQtDBus.so* \
$(1)/usr/lib/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/bin/qdbus \
# $(1)/usr/bin/
endef
define Package/qt4-qt3-support/install
$(INSTALL_DIR) \
$(1)/usr/lib \
$(1)/usr/lib/Qt/plugins
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libQt3Support.so* \
$(1)/usr/lib/
#$(CP) \
# $(PKG_INSTALL_DIR)/usr/lib/Qt/plugins/accessible \
# $(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
$(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-phonon-backend))
$(eval $(call BuildPackage,qt4-svg))
$(eval $(call BuildPackage,qt4-webkit))
$(eval $(call BuildPackage,qt4-script))
$(eval $(call BuildPackage,qt4-scripttools))
#$(eval $(call BuildPackage,qt4-accessibility))
#$(eval $(call BuildPackage,qt4-javascript-jit))
#$(eval $(call BuildPackage,qt4-cups))
$(eval $(call BuildPackage,qt4-dbus))
#$(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))