f31522130f
Build system (5 gaps hardened): - COOKBOOK_OFFLINE defaults to true (fork-mode) - normalize_patch handles diff -ruN format - New 'repo validate-patches' command (25/25 relibc patches) - 14 patched Qt/Wayland/display recipes added to protected list - relibc archive regenerated with current patch chain Boot fixes (fixable): - Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset) - D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped) - redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped) - daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch) - udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async) - relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs - greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait) - greeter-ui: built and linked (header guard unification, sem_compat stubs removed) - mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps - greeter config: removed stale keymapd dependency from display/greeter services - prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified Unfixable (diagnosed, upstream): - i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort - kded6/greeter-ui: page fault 0x8 — Qt library null deref - Thread panics fd != -1 — Rust std library on Redox - DHCP timeout / eth0 MAC — QEMU user-mode networking - hwrngd/thermald — no hardware RNG/thermal in VM - live preload allocation — BIOS memory fragmentation, continues on demand
143 lines
4.9 KiB
CMake
143 lines
4.9 KiB
CMake
# Copyright (C) 2022 The Qt Company Ltd.
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
if (MSVC)
|
|
if (QT_64BIT)
|
|
# SSE2 is mandatory on 64-bit mode, so skip the option. It triggers:
|
|
# cl : Command line warning D9002 : ignoring unknown option '-arch:SSE2'
|
|
set(QT_CFLAGS_SSE2 "")
|
|
else()
|
|
set(QT_CFLAGS_SSE2 "-arch:SSE2")
|
|
endif()
|
|
set(QT_CFLAGS_SSE3 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SSSE3 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SSE4_1 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SSE4_2 "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_AESNI "${QT_CFLAGS_SSE2}")
|
|
set(QT_CFLAGS_SHANI "${QT_CFLAGS_SSE2}")
|
|
|
|
set(QT_CFLAGS_AVX "-arch:AVX")
|
|
set(QT_CFLAGS_AVX2 "-arch:AVX2")
|
|
set(QT_CFLAGS_F16C "-arch:AVX")
|
|
set(QT_CFLAGS_RDRND "")
|
|
set(QT_CFLAGS_RDSEED "")
|
|
set(QT_CFLAGS_AVX512F "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512ER "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512CD "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512PF "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512DQ "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512BW "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512VL "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512IFMA "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512VBMI "-arch:AVX512")
|
|
set(QT_CFLAGS_AVX512VBMI2 "-arch:AVX512")
|
|
set(QT_CFLAGS_VAES "")
|
|
endif()
|
|
|
|
if(GCC OR CLANG OR QCC)
|
|
set(__prefix)
|
|
if(MSVC AND CLANG)
|
|
set(__prefix "/clang:")
|
|
endif()
|
|
set(QT_CFLAGS_SSE2 "${__prefix}-msse2")
|
|
set(QT_CFLAGS_SSE3 "${__prefix}-msse3")
|
|
set(QT_CFLAGS_SSSE3 "${__prefix}-mssse3")
|
|
set(QT_CFLAGS_SSE4_1 "${__prefix}-msse4.1")
|
|
set(QT_CFLAGS_SSE4_2 "${__prefix}-msse4.2")
|
|
set(QT_CFLAGS_F16C "${__prefix}-mf16c")
|
|
set(QT_CFLAGS_RDRND "${__prefix}-mrdrnd")
|
|
set(QT_CFLAGS_RDSEED "${__prefix}-mrdseed")
|
|
set(QT_CFLAGS_AVX "${__prefix}-mavx")
|
|
set(QT_CFLAGS_AVX2 "${__prefix}-mavx2")
|
|
set(QT_CFLAGS_ARCH_HASWELL "${__prefix}-march=haswell")
|
|
set(QT_CFLAGS_AVX512F "${__prefix}-mavx512f")
|
|
set(QT_CFLAGS_AVX512ER "${__prefix}-mavx512er")
|
|
set(QT_CFLAGS_AVX512CD "${__prefix}-mavx512cd")
|
|
set(QT_CFLAGS_AVX512PF "${__prefix}-mavx512pf")
|
|
set(QT_CFLAGS_AVX512DQ "${__prefix}-mavx512dq")
|
|
set(QT_CFLAGS_AVX512BW "${__prefix}-mavx512bw")
|
|
set(QT_CFLAGS_AVX512VL "${__prefix}-mavx512vl")
|
|
set(QT_CFLAGS_AVX512IFMA "${__prefix}-mavx512ifma")
|
|
set(QT_CFLAGS_AVX512VBMI "${__prefix}-mavx512vbmi")
|
|
set(QT_CFLAGS_AVX512VBMI2 "${__prefix}-mavx512vbmi2")
|
|
set(QT_CFLAGS_AESNI "${__prefix}-maes")
|
|
set(QT_CFLAGS_SHANI "${__prefix}-msha")
|
|
set(QT_CFLAGS_VAES "${__prefix}-mvaes")
|
|
if(NOT UIKIT AND NOT QT_64BIT)
|
|
set(QT_CFLAGS_NEON "${__prefix}-mfpu=neon")
|
|
endif()
|
|
set(QT_CFLAGS_ARM_SVE "${__prefix}-march=armv8-a+sve")
|
|
set(QT_CFLAGS_ARM_CRYPTO "${__prefix}-march=armv8-a+crypto")
|
|
set(QT_CFLAGS_LSX "${__prefix}-mlsx")
|
|
set(QT_CFLAGS_LASX "${__prefix}-mlasx")
|
|
set(QT_CFLAGS_MIPS_DSP "${__prefix}-mdsp")
|
|
set(QT_CFLAGS_MIPS_DSPR2 "${__prefix}-mdspr2")
|
|
unset(__prefix)
|
|
endif()
|
|
|
|
# Fall through is important, so that more specific flags that might be missing are set by the
|
|
# previous base cases.
|
|
# This mirrors qmake's mkspecs QMAKE_CFLAGS_OPTIMIZE assignments (mostly).
|
|
#
|
|
# TODO: Missing mkspecs flags we don't handle below: win32-clang-g++, win32-clang-msvc, rtems-base
|
|
#
|
|
# gcc and clang base
|
|
if(GCC OR CLANG)
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
|
|
set(QT_CFLAGS_OPTIMIZE_DEBUG "-Og")
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "-Os")
|
|
|
|
if(CLANG)
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "-Oz")
|
|
endif()
|
|
endif()
|
|
|
|
# Flags that CMake might set, aka flags the compiler would see as valid values.
|
|
if(GCC OR CLANG OR QCC)
|
|
set(QT_CFLAGS_OPTIMIZE_VALID_VALUES "-O0" "-O1" "-O2" "-O3" "-Os" "-Oz")
|
|
endif()
|
|
|
|
|
|
# Windows MSVC
|
|
if(MSVC)
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
if(NOT CLANG)
|
|
# -Ob3 was introduced in Visual Studio 2019 version 16.0
|
|
# However clang-cl can't recognize it.
|
|
string(APPEND QT_CFLAGS_OPTIMIZE " -Ob3")
|
|
endif()
|
|
set(QT_CFLAGS_OPTIMIZE_DEBUG "-Od")
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "-O1")
|
|
set(QT_CFLAGS_OPTIMIZE_VALID_VALUES "/O2" "/O1" "/Od" "/Ob0" "/Ob1" "/Ob2" "/Ob3" "/O0" "-O0")
|
|
|
|
if(CLANG)
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "/clang:-O3")
|
|
set(QT_CFLAGS_OPTIMIZE_SIZE "/clang:-Oz")
|
|
endif()
|
|
endif()
|
|
|
|
# Android Clang
|
|
if(CLANG AND ANDROID)
|
|
if(QT_FEATURE_ltcg)
|
|
# When using LTCG, the linker cannot cope with -Oz. See QTBUG-89472 for details.
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
|
|
else()
|
|
set(QT_CFLAGS_OPTIMIZE "-Oz")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-Oz")
|
|
endif()
|
|
endif()
|
|
|
|
# qcc
|
|
if (QCC)
|
|
set(QT_CFLAGS_OPTIMIZE "-O2")
|
|
set(QT_CFLAGS_OPTIMIZE_FULL "-O3")
|
|
endif()
|
|
|
|
# Emscripten Clang
|
|
if(WASM)
|
|
set(QT_CFLAGS_OPTIMIZE_DEBUG "-O2 -g") # -Og is not supported
|
|
set(QT_CFLAGS_SSE2 "-O2 -msimd128 -msse -msse2")
|
|
endif()
|