Makefile 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. user_sub_dirs = apps
  2. DADK_VERSION=$(shell dadk -V | awk 'END {print $$2}')
  3. # 最小的DADK版本
  4. MIN_DADK_VERSION = 0.2.0
  5. DADK_CACHE_DIR = $(ROOT_PATH)/bin/$(ARCH)/dadk_cache
  6. SYSROOT_DIR = $(ROOT_PATH)/bin/$(ARCH)/sysroot
  7. DADK_MANIFEST_PATH = $(ROOT_PATH)/oscomp/manifest-${ARCH}.toml
  8. ECHO:
  9. @echo "$@"
  10. install_dadk:
  11. # 如果未安装
  12. ifeq ("$(DADK_VERSION)", "")
  13. @echo "\ndadk is not installed."
  14. @echo "Please install dadk $(MIN_DADK_VERSION) or higher version"
  15. @echo "\nYou can install dadk by running the following command:"
  16. @echo "\n\tcargo install dadk"
  17. @echo "\nOr you can install dadk from source by running the following command:"
  18. @echo "\n\tcargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v$(MIN_DADK_VERSION)"
  19. @echo "\n"
  20. @echo "Auto installing dadk..."
  21. cargo install dadk
  22. else
  23. # 如果DADK版本过低,则自动更新
  24. @echo "dadk version $(DADK_VERSION) installed"
  25. # 如果DADK版本过低,则自动更新
  26. ifneq ($(shell printf '%s\n%s' "$(DADK_VERSION)" "$(MIN_DADK_VERSION)" | sort -V | head -n1), $(MIN_DADK_VERSION))
  27. @echo "dadk version is too low, please update to $(MIN_DADK_VERSION) or higher version"
  28. @echo "Updating dadk..."
  29. cargo install --git https://git.mirrors.dragonos.org.cn/DragonOS-Community/DADK.git --tag v$(MIN_DADK_VERSION) || (echo "dadk update failed" && exit 1)
  30. @echo "dadk updated"
  31. endif
  32. endif
  33. DADK = $(shell which dadk) --manifest $(DADK_MANIFEST_PATH)
  34. .PHONY: dadk_run
  35. dadk_run: install_dadk
  36. mkdir -p $(DADK_CACHE_DIR)
  37. $(DADK) user build -w $(ROOT_PATH)
  38. $(DADK) user install -w $(ROOT_PATH)
  39. .PHONY: dadk_clean
  40. dadk_clean: install_dadk
  41. @echo dadk_clean
  42. all:
  43. mkdir -p $(SYSROOT_DIR)
  44. $(MAKE) dadk_run
  45. $(MAKE) copy_sysconfig
  46. @echo 用户态程序编译完成
  47. .PHONY: copy_sysconfig
  48. copy_sysconfig:
  49. cp -r sysconfig/* $(SYSROOT_DIR)
  50. .PHONY: clean
  51. clean:
  52. $(MAKE) dadk_clean
  53. @list='$(user_sub_dirs)'; for subdir in $$list; do \
  54. echo "Clean in dir: $$subdir";\
  55. cd $$subdir && $(MAKE) clean;\
  56. cd .. ;\
  57. done
  58. .PHONY: fmt
  59. fmt:
  60. FMT_CHECK=$(FMT_CHECK) $(MAKE) -C apps fmt