CC       := g++
CPPFLAGS := -Ikernel-research/libxdk/include
CFLAGS   := -static
LDFLAGS  := -Lkernel-research/libxdk/lib
LDLIBS   := -lkernelXDK

TARGETS := exploit exploit_debug
SRC     := exploit.c

.PHONY: all prerequisites run clean

all: prerequisites exploit

prerequisites: target_db.kxdb kernel-research/libxdk/lib/libkernelXDK.a

target_db.kxdb:
	wget -O $@ https://storage.googleapis.com/kernelxdk/db/kernelctf.kxdb

kernel-research:
	git clone --depth 1 https://github.com/google/kernel-research.git $@

kernel-research/libxdk/lib/libkernelXDK.a: | kernel-research
	cd kernel-research/libxdk && ./build.sh

exploit: $(SRC)
	$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ $(LDFLAGS) $(LDLIBS)

exploit_debug: CFLAGS += -g
exploit_debug: $(SRC)
	$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ $(LDFLAGS) $(LDLIBS)

run: exploit
	./$<

clean:
	rm -rf $(TARGETS) target_db.kxdb kernel-research