root/trunk/freewrt/mk/kernel.mk

Revision 3502, 4.0 kB (checked in by tg, 1 year ago)

add modules to the initramfs

Line 
1 # $FreeWRT$
2 #-
3 # This file is part of the FreeWRT project. FreeWRT is copyrighted
4 # material, please see the LICENCE file in the top-level directory
5 # or at http://www.freewrt.org/licence for details.
6
7
8 KERNEL:=unknown
9 ifneq (,$(findstring 2.4.,$(LINUX_VERSION)))
10 KERNEL:=2.4
11 endif
12 ifneq (,$(findstring 2.6.,$(LINUX_VERSION)))
13 KERNEL:=2.6
14 endif
15
16 ifeq ($(KERNEL),2.6)
17 LINUX_KMOD_SUFFIX=ko
18 else
19 LINUX_KMOD_SUFFIX=o
20 endif
21
22 MODULES_SUBDIR := lib/modules/$(LINUX_VERSION)
23 LINUX_BUILD_DIR := $(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
24 LINUX_DIR := $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)
25 LINUX_KERNEL := $(LINUX_BUILD_DIR)/vmlinux
26 LINUX_TARGET_DIR := $(LINUX_BUILD_DIR)/root
27
28 IPKG_KERNEL:=   env \
29                 IPKG_TMP=$(BUILD_DIR)/tmp \
30                 IPKG_INSTROOT=$(LINUX_TARGET_DIR) \
31                 IPKG_CONF_DIR=$(LINUX_BUILD_DIR) \
32                 IPKG_OFFLINE_ROOT=$(LINUX_BUILD_DIR)/root \
33                 ${MBSH} ${SCRIPT_DIR}/ipkg -force-defaults -force-depends
34
35 LINUX_KARCH:=$(shell echo $(ARCH) | sed -e 's/i[3-9]86/i386/' \
36         -e 's/mipsel/mips/' \
37         -e 's/mipseb/mips/' \
38         -e 's/powerpc/ppc/' \
39         -e 's/sh[234]/sh/' \
40         -e 's/armeb/arm/' \
41 )
42
43 KPKG_MAKEOPTS := IPKG="$(IPKG_KERNEL)" \
44                 BOARD="$(BOARD)" \
45                 KERNEL="$(KERNEL)" \
46                 TARGET_DIR="$(LINUX_TARGET_DIR)" \
47                 LINUX_BUILD_DIR="$(LINUX_BUILD_DIR)" \
48                 LINUX_DIR="$(LINUX_DIR)" \
49                 LINUX_VERSION="$(LINUX_VERSION)" \
50                 LINUX_RELEASE="$(LINUX_RELEASE)"
51
52 KMOD_BUILD_DIR := $(LINUX_BUILD_DIR)/linux-modules
53 MODULES_DIR := $(LINUX_BUILD_DIR)/modules/$(MODULES_SUBDIR)
54 TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
55
56 KERNEL_IPKG:=$(PACKAGE_DIR)/kernel_$(BOARD)-$(KERNEL)-$(LINUX_VERSION)_$(ARCH).ipk
57 INSTALL_TARGETS:= $(KERNEL_IPKG)
58 NOINSTALL_TARGETS:=
59 TARGETS:=
60
61 # KMOD_template
62 #
63 # Adds a target for creating a package containing
64 # the specified (kernel-provided) modules.
65 # Parameters:
66 # 1: the config symbol name (without leading 'FWRT_[K,]PACKAGE_KMOD_')
67 #    this _must_ be equal to the kernel config symbol name
68 # 2: the name for the package, should be unique
69 # 3: actual modules to add; absolute path inside $(MODULES_DIR)
70 #    OMIT THE KERNEL-SPECIFIC EXTENSION!
71 # 4: order of module loading at system startup; the modules in $(3) are (in their order)
72 #    added to this file, if $(6) is non-empty
73 # 5: the kmod packages this package depends on
74 #
75 define KMOD_template
76
77 IDEPENDK_$(1):=kernel ($(BOARD)-$(KERNEL)-$(LINUX_VERSION)) $(foreach pkg,$(5),", $(pkg)")
78
79 PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk
80 I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2)
81
82 ifeq ($$(FWRT_KPACKAGE_KMOD_$(1)),m)
83 TARGETS+=$$(PKG_$(1))
84 endif
85 ifeq ($$(FWRT_KPACKAGE_KMOD_$(1)),y)
86 TARGETS+=$$(PKG_$(1))
87 INSTALL_TARGETS+=$$(PKG_$(1))
88 NOINSTALL_TARGETS+=$$(PKG_$(1))
89 endif
90
91 $$(PKG_$(1)):
92         rm -rf $$(I_$(1))
93         echo "Package: kmod-$(2)" > $(BUILD_DIR)/kmod-control/kmod-$(2).control
94         echo "Priority: optional" >> $(BUILD_DIR)/kmod-control/kmod-$(2).control
95         echo "Section: sys" >> $(BUILD_DIR)/kmod-control/kmod-$(2).control
96         echo "Description: kernel module $(2)" >> $(BUILD_DIR)/kmod-control/kmod-$(2).control
97         ${MBSH} ${SCRIPT_DIR}/make-ipkg-dir.sh $$(I_$(1)) \
98             $(BUILD_DIR)/kmod-control/kmod-$(2).control \
99             $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
100         echo "Depends: $$(IDEPENDK_$(1))" >> $$(I_$(1))/CONTROL/control
101 ifneq ($(strip $(3)),)
102         mkdir -p $$(I_$(1))/lib/modules/$(LINUX_VERSION)
103         $(CP) $(foreach mod,$(3),$(mod).$(LINUX_KMOD_SUFFIX)) $$(I_$(1))/lib/modules/$(LINUX_VERSION)
104 ifneq ($(4),)
105         mkdir -p $$(I_$(1))/etc/modules.d
106         for module in $(notdir $(3)); do \
107                 echo $$$$module >> $$(I_$(1))/etc/modules.d/$(4)-$(2); \
108         done
109         echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst
110         echo "if [ -z \"\$$$${IPKG_INSTROOT}\" ]; then" >> $$(I_$(1))/CONTROL/postinst
111         echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst
112         echo "load_modules /etc/modules.d/$(4)-$(2)" >> $$(I_$(1))/CONTROL/postinst
113         echo "fi" >> $$(I_$(1))/CONTROL/postinst
114         chmod 0755 $$(I_$(1))/CONTROL/postinst
115 endif
116 endif
117         $(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR) $(MAKE_TRACE)
118 endef
119
120 WRKDIR?=        ${BUILD_DIR}/w-kernel-linux-${LINUX_VERSION}
121
122 include $(BUILD_DIR)/.fwrtkernelconfig
Note: See TracBrowser for help on using the browser.