asmopt = -O0
copt = -O0 -Wall -Wextra -std=c23
deps = 
ldflags = -lbu

.PHONY: all clean

all: clean runlock

runlock-asm: runlock-asm.o util.o hash.o arcfour.o
	ld $^ -o $@

runlock: tmp.bin runlock-c.o crypto.o hash.o arcfour.o util.o
	cc $(copt) $(^:tmp.bin=) $(deps) -o $@ $(ldflags)

tmp.bin: runlock.asm util.asm util.asmh hash.asm arcfour.asm gensc
	rm -f tmp.bin tmp.asm
	chmod 755 ./mkbuild.sh
	./mkbuild.sh
	nasm -f bin tmp.asm -o tmp.bin
	rm -f shellcode.h
	./gensc ./tmp.bin > shellcode.h

gensc: gensc.o
	cc $(copt) $^ $(deps) -o $@ $(ldflags)

gensc.o: gensc.c
	cc $(copt) -c $< -o $@

arcfour.o: arcfour.asm util.asmh
	nasm -f elf $< -o $@

crypto.o: crypto.c crypto.h
	cc $(copt) -c $< -o $@

hash.o: hash.asm util.asmh
	nasm -f elf $< -o $@

util.o: util.asm util.asmh
	nasm -f elf $< -o $@

runlock-asm.o: runlock.asm
	nasm -f elf $(asmopt) $< -o $@

runlock-c.o: runlock.c
	cc $(copt) -c $< -o $@

clean:
	rm -f runlock gensc shellcode.h tmp.bin tmp.asm *.o
