blob: d6bcb36f01f5b012e53e564dd231a370187fb02a [file] [log] [blame]
Eric Andersen2d523c22004-10-09 01:06:03 +00001# Makefile for buildroot2
Eric Andersenffde94b2001-12-22 00:56:11 +00002#
Eric Andersen15b26ae2005-02-07 22:19:26 +00003# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
Peter Korsgaardeb057572010-02-24 09:42:30 +01004# Copyright (C) 2006-2010 by the Buildroot developers <buildroot@uclibc.org>
Eric Andersenffde94b2001-12-22 00:56:11 +00005#
Eric Andersen08782ae2002-04-26 11:45:55 +00006# This program is free software; you can redistribute it and/or modify
Eric Andersen2d523c22004-10-09 01:06:03 +00007# 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.
Eric Andersenffde94b2001-12-22 00:56:11 +000010#
Eric Andersen2d523c22004-10-09 01:06:03 +000011# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
Eric Andersen08782ae2002-04-26 11:45:55 +000013# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Eric Andersen2d523c22004-10-09 01:06:03 +000014# General Public License for more details.
Peter Korsgaardb30d6732009-01-26 19:42:47 +000015#
Eric Andersen2d523c22004-10-09 01:06:03 +000016# 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#
Eric Andersenffde94b2001-12-22 00:56:11 +000020
Eric Andersen2d523c22004-10-09 01:06:03 +000021#--------------------------------------------------------------
22# Just run 'make menuconfig', configure stuff, then run 'make'.
23# You shouldn't need to mess with anything beyond this point...
24#--------------------------------------------------------------
Peter Korsgaard6b1dd452009-11-30 17:29:01 +010025# absolute path
26TOPDIR:=$(shell pwd)
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000027CONFIG_CONFIG_IN=Config.in
28CONFIG_DEFCONFIG=.defconfig
29CONFIG=package/config
Ulf Samuelssona8ee1242008-05-11 06:55:04 +000030DATE:=$(shell date +%Y%m%d)
Eric Andersen2d523c22004-10-09 01:06:03 +000031
Peter Korsgaard2b42aae2010-06-05 21:09:05 +020032noconfig_targets:=menuconfig gconfig xconfig config oldconfig randconfig \
Peter Korsgaardc48bbb82009-10-04 21:42:54 +020033 defconfig allyesconfig allnoconfig release \
Peter Korsgaard66527702009-10-04 21:57:12 +020034 randpackageconfig allyespackageconfig allnopackageconfig \
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +000035 source-check help
Bernhard Reutner-Fischer9e250352006-12-02 19:01:10 +000036
Thomas Petazzoni580c6d92009-07-30 17:26:49 +020037# Strip quotes and then whitespaces
38qstrip=$(strip $(subst ",,$(1)))
39#"))
40
Peter Korsgaardf85f2de2009-01-25 20:19:01 +000041# Variables for use in Make constructs
42comma:=,
43empty:=
44space:=$(empty) $(empty)
45
Will Wagner39ca6d52010-01-11 12:28:50 +000046ifneq ("$(origin O)", "command line")
47O:=output
48CONFIG_DIR:=$(TOPDIR)
49else
50# other packages might also support Linux-style out of tree builds
51# with the O=<dir> syntax (E.G. Busybox does). As make automatically
52# forwards command line variable definitions those packages get very
53# confused. Fix this by telling make to not do so
54MAKEOVERRIDES =
55# strangely enough O is still passed to submakes with MAKEOVERRIDES
56# (with make 3.81 atleast), the only thing that changes is the output
57# of the origin function (command line -> environment).
58# Unfortunately some packages don't look at origin (E.G. uClibc 0.9.31+)
59# To really make O go away, we have to override it.
60override O:=$(O)
61CONFIG_DIR:=$(O)
62endif
63
Ulf Samuelssona1b06512008-03-28 07:31:28 +000064# $(shell find . -name *_defconfig |sed 's/.*\///')
65# Pull in the user's configuration file
66ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
Will Wagner39ca6d52010-01-11 12:28:50 +000067-include $(CONFIG_DIR)/.config
Ulf Samuelsson7521f372007-09-12 04:34:16 +000068endif
Eric Andersen2d523c22004-10-09 01:06:03 +000069
Ulf Samuelssonefd85762008-03-30 06:38:46 +000070# Override BR2_DL_DIR if shell variable defined
71ifneq ($(BUILDROOT_DL_DIR),)
72BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
73endif
Ulf Samuelssonefd85762008-03-30 06:38:46 +000074
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000075# To put more focus on warnings, be less verbose as default
76# Use 'make V=1' to see the full commands
77ifdef V
78 ifeq ("$(origin V)", "command line")
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000079 KBUILD_VERBOSE=$(V)
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000080 endif
81endif
82ifndef KBUILD_VERBOSE
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000083 KBUILD_VERBOSE=0
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000084endif
85
86ifeq ($(KBUILD_VERBOSE),1)
Ulf Samuelsson4df454e2007-07-06 12:19:35 +000087 quiet=
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000088 Q=
Bernhard Reutner-Fischer1669b6e2007-09-22 14:19:22 +000089ifndef VERBOSE
90 VERBOSE=1
91endif
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000092else
93 quiet=quiet_
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000094 Q=@
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000095endif
96
Peter Korsgaard69f85922009-01-01 21:20:35 +000097# we want bash as shell
98SHELL:=$(shell if [ -x "$$BASH" ]; then echo $$BASH; \
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000099 else if [ -x /bin/bash ]; then echo /bin/bash; \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000100 else echo sh; fi; fi)
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000101
Peter Korsgaard69f85922009-01-01 21:20:35 +0000102# kconfig uses CONFIG_SHELL
103CONFIG_SHELL:=$(SHELL)
104
105export SHELL CONFIG_SHELL quiet Q KBUILD_VERBOSE VERBOSE
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000106
107ifndef HOSTAR
108HOSTAR:=ar
109endif
110ifndef HOSTAS
111HOSTAS:=as
112endif
113ifndef HOSTCC
114HOSTCC:=gcc
115else
116endif
117ifndef HOSTCXX
118HOSTCXX:=g++
119endif
Bernhard Reutner-Fischer5f975802007-09-28 20:10:22 +0000120ifndef HOSTFC
121HOSTFC:=gfortran
122endif
Ulf Samuelsson356133b2007-09-28 19:46:58 +0000123ifndef HOSTCPP
124HOSTCPP:=cpp
125endif
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000126ifndef HOSTLD
127HOSTLD:=ld
128endif
Ulf Samuelsson0f9c5b12007-07-15 21:54:11 +0000129ifndef HOSTLN
130HOSTLN:=ln
131endif
Ulf Samuelsson356133b2007-09-28 19:46:58 +0000132ifndef HOSTNM
133HOSTNM:=nm
134endif
Peter Korsgaard69f85922009-01-01 21:20:35 +0000135HOSTAR:=$(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)
136HOSTAS:=$(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)
137HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
138HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
139HOSTFC:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo || which g77 || type -p g77 || echo gfortran)
140HOSTCPP:=$(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp)
141HOSTLD:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)
142HOSTLN:=$(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln)
143HOSTNM:=$(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm)
Ulf Samuelsson54e93322008-07-06 07:34:41 +0000144
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000145ifndef CFLAGS_FOR_BUILD
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000146CFLAGS_FOR_BUILD:=-g -O2
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000147endif
Bernhard Reutner-Fischer5f975802007-09-28 20:10:22 +0000148ifndef CXXFLAGS_FOR_BUILD
149CXXFLAGS_FOR_BUILD:=-g -O2
150endif
151ifndef FCFLAGS_FOR_BUILD
152FCFLAGS_FOR_BUILD:=-g -O2
153endif
154export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTFC HOSTLD
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000155
Will Wagner39ca6d52010-01-11 12:28:50 +0000156# bash prints the name of the directory on 'cd <dir>' if CDPATH is
157# set, so unset it here to not cause problems. Notice that the export
158# line doesn't affect the environment of $(shell ..) calls, so
159# explictly throw away any output from 'cd' here.
160export CDPATH:=
161BASE_DIR := $(shell mkdir -p $(O) && cd $(O) >/dev/null && pwd)
162$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))
163
164BUILD_DIR:=$(BASE_DIR)/build
165
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000166
Bernhard Reutner-Fischercfe511b2007-09-29 13:58:30 +0000167ifeq ($(BR2_HAVE_DOT_CONFIG),y)
Eric Andersenffde94b2001-12-22 00:56:11 +0000168
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000169# cc-option
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000170# Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000171# sets -march=winchip-c6 if supported else falls back to -march=i586
172# without checking the latter.
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000173cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000174 > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
175
Peter Korsgaard2c649042007-06-19 15:19:27 +0000176#############################################################
177#
178# Hide troublesome environment variables from sub processes
179#
180#############################################################
181unexport CROSS_COMPILE
182unexport ARCH
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000183
Peter Korsgaardc71816a2010-05-06 20:53:25 +0200184GNU_HOST_NAME:=$(shell package/gnuconfig/config.guess)
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200185
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000186#############################################################
187#
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000188# Setup the proper filename extensions for the host
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000189#
190##############################################################
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200191ifneq ($(findstring linux,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000192HOST_EXEEXT:=
193HOST_LIBEXT:=.a
194HOST_SHREXT:=.so
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000195endif
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200196ifneq ($(findstring apple,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000197HOST_EXEEXT:=
198HOST_LIBEXT:=.a
199HOST_SHREXT:=.dylib
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000200endif
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200201ifneq ($(findstring cygwin,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000202HOST_EXEEXT:=.exe
203HOST_LIBEXT:=.lib
204HOST_SHREXT:=.dll
Peter Korsgaard2c279672008-06-19 08:11:35 +0000205HOST_LOADLIBES="-lcurses -lintl"
206export HOST_LOADLIBES
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000207endif
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200208ifneq ($(findstring mingw,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000209HOST_EXEEXT:=.exe
210HOST_LIBEXT:=.lib
211HOST_SHREXT:=.dll
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000212endif
213
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000214# The preferred type of libs we build for the target
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000215ifeq ($(BR2_PREFER_STATIC_LIB),y)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000216LIBTGTEXT=.a
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000217#PREFERRED_LIB_FLAGS:=--disable-shared --enable-static
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000218else
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000219LIBTGTEXT=.so
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000220#PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000221endif
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000222PREFERRED_LIB_FLAGS:=--enable-static --enable-shared
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000223
Bernhard Reutner-Fischer6ad07202007-07-31 15:02:06 +0000224##############################################################
Eric Andersen08782ae2002-04-26 11:45:55 +0000225#
Eric Andersen2d523c22004-10-09 01:06:03 +0000226# The list of stuff to build for the target toolchain
227# along with the packages to build for the target.
Eric Andersen08782ae2002-04-26 11:45:55 +0000228#
Eric Andersen2d523c22004-10-09 01:06:03 +0000229##############################################################
Thomas Petazzonibc994c52009-12-14 12:10:12 +0100230ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
Peter Korsgaard3d8919a2008-03-04 12:19:19 +0000231BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers
Yann E. MORIN26b44b22010-03-26 20:46:37 +0100232else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
Peter Korsgaard51f5f622008-11-03 10:18:39 +0000233BASE_TARGETS:=uclibc
"Steven J. Hill"02f71aa2007-02-06 18:19:38 +0000234endif
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000235TARGETS:=
236
Peter Korsgaard89464a92009-09-30 17:39:44 +0200237# silent mode requested?
238QUIET:=$(if $(findstring s,$(MAKEFLAGS)),-q)
239
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200240# Strip off the annoying quoting
241ARCH:=$(call qstrip,$(BR2_ARCH))
242ifeq ($(ARCH),xtensa)
243ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
244endif
Thomas Petazzoni65e80a02010-04-28 23:40:57 +0200245
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200246WGET:=$(call qstrip,$(BR2_WGET)) $(SPIDER) $(QUIET)
247SVN_CO:=$(call qstrip,$(BR2_SVN_CO)) $(QUIET)
248SVN_UP:=$(call qstrip,$(BR2_SVN_UP)) $(QUIET)
249BZR_CO:=$(call qstrip,$(BR2_BZR_CO)) $(QUIET)
250BZR_UP:=$(call qstrip,$(BR2_BZR_UP)) $(QUIET)
251GIT:=$(call qstrip,$(BR2_GIT)) $(QUIET)
252ZCAT:=$(call qstrip,$(BR2_ZCAT))
253BZCAT:=$(call qstrip,$(BR2_BZCAT))
254TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000255
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200256DL_DIR=$(call qstrip,$(BR2_DL_DIR))
257ifeq ($(DL_DIR),)
Michael Roth416323e2009-09-23 01:30:12 +0200258DL_DIR:=$(TOPDIR)/dl
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200259endif
260
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200261GNU_TARGET_SUFFIX:=-$(call qstrip,$(BR2_GNU_TARGET_SUFFIX))
262
263STAGING_DIR:=$(call qstrip,$(BR2_STAGING_DIR))
264
265# packages compiled for the host goes here
Thomas Petazzoni3b2a8032009-07-31 10:31:39 +0200266HOST_DIR:=$(BASE_DIR)/host
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200267
268# stamp (dependency) files go here
Thomas Petazzoni3b2a8032009-07-31 10:31:39 +0200269STAMP_DIR:=$(BASE_DIR)/stamps
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200270
Thomas Petazzoni3b2a8032009-07-31 10:31:39 +0200271BINARIES_DIR:=$(BASE_DIR)/images
272TARGET_DIR:=$(BASE_DIR)/target
Thomas Petazzoni4c5bf462010-04-28 23:40:52 +0200273TOOLCHAIN_DIR=$(BASE_DIR)/toolchain
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200274
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200275BR2_DEPENDS_DIR=$(BUILD_DIR)/buildroot-config
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000276
Eric Andersen2d523c22004-10-09 01:06:03 +0000277include toolchain/Makefile.in
Eric Andersen2d523c22004-10-09 01:06:03 +0000278include package/Makefile.in
Eric Andersen27bc59d2003-01-17 04:31:36 +0000279
Eric Andersen08782ae2002-04-26 11:45:55 +0000280#############################################################
281#
Eric Andersenef407d32004-01-29 23:21:00 +0000282# You should probably leave this stuff alone unless you know
Eric Andersen08782ae2002-04-26 11:45:55 +0000283# what you are doing.
284#
285#############################################################
Manuel Novoa III d632d422003-11-01 05:34:41 +0000286
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000287all: world
Eric Andersenffde94b2001-12-22 00:56:11 +0000288
Eric Andersen2d523c22004-10-09 01:06:03 +0000289# In this section, we need .config
Peter Korsgaard2691d802010-06-21 22:13:20 +0200290-include $(CONFIG_DIR)/.config.cmd
Eric Andersen2d523c22004-10-09 01:06:03 +0000291
Eric Andersend06645d2005-02-10 03:06:39 +0000292# We also need the various per-package makefiles, which also add
293# each selected package to TARGETS if that package was selected
294# in the .config file.
Thomas Petazzonibc994c52009-12-14 12:10:12 +0100295ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000296# avoid pulling in external toolchain which is broken for toplvl parallel builds
Bernhard Reutner-Fischer57310ec2007-09-27 21:24:15 +0000297# Explicit ordering:
298include toolchain/dependencies/dependencies.mk
299include toolchain/binutils/binutils.mk
300include toolchain/ccache/ccache.mk
301include toolchain/elf2flt/elf2flt.mk
Bernhard Reutner-Fischer57310ec2007-09-27 21:24:15 +0000302include toolchain/gcc/gcc-uclibc-4.x.mk
303include toolchain/gdb/gdb.mk
304include toolchain/kernel-headers/kernel-headers.mk
305include toolchain/mklibs/mklibs.mk
306include toolchain/sstrip/sstrip.mk
307include toolchain/uClibc/uclibc.mk
Yann E. MORIN26b44b22010-03-26 20:46:37 +0100308else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
Eric Andersend06645d2005-02-10 03:06:39 +0000309include toolchain/*/*.mk
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000310endif
311
Eric Andersend06645d2005-02-10 03:06:39 +0000312include package/*/*.mk
Eric Andersend06645d2005-02-10 03:06:39 +0000313
Peter Korsgaard32faf352009-04-07 21:04:31 +0000314TARGETS+=target-finalize
John Voltzd45de0c2008-03-11 13:12:39 +0000315
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000316ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
317TARGETS+=target-purgelocales
318endif
319
Thomas Petazzoni649b5b92010-03-14 18:20:45 +0100320include boot/common.mk
Eric Andersen79f5f1e2005-02-17 03:00:29 +0000321include target/Makefile.in
Thomas Petazzoni487e21c2010-04-03 18:46:46 +0200322include linux/linux.mk
Thomas Petazzoni649b5b92010-03-14 18:20:45 +0100323include fs/common.mk
Eric Andersen79f5f1e2005-02-17 03:00:29 +0000324
Peter Korsgaard02a623d2008-08-04 19:07:05 +0000325TARGETS+=erase-fakeroots
Ulf Samuelssonc2fc93b2007-08-15 09:47:49 +0000326
Eric Andersen08782ae2002-04-26 11:45:55 +0000327TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
Bernhard Reutner-Fischer3b08e642007-09-18 13:12:25 +0000328TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
Eric Andersen08782ae2002-04-26 11:45:55 +0000329TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000330TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000331# all targets depend on the crosscompiler and it's prerequisites
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000332$(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000333
Will Wagner39ca6d52010-01-11 12:28:50 +0000334$(BR2_DEPENDS_DIR): $(CONFIG_DIR)/.config
335# rm -rf $@
336# mkdir -p $(@D)
337# cp -dpRf $(CONFIG)/buildroot-config $@
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000338
Michael Rothcb5710c2009-09-23 01:30:00 +0200339dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200340 $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000341
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000342$(BASE_TARGETS): dirs
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000343
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200344world: dependencies dirs $(BASE_TARGETS) $(TARGETS_ALL)
Eric Andersenffde94b2001-12-22 00:56:11 +0000345
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000346
Peter Korsgaard406053d2009-11-20 14:05:48 +0100347.PHONY: all world dirs clean distclean source \
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000348 $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
Eric Andersen747b16d2004-12-11 10:33:19 +0000349 $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
Michael Rothcb5710c2009-09-23 01:30:00 +0200350 $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200351 $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
Jon Nelsonc79e9982002-01-05 20:26:15 +0000352
Eric Andersen08782ae2002-04-26 11:45:55 +0000353#############################################################
354#
Eric Andersenef407d32004-01-29 23:21:00 +0000355# staging and target directories do NOT list these as
Mike Frysingerd99c31c2006-05-26 01:18:09 +0000356# dependencies anywhere else
Eric Andersen08782ae2002-04-26 11:45:55 +0000357#
358#############################################################
Michael Rothcb5710c2009-09-23 01:30:00 +0200359$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR):
Bernhard Reutner-Fischer8d583fc2007-01-30 00:58:18 +0000360 @mkdir -p $@
Manuel Novoa III 3ad3d8a2004-09-03 00:49:43 +0000361
Eric Andersen08782ae2002-04-26 11:45:55 +0000362$(STAGING_DIR):
"Steven J. Hill"9c865d72007-05-07 03:56:47 +0000363 @mkdir -p $(STAGING_DIR)/bin
Eric Andersenbf387232004-12-11 10:35:18 +0000364 @mkdir -p $(STAGING_DIR)/lib
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000365 @mkdir -p $(STAGING_DIR)/usr/lib
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000366 @mkdir -p $(STAGING_DIR)/usr/include
Thomas Petazzonia05c3372010-02-09 22:44:15 +0100367 @mkdir -p $(STAGING_DIR)/usr/bin
Eric Andersen08782ae2002-04-26 11:45:55 +0000368
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200369$(BUILD_DIR)/.root:
Bernhard Reutner-Fischer7547c7e2007-08-21 10:53:39 +0000370 mkdir -p $(TARGET_DIR)
Bernhard Reutner-Fischerf0ca4b82007-08-21 10:56:38 +0000371 if ! [ -d "$(TARGET_DIR)/bin" ]; then \
372 if [ -d "$(TARGET_SKELETON)" ]; then \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000373 cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
Ulf Samuelsson74cda1e2007-08-14 07:24:45 +0000374 fi; \
Maxim Grigorievedb5ca92009-07-24 02:37:06 +0200375 if [ -d "$(TARGET_SKELETON_PATCH)" ]; then \
376 toolchain/patch-kernel.sh $(TARGET_DIR) $(TARGET_SKELETON_PATCH)/ \*patch\*; \
377 fi; \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000378 touch $(STAGING_DIR)/.fakeroot.00000; \
Bernhard Reutner-Fischerf0ca4b82007-08-21 10:56:38 +0000379 fi
Will Newtonfc3eb182009-08-10 10:04:14 +0100380 -find $(TARGET_DIR) -type d -name CVS -print0 -o -name .svn -print0 | xargs -0 rm -rf
Anders Daranderb9656e82009-12-23 10:05:45 +0100381 -find $(TARGET_DIR) -type f \( -name .empty -o -name '*~' \) -print0 | xargs -0 rm -rf
Bernhard Reutner-Fischer7547c7e2007-08-21 10:53:39 +0000382 touch $@
Eric Andersenffde94b2001-12-22 00:56:11 +0000383
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200384$(TARGET_DIR): $(BUILD_DIR)/.root
Ulf Samuelssonc6771df2007-08-16 05:44:55 +0000385
Ulf Samuelssonc2fc93b2007-08-15 09:47:49 +0000386erase-fakeroots:
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200387 rm -f $(BUILD_DIR)/.fakeroot*
Ulf Samuelsson412ca2a2007-07-12 13:11:03 +0000388
Peter Korsgaard32faf352009-04-07 21:04:31 +0000389target-finalize:
John Voltzd45de0c2008-03-11 13:12:39 +0000390ifeq ($(BR2_HAVE_DEVFILES),y)
391 ( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
John Voltzbc67ca22008-03-10 15:22:43 +0000392else
Peter Korsgaard926646d2008-07-01 12:04:28 +0000393 rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig
Wade Berrier027aa1d2009-04-28 17:33:44 +0000394 find $(TARGET_DIR)/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
395 find $(TARGET_DIR)/usr/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
John Voltzbc67ca22008-03-10 15:22:43 +0000396endif
Thomas Petazzoni87b06372010-04-10 22:42:45 +0200397ifneq ($(BR2_HAVE_DOCUMENTATION),y)
Peter Korsgaard32faf352009-04-07 21:04:31 +0000398 rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man
Peter Korsgaard32faf352009-04-07 21:04:31 +0000399 rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info
Thomas Petazzoni87b06372010-04-10 22:42:45 +0200400 rm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc
Paulius Zaleckasd701a822010-05-05 13:09:36 +0300401 rm -rf $(TARGET_DIR)/usr/share/gtk-doc
Peter Korsgaard32faf352009-04-07 21:04:31 +0000402endif
403 find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIPCMD) 2>/dev/null || true
404 $(TARGET_LDCONFIG) -r $(TARGET_DIR) 2>/dev/null
John Voltzbc67ca22008-03-10 15:22:43 +0000405
Peter Korsgaard912ea812009-09-30 17:40:24 +0200406 mkdir -p $(TARGET_DIR)/etc
407 echo $(BR2_VERSION)$(shell $(TOPDIR)/scripts/setlocalversion) > \
408 $(TARGET_DIR)/etc/br-version
409
Daniel Mackeed7d872009-07-08 22:46:58 +0200410ifneq ($(BR2_ROOTFS_POST_BUILD_SCRIPT),"")
411 $(BR2_ROOTFS_POST_BUILD_SCRIPT) $(TARGET_DIR)
412endif
413
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000414ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200415LOCALE_WHITELIST=$(BUILD_DIR)/locales.nopurge
Thomas Petazzoni6cdf2482009-07-30 17:28:20 +0200416LOCALE_NOPURGE=$(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST))
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000417
418target-purgelocales:
419 rm -f $(LOCALE_WHITELIST)
420 for i in $(LOCALE_NOPURGE); do echo $$i >> $(LOCALE_WHITELIST); done
421
422 for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/man /usr/share/man)); \
423 do \
424 for lang in $$(cd $$dir; ls .|grep -v man); \
425 do \
426 grep -qx $$lang $(LOCALE_WHITELIST) || rm -rf $$dir/$$lang; \
427 done; \
428 done
429endif
430
Bernhard Reutner-Fischer3b08e642007-09-18 13:12:25 +0000431source: $(TARGETS_SOURCE) $(HOST_SOURCE)
Eric Andersenffde94b2001-12-22 00:56:11 +0000432
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000433_source-check:
Ulf Samuelssone7c08c22007-07-20 07:34:28 +0000434 $(MAKE) SPIDER=--spider source
Bernhard Reutner-Fischer825ff342007-06-07 12:57:03 +0000435
Peter Korsgaard155971e2008-03-04 12:19:16 +0000436external-deps:
Ulf Samuelsson2ad346a2008-07-07 18:26:09 +0000437 @$(MAKE) -Bs BR2_WGET=$(TOPDIR)/toolchain/wget-show-external-deps.sh \
Peter Korsgaardbcad6282008-07-24 13:38:39 +0000438 SPIDER=--spider source
Peter Korsgaard155971e2008-03-04 12:19:16 +0000439
Thomas Petazzonib7d6c8a2010-05-13 19:20:33 +0200440show-targets:
441 @echo $(TARGETS)
442
Peter Korsgaardb5972132009-12-12 00:16:33 +0100443ifeq ($(BR2_CONFIG_CACHE),y)
Thomas Petazzoni26082e72010-06-20 15:08:15 +0200444# drop configure caches if configuration is changed
445$(BUILD_DIR)/tgt-config.cache $(BUILD_DIR)/host-config.cache: $(CONFIG_DIR)/.config
Peter Korsgaardb5972132009-12-12 00:16:33 +0100446 rm -f $@
447 touch $@
448
Thomas Petazzoni26082e72010-06-20 15:08:15 +0200449$(BASE_TARGETS): | $(BUILD_DIR)/tgt-config.cache $(BUILD_DIR)/host-config.cache
Peter Korsgaardb5972132009-12-12 00:16:33 +0100450endif
451
Bernhard Reutner-Fischercfe511b2007-09-29 13:58:30 +0000452else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
Eric Andersen2d523c22004-10-09 01:06:03 +0000453
454all: menuconfig
455
456# configuration
457# ---------------------------------------------------------------------------
458
Bernhard Reutner-Fischerc0d7d4e2007-07-09 18:23:20 +0000459HOSTCFLAGS=$(CFLAGS_FOR_BUILD)
460export HOSTCFLAGS
461
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200462$(BUILD_DIR)/buildroot-config/%onf:
463 mkdir -p $(@D)/lxdialog
464 $(MAKE) CC="$(HOSTCC)" obj=$(@D) -C $(CONFIG) $(@F)
Will Wagner39ca6d52010-01-11 12:28:50 +0000465 -@if [ ! -f $(CONFIG_DIR)/.config ]; then \
466 cp $(CONFIG_DEFCONFIG) $(CONFIG_DIR)/.config; \
Alper Yildirimb0df9df2009-07-20 19:17:10 +0200467 fi
468
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200469xconfig: $(BUILD_DIR)/buildroot-config/qconf
Will Wagner39ca6d52010-01-11 12:28:50 +0000470 @mkdir -p $(BUILD_DIR)/buildroot-config
471 @if ! KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
472 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200473 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< $(CONFIG_CONFIG_IN); then \
Will Wagner39ca6d52010-01-11 12:28:50 +0000474 test -f $(CONFIG_DIR)/.config.cmd || rm -f $(CONFIG_DIR)/.config; \
Alper Yildirimb0df9df2009-07-20 19:17:10 +0200475 fi
476
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200477gconfig: $(BUILD_DIR)/buildroot-config/gconf
Will Wagner39ca6d52010-01-11 12:28:50 +0000478 @mkdir -p $(BUILD_DIR)/buildroot-config
479 @if ! KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
480 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200481 srctree=$(TOPDIR) \
482 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< $(CONFIG_CONFIG_IN); then \
Will Wagner39ca6d52010-01-11 12:28:50 +0000483 test -f $(CONFIG_DIR)/.config.cmd || rm -f $(CONFIG_DIR)/.config; \
Peter Korsgaard2b42aae2010-06-05 21:09:05 +0200484 fi
485
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200486menuconfig: $(BUILD_DIR)/buildroot-config/mconf
Will Wagner39ca6d52010-01-11 12:28:50 +0000487 @mkdir -p $(BUILD_DIR)/buildroot-config
488 @if ! KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
489 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200490 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< $(CONFIG_CONFIG_IN); then \
Will Wagner39ca6d52010-01-11 12:28:50 +0000491 test -f $(CONFIG_DIR)/.config.cmd || rm -f $(CONFIG_DIR)/.config; \
Bernhard Reutner-Fischer153b1be2007-07-27 12:37:30 +0000492 fi
Eric Andersen2d523c22004-10-09 01:06:03 +0000493
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200494config: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000495 @mkdir -p $(BUILD_DIR)/buildroot-config
496 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
497 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200498 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000499
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200500oldconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000501 mkdir -p $(BUILD_DIR)/buildroot-config
502 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
503 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200504 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -o $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000505
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200506randconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000507 @mkdir -p $(BUILD_DIR)/buildroot-config
508 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
509 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200510 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -r $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000511
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200512allyesconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000513 cat $(CONFIG_DEFCONFIG) > $(CONFIG_DIR)/.config
514 @mkdir -p $(BUILD_DIR)/buildroot-config
515 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
516 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Daniel Hobicf4689f2010-06-29 19:22:19 +0200517 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -y $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000518
Daniel Hobicf4689f2010-06-29 19:22:19 +0200519allnoconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000520 @mkdir -p $(BUILD_DIR)/buildroot-config
521 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
522 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Daniel Hobicf4689f2010-06-29 19:22:19 +0200523 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -n $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000524
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200525randpackageconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000526 @mkdir -p $(BUILD_DIR)/buildroot-config
527 @grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
528 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
529 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
530 KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
Daniel Hobicf4689f2010-06-29 19:22:19 +0200531 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -r $(CONFIG_CONFIG_IN)
Will Wagner39ca6d52010-01-11 12:28:50 +0000532 @rm -f $(CONFIG_DIR)/.config.nopkg
Peter Korsgaard66527702009-10-04 21:57:12 +0200533
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200534allyespackageconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000535 @mkdir -p $(BUILD_DIR)/buildroot-config
536 @grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
537 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
538 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
539 KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
Daniel Hobicf4689f2010-06-29 19:22:19 +0200540 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -y $(CONFIG_CONFIG_IN)
Will Wagner39ca6d52010-01-11 12:28:50 +0000541 @rm -f $(CONFIG_DIR)/.config.nopkg
Peter Korsgaard66527702009-10-04 21:57:12 +0200542
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200543allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000544 @mkdir -p $(BUILD_DIR)/buildroot-config
545 @grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
546 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
547 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
548 KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
Daniel Hobicf4689f2010-06-29 19:22:19 +0200549 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -n $(CONFIG_CONFIG_IN)
Will Wagner39ca6d52010-01-11 12:28:50 +0000550 @rm -f $(CONFIG_DIR)/.config.nopkg
Peter Korsgaard66527702009-10-04 21:57:12 +0200551
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200552defconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000553 @mkdir -p $(BUILD_DIR)/buildroot-config
554 @KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
555 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Daniel Hobicf4689f2010-06-29 19:22:19 +0200556 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config $< -d $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000557
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000558# check if download URLs are outdated
Bernhard Reutner-Fischer825ff342007-06-07 12:57:03 +0000559source-check: allyesconfig
560 $(MAKE) _source-check
561
Peter Korsgaard406053d2009-11-20 14:05:48 +0100562endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
563
Eric Andersen2d523c22004-10-09 01:06:03 +0000564#############################################################
565#
566# Cleanup and misc junk
567#
568#############################################################
569clean:
Peter Korsgaard406053d2009-11-20 14:05:48 +0100570 rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
571 $(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR)
Eric Andersen2d523c22004-10-09 01:06:03 +0000572
573distclean: clean
Peter Korsgaard406053d2009-11-20 14:05:48 +0100574ifeq ($(DL_DIR),$(TOPDIR)/dl)
575 rm -rf $(DL_DIR)
576endif
577ifeq ($(O),output)
578 rm -rf $(O)
579endif
Will Wagner39ca6d52010-01-11 12:28:50 +0000580 rm -rf $(CONFIG_DIR)/.config $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/.config.cmd $(CONFIG_DIR)/.auto.deps
Eric Andersen2d523c22004-10-09 01:06:03 +0000581
Ulf Samuelsson260d3b42009-01-29 09:34:11 +0000582flush:
Thomas Petazzoni26082e72010-06-20 15:08:15 +0200583 rm -f $(BUILD_DIR)/tgt-config.cache $(BUILD_DIR)/host-config.cache
Ulf Samuelsson260d3b42009-01-29 09:34:11 +0000584
Peter Korsgaard58fd7792009-10-04 22:09:25 +0200585%_defconfig: $(TOPDIR)/configs/%_defconfig
Will Wagner39ca6d52010-01-11 12:28:50 +0000586 cp $^ $(CONFIG_DIR)/.config
Peter Korsgaard2691d802010-06-21 22:13:20 +0200587ifeq ($(O),output)
588 @$(MAKE) oldconfig
589else
Will Wagner39ca6d52010-01-11 12:28:50 +0000590 @$(MAKE) O=$(O) oldconfig
Peter Korsgaard2691d802010-06-21 22:13:20 +0200591endif
Bernhard Reutner-Fischerba2e7e02007-06-25 10:56:13 +0000592
Ulf Samuelsson5459a9c2007-09-28 19:43:26 +0000593configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config
Ulf Samuelssonb8f28d62007-09-28 16:18:16 +0000594
Ulf Samuelsson126bb722008-07-04 08:39:35 +0000595prepatch: gcc-patched binutils-patched gdb-patched uclibc-patched
596
Ulf Samuelssonb8f28d62007-09-28 16:18:16 +0000597cross: $(BASE_TARGETS)
598
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000599help:
600 @echo 'Cleaning:'
Peter Korsgaard406053d2009-11-20 14:05:48 +0100601 @echo ' clean - delete all files created by build'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000602 @echo ' distclean - delete all non-source files (including .config)'
603 @echo
604 @echo 'Build:'
605 @echo ' all - make world'
606 @echo
607 @echo 'Configuration:'
608 @echo ' menuconfig - interactive curses-based configurator'
Peter Korsgaardc48bbb82009-10-04 21:42:54 +0200609 @echo ' xconfig - interactive Qt-based configurator'
Peter Korsgaard2b42aae2010-06-05 21:09:05 +0200610 @echo ' gconfig - interactive GTK-based configurator'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000611 @echo ' oldconfig - resolve any unresolved symbols in .config'
Peter Korsgaardc48bbb82009-10-04 21:42:54 +0200612 @echo ' randconfig - New config with random answer to all options'
613 @echo ' defconfig - New config with default answer to all options'
614 @echo ' allyesconfig - New config where all options are accepted with yes'
615 @echo ' allnoconfig - New config where all options are answered with no'
Peter Korsgaard66527702009-10-04 21:57:12 +0200616 @echo ' randpackageconfig - New config with random answer to package options'
617 @echo ' allyespackageconfig - New config where pkg options are accepted with yes'
618 @echo ' allnopackageconfig - New config where package options are answered with no'
Ulf Samuelsson7b2ec612009-01-22 23:03:17 +0000619 @echo ' configured - make {uclibc/busybox/linux26}-config'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000620 @echo
621 @echo 'Miscellaneous:'
622 @echo ' source - download all sources needed for offline-build'
Bernhard Reutner-Fischer03380402007-08-21 10:42:05 +0000623 @echo ' source-check - check all packages for valid download URLs'
Peter Korsgaard155971e2008-03-04 12:19:16 +0000624 @echo ' external-deps - list external packages used'
Ulf Samuelsson13a85e32009-01-25 23:01:22 +0000625 @echo ' flush - flush configuration cache'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000626 @echo
Peter Korsgaard58fd7792009-10-04 22:09:25 +0200627 @$(foreach b, $(notdir $(wildcard $(TOPDIR)/configs/*_defconfig)), \
628 printf " %-35s - Build for %s\\n" $(b) $(b:_defconfig=);)
629 @echo
Bernhard Reutner-Fischer232fa7e2007-08-27 21:51:27 +0000630 @echo 'See docs/README and docs/buildroot.html for further details'
Bernhard Reutner-Fischer663dee42007-08-27 21:40:42 +0000631 @echo
Bernhard Reutner-Fischerba2e7e02007-06-25 10:56:13 +0000632
Peter Korsgaard23ddf462010-02-09 16:34:04 +0100633release:
Peter Korsgaarde62d2ec2009-01-15 19:36:06 +0000634 OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
Peter Korsgaard23ddf462010-02-09 16:34:04 +0100635 git archive --format=tar --prefix=$$OUT/ master|gzip -9 >$$OUT.tar.gz
Peter Korsgaarde62d2ec2009-01-15 19:36:06 +0000636
Peter Korsgaard66527702009-10-04 21:57:12 +0200637.PHONY: $(noconfig_targets)
Ulf Samuelsson50cbb4a2008-07-05 09:22:38 +0000638