fix uml-2.6 build, move KERNELNAME to kernel-build.mk
[openwrt.git] / include / kernel.mk
index 4b5fe72..7a36cee 100644 (file)
@@ -16,7 +16,8 @@ else
   # check to see if .kernel.mk matches target.mk
   ifeq ($(CONFIG_BOARD)-$(CONFIG_KERNEL),$(BOARD)-$(KERNEL))
      LINUX_VERSION:=$(CONFIG_LINUX_VERSION)
-     RELEASE:=$(CONFIG_RELEASE)
+     LINUX_RELEASE:=$(CONFIG_LINUX_RELEASE)
+     LINUX_KARCH:=$(CONFIG_LINUX_KARCH)
   else
   # oops, old .kernel.config; rebuild it (hiding the misleading errors this produces)
     $(warning rebuilding .kernel.mk)
@@ -30,21 +31,7 @@ else
     LINUX_KMOD_SUFFIX=o
   endif
 
-  LINUX_KARCH:=$(shell echo $(ARCH) | sed -e 's/i[3-9]86/i386/' \
-       -e 's/mipsel/mips/' \
-       -e 's/mipseb/mips/' \
-       -e 's/powerpc/ppc/' \
-       -e 's/sh[234]/sh/' \
-       -e 's/armeb/arm/' \
-  )
-
-  KERNELNAME=""
-  ifneq (,$(findstring x86,$(BOARD)))
-    KERNELNAME="bzImage"
-  endif
-
   ifneq (,$(findstring uml,$(BOARD)))
-    LINUX_KARCH:=um
     KERNEL_CC:=$(HOSTCC)
     KERNEL_CROSS:=
   else
@@ -63,6 +50,73 @@ else
   LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux
 endif
 
+
+define KernelPackage/Defaults
+  FILES:=
+  KCONFIG:=m
+  AUTOLOAD:=
+endef
+
+define ModuleAutoLoad
+       export modules=; \
+       add_module() { \
+               mkdir -p $(2)/etc/modules.d; \
+               ( \
+                       for mod in $$$$$$$$2; do \
+                               getvar mod; \
+                       done \
+               ) > $(2)/etc/modules.d/$$$$$$$$1-$(1); \
+               modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$1-$(1)"; \
+       }; \
+       $(3) \
+       if [ -n "$$$$$$$$modules" ]; then \
+               mkdir -p $(2)/etc/modules.d; \
+               echo "#!/bin/sh" > $(2)/CONTROL/postinst; \
+               echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst; \
+               echo ". /etc/functions.sh" >> $(2)/CONTROL/postinst; \
+               echo "load_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst; \
+               chmod 0755 $(2)/CONTROL/postinst; \
+       fi
+endef
+
+define KernelPackage
+  NAME:=$(1)
+  $(eval $(call KernelPackage/Defaults))
+  $(eval $(call KernelPackage/$(1)))
+  $(eval $(call KernelPackage/$(1)/$(KERNEL)))
+  $(eval $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL)))
+
+  define Package/kmod-$(1)
+    TITLE:=$(TITLE)
+    SECTION:=kernel
+    CATEGORY:=Kernel modules
+    DEFAULT:=m
+    DESCRIPTION:=$(DESCRIPTION)
+    EXTRA_DEPENDS:='kernel (=$(PKG_VERSION)-$(PKG_RELEASE))'
+    $(call KernelPackage/$(1))
+    $(call KernelPackage/$(1)/$(KERNEL))
+    $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL))
+  endef
+
+  ifeq ($(findstring m,$(KCONFIG)),m)
+    ifneq ($(strip $(FILES)),)
+      define Package/kmod-$(1)/install
+               mkdir -p $$(1)/lib/modules/$(LINUX_VERSION)
+               $(CP) $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/
+               $(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD))
+               $(call KernelPackage/$(1)/install,$$(1))
+      endef
+    endif
+  endif
+  $$(eval $$(call BuildPackage,kmod-$(1)))
+endef
+
+define AutoLoad
+  add_module $(1) "$(2)";
+endef
+
+
 # FIXME: remove this crap
 define KMOD_template
 ifeq ($$(strip $(4)),)
This page took 0.031811 seconds and 4 git commands to generate.