diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 89 |
1 files changed, 52 insertions, 37 deletions
@@ -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 |
