diff mbox

can't build qt5webkit for raspberry pi 3

Message ID 20170815210235.3uvthq2bk5zoxluo@gportay
State Not Applicable
Headers show

Commit Message

Gaël PORTAY Aug. 15, 2017, 9:02 p.m. UTC
Hello Brock,

On Tue, Aug 15, 2017 at 11:41:48AM -0600, Brock Williams wrote:
> 
> I'm not able to build qt5webkit for a pi 3 from master.  It works for pi
> 2. Here is the error:
> 
> In file included from ./config.h:30:0,
>                  from wtf/CurrentTime.cpp:34:
> ./wtf/Platform.h:323:6: error: #error "Not supported ARM architecture"
>  #    error "Not supported ARM architecture"
>       ^~~~~
> 
> I've attached the defconfig that we are using.  This is based on the
> raspberrypi3_defconfig with what I think is just the minimum to build
> qt5webkit added.  For now we have just configured
> the build down to the pi 2 cpu settings.
> 
> Brock
> 

The CPU of rpi3 has moved from cortex-a8 (armv7) to cortex-a53 (armv8) in the
raspberrypi3_defconfig. And Qt WebKit do not support for armv8.

I have not tested this, but you can update Platform.h to add support for armv8.

In file, build/qt5webkit-5.9.1/Source/WTF/wtf/Platform.h, apply the following
chunk


Regards,
Gael

Comments

Arnout Vandecappelle Aug. 15, 2017, 9:24 p.m. UTC | #1
On 15-08-17 23:02, Gaël PORTAY wrote:
> Hello Brock,
> 
> On Tue, Aug 15, 2017 at 11:41:48AM -0600, Brock Williams wrote:
>> I'm not able to build qt5webkit for a pi 3 from master.  It works for pi
>> 2. Here is the error:
>>
>> In file included from ./config.h:30:0,
>>                  from wtf/CurrentTime.cpp:34:
>> ./wtf/Platform.h:323:6: error: #error "Not supported ARM architecture"
>>  #    error "Not supported ARM architecture"
>>       ^~~~~
>>
>> I've attached the defconfig that we are using.  This is based on the
>> raspberrypi3_defconfig with what I think is just the minimum to build
>> qt5webkit added.  For now we have just configured
>> the build down to the pi 2 cpu settings.
>>
>> Brock
>>
> The CPU of rpi3 has moved from cortex-a8 (armv7) to cortex-a53 (armv8) in the
> raspberrypi3_defconfig. And Qt WebKit do not support for armv8.

 So we should add arch dependencies to qt5webkit, I guess. Are there more arches
that are excluded (but still allowed by jscore, so only arm, x86, mipsel)?

 Regards,
 Arnout
Gaël PORTAY Aug. 15, 2017, 9:59 p.m. UTC | #2
Hi Arnout,

On Tue, Aug 15, 2017 at 11:24:54PM +0200, Arnout Vandecappelle wrote:
> 
> 
> On 15-08-17 23:02, Gaël PORTAY wrote:
> > Hello Brock,
> > 
> > On Tue, Aug 15, 2017 at 11:41:48AM -0600, Brock Williams wrote:
> >> I'm not able to build qt5webkit for a pi 3 from master.  It works for pi
> >> 2. Here is the error:
> >>
> >> In file included from ./config.h:30:0,
> >>                  from wtf/CurrentTime.cpp:34:
> >> ./wtf/Platform.h:323:6: error: #error "Not supported ARM architecture"
> >>  #    error "Not supported ARM architecture"
> >>       ^~~~~
> >>
> >> I've attached the defconfig that we are using.  This is based on the
> >> raspberrypi3_defconfig with what I think is just the minimum to build
> >> qt5webkit added.  For now we have just configured
> >> the build down to the pi 2 cpu settings.
> >>
> >> Brock
> >>
> > The CPU of rpi3 has moved from cortex-a8 (armv7) to cortex-a53 (armv8) in the
> > raspberrypi3_defconfig. And Qt WebKit do not support for armv8.
> 
>  So we should add arch dependencies to qt5webkit, I guess. Are there more arches
> that are excluded (but still allowed by jscore, so only arm, x86, mipsel)?
> 

