.PHONY: help default

default: help

help:                 ## Print this help message
	@M=$$(perl -ne 'm/^((\w|-)*):.*##/ && print length($$1)."\n"' Makefile | \
		sort -nr | head -1) && \
		perl -ne "m/^((\w|-)*):.*##\s*(.*)/ && print(sprintf(\"%s: %s\t%s\n\", \$$1, \" \"x($$M-length(\$$1)), \$$3))" Makefile

hello32: hello32.s    ## Build the 32 bit version of Project 2
	nasm -f elf hello32.s
	ld -m elf_i386 -o hello32 hello32.o

hello64: hello64.s    ## Build the 32 bit version of Project 2
	nasm -f elf64 hello64.s
	ld -o hello64 hello64.o

counted-hello32: counted-hello32.s    ## Build the 32 bit version of Project 3
	nasm -f elf counted-hello32.s
	ld -m elf_i386 -o counted-hello32 counted-hello32.o

counted-hello64: counted-hello64.s    ## Build the 32 bit version of Project 3
	nasm -f elf64 counted-hello64.s
	ld -o counted-hello64 counted-hello64.o

subroutine-hello32: subroutine-hello32.s    ## Build the 32 bit version of Project 3
	nasm -f elf subroutine-hello32.s
	ld -m elf_i386 -o subroutine-hello32 subroutine-hello32.o

subroutine-hello64: subroutine-hello64.s    ## Build the 32 bit version of Project 3
	nasm -f elf64 subroutine-hello64.s
	ld -o subroutine-hello64 subroutine-hello64.o

clean:                ## Delete all built and intermediate features
	rm -f hello32 hello64 counted-hello32 counted-hello64 *.o