blob: 76dd2cdf0f0211c7cd449c323f9b785a1abca80c [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 Korsgaard2671be42009-01-16 10:27:27 +00004# Copyright (C) 2006-2009 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#--------------------------------------------------------------
25TOPDIR=./
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000026CONFIG_CONFIG_IN=Config.in
27CONFIG_DEFCONFIG=.defconfig
28CONFIG=package/config
Ulf Samuelssona8ee1242008-05-11 06:55:04 +000029DATE:=$(shell date +%Y%m%d)
Eric Andersen2d523c22004-10-09 01:06:03 +000030
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000031noconfig_targets:=menuconfig config oldconfig randconfig \
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +000032 defconfig allyesconfig allnoconfig release tags \
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +000033 source-check help
Bernhard Reutner-Fischer9e250352006-12-02 19:01:10 +000034
Eric Andersen2d523c22004-10-09 01:06:03 +000035
Ulf Samuelssona1b06512008-03-28 07:31:28 +000036# Use shell variables, if defined
Ulf Samuelsson7521f372007-09-12 04:34:16 +000037ifneq ($(BUILDROOT_LOCAL),)
Ulf Samuelssonefd85762008-03-30 06:38:46 +000038BR2_LOCAL:=$(BUILDROOT_LOCAL)
Ulf Samuelsson7521f372007-09-12 04:34:16 +000039else
Ulf Samuelsson2ad346a2008-07-07 18:26:09 +000040BR2_LOCAL:=$(TOPDIR)/local
Ulf Samuelssona1b06512008-03-28 07:31:28 +000041endif
42
Peter Korsgaardf85f2de2009-01-25 20:19:01 +000043# Variables for use in Make constructs
44comma:=,
45empty:=
46space:=$(empty) $(empty)
47
Ulf Samuelssona1b06512008-03-28 07:31:28 +000048# $(shell find . -name *_defconfig |sed 's/.*\///')
49# Pull in the user's configuration file
50ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
51ifeq ($(BOARD),)
52# if "make BOARD=xyz" command
Peter Korsgaardd45f3552008-06-23 13:47:37 +000053-include .config
Ulf Samuelssona1b06512008-03-28 07:31:28 +000054else
55# if "make" command
Ulf Samuelssonefd85762008-03-30 06:38:46 +000056-include $(BR2_LOCAL)/$(BOARD)/$(BOARD).config
Ulf Samuelssona1b06512008-03-28 07:31:28 +000057endif
Ulf Samuelsson7521f372007-09-12 04:34:16 +000058endif
Eric Andersen2d523c22004-10-09 01:06:03 +000059
Ulf Samuelssonefd85762008-03-30 06:38:46 +000060# Override BR2_DL_DIR if shell variable defined
61ifneq ($(BUILDROOT_DL_DIR),)
62BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
63endif
64LOCAL:=$(BR2_LOCAL)
65
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000066# To put more focus on warnings, be less verbose as default
67# Use 'make V=1' to see the full commands
68ifdef V
69 ifeq ("$(origin V)", "command line")
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000070 KBUILD_VERBOSE=$(V)
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000071 endif
72endif
73ifndef KBUILD_VERBOSE
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000074 KBUILD_VERBOSE=0
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000075endif
76
77ifeq ($(KBUILD_VERBOSE),1)
Ulf Samuelsson4df454e2007-07-06 12:19:35 +000078 quiet=
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000079 Q=
Bernhard Reutner-Fischer1669b6e2007-09-22 14:19:22 +000080ifndef VERBOSE
81 VERBOSE=1
82endif
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000083else
84 quiet=quiet_
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000085 Q=@
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000086endif
87
Peter Korsgaard69f85922009-01-01 21:20:35 +000088# we want bash as shell
89SHELL:=$(shell if [ -x "$$BASH" ]; then echo $$BASH; \
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000090 else if [ -x /bin/bash ]; then echo /bin/bash; \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +000091 else echo sh; fi; fi)
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000092
Peter Korsgaard69f85922009-01-01 21:20:35 +000093# kconfig uses CONFIG_SHELL
94CONFIG_SHELL:=$(SHELL)
95
96export SHELL CONFIG_SHELL quiet Q KBUILD_VERBOSE VERBOSE
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +000097
98ifndef HOSTAR
99HOSTAR:=ar
100endif
101ifndef HOSTAS
102HOSTAS:=as
103endif
104ifndef HOSTCC
105HOSTCC:=gcc
106else
107endif
108ifndef HOSTCXX
109HOSTCXX:=g++
110endif
Bernhard Reutner-Fischer5f975802007-09-28 20:10:22 +0000111ifndef HOSTFC
112HOSTFC:=gfortran
113endif
Ulf Samuelsson356133b2007-09-28 19:46:58 +0000114ifndef HOSTCPP
115HOSTCPP:=cpp
116endif
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000117ifndef HOSTLD
118HOSTLD:=ld
119endif
Ulf Samuelsson0f9c5b12007-07-15 21:54:11 +0000120ifndef HOSTLN
121HOSTLN:=ln
122endif
Ulf Samuelsson356133b2007-09-28 19:46:58 +0000123ifndef HOSTNM
124HOSTNM:=nm
125endif
Peter Korsgaard69f85922009-01-01 21:20:35 +0000126HOSTAR:=$(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)
127HOSTAS:=$(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)
128HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
129HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
130HOSTFC:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo || which g77 || type -p g77 || echo gfortran)
131HOSTCPP:=$(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp)
132HOSTLD:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)
133HOSTLN:=$(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln)
134HOSTNM:=$(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm)
Ulf Samuelsson54e93322008-07-06 07:34:41 +0000135
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000136ifndef CFLAGS_FOR_BUILD
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000137CFLAGS_FOR_BUILD:=-g -O2
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000138endif
Bernhard Reutner-Fischer5f975802007-09-28 20:10:22 +0000139ifndef CXXFLAGS_FOR_BUILD
140CXXFLAGS_FOR_BUILD:=-g -O2
141endif
142ifndef FCFLAGS_FOR_BUILD
143FCFLAGS_FOR_BUILD:=-g -O2
144endif
145export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTFC HOSTLD
Bernhard Reutner-Fischerafc61c62007-06-28 10:47:05 +0000146
147
Bernhard Reutner-Fischercfe511b2007-09-29 13:58:30 +0000148ifeq ($(BR2_HAVE_DOT_CONFIG),y)
Eric Andersenffde94b2001-12-22 00:56:11 +0000149
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000150# cc-option
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000151# Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000152# sets -march=winchip-c6 if supported else falls back to -march=i586
153# without checking the latter.
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000154cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
Bernhard Reutner-Fischer99cf7292007-02-12 13:38:06 +0000155 > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
156
Peter Korsgaard2c649042007-06-19 15:19:27 +0000157#############################################################
158#
159# Hide troublesome environment variables from sub processes
160#
161#############################################################
162unexport CROSS_COMPILE
163unexport ARCH
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000164
165#############################################################
166#
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000167# Setup the proper filename extensions for the host
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000168#
169##############################################################
170ifneq ($(findstring linux,$(BR2_GNU_BUILD_SUFFIX)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000171HOST_EXEEXT:=
172HOST_LIBEXT:=.a
173HOST_SHREXT:=.so
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000174endif
175ifneq ($(findstring apple,$(BR2_GNU_BUILD_SUFFIX)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000176HOST_EXEEXT:=
177HOST_LIBEXT:=.a
178HOST_SHREXT:=.dylib
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000179endif
180ifneq ($(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000181HOST_EXEEXT:=.exe
182HOST_LIBEXT:=.lib
183HOST_SHREXT:=.dll
Peter Korsgaard2c279672008-06-19 08:11:35 +0000184HOST_LOADLIBES="-lcurses -lintl"
185export HOST_LOADLIBES
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000186endif
187ifneq ($(findstring mingw,$(BR2_GNU_BUILD_SUFFIX)),)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000188HOST_EXEEXT:=.exe
189HOST_LIBEXT:=.lib
190HOST_SHREXT:=.dll
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000191endif
192
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000193# The preferred type of libs we build for the target
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000194ifeq ($(BR2_PREFER_STATIC_LIB),y)
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000195LIBTGTEXT=.a
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000196#PREFERRED_LIB_FLAGS:=--disable-shared --enable-static
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000197else
Bernhard Reutner-Fischerc6e43c92007-06-02 11:22:17 +0000198LIBTGTEXT=.so
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000199#PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000200endif
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000201PREFERRED_LIB_FLAGS:=--enable-static --enable-shared
Bernhard Reutner-Fischer7dcbbfb2007-06-02 09:05:40 +0000202
Bernhard Reutner-Fischer6ad07202007-07-31 15:02:06 +0000203##############################################################
Eric Andersen08782ae2002-04-26 11:45:55 +0000204#
Eric Andersen2d523c22004-10-09 01:06:03 +0000205# The list of stuff to build for the target toolchain
206# along with the packages to build for the target.
Eric Andersen08782ae2002-04-26 11:45:55 +0000207#
Eric Andersen2d523c22004-10-09 01:06:03 +0000208##############################################################
Bernhard Reutner-Fischer4b0d5a82007-09-26 21:12:38 +0000209ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
Peter Korsgaard3d8919a2008-03-04 12:19:19 +0000210BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers
"Steven J. Hill"02f71aa2007-02-06 18:19:38 +0000211else
Peter Korsgaard51f5f622008-11-03 10:18:39 +0000212BASE_TARGETS:=uclibc
"Steven J. Hill"02f71aa2007-02-06 18:19:38 +0000213endif
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000214TARGETS:=
215
Ulf Samuelssoncf7d9872009-01-26 19:37:54 +0000216# setup our paths
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000217include project/Makefile.in
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000218
219BR2_DEPENDS_DIR=$(PROJECT_BUILD_DIR)/buildroot-config
220
Eric Andersen2d523c22004-10-09 01:06:03 +0000221include toolchain/Makefile.in
Eric Andersen2d523c22004-10-09 01:06:03 +0000222include package/Makefile.in
Eric Andersen27bc59d2003-01-17 04:31:36 +0000223
Eric Andersen08782ae2002-04-26 11:45:55 +0000224#############################################################
225#
Eric Andersenef407d32004-01-29 23:21:00 +0000226# You should probably leave this stuff alone unless you know
Eric Andersen08782ae2002-04-26 11:45:55 +0000227# what you are doing.
228#
229#############################################################
Manuel Novoa III d632d422003-11-01 05:34:41 +0000230
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000231all: world
Eric Andersenffde94b2001-12-22 00:56:11 +0000232
Eric Andersen2d523c22004-10-09 01:06:03 +0000233# In this section, we need .config
234include .config.cmd
235
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000236include project/*.mk
237
Eric Andersend06645d2005-02-10 03:06:39 +0000238# We also need the various per-package makefiles, which also add
239# each selected package to TARGETS if that package was selected
240# in the .config file.
Bernhard Reutner-Fischer4b0d5a82007-09-26 21:12:38 +0000241ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000242# avoid pulling in external toolchain which is broken for toplvl parallel builds
Bernhard Reutner-Fischer57310ec2007-09-27 21:24:15 +0000243# Explicit ordering:
244include toolchain/dependencies/dependencies.mk
245include toolchain/binutils/binutils.mk
246include toolchain/ccache/ccache.mk
247include toolchain/elf2flt/elf2flt.mk
248include toolchain/gcc/gcc-uclibc-3.x.mk
249include toolchain/gcc/gcc-uclibc-4.x.mk
250include toolchain/gdb/gdb.mk
251include toolchain/kernel-headers/kernel-headers.mk
252include toolchain/mklibs/mklibs.mk
253include toolchain/sstrip/sstrip.mk
254include toolchain/uClibc/uclibc.mk
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000255else
Eric Andersend06645d2005-02-10 03:06:39 +0000256include toolchain/*/*.mk
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000257endif
258
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000259ifeq ($(BR2_PACKAGE_LINUX),y)
260TARGETS+=linux26-modules
261endif
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000262
Eric Andersend06645d2005-02-10 03:06:39 +0000263include package/*/*.mk
Eric Andersend06645d2005-02-10 03:06:39 +0000264
Peter Korsgaard32faf352009-04-07 21:04:31 +0000265TARGETS+=target-finalize
John Voltzd45de0c2008-03-11 13:12:39 +0000266
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000267ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
268TARGETS+=target-purgelocales
269endif
270
Eric Andersen79f5f1e2005-02-17 03:00:29 +0000271# target stuff is last so it can override anything else
272include target/Makefile.in
273
Peter Korsgaard02a623d2008-08-04 19:07:05 +0000274TARGETS+=erase-fakeroots
Ulf Samuelssonc2fc93b2007-08-15 09:47:49 +0000275
Eric Andersen08782ae2002-04-26 11:45:55 +0000276TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
Bernhard Reutner-Fischer3b08e642007-09-18 13:12:25 +0000277TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
Eric Andersen08782ae2002-04-26 11:45:55 +0000278TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000279TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000280# all targets depend on the crosscompiler and it's prerequisites
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000281$(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
Bernhard Reutner-Fischeracc706b2007-07-23 11:29:38 +0000282
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000283$(BR2_DEPENDS_DIR): .config
284 rm -rf $@
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000285 mkdir -p $(@D)
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000286 cp -dpRf $(CONFIG)/buildroot-config $@
287
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000288dirs: $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
Peter Korsgaardbd07d922009-03-16 15:48:43 +0000289 $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
Peter Korsgaarde7b38c72009-03-19 11:06:47 +0000290 $(PROJECT_BUILD_DIR)/autotools-stamps $(STAMP_DIR)
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000291
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000292$(BASE_TARGETS): dirs
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000293
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000294world: dependencies dirs target-host-info $(BASE_TARGETS) $(TARGETS_ALL)
Eric Andersenffde94b2001-12-22 00:56:11 +0000295
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000296
Ulf Samuelssonf958d892007-08-14 07:45:01 +0000297.PHONY: all world dirs clean dirclean distclean source \
Bernhard Reutner-Fischerb3efde22007-09-01 17:10:55 +0000298 $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
Eric Andersen747b16d2004-12-11 10:33:19 +0000299 $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
Bernhard Reutner-Fischer5ef9e522007-07-27 14:57:34 +0000300 $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
Peter Korsgaardbd07d922009-03-16 15:48:43 +0000301 $(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
Peter Korsgaarde7b38c72009-03-19 11:06:47 +0000302 $(PROJECT_BUILD_DIR)/autotools-stamps $(STAMP_DIR)
Jon Nelsonc79e9982002-01-05 20:26:15 +0000303
Eric Andersen08782ae2002-04-26 11:45:55 +0000304#############################################################
305#
Eric Andersenef407d32004-01-29 23:21:00 +0000306# staging and target directories do NOT list these as
Mike Frysingerd99c31c2006-05-26 01:18:09 +0000307# dependencies anywhere else
Eric Andersen08782ae2002-04-26 11:45:55 +0000308#
309#############################################################
Peter Korsgaardbd07d922009-03-16 15:48:43 +0000310$(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(HOST_DIR) $(PROJECT_BUILD_DIR) \
Peter Korsgaarde7b38c72009-03-19 11:06:47 +0000311 $(PROJECT_BUILD_DIR)/autotools-stamps $(BINARIES_DIR) $(STAMP_DIR):
Bernhard Reutner-Fischer8d583fc2007-01-30 00:58:18 +0000312 @mkdir -p $@
Manuel Novoa III 3ad3d8a2004-09-03 00:49:43 +0000313
Eric Andersen08782ae2002-04-26 11:45:55 +0000314$(STAGING_DIR):
"Steven J. Hill"9c865d72007-05-07 03:56:47 +0000315 @mkdir -p $(STAGING_DIR)/bin
Eric Andersenbf387232004-12-11 10:35:18 +0000316 @mkdir -p $(STAGING_DIR)/lib
Bernhard Reutner-Fischer7e0c8902007-06-24 12:27:08 +0000317ifeq ($(BR2_TOOLCHAIN_SYSROOT),y)
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000318 @mkdir -p $(STAGING_DIR)/usr/lib
319else
Ulf Samuelssonf5905dc2007-10-07 18:23:43 +0000320ifneq ($(BR2_TOOLCHAIN_EXTERNAL),y)
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000321 @ln -snf . $(STAGING_DIR)/usr
322 @mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)
Eric Andersen3da708e2007-01-10 06:55:27 +0000323 @ln -snf ../lib $(STAGING_DIR)/usr/lib
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000324 @ln -snf ../lib $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
325endif
Ulf Samuelssonf5905dc2007-10-07 18:23:43 +0000326endif
Bernhard Reutner-Fischer80277842007-06-20 11:26:36 +0000327 @mkdir -p $(STAGING_DIR)/usr/include
Eric Andersen08782ae2002-04-26 11:45:55 +0000328
Ulf Samuelssonc6771df2007-08-16 05:44:55 +0000329$(PROJECT_BUILD_DIR)/.root:
Bernhard Reutner-Fischer7547c7e2007-08-21 10:53:39 +0000330 mkdir -p $(TARGET_DIR)
Bernhard Reutner-Fischerf0ca4b82007-08-21 10:56:38 +0000331 if ! [ -d "$(TARGET_DIR)/bin" ]; then \
332 if [ -d "$(TARGET_SKELETON)" ]; then \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000333 cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
Ulf Samuelsson74cda1e2007-08-14 07:24:45 +0000334 fi; \
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000335 touch $(STAGING_DIR)/.fakeroot.00000; \
Bernhard Reutner-Fischerf0ca4b82007-08-21 10:56:38 +0000336 fi
Wade Berrier027aa1d2009-04-28 17:33:44 +0000337 -find $(TARGET_DIR) -type d -name CVS -o -name .svn -print0 | xargs -0 rm -rf
338 -find $(TARGET_DIR) -type f -name .empty -print0 | xargs -0 rm -rf
Bernhard Reutner-Fischer7547c7e2007-08-21 10:53:39 +0000339 touch $@
Eric Andersenffde94b2001-12-22 00:56:11 +0000340
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000341$(TARGET_DIR): $(PROJECT_BUILD_DIR)/.root
Ulf Samuelssonc6771df2007-08-16 05:44:55 +0000342
Ulf Samuelssonc2fc93b2007-08-15 09:47:49 +0000343erase-fakeroots:
Ulf Samuelsson5d2be042007-08-16 18:19:42 +0000344 rm -f $(PROJECT_BUILD_DIR)/.fakeroot*
Ulf Samuelsson412ca2a2007-07-12 13:11:03 +0000345
Peter Korsgaard32faf352009-04-07 21:04:31 +0000346target-finalize:
John Voltzd45de0c2008-03-11 13:12:39 +0000347ifeq ($(BR2_HAVE_DEVFILES),y)
348 ( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
John Voltzbc67ca22008-03-10 15:22:43 +0000349else
Peter Korsgaard926646d2008-07-01 12:04:28 +0000350 rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig
Wade Berrier027aa1d2009-04-28 17:33:44 +0000351 find $(TARGET_DIR)/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
352 find $(TARGET_DIR)/usr/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
John Voltzbc67ca22008-03-10 15:22:43 +0000353endif
Peter Korsgaard32faf352009-04-07 21:04:31 +0000354ifneq ($(BR2_HAVE_MANPAGES),y)
355 rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man
356endif
357ifneq ($(BR2_HAVE_INFOPAGES),y)
358 rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info
359endif
360 find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIPCMD) 2>/dev/null || true
361 $(TARGET_LDCONFIG) -r $(TARGET_DIR) 2>/dev/null
John Voltzbc67ca22008-03-10 15:22:43 +0000362
Peter Korsgaardb87b4742009-04-06 09:21:26 +0000363ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
364LOCALE_WHITELIST=$(PROJECT_BUILD_DIR)/locales.nopurge
365LOCALE_NOPURGE=$(strip $(subst ",,$(BR2_ENABLE_LOCALE_WHITELIST)))
366#"))
367
368target-purgelocales:
369 rm -f $(LOCALE_WHITELIST)
370 for i in $(LOCALE_NOPURGE); do echo $$i >> $(LOCALE_WHITELIST); done
371
372 for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/man /usr/share/man)); \
373 do \
374 for lang in $$(cd $$dir; ls .|grep -v man); \
375 do \
376 grep -qx $$lang $(LOCALE_WHITELIST) || rm -rf $$dir/$$lang; \
377 done; \
378 done
379endif
380
Bernhard Reutner-Fischer3b08e642007-09-18 13:12:25 +0000381source: $(TARGETS_SOURCE) $(HOST_SOURCE)
Eric Andersenffde94b2001-12-22 00:56:11 +0000382
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000383_source-check:
Ulf Samuelssone7c08c22007-07-20 07:34:28 +0000384 $(MAKE) SPIDER=--spider source
Bernhard Reutner-Fischer825ff342007-06-07 12:57:03 +0000385
Peter Korsgaard155971e2008-03-04 12:19:16 +0000386external-deps:
Ulf Samuelsson2ad346a2008-07-07 18:26:09 +0000387 @$(MAKE) -Bs BR2_WGET=$(TOPDIR)/toolchain/wget-show-external-deps.sh \
Peter Korsgaardbcad6282008-07-24 13:38:39 +0000388 SPIDER=--spider source
Peter Korsgaard155971e2008-03-04 12:19:16 +0000389
Eric Andersen08782ae2002-04-26 11:45:55 +0000390#############################################################
391#
392# Cleanup and misc junk
393#
394#############################################################
395clean: $(TARGETS_CLEAN)
Peter Korsgaarde7b38c72009-03-19 11:06:47 +0000396 rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps $(STAMP_DIR)
Eric Andersenffde94b2001-12-22 00:56:11 +0000397
Eric Andersen08782ae2002-04-26 11:45:55 +0000398dirclean: $(TARGETS_DIRCLEAN)
Peter Korsgaarde7b38c72009-03-19 11:06:47 +0000399 rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps $(STAMP_DIR)
Eric Andersenffde94b2001-12-22 00:56:11 +0000400
Eric Andersen08782ae2002-04-26 11:45:55 +0000401distclean:
Mike Frysinger5bc1f0c2005-09-09 02:49:10 +0000402ifeq ($(DL_DIR),$(BASE_DIR)/dl)
403 rm -rf $(DL_DIR)
404endif
Peter Korsgaarda767c8b2009-04-17 13:53:07 +0000405 rm -rf $(TOOL_BUILD_DIR) $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) \
406 .config.cmd
Bernhard Reutner-Fischerb5136192007-01-19 18:00:49 +0000407 $(MAKE) -C $(CONFIG) clean
Eric Andersenffde94b2001-12-22 00:56:11 +0000408
Manuel Novoa III 3ad3d8a2004-09-03 00:49:43 +0000409sourceball:
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000410 rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR)
Eric Andersen08782ae2002-04-26 11:45:55 +0000411 set -e; \
412 cd ..; \
413 rm -f buildroot.tar.bz2; \
414 tar -cvf buildroot.tar buildroot; \
415 bzip2 -9 buildroot.tar; \
Eric Andersen2d523c22004-10-09 01:06:03 +0000416
417
Bernhard Reutner-Fischercfe511b2007-09-29 13:58:30 +0000418else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
Eric Andersen2d523c22004-10-09 01:06:03 +0000419
420all: menuconfig
421
422# configuration
423# ---------------------------------------------------------------------------
424
Bernhard Reutner-Fischerc0d7d4e2007-07-09 18:23:20 +0000425HOSTCFLAGS=$(CFLAGS_FOR_BUILD)
426export HOSTCFLAGS
427
Eric Andersen2d523c22004-10-09 01:06:03 +0000428$(CONFIG)/conf:
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000429 @mkdir -p $(CONFIG)/buildroot-config
Bernhard Reutner-Fischerfb2c8fe2007-07-27 14:16:00 +0000430 $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000431 -@if [ ! -f .config ]; then \
Eric Andersen2d523c22004-10-09 01:06:03 +0000432 cp $(CONFIG_DEFCONFIG) .config; \
433 fi
434$(CONFIG)/mconf:
Bernhard Reutner-Fischer1dbe6e32007-08-21 17:56:47 +0000435 @mkdir -p $(CONFIG)/buildroot-config
Bernhard Reutner-Fischerfb2c8fe2007-07-27 14:16:00 +0000436 $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf mconf
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000437 -@if [ ! -f .config ]; then \
Eric Andersen2d523c22004-10-09 01:06:03 +0000438 cp $(CONFIG_DEFCONFIG) .config; \
439 fi
440
441menuconfig: $(CONFIG)/mconf
Bernhard Reutner-Fischer7b403ad2007-08-21 11:25:30 +0000442 @mkdir -p $(CONFIG)/buildroot-config
Bernhard Reutner-Fischer153b1be2007-07-27 12:37:30 +0000443 @if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000444 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
Bernhard Reutner-Fischer153b1be2007-07-27 12:37:30 +0000445 $(CONFIG)/mconf $(CONFIG_CONFIG_IN); then \
446 test -f .config.cmd || rm -f .config; \
447 fi
Eric Andersen2d523c22004-10-09 01:06:03 +0000448
449config: $(CONFIG)/conf
Bernhard Reutner-Fischer7b403ad2007-08-21 11:25:30 +0000450 @mkdir -p $(CONFIG)/buildroot-config
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000451 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
452 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000453 $(CONFIG)/conf $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000454
455oldconfig: $(CONFIG)/conf
Bernhard Reutner-Fischer7b403ad2007-08-21 11:25:30 +0000456 @mkdir -p $(CONFIG)/buildroot-config
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000457 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
458 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000459 $(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000460
461randconfig: $(CONFIG)/conf
Bernhard Reutner-Fischer7b403ad2007-08-21 11:25:30 +0000462 @mkdir -p $(CONFIG)/buildroot-config
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000463 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
464 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000465 $(CONFIG)/conf -r $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000466
467allyesconfig: $(CONFIG)/conf
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000468 cat $(CONFIG_DEFCONFIG) > .config
Bernhard Reutner-Fischer7b403ad2007-08-21 11:25:30 +0000469 @mkdir -p $(CONFIG)/buildroot-config
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000470 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
471 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000472 $(CONFIG)/conf -y $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000473 #sed -i -e "s/^CONFIG_DEBUG.*/# CONFIG_DEBUG is not set/" .config
Eric Andersen2d523c22004-10-09 01:06:03 +0000474
475allnoconfig: $(CONFIG)/conf
Bernhard Reutner-Fischer7b403ad2007-08-21 11:25:30 +0000476 @mkdir -p $(CONFIG)/buildroot-config
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000477 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
478 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000479 $(CONFIG)/conf -n $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000480
481defconfig: $(CONFIG)/conf
Bernhard Reutner-Fischer7b403ad2007-08-21 11:25:30 +0000482 @mkdir -p $(CONFIG)/buildroot-config
"Steven J. Hill"62b5ae42007-07-18 18:07:19 +0000483 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
484 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
Bernhard Reutner-Fischerf987b7a2007-07-08 00:00:17 +0000485 $(CONFIG)/conf -d $(CONFIG_CONFIG_IN)
Eric Andersen2d523c22004-10-09 01:06:03 +0000486
Bernhard Reutner-Fischer6547bce2007-08-22 12:35:41 +0000487# check if download URLs are outdated
Bernhard Reutner-Fischer825ff342007-06-07 12:57:03 +0000488source-check: allyesconfig
489 $(MAKE) _source-check
490
Eric Andersen2d523c22004-10-09 01:06:03 +0000491#############################################################
492#
493# Cleanup and misc junk
494#
495#############################################################
496clean:
Ulf Samuelsson84518dc2008-07-07 17:48:27 +0000497 rm -f .config .config.old .config.cmd .tmpconfig.h .lognr.*
Bernhard Reutner-Fischer18d979c2007-09-01 18:21:09 +0000498 -$(MAKE) -C $(CONFIG) clean
Eric Andersen2d523c22004-10-09 01:06:03 +0000499
500distclean: clean
501 rm -rf sources/*
502
Ulf Samuelsson13a85e32009-01-25 23:01:22 +0000503
Bernhard Reutner-Fischercfe511b2007-09-29 13:58:30 +0000504endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
Eric Andersen2d523c22004-10-09 01:06:03 +0000505
Ulf Samuelsson260d3b42009-01-29 09:34:11 +0000506flush:
507 rm -f $(PROJECT_BUILD_DIR)/tgt-config.cache
508
Bernhard Reutner-Fischerba2e7e02007-06-25 10:56:13 +0000509%_defconfig: $(CONFIG)/conf
510 cp $(shell find ./target/ -name $@) .config
Ulf Samuelsson8820d632007-09-23 14:36:04 +0000511 -@$(MAKE) oldconfig
Bernhard Reutner-Fischerba2e7e02007-06-25 10:56:13 +0000512
Ulf Samuelsson82c92e12008-03-30 06:29:30 +0000513update:
Ulf Samuelsson8a446ca2009-01-31 20:38:55 +0000514 cp .config $(BOARD_PATH)/$(PROJECT)_defconfig
Ulf Samuelsson82c92e12008-03-30 06:29:30 +0000515
Ulf Samuelsson5459a9c2007-09-28 19:43:26 +0000516configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config
Ulf Samuelssonb8f28d62007-09-28 16:18:16 +0000517
Ulf Samuelsson126bb722008-07-04 08:39:35 +0000518prepatch: gcc-patched binutils-patched gdb-patched uclibc-patched
519
Ulf Samuelsson84518dc2008-07-07 17:48:27 +0000520.lognr.$(PROJECT):
Ulf Samuelsson9220e902008-07-07 18:32:41 +0000521 @echo "0" > .lognr.$(PROJECT)
Ulf Samuelssondef8b8d2008-07-05 06:58:53 +0000522
Ulf Samuelsson84518dc2008-07-07 17:48:27 +0000523log: .lognr.$(PROJECT)
Ulf Samuelsson9220e902008-07-07 18:32:41 +0000524 @expr `cat .lognr.$(PROJECT)` + 1 > .lognr.$(PROJECT)
Ulf Samuelsson84518dc2008-07-07 17:48:27 +0000525 @echo Creating $(PROJECT)-`cat .lognr.$(PROJECT)`.log
Peter Korsgaard02a623d2008-08-04 19:07:05 +0000526 @$(MAKE) > $(PROJECT)-`cat .lognr.$(PROJECT)`.log 2>&1
Ulf Samuelsson9220e902008-07-07 18:32:41 +0000527
Ulf Samuelsson195df2e2008-07-04 22:29:50 +0000528
Ulf Samuelssonb8f28d62007-09-28 16:18:16 +0000529cross: $(BASE_TARGETS)
530
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000531help:
532 @echo 'Cleaning:'
533 @echo ' clean - delete temporary files created by build'
534 @echo ' distclean - delete all non-source files (including .config)'
535 @echo
536 @echo 'Build:'
537 @echo ' all - make world'
538 @echo
539 @echo 'Configuration:'
540 @echo ' menuconfig - interactive curses-based configurator'
541 @echo ' oldconfig - resolve any unresolved symbols in .config'
Ulf Samuelsson7b2ec612009-01-22 23:03:17 +0000542 @echo ' configured - make {uclibc/busybox/linux26}-config'
Hans-Christian Egtvedt386b8132009-01-08 13:16:24 +0000543 @echo ' saveconfig - save current configuration under local/<project>'
544 @echo ' getconfig - restore saved configuration from local/<project>'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000545 @echo
546 @echo 'Miscellaneous:'
547 @echo ' source - download all sources needed for offline-build'
Bernhard Reutner-Fischer03380402007-08-21 10:42:05 +0000548 @echo ' source-check - check all packages for valid download URLs'
Peter Korsgaard155971e2008-03-04 12:19:16 +0000549 @echo ' external-deps - list external packages used'
Ulf Samuelsson13a85e32009-01-25 23:01:22 +0000550 @echo ' flush - flush configuration cache'
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000551 @echo
Bernhard Reutner-Fischer232fa7e2007-08-27 21:51:27 +0000552 @echo 'See docs/README and docs/buildroot.html for further details'
Bernhard Reutner-Fischer663dee42007-08-27 21:40:42 +0000553 @echo
Bernhard Reutner-Fischerba2e7e02007-06-25 10:56:13 +0000554
Peter Korsgaarde62d2ec2009-01-15 19:36:06 +0000555release: distclean
556 OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
557 rm -rf ../$$OUT*; cp -al . ../$$OUT; cd ..; \
558 tar cfz $$OUT.tar.gz --exclude .svn --exclude .git --exclude \*~ $$OUT; \
559 rm -rf $$OUT
560
Eric Andersen2d523c22004-10-09 01:06:03 +0000561.PHONY: dummy subdirs release distclean clean config oldconfig \
Bernhard Reutner-Fischere491fba2007-07-08 12:20:58 +0000562 menuconfig tags check test depend defconfig help
Ulf Samuelsson50cbb4a2008-07-05 09:22:38 +0000563