CC ?= cc
CPPFLAGS += -Iinclude -isystem /opt/vfio/include/vfio-user $(shell pkg-config --cflags json-c)
CFLAGS += -std=c11 -O2 -g -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion
LDLIBS += $(shell pkg-config --libs json-c) -L/opt/vfio/lib -lvfio-user
BUILD ?= /state/build
PHYSICAL_SOURCES = src/configuration.c src/diagnostics.c src/identity.c src/bridge.c src/controller.c src/pcie.c src/gpu.c src/lifecycle.c src/interrupt.c
SOURCES = $(PHYSICAL_SOURCES) src/main.c experiments/vfio_control.c experiments/write_capture.c

.PHONY: all
all: $(BUILD)/rx580-transport

$(BUILD)/rx580-transport: $(SOURCES) include/transport.h include/experiments.h
	mkdir -p $(BUILD)
	$(CC) $(CPPFLAGS) $(CFLAGS) $(SOURCES) $(LDLIBS) -o $@

$(BUILD)/dbi-aperture: $(PHYSICAL_SOURCES) experiments/dbi_aperture.c include/transport.h
	mkdir -p $(BUILD)
	$(CC) $(CPPFLAGS) $(CFLAGS) $(PHYSICAL_SOURCES) experiments/dbi_aperture.c $(LDLIBS) -o $@
