diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-10-31 18:20:21 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-10-31 18:20:21 +0000 |
commit | 6737908f74ff566748864548cf35bb1da8e64af6 (patch) | |
tree | 6eeafda4548f49d960e1b597c880a810a08a66f0 /extra/Configs | |
parent | c734e7ca57f520e55236b21eaef16ac40099a378 (diff) |
Ok, this commit is _huge_ and its gonna change the world. I've
been working on a new config system on and off for about 6 months
now, but I've never been fully satisfied. Well, I'm finally am
happy with the new config system, so here it is. This completely
removes the old uClibc configuration system, and replaces it with
an entirely new system based on LinuxKernelConf, from
http://www.xs4all.nl/~zippel/lc/
As it turns out, Linus has just merged LinuxKernelConf into Linux
2.5.45, so it looks like I made the right choice.
I have thus far updated only x86. I'll be updating the other
architectures shortly.
-Erik
Diffstat (limited to 'extra/Configs')
-rw-r--r-- | extra/Configs/Config.i386 | 370 | ||||
-rw-r--r-- | extra/Configs/Config.i386.default | 73 | ||||
-rw-r--r-- | extra/Configs/Config.in | 260 |
3 files changed, 517 insertions, 186 deletions
diff --git a/extra/Configs/Config.i386 b/extra/Configs/Config.i386 index 13e4916bb..4b3ff7b5a 100644 --- a/extra/Configs/Config.i386 +++ b/extra/Configs/Config.i386 @@ -1,189 +1,187 @@ -# Library Configuration rules for uClibc # -# This file contains rules which are shared between multiple Makefiles. All -# normal configuration options live in the file named "Config". You probably -# should not mess with this file unless you know what you are doing... -# -# Copyright (C) 2000 by Lineo, inc. -# Copyright (C) 2000,2001 Erik Andersen <andersee@debian.org> +# For a description of the syntax of this configuration file, +# see Documentation/kbuild/config-language.txt. # -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU Library General Public License as published by the Free -# Software Foundation; either version 2 of the License, or (at your option) any -# later version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more -# details. -# -# You should have received a copy of the GNU Library General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Derived in part from the Linux-8086 C library, the GNU C Library, and several -# other sundry sources. Files within this library are copyright by their -# respective copyright holders. - -NATIVE_CC = gcc - -# If you are running a cross compiler, you may want to set this -# to something more interesting... Target architecture is determined -# by asking this compiler what arch it compiles stuff for. -CROSS = #$(TARGET_ARCH)-linux- -CC = $(CROSS)gcc -AR = $(CROSS)ar -LD = $(CROSS)ld -NM = $(CROSS)nm -STRIPTOOL = $(CROSS)strip -#STRIPTOOL = /bin/true - -# Set the following to `true' to make a debuggable build, and `false' for -# production builds. -DODEBUG = false - -# Compiler warnings you want to see -WARNINGS=-Wall - -# Note that the kernel source you use to compile with should be the same as the -# Linux kernel you run your apps on. uClibc doesn't even try to achieve binary -# compatibility across kernel versions. So don't expect, for example, uClibc -# compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x -# can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, -# but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't -# work at all. You have been warned. -KERNEL_SOURCE=/usr/src/linux - -# Set this to `false' if your CPU doesn't have a memory management unit (MMU). -# Set it to `true' otherwise. -HAS_MMU = true - -# Set this to `false' if you don't have/need basic floating point support -# support in libc (strtod, printf, scanf). Set it to `true' otherwise. -# If this is not true, then libm will not be built. -HAS_FLOATING_POINT = true - -# Set to `true' if you want the math library to contain the full set -# of C99 math library features. Costs an extra 35k or so on x86. -DO_C99_MATH = false - -# Set this to 'false if you don't need shadow password support. -HAS_SHADOW = false - -# Set this to `false' if you don't have/need locale support; `true' otherwise. -# NOTE: Currently does not affect collation. -# You must also generate the locale data and associated .h file. -# See the README in directory extra/locale for details. -HAS_LOCALE = false - -# Set this to `false' if you don't have/need wide char support. -HAS_WCHAR = false - -# This specifies which malloc implementation is used. -# -# "malloc" use mmap for all allocations and so works very well on MMU-less -# systems that do not support the brk() system call. It is pretty smart -# about reusing already allocated memory, and minimizing memory wastage. -# -# "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call -# for all memory allocations. This makes it very fast. It is also pretty -# smart about reusing already allocated memory, and minimizing memory wastage. -# Because this uses brk() it will not work on uClinux MMU-less systems. -#MALLOC = malloc -MALLOC = malloc-930716 - -# If you want large file support (greater then 2 GiB) turn this on. -# Do not enable this unless your kernel provides large file support. -DOLFS = false - -# Posix regular expression code is really big -- 27k all by itself. -# If you don't use regular expressions, turn this off and save space. -# Of course, if you only staticly link, leave this on, since it will -# only be included in your apps if you use regular expressions. -INCLUDE_REGEX=true - -# If you want to include RPC support, enable this. RPC is almost never used -# for anything except NFS support, so unless you plan to use NFS, leave this -# disabled. This is off by default. -INCLUDE_RPC = false - -# Normally we enable just enough RPC support for things like rshd and -# nfs mount to work. If you find you need the rest of the RPC stuff, -# then enable this. -INCLUDE_FULL_RPC = false - -# If you want to include support for the next version of the Internet -# Protocol: IP version 6, enable this. This is off by default. -INCLUDE_IPV6 = false - -# If you want to include threads support, enable this. The C library will -# be compiled thread-safe, and the libpthread library will be built. -INCLUDE_THREADS = true - -# If you want to support only Unix 98 PTYs enable this. Some older -# applications may need this disabled. For most current programs, -# you can generally leave this true. -UNIX98PTY_ONLY = true - -# Enable this if /dev/pts is on a devpts or devfs file system. Both -# these filesystems automatically manage permissions on the /dev/pts -# devices. You may need to mount this fs on /dev/pts for this to work. -# This is true by default. -ASSUME_DEVPTS = true - - -# If you want to compile the library as PIC code, turn this on. -# This is automagically enabled when HAVE_SHARED is true -DOPIC = false - -# Enable support for shared libraries? If this is false, you can -# ignore all the rest of the options in this file... -HAVE_SHARED = true - -# uClibc has a native shared library loader for some architectures. -BUILD_UCLIBC_LDSO=true - -# If you are using shared libraries, but do not want/have a native -# uClibc shared library loader, please specify the name of your -# system's shared library loader here... -#SYSTEM_LDSO=/lib/ld-linux.so.2 - -# When using shared libraries, this path is the location where the -# shared library will be invoked. This value will be compiled into -# every binary compiled with uClibc. -# -# BIG FAT WARNING: -# If you do not have a shared library loader with the correct name -# sitting in the directory this points to, your binaries will not run. -SHARED_LIB_LOADER_PATH=$(DEVEL_PREFIX)/lib - -# DEVEL_PREFIX is the directory into which the uClibc development -# environment will be installed. The result will look something -# like the following: -# DEVEL_PREFIX/ -# lib/ <contains all runtime and static libs> -# include/ <Where all the header files go> -# This value is used by the 'make install' Makefile target. Since this -# directory is compiled into the uclibc cross compiler spoofer, you -# have to recompile if you change this value... -DEVEL_PREFIX = /usr/$(TARGET_ARCH)-linux-uclibc - -# SYSTEM_DEVEL_PREFIX is the directory prefix used when installing -# bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by -# the 'make install' target, and is not compiled into anything. This -# defaults to $DEVEL_PREFIX/usr, but makers of .rpms and .debs will -# want to set this to "/usr" instead. -SYSTEM_DEVEL_PREFIX = $(DEVEL_PREFIX) - -# DEVEL_TOOL_PREFIX is the directory prefix used when installing -# bin/gcc, bin/ld, etc. This is only used by the 'make install' -# target, and is not compiled into anything. This defaults to -# $DEVEL_PREFIX/usr, but makers of .rpms and .debs may want to -# set this to something else. -DEVEL_TOOL_PREFIX = $(DEVEL_PREFIX)/usr - -# If you want 'make install' to install everything under a temporary -# directory, the define PREFIX during the install step, -# i.e., 'make PREFIX=/var/tmp/uClibc install'. -#PREFIX = $(TOPDIR)/_install + +mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + +choice + prompt "Target Processor Type" + default CONFIG_386 + help + This is the processor type of your CPU. This information is used for + optimizing purposes. To build a library that will run on all x86 CPU + types (albeit not optimally fast), you can specify "386" here. If + you pick anything other than "386", there is no guarantee that uClibc + will even run on anything other than the selected processor type. + + Here are the settings recommended for greatest speed: + - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI + 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels + will run on a 386 class machine. + - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or + SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S. + - "586" for generic Pentium CPUs lacking the TSC + (time stamp counter) register. + - "Pentium-Classic" for the Intel Pentium. + - "Pentium-MMX" for the Intel Pentium MMX. + - "Pentium-Pro" for the Intel Pentium Pro/Celeron/Pentium II. + - "Pentium-III" for the Intel Pentium III + and Celerons based on the Coppermine core. + - "Pentium-4" for the Intel Pentium 4. + - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D). + - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird). + - "Crusoe" for the Transmeta Crusoe series. + - "Winchip-C6" for original IDT Winchip. + - "Winchip-2" for IDT Winchip 2. + - "Winchip-2A" for IDT Winchips with 3dNow! capabilities. + - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3. + + If you don't know what to do, choose "386". + +config CONFIG_386 + bool "386" + +config CONFIG_486 + bool "486" + +config CONFIG_586 + bool "586/K5/5x86/6x86/6x86MX" + +config CONFIG_586TSC + bool "Pentium-Classic" + +config CONFIG_586MMX + bool "Pentium-MMX" + +config CONFIG_686 + bool "Pentium-Pro/Celeron/Pentium-II" + +config CONFIG_PENTIUMIII + bool "Pentium-III/Celeron(Coppermine)" + +config CONFIG_PENTIUM4 + bool "Pentium-4" + +config CONFIG_K6 + bool "K6/K6-II/K6-III" + +config CONFIG_K7 + bool "Athlon/Duron/K7" + +config CONFIG_ELAN + bool "Elan" + +config CONFIG_CRUSOE + bool "Crusoe" + +config CONFIG_WINCHIPC6 + bool "Winchip-C6" + +config CONFIG_WINCHIP2 + bool "Winchip-2" + +config CONFIG_WINCHIP3D + bool "Winchip-2A/Winchip-3" + +config CONFIG_CYRIXIII + bool "CyrixIII/VIA-C3" + +endchoice + +config UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be entirely omitted from uClibc. Other functions, such + as printf() and scanf() will still be included in the library, but + will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_HAS_FLOATS + default y + help + If your target CPU does not have a floating management unit (FPU), + but you wish to support floating point functions, then uClibc will + need to be compiled with soft floating point support (-msoft-float). + If your target CPU does not have an FPU or an FPU emulator within the + Linux kernel, then you should answer N. + + Most people will answer Y. + +config DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditionla POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config C_SYMBOL_PREFIX + string + default "" + +config UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !HAS_MMU + default y + +config HAVE_ELF + bool + default y + +config NO_UNDERSCORES + bool + default n + +config HAVE_DOT_HIDDEN + bool + default n + +endmenu + +source "extra/Configs/Config.in" + diff --git a/extra/Configs/Config.i386.default b/extra/Configs/Config.i386.default new file mode 100644 index 000000000..3fdaa05b7 --- /dev/null +++ b/extra/Configs/Config.i386.default @@ -0,0 +1,73 @@ +# +# Automatically generated make config: don't edit +# + +# +# Target Architecture Features and Options +# +CONFIG_386=y +# CONFIG_486 is not set +# CONFIG_586 is not set +# CONFIG_586TSC is not set +# CONFIG_586MMX is not set +# CONFIG_686 is not set +# CONFIG_PENTIUMIII is not set +# CONFIG_PENTIUM4 is not set +# CONFIG_K6 is not set +# CONFIG_K7 is not set +# CONFIG_ELAN is not set +# CONFIG_CRUSOE is not set +# CONFIG_WINCHIPC6 is not set +# CONFIG_WINCHIP2 is not set +# CONFIG_WINCHIP3D is not set +# CONFIG_CYRIXIII is not set +UCLIBC_HAS_MMU=y +UCLIBC_HAS_FLOATS=y +HAS_FPU=y +# DO_C99_MATH is not set +WARNINGS="-Wall" +KERNEL_SOURCE="/usr/src/linux" +C_SYMBOL_PREFIX="" +UCLIBC_UCLINUX_BROKEN_MUNMAP=y +HAVE_ELF=y +# NO_UNDERSCORES is not set +# HAVE_DOT_HIDDEN is not set + +# +# General Library Settings +# +HAVE_PIC=y +HAVE_SHARED=y +BUILD_UCLIBC_LDSO=y +UCLIBC_HAS_THREADS=y +UCLIBC_HAS_LFS=y +# MALLOC is not set +MALLOC_930716=y +HAS_SHADOW=y +UCLIBC_HAS_REGEX=y +UNIX98PTY_ONLY=y +ASSUME_DEVPTS=y + +# +# Networking Support +# +# UCLIBC_HAS_IPV6 is not set +# UCLIBC_HAS_RPC is not set + +# +# String and Stdio Support +# +# UCLIBC_HAS_WCHAR is not set +# USE_OLD_VFPRINTF is not set + +# +# Library Installation Options +# +SHARED_LIB_LOADER_PATH="$(DEVEL_PREFIX)/lib" +DEVEL_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc" +SYSTEM_DEVEL_PREFIX="$(DEVEL_PREFIX)" + +# +# uClibc hacking options +# +# DODEBUG is not set diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in new file mode 100644 index 000000000..43bc9a68c --- /dev/null +++ b/extra/Configs/Config.in @@ -0,0 +1,260 @@ +# +# For a description of the syntax of this configuration file, +# see Documentation/kbuild/config-language.txt. +# + + +menu "General Library Settings" + +config HAVE_PIC + bool "Generate Position Independent Code (PIC)" + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config HAVE_SHARED + bool "Enable support for shared libraries" + depends on HAVE_PIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older Linux kernel (2.0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config MALLOC + bool "malloc" + +config MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_HAS_MMU + +endchoice + +config HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + Posix regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +endmenu + + + +menu "Networking Support" + +config UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_HAS_RPC + bool "Remote Procedute Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_HAS_RPC + default n + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + +config UCLIBC_HAS_WCHAR + bool "Wide Charactor Support" + default n + help + Answer Y to enable wide char support. This will make uClibc much + bigger. + + Most people will answer N. + +config UCLIBC_HAS_LOCALE + bool "Locale Support" + depends on UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. + + Most people will answer N. + +config USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the interger conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + +config SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config SYSTEM_LDSO + string "System shared library loader" + depends on !BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +endmenu + +menu "uClibc hacking options" + +config DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. +endmenu + + + |