ct-ng.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Oct 05 23:59:16 2010 +0200 (2010-10-05)
changeset 2134 af1a779a7f1a
parent 2076 b58109b7b321
child 2137 98b51f471fbb
permissions -rw-r--r--
scripts: update distclean

The toolchains are now built in .build/ rather than in targets/
so distclean has to get rid of that.

We also clean up the old dir, as users may have old samples that
still refer to the old location.

Do not hide messages during distclean, and do not ignore errors.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     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 # Don't go parallel
    10 .NOTPARALLEL:
    11 
    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)
    16 
    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@@
    21 
    22 # This is crosstool-NG version string
    23 export CT_VERSION:=@@CT_VERSION@@
    24 
    25 # Paths found by ./configure
    26 include $(CT_LIB_DIR)/paths.mk
    27 
    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
    32 # bash.
    33 export SHELL=$(bash)
    34 
    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.
    37 export GREP_OPTIONS=
    38 
    39 # Make the restart/stop steps availabe to scripts/crostool-NG.sh
    40 export CT_STOP:=$(STOP)
    41 export CT_RESTART:=$(RESTART)
    42 
    43 SILENT=@
    44 ECHO=echo
    45 ifeq ($(strip $(origin V)),command line)
    46   ifeq ($(strip $(V)),0)
    47     SILENT=@
    48     ECHO=:
    49   else
    50     ifeq ($(strip $(V)),1)
    51       SILENT=
    52       ECHO=:
    53     else
    54       ifeq ($(strip $(V)),2)
    55         SILENT=
    56         ECHO=echo
    57       endif # V == 2
    58     endif # V== 1
    59   endif # V == 0
    60 endif # origin V
    61 export V SILENT ECHO
    62 
    63 all: help
    64 
    65 .PHONY: $(PHONY)
    66 PHONY += all
    67 FORCE:
    68 
    69 # Help system
    70 help:: help-head help-config help-samples help-build help-clean help-distrib help-env help-tail
    71 
    72 help-head:: version
    73 	@echo  'See below for a list of available actions, listed by category:'
    74 
    75 help-config::
    76 	@echo
    77 	@echo  'Configuration actions:'
    78 
    79 help-samples::
    80 	@echo
    81 	@echo  'Preconfigured toolchains (#: force number of // jobs):'
    82 
    83 help-build::
    84 	@echo
    85 	@echo  'Build actions (#: force number of // jobs):'
    86 
    87 help-clean::
    88 	@echo
    89 	@echo  'Clean actions:'
    90 
    91 help-distrib::
    92 	@echo
    93 	@echo  'Distribution actions:'
    94 
    95 help-env::
    96 	@echo
    97 	@echo  'Environement variables (see @@CT_DOCDIR@@/0 - Table of content.txt):'
    98 
    99 help-tail::
   100 	@echo
   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'
   105 
   106 help-build::
   107 	@echo  '  build[.#]          - Build the currently configured toolchain'
   108 
   109 help-clean::
   110 	@echo  '  clean              - Remove generated files'
   111 	@echo  '  distclean          - Remove generated files, configuration and build directories'
   112 
   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
   118 
   119 help-config::
   120 	@echo  '  show-tuple         - Print the tuple of the currently configured toolchain'
   121 
   122 help-distrib::
   123 	@echo  '  tarball            - Build a tarball of the configured toolchain'
   124 
   125 help-env::
   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'
   129 
   130 # End help system
   131 
   132 .config:
   133 	@echo "There is no existing .config file!"
   134 	@echo "You need to either run 'menuconfig',"
   135 	@echo "or configure an existing sample."
   136 	@false
   137 
   138 show-tuple: .config
   139 	$(SILENT)$(bash) $(CT_LIB_DIR)/scripts/showTuple.sh
   140 
   141 # Actual build
   142 build: .config
   143 	$(SILENT)$(CT_LIB_DIR)/scripts/crosstool-NG.sh
   144 
   145 build.%:
   146 	$(SILENT)$(MAKE) -rf $(CT_NG) $(shell echo "$(@)" |$(sed) -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')
   147 
   148 PHONY += tarball
   149 #tarball:
   150 #	@$(CT_LIB_DIR)/scripts/tarball.sh
   151 tarball:
   152 	@echo 'Tarball creation disabled for now... Sorry.'
   153 	@true
   154 
   155 PHONY += version
   156 version:
   157 	@echo 'This is crosstool-NG version $(CT_VERSION)'
   158 	@echo
   159 	@echo 'Copyright (C) 2008  Yann E. MORIN <yann.morin.1998@anciens.enib.fr>'
   160 	@echo 'This is free software; see the source for copying conditions.'
   161 	@echo 'There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A'
   162 	@echo 'PARTICULAR PURPOSE.'
   163 	@echo
   164 
   165 PHONY += clean
   166 clean::
   167 	@$(ECHO) "  CLEAN log"
   168 	$(SILENT)rm -f log.* .config.* ..config*
   169 
   170 PHONY += distclean
   171 distclean:: clean
   172 	@$(ECHO) "  CLEAN .config"
   173 	$(SILENT)rm -f .config .config.* ..config*
   174 	@$(ECHO) "  CLEAN build dir"
   175 	$(SILENT)chmod -R u+w targets .build
   176 	$(SILENT)rm -rf targets .build