RUST_BACKTRACE:=1 EXCLUDES:= FEATURE_RUST:= FEATURE_NATIVE:= ifeq (,$(TARGET)) CHECK_TARGET_FLAG= else CHECK_TARGET_FLAG=--target $(TARGET) endif ifeq ($(OS),Windows_NT) ifeq ($(TARGET),x86_64-pc-windows-gnu) FEATURE_RUST=vulkan FEATURE_NATIVE=gfx-backend-vulkan else FEATURE_RUST=dx12 FEATURE_NATIVE=gfx-backend-dx12 endif else UNAME_S:=$(shell uname -s) ifeq ($(UNAME_S),Linux) FEATURE_RUST=vulkan FEATURE_NATIVE=gfx-backend-vulkan endif ifeq ($(UNAME_S),Darwin) FEATURE_RUST=metal FEATURE_NATIVE=gfx-backend-metal endif endif .PHONY: all check test doc clear lib-native lib-rust examples-native examples-rust all: examples-native examples-rust check: cargo check --all test: cargo test --all --features "$(FEATURE_NATIVE) $(FEATURE_RUST)" doc: cargo doc --all clear: cargo clear rm wgpu-bindings/wgpu.h lib-native: Cargo.lock wgpu-native/Cargo.toml $(wildcard wgpu-native/**/*.rs) cargo build --manifest-path wgpu-native/Cargo.toml --features $(FEATURE_NATIVE) lib-rust: Cargo.lock wgpu-rs/Cargo.toml $(wildcard wgpu-rs/**/*.rs) cargo build --manifest-path wgpu-rs/Cargo.toml --features $(FEATURE_RUST) wgpu-bindings/wgpu.h: Cargo.lock wgpu-bindings/src/*.rs lib-native cargo +nightly run --manifest-path wgpu-bindings/Cargo.toml examples-native: lib-native wgpu-bindings/wgpu.h $(wildcard wgpu-native/**/*.c) $(MAKE) -C examples examples-rust: lib-rust examples/Cargo.toml $(wildcard wgpu-native/**/*.rs) cargo build --manifest-path examples/Cargo.toml --bin hello_triangle --features $(FEATURE_RUST)