build.mk 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. ##
  2. # Copyright (C) 2020 Alibaba Group Holding Limited
  3. ##
  4. include Makefile
  5. ifeq ($(BUILDROOT_DIR),)
  6. $(error BUILDROOT_DIR is empty)
  7. endif
  8. LINUX_DIR ?= $(BUILDROOT_DIR)/output/build/linux-custom
  9. TOOLCHAIN_DIR ?= $(BUILDROOT_DIR)/output/host/bin
  10. CROSS_COMPILE ?= ${TOOLCHAIN_DIR}/bin/riscv64-unknown-linux-gnu-
  11. export ARCH ?= riscv
  12. # if building the kernel module in-tree, these config options
  13. # should be put into a Kconfig file.
  14. # if building out-of-tree, defining them here is as good as any.
  15. # CONFIG_VHA: build the VHA driver
  16. export CONFIG_VHA := m
  17. # hardware options:
  18. # CONFIG_VHA_DUMMY: driver runs without hardware
  19. # CONFIG_VHA_THEAD_LIGHT_FPGA_C910: driver runs with T-Head Light-FPGA hw platform using a device tree
  20. # system configuration options
  21. # CONFIG_VHA_SYS_MIRAGE: driver runs with Mirage system configuration file. It is set by default when CONFIG_HW_AX2 is set.
  22. # CONFIG_VHA_SYS_AURA: driver runs with Aura system configuration file. It is set by default when CONFIG_HW_AX3 is set.
  23. # CONFIG_VHA_SYS_VAGUS: driver runs with Vagus system configuration file. Applicable when CONFIG_HW_AX3 is set.
  24. subdir-ccflags-y += -Wall -g
  25. EXTRA_CFLAGS :=
  26. # fail if target not specified
  27. ifeq ($(CONFIG_VHA_THEAD_LIGHT_FPGA_C910),y)
  28. EXTRA_CFLAGS += -DCONFIG_VHA_THEAD_LIGHT_FPGA_C910
  29. export CONFIG_NAME=CONFIG_VHA_THEAD_LIGHT_FPGA_C910
  30. export CONFIG_HW_AX3 := y
  31. else ifeq ($(CONFIG_VHA_THEAD_LIGHT),y)
  32. EXTRA_CFLAGS += -DCONFIG_VHA_THEAD_LIGHT
  33. export CONFIG_NAME=CONFIG_VHA_THEAD_LIGHT
  34. export CONFIG_HW_AX3 := y
  35. export CONFIG_VHA_LO_PRI_SUBSEGS := y
  36. else ifeq ($(CONFIG_VHA_DUMMY),y)
  37. export CONFIG_NAME=CONFIG_VHA_DUMMY
  38. export CONFIG_HW_AX3 := y
  39. else
  40. $(error no VHA platform specified. Try CONFIG_VHA_DUMMY=y or CONFIG_VHA_THEAD_XXX=y etc)
  41. endif
  42. #------------------------------------
  43. # for internal use
  44. #------------------------------------
  45. ifeq ($(KERNELRELEASE),)
  46. KDIR ?= $(LINUX_DIR)
  47. PWD := $(shell pwd)
  48. # Hardware layout
  49. ifeq ($(CONFIG_HW_AX2)$(CONFIG_HW_AX3),)
  50. $(info no HW layout specified. Defaulting to Mirage: CONFIG_HW_AX2=y. To build for Aura, please specify: CONFIG_HW_AX3=y)
  51. export CONFIG_HW_AX2 := y
  52. endif
  53. ifeq ($(CONFIG_HW_AX2), y)
  54. $(info Building Mirage target!)
  55. ifeq ($(CONFIG_VHA_SCF), y)
  56. $(error Safety cirtical features not supported by Mirage!)
  57. endif
  58. export CONFIG_VHA_MMU_MIRRORED_CTX ?= n
  59. ifeq ($(CONFIG_VHA_MMU_MIRRORED_CTX),)
  60. $(error Separate MMU contexts not supported by Mirage!)
  61. endif
  62. endif
  63. ifeq ($(CONFIG_HW_AX3), y)
  64. # Default OS target = 0
  65. export CONFIG_TARGET_OSID ?= 0
  66. $(info Building Aura/Vagus target for OS$(CONFIG_TARGET_OSID) !)
  67. export CONFIG_VHA_MMU_MIRRORED_CTX ?= y
  68. ifeq ($(CONFIG_VHA_MMU_MIRRORED_CTX),y)
  69. $(info Building Aura/Vagus target with mirrored mmu contexts!)
  70. else
  71. $(info Building Aura/Vagus target with separate mmu contexts!)
  72. endif
  73. # System config
  74. ifeq ($(CONFIG_VHA_SYS_AURA)$(CONFIG_VHA_SYS_VAGUS),)
  75. # $(info no system config specified. Defaulting to Aura: CONFIG_VHA_SYS_AURA=y. To build for Vagus, please specify: CONFIG_VHA_SYS_VAGUS=y)
  76. export CONFIG_VHA_SYS_AURA := y
  77. endif
  78. ifeq ($(CONFIG_VHA_SYS_VAGUS),)
  79. ifeq ($(CONFIG_VHA_SCF), y)
  80. # No safety critical features
  81. $(error Safety cirtical features not supported by Aura!)
  82. endif
  83. else
  84. # Safety critical features
  85. ifeq ($(CONFIG_VHA_SCF), y)
  86. $(info Building with Vagus safety cirtical features !)
  87. endif
  88. endif
  89. endif
  90. # kernel warning levels: as high as possible:
  91. # W=12 and W=123 seem to warn about linux kernel headers, so use W=1.
  92. KWARN := W=1
  93. ifneq (,$(shell which sparse))
  94. # C=1: use 'sparse' for extra warnings, if it is avail.
  95. SPARSE := C=1
  96. endif
  97. all: info modules
  98. @echo Build \"$(CONFIG_NAME)\" finished
  99. info:
  100. @echo
  101. @echo =====================================
  102. @echo ==== The build options are below ====
  103. @echo =====================================
  104. @echo CONFIG_NAME=$(CONFIG_NAME)
  105. @echo BUILDROOT_DIR=$(BUILDROOT_DIR)
  106. @echo LINUX_DIR=$(LINUX_DIR)
  107. # @echo PATH_TO_SYSROOT=$(PATH_TO_SYSROOT)
  108. @echo TOOLCHAIN_DIR=$(TOOLCHAIN_DIR)
  109. @echo CROSS_COMPILE=$(CROSS_COMPILE)
  110. @echo KDIR=$(KDIR)
  111. @echo ARCH=$(ARCH)
  112. @echo subdir-ccflags-y=$(subdir-ccflags-y)
  113. @echo EXTRA_CFLAGS=$(EXTRA_CFLAGS)
  114. @echo
  115. @echo CONFIG_VHA=$(CONFIG_VHA)
  116. @echo CONFIG_HW_AX3=$(CONFIG_HW_AX3)
  117. @echo CONFIG_TARGET_OSID=$(CONFIG_TARGET_OSID)
  118. @echo CONFIG_VHA_MMU_MIRRORED_CTX=$(CONFIG_VHA_MMU_MIRRORED_CTX)
  119. @echo CONFIG_VHA_SYS_MIRAGE=$(CONFIG_VHA_SYS_MIRAGE)
  120. @echo CONFIG_VHA_SYS_AURA=$(CONFIG_VHA_SYS_AURA)
  121. @echo CONFIG_VHA_SYS_VAGUS=$(CONFIG_VHA_SYS_VAGUS)
  122. @echo CONFIG_VHA_SCF=$(CONFIG_VHA_SCF)
  123. @echo CONFIG_VHA_NEXEF=$(CONFIG_VHA_NEXEF)
  124. @echo CONFIG_LOKI=$(CONFIG_LOKI)
  125. @echo =====================================
  126. @echo
  127. modules: info
  128. $(MAKE) -C $(KDIR) M=$(PWD) $(SPARSE) $(KWARN) EXTRA_CFLAGS="$(EXTRA_CFLAGS)" CROSS_COMPILE=$(CROSS_COMPILE)
  129. clean:
  130. if [ -d "$(KDIR)" ]; then \
  131. $(MAKE) -C $(KDIR) M=$(PWD) clean; \
  132. fi
  133. check:
  134. cd $(KDIR); scripts/checkpatch.pl -f `find $(PWD)/vha $(PWD)/include $(PWD)/img_mem -name "*\.[ch]"`
  135. endif # KERNELRELEASE