ct-ng.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jan 09 16:05:01 2010 +0100 (2010-01-09)
changeset 1719 5c0d326c2cea
parent 1618 7f52e1cca71e
child 1876 a6a4beab3125
permissions -rw-r--r--
libc/glibc: correctly handle dual-bitness archs

If the selected ARCH is dual-bitness (eg. supports 32- and 64-bit),
then we need to know the correct place where to fetch some headers.
Currently, this applies only to x86 variants: i386 and x86_64.
     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@@/overview.txt):'
    98 
    99 help-tail::
   100 	@echo
   101 	@echo  'Use action "config" or "menuconfig" to configure crosstool-NG'
   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 
   127 # End help system
   128 
   129 .config:
   130 	@echo "There is no existing .config file!"
   131 	@echo "You need to either run 'menuconfig',"
   132 	@echo "or configure an existing sample."
   133 	@false
   134 
   135 show-tuple: .config
   136 	$(SILENT)$(bash) $(CT_LIB_DIR)/scripts/showTuple.sh
   137 
   138 # Actual build
   139 build: .config
   140 	$(SILENT)$(CT_LIB_DIR)/scripts/crosstool-NG.sh
   141 
   142 build.%:
   143 	$(SILENT)$(MAKE) -rf $(CT_NG) $(shell echo "$(@)" |$(sed) -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')
   144 
   145 PHONY += tarball
   146 #tarball:
   147 #	@$(CT_LIB_DIR)/scripts/tarball.sh
   148 tarball:
   149 	@echo 'Tarball creation disabled for now... Sorry.'
   150 	@true
   151 
   152 PHONY += version
   153 version:
   154 	@echo 'This is crosstool-NG version $(CT_VERSION)'
   155 	@echo
   156 	@echo 'Copyright (C) 2008  Yann E. MORIN <yann.morin.1998@anciens.enib.fr>'
   157 	@echo 'This is free software; see the source for copying conditions.'
   158 	@echo 'There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A'
   159 	@echo 'PARTICULAR PURPOSE.'
   160 	@echo
   161 
   162 PHONY += clean
   163 clean::
   164 	@$(ECHO) "  CLEAN log"
   165 	$(SILENT)rm -f log.* .config.* ..config*
   166 
   167 PHONY += distclean
   168 distclean:: clean
   169 	@$(ECHO) "  CLEAN .config"
   170 	$(SILENT)rm -f .config .config.* ..config*
   171 	@$(ECHO) "  CLEAN targets"
   172 	$(SILENT)chmod -R u+w targets >/dev/null 2>&1 || true
   173 	$(SILENT)rm -rf targets