| #!@@CT_make@@ -rf |
| # Makefile for crosstool-NG. |
| # Copyright 2006 Yann E. MORIN <yann.morin.1998@free.fr> |
| |
| # Don't print directory as we descend into them |
| # Don't use built-in rules, we know what we're doing |
| MAKEFLAGS += --no-print-directory --no-builtin-rules |
| |
| # Don't go parallel |
| .NOTPARALLEL: |
| |
| # This is where ct-ng is: |
| export CT_NG:=$(lastword $(MAKEFILE_LIST)) |
| # and this is where we're working in: |
| export CT_TOP_DIR:=$(shell pwd) |
| |
| # Paths and values set by ./configure |
| # Don't bother to change it other than with a new ./configure! |
| export CT_LIB_DIR:=@@CT_LIBDIR@@ |
| export CT_DOC_DIR:=@@CT_DOCDIR@@ |
| |
| # This is crosstool-NG version string |
| export CT_VERSION:=@@CT_VERSION@@ |
| |
| # Paths found by ./configure |
| include $(CT_LIB_DIR)/paths.mk |
| |
| # Some distributions (eg. Ubuntu) thought it wise to point /bin/sh to |
| # a truly POSIX-conforming shell, ash in this case. This is not so good |
| # as we, smart (haha!) developers (as smart we ourselves think we are), |
| # got used to bashisms, and are enclined to easiness... So force use of |
| # bash. |
| export SHELL=$(bash) |
| |
| # GREP_OPTIONS=--color=always will break the generated .in files |
| # We do not need any GREP_OPTIONS anyway, so set it to empty. |
| export GREP_OPTIONS= |
| |
| # Make the restart/stop steps availabe to scripts/crostool-NG.sh |
| export CT_STOP:=$(STOP) |
| export CT_RESTART:=$(RESTART) |
| |
| SILENT=@ |
| ECHO=echo |
| ifeq ($(strip $(origin V)),command line) |
| ifeq ($(strip $(V)),0) |
| SILENT=@ |
| ECHO=: |
| else |
| ifeq ($(strip $(V)),1) |
| SILENT= |
| ECHO=: |
| else |
| ifeq ($(strip $(V)),2) |
| SILENT= |
| ECHO=echo |
| endif # V == 2 |
| endif # V== 1 |
| endif # V == 0 |
| endif # origin V |
| export V SILENT ECHO |
| |
| all: help |
| |
| .PHONY: $(PHONY) |
| PHONY += all |
| FORCE: |
| |
| # Help system |
| help:: help-head help-config help-samples help-build help-clean help-distrib help-env help-tail |
| |
| help-head:: version |
| @echo 'See below for a list of available actions, listed by category:' |
| |
| help-config:: |
| @echo |
| @echo 'Configuration actions:' |
| |
| help-samples:: |
| @echo |
| @echo 'Preconfigured toolchains (#: force number of // jobs):' |
| |
| help-build:: |
| @echo |
| @echo 'Build actions (#: force number of // jobs):' |
| |
| help-clean:: |
| @echo |
| @echo 'Clean actions:' |
| |
| help-distrib:: |
| @echo |
| @echo 'Distribution actions:' |
| |
| help-env:: |
| @echo |
| @echo 'Environment variables (see @@CT_DOCDIR@@/0 - Table of content.txt):' |
| |
| help-tail:: |
| @echo |
| @echo 'Use action "menuconfig" to configure your toolchain' |
| @echo 'Use action "build" to build your toolchain' |
| @echo 'Use action "version" to see the version' |
| @echo 'See "man 1 $(notdir $(CT_NG))" for some help as well' |
| |
| help-build:: |
| @echo ' build[.#] - Build the currently configured toolchain' |
| |
| help-clean:: |
| @echo ' clean - Remove generated files' |
| @echo ' distclean - Remove generated files, configuration and build directories' |
| |
| include $(CT_LIB_DIR)/config/config.mk |
| include $(CT_LIB_DIR)/kconfig/kconfig.mk |
| include $(CT_LIB_DIR)/steps.mk |
| include $(CT_LIB_DIR)/samples/samples.mk |
| include $(CT_LIB_DIR)/scripts/scripts.mk |
| |
| help-config:: |
| @echo ' show-tuple - Print the tuple of the currently configured toolchain' |
| |
| help-distrib:: |
| @echo ' tarball - Build a tarball of the configured toolchain' |
| |
| help-env:: |
| @echo ' V=0|1|2 - 0 => show only human-readable messages (default)' |
| @echo ' 1 => show only the commands being executed' |
| @echo ' 2 => show both' |
| |
| # End help system |
| |
| .config: |
| @echo "There is no existing .config file!" |
| @echo "You need to either run 'menuconfig'," |
| @echo "or configure an existing sample." |
| @false |
| |
| .config.2: .config |
| $(SILENT)$(sed) -r -e 's/^([^=]+_ARRAY)="(.*)"$$/\1=( \2 )/;' \ |
| -e '/^[^=]+_ARRAY=/s/\\(.)/\1/g;' \ |
| $< >$@ |
| |
| show-tuple: .config.2 |
| $(SILENT)$(bash) $(CT_LIB_DIR)/scripts/showTuple.sh |
| |
| # Actual build |
| build: .config.2 |
| $(SILENT)$(CT_LIB_DIR)/scripts/crosstool-NG.sh |
| |
| build.%: |
| $(SILENT)$(MAKE) -rf $(CT_NG) $(shell echo "$(@)" |$(sed) -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;') |
| |
| PHONY += tarball |
| #tarball: |
| # @$(CT_LIB_DIR)/scripts/tarball.sh |
| tarball: |
| @echo 'Tarball creation disabled for now... Sorry.' |
| @true |
| |
| PHONY += version |
| version: |
| @echo 'This is crosstool-NG version $(CT_VERSION)' |
| @echo |
| @echo 'Copyright (C) 2008 Yann E. MORIN <yann.morin.1998@free.fr>' |
| @echo 'This is free software; see the source for copying conditions.' |
| @echo 'There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A' |
| @echo 'PARTICULAR PURPOSE.' |
| @echo |
| |
| PHONY += clean |
| clean:: |
| @$(ECHO) " CLEAN log" |
| $(SILENT)rm -f build.log |
| @$(ECHO) " CLEAN build dir" |
| $(SILENT)[ ! -d targets ] || chmod -R u+w targets |
| $(SILENT)[ ! -d .build ] || chmod -R u+w .build |
| $(SILENT)rm -rf targets .build |
| |
| PHONY += distclean |
| distclean:: clean |
| @$(ECHO) " CLEAN .config" |
| $(SILENT)rm -f .config .config.* ..config* |