# ================= COMPILER SETTINGS ================= CC ?= gcc CFLAGS ?= -Wall -Wextra -Werror -std=c18 -Iinclude -Ibenchmark LDFLAGS ?= SRC_DIR := src TEST_DIR := tests BENCH_DIR := benchmark BUILD_DIR := build SRC := $(SRC_DIR)/syntax_essentials.c benchmark/benchmark.c benchmark/resource_usage.c TESTS := $(wildcard $(TEST_DIR)/*.c) OUT_HOST := $(BUILD_DIR)/syntax_essentials_tests_host # ================= TARGETS ================= all: host $(BUILD_DIR): mkdir -p $(BUILD_DIR) # ---------------- HOST BUILD (static) ---------------- host: $(BUILD_DIR) $(SRC) $(TESTS) $(CC) $(CFLAGS) -static $(SRC) $(TESTS) -o $(OUT_HOST) $(LDFLAGS) @echo "[INFO] Host binary built: $(OUT_HOST)" # ---------------- ESP32 SIM ---------------- esp32_sim: host @echo "[INFO] Running ESP32-S3 simulation in minimal Docker..." docker build -t esp32-s3-sim . docker run --rm --memory=6m --cpus=0.2 esp32-s3-sim # ---------------- CLEAN ---------------- clean: rm -rf $(BUILD_DIR) # ---------------- INFO ---------------- info: @echo "Host compiler: $(CC)" @echo "Binary: $(OUT_HOST)" # ---------------- HELP ---------------- help: @echo "Available targets:" @echo " all / host - Build host binary (statically linked)" @echo " esp32_sim - Build host binary + run ESP32-S3 Docker simulation" @echo " clean - Remove build artifacts" @echo " info - Show compiler and binary info"