# Copyright © SixtyFPS GmbH # SPDX-License-Identifier: MIT cmake_minimum_required(VERSION 3.21) project(SlintSafeUI LANGUAGES C CXX VERSION 1.0) if(NOT DEFINED SLINT_SAFEUI_WIDTH) set(SLINT_SAFEUI_WIDTH "" CACHE STRING "SafeUI window width (optional)") endif() if(NOT DEFINED SLINT_SAFEUI_HEIGHT) set(SLINT_SAFEUI_HEIGHT "" CACHE STRING "SafeUI window height (optional)") endif() # Use cs-cortex-m as default critical section implementation set(SLINT_SAFEUI_CRITICAL_SECTION "cs-cortex-m" CACHE STRING "Critical section for Slint SafeUI") set_property(CACHE SLINT_SAFEUI_CRITICAL_SECTION PROPERTY STRINGS "cs-cortex-m" ) # Use pixel-bgra8888 as default pixel format set(SLINT_SAFEUI_PIXEL_FORMAT "pixel-bgra8888" CACHE STRING "Pixel format for Slint SafeUI") set_property(CACHE SLINT_SAFEUI_PIXEL_FORMAT PROPERTY STRINGS "pixel-bgra8888" "pixel-rgb565" "pixel-rgb888" ) # Enable default SafeUI panic handler by default option(SLINT_SAFEUI_PANIC_HANDLER "Enable default SafeUI Panic Handler" ON) include(FetchContent) FetchContent_Declare( Corrosion GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git GIT_TAG v0.6.0 ) FetchContent_MakeAvailable(Corrosion) set(SLINT_SAFEUI_FEATURES "${SLINT_SAFEUI_CRITICAL_SECTION}") list(APPEND SLINT_SAFEUI_FEATURES "${SLINT_SAFEUI_PIXEL_FORMAT}") list(APPEND SLINT_SAFEUI_FEATURES "libm") if(SLINT_SAFEUI_PANIC_HANDLER) list(APPEND SLINT_SAFEUI_FEATURES "panic-handler") endif() message(STATUS "Active Slint SafeUI Features: ${SLINT_SAFEUI_FEATURES}") corrosion_import_crate( MANIFEST_PATH "${CMAKE_CURRENT_SOURCE_DIR}/core/Cargo.toml" CRATES slint-safeui-core CRATE_TYPES staticlib FEATURES "${SLINT_SAFEUI_FEATURES}" ) if(SLINT_SAFEUI_WIDTH AND SLINT_SAFEUI_HEIGHT) message(STATUS "Custom Slint SafeUI Window Size: ${SLINT_SAFEUI_WIDTH}x${SLINT_SAFEUI_HEIGHT}") corrosion_set_env_vars( slint_safeui_core SAFE_UI_WIDTH=${SLINT_SAFEUI_WIDTH} SAFE_UI_HEIGHT=${SLINT_SAFEUI_HEIGHT} ) endif() add_library(SlintSafeUi INTERFACE) target_link_libraries(SlintSafeUi INTERFACE slint_safeui_core) target_include_directories(SlintSafeUi INTERFACE $ $ )