ct-ng.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Oct 30 19:49:51 2009 +0100 (2009-10-30)
changeset 1618 7f52e1cca71e
parent 1336 bc8b9381f637
child 1667 a5020a1facff
permissions -rw-r--r--
scripts: fix updating config.{sub,guess}
     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