Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-138111

[Unix Makefiles] Android multi-ABI builds: Enable parallel compilation of source files for "secondary" ABIs

    XMLWordPrintable

Details

    • Android

    Description

      [UPDATE]
      The original report misinterpreted the .ninja_log data. This ticket now focusses on Unix Makefiles.

      While the different ABIs need to be built sequentially due to a limitation with the Unix Makefiles generator (see QTBUG-127414), it should be possible to let the source files to be built in parallel (within that ABI).

       

      [ORIGINAL REPORT]

      Steps to test

      This test uses the Charts with Widgets Gallery example (https://doc.qt.io/qt-6/qtcharts-chartsgallery-example.html ) because it contains a large number of *.cpp files.

      1. Configure the example with DQT_ANDROID_BUILD_ALL_ABIS=ON and build it with -parallel 10
      2. Use the ninjatracing tool (https://github.com/nico/ninjatracing) to convert the .ninja_log file into a *.json file
      3. Load the *.json file with https://ui.perfetto.dev/

       

      Outcomes

      • The primary ABI (x86_64 in my screenshot) uses all 10 threads to compile the *.cpp files.
      • The secondary ABIs uses single-threaded compilation only.

       

      As a result, most available CPU cores sit idle when building for the secondary ABIs, making them take much longer to finish compared to the primary ABI.

      This discrepancy is extremely noticeable on large projects.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qtbuildsystem Qt Build System Team
            skoh-qt Sze Howe Koh
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes