wgpu/Makefile

118 lines
3.3 KiB
Makefile
Raw Normal View History

2018-10-22 14:46:13 +00:00
RUST_BACKTRACE:=1
EXCLUDES:=
2019-06-05 00:39:58 +00:00
GENERATOR_PLATFORM:=
2019-05-18 20:12:38 +00:00
FFI_DIR:=ffi
BUILD_DIR:=build
CLEAN_FFI_DIR:=
CREATE_BUILD_DIR:=
2019-11-16 02:17:07 +00:00
WILDCARD_WGPU_NATIVE:=$(wildcard wgpu-native/**/*.rs wgpu-core/**/*.rs)
WILDCARD_WGPU_REMOTE:=$(wildcard wgpu-remote/**/*.rs wgpu-core/**/*.rs)
2019-07-28 16:42:17 +00:00
GIT_TAG=$(shell git describe --abbrev=0 --tags)
GIT_TAG_FULL=$(shell git describe --tags)
OS_NAME=
2018-10-22 14:46:13 +00:00
ifeq (,$(TARGET))
CHECK_TARGET_FLAG=
else
CHECK_TARGET_FLAG=--target $(TARGET)
endif
ifeq ($(OS),Windows_NT)
2019-05-18 20:12:38 +00:00
CLEAN_FFI_DIR=del $(FFI_DIR)\*.* /Q /S
CREATE_BUILD_DIR=mkdir $(BUILD_DIR)
2019-06-05 00:39:58 +00:00
GENERATOR_PLATFORM=-DCMAKE_GENERATOR_PLATFORM=x64
2018-10-22 14:46:13 +00:00
else
2019-05-18 20:12:38 +00:00
CLEAN_FFI_DIR=rm $(FFI_DIR)/**
CREATE_BUILD_DIR=mkdir -p $(BUILD_DIR)
2018-10-22 14:46:13 +00:00
endif
ifeq ($(OS),Windows_NT)
LIB_EXTENSION=dll
OS_NAME=windows
ZIP_TOOL=7z
else
UNAME_S:=$(shell uname -s)
ZIP_TOOL=zip
ifeq ($(UNAME_S),Linux)
LIB_EXTENSION=so
OS_NAME=linux
endif
ifeq ($(UNAME_S),Darwin)
LIB_EXTENSION=dylib
OS_NAME=macos
endif
endif
.PHONY: all check test doc clear \
example-compute example-triangle example-remote \
run-example-compute run-example-triangle run-example-remote \
lib-native lib-native-release \
2019-12-27 21:01:17 +00:00
lib-remote
2018-10-22 14:46:13 +00:00
2019-11-16 02:17:07 +00:00
#TODO: example-remote
2019-12-03 13:59:22 +00:00
all: example-compute example-triangle lib-remote
2018-10-22 14:46:13 +00:00
2019-12-27 21:01:17 +00:00
package: lib-native lib-native-release
mkdir -p dist
echo "$(GIT_TAG_FULL)" > dist/commit-sha
for RELEASE in debug release; do \
ARCHIVE=wgpu-$$RELEASE-$(OS_NAME)-$(GIT_TAG).zip; \
rm -f dist/$$ARCHIVE; \
if [ $(ZIP_TOOL) = zip ]; then \
2019-12-27 21:04:03 +00:00
zip -j dist/$$ARCHIVE target/$$RELEASE/libwgpu_*.$(LIB_EXTENSION) ffi/*.h dist/commit-sha; \
else \
7z a -tzip dist/$$ARCHIVE ./target/$$RELEASE/wgpu_*.$(LIB_EXTENSION) ./ffi/*.h ./dist/commit-sha; \
fi; \
done
2018-10-22 14:46:13 +00:00
check:
cargo check --all
test:
cargo test --all
2018-10-22 14:46:13 +00:00
doc:
cargo doc --all
clear:
cargo clean
2019-05-18 20:12:38 +00:00
$(CLEAN_FFI_DIR)
2018-10-22 14:46:13 +00:00
2019-07-28 16:42:17 +00:00
lib-native: Cargo.lock wgpu-native/Cargo.toml $(WILDCARD_WGPU_NATIVE)
2019-11-16 02:17:07 +00:00
cargo build --manifest-path wgpu-native/Cargo.toml
2018-10-22 14:46:13 +00:00
lib-native-release: Cargo.lock wgpu-native/Cargo.toml $(WILDCARD_WGPU_NATIVE)
cargo build --manifest-path wgpu-native/Cargo.toml --release
2019-11-16 02:17:07 +00:00
lib-remote: Cargo.lock wgpu-remote/Cargo.toml $(WILDCARD_WGPU_REMOTE)
cargo build --manifest-path wgpu-remote/Cargo.toml
$(FFI_DIR)/wgpu.h: wgpu-native/cbindgen.toml $(WILDCARD_WGPU_NATIVE)
rustup run nightly cbindgen -o $(FFI_DIR)/wgpu.h wgpu-native
2019-11-16 02:17:07 +00:00
$(FFI_DIR)/wgpu-remote.h: wgpu-remote/cbindgen.toml $(WILDCARD_WGPU_REMOTE)
rustup run nightly cbindgen -o $(FFI_DIR)/wgpu-remote.h wgpu-remote
2019-07-24 19:22:00 +00:00
example-compute: lib-native $(FFI_DIR)/wgpu.h examples/compute/main.c
cd examples/compute && $(CREATE_BUILD_DIR) && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. $(GENERATOR_PLATFORM) && cmake --build .
run-example-compute: example-compute
cd examples/compute/build && ./compute 1 2 3 4
2019-07-24 19:22:00 +00:00
example-triangle: lib-native $(FFI_DIR)/wgpu.h examples/triangle/main.c
cd examples/triangle && $(CREATE_BUILD_DIR) && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. $(GENERATOR_PLATFORM) && cmake --build .
run-example-triangle: example-triangle
cd examples/triangle/build && ./triangle
2019-07-24 19:22:00 +00:00
example-remote: lib-remote $(FFI_DIR)/wgpu-remote.h examples/remote/main.c
cd examples/remote && $(CREATE_BUILD_DIR) && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. $(GENERATOR_PLATFORM) && cmake --build .
run-example-remote: example-remote
cd examples/remote/build && ./remote