INCDIR = inc
LIBDIR = lib
OUTDIR = out
EXEDIR = bin
WS = $(CURDIR)/xsdk_workspace

BOOT = $(OUTDIR)/BOOT.bin

.PHONY: all libs zybo boot run-virt-quad test clean deep-clean

all: libs bins

libs:
	$(MAKE) -C ../Unity/src
	$(MAKE) -C src/queue
	$(MAKE) -C src/computation_graph
	$(MAKE) -C src/graph_blocks
	$(MAKE) -C src/commands
	$(MAKE) -C src/quad_app

bins:
	$(MAKE) -C src/virt_quad
	$(MAKE) -C src/gen_diagram

# Currently does not work
zybo:
	bash scripts/build_zybo.sh

# For creating an image of the control network.
diagram:
	$(MAKE) -C src/gen_diagram diagram

# Currently does not work
boot: $(BOOT)

test: all
	$(MAKE) -C src/queue test
	$(MAKE) -C src/computation_graph test
	$(MAKE) -C src/quad_app test
	ruby scripts/ci-tests/test_memory_integrity.rb
	ruby scripts/ci-tests/test_safety_checks.rb
	ruby scripts/ci-tests/test_communication.rb

clean:
	rm -rf $(INCDIR) $(LIBDIR) $(OUTDIR) $(EXEDIR)
	$(MAKE) -C ../Unity/src clean
	$(MAKE) -C src/queue clean
	$(MAKE) -C src/computation_graph clean
	$(MAKE) -C src/graph_blocks clean
	$(MAKE) -C src/commands clean
	$(MAKE) -C src/quad_app clean

$(OUTDIR):
	mkdir $(OUTDIR)

# Currently does not work
$(BOOT): zybo | $(OUTDIR)
	bash scripts/xsdk/create_zybo_boot.sh