1 #############################################################
4 # Linux 2.4 kernel target for the OpenWRT project
6 # patches are sorted by numbers
7 # 0xx needed patches for board, cpu, filesystem
8 # 1xx addon patches for new features (netfilter, ebtables, cifs,..)
9 # 2xx compile fixes, driver fixes
11 #############################################################
13 include $(TOPDIR
)/rules.mk
22 MODULES_SUBDIR
:=lib
/modules
/$(LINUX_VERSION
)
23 LINUX_KCONFIG
:=.
/config
/$(BOARD
)
24 LINUX_BUILD_DIR
:=$(BUILD_DIR
)/linux-2.4
-$(BOARD
)
25 LINUX_TARGET_DIR
:=$(LINUX_BUILD_DIR
)/root
26 LINUX_KERNEL
:=$(LINUX_BUILD_DIR
)/vmlinux
27 LINUX_IMAGE
:=$(LINUX_BUILD_DIR
)/kernel-image
29 LINUX_KARCH
:=$(shell echo
$(ARCH
) | sed
-e
's/i[3-9]86/i386/' \
35 LINUX_BINARY_DRIVER_SITE
:= http
://openwrt.org
/downloads
/
36 LINUX_SOURCE
:= linux-
$(LINUX_VERSION
).
tar.bz2
37 LINUX_BINLOC
:= arch
/$(LINUX_KARCH
)/bcm947xx
/compressed
/piggy
38 LINUX_SOURCE_DIR
:= $(LINUX_BUILD_DIR
)/linux-
$(LINUX_VERSION
)
39 MODULES_DIR
:= $(LINUX_BUILD_DIR
)/modules
/$(MODULES_SUBDIR
)
40 TARGET_MODULES_DIR
:= $(TARGET_DIR
)/lib
/modules
/$(LINUX_VERSION
)
41 IPKG_KERNEL
:=IPKG_TMP
=$(BUILD_DIR
)/tmp IPKG_INSTROOT
=$(LINUX_TARGET_DIR
) IPKG_CONF_DIR
=$(LINUX_BUILD_DIR
) $(SCRIPT_DIR
)/ipkg
-force-defaults
-force-depends
43 include $(LINUX_KCONFIG
)
48 PKG_BUILD_DIR
:= $(LINUX_BUILD_DIR
)/linux-modules
54 $(eval
$(call KMOD_template
,DIAG
,diag
,\
55 $(MODULES_DIR
)/kernel
/drivers
/net
/diag
/diag.o \
57 $(eval
$(call KMOD_template
,BRCM_WL
,brcm-wl
,\
58 $(MODULES_DIR
)/kernel
/drivers
/net
/wl
/wl.o \
60 $(eval
$(call KMOD_template
,B44
,b44
,\
61 $(MODULES_DIR
)/kernel
/drivers
/net
/b44.o \
63 $(eval
$(call KMOD_template
,BRCM_ET
,brcm-et
,\
64 $(MODULES_DIR
)/kernel
/drivers
/net
/et
/et.o \
66 $(eval
$(call KMOD_template
,ARPT
,arptables
,\
67 $(MODULES_DIR
)/kernel
/net
/ipv4
/netfilter
/arp
*.o \
68 ,CONFIG_IP_NF_ARPTABLES
))
69 $(eval
$(call KMOD_template
,EBT
,ebtables
,\
70 $(MODULES_DIR
)/kernel
/net
/bridge
/netfilter
/*.o \
71 ,CONFIG_BRIDGE_NF_EBTABLES
))
72 $(eval
$(call KMOD_template
,IPT4
,iptables-extra
,\
73 $(MODULES_DIR
)/kernel
/net
/ipv4
/netfilter
/ip
*.o \
75 $(eval
$(call KMOD_template
,IPT6
,ip6tables
,\
76 $(MODULES_DIR
)/kernel
/net
/ipv6
/netfilter
/ip
*.o \
77 ,CONFIG_IP6_NF_IPTABLES
))
78 $(eval
$(call KMOD_template
,IPV6
,ipv6
,\
79 $(MODULES_DIR
)/kernel
/net
/ipv6
/ipv6.o \
81 $(eval
$(call KMOD_template
,CIFS
,cifs
,\
82 $(MODULES_DIR
)/kernel
/fs
/cifs
/cifs.o \
84 $(eval
$(call KMOD_template
,NFS
,nfs
,\
85 $(MODULES_DIR
)/kernel
/fs
/lockd
/*.o \
86 $(MODULES_DIR
)/kernel
/fs
/nfs
/*.o \
87 $(MODULES_DIR
)/kernel
/net
/sunrpc
/*.o \
89 $(eval
$(call KMOD_template
,USB
,usb-core
,\
90 $(MODULES_DIR
)/kernel
/drivers
/usb
/usbcore.o \
92 $(eval
$(call KMOD_template
,USB_UHCI
,usb-uhci
,\
93 $(MODULES_DIR
)/kernel
/drivers
/usb
/host
/uhci.o \
94 ,CONFIG_USB_UHCI_ALT
))
95 $(eval
$(call KMOD_template
,USB_OHCI
,usb-ohci
,\
96 $(MODULES_DIR
)/kernel
/drivers
/usb
/host
/usb-ohci.o \
98 $(eval
$(call KMOD_template
,USB2
,usb2
,\
99 $(MODULES_DIR
)/kernel
/drivers
/usb
/host
/ehci-hcd.o \
100 ,CONFIG_USB_EHCI_HCD
))
101 $(eval
$(call KMOD_template
,USB_STORAGE
,usb-storage
,\
102 $(MODULES_DIR
)/kernel
/drivers
/scsi
/*.o \
103 $(MODULES_DIR
)/kernel
/drivers
/usb
/storage
/*.o \
104 ,CONFIG_USB_STORAGE
))
105 $(eval
$(call KMOD_template
,USB_PRINTER
,usb-printer
,\
106 $(MODULES_DIR
)/kernel
/drivers
/usb
/printer.o \
107 ,CONFIG_USB_PRINTER
))
108 $(eval
$(call KMOD_template
,LP
,lp
,\
109 $(MODULES_DIR
)/kernel
/drivers
/parport
/parport.o \
110 $(MODULES_DIR
)/kernel
/drivers
/parport
/parport_splink.o \
111 $(MODULES_DIR
)/kernel
/drivers
/char
/lp.o \
113 $(eval
$(call KMOD_template
,IDE
,ide
,\
114 $(MODULES_DIR
)/kernel
/drivers
/ide
/*.o \
115 $(MODULES_DIR
)/kernel
/drivers
/ide
/*/*.o \
117 $(eval
$(call KMOD_template
,EXT2
,ext2
,\
118 $(MODULES_DIR
)/kernel
/fs
/ext2
/*.o \
120 $(eval
$(call KMOD_template
,EXT3
,ext3
,\
121 $(MODULES_DIR
)/kernel
/fs
/ext3
/*.o \
122 $(MODULES_DIR
)/kernel
/fs
/jbd
/*.o \
124 $(eval
$(call KMOD_template
,XFS
,xfs
,\
125 $(MODULES_DIR
)/kernel
/fs
/xfs
/*.o \
127 $(eval
$(call KMOD_template
,HFSPLUS
,hfsplus
,\
128 $(MODULES_DIR
)/kernel
/fs
/hfsplus
/*.o \
130 $(eval
$(call KMOD_template
,VFAT
,vfat
,\
131 $(MODULES_DIR
)/kernel
/fs
/vfat
/vfat.o \
132 $(MODULES_DIR
)/kernel
/fs
/fat
/fat.o \
134 $(eval
$(call KMOD_template
,CRYPTO
,crypto
,\
135 $(MODULES_DIR
)/kernel
/crypto
/*.o \
137 $(eval
$(call KMOD_template
,PPP
,ppp
,\
138 $(MODULES_DIR
)/kernel
/drivers
/net
/ppp_async.o \
139 $(MODULES_DIR
)/kernel
/drivers
/net
/ppp_generic.o \
140 $(MODULES_DIR
)/kernel
/drivers
/net
/slhc.o \
142 $(eval
$(call KMOD_template
,MPPE
,mppe
,\
143 $(MODULES_DIR
)/kernel
/drivers
/net
/ppp_mppe_mppc.o \
144 ,CONFIG_PPP_MPPE_MPPC
))
145 $(eval
$(call KMOD_template
,PPPOE
,pppoe
,\
146 $(MODULES_DIR
)/kernel
/drivers
/net
/pppoe.o \
147 $(MODULES_DIR
)/kernel
/drivers
/net
/pppox.o \
149 $(eval
$(call KMOD_template
,TUN
,tun
,\
150 $(MODULES_DIR
)/kernel
/drivers
/net
/tun.o \
152 $(eval
$(call KMOD_template
,GRE
,gre
,\
153 $(MODULES_DIR
)/kernel
/net
/ipv4
/ip_gre.o \
155 $(eval
$(call KMOD_template
,SCHED
,sched
,\
156 $(MODULES_DIR
)/kernel
/net
/sched
/*.o \
159 $(TARGETS
): $(PACKAGE_DIR
)
162 mkdir
-p
$(PACKAGE_DIR
)
164 $(LINUX_DIR
)/.unpacked
: $(DL_DIR
)/$(LINUX_SOURCE
) $(DL_DIR
)/$(LINUX_BINARY_WL_DRIVER
) $(DL_DIR
)/$(LINUX_ET_DRIVER
)
165 -mkdir
-p
$(LINUX_BUILD_DIR
)
166 bzcat
$(DL_DIR
)/$(LINUX_SOURCE
) |
tar -C
$(LINUX_BUILD_DIR
) $(TAR_OPTIONS
) -
168 ln
-s
$(LINUX_BUILD_DIR
)/linux-
$(LINUX_VERSION
) $(LINUX_DIR
)
169 touch
$(LINUX_DIR
)/.unpacked
171 $(LINUX_DIR
)/.patched
: $(LINUX_DIR
)/.unpacked
172 [ -d .
/patches
/$(BOARD
) ] && $(PATCH
) $(LINUX_DIR
) .
/patches
/$(BOARD
)
173 $(PATCH
) $(LINUX_DIR
) .
/patches
/generic
174 touch
$(LINUX_DIR
)/.patched
176 $(LINUX_DIR
)/.configured
: $(LINUX_DIR
)/.patched
177 -cp
$(LINUX_KCONFIG
) $(LINUX_DIR
)/.config
178 $(SED
) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" \
179 $(LINUX_DIR
)/Makefile \
180 $(LINUX_DIR
)/arch
/mips
/Makefile
181 $(SED
) "s,\-mcpu=,\-mtune=,g;" $(LINUX_DIR
)/arch
/mips
/Makefile
182 $(MAKE
) -C
$(LINUX_DIR
) ARCH
=$(LINUX_KARCH
) oldconfig
include/linux
/version.h
183 touch
$(LINUX_DIR
)/.configured
185 $(LINUX_DIR
)/.depend_done
: $(LINUX_DIR
)/.configured
186 $(MAKE
) -C
$(LINUX_DIR
) ARCH
=$(LINUX_KARCH
) dep
187 touch
$(LINUX_DIR
)/.depend_done
189 $(LINUX_DIR
)/$(LINUX_BINLOC
): $(LINUX_DIR
)/.depend_done
190 $(MAKE
) -C
$(LINUX_DIR
) ARCH
=$(LINUX_KARCH
) PATH
=$(TARGET_PATH
) CFLAGS_KERNEL
="-fno-delayed-branch " $(LINUX_FORMAT
)
192 $(LINUX_KERNEL
): $(LINUX_DIR
)/$(LINUX_BINLOC
)
194 touch
-c
$(LINUX_KERNEL
)
196 $(LINUX_IMAGE
): $(LINUX_KERNEL
)
197 cat
$^ |
$(BUILD_DIR
)/lzma
/lzma e
-si
-so
-eos
-lc1
-lp2
-pb2
> $@ ||
(rm -f
$@
&& false
)
199 $(LINUX_DIR
)/.modules_done
: $(LINUX_KERNEL
) $(LINUX_IMAGE
)
200 rm -rf
$(LINUX_BUILD_DIR
)/modules
201 $(MAKE
) -C
$(LINUX_DIR
) ARCH
=$(LINUX_KARCH
) PATH
=$(TARGET_PATH
) CFLAGS_KERNEL
="-fno-delayed-branch " modules
202 $(MAKE
) -C
$(LINUX_DIR
) DEPMOD
=true INSTALL_MOD_PATH
=$(LINUX_BUILD_DIR
)/modules modules_install
203 touch
$(LINUX_DIR
)/.modules_done
205 $(STAGING_DIR
)/include/linux
/version.h
: $(LINUX_DIR
)/.configured
206 mkdir
-p
$(STAGING_DIR
)/include
207 tar -ch
-C
$(LINUX_DIR
)/include -f
- linux |
tar -xf
- -C
$(STAGING_DIR
)/include/
208 tar -ch
-C
$(LINUX_DIR
)/include -f
- asm |
tar -xf
- -C
$(STAGING_DIR
)/include/
210 $(TARGET_MODULES_DIR
):
211 -mkdir
-p
$(TARGET_MODULES_DIR
)
213 source
: $(DL_DIR
)/$(LINUX_SOURCE
)
214 prepare
: $(LINUX_DIR
)/.configured
215 compile
: $(LINUX_DIR
)/.modules_done
$(TARGETS
)
216 $(MAKE
) -C
$(TOPDIR
)/target
/linux
/package \
217 TARGET_DIR
="$(LINUX_TARGET_DIR)" \
218 BUILD_DIR
="$(LINUX_BUILD_DIR)" \
219 KERNEL_DIR
="$(LINUX_SOURCE_DIR)" \
220 LINUX_VERSION
="$(LINUX_VERSION)"
222 install: compile
$(TARGET_MODULES_DIR
)
223 rm -rf
$(LINUX_BUILD_DIR
)/root
*
224 cp
-a
$(BUILD_DIR
)/root
$(LINUX_BUILD_DIR
)/
225 echo
-e
'dest root /\noption offline_root $(LINUX_BUILD_DIR)/root' > $(LINUX_BUILD_DIR
)/ipkg.conf
226 [ "$(INSTALL_TARGETS)" != "" ] && $(IPKG_KERNEL
) install $(INSTALL_TARGETS
) || true
229 rm -rf
$(LINUX_BUILD_DIR
)