Files
metin2-client/src/host/CMakeLists.txt
T
shenleiandClaude Opus 5.5 75d2dd8545 host: split src/host/main.cpp into translation units
main.cpp (4.5k lines) -> main.cpp (entry, args, synthetic benchmark) plus
vulkan_window, live_client, frame_policy, native_audio, texture_decode,
render_state, input_keymap, host_util. Bodies are moved verbatim; multi-line
VulkanWindow / NativeAudioEngine / FrameRatePolicy members are defined out of
line; one-line accessors stay inline. Anonymous namespace -> mt_host.

No behavior change: ctest 15/15, port_gate macos+android PASS, desktop
--live-client login screen and synthetic --draws runs unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:30:44 +09:00

93 lines
4.0 KiB
CMake

find_package(Vulkan REQUIRED)
find_package(SDL3 CONFIG REQUIRED)
find_program(GLSLC glslc REQUIRED)
set(MT_NATIVE_VERT_SPV "${CMAKE_CURRENT_BINARY_DIR}/native.vert.spv")
set(MT_NATIVE_FRAG_SPV "${CMAKE_CURRENT_BINARY_DIR}/native.frag.spv")
add_custom_command(OUTPUT "${MT_NATIVE_VERT_SPV}"
COMMAND "${GLSLC}" -fshader-stage=vert "${CMAKE_CURRENT_SOURCE_DIR}/shaders/native.vert" -o "${MT_NATIVE_VERT_SPV}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/shaders/native.vert")
add_custom_command(OUTPUT "${MT_NATIVE_FRAG_SPV}"
COMMAND "${GLSLC}" -fshader-stage=frag "${CMAKE_CURRENT_SOURCE_DIR}/shaders/native.frag" -o "${MT_NATIVE_FRAG_SPV}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/shaders/native.frag")
add_custom_target(mt_native_shaders DEPENDS "${MT_NATIVE_VERT_SPV}" "${MT_NATIVE_FRAG_SPV}")
set(MT_NATIVE_RENDER_SOURCES
main.cpp
frame_policy.cpp
host_util.cpp
input_keymap.cpp
live_client.cpp
native_audio.cpp
render_state.cpp
texture_decode.cpp
vulkan_window.cpp
stb_image_impl.cpp
dxt.cpp
)
if(TARGET port_platform AND TARGET mtpython)
list(APPEND MT_NATIVE_RENDER_SOURCES
"${PROJECT_SOURCE_DIR}/tests/port/port_login_flow_server.cpp"
"${PROJECT_SOURCE_DIR}/tests/port/classic/classic_cipher.cpp"
)
endif()
if(ANDROID)
# SDLActivity loads libmain.so; Android does not launch a native executable.
set(MT_NATIVE_TARGET main)
add_library(${MT_NATIVE_TARGET} SHARED ${MT_NATIVE_RENDER_SOURCES})
else()
set(MT_NATIVE_TARGET mt_native_render)
add_executable(${MT_NATIVE_TARGET} ${MT_NATIVE_RENDER_SOURCES})
endif()
if(APPLE)
set_target_properties(${MT_NATIVE_TARGET} PROPERTIES
OSX_ARCHITECTURES "${CMAKE_HOST_SYSTEM_PROCESSOR}"
)
endif()
add_dependencies(${MT_NATIVE_TARGET} mt_native_shaders)
target_include_directories(${MT_NATIVE_TARGET} PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/third_party"
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/src/platform/EterLib")
if(NOT ANDROID)
add_custom_command(TARGET ${MT_NATIVE_TARGET} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${MT_NATIVE_VERT_SPV}" "$<TARGET_FILE_DIR:${MT_NATIVE_TARGET}>/native.vert.spv"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${MT_NATIVE_FRAG_SPV}" "$<TARGET_FILE_DIR:${MT_NATIVE_TARGET}>/native.frag.spv")
endif()
target_link_libraries(${MT_NATIVE_TARGET} PRIVATE Vulkan::Vulkan SDL3::SDL3)
if(APPLE)
target_link_libraries(${MT_NATIVE_TARGET} PRIVATE
"-framework AudioToolbox")
endif()
if(TARGET port_platform AND TARGET mtpython)
target_compile_definitions(${MT_NATIVE_TARGET} PRIVATE MT_NATIVE_HAS_LIVE_CLIENT=1)
target_link_libraries(${MT_NATIVE_TARGET} PRIVATE port_platform)
if(TARGET mtpython_stdlib)
add_dependencies(${MT_NATIVE_TARGET} mtpython_stdlib)
if(NOT ANDROID)
add_custom_command(TARGET ${MT_NATIVE_TARGET} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${MT_PYTHON_STDLIB_ZIP}" "$<TARGET_FILE_DIR:${MT_NATIVE_TARGET}>/python27.zip")
endif()
endif()
endif()
if(ANDROID)
# Add this directory to the SDL Android app's assets.srcDirs.
set(MT_NATIVE_ANDROID_ASSETS "${CMAKE_CURRENT_BINARY_DIR}/android-assets")
add_custom_target(mt_native_android_assets ALL
COMMAND ${CMAKE_COMMAND} -E make_directory "${MT_NATIVE_ANDROID_ASSETS}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${MT_NATIVE_VERT_SPV}" "${MT_NATIVE_ANDROID_ASSETS}/native.vert.spv"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${MT_NATIVE_FRAG_SPV}" "${MT_NATIVE_ANDROID_ASSETS}/native.frag.spv"
DEPENDS mt_native_shaders)
if(TARGET mtpython_stdlib)
add_dependencies(mt_native_android_assets mtpython_stdlib)
add_custom_command(TARGET mt_native_android_assets POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${MT_PYTHON_STDLIB_ZIP}" "${MT_NATIVE_ANDROID_ASSETS}/python27.zip")
endif()
endif()