ct-ng.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
parent 2339 730e2d63296b
child 2621 00853d565edf
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
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 .config.2: .config
   139 	$(SILENT)$(sed) -r -e 's/^([^=]+_ARRAY)="(.*)"$$/\1=( \2 )/;'   \
   140 	                   -e '/^[^=]+_ARRAY=/s/\\(.)/\1/g;'            \
   141 	                $< >$@
   142 
   143 show-tuple: .config.2
   144 	$(SILENT)$(bash) $(CT_LIB_DIR)/scripts/showTuple.sh
   145 
   146 # Actual build
   147 build: .config.2
   148 	$(SILENT)$(CT_LIB_DIR)/scripts/crosstool-NG.sh
   149 
   150 build.%:
   151 	$(SILENT)$(MAKE) -rf $(CT_NG) $(shell echo "$(@)" |$(sed) -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')
   152 
   153 PHONY += tarball
   154 #tarball:
   155 #	@$(CT_LIB_DIR)/scripts/tarball.sh
   156 tarball:
   157 	@echo 'Tarball creation disabled for now... Sorry.'
   158 	@true
   159 
   160 PHONY += version
   161 version:
   162 	@echo 'This is crosstool-NG version $(CT_VERSION)'
   163 	@echo
   164 	@echo 'Copyright (C) 2008  Yann E. MORIN <yann.morin.1998@anciens.enib.fr>'
   165 	@echo 'This is free software; see the source for copying conditions.'
   166 	@echo 'There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A'
   167 	@echo 'PARTICULAR PURPOSE.'
   168 	@echo
   169 
   170 PHONY += clean
   171 clean::
   172 	@$(ECHO) "  CLEAN log"
   173 	$(SILENT)rm -f build.log .config.* ..config*
   174 
   175 PHONY += distclean
   176 distclean:: clean
   177 	@$(ECHO) "  CLEAN .config"
   178 	$(SILENT)rm -f .config .config.* ..config*
   179 	@$(ECHO) "  CLEAN build dir"
   180 	$(SILENT)[ ! -d targets ] || chmod -R u+w targets
   181 	$(SILENT)[ ! -d .build  ] || chmod -R u+w .build
   182 	$(SILENT)rm -rf targets .build