EXAMPLE_NAME := dummy

all: | start-sim attach finish-message

.PHONY: finish-message
finish-message:
	@echo "###################################################"
	@echo "Done. Device should be visible in your system now. Run 'make stop' to disconnect it."

.PHONY: start-sim
start-sim: build
	-$(MAKE) stop
	env RUST_LOG=debug cargo run --example $(EXAMPLE_NAME) &
	sleep 1

.PHONY: attach
attach: 
	lsmod | grep vhci-hcd || sudo modprobe vhci-hcd
	sudo usbip list -r "localhost"
	sudo usbip attach -r "localhost" -b "1-1"
	sudo usbip attach -r "localhost" -b "1-1"
	sleep 5

.PHONY: ci
ci:
	timeout 10 -k 5 $(MAKE)

.PHONY: build
build:
	 cargo build --example $(EXAMPLE_NAME)

.PHONY: build-clean
build-clean: | clean build

.PHONY: stop
stop:
	-sudo usbip detach -p "00"
	killall $(EXAMPLE_NAME)

.PHONY: setup-fedora
setup-fedora:
	sudo dnf install usbip clang-libs-13.0.0
	sudo ln -s /usr/lib64/libclang.so.13 /usr/lib64/libclang.so

.PHONY: clean
clean:
	cargo clean
	rm -r cargo-cache

.PHONY: build-docker
CMD=make -C /app/ build
build-docker:
	docker build -t usbip .
	mkdir -p cargo-cache
	docker run -it --rm -v $(PWD)/cargo-cache:/root/.cargo -v $(PWD):/app usbip $(CMD)
