OpenWrt – Rev 3

Subversion Repositories:
Rev:
# 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
        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"