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