linux.mk 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. LINUX_NAME=linux
  2. LINUX_REPO_DIR=$(CONFIG_LINUX_REPO_PATH)
  3. ifeq ($(CONFIG_LINUX_INSTALL_SUDO),y)
  4. _INSTALL_SUDO=sudo
  5. endif
  6. ifeq ($(CONFIG_LINUX_BUILD_IN_TMPFS),y)
  7. LINUX_BUILD_IN_TMPFS=/tempfs
  8. endif
  9. LINUX_SRC_DIR=$(SDK_BUILD_DIR)$(LINUX_BUILD_IN_TMPFS)/kernel/$(LINUX_NAME)
  10. LINUX_INSTALL_DIR=$(SDK_OUTPUT_DIR)/kernel/$(LINUX_NAME)
  11. linux_update:
  12. @$(call fetch_remote, $(LINUX_REPO_DIR), $(CONFIG_LINUX_GIT_REMOTE))
  13. #==============================================================================
  14. # Build the Linux kernel for some board.
  15. #==============================================================================
  16. _BOARD_LINUX_SRC_DIR=$(join $(LINUX_SRC_DIR), $(CONFIG_BOARD_SUBFIX))
  17. _BOARD_LINUX_INSTALL_DIR=$(join $(LINUX_INSTALL_DIR), $(CONFIG_BOARD_SUBFIX))
  18. #$(1) linux src dir
  19. #$(2) build_env
  20. #$(3) des rootfs
  21. define linux_install_modules
  22. pushd $(1); \
  23. $(_INSTALL_SUDO) mkdir -p $(3)/; \
  24. $(_INSTALL_SUDO) $(2) $(MAKE) $(join INSTALL_MOD_PATH=, $(3)/) modules_install; \
  25. popd; \
  26. sync
  27. endef
  28. #$(1) linux src dir
  29. #$(2) build_env
  30. #$(3) des rootfs
  31. define linux_install_zimage
  32. pushd $(1); \
  33. $(_INSTALL_SUDO) mkdir -p $(3)/boot; \
  34. $(_INSTALL_SUDO) $(2) $(MAKE) $(join INSTALL_PATH=, $(3)/boot) zinstall; \
  35. popd; \
  36. sync
  37. endef
  38. #$(1) linux src dir
  39. #$(2) build_env
  40. #$(3) des rootfs
  41. #$(4) kernel version string
  42. define linux_install_dtbs
  43. pushd $(1); \
  44. $(_INSTALL_SUDO) mkdir -p $(3)/boot/dtb$(4); \
  45. $(_INSTALL_SUDO) $(2) $(MAKE) $(join INSTALL_DTBS_PATH=, $(3)/boot/dtb$(4)) dtbs_install;\
  46. popd; \
  47. sync
  48. endef
  49. _board_linux_checkout_with_check:
  50. OVERWRITED_CHK=Y;\
  51. $(call checkout_src_full, $(LINUX_REPO_DIR),\
  52. $(CONFIG_LINUX_GIT_REMOTE) \
  53. $(CONFIG_LINUX_GIT_RBRANCH), \
  54. $(CONFIG_LINUX_GIT_LBRANCH), \
  55. $(_BOARD_LINUX_SRC_DIR),)
  56. _board_linux_checkout:
  57. $(call checkout_src_full, $(LINUX_REPO_DIR),\
  58. $(CONFIG_LINUX_GIT_REMOTE) \
  59. $(CONFIG_LINUX_GIT_RBRANCH), \
  60. $(CONFIG_LINUX_GIT_LBRANCH), \
  61. $(_BOARD_LINUX_SRC_DIR),)
  62. _board_linux_devel:
  63. $(call devel_init, $(_BOARD_LINUX_SRC_DIR))
  64. _board_linux_defconfig:
  65. $(call build_target, $(_BOARD_LINUX_SRC_DIR), \
  66. $(CROSS_COMPILE_RV64_ENV), \
  67. $(CONFIG_LINUX_BUILD_TARGET)_defconfig)
  68. _board_linux_menuconfig:
  69. $(call build_target, $(_BOARD_LINUX_SRC_DIR), \
  70. $(CROSS_COMPILE_RV64_ENV), \
  71. menuconfig)
  72. _board_linux_mkdefconfig:
  73. $(call build_target, $(_BOARD_LINUX_SRC_DIR), \
  74. $(CROSS_COMPILE_RV64_ENV), \
  75. savedefconfig)
  76. # cd $(_BOARD_LINUX_SRC_DIR); \
  77. # mv defconfig arch/riscv/configs/starfive_jh7100_visionfive_fedora_defconfig
  78. _board_linux_build_dtbs:
  79. $(call build_target, $(_BOARD_LINUX_SRC_DIR), \
  80. $(CROSS_COMPILE_RV64_ENV), \
  81. dtbs)
  82. _board_linux_install_dtbs:
  83. $(call linux_install_dtbs, \
  84. $(_BOARD_LINUX_SRC_DIR), \
  85. $(CROSS_COMPILE_RV64_ENV), \
  86. $(_BOARD_LINUX_INSTALL_DIR))
  87. _board_linux_build_all_silent:
  88. SILENT_BUILD=Y; \
  89. $(call build_target_log, $(_BOARD_LINUX_SRC_DIR), \
  90. $(CROSS_COMPILE_RV64_ENV),)
  91. _board_linux_build_all:
  92. $(call build_target_log, $(_BOARD_LINUX_SRC_DIR), \
  93. $(CROSS_COMPILE_RV64_ENV),)
  94. _board_linux_clean:
  95. $(call build_target, $(_BOARD_LINUX_SRC_DIR), \
  96. $(CROSS_COMPILE_RV64_ENV), \
  97. clean)
  98. _board_linux_install_zimage:
  99. $(call linux_install_zimage, \
  100. $(_BOARD_LINUX_SRC_DIR), \
  101. $(CROSS_COMPILE_RV64_ENV), \
  102. $(_BOARD_LINUX_INSTALL_DIR))
  103. _board_linux_install_modules:
  104. $(call linux_install_modules, \
  105. $(_BOARD_LINUX_SRC_DIR), \
  106. $(CROSS_COMPILE_RV64_ENV), \
  107. $(_BOARD_LINUX_INSTALL_DIR))
  108. _board_linux_install_all: _board_linux_install_zimage _board_linux_install_modules _board_linux_install_dtbs
  109. _board_linux_all: _board_linux_checkout _board_linux_defconfig _board_linux_menuconfig _board_linux_build_all _board_linux_install_all