1 # Makefile for to build the base openwrt
3 # Copyright (C) 2004 Manuel Novoa III <mjn3@uclibc.org>
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 ######################################################################
21 # WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
23 # Currently the dependencies are not all handled. But that's true of
24 # our buildroot in general, since it wasn't really set up for end users.
26 OPENWRT_TARGETS
:= openwrt-linux openwrt-kmodules.
tar.bz2 \
27 openwrt-shared openwrt-mtd openwrt-nvram openwrt-wlconf \
28 bridge dnsmasq1 iptables wtools busybox \
31 .PHONY
: $(OPENWRT_TARGETS
) openwrt-code.bin
33 openwrt-base
: $(OPENWRT_TARGETS
)
35 ######################################################################
37 ifneq ($(filter $(TARGETS
),openwrt-base
),)
39 # WRT54G_SOURCE=wrt54gv2.2.02.2.tgz
40 # WRT54G_SITE=http://www.linksys.com/support/opensourcecode/wrt54gv2/2.02.2
42 # WRT54G_SOURCE=wrt54g.2.02.7.tgz
43 # WRT54G_SITE=http://www.linksys.com/support/opensourcecode/wrt54gv2/2.02.7
44 # WRT54G_DIR=$(BUILD_DIR)/WRT54G
46 WRT54G_SOURCE
=wrt54gs
.2.07.1.tgz
47 WRT54G_SITE
=http
://www.linksys.com
/support
/opensourcecode
/wrt54gs
/2.07.1
49 WRT54G_DIR
=$(BUILD_DIR
)/WRT54GS
51 # OPENWRT_ROOT=openwrt-root.tar.bz2
52 # OPENWRT_SITE=http://127.0.0.1
53 # OPENWRT_DIR=$(BUILD_DIR)/openwrt
55 LINUX_DIR
=$(WRT54G_DIR
)/release
/src
/linux
/linux
57 LINUX_BINLOC
=arch
/mips
/brcm-boards
/bcm947xx
/compressed
/vmlinuz
59 TARGET_MODULES_DIR
:=$(TARGET_DIR
)/lib
/modules
/2.4.20
61 $(LINUX_DIR
)/.unpacked
: $(WRT54G_DIR
)/.prepared
62 -(cd
$(BUILD_DIR
); ln
-sf
$(LINUX_DIR
) linux
)
63 touch
$(LINUX_DIR
)/.unpacked
65 $(LINUX_DIR
)/.patched
: $(WRT54G_DIR
)/.prepared
66 $(SOURCE_DIR
)/patch-kernel.sh
$(LINUX_DIR
)/..
/..
$(SOURCE_DIR
) openwrt-linux-netfilter.patch
67 $(SOURCE_DIR
)/patch-kernel.sh
$(LINUX_DIR
)/..
/..
$(SOURCE_DIR
) openwrt-linux-sch_htb.patch
68 $(SOURCE_DIR
)/patch-kernel.sh
$(LINUX_DIR
)/..
/..
$(SOURCE_DIR
) openwrt-wrt54g-linux.patch
69 $(SOURCE_DIR
)/patch-kernel.sh
$(LINUX_DIR
)/..
/..
$(SOURCE_DIR
) openwrt-wrt54g-nfsswap.patch
70 # use replacement diag module code
71 cp
-f
$(SOURCE_DIR
)/openwrt-diag.c
$(LINUX_DIR
)/drivers
/net
/diag
/diag_led.c
72 cp
-f
$(SOURCE_DIR
)/openwrt-wrt54g-linux.config
$(LINUX_DIR
)/.config
73 -(cd
$(BUILD_DIR
); ln
-sf
$(LINUX_DIR
) linux
)
74 -(cd
$(LINUX_DIR
)/arch
/mips
/brcm-boards
/bcm947xx
/; \
76 tar jxvf
$(SOURCE_DIR
)/compressed-20040531.
tar.bz2
; \
78 touch
$(LINUX_DIR
)/.patched
80 $(LINUX_DIR
)/.configured
: $(LINUX_DIR
)/.patched
$(LINUX_DIR
)/.bbc-patched
$(LINUX_DIR
)/.nf-patched
81 $(SED
) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" $(LINUX_DIR
)/Makefile
82 $(SED
) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" $(LINUX_DIR
)/arch
/mips
/Makefile
83 $(SED
) "s,\-mcpu=,\-mtune=,g;" $(LINUX_DIR
)/arch
/mips
/Makefile
84 make
-C
$(LINUX_DIR
) oldconfig
include/linux
/version.h
85 touch
$(LINUX_DIR
)/.configured
87 $(LINUX_DIR
)/.depend_done
: $(LINUX_DIR
)/.configured
$(GCC_BUILD_DIR2
)/.installed
88 $(MAKE
) -C
$(LINUX_DIR
) dep
89 touch
$(LINUX_DIR
)/.depend_done
91 $(LINUX_DIR
)/$(LINUX_BINLOC
): $(LINUX_DIR
)/.depend_done
92 $(MAKE
) -C
$(LINUX_DIR
) $(LINUX_FORMAT
)
94 openwrt-kmodules.
tar.bz2
: $(LINUX_DIR
)/$(LINUX_BINLOC
)
95 $(MAKE
) -C
$(LINUX_DIR
) modules
96 $(MAKE
) -C
$(LINUX_DIR
) DEPMOD
=/bin
/true \
97 INSTALL_MOD_PATH
=$(LINUX_DIR
)/modules modules_install
98 tar -C
$(LINUX_DIR
)/modules
/lib
-cjf openwrt-kmodules.
tar.bz2 modules
100 openwrt-linux
: $(LINUX_DIR
)/$(LINUX_BINLOC
)
102 $(DL_DIR
)/$(WRT54G_SOURCE
):
103 $(WGET
) -P
$(DL_DIR
) $(WRT54G_SITE
)/$(WRT54G_SOURCE
)
105 $(WRT54G_DIR
)/.source
: $(DL_DIR
)/$(WRT54G_SOURCE
)
106 zcat
$(DL_DIR
)/$(WRT54G_SOURCE
) |
tar -C
$(BUILD_DIR
) -xvf
- WRT54GS
/README.TXT WRT54GS
/release
107 touch
$(WRT54G_DIR
)/.source
109 $(WRT54G_DIR
)/.prepared
: $(WRT54G_DIR
)/.source
110 $(SOURCE_DIR
)/patch-kernel.sh
$(WRT54G_DIR
) $(SOURCE_DIR
) openwrt-wrt54g-router.patch
111 $(SOURCE_DIR
)/patch-kernel.sh
$(WRT54G_DIR
) $(SOURCE_DIR
) openwrt-wrt54g-shared.patch
112 touch
$(WRT54G_DIR
)/.prepared
114 ######################################################################
116 OPENWRT_ROOT_SKEL
:=root.
tar.gz
117 OPENWRT_SITE
=http
://openwrt.ksilebo.net
/cgi-bin
/viewcvs.cgi
/root
119 $(DL_DIR
)/$(OPENWRT_ROOT_SKEL
):
120 $(WGET
) -P
$(DL_DIR
) $(OPENWRT_SITE
)/$(OPENWRT_ROOT_SKEL
)
122 ######################################################################
124 OPENWRT_SRCBASE
:=$(WRT54G_DIR
)/release
/src
125 OPENWRT_SHARED_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/shared
126 OPENWRT_SHARED_TARGET_BINARY
:=usr
/lib
/libshared.so
128 $(TARGET_DIR
)/$(OPENWRT_SHARED_TARGET_BINARY
): $(WRT54G_DIR
)/.source
129 $(MAKE
) -C
$(OPENWRT_SHARED_BUILD_DIR
) -f Makefile-openwrt \
130 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
131 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
132 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/include -Wall -I$(OPENWRT_SRCBASE)/" \
135 openwrt-shared
: $(TARGET_DIR
)/$(OPENWRT_SHARED_TARGET_BINARY
)
137 openwrt-shared-clean
:
138 -$(MAKE
) -C
$(OPENWRT_SHARED_BUILD_DIR
) clean
140 ######################################################################
142 OPENWRT_NVRAM_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/nvram
143 OPENWRT_NVRAM_TARGET_BINARY
:=usr
/sbin
/nvram
145 $(TARGET_DIR
)/$(OPENWRT_NVRAM_TARGET_BINARY
): $(WRT54G_DIR
)/.source
146 $(MAKE
) -C
$(OPENWRT_NVRAM_BUILD_DIR
) \
147 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
148 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
149 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/include -Wall -DOPENWRT_NVRAM" \
153 openwrt-nvram
: $(TARGET_DIR
)/$(OPENWRT_NVRAM_TARGET_BINARY
)
156 -$(MAKE
) -C
$(OPENWRT_NVRAM_BUILD_DIR
) clean
158 ######################################################################
160 OPENWRT_MTD_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/rc
161 OPENWRT_MTD_TARGET_BINARY
:=sbin
/mtd
163 $(TARGET_DIR
)/$(OPENWRT_MTD_TARGET_BINARY
): $(WRT54G_DIR
)/.source
$(TARGET_DIR
)/$(OPENWRT_NVRAM_TARGET_BINARY
) # need libnvram
164 $(MAKE
) -C
$(OPENWRT_MTD_BUILD_DIR
) -f Makefile-openwrt \
165 TOP
=$(OPENWRT_SRCBASE
)/router \
166 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
167 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
168 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/router/shared -I$(OPENWRT_SRCBASE)/include -Wall -I$(OPENWRT_SRCBASE)/" \
171 openwrt-mtd
: $(TARGET_DIR
)/$(OPENWRT_MTD_TARGET_BINARY
)
174 -$(MAKE
) -C
$(OPENWRT_MTD_BUILD_DIR
) clean
176 ######################################################################
178 OPENWRT_WLCONF_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/wlconf
179 OPENWRT_WLCONF_TARGET_BINARY
:=usr
/sbin
/wlconf
181 $(TARGET_DIR
)/$(OPENWRT_WLCONF_TARGET_BINARY
): $(WRT54G_DIR
)/.source
182 $(MAKE
) -C
$(OPENWRT_WLCONF_BUILD_DIR
) \
183 TOP
=$(OPENWRT_SRCBASE
)/router \
184 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
185 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
186 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/router/shared -I$(OPENWRT_SRCBASE)/include -Wall" \
190 openwrt-wlconf
: $(TARGET_DIR
)/$(OPENWRT_WLCONF_TARGET_BINARY
)
192 openwrt-wlconf-clean
:
193 -$(MAKE
) -C
$(OPENWRT_WLCONF_BUILD_DIR
) clean
195 ######################################################################
199 mkdir
-p
$(TARGET_DIR
)/tmp
200 chmod a
+rwxt
$(TARGET_DIR
)/tmp
201 ln
-sf
/tmp
$(TARGET_DIR
)/var
202 rm -f
$(TARGET_DIR
)/usr
/tmp
203 ln
-sf ..
/tmp
$(TARGET_DIR
)/usr
/tmp
205 mkdir
-p
$(TARGET_DIR
)/dev
207 mkdir
-p
$(TARGET_DIR
)/etc
208 ln
-sf
/tmp
/resolv.conf
$(TARGET_DIR
)/etc
/resolv.conf
210 mkdir
-p
$(TARGET_DIR
)/mnt
211 mkdir
-p
$(TARGET_DIR
)/proc
212 mkdir
-p
$(TARGET_DIR
)/jffs
213 mkdir
-p
$(TARGET_DIR
)/rom
215 mkdir
-p
$(TARGET_MODULES_DIR
)
216 cp
$(LINUX_DIR
)/drivers
/net
/wl
/wl.o
$(TARGET_MODULES_DIR
)
217 #cp $(LINUX_DIR)/drivers/net/et.4702/et.4702.o $(TARGET_MODULES_DIR)
218 cp
$(LINUX_DIR
)/drivers
/net
/et
/et.o
$(TARGET_MODULES_DIR
)
219 cp
$(LINUX_DIR
)/drivers
/net
/diag
/diag.o
$(TARGET_MODULES_DIR
)
221 ######################################################################
224 -@find
$(TARGET_DIR
) -type f
-perm
+111 | xargs
$(STRIP
) 2>/dev
/null || true
;
225 # remove unneeded uClibc libs
226 rm -rf
$(TARGET_DIR
)/lib
/libthread_db
*
227 rm -rf
$(TARGET_DIR
)/lib
/libpthread
*
228 # remove unneeded uClibc utils
229 rm -f
$(TARGET_DIR
)/sbin
/ldconfig
230 rm -f
$(TARGET_DIR
)/usr
/bin
/ldd
231 # remove other unneeded files
232 rm -f
$(TARGET_DIR
)/usr
/sbin
/iptables-save
233 rm -f
$(TARGET_DIR
)/usr
/sbin
/iptables-restore
234 rm -f
$(TARGET_DIR
)/usr
/sbin
/ip6tables
236 ######################################################################
238 openwrt-linux.trx
: openwrt-prune squashfsroot
239 $(WRT54G_DIR
)/release
/tools
/trx
-o openwrt-linux.trx \
240 $(LINUX_DIR
)/$(LINUX_BINLOC
) $(IMAGE
)
242 openwrt-gs-code.bin
: openwrt-linux.trx
243 $(WRT54G_DIR
)/release
/tools
/addpattern
-i openwrt-linux.trx \
244 -o openwrt-gs-code.bin
-g
246 openwrt-g-code.bin
: openwrt-gs-code.bin
247 sed
-e
"1s,^W54S,W54G," < openwrt-gs-code.bin
> openwrt-g-code.bin
249 openwrt-code.bin
: openwrt-gs-code.bin openwrt-g-code.bin
251 ######################################################################
254 tar cjf buildroot-openwrt.
tar.bz2 \
261 sources
/uClibc.config \
262 sources
/uClibc.config-openwrt \
263 sources
/busybox-openwrt-
*.patch \
264 sources
/busybox.config \
265 sources
/busybox.config-openwrt \
266 sources
/dnsmasq1-openwrt.patch \
267 sources
/iptables-openwrt-extensions.patch \
268 sources
/openwrt-wrt54g-linux.config \
269 sources
/openwrt-wrt54g-
*.patch \
270 sources
/openwrt-diag.c