Merge Tomato 1.26
[tomato.git] / release / src / router / Makefile
blob97444d107c0ba2be29324d96cff84702998ed409
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=0
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.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
285 httpd: matrixssl shared nvram mssl
286 @$(SEP)
287 @$(MAKE) -C httpd
289 www-install:
290 @$(MAKE) -C www install INSTALLDIR=$(INSTALLDIR)/www TOMATO_EXPERIMENTAL=$(TOMATO_EXPERIMENTAL)
292 matrixssl:
293 @$(SEP)
294 @$(MAKE) -C matrixssl/src
296 matrixssl-install:
297 @true
299 matrixssl-clean:
300 $(MAKE) -C matrixssl/src clean
303 openssl-install:
304 install -D openssl/libcrypto.so $(INSTALLDIR)/openssl/usr/lib/libcrypto.so
305 $(STRIP) $(INSTALLDIR)/openssl/usr/lib/libcrypto.so
307 install -D -m 500 openssl/apps/openssl $(INSTALLDIR)/openssl/usr/sbin/openssl
308 $(STRIP) $(INSTALLDIR)/openssl/usr/sbin/openssl
310 install -D -m 0500 httpd/gencert.sh $(INSTALLDIR)/openssl/usr/sbin/gencert.sh
312 # perl -e 'while (<>) { s/.SECS/time()-(24*60*60)/e; print; }' < httpd/gencert.sh > $(INSTALLDIR)/openssl/usr/sbin/gencert.sh
313 # chmod 0500 $(INSTALLDIR)/openssl/usr/sbin/gencert.sh
315 # install -D openssl/libssl.so $(INSTALLDIR)/openssl/usr/lib/libssl.so
316 # $(STRIP) $(INSTALLDIR)/openssl/usr/lib/libssl.so
318 mssl: matrixssl
320 mdu: shared mssl
322 rc: nvram shared
325 bridge:
326 @$(SEP)
327 @$(MAKE) -C bridge brctl/brctl
329 bridge-install:
330 install -D bridge/brctl/brctl $(INSTALLDIR)/bridge/usr/sbin/brctl
331 $(STRIP) $(INSTALLDIR)/bridge/usr/sbin/brctl
334 dnsmasq-install:
335 install -D dnsmasq/src/dnsmasq $(INSTALLDIR)/dnsmasq/usr/sbin/dnsmasq
336 $(STRIP) $(INSTALLDIR)/dnsmasq/usr/sbin/dnsmasq
338 iptables:
339 @$(SEP)
340 $(MAKE) -C iptables BINDIR=/usr/sbin LIBDIR=/usr/lib KERNEL_DIR=$(LINUXDIR)
342 iptables-install:
343 install -D iptables/iptables $(INSTALLDIR)/iptables/usr/sbin/iptables
344 cd $(INSTALLDIR)/iptables/usr/sbin && \
345 ln -sf iptables iptables-restore
347 install -d $(INSTALLDIR)/iptables/usr/lib/iptables
348 install -D iptables/extensions/*.so $(INSTALLDIR)/iptables/usr/lib/iptables/
350 install -D iptables/libiptc.so $(INSTALLDIR)/iptables/usr/lib/libiptc.so
352 $(STRIP) $(INSTALLDIR)/iptables/usr/sbin/iptables
353 $(STRIP) $(INSTALLDIR)/iptables/usr/lib/iptables/*.so
354 $(STRIP) $(INSTALLDIR)/iptables/usr/lib/libiptc.so
356 iptables-clean:
357 -$(MAKE) -C iptables KERNEL_DIR=$(LINUXDIR) clean
359 ppp:
360 @$(SEP)
361 $(MAKE) -C ppp/pppoecd $* INSTALLDIR=$(INSTALLDIR)/ppp
362 # $(MAKE) -C ppp/pppoecd $* INSTALLDIR=$(INSTALLDIR)/ppp DFLAGS="-DDEBUG -DDEBUGALL"
364 ppp-%:
365 $(MAKE) -C ppp/pppoecd $* INSTALLDIR=$(INSTALLDIR)/ppp
368 upnp: nvram shared iptables
370 miniupnpd: iptables
371 @$(SEP)
372 $(MAKE) -C miniupnpd -f Makefile.tomato
374 miniupnpd-clean:
375 -$(MAKE) -C miniupnpd -f Makefile.tomato clean
377 miniupnpd-install:
378 install -D miniupnpd/miniupnpd $(INSTALLDIR)/miniupnpd/usr/sbin/miniupnpd
379 $(STRIP) $(INSTALLDIR)/miniupnpd/usr/sbin/miniupnpd
381 nvram: shared
383 prebuilt: shared
385 vlan:
386 @$(SEP)
387 @$(MAKE) -C vlan CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP)
389 vlan-install:
390 $(MAKE) -C vlan CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) INSTALLDIR=$(INSTALLDIR) install
393 pptp-client-install:
394 install -D pptp-client/pptp $(INSTALLDIR)/pptp-client/usr/sbin/pptp
395 $(STRIP) $(INSTALLDIR)/pptp-client/usr/sbin/pptp
398 pppd:
399 @$(SEP)
400 @$(MAKE) -C pppd/pppd
402 pppd-clean:
403 $(MAKE) -C pppd/pppd clean
405 pppd-install:
406 install -D pppd/pppd/pppd $(INSTALLDIR)/pppd/usr/sbin/pppd
407 $(STRIP) $(INSTALLDIR)/pppd/usr/sbin/pppd
409 # ipupdate-install:
410 # install -D ipupdate/ez-ipupdate $(INSTALLDIR)/ipupdate/usr/sbin/ez-ipupdate
411 # $(STRIP) $(INSTALLDIR)/ipupdate/usr/sbin/ez-ipupdate
414 zebra:
415 @$(SEP)
416 cd zebra && rm -f config.cache && CC=$(CC) AR=$(AR) RANLIB=$(RANLIB) CFLAGS="-g -Os -Wall" $(CONFIGURE) \
417 --host=mipsel-linux --prefix=/usr/local/zebra \
418 --enable-netlink --disable-ipv6 --disable-ripngd --disable-ospfd --disable-doc \
419 --disable-ospf6d --disable-bgpd --disable-bgpd-announce
420 @$(MAKE) -C zebra CC=$(CC) AR=$(AR) RANLIB=$(RANLIB)
422 zebra-install:
423 install -D zebra/zebra/zebra $(INSTALLDIR)/zebra/usr/sbin/zebra
424 install -D zebra/ripd/ripd $(INSTALLDIR)/zebra/usr/sbin/ripd
425 install -D zebra/lib/libzebra.so $(INSTALLDIR)/zebra/usr/lib/libzebra.so
426 $(STRIP) $(INSTALLDIR)/zebra/usr/sbin/zebra
427 $(STRIP) $(INSTALLDIR)/zebra/usr/sbin/ripd
428 $(STRIP) $(INSTALLDIR)/zebra/usr/lib/libzebra.so
431 rp-l2tp-install:
432 install -d $(INSTALLDIR)/rp-l2tp/usr/lib/l2tp
433 install rp-l2tp/handlers/*.so $(INSTALLDIR)/rp-l2tp/usr/lib/l2tp
434 $(STRIP) $(INSTALLDIR)/rp-l2tp/usr/lib/l2tp/*.so
435 install -D rp-l2tp/handlers/l2tp-control $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tp-control
436 $(STRIP) $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tp-control
437 install -D rp-l2tp/l2tpd $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tpd
438 $(STRIP) $(INSTALLDIR)/rp-l2tp/usr/sbin/l2tpd
441 bpalogin-install:
442 install -D bpalogin/bpalogin $(INSTALLDIR)/bpalogin/usr/sbin/bpalogin
443 $(STRIP) $(INSTALLDIR)/bpalogin/usr/sbin/bpalogin
446 # libnet:
447 # @$(SEP)
448 # @-mkdir -p libnet/lib
449 # @$(MAKE) -C libnet CC=$(CC) AR=$(AR) RANLIB=$(RANLIB)
451 # libpcap:
452 # @$(SEP)
453 # @$(MAKE) -C libpcap CC=$(CC) AR=$(AR) RANLIB=$(RANLIB)
455 libbcm:
456 @[ ! -f libbcm/Makefile ] || $(MAKE) -C libbcm
458 libbcm-install:
459 install -D libbcm/libbcm.so $(INSTALLDIR)/libbcm/usr/lib/libbcm.so
460 $(STRIP) $(INSTALLDIR)/libbcm/usr/lib/libbcm.so
463 iproute2-install:
464 install -D iproute2/tc/tc $(INSTALLDIR)/iproute2/usr/sbin/tc
465 $(STRIP) $(INSTALLDIR)/iproute2/usr/sbin/tc
466 install -D iproute2/ip/ip $(INSTALLDIR)/iproute2/usr/sbin/ip
467 $(STRIP) $(INSTALLDIR)/iproute2/usr/sbin/ip
470 ntpc: nvram shared
473 dropbear: dropbear/config.h
474 @$(SEP)
475 @make -C dropbear PROGRAMS="dropbear dbclient dropbearkey scp" MULTI=1
477 dropbear-install:
478 install -D dropbear/dropbearmulti $(INSTALLDIR)/dropbear/usr/bin/dropbearmulti
479 $(STRIP) $(INSTALLDIR)/dropbear/usr/bin/dropbearmulti
480 cd $(INSTALLDIR)/dropbear/usr/bin && \
481 ln -sf dropbearmulti dropbear && \
482 ln -sf dropbearmulti dropbearconvert && \
483 ln -sf dropbearmulti dropbearkey && \
484 ln -sf dropbearmulti dbclient && \
485 ln -sf dropbearmulti ssh && \
486 ln -sf dropbearmulti scp
488 dropbear-clean:
489 @make -C dropbear clean
491 dropbear/config.h:
492 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
493 make -C dropbear clean
495 igmpproxy/src/Makefile: igmpproxy/src/Makefile.in
496 cd igmpproxy && CFLAGS="-O2 -Wall" \
497 $(CONFIGURE) --prefix=/usr
499 igmpproxy: igmpproxy/src/Makefile
500 @$(SEP)
501 @$(MAKE) -C igmpproxy/src
503 igmpproxy-install:
504 install -D igmpproxy/src/igmpproxy $(INSTALLDIR)/igmpproxy/usr/sbin/igmpproxy
505 $(STRIP) $(INSTALLDIR)/igmpproxy/usr/sbin/igmpproxy
507 igmpproxy-clean:
508 $(MAKE) -C igmpproxy/src clean
509 rm -f igmpproxy/src/Makefile
512 ebtables: dummy
513 @make -C ebtables
515 ebtables-install: dummy
516 install -D ebtables/ebtables $(INSTALLDIR)/ebtables/usr/sbin/ebtables
518 mkdir -p $(INSTALLDIR)/ebtables/usr/lib/
519 cp ebtables/*.so $(INSTALLDIR)/ebtables/usr/lib/
520 cp ebtables/extensions/*.so $(INSTALLDIR)/ebtables/usr/lib/
522 ebtables-clean:
523 make -C ebtables clean
529 # Generic rules
533 @[ ! -d $* ] || ( $(SEP); $(MAKE) -C $* )
536 %-clean:
537 @-[ ! -d $* ] || $(MAKE) -C $* clean
539 %-install:
540 @[ ! -d $* ] || $(MAKE) -C $* install INSTALLDIR=$(INSTALLDIR)/$*
542 %-build:
543 $(MAKE) $*-clean $*
545 $(obj-y) $(obj-n) $(obj-clean) $(obj-install): dummy
547 .PHONY: all clean distclean mrproper install package
548 .PHONY: conf mconf oldconf kconf kmconf config menuconfig oldconfig
549 .PHONY: dummy libnet libpcap