summaryrefslogtreecommitdiff
path: root/ct-ng.in
blob: 905cddd6b9aa0e1213e734ee6de6f97ef23002d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!@@CT_MAKE@@ -rf
# Makefile for crosstool-NG.
# Copyright 2006 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>

# Don't print directory as we descend into them
MAKEFLAGS += --no-print-directory --no-builtin-rules

# Remember the name of the Makefile
CT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
CT_NG := $(CT_MAKEFILE)

export CT_TOP_DIR:=$(shell pwd)
export CT_LIB_DIR:=@@CT_LIBDIR@@
export CT_DOC_DIR:=@@CT_DOCDIR@@

# This is crosstool-NG version string
export CT_VERSION:=$(shell cat $(CT_LIB_DIR)/.version)

export CT_STOP:=$(STOP)
export CT_RESTART:=$(RESTART)

.PHONY: $(PHONY)
PHONY += all
all: help

HOST_CC := gcc -funsigned-char

# Help system
help:: help-head help-config help-samples help-build help-clean help-distrib help-env help-tail

help-head::
	@echo  'Available actions:'

help-config::
	@echo
	@echo  'Configuration actions:'

help-samples::
	@echo
	@echo  'Preconfigured toolchains:'

help-build::
	@echo
	@echo  'Build actions (#: force number of // jobs):'

help-clean::
	@echo
	@echo  'Clean actions:'

help-distrib::
	@echo
	@echo  'Distribution actions:'

help-env::
	@echo
	@echo  'Environement variables (see @@CT_DOCDIR@@/overview.txt):'

help-tail::
	@echo
	@echo  'Execute "$(CT_NG) config" or "$(CT_NG) menuconfig" to configure crosstool-NG'
	@echo  'Execute "$(CT_NG) build" to build your toolchain'
	@echo  'Execute "$(CT_NG) version" to see the version'
	@echo  'See "man 1 ct-ng" for some help as well'

# End help system

help-build::
	@echo  '  build[.#]          - Build the toolchain'

help-clean::
	@echo  '  clean              - Remove generated files'
	@echo  '  distclean          - Remove generated files, configuration and build directories'

include $(CT_LIB_DIR)/kconfig/kconfig.mk
include $(CT_LIB_DIR)/steps.mk
include $(CT_LIB_DIR)/samples/samples.mk
include $(CT_LIB_DIR)/tools/tools.mk

help-distrib::
	@echo  '  tarball            - Build a tarball of the configured toolchain'

help-env::
	@echo  '  STOP               - Stop the build just after this step'
	@echo  '  RESTART            - Restart the build just before this step'

.config:
	@echo  'You must run either one of "$(CT_NG) config" or "$(CT_NG) menuconfig" first'
	@false

# Actual build
ifeq ($(CT_JOBS),)
CT_JOBS:=1
endif
export CT_JOBS
build:: .config
	@$(CT_LIB_DIR)/scripts/crosstool.sh

build.%::
	@$(CT_NG) $(shell echo "$(@)" |sed -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')

PHONY += tarball
#tarball:
#	@$(CT_LIB_DIR)/scripts/tarball.sh
tarball:
	@echo 'Tarbal creation disabled for now... Sorry.'
	@true

PHONY += version
version:
	@echo 'This is crosstool-NG version $(CT_VERSION)'

PHONY += clean
clean::
	@rm -f $(CT_TOP_DIR)/.config.*

PHONY += distclean
distclean:: clean
	@rm -f $(CT_TOP_DIR)/.config* $(CT_TOP_DIR)/..config.tmp
	@rm -f $(CT_TOP_DIR)/log.*
	@[ ! -d "$(CT_TOP_DIR)/targets" ] || chmod -R u+w "$(CT_TOP_DIR)/targets"
	@rm -rf "$(CT_TOP_DIR)/targets"