36c8c3d95a
ROOT CAUSE: Qt6's auto-generated Wayland wrappers pass NULL proxies to wl_*_add_listener() during initialization. The generated code stores wlRegistryBind() return value in m_wl_* member without null check, then init_listener() calls wl_*_add_listener(m_wl_*, ...) which page-faults at null+8 (write to proxy->object.implementation). FIX (kded6): wrapper script renames libqwayland.so to .disabled before launching kded6.real. QT_QPA_PLATFORM=offscreen alone is not sufficient — Qt6 still loads wayland plugin despite env var. FIX (libwayland): null guards in redox.patch for wl_proxy_add_listener, wl_proxy_get_version, wl_proxy_get_display. Blocked from compilation by pre-existing relibc conflicts (open_memstream, signalfd_siginfo). FIX (Qt6 wrappers): regex-based null guard insertion proven in concept. Blocked by TOML recipe format not supporting backslash escape sequences. Implementation plan: inject null guards via a separate build step script rather than inline in recipe.toml.
33 lines
843 B
CMake
33 lines
843 B
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(redbear-greeter-ui LANGUAGES CXX)
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
find_package(Qt6 REQUIRED COMPONENTS Core Gui Qml Quick QuickControls2)
|
|
|
|
qt_add_executable(redbear-greeter-ui
|
|
main.cpp
|
|
greeter_backend.cpp
|
|
greeter_backend.h
|
|
resources.qrc
|
|
)
|
|
|
|
target_compile_options(redbear-greeter-ui PRIVATE -fcf-protection=none)
|
|
if(REDOX)
|
|
target_compile_options(redbear-greeter-ui PRIVATE -include ${CMAKE_CURRENT_SOURCE_DIR}/redox_stdlib_compat.h)
|
|
endif()
|
|
target_link_options(redbear-greeter-ui PRIVATE -fcf-protection=none)
|
|
|
|
target_link_libraries(redbear-greeter-ui PRIVATE
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
Qt6::Qml
|
|
Qt6::Quick
|
|
Qt6::QuickControls2
|
|
)
|
|
|
|
install(TARGETS redbear-greeter-ui RUNTIME DESTINATION bin)
|