]> Git Repo - buildroot-mgba.git/blame_incremental - Makefile
Update atstk100x BSP
[buildroot-mgba.git] / Makefile
... / ...
CommitLineData
1# Makefile for buildroot2
2#
3# Copyright (C) 1999-2005 by Erik Andersen <[email protected]>
4# Copyright (C) 2006-2009 by the Buildroot developers <[email protected]>
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14# General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19#
20
21#--------------------------------------------------------------
22# Just run 'make menuconfig', configure stuff, then run 'make'.
23# You shouldn't need to mess with anything beyond this point...
24#--------------------------------------------------------------
25TOPDIR=./
26CONFIG_CONFIG_IN=Config.in
27CONFIG_DEFCONFIG=.defconfig
28CONFIG=package/config
29DATE:=$(shell date +%Y%m%d)
30
31noconfig_targets:=menuconfig config oldconfig randconfig \
32 defconfig allyesconfig allnoconfig release tags \
33 source-check help
34
35
36# Use shell variables, if defined
37ifneq ($(BUILDROOT_LOCAL),)
38BR2_LOCAL:=$(BUILDROOT_LOCAL)
39else
40BR2_LOCAL:=$(TOPDIR)/local
41endif
42
43# Variables for use in Make constructs
44comma:=,
45empty:=
46space:=$(empty) $(empty)
47
48# $(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
53-include .config
54else
55# if "make" command
56-include $(BR2_LOCAL)/$(BOARD)/$(BOARD).config
57endif
58endif
59
60# Override BR2_DL_DIR if shell variable defined
61ifneq ($(BUILDROOT_DL_DIR),)
62BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
63endif
64LOCAL:=$(BR2_LOCAL)
65
66# 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")
70 KBUILD_VERBOSE=$(V)
71 endif
72endif
73ifndef KBUILD_VERBOSE
74 KBUILD_VERBOSE=0
75endif
76
77ifeq ($(KBUILD_VERBOSE),1)
78 quiet=
79 Q=
80ifndef VERBOSE
81 VERBOSE=1
82endif
83else
84 quiet=quiet_
85 Q=@
86endif
87
88# we want bash as shell
89SHELL:=$(shell if [ -x "$$BASH" ]; then echo $$BASH; \
90 else if [ -x /bin/bash ]; then echo /bin/bash; \
91 else echo sh; fi; fi)
92
93# kconfig uses CONFIG_SHELL
94CONFIG_SHELL:=$(SHELL)
95
96export SHELL CONFIG_SHELL quiet Q KBUILD_VERBOSE VERBOSE
97
98ifndef HOSTAR
99HOSTAR:=ar
100endif
101ifndef HOSTAS
102HOSTAS:=as
103endif
104ifndef HOSTCC
105HOSTCC:=gcc
106else
107endif
108ifndef HOSTCXX
109HOSTCXX:=g++
110endif
111ifndef HOSTFC
112HOSTFC:=gfortran
113endif
114ifndef HOSTCPP
115HOSTCPP:=cpp
116endif
117ifndef HOSTLD
118HOSTLD:=ld
119endif
120ifndef HOSTLN
121HOSTLN:=ln
122endif
123ifndef HOSTNM
124HOSTNM:=nm
125endif
126HOSTAR:=$(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)
135
136ifndef CFLAGS_FOR_BUILD
137CFLAGS_FOR_BUILD:=-g -O2
138endif
139ifndef 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
146
147
148ifeq ($(BR2_HAVE_DOT_CONFIG),y)
149
150# cc-option
151# Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
152# sets -march=winchip-c6 if supported else falls back to -march=i586
153# without checking the latter.
154cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
155 > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
156
157#############################################################
158#
159# Hide troublesome environment variables from sub processes
160#
161#############################################################
162unexport CROSS_COMPILE
163unexport ARCH
164
165#############################################################
166#
167# Setup the proper filename extensions for the host
168#
169##############################################################
170ifneq ($(findstring linux,$(BR2_GNU_BUILD_SUFFIX)),)
171HOST_EXEEXT:=
172HOST_LIBEXT:=.a
173HOST_SHREXT:=.so
174endif
175ifneq ($(findstring apple,$(BR2_GNU_BUILD_SUFFIX)),)
176HOST_EXEEXT:=
177HOST_LIBEXT:=.a
178HOST_SHREXT:=.dylib
179endif
180ifneq ($(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX)),)
181HOST_EXEEXT:=.exe
182HOST_LIBEXT:=.lib
183HOST_SHREXT:=.dll
184HOST_LOADLIBES="-lcurses -lintl"
185export HOST_LOADLIBES
186endif
187ifneq ($(findstring mingw,$(BR2_GNU_BUILD_SUFFIX)),)
188HOST_EXEEXT:=.exe
189HOST_LIBEXT:=.lib
190HOST_SHREXT:=.dll
191endif
192
193# The preferred type of libs we build for the target
194ifeq ($(BR2_PREFER_STATIC_LIB),y)
195LIBTGTEXT=.a
196#PREFERRED_LIB_FLAGS:=--disable-shared --enable-static
197else
198LIBTGTEXT=.so
199#PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
200endif
201PREFERRED_LIB_FLAGS:=--enable-static --enable-shared
202
203##############################################################
204#
205# The list of stuff to build for the target toolchain
206# along with the packages to build for the target.
207#
208##############################################################
209ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
210BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers
211else
212BASE_TARGETS:=uclibc
213endif
214TARGETS:=
215
216# setup our paths
217include project/Makefile.in
218
219BR2_DEPENDS_DIR=$(PROJECT_BUILD_DIR)/buildroot-config
220
221include toolchain/Makefile.in
222include package/Makefile.in
223
224#############################################################
225#
226# You should probably leave this stuff alone unless you know
227# what you are doing.
228#
229#############################################################
230
231all: world
232
233# In this section, we need .config
234include .config.cmd
235
236include project/*.mk
237
238# 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.
241ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
242# avoid pulling in external toolchain which is broken for toplvl parallel builds
243# 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
255else
256include toolchain/*/*.mk
257endif
258
259ifeq ($(BR2_PACKAGE_LINUX),y)
260TARGETS+=linux26-modules
261endif
262
263include package/*/*.mk
264
265TARGETS+=target-devfiles
266
267# target stuff is last so it can override anything else
268include target/Makefile.in
269
270TARGETS+=erase-fakeroots
271
272TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
273TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
274TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
275TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
276# all targets depend on the crosscompiler and it's prerequisites
277$(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
278
279$(BR2_DEPENDS_DIR): .config
280 rm -rf $@
281 mkdir -p $(@D)
282 cp -dpRf $(CONFIG)/buildroot-config $@
283
284dirs: $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
285 $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
286 $(PROJECT_BUILD_DIR)/autotools-stamps
287
288$(BASE_TARGETS): dirs
289
290world: dependencies dirs target-host-info $(BASE_TARGETS) $(TARGETS_ALL)
291
292
293.PHONY: all world dirs clean dirclean distclean source \
294 $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
295 $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
296 $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
297 $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
298 $(PROJECT_BUILD_DIR)/autotools-stamps
299
300#############################################################
301#
302# staging and target directories do NOT list these as
303# dependencies anywhere else
304#
305#############################################################
306$(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(PROJECT_BUILD_DIR) \
307 $(PROJECT_BUILD_DIR)/autotools-stamps $(BINARIES_DIR):
308 @mkdir -p $@
309
310$(STAGING_DIR):
311 @mkdir -p $(STAGING_DIR)/bin
312 @mkdir -p $(STAGING_DIR)/lib
313ifeq ($(BR2_TOOLCHAIN_SYSROOT),y)
314 @mkdir -p $(STAGING_DIR)/usr/lib
315else
316ifneq ($(BR2_TOOLCHAIN_EXTERNAL),y)
317 @ln -snf . $(STAGING_DIR)/usr
318 @mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)
319 @ln -snf ../lib $(STAGING_DIR)/usr/lib
320 @ln -snf ../lib $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
321endif
322endif
323 @mkdir -p $(STAGING_DIR)/usr/include
324
325$(PROJECT_BUILD_DIR)/.root:
326 mkdir -p $(TARGET_DIR)
327 if ! [ -d "$(TARGET_DIR)/bin" ]; then \
328 if [ -d "$(TARGET_SKELETON)" ]; then \
329 cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
330 fi; \
331 touch $(STAGING_DIR)/.fakeroot.00000; \
332 fi
333 -find $(TARGET_DIR) -type d -name CVS -o -name .svn | xargs rm -rf
334 -find $(TARGET_DIR) -type f -name .empty | xargs rm -rf
335 touch $@
336
337$(TARGET_DIR): $(PROJECT_BUILD_DIR)/.root
338
339erase-fakeroots:
340 rm -f $(PROJECT_BUILD_DIR)/.fakeroot*
341
342target-devfiles:
343ifeq ($(BR2_HAVE_DEVFILES),y)
344 ( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
345else
346 rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig
347 find $(TARGET_DIR)/usr/lib -name '*.a' -delete
348 find $(TARGET_DIR)/lib -name '*.a' -delete
349 find $(TARGET_DIR)/usr/lib -name '*.la' -delete
350 find $(TARGET_DIR)/lib -name '*.la' -delete
351endif
352
353source: $(TARGETS_SOURCE) $(HOST_SOURCE)
354
355_source-check:
356 $(MAKE) SPIDER=--spider source
357
358external-deps:
359 @$(MAKE) -Bs BR2_WGET=$(TOPDIR)/toolchain/wget-show-external-deps.sh \
360 SPIDER=--spider source
361
362#############################################################
363#
364# Cleanup and misc junk
365#
366#############################################################
367clean: $(TARGETS_CLEAN)
368 rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps
369
370dirclean: $(TARGETS_DIRCLEAN)
371 rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps
372
373distclean:
374ifeq ($(DL_DIR),$(BASE_DIR)/dl)
375 rm -rf $(DL_DIR)
376endif
377 rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) \
378 $(LINUX_KERNEL) $(BASE_DIR)/include \
379 .config.cmd
380 $(MAKE) -C $(CONFIG) clean
381
382sourceball:
383 rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR)
384 set -e; \
385 cd ..; \
386 rm -f buildroot.tar.bz2; \
387 tar -cvf buildroot.tar buildroot; \
388 bzip2 -9 buildroot.tar; \
389
390
391else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
392
393all: menuconfig
394
395# configuration
396# ---------------------------------------------------------------------------
397
398HOSTCFLAGS=$(CFLAGS_FOR_BUILD)
399export HOSTCFLAGS
400
401$(CONFIG)/conf:
402 @mkdir -p $(CONFIG)/buildroot-config
403 $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf
404 -@if [ ! -f .config ]; then \
405 cp $(CONFIG_DEFCONFIG) .config; \
406 fi
407$(CONFIG)/mconf:
408 @mkdir -p $(CONFIG)/buildroot-config
409 $(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf mconf
410 -@if [ ! -f .config ]; then \
411 cp $(CONFIG_DEFCONFIG) .config; \
412 fi
413
414menuconfig: $(CONFIG)/mconf
415 @mkdir -p $(CONFIG)/buildroot-config
416 @if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
417 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
418 $(CONFIG)/mconf $(CONFIG_CONFIG_IN); then \
419 test -f .config.cmd || rm -f .config; \
420 fi
421
422config: $(CONFIG)/conf
423 @mkdir -p $(CONFIG)/buildroot-config
424 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
425 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
426 $(CONFIG)/conf $(CONFIG_CONFIG_IN)
427
428oldconfig: $(CONFIG)/conf
429 @mkdir -p $(CONFIG)/buildroot-config
430 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
431 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
432 $(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
433
434randconfig: $(CONFIG)/conf
435 @mkdir -p $(CONFIG)/buildroot-config
436 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
437 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
438 $(CONFIG)/conf -r $(CONFIG_CONFIG_IN)
439
440allyesconfig: $(CONFIG)/conf
441 cat $(CONFIG_DEFCONFIG) > .config
442 @mkdir -p $(CONFIG)/buildroot-config
443 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
444 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
445 $(CONFIG)/conf -y $(CONFIG_CONFIG_IN)
446 #sed -i -e "s/^CONFIG_DEBUG.*/# CONFIG_DEBUG is not set/" .config
447
448allnoconfig: $(CONFIG)/conf
449 @mkdir -p $(CONFIG)/buildroot-config
450 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
451 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
452 $(CONFIG)/conf -n $(CONFIG_CONFIG_IN)
453
454defconfig: $(CONFIG)/conf
455 @mkdir -p $(CONFIG)/buildroot-config
456 @KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
457 KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
458 $(CONFIG)/conf -d $(CONFIG_CONFIG_IN)
459
460# check if download URLs are outdated
461source-check: allyesconfig
462 $(MAKE) _source-check
463
464#############################################################
465#
466# Cleanup and misc junk
467#
468#############################################################
469clean:
470 rm -f .config .config.old .config.cmd .tmpconfig.h .lognr.*
471 -$(MAKE) -C $(CONFIG) clean
472
473distclean: clean
474 rm -rf sources/*
475
476flush:
477 rm -f $(PROJECT_BUILD_DIR)/tgt-config.cache
478
479endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
480
481%_defconfig: $(CONFIG)/conf
482 cp $(shell find ./target/ -name $@) .config
483 -@$(MAKE) oldconfig
484
485update:
486 cp .config $(BOARD_PATH)/$(BOARD_NAME)_defconfig
487
488configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config
489
490prepatch: gcc-patched binutils-patched gdb-patched uclibc-patched
491
492.lognr.$(PROJECT):
493 @echo "0" > .lognr.$(PROJECT)
494
495log: .lognr.$(PROJECT)
496 @expr `cat .lognr.$(PROJECT)` + 1 > .lognr.$(PROJECT)
497 @echo Creating $(PROJECT)-`cat .lognr.$(PROJECT)`.log
498 @$(MAKE) > $(PROJECT)-`cat .lognr.$(PROJECT)`.log 2>&1
499
500
501cross: $(BASE_TARGETS)
502
503help:
504 @echo 'Cleaning:'
505 @echo ' clean - delete temporary files created by build'
506 @echo ' distclean - delete all non-source files (including .config)'
507 @echo
508 @echo 'Build:'
509 @echo ' all - make world'
510 @echo
511 @echo 'Configuration:'
512 @echo ' menuconfig - interactive curses-based configurator'
513 @echo ' oldconfig - resolve any unresolved symbols in .config'
514 @echo ' configured - make {uclibc/busybox/linux26}-config'
515 @echo ' saveconfig - save current configuration under local/<project>'
516 @echo ' getconfig - restore saved configuration from local/<project>'
517 @echo
518 @echo 'Miscellaneous:'
519 @echo ' source - download all sources needed for offline-build'
520 @echo ' source-check - check all packages for valid download URLs'
521 @echo ' external-deps - list external packages used'
522 @echo ' flush - flush configuration cache'
523 @echo
524 @echo 'See docs/README and docs/buildroot.html for further details'
525 @echo
526
527release: distclean
528 OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
529 rm -rf ../$$OUT*; cp -al . ../$$OUT; cd ..; \
530 tar cfz $$OUT.tar.gz --exclude .svn --exclude .git --exclude \*~ $$OUT; \
531 rm -rf $$OUT
532
533.PHONY: dummy subdirs release distclean clean config oldconfig \
534 menuconfig tags check test depend defconfig help
535
This page took 0.02766 seconds and 4 git commands to generate.