kernel.mk 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #
  2. # Copyright (C) 2006 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. ifeq ($(DUMP),1)
  8. KERNEL:=<KERNEL>
  9. BOARD:=<BOARD>
  10. LINUX_VERSION:=<LINUX_VERSION>
  11. else
  12. include $(TOPDIR)/.kernel.mk
  13. include $(INCLUDE_DIR)/target.mk
  14. # check to see if .kernel.mk matches target.mk
  15. ifeq ($(CONFIG_BOARD)-$(CONFIG_KERNEL),$(BOARD)-$(KERNEL))
  16. LINUX_VERSION:=$(CONFIG_LINUX_VERSION)
  17. LINUX_RELEASE:=$(CONFIG_LINUX_RELEASE)
  18. LINUX_KARCH:=$(CONFIG_LINUX_KARCH)
  19. else
  20. # oops, old .kernel.config; rebuild it (hiding the misleading errors this produces)
  21. $(warning rebuilding .kernel.mk)
  22. $(TOPDIR)/.kernel.mk: FORCE
  23. @$(MAKE) -C $(TOPDIR)/target/linux/$(BOARD)-$(KERNEL) $@ &>/dev/null
  24. endif
  25. ifeq ($(KERNEL),2.6)
  26. LINUX_KMOD_SUFFIX=ko
  27. else
  28. LINUX_KMOD_SUFFIX=o
  29. endif
  30. KERNELNAME=
  31. ifneq (,$(findstring x86,$(BOARD)))
  32. KERNELNAME="bzImage"
  33. endif
  34. ifneq (,$(findstring ppc,$(BOARD)))
  35. KERNELNAME="uImage"
  36. endif
  37. ifneq (,$(findstring uml,$(BOARD)))
  38. LINUX_KARCH:=um
  39. KERNEL_CC:=$(HOSTCC)
  40. KERNEL_CROSS:=
  41. else
  42. KERNEL_CC:=$(TARGET_CC)
  43. KERNEL_CROSS:=$(TARGET_CROSS)
  44. endif
  45. KERNEL_BUILD_DIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
  46. LINUX_DIR := $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
  47. MODULES_SUBDIR:=lib/modules/$(LINUX_VERSION)
  48. MODULES_DIR := $(KERNEL_BUILD_DIR)/modules/$(MODULES_SUBDIR)
  49. TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
  50. KMOD_BUILD_DIR := $(KERNEL_BUILD_DIR)/linux-modules
  51. LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux
  52. endif
  53. # FIXME: remove this crap
  54. define KMOD_template
  55. ifeq ($$(strip $(4)),)
  56. KDEPEND_$(1):=m
  57. else
  58. KDEPEND_$(1):=$($(4))
  59. endif
  60. IDEPEND_$(1):=kernel ($(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)) $(foreach pkg,$(5),", $(pkg)")
  61. PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk
  62. I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2)
  63. ifeq ($$(KDEPEND_$(1)),m)
  64. ifneq ($$(CONFIG_PACKAGE_KMOD_$(1)),)
  65. TARGETS += $$(PKG_$(1))
  66. endif
  67. ifeq ($$(CONFIG_PACKAGE_KMOD_$(1)),y)
  68. INSTALL_TARGETS += $$(PKG_$(1))
  69. endif
  70. endif
  71. $$(PKG_$(1)): $(LINUX_DIR)/.modules_done
  72. rm -rf $$(I_$(1))
  73. $(SCRIPT_DIR)/make-ipkg-dir.sh $$(I_$(1)) ../control/kmod-$(2).control $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
  74. echo "Depends: $$(IDEPEND_$(1))" >> $$(I_$(1))/CONTROL/control
  75. ifneq ($(strip $(3)),)
  76. mkdir -p $$(I_$(1))/lib/modules/$(LINUX_VERSION)
  77. $(CP) $(3) $$(I_$(1))/lib/modules/$(LINUX_VERSION)
  78. endif
  79. ifneq ($(6),)
  80. mkdir -p $$(I_$(1))/etc/modules.d
  81. for module in $(7); do \
  82. echo $$$$module >> $$(I_$(1))/etc/modules.d/$(6)-$(2); \
  83. done
  84. echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst
  85. echo "[ -z \"\$$$$IPKG_INSTROOT\" ] || exit" >> $$(I_$(1))/CONTROL/postinst
  86. echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst
  87. echo "load_modules /etc/modules.d/$(6)-$(2)" >> $$(I_$(1))/CONTROL/postinst
  88. chmod 0755 $$(I_$(1))/CONTROL/postinst
  89. endif
  90. $(8)
  91. $(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR)
  92. endef