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>
This commit is contained in:
83
vendor/build/mosh/CMakeLists.txt
vendored
Normal file
83
vendor/build/mosh/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
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++14(mosh 用到 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
|
||||
)
|
||||
Reference in New Issue
Block a user