diff options
author | Krishnanjanappa, Jagadeesh <jagadeesh.krishnanjanappa@caviumnetworks.com> | 2015-04-15 13:53:48 +0530 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-05-03 11:43:49 +0100 |
commit | 5bed033beb81848df2d3d4ecc1accc3c86282fcd (patch) | |
tree | 356c381143b63631b293b0aedf00435c3f22c2e8 /meta/recipes-qt/qt4 | |
parent | eea3a90653d32570c4ee32c6074278e028471e5f (diff) | |
download | poky-5bed033beb81848df2d3d4ecc1accc3c86282fcd.tar.gz |
qt4-embedded: add checking for AArch64 ilp32
1. Cross-compiling qt4-embedded and qt4-x11-free applications for AArch64 ilp32
(both big and little endian) fails with below error,
(snip)
In file included from ../3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.h:31:0,
from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalData.h:32,
from ../3rdparty/javascriptcore/JavaScriptCore/interpreter/CallFrame.h:26,
from ../3rdparty/javascriptcore/JavaScriptCore/runtime/ClassInfo.h:26,
from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSObject.h:27,
from ../3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.h:30,
from ../3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.cpp:27:
../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h: In instantiation of 'TO QTWTF::bitwise_cast(FROM) [with TO = int; FROM = double]':
../3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.h:52:49: required from here
../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h:63:1: error: size of array is negative
../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h: In instantiation of 'TO QTWTF::bitwise_cast(FROM) [with TO = double; FROM = int]':
../3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.h:57:47: required from here
../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h:63:1: error: size of array is negative
make[1]: *** [obj/release/JSCallbackConstructor.o] Error 1
-- CUT --
the error is because of JSVALUE64 is being defined while compiling
programs for AArch64 ilp32. This makes equal condition checking of
intptr_t and double datatypes as false, and results in -1 (negative)
as array size in bitwise_cast function.
The patch defines JSVALUE64, if the programs are being compiled for
AArch64 64bit NOT for ilp32.
2. qt4_arch.inc is modified to set system architecture as aarch64 if the
TARGET_ARCH is other than aarch64. Without this modification, for
TARGET_ARCH equal to aarch64_32, aarch64be, aarch64be_32; the system
architecture is set as 'generic' and results in below error.
configure log:
(snip)
64-bit AMD 80x86 (x86_64)
'-opensource' is unsupported, using 'generic'
'x86_64' is supported
System architecture: 'generic'
Host architecture: 'x86_64'
-- CUT --
build error:
(snip)
In file included from ../../include/QtCore/qatomic_generic.h:1:0,
from ../../include/QtCore/../../src/corelib/arch/qatomic_arch.h:64,
from ../../include/QtCore/qatomic_arch.h:1,
from ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:227,
from ../../include/QtCore/qbasicatomic.h:1,
from ../../include/QtCore/../../src/corelib/thread/qatomic.h:46,
from ../../include/QtCore/qatomic.h:1,
from ../../include/QtCore/../../src/corelib/tools/qbytearray.h:45,
from ../../include/QtCore/qbytearray.h:1,
from ../../include/QtCore/../../src/corelib/tools/qstring.h:46,
from ../../include/QtCore/qstring.h:1,
from ../../include/QtCore/../../src/corelib/kernel/qobject.h:48,
from ../../include/QtCore/qobject.h:1,
from ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:45,
from ../../include/QtCore/qcoreapplication.h:1,
from qdbusintegrator.cpp:42:
../../include/QtCore/../../src/corelib/arch/qatomic_generic.h: In instantiation of 'bool QBasicAtomicPointer<T>::testAndSetOrdered(T*, T*) [with T = const QString]':
qdbusintegrator.cpp:76:1: required from here
../../include/QtCore/../../src/corelib/arch/qatomic_generic.h:197:88: error: invalid conversion from 'const void*' to 'void*' [-fpermissive]
../../include/QtCore/../../src/corelib/arch/qatomic_generic.h:108:20: error: initializing argument 2 of 'bool QBasicAtomicPointer_testAndSetOrdered(void* volatile*, void*, void*)' [-fpermissive]
../../include/QtCore/../../src/corelib/arch/qatomic_generic.h:197:88: error: invalid conversion from 'const void*' to 'void*' [-fpermissive]
../../include/QtCore/../../src/corelib/arch/qatomic_generic.h:108:20: error: initializing argument 3 of 'bool QBasicAtomicPointer_testAndSetOrdered(void* volatile*, void*, void*)' [-fpermissive]
make[1]: *** [.obj/release-shared-emb-auto/qdbusintegrator.o] Error 1
make[1]: *** Waiting for unfinished jobs....
-- CUT --
So, select system architecture (via QT_ARCH) as aarch64 for
AArch64 and its other variants
(From OE-Core rev: 5f191d86b8d60624d729b3b147c1dff818326dbd)
Signed-off-by: Krishnanjanappa, Jagadeesh <jagadeesh.krishnanjanappa@caviumnetworks.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-qt/qt4')
-rw-r--r-- | meta/recipes-qt/qt4/qt4-4.8.6.inc | 1 | ||||
-rw-r--r-- | meta/recipes-qt/qt4/qt4-4.8.6/add_check_for_aarch64_32.patch | 55 | ||||
-rw-r--r-- | meta/recipes-qt/qt4/qt4_arch.inc | 2 |
3 files changed, 57 insertions, 1 deletions
diff --git a/meta/recipes-qt/qt4/qt4-4.8.6.inc b/meta/recipes-qt/qt4/qt4-4.8.6.inc index 19f52a7711..0cb7f80928 100644 --- a/meta/recipes-qt/qt4/qt4-4.8.6.inc +++ b/meta/recipes-qt/qt4/qt4-4.8.6.inc | |||
@@ -28,6 +28,7 @@ SRC_URI = "http://download.qt-project.org/official_releases/qt/4.8/${PV}/qt-ever | |||
28 | file://0032-aarch64_add_header.patch \ | 28 | file://0032-aarch64_add_header.patch \ |
29 | file://0034-Fix-a-division-by-zero-when-processing-malformed-BMP.patch \ | 29 | file://0034-Fix-a-division-by-zero-when-processing-malformed-BMP.patch \ |
30 | file://Fix-QWSLock-invalid-argument-logs.patch \ | 30 | file://Fix-QWSLock-invalid-argument-logs.patch \ |
31 | file://add_check_for_aarch64_32.patch \ | ||
31 | file://g++.conf \ | 32 | file://g++.conf \ |
32 | file://linux.conf \ | 33 | file://linux.conf \ |
33 | " | 34 | " |
diff --git a/meta/recipes-qt/qt4/qt4-4.8.6/add_check_for_aarch64_32.patch b/meta/recipes-qt/qt4/qt4-4.8.6/add_check_for_aarch64_32.patch new file mode 100644 index 0000000000..ad5103dd02 --- /dev/null +++ b/meta/recipes-qt/qt4/qt4-4.8.6/add_check_for_aarch64_32.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | Author: Krishnanjanappa, Jagadeesh <jagadeesh.krishnanjanappa@caviumnetworks.com> | ||
2 | Date: Sun Apr 12 19:27:10 2015 +0530 | ||
3 | |||
4 | [PATCH] add checking for AArch64 ilp32 | ||
5 | |||
6 | Cross-compiling qt4-embedded and qt4-x11-free applications for AArch64 ilp32 | ||
7 | (both big and little endian) fails with below error, | ||
8 | |||
9 | (snip) | ||
10 | In file included from ../3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.h:31:0, | ||
11 | from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalData.h:32, | ||
12 | from ../3rdparty/javascriptcore/JavaScriptCore/interpreter/CallFrame.h:26, | ||
13 | from ../3rdparty/javascriptcore/JavaScriptCore/runtime/ClassInfo.h:26, | ||
14 | from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSObject.h:27, | ||
15 | from ../3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.h:30, | ||
16 | from ../3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.cpp:27: | ||
17 | ../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h: In instantiation of 'TO QTWTF::bitwise_cast(FROM) [w | ||
18 | ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.h:52:49: required from here | ||
19 | ../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h:63:1: error: size of array is negative | ||
20 | ../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h: In instantiation of 'TO QTWTF::bitwise_cast(FROM) [w | ||
21 | ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.h:57:47: required from here | ||
22 | ../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h:63:1: error: size of array is negative | ||
23 | make[1]: *** [obj/release/JSCallbackConstructor.o] Error 1 | ||
24 | -- CUT -- | ||
25 | |||
26 | the error is because of JSVALUE64 is being defined while compiling programs | ||
27 | for AArch64 ilp32. This makes equal condition checking of intptr_t and double | ||
28 | datatypes as false, and results in -1 (negative) as array size in bitwise_cast | ||
29 | function. | ||
30 | |||
31 | Upstream-Status: Pending | ||
32 | |||
33 | Signed-off-by: Krishnanjanappa, Jagadeesh <jagadeesh.krishnanjanappa@caviumnetworks.com> | ||
34 | |||
35 | --- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2014-04-11 00:07:12.000000000 +0530 | ||
36 | +++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2015-04-10 22:19:51.066279426 +0530 | ||
37 | @@ -214,6 +214,9 @@ | ||
38 | #define WTF_CPU_AARCH64 1 | ||
39 | #if defined(__AARCH64EB__) | ||
40 | #define WTF_CPU_BIG_ENDIAN 1 | ||
41 | +#if !defined(__LP64__) | ||
42 | +#define WTF_CPU_AARCH64_32 1 | ||
43 | +#endif | ||
44 | #endif | ||
45 | #endif | ||
46 | |||
47 | @@ -903,7 +906,7 @@ | ||
48 | #endif | ||
49 | |||
50 | #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64) | ||
51 | -#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) | ||
52 | +#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || (CPU(AARCH64) && !CPU(AARCH64_32)) | ||
53 | #define WTF_USE_JSVALUE64 1 | ||
54 | #elif CPU(ARM) || CPU(PPC64) | ||
55 | #define WTF_USE_JSVALUE32 1 | ||
diff --git a/meta/recipes-qt/qt4/qt4_arch.inc b/meta/recipes-qt/qt4/qt4_arch.inc index 07512db713..e94c2847b7 100644 --- a/meta/recipes-qt/qt4/qt4_arch.inc +++ b/meta/recipes-qt/qt4/qt4_arch.inc | |||
@@ -4,7 +4,7 @@ ARM_INSTRUCTION_SET = "arm" | |||
4 | 4 | ||
5 | set_arch() { | 5 | set_arch() { |
6 | case ${TARGET_ARCH} in | 6 | case ${TARGET_ARCH} in |
7 | aarch64) QT_ARCH=aarch64 ;; | 7 | aarch64*) QT_ARCH=aarch64 ;; |
8 | arm*) QT_ARCH=arm ;; | 8 | arm*) QT_ARCH=arm ;; |
9 | i*86*) QT_ARCH=i386 ;; | 9 | i*86*) QT_ARCH=i386 ;; |
10 | mips*) QT_ARCH=mips ;; | 10 | mips*) QT_ARCH=mips ;; |