hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 817247bd2eaa73439b5ad1a8550d88ef33eddd64 (plain)
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
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