You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. SUBDIR = tess
  2. NAME = tess
  3. CFLAGS = -std=c++17 --sysroot="$(SYSROOT)" -Wall
  4. LDFLAGS = -lvulkan -lpng
  5. TRACE = False
  6. ifeq ($(target),$(filter $(target), cheza cheza-trace))
  7. CXX = /usr/bin/armv7a-cros-linux-gnueabihf-clang++
  8. CC = /usr/bin/armv7a-cros-linux-gnueabihf-clang
  9. SYSROOT = /build/cheza
  10. SSH_DUT = cheza
  11. TARGET = cheza
  12. ifeq ($(target), cheza-trace)
  13. TRACE = True
  14. endif
  15. else ifeq ($(target), atlas)
  16. CXX = /usr/bin/x86_64-cros-linux-gnu-clang++
  17. CC = /usr/bin/x86_64-cros-linux-gnu-clang
  18. SYSROOT = /build/atlas
  19. SSH_DUT = atlas
  20. TARGET = atlas
  21. else ifeq ($(target), android)
  22. ANDROID_ROOT = ~/android
  23. SSH_DUT = android
  24. TARGET = android
  25. else ifeq ($(target), android-trace)
  26. ANDROID_ROOT = ~/android
  27. SSH_DUT = android
  28. TRACE = True
  29. TARGET = android
  30. else ifeq ($(target), local)
  31. CXX = clang++
  32. CC = clang
  33. TARGET = local
  34. else
  35. CXX = INVALID
  36. CC = INVALID
  37. TARGET = INVALID
  38. endif
  39. all: shaders build deploy run
  40. build: check
  41. @echo Building...
  42. ifeq ($(TARGET), android)
  43. @NDK_PROJECT_PATH=. \
  44. NDK_ROOT=${ANDROID_ROOT}/ndk/ \
  45. TARGET_NAME=${NAME} \
  46. COMPILE_ROOT=${ANDROID_ROOT}/compile \
  47. ${ANDROID_ROOT}/ndk/ndk-build NDK_APPLICATION_MK=./Application.mk
  48. else
  49. @$(CXX) $(CFLAGS) -o ${NAME} ${NAME}.cc $(LDFLAGS)
  50. endif
  51. deploy: check
  52. @echo Deploying to $(SSH_DUT)...
  53. ifeq ($(TARGET), android)
  54. @adb push ${NAME}.vert.spv /data/vulkan/${SUBDIR}/${NAME}.vert.spv
  55. @adb push ${NAME}.tesc.spv /data/vulkan/${SUBDIR}/${NAME}.tesc.spv
  56. @adb push ${NAME}.tese.spv /data/vulkan/${SUBDIR}/${NAME}.tese.spv
  57. @adb push ${NAME}.frag.spv /data/vulkan/${SUBDIR}/${NAME}.frag.spv
  58. @adb push libs/arm64-v8a/${NAME} /data/vulkan/${SUBDIR}/
  59. else ifneq ($(TARGET), local)
  60. @scp ${NAME}.vert.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.vert.spv
  61. @scp ${NAME}.tesc.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.tesc.spv
  62. @scp ${NAME}.tese.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.tese.spv
  63. @scp ${NAME}.frag.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.frag.spv
  64. @scp ${NAME} $(SSH_DUT):~/${SUBDIR}/
  65. endif
  66. run: check
  67. ifeq ($(TARGET), android)
  68. @echo Running on $(SSH_DUT)...
  69. ifeq ($(TRACE), True)
  70. @adb shell "cd /data/vulkan/${SUBDIR} && LD_PRELOAD=/data/vulkan/libwrap.so ./${NAME}"
  71. @echo Copying artifacts back to local device...
  72. @adb pull /data/vulkan/${SUBDIR}/${NAME}.png .
  73. @adb pull /sdcard/trace.rd .
  74. else
  75. @adb shell "cd /data/vulkan/${SUBDIR} && ./${NAME}"
  76. @echo Copying artifacts back to local device...
  77. @adb pull /data/vulkan/${SUBDIR}/${NAME}.png .
  78. endif
  79. else ifneq ($(TARGET), local)
  80. @echo Running on $(SSH_DUT)...
  81. ifeq ($(TRACE), True)
  82. @ssh -tt $(SSH_DUT) "~/trace.sh 'cd ~/${SUBDIR} && ./${NAME}'"
  83. @echo Copying artifacts back to local device...
  84. @scp $(SSH_DUT):~/${SUBDIR}/${NAME}.png .
  85. @scp $(SSH_DUT):/tmp/trace.rd .
  86. else
  87. @ssh -tt $(SSH_DUT) 'cd ~/${SUBDIR} && ./${NAME}'
  88. @echo Copying artifacts back to local device...
  89. @scp $(SSH_DUT):~/${SUBDIR}/${NAME}.png .
  90. endif
  91. else
  92. @echo Running locally...
  93. @./$(NAME)
  94. endif
  95. shaders:
  96. @glslc -c ${NAME}.vert
  97. @glslc -c ${NAME}.tesc
  98. @glslc -c ${NAME}.tese
  99. @glslc -c ${NAME}.frag
  100. clean: check
  101. @rm -f ${NAME}
  102. @rm -f ${NAME}.png
  103. @rm -f ${NAME}.vert.spv
  104. @rm -f ${NAME}.tesc.spv
  105. @rm -f ${NAME}.tese.spv
  106. @rm -f ${NAME}.frag.spv
  107. @rm -f trace.rd
  108. @rm -rf libs
  109. @rm -rf obj
  110. ifneq ($(TARGET), local)
  111. ifeq ($(TARGET), android)
  112. @adb shell rm /data/vulkan/${SUBDIR}/*
  113. else
  114. @ssh $(SSH_DUT) 'rm -f ~/${SUBDIR}/${NAME} ~/${SUBDIR}/${NAME}.vert.spv \
  115. ~/${SUBDIR}/${NAME}.tesc.spv ~/${SUBDIR}/${NAME}.tese.spv \
  116. ~/${SUBDIR}/${NAME}.frag.spv ~/${SUBDIR}/${NAME}.png'
  117. endif
  118. endif
  119. check:
  120. ifeq ($(TARGET), INVALID)
  121. $(error $$target must be one of [atlas, cheza, cheza-trace, android, android-trace, local])
  122. endif