openwrt/toolchain/Config.in
Julien Dusser 241e6dd3e9 build: cleanup SSP_SUPPORT configure option
Configure variable SSP_SUPPORT is ambiguous for packages (tor, openssh,
avahi, freeswitch). It means 'toolchain supporting SSP', but for toolchain
and depends it means 'build gcc with libssp'.

Musl no longer uses libssp (1877bc9d8f), it has internal support, so
SSP_SUPPORT was disabled leading some package to not use SSP.

No information why Glibc and uClibc use libssp, but they may also provide
their own SSP support. uClibc used it own with commit 933b588e25 but it was
reverted in f3cacb9e84 without details.

Create an new configure GCC_LIBSSP and automatically enable SSP_SUPPORT
if either USE_MUSL or GCC_LIBSSP.

Signed-off-by: Julien Dusser <julien.dusser@free.fr>
2018-01-27 19:02:48 +01:00

322 lines
9.0 KiB
Plaintext

# Copyright (C) 2006-2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
menuconfig TARGET_OPTIONS
bool "Target Options" if DEVEL
config TARGET_OPTIMIZATION
string "Target Optimizations" if TARGET_OPTIONS
default DEFAULT_TARGET_OPTIMIZATION
help
Optimizations to use when building for the target host.
config SOFT_FLOAT
bool "Use software floating point by default" if TARGET_OPTIONS
default y if !HAS_FPU
depends on arm || armeb || powerpc || mipsel || mips || mips64el || mips64
help
If your target CPU does not have a Floating Point Unit (FPU) or a
kernel FPU emulator, but you still wish to support floating point
functions, then everything will need to be compiled with soft floating
point support (-msoft-float).
Most people will answer N.
config USE_MIPS16
bool "Build packages with MIPS16 instructions" if TARGET_OPTIONS
depends on HAS_MIPS16
default y
help
If your target CPU does support the MIPS16 instruction set
and you want to use it for packages, enable this option.
MIPS16 produces smaller binaries thus reducing pressure on
caches and TLB.
Most people will answer N.
menuconfig EXTERNAL_TOOLCHAIN
bool
prompt "Use external toolchain" if DEVEL
help
If enabled, LEDE will compile using an existing toolchain instead of
compiling one.
config NATIVE_TOOLCHAIN
bool
prompt "Use host's toolchain" if DEVEL
depends on EXTERNAL_TOOLCHAIN
select NO_STRIP
help
If enabled, LEDE will compile using the native toolchain for your
host instead of compiling one.
config TARGET_NAME
string
prompt "Target name" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "aarch64-unknown-linux-gnu" if aarch64
default "aarch64_be-unknown-linux-gnu" if aarch64_be
default "arm-unknown-linux-gnu" if arm
default "armeb-unknown-linux-gnu" if armeb
default "i486-unknown-linux-gnu" if i386
default "mips-unknown-linux-gnu" if mips
default "mipsel-unknown-linux-gnu" if mipsel
default "powerpc-unknown-linux-gnu" if powerpc
default "x86_64-unknown-linux-gnu" if x86_64
config TOOLCHAIN_PREFIX
string
prompt "Toolchain prefix" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "aarch64-unknown-linux-gnu" if aarch64
default "aarch64_be-unknown-linux-gnu" if aarch64_be
default "arm-unknown-linux-gnu-" if arm
default "armeb-unknown-linux-gnu-" if armeb
default "i486-unknown-linux-gnu-" if i386
default "mips-unknown-linux-gnu-" if mips
default "mipsel-unknown-linux-gnu-" if mipsel
default "powerpc-unknown-linux-gnu-" if powerpc
default "x86_64-unknown-linux-gnu-" if x86_64
config TOOLCHAIN_ROOT
string
prompt "Toolchain root" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "/opt/cross/aarch64-unknown-linux-gnu" if aarch64
default "/opt/cross/aarch64_be-unknown-linux-gnu" if aarch64_be
default "/opt/cross/arm-unknown-linux-gnu" if arm
default "/opt/cross/armeb-unknown-linux-gnu" if armeb
default "/opt/cross/i486-unknown-linux-gnu" if i386
default "/opt/cross/mips-unknown-linux-gnu" if mips
default "/opt/cross/mipsel-unknown-linux-gnu" if mipsel
default "/opt/cross/powerpc-unknown-linux-gnu" if powerpc
default "/opt/cross/x86_64-unknown-linux-gnu" if x86_64
choice TOOLCHAIN_LIBC_TYPE
prompt "Toolchain libc" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
help
Specify the libc type used by the external toolchain. The given value
is passed as -m flag to all gcc and g++ invocations. This is mainly
intended for multilib toolchains which support glibc and uclibc at
the same time. If no value is specified, no -m flag is passed.
config EXTERNAL_TOOLCHAIN_LIBC_USE_GLIBC
bool "glibc"
select USE_GLIBC
config EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC
bool "uClibc"
select USE_UCLIBC
depends on !(aarch64 || aarch64_be)
config EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
bool "musl"
select USE_MUSL
endchoice
config TOOLCHAIN_LIBC
string
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "glibc" if EXTERNAL_TOOLCHAIN_LIBC_USE_GLIBC
default "uclibc" if EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC
default "musl" if EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
config TOOLCHAIN_BIN_PATH
string
prompt "Toolchain program path" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "./usr/bin ./bin"
help
Specify additional directories searched for toolchain binaries
(override PATH). Use ./DIR for directories relative to the root above.
config TOOLCHAIN_INC_PATH
string
prompt "Toolchain include path" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "./usr/include ./include"
help
Specify additional directories searched for header files (override
CPPFLAGS). Use ./DIR for directories relative to the root above.
config TOOLCHAIN_LIB_PATH
string
prompt "Toolchain library path" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "./usr/lib ./lib"
help
Specify additional directories searched for libraries (override LDFLAGS).
Use ./DIR for directories relative to the root above.
config NEED_TOOLCHAIN
bool
depends on DEVEL
default y if !EXTERNAL_TOOLCHAIN
menuconfig TOOLCHAINOPTS
bool "Toolchain Options" if DEVEL
depends on NEED_TOOLCHAIN
menuconfig EXTRA_TARGET_ARCH
bool
prompt "Enable an extra toolchain target architecture" if TOOLCHAINOPTS
depends on !sparc
default n
help
Some builds may require a 'biarch' toolchain. This option
allows you to specify an additional target arch.
Most people will answer N here.
config EXTRA_TARGET_ARCH_NAME
string
prompt "Extra architecture name" if EXTRA_TARGET_ARCH
help
Specify the cpu name (eg powerpc64 or x86_64) of the
additional target architecture.
config EXTRA_TARGET_ARCH_OPTS
string
prompt "Extra architecture compiler options" if EXTRA_TARGET_ARCH
help
If you're specifying an addition target architecture,
you'll probably need to also provide options to make
the compiler use this alternate arch.
For example, if you're building a compiler that can build
both powerpc and powerpc64 binaries, you'll need to
specify -m64 here.
choice
prompt "MIPS64 user-land ABI" if TOOLCHAINOPTS && (mips64 || mips64el)
default MIPS64_ABI_N64
help
MIPS64 supports 3 different user-land ABIs: o32 (legacy),
n32 and n64.
config MIPS64_ABI_N64
bool "n64"
config MIPS64_ABI_N32
depends on !LIBC_USE_MUSL
bool "n32"
config MIPS64_ABI_O32
bool "o32"
endchoice
comment "Binary tools"
depends on TOOLCHAINOPTS
source "toolchain/binutils/Config.in"
comment "Compiler"
depends on TOOLCHAINOPTS
source "toolchain/gcc/Config.in"
config YASM
bool
depends on ( i386 || x86_64 )
prompt "Build yasm" if TOOLCHAINOPTS
default y
help
Enable if you want to build yasm
comment "C Library"
depends on TOOLCHAINOPTS
choice
prompt "C Library implementation" if TOOLCHAINOPTS
default LIBC_USE_UCLIBC if arc
default LIBC_USE_GLIBC if powerpc64
default LIBC_USE_MUSL
help
Select the C library implementation.
config LIBC_USE_GLIBC
bool "Use glibc"
select USE_GLIBC
depends on !arc
config LIBC_USE_UCLIBC
select USE_UCLIBC
bool "Use uClibc"
depends on !(aarch64 || aarch64_be || powerpc64)
depends on BROKEN || !(arm || armeb || i386 || x86_64 || mips || mipsel || mips64 || mips64el || powerpc)
config LIBC_USE_MUSL
select USE_MUSL
bool "Use musl"
depends on !(arc || powerpc64)
endchoice
source "toolchain/uClibc/Config.in"
comment "Debuggers"
depends on TOOLCHAINOPTS
config GDB
bool
depends on !(aarch64 || aarch64_be)
prompt "Build gdb" if TOOLCHAINOPTS
default y if !EXTERNAL_TOOLCHAIN
help
Enable if you want to build the gdb.
config USE_GLIBC
default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (powerpc64)
bool
config USE_UCLIBC
default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (arc)
bool
config USE_MUSL
default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && !(arc || powerpc64)
bool
config SSP_SUPPORT
default y if USE_MUSL || GCC_LIBSSP
bool
config USE_EXTERNAL_LIBC
bool
default y if EXTERNAL_TOOLCHAIN || NATIVE_TOOLCHAIN
source "toolchain/binutils/Config.version"
source "toolchain/gcc/Config.version"
config LIBC
string
default "glibc" if USE_GLIBC
default "uClibc" if USE_UCLIBC
default "musl" if USE_MUSL
config TARGET_SUFFIX
string
default "gnueabi" if USE_GLIBC && (arm || armeb)
default "gnu" if USE_GLIBC && !(arm || armeb)
default "uclibcgnueabi" if USE_UCLIBC && (arm || armeb)
default "uclibc" if USE_UCLIBC && !(arm || armeb)
default "muslgnueabi" if USE_MUSL && (arm || armeb)
default "musl" if USE_MUSL && !(arm || armeb)
config MIPS64_ABI
depends on mips64 || mips64el
string
default "64" if MIPS64_ABI_N64
default "n32" if MIPS64_ABI_N32
default "32" if MIPS64_ABI_O32
default "64"