Kernel 2.6 config
[tomato.git] / release / src / Makefile
blob1631605f018e9dd995e1d08084863fb52bf0c9c4
2 # Toplevel Makefile for the BCM947xx Linux Router release
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.
12 # $Id: Makefile,v 1.53 2005/04/25 03:54:37 tallest Exp $
15 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
17 # To rebuild everything and all configurations:
18 # make distclean
19 # make libc (usually doesn't need to be done ???)
20 # make V1=whatever V2=sub-whatever a b c d m
21 # The 1st "whatever" would be the build number, the sub-whatever would
22 # be the update to the version.
24 # Example:
25 # make V1=8516 V2="jffs.1" a b c d m s
27 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31 export SRCBASE := $(shell pwd)
32 RELEASEDIR := $(shell (cd $(SRCBASE)/.. && pwd -P))
33 PATH := $(RELEASEDIR)/tools:$(PATH)
35 include ./target.mak
37 # Normally you'd do something like "make V1=8516 V2=sub-ver a b c d"
38 # But if you don't give anything for "V1", it'll get a default from tomato_version.
39 V1 ?= "--def"
41 -include tomato_profile.mak
44 # This could be simpler by just using $(TOMATO_PROFILE_NAME) like it used to be,
45 # but that's fragile. If you make one certain innocuous change elsewhere in the
46 # makefile(s), the build will silently be wrong. This way it works properly every time.
47 current_BUILD_NAME = $(strip $(shell grep "^TOMATO_BUILD_NAME" tomato_profile.mak | cut -d"=" -f2))
48 current_BUILD_DESC = $(strip $(shell grep "^TOMATO_BUILD_DESC" tomato_profile.mak | cut -d"=" -f2))
49 current_BUILD_USB = $(strip $(shell grep "^TOMATO_BUILD_USB" tomato_profile.mak | cut -d"=" -f2))
51 uppercase_N = $(shell echo $(N) | tr a-z A-Z)
52 lowercase_N = $(shell echo $(N) | tr A-Z a-z)
53 uppercase_B = $(shell echo $(B) | tr a-z A-Z)
54 lowercase_B = $(shell echo $(B) | tr A-Z a-z)
57 ifeq ($(TOMATO_BUILD),)
59 all:
60 $(MAKE) libc
61 $(MAKE) a
63 else
65 all:
66 @echo ""
67 @echo ""
68 @echo "Building $(current_BUILD_USB) $(V1)$(V2) $(current_BUILD_DESC) $(current_BUILD_NAME) with $(TOMATO_PROFILE_NAME) Profile"
69 @btools/uversion.pl --gen $(V1) $(V2) "ND" $(current_BUILD_USB) $(current_BUILD_DESC)
70 @echo ""
71 @echo ""
73 @-mkdir image
74 @$(MAKE) -C router all
75 @$(MAKE) -C router install
76 @$(MAKE) -C btools
78 @rm -f image/tomato-ND$(current_BUILD_USB)-$(V1)$(V2)-$(current_BUILD_DESC).trx
79 @echo "" >>fpkg.log
80 @echo "***********************" `date` "************************" >>fpkg.log
81 @cat router/shared/tomato_version >>fpkg.log
82 @echo "" >>fpkg.log
83 @cat router/target.info >>fpkg.log
84 ifeq ($(wildcard include/bcm20xx.h),)
85 @btools/fpkg -i lzma-loader/loader.gz -i $(LINUXDIR)/arch/mips/brcm-boards/bcm947xx/compressed/vmlinuz -i router/mipsel-uclibc/target.image \
86 -t image/tomato.trx \
87 -l W54G,image/WRT54G_WRT54GL.bin \
88 -l W54S,image/WRT54GS.bin \
89 -l W54s,image/WRT54GSv4.bin \
90 -l W54U,image/WRTSL54GS.bin \
91 -m 0x10577050,image/WR850G.bin \
92 | tee -a fpkg.log
93 else
94 @btools/fpkg -i lzma-loader/loader.gz -i $(LINUXDIR)/arch/mips/brcm-boards/bcm947xx/compressed/vmlinuz -i router/mipsel-uclibc/target.image \
95 -t image/tomato-ND$(current_BUILD_USB)-$(V1)$(V2)-$(current_BUILD_DESC).trx | tee -a fpkg.log
96 endif
98 @cp fpkg.log image/fpkg-$(V1)$(V2).log
99 @echo ""
100 @echo "-----------------"
101 @echo `cat router/shared/tomato_version` " ready"
102 @echo "-----------------"
103 ifneq ($(NOVERSION),1)
104 @cp router/shared/tomato_version router/shared/tomato_version_last
105 @btools/uversion.pl --bump
106 endif
107 endif
111 clean:
112 @touch router/.config
113 @rm -f router/config_[a-z]
114 @rm -f router/busybox/config_[a-z]
115 @$(MAKE) -C router $@
116 @-rmdir router/mipsel-uclibc
118 cleanimage:
119 @rm -f fpkg.log
120 @rm -fr image/*
121 @rm -f router/.config
122 @touch router/.config
123 @-mkdir image
125 cleantools:
126 @$(MAKE) -C $(LINUXDIR)/scripts/squashfs clean
127 @$(MAKE) -C btools clean
129 cleankernel:
130 @cd $(LINUXDIR) && \
131 mv .config save-config && \
132 $(MAKE) distclean; \
133 cp -p save-config .config
135 distclean: clean cleanimage cleankernel cleantools cleanlibc
136 ifneq ($(INSIDE_MAK),1)
137 @$(MAKE) -C router $@ INSIDE_MAK=1
138 endif
139 mv router/busybox/.config busybox-saved-config
140 @$(MAKE) -C router/busybox distclean
141 @rm -f router/busybox/config_current || true
142 @cp -p busybox-saved-config router/busybox/.config
143 @cp -p router/busybox/.config router/busybox/config_current
144 @rm -f router/config_current || true
145 @rm -f router/.config.cmd router/.config.old router/.config
146 @rm -f router/libfoo_xref.txt
147 @rm -f tomato_profile.mak router/shared/tomato_profile.h
148 @touch tomato_profile.mak
149 @touch router/shared/tomato_profile.h
152 prepk:
153 $(MAKE) -C $(LINUXDIR) oldconfig dep
155 what:
156 @echo ""
157 @echo "$(current_BUILD_DESC)-$(current_BUILD_NAME)-$(TOMATO_PROFILE_NAME) Profile"
158 @echo ""
161 # The methodology for making the different builds is to
162 # copy the "base" config file to the "target" config file in
163 # the appropriate directory, and then edit it by removing and
164 # inserting the desired configuration lines.
165 # You can't just delete the "whatever=y" line, you must have
166 # a "...is not set" line, or the make oldconfig will stop and ask
167 # what to do.
169 # $(1) - router/busybox/config_$@
171 define BusyboxExtraOptions
172 @sed -i "/CONFIG_UNZIP/d" $(1)
173 @echo "CONFIG_UNZIP=y" >>$(1)
174 @sed -i "/CONFIG_FEATURE_LS_COLOR/d" $(1)
175 @echo "CONFIG_FEATURE_LS_COLOR=y" >>$(1)
176 @sed -i "/CONFIG_FEATURE_LS_COLOR_IS_DEFAULT/d" $(1)
177 @echo "CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y" >>$(1)
178 @sed -i "/CONFIG_FEATURE_SORT_BIG/d" $(1)
179 @echo "CONFIG_FEATURE_SORT_BIG=y" >>$(1)
180 @( \
181 if [ "$(CONFIG_LINUX26)" = "y" ]; then \
182 sed -i "/CONFIG_FEATURE_WGET_STATUSBAR/d" $(1); \
183 echo "CONFIG_FEATURE_WGET_STATUSBAR=y" >>$(1); \
184 sed -i "/CONFIG_FEATURE_VERBOSE_USAGE/d" $(1); \
185 echo "CONFIG_FEATURE_VERBOSE_USAGE=y" >>$(1); \
186 fi; \
188 endef
190 define BusyboxExtraUSBOptions
191 @sed -i "/CONFIG_E2FSCK/d" $(1)
192 @echo "CONFIG_E2FSCK=y" >>$(1)
193 @sed -i "/CONFIG_MKE2FS/d" $(1)
194 @echo "CONFIG_MKE2FS=y" >>$(1)
195 @sed -i "/CONFIG_FDISK/d" $(1)
196 @echo "CONFIG_FDISK=y" >>$(1)
197 @sed -i "/CONFIG_FEATURE_FDISK_WRITABLE/d" $(1)
198 @echo "CONFIG_FEATURE_FDISK_WRITABLE=y" >>$(1)
199 @sed -i "/CONFIG_MKFS_VFAT/d" $(1)
200 @echo "CONFIG_MKFS_VFAT=y" >>$(1)
201 @sed -i "/CONFIG_MKSWAP/d" $(1)
202 @echo "CONFIG_MKSWAP=y" >>$(1)
203 endef
205 define BusyboxNoUSBOptions
206 @sed -i "/CONFIG_FEATURE_MOUNT_LOOP/d" $(1)
207 @echo "# CONFIG_FEATURE_MOUNT_LOOP is not set" >>$(1)
208 @sed -i "/CONFIG_FEATURE_DEVFS/d" $(1)
209 @echo "# CONFIG_FEATURE_DEVFS is not set" >>$(1)
210 @sed -i "/CONFIG_FEATURE_MOUNT_LABEL/d" $(1)
211 @echo "# CONFIG_FEATURE_MOUNT_LABEL is not set" >>$(1)
212 @sed -i "/CONFIG_FEATURE_MOUNT_FSTAB/d" $(1)
213 @echo "# CONFIG_FEATURE_MOUNT_FSTAB is not set" >>$(1)
214 @sed -i "/CONFIG_VOLUMEID/d" $(1)
215 @echo "# CONFIG_VOLUMEID is not set" >>$(1)
216 @sed -i "/CONFIG_BLKID/d" $(1)
217 @echo "# CONFIG_BLKID is not set" >>$(1)
218 @sed -i "/CONFIG_SWAPONOFF/d" $(1)
219 @echo "# CONFIG_SWAPONOFF is not set" >>$(1)
220 endef
222 ifeq ($(CONFIG_LINUX26),y)
223 define BusyboxKernelConfig
224 @sed -i "/CONFIG_FEATURE_2_4_MODULES/d" $(1)
225 @echo "# CONFIG_FEATURE_2_4_MODULES is not set" >>$(1)
226 @sed -i "/CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT/d" $(1)
227 @echo "CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y" >>$(1)
228 @sed -i "/CONFIG_FEATURE_DEVFS/d" $(1)
229 @echo "# CONFIG_FEATURE_DEVFS is not set" >>$(1)
230 @sed -i "/CONFIG_MKNOD/d" $(1)
231 @echo "CONFIG_MKNOD=y" >>$(1)
232 endef
233 else
234 define BusyboxKernelConfig
235 endef
236 endif
238 # $(1) - linux/linux[-2.6]/config_$@
240 ifeq ($(CONFIG_LINUX26),y)
241 define KernelConfigMips
242 @( \
243 if [ "$(MIPS32)" = "r2" ]; then \
244 sed -i "/CONFIG_CPU_MIPS32_R1/d" $(1); \
245 echo "# CONFIG_CPU_MIPS32_R1 is not set" >>$(1); \
246 sed -i "/CONFIG_CPU_MIPS32_R2/d" $(1); \
247 echo "CONFIG_CPU_MIPS32_R2=y" >>$(1); \
248 sed -i "/CONFIG_CPU_MIPSR1/d" $(1); \
249 echo "CONFIG_CPU_MIPSR2=y" >>$(1); \
250 fi; \
251 if [ "$(BCM57)" = "y" ]; then \
252 sed -i "/CONFIG_BCM57XX/d" $(1); \
253 echo "CONFIG_BCM57XX=m" >>$(1); \
254 fi; \
256 endef
257 else
258 define KernelConfigMips
259 # nothing for kernel 2.4
260 endef
261 endif
263 ## Make the "normal" build
265 @cp router/config_base router/config_$@
266 @cp router/busybox/config_base router/busybox/config_$@
267 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
269 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
270 $(call BusyboxKernelConfig, router/busybox/config_$@)
272 @$(MAKE) setprofile N=$(TPROFILE) B=A DESC="Std" USB="USB"
273 @$(MAKE) all
275 ## Make the "normal but without SSH" build
277 @cp router/config_base router/config_$@
278 @cp router/busybox/config_base router/busybox/config_$@
279 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
281 @sed -i "/TCONFIG_SSH/d" router/config_$@
282 @echo "# TCONFIG_SSH is not set" >>router/config_$@
284 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
285 $(call BusyboxKernelConfig, router/busybox/config_$@)
287 @$(MAKE) setprofile N=$(TPROFILE) B=B DESC="No SSH" USB="USB"
288 @$(MAKE) all
290 ## Make the "normal but without cifs" build
292 @cp router/config_base router/config_$@
293 @cp router/busybox/config_base router/busybox/config_$@
294 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
296 @sed -i "/TCONFIG_CIFS/d" router/config_$@
297 @echo "# TCONFIG_CIFS is not set" >>router/config_$@
299 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
300 $(call BusyboxKernelConfig, router/busybox/config_$@)
302 @sed -i "/CONFIG_FEATURE_MOUNT_CIFS/d" router/busybox/config_$@
303 @echo "# CONFIG_FEATURE_MOUNT_CIFS is not set" >>router/busybox/config_$@
305 @$(MAKE) setprofile N=$(TPROFILE) B=C DESC="No CIFS" USB="USB"
306 @$(MAKE) all
308 ## Make the "normal but without SAMBA" build
310 @cp router/config_base router/config_$@
311 @cp router/busybox/config_base router/busybox/config_$@
312 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
314 @sed -i "/TCONFIG_SAMBASRV/d" router/config_$@
315 @echo "# TCONFIG_SAMBASRV is not set" >>router/config_$@
317 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
318 $(call BusyboxKernelConfig, router/busybox/config_$@)
320 @sed -i "/CONFIG_FEATURE_MOUNT_LOOP/d" router/busybox/config_$@
321 @echo "# CONFIG_FEATURE_MOUNT_LOOP is not set" >>router/busybox/config_$@
322 @sed -i "/CONFIG_AWK/d" router/busybox/config_$@
323 @echo "# CONFIG_AWK is not set" >>router/busybox/config_$@
324 @sed -i "/CONFIG_FEATURE_DEVFS/d" router/busybox/config_$@
325 @echo "# CONFIG_FEATURE_DEVFS is not set" >>router/busybox/config_$@
326 @sed -i "/CONFIG_BLKID/d" router/busybox/config_$@
327 @echo "# CONFIG_BLKID is not set" >>router/busybox/config_$@
328 @sed -i "/CONFIG_ARPING/d" router/busybox/config_$@
329 @echo "# CONFIG_ARPING is not set" >>router/busybox/config_$@
331 @$(MAKE) setprofile N=$(TPROFILE) B=D DESC="Lite" USB="USB"
332 @$(MAKE) all
334 ## Make the "normal with Extras + VPN" build
336 @cp router/config_base router/config_$@
337 @cp router/busybox/config_base router/busybox/config_$@
338 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
340 @sed -i "/TCONFIG_LZO/d" router/config_$@
341 @sed -i "/TCONFIG_OPENVPN/d" router/config_$@
342 @echo "TCONFIG_LZO=y" >>router/config_$@
343 @echo "TCONFIG_OPENVPN=y" >>router/config_$@
344 @sed -i "/TCONFIG_USB_EXTRAS/d" router/config_$@
345 @echo "TCONFIG_USB_EXTRAS=y" >>router/config_$@
346 @sed -i "/TCONFIG_NTFS/d" router/config_$@
347 @echo "TCONFIG_NTFS=y" >>router/config_$@
349 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
350 $(call BusyboxExtraOptions, router/busybox/config_$@)
351 $(call BusyboxExtraUSBOptions, router/busybox/config_$@)
352 $(call BusyboxKernelConfig, router/busybox/config_$@)
354 @$(MAKE) setprofile N=$(TPROFILE) B=E DESC="VPN" USB="USB"
355 @$(MAKE) all
357 ## Make the "normal with Extras" build
359 @cp router/config_base router/config_$@
360 @cp router/busybox/config_base router/busybox/config_$@
361 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
363 @sed -i "/TCONFIG_USB_EXTRAS/d" router/config_$@
364 @echo "TCONFIG_USB_EXTRAS=y" >>router/config_$@
365 @sed -i "/TCONFIG_NTFS/d" router/config_$@
366 @echo "TCONFIG_NTFS=y" >>router/config_$@
368 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
369 $(call BusyboxExtraOptions, router/busybox/config_$@)
370 $(call BusyboxExtraUSBOptions, router/busybox/config_$@)
371 $(call BusyboxKernelConfig, router/busybox/config_$@)
373 @$(MAKE) setprofile N=$(TPROFILE) B=M DESC="Ext" USB="USB"
374 @$(MAKE) all
376 ## Make the "No USB" build
378 @cp router/config_base router/config_$@
379 @cp router/busybox/config_base router/busybox/config_$@
380 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
382 @sed -i "/TCONFIG_SAMBASRV/d" router/config_$@
383 @echo "# TCONFIG_SAMBASRV is not set" >>router/config_$@
384 @sed -i "/TCONFIG_FTP/d" router/config_$@
385 @echo "# TCONFIG_FTP is not set" >>router/config_$@
386 @sed -i "/TCONFIG_USB/d" router/config_$@
387 @echo "# TCONFIG_USB is not set" >>router/config_$@
388 @( \
389 if [ "$(NO_JFFS)" = "y" ]; then \
390 sed -i "/TCONFIG_JFFS2/d" router/config_$@; \
391 echo "# TCONFIG_JFFS2 is not set" >>router/config_$@; \
392 fi; \
395 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
396 $(call BusyboxExtraOptions, router/busybox/config_$@)
397 $(call BusyboxNoUSBOptions, router/busybox/config_$@)
398 $(call BusyboxKernelConfig, router/busybox/config_$@)
400 @$(MAKE) setprofile N=$(TPROFILE) B=S DESC="" USB=""
401 @$(MAKE) all
403 ## Make the "VPN witn no USB support" build
405 @cp router/config_base router/config_$@
406 @cp router/busybox/config_base router/busybox/config_$@
407 @cp $(LINUXDIR)/config_base $(LINUXDIR)/config_$@
409 @sed -i "/TCONFIG_SAMBASRV/d" router/config_$@
410 @echo "# TCONFIG_SAMBASRV is not set" >>router/config_$@
411 @sed -i "/TCONFIG_FTP/d" router/config_$@
412 @echo "# TCONFIG_FTP is not set" >>router/config_$@
413 @sed -i "/TCONFIG_USB/d" router/config_$@
414 @echo "# TCONFIG_USB is not set" >>router/config_$@
415 @sed -i "/TCONFIG_LZO/d" router/config_$@
416 @sed -i "/TCONFIG_OPENVPN/d" router/config_$@
417 @echo "TCONFIG_LZO=y" >>router/config_$@
418 @echo "TCONFIG_OPENVPN=y" >>router/config_$@
420 $(call KernelConfigMips, $(LINUXDIR)/config_$@)
421 $(call BusyboxExtraOptions, router/busybox/config_$@)
422 $(call BusyboxNoUSBOptions, router/busybox/config_$@)
423 $(call BusyboxKernelConfig, router/busybox/config_$@)
425 @$(MAKE) setprofile N=$(TPROFILE) B=V DESC="VPN" USB=""
426 @$(MAKE) all
428 ## Make Mips32r2 Extras build (Asus RT-N16)
429 r2m:
430 @$(MAKE) m MIPS32=r2 BCM57=y
432 ## Make Mips32r2 "no USB" build (Asus RT-N12)
433 r2s:
434 @$(MAKE) s MIPS32=r2 NO_JFFS=y
436 setprofile:
437 echo '#ifndef TOMATO_PROFILE' > router/shared/tomato_profile.h
438 echo '#define TOMATO_$(N) 1' >> router/shared/tomato_profile.h
439 echo '#define PROFILE_G 1' >> router/shared/tomato_profile.h
440 echo '#define PROFILE_N 2' >> router/shared/tomato_profile.h
441 echo '#define TOMATO_PROFILE PROFILE_$(N)' >> router/shared/tomato_profile.h
442 echo '#define TOMATO_PROFILE_NAME "$(N)"' >> router/shared/tomato_profile.h
443 echo '#define TOMATO_BUILD_NAME "$(B)"' >> router/shared/tomato_profile.h
444 echo '#define TOMATO_BUILD_DESC "$(DESC)"' >> router/shared/tomato_profile.h
445 echo '#endif' >> router/shared/tomato_profile.h
447 echo 'TOMATO_$(N) = 1' > tomato_profile.mak
448 echo 'PROFILE_G = 1' >> tomato_profile.mak
449 echo 'PROFILE_N = 2' >> tomato_profile.mak
450 echo 'TOMATO_PROFILE = $$(PROFILE_$(N))' >> tomato_profile.mak
451 echo 'TOMATO_PROFILE_NAME = "$(N)"' >> tomato_profile.mak
452 echo 'TOMATO_BUILD = "$(B)"' >> tomato_profile.mak
453 echo 'TOMATO_BUILD_NAME = "$(B)"' >> tomato_profile.mak
454 echo 'TOMATO_BUILD_DESC = "$(DESC)"' >> tomato_profile.mak
455 echo 'TOMATO_PROFILE_L = $(lowercase_N)' >> tomato_profile.mak
456 echo 'TOMATO_PROFILE_U = $(uppercase_N)' >> tomato_profile.mak
457 echo 'TOMATO_BUILD_USB = "$(USB)"' >> tomato_profile.mak
460 # Note that changes to variables in tomato_profile.mak don't
461 # get propogated to this invocation of make!
462 @echo ""
463 @echo "Using $(N) profile, $(B) build config."
464 @echo ""
466 @cd $(LINUXDIR) ; \
467 rm -f config_current ; \
468 ln -s config_$(lowercase_B) config_current ; \
469 cp -f config_current .config
470 @$(MAKE) -C $(LINUXDIR) oldconfig
472 @cd router ; \
473 rm -f config_current ; \
474 ln -s config_$(lowercase_B) config_current ; \
475 cp config_current .config
476 @$(MAKE) -C router oldconfig
478 @cd router/busybox && \
479 rm -f config_current ; \
480 ln -s config_$(lowercase_B) config_current ; \
481 cp config_current .config
482 @$(MAKE) -C router/busybox oldconfig
484 cleanlibc:
485 # @$(MAKE) -C ../../tools-src/uClibc clean
487 libc: cleanlibc
488 # @$(MAKE) -C ../../tools-src/uClibc
489 # @$(MAKE) -C ../../tools-src/uClibc install
491 help:
492 @echo "a A build (standard)"
493 @echo "b B build (standard minus SSH)"
494 @echo "c C build (standard minus cifs)"
495 @echo "d D build (standard minus Samba server)"
496 @echo "m M build (standard plus extra utilities)"
497 @echo "e E build (standard plus VPN and extra utilities)"
498 @echo "s S build (no USB support)"
499 @echo "v V build (VPN with no USB support)"
500 @echo "..etc.. other build configs"
501 @echo "clean -C router clean"
502 @echo "cleanimage rm -rf image"
503 @echo "cleantools clean btools, mksquashfs"
504 @echo "cleankernel -C Linux distclean (but preserves .config)"
505 @echo "distclean distclean of Linux & busybox (but preserve .configs)"
506 @echo "prepk -C Linux oldconfig dep"
507 @echo "libc -C uClibc clean, all, install"
509 .PHONY: all clean distclean cleanimage cleantools cleankernel prepk what setprofile libc help
510 .PHONY: a b c d m Makefile allversions tomato_profile.mak