X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=cirros-testvm%2Fsrc-cirros%2Fbuildroot-2015.05%2Fpackage%2Fqt%2Fqt.mk;fp=cirros-testvm%2Fsrc-cirros%2Fbuildroot-2015.05%2Fpackage%2Fqt%2Fqt.mk;h=035ca3aacc10b57900589cbee1f0cec5d6765bf0;hb=b0a0f15dfaa205161a7fcb20cf1b8cd4948c2ef3;hp=0000000000000000000000000000000000000000;hpb=c6ac3cd55ee2da956195eee393b0882105dfad4e;p=packages%2Ftrusty%2Fcirros-testvm.git diff --git a/cirros-testvm/src-cirros/buildroot-2015.05/package/qt/qt.mk b/cirros-testvm/src-cirros/buildroot-2015.05/package/qt/qt.mk new file mode 100644 index 0000000..035ca3a --- /dev/null +++ b/cirros-testvm/src-cirros/buildroot-2015.05/package/qt/qt.mk @@ -0,0 +1,697 @@ +################################################################################ +# +# Qt Embedded for Linux +# +# This makefile was originally composed by Thomas Lundquist +# Later heavily modified by buildroot developers +# +# BTW, this uses alot of FPU calls and it's pretty slow if you use +# the kernels FPU emulation so it's better to choose soft float in the +# buildroot config (and uClibc.config of course, if you have your own.) +# +################################################################################ + +QT_VERSION_MAJOR = 4.8 +QT_VERSION = $(QT_VERSION_MAJOR).6 +QT_SOURCE = qt-everywhere-opensource-src-$(QT_VERSION).tar.gz +QT_SITE = http://download.qt-project.org/official_releases/qt/$(QT_VERSION_MAJOR)/$(QT_VERSION) +QT_DEPENDENCIES = host-pkgconf +QT_INSTALL_STAGING = YES + +QT_LICENSE = LGPLv2.1 with exceptions or GPLv3 +ifneq ($(BR2_PACKAGE_QT_LICENSE_APPROVED),y) +QT_LICENSE += or Digia Qt Commercial license +endif +QT_LICENSE_FILES = LICENSE.LGPL LGPL_EXCEPTION.txt LICENSE.GPL3 + +ifeq ($(BR2_PACKAGE_QT_LICENSE_APPROVED),y) +QT_CONFIGURE_OPTS += -opensource -confirm-license +endif + +QT_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_QT_CONFIG_FILE)) + +ifneq ($(QT_CONFIG_FILE),) +QT_CONFIGURE_OPTS += -qconfig buildroot +endif + +QT_CFLAGS = $(TARGET_CFLAGS) +QT_CXXFLAGS = $(TARGET_CXXFLAGS) +QT_LDFLAGS = $(TARGET_LDFLAGS) + +# Qt has some assembly function that are not present in thumb1 mode: +# Error: selected processor does not support Thumb mode `swp r3,r7,[r4]' +# so, we desactivate thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +QT_CFLAGS += -marm +QT_CXXFLAGS += -marm +endif + +ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y) +QT_CONFIGURE_OPTS += -qt3support +else +QT_CONFIGURE_OPTS += -no-qt3support +endif + +ifeq ($(BR2_PACKAGE_QT_DEMOS),y) +QT_CONFIGURE_OPTS += -demosdir $(TARGET_DIR)/usr/share/qt/demos +else +QT_CONFIGURE_OPTS += -nomake demos +endif +ifeq ($(BR2_PACKAGE_QT_EXAMPLES),y) +QT_CONFIGURE_OPTS += -examplesdir $(TARGET_DIR)/usr/share/qt/examples +else +QT_CONFIGURE_OPTS += -nomake examples +endif + +# ensure glib is built first if enabled for Qt's glib support +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +QT_CONFIGURE_OPTS += -glib +QT_DEPENDENCIES += libglib2 +else +QT_CONFIGURE_OPTS += -no-glib +endif + + +### Pixel depths +QT_PIXEL_DEPTHS = # empty +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_1),y) +QT_PIXEL_DEPTHS += 1 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_4),y) +QT_PIXEL_DEPTHS += 4 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_8),y) +QT_PIXEL_DEPTHS += 8 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_12),y) +QT_PIXEL_DEPTHS += 12 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_15),y) +QT_PIXEL_DEPTHS += 15 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_16),y) +QT_PIXEL_DEPTHS += 16 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_18),y) +QT_PIXEL_DEPTHS += 18 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_24),y) +QT_PIXEL_DEPTHS += 24 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_32),y) +QT_PIXEL_DEPTHS += 32 +endif +ifneq ($(QT_PIXEL_DEPTHS),) +QT_CONFIGURE_OPTS += -depths $(subst $(space),$(comma),$(strip $(QT_PIXEL_DEPTHS))) +endif + +### Display drivers +ifeq ($(BR2_PACKAGE_QT_GFX_LINUXFB),y) +QT_CONFIGURE_OPTS += -qt-gfx-linuxfb +else +QT_CONFIGURE_OPTS += -no-gfx-linuxfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_TRANSFORMED),y) +QT_CONFIGURE_OPTS += -qt-gfx-transformed +else +QT_CONFIGURE_OPTS += -no-gfx-transformed +endif +ifeq ($(BR2_PACKAGE_QT_GFX_QVFB),y) +QT_CONFIGURE_OPTS += -qt-gfx-qvfb +else +QT_CONFIGURE_OPTS += -no-gfx-qvfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_VNC),y) +QT_CONFIGURE_OPTS += -qt-gfx-vnc +else +QT_CONFIGURE_OPTS += -no-gfx-vnc +endif +ifeq ($(BR2_PACKAGE_QT_GFX_MULTISCREEN),y) +QT_CONFIGURE_OPTS += -qt-gfx-multiscreen +else +QT_CONFIGURE_OPTS += -no-gfx-multiscreen +endif +ifeq ($(BR2_PACKAGE_QT_GFX_DIRECTFB),y) +QT_CONFIGURE_OPTS += -qt-gfx-directfb +QT_DEPENDENCIES += directfb +else +QT_CONFIGURE_OPTS += -no-gfx-directfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_POWERVR),y) +QT_CONFIGURE_OPTS += \ + -plugin-gfx-powervr -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT +QT_DEPENDENCIES += powervr +endif + +### Mouse drivers +ifeq ($(BR2_PACKAGE_QT_MOUSE_PC),y) +QT_CONFIGURE_OPTS += -qt-mouse-pc +else +QT_CONFIGURE_OPTS += -no-mouse-pc +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXTP),y) +QT_CONFIGURE_OPTS += -qt-mouse-linuxtp +else +QT_CONFIGURE_OPTS += -no-mouse-linuxtp +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXINPUT),y) +QT_CONFIGURE_OPTS += -qt-mouse-linuxinput +else +QT_CONFIGURE_OPTS += -no-mouse-linuxinput +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_TSLIB),y) +QT_CONFIGURE_OPTS += -qt-mouse-tslib +QT_DEPENDENCIES += tslib +else +QT_CONFIGURE_OPTS += -no-mouse-tslib +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_QVFB),y) +QT_CONFIGURE_OPTS += -qt-mouse-qvfb +else +QT_CONFIGURE_OPTS += -no-mouse-qvfb +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_NO_QWS_CURSOR),y) +QT_CONFIGURE_OPTS += -D QT_NO_QWS_CURSOR +endif + +### Keyboard drivers +ifeq ($(BR2_PACKAGE_QT_KEYBOARD_TTY),y) +QT_CONFIGURE_OPTS += -qt-kbd-tty +else +QT_CONFIGURE_OPTS += -no-kbd-tty +endif +ifeq ($(BR2_PACKAGE_QT_KEYBOARD_LINUXINPUT),y) +QT_CONFIGURE_OPTS += -qt-kbd-linuxinput +else +QT_CONFIGURE_OPTS += -no-kbd-linuxinput +endif +ifeq ($(BR2_PACKAGE_QT_KEYBOARD_QVFB),y) +QT_CONFIGURE_OPTS += -qt-kbd-qvfb +else +QT_CONFIGURE_OPTS += -no-kbd-qvfb +endif + +ifeq ($(BR2_PACKAGE_QT_DEBUG),y) +QT_CONFIGURE_OPTS += -debug +else +QT_CONFIGURE_OPTS += -release +endif + +ifeq ($(BR2_PACKAGE_QT_SHARED),y) +QT_CONFIGURE_OPTS += -shared +else +QT_CONFIGURE_OPTS += -static +endif + +ifeq ($(BR2_ENDIAN),"LITTLE") +QT_CONFIGURE_OPTS += -little-endian +else +QT_CONFIGURE_OPTS += -big-endian +endif + +ifeq ($(BR2_arm)$(BR2_armeb),y) +QT_EMB_PLATFORM = arm +else ifeq ($(BR2_i386),y) +QT_EMB_PLATFORM = x86 +else ifeq ($(BR2_x86_64),y) +QT_EMB_PLATFORM = x86_64 +else ifeq ($(BR2_mips)$(BR2_mipsel),y) +QT_EMB_PLATFORM = mips +else ifeq ($(BR2_powerpc),y) +QT_EMB_PLATFORM = powerpc +else ifeq ($(BR2_sh4)$(BR2_sh4eb)$(BR2_sh4a)$(BR2_sh4aeb),y) +QT_EMB_PLATFORM = sh +else +QT_EMB_PLATFORM = generic +endif + +ifeq ($(BR2_PACKAGE_QT_X11),y) +QT_DEPENDENCIES += fontconfig xlib_libXi xlib_libX11 xlib_libXrender \ + xlib_libXcursor xlib_libXrandr xlib_libXext xlib_libXv +# Using pkg-config avoids us some logic to redefine and sed again mkspecs files +# to add X11 include path and link options +QT_CFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --cflags x11) +QT_CXXFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --cflags x11) +QT_LDFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --libs x11 xext) +QT_CONFIGURE_OPTS += -arch $(QT_EMB_PLATFORM) \ + -xplatform qws/linux-$(QT_EMB_PLATFORM)-g++ -x11 -no-gtkstyle -no-sm \ + -no-openvg +else # if BR2_PACKAGE_QT_EMBEDDED +QT_CONFIGURE_OPTS += -embedded $(QT_EMB_PLATFORM) +endif + +ifneq ($(BR2_PACKAGE_QT_GUI_MODULE),y) +QT_CONFIGURE_OPTS += -no-gui +endif + +ifneq ($(BR2_PACKAGE_QT_GIF),y) +QT_CONFIGURE_OPTS += -no-gif +endif + +ifeq ($(BR2_PACKAGE_QT_LIBMNG),y) +QT_CONFIGURE_OPTS += -qt-libmng +else +QT_CONFIGURE_OPTS += -no-libmng +endif + +ifeq ($(BR2_PACKAGE_QT_QTZLIB),y) +QT_CONFIGURE_OPTS += -qt-zlib +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMZLIB),y) +QT_CONFIGURE_OPTS += -system-zlib +QT_DEPENDENCIES += zlib +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTJPEG),y) +QT_CONFIGURE_OPTS += -qt-libjpeg +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMJPEG),y) +QT_CONFIGURE_OPTS += -system-libjpeg +QT_DEPENDENCIES += jpeg +else +QT_CONFIGURE_OPTS += -no-libjpeg +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTPNG),y) +QT_CONFIGURE_OPTS += -qt-libpng +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMPNG),y) +QT_CONFIGURE_OPTS += -system-libpng +QT_DEPENDENCIES += libpng +else +QT_CONFIGURE_OPTS += -no-libpng +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTTIFF),y) +QT_CONFIGURE_OPTS += -qt-libtiff +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMTIFF),y) +QT_CONFIGURE_OPTS += -system-libtiff +QT_DEPENDENCIES += tiff +else +QT_CONFIGURE_OPTS += -no-libtiff +endif +endif + +QT_FONTS = $(addprefix $(STAGING_DIR)/usr/lib/fonts/, $(addsuffix *.qpf, \ + $(if $(BR2_PACKAGE_QT_FONT_MICRO),micro) \ + $(if $(BR2_PACKAGE_QT_FONT_FIXED),fixed) \ + $(if $(BR2_PACKAGE_QT_FONT_HELVETICA),helvetica) \ + $(if $(BR2_PACKAGE_QT_FONT_JAPANESE),japanese) \ + $(if $(BR2_PACKAGE_QT_FONT_UNIFONT),unifont))) + +ifeq ($(BR2_PACKAGE_QT_QTFREETYPE),y) +QT_CONFIGURE_OPTS += -qt-freetype +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMFREETYPE),y) +QT_CONFIGURE_OPTS += -system-freetype +QT_CONFIGURE_OPTS += -I $(STAGING_DIR)/usr/include/freetype2/ +QT_DEPENDENCIES += freetype +else +QT_CONFIGURE_OPTS += -no-freetype +endif +endif + +ifeq ($(BR2_PACKAGE_QT_DBUS),y) +QT_DEPENDENCIES += dbus +endif + +ifeq ($(BR2_PACKAGE_QT_OPENSSL),y) +QT_CONFIGURE_OPTS += -openssl +QT_DEPENDENCIES += openssl +else +QT_CONFIGURE_OPTS += -no-openssl +endif + +ifeq ($(BR2_PACKAGE_QT_OPENGL_ES),y) +QT_CONFIGURE_OPTS += -opengl es2 -egl +QT_DEPENDENCIES += libgles libegl +QT_CFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --cflags egl) +QT_CXXFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --cflags egl) +QT_LDFLAGS += $(shell $(PKG_CONFIG_HOST_BINARY) --libs egl) +else +QT_CONFIGURE_OPTS += -no-opengl +endif + +# Qt SQL Drivers +ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y) +ifeq ($(BR2_PACKAGE_QT_IBASE),y) +QT_CONFIGURE_OPTS += -qt-sql-ibase +endif +ifeq ($(BR2_PACKAGE_QT_MYSQL),y) +QT_CONFIGURE_OPTS += -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config +QT_DEPENDENCIES += mysql +endif +ifeq ($(BR2_PACKAGE_QT_ODBC),y) +QT_CONFIGURE_OPTS += -qt-sql-odbc +QT_DEPENDENCIES += unixodbc +endif +ifeq ($(BR2_PACKAGE_QT_PSQL),y) +QT_CONFIGURE_OPTS += -qt-sql-psql -psql_config $(STAGING_DIR)/usr/bin/pg_config +QT_DEPENDENCIES += postgresql +endif +ifeq ($(BR2_PACKAGE_QT_SQLITE_QT),y) +QT_CONFIGURE_OPTS += -qt-sql-sqlite +else +ifeq ($(BR2_PACKAGE_QT_SQLITE_SYSTEM),y) +QT_CONFIGURE_OPTS += -system-sqlite +QT_DEPENDENCIES += sqlite +else +QT_CONFIGURE_OPTS += -no-sql-sqlite +endif +endif +ifeq ($(BR2_PACKAGE_QT_SQLITE2),y) +QT_CONFIGURE_OPTS += -qt-sql-sqlite2 +endif +else +# By default, no SQL driver is turned on by configure. +# but it seems sqlite isn't disabled despite what says +# configure --help +QT_CONFIGURE_OPTS += -no-sql-sqlite +endif + +ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y) +QT_CONFIGURE_OPTS += -xmlpatterns -exceptions +else +QT_CONFIGURE_OPTS += -no-xmlpatterns +endif + +ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y) +QT_CONFIGURE_OPTS += -multimedia +else +QT_CONFIGURE_OPTS += -no-multimedia +endif + +ifeq ($(BR2_PACKAGE_QT_AUDIO_BACKEND),y) +QT_CONFIGURE_OPTS += -audio-backend +QT_DEPENDENCIES += alsa-lib +else +QT_CONFIGURE_OPTS += -no-audio-backend +endif + +ifeq ($(BR2_PACKAGE_QT_PHONON),y) +QT_CONFIGURE_OPTS += -phonon +QT_DEPENDENCIES += gstreamer gst-plugins-base +else +QT_CONFIGURE_OPTS += -no-phonon +endif + +ifeq ($(BR2_PACKAGE_QT_PHONON_BACKEND),y) +QT_CONFIGURE_OPTS += -phonon-backend +else +QT_CONFIGURE_OPTS += -no-phonon-backend +endif + +ifeq ($(BR2_PACKAGE_QT_SVG),y) +QT_CONFIGURE_OPTS += -svg +else +QT_CONFIGURE_OPTS += -no-svg +endif + +ifeq ($(BR2_PACKAGE_QT_WEBKIT),y) +QT_CONFIGURE_OPTS += -webkit +else +QT_CONFIGURE_OPTS += -no-webkit +endif + +ifeq ($(BR2_PACKAGE_QT_SCRIPT),y) +QT_CONFIGURE_OPTS += -script +else +QT_CONFIGURE_OPTS += -no-script +endif + +ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y) +QT_CONFIGURE_OPTS += -scripttools +else +QT_CONFIGURE_OPTS += -no-scripttools +endif + +ifeq ($(BR2_PACKAGE_QT_STL),y) +QT_CONFIGURE_OPTS += -stl +else +QT_CONFIGURE_OPTS += -no-stl +endif + +ifeq ($(BR2_PACKAGE_QT_DECLARATIVE),y) +QT_CONFIGURE_OPTS += -declarative +else +QT_CONFIGURE_OPTS += -no-declarative +endif + +# -no-pch is needed to workaround the issue described at +# http://comments.gmane.org/gmane.comp.lib.qt.devel/5933. +# In addition, ccache and precompiled headers don't play well together +QT_CONFIGURE_OPTS += -no-pch + +# x86x86fix +# Workaround Qt Embedded bug when crosscompiling for x86 under x86 with linux +# host. It's unclear if this would happen on other hosts. +ifneq ($(findstring linux,$(GNU_HOST_NAME)),) +ifneq ($(findstring x86,$(QT_EMB_PLATFORM)),) +QT_CONFIGURE_OPTS += -platform linux-g++ +endif +endif +# End of workaround. + +# Variable for other Qt applications to use +QT_QMAKE = $(HOST_DIR)/usr/bin/qmake -spec qws/linux-$(QT_EMB_PLATFORM)-g++ + +################################################################################ +# QT_QMAKE_SET -- helper macro to set = in +# the qmake.conf file. Will remove existing variable declaration if +# available. +# +# Argument 1 is the variable name +# Argument 2 is the value to set variable to +# Argument 3 is the base source directory of Qt +# +# E.G. use like this: +# $(call QT_QMAKE_SET,variable,value,directory) +################################################################################ +define QT_QMAKE_SET + $(SED) '/$(1)/d' $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/qmake.conf + $(SED) '/include.*qws.conf/a$(1) = $(2)' $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/qmake.conf +endef + +ifneq ($(QT_CONFIG_FILE),) +define QT_CONFIGURE_CONFIG_FILE + cp $(QT_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h +endef +endif + +define QT_CONFIGURE_CMDS + -[ -f $(@D)/Makefile ] && $(MAKE) -C $(@D) confclean + $(QT_CONFIGURE_IPV6) + $(QT_CONFIGURE_CONFIG_FILE) + # Fix compiler path + $(call QT_QMAKE_SET,QMAKE_CC,$(TARGET_CC),$(@D)) + $(call QT_QMAKE_SET,QMAKE_CXX,$(TARGET_CXX),$(@D)) + $(call QT_QMAKE_SET,QMAKE_LINK,$(TARGET_CXX),$(@D)) + $(call QT_QMAKE_SET,QMAKE_LINK_SHLIB,$(TARGET_CXX),$(@D)) + $(call QT_QMAKE_SET,QMAKE_AR,$(TARGET_AR) cqs,$(@D)) + $(call QT_QMAKE_SET,QMAKE_OBJCOPY,$(TARGET_OBJCOPY),$(@D)) + $(call QT_QMAKE_SET,QMAKE_RANLIB,$(TARGET_RANLIB),$(@D)) + $(call QT_QMAKE_SET,QMAKE_STRIP,$(TARGET_STRIP),$(@D)) + $(call QT_QMAKE_SET,QMAKE_CFLAGS,$(QT_CFLAGS),$(@D)) + $(call QT_QMAKE_SET,QMAKE_CXXFLAGS,$(QT_CXXFLAGS),$(@D)) + $(call QT_QMAKE_SET,QMAKE_LFLAGS,$(QT_LDFLAGS),$(@D)) + $(call QT_QMAKE_SET,PKG_CONFIG,$(HOST_DIR)/usr/bin/pkg-config,$(@D)) +# Don't use TARGET_CONFIGURE_OPTS here, qmake would be compiled for the target +# instead of the host then. So set PKG_CONFIG* manually. + (cd $(@D); \ + PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \ + $(QT_CONFIGURE_ENV) \ + MAKEFLAGS="$(MAKEFLAGS) -j$(PARALLEL_JOBS)" ./configure \ + $(if $(VERBOSE),-verbose,-silent) \ + -force-pkg-config \ + $(QT_CONFIGURE_OPTS) \ + -no-xinerama \ + -no-cups \ + -no-nis \ + -no-accessibility \ + -no-separate-debug-info \ + -prefix /usr \ + -plugindir /usr/lib/qt/plugins \ + -importdir /usr/lib/qt/imports \ + -translationdir /usr/share/qt/translations \ + -hostprefix $(STAGING_DIR) \ + -fast \ + -no-rpath \ + ) +endef + +define QT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + + +# Build the list of libraries and plugins to install to the target + +QT_INSTALL_LIBS += QtCore +QT_HOST_PROGRAMS += moc rcc qmake lrelease + +ifeq ($(BR2_PACKAGE_QT_GUI_MODULE),y) +QT_INSTALL_LIBS += QtGui +QT_HOST_PROGRAMS += uic +endif +ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y) +QT_INSTALL_LIBS += QtSql +endif +ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y) +QT_INSTALL_LIBS += QtMultimedia +endif +ifeq ($(BR2_PACKAGE_QT_PHONON),y) +QT_INSTALL_LIBS += phonon +endif +ifeq ($(BR2_PACKAGE_QT_SVG),y) +QT_INSTALL_LIBS += QtSvg +endif +ifeq ($(BR2_PACKAGE_QT_NETWORK),y) +QT_INSTALL_LIBS += QtNetwork +endif +ifeq ($(BR2_PACKAGE_QT_WEBKIT),y) +QT_INSTALL_LIBS += QtWebKit +endif +ifeq ($(BR2_PACKAGE_QT_XML),y) +QT_INSTALL_LIBS += QtXml +endif +ifeq ($(BR2_PACKAGE_QT_DBUS),y) +QT_INSTALL_LIBS += QtDBus +endif +ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y) +QT_INSTALL_LIBS += QtXmlPatterns +endif +ifeq ($(BR2_PACKAGE_QT_SCRIPT),y) +QT_INSTALL_LIBS += QtScript +endif +ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y) +QT_INSTALL_LIBS += QtScriptTools +endif +ifeq ($(BR2_PACKAGE_QT_DECLARATIVE),y) +QT_INSTALL_LIBS += QtDeclarative +endif +ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y) +QT_INSTALL_LIBS += Qt3Support +endif +ifeq ($(BR2_PACKAGE_QT_OPENGL_ES),y) +QT_INSTALL_LIBS += QtOpenGL +endif +ifeq ($(BR2_PACKAGE_QT_GFX_POWERVR),y) +QT_INSTALL_LIBS += pvrQWSWSEGL +endif +ifeq ($(BR2_PACKAGE_QT_TEST),y) +QT_INSTALL_LIBS += QtTest +endif + +QT_CONF_FILE = $(HOST_DIR)/usr/bin/qt.conf + +# Since host programs and spec files have been moved to $(HOST_DIR), +# we need to tell qmake the new location of the various elements, +# through a qt.conf file. +define QT_INSTALL_QT_CONF + mkdir -p $(dir $(QT_CONF_FILE)) + echo "[Paths]" > $(QT_CONF_FILE) + echo "Prefix=$(HOST_DIR)/usr" >> $(QT_CONF_FILE) + echo "Headers=$(STAGING_DIR)/usr/include" >> $(QT_CONF_FILE) + echo "Libraries=$(STAGING_DIR)/usr/lib" >> $(QT_CONF_FILE) + echo "Data=$(HOST_DIR)/usr" >> $(QT_CONF_FILE) + echo "Binaries=$(HOST_DIR)/usr/bin" >> $(QT_CONF_FILE) +endef + +# After running Qt normal installation process (which installs +# everything in the STAGING_DIR), we move host programs such as qmake, +# rcc or uic to the HOST_DIR so that they are available at the usual +# location. A qt.conf file is generated to make sure that all host +# programs still find all files they need. The .pc files are tuned to +# remove the sysroot path from them, since pkg-config already adds it +# automatically. +define QT_INSTALL_STAGING_CMDS + $(MAKE) -C $(@D) install + mkdir -p $(HOST_DIR)/usr/bin + mv $(addprefix $(STAGING_DIR)/usr/bin/,$(QT_HOST_PROGRAMS)) $(HOST_DIR)/usr/bin + ln -sf $(STAGING_DIR)/usr/mkspecs $(HOST_DIR)/usr/mkspecs + $(QT_INSTALL_QT_CONF) + for i in moc uic rcc lupdate lrelease ; do \ + $(SED) "s,^$${i}_location=.*,$${i}_location=$(HOST_DIR)/usr/bin/$${i}," \ + $(STAGING_DIR)/usr/lib/pkgconfig/Qt*.pc ; \ + done + $(SED) "s,$(STAGING_DIR)/,,g" $(STAGING_DIR)/usr/lib/pkgconfig/Qt*.pc +endef + +# Library installation +ifeq ($(BR2_PACKAGE_QT_SHARED),y) +define QT_INSTALL_TARGET_LIBS + mkdir -p $(TARGET_DIR)/usr/lib + for lib in $(QT_INSTALL_LIBS); do \ + cp -dpf $(STAGING_DIR)/usr/lib/lib$${lib}.so.* $(TARGET_DIR)/usr/lib ; \ + done +endef +endif + +# Plugin installation +define QT_INSTALL_TARGET_PLUGINS + if [ -d $(STAGING_DIR)/usr/lib/qt/plugins/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/lib/qt/plugins ; \ + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/* $(TARGET_DIR)/usr/lib/qt/plugins ; \ + fi +endef + +# Import installation +define QT_INSTALL_TARGET_IMPORTS + if [ -d $(STAGING_DIR)/usr/lib/qt/imports/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/lib/qt/imports ; \ + cp -dpfr $(STAGING_DIR)/usr/lib/qt/imports/* $(TARGET_DIR)/usr/lib/qt/imports ; \ + fi +endef + +# Fonts installation +ifeq ($(BR2_PACKAGE_QT_EMBEDDED),y) +ifneq ($(QT_FONTS),) +define QT_INSTALL_TARGET_FONTS + mkdir -p $(TARGET_DIR)/usr/lib/fonts + cp -dpf $(QT_FONTS) $(TARGET_DIR)/usr/lib/fonts +endef +endif + +ifeq ($(BR2_PACKAGE_QT_QTFREETYPE)$(BR2_PACKAGE_QT_SYSTEMFREETYPE),y) +define QT_INSTALL_TARGET_FONTS_TTF + mkdir -p $(TARGET_DIR)/usr/lib/fonts + cp -dpf $(STAGING_DIR)/usr/lib/fonts/*.ttf $(TARGET_DIR)/usr/lib/fonts +endef +endif +endif # BR2_PACKAGE_QT_EMBEDDED + +ifeq ($(BR2_PACKAGE_QT_GFX_POWERVR),y) +define QT_INSTALL_TARGET_POWERVR + # Note: this overwrites the default powervr.ini provided by the ti-gfx + # package. + $(INSTALL) -D -m 0644 package/qt/powervr.ini \ + $(TARGET_DIR)/etc/powervr.ini +endef +endif + +ifeq ($(BR2_PACKAGE_QT_TRANSLATION_FILES),y) +define QT_INSTALL_TARGET_TRANSLATIONS + if [ -d $(STAGING_DIR)/usr/share/qt/translations/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/share/qt/translations ; \ + cp -dpfr $(STAGING_DIR)/usr/share/qt/translations/* $(TARGET_DIR)/usr/share/qt/translations ; \ + fi +endef +endif + +define QT_INSTALL_TARGET_CMDS + $(QT_INSTALL_TARGET_LIBS) + $(QT_INSTALL_TARGET_PLUGINS) + $(QT_INSTALL_TARGET_IMPORTS) + $(QT_INSTALL_TARGET_FONTS) + $(QT_INSTALL_TARGET_FONTS_TTF) + $(QT_INSTALL_TARGET_POWERVR) + $(QT_INSTALL_TARGET_TRANSLATIONS) +endef + +$(eval $(generic-package))