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
=wrt54gs
.2.07.1.tgz
40 WRT54G_SITE
=http
://www.linksys.com
/support
/opensourcecode
/wrt54gs
/2.07.1
41 WRT54G_DIR
=$(BUILD_DIR
)/WRT54GS
43 LINUX_DIR
=$(WRT54G_DIR
)/release
/src
/linux
/linux
45 LINUX_BINLOC
=arch
/mips
/brcm-boards
/bcm947xx
/compressed
/vmlinuz
47 TARGET_MODULES_DIR
:=$(TARGET_DIR
)/lib
/modules
/2.4.20
49 $(LINUX_DIR
)/.unpacked
: $(WRT54G_DIR
)/.prepared
50 -(cd
$(BUILD_DIR
); ln
-sf
$(LINUX_DIR
) linux
)
51 touch
$(LINUX_DIR
)/.unpacked
53 $(LINUX_DIR
)/.patched
: $(WRT54G_DIR
)/.prepared
54 $(SOURCE_DIR
)/patch-kernel.sh
$(LINUX_DIR
)/..
/..
$(SOURCE_DIR
)/openwrt
/kernel
/patches
55 # use replacement diag module code
56 cp
-f
$(SOURCE_DIR
)/openwrt
/kernel
/diag.c
$(LINUX_DIR
)/drivers
/net
/diag
/diag_led.c
57 cp
-f
$(SOURCE_DIR
)/openwrt
/kernel
/linux.config
$(LINUX_DIR
)/.config
58 -(cd
$(BUILD_DIR
); ln
-sf
$(LINUX_DIR
) linux
)
59 -(cd
$(LINUX_DIR
)/arch
/mips
/brcm-boards
/bcm947xx
/; \
61 tar jxvf
$(SOURCE_DIR
)/openwrt
/kernel
/compressed-20040531.
tar.bz2
; \
63 touch
$(LINUX_DIR
)/.patched
65 $(LINUX_DIR
)/.configured
: $(LINUX_DIR
)/.patched
$(LINUX_DIR
)/.bbc-patched
$(LINUX_DIR
)/.nf-patched
66 $(SED
) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" $(LINUX_DIR
)/Makefile
67 $(SED
) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" $(LINUX_DIR
)/arch
/mips
/Makefile
68 $(SED
) "s,\-mcpu=,\-mtune=,g;" $(LINUX_DIR
)/arch
/mips
/Makefile
69 make
-C
$(LINUX_DIR
) oldconfig
include/linux
/version.h
70 touch
$(LINUX_DIR
)/.configured
72 $(LINUX_DIR
)/.depend_done
: $(LINUX_DIR
)/.configured
$(GCC_BUILD_DIR2
)/.installed
73 $(MAKE
) -C
$(LINUX_DIR
) dep
74 touch
$(LINUX_DIR
)/.depend_done
76 $(LINUX_DIR
)/$(LINUX_BINLOC
): $(LINUX_DIR
)/.depend_done
77 $(MAKE
) -C
$(LINUX_DIR
) $(LINUX_FORMAT
)
79 openwrt-kmodules.
tar.bz2
: $(LINUX_DIR
)/$(LINUX_BINLOC
)
80 $(MAKE
) -C
$(LINUX_DIR
) modules
81 $(MAKE
) -C
$(LINUX_DIR
) DEPMOD
=/bin
/true \
82 INSTALL_MOD_PATH
=$(LINUX_DIR
)/modules modules_install
83 tar -C
$(LINUX_DIR
)/modules
/lib
-cjf openwrt-kmodules.
tar.bz2 modules
85 openwrt-linux
: $(LINUX_DIR
)/$(LINUX_BINLOC
)
87 $(DL_DIR
)/$(WRT54G_SOURCE
):
88 $(WGET
) -P
$(DL_DIR
) $(WRT54G_SITE
)/$(WRT54G_SOURCE
)
90 $(WRT54G_DIR
)/.source
: $(DL_DIR
)/$(WRT54G_SOURCE
)
91 zcat
$(DL_DIR
)/$(WRT54G_SOURCE
) |
tar -C
$(BUILD_DIR
) -xvf
- WRT54GS
/README.TXT WRT54GS
/release
92 touch
$(WRT54G_DIR
)/.source
94 $(WRT54G_DIR
)/.prepared
: $(WRT54G_DIR
)/.source
95 $(SOURCE_DIR
)/patch-kernel.sh
$(WRT54G_DIR
) $(SOURCE_DIR
)/openwrt
/patches
96 touch
$(WRT54G_DIR
)/.prepared
98 ######################################################################
100 OPENWRT_ROOT_SKEL
:=root.
tar.gz
101 OPENWRT_SITE
=http
://openwrt.ksilebo.net
/cgi-bin
/viewcvs.cgi
/root
103 $(DL_DIR
)/$(OPENWRT_ROOT_SKEL
):
104 $(WGET
) -P
$(DL_DIR
) $(OPENWRT_SITE
)/$(OPENWRT_ROOT_SKEL
)
106 ######################################################################
108 OPENWRT_SRCBASE
:=$(WRT54G_DIR
)/release
/src
109 OPENWRT_SHARED_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/shared
110 OPENWRT_SHARED_TARGET_BINARY
:=usr
/lib
/libshared.so
112 $(TARGET_DIR
)/$(OPENWRT_SHARED_TARGET_BINARY
): $(WRT54G_DIR
)/.source
113 $(MAKE
) -C
$(OPENWRT_SHARED_BUILD_DIR
) -f Makefile-openwrt \
114 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
115 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
116 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/include -Wall -I$(OPENWRT_SRCBASE)/" \
119 openwrt-shared
: $(TARGET_DIR
)/$(OPENWRT_SHARED_TARGET_BINARY
)
121 openwrt-shared-clean
:
122 -$(MAKE
) -C
$(OPENWRT_SHARED_BUILD_DIR
) clean
124 ######################################################################
126 OPENWRT_NVRAM_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/nvram
127 OPENWRT_NVRAM_TARGET_BINARY
:=usr
/sbin
/nvram
129 $(TARGET_DIR
)/$(OPENWRT_NVRAM_TARGET_BINARY
): $(WRT54G_DIR
)/.source
130 $(MAKE
) -C
$(OPENWRT_NVRAM_BUILD_DIR
) \
131 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
132 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
133 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/include -Wall -DOPENWRT_NVRAM" \
137 openwrt-nvram
: $(TARGET_DIR
)/$(OPENWRT_NVRAM_TARGET_BINARY
)
140 -$(MAKE
) -C
$(OPENWRT_NVRAM_BUILD_DIR
) clean
142 ######################################################################
144 OPENWRT_MTD_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/rc
145 OPENWRT_MTD_TARGET_BINARY
:=sbin
/mtd
147 $(TARGET_DIR
)/$(OPENWRT_MTD_TARGET_BINARY
): $(WRT54G_DIR
)/.source
$(TARGET_DIR
)/$(OPENWRT_NVRAM_TARGET_BINARY
) # need libnvram
148 $(MAKE
) -C
$(OPENWRT_MTD_BUILD_DIR
) -f Makefile-openwrt \
149 TOP
=$(OPENWRT_SRCBASE
)/router \
150 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
151 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
152 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/router/shared -I$(OPENWRT_SRCBASE)/include -Wall -I$(OPENWRT_SRCBASE)/" \
155 openwrt-mtd
: $(TARGET_DIR
)/$(OPENWRT_MTD_TARGET_BINARY
)
158 -$(MAKE
) -C
$(OPENWRT_MTD_BUILD_DIR
) clean
160 ######################################################################
162 OPENWRT_WLCONF_BUILD_DIR
:=$(OPENWRT_SRCBASE
)/router
/wlconf
163 OPENWRT_WLCONF_TARGET_BINARY
:=usr
/sbin
/wlconf
165 $(TARGET_DIR
)/$(OPENWRT_WLCONF_TARGET_BINARY
): $(WRT54G_DIR
)/.source
166 $(MAKE
) -C
$(OPENWRT_WLCONF_BUILD_DIR
) \
167 TOP
=$(OPENWRT_SRCBASE
)/router \
168 SRCBASE
=$(OPENWRT_SRCBASE
) INSTALLDIR
=$(TARGET_DIR
) \
169 CC
=$(TARGET_CC
) LD
=$(TARGET_CROSS
)ld STRIP
="$(STRIP)" \
170 CFLAGS
="$(TARGET_CFLAGS) -I. -I$(OPENWRT_SRCBASE)/router/shared -I$(OPENWRT_SRCBASE)/include -Wall" \
174 openwrt-wlconf
: $(TARGET_DIR
)/$(OPENWRT_WLCONF_TARGET_BINARY
)
176 openwrt-wlconf-clean
:
177 -$(MAKE
) -C
$(OPENWRT_WLCONF_BUILD_DIR
) clean
179 ######################################################################
183 mkdir
-p
$(TARGET_DIR
)/tmp
184 chmod a
+rwxt
$(TARGET_DIR
)/tmp
185 ln
-sf
/tmp
$(TARGET_DIR
)/var
186 rm -f
$(TARGET_DIR
)/usr
/tmp
187 ln
-sf ..
/tmp
$(TARGET_DIR
)/usr
/tmp
189 mkdir
-p
$(TARGET_DIR
)/dev
191 mkdir
-p
$(TARGET_DIR
)/etc
192 ln
-sf
/tmp
/resolv.conf
$(TARGET_DIR
)/etc
/resolv.conf
194 mkdir
-p
$(TARGET_DIR
)/mnt
195 mkdir
-p
$(TARGET_DIR
)/proc
196 mkdir
-p
$(TARGET_DIR
)/jffs
197 mkdir
-p
$(TARGET_DIR
)/rom
199 mkdir
-p
$(TARGET_MODULES_DIR
)
200 cp
$(LINUX_DIR
)/drivers
/net
/wl
/wl.o
$(TARGET_MODULES_DIR
)
201 #cp $(LINUX_DIR)/drivers/net/et.4702/et.4702.o $(TARGET_MODULES_DIR)
202 cp
$(LINUX_DIR
)/drivers
/net
/et
/et.o
$(TARGET_MODULES_DIR
)
203 cp
$(LINUX_DIR
)/drivers
/net
/diag
/diag.o
$(TARGET_MODULES_DIR
)
205 ######################################################################
208 -@find
$(TARGET_DIR
) -type f
-perm
+111 | xargs
$(STRIP
) 2>/dev
/null || true
;
209 # remove unneeded uClibc libs
210 rm -rf
$(TARGET_DIR
)/lib
/libthread_db
*
211 rm -rf
$(TARGET_DIR
)/lib
/libpthread
*
212 # remove unneeded uClibc utils
213 rm -f
$(TARGET_DIR
)/sbin
/ldconfig
214 rm -f
$(TARGET_DIR
)/usr
/bin
/ldd
215 # remove other unneeded files
216 rm -f
$(TARGET_DIR
)/usr
/sbin
/iptables-save
217 rm -f
$(TARGET_DIR
)/usr
/sbin
/iptables-restore
218 rm -f
$(TARGET_DIR
)/usr
/sbin
/ip6tables
220 ######################################################################
223 $(CC
) -o
$(WRT54G_DIR
)/release
/tools
/trx
$(SOURCE_DIR
)/openwrt
/tools
/trx.c
224 $(CC
) -o
$(WRT54G_DIR
)/release
/tools
/addpattern
$(SOURCE_DIR
)/openwrt
/tools
/addpattern.c
226 openwrt-linux.trx
: openwrt-prune squashfsroot wrt-tools
227 $(WRT54G_DIR
)/release
/tools
/trx
-o openwrt-linux.trx \
228 $(LINUX_DIR
)/$(LINUX_BINLOC
) $(IMAGE
)
230 openwrt-gs-code.bin
: openwrt-linux.trx
231 $(WRT54G_DIR
)/release
/tools
/addpattern
-i openwrt-linux.trx \
232 -o openwrt-gs-code.bin
-g
234 openwrt-g-code.bin
: openwrt-gs-code.bin
235 sed
-e
"1s,^W54S,W54G," < openwrt-gs-code.bin
> openwrt-g-code.bin
237 openwrt-code.bin
: openwrt-gs-code.bin openwrt-g-code.bin
239 ######################################################################