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.
  • S Offline
    S Offline
    SGaist
    Lifetime Qt Champion
    wrote on 30 Oct 2017, 22:22 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

    K 1 Reply Last reply 1 Nov 2017, 05:45
    0
    • S SGaist
      30 Oct 2017, 22:22

      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.

      K Offline
      K Offline
      Kart
      wrote on 1 Nov 2017, 05:45 last edited by Kart 11 Jan 2017, 07:27
      #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
      • S Offline
        S Offline
        SGaist
        Lifetime Qt Champion
        wrote on 1 Nov 2017, 20:24 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

        K 1 Reply Last reply 2 Nov 2017, 04:49
        0
        • S SGaist
          1 Nov 2017, 20:24

          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.

          K Offline
          K Offline
          Kart
          wrote on 2 Nov 2017, 04:49 last edited by Kart 11 Feb 2017, 11:07
          #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
          • S Offline
            S Offline
            SGaist
            Lifetime Qt Champion
            wrote on 2 Nov 2017, 22:16 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

            K 1 Reply Last reply 4 Nov 2017, 05:07
            0
            • S SGaist
              2 Nov 2017, 22:16

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

              K Offline
              K Offline
              Kart
              wrote on 4 Nov 2017, 05:07 last edited by Kart 11 Apr 2017, 05:15
              #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
              • S Offline
                S Offline
                SGaist
                Lifetime Qt Champion
                wrote on 4 Nov 2017, 21:03 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

                K 1 Reply Last reply 6 Nov 2017, 10:45
                0
                • S SGaist
                  4 Nov 2017, 21:03

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

                  K Offline
                  K Offline
                  Kart
                  wrote on 6 Nov 2017, 10:45 last edited by Kart 11 Jun 2017, 10:47
                  #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
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 6 Nov 2017, 11:22 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

                    K 1 Reply Last reply 6 Nov 2017, 11:28
                    0
                    • S SGaist
                      6 Nov 2017, 11:22

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

                      K Offline
                      K Offline
                      Kart
                      wrote on 6 Nov 2017, 11:28 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
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 6 Nov 2017, 12:05 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

                        K 1 Reply Last reply 6 Nov 2017, 12:07
                        0
                        • S SGaist
                          6 Nov 2017, 12:05

                          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 ?

                          K Offline
                          K Offline
                          Kart
                          wrote on 6 Nov 2017, 12:07 last edited by Kart 11 Jun 2017, 12:08
                          #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
                          • K Offline
                            K Offline
                            Kart
                            wrote on 7 Nov 2017, 12:47 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
                            • S Offline
                              S Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on 7 Nov 2017, 22:22 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

                              K 1 Reply Last reply 8 Nov 2017, 06:35
                              0
                              • S SGaist
                                7 Nov 2017, 22:22

                                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=.*")
                                
                                K Offline
                                K Offline
                                Kart
                                wrote on 8 Nov 2017, 06:35 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
                                • K Offline
                                  K Offline
                                  Kart
                                  wrote on 8 Nov 2017, 11:27 last edited by Kart 11 Aug 2017, 12:04
                                  #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 27 Nov 2017, 10:54 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