forked from backup-bdg/executor
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
197 lines (163 loc) · 6.01 KB
/
Makefile
File metadata and controls
197 lines (163 loc) · 6.01 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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# Makefile for iOS Roblox Executor
# Replacement for CMake build system
# Compiler and flags
CXX := clang++
CC := clang
OBJCXX := clang++
AR := ar
# Build type (Debug or Release)
BUILD_TYPE ?= Release
# iOS SDK settings
SDK ?= $(shell xcrun --sdk iphoneos --show-sdk-path)
ARCHS ?= arm64
MIN_IOS_VERSION ?= 15.0
# Basic flags
ifeq ($(BUILD_TYPE),Debug)
OPT_FLAGS := -g -O0
DEFS := -DDEBUG_BUILD=1
else
OPT_FLAGS := -O3
DEFS := -DPRODUCTION_BUILD=1
endif
CXXFLAGS := -std=c++17 -fPIC $(OPT_FLAGS) -Wall -Wextra -fvisibility=hidden -ferror-limit=0 -fno-limit-debug-info
CFLAGS := -fPIC $(OPT_FLAGS) -Wall -Wextra -fvisibility=hidden -ferror-limit=0 -fno-limit-debug-info
OBJCXXFLAGS := -std=c++17 -fPIC $(OPT_FLAGS) -Wall -Wextra -fvisibility=hidden -ferror-limit=0 -fno-limit-debug-info
LDFLAGS := -shared
# Define platform
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
IS_APPLE := 1
# iOS-specific compiler flags
CXXFLAGS += -isysroot $(SDK) -arch $(ARCHS) -mios-version-min=$(MIN_IOS_VERSION)
CFLAGS += -isysroot $(SDK) -arch $(ARCHS) -mios-version-min=$(MIN_IOS_VERSION)
OBJCXXFLAGS += -isysroot $(SDK) -arch $(ARCHS) -mios-version-min=$(MIN_IOS_VERSION)
CXXFLAGS += -fobjc-arc
OBJCXXFLAGS += -fobjc-arc
LDFLAGS += -dynamiclib
endif
# iOS-specific settings
ifdef IS_APPLE
FRAMEWORKS := -framework Foundation -framework UIKit -framework Security -framework CoreData
SYSTEM_NAME := $(shell test -d /Applications/Xcode.app && echo "iOS" || echo "macOS")
ifeq ($(SYSTEM_NAME),iOS)
CXXFLAGS += -mios-version-min=13.0 -fembed-bitcode
CFLAGS += -mios-version-min=13.0 -fembed-bitcode
OBJCXXFLAGS += -mios-version-min=13.0 -fembed-bitcode
endif
else
FRAMEWORKS :=
endif
# Feature flags
USE_DOBBY := 1
USE_LUAU := 1
ENABLE_AI_FEATURES := 1
ENABLE_ADVANCED_BYPASS := 1
# Define directories
ROOT_DIR := .
VM_DIR := $(ROOT_DIR)/VM
SOURCE_DIR := $(ROOT_DIR)/source
CPP_DIR := $(SOURCE_DIR)/cpp
VM_SRC_DIR := $(VM_DIR)/src
VM_INCLUDE_DIR := $(VM_DIR)/include
# Include paths
INCLUDES := -I$(VM_INCLUDE_DIR) -I$(VM_SRC_DIR) -I$(SOURCE_DIR) -I$(CPP_DIR) -I$(ROOT_DIR)
# Preprocessor definitions
DEFS += -DUSE_LUAU=1 -DLUAU_FASTINT_SUPPORT=1 -DUSE_LUA=1 -DENABLE_ERROR_REPORTING=1 -DENABLE_ANTI_TAMPER=1
DEFS += -DLUA_API="__attribute__((visibility(\"default\")))" -DLUALIB_API="__attribute__((visibility(\"default\")))" -DLUAI_FUNC="__attribute__((visibility(\"hidden\")))"
ifdef USE_DOBBY
DEFS += -DUSE_DOBBY=1
endif
ifdef IS_APPLE
DEFS += -D__APPLE__=1
ifeq ($(SYSTEM_NAME),iOS)
DEFS += -DIOS_TARGET=1 -DIOS_BUILD=1 -DSHOW_ALL_WARNINGS=1
endif
endif
# Find VM sources
VM_SOURCES := $(wildcard $(VM_SRC_DIR)/*.cpp)
VM_OBJECTS := $(VM_SOURCES:.cpp=.o)
# Main library sources
LIB_CPP_SOURCES := $(SOURCE_DIR)/library.cpp
LIB_C_SOURCES := $(SOURCE_DIR)/lfs.c
LIB_OBJECTS := $(LIB_CPP_SOURCES:.cpp=.o) $(LIB_C_SOURCES:.c=.o)
# Find all cpp sources for roblox_execution
EXEC_CPP_SOURCES := $(shell find $(CPP_DIR) -name "*.cpp" -not -path "$(CPP_DIR)/ios/*" -not -path "$(CPP_DIR)/tests/*")
EXEC_OBJECTS := $(EXEC_CPP_SOURCES:.cpp=.o)
# iOS-specific sources
iOS_CPP_SOURCES :=
iOS_MM_SOURCES :=
ifdef IS_APPLE
iOS_CPP_SOURCES += $(shell find $(CPP_DIR)/ios -name "*.cpp" 2>/dev/null)
iOS_MM_SOURCES += $(shell find $(CPP_DIR)/ios -name "*.mm" 2>/dev/null)
ifdef ENABLE_AI_FEATURES
iOS_CPP_SOURCES += $(shell find $(CPP_DIR)/ios/ai_features -name "*.cpp" 2>/dev/null)
iOS_MM_SOURCES += $(shell find $(CPP_DIR)/ios/ai_features -name "*.mm" 2>/dev/null)
endif
ifdef ENABLE_ADVANCED_BYPASS
iOS_CPP_SOURCES += $(shell find $(CPP_DIR)/ios/advanced_bypass -name "*.cpp" 2>/dev/null)
iOS_MM_SOURCES += $(shell find $(CPP_DIR)/ios/advanced_bypass -name "*.mm" 2>/dev/null)
endif
endif
iOS_CPP_OBJECTS := $(iOS_CPP_SOURCES:.cpp=.o)
iOS_MM_OBJECTS := $(iOS_MM_SOURCES:.mm=.o)
# Combine objects for roblox_execution static library
ROBLOX_EXEC_OBJECTS := $(EXEC_OBJECTS) $(iOS_CPP_OBJECTS) $(iOS_MM_OBJECTS)
# Output files
STATIC_LIB := lib/libroblox_execution.a
DYLIB := lib/mylibrary.dylib
# Dobby handling
ifdef USE_DOBBY
DOBBY_INCLUDE := -I$(ROOT_DIR)/external/dobby/include
DOBBY_LIB := -L$(ROOT_DIR)/external/dobby/lib -ldobby
INCLUDES += $(DOBBY_INCLUDE)
endif
# Main rule
all: directories $(STATIC_LIB) $(DYLIB)
# Create necessary directories
directories:
@mkdir -p lib
# Build static library
$(STATIC_LIB): $(ROBLOX_EXEC_OBJECTS)
$(AR) rcs $@ $^
# Build dynamic library
$(DYLIB): $(VM_OBJECTS) $(LIB_OBJECTS) $(STATIC_LIB)
$(CXX) $(LDFLAGS) -o $@ $(VM_OBJECTS) $(LIB_OBJECTS) -L./lib -lroblox_execution $(DOBBY_LIB) $(FRAMEWORKS)
ifdef IS_APPLE
@install_name_tool -id @executable_path/lib/mylibrary.dylib $@
endif
# Compilation rules
%.o: %.cpp
$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFS) -c $< -o $@
%.o: %.c
$(CC) $(CFLAGS) $(INCLUDES) $(DEFS) -c $< -o $@
%.o: %.mm
$(OBJCXX) $(OBJCXXFLAGS) $(INCLUDES) $(DEFS) -c $< -o $@
# Clean rule
clean:
rm -rf $(VM_OBJECTS) $(LIB_OBJECTS) $(ROBLOX_EXEC_OBJECTS) $(STATIC_LIB) $(DYLIB)
# Install rule
install: all
@mkdir -p $(ROOT_DIR)/output
cp $(DYLIB) $(ROOT_DIR)/output/libmylibrary.dylib
# Print info about build (useful for debugging)
info:
@echo "Build Type: $(BUILD_TYPE)"
@echo "Platform: $(UNAME_S)"
@echo "VM Sources: $(VM_SOURCES)"
@echo "Exec Sources: $(EXEC_CPP_SOURCES)"
@echo "iOS CPP Sources: $(iOS_CPP_SOURCES)"
@echo "iOS MM Sources: $(iOS_MM_SOURCES)"
# Help target
help:
@echo "Available targets:"
@echo " all - Build everything (default)"
@echo " clean - Remove build artifacts"
@echo " install - Install dylib to /usr/local/lib"
@echo " info - Print build information"
@echo ""
@echo "Configuration variables:"
@echo " BUILD_TYPE=Debug|Release - Set build type (default: Release)"
@echo " USE_DOBBY=0|1 - Enable Dobby hooking (default: 1)"
@echo " ENABLE_AI_FEATURES=0|1 - Enable AI features (default: 1)"
@echo " ENABLE_ADVANCED_BYPASS=0|1 - Enable advanced bypass (default: 1)"
.PHONY: all clean install directories info help