Makefile 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  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. # Just run 'make menuconfig', configure stuff, then run 'make'.
  22. # You shouldn't need to mess with anything beyond this point...
  23. #--------------------------------------------------------------
  24. TOPDIR=./
  25. CONFIG_CONFIG_IN=Config.in
  26. CONFIG_DEFCONFIG=.defconfig
  27. CONFIG=package/config
  28. DATE:=$(shell date +%Y%m%d)
  29. noconfig_targets:=menuconfig config oldconfig randconfig \
  30. defconfig allyesconfig allnoconfig release tags \
  31. source-check help
  32. # Use shell variables, if defined
  33. ifneq ($(BUILDROOT_LOCAL),)
  34. BR2_LOCAL:=$(BUILDROOT_LOCAL)
  35. else
  36. BR2_LOCAL:=$(TOPDIR)/local
  37. endif
  38. # $(shell find . -name *_defconfig |sed 's/.*\///')
  39. # Pull in the user's configuration file
  40. ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
  41. ifeq ($(BOARD),)
  42. # if "make BOARD=xyz" command
  43. -include .config
  44. else
  45. # if "make" command
  46. -include $(BR2_LOCAL)/$(BOARD)/$(BOARD).config
  47. endif
  48. endif
  49. # Override BR2_DL_DIR if shell variable defined
  50. ifneq ($(BUILDROOT_DL_DIR),)
  51. BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
  52. endif
  53. LOCAL:=$(BR2_LOCAL)
  54. # To put more focus on warnings, be less verbose as default
  55. # Use 'make V=1' to see the full commands
  56. ifdef V
  57. ifeq ("$(origin V)", "command line")
  58. KBUILD_VERBOSE=$(V)
  59. endif
  60. endif
  61. ifndef KBUILD_VERBOSE
  62. KBUILD_VERBOSE=0
  63. endif
  64. ifeq ($(KBUILD_VERBOSE),1)
  65. quiet=
  66. Q=
  67. ifndef VERBOSE
  68. VERBOSE=1
  69. endif
  70. else
  71. quiet=quiet_
  72. Q=@
  73. endif
  74. # we want bash as shell
  75. SHELL:=$(shell if [ -x "$$BASH" ]; then echo $$BASH; \
  76. else if [ -x /bin/bash ]; then echo /bin/bash; \
  77. else echo sh; fi; fi)
  78. # kconfig uses CONFIG_SHELL
  79. CONFIG_SHELL:=$(SHELL)
  80. export SHELL CONFIG_SHELL quiet Q KBUILD_VERBOSE VERBOSE
  81. ifndef HOSTAR
  82. HOSTAR:=ar
  83. endif
  84. ifndef HOSTAS
  85. HOSTAS:=as
  86. endif
  87. ifndef HOSTCC
  88. HOSTCC:=gcc
  89. else
  90. endif
  91. ifndef HOSTCXX
  92. HOSTCXX:=g++
  93. endif
  94. ifndef HOSTFC
  95. HOSTFC:=gfortran
  96. endif
  97. ifndef HOSTCPP
  98. HOSTCPP:=cpp
  99. endif
  100. ifndef HOSTLD
  101. HOSTLD:=ld
  102. endif
  103. ifndef HOSTLN
  104. HOSTLN:=ln
  105. endif
  106. ifndef HOSTNM
  107. HOSTNM:=nm
  108. endif
  109. HOSTAR:=$(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)
  110. HOSTAS:=$(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)
  111. HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
  112. HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
  113. HOSTFC:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo || which g77 || type -p g77 || echo gfortran)
  114. HOSTCPP:=$(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp)
  115. HOSTLD:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)
  116. HOSTLN:=$(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln)
  117. HOSTNM:=$(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm)
  118. HOST_GLIB_BIN:=`dirname $(shell which glib-genmarshal || echo /usr/bin/glib-genmarshal)`
  119. HOST_GLIB:=$(shell dirname $(HOST_GLIB_BIN) || echo /usr)
  120. ifndef CFLAGS_FOR_BUILD
  121. CFLAGS_FOR_BUILD:=-g -O2
  122. endif
  123. ifndef CXXFLAGS_FOR_BUILD
  124. CXXFLAGS_FOR_BUILD:=-g -O2
  125. endif
  126. ifndef FCFLAGS_FOR_BUILD
  127. FCFLAGS_FOR_BUILD:=-g -O2
  128. endif
  129. export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTFC HOSTLD
  130. ifeq ($(BR2_HAVE_DOT_CONFIG),y)
  131. # cc-option
  132. # Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
  133. # sets -march=winchip-c6 if supported else falls back to -march=i586
  134. # without checking the latter.
  135. cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
  136. > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
  137. #############################################################
  138. #
  139. # Hide troublesome environment variables from sub processes
  140. #
  141. #############################################################
  142. unexport CROSS_COMPILE
  143. unexport ARCH
  144. #############################################################
  145. #
  146. # Setup the proper filename extensions for the host
  147. #
  148. ##############################################################
  149. ifneq ($(findstring linux,$(BR2_GNU_BUILD_SUFFIX)),)
  150. HOST_EXEEXT:=
  151. HOST_LIBEXT:=.a
  152. HOST_SHREXT:=.so
  153. endif
  154. ifneq ($(findstring apple,$(BR2_GNU_BUILD_SUFFIX)),)
  155. HOST_EXEEXT:=
  156. HOST_LIBEXT:=.a
  157. HOST_SHREXT:=.dylib
  158. endif
  159. ifneq ($(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX)),)
  160. HOST_EXEEXT:=.exe
  161. HOST_LIBEXT:=.lib
  162. HOST_SHREXT:=.dll
  163. HOST_LOADLIBES="-lcurses -lintl"
  164. export HOST_LOADLIBES
  165. endif
  166. ifneq ($(findstring mingw,$(BR2_GNU_BUILD_SUFFIX)),)
  167. HOST_EXEEXT:=.exe
  168. HOST_LIBEXT:=.lib
  169. HOST_SHREXT:=.dll
  170. endif
  171. # The preferred type of libs we build for the target
  172. ifeq ($(BR2_PREFER_STATIC_LIB),y)
  173. LIBTGTEXT=.a
  174. #PREFERRED_LIB_FLAGS:=--disable-shared --enable-static
  175. else
  176. LIBTGTEXT=.so
  177. #PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
  178. endif
  179. PREFERRED_LIB_FLAGS:=--enable-static --enable-shared
  180. ##############################################################
  181. #
  182. # The list of stuff to build for the target toolchain
  183. # along with the packages to build for the target.
  184. #
  185. ##############################################################
  186. ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
  187. BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers
  188. else
  189. BASE_TARGETS:=uclibc
  190. endif
  191. TARGETS:=
  192. # setup our pathes
  193. include project/Makefile.in
  194. BR2_DEPENDS_DIR=$(PROJECT_BUILD_DIR)/buildroot-config
  195. include toolchain/Makefile.in
  196. include package/Makefile.in
  197. #############################################################
  198. #
  199. # You should probably leave this stuff alone unless you know
  200. # what you are doing.
  201. #
  202. #############################################################
  203. all: world
  204. # In this section, we need .config
  205. include .config.cmd
  206. include project/*.mk
  207. # We also need the various per-package makefiles, which also add
  208. # each selected package to TARGETS if that package was selected
  209. # in the .config file.
  210. ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
  211. # avoid pulling in external toolchain which is broken for toplvl parallel builds
  212. # Explicit ordering:
  213. include toolchain/dependencies/dependencies.mk
  214. include toolchain/binutils/binutils.mk
  215. include toolchain/ccache/ccache.mk
  216. include toolchain/elf2flt/elf2flt.mk
  217. include toolchain/gcc/gcc-uclibc-3.x.mk
  218. include toolchain/gcc/gcc-uclibc-4.x.mk
  219. include toolchain/gdb/gdb.mk
  220. include toolchain/kernel-headers/kernel-headers.mk
  221. include toolchain/mklibs/mklibs.mk
  222. include toolchain/sstrip/sstrip.mk
  223. include toolchain/uClibc/uclibc.mk
  224. else
  225. include toolchain/*/*.mk
  226. endif
  227. ifeq ($(BR2_PACKAGE_LINUX),y)
  228. TARGETS+=linux26-modules
  229. endif
  230. include package/*/*.mk
  231. TARGETS+=target-devfiles
  232. # target stuff is last so it can override anything else
  233. include target/Makefile.in
  234. TARGETS+=erase-fakeroots
  235. TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
  236. TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
  237. TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
  238. TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
  239. # all targets depend on the crosscompiler and it's prerequisites
  240. $(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
  241. $(BR2_DEPENDS_DIR): .config
  242. rm -rf $@
  243. mkdir -p $(@D)
  244. cp -dpRf $(CONFIG)/buildroot-config $@
  245. dirs: $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
  246. $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
  247. $(PROJECT_BUILD_DIR)/autotools-stamps
  248. $(BASE_TARGETS): dirs
  249. world: dependencies dirs target-host-info $(BASE_TARGETS) $(TARGETS_ALL)
  250. .PHONY: all world dirs clean dirclean distclean source \
  251. $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
  252. $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
  253. $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
  254. $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
  255. $(PROJECT_BUILD_DIR)/autotools-stamps
  256. #############################################################
  257. #
  258. # staging and target directories do NOT list these as
  259. # dependencies anywhere else
  260. #
  261. #############################################################
  262. $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(PROJECT_BUILD_DIR) \
  263. $(PROJECT_BUILD_DIR)/autotools-stamps $(BINARIES_DIR):
  264. @mkdir -p $@
  265. $(STAGING_DIR):
  266. @mkdir -p $(STAGING_DIR)/bin
  267. @mkdir -p $(STAGING_DIR)/lib
  268. ifeq ($(BR2_TOOLCHAIN_SYSROOT),y)
  269. @mkdir -p $(STAGING_DIR)/usr/lib
  270. else
  271. ifneq ($(BR2_TOOLCHAIN_EXTERNAL),y)
  272. @ln -snf . $(STAGING_DIR)/usr
  273. @mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)
  274. @ln -snf ../lib $(STAGING_DIR)/usr/lib
  275. @ln -snf ../lib $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
  276. endif
  277. endif
  278. @mkdir -p $(STAGING_DIR)/usr/include
  279. $(PROJECT_BUILD_DIR)/.root:
  280. mkdir -p $(TARGET_DIR)
  281. if ! [ -d "$(TARGET_DIR)/bin" ]; then \
  282. if [ -d "$(TARGET_SKELETON)" ]; then \
  283. cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
  284. fi; \
  285. touch $(STAGING_DIR)/.fakeroot.00000; \
  286. fi
  287. -find $(TARGET_DIR) -type d -name CVS -o -name .svn | xargs rm -rf
  288. -find $(TARGET_DIR) -type f -name .empty | xargs rm -rf
  289. touch $@
  290. $(TARGET_DIR): $(PROJECT_BUILD_DIR)/.root
  291. erase-fakeroots:
  292. rm -f $(PROJECT_BUILD_DIR)/.fakeroot*
  293. target-devfiles:
  294. ifeq ($(BR2_HAVE_DEVFILES),y)
  295. ( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
  296. else
  297. rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig
  298. find $(TARGET_DIR)/usr/lib -name '*.a' -delete
  299. find $(TARGET_DIR)/lib -name '*.a' -delete
  300. find $(TARGET_DIR)/usr/lib -name '*.la' -delete
  301. find $(TARGET_DIR)/lib -name '*.la' -delete
  302. endif
  303. source: $(TARGETS_SOURCE) $(HOST_SOURCE)
  304. _source-check:
  305. $(MAKE) SPIDER=--spider source
  306. external-deps:
  307. @$(MAKE) -Bs BR2_WGET=$(TOPDIR)/toolchain/wget-show-external-deps.sh \
  308. SPIDER=--spider source
  309. #############################################################
  310. #
  311. # Cleanup and misc junk
  312. #
  313. #############################################################
  314. clean: $(TARGETS_CLEAN)
  315. rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps
  316. dirclean: $(TARGETS_DIRCLEAN)
  317. rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps
  318. distclean:
  319. ifeq ($(DL_DIR),$(BASE_DIR)/dl)
  320. rm -rf $(DL_DIR)
  321. endif
  322. rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) \
  323. $(LINUX_KERNEL) $(BASE_DIR)/include \
  324. .config.cmd
  325. $(MAKE) -C $(CONFIG) clean
  326. sourceball:
  327. rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR)
  328. set -e; \
  329. cd ..; \
  330. rm -f buildroot.tar.bz2; \
  331. tar -cvf buildroot.tar buildroot; \
  332. bzip2 -9 buildroot.tar; \
  333. else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
  334. all: menuconfig
  335. # configuration
  336. # ---------------------------------------------------------------------------
  337. HOSTCFLAGS=$(CFLAGS_FOR_BUILD)
  338. export HOSTCFLAGS
  339. $(CONFIG)/conf:
  340. @mkdir -p $(CONFIG)/buildroot-config
  341. $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf
  342. -@if [ ! -f .config ]; then \
  343. cp $(CONFIG_DEFCONFIG) .config; \
  344. fi
  345. $(CONFIG)/mconf:
  346. @mkdir -p $(CONFIG)/buildroot-config
  347. $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf mconf
  348. -@if [ ! -f .config ]; then \
  349. cp $(CONFIG_DEFCONFIG) .config; \
  350. fi
  351. menuconfig: $(CONFIG)/mconf
  352. @mkdir -p $(CONFIG)/buildroot-config
  353. @if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
  354. KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
  355. $(CONFIG)/mconf $(CONFIG_CONFIG_IN); then \
  356. test -f .config.cmd || rm -f .config; \
  357. fi
  358. config: $(CONFIG)/conf
  359. @mkdir -p $(CONFIG)/buildroot-config
  360. @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
  361. KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
  362. $(CONFIG)/conf $(CONFIG_CONFIG_IN)
  363. oldconfig: $(CONFIG)/conf
  364. @mkdir -p $(CONFIG)/buildroot-config
  365. @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
  366. KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
  367. $(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
  368. randconfig: $(CONFIG)/conf
  369. @mkdir -p $(CONFIG)/buildroot-config
  370. @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
  371. KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
  372. $(CONFIG)/conf -r $(CONFIG_CONFIG_IN)
  373. allyesconfig: $(CONFIG)/conf
  374. cat $(CONFIG_DEFCONFIG) > .config
  375. @mkdir -p $(CONFIG)/buildroot-config
  376. @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
  377. KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
  378. $(CONFIG)/conf -y $(CONFIG_CONFIG_IN)
  379. #sed -i -e "s/^CONFIG_DEBUG.*/# CONFIG_DEBUG is not set/" .config
  380. allnoconfig: $(CONFIG)/conf
  381. @mkdir -p $(CONFIG)/buildroot-config
  382. @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
  383. KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
  384. $(CONFIG)/conf -n $(CONFIG_CONFIG_IN)
  385. defconfig: $(CONFIG)/conf
  386. @mkdir -p $(CONFIG)/buildroot-config
  387. @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
  388. KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
  389. $(CONFIG)/conf -d $(CONFIG_CONFIG_IN)
  390. # check if download URLs are outdated
  391. source-check: allyesconfig
  392. $(MAKE) _source-check
  393. #############################################################
  394. #
  395. # Cleanup and misc junk
  396. #
  397. #############################################################
  398. clean:
  399. rm -f .config .config.old .config.cmd .tmpconfig.h .lognr.*
  400. -$(MAKE) -C $(CONFIG) clean
  401. distclean: clean
  402. rm -rf sources/*
  403. endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
  404. %_defconfig: $(CONFIG)/conf
  405. cp $(shell find ./target/ -name $@) .config
  406. -@$(MAKE) oldconfig
  407. update:
  408. cp .config $(BOARD_PATH)/$(BOARD_NAME)_defconfig
  409. configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config
  410. prepatch: gcc-patched binutils-patched gdb-patched uclibc-patched
  411. .lognr.$(PROJECT):
  412. @echo "0" > .lognr.$(PROJECT)
  413. log: .lognr.$(PROJECT)
  414. @expr `cat .lognr.$(PROJECT)` + 1 > .lognr.$(PROJECT)
  415. @echo Creating $(PROJECT)-`cat .lognr.$(PROJECT)`.log
  416. @$(MAKE) > $(PROJECT)-`cat .lognr.$(PROJECT)`.log 2>&1
  417. cross: $(BASE_TARGETS)
  418. help:
  419. @echo 'Cleaning:'
  420. @echo ' clean - delete temporary files created by build'
  421. @echo ' distclean - delete all non-source files (including .config)'
  422. @echo
  423. @echo 'Build:'
  424. @echo ' all - make world'
  425. @echo
  426. @echo 'Configuration:'
  427. @echo ' menuconfig - interactive curses-based configurator'
  428. @echo ' oldconfig - resolve any unresolved symbols in .config'
  429. @echo ' configured - make {uclibc/busybox/linux26}-config'
  430. @echo ' saveconfig - save current configuration under local/<project>'
  431. @echo ' getconfig - restore saved configuration from local/<project>'
  432. @echo
  433. @echo 'Miscellaneous:'
  434. @echo ' source - download all sources needed for offline-build'
  435. @echo ' source-check - check all packages for valid download URLs'
  436. @echo ' external-deps - list external packages used'
  437. @echo
  438. @echo 'See docs/README and docs/buildroot.html for further details'
  439. @echo
  440. release: distclean
  441. OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
  442. rm -rf ../$$OUT*; cp -al . ../$$OUT; cd ..; \
  443. tar cfz $$OUT.tar.gz --exclude .svn --exclude .git --exclude \*~ $$OUT; \
  444. rm -rf $$OUT
  445. .PHONY: dummy subdirs release distclean clean config oldconfig \
  446. menuconfig tags check test depend defconfig help