Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. QtWebengine build error with opus and silk codecs
Forum Updated to NodeBB v4.3 + New Features

QtWebengine build error with opus and silk codecs

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
arm7armqtwebegineneon
21 Posts 4 Posters 9.9k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #5

    Hi,

    From the error message, one is built for soft-float and the other for hard-float. You should check the compilation flags that were used.

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    KartK 1 Reply Last reply
    0
    • SGaistS SGaist

      Hi,

      From the error message, one is built for soft-float and the other for hard-float. You should check the compilation flags that were used.

      KartK Offline
      KartK Offline
      Kart
      wrote on last edited by Kart
      #6

      @SGaist Is it necessary to have neon support in the chip architecture to compile and run qtwebengine or for these codecs ?
      How can I avoid using neon in the build ?

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #7

        I don't know, but I don't think so but thumb instructions have several advantages that are pretty interesting in the embedded world. You should rather consider enabling it.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        KartK 1 Reply Last reply
        0
        • SGaistS SGaist

          I don't know, but I don't think so but thumb instructions have several advantages that are pretty interesting in the embedded world. You should rather consider enabling it.

          KartK Offline
          KartK Offline
          Kart
          wrote on last edited by Kart
          #8

          @SGaist AFAIK, emulating neon in software will bring performance loss. My particular CPU hardware does not support neon and thereby, isn't it safe to disable it then ?
          My CPU (cortex a9) does not support neon nor does the compiler.
          -print-multi-lib gives

          armv5te_arm9;@mcpu=arm926ej-s
          a9;@mcpu=cortex-a9
          a7;@mcpu=cortex-a7
          armv5te_arm9_soft;@mcpu=arm926ej-s@mfloat-abi=soft
          armv5te_arm9_vfp;@mcpu=arm926ej-s@mfloat-abi=softfp@mfpu=vfp
          a9_soft;@mcpu=cortex-a9@mfloat-abi=soft
          a9_softfp_vfp;@mcpu=cortex-a9@mfloat-abi=softfp@mfpu=vfp
          a9_softfp_vfpv3-d16;@mcpu=cortex-a9@mfloat-abi=softfp@mfpu=vfpv3-d16
          a7_soft;@mcpu=cortex-a7@mfloat-abi=soft
          a7_softfp_vfpv4;@mcpu=cortex-a7@mfloat-abi=softfp@mfpu=vfpv4
          a7_softfp_neon-vfpv4;@mcpu=cortex-a7@mfloat-abi=softfp@mfpu=neon-vfpv4
          a7_hard_neon-vfpv4;@mcpu=cortex-a7@mfloat-abi=hard@mfpu=neon-vfpv4
          

          I am stuck with this error now

          libxxxx.a(yyyyy.o) uses VFP register arguments, libQt5WebEngineCore.so.5.9.1 does not
          
          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #9

            Then you should create your own mkspecs that sets the correct flags for your processor.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            KartK 1 Reply Last reply
            0
            • SGaistS SGaist

              Then you should create your own mkspecs that sets the correct flags for your processor.

              KartK Offline
              KartK Offline
              Kart
              wrote on last edited by Kart
              #10

              @SGaist I am using my own qmake.conf.

              #
              # qmake configuration for building with arm400-linux-g++
              #
              
              MAKEFILE_GENERATOR      = UNIX
              CONFIG                 += incremental
              QMAKE_INCREMENTAL_STYLE = sublib
              
              
              include(../common/linux.conf)
              include(../common/gcc-base-unix.conf)
              include(../common/g++-unix.conf)
              
              # modifications to g++.conf
              QMAKE_INCDIR +=/opt/arm400-linux/target/usr/include 
              QMAKE_LIBDIR +=/opt/arm400-linux/target/usr/lib
              QMAKE_CC                = arm400-linux-gcc 
              QMAKE_CXX               = arm400-linux-g++
              QMAKE_LINK              = arm400-linux-g++ -L/opt/arm400-linux/target/usr/lib -Wl,-rpath -Wl,/opt/arm400-linux/target/usr/lib
              QMAKE_LINK_SHLIB        = arm400-linux-g++ -L/opt/arm400-linux/target/usr/lib -Wl,-rpath -Wl,/opt/arm400-linux/target/usr/lib
              
              QMAKE_CFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9
              QMAKE_CXXFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9
              
              # modifications to linux.conf
              QMAKE_AR                = arm400-linux-ar cqs
              QMAKE_OBJCOPY           = arm400-linux-objcopy
              QMAKE_STRIP             = arm400-linux-strip
              
              load(qt_config)
              

              I tried

              QMAKE_CFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=soft
              QMAKE_CXXFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=soft
              

              But it came out something like "arm400-linux-g++: error: -mfloat-abi=soft and -mfloat-abi=hard may not be used together".

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #11

                From the looks of it, your system looks like the linux-tegra2-g++ mkspec, maybe this one will be more suited to copy from.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                KartK 1 Reply Last reply
                0
                • SGaistS SGaist

                  From the looks of it, your system looks like the linux-tegra2-g++ mkspec, maybe this one will be more suited to copy from.

                  KartK Offline
                  KartK Offline
                  Kart
                  wrote on last edited by Kart
                  #12

                  @SGaist
                  I have tried all these combinations

                  -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfp
                  
                  -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3-d16
                  
                  -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-abi=softfp 
                  -mfpu=vfpv3-d16
                  

                  and i got the same error

                  libxxxx.a(yyyyy.o) uses VFP register arguments, libQt5WebEngineCore.so.5.9.1 does not
                  

                  I tried the tegra2 mkspecs, but again another error.

                  ERROR at //build/config/android/internal_rules.gni:11:1: Assertion failed.
                  assert(is_android)
                  ^-----
                  See //build/config/android/rules.gni:8:1: whence it was imported.
                  import("//build/config/android/internal_rules.gni")
                  ^-------------------------------------------------
                  See //third_party/android_tools/BUILD.gn:5:1: whence it was imported.
                  import("//build/config/android/rules.gni")
                  ^----------------------------------------
                  See //third_party/openmax_dl/dl/BUILD.gn:199:16: which caused the file to be included.
                        deps = [ "//third_party/android_tools:cpu_features" ]
                                 ^-----------------------------------------
                  Project ERROR: GN run error!
                  Makefile:80: recipe for target 'sub-gn_run-pro-make_first' failed
                  make[3]: *** [sub-gn_run-pro-make_first] Error 3
                  make[3]: Leaving directory '/opt/qt/qt5.9.1arm_source/qt-everywhere-opensource-src-5.9.2/qtwebengine/src/core'
                  Makefile:77: recipe for target 'sub-core-make_first' failed
                  make[2]: *** [sub-core-make_first] Error 2
                  make[2]: Leaving directory '/opt/qt/qt5.9.1arm_source/qt-everywhere-opensource-src-5.9.2/qtwebengine/src'
                  Makefile:46: recipe for target 'sub-src-make_first' failed
                  make[1]: *** [sub-src-make_first] Error 2
                  make[1]: Leaving directory '/opt/qt/qt5.9.1arm_source/qt-everywhere-opensource-src-5.9.2/qtwebengine'
                  Makefile:834: recipe for target 'module-qtwebengine-make_first' failed
                  make: *** [module-qtwebengine-make_first] Error 2
                  
                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #13

                    Might be a silly question but did you nuke properly the build folder between tries ?

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    KartK 1 Reply Last reply
                    0
                    • SGaistS SGaist

                      Might be a silly question but did you nuke properly the build folder between tries ?

                      KartK Offline
                      KartK Offline
                      Kart
                      wrote on last edited by
                      #14

                      @SGaist I am deleting the source folder and doing all the steps from the beginning each and everytime.

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #15

                        Ok, so when you said you tried the Tegra2 mkspec, did you just use it or did you copy from it into yours like I suggested ?

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        KartK 1 Reply Last reply
                        0
                        • SGaistS SGaist

                          Ok, so when you said you tried the Tegra2 mkspec, did you just use it or did you copy from it into yours like I suggested ?

                          KartK Offline
                          KartK Offline
                          Kart
                          wrote on last edited by Kart
                          #16

                          @SGaist This is how i used it.

                          include(../common/linux_device_pre.conf)
                          
                          QMAKE_INCDIR_POST      += $$[QT_SYSROOT]/usr/include
                          
                          QMAKE_LIBDIR_POST      += $$[QT_SYSROOT]/usr/lib
                          
                          QMAKE_RPATHLINKDIR_POST += $$[QT_SYSROOT]/usr/lib
                          
                          QMAKE_CFLAGS           += -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-abi=softfp -mfpu=vfpv3-d16
                          QMAKE_CXXFLAGS         += -mtune=cortex-a9 -march=armv7-a -mhard-float -mfloat-abi=softfp -mfpu=vfpv3-d16
                          
                          include(../common/linux_arm_device_post.conf)
                          
                          load(qt_config)
                          

                          This is my qmake.conf.

                          1 Reply Last reply
                          0
                          • KartK Offline
                            KartK Offline
                            Kart
                            wrote on last edited by
                            #17

                            Does anyone knows how ninja build in qtwebengine is getting these architecture values by default ?

                            -mfloat-abi=hard -mtune=generic-armv7-a -mfpu=vfpv3-d16 -mthumb
                            
                            1 Reply Last reply
                            0
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on last edited by
                              #18

                              From a quick look, somewhere around:

                              src/3rdparty/chromium/breakpad/src/build/common.gypi
                              src/3rdparty/chromium/build/config/compiler/BUILD.gn
                              src/3rdparty/chromium/build/common.gypi
                              src/3rdparty/chromium/native_client/build/standalone_flags.gypi
                              src/3rdparty/chromium/native_client/build/untrusted.gypi
                              ./src/core/config/linux.pri:    MFLOAT = $$extractCFlag("-mfloat-abi=.*")
                              

                              Interested in AI ? www.idiap.ch
                              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                              KartK 1 Reply Last reply
                              0
                              • SGaistS SGaist

                                From a quick look, somewhere around:

                                src/3rdparty/chromium/breakpad/src/build/common.gypi
                                src/3rdparty/chromium/build/config/compiler/BUILD.gn
                                src/3rdparty/chromium/build/common.gypi
                                src/3rdparty/chromium/native_client/build/standalone_flags.gypi
                                src/3rdparty/chromium/native_client/build/untrusted.gypi
                                ./src/core/config/linux.pri:    MFLOAT = $$extractCFlag("-mfloat-abi=.*")
                                
                                KartK Offline
                                KartK Offline
                                Kart
                                wrote on last edited by
                                #19

                                Thanks @SGaist. This file had some information. I am not sure with the syntax to make changes in this file.

                                ./src/core/config/linux.pri:    MFLOAT = $$extractCFlag("-mfloat-abi=.*")
                                

                                Whatever values I am giving to QMAKE_CFLAGS_RELEASE and QMAKE_CXXXFLAGS_RELEASE is not what GN build is taking.

                                Maybe if I figure out how to make changes in the file you have mentioned, I might be able to solve this issue.

                                1 Reply Last reply
                                0
                                • KartK Offline
                                  KartK Offline
                                  Kart
                                  wrote on last edited by Kart
                                  #20

                                  In the file

                                  qtwebengine/src/3rdparty/chromium/third_party/opus/BUILD.gn:     use_opus_rtcd = current_cpu == "arm" && (is_win || is_android || is_linux)
                                  
                                  qtwebengine/src/3rdparty/chromium/third_party/opus/BUILD.gn: 
                                   if (use_opus_rtcd) {
                                        sources += [
                                          "$target_gen_dir/celt_pitch_xcorr_arm_gnu.S",
                                          "src/celt/arm/arm_celt_map.c",
                                          "src/celt/arm/armcpu.c",
                                          "src/celt/arm/armcpu.h",
                                          "src/celt/arm/celt_neon_intr.c",
                                          "src/celt/arm/fft_arm.h",
                                          "src/celt/arm/mdct_arm.h",
                                          "src/celt/arm/pitch_arm.h",
                                          "src/silk/arm/NSQ_neon.c",
                                          "src/silk/arm/NSQ_neon.h",
                                          "src/silk/arm/arm_silk_map.c",
                                        ]
                                  

                                  As far as I understood if the CPU is based on ARM and the OS is linux use_opus_rtcd becomes TRUE. If it becomes true, qtwebengine/src/3rdparty/chromium/third_party/opus/src/celt/arm/armcpu.c decides whether it have the NEON capabilities. I am trying to see that changing armcpu.c to not to use NEON might work or not.

                                  1 Reply Last reply
                                  0
                                  • T Offline
                                    T Offline
                                    Torsten Krause
                                    wrote on last edited by
                                    #21

                                    The chromium snapshot is outdated. There is already a fix for that!

                                    link text

                                    1 Reply Last reply
                                    1

                                    • Login

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • Users
                                    • Groups
                                    • Search
                                    • Get Qt Extensions
                                    • Unsolved