Add Makefile
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
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/*
|
||||||
Reference in New Issue
Block a user