Files
2026-10-22 14:09:30 +00:00

49 lines
962 B
Makefile

AS := as
LD := ld
ASFLAGS := --64
EXAMPLES := exit hello-world fizzbuzz
BINARIES := $(addprefix bin/,$(EXAMPLES))
.PHONY: build help run clean
## Build all binaries (default target)
build: $(BINARIES)
## Display this help screen
help:
@awk ' \
/^##/ { doc = substr($$0, 4); next } \
/^[a-zA-Z0-9_-]+:/ && doc { \
split($$1, target, ":"); \
printf "\033[36m%-20s\033[0m %s\n", target[1], doc; \
doc = "" \
} \
' $(MAKEFILE_LIST)
## Build the exit example
bin/exit: exit/exit.s
$(AS) $(ASFLAGS) -o $@.o $<
$(LD) -o $@ $@.o
rm -f $@.o
## Build the hello-world example
bin/hello-world: hello-world/hello.s
$(AS) $(ASFLAGS) -o $@.o $<
$(LD) -o $@ $@.o
rm -f $@.o
## Build the fizzbuzz example
bin/fizzbuzz: fizzbuzz/fizzbuzz.s
$(AS) $(ASFLAGS) -o $@.o $<
$(LD) -o $@ $@.o
rm -f $@.o
## Run the specified CMD example (use CMD="fizzbuzz")
run: clean bin/$(CMD)
./bin/$(CMD)
## Remove build artifacts
clean:
rm -f bin/*