mirror of
https://github.com/djdevin/recnet-plugin.git
synced 2026-09-08 22:51:34 -07:00
101 lines
2.2 KiB
CMake
101 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(RRRedirector C)
|
|
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
|
|
# Rec Room is 64-bit; a 32-bit build silently fails to load. Guard against an x86 toolchain.
|
|
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
message(FATAL_ERROR "Must build 64-bit. Import the amd64 VC env (vcvarsall.bat amd64) before cmake.")
|
|
endif()
|
|
|
|
# Where to deploy the built proxy. Point at your Rec Room install root; the deploy step below copies
|
|
# version.dll there. That single file is the whole payload -- see the note above the deploy step.
|
|
set(GAME_DIR "" CACHE PATH "Rec Room install root to deploy version.dll into")
|
|
|
|
|
|
add_library(redirector SHARED
|
|
|
|
src/dllmain.c
|
|
|
|
|
|
# Proxy loader (exports wrap the real system version.dll; DllMain starts the hook thread)
|
|
src/proxy/version_proxy.c
|
|
|
|
|
|
# Core
|
|
src/core/logger.c
|
|
src/core/config.c
|
|
src/core/process.c
|
|
|
|
|
|
# Hooks
|
|
src/hooks/dns_hook.c
|
|
src/hooks/connect_hook.c
|
|
src/hooks/hook_manager.c
|
|
|
|
|
|
# Memory
|
|
src/memory/detour.c
|
|
|
|
|
|
# Unity
|
|
src/unity/module_watch.c
|
|
src/unity/ssl_patch.c
|
|
src/unity/http_rewrite.c
|
|
src/unity/memcheck_patch.c
|
|
src/unity/eac_patch.c
|
|
|
|
|
|
# Utils
|
|
src/utils/strings.c
|
|
|
|
|
|
# Debug
|
|
src/debug/api_logger.c
|
|
src/debug/tls_logger.c
|
|
src/debug/packet_logger.c
|
|
)
|
|
|
|
|
|
target_include_directories(
|
|
redirector PRIVATE
|
|
include
|
|
)
|
|
|
|
|
|
|
|
target_link_libraries(
|
|
redirector
|
|
|
|
ws2_32
|
|
dbghelp
|
|
psapi
|
|
)
|
|
|
|
|
|
|
|
# Output must be named version.dll so RecRoom.exe's VERSION.dll import resolves to us.
|
|
set_target_properties(
|
|
redirector PROPERTIES
|
|
|
|
OUTPUT_NAME "version"
|
|
PREFIX ""
|
|
)
|
|
|
|
|
|
# The proxy loads the real system version.dll at runtime (see src/proxy/version_proxy.c), so there is
|
|
# nothing extra to materialize or ship -- version.dll is fully self-contained.
|
|
|
|
|
|
# Optional one-step deploy: -DGAME_DIR=... to copy version.dll into the game folder after build.
|
|
# The copy fails while Rec Room is running (DLL locked) -- close the game and rebuild.
|
|
if(GAME_DIR)
|
|
add_custom_command(TARGET redirector POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
"$<TARGET_FILE:redirector>" "${GAME_DIR}/version.dll"
|
|
COMMENT "Deploying version.dll to ${GAME_DIR}"
|
|
)
|
|
endif()
|