ct-ng.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Nov 10 19:32:11 2009 +0100 (2009-11-10)
changeset 1622 9ad2a3fd1fcc
parent 1336 bc8b9381f637
child 1667 a5020a1facff
permissions -rw-r--r--
scripts: output renumbered patches in a new directory

When renumbering patches, the original patches get removed and replaced
with the new ones. This can be annoying to loose the original patches.
Fix this by putting the new patchs in a directory of their own.
     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 # Make the restart/stop steps availabe to scripts/crostool-NG.sh
    36 export CT_STOP:=$(STOP)
    37 export CT_RESTART:=$(RESTART)
    38 
    39 SILENT=@
    40 ECHO=echo
    41 ifeq ($(strip $(origin V)),command line)
    42   ifeq ($(strip $(V)),0)
    43     SILENT=@
    44     ECHO=:
    45   else
    46     ifeq ($(strip $(V)),1)
    47       SILENT=
    48       ECHO=:
    49     else
    50       ifeq ($(strip $(V)),2)
    51         SILENT=
    52         ECHO=echo
    53       endif # V == 2
    54     endif # V== 1
    55   endif # V == 0
    56 endif # origin V
    57 export V SILENT ECHO
    58 
    59 all: help
    60 
    61 .PHONY: $(PHONY)
    62 PHONY += all
    63 FORCE:
    64 
    65 # Help system
    66 help:: help-head help-config help-samples help-build help-clean help-distrib help-env help-tail
    67 
    68 help-head:: version
    69 	@echo  'See below for a list of available actions, listed by category:'
    70 
    71 help-config::
    72 	@echo
    73 	@echo  'Configuration actions:'
    74 
    75 help-samples::
    76 	@echo
    77 	@echo  'Preconfigured toolchains (#: force number of // jobs):'
    78 
    79 help-build::
    80 	@echo
    81 	@echo  'Build actions (#: force number of // jobs):'
    82 
    83 help-clean::
    84 	@echo
    85 	@echo  'Clean actions:'
    86 
    87 help-distrib::
    88 	@echo
    89 	@echo  'Distribution actions:'
    90 
    91 help-env::
    92 	@echo
    93 	@echo  'Environement variables (see @@CT_DOCDIR@@/overview.txt):'
    94 
    95 help-tail::
    96 	@echo
    97 	@echo  'Use action "config" or "menuconfig" to configure crosstool-NG'
    98 	@echo  'Use action "build" to build your toolchain'
    99 	@echo  'Use action "version" to see the version'
   100 	@echo  'See "man 1 ct-ng" for some help as well'
   101 
   102 help-build::
   103 	@echo  '  build[.#]          - Build the currently configured toolchain'
   104 
   105 help-clean::
   106 	@echo  '  clean              - Remove generated files'
   107 	@echo  '  distclean          - Remove generated files, configuration and build directories'
   108 
   109 include $(CT_LIB_DIR)/config/config.mk
   110 include $(CT_LIB_DIR)/kconfig/kconfig.mk
   111 include $(CT_LIB_DIR)/steps.mk
   112 include $(CT_LIB_DIR)/samples/samples.mk
   113 include $(CT_LIB_DIR)/scripts/scripts.mk
   114 
   115 help-config::
   116 	@echo  '  show-tuple         - Print the tuple of the currently configured toolchain'
   117 
   118 help-distrib::
   119 	@echo  '  tarball            - Build a tarball of the configured toolchain'
   120 
   121 help-env::
   122 
   123 # End help system
   124 
   125 .config:
   126 	@echo "There is no existing .config file!"
   127 	@echo "You need to either run 'menuconfig',"
   128 	@echo "or configure an existing sample."
   129 	@false
   130 
   131 show-tuple: .config
   132 	$(SILENT)$(bash) $(CT_LIB_DIR)/scripts/showTuple.sh
   133 
   134 # Actual build
   135 build: .config
   136 	$(SILENT)$(CT_LIB_DIR)/scripts/crosstool-NG.sh
   137 
   138 build.%:
   139 	$(SILENT)$(MAKE) -rf $(CT_NG) $(shell echo "$(@)" |$(sed) -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')
   140 
   141 PHONY += tarball
   142 #tarball:
   143 #	@$(CT_LIB_DIR)/scripts/tarball.sh
   144 tarball:
   145 	@echo 'Tarball creation disabled for now... Sorry.'
   146 	@true
   147 
   148 PHONY += version
   149 version:
   150 	@echo 'This is crosstool-NG version $(CT_VERSION)'
   151 	@echo
   152 	@echo 'Copyright (C) 2008  Yann E. MORIN <yann.morin.1998@anciens.enib.fr>'
   153 	@echo 'This is free software; see the source for copying conditions.'
   154 	@echo 'There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A'
   155 	@echo 'PARTICULAR PURPOSE.'
   156 	@echo
   157 
   158 PHONY += clean
   159 clean::
   160 	@$(ECHO) "  CLEAN log"
   161 	$(SILENT)rm -f log.* .config.* ..config*
   162 
   163 PHONY += distclean
   164 distclean:: clean
   165 	@$(ECHO) "  CLEAN .config"
   166 	$(SILENT)rm -f .config .config.* ..config*
   167 	@$(ECHO) "  CLEAN targets"
   168 	$(SILENT)chmod -R u+w targets >/dev/null 2>&1 || true
   169 	$(SILENT)rm -rf targets