Files
terminalX/vendor/build/mosh/CMakeLists.txt
kid 32520f09e0 feat: 完成 M2 mosh(LAN + tsnet 端到端验证)
- mosh(blinksh/ios C++)+protobuf-lite 交叉编译为 MoshCore.xcframework
  (CommonCrypto 后端、含 arm64 模拟器 slice;绕 autotools 用 CMake 直编 + 手写 config.h)
- tsnet 桥新增 UDP relay(StartMoshRelay:loopback↔tsnet.Dial 逐包搬运)
- MoshSession(pipe↔FILE*/pthread/SIGWINCH)+ MoshConnectScanner(TXCore,+4 单测=39)
- SSHTerminalModel 编排:SSH 引导 mosh-server→解析 MOSH CONNECT→relay→mosh 接管
- LAN 直连 + mosh-over-tsnet 均端到端验证通过,R1(tsnet UDP 数据报语义) 证伪

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-24 16:16:15 +08:00

84 lines
3.0 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.20)
project(moshios CXX)
# 直接编译 blinksh/mosh(ios 分支) 的 src/*.cc 为静态库,绕过 autotools。
# 特性宏由同目录手写 config.h 提供(-I 本目录,且优先于 src 树内任何 config.h
# 变量入参:
# MOSH_SRC —— vendor/mosh/src 绝对路径
# PROTOBUF_SRC —— vendor/protobuf/src 绝对路径(提供 protobuf-lite 头)
if(NOT DEFINED MOSH_SRC)
message(FATAL_ERROR "MOSH_SRC 未设置")
endif()
if(NOT DEFINED PROTOBUF_SRC)
message(FATAL_ERROR "PROTOBUF_SRC 未设置")
endif()
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON) # gnu++14mosh 用到 GNU 扩展)
# 依据 src/*/Makefile.am 的 BUILD_IOS_CONTROLLER 分支精确选取源文件。
# 关键terminal 用 terminaldisplayinit_ios.cc非 terminaldisplayinit.cc后者需 ncurses
# frontend 仅取 moshiosbridge/iosclient/terminaloverlay排除 mosh-client/server/mosh/stmclient
set(MOSH_SOURCES
${MOSH_SRC}/crypto/base64.cc
${MOSH_SRC}/crypto/crypto.cc
${MOSH_SRC}/crypto/ocb.cc
${MOSH_SRC}/network/compressor.cc
${MOSH_SRC}/network/network.cc
${MOSH_SRC}/network/networktransport.cc
${MOSH_SRC}/network/transportfragment.cc
${MOSH_SRC}/network/transportsender.cc
${MOSH_SRC}/statesync/completeterminal.cc
${MOSH_SRC}/statesync/user.cc
${MOSH_SRC}/terminal/parseraction.cc
${MOSH_SRC}/terminal/parser.cc
${MOSH_SRC}/terminal/parserstate.cc
${MOSH_SRC}/terminal/terminal.cc
${MOSH_SRC}/terminal/terminaldispatcher.cc
${MOSH_SRC}/terminal/terminaldisplay.cc
${MOSH_SRC}/terminal/terminaldisplayinit_ios.cc
${MOSH_SRC}/terminal/terminalframebuffer.cc
${MOSH_SRC}/terminal/terminalfunctions.cc
${MOSH_SRC}/terminal/terminaluserinput.cc
${MOSH_SRC}/util/locale_utils.cc
${MOSH_SRC}/util/pty_compat.cc
${MOSH_SRC}/util/select.cc
${MOSH_SRC}/util/swrite.cc
${MOSH_SRC}/util/timestamp.cc
${MOSH_SRC}/protobufs/hostinput.pb.cc
${MOSH_SRC}/protobufs/transportinstruction.pb.cc
${MOSH_SRC}/protobufs/userinput.pb.cc
${MOSH_SRC}/frontend/moshiosbridge.cc
${MOSH_SRC}/frontend/iosclient.cc
${MOSH_SRC}/frontend/terminaloverlay.cc
)
add_library(moshios STATIC ${MOSH_SOURCES})
target_include_directories(moshios PRIVATE
${CMAKE_CURRENT_SOURCE_DIR} # 手写 config.h必须最先
${MOSH_SRC}
${MOSH_SRC}/crypto
${MOSH_SRC}/network
${MOSH_SRC}/statesync
${MOSH_SRC}/terminal
${MOSH_SRC}/util
${MOSH_SRC}/protobufs
${MOSH_SRC}/frontend
${PROTOBUF_SRC}
)
# 1.3.2 老代码在 Xcode 26/新 clang 下告警多;关掉噪声,绝不开 -Werror。
# 强制前置 <cstdint>protobuf 3.21.12 的 stubs/port.h 用了 int8_t 却未自带 stdint 包含,
# iOS SDK 头链比 host macOS 严格,会报 "unknown type name 'int8_t'"。全 TU 注入即修复。
target_compile_options(moshios PRIVATE
"SHELL:-include cstdint"
-Wno-deprecated-declarations
-Wno-deprecated-register
-Wno-register
-Wno-unused-parameter
-Wno-writable-strings
-fno-strict-aliasing
)