I am compiling for rpi3. The fix seems to work. I will test it on the target
when the image is ready.

QtWebKit supposed to be supported on these architecture.

	$ git grep '/\* CPU(.*).*\*/' Source/WTF/wtf/Platform.h
	Source/WTF/wtf/Platform.h:/* CPU() - the target CPU architecture */
	Source/WTF/wtf/Platform.h:/* CPU(ALPHA) - DEC Alpha */
	Source/WTF/wtf/Platform.h:/* CPU(HPPA) - HP PA-RISC */
	Source/WTF/wtf/Platform.h:/* CPU(IA64) - Itanium / IA-64 */
	Source/WTF/wtf/Platform.h:/* CPU(MIPS64) - MIPS 64-bit */
	Source/WTF/wtf/Platform.h:/* CPU(MIPS) - MIPS 32-bit */
	Source/WTF/wtf/Platform.h:/* CPU(PPC) - PowerPC 32-bit */
	Source/WTF/wtf/Platform.h:/* CPU(PPC64) - PowerPC 64-bit */
	Source/WTF/wtf/Platform.h:/* CPU(SH4) - SuperH SH-4 */
	Source/WTF/wtf/Platform.h:/* CPU(SPARC32) - SPARC 32-bit */
	Source/WTF/wtf/Platform.h:/* CPU(SPARC64) - SPARC 64-bit */
	Source/WTF/wtf/Platform.h:/* CPU(SPARC) - any SPARC, true for CPU(SPARC32) and CPU(SPARC64) */
	Source/WTF/wtf/Platform.h:/* CPU(S390X) - S390 64-bit */
	Source/WTF/wtf/Platform.h:/* CPU(S390) - S390 32-bit */
	Source/WTF/wtf/Platform.h:/* CPU(X86) - i386 / x86 32-bit */
	Source/WTF/wtf/Platform.h:/* CPU(X86_64) - AMD64 / Intel64 / x86_64 64-bit */
	Source/WTF/wtf/Platform.h:/* CPU(ARM) - ARM, any version*/
	Source/WTF/wtf/Platform.h:/* CPU(ARM_FEATURE_UNALIGNED) - ARM instruction set supports unaligned access */
	Source/WTF/wtf/Platform.h:/* CPU(ARM_TRADITIONAL) - Thumb2 is not available, only traditional ARM (v4 or greater) */
	Source/WTF/wtf/Platform.h:/* CPU(ARM_THUMB2) - Thumb2 instruction set is available */
	Source/WTF/wtf/Platform.h:/* CPU(AARCH64) - AArch64 */

The issue comes from the fact we have __ARM_ARCH_8A__ defined but not
__aarch64__ (because we have an armv8/32bits; and not an armv8/64bits).

__ARM_ARCH_8A__ is never catched in an #ifdef/endif in Platform.h. __aarch64__
and __ARM_ARCH_[4-7]x__ are caught.

Regards,
Gael
diff mbox

Patch

diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
index 562840cf7..9ce350e54 100644
--- a/Source/WTF/wtf/Platform.h
+++ b/Source/WTF/wtf/Platform.h
@@ -287,6 +287,9 @@ 
     || defined(__ARM_ARCH_7S__)
 #define WTF_THUMB_ARCH_VERSION 4
 
+#elif defined(__ARM_ARCH_8A__)
+#define WTF_CPU_ARM_TRADITIONAL 1
+
 /* RVCT sets __TARGET_ARCH_THUMB */
 #elif defined(__TARGET_ARCH_THUMB)
 #define WTF_THUMB_ARCH_VERSION __TARGET_ARCH_THUMB