Add support for building toolchains with gcc-4.4 snapshots.
Initial patch by Dmitry PLOTNIKOV: http://sourceware.org/ml/crossgcc/2009-03/msg00053.html
It [the toolchain] uses current ct-ng (nightly snapshot 20090324, latest
release 1.3.2 work also), glibc 2.9 (from CVS), binutils 2.19 and latest
snapshot of GCC 4.4.0 (as of March 20, 2009).
We have successfully built linux kernel 2.6.29 and a lot of other stuff
with this toolchain.
Here's the patch that adds GCC 4.4.0 to the ct-ng menu and enables it to
download a 4.4.0 snapshot from ftp.
Patch was adpated by me, mostly to better fit the configuration layout.
/trunk/scripts/build/cc/gcc.sh | 34 22 12 0 ++++++++++++++++++++++------------
/trunk/config/cc/gcc.in | 35 30 5 0 ++++++++++++++++++++++++++++++-----
2 files changed, 52 insertions(+), 17 deletions(-)
1 # ===========================================================================
2 # crosstool-NG genererated config files
3 # These targets are used from top-level makefile
5 #-----------------------------------------------------------
6 # List all config files, wether sourced or generated
8 # The top-level config file to be used be configurators
9 KCONFIG_TOP = config/config.in
11 # Build the list of all source config files
12 STATIC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(shell find $(CT_LIB_DIR)/config -type f -name '*.in' 2>/dev/null))
13 # ... and how to access them:
14 $(STATIC_CONFIG_FILES): config
16 # Build a list of per-component-type source config files
17 ARCH_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in))
18 KERNEL_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in))
19 CC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in))
20 LIBC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in))
21 DEBUG_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/debug/*.in))
22 TOOL_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/tools/*.in))
24 # Build the list of generated config files
25 GEN_CONFIG_FILES = config.gen/arch.in \
26 config.gen/kernel.in \
31 # ... and how to access them:
32 # Generated files depends on config.mk (this file) because it has the
33 # functions needed to build the genrated files, and thus they might
34 # need re-generation if config.mk changes
35 $(GEN_CONFIG_FILES): config.gen \
36 $(CT_LIB_DIR)/config/config.mk
38 # Helper entry for the configurators
40 config_files: $(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
42 # Where to access to the source config files from
45 $(SILENT)ln -s $(CT_LIB_DIR)/config config
47 # Where to store the generated config files into
49 @$(ECHO) " MKDIR config.gen"
50 $(SILENT)mkdir -p config.gen
52 #-----------------------------------------------------------
53 # Build list of per-component-type items to easily build generated files
55 ARCHS = $(patsubst config/arch/%.in,%,$(ARCH_CONFIG_FILES))
56 KERNELS = $(patsubst config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
57 CCS = $(patsubst config/cc/%.in,%,$(CC_CONFIG_FILES))
58 LIBCS = $(patsubst config/libc/%.in,%,$(LIBC_CONFIG_FILES))
59 DEBUGS = $(patsubst config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
60 TOOLS = $(patsubst config/tools/%.in,%,$(TOOL_CONFIG_FILES))
62 #-----------------------------------------------------------
63 # Helper functions to ease building generated config files
65 # The function 'build_gen_choice_in' builds a choice-menu of a list of
66 # components in the given list, also adding source-ing of associazted
68 # $1 : destination file
69 # $2 : name for the entries family (eg. Architecture, kernel...)
70 # $3 : prefix for the choice entries (eg. ARCH, KERNEL...)
71 # $4 : base directory containing config files
72 # $5 : list of config entries (eg. for architectures: "alpha arm ia64"...,
73 # and for kernels: "bare-metal linux"...)
74 # Example to build the kernels generated config file:
75 # $(call build_gen_choice_in,config.gen/kernel.in,Target OS,KERNEL,config/kernel,$(KERNELS))
76 define build_gen_choice_in
78 $(SILENT)(echo "# $(2) menu"; \
79 echo "# Generated file, do not edit!!!"; \
83 echo " prompt \"$(2)\""; \
85 for entry in $(5); do \
86 file="$(4)/$${entry}.in"; \
87 _entry=$$(echo "$${entry}" |$(sed) -r -s -e 's/[-.+]/_/g;'); \
88 echo "config $(3)_$${_entry}"; \
90 printf " prompt \"$${entry}"; \
91 if $(grep) -E '^# +EXPERIMENTAL$$' $${file} >/dev/null 2>&1; then \
92 echo " (EXPERIMENTAL)\""; \
93 echo " depends on EXPERIMENTAL"; \
100 for entry in $(5); do \
101 file="$(4)/$${entry}.in"; \
102 _entry=$$(echo "$${entry}" |$(sed) -r -s -e 's/[-.+]/_/g;'); \
104 echo "if $(3)_$${_entry}"; \
105 echo "config $(3)"; \
106 echo " default \"$${entry}\" if $(3)_$${_entry}"; \
107 echo "source $${file}"; \
111 for file in $(wildcard $(4)/*.in-common); do \
112 echo "source $${file}"; \
117 # The function 'build_gen_menu_in' builds a menuconfig for each component in
118 # the given list, source-ing the associated files conditionnaly:
119 # $1 : destination file
120 # $2 : name of entries family (eg. Tools, Debug...)
121 # $3 : prefix for the menu entries (eg. TOOL, DEBUG)
122 # $4 : base directory containing config files
123 # $5 : list of config entries (eg. for tools: "libelf sstrip"..., and for
124 # debug: "dmalloc duma gdb"...)
125 # Example to build the tools generated config file:
126 # $(call build_gen_menu_in,config.gen/tools.in,Tools,TOOL,config/tools,$(TOOLS))
127 define build_gen_menu_in
129 $(SILENT)(echo "# $(2) facilities menu"; \
130 echo "# Generated file, do not edit!!!"; \
132 for entry in $(5); do \
133 file="$(4)/$${entry}.in"; \
134 _entry=$$(echo "$${entry}" |$(sed) -r -s -e 's/[-.+]/_/g;'); \
135 echo "menuconfig $(3)_$${_entry}"; \
137 printf " prompt \"$${entry}"; \
138 if $(grep) -E '^# +EXPERIMENTAL$$' $${file} >/dev/null 2>&1; then \
139 echo " (EXPERIMENTAL)\""; \
140 echo " depends on EXPERIMENTAL"; \
144 echo "if $(3)_$${_entry}"; \
145 echo "source $${file}"; \
152 #-----------------------------------------------------------
153 # The rules for the generated config files
155 config.gen/arch.in: $(ARCH_CONFIG_FILES)
156 $(call build_gen_choice_in,$@,Target Architecture,ARCH,config/arch,$(ARCHS))
158 config.gen/kernel.in: $(KERNEL_CONFIG_FILES)
159 $(call build_gen_choice_in,$@,Target OS,KERNEL,config/kernel,$(KERNELS))
161 config.gen/cc.in: $(CC_CONFIG_FILES)
162 $(call build_gen_choice_in,$@,C compiler,CC,config/cc,$(CCS))
164 config.gen/libc.in: $(LIBC_CONFIG_FILES)
165 $(call build_gen_choice_in,$@,C library,LIBC,config/libc,$(LIBCS))
167 config.gen/tools.in: $(TOOL_CONFIG_FILES)
168 $(call build_gen_menu_in,$@,Tools,TOOL,config/tools,$(TOOLS))
170 config.gen/debug.in: $(DEBUG_CONFIG_FILES)
171 $(call build_gen_menu_in,$@,Debug,DEBUG,config/debug,$(DEBUGS))
173 #-----------------------------------------------------------
174 # Cleaning up the mess...
177 @$(ECHO) " CLEAN config"
178 $(SILENT)rm -f config 2>/dev/null || true
179 @$(ECHO) " CLEAN config.gen"
180 $(SILENT)rm -rf config.gen