49 lines
962 B
Makefile
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/*
|