[Buildroot] [PATCH v3] package/qt5base: fix building with correct optimization
Peter Korsgaard
peter at korsgaard.com
Sat Mar 7 08:06:10 UTC 2020
>>>>> "Arnout" == Arnout Vandecappelle <arnout at mind.be> writes:
> On 25/11/2019 12:26, Giulio Benetti wrote:
>> Qt5 has predefined optimization flags depending if you're building for
>> size, for debug etc. These flags are defined in
>> mkspecs/common/gcc-base.conf:
>>
>> QMAKE_CFLAGS_OPTIMIZE = -O2
>> QMAKE_CFLAGS_OPTIMIZE_FULL = -O3
>> QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Og
>> QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os
>>
>> Then, in the same file, they use them to set
>> QMAKE_CFLAGS_RELEASE/QMAKE_CXXFLAGS_RELEASE:
>>
>> QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE
>> QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
>>
>> At this point there is our chance to override QMAKE_CFLAGS_OPTIMIZE_* in
>> qmake.conf, but it's too late, because QMAKE_CFLAGS_RELEASE is already
>> set(i.e. -O2) so trying to add or remove QMAKE_CFLAGS_OPTIMIZE(that is
>> reset now on) from QMAKE_CLAGS_RELEASE in
>> common/features/default_post.prf won't work:
>>
>> optimize_size {
>> !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_SIZE) {
>> QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
>> QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
>> QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE
>> QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE
>> }
>> } else: optimize_full {
>> !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_FULL) {
>> QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
>> QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE
>> QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL
>> QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL
>> }
>> }
> This stuff is complicated...
>>
>> So let's reset:
>> QMAKE_CFLAGS_RELEASE
>> QMAKE_CFLAGS_DEBUG
>> QMAKE_CXXFLAGS_RELEASE
>> QMAKE_CXXFLAGS_DEBUG
>> in our qmake.conf.in since the only assignment done in
>> mkspecs/common/gcc-base.conf only regards optimization.
> But that's a really elegant solution!
Committed to 2019.02.x and 2019.11.x, thanks.
--
Bye, Peter Korsgaard
More information about the buildroot
mailing list