Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/PojavLauncher_iOS
Path: blob/main/Natives/CMakeLists.txt
589 views
1
cmake_minimum_required(VERSION 3.6)
2
project(PojavLauncher)
3
4
configure_file(${CMAKE_CURRENT_LIST_DIR}/config.h.in ${CMAKE_CURRENT_LIST_DIR}/config.h)
5
6
# Using our build system, cmake doesn't respect -miphoneos-version-min=14.0
7
# and instead overrides it with the macOS SDK version when compiled
8
# in Xcode on a Mac.
9
set(CMAKE_OSX_DEPLOYMENT_TARGET 14.0)
10
11
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -target arm64-apple-ios -mcpu=apple-a8 -fcommon -fobjc-arc -ObjC -F'${CMAKE_OSX_SYSROOT}/System/Cryptexes/OS/System/Library/Frameworks'")
12
set(CMAKE_C_FLAGS_DEBUG "-funwind-tables -g")
13
14
if("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Linux|^GNU$|Android")
15
set(GLOBAL_LDFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -Wl,-syslibroot,${CMAKE_OSX_SYSROOT} -fuse-ld=lld")
16
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GLOBAL_LDFLAGS}")
17
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GLOBAL_LDFLAGS}")
18
endif()
19
20
include_directories(
21
"."
22
"external/AFNetworking/AFNetworking"
23
"external/AFNetworking/UIKit+AFNetworking"
24
"external/DBNumberedSlider/Classes"
25
"external/NRFileManager"
26
"external/UnzipKit"
27
"external/fishhook"
28
"external/lzma"
29
"external/mesa"
30
"external/AltKit"
31
"external/Apple"
32
"external/ballpa1n"
33
"external/ballpa1n/wrapped"
34
)
35
36
# For cacio support library
37
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rpath @loader_path -rpath @executable_path/java_runtimes/java-8-openjdk/lib -rpath /usr/lib/jvm/java-8-openjdk/lib")
38
39
# EXT: stub library, delete after compile awt_xawt
40
add_library(awt_headless SHARED
41
awt_xawt/empty.m
42
)
43
target_link_libraries(awt_headless)
44
45
# EXT: cacio support library
46
add_library(awt_xawt SHARED
47
awt_xawt/xawt_fake.m
48
)
49
target_link_libraries(awt_xawt
50
"-L'${CMAKE_CURRENT_LIST_DIR}/build'"
51
awt_headless
52
)
53
54
set(CMAKE_FRAMEWORK_PATH "${CMAKE_CURRENT_LIST_DIR}/resources/Frameworks")
55
56
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks")
57
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks")
58
59
# ANGLE wrapper for 1.17+
60
add_library(tinygl4angle SHARED
61
external/gl4es/string_utils.c
62
external/gl4es/tinygl4angle.c
63
)
64
target_link_libraries(tinygl4angle
65
"${GLOBAL_LDFLAGS}"
66
"-F'${CMAKE_CURRENT_LIST_DIR}/resources/Frameworks'"
67
"-framework libEGL"
68
"-framework libGLESv2"
69
)
70
71
# AFNetworking
72
add_library(AFNetworking SHARED
73
external/AFNetworking/AFNetworking/AFSecurityPolicy.m
74
external/AFNetworking/AFNetworking/AFHTTPSessionManager.m
75
external/AFNetworking/AFNetworking/AFURLRequestSerialization.m
76
external/AFNetworking/AFNetworking/AFURLSessionManager.m
77
external/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m
78
external/AFNetworking/AFNetworking/AFURLResponseSerialization.m
79
external/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m
80
external/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m
81
external/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m
82
external/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m
83
external/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m
84
)
85
target_link_libraries(AFNetworking
86
"-framework CoreGraphics"
87
"-framework CoreServices"
88
"-framework Security"
89
"-framework SystemConfiguration"
90
"-framework UIKit"
91
)
92
93
# MinecraftAccount JNI
94
add_library(PojavAccountJNI SHARED
95
authenticator/MinecraftAccountJNI.m
96
)
97
target_link_libraries(PojavAccountJNI)
98
99
# PojavLauncher
100
add_executable(PojavLauncher
101
dyld_bypass_validation.m
102
dyld_patch_platform.m
103
main.m
104
main_hook.m
105
JavaLauncher.m
106
external/fishhook/fishhook.c
107
UIKit+hook.m
108
109
authenticator/BaseAuthenticator.m
110
authenticator/LocalAuthenticator.m
111
authenticator/MicrosoftAuthenticator.m
112
113
ctxbridges/gl_bridge.m
114
ctxbridges/osm_bridge.m
115
116
customcontrols/ControlButton.m
117
customcontrols/ControlDrawer.m
118
customcontrols/ControlJoystick.m
119
customcontrols/ControlLayout.m
120
customcontrols/ControlSubButton.m
121
customcontrols/CustomControlsUtils.m
122
customcontrols/NSPredicateUtilitiesExternal.m
123
124
external/DBNumberedSlider/Classes/DBNumberedSlider.m
125
external/NRFileManager/NSFileManager+NRFileManager.m
126
external/ballpa1n/HostManager.c
127
external/ballpa1n/wrapped/HostManagerBridge.m
128
129
installer/FabricInstallViewController.m
130
installer/ForgeInstallViewController.m
131
installer/ModpackInstallViewController.m
132
installer/FabricUtils.m
133
installer/modpack/ModpackUtils.m
134
installer/modpack/ModpackAPI.m
135
installer/modpack/CurseForgeAPI.m
136
installer/modpack/ModrinthAPI.m
137
138
input/ControllerInput.m
139
input/GyroInput.m
140
input/KeyboardInput.m
141
142
AccountListViewController.m
143
AppDelegate.m
144
CustomControlsViewController.m
145
CustomControlsViewController+UndoManager.m
146
DownloadProgressViewController.m
147
FileListViewController.m
148
GameSurfaceView.m
149
JavaGUIViewController.m
150
LauncherMenuViewController.m
151
LauncherNavigationController.m
152
LauncherNewsViewController.m
153
LauncherPreferences.m
154
LauncherPreferencesViewController.m
155
LauncherPrefContCfgViewController.m
156
LauncherPrefGameDirViewController.m
157
LauncherPrefManageJREViewController.m
158
LauncherProfileEditorViewController.m
159
LauncherProfilesViewController.m
160
LauncherSplitViewController.m
161
MinecraftResourceDownloadTask.m
162
MinecraftResourceUtils.m
163
PickTextField.m
164
PLLogOutputView.m
165
PLPickerView.m
166
PLPreferences.m
167
PLPrefTableViewController.m
168
PLProfiles.m
169
SceneDelegate.m
170
SceneExternalDelegate.m
171
SurfaceViewController.m
172
SurfaceViewController+ExternalDisplay.m
173
SurfaceViewController+LogView.m
174
SurfaceViewController+Navigation.m
175
TrackedTextField.m
176
egl_bridge.m
177
input_bridge_v3.m
178
ios_uikit_bridge.m
179
utils.m
180
)
181
182
if("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Linux|^GNU$|Android")
183
target_sources(PojavLauncher PUBLIC non_darwin_utils.m)
184
endif()
185
186
target_link_libraries(PojavLauncher
187
PUBLIC AFNetworking
188
lzma
189
"-F'${CMAKE_CURRENT_LIST_DIR}/build'"
190
"-F'${CMAKE_CURRENT_LIST_DIR}/resources/Frameworks'"
191
"-framework AltKit"
192
"-framework AuthenticationServices"
193
"-framework AVFoundation"
194
"-framework CAltKit"
195
"-framework CoreFoundation"
196
"-framework CoreGraphics"
197
"-framework CoreImage"
198
"-framework CoreMotion"
199
"-framework GameController"
200
"-framework IOKit"
201
"-framework QuartzCore"
202
"-framework UIKit"
203
"-framework UniformTypeIdentifiers"
204
"-framework UnzipKit"
205
"-framework WebKit"
206
"-weak_framework SafariServices"
207
)
208
set_target_properties(PojavLauncher PROPERTIES
209
MACOSX_BUNDLE TRUE
210
MACOSX_FRAMEWORK_IDENTIFIER org.cmake.ExecutableTarget
211
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_LIST_DIR}/Info.plist")
212
213