]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - Makefile
Updates rsync source repository
[coffee/buildroot.git] / Makefile
1 # Makefile for buildroot2
2 #
3 # Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
4 # Copyright (C) 2006-2009 by the Buildroot developers <buildroot@uclibc.org>
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #
20
21 #--------------------------------------------------------------
22 # Just run 'make menuconfig', configure stuff, then run 'make'.
23 # You shouldn't need to mess with anything beyond this point...
24 #--------------------------------------------------------------
25 # absolute path
26 TOPDIR:=$(shell pwd)
27 CONFIG_CONFIG_IN=Config.in
28 CONFIG_DEFCONFIG=.defconfig
29 CONFIG=package/config
30 DATE:=$(shell date +%Y%m%d)
31
32 noconfig_targets:=menuconfig xconfig config oldconfig randconfig \
33         defconfig allyesconfig allnoconfig release \
34         randpackageconfig allyespackageconfig allnopackageconfig \
35         source-check help
36
37 # Strip quotes and then whitespaces
38 qstrip=$(strip $(subst ",,$(1)))
39 #"))
40
41 # Variables for use in Make constructs
42 comma:=,
43 empty:=
44 space:=$(empty) $(empty)
45
46 # $(shell find . -name *_defconfig |sed 's/.*\///')
47 # Pull in the user's configuration file
48 ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
49 -include .config
50 endif
51
52 # Override BR2_DL_DIR if shell variable defined
53 ifneq ($(BUILDROOT_DL_DIR),)
54 BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
55 endif
56
57 # To put more focus on warnings, be less verbose as default
58 # Use 'make V=1' to see the full commands
59 ifdef V
60   ifeq ("$(origin V)", "command line")
61     KBUILD_VERBOSE=$(V)
62   endif
63 endif
64 ifndef KBUILD_VERBOSE
65   KBUILD_VERBOSE=0
66 endif
67
68 ifeq ($(KBUILD_VERBOSE),1)
69   quiet=
70   Q=
71 ifndef VERBOSE
72   VERBOSE=1
73 endif
74 else
75   quiet=quiet_
76   Q=@
77 endif
78
79 # we want bash as shell
80 SHELL:=$(shell if [ -x "$$BASH" ]; then echo $$BASH; \
81         else if [ -x /bin/bash ]; then echo /bin/bash; \
82         else echo sh; fi; fi)
83
84 # kconfig uses CONFIG_SHELL
85 CONFIG_SHELL:=$(SHELL)
86
87 export SHELL CONFIG_SHELL quiet Q KBUILD_VERBOSE VERBOSE
88
89 ifndef HOSTAR
90 HOSTAR:=ar
91 endif
92 ifndef HOSTAS
93 HOSTAS:=as
94 endif
95 ifndef HOSTCC
96 HOSTCC:=gcc
97 else
98 endif
99 ifndef HOSTCXX
100 HOSTCXX:=g++
101 endif
102 ifndef HOSTFC
103 HOSTFC:=gfortran
104 endif
105 ifndef HOSTCPP
106 HOSTCPP:=cpp
107 endif
108 ifndef HOSTLD
109 HOSTLD:=ld
110 endif
111 ifndef HOSTLN
112 HOSTLN:=ln
113 endif
114 ifndef HOSTNM
115 HOSTNM:=nm
116 endif
117 HOSTAR:=$(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)
118 HOSTAS:=$(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)
119 HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
120 HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
121 HOSTFC:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo || which g77 || type -p g77 || echo gfortran)
122 HOSTCPP:=$(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp)
123 HOSTLD:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)
124 HOSTLN:=$(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln)
125 HOSTNM:=$(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm)
126
127 ifndef CFLAGS_FOR_BUILD
128 CFLAGS_FOR_BUILD:=-g -O2
129 endif
130 ifndef CXXFLAGS_FOR_BUILD
131 CXXFLAGS_FOR_BUILD:=-g -O2
132 endif
133 ifndef FCFLAGS_FOR_BUILD
134 FCFLAGS_FOR_BUILD:=-g -O2
135 endif
136 export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTFC HOSTLD
137
138
139 ifeq ($(BR2_HAVE_DOT_CONFIG),y)
140
141 # cc-option
142 # Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
143 # sets -march=winchip-c6 if supported else falls back to -march=i586
144 # without checking the latter.
145 cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
146         > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
147
148 #############################################################
149 #
150 # Hide troublesome environment variables from sub processes
151 #
152 #############################################################
153 unexport CROSS_COMPILE
154 unexport ARCH
155
156 #############################################################
157 #
158 # Setup the proper filename extensions for the host
159 #
160 ##############################################################
161 ifneq ($(findstring linux,$(BR2_GNU_BUILD_SUFFIX)),)
162 HOST_EXEEXT:=
163 HOST_LIBEXT:=.a
164 HOST_SHREXT:=.so
165 endif
166 ifneq ($(findstring apple,$(BR2_GNU_BUILD_SUFFIX)),)
167 HOST_EXEEXT:=
168 HOST_LIBEXT:=.a
169 HOST_SHREXT:=.dylib
170 endif
171 ifneq ($(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX)),)
172 HOST_EXEEXT:=.exe
173 HOST_LIBEXT:=.lib
174 HOST_SHREXT:=.dll
175 HOST_LOADLIBES="-lcurses -lintl"
176 export HOST_LOADLIBES
177 endif
178 ifneq ($(findstring mingw,$(BR2_GNU_BUILD_SUFFIX)),)
179 HOST_EXEEXT:=.exe
180 HOST_LIBEXT:=.lib
181 HOST_SHREXT:=.dll
182 endif
183
184 # The preferred type of libs we build for the target
185 ifeq ($(BR2_PREFER_STATIC_LIB),y)
186 LIBTGTEXT=.a
187 #PREFERRED_LIB_FLAGS:=--disable-shared --enable-static
188 else
189 LIBTGTEXT=.so
190 #PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
191 endif
192 PREFERRED_LIB_FLAGS:=--enable-static --enable-shared
193
194 ##############################################################
195 #
196 # The list of stuff to build for the target toolchain
197 # along with the packages to build for the target.
198 #
199 ##############################################################
200 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
201 BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers
202 else
203 BASE_TARGETS:=uclibc
204 endif
205 TARGETS:=
206
207 # silent mode requested?
208 QUIET:=$(if $(findstring s,$(MAKEFLAGS)),-q)
209
210 # Strip off the annoying quoting
211 ARCH:=$(call qstrip,$(BR2_ARCH))
212 ifeq ($(ARCH),xtensa)
213 ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
214 endif
215 WGET:=$(call qstrip,$(BR2_WGET)) $(SPIDER) $(QUIET)
216 SVN_CO:=$(call qstrip,$(BR2_SVN_CO)) $(QUIET)
217 SVN_UP:=$(call qstrip,$(BR2_SVN_UP)) $(QUIET)
218 BZR_CO:=$(call qstrip,$(BR2_BZR_CO)) $(QUIET)
219 BZR_UP:=$(call qstrip,$(BR2_BZR_UP)) $(QUIET)
220 GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
221 ZCAT:=$(call qstrip,$(BR2_ZCAT))
222 BZCAT:=$(call qstrip,$(BR2_BZCAT))
223 TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
224
225 ifneq ("$(origin O)", "command line")
226 O:=output
227 else
228 # other packages might also support Linux-style out of tree builds
229 # with the O=<dir> syntax (E.G. Busybox does). As make automatically
230 # forwards command line variable definitions those packages get very
231 # confused. Fix this by telling make to not do so
232 MAKEOVERRIDES =
233 endif
234
235 # bash prints the name of the directory on 'cd <dir>' if CDPATH is
236 # set, so unset it here to not cause problems. Notice that the export
237 # line doesn't affect the environment of $(shell ..) calls, so
238 # explictly throw away any output from 'cd' here.
239 export CDPATH:=
240 BASE_DIR := $(shell mkdir -p $(O) && cd $(O) >/dev/null && pwd)
241 $(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))
242
243 DL_DIR=$(call qstrip,$(BR2_DL_DIR))
244 ifeq ($(DL_DIR),)
245 DL_DIR:=$(TOPDIR)/dl
246 endif
247
248 BUILD_DIR:=$(BASE_DIR)/build
249
250 GNU_TARGET_SUFFIX:=-$(call qstrip,$(BR2_GNU_TARGET_SUFFIX))
251
252 STAGING_DIR:=$(call qstrip,$(BR2_STAGING_DIR))
253
254 # packages compiled for the host goes here
255 HOST_DIR:=$(BASE_DIR)/host
256
257 # stamp (dependency) files go here
258 STAMP_DIR:=$(BASE_DIR)/stamps
259
260 BINARIES_DIR:=$(BASE_DIR)/images
261 TARGET_DIR:=$(BASE_DIR)/target
262
263 # define values for prepatched source trees for toolchains
264 VENDOR_SITE:=$(call qstrip,$(BR2_VENDOR_SITE))
265 VENDOR_BINUTILS_RELEASE:=$(call qstrip,$(BR2_VENDOR_BINUTILS_RELEASE))
266 VENDOR_GCC_RELEASE:=$(call qstrip,$(BR2_VENDOR_GCC_RELEASE))
267 VENDOR_UCLIBC_RELEASE:=$(call qstrip,$(BR2_VENDOR_UCLIBC_RELEASE))
268 VENDOR_PATCH_DIR:=$(call qstrip,$(BR2_VENDOR_PATCH_DIR))
269
270 BR2_DEPENDS_DIR=$(BUILD_DIR)/buildroot-config
271
272 include toolchain/Makefile.in
273 include package/Makefile.in
274
275 #############################################################
276 #
277 # You should probably leave this stuff alone unless you know
278 # what you are doing.
279 #
280 #############################################################
281
282 all: world
283
284 # In this section, we need .config
285 include .config.cmd
286
287 # We also need the various per-package makefiles, which also add
288 # each selected package to TARGETS if that package was selected
289 # in the .config file.
290 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
291 # avoid pulling in external toolchain which is broken for toplvl parallel builds
292 # Explicit ordering:
293 include toolchain/dependencies/dependencies.mk
294 include toolchain/binutils/binutils.mk
295 include toolchain/ccache/ccache.mk
296 include toolchain/elf2flt/elf2flt.mk
297 include toolchain/gcc/gcc-uclibc-3.x.mk
298 include toolchain/gcc/gcc-uclibc-4.x.mk
299 include toolchain/gdb/gdb.mk
300 include toolchain/kernel-headers/kernel-headers.mk
301 include toolchain/mklibs/mklibs.mk
302 include toolchain/sstrip/sstrip.mk
303 include toolchain/uClibc/uclibc.mk
304 else
305 include toolchain/*/*.mk
306 endif
307
308 ifeq ($(BR2_PACKAGE_LINUX),y)
309 TARGETS+=linux26-modules
310 endif
311
312 include package/*/*.mk
313
314 TARGETS+=target-finalize
315
316 ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
317 TARGETS+=target-purgelocales
318 endif
319
320 # target stuff is last so it can override anything else
321 include target/Makefile.in
322
323 TARGETS+=erase-fakeroots
324
325 TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
326 TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
327 TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
328 TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
329 # all targets depend on the crosscompiler and it's prerequisites
330 $(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
331
332 $(BR2_DEPENDS_DIR): .config
333         rm -rf $@
334         mkdir -p $(@D)
335         cp -dpRf $(CONFIG)/buildroot-config $@
336
337 dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
338         $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
339
340 $(BASE_TARGETS): dirs
341
342 world: dependencies dirs $(BASE_TARGETS) $(TARGETS_ALL)
343
344
345 .PHONY: all world dirs clean distclean source \
346         $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
347         $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
348         $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
349         $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
350
351 #############################################################
352 #
353 # staging and target directories do NOT list these as
354 # dependencies anywhere else
355 #
356 #############################################################
357 $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR):
358         @mkdir -p $@
359
360 $(STAGING_DIR):
361         @mkdir -p $(STAGING_DIR)/bin
362         @mkdir -p $(STAGING_DIR)/lib
363 ifeq ($(BR2_TOOLCHAIN_SYSROOT),y)
364         @mkdir -p $(STAGING_DIR)/usr/lib
365 else
366 ifneq ($(BR2_TOOLCHAIN_EXTERNAL),y)
367         @ln -snf . $(STAGING_DIR)/usr
368         @mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)
369         @ln -snf ../lib $(STAGING_DIR)/usr/lib
370         @ln -snf ../lib $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
371 endif
372 endif
373         @mkdir -p $(STAGING_DIR)/usr/include
374         @mkdir -p $(STAGING_DIR)/usr/bin
375
376 $(BUILD_DIR)/.root:
377         mkdir -p $(TARGET_DIR)
378         if ! [ -d "$(TARGET_DIR)/bin" ]; then \
379                 if [ -d "$(TARGET_SKELETON)" ]; then \
380                         cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
381                 fi; \
382                 if [ -d "$(TARGET_SKELETON_PATCH)" ]; then \
383                         toolchain/patch-kernel.sh $(TARGET_DIR) $(TARGET_SKELETON_PATCH)/ \*patch\*; \
384                 fi; \
385                 touch $(STAGING_DIR)/.fakeroot.00000; \
386         fi
387         -find $(TARGET_DIR) -type d -name CVS -print0 -o -name .svn -print0 | xargs -0 rm -rf
388         -find $(TARGET_DIR) -type f \( -name .empty -o -name '*~' \) -print0 | xargs -0 rm -rf
389         touch $@
390
391 $(TARGET_DIR): $(BUILD_DIR)/.root
392
393 erase-fakeroots:
394         rm -f $(BUILD_DIR)/.fakeroot*
395
396 target-finalize:
397 ifeq ($(BR2_HAVE_DEVFILES),y)
398         ( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
399 else
400         rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig
401         find $(TARGET_DIR)/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
402         find $(TARGET_DIR)/usr/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
403 endif
404 ifneq ($(BR2_HAVE_MANPAGES),y)
405         rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man
406 endif
407 ifneq ($(BR2_HAVE_INFOPAGES),y)
408         rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info
409 endif
410         find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIPCMD) 2>/dev/null || true
411         $(TARGET_LDCONFIG) -r $(TARGET_DIR) 2>/dev/null
412
413         mkdir -p $(TARGET_DIR)/etc
414         echo $(BR2_VERSION)$(shell $(TOPDIR)/scripts/setlocalversion) > \
415                 $(TARGET_DIR)/etc/br-version
416
417 ifneq ($(BR2_ROOTFS_POST_BUILD_SCRIPT),"")
418         $(BR2_ROOTFS_POST_BUILD_SCRIPT) $(TARGET_DIR)
419 endif
420
421 ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
422 LOCALE_WHITELIST=$(BUILD_DIR)/locales.nopurge
423 LOCALE_NOPURGE=$(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST))
424
425 target-purgelocales:
426         rm -f $(LOCALE_WHITELIST)
427         for i in $(LOCALE_NOPURGE); do echo $$i >> $(LOCALE_WHITELIST); done
428
429         for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/man /usr/share/man)); \
430         do \
431                 for lang in $$(cd $$dir; ls .|grep -v man); \
432                 do \
433                         grep -qx $$lang $(LOCALE_WHITELIST) || rm -rf $$dir/$$lang; \
434                 done; \
435         done
436 endif
437
438 source: $(TARGETS_SOURCE) $(HOST_SOURCE)
439
440 _source-check:
441         $(MAKE) SPIDER=--spider source
442
443 external-deps:
444         @$(MAKE) -Bs BR2_WGET=$(TOPDIR)/toolchain/wget-show-external-deps.sh \
445                 SPIDER=--spider source
446
447 ifeq ($(BR2_CONFIG_CACHE),y)
448 # drop configure cache if configuration is changed
449 $(BUILD_DIR)/tgt-config.cache: .config
450         rm -f $@
451         touch $@
452
453 $(BASE_TARGETS): | $(BUILD_DIR)/tgt-config.cache
454 endif
455
456 else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
457
458 all: menuconfig
459
460 # configuration
461 # ---------------------------------------------------------------------------
462
463 HOSTCFLAGS=$(CFLAGS_FOR_BUILD)
464 export HOSTCFLAGS
465
466 $(CONFIG)/conf:
467         @mkdir -p $(CONFIG)/buildroot-config
468         $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf
469         -@if [ ! -f .config ]; then \
470                 cp $(CONFIG_DEFCONFIG) .config; \
471         fi
472
473 $(CONFIG)/mconf:
474         @mkdir -p $(CONFIG)/buildroot-config
475         $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) mconf
476         -@if [ ! -f .config ]; then \
477                 cp $(CONFIG_DEFCONFIG) .config; \
478         fi
479
480 $(CONFIG)/qconf:
481         @mkdir -p $(CONFIG)/buildroot-config
482         $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) qconf
483         -@if [ ! -f .config ]; then \
484                 cp $(CONFIG_DEFCONFIG) .config; \
485         fi
486
487 xconfig: $(CONFIG)/qconf
488         @mkdir -p $(CONFIG)/buildroot-config
489         @if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
490                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
491                 $(CONFIG)/qconf $(CONFIG_CONFIG_IN); then \
492                 test -f .config.cmd || rm -f .config; \
493         fi
494
495 menuconfig: $(CONFIG)/mconf
496         @mkdir -p $(CONFIG)/buildroot-config
497         @if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
498                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
499                 $(CONFIG)/mconf $(CONFIG_CONFIG_IN); then \
500                 test -f .config.cmd || rm -f .config; \
501         fi
502
503 config: $(CONFIG)/conf
504         @mkdir -p $(CONFIG)/buildroot-config
505         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
506                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
507                 $(CONFIG)/conf $(CONFIG_CONFIG_IN)
508
509 oldconfig: $(CONFIG)/conf
510         @mkdir -p $(CONFIG)/buildroot-config
511         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
512                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
513                 $(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
514
515 randconfig: $(CONFIG)/conf
516         @mkdir -p $(CONFIG)/buildroot-config
517         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
518                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
519                 $(CONFIG)/conf -r $(CONFIG_CONFIG_IN)
520
521 allyesconfig: $(CONFIG)/conf
522         cat $(CONFIG_DEFCONFIG) > .config
523         @mkdir -p $(CONFIG)/buildroot-config
524         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
525                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
526                 $(CONFIG)/conf -y $(CONFIG_CONFIG_IN)
527
528 allnoconfig: $(CONFIG)/conf
529         @mkdir -p $(CONFIG)/buildroot-config
530         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
531                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
532                 $(CONFIG)/conf -n $(CONFIG_CONFIG_IN)
533
534 randpackageconfig: $(CONFIG)/conf
535         @mkdir -p $(CONFIG)/buildroot-config
536         @grep -v BR2_PACKAGE_ .config > .config.nopkg
537         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
538                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
539                 KCONFIG_ALLCONFIG=.config.nopkg \
540                 $(CONFIG)/conf -r $(CONFIG_CONFIG_IN)
541         @rm -f .config.nopkg
542
543 allyespackageconfig: $(CONFIG)/conf
544         @mkdir -p $(CONFIG)/buildroot-config
545         @grep -v BR2_PACKAGE_ .config > .config.nopkg
546         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
547                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
548                 KCONFIG_ALLCONFIG=.config.nopkg \
549                 $(CONFIG)/conf -y $(CONFIG_CONFIG_IN)
550         @rm -f .config.nopkg
551
552 allnopackageconfig: $(CONFIG)/conf
553         @mkdir -p $(CONFIG)/buildroot-config
554         @grep -v BR2_PACKAGE_ .config > .config.nopkg
555         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
556                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
557                 KCONFIG_ALLCONFIG=.config.nopkg \
558                 $(CONFIG)/conf -n $(CONFIG_CONFIG_IN)
559         @rm -f .config.nopkg
560
561 defconfig: $(CONFIG)/conf
562         @mkdir -p $(CONFIG)/buildroot-config
563         @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
564                 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
565                 $(CONFIG)/conf -d $(CONFIG_CONFIG_IN)
566
567 # check if download URLs are outdated
568 source-check: allyesconfig
569         $(MAKE) _source-check
570
571 endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
572
573 #############################################################
574 #
575 # Cleanup and misc junk
576 #
577 #############################################################
578 clean:
579         rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
580                 $(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR)
581
582 distclean: clean
583 ifeq ($(DL_DIR),$(TOPDIR)/dl)
584         rm -rf $(DL_DIR)
585 endif
586 ifeq ($(O),output)
587         rm -rf $(O)
588 endif
589         rm -rf .config .config.old .config.cmd .auto.deps
590         -$(MAKE) -C $(CONFIG) clean
591
592 flush:
593         rm -f $(BUILD_DIR)/tgt-config.cache
594
595 %_defconfig: $(TOPDIR)/configs/%_defconfig
596         cp $^ .config
597         @$(MAKE) oldconfig
598
599 configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config
600
601 prepatch:       gcc-patched binutils-patched gdb-patched uclibc-patched
602
603 cross: $(BASE_TARGETS)
604
605 help:
606         @echo 'Cleaning:'
607         @echo '  clean                  - delete all files created by build'
608         @echo '  distclean              - delete all non-source files (including .config)'
609         @echo
610         @echo 'Build:'
611         @echo '  all                    - make world'
612         @echo
613         @echo 'Configuration:'
614         @echo '  menuconfig             - interactive curses-based configurator'
615         @echo '  xconfig                - interactive Qt-based configurator'
616         @echo '  oldconfig              - resolve any unresolved symbols in .config'
617         @echo '  randconfig             - New config with random answer to all options'
618         @echo '  defconfig              - New config with default answer to all options'
619         @echo '  allyesconfig           - New config where all options are accepted with yes'
620         @echo '  allnoconfig            - New config where all options are answered with no'
621         @echo '  randpackageconfig      - New config with random answer to package options'
622         @echo '  allyespackageconfig    - New config where pkg options are accepted with yes'
623         @echo '  allnopackageconfig     - New config where package options are answered with no'
624         @echo '  configured             - make {uclibc/busybox/linux26}-config'
625         @echo
626         @echo 'Miscellaneous:'
627         @echo '  source                 - download all sources needed for offline-build'
628         @echo '  source-check           - check all packages for valid download URLs'
629         @echo '  external-deps          - list external packages used'
630         @echo '  flush                  - flush configuration cache'
631         @echo
632         @$(foreach b, $(notdir $(wildcard $(TOPDIR)/configs/*_defconfig)), \
633           printf "  %-35s - Build for %s\\n" $(b) $(b:_defconfig=);)
634         @echo
635         @echo 'See docs/README and docs/buildroot.html for further details'
636         @echo
637
638 release:
639         OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
640         git archive --format=tar --prefix=$$OUT/ master|gzip -9 >$$OUT.tar.gz
641
642 .PHONY: $(noconfig_targets)
643