提交 0b7f2555 编写于 作者: ZHJ0125's avatar ZHJ0125 🐢

Init CrossTool

上级 b0904647

要显示的变更太多。

To preserve performance only 1000 of 1000+ files are displayed.
Unless otherwise stated in individual files, this work is licensed to you under
the following terms.
- Files in docs/ are available under the Creative Commons Attribution, Share
Alike (by-sa), v2.5, to be found there:
licenses.d/by-sa/deed.en (human-readable summary)
licenses.d/by-sa/legalcode (legal code, the full license)
- Files found in patches/*/ are available under the same license as the
upstream software they apply to.
That means that you can't use those patches if you were licensed the
software under a specific license which is not the one the software is
commonly available under.
As an example, if you ever managed to get the Linux kernel under a license
other than the GPLv2, you are not allowed to use the Linux kernel patches
coming with crosstool-NG, as those are available under the GPLv2, which is
the license the Linux kernel is most commonly available under.
As a convenience, the GNU Lesser General Public License (LGPL) v2.1 (for the
patches against glibc, uClibc, and some other libraries) is available there:
licenses.d/lgpl.txt
- Other files not covered by the above licenses, and not covered by an
individual license specified in the file itself, or an accompanying file,
are available under the GNU General Public License (GPL), v2, to be found
here:
licenses.d/gpl.txt
- Also, I want to clarify one point. If you build a toolchain with crosstool-NG
and you happen to sell, deliver, or otherwise publish this toolchain to a
third party, I consider crosstool-NG as being part of the sources needed to
rebuild the afore-mentioned toolchain, alongside with all other source code
that third party is otherwise entitled to receive, due to other licenses of
the different components. See licenses.d/gpl.txt, section 3, which reads:
> For an executable work, complete source code means [...], plus the
> scripts used to control compilation and installation of the executable.
In short: crosstool-NG is the part refered to as "the scripts to control
compilation and installation of the executable", it being the toolchain in
our case; and as such you must make it available, in conformance to the
GPLv2, see above.
Also, if you have local patches that you apply to the different components
(either manualy, or by instructing crosstool-NG to do so), you will have to
make those patches available alongside with your toolchain, to comply with
the licenses of the components impacted by your patches.
COPYING
\ No newline at end of file
# Makefile.in for building crosstool-NG
# This file serves as source for the ./configure operation
# This series of test is here because GNU make 3.81 will *not* use MAKEFLAGS
# to set additional flags in the current Makfile ( see:
# http://savannah.gnu.org/bugs/?20501 ), although the make manual says it
# should ( see: http://www.gnu.org/software/make/manual/make.html#Options_002fRecursion )
# so we have to work it around by calling ourselves back if needed
# So why do we need not to use the built rules and variables? Because we
# need to generate scripts/crosstool-NG.sh from scripts/crosstool-NG.sh.in
# and there is a built-in implicit rule '%.sh:' that has neither a pre-requisite
# nor a command associated, and that built-in implicit rule takes precedence
# over our non-built-in implicit rule '%: %.in', below.
# CT_MAKEFLAGS will be used later, below...
# Do not print directories as we descend into them
ifeq ($(filter --no-print-directory,$(MAKEFLAGS)),)
CT_MAKEFLAGS += --no-print-directory
endif
# Use neither builtin rules, nor builtin variables
# Note: dual test, because if -R and -r are given on the command line
# (who knows?), MAKEFLAGS contains 'Rr' instead of '-Rr', while adding
# '-Rr' to MAKEFLAGS adds it literaly ( and does not add 'Rr' )
ifeq ($(filter Rr,$(MAKEFLAGS)),)
ifeq ($(filter -Rr,$(MAKEFLAGS)),)
CT_MAKEFLAGS += -Rr
endif # No -Rr
endif # No Rr
# Remove any suffix rules
.SUFFIXES:
all: Makefile build
###############################################################################
# Configuration variables
# Stuff found by ./configure
export DATE := @DATE@
export LOCAL := @enable_local@
export PROG_SED := @program_transform_name@
export PACKAGE_TARNAME := @PACKAGE_TARNAME@
export VERSION := @PACKAGE_VERSION@
export prefix := @prefix@
export exec_prefix := @exec_prefix@
export bindir := @bindir@
export libdir := @libdir@@sublibdir@
export docdir := @docdir@@subdocdir@
export mandir := @mandir@
export datarootdir := @datarootdir@
export install := @INSTALL@
export bash := @_BASH@
export awk := @_AWK@
export grep := @GREP@
export make := @MAKE@
export sed := @SED@
export libtool := @LIBTOOL@
export libtoolize := @LIBTOOLIZE@
export objcopy := @OBJCOPY@
export objdump := @OBJDUMP@
export readelf := @READELF@
export patch := @PATCH@
export CC := @CC@
export CPP := @CPP@
export CPPFLAGS := @CPPFLAGS@
export CFLAGS := @CFLAGS@
export LDFLAGS := @LDFLAGS@
export LIBS := @LIBS@
export curses_hdr := @ac_ct_curses_hdr@
export gettext := @gettext@
# config options to push down to kconfig
KCONFIG:= @kconfig_options@
###############################################################################
# Non-configure variables
MAN_SECTION := 1
MAN_SUBDIR := /man$(MAN_SECTION)
PROG_NAME := $(shell echo 'ct-ng' |$(sed) -r -e '$(PROG_SED)' )
###############################################################################
# Sanity checks
# Check if Makefile is up to date:
Makefile: Makefile.in
@echo "$< did changed: you must re-run './configure'"
@false
# If installing with DESTDIR, check it's an absolute path
ifneq ($(strip $(DESTDIR)),)
ifneq ($(DESTDIR),$(abspath /$(DESTDIR)))
$(error DESTDIR is not an absolute PATH: '$(DESTDIR)')
endif
endif
###############################################################################
# Global make rules
# If any extra MAKEFLAGS were added, re-run ourselves
# See top of file for an explanation of why this is needed...
ifneq ($(strip $(CT_MAKEFLAGS)),)
# Somehow, the new auto-completion for make in the recent distributions
# trigger a behavior where our Makefile calls itself recursively, in a
# never-ending loop (except on lack of ressources, swap, PIDs...)
# Avoid this situation by cutting the recursion short at the first
# level.
# This has the side effect of only showing the real targets, and hiding our
# internal ones. :-)
ifneq ($(MAKELEVEL),0)
$(error Recursion detected, bailing out...)
endif
MAKEFLAGS += $(CT_MAKEFLAGS)
build install clean distclean mrproper uninstall:
@$(MAKE) $@
else
# There were no additional MAKEFLAGS to add, do the job
TARGETS := bin lib lib-kconfig doc man
build: $(patsubst %,build-%,$(TARGETS))
install: build real-install
clean: $(patsubst %,clean-%,$(TARGETS))
distclean: clean
@echo " RM 'Makefile'"
@rm -f Makefile
mrproper: distclean
@echo " RM 'autostuff'"
@ rm -rf autom4te.cache config.log config.status configure
uninstall: real-uninstall
###############################################################################
# Specific make rules
#--------------------------------------
# Build rules
build-bin: $(PROG_NAME) \
scripts/crosstool-NG.sh \
scripts/saveSample.sh \
scripts/showTuple.sh
@chmod 755 $^
build-lib: config/configure.in \
paths.mk \
paths.sh
build-lib-kconfig:
@$(MAKE) -C kconfig
build-doc:
build-man: docs/$(PROG_NAME).1.gz
docs/$(PROG_NAME).1.gz: docs/$(PROG_NAME).1
@echo " GZIP '$@'"
@gzip -c9 $< >$@
define sed_it
@echo " SED '$@'"
@$(sed) -r -e 's,@@CT_BINDIR@@,$(bindir),g;' \
-e 's,@@CT_LIBDIR@@,$(libdir),g;' \
-e 's,@@CT_DOCDIR@@,$(docdir),g;' \
-e 's,@@CT_MANDIR@@,$(mandir),g;' \
-e 's,@@CT_PROG_NAME@@,$(PROG_NAME),g;' \
-e 's,@@CT_VERSION@@,$(VERSION),g;' \
-e 's,@@CT_DATE@@,$(DATE),g;' \
-e 's,@@CT_make@@,$(make),g;' \
-e 's,@@CT_bash@@,$(bash),g;' \
-e 's,@@CT_awk@@,$(awk),g;' \
$< >$@
endef
docs/$(PROG_NAME).1: docs/ct-ng.1.in Makefile
$(call sed_it)
$(PROG_NAME): ct-ng.in Makefile
$(call sed_it)
%: %.in Makefile
$(call sed_it)
# We create a script fragment that is parseable from inside a Makefile,
# and one from inside a shell script
paths.mk: FORCE
@echo " GEN '$@'"
@(echo 'export install=$(install)'; \
echo 'export bash=$(bash)'; \
echo 'export awk=$(awk)'; \
echo 'export grep=$(grep)'; \
echo 'export make=$(make)'; \
echo 'export sed=$(sed)'; \
echo 'export libtool=$(libtool)'; \
echo 'export libtoolize=$(libtoolize)'; \
echo 'export objcopy=$(objcopy)'; \
echo 'export objdump=$(objdump)'; \
echo 'export readelf=$(readelf)'; \
echo 'export patch=$(patch)'; \
) >$@
paths.sh: FORCE
@echo " GEN '$@'"
@(echo 'export install="$(install)"'; \
echo 'export bash="$(bash)"'; \
echo 'export awk="$(awk)"'; \
echo 'export grep="$(grep)"'; \
echo 'export make="$(make)"'; \
echo 'export sed="$(sed)"'; \
echo 'export libtool="$(libtool)"'; \
echo 'export libtoolize="$(libtoolize)"'; \
echo 'export objcopy="$(objcopy)"'; \
echo 'export objdump="$(objdump)"'; \
echo 'export readelf="$(readelf)"'; \
echo 'export patch="$(patch)"'; \
) >$@
config/configure.in: FORCE
@echo " GEN '$@'"
@{ printf "# Generated file, do not edit\n"; \
printf "# Default values as found by ./configure\n"; \
for var in $(KCONFIG); do \
printf "\n"; \
printf "config CONFIGURE_$${var%%=*}\n"; \
if [ "$${var#*=}" = "y" ]; then \
printf " def_bool y\n"; \
else \
printf " bool\n"; \
fi; \
done; \
} >$@
FORCE:
#--------------------------------------
# Clean rules
clean-bin:
@echo " RM '$(PROG_NAME)'"
@rm -f $(PROG_NAME)
@echo " RM 'scripts/crosstool-NG.sh'"
@rm -f scripts/crosstool-NG.sh
@echo " RM 'scripts/saveSample.sh'"
@rm -f scripts/saveSample.sh
@echo " RM 'scripts/showTuple.sh'"
@rm -f scripts/showTuple.sh
clean-lib:
@echo " RM 'paths'"
@rm -f paths.mk paths.sh
@echo " RM 'config/configure.in'"
@rm -f config/configure.in
clean-lib-kconfig:
@$(MAKE) -C kconfig clean
clean-doc:
clean-man:
@echo " RM 'docs/$(PROG_NAME).1'"
@rm -f docs/$(PROG_NAME).1
@echo " RM 'docs/$(PROG_NAME).1.gz'"
@rm -f docs/$(PROG_NAME).1.gz
#--------------------------------------
# Check for --local setup
ifeq ($(strip $(LOCAL)),yes)
real-install:
@true
real-uninstall:
@true
else
#--------------------------------------
# Install rules
real-install: $(patsubst %,install-%,$(TARGETS)) install-post
install-bin: $(DESTDIR)$(bindir)
@echo " INST '$(PROG_NAME)'"
@$(install) -m 755 $(PROG_NAME) "$(DESTDIR)$(bindir)/$(PROG_NAME)"
# If one is hacking crosstool-NG, the patch set might change between any two
# installations of the same VERSION, thus the patches must be removed prior
# to being installed. It is simpler to remove the whole lib/ directory, as it
# is the goal of the install-lib rule to install the lib/ directory...
install-lib: uninstall-lib \
$(DESTDIR)$(libdir) \
install-lib-main \
install-lib-samples
LIB_SUB_DIR := config contrib patches scripts
$(patsubst %,install-lib-%-copy,$(LIB_SUB_DIR)): $(DESTDIR)$(libdir)
@echo " INSTDIR '$(patsubst install-lib-%-copy,%,$(@))/'"
@tar cf - --exclude='*.sh.in' $(patsubst install-lib-%-copy,%,$(@)) \
|(cd "$(DESTDIR)$(libdir)"; tar xf -)
# Huh? It seems we need at least one command to make this rule kick-in.
install-lib-%: install-lib-%-copy; @true
# Huh? that one does not inherit the -opy dependency, above...
install-lib-scripts: install-lib-scripts-copy
@chmod a+x $(DESTDIR)$(libdir)/scripts/crosstool-NG.sh
@chmod a+x $(DESTDIR)$(libdir)/scripts/saveSample.sh
@rm -f "$(DESTDIR)$(libdir)/scripts/addToolVersion.sh"
install-lib-main: $(DESTDIR)$(libdir) $(patsubst %,install-lib-%,$(LIB_SUB_DIR))
@echo " INST 'steps.mk'"
@$(install) -m 644 steps.mk "$(DESTDIR)$(libdir)/steps.mk"
@echo " INST 'paths'"
@$(install) -m 644 paths.mk paths.sh "$(DESTDIR)$(libdir)"
# Samples need a little love:
# - change every occurrence of CT_TOP_DIR to CT_LIB_DIR
install-lib-samples: $(DESTDIR)$(libdir) install-lib-main
@echo " INSTDIR 'samples/'"
@for samp_dir in samples/*/; do \
mkdir -p "$(DESTDIR)$(libdir)/$${samp_dir}"; \
$(sed) -r -e 's:\$$\{CT_TOP_DIR\}:\$$\{CT_LIB_DIR\}:;' \
-e 's:^(CT_WORK_DIR)=.*:\1="\$${CT_TOP_DIR}/.build":;' \
$${samp_dir}/crosstool.config \
>"$(DESTDIR)$(libdir)/$${samp_dir}/crosstool.config"; \
$(install) -m 644 "$${samp_dir}/reported.by" \
"$(DESTDIR)$(libdir)/$${samp_dir}"; \
for libc_cfg in "$${samp_dir}/"*libc*.config; do \
[ -f "$${libc_cfg}" ] || continue; \
$(install) -m 644 "$${libc_cfg}" \
"$(DESTDIR)$(libdir)/$${samp_dir}"; \
done; \
done
@$(install) -m 644 samples/samples.mk "$(DESTDIR)$(libdir)/samples/samples.mk"
KCONFIG_FILES := conf mconf nconf kconfig.mk
install-lib-kconfig: $(DESTDIR)$(libdir) install-lib-main
@echo " INST 'kconfig/'"
@mkdir -p "$(DESTDIR)$(libdir)/kconfig"
@for f in $(KCONFIG_FILES); do \
install "kconfig/$${f}" "$(DESTDIR)$(libdir)/kconfig/$${f}"; \
done
install-doc: $(DESTDIR)$(docdir)
@echo " INST 'docs/*.txt'"
@for doc_file in docs/*.txt; do \
$(install) -m 644 "$${doc_file}" "$(DESTDIR)$(docdir)"; \
done
install-man: $(DESTDIR)$(mandir)$(MAN_SUBDIR)
@echo " INST '$(PROG_NAME).1.gz'"
@$(install) -m 644 docs/$(PROG_NAME).1.gz "$(DESTDIR)$(mandir)$(MAN_SUBDIR)"
$(sort $(DESTDIR)$(bindir) $(DESTDIR)$(libdir) $(DESTDIR)$(docdir) $(DESTDIR)$(mandir)$(MAN_SUBDIR)):
@echo " MKDIR '$@/'"
@$(install) -m 755 -d "$@"
install-post:
@echo
@echo "For auto-completion, do not forget to install '$(PROG_NAME).comp' into"
@echo "your bash completion directory (usually /etc/bash_completion.d)"
#--------------------------------------
# Uninstall rules
real-uninstall: $(patsubst %,uninstall-%,$(TARGETS))
uninstall-bin:
@echo " RM '$(DESTDIR)$(bindir)/$(PROG_NAME)'"
@rm -f "$(DESTDIR)$(bindir)/$(PROG_NAME)"
uninstall-lib:
@echo " RMDIR '$(DESTDIR)$(libdir)/'"
@rm -rf "$(DESTDIR)$(libdir)"
uninstall-doc:
@echo " RMDIR '$(DESTDIR)$(docdir)/'"
@rm -rf "$(DESTDIR)$(docdir)"
uninstall-man:
@echo " RM '$(DESTDIR)$(mandir)$(MAN_SUBDIR)/$(PROG_NAME).1.gz'"
@rm -f "$(DESTDIR)$(mandir)$(MAN_SUBDIR)/$(PROG_NAME).1"{,.gz}
endif # Not --local
endif # No extra MAKEFLAGS were added
.PHONY: build $(patsubst %,build-%,$(TARGETS)) install
This is the README for crosstool-NG
Crosstool-NG follows the autoconf dance. So, to get you
kick-started, just run:
./configure --help
If you are using a development snapshot, you'll have to
create the configure script, first. Just run:
./bootstrap
You will find the documentation in the directory 'docs'.
Here is a quick overview of what you'll find there:
0 - Table of content
1 - Introduction
2 - Installing crosstool-NG
3 - Configuring a toolchain
4 - Building the toolchain
5 - Using the toolchain
6 - Toolchain types
7 - Contributing
8 - Internals
A - Credits
B - Known issues
C - Misc. tutorials
You can also point your browser at:
http://crosstool-ng.org/
Aloha!
This is a somewhat ordered TODO list:
Recurring tasks:
- update versions for every tools...
- update and/or upgrade all samples
Non-recurring tasks:
- update newlib (for enhanced bare metal)
- confirm existing implementation on targets other than AVR32
- try to make it generic, will help for uClibc++
- multilib
- Cygwin target (needs newlib)
- so we can build toolchains that generate code for Windows/Cygwin
- Cygwin host
- so we can build toolchains that run natively under Windows/Cygwin
- mingw32 target
- so we can build toolchains that generate code for Windows/Win32
- mingw32 host
- so we can build toolchains that run natively under Windows/Win32
(without requiring Cygwin)
- uClibc++
- see newlib, above
- uClinux
- check whether we can use newlib under uClinux (?)
#!/bin/sh
set -e
printf "Running autoconf...\n"
autoconf -Wall --force
printf "Done. You may now run:\n ./configure\n"
# Alpha specific configuration file
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
##
## help The Alpha architecture.
# Alpha specific configuration file
choice
bool
prompt "Variant"
config ARCH_ALPHA_EV4
bool
prompt "EV4"
config ARCH_ALPHA_EV45
bool
prompt "EV45"
config ARCH_ALPHA_EV5
bool
prompt "EV5"
config ARCH_ALPHA_EV56
bool
prompt "EV56"
config ARCH_ALPHA_EV6
bool
prompt "EV6"
config ARCH_ALPHA_EV67
bool
prompt "EV67"
endchoice
config ARCH_ALPHA_VARIANT
string
default "ev4" if ARCH_ALPHA_EV4
default "ev45" if ARCH_ALPHA_EV45
default "ev5" if ARCH_ALPHA_EV5
default "ev56" if ARCH_ALPHA_EV56
default "ev6" if ARCH_ALPHA_EV6
default "ev67" if ARCH_ALPHA_EV67
config ARCH_CPU
default "ev4" if ARCH_ALPHA_EV4
default "ev45" if ARCH_ALPHA_EV45
default "ev5" if ARCH_ALPHA_EV5
default "ev56" if ARCH_ALPHA_EV56
default "ev6" if ARCH_ALPHA_EV6
default "ev67" if ARCH_ALPHA_EV67
config ARCH_TUNE
default "ev4" if ARCH_ALPHA_EV4
default "ev45" if ARCH_ALPHA_EV45
default "ev5" if ARCH_ALPHA_EV5
default "ev56" if ARCH_ALPHA_EV56
default "ev6" if ARCH_ALPHA_EV6
default "ev67" if ARCH_ALPHA_EV67
# ARM specific configuration file
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
## select ARCH_SUPPORTS_BOTH_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
## select ARCH_SUPPORTS_WITH_FPU
## select ARCH_SUPPORTS_SOFTFP
##
## help The ARM architecture, as defined by:
## help http://www.arm.com/
# ARM specific configuration file
config ARCH_ARM_MODE
string
default "arm" if ARCH_ARM_MODE_ARM
default "thumb" if ARCH_ARM_MODE_THUMB
choice
bool
prompt "Default instruction set mode"
default ARCH_ARM_MODE_ARM
config ARCH_ARM_MODE_ARM
bool
prompt "arm"
help
Defaults to emitting instructions in the ARM mode.
config ARCH_ARM_MODE_THUMB
bool
prompt "thumb (EXPERIMENTAL)"
depends on EXPERIMENTAL
help
Defaults to emitting instructions in the THUMB mode.
endchoice
config ARCH_ARM_INTERWORKING
bool
prompt "Use Thumb-interworking (READ HELP)"
depends on EXPERIMENTAL
help
Excerpt from the gcc manual:
> Generate code which supports calling between the ARM and Thumb
> instruction sets. Without this option the two instruction sets
> cannot be reliably used inside one program. The default is
> [not to use interwork], since slightly larger code is generated
> when [interwork] is specified.
config ARCH_ARM_EABI
bool
prompt "Use EABI"
default y
help
Set up the toolchain so that it generates EABI-compliant binaries.
config ARCH_ARM_ABI_OK
bool
default y
depends on ! ARCH_ARM_EABI
select ARCH_SUPPORTS_WITH_ABI
# AVR32 specific configuration file
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FPU
##
## help The AVR32 architecture, as defined by:
## help http://www.atmel.com/products/avr32
# Blackfin specific configuration file
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FPU
##
## help The Blackfin architecture
# m68k specific configuration file
## depends on EXPERIMENTAL
##
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_WITH_CPU
##
## help The m68k architecture
# MicroBlaze specific config options
## depends on EXPERIMENTAL
##
## select ARCH_SUPPORT_ARCH
## select ARCH_FLOAT_SW
## select ARCH_SUPPORTS_BOTH_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
##
## help The MicroBlaze architecture, as defined by:
## help http://www.xilinx.com/
## help
## help Upstream projects do not currently provide
## help full support for the microblaze architecture
## help and as such, this is marked as EXPERIMENTAL
## help for CT-NG.
## help
## help Support is being added for a modern gcc,
## help binutils and gdb along with nptl threading
## help in eglibc for microblaze.
# MIPS specific config options
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64 if EXPERIMENTAL
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_BOTH_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
##
## help The MIPS architecture, as defined by:
## help http://www.mips.com/
# MIPS specific config options
choice
bool
prompt "ABI"
config ARCH_mips_o32
bool
prompt "o32"
depends on ARCH_32
help
This is the -mabi=32 gcc option.
config ARCH_mips_n32
bool
prompt "n32"
depends on ARCH_64
help
This is the -mabi=n32 gcc option.
config ARCH_mips_n64
bool
prompt "n64"
depends on ARCH_64
help
This is the -mabi=64 gcc option.
# Not supported on Linux:
# o64 : seems related to *BSD
# eabi : seems related to bare-metal
endchoice
config ARCH_mips_ABI
string
default "32" if ARCH_mips_o32
default "n32" if ARCH_mips_n32
default "64" if ARCH_mips_n64
# powerpc specific configuration file
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64 if EXPERIMENTAL
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_ABI
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
##
## help The PowerPC architecture, as defined by:
## help http://www.ibm.com/developerworks/eserver/articles/archguide.html
# powerpc specific configuration file
config ARCH_powerpc_ABI
string
default "" if ARCH_powerpc_ABI_DEFAULT
default "eabi" if ARCH_powerpc_ABI_EABI
default "spe" if ARCH_powerpc_ABI_SPE
choice
bool
prompt "ABI"
default ARCH_powerpc_ABI_DEFAULT
config ARCH_powerpc_ABI_DEFAULT
bool
prompt "default"
help
The default ABI (System V.4).
config ARCH_powerpc_ABI_EABI
bool
prompt "EABI"
depends on BARE_METAL
help
The Embedded ABI (stack alignment of 8 bytes, etc).
config ARCH_powerpc_ABI_SPE
bool
prompt "SPE"
help
Add support for the Signal Processing Engine. This will set up
the toolchain so that it supports the SPE ABI extensions. This
mainly targets Freescale e500 processors.
Setting this option will append "spe" to the end of your target
tuple name (e.g., powerpc-e500v2-linux-gnuspe) so that the gcc
configure/build system will know to include SPE ABI support. It
will also automatically add "-mabi=spe -mspe" to your TARGET_CFLAGS,
and "--enable-e500_double" to your CC_EXTRA_CONFIG_ARRAY, so you
do not need to explicitly add them.
endchoice
# s390 specific config options
## depends on EXPERIMENTAL
##
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_FPU
##
## help Defined by IBM in:
## help 32-bit ESA/390 : http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/dz9ar008/CCONTENTS
## help 64-bit z/Architecure : http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/dz9zr002/CCONTENTS
# Super-H specific configuration file
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_BOTH_ENDIAN
## select ARCH_DEFAULT_LE
##
## help The Super-H architecture, as defined by:
## help http://www.renesas.com/fmwk.jsp?cnt=superh_family_landing.jsp&fp=/products/mpumcu/superh_family/
# Super-H specific configuration file
choice
bool
prompt "Variant"
config ARCH_SH_SH3
bool
prompt "sh3"
config ARCH_SH_SH4
bool
prompt "sh4"
config ARCH_SH_SH4A
bool
prompt "sh4a"
endchoice
config ARCH_SH_VARIANT
string
default "sh3" if ARCH_SH_SH3
default "sh4" if ARCH_SH_SH4
default "sh4a" if ARCH_SH_SH4A
# SPARC specific config options
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
##
## help The SUN SPARC architecture, as defined by:
## help 32 bit: http://www.sparc.org/standards/V8.pdf
## help 64 bit: http://www.sparc.org/standards/SPARCV9.pdf
# x86 specific options
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
##
## help The x86 architecture, as defined by:
## help 32-bit (ia32) : http://www.intel.com/
## help 64-bit (amd64): http://www.amd.com/us-en/Processors/DevelopWithAMD/0,,30_2252_875_7044,00.html
# Options specific to crosstool-NG acting as a backend
config IS_A_BACKEND
string
option env="CT_IS_A_BACKEND"
config BACKEND
bool
default y if IS_A_BACKEND = "y" || IS_A_BACKEND = "Y"
config BACKEND_ARCH
string
option env="CT_BACKEND_ARCH"
config BACKEND_KERNEL
string
option env="CT_BACKEND_KERNEL"
config BACKEND_LIBC
string
option env="CT_BACKEND_LIBC"
# Binary utilities menu
menu "Binary utilities"
choice
bool
prompt "Binary format:"
if ARCH_USE_MMU || BARE_METAL
config ARCH_BINFMT_ELF
bool
prompt "ELF"
help
This will make your system build ELF executables,
suitable for architectures with an MMU.
endif # ARCH_USE_MMU
if ! ARCH_USE_MMU
config ARCH_BINFMT_FLAT
bool
prompt "Flat"
help
This will build flat binaries, suitable for
MMU-less architectures.
config ARCH_BINFMT_FDPIC
bool
prompt "FD_PIC ELF"
help
This will build FD_PIC ELF binaries, suitable for
MMU-less architectures that still require to use
shared libraries (FIXME).
endif # ! ARCH_USE_MMU
endchoice
source "config/binutils/binutils.in"
source "config/binutils/elf2flt.in"
source "config/binutils/sstrip.in"
endmenu
# binutils options
comment "GNU binutils"
choice
bool
prompt "binutils version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config BINUTILS_V_2_22
bool
prompt "2.22 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select BINUTILS_2_22_or_later
config BINUTILS_V_2_21_53
bool
prompt "2.21.53 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select BINUTILS_2_21_or_later
config BINUTILS_V_2_21_1a
bool
prompt "2.21.1a"
select BINUTILS_2_21_or_later
config BINUTILS_V_2_20_1a
bool
prompt "2.20.1a"
select BINUTILS_2_20_or_later
config BINUTILS_V_2_19_1a
bool
prompt "2.19.1a"
select BINUTILS_2_19_or_later
config BINUTILS_V_2_18a
bool
prompt "2.18a"
select BINUTILS_2_18_or_later
config BINUTILS_V_2_17a
bool
prompt "2.17a (OBSOLETE)"
depends on OBSOLETE
config BINUTILS_V_2_16_1a
bool
prompt "2.16.1a (OBSOLETE)"
depends on OBSOLETE
config BINUTILS_CUSTOM
bool
prompt "Custom binutils"
depends on EXPERIMENTAL
select BINUTILS_2_22_or_later
endchoice
if BINUTILS_CUSTOM
config BINUTILS_CUSTOM_LOCATION
string
prompt "Full path to custom binutils source"
default ""
help
Enter the path to the directory (or tarball) of your source for binutils,
or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/binutils
endif # BINUTILS_CUSTOM
config BINUTILS_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2.22" if BINUTILS_V_2_22
default "2.21.53" if BINUTILS_V_2_21_53
default "2.21.1a" if BINUTILS_V_2_21_1a
default "2.20.1a" if BINUTILS_V_2_20_1a
default "2.19.1a" if BINUTILS_V_2_19_1a
default "2.18a" if BINUTILS_V_2_18a
default "2.17a" if BINUTILS_V_2_17a
default "2.16.1a" if BINUTILS_V_2_16_1a
default "custom" if BINUTILS_CUSTOM
config BINUTILS_2_22_or_later
bool
select BINUTILS_2_21_or_later
select BINUTILS_HAS_GOLD
select BINUTILS_HAS_PLUGINS
config BINUTILS_2_21_or_later
bool
select BINUTILS_2_20_or_later
select BINUTILS_HAS_GOLD
select BINUTILS_HAS_PLUGINS
config BINUTILS_2_20_or_later
bool
select BINUTILS_2_19_or_later
config BINUTILS_2_19_or_later
bool
select BINUTILS_2_18_or_later
config BINUTILS_2_18_or_later
bool
select BINUTILS_HAS_PKGVERSION_BUGURL
select BINUTILS_HAS_HASH_STYLE
config BINUTILS_HAS_HASH_STYLE
bool
config BINUTILS_HAS_GOLD
bool
config BINUTILS_GOLD_SUPPORTS_ARCH
bool
config BINUTILS_HAS_PLUGINS
bool
config BINUTILS_HAS_PKGVERSION_BUGURL
bool
# Only these architectures have support in gold
config ARCH_arm
select BINUTILS_GOLD_SUPPORTS_ARCH
config ARCH_x86
select BINUTILS_GOLD_SUPPORTS_ARCH
# Force using the BFD linker if needed
# This is the case for some C libraries (eg. glibc and
# eglibc at least) and affected components can select this
config BINUTILS_FORCE_LD_BFD
bool
choice
bool
prompt "Linkers to enable"
config BINUTILS_LINKER_LD
bool
prompt "ld"
help
The historical, bfd linker.
config BINUTILS_LINKER_GOLD
bool
prompt "gold"
depends on BINUTILS_HAS_GOLD
depends on BINUTILS_GOLD_SUPPORTS_ARCH
depends on ! BINUTILS_FORCE_LD_BFD
depends on EXPERIMENTAL
select BINUTILS_GOLD_INSTALLED
help
gold is a new, optimised, multi-threaded linker with support
for plugins. Designed to be a drop-in replacement for the
original linker, ld, it can be much faster, with a 5:1 or
bigger ratio being not uncommon, YMMV.
config BINUTILS_LINKER_LD_GOLD
bool
prompt "ld, gold"
depends on BINUTILS_HAS_GOLD
depends on BINUTILS_GOLD_SUPPORTS_ARCH
depends on EXPERIMENTAL
select BINUTILS_GOLD_INSTALLED
select BINUTILS_LINKER_BOTH
help
Both the historical ld and the new gold linkers will be
installed, with ld being the default linker used.
See help for gold, above.
config BINUTILS_LINKER_GOLD_LD
bool
prompt "gold, ld"
depends on BINUTILS_HAS_GOLD
depends on BINUTILS_GOLD_SUPPORTS_ARCH
depends on EXPERIMENTAL
select BINUTILS_GOLD_INSTALLED
select BINUTILS_LINKER_BOTH
select BINUTILS_LD_WRAPPER if BINUTILS_FORCE_LD_BFD
help
Both the historical ld and the new gold linkers will be
installed, with gold being the default linker used.
See help for gold, above.
endchoice # Enable linkers
if BINUTILS_LINKER_GOLD
comment "WARNING! gold is not capable of"
comment "| building glibc/eglibc!"
endif # BINUTILS_LINKER_GOLD
config BINUTILS_GOLD_INSTALLED
bool
config BINUTILS_GOLD_THREADS
bool
prompt "| Enable threaded gold"
depends on BINUTILS_GOLD_INSTALLED
help
When configured with threads, gold can link in parallel,
possibly cooperating with a make jobserver.
config BINUTILS_LINKER_BOTH
bool
config BINUTILS_LINKERS_LIST
string
default "ld" if BINUTILS_LINKER_LD
default "gold" if BINUTILS_LINKER_GOLD
default "ld,gold" if BINUTILS_LINKER_LD_GOLD
default "gold,ld" if BINUTILS_LINKER_GOLD_LD
config BINUTILS_LD_WRAPPER
bool
prompt "| Add ld wrapper"
depends on BINUTILS_LINKER_BOTH
help
Add an ld wrapper that calls to either gold or ld.
By default, the wrapper will call to the default wrapper,
but if you set the environment variable CTNG_LD_IS, you
can change which linker will get called:
CTNG_LD_IS=gold will unconditionally call the gold linker
CTNG_LD_IS=bfd will unconditionally call the old bfd ld linker
config BINUTILS_LINKER_DEFAULT
string
default "bfd" if BINUTILS_LINKER_LD || BINUTILS_LINKER_LD_GOLD
default "gold" if BINUTILS_LINKER_GOLD || BINUTILS_LINKER_GOLD_LD
config BINUTILS_PLUGINS
bool
prompt "Enable support for plugins"
depends on BINUTILS_HAS_PLUGINS
depends on ! STATIC_TOOLCHAIN
help
binutils can be extended through the use of plugins.
Especially, gold can use the lto-plugin, as installed
by gcc, to handle LTO.
config BINUTILS_EXTRA_CONFIG_ARRAY
string
prompt "binutils extra config"
default ""
help
Extra flags passed onto ./configure when configuring
You can enter multiple arguments here, and arguments can contain spaces
if they are properly quoted (or escaped, but prefer quotes). Eg.:
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
config BINUTILS_FOR_TARGET
bool
prompt "binutils libraries for the target"
depends on ! BARE_METAL
depends on ! BACKEND
help
Some utilities may need binutils libraries to be available on
the target, eg. oprofile.
if BINUTILS_FOR_TARGET
config BINUTILS_FOR_TARGET_IBERTY
bool
prompt "libiberty"
default y
config BINUTILS_FOR_TARGET_BFD
bool
prompt "libbfd"
default y
endif # BINUTILS_FOR_TARGET
# elf2flt options
if ARCH_BINFMT_FLAT
comment "elf2flt"
choice
bool
prompt "elf2flt version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config ELF2FLT_CVSHEAD
bool
prompt "CVS Head"
help
Grab the latest version of elf2flt from the CVS repository
config ELF2FLT_CVS_SNAPSHOT
bool
prompt "CVS Snapshot"
config ELF2FLT_CUSTOM
bool
prompt "Custom elf2flt"
depends on EXPERIMENTAL
endchoice
if ELF2FLT_CUSTOM
config ELF2FLT_CUSTOM_LOCATION
string
prompt "Full path to custom elf2flt source"
default ""
help
Enter the path to the directory (or tarball) of your source for elf2flt,
or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/elf2flt
endif # ELF2FLT_CUSTOM
if ! ELF2FLT_CUSTOM
config ELF2FLT_CVS_SNAPSHOT_SPEC
string
depends on ELF2FLT_CVS_SNAPSHOT
default ""
prompt "CVS refspec for elf2flt"
help
What you enter here will be passed verbatim to the cvs checkout command
so be careful!
endif # ! ELF2FLT_CUSTOM
config ELF2FLT_VERSION
string
default "cvs" if ELF2FLT_CVSHEAD
default "custom" if ELF2FLT_CUSTOM
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
config ELF2FLT_EXTRA_CONFIG_ARRAY
string
prompt "elf2flt extra config"
default ""
help
Extra flags passed onto ./configure when configuring
You can enter multiple arguments here, and arguments can contain spaces
if they are properly quoted (or escaped, but prefer quotes). Eg.:
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
endif
# Configuration file for sstrip tool facility
if OBSOLETE && ! BACKEND && ARCH_BINFMT_ELF
comment "sstrip"
config SSTRIP
bool
prompt "sstrip (OBSOLETE)"
help
The sstrip utility, to maximise the striping of ELF binaries
(executables and libraries).
Buildroot version, forked off the original from ELFkickers.
This one is somewhat maintained by the buildroot guys.
Supports big-endian systems.
NOTE! Please read.
sstrip is now deprecated in crosstool-NG, as it has a few
shortcomings. For example: it breaks for PPC targets, it
does not build on non-ELF hosts (eg. mingw32, MacOS-X...).
endif
# Compiler options
menu "C compiler"
config CC
string
config CC_VERSION
string
source "config.gen/cc.in"
config CC_SUPPORT_CXX
bool
config CC_SUPPORT_FORTRAN
bool
config CC_SUPPORT_JAVA
bool
config CC_SUPPORT_ADA
bool
config CC_SUPPORT_OBJC
bool
config CC_SUPPORT_OBJCXX
bool
comment "Additional supported languages:"
config CC_LANG_CXX
bool
prompt "C++"
depends on CC_SUPPORT_CXX
help
Enable building a C++ compiler.
Only select this if you know that your specific version of the
compiler supports this language.
if ! BARE_METAL
config CC_LANG_FORTRAN
bool
prompt "Fortran"
depends on CC_SUPPORT_FORTRAN
help
Enable building a FORTRAN compiler.
Only select this if you know that your specific version of the
compiler supports this language.
config CC_LANG_JAVA
bool
prompt "Java"
depends on CC_SUPPORT_JAVA
help
Enable building a Java compiler.
Only select this if you know that your specific version of the
compiler supports this language.
config CC_LANG_ADA
bool
prompt "ADA (EXPERIMENTAL)"
depends on CC_SUPPORT_ADA
depends on EXPERIMENTAL
help
Enable building an Ada compiler.
Only select this if you know that your specific version of the
compiler supports this language.
config CC_LANG_OBJC
bool
prompt "Objective-C (EXPERIMENTAL)"
depends on CC_SUPPORT_OBJC
depends on EXPERIMENTAL
help
Enable building an Objective C compiler.
Only select this if you know that your specific version of the
compiler supports this language.
config CC_LANG_OBJCXX
bool
prompt "Objective-C++ (EXPERIMENTAL)"
depends on EXPERIMENTAL
depends on CC_SUPPORT_OBJCXX
help
Enable building an Objective C++ compiler.
Only select this if you know that your specific version of the
compiler supports this language.
config CC_LANG_OTHERS
string
prompt "Other languages (EXPERIMENTAL)"
default ""
depends on EXPERIMENTAL
help
Enter here a comma-separated list of languages that you know your compiler
supports, besides those listed above.
Eg. gcc-4.1+ has a toy programming language, treelang. As it is not useful
in real life, it is not available in the selection above.
endif # ! BARE_METAL
source "config.gen/cc.in.2"
endmenu
# Compiler options
#
## select CC_SUPPORT_CXX
## select CC_SUPPORT_FORTRAN
## select CC_SUPPORT_JAVA
## select CC_SUPPORT_ADA
## select CC_SUPPORT_OBJC
## select CC_SUPPORT_OBJCXX
##
## help gcc is the full-blown GNU compiler. This is what most people will choose.
## help
## help gcc supports many languages, a powerful code parser, optimised binary
## help output, and lots of other features.
config CC_GCC_SHOW_LINARO
bool
prompt "Show Linaro versions (EXPERIMENTAL)"
depends on EXPERIMENTAL
help
Linaro is maintaining some advanced/more stable/experimental versions
of gcc, especially for the ARM architecture.
Those versions have not been blessed by the gcc comunity (nor have they
been cursed either!), but they look to be pretty much stable, and even
more stable than the upstream versions. YMMV...
If you do not know what this Linaro stuff is, then simply say 'n' here,
and rest in peace. OTOH, if you know what you are doing, you will be
able to use and enjoy :-) the Linaro versions by saying 'y' here.
Linaro: http://www.linaro.org/
choice
bool
prompt "gcc version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config CC_V_linaro_4_7_2012_10
bool
prompt "linaro-4.7-2012.10 (EXPERIMENTAL)"
depends on CC_GCC_SHOW_LINARO
select CC_GCC_4_7
config CC_V_4_7_2
bool
prompt "4.7.2"
select CC_GCC_4_7
config CC_V_4_7_1
bool
prompt "4.7.1 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select CC_GCC_4_7
config CC_V_4_7_0
bool
prompt "4.7.0 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select CC_GCC_4_7
config CC_V_linaro_4_6_2012_10
bool
prompt "linaro-4.6-2012.10 (EXPERIMENTAL)"
depends on CC_GCC_SHOW_LINARO
select CC_GCC_4_6
config CC_V_4_6_3
bool
prompt "4.6.3"
select CC_GCC_4_6
config CC_V_4_6_2
bool
prompt "4.6.2"
select CC_GCC_4_6
config CC_V_4_6_1
bool
prompt "4.6.1"
select CC_GCC_4_6
config CC_V_4_6_0
bool
prompt "4.6.0"
select CC_GCC_4_6
config CC_V_linaro_4_5_2012_03
bool
prompt "linaro-4.5-2012.03 (EXPERIMENTAL)"
depends on CC_GCC_SHOW_LINARO
select CC_GCC_4_5
config CC_V_4_5_3
bool
prompt "4.5.3"
select CC_GCC_4_5
config CC_V_4_5_2
bool
prompt "4.5.2"
select CC_GCC_4_5
config CC_V_4_5_1
bool
prompt "4.5.1"
select CC_GCC_4_5
config CC_V_4_5_0
bool
prompt "4.5.0"
select CC_GCC_4_5
config CC_V_linaro_4_4_2011_02_0
bool
prompt "linaro-4.4-2011.02-0 (EXPERIMENTAL)"
depends on CC_GCC_SHOW_LINARO
select CC_GCC_4_4
config CC_V_4_4_7
bool
prompt "4.4.7"
select CC_GCC_4_4
config CC_V_4_4_6
bool
prompt "4.4.6"
select CC_GCC_4_4
config CC_V_4_4_5
bool
prompt "4.4.5"
select CC_GCC_4_4
config CC_V_4_4_4
bool
prompt "4.4.4"
select CC_GCC_4_4
config CC_V_4_4_3
bool
prompt "4.4.3"
select CC_GCC_4_4
config CC_V_4_4_2
bool
prompt "4.4.2"
select CC_GCC_4_4
config CC_V_4_4_1
bool
prompt "4.4.1"
select CC_GCC_4_4
config CC_V_4_4_0
bool
prompt "4.4.0"
select CC_GCC_4_4
config CC_V_4_3_6
bool
prompt "4.3.6"
select CC_GCC_4_3
config CC_V_4_3_5
bool
prompt "4.3.5"
select CC_GCC_4_3
config CC_V_4_3_4
bool
prompt "4.3.4"
select CC_GCC_4_3
config CC_V_4_3_3
bool
prompt "4.3.3"
select CC_GCC_4_3
config CC_V_4_3_2
bool
prompt "4.3.2"
select CC_GCC_4_3
config CC_V_4_3_1
bool
prompt "4.3.1"
select CC_GCC_4_3
config CC_V_4_2_4
bool
prompt "4.2.4"
select CC_GCC_4_2
config CC_V_4_2_3
bool
prompt "4.2.3 (OBSOLETE)"
select CC_GCC_4_2
depends on OBSOLETE
config CC_V_4_2_2
bool
prompt "4.2.2"
select CC_GCC_4_2
config CC_V_4_2_1
bool
prompt "4.2.1 (OBSOLETE)"
select CC_GCC_4_2
depends on OBSOLETE
config CC_V_4_2_0
bool
prompt "4.2.0 (OBSOLETE)"
select CC_GCC_4_2
depends on OBSOLETE
config CC_V_4_1_2
bool
prompt "4.1.2 (OBSOLETE)"
depends on OBSOLETE
config CC_V_4_0_4
bool
prompt "4.0.4 (OBSOLETE)"
depends on OBSOLETE
config CC_V_3_4_6
bool
prompt "3.4.6 (OBSOLETE)"
depends on OBSOLETE
config CC_CUSTOM
bool
prompt "Custom gcc"
depends on EXPERIMENTAL
select CC_GCC_latest
endchoice
if CC_CUSTOM
config CC_CUSTOM_LOCATION
string
prompt "Full path to custom gcc source"
default ""
help
Enter the path to the directory (or tarball) of your source for gcc,
or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gcc
endif #CC_CUSTOM
config CC_GCC_4_2
bool
select CC_GCC_4_2_or_later
config CC_GCC_4_2_or_later
bool
config CC_GCC_4_3
bool
select CC_GCC_4_3_or_later
select CC_GCC_USE_GMP_MPFR
select CC_GCC_HAS_PKGVERSION_BUGURL
config CC_GCC_4_3_or_later
bool
select CC_GCC_4_2_or_later
config CC_GCC_4_4
bool
select CC_GCC_4_4_or_later
select CC_GCC_USE_GMP_MPFR
select CC_GCC_HAS_GRAPHITE
select CC_GCC_HAS_PKGVERSION_BUGURL
config CC_GCC_4_4_or_later
bool
select CC_GCC_4_3_or_later
config CC_GCC_4_5
bool
select CC_GCC_4_5_or_later
select CC_GCC_USE_GMP_MPFR
select CC_GCC_USE_MPC
select CC_GCC_HAS_GRAPHITE
select CC_GCC_HAS_LTO
select CC_GCC_HAS_PKGVERSION_BUGURL
select CC_GCC_HAS_BUILD_ID
config CC_GCC_4_5_or_later
bool
select CC_GCC_4_4_or_later
config CC_GCC_4_6
bool
select CC_GCC_4_6_or_later
select CC_GCC_USE_GMP_MPFR
select CC_GCC_USE_MPC
select CC_GCC_HAS_GRAPHITE
select CC_GCC_HAS_LTO
select CC_GCC_HAS_PKGVERSION_BUGURL
select CC_GCC_HAS_BUILD_ID
select CC_GCC_HAS_LIBQUADMATH
config CC_GCC_4_6_or_later
bool
select CC_GCC_4_5_or_later
config CC_GCC_4_7
bool
select CC_GCC_4_7_or_later
select CC_GCC_USE_GMP_MPFR
select CC_GCC_USE_MPC
select CC_GCC_HAS_GRAPHITE
select CC_GCC_HAS_LTO
select CC_GCC_HAS_PKGVERSION_BUGURL
select CC_GCC_HAS_BUILD_ID
select CC_GCC_HAS_LNK_HASH_STYLE
select CC_GCC_HAS_LIBQUADMATH
config CC_GCC_4_7_or_later
bool
select CC_GCC_4_6_or_later
config CC_GCC_latest
bool
select CC_GCC_4_7_or_later
select CC_GCC_USE_GMP_MPFR
select CC_GCC_USE_MPC
select CC_GCC_HAS_GRAPHITE
select CC_GCC_HAS_LTO
select CC_GCC_HAS_PKGVERSION_BUGURL
select CC_GCC_HAS_BUILD_ID
select CC_GCC_HAS_LNK_HASH_STYLE
select CC_GCC_HAS_LIBQUADMATH
config CC_GCC_HAS_GRAPHITE
bool
# The way LTO works is a bit twisted.
# See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
# Basically:
# - if binutils has plugins: LTO is handled by ld/gold by loading
# the plugin when linking
# - if binutils does not have plugins: LTO is handled by collect2
# In any case, LTO support does not depend on plugins, but takes
# advantage of it
config CC_GCC_HAS_LTO
bool
config CC_GCC_HAS_PKGVERSION_BUGURL
bool
config CC_GCC_HAS_BUILD_ID
bool
config CC_GCC_HAS_LNK_HASH_STYLE
bool
# Only enable gcc's support for plugins if binutils has it as well
# They are usefull only when doing LTO, but it does no harm enabling
# them even without LTO.
config CC_GCC_ENABLE_PLUGINS
bool
depends on BINUTILS_PLUGINS
depends on ! STATIC_TOOLCHAIN
default y
# If binutils installs gold, enable support for gold in gcc
config CC_GCC_GOLD
bool
depends on BINUTILS_GOLD_INSTALLED
default y
config CC_GCC_USE_GMP_MPFR
bool
select GMP_NEEDED
select MPFR_NEEDED
config CC_GCC_USE_PPL_CLOOG
bool
select PPL_NEEDED
select CLOOG_NEEDED
config CC_GCC_USE_MPC
bool
select MPC_NEEDED
config CC_GCC_USE_LIBELF
bool
select LIBELF_NEEDED
config CC_GCC_HAS_LIBQUADMATH
bool
config CC_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "linaro-4.7-2012.10" if CC_V_linaro_4_7_2012_10
default "4.7.2" if CC_V_4_7_2
default "4.7.1" if CC_V_4_7_1
default "4.7.0" if CC_V_4_7_0
default "linaro-4.6-2012.10" if CC_V_linaro_4_6_2012_10
default "4.6.3" if CC_V_4_6_3
default "4.6.2" if CC_V_4_6_2
default "4.6.1" if CC_V_4_6_1
default "4.6.0" if CC_V_4_6_0
default "linaro-4.5-2012.03" if CC_V_linaro_4_5_2012_03
default "4.5.3" if CC_V_4_5_3
default "4.5.2" if CC_V_4_5_2
default "4.5.1" if CC_V_4_5_1
default "4.5.0" if CC_V_4_5_0
default "linaro-4.4-2011.02-0" if CC_V_linaro_4_4_2011_02_0
default "4.4.7" if CC_V_4_4_7
default "4.4.6" if CC_V_4_4_6
default "4.4.5" if CC_V_4_4_5
default "4.4.4" if CC_V_4_4_4
default "4.4.3" if CC_V_4_4_3
default "4.4.2" if CC_V_4_4_2
default "4.4.1" if CC_V_4_4_1
default "4.4.0" if CC_V_4_4_0
default "4.3.6" if CC_V_4_3_6
default "4.3.5" if CC_V_4_3_5
default "4.3.4" if CC_V_4_3_4
default "4.3.3" if CC_V_4_3_3
default "4.3.2" if CC_V_4_3_2
default "4.3.1" if CC_V_4_3_1
default "4.3.0" if CC_V_4_3_0
default "4.2.4" if CC_V_4_2_4
default "4.2.3" if CC_V_4_2_3
default "4.2.2" if CC_V_4_2_2
default "4.2.1" if CC_V_4_2_1
default "4.2.0" if CC_V_4_2_0
default "4.1.2" if CC_V_4_1_2
default "4.0.4" if CC_V_4_0_4
default "3.4.6" if CC_V_3_4_6
default "custom" if CC_CUSTOM
config CC_LANG_JAVA_USE_ECJ
bool
default y
depends on CC_LANG_JAVA
depends on CC_GCC_4_3_or_later
# Fortran always requires GMP+MPFR, whatever the gcc version
config CC_LANG_FORTRAN
select CC_GCC_USE_GMP_MPFR
# gcc configuration options
config CC_ENABLE_CXX_FLAGS
string
prompt "Flags to pass to --enable-cxx-flags"
default ""
help
Enter here the value of the gcc's ./configure option --enable-cxx-flags.
Leave empty if you don't know better.
Note: just pass in the option _value_, that is only the part that goes
after the '=' sign.
config CC_CORE_EXTRA_CONFIG_ARRAY
string
prompt "Core gcc extra config"
default ""
help
Extra flags to pass onto ./configure when configuring the core gcc.
The core gcc is a stripped down, C-only compiler needed to build
the C library. Kinda bootstrap gcc, if you wish.
You can enter multiple arguments here, and arguments can contain spaces
if they are properly quoted (or escaped, but prefer quotes). Eg.:
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
config CC_EXTRA_CONFIG_ARRAY
string
prompt "gcc extra config"
default ""
depends on ! BARE_METAL
help
Extra flags to pass onto ./configure when configuring gcc.
You can enter multiple arguments here, and arguments can contain spaces
if they are properly quoted (or escaped, but prefer quotes). Eg.:
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
config STATIC_TOOLCHAIN
select CC_STATIC_LIBSTDCXX if CC_GCC_4_4_or_later
config CC_STATIC_LIBSTDCXX
bool
prompt "Link libstdc++ statically into the gcc binary"
default y
depends on CC_GCC_4_4_or_later
select WANTS_STATIC_LINK
help
Newer gcc versions use the PPL library which is C++ code. Statically
linking libstdc++ increases the likeliness that the gcc binary will
run on machines other than the one which it was built on, without
having to worry about distributing the matching version of libstdc++
along with it.
config CC_GCC_SYSTEM_ZLIB
bool
prompt "Use system zlib"
depends on EXPERIMENTAL
help
Do not use bundled zlib, and use the zlib already available for
the host (eg. the system library).
If you want to build a static toolchain, you will need to also
install the static version of zlib for your host.
If unsure, say 'n'.
#-----------------------------------------------------------------------------
# Optimisation features
comment "Optimisation features"
config CC_GCC_USE_GRAPHITE
bool
prompt "Enable GRAPHITE loop optimisations"
default y
depends on CC_GCC_HAS_GRAPHITE
select CC_GCC_USE_PPL_CLOOG
help
Enable the GRAPHITE loop optimsations.
This requires the PPL and CLooG companion libraries, and
those will be automatically build for you.
On some systems (eg. Cygwin), PPL and/or CLooG may not
build properly (yet), so you'll have to say 'N' here.
# The way LTO works is a bit twisted.
# See: http://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements
# Basically:
# - if binutils has plugins: LTO is handled by ld/gold by loading
# the plugin when linking
# - if binutils does not have plugins: LTO is handled by collect2
# In any case, LTO support does not depend on plugins, but takes
# advantage of it
# Also, only the 4.5 series needs libelf for LTO; 4.6 has dropped
# the dependency.
config CC_GCC_USE_LTO
bool
prompt "Enable LTO"
default y
depends on CC_GCC_HAS_LTO
select CC_GCC_USE_LIBELF if CC_GCC_4_5
help
Enable the Link Time Optimisations.
This will require the libelf companion library, and it
wil be build automatically for you.
#-----------------------------------------------------------------------------
comment "Settings for libraries running on target"
config CC_GCC_ENABLE_TARGET_OPTSPACE
bool
prompt "Optimize gcc libs for size"
default y
help
Pass --enable-target-optspace to crossgcc's configure.
This will compile crossgcc's libs with -Os.
config CC_GCC_LIBMUDFLAP
bool
prompt "Compile libmudflap"
help
libmudflap is a pointer-use checking tool, which can detect
various mis-usages of pointers in C and (to some extents) C++.
You should say 'N' here, as libmduflap generates instrumented
code (thus it is a bit bigger and a bit slower) and requires
re-compilation and re-link, while it exists better run-time
alternatives (eg. DUMA, dmalloc...) that need neither re-
compilation nor re-link.
config CC_GCC_LIBGOMP
bool
prompt "Compile libgomp"
help
libgomp is "the GNU implementation of the OpenMP Application Programming
Interface (API) for multi-platform shared-memory parallel programming in
C/C++ and Fortran". See:
http://gcc.gnu.org/onlinedocs/libgomp/
The default is 'N'. Say 'Y' if you need it, and report success/failure.
config CC_GCC_LIBSSP
bool
prompt "Compile libssp"
help
libssp is the run-time Stack-Smashing Protection library.
The default is 'N'. Say 'Y' if you need it, and report success/failure.
config CC_GCC_LIBQUADMATH
bool
prompt "Compile libquadmath"
depends on CC_GCC_HAS_LIBQUADMATH
help
libquadmath is a library which provides quad-precision mathematical
functions on targets supporting the __float128 datatype. See:
http://gcc.gnu.org/onlinedocs/libquadmath/
The default is 'N'. Say 'Y' if you need it, and report success/failure.
#-----------------------------------------------------------------------------
comment "Misc. obscure options."
config CC_CXA_ATEXIT
bool
prompt "Use __cxa_atexit"
default y
depends on ! BARE_METAL
help
If you get the missing symbol "__cxa_atexit" when building C++ programs,
you might want to try disabling this option.
config CC_GCC_DISABLE_PCH
bool
prompt "Do not build PCH"
help
Say 'y' here to not use Pre-Compiled Headers in the resulting toolchain.
at the expense of speed when compiling C++ code.
For some configurations (most notably canadian?), PCH are broken, and
need to be disabled. Please see:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
config CC_GCC_SJLJ_EXCEPTIONS
tristate
prompt "Use sjlj for exceptions"
depends on ! BARE_METAL
default m
help
'sjlj' is short for setjmp/longjmp.
On some architectures, stack unwinding during exception handling
works perfectly well without using sjlj, while on some others,
use of sjlj is required for proper stack unwinding.
Option | sjlj use | Associated ./configure switch
---------+--------------------+--------------------------------
Y | forcibly used | --enable-sjlj-exceptions
M | auto | (none, ./configure decides)
N | forcibly not used | --disable-sjlj-exceptions
It should be safe to say 'M' or 'N'.
It can happen that ./configure is wrong in some cases. Known
case is for ARM big endian, where you should say 'N'.
config CC_GCC_LDBL_128
tristate
prompt "Enable 128-bit long doubles"
default m
depends on CC_GCC_4_2_or_later
help
Saying 'Y' will force gcc to use 128-bit wide long doubles
Saying 'N' will force gcc to use 64-bit wide long doubles
Saying 'M' will let gcc choose (default is 128-bit for
glibc >= 2.4, 64-bit otherwise)
If in doubt, keep the default, ie. 'M'.
config CC_GCC_BUILD_ID
bool
prompt "Enable build-id"
depends on CC_GCC_HAS_BUILD_ID
help
Tells GCC to pass --build-id option to the linker for all final
links (links performed without the -r or --relocatable option),
if the linker supports it. If you say 'y' here, but your linker
does not support --build-id option, a warning is issued and this
option is ignored.
The default is off.
choice CC_GCC_LNK_HASH_STYLE_CHOICE
bool
prompt "linker hash style"
depends on CC_GCC_HAS_LNK_HASH_STYLE
depends on BINUTILS_HAS_HASH_STYLE
config CC_GCC_LNK_HASH_STYLE_DEFAULT
bool
prompt "Default"
help
Do not specify any value, and use the default value (sysv).
config CC_GCC_LNK_HASH_STYLE_SYSV
bool
prompt "sysv"
help
Force use of the SYSV hash style.
config CC_GCC_LNK_HASH_STYLE_GNU
bool
prompt "gnu"
help
Force use of the GNU hash style.
config CC_GCC_LNK_HASH_STYLE_BOTH
bool
prompt "both"
help
Force use of both hash styles.
endchoice # CC_GCC_LNK_HASH_STYLE_CHOICE
config CC_GCC_LNK_HASH_STYLE
string
default "" if CC_GCC_LNK_HASH_STYLE_DEFAULT
default "sysv" if CC_GCC_LNK_HASH_STYLE_SYSV
default "gnu" if CC_GCC_LNK_HASH_STYLE_GNU
default "both" if CC_GCC_LNK_HASH_STYLE_BOTH
#-----------------------------------------------------------------------------
config CC_GCC_HAS_ARCH_OPTIONS
bool
comment "archictecture-specific options"
depends on CC_GCC_HAS_ARCH_OPTIONS
if ARCH_mips
source "config/cc/gcc.in.mips"
endif # ARCH_mips
# MIPS specific options for gcc
config CC_GCC_HAS_ARCH_OPTIONS
default y
config CC_GCC_mips_llsc
tristate
prompt "Use llsc"
default m
help
This configures how gcc will emit load-link, store-conditional and
sync opcodes. Normally, you'd set this to 'M', and configure will do
the correct thing (ie. enable llsc for Linux-based targets, disable
for others). If you know better, you can force either using llsc or
not using it (resp. 'Y' or 'N').
config CC_GCC_mips_synci
tristate
prompt "Use synci"
default m
help
This configures how gcc will emit the synci opcode. Normally, you'd
set this to 'M', and configure will do the correct thing (ie. disable).
If you know better, you can force using synci (say 'Y'), or not using
it (say 'N').
config CC_GCC_mips_plt
bool
prompt "Use copy relocations & PLTs"
help
This configures gcc to use copy relocations & PLTs. These are
extensions to the traditional SVR4-based MIPS ABIs and require
support from GNU binutils and the runtime C library.
Say 'N' to keep the default and not use them, say 'Y' to use them.
# Companion libraries config options
# Those libraries are required for different versions of gcc,
# and can be used by binutils and gdb (maybe others as well).
menu "Companion libraries"
config COMPLIBS_NEEDED
bool
config GMP_NEEDED
bool
select GMP
select COMPLIBS_NEEDED
config MPFR_NEEDED
bool
select MPFR
select COMPLIBS_NEEDED
config PPL_NEEDED
bool
select PPL
select COMPLIBS_NEEDED
config CLOOG_NEEDED
bool
select CLOOG
select COMPLIBS_NEEDED
config MPC_NEEDED
bool
select MPC
select COMPLIBS_NEEDED
config LIBELF_NEEDED
bool
select LIBELF
select COMPLIBS_NEEDED
config COMPLIBS
bool
config GMP
bool
select COMPLIBS
config MPFR
bool
select GMP
select COMPLIBS
config PPL
bool
select GMP
select COMPLIBS
config CLOOG
bool
select GMP
select PPL
select COMPLIBS
config MPC
bool
select GMP
select MPFR
select COMPLIBS
config LIBELF
bool
select COMPLIBS
config LIBELF_TARGET
bool
if GMP
source "config/companion_libs/gmp.in"
endif
if MPFR
source "config/companion_libs/mpfr.in"
endif
if PPL
source "config/companion_libs/ppl.in"
endif
if CLOOG
source "config/companion_libs/cloog.in"
endif
if MPC
source "config/companion_libs/mpc.in"
endif
if LIBELF || LIBELF_TARGET
comment "libelf version needed to build for target"
depends on !LIBELF
source "config/companion_libs/libelf.in"
endif
config FOO
bool
if COMPLIBS
comment "Companion libraries common options"
config COMPLIBS_CHECK
bool
prompt "Check the companion libraries builds (!!! READ HELP!!!)"
help
It is highly recommended to check the newly built companion libraries.
Unfortunately, this is a very intensive task, and takes a loooong time.
Checking the newly built companion libraries is thus disabled by default,
but it is suggested that you check them at least once on your machine,
and if they work, disable the check on subsequent builds.
If you suspect that one (or more) of your companion libraries is the
cause for incorrectly generated code, you should answer 'Y' here.
Note however that this will take a really long time. For example,
building PPL on my machine takes roughly 1'40", while checking it takes
about 1h40'...
endif # COMPLIBS
endmenu
# CLooG options
choice
bool
prompt "CLooG/ppl version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config CLOOG_V_0_15_11
bool
prompt "0.15.11"
select CLOOG_0_15_1x
config CLOOG_V_0_15_10
bool
prompt "0.15.10"
select CLOOG_0_15_1x
config CLOOG_V_0_15_9
bool
prompt "0.15.9"
config CLOOG_V_0_15_8
bool
prompt "0.15.8"
config CLOOG_V_0_15_7
bool
prompt "0.15.7"
config CLOOG_V_0_15_6
bool
prompt "0.15.6"
endchoice
config CLOOG_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "0.15.11" if CLOOG_V_0_15_11
default "0.15.10" if CLOOG_V_0_15_10
default "0.15.9" if CLOOG_V_0_15_9
default "0.15.8" if CLOOG_V_0_15_8
default "0.15.7" if CLOOG_V_0_15_7
default "0.15.6" if CLOOG_V_0_15_6
config CLOOG_0_15_1x
bool
select CLOOG_NEEDS_AUTORECONF
config CLOOG_NEEDS_AUTORECONF
bool
# GMP options
choice
bool
prompt "GMP version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config GMP_V_5_0_2
bool
prompt "5.0.2"
config GMP_V_5_0_1
bool
prompt "5.0.1"
config GMP_V_4_3_2
bool
prompt "4.3.2"
config GMP_V_4_3_1
bool
prompt "4.3.1"
config GMP_V_4_3_0
bool
prompt "4.3.0"
config GMP_V_4_2_4
bool
prompt "4.2.4 (OBSOLETE)"
depends on OBSOLETE
config GMP_V_4_2_2
bool
prompt "4.2.2 (OBSOLETE)"
depends on OBSOLETE
endchoice
config GMP_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "5.0.2" if GMP_V_5_0_2
default "5.0.1" if GMP_V_5_0_1
default "4.3.2" if GMP_V_4_3_2
default "4.3.1" if GMP_V_4_3_1
default "4.3.0" if GMP_V_4_3_0
default "4.2.4" if GMP_V_4_2_4
default "4.2.2" if GMP_V_4_2_2
# libelf config file
choice
bool
prompt "libelf version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config LIBELF_V_0_8_13
bool
prompt "0.8.13"
config LIBELF_V_0_8_12
bool
prompt "0.8.12"
endchoice
config LIBELF_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "0.8.13" if LIBELF_V_0_8_13
default "0.8.12" if LIBELF_V_0_8_12
# MPC options
choice
bool
prompt "MPC version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config MPC_V_0_9
bool
prompt "0.9"
config MPC_V_0_8_2
bool
prompt "0.8.2"
config MPC_V_0_8_1
bool
prompt "0.8.1"
config MPC_V_0_7
bool
prompt "0.7"
config MPC_V_0_6
bool
prompt "0.6 (OBSOLETE)"
depends on OBSOLETE
endchoice
config MPC_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "0.9" if MPC_V_0_9
default "0.8.2" if MPC_V_0_8_2
default "0.8.1" if MPC_V_0_8_1
default "0.7" if MPC_V_0_7
default "0.6" if MPC_V_0_6
# GMP options
choice
bool
prompt "MPFR version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config MPFR_V_3_1_0
bool
prompt "3.1.0"
config MPFR_V_3_0_1
bool
prompt "3.0.1"
config MPFR_V_3_0_0
bool
prompt "3.0.0"
config MPFR_V_2_4_2
bool
prompt "2.4.2"
config MPFR_V_2_4_1
bool
prompt "2.4.1"
config MPFR_V_2_4_0
bool
prompt "2.4.0"
config MPFR_V_2_3_2
bool
prompt "2.3.2 (OBSOLETE)"
depends on OBSOLETE
config MPFR_V_2_3_1
bool
prompt "2.3.1 (OBSOLETE)"
depends on OBSOLETE
endchoice
config MPFR_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "3.1.0" if MPFR_V_3_1_0
default "3.0.1" if MPFR_V_3_0_1
default "3.0.0" if MPFR_V_3_0_0
default "2.4.2" if MPFR_V_2_4_2
default "2.4.1" if MPFR_V_2_4_1
default "2.4.0" if MPFR_V_2_4_0
default "2.3.2" if MPFR_V_2_3_2
default "2.3.1" if MPFR_V_2_3_1
# PPL options
choice
bool
prompt "PPL version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config PPL_V_0_11_2
bool
prompt "0.11.2"
select PPL_0_11
config PPL_V_0_11_1
bool
prompt "0.11.1"
select PPL_0_11
config PPL_V_0_11
bool
prompt "0.11"
select PPL_0_11
config PPL_V_0_10_2
bool
prompt "0.10.2"
endchoice
config PPL_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "0.11.2" if PPL_V_0_11_2
default "0.11.1" if PPL_V_0_11_1
default "0.11" if PPL_V_0_11
default "0.10.2" if PPL_V_0_10_2
# For PPL 0.11, we need to pull libpwl if configured static
config PPL_0_11
bool
select PPL_NEEDS_LIBPWL if ! COMPLIBS_SHARED
config PPL_NEEDS_LIBPWL
bool
# Companion tools config options
if EXPERIMENTAL
menu "Companion tools"
comment "READ HELP before you say 'Y' below !!!"
config COMP_TOOLS
bool
prompt "Build some companion tools"
help
Crosstool-NG relies on some external tools to be recent enough, namely:
make = 3.81 (in some cases)
m4 >= 1.4.12
autoconf >= 2.63
automake >= 1.10.2
libtool >= 2.2.4
If your system has older versions, we can build them for you,
but you are strongly encouraged to update your system instead!
if COMP_TOOLS
config COMP_TOOLS_make
bool
prompt "make"
config COMP_TOOLS_m4
bool
prompt "m4"
config COMP_TOOLS_autoconf
bool
prompt "autoconf"
config COMP_TOOLS_automake
bool
prompt "automake"
config COMP_TOOLS_libtool
bool
prompt "libtool"
endif
endmenu
endif
source "config/configure.in"
source "config/backend.in"
source "config/global.in"
source "config/target.in"
source "config/toolchain.in"
source "config/kernel.in"
source "config/binutils.in"
source "config/cc.in"
source "config/libc.in"
source "config/debug.in"
source "config/companion_libs.in"
source "config/companion_tools.in"
source "config/test_suite.in"
# ===========================================================================
# crosstool-NG genererated config files
# These targets are used from top-level makefile
#-----------------------------------------------------------
# List all config files, wether sourced or generated
# The top-level config file to be used be configurators
# We need it to savedefconfig in scripts/saveSample.sh
export KCONFIG_TOP = config/config.in
# Build the list of all source config files
STATIC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(shell find $(CT_LIB_DIR)/config -type f \( -name '*.in' -o -name '*.in.2' \) 2>/dev/null))
# ... and how to access them:
$(STATIC_CONFIG_FILES): config
# Build a list of per-component-type source config files
ARCH_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in))
ARCH_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in.2))
KERNEL_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in))
KERNEL_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in.2))
CC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in))
CC_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in.2))
LIBC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in))
LIBC_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in.2))
DEBUG_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/debug/*.in))
# Build the list of generated config files
GEN_CONFIG_FILES = config.gen/arch.in \
config.gen/kernel.in \
config.gen/cc.in \
config.gen/libc.in \
config.gen/debug.in
# ... and how to access them:
# Generated files depends on the gen_in_frags script because it has the
# functions needed to build the genrated files, and thus they might need
# re-generation if it changes.
# They also depends on config.mk (this file) because it has the dependency
# rules, and thus they might need re-generation if the deps change.
$(GEN_CONFIG_FILES): config.gen \
$(CT_LIB_DIR)/scripts/gen_in_frags.sh \
$(CT_LIB_DIR)/config/config.mk
# Helper entry for the configurators
PHONY += config_files
config_files: $(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
# Where to access to the source config files from
config:
@$(ECHO) " LN config"
$(SILENT)ln -s $(CT_LIB_DIR)/config config
# Where to store the generated config files into
config.gen:
@$(ECHO) " MKDIR config.gen"
$(SILENT)mkdir -p config.gen
#-----------------------------------------------------------
# Build list of per-component-type items to easily build generated files
ARCHS = $(patsubst config/arch/%.in,%,$(ARCH_CONFIG_FILES))
KERNELS = $(patsubst config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
CCS = $(patsubst config/cc/%.in,%,$(CC_CONFIG_FILES))
LIBCS = $(patsubst config/libc/%.in,%,$(LIBC_CONFIG_FILES))
DEBUGS = $(patsubst config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
#-----------------------------------------------------------
# The rules for the generated config files
# WARNING! If a .in file disapears between two runs, that will NOT be detected!
config.gen/arch.in: $(ARCH_CONFIG_FILES) $(ARCH_CONFIG_FILES_2)
@$(ECHO) ' IN $(@)'
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target Architecture" "ARCH" "config/arch" "Y" $(ARCHS)
config.gen/kernel.in: $(KERNEL_CONFIG_FILES) $(KERNEL_CONFIG_FILES_2)
@$(ECHO) ' IN $(@)'
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target OS" "KERNEL" "config/kernel" "Y" $(KERNELS)
config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2)
@$(ECHO) ' IN $(@)'
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS)
config.gen/libc.in: $(LIBC_CONFIG_FILES) $(LIBC_CONFIG_FILES_2)
@$(ECHO) ' IN $(@)'
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C library" "LIBC" "config/libc" "Y" $(LIBCS)
config.gen/debug.in: $(DEBUG_CONFIG_FILES)
@$(ECHO) ' IN $(@)'
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Debug facilities" "DEBUG" "config/debug" $(DEBUGS)
#-----------------------------------------------------------
# Cleaning up the mess...
clean::
@$(ECHO) " CLEAN config"
$(SILENT)rm -f config 2>/dev/null || true
@$(ECHO) " CLEAN config.gen"
$(SILENT)rm -rf config.gen
menu "Debug facilities"
source "config.gen/debug.in"
endmenu
# dmalloc debug facility
## depends on ! BACKEND
##
## help dmalloc helps tracking memory allocation mis-usage
## help such as double-free, use-after-free...
choice
bool
prompt "dmalloc version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config DMALLOC_V_5_5_2
bool
prompt "5.5.2"
endchoice
config DMALLOC_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "5.5.2" if DMALLOC_V_5_5_2
# D.U.M.A. - Detect Unintended Memory Access - Memory checker
## depends on ! BACKEND
## help D.U.M.A. - Detect Unintended Memory Access
## help A memory bound checker, with additional features.
## help Formerly known as Electric Fence.
config DUMA_A
bool
prompt "Build a static library"
default y
config DUMA_SO
bool
prompt "Build a shared library"
default y if SHARED_LIBS
choice
bool
prompt "D.U.M.A. version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config DUMA_V_2_5_15
bool
prompt "2_5_15"
config DUMA_V_2_5_14
bool
prompt "2_5_14 (OBSOLETE)"
depends on OBSOLETE
config DUMA_V_2_5_12
bool
prompt "2_5_12 (OBSOLETE)"
depends on OBSOLETE
config DUMA_V_2_5_8
bool
prompt "2_5_8 (OBSOLETE)"
depends on OBSOLETE
config DUMA_V_2_5_1
bool
prompt "2_5_1 (OBSOLETE)"
depends on OBSOLETE
endchoice
config DUMA_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2_5_15" if DUMA_V_2_5_15
default "2_5_14" if DUMA_V_2_5_14
default "2_5_12" if DUMA_V_2_5_12
default "2_5_8" if DUMA_V_2_5_8
default "2_5_1" if DUMA_V_2_5_1
# GDB menu
## help gdb is the GNU debugger
source "config/debug/gdb.in.cross"
source "config/debug/gdb.in.native"
source "config/debug/gdb.in.gdbserver"
if GDB_CROSS || GDB_NATIVE || GDB_GDBSERVER
comment "gdb version"
config DEBUG_GDB_SHOW_LINARO
bool
prompt "Show Linaro versions (EXPERIMENTAL)"
depends on EXPERIMENTAL
help
Linaro is maintaining some advanced/more stable/experimental versions
of gdb, especially for the ARM architecture.
Those versions have not been blessed by the gdb community (nor have they
been cursed either!), but they look to be pretty much stable, and even
more stable than the upstream versions. YMMV...
If you do not know what this Linaro stuff is, then simply say 'n' here,
and rest in peace. OTOH, if you know what you are doing, you will be
able to use and enjoy :-) the Linaro versions by saying 'y' here.
Linaro: http://www.linaro.org/
choice
bool
prompt "gdb version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config GDB_V_linaro_7_5_2012_09
bool
prompt "linaro-7.5-2012.09 (EXPERIMENTAL)"
depends on DEBUG_GDB_SHOW_LINARO
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_linaro_7_4_2012_06
bool
prompt "linaro-7.4-2012.06 (EXPERIMENTAL)"
depends on DEBUG_GDB_SHOW_LINARO
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_7_4_1
bool
prompt "7.4.1 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_7_4
bool
prompt "7.4 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_linaro_7_3_2011_12
bool
prompt "linaro-7.3-2011.12 (EXPERIMENTAL)"
depends on DEBUG_GDB_SHOW_LINARO
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_7_3_1
bool
prompt "7.3.1 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_7_3a
bool
prompt "7.3a (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_linaro_7_2_2011_05_0
bool
prompt "linaro-7.2-2011.05-0 (EXPERIMENTAL)"
depends on DEBUG_GDB_SHOW_LINARO
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_7_2a
bool
prompt "7.2a (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
select GDB_7_2_or_later
config GDB_V_7_1a
bool
prompt "7.1a (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
config GDB_V_7_0_1a
bool
prompt "7.0.1a (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
config GDB_V_7_0a
bool
prompt "7.0a (EXPERIMENTAL)"
depends on EXPERIMENTAL
select GDB_7_0_or_later
config GDB_V_6_8a
bool
prompt "6.8a"
config GDB_CUSTOM
bool
prompt "Custom gdb"
depends on EXPERIMENTAL
select GDB_7_0_or_later
select GDB_7_2_or_later
endchoice
config GDB_7_2_or_later
bool
config GDB_7_0_or_later
bool
select GDB_HAS_PKGVERSION_BUGURL
select GDB_INSTALL_GDBINIT
config GDB_HAS_PKGVERSION_BUGURL
bool
config GDB_INSTALL_GDBINIT
bool
config GDB_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "linaro-7.5-2012.09" if GDB_V_linaro_7_5_2012_09
default "linaro-7.4-2012.06" if GDB_V_linaro_7_4_2012_06
default "7.4.1" if GDB_V_7_4_1
default "7.4" if GDB_V_7_4
default "linaro-7.3-2011.12" if GDB_V_linaro_7_3_2011_12
default "7.3.1" if GDB_V_7_3_1
default "7.3a" if GDB_V_7_3a
default "linaro-7.2-2011.05-0" if GDB_V_linaro_7_2_2011_05_0
default "7.2a" if GDB_V_7_2a
default "7.1a" if GDB_V_7_1a
default "7.0.1a" if GDB_V_7_0_1a
default "7.0a" if GDB_V_7_0a
default "6.8a" if GDB_V_6_8a
default "custom" if GDB_CUSTOM
if GDB_CUSTOM
config GDB_CUSTOM_LOCATION
string
prompt "Full path to custom gdb source"
default ""
help
Enter the path to the directory (or tarball) of your source for gdb,
or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gdb
endif # GDB_CUSTOM
endif
# Menu for the cross GDB
config STATIC_TOOLCHAIN
select GDB_CROSS_STATIC if GDB_CROSS
config GDB_CROSS
bool
prompt "Cross-gdb"
default y
select GDB_GDBSERVER if ! BARE_METAL
help
Build and install a cross-gdb for the target, to run on host.
if GDB_CROSS
config GDB_CROSS_STATIC
bool
prompt "Build a static cross gdb"
select WANTS_STATIC_LINK
help
A static cross gdb can be usefull if you debug on a machine that is
not the one that is used to compile the toolchain.
That way, you can share the cross-gdb without installing a toolchain
on every machine that will be used to debug target programs.
config GDB_CROSS_SIM
bool
prompt "Enable 'sim'"
depends on EXPERIMENTAL
help
Say 'y' here if you want to build the 'sim' emulator.
You probably don't want it, unless you are building for bare-metal.
The default is 'n'.
config GDB_CROSS_PYTHON
bool
prompt "Enable python scripting"
depends on ! GDB_CROSS_STATIC
default y
help
Say 'y' if you want to use Python scripting inside gdb.
Say 'n' if you do not want to.
Beware that enabling Python scripting could render the gdb
executable non-functional if you move it to another machine.
Building a static gdb can help in this regard, although there
have been reports of problems when linking gdb to the static
libpython.a. This should be fixed in gdb >=7.3. YMMV.
config GDB_CROSS_EXTRA_CONFIG_ARRAY
string
prompt "Cross-gdb extra config"
default ""
help
Extra flags to pass onto ./configure when configuring the gdb cross.
endif # GDB_CROSS
# Menu for the native gdbserver
config GDB_GDBSERVER
bool
prompt "gdbserver"
depends on ! BARE_METAL
help
Build and install a gdbserver for the target, to run on the target.
if GDB_GDBSERVER
config GDB_GDBSERVER_HAS_IPA_LIB
bool
depends on GDB_7_2_or_later
default y
config GDB_GDBSERVER_STATIC
bool
prompt "Build a static gdbserver"
default y
help
In case you have trouble with dynamic loading of shared libraries,
you will find that a static gdbserver comes in handy.
config GDB_GDBSERVER_BUILD_IPA_LIB
bool
prompt "Build the IPA library"
depends on GDB_GDBSERVER_HAS_IPA_LIB && !GDB_GDBSERVER_STATIC
help
gdbserver >= 7.2 comes with an optional library to use tracepoints,
the In Process Agent (IPA) library, libinproctrace.so.
Say 'y' if you indend to use tracepoints when debugging your
programs with gdbserver.
Note: Currently, building this library is not possible when the
gdbserver is built statically. This is a limitation in
crosstool-NG, so do not bug upstream about it...
endif # GDB_GDBSERVER
if BARE_METAL
comment "In bare-metal, you'll need to "
comment "provide your own gdbserver stub."
endif # BARE_METAL
# Menu for the native GDB
config GDB_NATIVE
bool
prompt "Native gdb"
depends on ! BARE_METAL
depends on ! BACKEND
help
Build and install a native gdb for the target, to run on the target.
if GDB_NATIVE
config GDB_NATIVE_STATIC
bool
prompt "Build a static native gdb"
help
In case you have trouble with dynamic loading of shared libraries,
you will find that a static gdb comes in handy.
endif # GDB_NATIVE
# ltrace
## depends on ! BACKEND
##
## select LIBELF_TARGET
##
## help ltrace is a program that simply runs the specified command until it exits.
## help It intercepts and records the dynamic library calls which are called by
## help the executed process and the signals which are received by that process.
## help It can also intercept and print the system calls executed by the program.
choice
bool
prompt "ltrace version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config LTRACE_V_0_5_3
bool
prompt "0.5.3"
select LTRACE_0_5_3_or_later
config LTRACE_V_0_5_2
bool
prompt "0.5.2"
config LTRACE_V_0_5
bool
prompt "0.5 (OBSOLETE)"
depends on OBSOLETE
config LTRACE_V_0_4
bool
prompt "0.4 (OBSOLETE)"
depends on OBSOLETE
endchoice
config LTRACE_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "0.5.3" if LTRACE_V_0_5_3
default "0.5.2" if LTRACE_V_0_5_2
default "0.5.1" if LTRACE_V_0_5_1
default "0.5" if LTRACE_V_0_5
default "0.4" if LTRACE_V_0_4
config LTRACE_0_5_3_or_later
bool
# strace
## depends on ! BACKEND
choice
bool
prompt "strace version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config STRACE_V_4_6
bool
prompt "4.6 (EXPERIMENTAL)"
depends on EXPERIMENTAL
depends on CONFIGURE_has_xz
config STRACE_V_4_5_20
bool
prompt "4.5.20 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config STRACE_V_4_5_19
bool
prompt "4.5.19"
config STRACE_V_4_5_18
bool
prompt "4.5.18"
config STRACE_V_4_5_17
bool
prompt "4.5.17 (OBSOLETE)"
depends on OBSOLETE
config STRACE_V_4_5_16
bool
prompt "4.5.16 (OBSOLETE)"
depends on OBSOLETE
config STRACE_V_4_5_15
bool
prompt "4.5.15 (OBSOLETE)"
depends on OBSOLETE
endchoice
config STRACE_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "4.6" if STRACE_V_4_6
default "4.5.20" if STRACE_V_4_5_20
default "4.5.19" if STRACE_V_4_5_19
default "4.5.18" if STRACE_V_4_5_18
default "4.5.17" if STRACE_V_4_5_17
default "4.5.16" if STRACE_V_4_5_16
default "4.5.15" if STRACE_V_4_5_15
# Overall toolchain configuration: paths, jobs, etc...
# Allow unconditional usage of tristates
config MODULES
bool
default y
menu "Paths and misc options"
source "config/global/ct-behave.in"
source "config/global/paths.in"
source "config/global/download.in"
source "config/global/extract.in"
source "config/global/build-behave.in"
source "config/global/logging.in"
endmenu
# Options related to how the build behaves
comment "Build behavior"
comment "Build options hiden"
depends on BACKEND
config PARALLEL_JOBS
int
prompt "Number of parallel jobs" if ! BACKEND
default 0
help
Number of jobs make will be allowed to run concurently.
Set this higher than the number of processors you have, but not too high.
A good rule of thumb is twice the number of processors you have.
Enter 1 to have only one job at a time.
Enter 0 to set automatically based on how many processors the host has.
config LOAD
int
prompt "Maximum allowed load" if ! BACKEND
default 0
help
Specifies that no new jobs should be started if there are others jobs
running and the load average is at least this value.
Makes sense on SMP machines only.
Enter 0 to have no limit on the load average.
Note: only the integer part of the load is allowed here (you can't enter
0.75 for example).
config USE_PIPES
bool
prompt "Use -pipe" if ! BACKEND
default y
help
Use gcc's option -pipe to use pipes rather than temp files when building
the toolchain.
config EXTRA_FLAGS_FOR_HOST
string
prompt "Extra host compiler flags"
default ""
help
Extra flags to pass to the host C and C++ compiler.
May be used to change the default features of the host
compiler such as turning off the stack protector or fortify.
choice
bool
prompt "Shell to use as CONFIG_SHELL"
default CONFIG_SHELL_BASH
depends on ! BACKEND
config CONFIG_SHELL_SH
bool
prompt "sh (the system shell)"
help
Use 'sh' as CONFIG_SHELL.
./configure scripts and Makefiles make intensive use of calling
sub-shells. This is usually done by calling /bin/sh. /bin/sh ought
to be an at-least-POSIX-conformant shell (that is, able to interpret
POSIX shell scripts).
On many (most?) systems, /bin/sh is a symlink to bash. On some other
systems (eg. Ubuntu, latest Debian), /bin/sh points to dash (or ash).
bash is a full-featured shell, with many extension to POSIX, but is
quite slow (see ection BUGS in the bash man page), while dash is
faster, with very few extensions to POSIX. On the other hand, some
./configure scripts, although written to use /bin/sh, may really
require to be run by bash.
The default is to use bash, as some components (eg. GMP) will fail
to build with anything else than bash.
Unless you have a very strong reason not to (eg. you are debugging
the bashisms in a ./configure script), you should use the default,
and use bash.
config CONFIG_SHELL_ASH
bool
prompt "ash (READ HELP!)"
help
Use 'ash' as CONFIG_SHELL.
See help for CONFIG_SHELL_SH, above, for more explanations.
NOTE: It is advised that you do NOT use ash as CONFIG_SHELL, as some
components are broken. If you decide to use ash, and the build breaks,
don't come moaning and set the CONFIG_SHELL to bash, below.
config CONFIG_SHELL_BASH
bool
prompt "bash"
help
Use 'bash' as CONFIG_SHELL.
See help for CONFIG_SHELL_SH, above, for more explanations.
config CONFIG_SHELL_CUSTOM
bool
prompt "custom shell"
help
Enter full path to the custom shell below.
See help for CONFIG_SHELL_SH, above, for more explanations.
endchoice
# Do not put this into the choice above, because the choice
# is not available in BACKEND-mode, while we do want this to
# be set even in BACKEND-mode.
config CONFIG_SHELL_CUSTOM_PATH
string
prompt "Path to custom shell" if ! BACKEND
depends on CONFIG_SHELL_CUSTOM || BACKEND
default "/bin/sh"
# Ditto.
# And we must use the ./configured bash...
config CONFIG_SHELL
string
default "/bin/sh" if CONFIG_SHELL_SH
default "/bin/ash" if CONFIG_SHELL_ASH
default "${bash}" if CONFIG_SHELL_BASH
default CONFIG_SHELL_CUSTOM_PATH if CONFIG_SHELL_CUSTOM || BACKEND
# Options specific to crosstool-NG overall behavior
comment "crosstool-NG behavior"
config OBSOLETE
bool
prompt "Use obsolete features"
help
If you set this to Y, you will be able to select obsolete features.
Such obsolete features are the use of old kernel headers, old gcc
versions, etc... for which maintaining support in crosstool-NG
would be very costly.
It does not however mean that the specific feature or version has been
marked obsolete by the upstream team.
config EXPERIMENTAL
bool
prompt "Try features marked as EXPERIMENTAL"
help
If you set this to Y, then you will be able to try very experimental
features.
Experimental features can be one of:
- working, in which case you should tell me it is!
- buggy, in which case you could try patching and send me the result
- unfinished, in which case you could try hacking it and send me the result
- non-existant, in which case you could also try hacking it in and send me
the result
config DEBUG_CT
bool
prompt "Debug crosstool-NG"
depends on ! BACKEND
help
Say 'y' here to get some options regarding debugging crosstool-NG.
if DEBUG_CT
config DEBUG_PAUSE_STEPS
bool
prompt "Pause between every steps"
help
Say 'y' if you intend to attend the build, and want to investigate
the result of each steps before running the next one.
config DEBUG_CT_SAVE_STEPS
bool
prompt "Save intermediate steps"
help
If you say 'y' here, then you will be able to restart crosstool-NG at
any step.
It is not currently possible to restart at any of the debug facilities.
They are treated as a whole.
To get the full list os steps, run: ct-ng list-steps
config DEBUG_CT_SAVE_STEPS_GZIP
bool
prompt "gzip saved states"
default y
depends on DEBUG_CT_SAVE_STEPS
help
If you are tight on space, then you can ask to gzip the saved states
tarballs. On the other hand, this takes some longer time...
To lose as less time as possible, the gzip process is done with a low
compression ratio (-3), which gives roughly 70% gain in size. Going
further doesn't gain much, and takes far more time (believe me, I've
got figures here! :-) ).
config NO_OVERIDE_LC_MESSAGES
bool
prompt "Do *not* overide LC_MESSAGES (EXPERIMENTAL)"
depends on EXPERIMENTAL
help
By default, crosstool-NG sets and exports LC_ALL=C so that the
build.log file contains english messages, that can be read by
people most likely to help interpret the logs. If you say N here,
and your locale is not an english language, then dissecting your
log file will be difficult for most people but you.
If you say Y here, then your current locale settings will be used
to print messages, instead of plain english.
Say N, please.
config DEBUG_INTERACTIVE
bool
prompt "Interactive shell on failed commands"
help
If you say 'y' here, then an interactive shell will be spawned for
each failed command.
This shell will have the same environment that the failed command
was run with, and the working directory will be set to the directory
the failed command was run in.
After you fix the issue, you can exit the interactive shell with any
of these exit codes:
1 the issue was fixed, continue the build with the next command
2 the issue was fixed, re-run the failed command
3 abort the build
Note: '2' is only possible for commands run via CT_DoExecLog, though.
endif
# Options specific to downloading packages
comment "Downloading"
config FORBID_DOWNLOAD
bool
prompt "Forbid downloads"
help
Normally, crosstool-NG will try to download missing tarballs (or
checkout from CVS/SVN...).
If you do not have network connectivity when you run crosstool-NG,
and some files are missing, it can be a long time before crosstool-NG
fails.
Saying 'y' here will prevent crosstool-NG from downloading missing
files, thus failing early so that you don't get stuck.
if ! FORBID_DOWNLOAD
config FORCE_DOWNLOAD
bool
prompt "Force downloads"
help
Force downloading tarballs, even if one already exists.
Useful if you suspect a tarball to be damaged.
config CONNECT_TIMEOUT
int
prompt "Connection timeout"
default 10
help
From the curl manual:
Maximum time in seconds that you allow the connection to the server to take.
The scenario is as follows;
- some enterprise networks have firewalls that prohibit FTP traffic, while
still allowing HTTP
- most download sites have http:// equivalent for the ftp:// URL
- after this number of seconds, it is considered that the connection could
not be established, and the next URL in the list is tried, until we reach
an URL that will go through the firewall, most probably an http:// URL.
If you have a slow network, you'd better set this value higher than the default
10s. If you know a firewall is blocking connections, but your network is globally
fast, you can try to lower this value to jump more quickly to allowed URLs. YMMV.
Note that this value applies equally to wget if you have that installed.
config ONLY_DOWNLOAD
bool
prompt "Stop after downloading tarballs"
help
Only download the tarballs. Exit once it done.
Useful to pre-retrieve the tarballs before going off-line.
config USE_MIRROR
bool
prompt "Use a mirror"
help
If you have a machine on your LAN that mirrors some of the needed
tarballs, you can say 'Y' here, and configure adequate values in
the following options.
Obviously, nothing prevents you from using a mirror that is in fact
*not* on your LAN, for example on another subnet of your company's
network, or a mirror on the Internet.
if USE_MIRROR
config FORCE_MIRROR
bool
prompt "Only use mirror"
help
Only allow downloading from the mirror specified, other download locations
will NOT be used, and the package will fail to be located if not present
on the mirror provided
config MIRROR_BASE_URL
string
prompt "Base URL"
default "http://crosstool-ng.org/mirrors/"
help
This is the base URL searched in for tarballs.
The crosstool-NG server hosts a few of the required components, but
it is limited to volatile snashots (eg. uClibc) that are used in some
samples, or to mirror some archives which upstream can be flaky (eg.
mpfr), or for which upstream releases can be missing due to upstream
not doing archives (eg. glibc-ports).
The mirror is provided as-is, no guarantee is made as to the actual
content of the archives, or to the availability of the mirror.
Excercise caution, use at your own risks!
The mirror is available at:
http://crosstool-ng.org/mirrors/
endif # USE_MIRROR
endif # ! FORBID_DOWNLOAD
# Options specific to extracting packages
comment "Extracting"
config FORCE_EXTRACT
bool
prompt "Force extractions"
help
Force extraction of already extracted tarballs.
Useful if you suspect a previous extract did not complete (eg. broken
tarball), or you added a new set of patches for this component.
config OVERIDE_CONFIG_GUESS_SUB
bool
prompt "Override config.{guess,sub}"
default y
help
Override tools' versions of config.guess and config.sub with the ones
from crosstool-NG. This means that all instances of config.guess and
config.sub in gcc, binutils, glibc, etc... will be replaced.
Most of the time, the versions of those scripts found in packages are old
versions, thus lacking some target definitions. This is the case for
uClibc-based tuples in old versions of gcc and gdb, for example.
Also, doing so will guarantee that all components have the same tuples
definitions for your target, and not diverging ones.
You can update the ones provided with crosstool-NG by first running:
ct-ng updatetools
in the directory where you want to run crosstool-NG prior to the build.
config ONLY_EXTRACT
bool
prompt "Stop after extracting tarballs"
help
Exit after unpacking and patching tarballs.
Useful to look at the code before doing the build itself.
choice
prompt "Patches origin"
bool
default PATCH_BUNDLED
config PATCH_BUNDLED
bool
prompt "Bundled only"
help
Only apply patches bundled with crosstool-NG.
config PATCH_LOCAL
bool
prompt "Local only"
select PATCH_USE_LOCAL
help
Only apply your local patches.
config PATCH_BUNDLED_LOCAL
bool
prompt "Bundled, then local"
select PATCH_USE_LOCAL
help
Apply the patches bundled with crosstool-NG,
then apply your local patches.
config PATCH_LOCAL_BUNDLED
bool
prompt "Local, then bundled"
select PATCH_USE_LOCAL
help
Apply your local patches, then apply the patches
bundled with crosstool-NG.
config PATCH_BUNDLED_FALLBACK_LOCAL
bool
prompt "Bundled only, local if no bundled"
select PATCH_USE_LOCAL
select PATCH_SINGLE
help
Apply the patches bundled with crosstool-NG;
if there's no bundled patches, apply your local patches.
config PATCH_LOCAL_FALLBACK_BUNDLED
bool
prompt "Local only, bundled if no local"
select PATCH_USE_LOCAL
select PATCH_SINGLE
help
Only apply your local patches;
if there's no local patches, apply patches bundled with crosstool-NG.
config PATCH_NONE
bool
prompt "None"
help
Don't use any patch at all.
Please be careful if you select this. Most components do require
patches to properly build. It can happen, however, that support for
your architecture is clean enough that you can build a toolchain
with no patch. But most probably, this is *not* the case.
Be safe, use (the bundeld) patches.
endchoice
config PATCH_ORDER
string
default "bundled" if PATCH_BUNDLED
default "local" if PATCH_LOCAL
default "bundled,local" if PATCH_BUNDLED_LOCAL || PATCH_BUNDLED_FALLBACK_LOCAL
default "local,bundled" if PATCH_LOCAL_BUNDLED || PATCH_LOCAL_FALLBACK_BUNDLED
default "none" if PATCH_NONE
config PATCH_SINGLE
bool
config PATCH_USE_LOCAL
bool
config LOCAL_PATCH_DIR
string
prompt "| Local patch directory"
default ""
depends on PATCH_USE_LOCAL
help
Enter the custom patch directory here.
Note that you must ensure that the directory containing your custom
patches is arranged the same way the official directory is.
# Options specific to logging
comment "Logging"
choice
bool
prompt "Maximum log level to see:"
default LOG_INFO if !DEBUG_CT
default LOG_DEBUG if DEBUG_CT
config LOG_ERROR
bool
prompt "ERROR"
help
The build will be silent.
Only if there is an error will you see a message.
config LOG_WARN
bool
prompt "WARN"
help
The same as above, plus warnings.
config LOG_INFO
bool
prompt "INFO"
help
The same as above, plus informational messages (main steps).
config LOG_EXTRA
bool
prompt "EXTRA"
help
The same as above, plus extra messages (sub-steps).
config LOG_ALL
bool
prompt "ALL"
help
The same as above, plus all components build messages (very noisy!).
config LOG_DEBUG
bool
prompt "DEBUG"
help
The same as above, plus lots of crosstool-NG debug information.
endchoice
config LOG_LEVEL_MAX
string
default "ERROR" if LOG_ERROR
default "WARN" if LOG_WARN
default "INFO" if LOG_INFO
default "EXTRA" if LOG_EXTRA
default "ALL" if LOG_ALL
default "DEBUG" if LOG_DEBUG
config LOG_SEE_TOOLS_WARN
bool
prompt "Warnings from the tools' builds"
depends on ! LOG_ERROR
help
Treat warnings from the different tools as crosstool-NG warnings.
If you say 'y' here, then those warnings will be prefixed with
'[WARN ]' instead of the default '[ALL ]'.
You can safely say 'n' here. Those warnings will anyway be
recorded in the log file (provided you configured one).
Tools error will always be logged as crosstool-NG errors.
config LOG_PROGRESS_BAR
bool
prompt "Progress bar"
default y
depends on ! LOG_ALL && ! LOG_DEBUG
help
If you say 'y' here, you'll be able to see the elapsed time.
As a bonus, you'll also get a rotating bar (/-\|) showing you
that the build is not stalled (the bar rotates 1/4 every 10 lines
of components build log).
Note that the elapsed time can stall for a little while if a
component has long commands, as the elapsed time is only updated
each line.
config LOG_TO_FILE
bool
prompt "Log to a file"
default y
help
Save *full* logs to a file. Even log levels you didn't specify above
will be available in this file. The log file will be named build.log
and stored in the toolchain prefix dir (set above).
Definitely, say Y.
config LOG_FILE_COMPRESS
bool
prompt "Compress the log file"
default y
depends on LOG_TO_FILE
help
Compress the log file once the toolchain is successfully built.
# Options related to paths and install
comment "Paths"
config LOCAL_TARBALLS_DIR
string
prompt "Local tarballs directory" if ! BACKEND
default ""
help
If you have previously downloaded the tarballs, enter the PATH where
you stored them here.
config SAVE_TARBALLS
bool
prompt "Save new tarballs" if ! BACKEND
depends on LOCAL_TARBALLS_DIR != "" || BACKEND
default y if BACKEND
help
If you say 'y' here, new downloaded tarballs will be saved in the
directory you entered above.
config CUSTOM_LOCATION_ROOT_DIR
string
depends on EXPERIMENTAL
prompt "Directory containing custom source components"
help
This is the path CT-NG will attempt to use as a root for locating
local copies of source components (CUSTOM_LOCATION_ROOT_DIR/component)
unless a component declares its own specific custom location.
config WORK_DIR
string
prompt "Working directory" if ! BACKEND
default "${CT_TOP_DIR}/.build"
help
Set this to the directory where all build actions will be done.
The default is "${CT_TOP_DIR}/.build", and leaving this option
empty will also use the default.
You should not need to change that, except in one very peculiar
setup:
- your crosstool-NG source directory is on the network
- you configured crosstool-NG with --local
This kind of setup is a pain, as any action involving source file
access would have to go through the wire. In this case, you should
set CT_WORK_DIR to point to a path local to your machine, to avoid
any network overhead.
Do *NOT* change it if you don't know better.
config PREFIX_DIR
string
prompt "Prefix directory" if ! BACKEND
default "${HOME}/x-tools/${CT_TARGET}"
help
This is the path the toolchain will run from.
config INSTALL_DIR
string
# prompt "Install directory"
default "${CT_PREFIX_DIR}"
# help
# This is the path the toolchain will be installed into.
#
# Normally, you would set this to ${CT_PREFIX_DIR}, but if for some reasons
# you can't write there, you can install somewhere else and have a third
# person do the install for you.
# The reason you might also want to install elsewhere is if you are going
# to package your shinny new toolchain for distribution.
config RM_RF_PREFIX_DIR
bool
prompt "| Remove the prefix dir prior to building"
default y
depends on !BACKEND
help
If you say 'y' here, then PREFIX_DIR (above) will be eradicated
prior to the toolchain is built.
This can be useful when you are trying different settings (due
to build failures or feature tests). In this case, to avoid using
a potentially broken previous toolchain, the install location is
removed, to start afresh.
On the other hand, if you are building a final toolchain, and install
it into a directory with pre-install, unrelated programs, it would be
damageable to remove that directory. In this case, you may want to
say 'n' here.
Note that when acting as a backend, this option is not available, and
is forced to 'n'.
config REMOVE_DOCS
bool
prompt "Remove documentation"
default y
help
Remove the installed documentation (man and info pages).
Gains around 8MiB for a uClibc-based, C and C++ compiler.
config BUILD_MANUALS
bool
prompt "Build the manuals"
depends on ! REMOVE_DOCS
help
Build the PDF and HTML manuals for the main components such as
binutils, GCC, GDB, and the C library.
config INSTALL_DIR_RO
bool
prompt "Render the toolchain read-only"
default y
help
Render the directory of the toolchain (and its sub-directories)
read-only.
Useful for toolchains destined for production.
config STRIP_ALL_TOOLCHAIN_EXECUTABLES
bool
prompt "Strip all toolchain executables"
default y
help
All build host executables contain a lot of unnecessary info.
By stripping all executables it slightly speeds up the compilation
of large projects.
NOTE: It does NOT strip the target libraries, only HOST executables
# Kernel options
menu "Operating System"
# Config option used throughout the config and code to determine wether
# we have a kernel or not (there might be different bare metal stuff)...
config BARE_METAL
bool
config MINGW32
bool
# Each target OS (aka kernel) that support shared libraries can select
# this, so the user can decide whether or not to build a shared library
# enabled toolchain
config KERNEL_SUPPORTS_SHARED_LIBS
bool
config KERNEL
string
config KERNEL_VERSION
string
source "config.gen/kernel.in"
comment "Common kernel options"
config SHARED_LIBS
bool
prompt "Build shared libraries"
depends on KERNEL_SUPPORTS_SHARED_LIBS
default y
help
Say 'y' here, unless you don't want shared libraries.
You might not want shared libraries if you're building for a target that
don't support it (maybe some nommu targets, for example, or bare metal).
source "config.gen/kernel.in.2"
endmenu
# Bare metal config options
## select BARE_METAL
##
## help 'Bare metal' refers to those programs that run without any kernel.
## help
## help You probably want to say 'y' here if you plan to use your compiler
## help to build bootloaders. It is not yet suitable to build Linux kernels,
## help though, because the APCI stuff relies on the target C library headers
## help being available?!?!...
# Linux kernel options
## select KERNEL_SUPPORTS_SHARED_LIBS
##
## help Build a toolchain targeting systems running Linux as a kernel.
config KERNEL_LINUX_USE_CUSTOM_HEADERS
bool
prompt "Use pre-installed headers tree (OBSOLETE)"
depends on OBSOLETE
help
If you have some pre-installed kernel headers lying around, you can
enter the path to these headers, below, they will be copied from
there, and into the toolchain's sysroot.
Note:
This will *not* let you use a complete kernel tree!
If you want to use your own full kernel tree, then you want to say 'N'
here, and select KERNEL_LINUX_CUSTOM, in the versions list, below.
if ! KERNEL_LINUX_USE_CUSTOM_HEADERS
choice
bool
prompt "Linux kernel version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config KERNEL_V_3_6_3
bool
prompt "3.6.3"
config KERNEL_V_3_6_2
bool
prompt "3.6.2"
config KERNEL_V_3_6_1
bool
prompt "3.6.1"
config KERNEL_V_3_6
bool
prompt "3.6"
config KERNEL_V_3_5_7
bool
prompt "3.5.7"
config KERNEL_V_3_4_15
bool
prompt "3.4.15"
config KERNEL_V_3_3_8
bool
prompt "3.3.8"
config KERNEL_V_3_2_32
bool
prompt "3.2.32"
config KERNEL_V_3_1_10
bool
prompt "3.1.10"
config KERNEL_V_3_0_48
bool
prompt "3.0.48"
config KERNEL_V_2_6_39_4
bool
prompt "2.6.39.4"
config KERNEL_V_2_6_38_8
bool
prompt "2.6.38.8"
config KERNEL_V_2_6_37_6
bool
prompt "2.6.37.6"
config KERNEL_V_2_6_36_4
bool
prompt "2.6.36.4"
config KERNEL_V_2_6_33_20
bool
prompt "2.6.33.20"
help
This is primarily for the use of those people who are stuck using the
.33-rt kernel. Anyone else who really wants to use the .33 kernel tree
is welcome to use this one as well.
config KERNEL_V_2_6_32_60
bool
prompt "2.6.32.60 (longterm)"
help
The Linux 2.6.32 tree is a "longterm" maintenance branch.
It is intended to fill the niche for users who are not using distribution
kernels but want to use a regression-free kernel for a longer time.
Critical bug fixes to later 2.6 releases are often ported to this branch
which makes 2.6.32 a very useful base for many embedded developers seeking
stable APIs or those who do not need the latest bleeding edge features.
... and no, this kernel has not undergone any specific QA testing.
See the original announcement by Greg Kroah-Hartman in the following
mailing list entry:
http://marc.info/?l=linux-kernel&m=126384198403392&w=4
config KERNEL_V_2_6_31_14
bool
prompt "2.6.31.14"
config KERNEL_V_2_6_27_62
bool
prompt "2.6.27.62 (longterm)"
help
The Linux 2.6.27 tree is a "longterm" maintenance branch.
It is intended to fill the niche for users who are not using distribution
kernels but want to use a regression-free kernel for a longer time.
Critical bug fixes to later 2.6 releases are often ported to this branch
which makes 2.6.27 a very useful base for many embedded developers seeking
stable APIs or those who do not need the latest bleeding edge features.
... and no, this kernel has not undergone any specific QA testing.
See the original announcement by Adrian Bunk in the following mailing list
entry:
http://marc.info/?l=linux-kernel&m=122375909403298&w=4
It is now maintained by Greg Kroah-Hartman, see this mailing list entry:
http://marc.info/?l=linux-kernel&m=129133701916793&w=4
config KERNEL_LINUX_CUSTOM
bool
prompt "custom tarball or directory"
help
Use a local tarball or local kernel directory of a complete kernel source tree.
config KERNEL_LINUX_CUSTOM_LOCATION
string
prompt "Path to custom source, tarball or directory"
depends on KERNEL_LINUX_CUSTOM
help
Enter here the path to the tarball of your full kernel tree or
kernel directory
endchoice
config KERNEL_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "3.6.3" if KERNEL_V_3_6_3
default "3.6.2" if KERNEL_V_3_6_2
default "3.6.1" if KERNEL_V_3_6_1
default "3.6" if KERNEL_V_3_6
default "3.5.7" if KERNEL_V_3_5_7
default "3.4.15" if KERNEL_V_3_4_15
default "3.3.8" if KERNEL_V_3_3_8
default "3.2.32" if KERNEL_V_3_2_32
default "3.1.10" if KERNEL_V_3_1_10
default "3.0.48" if KERNEL_V_3_0_48
default "2.6.39.4" if KERNEL_V_2_6_39_4
default "2.6.38.8" if KERNEL_V_2_6_38_8
default "2.6.37.6" if KERNEL_V_2_6_37_6
default "2.6.36.4" if KERNEL_V_2_6_36_4
default "2.6.33.20" if KERNEL_V_2_6_33_20
default "2.6.32.60" if KERNEL_V_2_6_32_60
default "2.6.31.14" if KERNEL_V_2_6_31_14
default "2.6.27.62" if KERNEL_V_2_6_27_62
default "custom" if KERNEL_LINUX_CUSTOM
endif # ! KERNEL_LINUX_USE_CUSTOM_HEADERS
if KERNEL_LINUX_USE_CUSTOM_HEADERS
config KERNEL_LINUX_CUSTOM_PATH
string
prompt "Path to custom headers directory/tarball"
help
See KERNEL_LINUX_CUSTOM_IS_TARBALL, below.
config KERNEL_LINUX_CUSTOM_IS_TARBALL
bool
prompt "This is a tarball"
help
If you say 'n' here, the path above is expected to point to a directory
containing readily prepared headers
If you say 'y' here, then the path above is expected to point to a
tarball of such a directory.
Eg., if your headers are available in: /foo/bar/buz/my_hdrs/include,
say 'n' here, and enter: /foo/bar/buz/my_hdrs below.
Now, passing a tarball around is easier than passing a directory, so
if you want to, you can make a tarball of /foo/bar/buz/my_hdrs/include,
say 'y' here, and enter the path to this tarball below.
endif # KERNEL_LINUX_USE_CUSTOM_HEADERS
# Linux kernel options
if ! KERNEL_LINUX_USE_CUSTOM_HEADERS
choice
bool
prompt "Kernel verbosity:"
default KERNEL_LINUX_VERBOSITY_0
config KERNEL_LINUX_VERBOSITY_0
bool
prompt "Simplified"
help
Print simplified command lines.
config KERNEL_LINUX_VERBOSITY_1
bool
prompt "Full commands"
help
Print full command lines.
config KERNEL_LINUX_VERBOSITY_2
bool
prompt "Exec reasons"
help
Print the reasons why a make target is rebuild.
endchoice
config KERNEL_LINUX_VERBOSE_LEVEL
int
default 0 if KERNEL_LINUX_VERBOSITY_0
default 1 if KERNEL_LINUX_VERBOSITY_1
default 2 if KERNEL_LINUX_VERBOSITY_2
config KERNEL_LINUX_INSTALL_CHECK
bool
prompt "Check installed headers"
default y
help
If you are in doubt that installed headers are buggy, say 'Y'
here to have an extra check passed onto the headers.
endif # ! KERNEL_LINUX_USE_CUSTOM_HEADERS
# mingw32 config options
## depends on EXPERIMENTAL && ( ARCH_x86 && ARCH_32 )
##
## select MINGW32
##
## help Build a toolchain targeting systems running Windows as host
choice
bool
prompt "Windows api version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config W32API_V_3_14
bool
prompt "3.14"
config W32API_V_select
bool
prompt "Other version"
endchoice
config W32API_VERSION
string
prompt "W32 api version" if W32API_V_select
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "3.14" if W32API_V_3_14
help
Enter the version number of the windows api files to use
# C library options
menu "C-library"
config LIBC
string
config LIBC_VERSION
string
help
Enter the date of the snapshot you want to use in the form: YYYYMMDD
where YYYY is the 4-digit year, MM the 2-digit month and DD the 2-digit
day in the month.
Please note:
- glibc has snapshots done every monday, and only the last ten are kept.
- uClibc has daily snapshots, and only the last 30-or-so are kept.
So if you want to be able to re-build your toolchain later, you will
have to save your C library tarball by yourself.
source "config.gen/libc.in"
config LIBC_SUPPORT_THREADS_ANY
bool
config LIBC_SUPPORT_NPTL
bool
select LIBC_SUPPORT_THREADS_ANY
config LIBC_SUPPORT_LINUXTHREADS
bool
select LIBC_SUPPORT_THREADS_ANY
config LIBC_SUPPORT_WIN32THREADS
bool
select LIBC_SUPPORT_THREADS_ANY
config LIBC_SUPPORT_THREADS_NONE
bool
config THREADS
string
default "nptl" if THREADS_NPTL
default "linuxthreads" if THREADS_LINUXTHREADS
default "win32" if THREADS_WIN32THREADS
default "none" if THREADS_NONE || LIBC_none
# No C library, no threads!
if ! LIBC_none
comment "Common C library options"
choice
bool
prompt "Threading implementation to use:"
default THREADS_NPTL if LIBC_SUPPORT_NPTL
default THREADS_LINUXTHREADS if LIBC_SUPPORT_LINUXTHREADS && ! LIBC_SUPPORT_NPTL
default THREADS_WIN32 if LIBC_SUPPORT_WIN32THREADS
default THREADS_NONE if ! LIBC_SUPPORT_THREADS_ANY
config THREADS_NPTL
bool
prompt "nptl"
depends on LIBC_SUPPORT_NPTL
config THREADS_LINUXTHREADS
bool
prompt "linuxthreads"
depends on LIBC_SUPPORT_LINUXTHREADS
config THREADS_WIN32THREADS
bool
prompt "win32"
depends on LIBC_SUPPORT_WIN32THREADS
config THREADS_NONE
bool
prompt "none"
depends on LIBC_SUPPORT_THREADS_NONE
endchoice
config LIBC_XLDD
bool
prompt "Install a cross ldd-like helper"
depends on SHARED_LIBS
depends on ! BARE_METAL
default y
help
Say 'Y' here if you want to have a ldd-like helper that
you can run on your build system, and that will (try to)
resolve shared libraries dependencies as if run on the
target.
Note that the cross-ldd helper is not a full replacement
for the native ldd. Please see the help, by running it
with '--help' for more explanations.
source "config.gen/libc.in.2"
endif # ! LIBC_none
endmenu
# eglibc options
## depends on ! MINGW32 && ! BARE_METAL && ARCH_USE_MMU
##
## select LIBC_SUPPORT_NPTL
## select LIBC_SUPPORT_LINUXTHREADS
##
## help EGLIBC (Embedded GLIBC) is a variant of the standard GNU GLIBC
## help that is designed to work well on embedded systems. EGLIBC strives
## help to be source and binary compatible with GLIBC. Its goals include
## help a reduced footprint, configurable components, and improved
## help cross-compilation support. EGLIBC also includes some embedded ports
## help (such as e500/spe) that are normally separate add-ons of GLIBC.
choice
bool
prompt "eglibc version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config LIBC_EGLIBC_V_2_16
bool
prompt "2_16"
select LIBC_EGLIBC_2_16_or_later
config LIBC_EGLIBC_V_2_15
bool
prompt "2_15"
select LIBC_EGLIBC_2_15_or_later
config LIBC_EGLIBC_V_2_14
bool
prompt "2_14"
select LIBC_EGLIBC_2_14_or_later
config LIBC_EGLIBC_V_2_13
bool
prompt "2_13"
select LIBC_EGLIBC_2_13_or_later
config LIBC_EGLIBC_V_2_12
bool
prompt "2_12"
select LIBC_EGLIBC_2_12_or_later
config LIBC_EGLIBC_V_2_11
bool
prompt "2_11"
select LIBC_EGLIBC_2_11_or_later
config LIBC_EGLIBC_V_2_10
bool
prompt "2_10"
select LIBC_EGLIBC_2_10_or_later
config LIBC_EGLIBC_V_2_9
bool
prompt "2_9"
select LIBC_EGLIBC_2_9_or_later
config LIBC_EGLIBC_V_2_8
bool
prompt "2_8 (OBSOLETE)"
depends on OBSOLETE
config LIBC_EGLIBC_V_2_7
bool
prompt "2_7 (OBSOLETE)"
depends on OBSOLETE
config LIBC_EGLIBC_V_2_6
bool
prompt "2_6 (OBSOLETE)"
depends on OBSOLETE
config LIBC_EGLIBC_V_2_5
bool
prompt "2_5 (OBSOLETE)"
depends on OBSOLETE
config LIBC_EGLIBC_V_TRUNK
bool
prompt "'trunk'"
select LIBC_EGLIBC_2_14_or_later
help
Selecting this will export the trunk of the eglibc subversion repository.
endchoice
config LIBC_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2_16" if LIBC_EGLIBC_V_2_16
default "2_15" if LIBC_EGLIBC_V_2_15
default "2_14" if LIBC_EGLIBC_V_2_14
default "2_13" if LIBC_EGLIBC_V_2_13
default "2_12" if LIBC_EGLIBC_V_2_12
default "2_11" if LIBC_EGLIBC_V_2_11
default "2_10" if LIBC_EGLIBC_V_2_10
default "2_9" if LIBC_EGLIBC_V_2_9
default "2_8" if LIBC_EGLIBC_V_2_8
default "2_7" if LIBC_EGLIBC_V_2_7
default "2_6" if LIBC_EGLIBC_V_2_6
default "2_5" if LIBC_EGLIBC_V_2_5
default "trunk" if LIBC_EGLIBC_V_TRUNK
config LIBC_EGLIBC_2_16_or_later
bool
select LIBC_EGLIBC_2_15_or_later
config LIBC_EGLIBC_2_15_or_later
bool
select LIBC_EGLIBC_2_14_or_later
config LIBC_EGLIBC_2_14_or_later
bool
select LIBC_EGLIBC_2_13_or_later
config LIBC_EGLIBC_2_13_or_later
bool
select LIBC_EGLIBC_2_12_or_later
config LIBC_EGLIBC_2_12_or_later
bool
select LIBC_EGLIBC_2_11_or_later
config LIBC_EGLIBC_2_11_or_later
bool
select LIBC_EGLIBC_2_10_or_later
config LIBC_EGLIBC_2_10_or_later
bool
select LIBC_EGLIBC_2_9_or_later
config LIBC_EGLIBC_2_9_or_later
bool
select LIBC_EGLIBC_HAS_PKGVERSION_BUGURL
config LIBC_EGLIBC_HAS_PKGVERSION_BUGURL
bool
if CONFIGURE_has_svn
config EGLIBC_REVISION
string
prompt "Revision to use"
default "HEAD"
help
Enter the revision of trunk you want to use.
Default is HEAD.
A revision argument can be one of:
NUMBER revision number
'{' DATE '}' revision at start of the date (*)
'HEAD' latest in repository
(*) If you want to use a date, please use ISO-8601 formats if
at all possible.
config EGLIBC_HTTP
bool
prompt "use http:// instead of svn://"
help
By default, when eglibc is downloaded it is checked out using
svn://svn.eglibc.org. This option allows you to download eglibc
from http://www.eglibc.org, if you are behind a proxy or firewall.
If you are behind a proxy, don't forget to update your
.subversion/servers file with your proxy info in [global].
config EGLIBC_CHECKOUT
bool
prompt "checkout instead of export"
default y if LIBC_EGLIBC_V_TRUNK
help
By default, the eglibc download will be an export of the subversion
repository. If you say 'y' here, then the repository will instead be
checked-out, so that you can update it later.
Note that crosstool-NG will *not* update your working copy, you will
have to do that yourself.
endif # ! CONFIGURE_has_svn
if ! CONFIGURE_has_svn
comment "svn is missing. You'll have to either:"
comment "| - have a pre-downloaded local tarball"
comment "| - or have a LAN mirror with a pre-downloaded tarball"
comment "otherwise you won't be able to download eglibc"
endif # ! CONFIGURE_has_svn
config EGLIBC_OPT_SIZE
bool
prompt "optimize eglibc for size (-Os)"
help
Optimize eglibc for size using -Os instead of -O2. This will make eglibc
smaller but may make it slower.
config EGLIBC_CUSTOM_CONFIG
bool
prompt "Use custom configuration file"
help
Use a custom configuration file to disable some features in the eglibc
library. The configuration file options are described in detail in the
option-groups.def file in the eglibc source directory.
if EGLIBC_CUSTOM_CONFIG
config EGLIBC_OPTION_GROUPS_FILE
string
prompt "Path to the option-groups configuration file"
default ""
help
Path to the option groups configuration file.
config EGLIBC_BUNDLED_NSS_CONFIG
bool
prompt "Use bundled NSS config file"
default y
help
Use minimal nsswitch configuration file bundled in eglibc.
This option is only meaningful when runtime nss configuration
is disabled in the option groups file.
config EGLIBC_NSS_CONFIG_FILE
string
prompt "Path to the NSS config file"
default ""
depends on !EGLIBC_BUNDLED_NSS_CONFIG
help
Path to the nsswitch configuration file
config EGLIBC_BUNDLED_NSS_FUNCTIONS
bool
prompt "Use bundled NSS functions file"
default y
help
Use minimal nsswitch functions file bundled in eglibc.
This option is only meaningful when runtime nss configuration
is disabled in the option groups file.
config EGLIBC_NSS_FUNCTIONS_FILE
string
prompt "Path to the NSS functions file"
default ""
depends on !EGLIBC_BUNDLED_NSS_FUNCTIONS
help
Path to the nsswitch functions file
endif
source "config/libc/glibc-eglibc.in-common"
# This file contains the common configuration options
# that apply to both glibc and eglibc.
# Some architectures require the ports addon. List them one by one here:
# This list must be carefully in sync with the architectures names
# we can find in config/arch/*
config LIBC_GLIBC_MAY_FORCE_PORTS
bool
default y if ARCH_arm
default y if ARCH_mips
select LIBC_GLIBC_USE_PORTS
# Force using the BFD linker during the toolchain build
config LIBC_glibc_familly
bool
default y
select BINUTILS_FORCE_LD_BFD
config LIBC_GLIBC_EXTRA_CONFIG_ARRAY
string
prompt "extra config"
default ""
help
Extra flags to pass onto ./configure when configuring.
You can enter multiple arguments here, and arguments can contain spaces
if they are properly quoted (or escaped, but prefer quotes). Eg.:
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
config LIBC_GLIBC_CONFIGPARMS
string
prompt "Extra config params (READ HELP)"
default "" if ! ARCH_sh
default "no-z-defs=yes" if ARCH_sh
help
Some architectures need to set options in the file configparms.
This is the case for sh3/4, which really need to set configparms
to "no-z-defs=yes" as of gcc-3.4/glibc-2.3.2.
Unless you are building a toolchain for sh3/4, you should leave that empty.
Note: If you need to pass more than one value, separate them with
'\n'. Eg.: var1=val1\nvar2=val2
config LIBC_GLIBC_EXTRA_CFLAGS
string
prompt "extra target CFLAGS"
default ""
help
Extra target CFLAGS to use when building.
config LIBC_EXTRA_CC_ARGS
string
prompt "gcc extra flags"
default ""
help
Extra flags to pass gcc when building.
Seldom used, except for sparc64 which seems to need the flag -64
to be passed onto gcc.
config LIBC_ENABLE_FORTIFIED_BUILD
bool
prompt "Enable fortified build (EXPERIMENTAL)"
depends on EXPERIMENTAL
help
If you say 'y' here, then glibc will be using fortified versions
of functions with format arguments (eg. vsyslog, printf...), and
do a sanity check on the format at runtime, to avoid some of the
common format string attacks.
This is currently not supported, and will most probably result in
a broken build, with an error message like:
../misc/syslog.c: In function '__vsyslog_chk':
../misc/syslog.c:123: sorry, unimplemented: inlining failed in
call to 'syslog': function body not available
If you are brave enough and want to debug the issue, then say 'y'
here. Otherwise, be still and say 'n' (the default). ;-)
config LIBC_DISABLE_VERSIONING
bool
prompt "Disable symbols versioning"
help
Do not include versioning information in the library objects.
config LIBC_OLDEST_ABI
string
prompt "Oldest supported ABI"
default ""
help
Set the oldest ABI supported by the C library.
Setting this option, for example, to 2.2 will provide ABI support
back to (e)glibc-2.2.
If this option is not set, (e)glibc will choose for you.
config LIBC_GLIBC_FORCE_UNWIND
bool
prompt "Force unwind support (READ HELP!)"
default y
help
If your toolchain fails building while building the C library
start files, or the complete C library, with a message like:
configure: error: forced unwind support is required
then you may try changing this option. Otherwise, leave it to
the default 'y'.
The issue seems to be related to building NPTL on old versions
of glibc (and possibly eglibc as well) on some architectures
(seen on s390, s390x and x86_64).
config LIBC_GLIBC_USE_PORTS
bool
prompt "Use the ports addon"
help
The ports addon contains some architecture ports that are not available
in the official distribution.
For example, this is the case for ARM with glibc-2.4 and above.
Say n only if you're sure that your architecture is in the official
distribution for your chosen version.
config LIBC_ADDONS_LIST
string
prompt "Extra addons"
default ""
help
Extra addons to include. Space separated list.
You need to specify neither linuxthreads nor nptl, as they are added
automagically for you depending on the threading model you chose
earlier.
Eg.: crypt (for very old libces)
if LIBC_GLIBC_USE_PORTS || ( LIBC_ADDONS_LIST != "" )
comment "WARNING !!! "
comment "| For glibc >= 2.8, it can happen that the tarballs "
comment "| for the addons are not available for download. "
comment "| If that happens, bad luck... Try a previous version "
comment "| or try again later... :-( "
endif
config LIBC_LOCALES
bool
prompt "Build and install locales"
help
Whether to build and install the libc locale files for the target,
which is required in order to support internationalization.
if LIBC_glibc && LIBC_LOCALES
comment "WARNING! "
comment "| The built locales will be usable if and only if the build "
comment "| machine and the target: "
comment "| - have the same endianness, "
comment "| - and have the same alignment requirements for uint32_t. "
comment "| You will have to check by yourself (for now). "
endif # LIBC_glibc && LIBC_LOCALES
if KERNEL_linux
choice LIBC_GLIBC_SUPPORTED_KERNEL
bool
prompt "Minimum supported kernel version"
default LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
config LIBC_GLIBC_KERNEL_VERSION_NONE
bool
prompt "Let ./configure decide"
help
Let ./configure decide what minimum kernel version glibc/eglibc
will be able to run against.
This will include legacy compatibility code for older kernels in
the C library, thus ensuring that it will run on a large number
of old kernels.
The minimum kernel version supported will be dependent upon the
target you build for. For example:
alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
sh[34]-*-linux-gnu Requires Linux 2.6.11
powerpc* Requires Linux 2.4.19
arm*-*-linux-*gnueabi Requires Linux 2.6.16
config LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
bool
prompt "Same as kernel headers (default)"
help
Normally, you'll want glibc/eglibc to run against the same kernel
version as the one used for the headers.
This is the default.
If enabled, crosstool-ng will use the chosen version of kernel
headers for the glibc minimum kernel version supported, which is
what gets passed to "--enable-kernel=" when configuring glibc.
Enabling this will ensure that no legacy compatibility code for
older kernels is built into your C libraries, but it will
be unable to run on kernel versions older than whichever kernel
headers version you've built the toolchain for.
If you know for sure that your toolchain will never need to build
applications that will run under a kernel version older than your
chosen kernel headers version (CT_KERNEL_VERSION), you can choose
"y" here.
config LIBC_GLIBC_KERNEL_VERSION_CHOSEN
bool
prompt "Specific kernel version"
help
Specify the earliest Linux kernel version you want glibc to
include support for. This does not have to match the kernel
headers version used for your toolchain. This controls what is
passed to the "--enable-kernel=" option to the glibc configure
script.
If you want to be able to statically link programs with your
toolchain's C library, make sure this kernel version is lower than
all kernels you wish to support to avoid "FATAL: kernel too old"
errors. The higher the version you specify, the less legacy code
will be built into libc.
Most people can leave this at the default value of "2.6.9".
if LIBC_GLIBC_KERNEL_VERSION_CHOSEN
config LIBC_GLIBC_MIN_KERNEL_VERSION
string
prompt "Minimum kernel version to support"
default "2.6.9"
help
Enter here the lowest kernel version glibc/eglibc will be able to
run against.
The minimum kernel version supported will be dependent upon the
target you build for. For example:
alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
sh[34]-*-linux-gnu Requires Linux 2.6.11
powerpc* Requires Linux 2.4.19
arm*-*-linux-*gnueabi Requires Linux 2.6.16
Note that no sanity check is performed by crosstool-NG to ensure
that the value you enter here is appropriate for your target.
endif # LIBC_GLIBC_KERNEL_VERSION_CHOSEN
endchoice
config LIBC_GLIBC_MIN_KERNEL
string
default "" if LIBC_GLIBC_KERNEL_VERSION_NONE
default KERNEL_VERSION if LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
default LIBC_GLIBC_MIN_KERNEL_VERSION if LIBC_GLIBC_KERNEL_VERSION_CHOSEN
endif # KERNEL_linux
此差异已折叠。
source "config/libc/glibc-eglibc.in-common"
# mingw options
## depends on MINGW32
##
## select LIBC_SUPPORT_WIN32THREADS
##
## help The de-facto standard for Mingw distributions.
choice
bool
prompt "Mingw runtime version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config MINGWRT_V_3_18
bool
prompt "3.18"
config MINGWRT_V_select
bool
prompt "Other version"
endchoice
config MINGWRT_VERSION
string
prompt "Mingw runtime version" if MINGWRT_V_select
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "3.18" if MINGWRT_V_3_18
help
Enter the version number of the mingw runtime files to use
此差异已折叠。
此差异已折叠。
此差异已折叠。
# Dummy config file to not use a C library *at all*
## depends on BARE_METAL
##
## help Do not use a C library.
## help
## help This is usefull if your project is self-contained, does not rely on
## help an external C library, and provides all the necessary bits.
## help
## help Most probably usefull to bootloaders, as they generally don't depend
## help on the C library.
## help
## help If unsure: do *not* choose that, and use another option in the choice.
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册