mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-04 15:26:38 +08:00
b21ddbfa18
When building with an external toolcahin with musl also include ./include/fortify by default. This is also done when we build with the internal toolchain using musl libc. Without this extra include the fortify source feature is not working when using an external musl toolchain. All binaries were compiled without fortify source when an external musl toolchain was used. All binaries release done by the OpenWrt project use the internal toolcahin where fortify source is working. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
371 lines
10 KiB
Plaintext
371 lines
10 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.
|
|
|
|
|
|
choice BPF_TOOLCHAIN
|
|
prompt "BPF toolchain" if DEVEL
|
|
default BPF_TOOLCHAIN_BUILD_LLVM if BUILDBOT
|
|
default BPF_TOOLCHAIN_PREBUILT if HAS_PREBUILT_LLVM_TOOLCHAIN
|
|
default BPF_TOOLCHAIN_NONE
|
|
|
|
config BPF_TOOLCHAIN_NONE
|
|
bool "None"
|
|
|
|
config BPF_TOOLCHAIN_PREBUILT
|
|
bool "Use prebuilt LLVM toolchain"
|
|
depends on HAS_PREBUILT_LLVM_TOOLCHAIN
|
|
select USE_LLVM_PREBUILT
|
|
|
|
config BPF_TOOLCHAIN_HOST
|
|
select USE_LLVM_HOST
|
|
bool "Use host LLVM toolchain"
|
|
|
|
config BPF_TOOLCHAIN_BUILD_LLVM
|
|
select USE_LLVM_BUILD
|
|
bool "Build LLVM toolchain for eBPF"
|
|
help
|
|
If enabled, a LLVM toolchain for building eBPF binaries will be built.
|
|
If this is not enabled, eBPF packages can only be built if the host
|
|
has a suitable toolchain
|
|
endchoice
|
|
|
|
config BPF_TOOLCHAIN_HOST_PATH
|
|
string
|
|
depends on BPF_TOOLCHAIN_HOST
|
|
prompt "Host LLVM toolchain path (prefix)" if DEVEL
|
|
default "/usr/local/opt/llvm" if HOST_OS_MACOS
|
|
default ""
|
|
|
|
menuconfig EXTERNAL_TOOLCHAIN
|
|
bool
|
|
prompt "Use external toolchain" if DEVEL
|
|
help
|
|
If enabled, the buildroot 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, the buildroot 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_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 "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/fortify ./include" if EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
|
|
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"
|
|
|
|
config DWARVES
|
|
bool
|
|
prompt "Build pahole" if TOOLCHAINOPTS
|
|
depends on !HOST_OS_MACOS
|
|
default n
|
|
help
|
|
Enable if you want to build pahole and the dwarves tools.
|
|
|
|
comment "Compiler"
|
|
depends on TOOLCHAINOPTS
|
|
|
|
source "toolchain/gcc/Config.in"
|
|
|
|
config NASM
|
|
bool
|
|
depends on ( i386 || x86_64 )
|
|
prompt "Build nasm" if TOOLCHAINOPTS
|
|
default y
|
|
help
|
|
Enable if you want to build nasm
|
|
|
|
comment "C Library"
|
|
depends on TOOLCHAINOPTS
|
|
|
|
choice
|
|
prompt "C Library implementation" if TOOLCHAINOPTS
|
|
default LIBC_USE_GLIBC if arc
|
|
default LIBC_USE_MUSL
|
|
help
|
|
Select the C library implementation.
|
|
|
|
config LIBC_USE_GLIBC
|
|
bool "Use glibc"
|
|
select USE_GLIBC
|
|
|
|
config LIBC_USE_MUSL
|
|
select USE_MUSL
|
|
bool "Use musl"
|
|
depends on !arc
|
|
|
|
endchoice
|
|
|
|
source "toolchain/musl/Config.in"
|
|
|
|
comment "Debuggers"
|
|
depends on TOOLCHAINOPTS
|
|
|
|
config GDB
|
|
bool
|
|
prompt "Build gdb" if TOOLCHAINOPTS
|
|
default y if !EXTERNAL_TOOLCHAIN
|
|
help
|
|
Enable if you want to build the gdb.
|
|
|
|
config GDB_PYTHON
|
|
bool
|
|
depends on GDB
|
|
prompt "Build gdb with python binding"
|
|
|
|
help
|
|
Enable the python bindings for GDB to allow using python in the gdb shell.
|
|
|
|
config HAS_BPF_TOOLCHAIN
|
|
bool
|
|
|
|
config HAS_PREBUILT_LLVM_TOOLCHAIN
|
|
def_bool $(shell, [ -f llvm-bpf/.llvm-version ] && echo y || echo n)
|
|
|
|
config USE_LLVM_HOST
|
|
select HAS_BPF_TOOLCHAIN
|
|
bool
|
|
|
|
config USE_LLVM_PREBUILT
|
|
select HAS_BPF_TOOLCHAIN
|
|
default y if !DEVEL && !BUILDBOT && HAS_PREBUILT_LLVM_TOOLCHAIN
|
|
bool
|
|
|
|
config USE_LLVM_BUILD
|
|
default y if !DEVEL && BUILDBOT
|
|
select HAS_BPF_TOOLCHAIN
|
|
bool
|
|
|
|
config USE_GLIBC
|
|
default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (arc)
|
|
bool
|
|
|
|
config USE_MUSL
|
|
default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && !(arc)
|
|
bool
|
|
|
|
config SSP_SUPPORT
|
|
default y if !PKG_CC_STACKPROTECTOR_NONE
|
|
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 "musl" if USE_MUSL
|
|
|
|
config TARGET_SUFFIX
|
|
string
|
|
default "gnueabi" if USE_GLIBC && (arm || armeb)
|
|
default "gnu" if USE_GLIBC && !(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"
|