Import my upstream commit to fix the detection of 3dNOW! support.

The patch was originally written by dim@ and fixes the way Qt includes the
<mm3dnow.h> header. See the upstream commits' message for more information.

Practically speaking, this should make the Qt ports build with clang on i386
again, and allows us to revert commits r316233, r316348 and r316341: miwi
was very laconic in his commit messages, but the changes all point to the
issue being fixed here.

Submitted by:	dim
This commit is contained in:
Raphael Kubo da Costa 2013-05-11 17:31:45 +00:00
parent 47f7e0e39d
commit 760949cffa
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=317896
7 changed files with 36 additions and 7 deletions

View File

@ -3,7 +3,7 @@
PORTNAME= corelib
DISTVERSION= ${QT4_VERSION}
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES?= devel
PKGNAMEPREFIX= qt4-
@ -14,7 +14,6 @@ LIB_DEPENDS= icui18n:${PORTSDIR}/devel/icu
USES= pkgconfig
USE_GNOME= _glib20
USE_GCC= any
USE_QT4= qmake_build moc_build
QT_NONSTANDARD= yes
QT_DIST= yes

View File

@ -0,0 +1,35 @@
commit ccd1b2ee01c193cd157978c1f9f08f87d0f9c94b
Author: Raphael Kubo da Costa <rakuco@FreeBSD.org>
Date: Fri May 10 01:40:23 2013 +0300
Check that 3DNow! instructions are supported before including mm3dnow.h.
Include mm3dnow.h the way we already include the (S)SSE{3,4} and AVX
instruction headers: by checking that the compiler is set to support those
instructions besides verifying that QT_HAVE_3DNOW evalues to true (which
only means the compiler supported them when the build was being configured).
This has not caused a problem in most cases so far because GCC protects its
mm3dnow.h header with an #ifdef __3dNOW__ (contrary to what it does on, say,
pmmintrin.h). clang's mm3dnow.h, on the other hand, does not have that check
and can fail if -march is set to, for example, i386 or i486.
Not backported from qt5 because qtbase because qsimd_p.h does not include
the 3DNow! headers after commit a1b30b49ef09bef2e97b9a0622bf7ad622678fee.
Change-Id: I15ab5e936c71c55f89c3f25777ab27fbd262e9cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h
index 87e26e1..6a32e8f 100644
--- ./src/corelib/tools/qsimd_p.h
+++ ./src/corelib/tools/qsimd_p.h
@@ -199,7 +199,7 @@ QT_BEGIN_HEADER
#endif
// 3D now intrinsics
-#if defined(QT_HAVE_3DNOW)
+#if defined(QT_HAVE_3DNOW) && (defined(__3dNOW__) || defined(Q_CC_MSVC))
#include <mm3dnow.h>
#endif

View File

@ -14,7 +14,6 @@ LIB_DEPENDS= jpeg:${PORTSDIR}/graphics/jpeg \
png15:${PORTSDIR}/graphics/png \
tiff:${PORTSDIR}/graphics/tiff
USE_GCC= any
USE_QT4= qmake_build moc_build rcc_build corelib gui svg xml
QT_NONSTANDARD= yes
QT_DIST= yes

View File

@ -10,7 +10,6 @@ PKGNAMEPREFIX= qt4-
MAINTAINER= kde@FreeBSD.org
COMMENT= Qt4 WebKit engine
USE_GCC= any
USES= pkgconfig
USE_QT4= corelib declarative gui network \
qmake_build moc_build rcc_build

View File

@ -18,7 +18,6 @@ QT_NONSTANDARD= yes
QT_DIST= yes
MAKE_JOBS_SAFE= yes
USE_GCC= any
HAS_CONFIGURE= yes
USES= pkgconfig
USE_LDCONFIG= ${PREFIX}/lib/qt4

View File

@ -17,7 +17,6 @@ MAKE_JOBS_SAFE= yes
HAS_CONFIGURE= yes
USE_GL= glu
USE_GCC= any
ALL_TARGET= first
CONFIGURE_ENV?= QTDIR=${WRKSRC} PATH=${WRKSRC}/bin:$$PATH
MAKE_ENV?= QTDIR=${WRKSRC} LD_LIBRARY_PATH=${WRKSRC}/lib:$$LD_LIBRARY_PATH \

View File

@ -14,7 +14,6 @@ QT_NONSTANDARD= yes
QT_DIST= yes
MAKE_JOBS_SAFE= yes
USE_GCC= any
HAS_CONFIGURE= yes
USE_LDCONFIG= ${PREFIX}/lib/qt4
USE_GL= gl