portability/Makefile

61 lines
1.3 KiB
Makefile
Raw Normal View History

2017-09-06 22:01:58 -04:00
VULKAN_DIR=modules/vulkan-docs/src
2017-09-06 21:34:41 -04:00
BINDING=target/vulkan.rs
NATIVE_DIR=target/native
TARGET=$(NATIVE_DIR)/test
2017-12-07 22:29:14 +01:00
OBJECTS=$(NATIVE_DIR)/test.o $(NATIVE_DIR)/window.o
2018-03-01 22:04:47 -05:00
LIB_EXTENSION=
RUST_BACKTRACE:=1
BACKEND:=gl
2017-12-01 00:50:59 +01:00
CC=g++
2017-12-07 22:29:14 +01:00
CFLAGS=-std=c++11 -ggdb -O0 -I$(VULKAN_DIR)
2017-09-06 22:01:58 -04:00
DEPS=
2018-03-01 22:04:47 -05:00
LDFLAGS=
ifeq ($(OS),Windows_NT)
LDFLAGS=
BACKEND=dx12
LIB_EXTENSION=dll
else
UNAME_S:=$(shell uname -s)
ifeq ($(UNAME_S),Linux)
LDFLAGS=-lpthread -ldl -lm -lX11 -lxcb
BACKEND=vulkan
LIB_EXTENSION=so
endif
ifeq ($(UNAME_S),Darwin)
LDFLAGS=-lpthread -ldl -lm
BACKEND=metal
LIB_EXTENSION=dylib
endif
endif
LIBRARY=target/debug/libportability.$(LIB_EXTENSION)
2017-09-06 22:01:58 -04:00
2017-09-12 12:27:01 -04:00
.PHONY: all binding run
2017-09-06 21:34:41 -04:00
all: $(TARGET)
2017-09-12 12:27:01 -04:00
binding: $(BINDING)
2017-09-06 22:01:58 -04:00
$(BINDING): $(VULKAN_DIR)/vulkan/*.h
bindgen --no-layout-tests --rustfmt-bindings $(VULKAN_DIR)/vulkan/vulkan.h -o $(BINDING)
$(LIBRARY): libportability/src/*.rs libportability-gfx/src/*.rs Cargo.toml libportability-gfx/Cargo.toml $(wildcard Cargo.lock)
2018-03-01 22:04:47 -05:00
cargo build --manifest-path libportability/Cargo.toml --features $(BACKEND)
2017-09-06 21:34:41 -04:00
mkdir -p target/native
2017-12-01 00:50:59 +01:00
$(NATIVE_DIR)/%.o: native/%.cpp $(DEPS) Makefile
2017-09-06 21:34:41 -04:00
$(CC) -c -o $@ $< $(CFLAGS)
2017-11-06 21:57:32 -05:00
$(TARGET): $(LIBRARY) $(OBJECTS) Makefile
2017-12-01 00:50:59 +01:00
$(CC) -o $(TARGET) $(OBJECTS) $(LIBRARY) $(LDFLAGS)
2017-09-06 21:34:41 -04:00
run: $(TARGET)
$(TARGET)
clean:
2017-09-06 21:34:41 -04:00
rm -f $(OBJECTS) $(TARGET) $(BINDING)
cargo clean