|
|
|
@@ -1,45 +1,84 @@ |
|
|
|
SUBDIR = triangle |
|
|
|
NAME = triangle |
|
|
|
CFLAGS = -std=c++17 --sysroot="$(SYSROOT)" -Wall |
|
|
|
LDFLAGS = -lvulkan -lpng |
|
|
|
|
|
|
|
ifeq ($(target), cheza) |
|
|
|
CXX = /usr/bin/armv7a-cros-linux-gnueabihf-clang++ |
|
|
|
CC = /usr/bin/armv7a-cros-linux-gnueabihf-clang |
|
|
|
SYSROOT = /build/cheza |
|
|
|
SSH_DUT = cheza |
|
|
|
TARGET = cheza |
|
|
|
else ifeq ($(target), atlas) |
|
|
|
CXX = /usr/bin/x86_64-cros-linux-gnu-clang++ |
|
|
|
CC = /usr/bin/x86_64-cros-linux-gnu-clang |
|
|
|
SYSROOT = /build/atlas |
|
|
|
SSH_DUT = atlas |
|
|
|
TARGET = atlas |
|
|
|
else ifeq ($(target), android) |
|
|
|
ANDROID_ROOT = ~/android |
|
|
|
SSH_DUT = android |
|
|
|
TRACE = False |
|
|
|
TARGET = android |
|
|
|
else ifeq ($(target), android-trace) |
|
|
|
ANDROID_ROOT = ~/android |
|
|
|
SSH_DUT = android |
|
|
|
TRACE = True |
|
|
|
TARGET = android |
|
|
|
else ifeq ($(target), local) |
|
|
|
CXX = clang++ |
|
|
|
CC = clang |
|
|
|
TARGET = local |
|
|
|
else |
|
|
|
CXX = INVALID |
|
|
|
CC = INVALID |
|
|
|
TARGET = INVALID |
|
|
|
endif |
|
|
|
|
|
|
|
NAME = triangle |
|
|
|
CFLAGS = -std=c++17 --sysroot="$(SYSROOT)" -Wall |
|
|
|
LDFLAGS = -lvulkan -lpng |
|
|
|
|
|
|
|
all: build deploy run |
|
|
|
all: shaders build deploy run |
|
|
|
|
|
|
|
build: check |
|
|
|
@echo Building... |
|
|
|
ifeq ($(TARGET), android) |
|
|
|
@NDK_PROJECT_PATH=. \ |
|
|
|
NDK_ROOT=${ANDROID_ROOT}/ndk/ \ |
|
|
|
TARGET_NAME=${NAME} \ |
|
|
|
COMPILE_ROOT=${ANDROID_ROOT}/compile \ |
|
|
|
${ANDROID_ROOT}/ndk/ndk-build NDK_APPLICATION_MK=./Application.mk |
|
|
|
else |
|
|
|
@$(CXX) $(CFLAGS) -o ${NAME} ${NAME}.cc $(LDFLAGS) |
|
|
|
endif |
|
|
|
|
|
|
|
deploy: check |
|
|
|
ifneq ($(target), local) |
|
|
|
@echo Deploying to $(SSH_DUT)... |
|
|
|
@scp ${NAME}.vert.spv $(SSH_DUT):~/${NAME}.vert.spv |
|
|
|
@scp ${NAME}.frag.spv $(SSH_DUT):~/${NAME}.frag.spv |
|
|
|
@scp ${NAME} $(SSH_DUT):~/ |
|
|
|
ifeq ($(TARGET), android) |
|
|
|
@adb push ${NAME}.vert.spv /data/vulkan/${SUBDIR}/${NAME}.vert.spv |
|
|
|
@adb push ${NAME}.frag.spv /data/vulkan/${SUBDIR}/${NAME}.frag.spv |
|
|
|
@adb push libs/arm64-v8a/${NAME} /data/vulkan/${SUBDIR}/ |
|
|
|
else ifneq ($(TARGET), local) |
|
|
|
@scp ${NAME}.vert.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.vert.spv |
|
|
|
@scp ${NAME}.frag.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.frag.spv |
|
|
|
@scp ${NAME} $(SSH_DUT):~/${SUBDIR}/ |
|
|
|
endif |
|
|
|
|
|
|
|
run: check |
|
|
|
ifneq ($(target), local) |
|
|
|
ifeq ($(TARGET), android) |
|
|
|
@echo Running on $(SSH_DUT)... |
|
|
|
ifeq ($(TRACE), True) |
|
|
|
@adb shell "cd /data/vulkan/${SUBDIR} && LD_PRELOAD=/data/vulkan/libwrap.so ./${NAME}" |
|
|
|
@echo Copying artifacts back to local device... |
|
|
|
@adb pull /data/vulkan/${SUBDIR}/${NAME}.png . |
|
|
|
@adb pull /sdcard/trace.rd . |
|
|
|
else |
|
|
|
@adb shell "cd /data/vulkan/${SUBDIR} && ./${NAME}" |
|
|
|
@echo Copying artifacts back to local device... |
|
|
|
@adb pull /data/vulkan/${SUBDIR}/${NAME}.png . |
|
|
|
endif |
|
|
|
else ifneq ($(TARGET), local) |
|
|
|
@echo Running on $(SSH_DUT)... |
|
|
|
@ssh $(SSH_DUT) '~/${NAME}' |
|
|
|
@ssh $(SSH_DUT) 'cd ~/${SUBDIR} && ./${NAME}' |
|
|
|
@echo Copying artifacts back to local device... |
|
|
|
@scp $(SSH_DUT):~/${NAME}.png . |
|
|
|
@scp $(SSH_DUT):~/${SUBDIR}/${NAME}.png . |
|
|
|
else |
|
|
|
@echo Running locally... |
|
|
|
@./$(NAME) |
|
|
|
@@ -54,11 +93,19 @@ clean: check |
|
|
|
@rm -f ${NAME}.png |
|
|
|
@rm -f ${NAME}.vert.spv |
|
|
|
@rm -f ${NAME}.frag.spv |
|
|
|
ifneq ($(target), local) |
|
|
|
@ssh $(SSH_DUT) 'rm -f ~/${NAME} ~/${NAME}.png' |
|
|
|
@rm -f trace.rd |
|
|
|
@rm -rf libs |
|
|
|
@rm -rf obj |
|
|
|
ifneq ($(TARGET), local) |
|
|
|
ifeq ($(TARGET), android) |
|
|
|
@adb shell rm /data/vulkan/${SUBDIR}/* |
|
|
|
else |
|
|
|
@ssh $(SSH_DUT) 'rm -f ~/${SUBDIR}/${NAME} ~/${SUBDIR}/${NAME}.vert.spv \ |
|
|
|
~/${SUBDIR}/${NAME}.frag.spv ~/${SUBDIR}/${NAME}.png' |
|
|
|
endif |
|
|
|
endif |
|
|
|
|
|
|
|
check: |
|
|
|
ifeq ($(CXX), INVALID) |
|
|
|
$(error $$target must be one of [atlas, cheza, local] ) |
|
|
|
ifeq ($(TARGET), INVALID) |
|
|
|
$(error $$target must be one of [atlas, cheza, android, android-trace, local]) |
|
|
|
endif |