.POSIX:

GDB=gdb
NASM=nasm
ASFLAGS=-gstabs
NASMFLAGS=-f elf64 -g -F stabs

all: nasm gas

nasm: nasm.o
	$(LD) -o $@ $^

gas: gas.o
	$(LD) -o $@ $^

.nasm.o:
	$(NASM) $(NASMFLAGS) -o $@ $^

check: gas nasm
	$(GDB) -q -ex "list _start" -ex "quit" gas
	$(GDB) -q -ex "list _start" -ex "quit" nasm

check_addr2line: gas nasm
	@addr=$$(objdump -d nasm | grep _start | cut -d' ' -f1); \
	addr2line -e gas "$$addr"; \
	addr2line -e nasm "$$addr"

index.md: nasm gas nasm.o gas.o nasm.nasm gas.s Makefile
	@for f in $^; do \
	    printf '* [%s](%s)\n' $$f $$f; \
	done > $@
	@cat $@
 
clean:
	$(RM) *.o gdb nasm index.md

.SUFFIXES:
.SUFFIXES: .nasm .s .o

.PHONY: all clean check
