-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
145 lines (126 loc) · 5.86 KB
/
Copy pathCMakeLists.txt
File metadata and controls
145 lines (126 loc) · 5.86 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
cmake_minimum_required(VERSION 3.24)
project(mc_internal LANGUAGES C CXX ASM)
include(CTest)
# Export compile commands so clangd and other tools can find per-file flags
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
find_package(JNI REQUIRED COMPONENTS JVM)
find_package(OpenGL REQUIRED)
find_package(Threads REQUIRED)
set(mc_internal_imgui_sources
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/imgui.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/imgui_draw.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/imgui_tables.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/imgui_widgets.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/backends/imgui_impl_opengl3.cpp
)
set(mc_internal_jnif_sources
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif/analysis.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif/base.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif/model.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif/parser.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif/printer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif/stream.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif/writer.cpp
)
set(mc_internal_jnihook_sources
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/src/classfile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/src/jnihook.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/src/jvm.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/src/uuid.cpp
${mc_internal_jnif_sources}
)
# jnihook's upstream cmake assumes a configured java home, so we vendor the sources here.
add_library(mc_internal_jnihook STATIC ${mc_internal_jnihook_sources})
target_compile_features(mc_internal_jnihook PRIVATE cxx_std_23)
target_include_directories(mc_internal_jnihook
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/include
PRIVATE
${JNI_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/src
${CMAKE_CURRENT_SOURCE_DIR}/deps/jnihook/external/jnif/src-libjnif
)
# libmem is linked statically so the injected payload stays self-contained.
set(LIBMEM_BUILD_TESTS OFF CACHE BOOL "disable libmem tests" FORCE)
set(LIBMEM_DEEP_TESTS OFF CACHE BOOL "disable libmem deep tests" FORCE)
set(LIBMEM_BUILD_STATIC ON CACHE BOOL "build libmem as a static library" FORCE)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/deps/libmem)
# keystone lands in lib64 on some linux toolchains while libmem expects lib.
set(mc_internal_keystone_root
${CMAKE_BINARY_DIR}/deps/libmem/external/keystone-engine-prefix/src/keystone-engine-build/llvm
)
set(mc_internal_keystone_actual ${mc_internal_keystone_root}/lib64/libkeystone.a)
set(mc_internal_keystone_expected ${mc_internal_keystone_root}/lib/libkeystone.a)
add_custom_target(mc_internal_keystone_compat
COMMAND ${CMAKE_COMMAND} -E make_directory ${mc_internal_keystone_root}/lib
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${mc_internal_keystone_actual} ${mc_internal_keystone_expected}
DEPENDS keystone-engine
BYPRODUCTS ${mc_internal_keystone_expected}
)
add_dependencies(libmem mc_internal_keystone_compat)
# imgui ships sources, not a cmake target.
add_library(mc_internal SHARED
${mc_internal_imgui_sources}
)
target_sources(mc_internal PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/logging.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/hook/glfw_bindings.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/hook/input_suppression.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/hook/render_hook.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/jvm_attachment.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/jni_hook.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/core/bootstrap.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/sdk/jni_cache.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/sdk/math.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/sdk/minecraft.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/features/module_manager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/features/debug_hud_module.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/features/esp_module.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/features/aim_assist_module.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/features/aim_assist_detail.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ui/opengl_state.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ui/imgui_manager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ui/input_handler.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ui/widgets.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ui/menu.cpp
)
target_compile_features(mc_internal PRIVATE cxx_std_23)
target_include_directories(mc_internal
PRIVATE
${JNI_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/backends
${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/examples/libs/glfw/include
${CMAKE_CURRENT_SOURCE_DIR}/deps/libmem/include
)
# Bake the font path so imgui_manager can load Roboto at runtime.
target_compile_definitions(mc_internal PRIVATE
MCINTERNAL_FONT_PATH="${CMAKE_CURRENT_SOURCE_DIR}/deps/imgui/misc/fonts/Roboto-Medium.ttf"
)
target_link_libraries(mc_internal
PRIVATE
mc_internal_jnihook
libmem
OpenGL::GL
Threads::Threads
dl
pthread
)
if(BUILD_TESTING)
add_executable(mc_internal_aim_assist_detail_test
${CMAKE_CURRENT_SOURCE_DIR}/tests/aim_assist_detail_test.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/features/aim_assist_detail.cpp
)
target_compile_features(mc_internal_aim_assist_detail_test PRIVATE cxx_std_23)
target_include_directories(mc_internal_aim_assist_detail_test
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
)
add_test(NAME mc_internal_aim_assist_detail_test COMMAND mc_internal_aim_assist_detail_test)
endif()