source: floppyfw/package/linux/linux.mk @ 216

Revision 216, 7.0 KB checked in by root, 8 years ago (diff)

Many small changes.

Line 
1#############################################################
2#
3# Linux kernel targets
4#
5# Note:  If you have any patches to apply, create the directory
6# sources/kernel-patches and put your patches in there and number
7# them in the order you wish to apply them...  i.e.
8#
9#   patches/kernel/001-my-special-stuff.bz2
10#   patches/kernel/003-gcc-Os.bz2
11#   patches/kernel/004_no-warnings.bz2
12#   patches/kernel/030-lowlatency-mini.bz2
13#   patches/kernel/031-lowlatency-fixes-5.bz2
14#   patches/kernel/099-shutup.bz2
15#   etc...
16#
17# these patches will all be applied by the patch-kernel.sh
18# script (which will also abort the build if it finds rejects)
19#  -Erik
20#
21# It will also do patch-o-matic patches, dependant on the patch-o-matic
22# TARGET and the POM_PATCHES list in the main Makefile.
23#
24# -Thomas.
25#
26#############################################################
27
28# Version of Linux to download and then apply patches to
29DOWNLOAD_LINUX_VERSION=2.4.34
30# Version of Linux AFTER patches
31LINUX_VERSION=$(DOWNLOAD_LINUX_VERSION)-floppyfw-$(FLOPPYFW_VERSION)
32
33LINUX_FORMAT=bzImage
34LINUX_BINLOC=arch/$(ARCH)/boot/$(LINUX_FORMAT)
35
36LINUX_DIR=$(BUILD_DIR)/linux-$(LINUX_VERSION)
37LINUX_SOURCE=linux-$(DOWNLOAD_LINUX_VERSION).tar.bz2
38LINUX_SITE=ftp://ftp.kernel.org/pub/linux/kernel/v2.4
39LINUX_KERNEL=$(LINUX_DIR)/vmlinuz
40# Used by pcmcia-cs and others
41LINUX_SOURCE_DIR=$(LINUX_DIR)
42LINUX_MODULES_DEP=$(MODULES_DIR)/lib/modules/$(LINUX_VERSION)/modules.dep
43
44# LINUX_CC_OPTS="-Os -pipe"
45# LINUX_CC_OPTS="-Os -mregparm=3 -falign-functions=2 -falign-jumps=2 -falign-labels=2 -falign-loops=2"
46# LINUX_CC_OPTS="-Os -funit-at-a-time  -mregparm=3 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i386 -nostdinc -iwithprefix"
47
48DEPMOD=scripts/depmod.pl
49DEPMOD_CMD= [ -d $(MODULES_DIR)/lib/modules/$(LINUX_VERSION) ] && \
50        $(DEPMOD) -n \
51        -b $(MODULES_DIR)/lib/modules/$(LINUX_VERSION)/ \
52        -F $(LINUX_DIR)/System.map \
53        > $(LINUX_MODULES_DEP)
54
55$(DL_DIR)/$(LINUX_SOURCE):
56         $(WGET) -P $(DL_DIR) $(LINUX_SITE)/$(LINUX_SOURCE)
57
58$(LINUX_DIR)/.unpacked: \
59                busybox-source patch-o-matic-source hostap-driver-source \
60                $(IPTABLES_BUILD_DIR)/.configured $(DL_DIR)/$(LINUX_SOURCE) 
61        # Just to make sure it's gone.
62        -$(RM) -r $(MODULES_DIR)/lib
63        -$(RM) $(MODULES_DIR)/.stripped
64        -$(RM) -r $(LINUX_DIR)
65        bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar $(TAR_VERBOSE) \
66                -C $(BUILD_DIR) -xf -
67ifneq ($(DOWNLOAD_LINUX_VERSION),$(LINUX_VERSION))
68        # Rename the dir from the downloaded version to the AFTER patch version
69        mv -f $(BUILD_DIR)/linux-$(DOWNLOAD_LINUX_VERSION) $(LINUX_DIR)
70        touch $(LINUX_DIR)/.unpacked
71endif
72
73$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
74        mkdir -p $(PATCH_DIR)/kernel
75        # Patching the kernel.
76        $(SCRIPTS_DIR)/patch-kernel.sh $(LINUX_DIR) $(PATCH_DIR)/kernel 0*
77        echo "Patched the kernel with $(PATCH_DIR)/kernel patches"
78
79        # Patching the kernel with iptables-pom-stuff:
80ifeq ($(BR2_PACKAGE_POM),y)
81        (cd $(PATCH_O_MATIC_DIR); \
82                KERNEL_DIR=$(LINUX_DIR) \
83                IPTABLES_DIR=$(IPTABLES_BUILD_DIR) \
84                ./runme --batch $(POM_PATCHES) \
85                 );
86endif
87ifeq ($(BR2_PACKAGE_HOSTAP),y)
88        (cd $(LINUX_DIR); \
89        cat $(HOSTAP_DRIVER_KERNEL_PATCH) | patch -p1 ; \
90        cp $(HOSTAP_DRIVER_DIR)/driver/modules/hostap*.[ch] \
91        drivers/net/wireless/. );
92endif
93
94        # Postpatching the kernel after iptables-pom-stuff because of the
95        # troublesome CONFIG_IP_NF_MATCH_OWNER option.
96        $(SCRIPTS_DIR)/patch-kernel.sh $(LINUX_DIR) \
97                $(PATCH_DIR)/kernel-after-pom 0*
98
99        # From a lwn article: need gcc 3.4/3.5,
100        # It segfaults with it..
101        #  -funit-at-a-time  -mregparm=3
102        # From a patch by Eric Anderson: (But these don't reduce size, weird)
103        #  -falign-functions=2 -falign-jumps=2 -falign-labels=2 -falign-loops=2
104        # From: http://www.ussg.iu.edu/hypermail/linux/kernel/0501.2/0856.html
105        #  -mpreferred-stack-boundary=2 -malign-loops=0 -malign-jumps=0 -malign-functions=0
106        #  But: -malign-loops is obsolete, use -falign-loops
107        #  -malign-jumps is obsolete, use -falign-jumps
108        #  -malign-functions is obsolete, use -falign-functions
109        #  And they don't make a smaller kernel than pure -Os anyway.
110        $(SED) 's/\-O2/-Os -pipe/;' $(LINUX_DIR)/Makefile
111        -(cd $(BUILD_DIR); ln -sf $(LINUX_DIR) linux)
112        touch $(LINUX_DIR)/.patched
113
114$(CONFIG_DIR)/$(LINUX_KCONFIG):
115        @if [ ! -f "$(CONFIG_DIR)/$(LINUX_KCONFIG)" ] ; then \
116                echo ""; \
117                echo "You should create a .config for your kernel"; \
118                echo "and install it as $(CONFIG_DIR)/$(LINUX_KCONFIG)"; \
119                echo ""; \
120                sleep 5; \
121        fi;
122
123$(LINUX_DIR)/.configured:  $(LINUX_DIR)/.patched  $(CONFIG_DIR)/$(LINUX_KCONFIG)
124        -cp $(CONFIG_DIR)/$(LINUX_KCONFIG) $(LINUX_DIR)/.config
125ifeq ($(strip $(EMULATE_FPU)),true)
126        $(SED) "s/^.*CONFIG_MATH_EMULATION.*/CONFIG_MATH_EMULATION=y/;" \
127                $(LINUX_DIR)/.config
128else
129        $(SED) "s/^.*CONFIG_MATH_EMULATION.*/CONFIG_MATH_EMULATION=n/;" \
130                $(LINUX_DIR)/.config
131endif
132# Don't need this right now.
133#ifeq ($(filter $(TARGETS),madwifi), madwifi)
134#       $(SED) "s/^.*CONFIG_CRYPTO.*/CONFIG_CRYPTO=y/;" \
135#               $(LINUX_DIR)/.config
136#endif
137        $(SED) 's/^EXTRAVERSION\s=\s(.*)/EXTRAVERSION = $$1-floppyfw-$(FLOPPYFW_VERSION)/;' \
138                $(LINUX_DIR)/Makefile
139        $(MAKE) -C $(LINUX_DIR) oldconfig include/linux/version.h
140        touch $(LINUX_DIR)/.configured
141
142linux-source-configured: $(LINUX_DIR)/.configured
143
144$(LINUX_DIR)/.depend_done: $(LINUX_DIR)/.configured
145        $(MAKE) -C $(LINUX_DIR) dep
146        touch $(LINUX_DIR)/.depend_done
147
148$(LINUX_DIR)/$(LINUX_BINLOC): $(LINUX_DIR)/.depend_done
149        $(MAKE) CC="$(TARGET_CC)" -C $(LINUX_DIR) $(LINUX_FORMAT)
150        $(MAKE) CC="$(TARGET_CC)" -C $(LINUX_DIR) modules
151        $(RM) -r $(MODULES_DIR)/lib/modules
152        $(MAKE) -C $(LINUX_DIR) INSTALL_MOD_PATH=$(MODULES_DIR) modules_install
153        (cd $(MODULES_DIR)/lib/modules; ln -s $(LINUX_VERSION)/kernel/drivers .)
154
155$(LINUX_KERNEL): $(LINUX_DIR)/$(LINUX_BINLOC)
156        cp -fa $(LINUX_DIR)/$(LINUX_BINLOC) $(LINUX_KERNEL)
157        # cp -fa $(LINUX_DIR)/$(LINUX_BINLOC) $(LINUX_KERNEL).upx
158        # $(UPX) -9 $(LINUX_KERNEL).upx
159        touch -c $(LINUX_KERNEL)
160
161$(LINUX_MODULES_DEP): $(LINUX_KERNEL)
162        # Modutils-version
163        #/sbin/depmod -aen -F $(LINUX_DIR)/System.map -b $(MODULES_DIR)/lib/modules/$(LINUX_VERSION) > $(LINUX_MODULES_DEP)
164        #/sbin/depmod -aen -F $(LINUX_DIR)/System.map -b $(MODULES_DIR)/lib/modules/$(LINUX_VERSION)
165        # busybox perl.
166        [ -f  $(LINUX_MODULES_DEP) ] && cp $(LINUX_MODULES_DEP) $(LINUX_MODULES_DEP).org
167
168        $(DEPMOD_CMD)
169
170        [ -f  $(LINUX_MODULES_DEP) ] && cp $(LINUX_MODULES_DEP) $(LINUX_MODULES_DEP).precaps
171
172        (cd $(MODULES_DIR) ; \
173                cat $(LINUX_MODULES_DEP) \
174                        | $(SCRIPTS_DIR)/capsfix.pl > $(TMP_DIR)/moddep \
175                );
176
177        mv $(TMP_DIR)/moddep $(LINUX_MODULES_DEP)
178
179linux: busybox-source patch-o-matic-source hostap-driver-source \
180                $(IPTABLES_BUILD_DIR)/.configured \
181                $(LINUX_MODULES_DEP)
182                # $(LINUX_KERNEL)
183
184linux-source: $(DL_DIR)/$(LINUX_SOURCE)
185
186linux-menuconfig: $(LINUX_DIR)/.configured
187        ( cd $(LINUX_DIR) ; \
188                make menuconfig ; \
189                cp .config $(CONFIG_DIR)/$(LINUX_KCONFIG) \
190        )
191
192# This has been renamed so we do _NOT_ by default run this on 'make clean'
193linuxclean: clean
194        $(RM) $(LINUX_KERNEL)
195        -$(MAKE) -C $(LINUX_DIR) clean
196
197linux-dirclean:
198        $(RM) -r $(LINUX_DIR)
Note: See TracBrowser for help on using the repository browser.