BUILD_PROFILE ?= debug CARGO_CMD ?= build WINDOWS_TARGET ?= x86_64-pc-windows-gnu UNIX_TARGET ?= x86_64-unknown-linux-gnu WINDOWS_ARTIFACT = ./target/$(WINDOWS_TARGET)/$(BUILD_PROFILE)/$(ARTIFACT).exe UNIX_ARTIFACT = ./target/$(UNIX_TARGET)/$(BUILD_PROFILE)/$(ARTIFACT) define cp_artifact $(if $(findstring build,$(CARGO_CMD)), @mkdir -p $(dir $(1)) @cp $(1) $(2) ) endef define cargo_windows_default $(if $(findstring upgrade,$(CARGO_CMD)), cargo $(CARGO_CMD) --$(BUILD_PROFILE), cargo $(CARGO_CMD) --$(BUILD_PROFILE) --target=$(WINDOWS_TARGET) $(call cp_artifact,$(WINDOWS_ARTIFACT), ../../../bin/$(ARTIFACT).exe) ) endef define cargo_unix_default $(if $(findstring upgrade,$(CARGO_CMD)), cargo $(CARGO_CMD) --$(BUILD_PROFILE), cargo $(CARGO_CMD) --$(BUILD_PROFILE) --target=$(UNIX_TARGET) $(call cp_artifact,$(UNIX_ARTIFACT), ../../../bin/$(ARTIFACT)) ) endef # Windows build requires "rustup target add x86_64-pc-windows-gnu" and "sudo apt-get install mingw-w64"