-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
85 lines (60 loc) · 2.16 KB
/
Makefile
File metadata and controls
85 lines (60 loc) · 2.16 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
# Compilers
MTASC=mtasc
HAXE=haxe
DENO=deno
# Shared settings
MTASC_HEADER=800:575:60
# Dummy target to force rebuild
.PHONY: all clean run assets test test-avm1 test-engine test-display test-avm2 avm1-build avm2-build run-avm2 FORCE
# Default target - build both firmwares and UI assets
all: avm1-build avm2-build assets
# Default run target - AVM1 with file picker
run: avm1-build assets
@$(DENO) run --allow-net --allow-run --allow-read --allow-write --allow-env RAEngine/src/AVM1Main.ts 2>&1 | cat
# Build UI assets using npm
assets:
@cd RADisplay && npm run build --silent
# Clean up generated files
clean:
rm -rf .build .run
# === AVM1 Firmware ===
AVM1_SWF=.build/firmware/AVM1.swf
AVM1_MAIN=AVM1Firmware/Main.as
avm1-build: $(AVM1_SWF)
$(AVM1_SWF): FORCE
@mkdir -p $(dir $@)
@$(MTASC) -cp AVM1Firmware -swf $@ -main $(AVM1_MAIN) -header $(MTASC_HEADER)
# === AVM2 Firmware ===
AVM2_SWF=.build/firmware/AVM2.swf
AVM2_MAIN=AVM2Firmware/Main.hx
avm2-build: $(AVM2_SWF)
$(AVM2_SWF): FORCE
@mkdir -p $(dir $@)
@$(HAXE) -cp AVM2Firmware -swf $@ -swf-version 11 -D swf-header=800:575:60:0 -main Main
# Run AVM2 with file picker UI
run-avm2: $(AVM2_SWF) assets
@$(DENO) run --allow-net --allow-run --allow-read --allow-write --allow-env RAEngine/src/AVM2Main.ts 2>&1 | cat
# === Testing ===
# Run all tests (fail fast)
test: test-avm1 test-engine test-display test-avm2
# AS2/AVM1 tests (Flash Player + XMLSocket)
TEST_AVM1_SWF=.build/tests/AVM1Tests.swf
TEST_AVM1_MAIN=AVM1Firmware/tests/TestRunner.as
test-avm1: $(TEST_AVM1_SWF)
@$(DENO) run --allow-net --allow-run --allow-read AVM1Firmware/tests/test-server.ts $(TEST_AVM1_SWF)
$(TEST_AVM1_SWF): FORCE
@mkdir -p $(dir $@)
@$(MTASC) -cp AVM1Firmware -cp AVM1Firmware/tests -swf $@ -main $(TEST_AVM1_MAIN) -header $(MTASC_HEADER)
# RAEngine tests (Deno)
test-engine:
@$(DENO) test RAEngine/tests/
# RADisplay tests (Vitest)
test-display:
@cd RADisplay && npx vitest run
# AVM2Firmware tests (Haxe/Neko)
TEST_AVM2_NEKO=.build/tests/AVM2Tests.n
test-avm2: $(TEST_AVM2_NEKO)
@neko $(TEST_AVM2_NEKO)
$(TEST_AVM2_NEKO): FORCE
@mkdir -p $(dir $@)
@$(HAXE) -cp AVM2Firmware -cp AVM2Firmware/tests -main TestRunner -neko $@