Makefile 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. ##
  2. # Copyright (C) 2020 Alibaba Group Holding Limited
  3. ##
  4. include ../.param
  5. CONFIG_BUILD_DRV_EXTRA_PARAM:=""
  6. CONFIG_BUILD_LIB_EXTRA_PARAM:=""
  7. CONFIG_BUILD_TST_EXTRA_PARAM:=""
  8. DIR_TARGET_BASE=bsp/gpu
  9. DIR_TARGET_LIB =bsp/gpu/lib
  10. DIR_TARGET_KO =bsp/gpu/ko
  11. DIR_TARGET_TEST=bsp/gpu/test
  12. MODULE_NAME=GPU
  13. BUILD_LOG_START="\033[47;30m>>> $(MODULE_NAME) $@ begin\033[0m"
  14. BUILD_LOG_END ="\033[47;30m<<< $(MODULE_NAME) $@ end\033[0m"
  15. export PATH+=:$(ROOT_DIR)/buildroot/output/host/bin
  16. #export WINDOW_SYSTEM=nulldrmws
  17. #export WINDOW_SYSTEM=xorg
  18. export WINDOW_SYSTEM=lws-generic
  19. #export WINDOW_SYSTEM=wayland
  20. #export WINDOW_SYSTEM=nullws
  21. export MIPS_ELF_ROOT=$(ROOT_DIR)/gpu_bxm_4_64/tools/mips-mti-elf/2014.07-1
  22. export SYSROOT=$(ROOT_DIR)/buildroot/output/host/opt/ext-toolchain/sysroot
  23. export DISCIMAGE=$(ROOT_DIR)/buildroot/output/host/opt/ext-toolchain/sysroot
  24. export KERNELDIR=$(ROOT_DIR)/buildroot/output/build/linux-custom
  25. export BUILD=debug
  26. #export BUILD=release
  27. export LINUX_ROOT=$(ROOT_DIR)/gpu_bxm_4_64
  28. export LLVM_BUILD_DIR=$(ROOT_DIR)/gpu_bxm_4_64/tools/llvm
  29. export RGX_BVNC=36.52.104.182
  30. export DRIVERDIR=rogue_km
  31. export LIBDIR=rogue
  32. #export CC=gcc
  33. #$(warning *****$(origin CC))
  34. #$(warning *****$(PATH))
  35. #
  36. # Do a parallel build with multiple jobs, based on the number of CPUs online
  37. # in this system: 'make -j8' on a 8-CPU system, etc.
  38. #
  39. # (To override it, run 'make JOBS=1' and similar.)
  40. #
  41. ifeq ($(JOBS),)
  42. JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)
  43. ifeq ($(JOBS),)
  44. JOBS := 1
  45. endif
  46. endif
  47. all: info driver lib test install_local_output install_rootfs
  48. .PHONY: info driver lib test install_local_output install_rootfs \
  49. install_addons clean_driver clean_lib clean_test clean_output clean
  50. info:
  51. @echo $(BUILD_LOG_START)
  52. @echo " ====== Build Info from repo project ======"
  53. @echo " BUILDROOT_DIR="$(BUILDROOT_DIR)
  54. @echo " CROSS_COMPILE="$(CROSS_COMPILE)
  55. @echo " LINUX_DIR="$(LINUX_DIR)
  56. @echo " ARCH="$(ARCH)
  57. @echo " BOARD_NAME="$(BOARD_NAME)
  58. @echo " KERNEL_ID="$(KERNELVERSION)
  59. @echo " KERNEL_DIR="$(LINUX_DIR)
  60. @echo " INSTALL_DIR_ROOTFS="$(INSTALL_DIR_ROOTFS)
  61. @echo " INSTALL_DIR_SDK="$(INSTALL_DIR_SDK)
  62. @echo " ====== Build configuration by settings ======"
  63. @echo " JOBS="$(JOBS)
  64. @echo $(BUILD_LOG_END)
  65. driver:
  66. @echo $(BUILD_LOG_START)
  67. make -C $(DRIVERDIR)/build/linux/thead_linux CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) BUILD=$(BUILD) RGX_BVNC=$(RGX_BVNC)
  68. @echo $(BUILD_LOG_END)
  69. clean_driver:
  70. @echo $(BUILD_LOG_START)
  71. make -C $(DRIVERDIR)/build/linux/thead_linux CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) BUILD=$(BUILD) RGX_BVNC=$(RGX_BVNC) clean
  72. @echo $(BUILD_LOG_END)
  73. prepare_lib:
  74. @bash ./tools/prepare.sh $(SYSROOT) $(KERNELDIR) $(DISCIMAGE)
  75. lib: prepare_lib
  76. @echo $(BUILD_LOG_START)
  77. make -C $(LIBDIR)/build/linux/thead_linux CROSS_COMPILE=$(TOOLCHAIN_PREFIX) ARCH=$(ARCH) BUILD=$(BUILD) RGX_BVNC=$(RGX_BVNC)
  78. @echo $(BUILD_LOG_END)
  79. clean_lib:
  80. @echo $(BUILD_LOG_START)
  81. make -C $(LIBDIR)/build/linux/thead_linux CROSS_COMPILE=$(TOOLCHAIN_PREFIX) ARCH=$(ARCH) BUILD=$(BUILD) RGX_BVNC=$(RGX_BVNC) clean
  82. @echo $(BUILD_LOG_END)
  83. test: lib driver
  84. @echo $(BUILD_LOG_START)
  85. @echo "Test cases are built when build lib"
  86. @echo $(BUILD_LOG_END)
  87. clean_test:
  88. @echo $(BUILD_LOG_START)
  89. @echo $(BUILD_LOG_END)
  90. install_driver:
  91. sudo -E make -C $(DRIVERDIR)/build/linux/thead_linux CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) BUILD=$(BUILD) RGX_BVNC=$(RGX_BVNC) kbuild_install
  92. install_lib:
  93. sudo -E make -C $(LIBDIR)/build/linux/thead_linux CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) BUILD=$(BUILD) RGX_BVNC=$(RGX_BVNC) install
  94. install_prepare:
  95. mkdir -p ./output/rootfs/$(DIR_TARGET_KO)
  96. mkdir -p ./output/rootfs/$(DIR_TARGET_LIB)
  97. mkdir -p ./output/rootfs/$(DIR_TARGET_TEST)
  98. install_addons: install_prepare install_driver install_lib
  99. @if [ -d addons/$(BOARD_NAME) ]; then \
  100. cp -rf addons/$(BOARD_NAME)/* ./output/rootfs/$(DIR_TARGET_BASE); \
  101. fi
  102. install_local_output: driver lib test install_addons
  103. @echo $(BUILD_LOG_START)
  104. find $(DRIVERDIR) -name "*.ko" | xargs -i cp -f {} ./output/rootfs/$(DIR_TARGET_KO)
  105. chmod +x ./output/rootfs/$(DIR_TARGET_KO)/*.sh
  106. find $(LIBDIR) -name "*.so*" | xargs -i cp -f {} ./output/rootfs/$(DIR_TARGET_LIB)
  107. cp -rf $(LIBDIR)/*/target_riscv64/* ./output/rootfs/$(DIR_TARGET_TEST)
  108. cp -rf $(LIBDIR)/*/target_neutral/*.txt ./output/rootfs/$(DIR_TARGET_TEST)
  109. cp -rf $(LIBDIR)/*/target_neutral/rgx.* ./output/rootfs/$(DIR_TARGET_TEST)
  110. cp -rf $(LIBDIR)/*/target_neutral/*pvr* ./output/rootfs/$(DIR_TARGET_TEST)
  111. rm -rf ./output/rootfs/$(DIR_TARGET_TEST)/*.so*
  112. rm -rf ./output/rootfs/$(DIR_TARGET_TEST)/*.a*
  113. rm -rf ./output/rootfs/$(DIR_TARGET_TEST)/*.sh
  114. @echo $(BUILD_LOG_END)
  115. install_rootfs: install_local_output
  116. @echo $(BUILD_LOG_START)
  117. # cp -rf output/rootfs/* $(INSTALL_DIR_ROOTFS)
  118. @echo $(BUILD_LOG_END)
  119. clean_output:
  120. @echo $(BUILD_LOG_START)
  121. rm -rf ./output
  122. rm -rf $(INSTALL_DIR_ROOTFS)/$(DIR_TARGET_BASE)
  123. @echo $(BUILD_LOG_END)
  124. clean: clean_output clean_driver clean_lib clean_test