Skip to content

support gcc-16 with no PCH and no unity build - #271

Open
stefantalpalaru wants to merge 1 commit into
musescore:mainfrom
stefantalpalaru:headers
Open

support gcc-16 with no PCH and no unity build#271
stefantalpalaru wants to merge 1 commit into
musescore:mainfrom
stefantalpalaru:headers

Conversation

@stefantalpalaru

Copy link
Copy Markdown

Resolves: https://gcc.gnu.org/gcc-16/porting_to.html#missing-header-includes

Compiling Audacity-4.0.0 with gcc-16 fails due to missing headers.
Disabling unity builds (-DMUSE_COMPILE_USE_UNITY=OFF) and PCH (-DMUSE_COMPILE_USE_PCH=OFF) brings further failures, due to incomplete Qt header paths.

  • I signed the CLA as username:
  • The title of the PR describes the problem it addresses.
  • Each commit's message describes its purpose and effects, and references the issue it resolves. If changes are extensive, there is a sequence of easily reviewable commits.
  • The code in the PR follows the coding rules.
  • I understand all aspects of the code I'm contributing and I'm able to explain it if requested.
  • The code compiles and runs on my machine, preferably after each commit individually. I have manually tested and verified that my changes fulfil their intended purpose.
  • No prior attempts to resolve this problem exist, or if they do, I listed them in my PR description and described how I avoided repeating past mistakes.
  • There are no unnecessary changes.
  • I created a unit test or vtest to verify the changes I made (if applicable).

Build configuration

audacity: audacity/audacity/master
audacity platforms: linux_x64
musescore: musescore/MuseScore/main
musescore platforms: linux_x64

Comment thread buildscripts/pch/pch.h

// QtQuick includes
#include <QQuickItem> //106
#include <QtQuick/QQuickItem> //106

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is quite unexpected that QtQuick/ is necessary here; especially given that it is apparently not necessary at for example <QQmlListProperty>. Do you have any explanation for that?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't compile otherwise, on Gentoo ~amd64, with Qt 6.11.2.

Here's the output of `rg -i 'include.*qquickitem>' /usr/include/qt6/`:
/usr/include/qt6/QtQuickParticles/6.11.2/QtQuickParticles/private/qquickparticlesystem_p.h
18:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuickTestUtils/6.11.2/QtQuickTestUtils/private/viewtestutils_p.h
20:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuickParticles/6.11.2/QtQuickParticles/private/qquickparticleemitter_p.h
18:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuick/qquicktextdocument.h
9:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuickLayouts/6.11.2/QtQuickLayouts/private/qquicklayout_p.h
20:#include <QQuickItem>

/usr/include/qt6/QtQuick3D/6.11.2/QtQuick3D/private/qquick3dtexture_p.h
24:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtChartsQml/6.11.2/QtChartsQml/private/declarativepolarchart_p.h
18:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtChartsQml/6.11.2/QtChartsQml/private/declarativepieseries_p.h
21:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtChartsQml/6.11.2/QtChartsQml/private/declarativeboxplotseries_p.h
22:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtChartsQml/6.11.2/QtChartsQml/private/declarativechart_p.h
22:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtChartsQml/6.11.2/QtChartsQml/private/declarativecandlestickseries_p.h
21:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtChartsQml/6.11.2/QtChartsQml/private/declarativebarseries_p.h
27:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuick/qquickframebufferobject.h
8:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuick/qquickrhiitem.h
8:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuick3D/6.11.2/QtQuick3D/private/qquick3dviewport_p.h
20:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuick/6.11.2/QtQuick/private/qquickanimatedsprite_p.h
23:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuick/6.11.2/QtQuick/private/qaccessiblequickitem_p.h
19:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuick/6.11.2/QtQuick/private/qquickspritesequence_p.h
23:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtPdfQuick/6.11.2/QtPdfQuick/private/qquickpdfselection_p.h
25:#include <QtQuick/QQuickItem>

/usr/include/qt6/QtQuickVectorImage/6.11.2/QtQuickVectorImage/private/qquickvectorimage_p.h
18:#include <QQuickItem>

/usr/include/qt6/QtQuickControls2Impl/6.11.2/QtQuickControls2Impl/private/qquicktumblerview_p.h
19:#include <QQuickItem>

/usr/include/qt6/QtQuickVectorImageGenerator/6.11.2/QtQuickVectorImageGenerator/private/qquicknodeinfo_p.h
22:#include <QQuickItem>

/usr/include/qt6/QtQuickEffects/6.11.2/QtQuickEffects/private/qgfxsourceproxy_p.h
19:#include <QtQuick/QQuickItem>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants