2 # Makefile for crosstool-NG.
3 # Copyright 2006 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
5 # Don't print directory as we descend into them
6 # Don't use built-in rules, we know what we're doing
7 MAKEFLAGS += --no-print-directory --no-builtin-rules
12 # This is where ct-ng is:
13 export CT_NG:=$(lastword $(MAKEFILE_LIST))
14 # and this is where we're working in:
15 export CT_TOP_DIR:=$(shell pwd)
17 # Paths and values set by ./configure
18 # Don't bother to change it other than with a new ./configure!
19 export CT_LIB_DIR:=@@CT_LIBDIR@@
20 export CT_DOC_DIR:=@@CT_DOCDIR@@
22 # This is crosstool-NG version string
23 export CT_VERSION:=@@CT_VERSION@@
25 # Paths found by ./configure
26 include $(CT_LIB_DIR)/paths.mk
28 # Some distributions (eg. Ubuntu) thought it wise to point /bin/sh to
29 # a truly POSIX-conforming shell, ash in this case. This is not so good
30 # as we, smart (haha!) developers (as smart we ourselves think we are),
31 # got used to bashisms, and are enclined to easiness... So force use of
35 # GREP_OPTIONS=--color=always will break the generated .in files
36 # We do not need any GREP_OPTIONS anyway, so set it to empty.
39 # Make the restart/stop steps availabe to scripts/crostool-NG.sh
40 export CT_STOP:=$(STOP)
41 export CT_RESTART:=$(RESTART)
45 ifeq ($(strip $(origin V)),command line)
46 ifeq ($(strip $(V)),0)
50 ifeq ($(strip $(V)),1)
54 ifeq ($(strip $(V)),2)
70 help:: help-head help-config help-samples help-build help-clean help-distrib help-env help-tail
73 @echo 'See below for a list of available actions, listed by category:'
77 @echo 'Configuration actions:'
81 @echo 'Preconfigured toolchains (#: force number of // jobs):'
85 @echo 'Build actions (#: force number of // jobs):'
89 @echo 'Clean actions:'
93 @echo 'Distribution actions:'
97 @echo 'Environement variables (see @@CT_DOCDIR@@/0 - Table of content.txt):'
101 @echo 'Use action "menuconfig" to configure your toolchain'
102 @echo 'Use action "build" to build your toolchain'
103 @echo 'Use action "version" to see the version'
104 @echo 'See "man 1 ct-ng" for some help as well'
107 @echo ' build[.#] - Build the currently configured toolchain'
110 @echo ' clean - Remove generated files'
111 @echo ' distclean - Remove generated files, configuration and build directories'
113 include $(CT_LIB_DIR)/config/config.mk
114 include $(CT_LIB_DIR)/kconfig/kconfig.mk
115 include $(CT_LIB_DIR)/steps.mk
116 include $(CT_LIB_DIR)/samples/samples.mk
117 include $(CT_LIB_DIR)/scripts/scripts.mk
120 @echo ' show-tuple - Print the tuple of the currently configured toolchain'
123 @echo ' tarball - Build a tarball of the configured toolchain'
126 @echo ' V=0|1|2 - 0 => show only human-readable messages (default)'
127 @echo ' 1 => show only the commands being executed'
128 @echo ' 2 => show both'
133 @echo "There is no existing .config file!"
134 @echo "You need to either run 'menuconfig',"
135 @echo "or configure an existing sample."
139 $(SILENT)$(sed) -r -e 's/^([^=]+_ARRAY)="(.*)"$$/\1=( \2 )/;' \
140 -e '/^[^=]+_ARRAY=/s/\\(.)/\1/g;' \
143 show-tuple: .config.2
144 $(SILENT)$(bash) $(CT_LIB_DIR)/scripts/showTuple.sh
148 $(SILENT)$(CT_LIB_DIR)/scripts/crosstool-NG.sh
151 $(SILENT)$(MAKE) -rf $(CT_NG) $(shell echo "$(@)" |$(sed) -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')
155 # @$(CT_LIB_DIR)/scripts/tarball.sh
157 @echo 'Tarball creation disabled for now... Sorry.'
162 @echo 'This is crosstool-NG version $(CT_VERSION)'
164 @echo 'Copyright (C) 2008 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>'
165 @echo 'This is free software; see the source for copying conditions.'
166 @echo 'There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A'
167 @echo 'PARTICULAR PURPOSE.'
172 @$(ECHO) " CLEAN log"
173 $(SILENT)rm -f build.log .config.* ..config*
177 @$(ECHO) " CLEAN .config"
178 $(SILENT)rm -f .config .config.* ..config*
179 @$(ECHO) " CLEAN build dir"
180 $(SILENT)[ ! -d targets ] || chmod -R u+w targets
181 $(SILENT)[ ! -d .build ] || chmod -R u+w .build
182 $(SILENT)rm -rf targets .build