Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Seiderer <ps.report@gmx.net>
To: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: buildroot@busybox.net,
	"James Hilliard" <james.hilliard1@gmail.com>,
	"Julien Corjon" <corjon.j@ecagroup.com>,
	"Gaël Portay" <gael.portay@collabora.com>
Subject: Re: [Buildroot] [PATCH v3 1/2] package/qt5webengine: fix compile flags for arm
Date: Sat, 15 Jan 2022 23:53:51 +0100	[thread overview]
Message-ID: <20220115235351.744cbf77@gmx.net> (raw)
In-Reply-To: <20220109150304.45e12aea@windsurf>

Hello Thomas,

On Sun, 9 Jan 2022 15:03:04 +0100, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:

> Hello Peter,
>
> On Fri,  6 Mar 2020 21:34:09 +0100
> Peter Seiderer <ps.report@gmx.net> wrote:
>
> > The qt5webengine configure simple takes QT_ARCH ('arm') to determine the
> > chromium compiler flags and uses some hard coded ARMv7 default values
> > for the compiler command line: '... -march=armv7-a -mfloat-abi=hard
> > -mtune=generic-armv7-a -mfpu=vfpv3-d16 ...'.
> >
> > This results e.g. in an illegal instruction failure for rpi zero
> > (reported on the mailing list, see [1]).
> >
> > Disable all arm custom cpu flags (march/mfloat-abi/mtune/mfpu/mthumb) as
> > these are already set by the compiler wrapper (via a patch to the chromium
> > GN build system BUILD.gn file).
> >
> > Despite the patch set all known values in the chromium GN build
> > system config file chromium/build/config/arm.gni to not disturb
> > the compile defines settings logic.
>
> It's been a very long time since this patch was posted. Does the
> problem still occur? There is a patch series from James Hilliard
> upgrading qt5webengine:
>
>   https://patchwork.ozlabs.org/project/buildroot/list/?series=279766

Problem still exits with qt5webengine-5.15.2 and qt5webengine-5.15.8...

