hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-25 11:26:54 +0200
committerhachem <im@hachem.wtf>2026-08-25 11:26:54 +0200
commit2b0dad9d87b2b663ddc008876a4dbc3d17993d27 (patch)
tree7394aef05e1ca7c0518a0f7ff6d785c0304e1863 /Makefile
parent2806ed7d55266ececb197196af2fb84ae8c3cb35 (diff)
chore: refactor repository
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile89
1 files changed, 52 insertions, 37 deletions
diff --git a/Makefile b/Makefile
index 9faa0fb..817247b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,37 +1,52 @@
-NASM ?= nasm
-LD ?= ld
-
-SRC_DIR := src
-BUILD_DIR := build
-
-NASMFLAGS ?= -f elf64
-LDFLAGS ?= -m elf_x86_64
-
-DAYS := Day1 Day2 Day3 Day4 Day5 Day6 \
- Day7 Day8 Day9 Day10 Day11 Day12
-BINARIES := $(addprefix $(BUILD_DIR)/,$(DAYS))
-
-.PHONY: all clean list
-.PHONY: day% run-day%
-
-all: $(BINARIES)
-
-$(BUILD_DIR):
- @mkdir -p $(BUILD_DIR)
-
-$(BUILD_DIR)/Day%.o: $(SRC_DIR)/Day%.asm | $(BUILD_DIR)
- @$(NASM) $(NASMFLAGS) $< -o $@
-
-$(BUILD_DIR)/Day%: $(BUILD_DIR)/Day%.o
- @$(LD) $(LDFLAGS) -o $@ $<
-
-day%: $(BUILD_DIR)/Day%
-run-day%: $(BUILD_DIR)/Day%
- @./$<
-
-list:
- @printf "Available days:\n"
- @for day in $(DAYS); do echo " $$day"; done
-
-clean:
- rm -rf $(BUILD_DIR)
+NASM ?= nasm
+LD ?= ld
+
+YEAR ?= 2025
+DAY ?=
+
+SRC_DIR := aoc-$(YEAR)
+BUILD_DIR := build/aoc-$(YEAR)
+
+NASMFLAGS ?= -f elf64
+LDFLAGS ?= -m elf_x86_64
+
+DAYS := $(basename $(notdir $(wildcard $(SRC_DIR)/day*.asm)))
+BINARIES := $(addprefix $(BUILD_DIR)/,$(DAYS))
+
+.PHONY: all clean list run
+
+all: $(BINARIES)
+
+$(BUILD_DIR):
+ @mkdir -p $@
+
+$(BUILD_DIR)/%.o: $(SRC_DIR)/%.asm | $(BUILD_DIR)
+ @$(NASM) $(NASMFLAGS) $< -o $@
+
+$(BUILD_DIR)/%: $(BUILD_DIR)/%.o
+ @$(LD) $(LDFLAGS) -o $@ $<
+
+run:
+ifndef DAY
+ $(error DAY is required, e.g. make run DAY=3)
+endif
+ @$(MAKE) --no-print-directory $(BUILD_DIR)/day$(DAY)
+ @./$(BUILD_DIR)/day$(DAY)
+
+list:
+ @printf "\033[1;36mAdvent of Code %s\033[0m\n\n" "$(YEAR)"
+ @count=0; \
+ for day in $(DAYS); do \
+ number=$${day#day}; \
+ printf " \033[1;33mDay %02d\033[0m" "$$number"; \
+ count=$$((count + 1)); \
+ if [ $$((count % 5)) -eq 0 ]; then \
+ printf "\n"; \
+ else \
+ printf " "; \
+ fi; \
+ done
+ @printf "\n"
+
+clean:
+ rm -rf build