--- /dev/null
+From b8f98d956501dfa4ce03a137f15d404930a56066 Mon Sep 17 00:00:00 2001
+From: Dmitry Shachnev <mitya57@gmail.com>
+Date: Sat, 5 Mar 2016 10:25:33 +0300
+Subject: [PATCH] alsatest: Fix the check to treat alsalib 1.1.x as correct
+ version
+
+Task-number: QTBUG-51681
+Change-Id: I63266c33342f02f4d1a5ea5786f5fbc5a1b421b3
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
+[Upstream commit: https://github.com/qtproject/qtbase/commit/b8f98d956501dfa4ce03a137f15d404930a56066]
+[Patch fixing ALSA detection. Taken from Qt5, but applies fine to Qt4.]
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ config.tests/unix/alsa/alsatest.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config.tests/unix/alsa/alsatest.cpp b/config.tests/unix/alsa/alsatest.cpp
+index cab6533977..0b45819b61 100644
+--- a/config.tests/unix/alsa/alsatest.cpp
++++ b/config.tests/unix/alsa/alsatest.cpp
+@@ -32,7 +32,7 @@
+ ****************************************************************************/
+
+ #include <alsa/asoundlib.h>
+-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10))
++#if SND_LIB_VERSION < 0x1000a // 1.0.10
+ #error "Alsa version found too old, require >= 1.0.10"
+ #endif
+
+++ /dev/null
-Fix -hostprefix behaviour
-
-When -hostprefix ./configure option is used, Qt installs all its
-headers, libraries and binaries inside the given host prefix, instead
-of the prefix. This is used by Buildroot to make sure that all Qt
-libraries and headers are installed in $(STAGING_DIR).
-
-Qt ./configure script also allows to tune the installation location of
-various elements, for examples the plugins through the -plugindir
-option. Unfortunately, this option only impact the installation path
-on the target, but not on the host when -hostprefix is used.
-
-This patch modifies Qt ./configure script so that HOST_*PATH_STR
-variables are composed of the host prefix concatenated with the path
-of installation on the target. This way, the plugin installation local
-in the $(STAGING_DIR) and on the target remains the same.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
----
- configure | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-Index: qt-everywhere-opensource-src-4.8.1/configure
-===================================================================
---- qt-everywhere-opensource-src-4.8.1.orig/configure
-+++ qt-everywhere-opensource-src-4.8.1/configure
-@@ -4661,15 +4661,15 @@
-
-
- if [ ! -z "$QT_HOST_PREFIX" ]; then
-- HOSTPREFIX_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_prfxpath=$QT_HOST_PREFIX"`
-- HOSTDOCUMENTATION_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_docspath=$QT_HOST_PREFIX/doc"`
-- HOSTHEADERS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_hdrspath=$QT_HOST_PREFIX/include"`
-- HOSTLIBRARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_libspath=$QT_HOST_PREFIX/lib"`
-- HOSTBINARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_binspath=$QT_HOST_PREFIX/bin"`
-- HOSTPLUGINS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_plugpath=$QT_HOST_PREFIX/plugins"`
-- HOSTIMPORTS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_impspath=$QT_HOST_PREFIX/IMPORTS"`
-- HOSTDATA_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_datapath=$QT_HOST_PREFIX"`
-- HOSTTRANSLATIONS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_trnspath=$QT_HOST_PREFIX/translations"`
-+ HOSTPREFIX_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_prfxpath=$QT_HOST_PREFIX/$QT_INSTALL_PREFIX"`
-+ HOSTDOCUMENTATION_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_docspath=$QT_HOST_PREFIX/$QT_INSTALL_DOCS"`
-+ HOSTHEADERS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_hdrspath=$QT_HOST_PREFIX/$QT_INSTALL_HEADERS"`
-+ HOSTLIBRARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_libspath=$QT_HOST_PREFIX/$QT_INSTALL_LIBS"`
-+ HOSTBINARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_binspath=$QT_HOST_PREFIX/$QT_INSTALL_BINS"`
-+ HOSTPLUGINS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_plugpath=$QT_HOST_PREFIX/$QT_INSTALL_PLUGINS"`
-+ HOSTIMPORTS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_impspath=$QT_HOST_PREFIX/$QT_INSTALL_IMPORTS"`
-+ HOSTDATA_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_datapath=$QT_HOST_PREFIX/$QT_INSTALL_DATA"`
-+ HOSTTRANSLATIONS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_trnspath=$QT_HOST_PREFIX/$QT_INSTALL_TRANSLATIONS"`
- HOSTSETTINGS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_stngpath=$QT_INSTALL_SETTINGS"`
- HOSTEXAMPLES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_xmplpath=$QT_INSTALL_EXAMPLES"`
- HOSTDEMOS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_demopath=$QT_INSTALL_DEMOS"`
--- /dev/null
+Fix -hostprefix behaviour
+
+When -hostprefix ./configure option is used, Qt installs all its
+headers, libraries and binaries inside the given host prefix, instead
+of the prefix. This is used by Buildroot to make sure that all Qt
+libraries and headers are installed in $(STAGING_DIR).
+
+Qt ./configure script also allows to tune the installation location of
+various elements, for examples the plugins through the -plugindir
+option. Unfortunately, this option only impact the installation path
+on the target, but not on the host when -hostprefix is used.
+
+This patch modifies Qt ./configure script so that HOST_*PATH_STR
+variables are composed of the host prefix concatenated with the path
+of installation on the target. This way, the plugin installation local
+in the $(STAGING_DIR) and on the target remains the same.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+---
+ configure | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+Index: qt-everywhere-opensource-src-4.8.1/configure
+===================================================================
+--- qt-everywhere-opensource-src-4.8.1.orig/configure
++++ qt-everywhere-opensource-src-4.8.1/configure
+@@ -4661,15 +4661,15 @@
+
+
+ if [ ! -z "$QT_HOST_PREFIX" ]; then
+- HOSTPREFIX_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_prfxpath=$QT_HOST_PREFIX"`
+- HOSTDOCUMENTATION_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_docspath=$QT_HOST_PREFIX/doc"`
+- HOSTHEADERS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_hdrspath=$QT_HOST_PREFIX/include"`
+- HOSTLIBRARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_libspath=$QT_HOST_PREFIX/lib"`
+- HOSTBINARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_binspath=$QT_HOST_PREFIX/bin"`
+- HOSTPLUGINS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_plugpath=$QT_HOST_PREFIX/plugins"`
+- HOSTIMPORTS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_impspath=$QT_HOST_PREFIX/IMPORTS"`
+- HOSTDATA_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_datapath=$QT_HOST_PREFIX"`
+- HOSTTRANSLATIONS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_trnspath=$QT_HOST_PREFIX/translations"`
++ HOSTPREFIX_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_prfxpath=$QT_HOST_PREFIX/$QT_INSTALL_PREFIX"`
++ HOSTDOCUMENTATION_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_docspath=$QT_HOST_PREFIX/$QT_INSTALL_DOCS"`
++ HOSTHEADERS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_hdrspath=$QT_HOST_PREFIX/$QT_INSTALL_HEADERS"`
++ HOSTLIBRARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_libspath=$QT_HOST_PREFIX/$QT_INSTALL_LIBS"`
++ HOSTBINARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_binspath=$QT_HOST_PREFIX/$QT_INSTALL_BINS"`
++ HOSTPLUGINS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_plugpath=$QT_HOST_PREFIX/$QT_INSTALL_PLUGINS"`
++ HOSTIMPORTS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_impspath=$QT_HOST_PREFIX/$QT_INSTALL_IMPORTS"`
++ HOSTDATA_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_datapath=$QT_HOST_PREFIX/$QT_INSTALL_DATA"`
++ HOSTTRANSLATIONS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_trnspath=$QT_HOST_PREFIX/$QT_INSTALL_TRANSLATIONS"`
+ HOSTSETTINGS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_stngpath=$QT_INSTALL_SETTINGS"`
+ HOSTEXAMPLES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_xmplpath=$QT_INSTALL_EXAMPLES"`
+ HOSTDEMOS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_demopath=$QT_INSTALL_DEMOS"`
+++ /dev/null
-Patch to remove obsolete powervr headers and instead use the headers provided
-on the system.
-
-Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>
----
-Index: qt-4.8.5/src/3rdparty/powervr/pvr2d.h
-===================================================================
---- qt-4.8.5.orig/src/3rdparty/powervr/pvr2d.h 2013-07-08 11:24:33.010516867 -0500
-+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
-@@ -1,502 +0,0 @@
--/*!****************************************************************************
--@File pvr2d.h
--@Title PVR2D external header file
--@Author Imagination Technologies
--@Copyright Copyright (c) by Imagination Technologies Limited.
-- This specification is protected by copyright laws and contains
-- material proprietary to Imagination Technologies Limited.
-- You may use and distribute this specification free of charge for implementing
-- the functionality therein, without altering or removing any trademark, copyright,
-- or other notice from the specification.
--@Platform Generic
--@Description PVR2D definitions for PVR2D clients
--******************************************************************************/
--
--
--/******************************************************************************
--Modifications :-
--$Log: pvr2d.h $
--******************************************************************************/
--
--#ifndef _PVR2D_H_
--#define _PVR2D_H_
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--/* PVR2D Platform-specific definitions */
--#define PVR2D_EXPORT
--#define PVR2D_IMPORT
--
--
--#define PVR2D_REV_MAJOR 2
--#define PVR2D_REV_MINOR 1
--
--typedef enum
--{
-- PVR2D_FALSE = 0,
-- PVR2D_TRUE
--} PVR2D_BOOL;
--
--
--/* error codes */
--typedef enum
--{
-- PVR2D_OK = 0,
-- PVR2DERROR_INVALID_PARAMETER = -1,
-- PVR2DERROR_DEVICE_UNAVAILABLE = -2,
-- PVR2DERROR_INVALID_CONTEXT = -3,
-- PVR2DERROR_MEMORY_UNAVAILABLE = -4,
-- PVR2DERROR_DEVICE_NOT_PRESENT = -5,
-- PVR2DERROR_IOCTL_ERROR = -6,
-- PVR2DERROR_GENERIC_ERROR = -7,
-- PVR2DERROR_BLT_NOTCOMPLETE = -8,
-- PVR2DERROR_HW_FEATURE_NOT_SUPPORTED = -9,
-- PVR2DERROR_NOT_YET_IMPLEMENTED = -10,
-- PVR2DERROR_MAPPING_FAILED = -11
--}PVR2DERROR;
--
--
--/* pixel formats */
--typedef enum
--{
-- PVR2D_1BPP = 0,
-- PVR2D_RGB565,
-- PVR2D_ARGB4444,
-- PVR2D_RGB888,
-- PVR2D_ARGB8888,
-- PVR2D_ARGB1555,
-- PVR2D_ALPHA8,
-- PVR2D_ALPHA4,
-- PVR2D_PAL2,
-- PVR2D_PAL4,
-- PVR2D_PAL8,
-- PVR2D_VGAEMU
--
--}PVR2DFORMAT;
--
--
--/* wrap surface type */
--typedef enum
--{
-- PVR2D_WRAPFLAG_NONCONTIGUOUS = 0,
-- PVR2D_WRAPFLAG_CONTIGUOUS = 1,
--
--}PVR2DWRAPFLAGS;
--
--/* flags for control information of additional blits */
--typedef enum
--{
-- PVR2D_BLIT_DISABLE_ALL = 0x0000, /* disable all additional controls */
-- PVR2D_BLIT_CK_ENABLE = 0x0001, /* enable colour key */
-- PVR2D_BLIT_GLOBAL_ALPHA_ENABLE = 0x0002, /* enable standard global alpha */
-- PVR2D_BLIT_PERPIXEL_ALPHABLEND_ENABLE = 0x0004, /* enable per-pixel alpha bleding */
-- PVR2D_BLIT_PAT_SURFACE_ENABLE = 0x0008, /* enable pattern surf (disable fill) */
-- PVR2D_BLIT_FULLY_SPECIFIED_ALPHA_ENABLE = 0x0010, /* enable fully specified alpha */
-- PVR2D_BLIT_ROT_90 = 0x0020, /* apply 90 degree rotation to the blt */
-- PVR2D_BLIT_ROT_180 = 0x0040, /* apply 180 degree rotation to the blt */
-- PVR2D_BLIT_ROT_270 = 0x0080, /* apply 270 degree rotation to the blt */
-- PVR2D_BLIT_COPYORDER_TL2BR = 0x0100, /* copy order overrides */
-- PVR2D_BLIT_COPYORDER_BR2TL = 0x0200,
-- PVR2D_BLIT_COPYORDER_TR2BL = 0x0400,
-- PVR2D_BLIT_COPYORDER_BL2TR = 0x0800,
-- PVR2D_BLIT_COLKEY_SOURCE = 0x1000, /* Key colour is on the source surface */
-- PVR2D_BLIT_COLKEY_DEST = 0x2000 /* Key colour is on the destination surface */
--
--} PVR2DBLITFLAGS;
--
--/* standard alpha-blending functions, AlphaBlendingFunc field of PVR2DBLTINFO */
--typedef enum
--{
-- PVR2D_ALPHA_OP_SRC_DSTINV = 1, /* source alpha : Cdst = Csrc*Asrc + Cdst*(1-Asrc) */
-- PVR2D_ALPHA_OP_SRCP_DSTINV = 2 /* premultiplied source alpha : Cdst = Csrc + Cdst*(1-Asrc) */
--} PVR2D_ALPHABLENDFUNC;
--
--/* blend ops for fully specified alpha */
--typedef enum
--{
-- PVR2D_BLEND_OP_ZERO = 0,
-- PVR2D_BLEND_OP_ONE = 1,
-- PVR2D_BLEND_OP_SRC = 2,
-- PVR2D_BLEND_OP_DST = 3,
-- PVR2D_BLEND_OP_GLOBAL = 4,
-- PVR2D_BLEND_OP_SRC_PLUS_GLOBAL = 5,
-- PVR2D_BLEND_OP_DST_PLUS_GLOBAL = 6
--}PVR2D_BLEND_OP;
--
--
--typedef void* PVR2D_HANDLE;
--
--
--/* Fully specified alpha blend : pAlpha field of PVR2DBLTINFO structure */
--/* a fully specified Alpha Blend operation is defined as */
--/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (ALPHA_3 * DST (ALPHA)) */
--/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (ALPHA_4 * DST (RGB)) */
--/* if the pre-multiplication stage is enabled then the equations become the following: */
--/* PRE_MUL = ((SRC(A)) * (Global Alpha Value)) */
--/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (PRE_MUL * DST (ALPHA)) */
--/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (PRE_MUL * DST (RGB)) */
--/* if the transparent source alpha stage is enabled then a source alpha of zero forces the */
--/* source to be transparent for that pixel regardless of the blend equation being used. */
--typedef struct _PVR2D_ALPHABLT
--{
-- PVR2D_BLEND_OP eAlpha1;
-- PVR2D_BOOL bAlpha1Invert;
-- PVR2D_BLEND_OP eAlpha2;
-- PVR2D_BOOL bAlpha2Invert;
-- PVR2D_BLEND_OP eAlpha3;
-- PVR2D_BOOL bAlpha3Invert;
-- PVR2D_BLEND_OP eAlpha4;
-- PVR2D_BOOL bAlpha4Invert;
-- PVR2D_BOOL bPremulAlpha; /* enable pre-multiplication stage */
-- PVR2D_BOOL bTransAlpha; /* enable transparent source alpha stage */
-- PVR2D_BOOL bUpdateAlphaLookup; /* enable and update the 1555-Lookup alpha table */
-- unsigned char uAlphaLookup0; /* 8 bit alpha when A=0 in a 1555-Lookup surface */
-- unsigned char uAlphaLookup1; /* 8 bit alpha when A=1 in a 1555-Lookup surface */
-- unsigned char uGlobalRGB; /* Global Alpha Value for RGB, 0=transparent 255=opaque */
-- unsigned char uGlobalA; /* Global Alpha Value for Alpha */
--
--} PVR2D_ALPHABLT, *PPVR2D_ALPHABLT;
--
--
--/* surface memory info structure */
--typedef struct _PVR2DMEMINFO
--{
-- void *pBase;
-- unsigned long ui32MemSize;
-- unsigned long ui32DevAddr;
-- unsigned long ulFlags;
-- void *hPrivateData;
-- void *hPrivateMapData;
--
--}PVR2DMEMINFO, *PPVR2DMEMINFO;
--
--
--#define PVR2D_MAX_DEVICE_NAME 20
--
--typedef struct _PVR2DDEVICEINFO
--{
-- unsigned long ulDevID;
-- char szDeviceName[PVR2D_MAX_DEVICE_NAME];
--}PVR2DDEVICEINFO;
--
--
--typedef struct _PVR2DISPLAYINFO
--{
-- unsigned long ulMaxFlipChains;
-- unsigned long ulMaxBuffersInChain;
-- PVR2DFORMAT eFormat;
-- unsigned long ulWidth;
-- unsigned long ulHeight;
-- long lStride;
-- unsigned long ulMinFlipInterval;
-- unsigned long ulMaxFlipInterval;
--
--}PVR2DDISPLAYINFO;
--
--
--typedef struct _PVR2DBLTINFO
--{
-- unsigned long CopyCode; /* rop code */
-- unsigned long Colour; /* fill colour */
-- unsigned long ColourKey; /* colour key */
-- unsigned char GlobalAlphaValue; /* global alpha blending */
-- unsigned char AlphaBlendingFunc; /* per-pixel alpha-blending function */
--
-- PVR2DBLITFLAGS BlitFlags; /* additional blit control information */
--
-- PVR2DMEMINFO *pDstMemInfo; /* destination memory */
-- unsigned long DstOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */
-- long DstStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
-- long DstX, DstY; /* pixel offset from start of dest surface to start of blt rectangle */
-- long DSizeX,DSizeY; /* blt size */
-- PVR2DFORMAT DstFormat; /* dest format */
-- unsigned long DstSurfWidth; /* size of dest surface in pixels */
-- unsigned long DstSurfHeight; /* size of dest surface in pixels */
--
-- PVR2DMEMINFO *pSrcMemInfo; /* source mem, (source fields are also used for patterns) */
-- unsigned long SrcOffset; /* byte offset from start of allocation to src/pat surface pixel 0,0 */
-- long SrcStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
-- long SrcX, SrcY; /* pixel offset from start of surface to start of source rectangle */
-- /* for patterns this is the start offset within the pattern */
-- long SizeX,SizeY; /* source rectangle size or pattern size in pixels */
-- PVR2DFORMAT SrcFormat; /* source/pattern format */
-- PVR2DMEMINFO *pPalMemInfo; /* source/pattern palette memory containing argb8888 colour table */
-- unsigned long PalOffset; /* byte offset from start of allocation to start of palette */
-- unsigned long SrcSurfWidth; /* size of source surface in pixels */
-- unsigned long SrcSurfHeight; /* size of source surface in pixels */
--
-- PVR2DMEMINFO *pMaskMemInfo; /* mask memory, 1bpp format implied */
-- unsigned long MaskOffset; /* byte offset from start of allocation to mask surface pixel 0,0 */
-- long MaskStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
-- long MaskX, MaskY; /* mask rect top left (mask size = blt size) */
-- unsigned long MaskSurfWidth; /* size of mask surface in pixels */
-- unsigned long MaskSurfHeight; /* size of mask surface in pixels */
--
-- PPVR2D_ALPHABLT pAlpha; /* fully specified alpha blend */
--
--}PVR2DBLTINFO, *PPVR2DBLTINFO;
--
--typedef struct _PVR2DRECT
--{
-- long left, top;
-- long right, bottom;
--} PVR2DRECT;
--
--typedef struct
--{
-- PVR2DMEMINFO *pSurfMemInfo; /* surface memory */
-- unsigned long SurfOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */
-- long Stride; /* signed stride */
-- PVR2DFORMAT Format;
-- unsigned long SurfWidth; /* surface size in pixels */
-- unsigned long SurfHeight;
--
--} PVR2D_SURFACE, *PPVR2D_SURFACE;
--
--typedef struct
--{
-- unsigned long *pUseCode; /* USSE code */
-- unsigned long UseCodeSize; /* usse code size in bytes */
--
--} PVR2D_USECODE, *PPVR2D_USECODE;
--
--typedef struct
--{
-- PVR2D_SURFACE sDst; /* destination surface */
-- PVR2D_SURFACE sSrc; /* source surface */
-- PVR2DRECT rcDest; /* destination rectangle */
-- PVR2DRECT rcSource; /* source rectangle */
-- PVR2D_HANDLE hUseCode; /* custom USE code (NULL implies source copy) */
-- unsigned long UseParams[2]; /* per-blt params for use code */
--
--} PVR2D_3DBLT, *PPVR2D_3DBLT;
--
--
--#define MAKE_COPY_BLIT(src,soff,dest,doff,sx,sy,dx,dy,sz)
--
--typedef void* PVR2DCONTEXTHANDLE;
--typedef void* PVR2DFLIPCHAINHANDLE;
--
--
--// CopyCode field of PVR2DBLTINFO structure:
--// the CopyCode field of the PVR2DBLTINFO structure should contain a rop3 or rop4 code.
--// a rop3 is an 8 bit code that describes a blt with three inputs : source dest and pattern
--// rop4 is a 16 bit code that describes a blt with four inputs : source dest pattern and mask
--// common rop3 codes are defined below
--// a colour fill blt is processed in the pattern channel as a constant colour with a rop code of 0xF0
--// PVR2D_BLIT_PAT_SURFACE_ENABLE defines whether the pattern channel is a surface or a fill colour.
--// a rop4 is defined by two rop3 codes, and the 1 bit-per-pixel mask surface defines which is used.
--// a common rop4 is 0xAAF0 which is the mask copy blt used for text glyphs.
--// CopyCode is taken to be a rop4 when pMaskMemInfo is non zero, otherwise it is assumed to be a rop3
--// use the PVR2DMASKROP4 macro below to construct a rop4 from two rop3's
--// rop3a is the rop used when mask pixel = 1, and rop3b when mask = 0
--#define PVR2DROP4(rop3b, rop3a) ((rop3b<<8)|rop3a)
--
--/* common rop codes */
--#define PVR2DROPclear 0x00 /* 0 (whiteness) */
--#define PVR2DROPset 0xFF /* 1 (blackness) */
--#define PVR2DROPnoop 0xAA /* dst (used for masked blts) */
--
--/* source and dest rop codes */
--#define PVR2DROPand 0x88 /* src AND dst */
--#define PVR2DROPandReverse 0x44 /* src AND NOT dst */
--#define PVR2DROPcopy 0xCC /* src (used for source copy and alpha blts) */
--#define PVR2DROPandInverted 0x22 /* NOT src AND dst */
--#define PVR2DROPxor 0x66 /* src XOR dst */
--#define PVR2DROPor 0xEE /* src OR dst */
--#define PVR2DROPnor 0x11 /* NOT src AND NOT dst */
--#define PVR2DROPequiv 0x99 /* NOT src XOR dst */
--#define PVR2DROPinvert 0x55 /* NOT dst */
--#define PVR2DROPorReverse 0xDD /* src OR NOT dst */
--#define PVR2DROPcopyInverted 0x33 /* NOT src */
--#define PVR2DROPorInverted 0xBB /* NOT src OR dst */
--#define PVR2DROPnand 0x77 /* NOT src OR NOT dst */
--
--/* pattern rop codes */
--#define PVR2DPATROPand 0xA0 /* pat AND dst */
--#define PVR2DPATROPandReverse 0x50 /* pat AND NOT dst */
--#define PVR2DPATROPcopy 0xF0 /* pat (used for solid color fills and pattern blts) */
--#define PVR2DPATROPandInverted 0x0A /* NOT pat AND dst */
--#define PVR2DPATROPxor 0x5A /* pat XOR dst */
--#define PVR2DPATROPor 0xFA /* pat OR dst */
--#define PVR2DPATROPnor 0x05 /* NOT pat AND NOT dst */
--#define PVR2DPATROPequiv 0xA5 /* NOT pat XOR dst */
--#define PVR2DPATROPinvert 0x55 /* NOT dst */
--#define PVR2DPATROPorReverse 0xF5 /* pat OR NOT dst */
--#define PVR2DPATROPcopyInverted 0x0F /* NOT pat */
--#define PVR2DPATROPorInverted 0xAF /* NOT pat OR dst */
--#define PVR2DPATROPnand 0x5F /* NOT pat OR NOT dst */
--
--/* common rop4 codes */
--#define PVR2DROP4MaskedCopy PVR2DROP4(PVR2DROPnoop,PVR2DROPcopy) /* masked source copy blt (used for rounded window corners etc) */
--#define PVR2DROP4MaskedFill PVR2DROP4(PVR2DROPnoop,PVR2DPATROPcopy) /* masked colour fill blt (used for text) */
--
--/* Legacy support */
--#define PVR2DROP3_PATMASK PVR2DPATROPcopy
--#define PVR2DROP3_SRCMASK PVR2DROPcopy
--
--/* pixmap memory alignment */
--#define PVR2D_ALIGNMENT_4 4 /* DWORD alignment */
--#define PVR2D_ALIGNMENT_ANY 0 /* no alignment */
--#define PVR2D_ALIGNMENT_PALETTE 16 /* 16 byte alignment is required for palettes */
--
--/* Heap number for PVR2DGetFrameBuffer */
--#define PVR2D_FB_PRIMARY_SURFACE 0
--
--#define PVR2D_PRESENT_PROPERTY_SRCSTRIDE (1 << 0)
--#define PVR2D_PRESENT_PROPERTY_DSTSIZE (1 << 1)
--#define PVR2D_PRESENT_PROPERTY_DSTPOS (1 << 2)
--#define PVR2D_PRESENT_PROPERTY_CLIPRECTS (1 << 3)
--#define PVR2D_PRESENT_PROPERTY_INTERVAL (1 << 4)
--
--
--#define PVR2D_CREATE_FLIPCHAIN_SHARED (1 << 0)
--#define PVR2D_CREATE_FLIPCHAIN_QUERY (1 << 1)
--
--/* Functions that the library exports */
--
--PVR2D_IMPORT
--int PVR2DEnumerateDevices(PVR2DDEVICEINFO *pDevInfo);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DCreateDeviceContext(unsigned long ulDevID,
-- PVR2DCONTEXTHANDLE* phContext,
-- unsigned long ulFlags);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DDestroyDeviceContext(PVR2DCONTEXTHANDLE hContext);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DGetDeviceInfo(PVR2DCONTEXTHANDLE hContext,
-- PVR2DDISPLAYINFO *pDisplayInfo);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DGetScreenMode(PVR2DCONTEXTHANDLE hContext,
-- PVR2DFORMAT *pFormat,
-- long *plWidth,
-- long *plHeight,
-- long *plStride,
-- int *piRefreshRate);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DGetFrameBuffer(PVR2DCONTEXTHANDLE hContext,
-- int nHeap,
-- PVR2DMEMINFO **ppsMemInfo);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DMemAlloc(PVR2DCONTEXTHANDLE hContext,
-- unsigned long ulBytes,
-- unsigned long ulAlign,
-- unsigned long ulFlags,
-- PVR2DMEMINFO **ppsMemInfo);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DMemWrap(PVR2DCONTEXTHANDLE hContext,
-- void *pMem,
-- unsigned long ulFlags,
-- unsigned long ulBytes,
-- unsigned long alPageAddress[],
-- PVR2DMEMINFO **ppsMemInfo);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DMemMap(PVR2DCONTEXTHANDLE hContext,
-- unsigned long ulFlags,
-- void *hPrivateMapData,
-- PVR2DMEMINFO **ppsDstMem);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DMemFree(PVR2DCONTEXTHANDLE hContext,
-- PVR2DMEMINFO *psMemInfo);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DBlt(PVR2DCONTEXTHANDLE hContext,
-- PVR2DBLTINFO *pBltInfo);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DBltClipped(PVR2DCONTEXTHANDLE hContext,
-- PVR2DBLTINFO *pBltInfo,
-- unsigned long ulNumClipRects,
-- PVR2DRECT *pClipRects);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DQueryBlitsComplete(PVR2DCONTEXTHANDLE hContext,
-- PVR2DMEMINFO *pMemInfo,
-- unsigned int uiWaitForComplete);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DSetPresentBltProperties(PVR2DCONTEXTHANDLE hContext,
-- unsigned long ulPropertyMask,
-- long lSrcStride,
-- unsigned long ulDstWidth,
-- unsigned long ulDstHeight,
-- long lDstXPos,
-- long lDstYPos,
-- unsigned long ulNumClipRects,
-- PVR2DRECT *pClipRects,
-- unsigned long ulSwapInterval);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DPresentBlt(PVR2DCONTEXTHANDLE hContext,
-- PVR2DMEMINFO *pMemInfo,
-- long lRenderID);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DCreateFlipChain(PVR2DCONTEXTHANDLE hContext,
-- unsigned long ulFlags,
-- unsigned long ulNumBuffers,
-- unsigned long ulWidth,
-- unsigned long ulHeight,
-- PVR2DFORMAT eFormat,
-- long *plStride,
-- unsigned long *pulFlipChainID,
-- PVR2DFLIPCHAINHANDLE *phFlipChain);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DDestroyFlipChain(PVR2DCONTEXTHANDLE hContext,
-- PVR2DFLIPCHAINHANDLE hFlipChain);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DGetFlipChainBuffers(PVR2DCONTEXTHANDLE hContext,
-- PVR2DFLIPCHAINHANDLE hFlipChain,
-- unsigned long *pulNumBuffers,
-- PVR2DMEMINFO *psMemInfo[]);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DSetPresentFlipProperties(PVR2DCONTEXTHANDLE hContext,
-- PVR2DFLIPCHAINHANDLE hFlipChain,
-- unsigned long ulPropertyMask,
-- long lDstXPos,
-- long lDstYPos,
-- unsigned long ulNumClipRects,
-- PVR2DRECT *pClipRects,
-- unsigned long ulSwapInterval);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DPresentFlip(PVR2DCONTEXTHANDLE hContext,
-- PVR2DFLIPCHAINHANDLE hFlipChain,
-- PVR2DMEMINFO *psMemInfo,
-- long lRenderID);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DGetAPIRev(long *lRevMajor, long *lRevMinor);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DLoadUseCode (const PVR2DCONTEXTHANDLE hContext, const unsigned char *pUseCode,
-- const unsigned long UseCodeSize, PVR2D_HANDLE *pUseCodeHandle);
--PVR2D_IMPORT
--PVR2DERROR PVR2DFreeUseCode (const PVR2DCONTEXTHANDLE hContext, const PVR2D_HANDLE hUseCodeHandle);
--
--PVR2D_IMPORT
--PVR2DERROR PVR2DBlt3D (const PVR2DCONTEXTHANDLE hContext, const PPVR2D_3DBLT pBlt3D);
--
--#ifdef __cplusplus
--}
--#endif
--
--#endif /* _PVR2D_H_ */
--
--/******************************************************************************
-- End of file (pvr2d.h)
--******************************************************************************/
-Index: qt-4.8.5/src/3rdparty/powervr/wsegl.h
-===================================================================
---- qt-4.8.5.orig/src/3rdparty/powervr/wsegl.h 2013-07-08 11:24:33.010516867 -0500
-+++ /dev/null 1970-01-01 00:00:00.000000000 +0000
-@@ -1,240 +0,0 @@
--/******************************************************************************
-- Name : wsegl.h
-- Copyright : Copyright (c) Imagination Technologies Limited.
-- This specification is protected by copyright laws and contains
-- material proprietary to Imagination Technologies Limited.
-- You may use and distribute this specification free of charge for implementing
-- the functionality therein, without altering or removing any trademark, copyright,
-- or other notice from the specification.
-- Platform : ANSI
--*****************************************************************************/
--
--
--#if !defined(__WSEGL_H__)
--#define __WSEGL_H__
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--/*
--// WSEGL Platform-specific definitions
--*/
--#define WSEGL_EXPORT
--#define WSEGL_IMPORT
--
--/*
--// WSEGL API Version Number
--*/
--
--#define WSEGL_VERSION 1
--#define WSEGL_DEFAULT_DISPLAY 0
--#define WSEGL_DEFAULT_NATIVE_ENGINE 0
--
--#define WSEGL_FALSE 0
--#define WSEGL_TRUE 1
--#define WSEGL_NULL 0
--
--#define WSEGL_UNREFERENCED_PARAMETER(param) (param) = (param)
--
--/*
--// WSEGL handles
--*/
--typedef void *WSEGLDisplayHandle;
--typedef void *WSEGLDrawableHandle;
--
--/*
--// Display capability type
--*/
--typedef enum WSEGLCapsType_TAG
--{
-- WSEGL_NO_CAPS = 0,
-- WSEGL_CAP_MIN_SWAP_INTERVAL = 1, /* System default value = 1 */
-- WSEGL_CAP_MAX_SWAP_INTERVAL = 2, /* System default value = 1 */
-- WSEGL_CAP_WINDOWS_USE_HW_SYNC = 3, /* System default value = 0 (FALSE) */
-- WSEGL_CAP_PIXMAPS_USE_HW_SYNC = 4, /* System default value = 0 (FALSE) */
--
--} WSEGLCapsType;
--
--/*
--// Display capability
--*/
--typedef struct WSEGLCaps_TAG
--{
-- WSEGLCapsType eCapsType;
-- unsigned long ui32CapsValue;
--
--} WSEGLCaps;
--
--/*
--// Drawable type
--*/
--#define WSEGL_NO_DRAWABLE 0x0
--#define WSEGL_DRAWABLE_WINDOW 0x1
--#define WSEGL_DRAWABLE_PIXMAP 0x2
--
--
--/*
--// Pixel format of display/drawable
--*/
--typedef enum WSEGLPixelFormat_TAG
--{
-- WSEGL_PIXELFORMAT_565 = 0,
-- WSEGL_PIXELFORMAT_4444 = 1,
-- WSEGL_PIXELFORMAT_8888 = 2,
-- WSEGL_PIXELFORMAT_1555 = 3
--
--} WSEGLPixelFormat;
--
--/*
--// Transparent of display/drawable
--*/
--typedef enum WSEGLTransparentType_TAG
--{
-- WSEGL_OPAQUE = 0,
-- WSEGL_COLOR_KEY = 1,
--
--} WSEGLTransparentType;
--
--/*
--// Display/drawable configuration
--*/
--typedef struct WSEGLConfig_TAG
--{
-- /*
-- // Type of drawables this configuration applies to -
-- // OR'd values of drawable types.
-- */
-- unsigned long ui32DrawableType;
--
-- /* Pixel format */
-- WSEGLPixelFormat ePixelFormat;
--
-- /* Native Renderable - set to WSEGL_TRUE if native renderable */
-- unsigned long ulNativeRenderable;
--
-- /* FrameBuffer Level Parameter */
-- unsigned long ulFrameBufferLevel;
--
-- /* Native Visual ID */
-- unsigned long ulNativeVisualID;
--
-- /* Native Visual */
-- void *hNativeVisual;
--
-- /* Transparent Type */
-- WSEGLTransparentType eTransparentType;
--
-- /* Transparent Color - only used if transparent type is COLOR_KEY */
-- unsigned long ulTransparentColor; /* packed as 0x00RRGGBB */
--
--
--} WSEGLConfig;
--
--/*
--// WSEGL errors
--*/
--typedef enum WSEGLError_TAG
--{
-- WSEGL_SUCCESS = 0,
-- WSEGL_CANNOT_INITIALISE = 1,
-- WSEGL_BAD_NATIVE_DISPLAY = 2,
-- WSEGL_BAD_NATIVE_WINDOW = 3,
-- WSEGL_BAD_NATIVE_PIXMAP = 4,
-- WSEGL_BAD_NATIVE_ENGINE = 5,
-- WSEGL_BAD_DRAWABLE = 6,
-- WSEGL_BAD_CONFIG = 7,
-- WSEGL_OUT_OF_MEMORY = 8
--
--} WSEGLError;
--
--/*
--// Drawable orientation (in degrees anti-clockwise)
--*/
--typedef enum WSEGLRotationAngle_TAG
--{
-- WSEGL_ROTATE_0 = 0,
-- WSEGL_ROTATE_90 = 1,
-- WSEGL_ROTATE_180 = 2,
-- WSEGL_ROTATE_270 = 3
--
--} WSEGLRotationAngle;
--
--/*
--// Drawable information required by OpenGL-ES driver
--*/
--typedef struct WSEGLDrawableParams_TAG
--{
-- /* Width in pixels of the drawable */
-- unsigned long ui32Width;
--
-- /* Height in pixels of the drawable */
-- unsigned long ui32Height;
--
-- /* Stride in pixels of the drawable */
-- unsigned long ui32Stride;
--
-- /* Pixel format of the drawable */
-- WSEGLPixelFormat ePixelFormat;
--
-- /* User space cpu virtual address of the drawable */
-- void *pvLinearAddress;
--
-- /* HW address of the drawable */
-- unsigned long ui32HWAddress;
--
-- /* Private data for the drawable */
-- void *hPrivateData;
--
--} WSEGLDrawableParams;
--
--
--/*
--// Table of function pointers that is returned by WSEGL_GetFunctionTablePointer()
--//
--// The first entry in the table is the version number of the wsegl.h header file that
--// the module has been written against, and should therefore be set to WSEGL_VERSION
--*/
--typedef struct WSEGL_FunctionTable_TAG
--{
-- unsigned long ui32WSEGLVersion;
--
-- WSEGLError (*pfnWSEGL_IsDisplayValid)(NativeDisplayType);
--
-- WSEGLError (*pfnWSEGL_InitialiseDisplay)(NativeDisplayType, WSEGLDisplayHandle *, const WSEGLCaps **, WSEGLConfig **);
--
-- WSEGLError (*pfnWSEGL_CloseDisplay)(WSEGLDisplayHandle);
--
-- WSEGLError (*pfnWSEGL_CreateWindowDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativeWindowType, WSEGLRotationAngle *);
--
-- WSEGLError (*pfnWSEGL_CreatePixmapDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativePixmapType, WSEGLRotationAngle *);
--
-- WSEGLError (*pfnWSEGL_DeleteDrawable)(WSEGLDrawableHandle);
--
-- WSEGLError (*pfnWSEGL_SwapDrawable)(WSEGLDrawableHandle, unsigned long);
--
-- WSEGLError (*pfnWSEGL_SwapControlInterval)(WSEGLDrawableHandle, unsigned long);
--
-- WSEGLError (*pfnWSEGL_WaitNative)(WSEGLDrawableHandle, unsigned long);
--
-- WSEGLError (*pfnWSEGL_CopyFromDrawable)(WSEGLDrawableHandle, NativePixmapType);
--
-- WSEGLError (*pfnWSEGL_CopyFromPBuffer)(void *, unsigned long, unsigned long, unsigned long, WSEGLPixelFormat, NativePixmapType);
--
-- WSEGLError (*pfnWSEGL_GetDrawableParameters)(WSEGLDrawableHandle, WSEGLDrawableParams *, WSEGLDrawableParams *);
--
--
--} WSEGL_FunctionTable;
--
--
--WSEGL_IMPORT const WSEGL_FunctionTable *WSEGL_GetFunctionTablePointer(void);
--
--#ifdef __cplusplus
--}
--#endif
--
--#endif /* __WSEGL_H__ */
--
--/******************************************************************************
-- End of file (wsegl.h)
--******************************************************************************/
-Index: qt-4.8.5/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c
-===================================================================
---- qt-4.8.5.orig/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c 2013-07-08 11:24:33.010516867 -0500
-+++ qt-4.8.5/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c 2013-07-08 11:28:26.142521123 -0500
-@@ -39,7 +39,7 @@
- **
- ****************************************************************************/
-
--#include <GLES/eglplatform.h>
-+#include <EGL/eglplatform.h>
- #include <wsegl.h>
- #include <pvr2d.h>
- #include <string.h>
-@@ -379,6 +379,20 @@
- return WSEGL_SUCCESS;
- }
-
-+/* Function stub for ConnectDrawable() */
-+static WSEGLError wseglConnectDrawable(WSEGLDrawableHandle hDrawable)
-+{
-+ WSEGL_UNREFERENCED_PARAMETER(hDrawable);
-+ return WSEGL_SUCCESS;
-+}
-+
-+/* Function stub for DisconnectDrawable() */
-+static WSEGLError wseglDisconnectDrawable(WSEGLDrawableHandle hDrawable)
-+{
-+ WSEGL_UNREFERENCED_PARAMETER(hDrawable);
-+ return WSEGL_SUCCESS;
-+}
-+
- static WSEGL_FunctionTable const wseglFunctions = {
- WSEGL_VERSION,
- wseglIsDisplayValid,
-@@ -392,7 +406,9 @@
- wseglWaitNative,
- wseglCopyFromDrawable,
- wseglCopyFromPBuffer,
-- wseglGetDrawableParameters
-+ wseglGetDrawableParameters,
-+ wseglConnectDrawable,
-+ wseglDisconnectDrawable
- };
-
- /* Return the table of WSEGL functions to the EGL implementation */
--- /dev/null
+Patch to remove obsolete powervr headers and instead use the headers provided
+on the system.
+
+Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>
+---
+Index: qt-4.8.5/src/3rdparty/powervr/pvr2d.h
+===================================================================
+--- qt-4.8.5.orig/src/3rdparty/powervr/pvr2d.h 2013-07-08 11:24:33.010516867 -0500
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,502 +0,0 @@
+-/*!****************************************************************************
+-@File pvr2d.h
+-@Title PVR2D external header file
+-@Author Imagination Technologies
+-@Copyright Copyright (c) by Imagination Technologies Limited.
+- This specification is protected by copyright laws and contains
+- material proprietary to Imagination Technologies Limited.
+- You may use and distribute this specification free of charge for implementing
+- the functionality therein, without altering or removing any trademark, copyright,
+- or other notice from the specification.
+-@Platform Generic
+-@Description PVR2D definitions for PVR2D clients
+-******************************************************************************/
+-
+-
+-/******************************************************************************
+-Modifications :-
+-$Log: pvr2d.h $
+-******************************************************************************/
+-
+-#ifndef _PVR2D_H_
+-#define _PVR2D_H_
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-/* PVR2D Platform-specific definitions */
+-#define PVR2D_EXPORT
+-#define PVR2D_IMPORT
+-
+-
+-#define PVR2D_REV_MAJOR 2
+-#define PVR2D_REV_MINOR 1
+-
+-typedef enum
+-{
+- PVR2D_FALSE = 0,
+- PVR2D_TRUE
+-} PVR2D_BOOL;
+-
+-
+-/* error codes */
+-typedef enum
+-{
+- PVR2D_OK = 0,
+- PVR2DERROR_INVALID_PARAMETER = -1,
+- PVR2DERROR_DEVICE_UNAVAILABLE = -2,
+- PVR2DERROR_INVALID_CONTEXT = -3,
+- PVR2DERROR_MEMORY_UNAVAILABLE = -4,
+- PVR2DERROR_DEVICE_NOT_PRESENT = -5,
+- PVR2DERROR_IOCTL_ERROR = -6,
+- PVR2DERROR_GENERIC_ERROR = -7,
+- PVR2DERROR_BLT_NOTCOMPLETE = -8,
+- PVR2DERROR_HW_FEATURE_NOT_SUPPORTED = -9,
+- PVR2DERROR_NOT_YET_IMPLEMENTED = -10,
+- PVR2DERROR_MAPPING_FAILED = -11
+-}PVR2DERROR;
+-
+-
+-/* pixel formats */
+-typedef enum
+-{
+- PVR2D_1BPP = 0,
+- PVR2D_RGB565,
+- PVR2D_ARGB4444,
+- PVR2D_RGB888,
+- PVR2D_ARGB8888,
+- PVR2D_ARGB1555,
+- PVR2D_ALPHA8,
+- PVR2D_ALPHA4,
+- PVR2D_PAL2,
+- PVR2D_PAL4,
+- PVR2D_PAL8,
+- PVR2D_VGAEMU
+-
+-}PVR2DFORMAT;
+-
+-
+-/* wrap surface type */
+-typedef enum
+-{
+- PVR2D_WRAPFLAG_NONCONTIGUOUS = 0,
+- PVR2D_WRAPFLAG_CONTIGUOUS = 1,
+-
+-}PVR2DWRAPFLAGS;
+-
+-/* flags for control information of additional blits */
+-typedef enum
+-{
+- PVR2D_BLIT_DISABLE_ALL = 0x0000, /* disable all additional controls */
+- PVR2D_BLIT_CK_ENABLE = 0x0001, /* enable colour key */
+- PVR2D_BLIT_GLOBAL_ALPHA_ENABLE = 0x0002, /* enable standard global alpha */
+- PVR2D_BLIT_PERPIXEL_ALPHABLEND_ENABLE = 0x0004, /* enable per-pixel alpha bleding */
+- PVR2D_BLIT_PAT_SURFACE_ENABLE = 0x0008, /* enable pattern surf (disable fill) */
+- PVR2D_BLIT_FULLY_SPECIFIED_ALPHA_ENABLE = 0x0010, /* enable fully specified alpha */
+- PVR2D_BLIT_ROT_90 = 0x0020, /* apply 90 degree rotation to the blt */
+- PVR2D_BLIT_ROT_180 = 0x0040, /* apply 180 degree rotation to the blt */
+- PVR2D_BLIT_ROT_270 = 0x0080, /* apply 270 degree rotation to the blt */
+- PVR2D_BLIT_COPYORDER_TL2BR = 0x0100, /* copy order overrides */
+- PVR2D_BLIT_COPYORDER_BR2TL = 0x0200,
+- PVR2D_BLIT_COPYORDER_TR2BL = 0x0400,
+- PVR2D_BLIT_COPYORDER_BL2TR = 0x0800,
+- PVR2D_BLIT_COLKEY_SOURCE = 0x1000, /* Key colour is on the source surface */
+- PVR2D_BLIT_COLKEY_DEST = 0x2000 /* Key colour is on the destination surface */
+-
+-} PVR2DBLITFLAGS;
+-
+-/* standard alpha-blending functions, AlphaBlendingFunc field of PVR2DBLTINFO */
+-typedef enum
+-{
+- PVR2D_ALPHA_OP_SRC_DSTINV = 1, /* source alpha : Cdst = Csrc*Asrc + Cdst*(1-Asrc) */
+- PVR2D_ALPHA_OP_SRCP_DSTINV = 2 /* premultiplied source alpha : Cdst = Csrc + Cdst*(1-Asrc) */
+-} PVR2D_ALPHABLENDFUNC;
+-
+-/* blend ops for fully specified alpha */
+-typedef enum
+-{
+- PVR2D_BLEND_OP_ZERO = 0,
+- PVR2D_BLEND_OP_ONE = 1,
+- PVR2D_BLEND_OP_SRC = 2,
+- PVR2D_BLEND_OP_DST = 3,
+- PVR2D_BLEND_OP_GLOBAL = 4,
+- PVR2D_BLEND_OP_SRC_PLUS_GLOBAL = 5,
+- PVR2D_BLEND_OP_DST_PLUS_GLOBAL = 6
+-}PVR2D_BLEND_OP;
+-
+-
+-typedef void* PVR2D_HANDLE;
+-
+-
+-/* Fully specified alpha blend : pAlpha field of PVR2DBLTINFO structure */
+-/* a fully specified Alpha Blend operation is defined as */
+-/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (ALPHA_3 * DST (ALPHA)) */
+-/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (ALPHA_4 * DST (RGB)) */
+-/* if the pre-multiplication stage is enabled then the equations become the following: */
+-/* PRE_MUL = ((SRC(A)) * (Global Alpha Value)) */
+-/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (PRE_MUL * DST (ALPHA)) */
+-/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (PRE_MUL * DST (RGB)) */
+-/* if the transparent source alpha stage is enabled then a source alpha of zero forces the */
+-/* source to be transparent for that pixel regardless of the blend equation being used. */
+-typedef struct _PVR2D_ALPHABLT
+-{
+- PVR2D_BLEND_OP eAlpha1;
+- PVR2D_BOOL bAlpha1Invert;
+- PVR2D_BLEND_OP eAlpha2;
+- PVR2D_BOOL bAlpha2Invert;
+- PVR2D_BLEND_OP eAlpha3;
+- PVR2D_BOOL bAlpha3Invert;
+- PVR2D_BLEND_OP eAlpha4;
+- PVR2D_BOOL bAlpha4Invert;
+- PVR2D_BOOL bPremulAlpha; /* enable pre-multiplication stage */
+- PVR2D_BOOL bTransAlpha; /* enable transparent source alpha stage */
+- PVR2D_BOOL bUpdateAlphaLookup; /* enable and update the 1555-Lookup alpha table */
+- unsigned char uAlphaLookup0; /* 8 bit alpha when A=0 in a 1555-Lookup surface */
+- unsigned char uAlphaLookup1; /* 8 bit alpha when A=1 in a 1555-Lookup surface */
+- unsigned char uGlobalRGB; /* Global Alpha Value for RGB, 0=transparent 255=opaque */
+- unsigned char uGlobalA; /* Global Alpha Value for Alpha */
+-
+-} PVR2D_ALPHABLT, *PPVR2D_ALPHABLT;
+-
+-
+-/* surface memory info structure */
+-typedef struct _PVR2DMEMINFO
+-{
+- void *pBase;
+- unsigned long ui32MemSize;
+- unsigned long ui32DevAddr;
+- unsigned long ulFlags;
+- void *hPrivateData;
+- void *hPrivateMapData;
+-
+-}PVR2DMEMINFO, *PPVR2DMEMINFO;
+-
+-
+-#define PVR2D_MAX_DEVICE_NAME 20
+-
+-typedef struct _PVR2DDEVICEINFO
+-{
+- unsigned long ulDevID;
+- char szDeviceName[PVR2D_MAX_DEVICE_NAME];
+-}PVR2DDEVICEINFO;
+-
+-
+-typedef struct _PVR2DISPLAYINFO
+-{
+- unsigned long ulMaxFlipChains;
+- unsigned long ulMaxBuffersInChain;
+- PVR2DFORMAT eFormat;
+- unsigned long ulWidth;
+- unsigned long ulHeight;
+- long lStride;
+- unsigned long ulMinFlipInterval;
+- unsigned long ulMaxFlipInterval;
+-
+-}PVR2DDISPLAYINFO;
+-
+-
+-typedef struct _PVR2DBLTINFO
+-{
+- unsigned long CopyCode; /* rop code */
+- unsigned long Colour; /* fill colour */
+- unsigned long ColourKey; /* colour key */
+- unsigned char GlobalAlphaValue; /* global alpha blending */
+- unsigned char AlphaBlendingFunc; /* per-pixel alpha-blending function */
+-
+- PVR2DBLITFLAGS BlitFlags; /* additional blit control information */
+-
+- PVR2DMEMINFO *pDstMemInfo; /* destination memory */
+- unsigned long DstOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */
+- long DstStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
+- long DstX, DstY; /* pixel offset from start of dest surface to start of blt rectangle */
+- long DSizeX,DSizeY; /* blt size */
+- PVR2DFORMAT DstFormat; /* dest format */
+- unsigned long DstSurfWidth; /* size of dest surface in pixels */
+- unsigned long DstSurfHeight; /* size of dest surface in pixels */
+-
+- PVR2DMEMINFO *pSrcMemInfo; /* source mem, (source fields are also used for patterns) */
+- unsigned long SrcOffset; /* byte offset from start of allocation to src/pat surface pixel 0,0 */
+- long SrcStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
+- long SrcX, SrcY; /* pixel offset from start of surface to start of source rectangle */
+- /* for patterns this is the start offset within the pattern */
+- long SizeX,SizeY; /* source rectangle size or pattern size in pixels */
+- PVR2DFORMAT SrcFormat; /* source/pattern format */
+- PVR2DMEMINFO *pPalMemInfo; /* source/pattern palette memory containing argb8888 colour table */
+- unsigned long PalOffset; /* byte offset from start of allocation to start of palette */
+- unsigned long SrcSurfWidth; /* size of source surface in pixels */
+- unsigned long SrcSurfHeight; /* size of source surface in pixels */
+-
+- PVR2DMEMINFO *pMaskMemInfo; /* mask memory, 1bpp format implied */
+- unsigned long MaskOffset; /* byte offset from start of allocation to mask surface pixel 0,0 */
+- long MaskStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */
+- long MaskX, MaskY; /* mask rect top left (mask size = blt size) */
+- unsigned long MaskSurfWidth; /* size of mask surface in pixels */
+- unsigned long MaskSurfHeight; /* size of mask surface in pixels */
+-
+- PPVR2D_ALPHABLT pAlpha; /* fully specified alpha blend */
+-
+-}PVR2DBLTINFO, *PPVR2DBLTINFO;
+-
+-typedef struct _PVR2DRECT
+-{
+- long left, top;
+- long right, bottom;
+-} PVR2DRECT;
+-
+-typedef struct
+-{
+- PVR2DMEMINFO *pSurfMemInfo; /* surface memory */
+- unsigned long SurfOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */
+- long Stride; /* signed stride */
+- PVR2DFORMAT Format;
+- unsigned long SurfWidth; /* surface size in pixels */
+- unsigned long SurfHeight;
+-
+-} PVR2D_SURFACE, *PPVR2D_SURFACE;
+-
+-typedef struct
+-{
+- unsigned long *pUseCode; /* USSE code */
+- unsigned long UseCodeSize; /* usse code size in bytes */
+-
+-} PVR2D_USECODE, *PPVR2D_USECODE;
+-
+-typedef struct
+-{
+- PVR2D_SURFACE sDst; /* destination surface */
+- PVR2D_SURFACE sSrc; /* source surface */
+- PVR2DRECT rcDest; /* destination rectangle */
+- PVR2DRECT rcSource; /* source rectangle */
+- PVR2D_HANDLE hUseCode; /* custom USE code (NULL implies source copy) */
+- unsigned long UseParams[2]; /* per-blt params for use code */
+-
+-} PVR2D_3DBLT, *PPVR2D_3DBLT;
+-
+-
+-#define MAKE_COPY_BLIT(src,soff,dest,doff,sx,sy,dx,dy,sz)
+-
+-typedef void* PVR2DCONTEXTHANDLE;
+-typedef void* PVR2DFLIPCHAINHANDLE;
+-
+-
+-// CopyCode field of PVR2DBLTINFO structure:
+-// the CopyCode field of the PVR2DBLTINFO structure should contain a rop3 or rop4 code.
+-// a rop3 is an 8 bit code that describes a blt with three inputs : source dest and pattern
+-// rop4 is a 16 bit code that describes a blt with four inputs : source dest pattern and mask
+-// common rop3 codes are defined below
+-// a colour fill blt is processed in the pattern channel as a constant colour with a rop code of 0xF0
+-// PVR2D_BLIT_PAT_SURFACE_ENABLE defines whether the pattern channel is a surface or a fill colour.
+-// a rop4 is defined by two rop3 codes, and the 1 bit-per-pixel mask surface defines which is used.
+-// a common rop4 is 0xAAF0 which is the mask copy blt used for text glyphs.
+-// CopyCode is taken to be a rop4 when pMaskMemInfo is non zero, otherwise it is assumed to be a rop3
+-// use the PVR2DMASKROP4 macro below to construct a rop4 from two rop3's
+-// rop3a is the rop used when mask pixel = 1, and rop3b when mask = 0
+-#define PVR2DROP4(rop3b, rop3a) ((rop3b<<8)|rop3a)
+-
+-/* common rop codes */
+-#define PVR2DROPclear 0x00 /* 0 (whiteness) */
+-#define PVR2DROPset 0xFF /* 1 (blackness) */
+-#define PVR2DROPnoop 0xAA /* dst (used for masked blts) */
+-
+-/* source and dest rop codes */
+-#define PVR2DROPand 0x88 /* src AND dst */
+-#define PVR2DROPandReverse 0x44 /* src AND NOT dst */
+-#define PVR2DROPcopy 0xCC /* src (used for source copy and alpha blts) */
+-#define PVR2DROPandInverted 0x22 /* NOT src AND dst */
+-#define PVR2DROPxor 0x66 /* src XOR dst */
+-#define PVR2DROPor 0xEE /* src OR dst */
+-#define PVR2DROPnor 0x11 /* NOT src AND NOT dst */
+-#define PVR2DROPequiv 0x99 /* NOT src XOR dst */
+-#define PVR2DROPinvert 0x55 /* NOT dst */
+-#define PVR2DROPorReverse 0xDD /* src OR NOT dst */
+-#define PVR2DROPcopyInverted 0x33 /* NOT src */
+-#define PVR2DROPorInverted 0xBB /* NOT src OR dst */
+-#define PVR2DROPnand 0x77 /* NOT src OR NOT dst */
+-
+-/* pattern rop codes */
+-#define PVR2DPATROPand 0xA0 /* pat AND dst */
+-#define PVR2DPATROPandReverse 0x50 /* pat AND NOT dst */
+-#define PVR2DPATROPcopy 0xF0 /* pat (used for solid color fills and pattern blts) */
+-#define PVR2DPATROPandInverted 0x0A /* NOT pat AND dst */
+-#define PVR2DPATROPxor 0x5A /* pat XOR dst */
+-#define PVR2DPATROPor 0xFA /* pat OR dst */
+-#define PVR2DPATROPnor 0x05 /* NOT pat AND NOT dst */
+-#define PVR2DPATROPequiv 0xA5 /* NOT pat XOR dst */
+-#define PVR2DPATROPinvert 0x55 /* NOT dst */
+-#define PVR2DPATROPorReverse 0xF5 /* pat OR NOT dst */
+-#define PVR2DPATROPcopyInverted 0x0F /* NOT pat */
+-#define PVR2DPATROPorInverted 0xAF /* NOT pat OR dst */
+-#define PVR2DPATROPnand 0x5F /* NOT pat OR NOT dst */
+-
+-/* common rop4 codes */
+-#define PVR2DROP4MaskedCopy PVR2DROP4(PVR2DROPnoop,PVR2DROPcopy) /* masked source copy blt (used for rounded window corners etc) */
+-#define PVR2DROP4MaskedFill PVR2DROP4(PVR2DROPnoop,PVR2DPATROPcopy) /* masked colour fill blt (used for text) */
+-
+-/* Legacy support */
+-#define PVR2DROP3_PATMASK PVR2DPATROPcopy
+-#define PVR2DROP3_SRCMASK PVR2DROPcopy
+-
+-/* pixmap memory alignment */
+-#define PVR2D_ALIGNMENT_4 4 /* DWORD alignment */
+-#define PVR2D_ALIGNMENT_ANY 0 /* no alignment */
+-#define PVR2D_ALIGNMENT_PALETTE 16 /* 16 byte alignment is required for palettes */
+-
+-/* Heap number for PVR2DGetFrameBuffer */
+-#define PVR2D_FB_PRIMARY_SURFACE 0
+-
+-#define PVR2D_PRESENT_PROPERTY_SRCSTRIDE (1 << 0)
+-#define PVR2D_PRESENT_PROPERTY_DSTSIZE (1 << 1)
+-#define PVR2D_PRESENT_PROPERTY_DSTPOS (1 << 2)
+-#define PVR2D_PRESENT_PROPERTY_CLIPRECTS (1 << 3)
+-#define PVR2D_PRESENT_PROPERTY_INTERVAL (1 << 4)
+-
+-
+-#define PVR2D_CREATE_FLIPCHAIN_SHARED (1 << 0)
+-#define PVR2D_CREATE_FLIPCHAIN_QUERY (1 << 1)
+-
+-/* Functions that the library exports */
+-
+-PVR2D_IMPORT
+-int PVR2DEnumerateDevices(PVR2DDEVICEINFO *pDevInfo);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DCreateDeviceContext(unsigned long ulDevID,
+- PVR2DCONTEXTHANDLE* phContext,
+- unsigned long ulFlags);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DDestroyDeviceContext(PVR2DCONTEXTHANDLE hContext);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DGetDeviceInfo(PVR2DCONTEXTHANDLE hContext,
+- PVR2DDISPLAYINFO *pDisplayInfo);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DGetScreenMode(PVR2DCONTEXTHANDLE hContext,
+- PVR2DFORMAT *pFormat,
+- long *plWidth,
+- long *plHeight,
+- long *plStride,
+- int *piRefreshRate);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DGetFrameBuffer(PVR2DCONTEXTHANDLE hContext,
+- int nHeap,
+- PVR2DMEMINFO **ppsMemInfo);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DMemAlloc(PVR2DCONTEXTHANDLE hContext,
+- unsigned long ulBytes,
+- unsigned long ulAlign,
+- unsigned long ulFlags,
+- PVR2DMEMINFO **ppsMemInfo);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DMemWrap(PVR2DCONTEXTHANDLE hContext,
+- void *pMem,
+- unsigned long ulFlags,
+- unsigned long ulBytes,
+- unsigned long alPageAddress[],
+- PVR2DMEMINFO **ppsMemInfo);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DMemMap(PVR2DCONTEXTHANDLE hContext,
+- unsigned long ulFlags,
+- void *hPrivateMapData,
+- PVR2DMEMINFO **ppsDstMem);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DMemFree(PVR2DCONTEXTHANDLE hContext,
+- PVR2DMEMINFO *psMemInfo);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DBlt(PVR2DCONTEXTHANDLE hContext,
+- PVR2DBLTINFO *pBltInfo);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DBltClipped(PVR2DCONTEXTHANDLE hContext,
+- PVR2DBLTINFO *pBltInfo,
+- unsigned long ulNumClipRects,
+- PVR2DRECT *pClipRects);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DQueryBlitsComplete(PVR2DCONTEXTHANDLE hContext,
+- PVR2DMEMINFO *pMemInfo,
+- unsigned int uiWaitForComplete);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DSetPresentBltProperties(PVR2DCONTEXTHANDLE hContext,
+- unsigned long ulPropertyMask,
+- long lSrcStride,
+- unsigned long ulDstWidth,
+- unsigned long ulDstHeight,
+- long lDstXPos,
+- long lDstYPos,
+- unsigned long ulNumClipRects,
+- PVR2DRECT *pClipRects,
+- unsigned long ulSwapInterval);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DPresentBlt(PVR2DCONTEXTHANDLE hContext,
+- PVR2DMEMINFO *pMemInfo,
+- long lRenderID);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DCreateFlipChain(PVR2DCONTEXTHANDLE hContext,
+- unsigned long ulFlags,
+- unsigned long ulNumBuffers,
+- unsigned long ulWidth,
+- unsigned long ulHeight,
+- PVR2DFORMAT eFormat,
+- long *plStride,
+- unsigned long *pulFlipChainID,
+- PVR2DFLIPCHAINHANDLE *phFlipChain);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DDestroyFlipChain(PVR2DCONTEXTHANDLE hContext,
+- PVR2DFLIPCHAINHANDLE hFlipChain);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DGetFlipChainBuffers(PVR2DCONTEXTHANDLE hContext,
+- PVR2DFLIPCHAINHANDLE hFlipChain,
+- unsigned long *pulNumBuffers,
+- PVR2DMEMINFO *psMemInfo[]);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DSetPresentFlipProperties(PVR2DCONTEXTHANDLE hContext,
+- PVR2DFLIPCHAINHANDLE hFlipChain,
+- unsigned long ulPropertyMask,
+- long lDstXPos,
+- long lDstYPos,
+- unsigned long ulNumClipRects,
+- PVR2DRECT *pClipRects,
+- unsigned long ulSwapInterval);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DPresentFlip(PVR2DCONTEXTHANDLE hContext,
+- PVR2DFLIPCHAINHANDLE hFlipChain,
+- PVR2DMEMINFO *psMemInfo,
+- long lRenderID);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DGetAPIRev(long *lRevMajor, long *lRevMinor);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DLoadUseCode (const PVR2DCONTEXTHANDLE hContext, const unsigned char *pUseCode,
+- const unsigned long UseCodeSize, PVR2D_HANDLE *pUseCodeHandle);
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DFreeUseCode (const PVR2DCONTEXTHANDLE hContext, const PVR2D_HANDLE hUseCodeHandle);
+-
+-PVR2D_IMPORT
+-PVR2DERROR PVR2DBlt3D (const PVR2DCONTEXTHANDLE hContext, const PPVR2D_3DBLT pBlt3D);
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif /* _PVR2D_H_ */
+-
+-/******************************************************************************
+- End of file (pvr2d.h)
+-******************************************************************************/
+Index: qt-4.8.5/src/3rdparty/powervr/wsegl.h
+===================================================================
+--- qt-4.8.5.orig/src/3rdparty/powervr/wsegl.h 2013-07-08 11:24:33.010516867 -0500
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,240 +0,0 @@
+-/******************************************************************************
+- Name : wsegl.h
+- Copyright : Copyright (c) Imagination Technologies Limited.
+- This specification is protected by copyright laws and contains
+- material proprietary to Imagination Technologies Limited.
+- You may use and distribute this specification free of charge for implementing
+- the functionality therein, without altering or removing any trademark, copyright,
+- or other notice from the specification.
+- Platform : ANSI
+-*****************************************************************************/
+-
+-
+-#if !defined(__WSEGL_H__)
+-#define __WSEGL_H__
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-/*
+-// WSEGL Platform-specific definitions
+-*/
+-#define WSEGL_EXPORT
+-#define WSEGL_IMPORT
+-
+-/*
+-// WSEGL API Version Number
+-*/
+-
+-#define WSEGL_VERSION 1
+-#define WSEGL_DEFAULT_DISPLAY 0
+-#define WSEGL_DEFAULT_NATIVE_ENGINE 0
+-
+-#define WSEGL_FALSE 0
+-#define WSEGL_TRUE 1
+-#define WSEGL_NULL 0
+-
+-#define WSEGL_UNREFERENCED_PARAMETER(param) (param) = (param)
+-
+-/*
+-// WSEGL handles
+-*/
+-typedef void *WSEGLDisplayHandle;
+-typedef void *WSEGLDrawableHandle;
+-
+-/*
+-// Display capability type
+-*/
+-typedef enum WSEGLCapsType_TAG
+-{
+- WSEGL_NO_CAPS = 0,
+- WSEGL_CAP_MIN_SWAP_INTERVAL = 1, /* System default value = 1 */
+- WSEGL_CAP_MAX_SWAP_INTERVAL = 2, /* System default value = 1 */
+- WSEGL_CAP_WINDOWS_USE_HW_SYNC = 3, /* System default value = 0 (FALSE) */
+- WSEGL_CAP_PIXMAPS_USE_HW_SYNC = 4, /* System default value = 0 (FALSE) */
+-
+-} WSEGLCapsType;
+-
+-/*
+-// Display capability
+-*/
+-typedef struct WSEGLCaps_TAG
+-{
+- WSEGLCapsType eCapsType;
+- unsigned long ui32CapsValue;
+-
+-} WSEGLCaps;
+-
+-/*
+-// Drawable type
+-*/
+-#define WSEGL_NO_DRAWABLE 0x0
+-#define WSEGL_DRAWABLE_WINDOW 0x1
+-#define WSEGL_DRAWABLE_PIXMAP 0x2
+-
+-
+-/*
+-// Pixel format of display/drawable
+-*/
+-typedef enum WSEGLPixelFormat_TAG
+-{
+- WSEGL_PIXELFORMAT_565 = 0,
+- WSEGL_PIXELFORMAT_4444 = 1,
+- WSEGL_PIXELFORMAT_8888 = 2,
+- WSEGL_PIXELFORMAT_1555 = 3
+-
+-} WSEGLPixelFormat;
+-
+-/*
+-// Transparent of display/drawable
+-*/
+-typedef enum WSEGLTransparentType_TAG
+-{
+- WSEGL_OPAQUE = 0,
+- WSEGL_COLOR_KEY = 1,
+-
+-} WSEGLTransparentType;
+-
+-/*
+-// Display/drawable configuration
+-*/
+-typedef struct WSEGLConfig_TAG
+-{
+- /*
+- // Type of drawables this configuration applies to -
+- // OR'd values of drawable types.
+- */
+- unsigned long ui32DrawableType;
+-
+- /* Pixel format */
+- WSEGLPixelFormat ePixelFormat;
+-
+- /* Native Renderable - set to WSEGL_TRUE if native renderable */
+- unsigned long ulNativeRenderable;
+-
+- /* FrameBuffer Level Parameter */
+- unsigned long ulFrameBufferLevel;
+-
+- /* Native Visual ID */
+- unsigned long ulNativeVisualID;
+-
+- /* Native Visual */
+- void *hNativeVisual;
+-
+- /* Transparent Type */
+- WSEGLTransparentType eTransparentType;
+-
+- /* Transparent Color - only used if transparent type is COLOR_KEY */
+- unsigned long ulTransparentColor; /* packed as 0x00RRGGBB */
+-
+-
+-} WSEGLConfig;
+-
+-/*
+-// WSEGL errors
+-*/
+-typedef enum WSEGLError_TAG
+-{
+- WSEGL_SUCCESS = 0,
+- WSEGL_CANNOT_INITIALISE = 1,
+- WSEGL_BAD_NATIVE_DISPLAY = 2,
+- WSEGL_BAD_NATIVE_WINDOW = 3,
+- WSEGL_BAD_NATIVE_PIXMAP = 4,
+- WSEGL_BAD_NATIVE_ENGINE = 5,
+- WSEGL_BAD_DRAWABLE = 6,
+- WSEGL_BAD_CONFIG = 7,
+- WSEGL_OUT_OF_MEMORY = 8
+-
+-} WSEGLError;
+-
+-/*
+-// Drawable orientation (in degrees anti-clockwise)
+-*/
+-typedef enum WSEGLRotationAngle_TAG
+-{
+- WSEGL_ROTATE_0 = 0,
+- WSEGL_ROTATE_90 = 1,
+- WSEGL_ROTATE_180 = 2,
+- WSEGL_ROTATE_270 = 3
+-
+-} WSEGLRotationAngle;
+-
+-/*
+-// Drawable information required by OpenGL-ES driver
+-*/
+-typedef struct WSEGLDrawableParams_TAG
+-{
+- /* Width in pixels of the drawable */
+- unsigned long ui32Width;
+-
+- /* Height in pixels of the drawable */
+- unsigned long ui32Height;
+-
+- /* Stride in pixels of the drawable */
+- unsigned long ui32Stride;
+-
+- /* Pixel format of the drawable */
+- WSEGLPixelFormat ePixelFormat;
+-
+- /* User space cpu virtual address of the drawable */
+- void *pvLinearAddress;
+-
+- /* HW address of the drawable */
+- unsigned long ui32HWAddress;
+-
+- /* Private data for the drawable */
+- void *hPrivateData;
+-
+-} WSEGLDrawableParams;
+-
+-
+-/*
+-// Table of function pointers that is returned by WSEGL_GetFunctionTablePointer()
+-//
+-// The first entry in the table is the version number of the wsegl.h header file that
+-// the module has been written against, and should therefore be set to WSEGL_VERSION
+-*/
+-typedef struct WSEGL_FunctionTable_TAG
+-{
+- unsigned long ui32WSEGLVersion;
+-
+- WSEGLError (*pfnWSEGL_IsDisplayValid)(NativeDisplayType);
+-
+- WSEGLError (*pfnWSEGL_InitialiseDisplay)(NativeDisplayType, WSEGLDisplayHandle *, const WSEGLCaps **, WSEGLConfig **);
+-
+- WSEGLError (*pfnWSEGL_CloseDisplay)(WSEGLDisplayHandle);
+-
+- WSEGLError (*pfnWSEGL_CreateWindowDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativeWindowType, WSEGLRotationAngle *);
+-
+- WSEGLError (*pfnWSEGL_CreatePixmapDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativePixmapType, WSEGLRotationAngle *);
+-
+- WSEGLError (*pfnWSEGL_DeleteDrawable)(WSEGLDrawableHandle);
+-
+- WSEGLError (*pfnWSEGL_SwapDrawable)(WSEGLDrawableHandle, unsigned long);
+-
+- WSEGLError (*pfnWSEGL_SwapControlInterval)(WSEGLDrawableHandle, unsigned long);
+-
+- WSEGLError (*pfnWSEGL_WaitNative)(WSEGLDrawableHandle, unsigned long);
+-
+- WSEGLError (*pfnWSEGL_CopyFromDrawable)(WSEGLDrawableHandle, NativePixmapType);
+-
+- WSEGLError (*pfnWSEGL_CopyFromPBuffer)(void *, unsigned long, unsigned long, unsigned long, WSEGLPixelFormat, NativePixmapType);
+-
+- WSEGLError (*pfnWSEGL_GetDrawableParameters)(WSEGLDrawableHandle, WSEGLDrawableParams *, WSEGLDrawableParams *);
+-
+-
+-} WSEGL_FunctionTable;
+-
+-
+-WSEGL_IMPORT const WSEGL_FunctionTable *WSEGL_GetFunctionTablePointer(void);
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif /* __WSEGL_H__ */
+-
+-/******************************************************************************
+- End of file (wsegl.h)
+-******************************************************************************/
+Index: qt-4.8.5/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c
+===================================================================
+--- qt-4.8.5.orig/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c 2013-07-08 11:24:33.010516867 -0500
++++ qt-4.8.5/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c 2013-07-08 11:28:26.142521123 -0500
+@@ -39,7 +39,7 @@
+ **
+ ****************************************************************************/
+
+-#include <GLES/eglplatform.h>
++#include <EGL/eglplatform.h>
+ #include <wsegl.h>
+ #include <pvr2d.h>
+ #include <string.h>
+@@ -379,6 +379,20 @@
+ return WSEGL_SUCCESS;
+ }
+
++/* Function stub for ConnectDrawable() */
++static WSEGLError wseglConnectDrawable(WSEGLDrawableHandle hDrawable)
++{
++ WSEGL_UNREFERENCED_PARAMETER(hDrawable);
++ return WSEGL_SUCCESS;
++}
++
++/* Function stub for DisconnectDrawable() */
++static WSEGLError wseglDisconnectDrawable(WSEGLDrawableHandle hDrawable)
++{
++ WSEGL_UNREFERENCED_PARAMETER(hDrawable);
++ return WSEGL_SUCCESS;
++}
++
+ static WSEGL_FunctionTable const wseglFunctions = {
+ WSEGL_VERSION,
+ wseglIsDisplayValid,
+@@ -392,7 +406,9 @@
+ wseglWaitNative,
+ wseglCopyFromDrawable,
+ wseglCopyFromPBuffer,
+- wseglGetDrawableParameters
++ wseglGetDrawableParameters,
++ wseglConnectDrawable,
++ wseglDisconnectDrawable
+ };
+
+ /* Return the table of WSEGL functions to the EGL implementation */
+++ /dev/null
-From d4d07dac01796b2aa0fb501c14865cab7e42b3a9 Mon Sep 17 00:00:00 2001
-From: Mischa Jonker <mischa.jonker@synopsys.com>
-Date: Sun, 4 Nov 2012 11:42:04 +0100
-Subject: [PATCH] Fix const-related build error in generic atomic ops
-
-It's still not entirely const-correct though. In all other architectures
-this is obfuscated through the use of inline asm (which the compiler
-doesn't check). This patch obfuscates through const_cast
----
- src/corelib/arch/generic/qatomic_generic_unix.cpp | 8 ++++----
- src/corelib/arch/qatomic_generic.h | 2 +-
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/corelib/arch/generic/qatomic_generic_unix.cpp b/src/corelib/arch/generic/qatomic_generic_unix.cpp
-index 1c6cbf0..6fce81d 100644
---- a/src/corelib/arch/generic/qatomic_generic_unix.cpp
-+++ b/src/corelib/arch/generic/qatomic_generic_unix.cpp
-@@ -85,13 +85,13 @@ int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd)
-
- Q_CORE_EXPORT
- bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value,
-- void *expectedValue,
-- void *newValue)
-+ const void *expectedValue,
-+ const void *newValue)
- {
- bool returnValue = false;
- pthread_mutex_lock(&qAtomicMutex);
- if (*_q_value == expectedValue) {
-- *_q_value = newValue;
-+ *_q_value = const_cast<void*>(newValue);
- returnValue = true;
- }
- pthread_mutex_unlock(&qAtomicMutex);
-diff --git a/src/corelib/arch/qatomic_generic.h b/src/corelib/arch/qatomic_generic.h
-index 621a767..4c14679 100644
---- a/src/corelib/arch/qatomic_generic.h
-+++ b/src/corelib/arch/qatomic_generic.h
-@@ -105,7 +105,7 @@ Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetOrdered(volatile int *, int, int);
- Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int);
- Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int);
-
--Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *);
-+Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, const void *, const void *);
- Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *);
- Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff);
-
---
-1.7.0.4
-
--- /dev/null
+From d4d07dac01796b2aa0fb501c14865cab7e42b3a9 Mon Sep 17 00:00:00 2001
+From: Mischa Jonker <mischa.jonker@synopsys.com>
+Date: Sun, 4 Nov 2012 11:42:04 +0100
+Subject: [PATCH] Fix const-related build error in generic atomic ops
+
+It's still not entirely const-correct though. In all other architectures
+this is obfuscated through the use of inline asm (which the compiler
+doesn't check). This patch obfuscates through const_cast
+---
+ src/corelib/arch/generic/qatomic_generic_unix.cpp | 8 ++++----
+ src/corelib/arch/qatomic_generic.h | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/corelib/arch/generic/qatomic_generic_unix.cpp b/src/corelib/arch/generic/qatomic_generic_unix.cpp
+index 1c6cbf0..6fce81d 100644
+--- a/src/corelib/arch/generic/qatomic_generic_unix.cpp
++++ b/src/corelib/arch/generic/qatomic_generic_unix.cpp
+@@ -85,13 +85,13 @@ int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd)
+
+ Q_CORE_EXPORT
+ bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value,
+- void *expectedValue,
+- void *newValue)
++ const void *expectedValue,
++ const void *newValue)
+ {
+ bool returnValue = false;
+ pthread_mutex_lock(&qAtomicMutex);
+ if (*_q_value == expectedValue) {
+- *_q_value = newValue;
++ *_q_value = const_cast<void*>(newValue);
+ returnValue = true;
+ }
+ pthread_mutex_unlock(&qAtomicMutex);
+diff --git a/src/corelib/arch/qatomic_generic.h b/src/corelib/arch/qatomic_generic.h
+index 621a767..4c14679 100644
+--- a/src/corelib/arch/qatomic_generic.h
++++ b/src/corelib/arch/qatomic_generic.h
+@@ -105,7 +105,7 @@ Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetOrdered(volatile int *, int, int);
+ Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int);
+ Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int);
+
+-Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *);
++Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, const void *, const void *);
+ Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *);
+ Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff);
+
+--
+1.7.0.4
+
+++ /dev/null
-Add pthred_getattr_np / phread_attr_getstrack alternatives for uClibc
-
-Based on https://dev.openwrt.org/log/packages/Xorg/lib/qt4/patches/100-fix-webkit-for-uclibc.patch?rev=20371
-
-Signed-off-by: Johan Sagaert <sagaert.johan@skynet.be>
----
- src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp | 61 ++++++++++
- 1 file changed, 61 insertions(+)
-
-Index: qt-everywhere-opensource-src-4.8.1/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
-===================================================================
---- qt-everywhere-opensource-src-4.8.1.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
-+++ qt-everywhere-opensource-src-4.8.1/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
-@@ -70,6 +70,23 @@
- #endif
- #include <unistd.h>
-
-+#if defined(QT_LINUXBASE)
-+#include <dlfcn.h>
-+#endif
-+
-+#if defined(__UCLIBC__)
-+// versions of uClibc 0.9.32 and below with linuxthreads.old do not have
-+// pthread_getattr_np or pthread_attr_getstack.
-+#if __UCLIBC_MAJOR__ == 0 && \
-+ (__UCLIBC_MINOR__ < 9 || \
-+ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 32)) && \
-+ defined(__LINUXTHREADS_OLD__)
-+#define UCLIBC_USE_PROC_SELF_MAPS 1
-+#include <stdio_ext.h>
-+extern int *__libc_stack_end;
-+#endif
-+#endif
-+
- #if OS(SOLARIS)
- #include <thread.h>
- #else
-@@ -648,6 +665,37 @@
- get_thread_info(find_thread(NULL), &threadInfo);
- return threadInfo.stack_end;
- #elif OS(UNIX)
-+#ifdef UCLIBC_USE_PROC_SELF_MAPS
-+ // Read /proc/self/maps and locate the line whose address
-+ // range contains __libc_stack_end.
-+ FILE *file = fopen("/proc/self/maps", "r");
-+ if (!file)
-+ return 0;
-+ __fsetlocking(file, FSETLOCKING_BYCALLER);
-+ char *line = NULL;
-+ size_t lineLen = 0;
-+ while (!feof_unlocked(file)) {
-+ if (getdelim(&line, &lineLen, '\n', file) <= 0)
-+ break;
-+
-+ long from;
-+ long to;
-+ if (sscanf (line, "%lx-%lx", &from, &to) != 2)
-+ continue;
-+ if (from <= (long)__libc_stack_end && (long)__libc_stack_end < to) {
-+ fclose(file);
-+ free(line);
-+#ifdef _STACK_GROWS_UP
-+ return (void *)from;
-+#else
-+ return (void *)to;
-+#endif
-+ }
-+ }
-+ fclose(file);
-+ free(line);
-+ return 0;
-+#else
- AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex);
- MutexLocker locker(mutex);
- static void* stackBase = 0;
-@@ -655,11 +703,23 @@
- static pthread_t stackThread;
- pthread_t thread = pthread_self();
- if (stackBase == 0 || thread != stackThread) {
-+
-+#if defined(QT_LINUXBASE)
-+ // LinuxBase is missing pthread_getattr_np - resolve it once at runtime instead
-+ // see http://bugs.linuxbase.org/show_bug.cgi?id=2364
-+ typedef int (*GetAttrPtr)(pthread_t, pthread_attr_t *);
-+ static int (*pthread_getattr_np_ptr)(pthread_t, pthread_attr_t *) = 0;
-+ if (!pthread_getattr_np_ptr)
-+ *(void **)&pthread_getattr_np_ptr = dlsym(RTLD_DEFAULT, "pthread_getattr_np");
-+#endif
- pthread_attr_t sattr;
- pthread_attr_init(&sattr);
- #if HAVE(PTHREAD_NP_H) || OS(NETBSD)
- // e.g. on FreeBSD 5.4, neundorf@kde.org
- pthread_attr_get_np(thread, &sattr);
-+#elif defined(QT_LINUXBASE)
-+ if (pthread_getattr_np_ptr)
-+ pthread_getattr_np_ptr(thread, &sattr);
- #else
- // FIXME: this function is non-portable; other POSIX systems may have different np alternatives
- pthread_getattr_np(thread, &sattr);
-@@ -671,6 +731,7 @@
- stackThread = thread;
- }
- return static_cast<char*>(stackBase) + stackSize;
-+#endif
- #else
- #error Need a way to get the stack base on this platform
- #endif
--- /dev/null
+Add pthred_getattr_np / phread_attr_getstrack alternatives for uClibc
+
+Based on https://dev.openwrt.org/log/packages/Xorg/lib/qt4/patches/100-fix-webkit-for-uclibc.patch?rev=20371
+
+Signed-off-by: Johan Sagaert <sagaert.johan@skynet.be>
+---
+ src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp | 61 ++++++++++
+ 1 file changed, 61 insertions(+)
+
+Index: qt-everywhere-opensource-src-4.8.1/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
+===================================================================
+--- qt-everywhere-opensource-src-4.8.1.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
++++ qt-everywhere-opensource-src-4.8.1/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
+@@ -70,6 +70,23 @@
+ #endif
+ #include <unistd.h>
+
++#if defined(QT_LINUXBASE)
++#include <dlfcn.h>
++#endif
++
++#if defined(__UCLIBC__)
++// versions of uClibc 0.9.32 and below with linuxthreads.old do not have
++// pthread_getattr_np or pthread_attr_getstack.
++#if __UCLIBC_MAJOR__ == 0 && \
++ (__UCLIBC_MINOR__ < 9 || \
++ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 32)) && \
++ defined(__LINUXTHREADS_OLD__)
++#define UCLIBC_USE_PROC_SELF_MAPS 1
++#include <stdio_ext.h>
++extern int *__libc_stack_end;
++#endif
++#endif
++
+ #if OS(SOLARIS)
+ #include <thread.h>
+ #else
+@@ -648,6 +665,37 @@
+ get_thread_info(find_thread(NULL), &threadInfo);
+ return threadInfo.stack_end;
+ #elif OS(UNIX)
++#ifdef UCLIBC_USE_PROC_SELF_MAPS
++ // Read /proc/self/maps and locate the line whose address
++ // range contains __libc_stack_end.
++ FILE *file = fopen("/proc/self/maps", "r");
++ if (!file)
++ return 0;
++ __fsetlocking(file, FSETLOCKING_BYCALLER);
++ char *line = NULL;
++ size_t lineLen = 0;
++ while (!feof_unlocked(file)) {
++ if (getdelim(&line, &lineLen, '\n', file) <= 0)
++ break;
++
++ long from;
++ long to;
++ if (sscanf (line, "%lx-%lx", &from, &to) != 2)
++ continue;
++ if (from <= (long)__libc_stack_end && (long)__libc_stack_end < to) {
++ fclose(file);
++ free(line);
++#ifdef _STACK_GROWS_UP
++ return (void *)from;
++#else
++ return (void *)to;
++#endif
++ }
++ }
++ fclose(file);
++ free(line);
++ return 0;
++#else
+ AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex);
+ MutexLocker locker(mutex);
+ static void* stackBase = 0;
+@@ -655,11 +703,23 @@
+ static pthread_t stackThread;
+ pthread_t thread = pthread_self();
+ if (stackBase == 0 || thread != stackThread) {
++
++#if defined(QT_LINUXBASE)
++ // LinuxBase is missing pthread_getattr_np - resolve it once at runtime instead
++ // see http://bugs.linuxbase.org/show_bug.cgi?id=2364
++ typedef int (*GetAttrPtr)(pthread_t, pthread_attr_t *);
++ static int (*pthread_getattr_np_ptr)(pthread_t, pthread_attr_t *) = 0;
++ if (!pthread_getattr_np_ptr)
++ *(void **)&pthread_getattr_np_ptr = dlsym(RTLD_DEFAULT, "pthread_getattr_np");
++#endif
+ pthread_attr_t sattr;
+ pthread_attr_init(&sattr);
+ #if HAVE(PTHREAD_NP_H) || OS(NETBSD)
+ // e.g. on FreeBSD 5.4, neundorf@kde.org
+ pthread_attr_get_np(thread, &sattr);
++#elif defined(QT_LINUXBASE)
++ if (pthread_getattr_np_ptr)
++ pthread_getattr_np_ptr(thread, &sattr);
+ #else
+ // FIXME: this function is non-portable; other POSIX systems may have different np alternatives
+ pthread_getattr_np(thread, &sattr);
+@@ -671,6 +731,7 @@
+ stackThread = thread;
+ }
+ return static_cast<char*>(stackBase) + stackSize;
++#endif
+ #else
+ #error Need a way to get the stack base on this platform
+ #endif
+++ /dev/null
-[PATCH] fix build with script+dbus enabled, but no gui
-
-The script/qtdbus plugin doesn't need gui support, so don't try to
-link it against libQtGui.
-
-Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
----
- src/plugins/script/qtdbus/qtdbus.pro | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: qt-4.7.3/src/plugins/script/qtdbus/qtdbus.pro
-===================================================================
---- qt-4.7.3.orig/src/plugins/script/qtdbus/qtdbus.pro
-+++ qt-4.7.3/src/plugins/script/qtdbus/qtdbus.pro
-@@ -1,6 +1,6 @@
- TARGET = qtscriptdbus
- include(../../qpluginbase.pri)
--QT = core gui script
-+QT = core script
- CONFIG += qdbus
-
- SOURCES += main.cpp
+++ /dev/null
-From a695eec2ef21240bbc6cd8cd1bdbab76f8da8dfd Mon Sep 17 00:00:00 2001
-From: Vineet Gupta <vgupta@synopsys.com>
-Date: Wed, 20 May 2015 10:37:25 +0300
-Subject: [PATCH 1/2] Add initial support of ARC architecture
-
-DesignWare ARC 700 and ARC HS38 are families of 32-bit CPUs
-developed by Synopsys, Inc.
-
-This change implements following:
- [1] Defines ARC as one embedded targets
- [2] Defines default tools prefixed for ARC like
- arc-linux-g++ etc
- [3] Defines "inotify" syscall numbers for ARC
- (note ARC fully compliant to Linux UAPI headers)
- [4] Disables 16-bit aligned data access
-
-For now we're using generic atomic ops even though it may
-introduce performance panalty.
-
-Change-Id: I91e879ac55c2f3643a544f97cd59671a81ccc3c2
-
-This patch was submited in upstream Qt4 and if it ever gets accepted,
-it should be removed from Buildroot.
-
-https://codereview.qt-project.org/#/c/112667
----
- configure | 6 ++++
- mkspecs/qws/linux-arc-g++/qmake.conf | 21 ++++++++++++++
- mkspecs/qws/linux-arc-g++/qplatformdefs.h | 42 +++++++++++++++++++++++++++
- src/corelib/arch/qatomic_arch.h | 2 ++
- src/corelib/io/qfilesystemwatcher_inotify.cpp | 5 ++++
- src/gui/painting/qblendfunctions.cpp | 4 +--
- 6 files changed, 78 insertions(+), 2 deletions(-)
- create mode 100644 mkspecs/qws/linux-arc-g++/qmake.conf
- create mode 100644 mkspecs/qws/linux-arc-g++/qplatformdefs.h
-
-diff --git a/configure b/configure
-index 10ad7ca..c7ef074 100755
---- a/configure
-+++ b/configure
-@@ -2829,6 +2829,9 @@ if [ "$CFG_EMBEDDED" != "no" ]; then
- *86_64)
- CFG_EMBEDDED=x86_64
- ;;
-+ *arc)
-+ CFG_EMBEDDED=arc
-+ ;;
- *)
- CFG_EMBEDDED=generic
- ;;
-@@ -3309,6 +3312,9 @@ if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then
- arm*)
- CFG_ARCH=arm
- ;;
-+ arc)
-+ CFG_ARCH=arc
-+ ;;
- *)
- CFG_ARCH="$CFG_EMBEDDED"
- ;;
-diff --git a/mkspecs/qws/linux-arc-g++/qmake.conf b/mkspecs/qws/linux-arc-g++/qmake.conf
-new file mode 100644
-index 0000000..a14587b
---- /dev/null
-+++ b/mkspecs/qws/linux-arc-g++/qmake.conf
-@@ -0,0 +1,21 @@
-+#
-+# qmake configuration for building with arc-linux-g++
-+#
-+
-+include(../../common/linux.conf)
-+include(../../common/gcc-base-unix.conf)
-+include(../../common/g++-unix.conf)
-+include(../../common/qws.conf)
-+
-+# modifications to g++.conf
-+QMAKE_CC = arc-linux-gcc
-+QMAKE_CXX = arc-linux-g++
-+QMAKE_LINK = arc-linux-g++
-+QMAKE_LINK_SHLIB = arc-linux-g++
-+
-+# modifications to linux.conf
-+QMAKE_AR = arc-linux-ar cqs
-+QMAKE_OBJCOPY = arc-linux-objcopy
-+QMAKE_STRIP = arc-linux-strip
-+
-+load(qt_config)
-diff --git a/mkspecs/qws/linux-arc-g++/qplatformdefs.h b/mkspecs/qws/linux-arc-g++/qplatformdefs.h
-new file mode 100644
-index 0000000..a654aa7
---- /dev/null
-+++ b/mkspecs/qws/linux-arc-g++/qplatformdefs.h
-@@ -0,0 +1,42 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2015 The Qt Company Ltd.
-+** Contact: http://www.qt.io/licensing/
-+**
-+** This file is part of the qmake spec of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and The Qt Company. For licensing terms
-+** and conditions see http://www.qt.io/terms-conditions. For further
-+** information use the contact form at http://www.qt.io/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 or version 3 as published by the Free
-+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-+** following information to ensure the GNU Lesser General Public License
-+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** As a special exception, The Qt Company gives you certain additional
-+** rights. These rights are described in The Qt Company LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file. Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "../../linux-g++/qplatformdefs.h"
-diff --git a/src/corelib/arch/qatomic_arch.h b/src/corelib/arch/qatomic_arch.h
-index d154b7e..a48c42a 100644
---- a/src/corelib/arch/qatomic_arch.h
-+++ b/src/corelib/arch/qatomic_arch.h
-@@ -94,6 +94,8 @@ QT_BEGIN_HEADER
- # include "QtCore/qatomic_sh4a.h"
- #elif defined(QT_ARCH_NACL)
- # include "QtCore/qatomic_generic.h"
-+#elif defined(QT_ARCH_ARC)
-+# include "QtCore/qatomic_generic.h"
- #else
- # error "Qt has not been ported to this architecture"
- #endif
-diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
-index 8bca422..e3e2565 100644
---- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
-+++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
-@@ -143,6 +143,11 @@
- # define __NR_inotify_add_watch 27
- # define __NR_inotify_rm_watch 28
- // no inotify_init for aarch64
-+#elif defined (__arc__)
-+# define __NR_inotify_init 1043
-+# define __NR_inotify_add_watch 27
-+# define __NR_inotify_rm_watch 28
-+# define __NR_inotify_init1 26
- #else
- # error "This architecture is not supported. Please talk to qt-bugs@trolltech.com"
- #endif
-diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp
-index de8790a..cc2f5b6 100644
---- a/src/gui/painting/qblendfunctions.cpp
-+++ b/src/gui/painting/qblendfunctions.cpp
-@@ -309,9 +309,9 @@ template <typename T> void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl,
- const uchar *src = srcPixels + y * sbpl;
- const uchar *srcEnd = src + srcOffset;
- while (src < srcEnd) {
--#if defined(QT_ARCH_ARMV5) || defined(QT_ARCH_POWERPC) || defined(QT_ARCH_SH) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_WINDOWSCE) && !defined(_X86_)) || (defined(QT_ARCH_SPARC) && defined(Q_CC_GNU)) || (defined(QT_ARCH_INTEGRITY) && !defined(_X86_))
-+#if defined(QT_ARCH_ARMV5) || defined(QT_ARCH_POWERPC) || defined(QT_ARCH_SH) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_WINDOWSCE) && !defined(_X86_)) || (defined(QT_ARCH_SPARC) && defined(Q_CC_GNU)) || (defined(QT_ARCH_INTEGRITY) && !defined(_X86_)) || defined(QT_ARCH_ARC)
- // non-16-bit aligned memory access is not possible on PowerPC,
-- // ARM <v6 (QT_ARCH_ARMV5) & SH & AVR32 & SPARC w/GCC
-+ // ARM <v6 (QT_ARCH_ARMV5) & SH & AVR32 & SPARC w/GCC & ARC
- quint16 spix = (quint16(src[2])<<8) + src[1];
- #else
- quint16 spix = *(quint16 *) (src + 1);
---
-2.1.0
-
--- /dev/null
+[PATCH] fix build with script+dbus enabled, but no gui
+
+The script/qtdbus plugin doesn't need gui support, so don't try to
+link it against libQtGui.
+
+Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
+---
+ src/plugins/script/qtdbus/qtdbus.pro | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: qt-4.7.3/src/plugins/script/qtdbus/qtdbus.pro
+===================================================================
+--- qt-4.7.3.orig/src/plugins/script/qtdbus/qtdbus.pro
++++ qt-4.7.3/src/plugins/script/qtdbus/qtdbus.pro
+@@ -1,6 +1,6 @@
+ TARGET = qtscriptdbus
+ include(../../qpluginbase.pri)
+-QT = core gui script
++QT = core script
+ CONFIG += qdbus
+
+ SOURCES += main.cpp
--- /dev/null
+From a695eec2ef21240bbc6cd8cd1bdbab76f8da8dfd Mon Sep 17 00:00:00 2001
+From: Vineet Gupta <vgupta@synopsys.com>
+Date: Wed, 20 May 2015 10:37:25 +0300
+Subject: [PATCH 1/2] Add initial support of ARC architecture
+
+DesignWare ARC 700 and ARC HS38 are families of 32-bit CPUs
+developed by Synopsys, Inc.
+
+This change implements following:
+ [1] Defines ARC as one embedded targets
+ [2] Defines default tools prefixed for ARC like
+ arc-linux-g++ etc
+ [3] Defines "inotify" syscall numbers for ARC
+ (note ARC fully compliant to Linux UAPI headers)
+ [4] Disables 16-bit aligned data access
+
+For now we're using generic atomic ops even though it may
+introduce performance panalty.
+
+Change-Id: I91e879ac55c2f3643a544f97cd59671a81ccc3c2
+
+This patch was submited in upstream Qt4 and if it ever gets accepted,
+it should be removed from Buildroot.
+
+https://codereview.qt-project.org/#/c/112667
+---
+ configure | 6 ++++
+ mkspecs/qws/linux-arc-g++/qmake.conf | 21 ++++++++++++++
+ mkspecs/qws/linux-arc-g++/qplatformdefs.h | 42 +++++++++++++++++++++++++++
+ src/corelib/arch/qatomic_arch.h | 2 ++
+ src/corelib/io/qfilesystemwatcher_inotify.cpp | 5 ++++
+ src/gui/painting/qblendfunctions.cpp | 4 +--
+ 6 files changed, 78 insertions(+), 2 deletions(-)
+ create mode 100644 mkspecs/qws/linux-arc-g++/qmake.conf
+ create mode 100644 mkspecs/qws/linux-arc-g++/qplatformdefs.h
+
+diff --git a/configure b/configure
+index 10ad7ca..c7ef074 100755
+--- a/configure
++++ b/configure
+@@ -2829,6 +2829,9 @@ if [ "$CFG_EMBEDDED" != "no" ]; then
+ *86_64)
+ CFG_EMBEDDED=x86_64
+ ;;
++ *arc)
++ CFG_EMBEDDED=arc
++ ;;
+ *)
+ CFG_EMBEDDED=generic
+ ;;
+@@ -3309,6 +3312,9 @@ if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then
+ arm*)
+ CFG_ARCH=arm
+ ;;
++ arc)
++ CFG_ARCH=arc
++ ;;
+ *)
+ CFG_ARCH="$CFG_EMBEDDED"
+ ;;
+diff --git a/mkspecs/qws/linux-arc-g++/qmake.conf b/mkspecs/qws/linux-arc-g++/qmake.conf
+new file mode 100644
+index 0000000..a14587b
+--- /dev/null
++++ b/mkspecs/qws/linux-arc-g++/qmake.conf
+@@ -0,0 +1,21 @@
++#
++# qmake configuration for building with arc-linux-g++
++#
++
++include(../../common/linux.conf)
++include(../../common/gcc-base-unix.conf)
++include(../../common/g++-unix.conf)
++include(../../common/qws.conf)
++
++# modifications to g++.conf
++QMAKE_CC = arc-linux-gcc
++QMAKE_CXX = arc-linux-g++
++QMAKE_LINK = arc-linux-g++
++QMAKE_LINK_SHLIB = arc-linux-g++
++
++# modifications to linux.conf
++QMAKE_AR = arc-linux-ar cqs
++QMAKE_OBJCOPY = arc-linux-objcopy
++QMAKE_STRIP = arc-linux-strip
++
++load(qt_config)
+diff --git a/mkspecs/qws/linux-arc-g++/qplatformdefs.h b/mkspecs/qws/linux-arc-g++/qplatformdefs.h
+new file mode 100644
+index 0000000..a654aa7
+--- /dev/null
++++ b/mkspecs/qws/linux-arc-g++/qplatformdefs.h
+@@ -0,0 +1,42 @@
++/****************************************************************************
++**
++** Copyright (C) 2015 The Qt Company Ltd.
++** Contact: http://www.qt.io/licensing/
++**
++** This file is part of the qmake spec of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and The Qt Company. For licensing terms
++** and conditions see http://www.qt.io/terms-conditions. For further
++** information use the contact form at http://www.qt.io/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 or version 3 as published by the Free
++** Software Foundation and appearing in the file LICENSE.LGPLv21 and
++** LICENSE.LGPLv3 included in the packaging of this file. Please review the
++** following information to ensure the GNU Lesser General Public License
++** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** As a special exception, The Qt Company gives you certain additional
++** rights. These rights are described in The Qt Company LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file. Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#include "../../linux-g++/qplatformdefs.h"
+diff --git a/src/corelib/arch/qatomic_arch.h b/src/corelib/arch/qatomic_arch.h
+index d154b7e..a48c42a 100644
+--- a/src/corelib/arch/qatomic_arch.h
++++ b/src/corelib/arch/qatomic_arch.h
+@@ -94,6 +94,8 @@ QT_BEGIN_HEADER
+ # include "QtCore/qatomic_sh4a.h"
+ #elif defined(QT_ARCH_NACL)
+ # include "QtCore/qatomic_generic.h"
++#elif defined(QT_ARCH_ARC)
++# include "QtCore/qatomic_generic.h"
+ #else
+ # error "Qt has not been ported to this architecture"
+ #endif
+diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
+index 8bca422..e3e2565 100644
+--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
++++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
+@@ -143,6 +143,11 @@
+ # define __NR_inotify_add_watch 27
+ # define __NR_inotify_rm_watch 28
+ // no inotify_init for aarch64
++#elif defined (__arc__)
++# define __NR_inotify_init 1043
++# define __NR_inotify_add_watch 27
++# define __NR_inotify_rm_watch 28
++# define __NR_inotify_init1 26
+ #else
+ # error "This architecture is not supported. Please talk to qt-bugs@trolltech.com"
+ #endif
+diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp
+index de8790a..cc2f5b6 100644
+--- a/src/gui/painting/qblendfunctions.cpp
++++ b/src/gui/painting/qblendfunctions.cpp
+@@ -309,9 +309,9 @@ template <typename T> void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl,
+ const uchar *src = srcPixels + y * sbpl;
+ const uchar *srcEnd = src + srcOffset;
+ while (src < srcEnd) {
+-#if defined(QT_ARCH_ARMV5) || defined(QT_ARCH_POWERPC) || defined(QT_ARCH_SH) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_WINDOWSCE) && !defined(_X86_)) || (defined(QT_ARCH_SPARC) && defined(Q_CC_GNU)) || (defined(QT_ARCH_INTEGRITY) && !defined(_X86_))
++#if defined(QT_ARCH_ARMV5) || defined(QT_ARCH_POWERPC) || defined(QT_ARCH_SH) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_WINDOWSCE) && !defined(_X86_)) || (defined(QT_ARCH_SPARC) && defined(Q_CC_GNU)) || (defined(QT_ARCH_INTEGRITY) && !defined(_X86_)) || defined(QT_ARCH_ARC)
+ // non-16-bit aligned memory access is not possible on PowerPC,
+- // ARM <v6 (QT_ARCH_ARMV5) & SH & AVR32 & SPARC w/GCC
++ // ARM <v6 (QT_ARCH_ARMV5) & SH & AVR32 & SPARC w/GCC & ARC
+ quint16 spix = (quint16(src[2])<<8) + src[1];
+ #else
+ quint16 spix = *(quint16 *) (src + 1);
+--
+2.1.0
+
+++ /dev/null
-From 9392d29bf0ad0390c6895933fdec0f690d2bdedf Mon Sep 17 00:00:00 2001
-From: Alexey Brodkin <abrodkin@synopsys.com>
-Date: Wed, 20 May 2015 10:53:59 +0300
-Subject: [PATCH 2/2] Prevent unaligned access on ARC
-
-As many other architectures ARC cores by default don't support
-unaligned word access to data.
-
-Even though it's possible to enable unaligned access to data in
-ARC HS38 core (we're talking about configuration of core design)
-to make sure Qt could be executed on any flavour of ARC fall-back
-to byte-accesses is used.
-
-Change-Id: I96068d40b449f11ba987ed1e5d5e44f493d1eb5f
-
-This patch was submited in upstream Qt4 and if it ever gets accepted,
-it should be removed from Buildroot.
-
-https://codereview.qt-project.org/#/c/112668
----
- src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h | 2 +-
- src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h | 13 ++++++++++++-
- .../webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp | 2 +-
- .../webkit/Source/JavaScriptCore/wtf/text/StringHash.h | 2 +-
- 4 files changed, 15 insertions(+), 4 deletions(-)
-
-diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h
-index 2d76809..ee9b7f0 100644
---- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h
-+++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h
-@@ -202,7 +202,7 @@ struct UStringHash {
-
- // FIXME: perhaps we should have a more abstract macro that indicates when
- // going 4 bytes at a time is unsafe
--#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC)
-+#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC)
- const UChar* aChars = a->characters();
- const UChar* bChars = b->characters();
- for (unsigned i = 0; i != aLength; ++i) {
-diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
-index e8b03be..cd17e9c 100644
---- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
-+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
-@@ -369,7 +369,18 @@
-
- #endif /* ARM */
-
--#if CPU(ARM) || CPU(MIPS) || CPU(SH4)
-+/* CPU(ARC) - ARC, any version*/
-+#if defined(arc) \
-+ || defined(__arc__) \
-+ || defined(ARC) \
-+ || defined(_ARC_)
-+#define WTF_CPU_ARC 1
-+#if defined(__BIG_ENDIAN__)
-+#define WTF_CPU_BIG_ENDIAN 1
-+#endif
-+#endif
-+
-+#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(ARC)
- #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
- #endif
-
-diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp
-index 9dd655e..bd3ab95 100644
---- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp
-+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp
-@@ -142,7 +142,7 @@ static inline bool equal(StringImpl* string, const UChar* characters, unsigned l
-
- // FIXME: perhaps we should have a more abstract macro that indicates when
- // going 4 bytes at a time is unsafe
--#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC)
-+#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC)
- const UChar* stringCharacters = string->characters();
- for (unsigned i = 0; i != length; ++i) {
- if (*stringCharacters++ != *characters++)
-diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h
-index 4637c3d..91cef81 100644
---- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h
-+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h
-@@ -55,7 +55,7 @@ namespace WTF {
-
- // FIXME: perhaps we should have a more abstract macro that indicates when
- // going 4 bytes at a time is unsafe
--#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC)
-+#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC)
- const UChar* aChars = a->characters();
- const UChar* bChars = b->characters();
- for (unsigned i = 0; i != aLength; ++i) {
---
-2.1.0
-
+++ /dev/null
-From ea46f47fb3c475ba2d7581c15185b8d43e63b8c2 Mon Sep 17 00:00:00 2001
-From: Peter Seiderer <ps.report@gmx.net>
-Date: Fri, 27 Feb 2015 21:30:52 +0100
-Subject: [PATCH] Fix conversion/constructor error for legacy c++ compiler.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fixes the following compile error with legacy c++ compiler:
-
-error: in C++98 ‘blitRect’ must be initialized by constructor, not by ‘{...}’
-
-Signed-off-by: Peter Seiderer <ps.report@gmx.net>
----
- src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp | 14 +++++++-------
- src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp | 6 +++---
- src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 6 +++---
- src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp | 2 +-
- 4 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
-index 876d0c2..ed69386 100644
---- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
-+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
-@@ -942,7 +942,7 @@ void QDirectFBPaintEngine::drawBufferSpan(const uint *buffer, int bufsize,
- IDirectFBSurface *src = d->surfaceCache->getSurface(buffer, bufsize);
- // ### how does this play with setDFBColor
- src->SetColor(src, 0, 0, 0, const_alpha);
-- const DFBRectangle rect = { 0, 0, length, 1 };
-+ const DFBRectangle rect = (DFBRectangle_C){ 0, 0, length, 1 };
- d->surface->Blit(d->surface, src, &rect, x, y);
- }
-
-@@ -1223,14 +1223,14 @@ void QDirectFBPaintEnginePrivate::blit(const QRectF &dest, IDirectFBSurface *s,
- const QRect dr = engine->state()->matrix.mapRect(dest).toRect();
- if (dr.isEmpty())
- return;
-- const DFBRectangle sRect = { sr.x(), sr.y(), sr.width(), sr.height() };
-+ const DFBRectangle sRect = (DFBRectangle_C){ sr.x(), sr.y(), sr.width(), sr.height() };
- DFBResult result;
-
- if (dr.size() == sr.size()) {
- result = surface->Blit(surface, s, &sRect, dr.x(), dr.y());
- } else {
- Q_ASSERT(supportsStretchBlit());
-- const DFBRectangle dRect = { dr.x(), dr.y(), dr.width(), dr.height() };
-+ const DFBRectangle dRect = (DFBRectangle_C){ dr.x(), dr.y(), dr.width(), dr.height() };
- result = surface->StretchBlit(surface, s, &sRect, &dRect);
- }
- if (result != DFB_OK)
-@@ -1261,7 +1261,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
- if (newClip.isNull())
- return;
-
-- const DFBRegion clip = {
-+ const DFBRegion clip = (DFBRegion_C){
- newClip.x(),
- newClip.y(),
- newClip.right(),
-@@ -1295,7 +1295,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
- while (y <= destinationRect.bottom()) {
- qreal x = startX;
- while (x <= destinationRect.right()) {
-- const DFBRectangle destination = { qRound(x), qRound(y), mappedSize.width(), mappedSize.height() };
-+ const DFBRectangle destination = (DFBRectangle_C){ qRound(x), qRound(y), (int)mappedSize.width(), (int)mappedSize.height() };
- surface->StretchBlit(surface, sourceSurface, 0, &destination);
- x += mappedSize.width();
- }
-@@ -1337,7 +1337,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
- if (currentClip.isEmpty()) {
- surface->SetClip(surface, 0);
- } else {
-- const DFBRegion clip = {
-+ const DFBRegion clip = (DFBRegion_C){
- currentClip.x(),
- currentClip.y(),
- currentClip.right(),
-@@ -1356,7 +1356,7 @@ void QDirectFBPaintEnginePrivate::updateClip()
- surface->SetClip(surface, NULL);
- clipType = NoClip;
- } else if (clipData->hasRectClip) {
-- const DFBRegion r = {
-+ const DFBRegion r = (DFBRegion_C){
- clipData->clipRect.x(),
- clipData->clipRect.y(),
- clipData->clipRect.right(),
-diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
-index 412e684..c59c47d 100644
---- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
-+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
-@@ -363,7 +363,7 @@ void QDirectFBPixmapData::copy(const QPixmapData *data, const QRect &rect)
- } else {
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
- }
-- const DFBRectangle blitRect = { rect.x(), rect.y(),
-+ const DFBRectangle blitRect = (DFBRectangle_C){ rect.x(), rect.y(),
- rect.width(), rect.height() };
- w = rect.width();
- h = rect.height();
-@@ -465,7 +465,7 @@ QPixmap QDirectFBPixmapData::transformed(const QTransform &transform,
- }
- data->dfbSurface->SetBlittingFlags(data->dfbSurface, flags);
-
-- const DFBRectangle destRect = { 0, 0, size.width(), size.height() };
-+ const DFBRectangle destRect = (DFBRectangle_C){ 0, 0, size.width(), size.height() };
- data->dfbSurface->StretchBlit(data->dfbSurface, dfbSurface, 0, &destRect);
- data->w = size.width();
- data->h = size.height();
-@@ -551,7 +551,7 @@ bool QDirectFBPixmapData::scroll(int dx, int dy, const QRect &rect)
- return false;
- }
-
-- const DFBRectangle source = { rect.x(), rect.y(), rect.width(), rect.height() };
-+ const DFBRectangle source = (DFBRectangle_C){ rect.x(), rect.y(), rect.width(), rect.height() };
- result = dfbSurface->Blit(dfbSurface, dfbSurface, &source, source.x + dx, source.y + dy);
- if (result != DFB_OK) {
- DirectFBError("QDirectFBPixmapData::scroll", result);
-diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
-index eab9580..d26e5bf 100644
---- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
-+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
-@@ -1635,7 +1635,7 @@ void QDirectFBScreen::solidFill(const QColor &color, const QRegion ®ion)
- static inline void clearRect(IDirectFBSurface *surface, const QColor &color, const QRect &rect)
- {
- Q_ASSERT(surface);
-- const DFBRegion region = { rect.left(), rect.top(), rect.right(), rect.bottom() };
-+ const DFBRegion region = (DFBRegion_C){ rect.left(), rect.top(), rect.right(), rect.bottom() };
- // could just reinterpret_cast this to a DFBRegion
- surface->SetClip(surface, ®ion);
- surface->Clear(surface, color.red(), color.green(), color.blue(), color.alpha());
-@@ -1716,14 +1716,14 @@ void QDirectFBScreen::flipSurface(IDirectFBSurface *surface, DFBSurfaceFlipFlags
- const DFBSurfaceFlipFlags nonWaitFlags = flipFlags & ~DSFLIP_WAIT;
- for (int i=0; i<rects.size(); ++i) {
- const QRect &r = rects.at(i);
-- const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(),
-+ const DFBRegion dfbReg = (DFBRegion_C){ r.x() + offset.x(), r.y() + offset.y(),
- r.right() + offset.x(),
- r.bottom() + offset.y() };
- surface->Flip(surface, &dfbReg, i + 1 < rects.size() ? nonWaitFlags : flipFlags);
- }
- } else {
- const QRect r = region.boundingRect();
-- const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(),
-+ const DFBRegion dfbReg = (DFBRegion_C){ r.x() + offset.x(), r.y() + offset.y(),
- r.right() + offset.x(),
- r.bottom() + offset.y() };
- surface->Flip(surface, &dfbReg, flipFlags);
-diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
-index 4dff907..25ad06b 100644
---- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
-+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
-@@ -333,7 +333,7 @@ bool QDirectFBWindowSurface::scroll(const QRegion ®ion, int dx, int dy)
- }
- dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
- const QRect r = region.boundingRect();
-- const DFBRectangle rect = { r.x(), r.y(), r.width(), r.height() };
-+ const DFBRectangle rect = (DFBRectangle_C){ r.x(), r.y(), r.width(), r.height() };
- dfbSurface->Blit(dfbSurface, dfbSurface, &rect, r.x() + dx, r.y() + dy);
- return true;
- }
---
-2.1.4
-
--- /dev/null
+From 9392d29bf0ad0390c6895933fdec0f690d2bdedf Mon Sep 17 00:00:00 2001
+From: Alexey Brodkin <abrodkin@synopsys.com>
+Date: Wed, 20 May 2015 10:53:59 +0300
+Subject: [PATCH 2/2] Prevent unaligned access on ARC
+
+As many other architectures ARC cores by default don't support
+unaligned word access to data.
+
+Even though it's possible to enable unaligned access to data in
+ARC HS38 core (we're talking about configuration of core design)
+to make sure Qt could be executed on any flavour of ARC fall-back
+to byte-accesses is used.
+
+Change-Id: I96068d40b449f11ba987ed1e5d5e44f493d1eb5f
+
+This patch was submited in upstream Qt4 and if it ever gets accepted,
+it should be removed from Buildroot.
+
+https://codereview.qt-project.org/#/c/112668
+---
+ src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h | 2 +-
+ src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h | 13 ++++++++++++-
+ .../webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp | 2 +-
+ .../webkit/Source/JavaScriptCore/wtf/text/StringHash.h | 2 +-
+ 4 files changed, 15 insertions(+), 4 deletions(-)
+
+diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h
+index 2d76809..ee9b7f0 100644
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h
+@@ -202,7 +202,7 @@ struct UStringHash {
+
+ // FIXME: perhaps we should have a more abstract macro that indicates when
+ // going 4 bytes at a time is unsafe
+-#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC)
++#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC)
+ const UChar* aChars = a->characters();
+ const UChar* bChars = b->characters();
+ for (unsigned i = 0; i != aLength; ++i) {
+diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
+index e8b03be..cd17e9c 100644
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
+@@ -369,7 +369,18 @@
+
+ #endif /* ARM */
+
+-#if CPU(ARM) || CPU(MIPS) || CPU(SH4)
++/* CPU(ARC) - ARC, any version*/
++#if defined(arc) \
++ || defined(__arc__) \
++ || defined(ARC) \
++ || defined(_ARC_)
++#define WTF_CPU_ARC 1
++#if defined(__BIG_ENDIAN__)
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++#endif
++
++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(ARC)
+ #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
+ #endif
+
+diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp
+index 9dd655e..bd3ab95 100644
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp
+@@ -142,7 +142,7 @@ static inline bool equal(StringImpl* string, const UChar* characters, unsigned l
+
+ // FIXME: perhaps we should have a more abstract macro that indicates when
+ // going 4 bytes at a time is unsafe
+-#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC)
++#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC)
+ const UChar* stringCharacters = string->characters();
+ for (unsigned i = 0; i != length; ++i) {
+ if (*stringCharacters++ != *characters++)
+diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h
+index 4637c3d..91cef81 100644
+--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h
++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h
+@@ -55,7 +55,7 @@ namespace WTF {
+
+ // FIXME: perhaps we should have a more abstract macro that indicates when
+ // going 4 bytes at a time is unsafe
+-#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC)
++#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC)
+ const UChar* aChars = a->characters();
+ const UChar* bChars = b->characters();
+ for (unsigned i = 0; i != aLength; ++i) {
+--
+2.1.0
+
--- /dev/null
+From ea46f47fb3c475ba2d7581c15185b8d43e63b8c2 Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <ps.report@gmx.net>
+Date: Fri, 27 Feb 2015 21:30:52 +0100
+Subject: [PATCH] Fix conversion/constructor error for legacy c++ compiler.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes the following compile error with legacy c++ compiler:
+
+error: in C++98 ‘blitRect’ must be initialized by constructor, not by ‘{...}’
+
+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+---
+ src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp | 14 +++++++-------
+ src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp | 6 +++---
+ src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 6 +++---
+ src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp | 2 +-
+ 4 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+index 876d0c2..ed69386 100644
+--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
++++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+@@ -942,7 +942,7 @@ void QDirectFBPaintEngine::drawBufferSpan(const uint *buffer, int bufsize,
+ IDirectFBSurface *src = d->surfaceCache->getSurface(buffer, bufsize);
+ // ### how does this play with setDFBColor
+ src->SetColor(src, 0, 0, 0, const_alpha);
+- const DFBRectangle rect = { 0, 0, length, 1 };
++ const DFBRectangle rect = (DFBRectangle_C){ 0, 0, length, 1 };
+ d->surface->Blit(d->surface, src, &rect, x, y);
+ }
+
+@@ -1223,14 +1223,14 @@ void QDirectFBPaintEnginePrivate::blit(const QRectF &dest, IDirectFBSurface *s,
+ const QRect dr = engine->state()->matrix.mapRect(dest).toRect();
+ if (dr.isEmpty())
+ return;
+- const DFBRectangle sRect = { sr.x(), sr.y(), sr.width(), sr.height() };
++ const DFBRectangle sRect = (DFBRectangle_C){ sr.x(), sr.y(), sr.width(), sr.height() };
+ DFBResult result;
+
+ if (dr.size() == sr.size()) {
+ result = surface->Blit(surface, s, &sRect, dr.x(), dr.y());
+ } else {
+ Q_ASSERT(supportsStretchBlit());
+- const DFBRectangle dRect = { dr.x(), dr.y(), dr.width(), dr.height() };
++ const DFBRectangle dRect = (DFBRectangle_C){ dr.x(), dr.y(), dr.width(), dr.height() };
+ result = surface->StretchBlit(surface, s, &sRect, &dRect);
+ }
+ if (result != DFB_OK)
+@@ -1261,7 +1261,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
+ if (newClip.isNull())
+ return;
+
+- const DFBRegion clip = {
++ const DFBRegion clip = (DFBRegion_C){
+ newClip.x(),
+ newClip.y(),
+ newClip.right(),
+@@ -1295,7 +1295,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
+ while (y <= destinationRect.bottom()) {
+ qreal x = startX;
+ while (x <= destinationRect.right()) {
+- const DFBRectangle destination = { qRound(x), qRound(y), mappedSize.width(), mappedSize.height() };
++ const DFBRectangle destination = (DFBRectangle_C){ qRound(x), qRound(y), (int)mappedSize.width(), (int)mappedSize.height() };
+ surface->StretchBlit(surface, sourceSurface, 0, &destination);
+ x += mappedSize.width();
+ }
+@@ -1337,7 +1337,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
+ if (currentClip.isEmpty()) {
+ surface->SetClip(surface, 0);
+ } else {
+- const DFBRegion clip = {
++ const DFBRegion clip = (DFBRegion_C){
+ currentClip.x(),
+ currentClip.y(),
+ currentClip.right(),
+@@ -1356,7 +1356,7 @@ void QDirectFBPaintEnginePrivate::updateClip()
+ surface->SetClip(surface, NULL);
+ clipType = NoClip;
+ } else if (clipData->hasRectClip) {
+- const DFBRegion r = {
++ const DFBRegion r = (DFBRegion_C){
+ clipData->clipRect.x(),
+ clipData->clipRect.y(),
+ clipData->clipRect.right(),
+diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+index 412e684..c59c47d 100644
+--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
++++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+@@ -363,7 +363,7 @@ void QDirectFBPixmapData::copy(const QPixmapData *data, const QRect &rect)
+ } else {
+ dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
+ }
+- const DFBRectangle blitRect = { rect.x(), rect.y(),
++ const DFBRectangle blitRect = (DFBRectangle_C){ rect.x(), rect.y(),
+ rect.width(), rect.height() };
+ w = rect.width();
+ h = rect.height();
+@@ -465,7 +465,7 @@ QPixmap QDirectFBPixmapData::transformed(const QTransform &transform,
+ }
+ data->dfbSurface->SetBlittingFlags(data->dfbSurface, flags);
+
+- const DFBRectangle destRect = { 0, 0, size.width(), size.height() };
++ const DFBRectangle destRect = (DFBRectangle_C){ 0, 0, size.width(), size.height() };
+ data->dfbSurface->StretchBlit(data->dfbSurface, dfbSurface, 0, &destRect);
+ data->w = size.width();
+ data->h = size.height();
+@@ -551,7 +551,7 @@ bool QDirectFBPixmapData::scroll(int dx, int dy, const QRect &rect)
+ return false;
+ }
+
+- const DFBRectangle source = { rect.x(), rect.y(), rect.width(), rect.height() };
++ const DFBRectangle source = (DFBRectangle_C){ rect.x(), rect.y(), rect.width(), rect.height() };
+ result = dfbSurface->Blit(dfbSurface, dfbSurface, &source, source.x + dx, source.y + dy);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBPixmapData::scroll", result);
+diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+index eab9580..d26e5bf 100644
+--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
++++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+@@ -1635,7 +1635,7 @@ void QDirectFBScreen::solidFill(const QColor &color, const QRegion ®ion)
+ static inline void clearRect(IDirectFBSurface *surface, const QColor &color, const QRect &rect)
+ {
+ Q_ASSERT(surface);
+- const DFBRegion region = { rect.left(), rect.top(), rect.right(), rect.bottom() };
++ const DFBRegion region = (DFBRegion_C){ rect.left(), rect.top(), rect.right(), rect.bottom() };
+ // could just reinterpret_cast this to a DFBRegion
+ surface->SetClip(surface, ®ion);
+ surface->Clear(surface, color.red(), color.green(), color.blue(), color.alpha());
+@@ -1716,14 +1716,14 @@ void QDirectFBScreen::flipSurface(IDirectFBSurface *surface, DFBSurfaceFlipFlags
+ const DFBSurfaceFlipFlags nonWaitFlags = flipFlags & ~DSFLIP_WAIT;
+ for (int i=0; i<rects.size(); ++i) {
+ const QRect &r = rects.at(i);
+- const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(),
++ const DFBRegion dfbReg = (DFBRegion_C){ r.x() + offset.x(), r.y() + offset.y(),
+ r.right() + offset.x(),
+ r.bottom() + offset.y() };
+ surface->Flip(surface, &dfbReg, i + 1 < rects.size() ? nonWaitFlags : flipFlags);
+ }
+ } else {
+ const QRect r = region.boundingRect();
+- const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(),
++ const DFBRegion dfbReg = (DFBRegion_C){ r.x() + offset.x(), r.y() + offset.y(),
+ r.right() + offset.x(),
+ r.bottom() + offset.y() };
+ surface->Flip(surface, &dfbReg, flipFlags);
+diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+index 4dff907..25ad06b 100644
+--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
++++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+@@ -333,7 +333,7 @@ bool QDirectFBWindowSurface::scroll(const QRegion ®ion, int dx, int dy)
+ }
+ dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
+ const QRect r = region.boundingRect();
+- const DFBRectangle rect = { r.x(), r.y(), r.width(), r.height() };
++ const DFBRectangle rect = (DFBRectangle_C){ r.x(), r.y(), r.width(), r.height() };
+ dfbSurface->Blit(dfbSurface, dfbSurface, &rect, r.x() + dx, r.y() + dy);
+ return true;
+ }
+--
+2.1.4
+
+++ /dev/null
-From 7a912823158a4113256c3113a34c38d6b241d275 Mon Sep 17 00:00:00 2001
-From: Alexey Brodkin <abrodkin@synopsys.com>
-Date: Wed, 13 Jan 2016 20:15:36 +0300
-Subject: [PATCH] Fix library inclusion order when building statically
-
-When building application statically it's important to keep
-libraries we're linking against in order. Otherwise if libA depends on
-libB but it is mentioned after libB in linker command line
-there will be unresolved symbols.
-
-Consider real example - configuration of Qt with glib for static build.
-Initially reported by Buildroot autobuilder here:
-http://autobuild.buildroot.net/results/174/174c6e47eb761f9897275b6fedff742ace2f3081
-
-What happens here:
-
-[1] Qt's configuration script tries to build glib test app
- (in config.tests/unix/glib)
-
-[2] For that it first asks which libs to use during linkage this way:
- QT_LIBS_GLIB=`$PKG_CONFIG --libs glib-2.0 gthread-2.0 2>/dev/null`
-
- In our case we're getting something like this:
- -L/.../sysroot/usr/lib -lintl -lgthread-2.0 -pthread -lglib-2.0 \
- -lintl -pthread -lintl
-
- Note "-lintl" is mentioned 3 times because libgthread depends on
- libthread and both of them plus libglib all depend on libintl - so
- we're getting "lintl" for each separate library mentioned above.
-
-[3] Now we execute "compileTest" for real heavy lifting this way:
- compileTest unix/glib "Glib" $QT_CFLAGS_GLIB $QT_LIBS_GLIB ...
-
-[4] compileTest (the one for unix) parses command-line passed to it
- groups all entries with "-l" prefix and puts them in LFLAGS
- variable. And finally executes qmake passing it that kind of
- construction:
- $OUTDIR/bin/qmake ..."LIBS*=$LFLAGS"
-
-[5] When qmake sees construction "MYVAR*=MYVAL" it populates MYVAR with
- unique values from MYVAL string.
-
-[6] As a result qmake generated Makefile with the following:
- LIBS = $(SUBLIBS) -pthread -L/.../sysroot/usr/lib -lintl -lgthread-2.0 \
- -lglib-2.0
-
-[7] And essentially on attempt to link glib test app a failure happens
- because libglib needs libintl, i.e. "-lintl" must follow "-lglib-2.0":
--------------------->8------------------
-linking glib
-
-g++ -static -Wl,-O1 -o glib glib.o -pthread -L/.../sysroot/usr/lib \
--lintl -lgthread-2.0 -lglib-2.0
-
-/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function '_g_dgettext_should_translate':
-ggettext.c:(.text+0x28): undefined reference to `libintl_textdomain'
-ggettext.c:(.text+0x36): undefined reference to `libintl_gettext'
-/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `ensure_gettext_initialized':
-ggettext.c:(.text+0xe6): undefined reference to `libintl_bindtextdomain'
-ggettext.c:(.text+0xf6): undefined reference to `libintl_bind_textdomain_codeset'
-/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `g_dgettext':
-ggettext.c:(.text+0x148): undefined reference to `libintl_dgettext'
-/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `g_dcgettext':
-ggettext.c:(.text+0x2dc): undefined reference to `libintl_dcgettext'
-/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `g_dngettext':
-ggettext.c:(.text+0x32a): undefined reference to `libintl_dngettext'
-collect2: error: ld returned 1 exit status
-Makefile:99: recipe for target 'glib' failed
-make: *** [glib] Error 1
-
-Glib disabled.
-Glib support cannot be enabled due to functionality tests!
- Turn on verbose messaging (-v) to ./configure to see the final report.
- If you believe this message is in error you may use the continue
- switch (-continue) to ./configure to continue.
--------------------->8------------------
-
-Solution to this problem is simple we have to pass all libraries exactly
-in order of their initial mention by upper layers.
-
-Change-Id: I7ff00901031a8eb85b4fbd7889b0e0c02be806bb
-
-This fix was sent to Qt Gerrit for review here:
-https://codereview.qt-project.org/#/c/145967/
-
----
- config.tests/unix/compile.test | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/config.tests/unix/compile.test b/config.tests/unix/compile.test
-index f484f03..dac0a4f 100755
---- a/config.tests/unix/compile.test
-+++ b/config.tests/unix/compile.test
-@@ -73,7 +73,7 @@ test -r Makefile && $MAKE distclean >/dev/null 2>&1
- rm -f "$EXE" "${EXE}.exe"
-
- echo "QT_BUILD_TREE = $OUTDIR" > "$OUTDIR/$TEST/.qmake.cache"
--"$OUTDIR/bin/qmake" -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG-=debug_and_release" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
-+"$OUTDIR/bin/qmake" -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG-=debug_and_release" "LIBS=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
-
- if [ "$VERBOSE" = "yes" ]; then
- $MAKE
---
-2.4.3
-
+++ /dev/null
-From 0bf90de93b9fe21df32319e27b2507154fa8a21d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
-Date: Fri, 15 Apr 2016 00:37:26 +0200
-Subject: [PATCH] Fix for platform socklen_t on other C libraries than glibc
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This helps to make sure that QT_SOCKLEN_T is defined to be 'int'
-only when its glibc < 2 and not also for the libraries which may define
-it as per standards but are not glibc, e.g. musl.
-
-This patch is adapted from Qt5 [1].
-
-[1]
-https://github.com/qtproject/qtbase/commit/813f468a14fb84af43c1f8fc0a1430277358eba2
-
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
----
- mkspecs/linux-g++/qplatformdefs.h | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mkspecs/linux-g++/qplatformdefs.h b/mkspecs/linux-g++/qplatformdefs.h
-index de751dd..d4146ed 100644
---- a/mkspecs/linux-g++/qplatformdefs.h
-+++ b/mkspecs/linux-g++/qplatformdefs.h
-@@ -86,10 +86,10 @@
-
- #undef QT_SOCKLEN_T
-
--#if defined(__GLIBC__) && (__GLIBC__ >= 2)
--#define QT_SOCKLEN_T socklen_t
--#else
-+#if defined(__GLIBC__) && (__GLIBC__ < 2)
- #define QT_SOCKLEN_T int
-+#else
-+#define QT_SOCKLEN_T socklen_t
- #endif
-
- #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
---
-2.8.0
-
--- /dev/null
+From 7a912823158a4113256c3113a34c38d6b241d275 Mon Sep 17 00:00:00 2001
+From: Alexey Brodkin <abrodkin@synopsys.com>
+Date: Wed, 13 Jan 2016 20:15:36 +0300
+Subject: [PATCH] Fix library inclusion order when building statically
+
+When building application statically it's important to keep
+libraries we're linking against in order. Otherwise if libA depends on
+libB but it is mentioned after libB in linker command line
+there will be unresolved symbols.
+
+Consider real example - configuration of Qt with glib for static build.
+Initially reported by Buildroot autobuilder here:
+http://autobuild.buildroot.net/results/174/174c6e47eb761f9897275b6fedff742ace2f3081
+
+What happens here:
+
+[1] Qt's configuration script tries to build glib test app
+ (in config.tests/unix/glib)
+
+[2] For that it first asks which libs to use during linkage this way:
+ QT_LIBS_GLIB=`$PKG_CONFIG --libs glib-2.0 gthread-2.0 2>/dev/null`
+
+ In our case we're getting something like this:
+ -L/.../sysroot/usr/lib -lintl -lgthread-2.0 -pthread -lglib-2.0 \
+ -lintl -pthread -lintl
+
+ Note "-lintl" is mentioned 3 times because libgthread depends on
+ libthread and both of them plus libglib all depend on libintl - so
+ we're getting "lintl" for each separate library mentioned above.
+
+[3] Now we execute "compileTest" for real heavy lifting this way:
+ compileTest unix/glib "Glib" $QT_CFLAGS_GLIB $QT_LIBS_GLIB ...
+
+[4] compileTest (the one for unix) parses command-line passed to it
+ groups all entries with "-l" prefix and puts them in LFLAGS
+ variable. And finally executes qmake passing it that kind of
+ construction:
+ $OUTDIR/bin/qmake ..."LIBS*=$LFLAGS"
+
+[5] When qmake sees construction "MYVAR*=MYVAL" it populates MYVAR with
+ unique values from MYVAL string.
+
+[6] As a result qmake generated Makefile with the following:
+ LIBS = $(SUBLIBS) -pthread -L/.../sysroot/usr/lib -lintl -lgthread-2.0 \
+ -lglib-2.0
+
+[7] And essentially on attempt to link glib test app a failure happens
+ because libglib needs libintl, i.e. "-lintl" must follow "-lglib-2.0":
+-------------------->8------------------
+linking glib
+
+g++ -static -Wl,-O1 -o glib glib.o -pthread -L/.../sysroot/usr/lib \
+-lintl -lgthread-2.0 -lglib-2.0
+
+/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function '_g_dgettext_should_translate':
+ggettext.c:(.text+0x28): undefined reference to `libintl_textdomain'
+ggettext.c:(.text+0x36): undefined reference to `libintl_gettext'
+/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `ensure_gettext_initialized':
+ggettext.c:(.text+0xe6): undefined reference to `libintl_bindtextdomain'
+ggettext.c:(.text+0xf6): undefined reference to `libintl_bind_textdomain_codeset'
+/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `g_dgettext':
+ggettext.c:(.text+0x148): undefined reference to `libintl_dgettext'
+/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `g_dcgettext':
+ggettext.c:(.text+0x2dc): undefined reference to `libintl_dcgettext'
+/.../sysroot/usr/lib/libglib-2.0.a(libglib_2_0_la-ggettext.o): In function `g_dngettext':
+ggettext.c:(.text+0x32a): undefined reference to `libintl_dngettext'
+collect2: error: ld returned 1 exit status
+Makefile:99: recipe for target 'glib' failed
+make: *** [glib] Error 1
+
+Glib disabled.
+Glib support cannot be enabled due to functionality tests!
+ Turn on verbose messaging (-v) to ./configure to see the final report.
+ If you believe this message is in error you may use the continue
+ switch (-continue) to ./configure to continue.
+-------------------->8------------------
+
+Solution to this problem is simple we have to pass all libraries exactly
+in order of their initial mention by upper layers.
+
+Change-Id: I7ff00901031a8eb85b4fbd7889b0e0c02be806bb
+
+This fix was sent to Qt Gerrit for review here:
+https://codereview.qt-project.org/#/c/145967/
+
+---
+ config.tests/unix/compile.test | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config.tests/unix/compile.test b/config.tests/unix/compile.test
+index f484f03..dac0a4f 100755
+--- a/config.tests/unix/compile.test
++++ b/config.tests/unix/compile.test
+@@ -73,7 +73,7 @@ test -r Makefile && $MAKE distclean >/dev/null 2>&1
+ rm -f "$EXE" "${EXE}.exe"
+
+ echo "QT_BUILD_TREE = $OUTDIR" > "$OUTDIR/$TEST/.qmake.cache"
+-"$OUTDIR/bin/qmake" -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG-=debug_and_release" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
++"$OUTDIR/bin/qmake" -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG-=debug_and_release" "LIBS=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
+
+ if [ "$VERBOSE" = "yes" ]; then
+ $MAKE
+--
+2.4.3
+
--- /dev/null
+From 0bf90de93b9fe21df32319e27b2507154fa8a21d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
+Date: Fri, 15 Apr 2016 00:37:26 +0200
+Subject: [PATCH] Fix for platform socklen_t on other C libraries than glibc
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This helps to make sure that QT_SOCKLEN_T is defined to be 'int'
+only when its glibc < 2 and not also for the libraries which may define
+it as per standards but are not glibc, e.g. musl.
+
+This patch is adapted from Qt5 [1].
+
+[1]
+https://github.com/qtproject/qtbase/commit/813f468a14fb84af43c1f8fc0a1430277358eba2
+
+Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
+---
+ mkspecs/linux-g++/qplatformdefs.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/mkspecs/linux-g++/qplatformdefs.h b/mkspecs/linux-g++/qplatformdefs.h
+index de751dd..d4146ed 100644
+--- a/mkspecs/linux-g++/qplatformdefs.h
++++ b/mkspecs/linux-g++/qplatformdefs.h
+@@ -86,10 +86,10 @@
+
+ #undef QT_SOCKLEN_T
+
+-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+-#define QT_SOCKLEN_T socklen_t
+-#else
++#if defined(__GLIBC__) && (__GLIBC__ < 2)
+ #define QT_SOCKLEN_T int
++#else
++#define QT_SOCKLEN_T socklen_t
+ #endif
+
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+--
+2.8.0
+
+++ /dev/null
-From 438f088ad520ac91ae47dba9a515ab0d1088c89c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
-Date: Fri, 15 Apr 2016 03:32:02 +0200
-Subject: [PATCH] Link with -ldl option only when it is supported
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-`-ldl` option is used unconditionally in `QMAKE_LIBS_DYNLOAD` while libdl is
-not supported when libc is static. As the value of `QMAKE_LIBS_DYNLOAD` goes
-into 'Libs.private' field of the pkgconfig files created by qmake, static
-linking with qt will fail with:
- /usr/bin/ld: cannot find -ldl
-
-Fix this issue by adding a build test to configure to check if libdl is
-supported. `QMAKE_LIBS_DYNLOAD` in "src/corelib/plugin/plugin.pri" is now used
-only if libdl is available.
-
-Backported from Qt5:
-https://github.com/qtproject/qtbase/commit/f669ea0d54302de31456d57286aa0e4ca1443e98
-
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
----
- config.tests/unix/libdl/libdl.cpp | 39 +++++++++++++++++++++++++++++++++++++++
- config.tests/unix/libdl/libdl.pro | 3 +++
- configure | 6 ++++++
- src/corelib/plugin/plugin.pri | 2 +-
- 4 files changed, 49 insertions(+), 1 deletion(-)
- create mode 100644 config.tests/unix/libdl/libdl.cpp
- create mode 100644 config.tests/unix/libdl/libdl.pro
-
-diff --git a/config.tests/unix/libdl/libdl.cpp b/config.tests/unix/libdl/libdl.cpp
-new file mode 100644
-index 0000000..28a8233
---- /dev/null
-+++ b/config.tests/unix/libdl/libdl.cpp
-@@ -0,0 +1,39 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2015 The Qt Company Ltd.
-+** Contact: http://www.qt.io/licensing/
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL21$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and The Qt Company. For licensing terms
-+** and conditions see http://www.qt.io/terms-conditions. For further
-+** information use the contact form at http://www.qt.io/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 or version 3 as published by the Free
-+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-+** following information to ensure the GNU Lesser General Public License
-+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** As a special exception, The Qt Company gives you certain additional
-+** rights. These rights are described in The Qt Company LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include <dlfcn.h>
-+
-+int main(int, char **)
-+{
-+ dlopen(0, 0);
-+}
-diff --git a/config.tests/unix/libdl/libdl.pro b/config.tests/unix/libdl/libdl.pro
-new file mode 100644
-index 0000000..a643934
---- /dev/null
-+++ b/config.tests/unix/libdl/libdl.pro
-@@ -0,0 +1,3 @@
-+SOURCES = libdl.cpp
-+CONFIG -= qt dylib
-+LIBS += -ldl
-\ No newline at end of file
-diff --git a/configure b/configure
-index 10ad7ca..1c70691 100755
---- a/configure
-+++ b/configure
-@@ -5506,6 +5506,12 @@ if [ "$CFG_LIBPNG" = "auto" ]; then
- fi
- fi
-
-+# detect dl
-+if ! compileTest unix/libdl "libdl"; then
-+ QMakeVar add DEFINES QT_NO_DYNAMIC_LIBRARY
-+ QMAKE_CONFIG="$QMAKE_CONFIG no-libdl"
-+fi
-+
- # detect accessibility
- if [ "$CFG_ACCESSIBILITY" = "auto" ]; then
- if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
-diff --git a/src/corelib/plugin/plugin.pri b/src/corelib/plugin/plugin.pri
-index eb7a7f7..c342f2e 100644
---- a/src/corelib/plugin/plugin.pri
-+++ b/src/corelib/plugin/plugin.pri
-@@ -32,4 +32,4 @@ integrity {
- SOURCES += plugin/qlibrary_unix.cpp
- }
-
--LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD
-+!no-libdl: LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD
---
-2.8.0
-
--- /dev/null
+From 438f088ad520ac91ae47dba9a515ab0d1088c89c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
+Date: Fri, 15 Apr 2016 03:32:02 +0200
+Subject: [PATCH] Link with -ldl option only when it is supported
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+`-ldl` option is used unconditionally in `QMAKE_LIBS_DYNLOAD` while libdl is
+not supported when libc is static. As the value of `QMAKE_LIBS_DYNLOAD` goes
+into 'Libs.private' field of the pkgconfig files created by qmake, static
+linking with qt will fail with:
+ /usr/bin/ld: cannot find -ldl
+
+Fix this issue by adding a build test to configure to check if libdl is
+supported. `QMAKE_LIBS_DYNLOAD` in "src/corelib/plugin/plugin.pri" is now used
+only if libdl is available.
+
+Backported from Qt5:
+https://github.com/qtproject/qtbase/commit/f669ea0d54302de31456d57286aa0e4ca1443e98
+
+Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
+---
+ config.tests/unix/libdl/libdl.cpp | 39 +++++++++++++++++++++++++++++++++++++++
+ config.tests/unix/libdl/libdl.pro | 3 +++
+ configure | 6 ++++++
+ src/corelib/plugin/plugin.pri | 2 +-
+ 4 files changed, 49 insertions(+), 1 deletion(-)
+ create mode 100644 config.tests/unix/libdl/libdl.cpp
+ create mode 100644 config.tests/unix/libdl/libdl.pro
+
+diff --git a/config.tests/unix/libdl/libdl.cpp b/config.tests/unix/libdl/libdl.cpp
+new file mode 100644
+index 0000000..28a8233
+--- /dev/null
++++ b/config.tests/unix/libdl/libdl.cpp
+@@ -0,0 +1,39 @@
++/****************************************************************************
++**
++** Copyright (C) 2015 The Qt Company Ltd.
++** Contact: http://www.qt.io/licensing/
++**
++** This file is part of the config.tests of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL21$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and The Qt Company. For licensing terms
++** and conditions see http://www.qt.io/terms-conditions. For further
++** information use the contact form at http://www.qt.io/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 or version 3 as published by the Free
++** Software Foundation and appearing in the file LICENSE.LGPLv21 and
++** LICENSE.LGPLv3 included in the packaging of this file. Please review the
++** following information to ensure the GNU Lesser General Public License
++** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** As a special exception, The Qt Company gives you certain additional
++** rights. These rights are described in The Qt Company LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#include <dlfcn.h>
++
++int main(int, char **)
++{
++ dlopen(0, 0);
++}
+diff --git a/config.tests/unix/libdl/libdl.pro b/config.tests/unix/libdl/libdl.pro
+new file mode 100644
+index 0000000..a643934
+--- /dev/null
++++ b/config.tests/unix/libdl/libdl.pro
+@@ -0,0 +1,3 @@
++SOURCES = libdl.cpp
++CONFIG -= qt dylib
++LIBS += -ldl
+\ No newline at end of file
+diff --git a/configure b/configure
+index 10ad7ca..1c70691 100755
+--- a/configure
++++ b/configure
+@@ -5506,6 +5506,12 @@ if [ "$CFG_LIBPNG" = "auto" ]; then
+ fi
+ fi
+
++# detect dl
++if ! compileTest unix/libdl "libdl"; then
++ QMakeVar add DEFINES QT_NO_DYNAMIC_LIBRARY
++ QMAKE_CONFIG="$QMAKE_CONFIG no-libdl"
++fi
++
+ # detect accessibility
+ if [ "$CFG_ACCESSIBILITY" = "auto" ]; then
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
+diff --git a/src/corelib/plugin/plugin.pri b/src/corelib/plugin/plugin.pri
+index eb7a7f7..c342f2e 100644
+--- a/src/corelib/plugin/plugin.pri
++++ b/src/corelib/plugin/plugin.pri
+@@ -32,4 +32,4 @@ integrity {
+ SOURCES += plugin/qlibrary_unix.cpp
+ }
+
+-LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD
++!no-libdl: LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD
+--
+2.8.0
+
+++ /dev/null
-From 87c9c18fad02744238336a6cf1ce70d3ec2c89c2 Mon Sep 17 00:00:00 2001
-From: Bernd Kuhls <bernd.kuhls@t-online.de>
-Date: Sat, 11 Jun 2016 17:03:07 +0200
-Subject: [PATCH 1/1] OpenGL/EGL: Avoid X11 header collision
-
-Including X11 headers via EGL/egl.h leads to a collision of defines
-between Qt and X11. To fix this qt5 added
- DEFINES += MESA_EGL_NO_X11_HEADERS
-in various files:
-
-https://github.com/qtproject/qtbase/blob/dev/src/platformsupport/eglconvenience/eglconvenience.pri#L19
-https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/minimalegl/minimalegl.pro#L10
-https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro#L6
-[...]
-
-This patch fixes a similar compile error in qt4:
-http://autobuild.buildroot.net/results/9b0/9b0ed92984eead89d148eaa71aff6e2f1e117837/
-http://autobuild.buildroot.org/results/4fd/4fd57553336d36439fab32a7221fc8639758e887/
-http://autobuild.buildroot.org/results/5cb/5cb8072f8220f7203fa79936eedcc43eab53ec66/
-
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
-(patch not sent upstream because qt4 branch is closed:
- http://blog.qt.io/blog/2015/05/26/qt-4-8-7-released/)
----
-
- src/gui/egl/egl.pri | 3 +++
- src/opengl/opengl.pro | 3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/src/gui/egl/egl.pri b/src/gui/egl/egl.pri
-index 8e8664c..715ffd7 100644
---- a/src/gui/egl/egl.pri
-+++ b/src/gui/egl/egl.pri
-@@ -22,6 +22,9 @@ contains(QT_CONFIG, egl): {
- !isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
- }
-
-+ # Avoid X11 header collision
-+ DEFINES += MESA_EGL_NO_X11_HEADERS
-+
- wince*: SOURCES += egl/qegl_wince.cpp
-
- unix {
-diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro
-index ce1a5d2..65b1031 100644
---- a/src/opengl/opengl.pro
-+++ b/src/opengl/opengl.pro
-@@ -149,6 +149,9 @@ embedded {
- qglwindowsurface_qws_p.h \
- qgl_egl_p.h
-
-+ # Avoid X11 header collision
-+ DEFINES += MESA_EGL_NO_X11_HEADERS
-+
- contains(QT_CONFIG, fontconfig) {
- include($$QT_SOURCE_TREE/config.tests/unix/freetype/freetype.pri)
- } else {
---
-2.8.1
-
--- /dev/null
+From 87c9c18fad02744238336a6cf1ce70d3ec2c89c2 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd.kuhls@t-online.de>
+Date: Sat, 11 Jun 2016 17:03:07 +0200
+Subject: [PATCH 1/1] OpenGL/EGL: Avoid X11 header collision
+
+Including X11 headers via EGL/egl.h leads to a collision of defines
+between Qt and X11. To fix this qt5 added
+ DEFINES += MESA_EGL_NO_X11_HEADERS
+in various files:
+
+https://github.com/qtproject/qtbase/blob/dev/src/platformsupport/eglconvenience/eglconvenience.pri#L19
+https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/minimalegl/minimalegl.pro#L10
+https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro#L6
+[...]
+
+This patch fixes a similar compile error in qt4:
+http://autobuild.buildroot.net/results/9b0/9b0ed92984eead89d148eaa71aff6e2f1e117837/
+http://autobuild.buildroot.org/results/4fd/4fd57553336d36439fab32a7221fc8639758e887/
+http://autobuild.buildroot.org/results/5cb/5cb8072f8220f7203fa79936eedcc43eab53ec66/
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+(patch not sent upstream because qt4 branch is closed:
+ http://blog.qt.io/blog/2015/05/26/qt-4-8-7-released/)
+---
+
+ src/gui/egl/egl.pri | 3 +++
+ src/opengl/opengl.pro | 3 +++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/src/gui/egl/egl.pri b/src/gui/egl/egl.pri
+index 8e8664c..715ffd7 100644
+--- a/src/gui/egl/egl.pri
++++ b/src/gui/egl/egl.pri
+@@ -22,6 +22,9 @@ contains(QT_CONFIG, egl): {
+ !isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
+ }
+
++ # Avoid X11 header collision
++ DEFINES += MESA_EGL_NO_X11_HEADERS
++
+ wince*: SOURCES += egl/qegl_wince.cpp
+
+ unix {
+diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro
+index ce1a5d2..65b1031 100644
+--- a/src/opengl/opengl.pro
++++ b/src/opengl/opengl.pro
+@@ -149,6 +149,9 @@ embedded {
+ qglwindowsurface_qws_p.h \
+ qgl_egl_p.h
+
++ # Avoid X11 header collision
++ DEFINES += MESA_EGL_NO_X11_HEADERS
++
+ contains(QT_CONFIG, fontconfig) {
+ include($$QT_SOURCE_TREE/config.tests/unix/freetype/freetype.pri)
+ } else {
+--
+2.8.1
+
# md5 http://download.qt.io/official_releases/qt/4.8/4.8.7/md5sums-4.8.7, sha256 locally computed:
md5 d990ee66bf7ab0c785589776f35ba6ad qt-everywhere-opensource-src-4.8.7.tar.gz
sha256 e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0 qt-everywhere-opensource-src-4.8.7.tar.gz
-sha256 e03740e20b8dbf52d163d8a4a37125e7c55b59a9a5e7cf7e89a08e07286b6135 b8f98d956501dfa4ce03a137f15d404930a56066.patch
QT_VERSION = $(QT_VERSION_MAJOR).7
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)
-# Patch fixing ALSA detection. Taken from Qt5, but applies fine to
-# Qt4.
-QT_PATCH = https://github.com/qtproject/qtbase/commit/b8f98d956501dfa4ce03a137f15d404930a56066.patch
QT_DEPENDENCIES = host-pkgconf
QT_INSTALL_STAGING = YES