blob: faa802bb75e8ab94bd48d09af1adaac9dc665e32 [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
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000028CONFIG=package/config
Ulf Samuelssona8ee1242008-05-11 06:55:04 +000029DATE:=$(shell date +%Y%m%d)
Eric Andersen2d523c22004-10-09 01:06:03 +000030
Thomas Petazzoni8b6585a2010-08-21 17:21:40 +020031noconfig_targets:=menuconfig nconfig gconfig xconfig config oldconfig randconfig \
Thomas Petazzoni0b368802010-08-22 07:27:09 +020032 defconfig %_defconfig savedefconfig allyesconfig allnoconfig silentoldconfig release \
Peter Korsgaard66527702009-10-04 21:57:12 +020033 randpackageconfig allyespackageconfig allnopackageconfig \
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +000034 source-check help
Bernhard Reutner-Fischer9e250352006-12-02 19:01:10 +000035
Thomas Petazzoni580c6d92009-07-30 17:26:49 +020036# Strip quotes and then whitespaces
37qstrip=$(strip $(subst ",,$(1)))
38#"))
39
Peter Korsgaardf85f2de2009-01-25 20:19:01 +000040# Variables for use in Make constructs
41comma:=,
42empty:=
43space:=$(empty) $(empty)
44
Will Wagner39ca6d52010-01-11 12:28:50 +000045ifneq ("$(origin O)", "command line")
46O:=output
47CONFIG_DIR:=$(TOPDIR)
48else
49# other packages might also support Linux-style out of tree builds
50# with the O=<dir> syntax (E.G. Busybox does). As make automatically
51# forwards command line variable definitions those packages get very
52# confused. Fix this by telling make to not do so
53MAKEOVERRIDES =
54# strangely enough O is still passed to submakes with MAKEOVERRIDES
55# (with make 3.81 atleast), the only thing that changes is the output
56# of the origin function (command line -> environment).
57# Unfortunately some packages don't look at origin (E.G. uClibc 0.9.31+)
58# To really make O go away, we have to override it.
59override O:=$(O)
60CONFIG_DIR:=$(O)
Peter Korsgaardde846f62010-08-29 23:24:07 +020061# we need to pass O= everywhere we call back into the toplevel makefile
62EXTRAMAKEARGS = O=$(O)
Will Wagner39ca6d52010-01-11 12:28:50 +000063endif
64
Ulf Samuelssona1b06512008-03-28 07:31:28 +000065# $(shell find . -name *_defconfig |sed 's/.*\///')
66# Pull in the user's configuration file
67ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
Will Wagner39ca6d52010-01-11 12:28:50 +000068-include $(CONFIG_DIR)/.config
Ulf Samuelsson7521f372007-09-12 04:34:16 +000069endif
Eric Andersen2d523c22004-10-09 01:06:03 +000070
Ulf Samuelssonefd85762008-03-30 06:38:46 +000071# Override BR2_DL_DIR if shell variable defined
72ifneq ($(BUILDROOT_DL_DIR),)
73BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
74endif
Ulf Samuelssonefd85762008-03-30 06:38:46 +000075
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000076# To put more focus on warnings, be less verbose as default
77# Use 'make V=1' to see the full commands
78ifdef V
79 ifeq ("$(origin V)", "command line")
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000080 KBUILD_VERBOSE=$(V)
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000081 endif
82endif
83ifndef KBUILD_VERBOSE
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000084 KBUILD_VERBOSE=0
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000085endif
86
87ifeq ($(KBUILD_VERBOSE),1)
Ulf Samuelsson4df454e2007-07-06 12:19:35 +000088 quiet=
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000089 Q=
Bernhard Reutner-Fischer1669b6e2007-09-22 14:19:22 +000090ifndef VERBOSE
91 VERBOSE=1
92endif
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000093else
94 quiet=quiet_
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000095 Q=@
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000096endif
97
Peter Korsgaard69f85922009-01-01 21:20:35 +000098# we want bash as shell
99SHELL:=$(shell if [ -x "$$BASH" ]; then echo $$BASH; \
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000100 else if [ -x /bin/bash ]; then echo /bin/bash; \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000101 else echo sh; fi; fi)
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000102
Peter Korsgaard69f85922009-01-01 21:20:35 +0000103# kconfig uses CONFIG_SHELL
104CONFIG_SHELL:=$(SHELL)
105
106export SHELL CONFIG_SHELL quiet Q KBUILD_VERBOSE VERBOSE
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000107
108ifndef HOSTAR
109HOSTAR:=ar
110endif
111ifndef HOSTAS
112HOSTAS:=as
113endif
114ifndef HOSTCC
115HOSTCC:=gcc
116else
117endif
118ifndef HOSTCXX
119HOSTCXX:=g++
120endif
Bernhard Reutner-Fischer5f975802007-09-28 20:10:22 +0000121ifndef HOSTFC
122HOSTFC:=gfortran
123endif
Ulf Samuelsson356133b2007-09-28 19:46:58 +0000124ifndef HOSTCPP
125HOSTCPP:=cpp
126endif
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000127ifndef HOSTLD
128HOSTLD:=ld
129endif
Ulf Samuelsson0f9c5b12007-07-15 21:54:11 +0000130ifndef HOSTLN
131HOSTLN:=ln
132endif
Ulf Samuelsson356133b2007-09-28 19:46:58 +0000133ifndef HOSTNM
134HOSTNM:=nm
135endif
Peter Korsgaard69f85922009-01-01 21:20:35 +0000136HOSTAR:=$(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)
137HOSTAS:=$(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)
138HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
139HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
140HOSTFC:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo || which g77 || type -p g77 || echo gfortran)
141HOSTCPP:=$(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp)
142HOSTLD:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)
143HOSTLN:=$(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln)
144HOSTNM:=$(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm)
Ulf Samuelsson54e93322008-07-06 07:34:41 +0000145
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000146ifndef CFLAGS_FOR_BUILD
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000147CFLAGS_FOR_BUILD:=-g -O2
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000148endif
Bernhard Reutner-Fischer5f975802007-09-28 20:10:22 +0000149ifndef CXXFLAGS_FOR_BUILD
150CXXFLAGS_FOR_BUILD:=-g -O2
151endif
152ifndef FCFLAGS_FOR_BUILD
153FCFLAGS_FOR_BUILD:=-g -O2
154endif
155export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTFC HOSTLD
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000156
Will Wagner39ca6d52010-01-11 12:28:50 +0000157# bash prints the name of the directory on 'cd <dir>' if CDPATH is
158# set, so unset it here to not cause problems. Notice that the export
159# line doesn't affect the environment of $(shell ..) calls, so
160# explictly throw away any output from 'cd' here.
161export CDPATH:=
162BASE_DIR := $(shell mkdir -p $(O) && cd $(O) >/dev/null && pwd)
163$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))
164
165BUILD_DIR:=$(BASE_DIR)/build
166
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000167
Bernhard Reutner-Fischercfe511b2007-09-29 13:58:30 +0000168ifeq ($(BR2_HAVE_DOT_CONFIG),y)
Eric Andersenffde94b2001-12-22 00:56:11 +0000169
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000170# cc-option
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000171# Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000172# sets -march=winchip-c6 if supported else falls back to -march=i586
173# without checking the latter.
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000174cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000175 > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
176
Peter Korsgaard2c649042007-06-19 15:19:27 +0000177#############################################################
178#
179# Hide troublesome environment variables from sub processes
180#
181#############################################################
182unexport CROSS_COMPILE
183unexport ARCH
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000184
Peter Korsgaardc71816a2010-05-06 20:53:25 +0200185GNU_HOST_NAME:=$(shell package/gnuconfig/config.guess)
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200186
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000187#############################################################
188#
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000189# Setup the proper filename extensions for the host
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000190#
191##############################################################
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200192ifneq ($(findstring linux,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000193HOST_EXEEXT:=
194HOST_LIBEXT:=.a
195HOST_SHREXT:=.so
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000196endif
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200197ifneq ($(findstring apple,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000198HOST_EXEEXT:=
199HOST_LIBEXT:=.a
200HOST_SHREXT:=.dylib
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000201endif
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200202ifneq ($(findstring cygwin,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000203HOST_EXEEXT:=.exe
204HOST_LIBEXT:=.lib
205HOST_SHREXT:=.dll
Peter Korsgaard2c279672008-06-19 08:11:35 +0000206HOST_LOADLIBES="-lcurses -lintl"
207export HOST_LOADLIBES
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000208endif
Thomas Petazzoni60281cb2010-04-10 23:17:25 +0200209ifneq ($(findstring mingw,$(GNU_HOST_NAME)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000210HOST_EXEEXT:=.exe
211HOST_LIBEXT:=.lib
212HOST_SHREXT:=.dll
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000213endif
214
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000215# The preferred type of libs we build for the target
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000216ifeq ($(BR2_PREFER_STATIC_LIB),y)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000217LIBTGTEXT=.a
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000218#PREFERRED_LIB_FLAGS:=--disable-shared --enable-static
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000219else
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000220LIBTGTEXT=.so
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000221#PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000222endif
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000223PREFERRED_LIB_FLAGS:=--enable-static --enable-shared
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000224
Bernhard Reutner-Fischer6ad07202007-07-31 15:02:06 +0000225##############################################################
Eric Andersen08782ae2002-04-26 11:45:55 +0000226#
Eric Andersen2d523c22004-10-09 01:06:03 +0000227# The list of stuff to build for the target toolchain
228# along with the packages to build for the target.
Eric Andersen08782ae2002-04-26 11:45:55 +0000229#
Eric Andersen2d523c22004-10-09 01:06:03 +0000230##############################################################
Thomas Petazzonibc994c52009-12-14 12:10:12 +0100231ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
Peter Korsgaard3d8919a2008-03-04 12:19:19 +0000232BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers
Yann E. MORIN26b44b22010-03-26 20:46:37 +0100233else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
Peter Korsgaard51f5f622008-11-03 10:18:39 +0000234BASE_TARGETS:=uclibc
"Steven J. Hill"02f71aa2007-02-06 18:19:38 +0000235endif
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000236TARGETS:=
237
Peter Korsgaard89464a92009-09-30 17:39:44 +0200238# silent mode requested?
239QUIET:=$(if $(findstring s,$(MAKEFLAGS)),-q)
240
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200241# Strip off the annoying quoting
242ARCH:=$(call qstrip,$(BR2_ARCH))
243ifeq ($(ARCH),xtensa)
244ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
245endif
Thomas Petazzoni65e80a02010-04-28 23:40:57 +0200246
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200247ZCAT:=$(call qstrip,$(BR2_ZCAT))
248BZCAT:=$(call qstrip,$(BR2_BZCAT))
249TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000250
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200251GNU_TARGET_SUFFIX:=-$(call qstrip,$(BR2_GNU_TARGET_SUFFIX))
252
253STAGING_DIR:=$(call qstrip,$(BR2_STAGING_DIR))
254
255# packages compiled for the host goes here
Thomas Petazzoni3b2a8032009-07-31 10:31:39 +0200256HOST_DIR:=$(BASE_DIR)/host
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200257
258# stamp (dependency) files go here
Thomas Petazzoni3b2a8032009-07-31 10:31:39 +0200259STAMP_DIR:=$(BASE_DIR)/stamps
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200260
Thomas Petazzoni3b2a8032009-07-31 10:31:39 +0200261BINARIES_DIR:=$(BASE_DIR)/images
262TARGET_DIR:=$(BASE_DIR)/target
Thomas Petazzoni4c5bf462010-04-28 23:40:52 +0200263TOOLCHAIN_DIR=$(BASE_DIR)/toolchain
Malte Starostikfbc22ec2010-07-19 08:25:50 +0200264TARGET_SKELETON=$(TOPDIR)/fs/skeleton
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200265
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200266BR2_DEPENDS_DIR=$(BUILD_DIR)/buildroot-config
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000267
Eric Andersen2d523c22004-10-09 01:06:03 +0000268include toolchain/Makefile.in
Eric Andersen2d523c22004-10-09 01:06:03 +0000269include package/Makefile.in
Eric Andersen27bc59d2003-01-17 04:31:36 +0000270
Eric Andersen08782ae2002-04-26 11:45:55 +0000271#############################################################
272#
Eric Andersenef407d32004-01-29 23:21:00 +0000273# You should probably leave this stuff alone unless you know
Eric Andersen08782ae2002-04-26 11:45:55 +0000274# what you are doing.
275#
276#############################################################
Manuel Novoa III d632d422003-11-01 05:34:41 +0000277
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000278all: world
Eric Andersenffde94b2001-12-22 00:56:11 +0000279
Eric Andersen2d523c22004-10-09 01:06:03 +0000280# In this section, we need .config
Peter Korsgaard2691d802010-06-21 22:13:20 +0200281-include $(CONFIG_DIR)/.config.cmd
Eric Andersen2d523c22004-10-09 01:06:03 +0000282
Eric Andersend06645d2005-02-10 03:06:39 +0000283# We also need the various per-package makefiles, which also add
284# each selected package to TARGETS if that package was selected
285# in the .config file.
Thomas Petazzonibc994c52009-12-14 12:10:12 +0100286ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
Yann E. MORINed020092010-07-28 00:08:15 +0200287include toolchain/toolchain-buildroot.mk
Yann E. MORIN26b44b22010-03-26 20:46:37 +0100288else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
Yann E. MORINed020092010-07-28 00:08:15 +0200289include toolchain/toolchain-external.mk
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000290endif
291
Eric Andersend06645d2005-02-10 03:06:39 +0000292include package/*/*.mk
Eric Andersend06645d2005-02-10 03:06:39 +0000293
Peter Korsgaard32faf352009-04-07 21:04:31 +0000294TARGETS+=target-finalize
John Voltzd45de0c2008-03-11 13:12:39 +0000295
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000296ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
297TARGETS+=target-purgelocales
298endif
299
Thomas Petazzoni649b5b92010-03-14 18:20:45 +0100300include boot/common.mk
Eric Andersen79f5f1e2005-02-17 03:00:29 +0000301include target/Makefile.in
Thomas Petazzoni487e21c2010-04-03 18:46:46 +0200302include linux/linux.mk
Thomas Petazzoni649b5b92010-03-14 18:20:45 +0100303include fs/common.mk
Eric Andersen79f5f1e2005-02-17 03:00:29 +0000304
Peter Korsgaard02a623d2008-08-04 19:07:05 +0000305TARGETS+=erase-fakeroots
Ulf Samuelssonc2fc93b2007-08-15 09:47:49 +0000306
Eric Andersen08782ae2002-04-26 11:45:55 +0000307TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
Bernhard Reutner-Fischer3b08e642007-09-18 13:12:25 +0000308TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
Eric Andersen08782ae2002-04-26 11:45:55 +0000309TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000310TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000311# all targets depend on the crosscompiler and it's prerequisites
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000312$(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000313
Michael Rothcb5710c2009-09-23 01:30:00 +0200314dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200315 $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000316
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000317$(BASE_TARGETS): dirs
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000318
Thomas Petazzoni0b368802010-08-22 07:27:09 +0200319$(BUILD_DIR)/buildroot-config/auto.conf: $(CONFIG_DIR)/.config
320 $(MAKE) $(EXTRAMAKEARGS) silentoldconfig
321
322prepare: $(BUILD_DIR)/buildroot-config/auto.conf
323
324world: prepare dependencies dirs $(BASE_TARGETS) $(TARGETS_ALL)
Eric Andersenffde94b2001-12-22 00:56:11 +0000325
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000326
Peter Korsgaard406053d2009-11-20 14:05:48 +0100327.PHONY: all world dirs clean distclean source \
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000328 $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
Eric Andersen747b16d2004-12-11 10:33:19 +0000329 $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
Michael Rothcb5710c2009-09-23 01:30:00 +0200330 $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200331 $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
Jon Nelsonc79e9982002-01-05 20:26:15 +0000332
Eric Andersen08782ae2002-04-26 11:45:55 +0000333#############################################################
334#
Eric Andersenef407d32004-01-29 23:21:00 +0000335# staging and target directories do NOT list these as
Mike Frysingerd99c31c2006-05-26 01:18:09 +0000336# dependencies anywhere else
Eric Andersen08782ae2002-04-26 11:45:55 +0000337#
338#############################################################
Michael Rothcb5710c2009-09-23 01:30:00 +0200339$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR):
Bernhard Reutner-Fischer8d583fc2007-01-30 00:58:18 +0000340 @mkdir -p $@
Manuel Novoa III 3ad3d8a2004-09-03 00:49:43 +0000341
Eric Andersen08782ae2002-04-26 11:45:55 +0000342$(STAGING_DIR):
"Steven J. Hill"9c865d72007-05-07 03:56:47 +0000343 @mkdir -p $(STAGING_DIR)/bin
Eric Andersenbf387232004-12-11 10:35:18 +0000344 @mkdir -p $(STAGING_DIR)/lib
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000345 @mkdir -p $(STAGING_DIR)/usr/lib
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000346 @mkdir -p $(STAGING_DIR)/usr/include
Thomas Petazzonia05c3372010-02-09 22:44:15 +0100347 @mkdir -p $(STAGING_DIR)/usr/bin
Eric Andersen08782ae2002-04-26 11:45:55 +0000348
Dmytro Milinevskyy2b3a43f2010-06-16 23:25:56 +0300349ifeq ($(BR2_ROOTFS_SKELETON_CUSTOM),y)
350TARGET_SKELETON=$(BR2_ROOTFS_SKELETON_CUSTOM_PATH)
351endif
352
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200353$(BUILD_DIR)/.root:
Bernhard Reutner-Fischer7547c7e2007-08-21 10:53:39 +0000354 mkdir -p $(TARGET_DIR)
Bernhard Reutner-Fischerf0ca4b82007-08-21 10:56:38 +0000355 if ! [ -d "$(TARGET_DIR)/bin" ]; then \
356 if [ -d "$(TARGET_SKELETON)" ]; then \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000357 cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
Ulf Samuelsson74cda1e2007-08-14 07:24:45 +0000358 fi; \
Maxim Grigorievedb5ca92009-07-24 02:37:06 +0200359 if [ -d "$(TARGET_SKELETON_PATCH)" ]; then \
360 toolchain/patch-kernel.sh $(TARGET_DIR) $(TARGET_SKELETON_PATCH)/ \*patch\*; \
361 fi; \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000362 touch $(STAGING_DIR)/.fakeroot.00000; \
Bernhard Reutner-Fischerf0ca4b82007-08-21 10:56:38 +0000363 fi
Will Newtonfc3eb182009-08-10 10:04:14 +0100364 -find $(TARGET_DIR) -type d -name CVS -print0 -o -name .svn -print0 | xargs -0 rm -rf
Anders Daranderb9656e82009-12-23 10:05:45 +0100365 -find $(TARGET_DIR) -type f \( -name .empty -o -name '*~' \) -print0 | xargs -0 rm -rf
Bernhard Reutner-Fischer7547c7e2007-08-21 10:53:39 +0000366 touch $@
Eric Andersenffde94b2001-12-22 00:56:11 +0000367
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200368$(TARGET_DIR): $(BUILD_DIR)/.root
Ulf Samuelssonc6771df2007-08-16 05:44:55 +0000369
Ulf Samuelssonc2fc93b2007-08-15 09:47:49 +0000370erase-fakeroots:
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200371 rm -f $(BUILD_DIR)/.fakeroot*
Ulf Samuelsson412ca2a2007-07-12 13:11:03 +0000372
Peter Korsgaard32faf352009-04-07 21:04:31 +0000373target-finalize:
John Voltzd45de0c2008-03-11 13:12:39 +0000374ifeq ($(BR2_HAVE_DEVFILES),y)
375 ( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
John Voltzbc67ca22008-03-10 15:22:43 +0000376else
Malte Starostikbea9e432010-07-24 13:21:25 +0200377 rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/aclocal
Wade Berrier027aa1d2009-04-28 17:33:44 +0000378 find $(TARGET_DIR)/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
379 find $(TARGET_DIR)/usr/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
John Voltzbc67ca22008-03-10 15:22:43 +0000380endif
Malte Starostike48a72e2010-07-24 21:29:56 +0200381ifneq ($(BR2_PACKAGE_GDB),y)
382 rm -rf $(TARGET_DIR)/usr/share/gdb
383endif
Thomas Petazzoni87b06372010-04-10 22:42:45 +0200384ifneq ($(BR2_HAVE_DOCUMENTATION),y)
Peter Korsgaard32faf352009-04-07 21:04:31 +0000385 rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man
Peter Korsgaard32faf352009-04-07 21:04:31 +0000386 rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info
Thomas Petazzoni87b06372010-04-10 22:42:45 +0200387 rm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc
Paulius Zaleckasd701a822010-05-05 13:09:36 +0300388 rm -rf $(TARGET_DIR)/usr/share/gtk-doc
Peter Korsgaard32faf352009-04-07 21:04:31 +0000389endif
390 find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIPCMD) 2>/dev/null || true
Thomas Petazzoni4ccde7f2010-08-30 22:52:18 +0200391 mkdir -p $(TARGET_DIR)/etc
392 # Mandatory configuration file and auxilliary cache directory
393 # for recent versions of ldconfig
394 touch $(TARGET_DIR)/etc/ld.so.conf
395 mkdir -p $(TARGET_DIR)/var/cache/ldconfig
Peter Korsgaarde49e2fe2010-07-26 23:53:37 +0200396 if [ -x "$(TARGET_CROSS)ldconfig" ]; \
397 then \
Thomas Petazzoni4ccde7f2010-08-30 22:52:18 +0200398 $(TARGET_CROSS)ldconfig -r $(TARGET_DIR); \
Peter Korsgaarde49e2fe2010-07-26 23:53:37 +0200399 else \
Thomas Petazzoni4ccde7f2010-08-30 22:52:18 +0200400 /sbin/ldconfig -r $(TARGET_DIR); \
Peter Korsgaarde49e2fe2010-07-26 23:53:37 +0200401 fi
Peter Korsgaard912ea812009-09-30 17:40:24 +0200402 echo $(BR2_VERSION)$(shell $(TOPDIR)/scripts/setlocalversion) > \
403 $(TARGET_DIR)/etc/br-version
404
Daniel Mackeed7d872009-07-08 22:46:58 +0200405ifneq ($(BR2_ROOTFS_POST_BUILD_SCRIPT),"")
406 $(BR2_ROOTFS_POST_BUILD_SCRIPT) $(TARGET_DIR)
407endif
408
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000409ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
Thomas Petazzoni397fe5c2009-09-05 15:49:30 +0200410LOCALE_WHITELIST=$(BUILD_DIR)/locales.nopurge
Thomas Petazzoni6cdf2482009-07-30 17:28:20 +0200411LOCALE_NOPURGE=$(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST))
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000412
413target-purgelocales:
414 rm -f $(LOCALE_WHITELIST)
415 for i in $(LOCALE_NOPURGE); do echo $$i >> $(LOCALE_WHITELIST); done
416
417 for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/man /usr/share/man)); \
418 do \
419 for lang in $$(cd $$dir; ls .|grep -v man); \
420 do \
421 grep -qx $$lang $(LOCALE_WHITELIST) || rm -rf $$dir/$$lang; \
422 done; \
423 done
424endif
425
Bernhard Reutner-Fischer3b08e642007-09-18 13:12:25 +0000426source: $(TARGETS_SOURCE) $(HOST_SOURCE)
Eric Andersenffde94b2001-12-22 00:56:11 +0000427
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000428_source-check:
Maxime Petazzonid147b812010-09-02 12:31:57 +0200429 $(MAKE) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
Bernhard Reutner-Fischer825ff342007-06-07 12:57:03 +0000430
Peter Korsgaard155971e2008-03-04 12:19:16 +0000431external-deps:
Maxime Petazzonid147b812010-09-02 12:31:57 +0200432 @$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS $(EXTRAMAKEARGS) source
Peter Korsgaard155971e2008-03-04 12:19:16 +0000433
Thomas Petazzonib7d6c8a2010-05-13 19:20:33 +0200434show-targets:
435 @echo $(TARGETS)
436
Peter Korsgaardb5972132009-12-12 00:16:33 +0100437ifeq ($(BR2_CONFIG_CACHE),y)
Thomas Petazzoni26082e72010-06-20 15:08:15 +0200438# drop configure caches if configuration is changed
439$(BUILD_DIR)/tgt-config.cache $(BUILD_DIR)/host-config.cache: $(CONFIG_DIR)/.config
Peter Korsgaardb5972132009-12-12 00:16:33 +0100440 rm -f $@
441 touch $@
442
Thomas Petazzoni26082e72010-06-20 15:08:15 +0200443$(BASE_TARGETS): | $(BUILD_DIR)/tgt-config.cache $(BUILD_DIR)/host-config.cache
Peter Korsgaardb5972132009-12-12 00:16:33 +0100444endif
445
Bernhard Reutner-Fischercfe511b2007-09-29 13:58:30 +0000446else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
Eric Andersen2d523c22004-10-09 01:06:03 +0000447
448all: menuconfig
449
450# configuration
451# ---------------------------------------------------------------------------
452
Bernhard Reutner-Fischerc0d7d4e2007-07-09 18:23:20 +0000453HOSTCFLAGS=$(CFLAGS_FOR_BUILD)
454export HOSTCFLAGS
455
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200456$(BUILD_DIR)/buildroot-config/%onf:
457 mkdir -p $(@D)/lxdialog
Thomas Petazzoni7c524dd2010-08-21 15:59:10 +0200458 $(MAKE) CC="$(HOSTCC)" obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F)
Alper Yildirimb0df9df2009-07-20 19:17:10 +0200459
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200460COMMON_CONFIG_ENV = \
461 KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
462 KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
Thomas Petazzoni0b368802010-08-22 07:27:09 +0200463 KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200464 BUILDROOT_CONFIG=$(CONFIG_DIR)/.config
Alper Yildirimb0df9df2009-07-20 19:17:10 +0200465
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200466xconfig: $(BUILD_DIR)/buildroot-config/qconf
Will Wagner39ca6d52010-01-11 12:28:50 +0000467 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200468 @if ! $(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN); then \
Will Wagner39ca6d52010-01-11 12:28:50 +0000469 test -f $(CONFIG_DIR)/.config.cmd || rm -f $(CONFIG_DIR)/.config; \
Alper Yildirimb0df9df2009-07-20 19:17:10 +0200470 fi
471
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200472gconfig: $(BUILD_DIR)/buildroot-config/gconf
Will Wagner39ca6d52010-01-11 12:28:50 +0000473 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200474 @if ! $(COMMON_CONFIG_ENV) srctree=$(TOPDIR) \
475 $< $(CONFIG_CONFIG_IN); then \
Will Wagner39ca6d52010-01-11 12:28:50 +0000476 test -f $(CONFIG_DIR)/.config.cmd || rm -f $(CONFIG_DIR)/.config; \
Peter Korsgaard2b42aae2010-06-05 21:09:05 +0200477 fi
478
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200479menuconfig: $(BUILD_DIR)/buildroot-config/mconf
Will Wagner39ca6d52010-01-11 12:28:50 +0000480 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200481 @if ! $(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN); then \
Will Wagner39ca6d52010-01-11 12:28:50 +0000482 test -f $(CONFIG_DIR)/.config.cmd || rm -f $(CONFIG_DIR)/.config; \
Bernhard Reutner-Fischer153b1be2007-07-27 12:37:30 +0000483 fi
Eric Andersen2d523c22004-10-09 01:06:03 +0000484
Thomas Petazzoni8b6585a2010-08-21 17:21:40 +0200485nconfig: $(BUILD_DIR)/buildroot-config/nconf
486 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200487 @if ! $(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN); then \
Eric Andersen2d523c22004-10-09 01:06:03 +0000488 test -f $(CONFIG_DIR)/.config.cmd || rm -f $(CONFIG_DIR)/.config; \
489 fi
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000490
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200491config: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000492 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200493 @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000494
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200495oldconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000496 mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200497 @$(COMMON_CONFIG_ENV) $< --oldconfig $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000498
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200499randconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000500 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200501 @$(COMMON_CONFIG_ENV) $< --randconfig $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000502
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200503allyesconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000504 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200505 @$(COMMON_CONFIG_ENV) $< --allyesconfig $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000506
Daniel Hobicf4689f2010-06-29 19:22:19 +0200507allnoconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000508 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200509 @$(COMMON_CONFIG_ENV) $< --allnoconfig $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000510
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200511randpackageconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000512 @mkdir -p $(BUILD_DIR)/buildroot-config
513 @grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200514 @$(COMMON_CONFIG_ENV) \
Will Wagner39ca6d52010-01-11 12:28:50 +0000515 KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200516 $< --randconfig $(CONFIG_CONFIG_IN)
Will Wagner39ca6d52010-01-11 12:28:50 +0000517 @rm -f $(CONFIG_DIR)/.config.nopkg
Peter Korsgaard66527702009-10-04 21:57:12 +0200518
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200519allyespackageconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000520 @mkdir -p $(BUILD_DIR)/buildroot-config
521 @grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200522 @$(COMMON_CONFIG_ENV) \
Will Wagner39ca6d52010-01-11 12:28:50 +0000523 KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200524 $< --allyesconfig $(CONFIG_CONFIG_IN)
Will Wagner39ca6d52010-01-11 12:28:50 +0000525 @rm -f $(CONFIG_DIR)/.config.nopkg
Peter Korsgaard66527702009-10-04 21:57:12 +0200526
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200527allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000528 @mkdir -p $(BUILD_DIR)/buildroot-config
529 @grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200530 @$(COMMON_CONFIG_ENV) \
Will Wagner39ca6d52010-01-11 12:28:50 +0000531 KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200532 $< --allnoconfig $(CONFIG_CONFIG_IN)
Will Wagner39ca6d52010-01-11 12:28:50 +0000533 @rm -f $(CONFIG_DIR)/.config.nopkg
Peter Korsgaard66527702009-10-04 21:57:12 +0200534
Thomas Petazzoni0b368802010-08-22 07:27:09 +0200535silentoldconfig: $(BUILD_DIR)/buildroot-config/conf
536 @mkdir -p $(BUILD_DIR)/buildroot-config
537 $(COMMON_CONFIG_ENV) $< --silentoldconfig $(CONFIG_CONFIG_IN)
538
Peter Korsgaard2cc210c2010-06-20 23:05:32 +0200539defconfig: $(BUILD_DIR)/buildroot-config/conf
Will Wagner39ca6d52010-01-11 12:28:50 +0000540 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200541 @$(COMMON_CONFIG_ENV) $< --defconfig $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000542
Thomas Petazzoni6f381192010-08-11 20:01:23 +0200543%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(TOPDIR)/configs/%_defconfig
544 @mkdir -p $(BUILD_DIR)/buildroot-config
Thomas Petazzoni1039eb72010-08-21 18:29:27 +0200545 @$(COMMON_CONFIG_ENV) $< --defconfig=$(TOPDIR)/configs/$@ $(CONFIG_CONFIG_IN)
Thomas Petazzoni6f381192010-08-11 20:01:23 +0200546
Thomas Petazzonie1b1a182010-08-21 18:50:44 +0200547savedefconfig: $(BUILD_DIR)/buildroot-config/conf
548 @mkdir -p $(BUILD_DIR)/buildroot-config
549 @$(COMMON_CONFIG_ENV) $< --savedefconfig=$(TOPDIR)/defconfig $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000550
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000551# check if download URLs are outdated
Bernhard Reutner-Fischer825ff342007-06-07 12:57:03 +0000552source-check: allyesconfig
Peter Korsgaardde846f62010-08-29 23:24:07 +0200553 $(MAKE) $(EXTRAMAKEARGS) _source-check
Bernhard Reutner-Fischer825ff342007-06-07 12:57:03 +0000554
Peter Korsgaard406053d2009-11-20 14:05:48 +0100555endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
556
Eric Andersen2d523c22004-10-09 01:06:03 +0000557#############################################################
558#
559# Cleanup and misc junk
560#
561#############################################################
562clean:
Peter Korsgaard406053d2009-11-20 14:05:48 +0100563 rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
564 $(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR)
Eric Andersen2d523c22004-10-09 01:06:03 +0000565
566distclean: clean
Peter Korsgaard406053d2009-11-20 14:05:48 +0100567ifeq ($(DL_DIR),$(TOPDIR)/dl)
568 rm -rf $(DL_DIR)
569endif
570ifeq ($(O),output)
571 rm -rf $(O)
572endif
Will Wagner39ca6d52010-01-11 12:28:50 +0000573 rm -rf $(CONFIG_DIR)/.config $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/.config.cmd $(CONFIG_DIR)/.auto.deps
Eric Andersen2d523c22004-10-09 01:06:03 +0000574
Ulf Samuelsson260d3b42009-01-29 09:34:11 +0000575flush:
Thomas Petazzoni26082e72010-06-20 15:08:15 +0200576 rm -f $(BUILD_DIR)/tgt-config.cache $(BUILD_DIR)/host-config.cache
Ulf Samuelsson260d3b42009-01-29 09:34:11 +0000577
Ulf Samuelsson5459a9c2007-09-28 19:43:26 +0000578configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config
Ulf Samuelssonb8f28d62007-09-28 16:18:16 +0000579
Ulf Samuelsson126bb722008-07-04 08:39:35 +0000580prepatch: gcc-patched binutils-patched gdb-patched uclibc-patched
581
Ulf Samuelssonb8f28d62007-09-28 16:18:16 +0000582cross: $(BASE_TARGETS)
583
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000584help:
585 @echo 'Cleaning:'
Peter Korsgaard406053d2009-11-20 14:05:48 +0100586 @echo ' clean - delete all files created by build'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000587 @echo ' distclean - delete all non-source files (including .config)'
588 @echo
589 @echo 'Build:'
590 @echo ' all - make world'
591 @echo
592 @echo 'Configuration:'
593 @echo ' menuconfig - interactive curses-based configurator'
Peter Korsgaardc48bbb82009-10-04 21:42:54 +0200594 @echo ' xconfig - interactive Qt-based configurator'
Peter Korsgaard2b42aae2010-06-05 21:09:05 +0200595 @echo ' gconfig - interactive GTK-based configurator'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000596 @echo ' oldconfig - resolve any unresolved symbols in .config'
Peter Korsgaardc48bbb82009-10-04 21:42:54 +0200597 @echo ' randconfig - New config with random answer to all options'
598 @echo ' defconfig - New config with default answer to all options'
599 @echo ' allyesconfig - New config where all options are accepted with yes'
600 @echo ' allnoconfig - New config where all options are answered with no'
Peter Korsgaard66527702009-10-04 21:57:12 +0200601 @echo ' randpackageconfig - New config with random answer to package options'
602 @echo ' allyespackageconfig - New config where pkg options are accepted with yes'
603 @echo ' allnopackageconfig - New config where package options are answered with no'
Ulf Samuelsson7b2ec612009-01-22 23:03:17 +0000604 @echo ' configured - make {uclibc/busybox/linux26}-config'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000605 @echo
606 @echo 'Miscellaneous:'
607 @echo ' source - download all sources needed for offline-build'
Bernhard Reutner-Fischer03380402007-08-21 10:42:05 +0000608 @echo ' source-check - check all packages for valid download URLs'
Peter Korsgaard155971e2008-03-04 12:19:16 +0000609 @echo ' external-deps - list external packages used'
Ulf Samuelsson13a85e32009-01-25 23:01:22 +0000610 @echo ' flush - flush configuration cache'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000611 @echo
Peter Korsgaard58fd7792009-10-04 22:09:25 +0200612 @$(foreach b, $(notdir $(wildcard $(TOPDIR)/configs/*_defconfig)), \
613 printf " %-35s - Build for %s\\n" $(b) $(b:_defconfig=);)
614 @echo
Bernhard Reutner-Fischer232fa7e2007-08-27 21:51:27 +0000615 @echo 'See docs/README and docs/buildroot.html for further details'
Bernhard Reutner-Fischer663dee42007-08-27 21:40:42 +0000616 @echo
Bernhard Reutner-Fischerba2e7e02007-06-25 10:56:13 +0000617
Peter Korsgaard23ddf462010-02-09 16:34:04 +0100618release:
Peter Korsgaarde62d2ec2009-01-15 19:36:06 +0000619 OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
Peter Korsgaard23ddf462010-02-09 16:34:04 +0100620 git archive --format=tar --prefix=$$OUT/ master|gzip -9 >$$OUT.tar.gz
Peter Korsgaarde62d2ec2009-01-15 19:36:06 +0000621
Peter Korsgaard66527702009-10-04 21:57:12 +0200622.PHONY: $(noconfig_targets)
Ulf Samuelsson50cbb4a2008-07-05 09:22:38 +0000623