-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
81 lines (59 loc) · 4.04 KB
/
Copy pathCMakeLists.txt
File metadata and controls
81 lines (59 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
cmake_minimum_required(VERSION 3.30)
project(CoreHost)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS OFF)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(CoreHostCompiler)
corehost_configure_global_compiler()
add_compile_definitions(NOMINMAX WIN32_LEAN_AND_MEAN UNICODE _UNICODE)
option(COREHOST_DISABLE_LOG "Disable CoreHost logging" ON)
add_compile_definitions($<$<BOOL:${COREHOST_DISABLE_LOG}>:COREHOST_DISABLE_LOG>)
set(COREHOST_LOG_LEVEL "1" CACHE STRING "CoreHost log level by frequency: 1=low, 2=medium, 3=high")
add_compile_definitions(COREHOST_LOG_LEVEL=${COREHOST_LOG_LEVEL})
option(COREHOST_PERF_DIAG "Enable aggregated CoreHost performance diagnostics" OFF)
add_compile_definitions($<$<BOOL:${COREHOST_PERF_DIAG}>:COREHOST_PERF_DIAG>)
option(COREHOST_ANSI_OPT "Enable table-driven ANSI code page fast paths" OFF)
add_compile_definitions($<$<BOOL:${COREHOST_ANSI_OPT}>:COREHOST_ANSI_OPT>)
option(COREHOST_USE_SYSTEM_ICU "Use system ICU for Unicode character width calculation" ON)
# ── 版本 ──────────────────────────────────────────────────
# COREHOST_VERSION 决定 libcorehost/version.h 中的宏,version.h 又决定
# corehost.rc 的资源版本。格式为点分隔的数字(如 1.2.3.4);不足四段
# 时缺失段按 0 处理。
set(COREHOST_VERSION "0.0.0.0" CACHE STRING "CoreHost version (dot-separated numbers, e.g. 1.2.3.4)")
string(REPLACE "." ";" _version_parts "${COREHOST_VERSION}")
list(APPEND _version_parts 0 0 0 0) # 补足 4 段
list(SUBLIST _version_parts 0 4 _version_parts) # 截取前 4 段
list(GET _version_parts 0 COREHOST_VERSION_MAJOR)
list(GET _version_parts 1 COREHOST_VERSION_MINOR)
list(GET _version_parts 2 COREHOST_VERSION_PATCH)
list(GET _version_parts 3 COREHOST_VERSION_BUILD)
unset(_version_parts)
# ── 架构检测 (proxy 子目录使用) ──────────────────────
corehost_detect_arch(CONHOST_PROXY_ARCH_DIR)
# ── 统一输出目录:所有目标输出到 build/$<CONFIG>/ ──
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIG>)
# ═══════════════════════════════════════════════════════════════
# 子项目 — 按依赖顺序
# ═══════════════════════════════════════════════════════════════
# ── libunicode (UTF 转换 + Unicode 属性) ─────────────
add_subdirectory(third_parties/libunicode)
# ── proxy (conhost_proxy.dll + 头文件) ───────────────
add_subdirectory(proxy)
# ── common (核心基础设施: os/ntapi/win32/com/utility) ──
add_subdirectory(common)
# ── libcorehost (ConPTY 核心静态库) ──────────────────
add_subdirectory(libcorehost)
# ── corehost (宿主可执行文件) ────────────────────────
add_subdirectory(corehost)
# ── libconpty (ConPTY 静态库 + DLL) ──────────────────
add_subdirectory(libconpty)
# ── bench (ConPTY 性能测试工具) ───────────────────────
add_subdirectory(bench)
# ═══════════════════════════════════════════════════════════════
# 测试
# ═══════════════════════════════════════════════════════════════
enable_testing()
add_subdirectory(tests)