From 2b0dad9d87b2b663ddc008876a4dbc3d17993d27 Mon Sep 17 00:00:00 2001 From: hachem Date: Tue, 25 Aug 2026 11:26:54 +0200 Subject: chore: refactor repository --- Makefile | 89 +++++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 37 deletions(-) (limited to 'Makefile') 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 -- cgit v1.3