source: freewrt/target/linux/brcm-2.4/Makefile@ 5d4c61f

freewrt_1_0 freewrt_2_0
Last change on this file since 5d4c61f was d6b2eb5, checked in by Waldemar Brodkorb <wbx@…>, 19 years ago

fix kernel meta package dependency, close #110

git-svn-id: svn://www.freewrt.org/branches/freewrt_1_0@893 afb5a338-a214-0410-bd46-81f09a774fd1

  • Property mode set to 100644
File size: 8.8 KB
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/license for details.
6
7include $(TOPDIR)/rules.mk
8
9LINUX_VERSION:=2.4.33.3
10LINUX_RELEASE:=1
11LINUX_KERNEL_MD5SUM:=ab5940e952c3e337128b9f97c51eab94
12
13KERNEL:=unknown
14ifneq (,$(findstring 2.4.,$(LINUX_VERSION)))
15KERNEL:=2.4
16endif
17ifneq (,$(findstring 2.6.,$(LINUX_VERSION)))
18KERNEL:=2.6
19endif
20
21ifeq ($(KERNEL),2.6)
22LINUX_KMOD_SUFFIX=ko
23else
24LINUX_KMOD_SUFFIX=o
25endif
26
27MODULES_SUBDIR := lib/modules/$(LINUX_VERSION)
28LINUX_BUILD_DIR := $(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
29LINUX_DIR := $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)
30LINUX_KERNEL := $(LINUX_BUILD_DIR)/vmlinux
31LINUX_TARGET_DIR := $(LINUX_BUILD_DIR)/root
32
33IPKG_KERNEL := IPKG_TMP=$(BUILD_DIR)/tmp IPKG_INSTROOT=$(LINUX_TARGET_DIR) IPKG_CONF_DIR=$(LINUX_BUILD_DIR) $(SCRIPT_DIR)/ipkg -force-defaults -force-depends
34
35LINUX_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
43KPKG_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
52KMOD_BUILD_DIR := $(LINUX_BUILD_DIR)/linux-modules
53MODULES_DIR := $(LINUX_BUILD_DIR)/modules/$(MODULES_SUBDIR)
54TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
55
56KERNEL_IPKG:=$(LINUX_BUILD_DIR)/kernel_$(BOARD)-$(KERNEL)-$(LINUX_VERSION)_$(ARCH).ipk
57INSTALL_TARGETS:=
58TARGETS:=
59
60define KMOD_template
61ifeq ($$(strip $(4)),)
62KDEPEND_$(1):=m
63else
64KDEPEND_$(1):=$($(4))
65endif
66
67IDEPEND_$(1):=kernel ($(BOARD)-$(KERNEL)-$(LINUX_VERSION)) $(foreach pkg,$(5),", $(pkg)")
68
69PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk
70I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2)
71
72ifeq ($$(KDEPEND_$(1)),m)
73ifneq ($$(FWRT_PACKAGE_KMOD_$(1)),)
74TARGETS+=$$(PKG_$(1))
75endif
76ifeq ($$(FWRT_PACKAGE_KMOD_$(1)),y)
77INSTALL_TARGETS+=$$(PKG_$(1))
78endif
79endif
80
81$$(PKG_$(1)): $(LINUX_DIR)/.modules-install
82 rm -rf $$(I_$(1))
83 $(SCRIPT_DIR)/make-ipkg-dir.sh $$(I_$(1)) ../control/kmod-$(2).control $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
84 echo "Depends: $$(IDEPEND_$(1))" >> $$(I_$(1))/CONTROL/control
85ifneq ($(strip $(3)),)
86 mkdir -p $$(I_$(1))/lib/modules/$(LINUX_VERSION)
87 $(CP) $(3) $$(I_$(1))/lib/modules/$(LINUX_VERSION)
88endif
89ifneq ($(6),)
90 mkdir -p $$(I_$(1))/etc/modules.d
91 for module in $(7); do \
92 echo $$$$module >> $$(I_$(1))/etc/modules.d/$(6)-$(2); \
93 done
94 echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst
95 echo "if [ -z \"\$$$${IPKG_INSTROOT}\" ]; then" >> $$(I_$(1))/CONTROL/postinst
96 echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst
97 echo "load_modules /etc/modules.d/$(6)-$(2)" >> $$(I_$(1))/CONTROL/postinst
98 echo "fi" >> $$(I_$(1))/CONTROL/postinst
99 chmod 0755 $$(I_$(1))/CONTROL/postinst
100endif
101 $(8)
102 $(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR) $(MAKE_TRACE)
103endef
104
105# include kernel configuration, first try model specific if exist
106# otherwise use generic root filesystem specific for this board
107
108# squashfs with mini-fo overlay
109ifeq ($(FS),squashfs-overlay)
110MODELCONFIG:=$(shell test -f $(MODEL)/config/config.squashfs_overlay && echo y 2>/dev/null)
111ifneq ($(strip $(MODELCONFIG)),)
112include $(MODEL)/config/config.squashfs_overlay
113else
114include $(FS)/config/config.squashfs_overlay
115endif
116endif
117
118# squashfs with symlinks in a jffs2 partition
119ifeq ($(FS),squashfs-symlinks)
120MODELCONFIG:=$(shell test -f $(MODEL)/config/config.squashfs_symlinks && echo y 2>/dev/null)
121ifneq ($(strip $(MODELCONFIG)),)
122include $(MODEL)/config/config.squashfs_symlinks
123else
124include $(FS)/config/config.squashfs_symlinks
125endif
126endif
127
128# jffs2
129ifeq ($(FS),jffs2)
130MODELCONFIG:=$(shell test -f $(MODEL)/config/config.jffs2 && echo y 2>/dev/null)
131ifneq ($(strip $(MODELCONFIG)),)
132include $(MODEL)/config/config.jffs2
133else
134include $(FS)/config/config.jffs2
135endif
136endif
137
138
139include $(TOPDIR)/mk/netfilter.mk
140include $(TOPDIR)/mk/modules-$(KERNEL).mk
141
142LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.bz2
143LINUX_SITE=http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL) \
144 http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL) \
145 http://www.kernel.org/pub/linux/kernel/v$(KERNEL) \
146 http://www.de.kernel.org/pub/linux/kernel/v$(KERNEL)
147
148KERNEL_IDIR:=$(LINUX_BUILD_DIR)/kernel-ipkg
149
150$(TARGETS): $(PACKAGE_DIR)
151
152$(PACKAGE_DIR):
153 @mkdir -p $(PACKAGE_DIR)
154
155$(DL_DIR)/$(LINUX_SOURCE):
156 -mkdir -p $(DL_DIR)
157 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-download
158 $(SCRIPT_DIR)/download.pl $(DL_DIR) $(LINUX_SOURCE) $(LINUX_KERNEL_MD5SUM) $(LINUX_SITE) $(MAKE_TRACE)
159
160$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE)
161 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-prepare
162 -mkdir -p $(LINUX_BUILD_DIR)
163 bzcat $(DL_DIR)/$(LINUX_SOURCE) | (cd $(LINUX_BUILD_DIR); tar xf - )
164 rm -f $(BUILD_DIR)/linux
165 ln -s $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) $(BUILD_DIR)/linux
166 touch $@
167
168$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
169 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-patch
170 -[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
171 -[ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
172 -[ -d ./$(MODEL)/patches ] && $(PATCH) $(LINUX_DIR) ./$(MODEL)/patches $(MAKE_TRACE)
173ifeq ($(FS),squashfs-overlay)
174ifneq ($(strip $(MODELCONFIG)),)
175 $(CP) $(MODEL)/config/config.squashfs_overlay $(LINUX_DIR)/.config
176else
177 $(CP) $(FS)/config/config.squashfs_overlay $(LINUX_DIR)/.config
178endif
179endif
180ifeq ($(FS),squashfs-symlinks)
181ifneq ($(strip $(MODELCONFIG)),)
182 $(CP) $(MODEL)/config/config.squashfs_symlinks $(LINUX_DIR)/.config
183else
184 $(CP) $(FS)/config/config.squashfs_symlinks $(LINUX_DIR)/.config
185endif
186endif
187ifeq ($(FS),jffs2)
188ifneq ($(strip $(MODELCONFIG)),)
189 $(CP) $(MODEL)/config/config.jffs2 $(LINUX_DIR)/.config
190else
191 $(CP) $(FS)/config/config.jffs2 $(LINUX_DIR)/.config
192endif
193endif
194 touch $@
195
196ifeq ($(KERNEL),2.4)
197$(LINUX_DIR)/.configured: $(LINUX_DIR)/.patched
198 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-configure
199 $(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" \
200 $(LINUX_DIR)/Makefile \
201 $(LINUX_DIR)/arch/*/Makefile
202 $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_KARCH) oldconfig include/linux/compile.h include/linux/version.h $(MAKE_TRACE)
203 $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) dep $(MAKE_TRACE)
204 touch $@
205else
206$(LINUX_DIR)/.configured: $(LINUX_DIR)/.patched
207 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-configure
208 $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) oldconfig prepare scripts $(MAKE_TRACE)
209 touch $@
210endif
211
212$(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.configured
213 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-compile
214 $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH=$(TARGET_PATH) $(MAKE_TRACE)
215
216$(LINUX_KERNEL): $(LINUX_DIR)/vmlinux
217 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-strip
218 $(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
219 touch -c $(LINUX_KERNEL)
220
221$(LINUX_DIR)/.modules-compile:
222 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-compile
223 $(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH="$(TARGET_PATH)" modules $(MAKE_TRACE)
224 touch $@
225
226$(LINUX_DIR)/.modules-install: $(LINUX_DIR)/.modules-compile
227 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install
228 rm -rf $(LINUX_BUILD_DIR)/modules
229 $(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" DEPMOD=true INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules modules_install $(MAKE_TRACE)
230 touch $@
231
232$(LINUX_DIR)/.linux-compile: $(LINUX_KERNEL) $(LINUX_DIR)/.modules-install
233 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-create-packages
234 @$(MAKE) $(KERNEL_IPKG) $(TARGETS) $(MAKE_TRACE)
235 touch $@
236
237$(KERNEL_IPKG):
238 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-$(MODEL)-$(FS)-create-kernel-package
239 rm -rf $(KERNEL_IDIR)
240 mkdir -p $(KERNEL_IDIR)/etc
241 $(SCRIPT_DIR)/make-ipkg-dir.sh $(KERNEL_IDIR) ../control/kernel.control $(BOARD)-$(KERNEL)-$(LINUX_VERSION) $(ARCH)
242 $(IPKG_BUILD) $(KERNEL_IDIR) $(PACKAGE_DIR) $(MAKE_TRACE)
243
244prepare:
245 -mkdir -p $(PACKAGE_DIR)
246
247compile: prepare $(LINUX_DIR)/.linux-compile
248compile-kernel: prepare $(LINUX_KERNEL)
249
250install: compile
251 $(MAKE) $(KPKG_MAKEOPTS) $(LINUX_KERNEL) $(MAKE_TRACE)
252 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install
253 @rm -rf $(LINUX_BUILD_DIR)/root*
254 @$(CP) $(BUILD_DIR)/root $(LINUX_BUILD_DIR)/
255 echo -e 'dest root /\noption offline_root $(LINUX_BUILD_DIR)/root' > $(LINUX_BUILD_DIR)/ipkg.conf
256ifneq ($(strip $(INSTALL_TARGETS)),)
257 $(IPKG_KERNEL) install $(INSTALL_TARGETS) $(MAKE_TRACE)
258endif
259
260rebuild:
261 @$(TRACE) target/linux/$(BOARD)-$(KERNEL)-rebuild
262 rm -rf $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)
263 rm -f $(TARGETS)
264 $(MAKE) compile $(MAKE_TRACE)
265
266clean:
267 rm -rf $(LINUX_BUILD_DIR)
268 rm -f $(TARGETS)
Note: See TracBrowser for help on using the repository browser.