ct-ng.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Oct 18 18:37:28 2008 +0000 (2008-10-18)
changeset 945 d0e5f04d2e06
parent 943 1cca90ce0481
child 953 edd62c121892
permissions -rw-r--r--
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(-)
     1 #!@@CT_MAKE@@ -rf
     2 # Makefile for crosstool-NG.
     3 # Copyright 2006 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
     4 
     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
     8 
     9 # Some distributions (eg. Ubuntu) thought it wise to point /bin/sh to
    10 # a truly POSIX-conforming shell, ash in this case. This is not so good
    11 # as we, smart (haha!) developers (as smart we ourselves think we are),
    12 # got used to bashisms, and are enclined to easiness... So force use of
    13 # bash. (Note: this is ugly, but ./configure checks for it).
    14 export SHELL=/bin/bash
    15 
    16 # This is where ct-ng is.
    17 # Don't bother to change it other than with a new ./configure!
    18 CT_NG:=@@CT_BINDIR@@/ct-ng
    19 
    20 export CT_TOP_DIR:=$(shell pwd)
    21 export CT_LIB_DIR:=@@CT_LIBDIR@@
    22 export CT_DOC_DIR:=@@CT_DOCDIR@@
    23 
    24 # This is crosstool-NG version string
    25 export CT_VERSION:=@@CT_VERSION@@
    26 
    27 export CT_STOP:=$(STOP)
    28 export CT_RESTART:=$(RESTART)
    29 
    30 ifeq ($(strip $(V)),)
    31   SILENT=@
    32   ECHO=echo
    33 else
    34   ifeq ($(strip $(V)),0)
    35     SILENT=@
    36     ECHO=:
    37   else
    38     ifeq ($(strip $(V)),1)
    39       SILENT=
    40       ECHO=:
    41     endif
    42   endif
    43 endif
    44 export V
    45 
    46 .FORCE:
    47 .PHONY: $(PHONY)
    48 PHONY += all
    49 all: help
    50 
    51 # Help system
    52 help:: help-head help-config help-samples help-build help-clean help-distrib help-env help-tail
    53 
    54 help-head:: version
    55 	@echo  'See below for a list of available actions, listed by category:'
    56 
    57 help-config::
    58 	@echo
    59 	@echo  'Configuration actions:'
    60 
    61 help-samples::
    62 	@echo
    63 	@echo  'Preconfigured toolchains:'
    64 
    65 help-build::
    66 	@echo
    67 	@echo  'Build actions (#: force number of // jobs):'
    68 
    69 help-clean::
    70 	@echo
    71 	@echo  'Clean actions:'
    72 
    73 help-distrib::
    74 	@echo
    75 	@echo  'Distribution actions:'
    76 
    77 help-env::
    78 	@echo
    79 	@echo  'Environement variables (see @@CT_DOCDIR@@/overview.txt):'
    80 
    81 help-tail::
    82 	@echo
    83 	@echo  'Use action "config" or "menuconfig" to configure crosstool-NG'
    84 	@echo  'Use action "build" to build your toolchain'
    85 	@echo  'Use action "version" to see the version'
    86 	@echo  'See "man 1 ct-ng" for some help as well'
    87 
    88 help-build::
    89 	@echo  '  build[.#]          - Build the toolchain'
    90 
    91 help-clean::
    92 	@echo  '  clean              - Remove generated files'
    93 	@echo  '  distclean          - Remove generated files, configuration and build directories'
    94 
    95 include $(CT_LIB_DIR)/config/config.mk
    96 include $(CT_LIB_DIR)/kconfig/kconfig.mk
    97 include $(CT_LIB_DIR)/steps.mk
    98 include $(CT_LIB_DIR)/samples/samples.mk
    99 include $(CT_LIB_DIR)/tools/tools.mk
   100 
   101 help-distrib::
   102 	@echo  '  tarball            - Build a tarball of the configured toolchain'
   103 
   104 help-env::
   105 	@echo  '  STOP               - Stop the build just after this step'
   106 	@echo  '  RESTART            - Restart the build just before this step'
   107 
   108 # End help system
   109 
   110 .config:
   111 	@echo ' There is no existing .config file!'
   112 	@false
   113 
   114 # Actual build
   115 build: .config
   116 	$(SILENT)$(CT_LIB_DIR)/scripts/crosstool.sh
   117 
   118 build.%:
   119 	$(SILENT)$(CT_NG) $(shell echo "$(@)" |sed -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')
   120 
   121 PHONY += tarball
   122 #tarball:
   123 #	@$(CT_LIB_DIR)/scripts/tarball.sh
   124 tarball:
   125 	@echo 'Tarball creation disabled for now... Sorry.'
   126 	@true
   127 
   128 PHONY += version
   129 version:
   130 	@echo 'This is crosstool-NG version $(CT_VERSION)'
   131 	@echo
   132 	@echo 'Copyright (C) 2008  Yann E. MORIN <yann.morin.1998@anciens.enib.fr>'
   133 	@echo 'This is free software; see the source for copying conditions.'
   134 	@echo 'There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A'
   135 	@echo 'PARTICULAR PURPOSE.'
   136 	@echo
   137 
   138 PHONY += clean
   139 clean::
   140 	$(SILENT)rm -f .config.*
   141 
   142 PHONY += distclean
   143 distclean:: clean
   144 	@$(ECHO) "  CLEAN .config log"
   145 	$(SILENT)rm -f .config* ..config.tmp
   146 	$(SILENT)rm -f log.*
   147 	@$(ECHO) "  CLEAN targets"
   148 	$(SILENT)chmod -R u+w targets >/dev/null 2>&1 || true
   149 	$(SILENT)rm -rf targets