Files
trail-mate/cmake/TrailMateLinuxSources.cmake
T

619 lines
36 KiB
CMake

# TrailMateLinuxSources.cmake
#
# Shared source lists and helper functions for the Trail Mate Linux line.
# removed root linux_sim,
# removed root linux_rpi, and
# removed root linux_uconsole include this file so that a single
# source list drives common app services and core-module targets.
#
# Usage from an app CMakeLists.txt:
#
# include("${PROJECT_SOURCE_DIR}/../../../cmake/TrailMateLinuxSources.cmake")
#
# trailmate_add_linux_common(trailmate_cardputer_zero_linux_common)
# trailmate_add_linux_ui_shell(trailmate_cardputer_zero_ui_shell
# trailmate_cardputer_zero_linux_common)
#
# Then add the app-specific executable (simulator or device) and link against
# these two targets plus any app-specific dependencies.
#
# ---------------------------------------------------------------------------
# Path roots ?derived from this file's location (cmake/), which gives
# the repo root via "..". Independent of the including app's directory.
# ---------------------------------------------------------------------------
function(_trailmate_set_linux_paths)
if(NOT DEFINED TRAIL_MATE_REPO_ROOT)
get_filename_component(TRAIL_MATE_REPO_ROOT
"${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
set(TRAIL_MATE_REPO_ROOT "${TRAIL_MATE_REPO_ROOT}" PARENT_SCOPE)
endif()
set(TRAIL_MATE_LINUX_COMMON_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/platform/linux/common/include"
PARENT_SCOPE)
set(TRAIL_MATE_LINUX_COMMON_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src"
PARENT_SCOPE)
set(TRAIL_MATE_LINUX_RPI_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/platform/linux/rpi/src"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_CHAT_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_CHAT_GENERATED_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_CHAT_NANOPB_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_TEAM_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_GPS_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/include"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_HOSTLINK_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_hostlink/include"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_SYS_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_DEVICE_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_device/include"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_MESH_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/include"
PARENT_SCOPE)
set(TRAIL_MATE_CORE_PHONE_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/core_phone/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_SHARED_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_SHARED_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src"
PARENT_SCOPE)
set(TRAIL_MATE_UI_CHAT_RUNTIME_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_chat_runtime/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_CHAT_RUNTIME_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_chat_runtime/src"
PARENT_SCOPE)
set(TRAIL_MATE_UI_KEY_VERIFICATION_RUNTIME_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_key_verification_runtime/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_KEY_VERIFICATION_RUNTIME_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_key_verification_runtime/src"
PARENT_SCOPE)
set(TRAIL_MATE_UI_MAP_RUNTIME_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/src"
PARENT_SCOPE)
set(TRAIL_MATE_UI_GPS_RUNTIME_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_gps_runtime/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_GPS_RUNTIME_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_gps_runtime/src"
PARENT_SCOPE)
set(TRAIL_MATE_UI_LVGL_CORE_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_lvgl_core/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_LVGL_UX_PACKS_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_lvgl_ux_packs/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_lvgl_ux_packs/src"
PARENT_SCOPE)
set(TRAIL_MATE_UI_PRESENTATION_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
PARENT_SCOPE)
set(TRAIL_MATE_UI_PRESENTATION_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src"
PARENT_SCOPE)
set(TRAIL_MATE_CHAT_PRESENTATION_ADAPTERS_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/chat_presentation_adapters/include"
PARENT_SCOPE)
set(TRAIL_MATE_CHAT_PRESENTATION_ADAPTERS_SRC_ROOT
"${TRAIL_MATE_REPO_ROOT}/modules/chat_presentation_adapters/src"
PARENT_SCOPE)
set(TRAIL_MATE_PLATFORM_SHARED_INCLUDE_ROOT
"${TRAIL_MATE_REPO_ROOT}/platform/shared/include"
PARENT_SCOPE)
endfunction()
_trailmate_set_linux_paths()
# ---------------------------------------------------------------------------
# Source lists
# ---------------------------------------------------------------------------
set(TRAIL_MATE_LINUX_COMMON_SOURCES
# app facade
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/app/linux_app_services.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/app/linux_app_facade.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/app/linux_demo_world.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/chat/linux_noop_mesh_adapter.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/chat/linux_raw_lora_mesh_adapter.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/chat/linux_sqlite_chat_store.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/app/demo_app.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/app/demo_app_runner.cpp"
# core primitives
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/core/bitmap_font.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/core/canvas.cpp"
# platform/linux shared infrastructure (P4)
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/linux/runtime_paths.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/linux/env_config.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/linux/map_contour_tile_generator.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/linux/map_diagnostics.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/linux/map_tile_cache.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/mesh/linux_mesh_runtime_shell.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/mesh/linux_sqlite_mesh_identity_store.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/linux/runtime_packet_log.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/linux/sx126x_radio.cpp"
# platform::ui::* runtime implementations
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/device_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/firmware_update_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/gps_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/hostlink_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/lora_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/orientation_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/pack_repository_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/route_storage.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/screen_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/settings_backup_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/settings_store.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/sstv_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/team_ui_store_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/time_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/tracker_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/usb_support_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/walkie_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/wireless_companion_runtime.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/platform/ui/wifi_runtime.cpp"
# modules/core_chat
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/domain/chat_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_action_service.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_event_port.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_event_projector.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_read_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_message_projection.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_send_result_projection.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/contact_store_core.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/mesh_protocol_utils.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/mc_region_presets.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/meshcore_identity_crypto.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/meshcore_payload_helpers.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/meshcore_protocol_helpers.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/fe.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/ge.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/key_exchange.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/keypair.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/sc.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/sha512.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/sign.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/verify.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/compression/unishox2.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_codec_pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_node_payload.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_packet_wire.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_pki_crypto.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_protocol_helpers.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_radio_config.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_region.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/node_store_blob_format.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/node_store_core.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/store/ram_store.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/usecase/chat_service.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/usecase/contact_service.cpp"
# Meshtastic nanopb runtime + generated descriptors used by Linux LoRa RX/TX.
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb/pb_common.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb/pb_decode.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb/pb_encode.c"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/channel.pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/config.pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/device_ui.pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/mesh.pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/module_config.pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/portnums.pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/telemetry.pb.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/xmodem.pb.cpp"
# modules/core_team
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_chat.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_location_marker.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_mgmt.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_pairing_wire.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_position.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_track.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_waypoint.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_wire.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/usecase/team_controller.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/usecase/team_pairing_coordinator.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/usecase/team_service.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/usecase/team_track_sampler.cpp"
# modules/core_gps
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/protocol/nmea/nmea_parser.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/protocol/nmea/nmea_sentence.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/usecase/gnss_skyplot_presenter.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/usecase/gps_jitter_filter.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/usecase/gps_runtime_config.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/usecase/gps_runtime_policy.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/usecase/gps_runtime_state.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/usecase/location_service.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/usecase/time_authority.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_gps/src/motion_policy.cpp"
# modules/core_hostlink
"${TRAIL_MATE_REPO_ROOT}/modules/core_hostlink/src/hostlink_session.cpp"
# modules/core_sys
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/app/app_facade_access.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/platform/ui/timezone_profile.cpp"
# modules/core_device
"${TRAIL_MATE_REPO_ROOT}/modules/core_device/src/device/capability_types.cpp"
# modules/core_mesh
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/protocol/meshcore/mc_identity_flow.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/protocol/meshcore/meshcore_protocol_strategy.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/protocol/meshtastic/mt_pki_flow.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/protocol/meshtastic/meshtastic_protocol_strategy.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/direct_message_service.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/mesh_dedup_service.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/mesh_session.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/peer_identity_service.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/receive_packet_service.cpp"
# modules/core_phone
"${TRAIL_MATE_REPO_ROOT}/modules/core_phone/src/meshcore/meshcore_phone_core.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_phone/src/meshtastic/meshtastic_phone_core.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/core_phone/src/meshtastic/meshtastic_phone_session.cpp"
# modules/ui_presentation
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/device/device_status_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/gps/gps_status_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/mesh/mesh_status_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/settings/settings_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/chat/chat_workspace_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/key_verification/key_verification_model.cpp"
"${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/map/map_workspace_model.cpp"
# modules/chat_presentation_adapters
"${TRAIL_MATE_CHAT_PRESENTATION_ADAPTERS_SRC_ROOT}/chat_conversation_mapper.cpp"
"${TRAIL_MATE_CHAT_PRESENTATION_ADAPTERS_SRC_ROOT}/chat_message_mapper.cpp"
# shared Team presentation projections consumed by Linux runtime models
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/team_map_overlay_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/team_presence/team_presence_model.cpp"
)
set(TRAIL_MATE_LINUX_UI_SHELL_SOURCES
# platform/linux/common ?shared Linux UI layer
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/ui/localization.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/ui/shared_ui_shell.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/ui/shell_ui_runner.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/ui/ui_common.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/ui_status.cpp"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}/ui/widgets/map/map_tiles.cpp"
# modules/ui_shared ?assets
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/Chat.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/alert.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/AreaCleared.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/BaseCamp.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/contact.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/ext.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/gps.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/gps_topbar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/GoodFind.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/img_usb.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/logo.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/message_topbar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/rally.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/rf.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/room-24px.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/route_topbar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/Satellite.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/Setting.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/Spectrum.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/sstv.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/sos.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/team.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/team_topbar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/tracker.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/tracker_topbar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/walkie_talkie.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/wifi_topbar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/ble_topbar.c"
# modules/ui_shared ?components
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/components/air_status_footer.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/runtime_device_status_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/runtime_mesh_status_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/runtime_settings_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/runtime_gps_status_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/runtime_map_workspace_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/runtime_chat_action_sink.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/chat_presentation_source.cpp"
"${TRAIL_MATE_UI_CHAT_RUNTIME_SRC_ROOT}/chat_delivery_action_port_adapter.cpp"
"${TRAIL_MATE_UI_CHAT_RUNTIME_SRC_ROOT}/chat_delivery_feedback_controller.cpp"
"${TRAIL_MATE_UI_CHAT_RUNTIME_SRC_ROOT}/chat_delivery_event_projection_adapter.cpp"
"${TRAIL_MATE_UI_KEY_VERIFICATION_RUNTIME_SRC_ROOT}/key_verification_action_sink.cpp"
"${TRAIL_MATE_UI_KEY_VERIFICATION_RUNTIME_SRC_ROOT}/key_verification_presentation_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/team_chat_presentation_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/presentation_sources/team_chat_action_sink.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/team_actions/team_action_runtime_sink.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/team_actions/team_runtime_adapters.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/team_persistence/team_ui_snapshot_codec.cpp"
"${TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT}/map_overlay_projection_adapter.cpp"
"${TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT}/map_overlay_snapshot_source.cpp"
"${TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT}/map_overlay/map_overlay_projector.cpp"
"${TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT}/map_tiles/filesystem_map_tile_source.cpp"
"${TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT}/map_tiles/map_tile_async_runtime.cpp"
"${TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT}/map_tiles/map_tile_render_queue.cpp"
"${TRAIL_MATE_UI_MAP_RUNTIME_SRC_ROOT}/map_tiles/map_tile_resolver.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/team_presentation/team_rich_payload_projector.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/fonts/font_utils.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/components/info_card.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/components/two_pane_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/components/two_pane_nav.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/components/two_pane_styles.cpp"
# modules/ui_shared ?shell / menu / page
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/app_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/formatters.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/menu/menu_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/menu/menu_profile.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/menu/menu_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/menu/dashboard/dashboard_style.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/page/page_profile.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/common/placeholder_page.cpp"
# chat
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_compose_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_compose_input.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_compose_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_compose_styles.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_conversation_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_conversation_input.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_conversation_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_conversation_styles.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_message_list_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_message_list_input.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_message_list_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_message_list_styles.cpp"
"${TRAIL_MATE_UI_CHAT_RUNTIME_SRC_ROOT}/chat_page_runtime_event_pump.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_page_shell.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_protocol_support.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_team_workflow.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/chat/chat_ui_controller.cpp"
"${TRAIL_MATE_UI_PRESENTATION_SRC_ROOT}/menu/menu_model.cpp"
"${TRAIL_MATE_UI_PRESENTATION_SRC_ROOT}/screen/screen_binding_registry.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/ux/screen_registry.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/ux/input_binding_set.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/ux/ux_menu_model.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/ux/ux_screen_menu_adapter.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/ux/ux_menu_provider.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/ux/ux_pack_registry.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/runtime/compatibility_screen_factory.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/runtime/lvgl_menu_runtime_adapter.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/runtime/lvgl_screen_host_adapter.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/runtime/lvgl_screen_graph_bridge.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/packs/cardputer_compact_ux_pack.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/packs/compatibility_ux_pack.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/packs/uconsole_desktop_ux_pack.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/packs/tiny_node_status_ux_pack.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/packs/simulator_full_ux_pack.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/common/key_verification_modal_renderer.cpp"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_SRC_ROOT}/common/team_position_picker_renderer.cpp"
# contacts
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_page_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_page_input.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_page_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_page_shell.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_page_styles.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_team_snapshot_source.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/contacts/contacts_state.cpp"
# energy sweep
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/energy_sweep/energy_sweep_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/energy_sweep/energy_sweep_page_shell.cpp"
# extensions
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/extensions/extensions_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/extensions/extensions_page_shell.cpp"
# gnss
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/gnss/gnss_skyplot_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/gnss/gnss_skyplot_page_shell.cpp"
# gps
"${TRAIL_MATE_UI_GPS_RUNTIME_SRC_ROOT}/gps_page_runtime_pump.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/gps/gps_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/gps/gps_page_shell.cpp"
# node info
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/node_info/node_info_page_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/node_info/node_info_page_layout.cpp"
# pc link
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/pc_link/pc_link_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/pc_link/pc_link_page_shell.cpp"
# settings
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/settings/settings_page_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/settings/settings_page_input.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/settings/settings_page_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/settings/settings_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/settings/settings_page_shell.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/settings/settings_page_styles.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/settings/settings_state.cpp"
# sstv
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/sstv/sstv_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/sstv/sstv_page_shell.cpp"
# team
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_activity_adapters.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_activity_sink.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_command_reducer.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_create_team_action.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_deferred_dispatch.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_deferred_dispatch_adapters.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_event_effect_sink.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_event_reducer.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_flow_controller.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_input.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_key_request_action.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_key_event_log.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_kick_confirm_action.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_lvgl_renderer.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_pairing_command_action.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_read_model.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_request_keys_action.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_runtime_adapters.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_runtime_port.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_state_store.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_transfer_leader_action.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_shell.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/team/team_page_styles.cpp"
# tracker
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/tracker/tracker_page_components.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/tracker/tracker_page_input.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/tracker/tracker_page_layout.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/tracker/tracker_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/tracker/tracker_page_shell.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/tracker/tracker_state.cpp"
# walkie talkie
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/walkie_talkie/walkie_talkie_page_runtime.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/screens/walkie_talkie/walkie_talkie_page_shell.cpp"
# startup / widgets
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/startup_ui_shell.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/ui_boot.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/runtime/ui_feedback.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/widgets/ime/ime_widget.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/widgets/busy_overlay.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/widgets/map/map_viewport.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/widgets/system_notification.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/widgets/toast/toast_widget.cpp"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/widgets/top_bar.cpp"
)
# ---------------------------------------------------------------------------
# Common include directories ?reused by every Linux target.
# ---------------------------------------------------------------------------
set(TRAIL_MATE_LINUX_COMMON_INCLUDES
"${TRAIL_MATE_LINUX_COMMON_INCLUDE_ROOT}"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}"
"${TRAIL_MATE_CORE_CHAT_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_CHAT_GENERATED_ROOT}"
"${TRAIL_MATE_CORE_CHAT_NANOPB_ROOT}"
"${TRAIL_MATE_CORE_GPS_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_HOSTLINK_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_SYS_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_DEVICE_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_MESH_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_PHONE_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_TEAM_INCLUDE_ROOT}"
"${TRAIL_MATE_CHAT_PRESENTATION_ADAPTERS_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_PRESENTATION_INCLUDE_ROOT}"
"${TRAIL_MATE_REPO_ROOT}/modules/product_composition/include"
"${TRAIL_MATE_UI_SHARED_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_CHAT_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_KEY_VERIFICATION_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_MAP_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_GPS_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_LVGL_CORE_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_INCLUDE_ROOT}"
)
set(TRAIL_MATE_LINUX_UI_SHELL_INCLUDES
"${TRAIL_MATE_LINUX_COMMON_INCLUDE_ROOT}"
"${TRAIL_MATE_LINUX_COMMON_SRC_ROOT}"
"${TRAIL_MATE_CORE_CHAT_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_CHAT_GENERATED_ROOT}"
"${TRAIL_MATE_CORE_CHAT_NANOPB_ROOT}"
"${TRAIL_MATE_CORE_TEAM_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_SHARED_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_CHAT_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_KEY_VERIFICATION_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_MAP_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_GPS_RUNTIME_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_LVGL_CORE_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_LVGL_UX_PACKS_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_SYS_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_DEVICE_INCLUDE_ROOT}"
"${TRAIL_MATE_CORE_PHONE_INCLUDE_ROOT}"
"${TRAIL_MATE_CHAT_PRESENTATION_ADAPTERS_INCLUDE_ROOT}"
"${TRAIL_MATE_UI_PRESENTATION_INCLUDE_ROOT}"
"${TRAIL_MATE_REPO_ROOT}/modules/product_composition/include"
"${TRAIL_MATE_PLATFORM_SHARED_INCLUDE_ROOT}"
)
# ---------------------------------------------------------------------------
# Helper functions
# ---------------------------------------------------------------------------
function(trailmate_apply_linux_common_warnings target_name)
if(MSVC)
target_compile_definitions(${target_name} PRIVATE _CRT_SECURE_NO_WARNINGS)
target_compile_options(${target_name} PRIVATE /W4 /permissive- /FS)
else()
target_compile_options(${target_name} PRIVATE -Wall -Wextra -Wpedantic)
endif()
endfunction()
function(trailmate_add_linux_common target_name)
find_package(CURL REQUIRED)
find_package(SQLite3 REQUIRED)
find_package(OpenSSL QUIET)
set(linux_common_sources ${TRAIL_MATE_LINUX_COMMON_SOURCES})
set(linux_common_includes ${TRAIL_MATE_LINUX_COMMON_INCLUDES})
add_library(${target_name}
${linux_common_sources}
)
target_include_directories(${target_name}
PUBLIC ${linux_common_includes}
)
target_compile_features(${target_name} PUBLIC cxx_std_20)
target_compile_definitions(${target_name}
PUBLIC TRAIL_MATE_LORA_TX_POWER_MAX_DBM=22
)
target_link_libraries(${target_name}
PUBLIC
Threads::Threads
CURL::libcurl
SQLite::SQLite3
)
if(OpenSSL_FOUND)
target_compile_definitions(${target_name}
PUBLIC TRAIL_MATE_HAS_OPENSSL=1
)
target_link_libraries(${target_name}
PUBLIC OpenSSL::Crypto
)
endif()
if(WIN32)
target_link_libraries(${target_name} PUBLIC ws2_32)
endif()
trailmate_apply_linux_common_warnings(${target_name})
endfunction()
function(trailmate_add_linux_ui_shell target_name common_target)
set(linux_ui_shell_sources ${TRAIL_MATE_LINUX_UI_SHELL_SOURCES})
set(linux_ui_shell_includes ${TRAIL_MATE_LINUX_UI_SHELL_INCLUDES})
# common_target must already be created (via trailmate_add_linux_common).
add_library(${target_name}
${linux_ui_shell_sources}
)
target_include_directories(${target_name}
PUBLIC ${linux_ui_shell_includes}
)
target_compile_features(${target_name} PUBLIC cxx_std_20)
target_compile_definitions(
${target_name}
PRIVATE
TRAIL_MATE_BOOT_MIN_SHOW_MS=1200
TRAIL_MATE_CARDPUTER_ZERO_LINUX=1
GAT562_NO_PINYIN_IME=1
)
target_link_libraries(${target_name}
PUBLIC
lvgl
${common_target}
)
trailmate_apply_linux_common_warnings(${target_name})
endfunction()