Updated wl and nas utilities
[tomato.git] / release / src / router / Makefile
blob12fe853226939c432283b8ba910e6ef15bcc7b78
2 # Broadcom Linux Router Makefile
4 # Copyright 2005, Broadcom Corporation
5 # All Rights Reserved.
7 # THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8 # KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9 # SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10 # FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
14 include common.mak
16 # TOMATO_EXPERIMENTAL=1
21 SEP=echo "\033[41;1m $@ \033[0m"
24 # standard packages
26 obj-y += nvram
27 obj-y += shared
28 obj-y += prebuilt
29 obj-y += igmpproxy
30 obj-y += iptables
31 obj-y += rc
32 obj-y += iproute2
33 obj-y += rom
34 obj-y += others
35 obj-y += busybox
36 obj-y += httpd
37 obj-y += www
38 obj-y += bridge
39 obj-y += dnsmasq
40 obj-y += etc
41 obj-y += vlan
42 obj-y += ppp
43 obj-y += ttcp
44 obj-y += ntpc
45 obj-y += rstats
47 # !!TB - updated Broadcom Wireless driver
48 obj-y += et
49 obj-y += libbcmcrypto
50 obj-y += wlconf
52 obj-y += mssl
53 obj-y += mdu
55 obj-y += miniupnpd
56 # obj-y += upnp
60 # configurable packages
62 obj-$(TCONFIG_L2TP) += rp-l2tp
63 obj-$(TCONFIG_PPTP) += pptp-client
64 obj-$(TCONFIG_HTTPS) += openssl
65 obj-$(TCONFIG_HTTPS) += matrixssl
66 obj-$(TCONFIG_SSH) += dropbear
67 obj-$(TCONFIG_ZEBRA) += zebra
68 # obj-$(TCONFIG_IPP2P) += ipp2p
70 ifeq ($(TCONFIG_L2TP),y)
71 NEED_PPPD = y
72 endif
73 ifeq ($(TCONFIG_PPTP),y)
74 NEED_PPPD = y
75 endif
76 obj-$(NEED_PPPD) += pppd
79 obj-clean := $(foreach obj,$(obj-y) $(obj-n),$(obj)-clean)
80 obj-install := $(foreach obj,$(obj-y),$(obj)-install)
85 # Basic rules
88 all: clean-build $(obj-y) kernel
91 kernel: $(LINUXDIR)/.config
92 @$(SEP)
94 @if ! grep -q "CONFIG_EMBEDDED_RAMDISK=y" $(LINUXDIR)/.config ; then \
95 $(MAKE) -C $(LINUXDIR) zImage ; \
97 if grep -q "CONFIG_MODULES=y" $(LINUXDIR)/.config ; then \
98 $(MAKE) -C $(LINUXDIR) modules ; \
102 kmod: dummy
103 $(MAKE) -C $(LINUXDIR) modules
105 testfind:
106 cd $(TARGETDIR)/lib/modules/* && find -name "*.o" -exec mv -i {} . \; || true
107 cd $(TARGETDIR)/lib/modules/* && find -type d -delete || true
109 install package: $(obj-install) $(LINUXDIR)/.config
110 @$(SEP)
112 install -d $(TARGETDIR)
115 # kernel modules
116 $(MAKE) -C $(LINUXDIR) modules_install DEPMOD=/bin/true INSTALL_MOD_PATH=$(TARGETDIR)
117 find $(TARGETDIR)/lib/modules -name *.o -exec mipsel-linux-strip --strip-unneeded {} \;
119 -cd $(TARGETDIR)/lib/modules/*/kernel/drivers/net && mv diag/* . && rm -rf diag
121 # nice and clean
122 -cd $(TARGETDIR)/lib/modules/*/kernel/drivers/net && mv et.4702/* . && rm -rf et.4702 || true
123 cd $(TARGETDIR)/lib/modules/*/kernel/drivers/net && mv et/* . && rm -rf et
124 cd $(TARGETDIR)/lib/modules/*/kernel/drivers/net && mv wl/* . && rm -rf wl
125 cd $(TARGETDIR)/lib/modules/*/kernel/fs && mv cifs/* . && rm -rf cifs
126 cd $(TARGETDIR)/lib/modules/*/kernel/fs && mv jffs2/* . && rm -rf jffs2
127 cd $(TARGETDIR)/lib/modules/*/kernel/lib && mv zlib_inflate/* . && rm -rf zlib_inflate
128 cd $(TARGETDIR)/lib/modules/*/kernel/lib && mv zlib_deflate/* . && rm -rf zlib_deflate
129 rm -rf $(TARGETDIR)/lib/modules/*/pcmcia
131 # misc
132 for dir in $(wildcard $(patsubst %,$(INSTALLDIR)/%,$(obj-y))) ; do \
133 (cd $${dir} && tar cpf - .) | (cd $(TARGETDIR) && tar xpf -) \
134 done
136 ifneq ($(TCONFIG_JFFS2),y)
137 rm -f $(TARGETDIR)/lib/modules/*/kernel/fs/jffs2.o
138 rm -rf $(TARGETDIR)/lib/modules/*/kernel/lib/zlib_*
139 endif
141 ifneq ($(TCONFIG_CIFS),y)
142 rm -f $(TARGETDIR)/lib/modules/*/kernel/fs/cifs.o
143 endif
145 ifneq ($(TCONFIG_L7),y)
146 rm -f $(TARGETDIR)/lib/modules/*/kernel/net/ipv4/netfilter/ipt_layer7.o
147 rm -f $(TARGETDIR)/usr/lib/iptables/libipt_layer7.so
148 endif
150 # separated extra stuff
151 @rm -rf $(PLATFORMDIR)/extras
152 @mkdir $(PLATFORMDIR)/extras
153 @mv $(TARGETDIR)/lib/modules/*/kernel/net/ipv4/ip_gre.o $(PLATFORMDIR)/extras/
154 @mv $(TARGETDIR)/lib/modules/*/kernel/drivers/net/tun.o $(PLATFORMDIR)/extras/
156 # uClibc
157 install $(LIBDIR)/ld-uClibc.so.0 $(TARGETDIR)/lib/
158 install $(LIBDIR)/libcrypt.so.0 $(TARGETDIR)/lib/
159 install $(LIBDIR)/libpthread.so.0 $(TARGETDIR)/lib/
160 install $(LIBDIR)/libgcc_s.so.1 $(TARGETDIR)/lib/
161 $(STRIP) $(TARGETDIR)/lib/libgcc_s.so.1
162 install $(LIBDIR)/libc.so.0 $(TARGETDIR)/lib/
163 install $(LIBDIR)/libdl.so.0 $(TARGETDIR)/lib/
164 install $(LIBDIR)/libm.so.0 $(TARGETDIR)/lib/
165 install $(LIBDIR)/libnsl.so.0 $(TARGETDIR)/lib/
166 ifeq ($(TCONFIG_SSH),y)
167 install $(LIBDIR)/libutil.so.0 $(TARGETDIR)/lib/
168 endif
170 @cd $(TARGETDIR) && $(TOP)/others/rootprep.sh
172 @echo ---
173 busybox/examples/depmod-t.pl -k $(LINUXDIR)/vmlinux -b $(TARGETDIR)/lib/modules/*/
174 @mv $(TARGETDIR)/lib/modules/*/modules.dep $(TARGETDIR)/lib/modules/
175 @echo ---
177 @rm -f $(TARGETDIR)/lib/modules/*/build
179 @../btools/libfoo.pl
180 @chmod 0555 $(TARGETDIR)/lib/*.so*
183 @mkdir -p $(TARGETDIR)/rom/etc/l7-protocols
184 ifeq ($(TCONFIG_L7PAT),y)
185 @cd layer7 && ./squish.sh
186 cp layer7/squished/*.pat $(TARGETDIR)/rom/etc/l7-protocols
187 endif
189 @$(MAKE) -C $(LINUXDIR)/scripts/squashfs mksquashfs-lzma
190 @$(LINUXDIR)/scripts/squashfs/mksquashfs-lzma $(TARGETDIR) $(PLATFORMDIR)/target.image
192 # Package kernel and filesystem
193 # if grep -q "CONFIG_EMBEDDED_RAMDISK=y" $(LINUXDIR)/.config ; then \
194 # cp $(PLATFORMDIR)/target.image $(LINUXDIR)/arch/mips/ramdisk/$${CONFIG_EMBEDDED_RAMDISK_IMAGE} ; \
195 # $(MAKE) -C $(LINUXDIR) zImage ; \
196 # else \
197 # cp $(LINUXDIR)/arch/mips/brcm-boards/bcm947xx/compressed/vmlinuz $(PLATFORMDIR)/ ; \
198 # trx -o $(PLATFORMDIR)/linux.trx $(PLATFORMDIR)/vmlinuz $(PLATFORMDIR)/target.image ; \
199 # fi
201 # Pad self-booting Linux to a 64 KB boundary
202 # cp $(LINUXDIR)/arch/mips/brcm-boards/bcm947xx/compressed/zImage $(PLATFORMDIR)/
203 # dd conv=sync bs=64k < $(PLATFORMDIR)/zImage > $(PLATFORMDIR)/linux.bin
204 # Append filesystem to self-booting Linux
205 # cat $(PLATFORMDIR)/target.image >> $(PLATFORMDIR)/linux.bin
210 # cleaners
213 clean: clean-build $(obj-clean)
214 rm -rf layer7/squished
216 clean-build: dummy
217 rm -rf $(TARGETDIR)
218 rm -rf $(INSTALLDIR)
219 rm -f $(PLATFORMDIR)/linux.trx $(PLATFORMDIR)/vmlinuz $(PLATFORMDIR)/target.image
220 rm -rf $(PLATFORMDIR)/extras
222 distclean: clean
223 ifneq ($(INSIDE_MAK),1)
224 $(MAKE) -C .. $@ INSIDE_MAK=1
225 endif
228 # configuration
231 CONFIG_IN := config/config.in
233 config/conf config/mconf:
234 @$(MAKE) -C config
236 rconf: config/conf
237 @config/conf $(CONFIG_IN)
239 rmconf: config/mconf
240 @config/mconf $(CONFIG_IN)
242 roldconf: config/conf
243 @config/conf -o $(CONFIG_IN)
245 kconf:
246 @$(MAKE) -C $(LINUXDIR) config
248 kmconf:
249 @$(MAKE) -C $(LINUXDIR) menuconfig
251 koldconf:
252 @$(MAKE) -C $(LINUXDIR) oldconfig
254 config conf: rconf kconf
256 menuconfig mconf: rmconf kmconf
258 oldconfig oldconf: roldconf koldconf
262 # overrides and extra dependencies
265 busybox:
266 @cd busybox && [ -s .config ] || ( cp config.save .config; $(MAKE) oldconfig )
267 @$(MAKE) -C busybox CFLAGS="-Os"
268 @cp busybox/.config busybox/config.save
270 # V=1
272 busybox-install:
273 rm -rf $(INSTALLDIR)/busybox
274 $(MAKE) -C busybox install CONFIG_PREFIX=$(INSTALLDIR)/busybox CFLAGS="-Os"
276 busybox-clean:
277 cd busybox && [ -s .config ] && cp .config config.save
278 $(MAKE) -C busybox distclean
279 cd busybox && mv config.save .config
281 busybox-config:
282 $(MAKE) -C busybox menuconfig
284 busybox-test: dummy
285 $(MAKE) -C busybox objsizes CFLAGS="-Os"
288 httpd: matrixssl shared nvram mssl
289 @$(SEP)
290 @$(MAKE) -C httpd
292 www-install:
293 @$(MAKE) -C www install INSTALLDIR=$(INSTALLDIR)/www TOMATO_EXPERIMENTAL=$(TOMATO_EXPERIMENTAL)
295 matrixssl:
296 @$(SEP)
297 @$(MAKE) -C matrixssl/src
299 matrixssl-install:
300 @true
302 matrixssl-clean:
303 $(MAKE) -C matrixssl/src clean
306 openssl-install:
307 install -D openssl/libcrypto.so $(INSTALLDIR)/openssl/usr/lib/libcrypto.so
308 $(STRIP) $(INSTALLDIR)/openssl/usr/lib/libcrypto.so
310 install -D -m 500 openssl/apps/openssl $(INSTALLDIR)/openssl/usr/sbin/openssl
311 $(STRIP) $(INSTALLDIR)/openssl/usr/sbin/openssl
313 install -D -m 0500 httpd/gencert.sh $(INSTALLDIR)/openssl/usr/sbin/gencert.sh
315 # perl -e 'while (<>) { s/.SECS/time()-(24*60*60)/e; print; }' < httpd/gencert.sh > $(INSTALLDIR)/openssl/usr/sbin/gencert.sh
316 # chmod 0500 $(INSTALLDIR)/openssl/usr/sbin/gencert.sh
318 # install -D openssl/libssl.so $(INSTALLDIR)/openssl/usr/lib/libssl.so
319 # $(STRIP) $(INSTALLDIR)/openssl/usr/lib/libssl.so
321 mssl: matrixssl
323 mdu: shared mssl
325 rc: nvram shared
328 bridge:
329 @$(SEP)
330 @$(MAKE) -C bridge brctl/brctl
332 bridge-install:
333 install -D bridge/brctl/brctl $(INSTALLDIR)/bridge/usr/sbin/brctl
334 $(STRIP) $(INSTALLDIR)/bridge/usr/sbin/brctl
337 dnsmasq-install:
338 install -D dnsmasq/src/dnsmasq $(INSTALLDIR)/dnsmasq/usr/sbin/dnsmasq
339 $(STRIP) $(INSTALLDIR)/dnsmasq/usr/sbin/dnsmasq
341 iptables:
342 @$(SEP)
343 $(MAKE) -C iptables BINDIR=/usr/sbin LIBDIR=/usr/lib KERNEL_DIR=$(LINUXDIR)
345 iptables-install:
346 install -D iptables/iptables $(INSTALLDIR)/iptables/usr/sbin/iptables
347 cd $(INSTALLDIR)/iptables/usr/sbin && \
348 ln -sf iptables iptables-restore
350 install -d $(INSTALLDIR)/iptables/usr/lib/iptables
351 install -D iptables/extensions/*.so $(INSTALLDIR)/iptables/usr/lib/iptables/
353 install -D iptables/libiptc.so $(INSTALLDIR)/iptables/usr/lib/libiptc.so
355 $(STRIP) $(INSTALLDIR)/iptables/usr/sbin/iptables
356 $(STRIP) $(INSTALLDIR)/iptables/usr/lib/iptables/*.so
357 $(STRIP) $(INSTALLDIR)/iptables/usr/lib/libiptc.so
359 iptables-clean:
360 -$(MAKE) -C iptables KERNEL_DIR=$(LINUXDIR) clean
362 ppp:
363 @$(SEP)
364 $(MAKE) -C ppp/pppoecd $* INSTALLDIR=$(INSTALLDIR)/ppp
365 # $(MAKE) -C ppp/pppoecd $* INSTALLDIR=$(INSTALLDIR)/ppp DFLAGS="-DDEBUG -DDEBUGALL"
367 ppp-%:
368 $(MAKE) -C ppp/pppoecd $* INSTALLDIR=$(INSTALLDIR)/ppp
371 upnp: nvram shared iptables
373 miniupnpd: iptables
374 @$(SEP)
375 $(MAKE) -C miniupnpd -f Makefile.tomato
377 miniupnpd-clean:
378 -$(MAKE) -C miniupnpd -f Makefile.tomato clean
380 miniupnpd-install:
381 install -D miniupnpd/miniupnpd $(INSTALLDIR)/miniupnpd/usr/sbin/miniupnpd
382 $(STRIP) $(INSTALLDIR)/miniupnpd/usr/sbin/miniupnpd
384 nvram: shared
386 prebuilt: shared
388 vlan:
389 @$(SEP)
390 @$(MAKE) -C vlan CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP)
392 vlan-install:
393 $(MAKE) -C vlan CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) INSTALLDIR=$(INSTALLDIR) install
396 pptp-client-install:
397 install -D pptp-client/pptp $(INSTALLDIR)/pptp-client/usr/sbin/pptp
398 $(STRIP) $(INSTALLDIR)/pptp-client/usr/sbin/pptp
401 pppd:
402 @$(SEP)
403 @$(MAKE) -C pppd/pppd
405 pppd-clean:
406 $(MAKE) -C pppd/pppd clean
408 pppd-install:
409 install -D pppd/pppd/pppd $(INSTALLDIR)/pppd/usr/sbin/pppd
410 $(STRIP) $(INSTALLDIR)/pppd/usr/sbin/pppd
412 # ipupdate-install:
413 # install -D ipupdate/ez-ipupdate $(INSTALLDIR)/ipupdate/usr/sbin/ez-ipupdate
414 # $(STRIP) $(INSTALLDIR)/ipupdate/usr/sbin/ez-ipupdate
417 zebra:
418 @$(SEP)
419 cd zebra && rm -f config.cache && CC=$(CC) AR=$(AR) RANLIB=$(RANLIB) CFLAGS="-g -Os -Wall" $(CONFIGURE) \
420 --host=mipsel-linux --prefix=/usr/local/zebra \
421 --enable-netlink --disable-ipv6 --disable-ripngd --disable-ospfd --disable-doc \
422 --disable-ospf6d --disable-bgpd --disable-bgpd-announce
423 @$(MAKE) -C zebra CC=$(CC) AR=$(AR) RANLIB=$(RANLIB)
425 zebra-install:
426 install -D zebra/zebra/zebra $(INSTALLDIR)/zebra/usr/sbin/zebra
427 install -D zebra/ripd/ripd $(INSTALLDIR)/zebra/usr/sbin/ripd
428 install -D zebra/lib/libzebra.so $(INSTALLDIR)/zebra/usr/lib/libzebra.so
429 $(STRIP) $(INSTALLDIR)/zebra/usr/sbin/zebra
430 $(STRIP) $(INSTALLDIR)/zebra/usr/sbin/ripd
431 $(STRIP) $(INSTALLDIR)/zebra/usr/lib/libzebra.so
434 rp-l2tp-install:
435 install -d $(INSTALLDIR)/rp-l2tp/usr/lib/l2tp
436 install rp-l2tp/handlers/*.so $(INSTALLDIR)/rp-l2tp/usr/lib/l2tp
437 $(STRIP) $(INSTALLDIR)/rp-l2tp/usr/lib/l2tp/*.so
438 install -D rp-l2tp/handlers/l2tp-control $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tp-control
439 $(STRIP) $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tp-control
440 install -D rp-l2tp/l2tpd $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tpd
441 $(STRIP) $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tpd
444 bpalogin-install:
445 install -D bpalogin/bpalogin $(INSTALLDIR)/bpalogin/usr/sbin/bpalogin
446 $(STRIP) $(INSTALLDIR)/bpalogin/usr/sbin/bpalogin
449 # libnet:
450 # @$(SEP)
451 # @-mkdir -p libnet/lib
452 # @$(MAKE) -C libnet CC=$(CC) AR=$(AR) RANLIB=$(RANLIB)
454 # libpcap:
455 # @$(SEP)
456 # @$(MAKE) -C libpcap CC=$(CC) AR=$(AR) RANLIB=$(RANLIB)
458 libbcm:
459 @[ ! -f libbcm/Makefile ] || $(MAKE) -C libbcm
461 libbcm-install:
462 install -D libbcm/libbcm.so $(INSTALLDIR)/libbcm/usr/lib/libbcm.so
463 $(STRIP) $(INSTALLDIR)/libbcm/usr/lib/libbcm.so
466 iproute2-install:
467 install -D iproute2/tc/tc $(INSTALLDIR)/iproute2/usr/sbin/tc
468 $(STRIP) $(INSTALLDIR)/iproute2/usr/sbin/tc
469 install -D iproute2/ip/ip $(INSTALLDIR)/iproute2/usr/sbin/ip
470 $(STRIP) $(INSTALLDIR)/iproute2/usr/sbin/ip
473 ntpc: nvram shared
476 dropbear: dropbear/config.h
477 @$(SEP)
478 @make -C dropbear PROGRAMS="dropbear dbclient dropbearkey scp" MULTI=1
480 dropbear-install:
481 install -D dropbear/dropbearmulti $(INSTALLDIR)/dropbear/usr/bin/dropbearmulti
482 $(STRIP) $(INSTALLDIR)/dropbear/usr/bin/dropbearmulti
483 cd $(INSTALLDIR)/dropbear/usr/bin && \
484 ln -sf dropbearmulti dropbear && \
485 ln -sf dropbearmulti dropbearconvert && \
486 ln -sf dropbearmulti dropbearkey && \
487 ln -sf dropbearmulti dbclient && \
488 ln -sf dropbearmulti ssh && \
489 ln -sf dropbearmulti scp
491 dropbear-clean:
492 @make -C dropbear clean
494 dropbear/config.h:
495 cd dropbear && CFLAGS="-O2 -Wall" ac_cv_func_logout=no ac_cv_func_logwtmp=no ./configure --host=mipsel-linux --disable-zlib --enable-syslog --disable-lastlog --disable-utmp --disable-utmpx --disable-wtmp --disable-wtmpx --disable-pututline --disable-pututxline --disable-loginfunc --disable-largefile
496 make -C dropbear clean
498 igmpproxy/src/Makefile: igmpproxy/src/Makefile.in
499 cd igmpproxy && CFLAGS="-O2 -Wall" \
500 $(CONFIGURE) --prefix=/usr
502 igmpproxy: igmpproxy/src/Makefile
503 @$(SEP)
504 @$(MAKE) -C igmpproxy/src
506 igmpproxy-install:
507 install -D igmpproxy/src/igmpproxy $(INSTALLDIR)/igmpproxy/usr/sbin/igmpproxy
508 $(STRIP) $(INSTALLDIR)/igmpproxy/usr/sbin/igmpproxy
510 igmpproxy-clean:
511 $(MAKE) -C igmpproxy/src clean
512 rm -f igmpproxy/src/Makefile
515 ebtables: dummy
516 @make -C ebtables
518 ebtables-install: dummy
519 install -D ebtables/ebtables $(INSTALLDIR)/ebtables/usr/sbin/ebtables
521 mkdir -p $(INSTALLDIR)/ebtables/usr/lib/
522 cp ebtables/*.so $(INSTALLDIR)/ebtables/usr/lib/
523 cp ebtables/extensions/*.so $(INSTALLDIR)/ebtables/usr/lib/
525 ebtables-clean:
526 make -C ebtables clean
532 # Generic rules
536 @[ ! -d $* ] || ( $(SEP); $(MAKE) -C $* )
539 %-clean:
540 @-[ ! -d $* ] || $(MAKE) -C $* clean
542 %-install:
543 @[ ! -d $* ] || $(MAKE) -C $* install INSTALLDIR=$(INSTALLDIR)/$*
545 %-build:
546 $(MAKE) $*-clean $*
548 $(obj-y) $(obj-n) $(obj-clean) $(obj-install): dummy
550 .PHONY: all clean distclean mrproper install package
551 .PHONY: conf mconf oldconf kconf kmconf config menuconfig oldconfig
552 .PHONY: dummy libnet libpcap