
default: all

AFLAGS := -Idtn/ -Iinc/ -Isrc/

ifneq ($(wildcard config.mk),)
include config.mk
endif

NASM ?= nasm
ZIP  ?= lzma
NAME ?= ltnv

include zflags.mk

%/:
	mkdir -p "$@"

MAIN := src/main.asm

AFILES := $(wildcard src/*.asm)
IFILES := $(wildcard inc/*.inc)
AFILEM := $(filter-out $(MAIN),$(AFILES))

bin/$(NAME).elf: $(MAIN) $(AFILEM) $(IFILES) bin/
	$(NASM) $(AFLAGS) $(ADEFS) -fbin -o"$@" "$<"
	@-chmod +x "$@"

obj/$(NAME).$(ZIP): bin/$(NAME).elf obj/
	$(ZIP) $(ZFLAGS) < "$<" > "$@"

bin/$(NAME): obj/$(NAME).$(ZIP) src/stub/pre $(POSTSTUB)
ifneq ($(NOSTUB),)
	cat "$<" > "$@"
else
	echo -n "$(ZCAT)" > obj/$(NAME)_zcat
	cat src/stub/pre obj/$(NAME)_zcat "$(POSTSTUB)" "$<" > "$@"
endif
	@-chmod +x "$@"

all: bin/$(NAME).elf obj/$(NAME).$(ZIP) bin/$(NAME)
	@-wc -c $^

test: all
	-bin/$(NAME).elf
strace: all
	-strace -f bin/$(NAME).elf

clean:
	@-rm -rvf bin/ obj/

.PHONY: all test clean strace

