Makefile 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. ##
  2. # Copyright (C) 2020 Alibaba Group Holding Limited
  3. ##
  4. test = $(shell if [ -f "../.param" ]; then echo "exist"; else echo "noexist"; fi)
  5. ifeq ("$(test)", "exist")
  6. include ../.param
  7. endif
  8. SDK_VER=v0.9
  9. # Configurations options
  10. CONFIG_DEBUG_MODE=0
  11. ROOTFS_INSTALL=0
  12. CONFIG_DUMMY_DRIVER=0
  13. # Board
  14. CONFIG_BOARD_LIGHT_FPGA_C910_ARRAY:=light_fpga_fm_c910 light-fm-fpga
  15. CONFIG_BOARD_LIGHT_ARRAY:=light-fm light-%
  16. ifneq ($(filter $(CONFIG_BOARD_LIGHT_FPGA_C910_ARRAY),$(BOARD_NAME)),)
  17. TARGET_NPU="IMG-AX3386"
  18. TARGE_CFG=CONFIG_VHA_THEAD_LIGHT_FPGA_C910=y
  19. else
  20. ifneq ($(filter $(CONFIG_BOARD_LIGHT_ARRAY),$(BOARD_NAME)),)
  21. TARGET_NPU="IMG-AX3386"
  22. TARGE_CFG=CONFIG_VHA_THEAD_LIGHT=y
  23. else
  24. $(error "Undefined target board:$(BOARD_NAME)")
  25. endif
  26. endif
  27. ifeq ($(CONFIG_DUMMY_DRIVER),1)
  28. TARGE_CFG=CONFIG_VHA_DUMMY=y
  29. endif
  30. CONFIG_BUILD_DRV_EXTRA_PARAM:=""
  31. ifeq ("$(BUILD_SYSTEM)","YOCTO_BUILD")
  32. export PATH_TO_SYSROOT=${SYSROOT_DIR}
  33. export TOOLSCHAIN_PATH=${TOOLCHAIN_DIR}
  34. export TOOLCHAIN_HOST=${CROSS_COMPILE}
  35. else
  36. export PATH_TO_SYSROOT=${BUILDROOT_DIR}/output/host/riscv64-buildroot-linux-gnu/sysroot
  37. export TOOLSCHAIN_PATH=${BUILDROOT_DIR}/output/host
  38. export TOOLCHAIN_HOST=${TOOLSCHAIN_PATH}/bin/riscv64-unknown-linux-gnu-
  39. endif
  40. export PATH_TO_BUILDROOT=$(BUILDROOT_DIR)
  41. DIR_TARGET_BASE=bsp/npu
  42. DIR_TARGET_KO =bsp/npu/ko
  43. MODULE_NAME=NPU
  44. BUILD_LOG_START="\033[47;30m>>> $(MODULE_NAME) $@ begin\033[0m"
  45. BUILD_LOG_END ="\033[47;30m<<< $(MODULE_NAME) $@ end\033[0m"
  46. #
  47. # Do a parallel build with multiple jobs, based on the number of CPUs online
  48. # in this system: 'make -j8' on a 8-CPU system, etc.
  49. #
  50. # (To override it, run 'make JOBS=1' and similar.)
  51. #
  52. ifeq ($(JOBS),)
  53. JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)
  54. ifeq ($(JOBS),)
  55. JOBS := 1
  56. endif
  57. endif
  58. all: info driver install_local install_rootfs
  59. .PHONY: info driver install_local install_rootfs \
  60. install_prepare clean_driver clean_local clean_rootfs clean
  61. info:
  62. @echo $(BUILD_LOG_START)
  63. @echo " ====== Build Info from repo project ======"
  64. @echo " BUILD_SYSTEM="$(BUILD_SYSTEM)
  65. @echo " BUILDROOT_DIR="$(BUILDROOT_DIR)
  66. @echo " SYSROOT_DIR="$(SYSROOT_DIR)
  67. @echo " CROSS_COMPILE="$(CROSS_COMPILE)
  68. @echo " LINUX_DIR="$(LINUX_DIR)
  69. @echo " ARCH="$(ARCH)
  70. @echo " BOARD_NAME="$(BOARD_NAME)
  71. @echo " KERNEL_ID="$(KERNELVERSION)
  72. @echo " KERNEL_DIR="$(LINUX_DIR)
  73. @echo " CC="$(CC)
  74. @echo " CXX="$(CXX)
  75. @echo " LD="$(LD)
  76. @echo " LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)
  77. @echo " rpath="$(rpath)
  78. @echo " rpath-link="$(rpath-link)
  79. @echo " INSTALL_DIR_ROOTFS="$(INSTALL_DIR_ROOTFS)
  80. @echo " INSTALL_DIR_SDK="$(INSTALL_DIR_SDK)
  81. @echo " ====== Build config by current module ======"
  82. @echo " TARGET_NPU="$(TARGET_NPU)
  83. @echo " CONFIG_DEBUG_MODE="$(CONFIG_DEBUG_MODE)
  84. @echo " TARGE_CFG="$(TARGE_CFG)
  85. @echo " CONFIG_BUILD_DRV_EXTRA_PARAM="$(CONFIG_BUILD_DRV_EXTRA_PARAM)
  86. @echo " SDK_VERSION="$(SDK_VER)
  87. @echo $(BUILD_LOG_END)
  88. driver:
  89. @echo $(BUILD_LOG_START)
  90. make -C driver -f build.mk $(TARGE_CFG)
  91. @echo $(BUILD_LOG_END)
  92. clean_driver:
  93. @echo $(BUILD_LOG_START)
  94. make -C driver -f build.mk $(TARGE_CFG) clean
  95. rm -rf ./output/rootfs/$(DIR_TARGET_KO)
  96. @echo $(BUILD_LOG_END)
  97. install_prepare:
  98. mkdir -p ./output/rootfs/$(DIR_TARGET_KO)
  99. install_local: driver install_prepare
  100. @echo $(BUILD_LOG_START)
  101. find ./driver -name "*.ko" | xargs -i cp -f {} ./output/rootfs/$(DIR_TARGET_KO)
  102. @if [ `command -v tree` != "" ]; then \
  103. tree ./output/rootfs; \
  104. fi
  105. @echo $(BUILD_LOG_END)
  106. install_rootfs: install_local
  107. @echo $(BUILD_LOG_START)
  108. @if [ $(ROOTFS_INSTALL) -eq 1 ]; then \
  109. mkdir -p $(INSTALL_DIR_ROOTFS)/$(DIR_TARGET_BASE); \
  110. rm -rf $(INSTALL_DIR_ROOTFS)/$(DIR_TARGET_BASE)/*; \
  111. cp -r output/rootfs/$(DIR_TARGET_BASE)/* $(INSTALL_DIR_ROOTFS)/$(DIR_TARGET_BASE); \
  112. fi
  113. @echo $(BUILD_LOG_END)
  114. clean_local:
  115. rm -rf ./output
  116. clean_rootfs:
  117. if [ -d "$(INSTALL_DIR_ROOTFS)/$(DIR_TARGET_BASE)" ]; then \
  118. rm -rf $(INSTALL_DIR_ROOTFS)/$(DIR_TARGET_BASE); \
  119. fi
  120. clean: clean_driver clean_local clean_rootfs