crosstool-ng/ct-ng.in
Yann E. MORIN" 8d042db1d6 Extract the config files related stuff from the kconfig stuff
- create config/config.mk, with all the config.gen/ rules
- the only common points between config files and configurators:
  - the top-level config file to include, stored in KCONFIG_TOP
  - the config_file rules, which makes config files available to configurators
- dependency-files are renamed from %.d to %.dep (.d is reserved for directories)
- a few eye-candy here and there

 /trunk/kconfig/kconfig.mk |  184    12   172     0 +++--------------------------------------------------
 /trunk/config/config.mk   |  118     9   109     0 +++-------------------------------
 /trunk/ct-ng.in           |    1     1     0     0 +
 3 files changed, 22 insertions(+), 281 deletions(-)
2008-10-18 18:37:28 +00:00

150 lines
3.7 KiB
Plaintext

#!@@CT_MAKE@@ -rf
# Makefile for crosstool-NG.
# Copyright 2006 Yann E. MORIN <yann.morin.1998@anciens.enib.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
# 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. (Note: this is ugly, but ./configure checks for it).
export SHELL=/bin/bash
# This is where ct-ng is.
# Don't bother to change it other than with a new ./configure!
CT_NG:=@@CT_BINDIR@@/ct-ng
export CT_TOP_DIR:=$(shell pwd)
export CT_LIB_DIR:=@@CT_LIBDIR@@
export CT_DOC_DIR:=@@CT_DOCDIR@@
# This is crosstool-NG version string
export CT_VERSION:=@@CT_VERSION@@
export CT_STOP:=$(STOP)
export CT_RESTART:=$(RESTART)
ifeq ($(strip $(V)),)
SILENT=@
ECHO=echo
else
ifeq ($(strip $(V)),0)
SILENT=@
ECHO=:
else
ifeq ($(strip $(V)),1)
SILENT=
ECHO=:
endif
endif
endif
export V
.FORCE:
.PHONY: $(PHONY)
PHONY += all
all: help
# 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:'
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 'Environement variables (see @@CT_DOCDIR@@/overview.txt):'
help-tail::
@echo
@echo 'Use action "config" or "menuconfig" to configure crosstool-NG'
@echo 'Use action "build" to build your toolchain'
@echo 'Use action "version" to see the version'
@echo 'See "man 1 ct-ng" for some help as well'
help-build::
@echo ' build[.#] - Build the 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)/tools/tools.mk
help-distrib::
@echo ' tarball - Build a tarball of the configured toolchain'
help-env::
@echo ' STOP - Stop the build just after this step'
@echo ' RESTART - Restart the build just before this step'
# End help system
.config:
@echo ' There is no existing .config file!'
@false
# Actual build
build: .config
$(SILENT)$(CT_LIB_DIR)/scripts/crosstool.sh
build.%:
$(SILENT)$(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@anciens.enib.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::
$(SILENT)rm -f .config.*
PHONY += distclean
distclean:: clean
@$(ECHO) " CLEAN .config log"
$(SILENT)rm -f .config* ..config.tmp
$(SILENT)rm -f log.*
@$(ECHO) " CLEAN targets"
$(SILENT)chmod -R u+w targets >/dev/null 2>&1 || true
$(SILENT)rm -rf targets