C

Localization: Localize Safety-Critical Content

cmake_minimum_required(VERSION 3.16)
project(localization LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

if(NOT DEFINED INSTALL_EXAMPLESDIR)
  set(INSTALL_EXAMPLESDIR "examples")
endif()

set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}")

find_package(Qt6 REQUIRED COMPONENTS LinguistTools Core SafeRenderer SafeRendererTools SafePlatformAdaptation)

set(sources main.cpp
)

set (safeqmls
"SafeUI.qml"
)

# Resource files are passed to qtsafelayouttool
set(resource_files
    "images.qrc"
    "qml.qrc"
)

qt6_add_binary_resources(resources_localization ${resource_files} DESTINATION resource.bin)
qsr_add_safelayout(generatelayout_localization SAFE_QMLS ${safeqmls}
                                  SAFE_LANGUAGES en fi de uk el ar da et no sv
                                  SAFE_TRANSLATION "${CMAKE_CURRENT_LIST_DIR}/translationFiles/safeui"
                                  OUTPUT_PATH "${CMAKE_CURRENT_LIST_DIR}/layoutData"
                                  SAFE_LAYOUT_FONTS "${CMAKE_CURRENT_LIST_DIR}/fonts"
                                  SAFE_RESOURCE "${CMAKE_CURRENT_LIST_DIR}/safeasset.qrc"
                                  INPUT_RESOURCES resource.bin)
qsr_add_resource(buildresource sources "${CMAKE_CURRENT_LIST_DIR}/safeasset.qrc")

set (tsfiles
    "translationFiles/safeui_ar.ts"
    "translationFiles/safeui_da.ts"
    "translationFiles/safeui_de.ts"
    "translationFiles/safeui_el.ts"
    "translationFiles/safeui_en.ts"
    "translationFiles/safeui_et.ts"
    "translationFiles/safeui_fi.ts"
    "translationFiles/safeui_no.ts"
    "translationFiles/safeui_sv.ts"
    "translationFiles/safeui_uk.ts"
)

set_source_files_properties(${tsfiles}
    PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_LIST_DIR}/translationFiles")

add_executable(localization WIN32 MACOSX_BUNDLE
    ${sources}
    ${resource_files}
)

qt_add_lupdate(generatelayout_localization TS_FILES tsfiles)
qt_add_lrelease(generatelayout_localization
    TS_FILES ${tsfiles}
    NO_TARGET_DEPENDENCY
    QM_FILES_OUTPUT_VARIABLE qmfiles
)

add_dependencies(generatelayout_localization generatelayout_localization_lrelease)
add_dependencies(localization generatelayout_localization)

target_link_libraries(localization PUBLIC
    Qt::SafeRenderer
    Qt::SafePlatformAdaptation
)

if(lupdate_only)
    target_sources(localization PUBLIC
        SafeUI.qml
    )
endif()

if(NOT CMAKE_CROSSCOMPILING)
    target_compile_definitions(localization PUBLIC
        HOST_BUILD
    )
endif()

install(TARGETS localization
    RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
    BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
    LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)