ct-ng.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Feb 01 00:11:19 2011 +0100 (2011-02-01)
branch1.9
changeset 2293 72a2ecd8961b
parent 2134 af1a779a7f1a
child 2339 730e2d63296b
permissions -rw-r--r--
Tagging release 1.9.3
     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)[ ! -d targets ] || chmod -R u+w targets
   176 	$(SILENT)[ ! -d .build  ] || chmod -R u+w .build
   177 	$(SILENT)rm -rf targets .build