-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile.emscripten
More file actions
109 lines (109 loc) · 3.61 KB
/
Makefile.emscripten
File metadata and controls
109 lines (109 loc) · 3.61 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
EMSDK_PYTHON = C:/Users/PC/emsdk/python/3.13.3_64bit/python.exe
EMCC = C:/Users/PC/emsdk/upstream/emscripten/emcc.py
CC = $(EMSDK_PYTHON) $(EMCC)
CFLAGS = -O3 -Wall -Wno-unused-variable -Wno-unused-function -Wno-unused-value -DDOOMGENERIC -DDOOMGENERIC_RESX=320 -DDOOMGENERIC_RESY=200
# Include path for Doom headers
CFLAGS += -Idoomgeneric/doomgeneric
# Emscripten Linker Flags
# -s STANDALONE_WASM=1 : No JS glue, pure WASM
# -s ALLOW_MEMORY_GROWTH=1 : Allow heap to resize
# -s "EXPORTED_FUNCTIONS=[...]" : Export specific C symbols (prefixed with _)
LDFLAGS = -O2 -g -s ALLOW_MEMORY_GROWTH=1 -s ASYNCIFY --embed-file doom1.wad -s "EXPORTED_FUNCTIONS=['_main','_DG_Github_Init','_DG_Github_Input','_DG_Github_Framebuffer','_DG_GetFramebufferPtr','_DG_Github_FB_Read','_doomgeneric_Tick']" -s "EXPORTED_RUNTIME_METHODS=['wasmMemory','HEAPU8','HEAP32']" -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ENVIRONMENT=worker -s MODULARIZE=1 -s EXPORT_NAME='DoomModule' -o engine.js
DOOM_SRC_DIR = doomgeneric/doomgeneric
# Explicit list of Doom Engine Sources + DoomGeneric Core
# Excludes backend-specific files (sdl, win, etc.)
DOOM_SRCS = \
$(DOOM_SRC_DIR)/am_map.c \
$(DOOM_SRC_DIR)/doomdef.c \
$(DOOM_SRC_DIR)/doomgeneric.c \
$(DOOM_SRC_DIR)/doomstat.c \
$(DOOM_SRC_DIR)/dstrings.c \
$(DOOM_SRC_DIR)/dummy.c \
$(DOOM_SRC_DIR)/d_event.c \
$(DOOM_SRC_DIR)/d_items.c \
$(DOOM_SRC_DIR)/d_iwad.c \
$(DOOM_SRC_DIR)/d_loop.c \
$(DOOM_SRC_DIR)/d_main.c \
$(DOOM_SRC_DIR)/d_mode.c \
$(DOOM_SRC_DIR)/d_net.c \
$(DOOM_SRC_DIR)/f_finale.c \
$(DOOM_SRC_DIR)/f_wipe.c \
$(DOOM_SRC_DIR)/g_game.c \
$(DOOM_SRC_DIR)/hu_lib.c \
$(DOOM_SRC_DIR)/hu_stuff.c \
$(DOOM_SRC_DIR)/info.c \
$(DOOM_SRC_DIR)/i_endoom.c \
$(DOOM_SRC_DIR)/i_input.c \
$(DOOM_SRC_DIR)/i_joystick.c \
$(DOOM_SRC_DIR)/i_scale.c \
$(DOOM_SRC_DIR)/i_sound.c \
$(DOOM_SRC_DIR)/i_system.c \
$(DOOM_SRC_DIR)/i_timer.c \
$(DOOM_SRC_DIR)/i_video.c \
$(DOOM_SRC_DIR)/memio.c \
$(DOOM_SRC_DIR)/mus2mid.c \
$(DOOM_SRC_DIR)/m_argv.c \
$(DOOM_SRC_DIR)/m_bbox.c \
$(DOOM_SRC_DIR)/m_cheat.c \
$(DOOM_SRC_DIR)/m_config.c \
$(DOOM_SRC_DIR)/m_controls.c \
$(DOOM_SRC_DIR)/m_fixed.c \
$(DOOM_SRC_DIR)/m_menu.c \
$(DOOM_SRC_DIR)/m_misc.c \
$(DOOM_SRC_DIR)/m_random.c \
$(DOOM_SRC_DIR)/p_ceilng.c \
$(DOOM_SRC_DIR)/p_doors.c \
$(DOOM_SRC_DIR)/p_enemy.c \
$(DOOM_SRC_DIR)/p_floor.c \
$(DOOM_SRC_DIR)/p_inter.c \
$(DOOM_SRC_DIR)/p_lights.c \
$(DOOM_SRC_DIR)/p_map.c \
$(DOOM_SRC_DIR)/p_maputl.c \
$(DOOM_SRC_DIR)/p_mobj.c \
$(DOOM_SRC_DIR)/p_plats.c \
$(DOOM_SRC_DIR)/p_pspr.c \
$(DOOM_SRC_DIR)/p_saveg.c \
$(DOOM_SRC_DIR)/p_setup.c \
$(DOOM_SRC_DIR)/p_sight.c \
$(DOOM_SRC_DIR)/p_spec.c \
$(DOOM_SRC_DIR)/p_switch.c \
$(DOOM_SRC_DIR)/p_telept.c \
$(DOOM_SRC_DIR)/p_tick.c \
$(DOOM_SRC_DIR)/p_user.c \
$(DOOM_SRC_DIR)/r_bsp.c \
$(DOOM_SRC_DIR)/r_data.c \
$(DOOM_SRC_DIR)/r_draw.c \
$(DOOM_SRC_DIR)/r_main.c \
$(DOOM_SRC_DIR)/r_plane.c \
$(DOOM_SRC_DIR)/r_segs.c \
$(DOOM_SRC_DIR)/r_sky.c \
$(DOOM_SRC_DIR)/r_things.c \
$(DOOM_SRC_DIR)/sha1.c \
$(DOOM_SRC_DIR)/sounds.c \
$(DOOM_SRC_DIR)/statdump.c \
$(DOOM_SRC_DIR)/st_lib.c \
$(DOOM_SRC_DIR)/st_stuff.c \
$(DOOM_SRC_DIR)/s_sound.c \
$(DOOM_SRC_DIR)/tables.c \
$(DOOM_SRC_DIR)/v_video.c \
$(DOOM_SRC_DIR)/wi_stuff.c \
$(DOOM_SRC_DIR)/w_checksum.c \
$(DOOM_SRC_DIR)/w_file.c \
$(DOOM_SRC_DIR)/w_file_stdc.c \
$(DOOM_SRC_DIR)/w_main.c \
$(DOOM_SRC_DIR)/w_wad.c \
$(DOOM_SRC_DIR)/z_zone.c
# Local Backend (Github)
LOCAL_SRCS = doomgeneric_github.c
# Combine all sources
SRCS = $(LOCAL_SRCS) $(DOOM_SRCS)
OBJS = $(SRCS:.c=.o)
.PHONY: all clean
all: engine.wasm
engine.wasm: $(OBJS)
$(CC) $(OBJS) $(LDFLAGS)
# Generic rule for all object files
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) engine.wasm engine.js engine.data