-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
54 lines (41 loc) · 1.47 KB
/
Copy pathMakefile
File metadata and controls
54 lines (41 loc) · 1.47 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
CC := gcc
CFLAGS := -Wall -Wextra -std=c11 -Iinclude -g
SRC_DIR := src
OBJ_DIR := obj
BIN_DIR := bin
TARGET := $(BIN_DIR)/poker
SRCS := $(wildcard $(SRC_DIR)/*.c)
OBJS := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))
.PHONY: all clean run
all: $(TARGET)
$(TARGET): $(OBJS) | $(BIN_DIR)
$(CC) $(CFLAGS) -o $@ $^
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
run: all
./$(TARGET)
clean:
rm -rf $(OBJ_DIR) $(BIN_DIR)
# --- Build WebAssembly (richiede Emscripten: https://emscripten.org/docs/getting_started/downloads.html) ---
# Attivare l'ambiente prima di lanciare 'make wasm': source /path/to/emsdk/emsdk_env.sh
WASM_SRCS := $(SRC_DIR)/deck.c $(SRC_DIR)/player.c $(SRC_DIR)/hand_eval.c $(SRC_DIR)/game.c $(SRC_DIR)/wasm_bridge.c
WEB_DIR := web
.PHONY: wasm clean-wasm
# SINGLE_FILE=1: incorpora il .wasm come base64 dentro poker.js, cosi'
# index.html si apre direttamente con doppio click (file://), senza server locale.
wasm: $(WASM_SRCS)
mkdir -p $(WEB_DIR)
emcc $(WASM_SRCS) -Iinclude -O2 \
-s WASM=1 \
-s SINGLE_FILE=1 \
-s EXPORTED_FUNCTIONS="['_wasm_crea_partita','_wasm_nuova_mano','_wasm_avanza','_wasm_azione_umano','_wasm_stato_json']" \
-s EXPORTED_RUNTIME_METHODS="['ccall','cwrap']" \
-s ALLOW_MEMORY_GROWTH=1 \
-s MODULARIZE=1 -s EXPORT_NAME="PokerModule" \
-o $(WEB_DIR)/poker.js
clean-wasm:
rm -rf $(WEB_DIR)/poker.js $(WEB_DIR)/poker.wasm