>
> Some more questions below.
>
> > +diff --git a/src/3rdparty/chromium/build/config/compiler/BUILD.gn b/src/3rdparty/chromium/build/config/compiler/BUILD.gn
> > +index d223a4f6f..16dec5c6a 100644
> > +--- a/src/3rdparty/chromium/build/config/compiler/BUILD.gn
> > ++++ b/src/3rdparty/chromium/build/config/compiler/BUILD.gn
> > +@@ -672,7 +672,8 @@ config("compiler") {
> > +     # TODO(pcc): The contents of .ARM.attributes should be based on the
> > +     # -march flag passed at compile time (see llvm.org/pr36291).
> > +     if (current_cpu == "arm") {
> > +-      ldflags += [ "-march=$arm_arch" ]
> > ++      # disabled for the buildroot compile
> > ++      # ldflags += [ "-march=$arm_arch" ]
> > +     }
> > +   }
> > +
> > +@@ -752,13 +753,15 @@ config("compiler_cpu_abi") {
> > +         ldflags += [ "--target=arm-linux-gnueabihf" ]
> > +       }
> > +       if (!is_nacl) {
> > +-        cflags += [
> > +-          "-march=$arm_arch",
> > +-          "-mfloat-abi=$arm_float_abi",
> > +-        ]
> > ++        # disabled for the buildroot compile
> > ++        # cflags += [
> > ++        #   "-march=$arm_arch",
> > ++        #   "-mfloat-abi=$arm_float_abi",
> > ++        # ]
> > +       }
> > +       if (arm_tune != "") {
> > +-        cflags += [ "-mtune=$arm_tune" ]
> > ++        # disabled for the buildroot compile
> > ++        # cflags += [ "-mtune=$arm_tune" ]
> > +       }
> > +     } else if (current_cpu == "arm64") {
> > +       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
> > +@@ -1130,7 +1133,9 @@ config("clang_revision") {
> > +
> > + config("compiler_arm_fpu") {
> > +   if (current_cpu == "arm" && !is_ios && !is_nacl) {
> > +-    cflags = [ "-mfpu=$arm_fpu" ]
> > ++    # disabled for the buildroot compile
> > ++    # cflags = [ "-mfpu=$arm_fpu" ]
> > ++    cflags = []
> > +     asmflags = cflags
> > +   }
> > + }
> > +@@ -1138,7 +1143,9 @@ config("compiler_arm_fpu") {
> > + config("compiler_arm_thumb") {
> > +   if (current_cpu == "arm" && arm_use_thumb && is_posix &&
> > +       !(is_mac || is_ios || is_nacl)) {
> > +-    cflags = [ "-mthumb" ]
> > ++    # disabled for the buildroot compile
> > ++    # cflags = [ "-mthumb" ]
> > ++    cflags = []
> > +     if (is_android && !is_clang) {
> > +       # Clang doesn't support this option.
> > +       cflags += [ "-mthumb-interwork" ]
>
> You're fixing the problem for ARM, but is there some similar mess for
> other CPU architectures?
>
> > +# configure arm architecture paramter for chromium compile
> > +ifeq ($(BR2_arm),y)
> > +ifeq ($(BR2_ARM_CPU_ARMV4),y)
> > +define QT5WEBENGINE_CONFIGURE_ARM_VERSION
> > +	$(SED) 's/^    arm_version = 7$$/    arm_version = 4/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +endif
> > +
> > +ifeq ($(BR2_ARM_CPU_ARMV5),y)
> > +define QT5WEBENGINE_CONFIGURE_ARM_VERSION
> > +	$(SED) 's/^    arm_version = 7$$/    arm_version = 5/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +endif
> > +
> > +ifeq ($(BR2_ARM_CPU_ARMV6),y)
> > +define QT5WEBENGINE_CONFIGURE_ARM_VERSION
> > +	$(SED) 's/^    arm_version = 7$$/    arm_version = 6/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +endif
> > +
> > +# no entriy for BR2_ARM_CPU_ARMV7A/BR2_ARM_CPU_ARMV7M, arm_vesion = 7 is already set by default
> > +
> > +ifeq ($(BR2_ARM_CPU_ARMV8A),y)
> > +define QT5WEBENGINE_CONFIGURE_ARM_VERSION
> > +	$(SED) 's/^    arm_version = 7$$/    arm_version = 8/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +endif
> > +
> > +# not known by buildroot, set to some dummy to disable all default logic
> > +define QT5WEBENGINE_CONFIGURE_ARM_ARCH
> > +	$(SED) 's/^    arm_arch = ""$$/    arm_arch = "arm-dummy-arch"/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +
> > +define QT5WEBENGINE_CONFIGURE_ARM_FPU
> > +	$(SED) 's/^    arm_fpu = ""$$/    arm_fpu = $(BR2_GCC_TARGET_FPU)/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +
> > +define QT5WEBENGINE_CONFIGURE_ARM_FLOAT_ABI
> > +	$(SED) 's/^    arm_float_abi = ""$$/    arm_float_abi = $(BR2_GCC_TARGET_FLOAT_ABI)/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +
> > +define QT5WEBENGINE_CONFIGURE_ARM_TUNE
> > +	$(SED) 's/^    arm_tune = ""$$/    arm_tune = $(BR2_GCC_TARGET_CPU)/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +
> > +ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
> > +define QT5WEBENGINE_CONFIGURE_ARM_NEON
> > +	$(SED) 's/^    arm_use_neon = ""$$/    arm_use_neon = "true"/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +else
> > +define QT5WEBENGINE_CONFIGURE_ARM_NEON
> > +	$(SED) 's/^    arm_use_neon = ""$$/    arm_use_neon = "false"/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +endif
> > +
> > +ifeq ($(BR2_ARM_CPU_HAS_THUMB),)
> > +define QT5WEBENGINE_CONFIGURE_ARM_THUMB
> > +	$(SED) 's/^    arm_use_thumb = true$$/    arm_use_thumb = false/' $(@D)/src/3rdparty/chromium/build/config/arm.gni
> > +endef
> > +endif
> > +endif
>
> What are all those variables doing in the GN Chromium stuff?

Setting compiler flags e.g.

	arm_use_thumb --> -mthumb
	arm_use_neon  --> -DUSE_NEON and influences arm_fpu setting (if not already set)...

>
> I'm kind of worried by two aspects:
>
>  - This is all very ARM specific, but we have other CPU architectures
>    supported in Buildroot

Yes there is a although some x86/x64 logic setting e.g. -m32/-m64 and
-msse2/-mfpmath=sse/-mmmx and some mips/ppc/s390 and more..., but did
only take a deeper look at the arm part as the reported failure was
about rpi-zero...

>
>  - We already pass the proper CFLAGS, so it's always annoying to
>    duplicate this logic into package-specific flags

Yes... ;-)

Regards,
Peter

>
> Thomas

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

      reply	other threads:[~2022-01-15 22:54 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-06 20:34 [Buildroot] [PATCH v3 1/2] package/qt5webengine: fix compile flags for arm Peter Seiderer
2020-03-06 20:34 ` [Buildroot] [PATCH v3 2/2] package/qt5webengine: use buildroot cflags/ldflags " Peter Seiderer
2022-01-09 14:03   ` Thomas Petazzoni
2022-01-15 22:57     ` Peter Seiderer
2022-01-09 14:03 ` [Buildroot] [PATCH v3 1/2] package/qt5webengine: fix compile flags " Thomas Petazzoni
2022-01-15 22:53   ` Peter Seiderer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220115235351.744cbf77@gmx.net \
    --to=ps.report@gmx.net \
    --cc=buildroot@busybox.net \
    --cc=corjon.j@ecagroup.com \
    --cc=gael.portay@collabora.com \
    --cc=james.hilliard1@gmail.com \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox