Add the full crosstool-NG sources to the new repository of its own.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1eeea35fbf182
parent 0 fb871400e0c8
child 2 687f86f2a01c
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
.cdtproject
.project
.settings/org.eclipse.cdt.core.prefs
COPYING
CREDITS
LICENSES
Makefile
README
config/binutils.in
config/cc.in
config/cc_core_gcc.in
config/cc_core_tcc.in
config/cc_gcc.in
config/cc_tcc.in
config/config.in
config/global.in
config/kernel.in
config/kernel_cygwin.in
config/kernel_linux.in
config/kernel_linux_headers_copy.in
config/kernel_linux_headers_install.in
config/kernel_linux_headers_sanitised.in
config/libc.in
config/libc_glibc.in
config/libc_uClibc.in
config/target.in
docs/overview.txt
kconfig/Makefile
kconfig/conf.c
kconfig/confdata.c
kconfig/expr.c
kconfig/expr.h
kconfig/lex.zconf.c_shipped
kconfig/lkc.h
kconfig/lkc_proto.h
kconfig/lxdialog/BIG.FAT.WARNING
kconfig/lxdialog/check-lxdialog.sh
kconfig/lxdialog/checklist.c
kconfig/lxdialog/dialog.h
kconfig/lxdialog/inputbox.c
kconfig/lxdialog/menubox.c
kconfig/lxdialog/textbox.c
kconfig/lxdialog/util.c
kconfig/lxdialog/yesno.c
kconfig/mconf.c
kconfig/menu.c
kconfig/symbol.c
kconfig/util.c
kconfig/zconf.hash.c_shipped
kconfig/zconf.tab.c_shipped
licenses/by-sa/deed.en
licenses/by-sa/deed_files/deed.gif
licenses/by-sa/deed_files/deed_002.gif
licenses/by-sa/deed_files/deeds.css
licenses/by-sa/deed_files/logo_deed.gif
licenses/by-sa/deed_files/popup.gif
licenses/by-sa/legalcode
licenses/by-sa/legalcode_files/deeds.css
licenses/by-sa/legalcode_files/logo_code.gif
licenses/gpl.txt
licenses/lgpl.txt
patches/binutils/2.11.2/gcc-pr3106.patch
patches/binutils/2.13.90.0.2/README
patches/binutils/2.13.90.0.2/rh62-binutils-2.11.93.0.2-sparc-nonpic.patch
patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-glibc21.patch
patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-gotpc.patch
patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-tpoff32.patch
patches/binutils/2.14.90.0.5/binutils-cross-demangler.patch
patches/binutils/2.14.90.0.5/binutils-sh-relocs.patch
patches/binutils/2.14.90.0.7/binutils-cross-demangler.patch
patches/binutils/2.14.92/binutils-skip-comments.patch
patches/binutils/2.14.92/gccpr15247-fix.patch
patches/binutils/2.14/binutils-sh-relocs.patch
patches/binutils/2.15.90.0.3/binutils-20040817-linkonce.patch
patches/binutils/2.15.90.0.3/binutils-20040820-duplicates.patch
patches/binutils/2.15.90.0.3/binutils-skip-comments.patch
patches/binutils/2.15.90.0.3/gccpr15247-fix.patch
patches/binutils/2.15.91.0.2/binutils-20040817-linkonce.patch
patches/binutils/2.15.91.0.2/binutils-dup-sections.patch
patches/binutils/2.15.91.0.2/binutils-skip-comments.patch
patches/binutils/2.15/002-uclibc.patch
patches/binutils/2.15/100-uclibc-conf.patch
patches/binutils/2.15/210-cflags.patch
patches/binutils/2.15/400-mips-ELF_MAXPAGESIZE-4K.patch
patches/binutils/2.15/600-arm-textrel.patch
patches/binutils/2.15/bfd-hash-tweak.patch
patches/binutils/2.15/binutils-2.15-allow-gcc-4.0.patch
patches/binutils/2.15/binutils-2.15-psignal.patch
patches/binutils/2.15/binutils-2.15-solaris-qsort.patch
patches/binutils/2.15/binutils-2.15-vmx.patch
patches/binutils/2.15/binutils-arm-undef-imm.patch
patches/binutils/2.15/binutils-skip-comments.patch
patches/binutils/2.15/cross-gprof.patch
patches/binutils/2.15/gccpr15247-fix.patch
patches/binutils/2.15/ld-2.15-callahan.patch
patches/binutils/2.15/ld-2.15-stabs-tweak.patch
patches/binutils/2.15/s390-invalid-insn-format.patch
patches/binutils/2.16.1/bfd-hash-tweak.patch
patches/binutils/2.16.1/binutils-2.15-psignal.patch
patches/binutils/2.16.1/binutils-skip-comments.patch
patches/binutils/2.16.1/callahan.patch
patches/binutils/2.16.1/cross-gprof.patch
patches/binutils/2.16.1/stabs-tweak.patch
patches/binutils/2.17.50.0.10/100-uclibc-conf.patch
patches/binutils/2.17.50.0.10/110-arm-eabi-conf.patch
patches/binutils/2.17.50.0.10/300-001_ld_makefile_patch.patch
patches/binutils/2.17.50.0.10/300-012_check_ldrunpath_length.patch
patches/binutils/2.17.50.0.8/100-uclibc-conf.patch
patches/binutils/2.17.50.0.8/110-arm-eabi-conf.patch
patches/binutils/2.17.50.0.8/300-001_ld_makefile_patch.patch
patches/binutils/2.17.50.0.8/300-012_check_ldrunpath_length.patch
patches/binutils/2.17.50.0.9/100-uclibc-conf.patch
patches/binutils/2.17.50.0.9/110-arm-eabi-conf.patch
patches/binutils/2.17.50.0.9/300-001_ld_makefile_patch.patch
patches/binutils/2.17.50.0.9/300-012_check_ldrunpath_length.patch
patches/cygwin/1.5.15-1/cygwin-1.5.15-1-crossbuild.patch
patches/gcc/2.95.3/arm-linux.patch
patches/gcc/2.95.3/backport-config.gcc-1.4.patch
patches/gcc/2.95.3/backport-config.gcc-1.92.patch
patches/gcc/2.95.3/config.sub.patch
patches/gcc/2.95.3/deque-leak-fix.patch
patches/gcc/2.95.3/gcc-2.95.3-cygwin-020611.patch
patches/gcc/2.95.3/gcc-2.95.3-trap-posix.patch
patches/gcc/2.95.3/gcc-pr3106.patch
patches/gcc/2.95.3/threads_snafu.patch
patches/gcc/3.2.3/README-mips
patches/gcc/3.2.3/README-sh
patches/gcc/3.2.3/config.sub.patch
patches/gcc/3.2.3/gcc-20020722-ppc405erratum77.patch
patches/gcc/3.2.3/gcc-20030210-sh-linux-1.patch
patches/gcc/3.2.3/gcc-3.2.3-g++.exp.patch
patches/gcc/3.2.3/gcc-3.2.3-libffi-1.patch
patches/gcc/3.2.3/gcc-3.2.3-ppc-asm-spec.patch
patches/gcc/3.2.3/gcc-3.2.3-trap-posix.patch
patches/gcc/3.2.3/gcc-3.3-libstdc++-v3-dg.exp.patch
patches/gcc/3.2.3/gcc-sh-linux.spec
patches/gcc/3.3.1/compat.exp.patch
patches/gcc/3.3.1/config.sub.patch
patches/gcc/3.3.1/empty6.patch
patches/gcc/3.3.1/gcc-3.2.3-g++.exp.patch
patches/gcc/3.3.1/gcc-3.3-libstdc++-v3-dg.exp.patch
patches/gcc/3.3.1/gcc-3.3.1-trap-posix.patch
patches/gcc/3.3.1/pr10392-1-test.patch
patches/gcc/3.3.1/pr10412-1-test.patch
patches/gcc/3.3.1/pr10589-1-test.patch
patches/gcc/3.3.1/pr11162-1-test.patch
patches/gcc/3.3.1/pr11587-1-test.patch
patches/gcc/3.3.1/pr11736-1-test.patch
patches/gcc/3.3.1/pr11864-1-test.patch
patches/gcc/3.3.1/pr11949-fix.patch
patches/gcc/3.3.1/pr9365-1-test.patch
patches/gcc/3.3.1/sh-pic-set_fpscr.patch
patches/gcc/3.3.1/sh-spec.patch
patches/gcc/3.3.1/sh4-pthread.patch
patches/gcc/3.3.1/thunk3.patch
patches/gcc/3.3.2/empty6.patch
patches/gcc/3.3.2/gcc-3.2.3-g++.exp.patch
patches/gcc/3.3.2/gcc-3.3-libstdc++-v3-dg.exp.patch
patches/gcc/3.3.2/gcc-3.3.2-arm-bigendian.patch
patches/gcc/3.3.2/gcc-3.3.2-trap-posix.patch
patches/gcc/3.3.2/pr10392-1-test.patch
patches/gcc/3.3.2/pr10412-1-test.patch
patches/gcc/3.3.2/pr10589-1-test.patch
patches/gcc/3.3.2/pr11162-1-test.patch
patches/gcc/3.3.2/pr11587-1-test.patch
patches/gcc/3.3.2/pr11608-fix.patch
patches/gcc/3.3.2/pr11736-1-test.patch
patches/gcc/3.3.2/pr11864-1-test.patch
patches/gcc/3.3.2/pr13260-test.patch
patches/gcc/3.3.2/pr9365-1-test.patch
patches/gcc/3.3.2/sh-lib1funcs_sizeAndType.patch
patches/gcc/3.3.2/sh-libgcc-hidden.patch
patches/gcc/3.3.2/sh-pic-set_fpscr-gcc-3.3.2.patch
patches/gcc/3.3.2/thunk3.patch
patches/gcc/3.3.3/config.sub.patch
patches/gcc/3.3.3/empty6.patch
patches/gcc/3.3.3/gcc-3.3.2-arm-bigendian.patch
patches/gcc/3.3.3/gcc-3.3.3-trap-posix.patch
patches/gcc/3.3.3/pr10392-1-test.patch
patches/gcc/3.3.3/pr10412-1-test.patch
patches/gcc/3.3.3/pr10589-1-test.patch
patches/gcc/3.3.3/pr11162-1-test.patch
patches/gcc/3.3.3/pr11587-1-test.patch
patches/gcc/3.3.3/pr11608.patch
patches/gcc/3.3.3/pr11736-1-test.patch
patches/gcc/3.3.3/pr11864-1-test.patch
patches/gcc/3.3.3/pr12009.patch
patches/gcc/3.3.3/pr12010.patch
patches/gcc/3.3.3/pr13250-fix.patch
patches/gcc/3.3.3/pr13260-fix-3.3.3.patch
patches/gcc/3.3.3/pr13260-test.patch
patches/gcc/3.3.3/pr15089-fix.patch
patches/gcc/3.3.3/pr9365-1-test.patch
patches/gcc/3.3.3/sh-lib1funcs_sizeAndType.patch
patches/gcc/3.3.3/sh-pic-set_fpscr-gcc-3.3.2.patch
patches/gcc/3.3.3/thunk3.patch
patches/gcc/3.3.4/gcc-3.3.4-arm-bigendian.patch
patches/gcc/3.3.4/gcc-3.3.4-arm-pr22528.patch
patches/gcc/3.3.4/gcc-3.3.4-libstdcxx-sh.patch
patches/gcc/3.3.4/gcc-3.3.4-ppc-asm-spec.patch
patches/gcc/3.3.4/gcc-3.3.4-trap-posix.patch
patches/gcc/3.3.5/gcc-3.3.4-arm-bigendian.patch
patches/gcc/3.3.5/gcc-3.3.4-arm-pr22528.patch
patches/gcc/3.3.6/fix-fixincl.patch
patches/gcc/3.3.6/gcc-3.3.4-arm-bigendian.patch
patches/gcc/3.3.6/gcc-3.3.4-arm-pr22528.patch
patches/gcc/3.3/compat.exp.patch
patches/gcc/3.3/config.sub.patch
patches/gcc/3.3/gcc-3.2.3-g++.exp.patch
patches/gcc/3.3/gcc-3.3-libstdc++-v3-dg.exp.patch
patches/gcc/3.3/sh-pic-set_fpscr.patch
patches/gcc/3.3/sh-predef-gnu_source.patch
patches/gcc/3.3/sh-spec.patch
patches/gcc/3.3/sh4-kaz-workaround.patch
patches/gcc/3.3/sh4-no-fix-protos.patch
patches/gcc/3.3/sh4-pthread.patch
patches/gcc/3.4.0/gcc-3.3.3h-ppc-asm-spec.patch
patches/gcc/3.4.0/gcc-3.4.0-arm-bigendian.patch
patches/gcc/3.4.0/gcc-3.4.0-arm-lib1asm.patch
patches/gcc/3.4.0/gcc-3.4.0-arm-nolibfloat.patch
patches/gcc/3.4.0/gcc-3.4.0-pr14808-refix.patch
patches/gcc/3.4.0/gcc-3.4.0-ultrasparc3-default64.patch
patches/gcc/3.4.0/pr13250-fix.patch
patches/gcc/3.4.0/pr15647-fix.patch
patches/gcc/3.4.1/fix-fixincl.patch
patches/gcc/3.4.1/gcc-3.4-sparc-pr16430-fix.patch
patches/gcc/3.4.1/gcc-3.4.0-arm-bigendian.patch
patches/gcc/3.4.1/gcc-3.4.0-arm-lib1asm.patch
patches/gcc/3.4.1/gcc-3.4.0-arm-nolibfloat.patch
patches/gcc/3.4.1/pr15068-fix.patch
patches/gcc/3.4.2/gcc-3.4.0-arm-bigendian.patch
patches/gcc/3.4.2/gcc-3.4.0-arm-lib1asm.patch
patches/gcc/3.4.2/gcc-3.4.0-arm-nolibfloat.patch
patches/gcc/3.4.3/fix-fixincl.patch
patches/gcc/3.4.3/gcc-3.4.0-arm-bigendian.patch
patches/gcc/3.4.3/gcc-3.4.0-arm-lib1asm.patch
patches/gcc/3.4.3/gcc-3.4.0-arm-nolibfloat.patch
patches/gcc/3.4.3/pr15068-fix.patch
patches/gcc/3.4.3/pr16201-fix.patch
patches/gcc/3.4.3/pr18508-fix.patch
patches/gcc/3.4.4/100-uclibc-conf.patch
patches/gcc/3.4.4/200-uclibc-locale.patch
patches/gcc/3.4.4/300-libstdc++-pic.patch
patches/gcc/3.4.4/600-gcc34-arm-ldm-peephole.patch
patches/gcc/3.4.4/601-gcc34-arm-ldm-peephole2.patch
patches/gcc/3.4.4/601-gcc34-arm-ldm.patch
patches/gcc/3.4.4/602-sdk-libstdc++-includes.patch
patches/gcc/3.4.4/700-pr15068-fix.patch
patches/gcc/3.4.4/71_all_sh-pr16665-fix.patch
patches/gcc/3.4.4/72_all_sh-no-reorder-blocks.patch
patches/gcc/3.4.4/73_all_sh-pr20617.patch
patches/gcc/3.4.4/800-arm-bigendian.patch
patches/gcc/3.4.4/800-powerpc-libc_stack_end-uclibc.patch
patches/gcc/3.4.4/830-gcc-bug-num-22167.patch
patches/gcc/3.4.4/900-nios2.patch
patches/gcc/3.4.4/arm-softfloat.patch
patches/gcc/3.4.4/fix-fixincl.patch
patches/gcc/3.4.5/fix-fixincl.patch
patches/gcc/3.4.5/gcc-3.4.0-arm-bigendian.patch
patches/gcc/3.4.5/gcc-3.4.0-arm-lib1asm.patch
patches/gcc/3.4.5/gcc-3.4.0-arm-nolibfloat.patch
patches/gcc/3.4.5/pr15068-fix.patch
patches/gcc/4.0.0/fix-fixincl.patch
patches/gcc/4.0.0/gcc-4.0-arm-bigendian.patch
patches/gcc/4.0.0/pr20815-fix.patch
patches/gcc/4.0.0/pr20973-fix.patch
patches/gcc/4.0.0/pr21173-fix.patch
patches/gcc/4.0.0/pr21951.patch
patches/gcc/4.0.1/fix-fixincl.patch
patches/gcc/4.0.1/pr20815-fix.patch
patches/gcc/4.0.1/pr21951-fix2.patch
patches/gcc/4.0.2/fix-fixincl.patch
patches/gcc/4.0.2/pr20815-fix.patch
patches/gcc/4.0.2/pr21623-workaround.patch
patches/gcc/4.0.3/100-uclibc-conf.patch
patches/gcc/4.0.3/200-uclibc-locale.patch
patches/gcc/4.0.3/300-libstdc++-pic.patch
patches/gcc/4.0.3/301-missing-execinfo_h.patch
patches/gcc/4.0.3/302-c99-snprintf.patch
patches/gcc/4.0.3/303-c99-complex-ugly-hack.patch
patches/gcc/4.0.3/304-index_macro.patch
patches/gcc/4.0.3/602-sdk-libstdc++-includes.patch
patches/gcc/4.0.3/800-arm-bigendian.patch
patches/gcc/4.0.4/100-uclibc-conf.patch
patches/gcc/4.0.4/200-uclibc-locale.patch
patches/gcc/4.0.4/300-libstdc++-pic.patch
patches/gcc/4.0.4/301-missing-execinfo_h.patch
patches/gcc/4.0.4/302-c99-snprintf.patch
patches/gcc/4.0.4/303-c99-complex-ugly-hack.patch
patches/gcc/4.0.4/304-index_macro.patch
patches/gcc/4.0.4/602-sdk-libstdc++-includes.patch
patches/gcc/4.0.4/800-arm-bigendian.patch
patches/gcc/4.0.4/801-arm-softfloat.patch
patches/gcc/4.1.0/gcc-4.1-fix-fixincl.patch
patches/gcc/4.1.1/100-uclibc-conf.patch
patches/gcc/4.1.1/110-arm-eabi.patch
patches/gcc/4.1.1/200-uclibc-locale.patch
patches/gcc/4.1.1/300-libstdc++-pic.patch
patches/gcc/4.1.1/301-missing-execinfo_h.patch
patches/gcc/4.1.1/302-c99-snprintf.patch
patches/gcc/4.1.1/303-c99-complex-ugly-hack.patch
patches/gcc/4.1.1/304-index_macro.patch
patches/gcc/4.1.1/740-sh-pr24836.patch
patches/gcc/4.1.1/800-arm-bigendian.patch
patches/gcc/4.1.1/801-softfloat-fix.patch
patches/gcc/4.1.2/100-uclibc-conf.patch
patches/gcc/4.1.2/110-arm-eabi.patch
patches/gcc/4.1.2/200-uclibc-locale.patch
patches/gcc/4.1.2/300-libstdc++-pic.patch
patches/gcc/4.1.2/301-missing-execinfo_h.patch
patches/gcc/4.1.2/302-c99-snprintf.patch
patches/gcc/4.1.2/303-c99-complex-ugly-hack.patch
patches/gcc/4.1.2/304-index_macro.patch
patches/gcc/4.1.2/402-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.1.2/740-sh-pr24836.patch
patches/gcc/4.1.2/800-arm-bigendian.patch
patches/glibc/2.1.3/README
patches/glibc/2.1.3/arm-ctl_bus_isa.patch
patches/glibc/2.1.3/backport-config.sub.patch
patches/glibc/2.1.3/el.po.patch
patches/glibc/2.1.3/glibc-2.1.3-ac_cv_prog_cc_cross.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-db2.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-dns.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-fixup.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-generic.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-grp.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-locale.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-mntent.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-sunrpc.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-configure.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-dl-machine-i386.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-errlist.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-longlong.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-sscanf.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-syscall.patch
patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-versioninfo.patch
patches/glibc/2.1.3/glibc-2.1.3-cygwin.patch
patches/glibc/2.1.3/glibc-2.1.3-override.patch
patches/glibc/2.1.3/glibc-2.2.2-export_fp_hw.patch
patches/glibc/2.1.3/glibc-manual-stdin.texi-1.127.patch
patches/glibc/2.1.3/glibc-rpcgen-cpp.patch
patches/glibc/2.1.3/rh62-00-glibc-2.1.3.patch
patches/glibc/2.1.3/rh62-01-glibc-2.1.3-security.patch
patches/glibc/2.1.3/rh62-02-glibc-2.1.3-locale.patch
patches/glibc/2.1.3/rh62-03-glibc-2.1.3-crypt.patch
patches/glibc/2.1.3/rh62-04-glibc-2.1.3-tzfile.patch
patches/glibc/2.1.3/rh62-06-glibc-2.1.3-preload.patch
patches/glibc/2.1.3/rh62-07-glibc-2.1.3-alpha.patch
patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch
patches/glibc/2.1.3/rh62-09-glibc-2.1.3-security2.patch
patches/glibc/2.1.3/rh62-10-glibc-2.1.3-xdr_array.patch
patches/glibc/2.1.3/rh62-11-glibc-2.1.3-calloc.patch
patches/glibc/2.1.3/rh62-12-glibc-2.1.3-maxpacket.patch
patches/glibc/2.1.3/rh62-99-glibc-2.1.3-allow-gcc-3.4-dns.patch
patches/glibc/2.1.3/rh62-99-glibc-2.1.3-allow-gcc-3.4-gconv_stubs.patch
patches/glibc/2.1.3/sk.po.patch
patches/glibc/2.2.2/arm-ctl_bus_isa.patch
patches/glibc/2.2.2/glibc-2.1.3-allow-gcc-3.4-grp.patch
patches/glibc/2.2.2/glibc-2.1.3-allow-gcc3-sscanf.patch
patches/glibc/2.2.2/glibc-2.1.3-allow-gcc3-versioninfo.patch
patches/glibc/2.2.2/glibc-2.2.2-allow-gcc-3-configure.patch
patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-dl-machine-i386.patch
patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-errlist.patch
patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-longlong.patch
patches/glibc/2.2.2/glibc-2.2.2-export_fp_hw.patch
patches/glibc/2.2.2/glibc-2.2.2-printf-not-macro.patch
patches/glibc/2.2.2/glibc-2.2.2-syslog-bugfix.patch
patches/glibc/2.2.2/glibc-2.2.5-alpha-pwrite64.patch
patches/glibc/2.2.2/glibc-2.2.5-arm-pwrite64.patch
patches/glibc/2.2.2/glibc-2.2.5-i386-pwrite64.patch
patches/glibc/2.2.2/glibc-2.2.5-m68k-pwrite.patch
patches/glibc/2.2.2/glibc-manual-stdin.texi-1.127.patch
patches/glibc/2.2.2/glibc-nss-noopt.patch
patches/glibc/2.2.2/tst-pathopt-cross.patch
patches/glibc/2.2.3/errlist-1.9.patch
patches/glibc/2.2.3/errlist-arm.patch
patches/glibc/2.2.3/glibc-2.2.3-mips-base-addr-got.patch
patches/glibc/2.2.3/glibc-2.2.5-mips-clone-local-label.patch
patches/glibc/2.2.3/glibc-manual-stdin.texi-1.127.patch
patches/glibc/2.2.5/alpha-build-failure.patch
patches/glibc/2.2.5/arm-asm-clobber.patch
patches/glibc/2.2.5/arm-ctl_bus_isa.patch
patches/glibc/2.2.5/cris-libc-symbols.patch
patches/glibc/2.2.5/cris-stack-direction.patch
patches/glibc/2.2.5/dl-machine-alpha.patch
patches/glibc/2.2.5/dl-machine-arm.patch
patches/glibc/2.2.5/dl-machine-m68k.patch
patches/glibc/2.2.5/dl-machine-sh.patch
patches/glibc/2.2.5/dl-machine-sparc.patch
patches/glibc/2.2.5/errlist-1.9.patch
patches/glibc/2.2.5/errlist-arm.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-weakextern.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-configure.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-elf-2.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-elf.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-gconv.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-i386.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-iconv.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-iconvdata.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-locale.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-malloc.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-mipsel.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-msort.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-powerpc-procfs.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-powerpc.patch
patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-sunrpc.patch
patches/glibc/2.2.5/glibc-2.2.5-alpha-pwrite64.patch
patches/glibc/2.2.5/glibc-2.2.5-arm-pwrite64.patch
patches/glibc/2.2.5/glibc-2.2.5-crosstest.patch
patches/glibc/2.2.5/glibc-2.2.5-crossyes.patch
patches/glibc/2.2.5/glibc-2.2.5-cygwin.patch
patches/glibc/2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch
patches/glibc/2.2.5/glibc-2.2.5-i386-pwrite64.patch
patches/glibc/2.2.5/glibc-2.2.5-m68k-pwrite.patch
patches/glibc/2.2.5/glibc-2.2.5-mips-build-gmon.patch
patches/glibc/2.2.5/glibc-2.2.5-mips-clone-local-label.patch
patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.56.patch
patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.57.patch
patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.59-kinda.patch
patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.60.patch
patches/glibc/2.2.5/glibc-2.2.5-powerpc-as.patch
patches/glibc/2.2.5/glibc-2.2.5-ppc405erratum77.patch
patches/glibc/2.2.5/glibc-2.3.2-allow-gcc-3.5-xdr.patch
patches/glibc/2.2.5/glibc-drow-sh.patch
patches/glibc/2.2.5/glibc-test-lowram.patch
patches/glibc/2.2.5/initfini-alpha.patch
patches/glibc/2.2.5/initfini-ia64.patch
patches/glibc/2.2.5/initfini-sh.patch
patches/glibc/2.2.5/longjmp-sparc.patch
patches/glibc/2.2.5/sh-setjmp-fix.patch
patches/glibc/2.2.5/sprintf-prototype.patch
patches/glibc/2.2.5/sscanf.patch
patches/glibc/2.2.5/unwind-arm.patch
patches/glibc/2.3.2/README-hppa
patches/glibc/2.3.2/arm-asm-clobber.patch
patches/glibc/2.3.2/arm-ctl_bus_isa.patch
patches/glibc/2.3.2/arm-mcount_internal.patch
patches/glibc/2.3.2/epoll-epollet.patch
patches/glibc/2.3.2/epoll-stdint.patch
patches/glibc/2.3.2/errlist-awk.patch
patches/glibc/2.3.2/fixup.patch
patches/glibc/2.3.2/gcc-pr-9552-workaround.patch
patches/glibc/2.3.2/glibc-2.2.5-crosstest.patch
patches/glibc/2.3.2/glibc-2.2.5-mips-clone-local-label.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.4-inline.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.4-nounit.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-PR14096.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-elf.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-gconv.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-msort.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-sunrpc.patch
patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-xdr.patch
patches/glibc/2.3.2/glibc-2.3.2-alpha-pwrite64.patch
patches/glibc/2.3.2/glibc-2.3.2-arm-fix-strlen.patch
patches/glibc/2.3.2/glibc-2.3.2-cross-2.patch
patches/glibc/2.3.2/glibc-2.3.2-cross.patch
patches/glibc/2.3.2/glibc-2.3.2-cygwin.patch
patches/glibc/2.3.2/glibc-2.3.2-mips-user.patch
patches/glibc/2.3.2/glibc-2.3.2-mips.patch
patches/glibc/2.3.2/glibc-2.3.2-override.patch
patches/glibc/2.3.2/glibc-2.3.2-powerpc-as.patch
patches/glibc/2.3.2/glibc-2.3.2-pr139-fix.patch
patches/glibc/2.3.2/glibc-2.3.2-sh4-socket.patch
patches/glibc/2.3.2/glibc-2.3.2-sh4-trapa.patch
patches/glibc/2.3.2/glibc-2.3.2-sparc32-sysdep.patch
patches/glibc/2.3.2/glibc-2.3.2-sparc64-dl-machine.patch
patches/glibc/2.3.2/glibc-2.3.2-sparc64-pause.patch
patches/glibc/2.3.2/glibc-2.3.2-sparc64-pwrite64.patch
patches/glibc/2.3.2/glibc-2.3.2-without-fp.patch
patches/glibc/2.3.2/glibc-2.3.3-allow-gcc-4.0-configure.patch
patches/glibc/2.3.2/glibc-2.3.3-allow-gcc-4.0-powerpc-procfs.patch
patches/glibc/2.3.2/glibc-configure-apple-as.patch
patches/glibc/2.3.2/glibc-drow-sh.patch
patches/glibc/2.3.2/glibc-fp-byteorder.patch
patches/glibc/2.3.2/glibc-test-lowram.patch
patches/glibc/2.3.2/nobits.patch
patches/glibc/2.3.2/old/glibc-2.3.2-powerpc-procfs.patch
patches/glibc/2.3.2/sscanf.patch
patches/glibc/2.3.2/string2-typedef.patch
patches/glibc/2.3.3/arm-ctl_bus_isa.patch
patches/glibc/2.3.3/bad/glibc-2.3.3-alpha-pwrite64.patch
patches/glibc/2.3.3/fixup.patch
patches/glibc/2.3.3/glibc-2.2.5-allow-gcc-4.0-malloc.patch
patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.4-inline.patch
patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-elf.patch
patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-gconv.patch
patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-msort.patch
patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-sunrpc.patch
patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-xdr.patch
patches/glibc/2.3.3/glibc-2.3.2-arm-fix-strlen.patch
patches/glibc/2.3.3/glibc-2.3.2-pr139-fix.patch
patches/glibc/2.3.3/glibc-2.3.2-sparc32-sysdep.patch
patches/glibc/2.3.3/glibc-2.3.2-sparc64-dl-machine.patch
patches/glibc/2.3.3/glibc-2.3.2-without-fp.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-configure.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-elf-2.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-elf-3.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-i386.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconv.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconvdata-2.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconvdata.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-locale.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-posix.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-powerpc-procfs.patch
patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-x86_64.patch
patches/glibc/2.3.3/glibc-2.3.3-alpha-pwrite64.patch
patches/glibc/2.3.3/glibc-2.3.3-cygwin.patch
patches/glibc/2.3.3/glibc-2.3.3-libeh-kludge.patch
patches/glibc/2.3.3/glibc-2.3.3-s390-fadvise64.patch
patches/glibc/2.3.3/glibc-2.3.3-unwind-dw2.patch
patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-arm.patch
patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-elf.patch
patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch
patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch
patches/glibc/2.3.3/glibc-configure-apple-as.patch
patches/glibc/2.3.3/glibc-fp-byteorder.patch
patches/glibc/2.3.4/arm-ctl_bus_isa.patch
patches/glibc/2.3.4/bad/glibc-2.3.4-cygwin.patch
patches/glibc/2.3.4/fix-pr398.patch
patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-arm.patch
patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-elf.patch
patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch
patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch
patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch
patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch
patches/glibc/2.3.4/glibc-2.3.4-cygwin.patch
patches/glibc/2.3.4/glibc-2.3.4-memcmp.patch
patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-string.patch
patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-symbols.patch
patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-wcstol_l.patch
patches/glibc/2.3.4/glibc-configure-apple-as.patch
patches/glibc/2.3.4/glibc-fp-byteorder.patch
patches/glibc/2.3.4/make-install-lib-all.patch
patches/glibc/2.3.4/pr758.patch
patches/glibc/2.3.5/arm-ctl_bus_isa.patch
patches/glibc/2.3.5/fix-pr398.patch
patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-arm.patch
patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-elf.patch
patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch
patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch
patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch
patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch
patches/glibc/2.3.5/glibc-2.3.4-memcmp.patch
patches/glibc/2.3.5/glibc-2.3.5-allow-gcc-4.0-wordexp.patch
patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-string.patch
patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-symbols.patch
patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-wcstol_l.patch
patches/glibc/2.3.5/glibc-2.3.5-cygwin.patch
patches/glibc/2.3.5/glibc-2.3.5-fix-pr631.patch
patches/glibc/2.3.5/glibc-2.3.5-sh-memset.patch
patches/glibc/2.3.5/glibc-configure-apple-as.patch
patches/glibc/2.3.5/glibc-fp-byteorder.patch
patches/glibc/2.3.5/glibc-mips-bootstrap-gcc-header-install.patch
patches/glibc/2.3.5/make-install-lib-all.patch
patches/glibc/2.3.5/pr758.patch
patches/glibc/2.3.6/arm-ctl_bus_isa.patch
patches/glibc/2.3.6/fix-pr398.patch
patches/glibc/2.3.6/glibc-2.3.5-allow-gcc-4.0-wordexp.patch
patches/glibc/2.3.6/glibc-2.3.5-allow-gcc4-wcstol_l.patch
patches/glibc/2.3.6/glibc-2.3.5-cygwin.patch
patches/glibc/2.3.6/glibc-2.3.5-sh-lowlevellock.patch
patches/glibc/2.3.6/glibc-2.3.5-sh-memset.patch
patches/glibc/2.3.6/glibc-2.3.6-allow-gcc-4.0-arm.patch
patches/glibc/2.3.6/glibc-2.3.6-allow-gcc-4.0-elf.patch
patches/glibc/2.3.6/glibc-2.3.6-configure-apple-as.patch
patches/glibc/2.3.6/glibc-2.3.6-fix-pr631.patch
patches/glibc/2.3.6/glibc-fp-byteorder.patch
patches/glibc/2.3.6/glibc-mips-bootstrap-gcc-header-install.patch
patches/glibc/2.3.6/make-install-lib-all.patch
patches/glibc/2.3.6/maybe/glibc-2.3.6-allow-gcc-4.0-powerpc32.patch
patches/glibc/2.3.6/maybe/glibc-2.3.6-allow-gcc-4.0-powerpc64.patch
patches/glibc/20040827/arm-ctl_bus_isa.patch
patches/glibc/20040827/glibc-2.3.2-sparc64-dl-machine.patch
patches/glibc/20040827/glibc-2.3.3-cygwin.patch
patches/glibc/20040827/glibc-2.3.3-libeh-kludge.patch
patches/glibc/20040827/glibc-configure-apple-as.patch
patches/glibc/20040827/glibc-fp-byteorder.patch
patches/glibc/20050502/make-install-lib-all.patch
patches/glibc/compat-2.1/rh62-09-glibc-compat-2.1.3-security2.patch
patches/glibc/compat-2.1/rh62-12-glibc-compat-2.1.3-maxpacket.patch
patches/glibc/linuxthreads-2.1.3/glibc-2.1.3-allow-gcc3-pthread.patch
patches/glibc/linuxthreads-2.1.3/glibc-2.1.3-allow-gcc3-pthread2.patch
patches/glibc/linuxthreads-2.1.3/rh62-05-glibc-2.1.3-pthread.patch
patches/glibc/linuxthreads-2.1.3/rh62-99-glibc-2.1.3-allow-gcc-3.4-td.patch
patches/glibc/linuxthreads-2.2.2/glibc-linuxthreads-2.2.2-allow-gcc3.patch
patches/glibc/linuxthreads-2.2.2/threadparam.patch
patches/glibc/linuxthreads-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch
patches/glibc/linuxthreads-2.2.5/glibc-2.2.5-alpha-self-clobber.patch
patches/glibc/linuxthreads-2.2.5/linuxthreads-2.2.5-ppc405erratum77.patch
patches/glibc/linuxthreads-2.2.5/pt-initfini-alpha.patch
patches/glibc/linuxthreads-2.2.5/pt-initfini-sh.patch
patches/glibc/linuxthreads-2.2.5/threadparam.patch
patches/glibc/linuxthreads-2.3.2/alpha_cfi1.patch
patches/glibc/linuxthreads-2.3.2/alpha_cfi2.patch
patches/glibc/linuxthreads-2.3.2/glibc-2.3.2-sparc64-sigproc.patch
patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-allow-3.4.patch
patches/glibc/linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch
patches/glibc/linuxthreads-2.3.2/sysdep-cancel-arm-1.2-1.6.patch
patches/glibc/linuxthreads-2.3.3/glibc-2.3.3-alpha-prolog.patch
patches/glibc/linuxthreads-2.3.3/glibc-linuxthreads-2.3.3-cygwin.patch
patches/glibc/linuxthreads-2.3.4/glibc-linuxthreads-2.3.3-cygwin.patch
patches/glibc/linuxthreads-2.3.4/glibc-linuxthreads-2.3.4-allow-gcc-4.0-rtld.patch
patches/glibc/linuxthreads-2.3.5/glibc-linuxthreads-2.3.5-cygwin.patch
patches/glibc/linuxthreads-2.3.6/glibc-linuxthreads-2.3.5-cygwin.patch
patches/glibc/linuxthreads-20040827/glibc-linuxthreads-2.3.3-cygwin.patch
patches/libfloat/990616/100-libfloat_990616-3-lib-versioning.patch
patches/libfloat/990616/200-cross_compile.patch
patches/linux/2.4.26/01-kmap-types-cleanup.patch
patches/linux/2.4.26/kaz-types.patch
patches/linux/2.4.26/linux-2.4-bsd-expr.patch
patches/linux/2.4.26/linux-2.4.21-allow-gcc-3.3-arm-lib.patch
patches/linux/2.4.26/linux-2.4.26-allow-gcc-3.4-arm-kernel.patch
patches/linux/2.4.26/linux-2.4.26-arm-nonofpu.patch
patches/linux/2.4.26/linux-2.4.26-mkdep-xargs.patch
patches/linux/2.4.26/linux-2.4.26-wdt977-uaccess.patch
patches/linux/2.6.11.3/arch_alpha_kernel_srcons.patch
patches/linux/2.6.11.3/kaz-types.patch
patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-i386.patch
patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-m68k.patch
patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-ppc64.patch
patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-x86_64.patch
patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-i2c.patch
patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-ppc-mikpe.patch
patches/linux/2.6.5/linux-2.6.5-x86_64-unistd.patch
patches/linux/2.6.6/kaz-types.patch
patches/linux/2.6.6/linux-2.6.5-x86_64-unistd.patch
patches/linux/2.6.6/linux-2.6.8-noshared-kconfig.patch
patches/linux/2.6.7/kaz-types.patch
patches/linux/2.6.7/linux-2.6.7-build_on_case_insensitive_fs-1.patch
patches/linux/2.6.7/linux-2.6.8-noshared-kconfig.patch
patches/linux/2.6.8/kaz-types.patch
patches/linux/2.6.8/linux-2.6.8-allow-gcc-4.0-asm-i386.patch
patches/linux/2.6.8/linux-2.6.8-arm-nonofpu.patch
patches/linux/2.6.8/linux-2.6.8-build_on_case_insensitive_fs.patch
patches/linux/2.6.8/linux-2.6.8-m68k-kludge.patch
patches/linux/2.6.8/linux-2.6.8-noshared-kconfig.patch
patches/uClibc/0.9.28.1/000-string-functions.patch
patches/uClibc/0.9.28.1/001-install_dev.patch
patches/uClibc/0.9.28.1/002-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.1/003-time-locale.patch
patches/uClibc/0.9.28.1/004-uClibc_ctype.patch
patches/uClibc/0.9.28.1/200-custom-ISA.patch
patches/uClibc/0.9.28.1/201-mips-asm.h.patch
patches/uClibc/0.9.28.2/000-string-functions.patch
patches/uClibc/0.9.28.2/001-install_dev.patch
patches/uClibc/0.9.28.2/002-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.2/004-uClibc_ctype.patch
patches/uClibc/0.9.28.2/200-custom-ISA.patch
patches/uClibc/0.9.28.2/201-mips-asm.h.patch
patches/uClibc/0.9.28/000-string-functions.patch
patches/uClibc/0.9.28/001-install_dev.patch
patches/uClibc/0.9.28/002-no_LFS-no_readahead.patch
patches/uClibc/0.9.28/004-uClibc_ctype.patch
patches/uClibc/0.9.28/005-fix_includes.sh.patch
patches/uClibc/0.9.28/200-custom-ISA.patch
patches/uClibc/0.9.28/201-mips-asm.h.patch
samples/arm-qemu-linux-uclibc/crosstool.config
samples/arm-qemu-linux-uclibc/linux-2.6.20.config
samples/arm-qemu-linux-uclibc/uClibc-0.9.28.1.config
samples/armeb-unknown-linux-gnu/crosstool.config
samples/armeb-unknown-linux-gnu/linux-2.6.19.1.config
samples/armeb-unknown-linux-uclibc/crosstool.config
samples/armeb-unknown-linux-uclibc/linux-2.6.19.2.config
samples/armeb-unknown-linux-uclibc/uClibc-0.9.28.2.config
samples/i586-geode-linux-uclibc/crosstool.config
samples/i586-geode-linux-uclibc/linux-2.6.19.2.config
samples/i586-geode-linux-uclibc/uClibc-0.9.28.1.config
samples/i686-unknown-linux-uclibc/linux-2.6.19.2.config
samples/i686-unknown-linux-uclibc/uClibc-0.9.28.1.config
scripts/build/binutils.sh
scripts/build/cc_core_gcc.sh
scripts/build/cc_core_tcc.sh
scripts/build/cc_gcc.sh
scripts/build/cc_tcc.sh
scripts/build/kernel_cygwin.sh
scripts/build/kernel_linux-libc-headers.sh
scripts/build/kernel_linux.sh
scripts/build/libc_glibc.sh
scripts/build/libc_libfloat.sh
scripts/build/libc_uClibc.sh
scripts/buildToolchain.sh
scripts/crosstool.sh
scripts/functions
scripts/getExtractPatch.sh
tools/Makefile
tools/addToolVersion.sh
tools/config.guess
tools/config.sub
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/.cdtproject	Sat Feb 24 11:00:05 2007 +0000
     1.3 @@ -0,0 +1,67 @@
     1.4 +<?xml version="1.0" encoding="UTF-8"?>
     1.5 +<?eclipse-cdt version="2.0"?>
     1.6 +
     1.7 +<cdtproject id="org.eclipse.cdt.make.core.make">
     1.8 +<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
     1.9 +<data>
    1.10 +<item id="scannerConfiguration">
    1.11 +<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
    1.12 +<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
    1.13 +<buildOutputProvider>
    1.14 +<openAction enabled="true" filePath=""/>
    1.15 +<parser enabled="true"/>
    1.16 +</buildOutputProvider>
    1.17 +<scannerInfoProvider id="specsFile">
    1.18 +<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
    1.19 +<parser enabled="true"/>
    1.20 +</scannerInfoProvider>
    1.21 +</profile>
    1.22 +<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
    1.23 +<buildOutputProvider>
    1.24 +<openAction enabled="false" filePath=""/>
    1.25 +<parser enabled="true"/>
    1.26 +</buildOutputProvider>
    1.27 +<scannerInfoProvider id="makefileGenerator">
    1.28 +<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
    1.29 +<parser enabled="false"/>
    1.30 +</scannerInfoProvider>
    1.31 +</profile>
    1.32 +<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
    1.33 +<buildOutputProvider>
    1.34 +<openAction enabled="false" filePath=""/>
    1.35 +<parser enabled="true"/>
    1.36 +</buildOutputProvider>
    1.37 +<scannerInfoProvider id="specsFile">
    1.38 +<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
    1.39 +<parser enabled="false"/>
    1.40 +</scannerInfoProvider>
    1.41 +</profile>
    1.42 +<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
    1.43 +<buildOutputProvider>
    1.44 +<openAction enabled="false" filePath=""/>
    1.45 +<parser enabled="true"/>
    1.46 +</buildOutputProvider>
    1.47 +<scannerInfoProvider id="specsFile">
    1.48 +<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
    1.49 +<parser enabled="false"/>
    1.50 +</scannerInfoProvider>
    1.51 +</profile>
    1.52 +</item>
    1.53 +<item id="org.eclipse.cdt.core.pathentry">
    1.54 +<pathentry kind="src" path=""/>
    1.55 +<pathentry kind="out" path=""/>
    1.56 +<pathentry kind="con" path="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/>
    1.57 +</item>
    1.58 +<item id="org.eclipse.cdt.make.core.buildtargets">
    1.59 +<buildTargets>
    1.60 +<target name="Build toolchain" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
    1.61 +<buildCommand>make</buildCommand>
    1.62 +<buildArguments/>
    1.63 +<buildTarget>all</buildTarget>
    1.64 +<stopOnError>true</stopOnError>
    1.65 +<useDefaultCommand>true</useDefaultCommand>
    1.66 +</target>
    1.67 +</buildTargets>
    1.68 +</item>
    1.69 +</data>
    1.70 +</cdtproject>
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/.project	Sat Feb 24 11:00:05 2007 +0000
     2.3 @@ -0,0 +1,34 @@
     2.4 +<?xml version="1.0" encoding="UTF-8"?>
     2.5 +<projectDescription>
     2.6 +	<name>crosstool-ng</name>
     2.7 +	<comment></comment>
     2.8 +	<projects>
     2.9 +	</projects>
    2.10 +	<buildSpec>
    2.11 +		<buildCommand>
    2.12 +			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
    2.13 +			<triggers>full,incremental,</triggers>
    2.14 +			<arguments>
    2.15 +				<dictionary>
    2.16 +					<key>LaunchConfigHandle</key>
    2.17 +					<value>&lt;project&gt;/.externalToolBuilders/org.eclipse.cdt.make.core.makeBuilder.launch</value>
    2.18 +				</dictionary>
    2.19 +			</arguments>
    2.20 +		</buildCommand>
    2.21 +		<buildCommand>
    2.22 +			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
    2.23 +			<triggers>full,incremental,</triggers>
    2.24 +			<arguments>
    2.25 +				<dictionary>
    2.26 +					<key>LaunchConfigHandle</key>
    2.27 +					<value>&lt;project&gt;/.externalToolBuilders/org.eclipse.cdt.make.core.ScannerConfigBuilder.launch</value>
    2.28 +				</dictionary>
    2.29 +			</arguments>
    2.30 +		</buildCommand>
    2.31 +	</buildSpec>
    2.32 +	<natures>
    2.33 +		<nature>org.eclipse.cdt.core.cnature</nature>
    2.34 +		<nature>org.eclipse.cdt.make.core.makeNature</nature>
    2.35 +		<nature>org.eclipse.cdt.make.core.ScannerConfigNature</nature>
    2.36 +	</natures>
    2.37 +</projectDescription>
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/.settings/org.eclipse.cdt.core.prefs	Sat Feb 24 11:00:05 2007 +0000
     3.3 @@ -0,0 +1,3 @@
     3.4 +#Sat Feb 17 16:17:18 CET 2007
     3.5 +eclipse.preferences.version=1
     3.6 +indexerId=org.eclipse.cdt.core.fastIndexer
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/COPYING	Sat Feb 24 11:00:05 2007 +0000
     4.3 @@ -0,0 +1,21 @@
     4.4 +Unless otherwise stated in individaul files, this work is licensed to you under
     4.5 +the following terms.
     4.6 +
     4.7 +- Files in docs/ are available under the Creative Commons Attribution, Share
     4.8 +  Alike (by-sa), v2.5, to be found there:
     4.9 +    licenses/by-sa/deed.en     (human-readable summary)
    4.10 +    licenses/by-sa/legalcode   (legal code, the full license)
    4.11 +    
    4.12 +- Files found in patches/uClibc/*/ are available under the GNU Lesser General
    4.13 +  Public License (LGPL), v2.1, to be found here:
    4.14 +    licenses/lgpl.txt
    4.15 +
    4.16 +- Files found in patches/glibc/*/ are available under the GNU Lesser General
    4.17 +  Public License (LGPL), v2.1, to be found there:
    4.18 +    licenses/lgpl.txt
    4.19 +
    4.20 +- Other files not covered by the above licenses, and not covered by an
    4.21 +  individual license specified in the file itself, or an accompanying file,
    4.22 +  are available under the GNU General Public License (GPL), v2, to be found
    4.23 +  here:
    4.24 +    licenses/gpl.txt
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/CREDITS	Sat Feb 24 11:00:05 2007 +0000
     5.3 @@ -0,0 +1,9 @@
     5.4 +I would like to thank these fine people for making crosstool-NG possible:
     5.5 +
     5.6 +  Dan KEGEL, the original author of crosstool: http://www.kegel.com/
     5.7 +    Dan was very helpfull and willing to help when I build my first toolchains.
     5.8 +    I owe him one. Thank you Dan!
     5.9 +    Some crosstool-NG scripts have code snippets coming almost as-is from the
    5.10 +    original work by Dan.
    5.11 +
    5.12 +More to come as they help.
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/LICENSES	Sat Feb 24 11:00:05 2007 +0000
     6.3 @@ -0,0 +1,1 @@
     6.4 +COPYING
     6.5 \ No newline at end of file
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/Makefile	Sat Feb 24 11:00:05 2007 +0000
     7.3 @@ -0,0 +1,46 @@
     7.4 +# Makefile for crosstool-NG.
     7.5 +# Copyright 2006 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
     7.6 +
     7.7 +# The project version
     7.8 +export PROJECTVERSION=0.0.1
     7.9 +
    7.10 +# This should eventually be computed if compiling out-of-tree is implemented
    7.11 +export CT_TOP_DIR=$(shell pwd)
    7.12 +
    7.13 +.PHONY: all
    7.14 +all: build
    7.15 +
    7.16 +HOST_CC = gcc -funsigned-char
    7.17 +
    7.18 +help::
    7.19 +	@echo  'Available make targets (*: default target):'
    7.20 +	@echo
    7.21 +
    7.22 +include $(CT_TOP_DIR)/kconfig/Makefile
    7.23 +#include $(CT_TOP_DIR)/samples/Makefile
    7.24 +
    7.25 +help::
    7.26 +	@echo  'Build targets:'
    7.27 +	@echo  '* build		  - Build the toolchain'
    7.28 +	@echo  '  clean		  - Remove generated files'
    7.29 +	@echo  '  distclean	  - Remove generated files and configuration'
    7.30 +
    7.31 +include $(CT_TOP_DIR)/tools/Makefile
    7.32 +
    7.33 +.config: config/*.in
    7.34 +	@make menuconfig
    7.35 +	@# Because exiting menuconfig without saving is not an error to menuconfig
    7.36 +	@test -f .config
    7.37 +
    7.38 +# Actual build
    7.39 +build: .config
    7.40 +	@$(CT_TOP_DIR)/scripts/crosstool.sh
    7.41 +
    7.42 +.PHONY: clean
    7.43 +clean::
    7.44 +	@rm -f .crosstool.config
    7.45 +
    7.46 +.PHONY: distclean
    7.47 +distclean:: clean
    7.48 +	@rm -f .config* ..config.tmp
    7.49 +
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/README	Sat Feb 24 11:00:05 2007 +0000
     8.3 @@ -0,0 +1,9 @@
     8.4 +This is the README for crosstool-NG
     8.5 +
     8.6 +To get you started, hust enter:
     8.7 +  make help
     8.8 +
     8.9 +You can find a (terse and WIP) documentation in docs/.
    8.10 +
    8.11 +You can also point your browser to
    8.12 +  http://ymorin.is-a-geek.org/dokuwiki/doku.php?id=projects:crosstool
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/config/binutils.in	Sat Feb 24 11:00:05 2007 +0000
     9.3 @@ -0,0 +1,133 @@
     9.4 +# binutils options
     9.5 +
     9.6 +menu "binutils"
     9.7 +
     9.8 +config BINUTILS_VERSION
     9.9 +    string
    9.10 +
    9.11 +choice
    9.12 +    bool
    9.13 +    prompt "binutils version"
    9.14 +
    9.15 +config BINUTILS_V_2_11_2
    9.16 +    bool
    9.17 +    prompt "2.11.2"
    9.18 +
    9.19 +config BINUTILS_V_2_13_90
    9.20 +    bool
    9.21 +    prompt "2.13.90"
    9.22 +
    9.23 +config BINUTILS_V_2_14
    9.24 +    bool
    9.25 +    prompt "2.14"
    9.26 +
    9.27 +config BINUTILS_V_2_14_90
    9.28 +    bool
    9.29 +    prompt "2.14.90"
    9.30 +
    9.31 +config BINUTILS_V_2_14_92
    9.32 +    bool
    9.33 +    prompt "2.14.92"
    9.34 +
    9.35 +config BINUTILS_V_2_15
    9.36 +    bool
    9.37 +    prompt "2.15"
    9.38 +
    9.39 +config BINUTILS_V_2_15_90
    9.40 +    bool
    9.41 +    prompt "2.15.90"
    9.42 +
    9.43 +config BINUTILS_V_2_15_91
    9.44 +    bool
    9.45 +    prompt "2.15.91"
    9.46 +
    9.47 +config BINUTILS_V_2_16
    9.48 +    bool
    9.49 +    prompt "2.16"
    9.50 +
    9.51 +config BINUTILS_V_2_16_1
    9.52 +    bool
    9.53 +    prompt "2.16.1"
    9.54 +
    9.55 +config BINUTILS_V_2_17
    9.56 +    bool
    9.57 +    prompt "2.17"
    9.58 +
    9.59 +config BINUTILS_V_2_17_50_0_1
    9.60 +    bool
    9.61 +    prompt "2.17.50.0.1"
    9.62 +
    9.63 +config BINUTILS_V_2_17_50_0_2
    9.64 +    bool
    9.65 +    prompt "2.17.50.0.2"
    9.66 +
    9.67 +config BINUTILS_V_2_17_50_0_3
    9.68 +    bool
    9.69 +    prompt "2.17.50.0.3"
    9.70 +
    9.71 +config BINUTILS_V_2_17_50_0_4
    9.72 +    bool
    9.73 +    prompt "2.17.50.0.4"
    9.74 +
    9.75 +config BINUTILS_V_2_17_50_0_5
    9.76 +    bool
    9.77 +    prompt "2.17.50.0.5"
    9.78 +
    9.79 +config BINUTILS_V_2_17_50_0_6
    9.80 +    bool
    9.81 +    prompt "2.17.50.0.6"
    9.82 +
    9.83 +config BINUTILS_V_2_17_50_0_7
    9.84 +    bool
    9.85 +    prompt "2.17.50.0.7"
    9.86 +
    9.87 +config BINUTILS_V_2_17_50_0_8
    9.88 +    bool
    9.89 +    prompt "2.17.50.0.8"
    9.90 +
    9.91 +config BINUTILS_V_2_17_50_0_9
    9.92 +    bool
    9.93 +    prompt "2.17.50.0.9"
    9.94 +
    9.95 +config BINUTILS_V_2_17_50_0_10
    9.96 +    bool
    9.97 +    prompt "2.17.50.0.10"
    9.98 +
    9.99 +# CT_INSERT_VERSION_ABOVE
   9.100 +# Don't remove qbove line!
   9.101 +endchoice
   9.102 +
   9.103 +config BINUTILS_VERSION
   9.104 +    string
   9.105 +    default "2.11.2" if BINUTILS_V_2_11_2
   9.106 +    default "2.13.90" if BINUTILS_V_2_13_90
   9.107 +    default "2.14" if BINUTILS_V_2_14
   9.108 +    default "2.14.90" if BINUTILS_V_2_14_90
   9.109 +    default "2.14.92" if BINUTILS_V_2_14_92
   9.110 +    default "2.15" if BINUTILS_V_2_15
   9.111 +    default "2.15.90" if BINUTILS_V_2_15_90
   9.112 +    default "2.15.91" if BINUTILS_V_2_15_91
   9.113 +    default "2.16" if BINUTILS_V_2_16
   9.114 +    default "2.16.1" if BINUTILS_V_2_16_1
   9.115 +    default "2.17" if BINUTILS_V_2_17
   9.116 +    default "2.17.50.0.1" if BINUTILS_V_2_17_50_0_1
   9.117 +    default "2.17.50.0.2" if BINUTILS_V_2_17_50_0_2
   9.118 +    default "2.17.50.0.3" if BINUTILS_V_2_17_50_0_3
   9.119 +    default "2.17.50.0.4" if BINUTILS_V_2_17_50_0_4
   9.120 +    default "2.17.50.0.5" if BINUTILS_V_2_17_50_0_5
   9.121 +    default "2.17.50.0.6" if BINUTILS_V_2_17_50_0_6
   9.122 +    default "2.17.50.0.7" if BINUTILS_V_2_17_50_0_7
   9.123 +    default "2.17.50.0.8" if BINUTILS_V_2_17_50_0_8
   9.124 +    default "2.17.50.0.9" if BINUTILS_V_2_17_50_0_9
   9.125 +    default "2.17.50.0.10" if BINUTILS_V_2_17_50_0_10
   9.126 +# CT_INSERT_VERSION_STRING_ABOVE
   9.127 +# Don't remove qbove line!
   9.128 +
   9.129 +config BINUTILS_EXTRA_CONFIG
   9.130 +    string
   9.131 +    prompt "binutils extra config"
   9.132 +    default ""
   9.133 +    help
   9.134 +      Extra flags passed onto ./configure when configuring
   9.135 +
   9.136 +endmenu
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/config/cc.in	Sat Feb 24 11:00:05 2007 +0000
    10.3 @@ -0,0 +1,185 @@
    10.4 +# Compiler options
    10.5 +
    10.6 +menu "C compiler"
    10.7 +
    10.8 +comment "Core C Compiler (used to build the C library)"
    10.9 +
   10.10 +config CC_USE_CORE
   10.11 +    bool
   10.12 +    prompt "Use a different core C compiler"
   10.13 +    default n
   10.14 +    help
   10.15 +      Use a different compiler to build the C library than the one
   10.16 +      in the final toolchain.
   10.17 +      
   10.18 +      You can change the compiler used, or only the version used.
   10.19 +
   10.20 +      You most probably don't need that.
   10.21 +
   10.22 +config CC_CORE_GCC
   10.23 +    bool
   10.24 +    default y if ! CC_USE_CORE && CC_GCC
   10.25 +    default n if CC_USE_CORE || ! CC_GCC
   10.26 +
   10.27 +config CC_CORE_TCC
   10.28 +    bool
   10.29 +    default y if ! CC_USE_CORE && CC_TCC
   10.30 +    default n if CC_USE_CORE || ! CC_TCC
   10.31 +
   10.32 +choice
   10.33 +    bool
   10.34 +    prompt "Core C compiler:"
   10.35 +    depends on CC_USE_CORE
   10.36 +
   10.37 +config CC_CORE_GCC
   10.38 +    bool
   10.39 +    prompt "gcc"
   10.40 +
   10.41 +#config CC_CORE_TCC
   10.42 +#    bool
   10.43 +#    prompt "tcc (EXPERIMENTAL)"
   10.44 +
   10.45 +endchoice
   10.46 +
   10.47 +config CC_CORE_VERSION
   10.48 +    string
   10.49 +
   10.50 +config CC_CORE
   10.51 +    string
   10.52 +    default "gcc" if CC_CORE_GCC
   10.53 +    default "tcc" if CC_CORE_TCC
   10.54 +
   10.55 +if CC_CORE_GCC && CC_USE_CORE
   10.56 +source config/cc_core_gcc.in
   10.57 +endif
   10.58 +
   10.59 +if CC_CORE_TCC && CC_USE_CORE
   10.60 +source config/cc_core_tcc.in
   10.61 +endif
   10.62 +
   10.63 +comment "Final C compiler"
   10.64 +
   10.65 +choice
   10.66 +    bool
   10.67 +    prompt "Final C compiler"
   10.68 +    default CC_GCC
   10.69 +
   10.70 +config CC_GCC
   10.71 +    bool
   10.72 +    prompt "gcc"
   10.73 +    select CC_SUPPORT_CXX
   10.74 +    select CC_SUPPORT_FORTRAN
   10.75 +    select CC_SUPPORT_JAVA
   10.76 +    select CC_SUPPORT_ADA
   10.77 +    select CC_SUPPORT_OBJC
   10.78 +    select CC_SUPPORT_OBJCXX
   10.79 +
   10.80 +#config CC_TCC
   10.81 +#    bool
   10.82 +#    prompt "tcc (EXPERIMENTAL)"
   10.83 +#    select CC_LANG_C
   10.84 +
   10.85 +endchoice
   10.86 +
   10.87 +config CC_VERSION
   10.88 +    string
   10.89 +
   10.90 +config CC
   10.91 +    string
   10.92 +    default "gcc" if CC_GCC
   10.93 +    default "tcc" if CC_TCC
   10.94 +
   10.95 +if CC_GCC
   10.96 +source config/cc_gcc.in
   10.97 +endif
   10.98 +
   10.99 +if CC_GCC
  10.100 +source config/cc_tcc.in
  10.101 +endif
  10.102 +
  10.103 +config CC_SUPPORT_CXX
  10.104 +    bool
  10.105 +
  10.106 +config CC_SUPPORT_FORTRAN
  10.107 +    bool
  10.108 +
  10.109 +config CC_SUPPORT_JAVA
  10.110 +    bool
  10.111 +
  10.112 +config CC_SUPPORT_ADA
  10.113 +    bool
  10.114 +
  10.115 +config CC_SUPPORT_OBJC
  10.116 +    bool
  10.117 +
  10.118 +config CC_SUPPORT_OBJCXX
  10.119 +    bool
  10.120 +
  10.121 +comment "Additionnal supported languages:"
  10.122 +
  10.123 +config CC_LANG_CXX
  10.124 +    bool
  10.125 +    prompt "C++"
  10.126 +    default n
  10.127 +    depends on CC_SUPPORT_CXX
  10.128 +    help
  10.129 +      Only select this if you know that your specific combination of
  10.130 +      compiler and its version does support this language.
  10.131 +
  10.132 +config CC_LANG_FORTRAN
  10.133 +    bool
  10.134 +    prompt "Fortran"
  10.135 +    default n
  10.136 +    depends on CC_SUPPORT_FORTRAN
  10.137 +    help
  10.138 +      Only select this if you know that your specific combination of
  10.139 +      compiler and its version does support this language.
  10.140 +
  10.141 +config CC_LANG_JAVA
  10.142 +    bool
  10.143 +    prompt "Java"
  10.144 +    default n
  10.145 +    depends on CC_SUPPORT_JAVA
  10.146 +    help
  10.147 +      Only select this if you know that your specific combination of
  10.148 +      compiler and its version does support this language.
  10.149 +
  10.150 +config CC_LANG_ADA
  10.151 +    bool
  10.152 +    prompt "ADA"
  10.153 +    default n
  10.154 +    depends on CC_SUPPORT_ADA
  10.155 +    help
  10.156 +      Only select this if you know that your specific combination of
  10.157 +      compiler and its version does support this language.
  10.158 +
  10.159 +config CC_LANG_OBJC
  10.160 +    bool
  10.161 +    prompt "Objective-C"
  10.162 +    default n
  10.163 +    depends on CC_SUPPORT_OBJC
  10.164 +    help
  10.165 +      Only select this if you know that your specific combination of
  10.166 +      compiler and its version does support this language.
  10.167 +
  10.168 +config CC_LANG_OBJCXX
  10.169 +    bool
  10.170 +    prompt "Objective-C++"
  10.171 +    default n
  10.172 +    depends on CC_SUPPORT_OBJCXX
  10.173 +    help
  10.174 +      Only select this if you know that your specific combination of
  10.175 +      compiler and its version does support this language.
  10.176 +
  10.177 +config CC_LANG_OTHERS
  10.178 +    string
  10.179 +    prompt "Other languages"
  10.180 +    default ""
  10.181 +    help
  10.182 +      Enter here a comma-separated list of languages that you know your compiler
  10.183 +      supports, besides those listed above.
  10.184 +
  10.185 +      Eg. gcc-4.1+ has a toy programming language, treelang. As it is not usefull
  10.186 +      in real life, it is not available in the selection above.
  10.187 +
  10.188 +endmenu
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/config/cc_core_gcc.in	Sat Feb 24 11:00:05 2007 +0000
    11.3 @@ -0,0 +1,137 @@
    11.4 +# Compiler options
    11.5 +
    11.6 +choice
    11.7 +    bool
    11.8 +    prompt "Core gcc version"
    11.9 +
   11.10 +config CC_CORE_V_2_95_3
   11.11 +    bool
   11.12 +    prompt "2.95.3"
   11.13 +
   11.14 +config CC_CORE_V_3_2_3
   11.15 +    bool
   11.16 +    prompt "3.2.3"
   11.17 +
   11.18 +config CC_CORE_V_3_3
   11.19 +    bool
   11.20 +    prompt "3.3"
   11.21 +
   11.22 +config CC_CORE_V_3_3_1
   11.23 +    bool
   11.24 +    prompt "3.3.1"
   11.25 +
   11.26 +config CC_CORE_V_3_3_2
   11.27 +    bool
   11.28 +    prompt "3.3.2"
   11.29 +
   11.30 +config CC_CORE_V_3_3_3
   11.31 +    bool
   11.32 +    prompt "3.3.3"
   11.33 +
   11.34 +config CC_CORE_V_3_3_4
   11.35 +    bool
   11.36 +    prompt "3.3.4"
   11.37 +
   11.38 +config CC_CORE_V_3_3_5
   11.39 +    bool
   11.40 +    prompt "3.3.5"
   11.41 +
   11.42 +config CC_CORE_V_3_3_6
   11.43 +    bool
   11.44 +    prompt "3.3.6"
   11.45 +
   11.46 +config CC_CORE_V_3_4_0
   11.47 +    bool
   11.48 +    prompt "3.4.0"
   11.49 +
   11.50 +config CC_CORE_V_3_4_1
   11.51 +    bool
   11.52 +    prompt "3.4.1"
   11.53 +
   11.54 +config CC_CORE_V_3_4_2
   11.55 +    bool
   11.56 +    prompt "3.4.2"
   11.57 +
   11.58 +config CC_CORE_V_3_4_3
   11.59 +    bool
   11.60 +    prompt "3.4.3"
   11.61 +
   11.62 +config CC_CORE_V_3_4_4
   11.63 +    bool
   11.64 +    prompt "3.4.4"
   11.65 +
   11.66 +config CC_CORE_V_3_4_5
   11.67 +    bool
   11.68 +    prompt "3.4.5"
   11.69 +
   11.70 +config CC_CORE_V_3_4_6
   11.71 +    bool
   11.72 +    prompt "3.4.6"
   11.73 +
   11.74 +config CC_CORE_V_4_0_0
   11.75 +    bool
   11.76 +    prompt "4.0.0"
   11.77 +
   11.78 +config CC_CORE_V_4_0_1
   11.79 +    bool
   11.80 +    prompt "4.0.1"
   11.81 +
   11.82 +config CC_CORE_V_4_0_2
   11.83 +    bool
   11.84 +    prompt "4.0.2"
   11.85 +
   11.86 +config CC_CORE_V_4_0_3
   11.87 +    bool
   11.88 +    prompt "4.0.3"
   11.89 +
   11.90 +config CC_CORE_V_4_0_4
   11.91 +    bool
   11.92 +    prompt "4.0.4"
   11.93 +
   11.94 +config CC_CORE_V_4_1_0
   11.95 +    bool
   11.96 +    prompt "4.1.0"
   11.97 +
   11.98 +config CC_CORE_V_4_1_1
   11.99 +    bool
  11.100 +    prompt "4.1.1"
  11.101 +
  11.102 +# CT_INSERT_VERSION_ABOVE
  11.103 +# Don't remove above line!
  11.104 +endchoice
  11.105 +
  11.106 +config CC_CORE_VERSION
  11.107 +    string
  11.108 +    default "2.95.3" if CC_CORE_V_2_95_3
  11.109 +    default "3.2.3" if CC_CORE_V_3_2_3
  11.110 +    default "3.3" if CC_CORE_V_3_3
  11.111 +    default "3.3.1" if CC_CORE_V_3_3_1
  11.112 +    default "3.3.2" if CC_CORE_V_3_3_2
  11.113 +    default "3.3.3" if CC_CORE_V_3_3_3
  11.114 +    default "3.3.4" if CC_CORE_V_3_3_4
  11.115 +    default "3.3.5" if CC_CORE_V_3_3_5
  11.116 +    default "3.3.6" if CC_CORE_V_3_3_6
  11.117 +    default "3.4.0" if CC_CORE_V_3_4_0
  11.118 +    default "3.4.1" if CC_CORE_V_3_4_1
  11.119 +    default "3.4.2" if CC_CORE_V_3_4_2
  11.120 +    default "3.4.3" if CC_CORE_V_3_4_3
  11.121 +    default "3.4.4" if CC_CORE_V_3_4_4
  11.122 +    default "3.4.5" if CC_CORE_V_3_4_5
  11.123 +    default "3.4.6" if CC_CORE_V_3_4_6
  11.124 +    default "4.0.0" if CC_CORE_V_4_0_0
  11.125 +    default "4.0.1" if CC_CORE_V_4_0_1
  11.126 +    default "4.0.2" if CC_CORE_V_4_0_2
  11.127 +    default "4.0.3" if CC_CORE_V_4_0_3
  11.128 +    default "4.0.4" if CC_CORE_V_4_0_4
  11.129 +    default "4.1.0" if CC_CORE_V_4_1_0
  11.130 +    default "4.1.1" if CC_CORE_V_4_1_1
  11.131 +# CT_INSERT_VERSION_STRING_ABOVE
  11.132 +# Don't remove above line!
  11.133 +
  11.134 +config CC_CORE_EXTRA_CONFIG
  11.135 +    string
  11.136 +    prompt "Core gcc extra config"
  11.137 +    default ""
  11.138 +    depends on CC_USE_CORE && CC_CORE_GCC || ! CC_USE_CORE && CC_GCC
  11.139 +    help
  11.140 +      Extra flags to pass onto ./configure when configuring the core gcc.
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/config/cc_gcc.in	Sat Feb 24 11:00:05 2007 +0000
    12.3 @@ -0,0 +1,131 @@
    12.4 +# Compiler options
    12.5 +
    12.6 +choice
    12.7 +    bool
    12.8 +    prompt "Final gcc version"
    12.9 +
   12.10 +config CC_V_2_95_3
   12.11 +    bool
   12.12 +    prompt "2.95.3"
   12.13 +
   12.14 +config CC_V_3_2_3
   12.15 +    bool
   12.16 +    prompt "3.2.3"
   12.17 +
   12.18 +config CC_V_3_3
   12.19 +    bool
   12.20 +    prompt "3.3"
   12.21 +
   12.22 +config CC_V_3_3_1
   12.23 +    bool
   12.24 +    prompt "3.3.1"
   12.25 +
   12.26 +config CC_V_3_3_2
   12.27 +    bool
   12.28 +    prompt "3.3.2"
   12.29 +
   12.30 +config CC_V_3_3_3
   12.31 +    bool
   12.32 +    prompt "3.3.3"
   12.33 +
   12.34 +config CC_V_3_3_4
   12.35 +    bool
   12.36 +    prompt "3.3.4"
   12.37 +
   12.38 +config CC_V_3_3_5
   12.39 +    bool
   12.40 +    prompt "3.3.5"
   12.41 +
   12.42 +config CC_V_3_3_6
   12.43 +    bool
   12.44 +    prompt "3.3.6"
   12.45 +
   12.46 +config CC_V_3_4_0
   12.47 +    bool
   12.48 +    prompt "3.4.0"
   12.49 +
   12.50 +config CC_V_3_4_1
   12.51 +    bool
   12.52 +    prompt "3.4.1"
   12.53 +
   12.54 +config CC_V_3_4_2
   12.55 +    bool
   12.56 +    prompt "3.4.2"
   12.57 +
   12.58 +config CC_V_3_4_3
   12.59 +    bool
   12.60 +    prompt "3.4.3"
   12.61 +
   12.62 +config CC_V_3_4_4
   12.63 +    bool
   12.64 +    prompt "3.4.4"
   12.65 +
   12.66 +config CC_V_3_4_5
   12.67 +    bool
   12.68 +    prompt "3.4.5"
   12.69 +
   12.70 +config CC_V_4_0_0
   12.71 +    bool
   12.72 +    prompt "4.0.0"
   12.73 +
   12.74 +config CC_V_4_0_1
   12.75 +    bool
   12.76 +    prompt "4.0.1"
   12.77 +
   12.78 +config CC_V_4_0_2
   12.79 +    bool
   12.80 +    prompt "4.0.2"
   12.81 +
   12.82 +config CC_V_4_0_3
   12.83 +    bool
   12.84 +    prompt "4.0.3"
   12.85 +
   12.86 +config CC_V_4_0_4
   12.87 +    bool
   12.88 +    prompt "4.0.4"
   12.89 +
   12.90 +config CC_V_4_1_0
   12.91 +    bool
   12.92 +    prompt "4.1.0"
   12.93 +
   12.94 +config CC_V_4_1_1
   12.95 +    bool
   12.96 +    prompt "4.1.1"
   12.97 +
   12.98 +# CT_INSERT_VERSION_ABOVE
   12.99 +# Don't remove above line!
  12.100 +endchoice
  12.101 +
  12.102 +config CC_VERSION
  12.103 +    string
  12.104 +    default "2.95.3" if CC_V_2_95_3
  12.105 +    default "3.2.3" if CC_V_3_2_3
  12.106 +    default "3.3" if CC_V_3_3
  12.107 +    default "3.3.1" if CC_V_3_3_1
  12.108 +    default "3.3.2" if CC_V_3_3_2
  12.109 +    default "3.3.3" if CC_V_3_3_3
  12.110 +    default "3.3.4" if CC_V_3_3_4
  12.111 +    default "3.3.5" if CC_V_3_3_5
  12.112 +    default "3.3.6" if CC_V_3_3_6
  12.113 +    default "3.4.0" if CC_V_3_4_0
  12.114 +    default "3.4.1" if CC_V_3_4_1
  12.115 +    default "3.4.2" if CC_V_3_4_2
  12.116 +    default "3.4.3" if CC_V_3_4_3
  12.117 +    default "3.4.4" if CC_V_3_4_4
  12.118 +    default "3.4.5" if CC_V_3_4_5
  12.119 +    default "4.0.0" if CC_V_4_0_0
  12.120 +    default "4.0.1" if CC_V_4_0_1
  12.121 +    default "4.0.2" if CC_V_4_0_2
  12.122 +    default "4.0.3" if CC_V_4_0_3
  12.123 +    default "4.0.4" if CC_V_4_0_4
  12.124 +    default "4.1.0" if CC_V_4_1_0
  12.125 +    default "4.1.1" if CC_V_4_1_1
  12.126 +# CT_INSERT_VERSION_STRING_ABOVE
  12.127 +# Don't remove above line!
  12.128 +
  12.129 +config CC_EXTRA_CONFIG
  12.130 +    string
  12.131 +    prompt "Final gcc extra config"
  12.132 +    default ""
  12.133 +    help
  12.134 +      Extra flags to pass onto ./configure when configuring gcc.
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/config/config.in	Sat Feb 24 11:00:05 2007 +0000
    13.3 @@ -0,0 +1,6 @@
    13.4 +source config/global.in
    13.5 +source config/target.in
    13.6 +source config/kernel.in
    13.7 +source config/binutils.in
    13.8 +source config/cc.in
    13.9 +source config/libc.in
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/config/global.in	Sat Feb 24 11:00:05 2007 +0000
    14.3 @@ -0,0 +1,256 @@
    14.4 +# Overall toolchain configuration: paths, jobs, etc...
    14.5 +
    14.6 +menu "Paths and misc options"
    14.7 +
    14.8 +config PARALLEL_JOBS
    14.9 +    int
   14.10 +    prompt "Number of parallel jobs"
   14.11 +    default 1
   14.12 +    help
   14.13 +      Number of jobs make will be allowed to run concurently.
   14.14 +      Set this higher than the number of processors you have, but not too high.
   14.15 +      A good rule of thumb is twice the number of processors you have.
   14.16 +      
   14.17 +      Enter 1 (or 0) to have only one job at a time.
   14.18 +
   14.19 +config LOAD
   14.20 +    int
   14.21 +    prompt "Maximum allowed load"
   14.22 +    default 0
   14.23 +    help
   14.24 +      Specifies that no new jobs should be started if there are others jobs
   14.25 +      running and the load average is at least this value.
   14.26 +      
   14.27 +      Makes sense on SMP machines only.
   14.28 +      
   14.29 +      Enter 0 to have no limit on the load average.
   14.30 +      
   14.31 +      Note: only the integer part of the load is allowed here (you can't enter
   14.32 +            0.75 for example).
   14.33 +
   14.34 +config NICE
   14.35 +    int
   14.36 +    prompt "Nice level"
   14.37 +    default 0
   14.38 +    range 0 19
   14.39 +    help
   14.40 +      Renices the build process up.
   14.41 +
   14.42 +config USE_PIPES
   14.43 +    bool
   14.44 +    prompt "Use -pipe"
   14.45 +    default y
   14.46 +    help
   14.47 +      Use gcc's option -pipe to use pipes rather than temp files when building
   14.48 +      the toolchain.
   14.49 +
   14.50 +comment "Paths"
   14.51 +
   14.52 +config TARBALLS_DIR
   14.53 +    string
   14.54 +    prompt "Tarballs directory"
   14.55 +    default "`pwd`/tarballs"
   14.56 +    help
   14.57 +      This is the directory into which tarballs are going to be stored once
   14.58 +      they are downloaded (or otherwise retrieved).
   14.59 +
   14.60 +config SRC_DIR
   14.61 +    string
   14.62 +    prompt "Extract directory"
   14.63 +    default "`pwd`/${CT_TARGET}/src"
   14.64 +    help
   14.65 +      This is the directory into which tarballs will be extracted.
   14.66 +      
   14.67 +      If you will build multiple toolchains, you should arrange to have one
   14.68 +      SRC_DIR for each toolchain, as different targets may require different
   14.69 +      patches to be applied.
   14.70 +
   14.71 +config BUILD_DIR
   14.72 +    string
   14.73 +    prompt "Build directory"
   14.74 +    default "`pwd`/${CT_TARGET}/gcc-${CT_CC_VERSION}-${CT_LIBC}-${CT_LIBC_VERSION}"
   14.75 +    help
   14.76 +      This is the directory into which builds will occur.
   14.77 +      
   14.78 +      Once again, arrange for one build directory for each toolchain you build,
   14.79 +      to avoid collision.
   14.80 +
   14.81 +config PREFIX_DIR
   14.82 +    string
   14.83 +    prompt "Prefix directory"
   14.84 +    default "${HOME}/${CT_TARGET}"
   14.85 +    help
   14.86 +      This is the path the toolchain will run from.
   14.87 +
   14.88 +config INSTALL_DIR
   14.89 +    string
   14.90 +#    prompt "Install directory"
   14.91 +    default "${CT_PREFIX_DIR}"
   14.92 +#    help
   14.93 +#      This is the path the target will be installed into.
   14.94 +#      
   14.95 +#      Normally, you would set this to ${CT_PREFIX_DIR}, but if for some reasons
   14.96 +#      you can't write there, you can install somewhere else and have a third
   14.97 +#      person do the install for you.
   14.98 +#      The reason you might also want to install elsewhere is if you are going
   14.99 +#      to package your shinny new toolchain for distribution.
  14.100 +
  14.101 +config CUSTOM_PATCH
  14.102 +    bool
  14.103 +    prompt "Use custom patch directory"
  14.104 +    default n
  14.105 +    help
  14.106 +      If you have custom patches that you want to be applied, say 'Y' here and
  14.107 +      enter the path directory below.
  14.108 +      
  14.109 +      Note that you must ensure that the patch directory is arranged the same
  14.110 +      way the official directory is.
  14.111 +
  14.112 +config CUSTOM_PATCH_ONLY
  14.113 +    bool
  14.114 +    prompt "Only use custom patches"
  14.115 +    default n
  14.116 +    depends on CUSTOM_PATCH
  14.117 +    help
  14.118 +      Don't apply patches coming with CT-NG, only those patches available in
  14.119 +      the directory below.
  14.120 +      
  14.121 +      If you say 'N' here, then the patches provided with CT-NG will be applied
  14.122 +      first, and then your patches.
  14.123 +
  14.124 +config CUSTOM_PATCH_DIR
  14.125 +    string
  14.126 +    prompt "Custom patch directory"
  14.127 +    default ""
  14.128 +    depends on CUSTOM_PATCH
  14.129 +    help
  14.130 +      Enter the custom patch directory here.
  14.131 +
  14.132 +comment "Downloading and extracting"
  14.133 +
  14.134 +config NO_DOWNLOAD
  14.135 +    bool
  14.136 +    prompt "Avoid downloads"
  14.137 +    default n
  14.138 +    help
  14.139 +      Avoid downloading anything. Bail out if a tarball is missing.
  14.140 +
  14.141 +config ONLY_DOWNLOAD
  14.142 +    bool
  14.143 +    prompt "Only download tarballs"
  14.144 +    default n
  14.145 +    depends on ! NO_DOWNLOAD
  14.146 +    help
  14.147 +      Only download the tarballs. Exit once it done.
  14.148 +      
  14.149 +      Usefull to pre-retrieve the tarballs before going off-line.
  14.150 +
  14.151 +config FORCE_DOWNLOAD
  14.152 +    bool
  14.153 +    prompt "Force downloads"
  14.154 +    default n
  14.155 +    depends on ! NO_DOWNLOAD
  14.156 +    help
  14.157 +      Force downloading tarballs, even if one already exists.
  14.158 +      Usefull if you suspect a tarball to be damaged.
  14.159 +
  14.160 +config FORCE_EXTRACT
  14.161 +    bool
  14.162 +    prompt "Force extractions"
  14.163 +    depends on ! ONLY_DOWNLOAD
  14.164 +    default n
  14.165 +    help
  14.166 +      Force extraction of already exctracted tarballs.
  14.167 +      
  14.168 +      Usefull if you suspect a previous extract did not complete (eg. broken
  14.169 +      tarball), or you added a new set of patches for this component.
  14.170 +
  14.171 +comment "Logging"
  14.172 +
  14.173 +choice
  14.174 +    bool
  14.175 +    prompt "Maximum log level to see:"
  14.176 +    default LOG_INFO
  14.177 +
  14.178 +config LOG_ERROR
  14.179 +    bool
  14.180 +    prompt "ERROR"
  14.181 +    help
  14.182 +      The build will be silent.
  14.183 +      Only if there is an error will you see a mesage.
  14.184 +
  14.185 +config LOG_WARN
  14.186 +    bool
  14.187 +    prompt "WARN"
  14.188 +    help
  14.189 +      The same as above, plus warnings.
  14.190 +
  14.191 +config LOG_INFO
  14.192 +    bool
  14.193 +    prompt "INFO"
  14.194 +    help
  14.195 +      The same as above, plus informational messages (main steps).
  14.196 +
  14.197 +config LOG_EXTRA
  14.198 +    bool
  14.199 +    prompt "EXTRA"
  14.200 +    help
  14.201 +      The same as above, plus extra messages (sub-steps).
  14.202 +
  14.203 +config LOG_DEBUG
  14.204 +    bool
  14.205 +    prompt "DEBUG"
  14.206 +    help
  14.207 +      The same as above, plus lots of debug information, of which each
  14.208 +      component's build messages (very noisy!).
  14.209 +
  14.210 +endchoice
  14.211 +
  14.212 +config LOG_LEVEL_MAX
  14.213 +    string
  14.214 +    default "ERROR"   if LOG_ERROR
  14.215 +    default "WARN"    if LOG_WARN
  14.216 +    default "INFO"    if LOG_INFO
  14.217 +    default "EXTRA"   if LOG_EXTRA
  14.218 +    default "DEBUG"   if LOG_DEBUG
  14.219 +
  14.220 +config LOG_PROGRESS_BAR
  14.221 +    bool
  14.222 +    prompt "Progress bar"
  14.223 +    default n
  14.224 +    depends on ! LOG_DEBUG
  14.225 +    help
  14.226 +      This option will print a "rotating bar" (/-\|) below the last log line
  14.227 +      to show work is not stalled.
  14.228 +      
  14.229 +      Available when not in DEBUG log level.
  14.230 +
  14.231 +config LOG_USE_COLORS
  14.232 +    bool
  14.233 +    prompt "Use colors for logging to console"
  14.234 +    default n
  14.235 +    help
  14.236 +      Use colors to highlight important messages.
  14.237 +      ERROR: bright red
  14.238 +      WARN : bright yellow
  14.239 +      INFO : bright green
  14.240 +      EXTRA: dim green
  14.241 +      DEBUG: dim white
  14.242 +
  14.243 +config LOG_TO_FILE
  14.244 +    bool
  14.245 +    prompt "Log to a file"
  14.246 +    default y
  14.247 +    help
  14.248 +      Save *full* logs to a file. Even log levels you didn't specify above
  14.249 +      will be available in this file.
  14.250 +
  14.251 +config LOG_FILE
  14.252 +    string
  14.253 +    prompt "Log file"
  14.254 +    default "${CT_PREFIX_DIR}/${CT_TARGET}.log"
  14.255 +    depends on LOG_TO_FILE
  14.256 +    help
  14.257 +      File name into which to put logs.
  14.258 +
  14.259 +endmenu
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/config/kernel.in	Sat Feb 24 11:00:05 2007 +0000
    15.3 @@ -0,0 +1,36 @@
    15.4 +# Kernel options
    15.5 +
    15.6 +menu "Kernel"
    15.7 +
    15.8 +choice
    15.9 +    bool
   15.10 +    prompt "\"Kernel\" to use:"
   15.11 +    default KERNEL_LINUX
   15.12 +
   15.13 +config KERNEL_LINUX
   15.14 +    bool
   15.15 +    prompt "linux"
   15.16 +    help
   15.17 +      Build a toolchain targeting systems running Linux as a kernel.
   15.18 +
   15.19 +config KERNEL_CYGWIN
   15.20 +    bool
   15.21 +    prompt "cygwin"
   15.22 +    depends on ARCH_x86 || ARCH_x86_64
   15.23 +    help
   15.24 +      Build a toolchain targeting systems running Windows/cygwin as a kernel.
   15.25 +
   15.26 +endchoice
   15.27 +
   15.28 +config KERNEL_VERSION
   15.29 +    string
   15.30 +
   15.31 +if KERNEL_LINUX
   15.32 +source config/kernel_linux.in
   15.33 +endif
   15.34 +
   15.35 +if KERNEL_CYGWIN
   15.36 +source config/kernel_cygwin.in
   15.37 +endif
   15.38 +
   15.39 +endmenu
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/config/kernel_cygwin.in	Sat Feb 24 11:00:05 2007 +0000
    16.3 @@ -0,0 +1,5 @@
    16.4 +# Cygwin 'kernel' options
    16.5 +
    16.6 +config KERNEL
    16.7 +    string
    16.8 +    default "cygwin"
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/config/kernel_linux.in	Sat Feb 24 11:00:05 2007 +0000
    17.3 @@ -0,0 +1,102 @@
    17.4 +# Linux kernel options
    17.5 +
    17.6 +choice
    17.7 +    bool
    17.8 +    prompt "Get kernel headers from:"
    17.9 +
   17.10 +config KERNEL_LINUX_HEADERS_INSTALL
   17.11 +    bool
   17.12 +    prompt "kernel's 'headers_install'"
   17.13 +    help
   17.14 +      This will make use of the new headers_install rule in recent kernels.
   17.15 +      This is most probably what you want to use.
   17.16 +
   17.17 +config KERNEL_LINUX_HEADERS_SANITISED
   17.18 +    bool
   17.19 +    prompt "Mazur's sanitized headers (OBSOLETE)"
   17.20 +    help
   17.21 +      M. Mazur used to maintain a tree of sanitised headers, but it is now
   17.22 +      obsoleted by the headers_install rule (above), and has not seen eny
   17.23 +      update since 2.6.12
   17.24 +
   17.25 +config KERNEL_LINUX_HEADERS_COPY
   17.26 +    bool
   17.27 +    prompt "pure kernel headers (NOT RECOMMENDED)"
   17.28 +    help
   17.29 +      This will simply copy the kernel headers to the toolchain.
   17.30 +
   17.31 +      You do NOT want this. It's badly broken because it leaks kernel internals
   17.32 +      to userspace.
   17.33 +
   17.34 +endchoice
   17.35 +
   17.36 +config KERNEL
   17.37 +    string
   17.38 +    default "linux" if KERNEL_LINUX_HEADERS_INSTALL || KERNEL_LINUX_HEADERS_COPY
   17.39 +    default "linux-libc-headers" if KERNEL_LINUX_HEADERS_SANITISED
   17.40 +
   17.41 +config KERNEL_VERSION_SEE_EXTRAVERSION
   17.42 +    bool
   17.43 +    prompt "See extra versions"
   17.44 +    default n
   17.45 +    depends on ! KERNEL_LINUX_HEADERS_SANITISED
   17.46 +    help
   17.47 +      See extra versions (kernel with 4 numbers, eg 2.6.19.1).
   17.48 +
   17.49 +      If you say 'no', you'll only see sub-level, 3-digit versions.
   17.50 +      If you say 'yes', you'll see far more versions!
   17.51 +
   17.52 +      It is recommended that you say 'no', unless you _*know*_
   17.53 +      that an extra version fixes a headers bug.
   17.54 +
   17.55 +if KERNEL_LINUX_HEADERS_INSTALL
   17.56 +source config/kernel_linux_headers_install.in
   17.57 +endif
   17.58 +
   17.59 +if KERNEL_LINUX_HEADERS_COPY
   17.60 +source config/kernel_linux_headers_copy.in
   17.61 +endif
   17.62 +
   17.63 +if KERNEL_LINUX_HEADERS_SANITISED
   17.64 +source config/kernel_linux_headers_sanitised.in
   17.65 +endif
   17.66 +
   17.67 +choice
   17.68 +    bool
   17.69 +    prompt "Kernel verbosity:"
   17.70 +    default KERNEL_LINUX_VERBOSITY_0
   17.71 +
   17.72 +config KERNEL_LINUX_VERBOSITY_0
   17.73 +    bool
   17.74 +    prompt "Simplified"
   17.75 +    help
   17.76 +      Print simplified command lines.
   17.77 +
   17.78 +config KERNEL_LINUX_VERBOSITY_1
   17.79 +    bool
   17.80 +    prompt "Full commands"
   17.81 +    help
   17.82 +      Print full command lines.
   17.83 +
   17.84 +config KERNEL_LINUX_VERBOSITY_2
   17.85 +    bool
   17.86 +    prompt "Exec reasons"
   17.87 +    help
   17.88 +      Print the reasons why a make target is rebuild.
   17.89 +
   17.90 +endchoice
   17.91 +
   17.92 +config KERNEL_LINUX_VERBOSE_LEVEL
   17.93 +    int
   17.94 +    default 0 if KERNEL_LINUX_VERBOSITY_0
   17.95 +    default 1 if KERNEL_LINUX_VERBOSITY_1
   17.96 +    default 2 if KERNEL_LINUX_VERBOSITY_2
   17.97 +
   17.98 +config KERNEL_LINUX_CONFIG_FILE
   17.99 +    string
  17.100 +    prompt "Configuration file"
  17.101 +    default ""
  17.102 +    help
  17.103 +      Path to the kernel configuration file.
  17.104 +      
  17.105 +      You _must_ provide one (for now).
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/config/kernel_linux_headers_copy.in	Sat Feb 24 11:00:05 2007 +0000
    18.3 @@ -0,0 +1,682 @@
    18.4 +choice
    18.5 +    bool
    18.6 +    prompt "Linux kernel version"
    18.7 +
    18.8 +config KERNEL_COPY_V_2_6_0
    18.9 +    bool
   18.10 +    prompt "2.6.0"
   18.11 +
   18.12 +config KERNEL_COPY_V_2_6_1
   18.13 +    bool
   18.14 +    prompt "2.6.1"
   18.15 +
   18.16 +config KERNEL_COPY_V_2_6_2
   18.17 +    bool
   18.18 +    prompt "2.6.2"
   18.19 +
   18.20 +config KERNEL_COPY_V_2_6_3
   18.21 +    bool
   18.22 +    prompt "2.6.3"
   18.23 +
   18.24 +config KERNEL_COPY_V_2_6_4
   18.25 +    bool
   18.26 +    prompt "2.6.4"
   18.27 +
   18.28 +config KERNEL_COPY_V_2_6_5
   18.29 +    bool
   18.30 +    prompt "2.6.5"
   18.31 +
   18.32 +config KERNEL_COPY_V_2_6_6
   18.33 +    bool
   18.34 +    prompt "2.6.6"
   18.35 +
   18.36 +config KERNEL_COPY_V_2_6_7
   18.37 +    bool
   18.38 +    prompt "2.6.7"
   18.39 +
   18.40 +config KERNEL_COPY_V_2_6_8
   18.41 +    bool
   18.42 +    prompt "2.6.8"
   18.43 +
   18.44 +config KERNEL_COPY_V_2_6_8_1
   18.45 +    bool
   18.46 +    prompt "2.6.8.1"
   18.47 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.48 +
   18.49 +config KERNEL_COPY_V_2_6_9
   18.50 +    bool
   18.51 +    prompt "2.6.9"
   18.52 +
   18.53 +config KERNEL_COPY_V_2_6_10
   18.54 +    bool
   18.55 +    prompt "2.6.10"
   18.56 +
   18.57 +config KERNEL_COPY_V_2_6_11
   18.58 +    bool
   18.59 +    prompt "2.6.11"
   18.60 +
   18.61 +config KERNEL_COPY_V_2_6_11_1
   18.62 +    bool
   18.63 +    prompt "2.6.11.1"
   18.64 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.65 +
   18.66 +config KERNEL_COPY_V_2_6_11_10
   18.67 +    bool
   18.68 +    prompt "2.6.11.10"
   18.69 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.70 +
   18.71 +config KERNEL_COPY_V_2_6_11_11
   18.72 +    bool
   18.73 +    prompt "2.6.11.11"
   18.74 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.75 +
   18.76 +config KERNEL_COPY_V_2_6_11_12
   18.77 +    bool
   18.78 +    prompt "2.6.11.12"
   18.79 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.80 +
   18.81 +config KERNEL_COPY_V_2_6_11_2
   18.82 +    bool
   18.83 +    prompt "2.6.11.2"
   18.84 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.85 +
   18.86 +config KERNEL_COPY_V_2_6_11_3
   18.87 +    bool
   18.88 +    prompt "2.6.11.3"
   18.89 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.90 +
   18.91 +config KERNEL_COPY_V_2_6_11_4
   18.92 +    bool
   18.93 +    prompt "2.6.11.4"
   18.94 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   18.95 +
   18.96 +config KERNEL_COPY_V_2_6_11_5
   18.97 +    bool
   18.98 +    prompt "2.6.11.5"
   18.99 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.100 +
  18.101 +config KERNEL_COPY_V_2_6_11_6
  18.102 +    bool
  18.103 +    prompt "2.6.11.6"
  18.104 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.105 +
  18.106 +config KERNEL_COPY_V_2_6_11_7
  18.107 +    bool
  18.108 +    prompt "2.6.11.7"
  18.109 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.110 +
  18.111 +config KERNEL_COPY_V_2_6_11_8
  18.112 +    bool
  18.113 +    prompt "2.6.11.8"
  18.114 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.115 +
  18.116 +config KERNEL_COPY_V_2_6_11_9
  18.117 +    bool
  18.118 +    prompt "2.6.11.9"
  18.119 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.120 +
  18.121 +config KERNEL_COPY_V_2_6_12
  18.122 +    bool
  18.123 +    prompt "2.6.12"
  18.124 +
  18.125 +config KERNEL_COPY_V_2_6_12_1
  18.126 +    bool
  18.127 +    prompt "2.6.12.1"
  18.128 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.129 +
  18.130 +config KERNEL_COPY_V_2_6_12_2
  18.131 +    bool
  18.132 +    prompt "2.6.12.2"
  18.133 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.134 +
  18.135 +config KERNEL_COPY_V_2_6_12_3
  18.136 +    bool
  18.137 +    prompt "2.6.12.3"
  18.138 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.139 +
  18.140 +config KERNEL_COPY_V_2_6_12_4
  18.141 +    bool
  18.142 +    prompt "2.6.12.4"
  18.143 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.144 +
  18.145 +config KERNEL_COPY_V_2_6_12_5
  18.146 +    bool
  18.147 +    prompt "2.6.12.5"
  18.148 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.149 +
  18.150 +config KERNEL_COPY_V_2_6_12_6
  18.151 +    bool
  18.152 +    prompt "2.6.12.6"
  18.153 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.154 +
  18.155 +config KERNEL_COPY_V_2_6_13
  18.156 +    bool
  18.157 +    prompt "2.6.13"
  18.158 +
  18.159 +config KERNEL_COPY_V_2_6_13_1
  18.160 +    bool
  18.161 +    prompt "2.6.13.1"
  18.162 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.163 +
  18.164 +config KERNEL_COPY_V_2_6_13_2
  18.165 +    bool
  18.166 +    prompt "2.6.13.2"
  18.167 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.168 +
  18.169 +config KERNEL_COPY_V_2_6_13_3
  18.170 +    bool
  18.171 +    prompt "2.6.13.3"
  18.172 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.173 +
  18.174 +config KERNEL_COPY_V_2_6_13_4
  18.175 +    bool
  18.176 +    prompt "2.6.13.4"
  18.177 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.178 +
  18.179 +config KERNEL_COPY_V_2_6_13_5
  18.180 +    bool
  18.181 +    prompt "2.6.13.5"
  18.182 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.183 +
  18.184 +config KERNEL_COPY_V_2_6_14
  18.185 +    bool
  18.186 +    prompt "2.6.14"
  18.187 +
  18.188 +config KERNEL_COPY_V_2_6_14_1
  18.189 +    bool
  18.190 +    prompt "2.6.14.1"
  18.191 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.192 +
  18.193 +config KERNEL_COPY_V_2_6_14_2
  18.194 +    bool
  18.195 +    prompt "2.6.14.2"
  18.196 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.197 +
  18.198 +config KERNEL_COPY_V_2_6_14_3
  18.199 +    bool
  18.200 +    prompt "2.6.14.3"
  18.201 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.202 +
  18.203 +config KERNEL_COPY_V_2_6_14_4
  18.204 +    bool
  18.205 +    prompt "2.6.14.4"
  18.206 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.207 +
  18.208 +config KERNEL_COPY_V_2_6_14_5
  18.209 +    bool
  18.210 +    prompt "2.6.14.5"
  18.211 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.212 +
  18.213 +config KERNEL_COPY_V_2_6_14_6
  18.214 +    bool
  18.215 +    prompt "2.6.14.6"
  18.216 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.217 +
  18.218 +config KERNEL_COPY_V_2_6_14_7
  18.219 +    bool
  18.220 +    prompt "2.6.14.7"
  18.221 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.222 +
  18.223 +config KERNEL_COPY_V_2_6_15
  18.224 +    bool
  18.225 +    prompt "2.6.15"
  18.226 +
  18.227 +config KERNEL_COPY_V_2_6_15_1
  18.228 +    bool
  18.229 +    prompt "2.6.15.1"
  18.230 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.231 +
  18.232 +config KERNEL_COPY_V_2_6_15_2
  18.233 +    bool
  18.234 +    prompt "2.6.15.2"
  18.235 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.236 +
  18.237 +config KERNEL_COPY_V_2_6_15_3
  18.238 +    bool
  18.239 +    prompt "2.6.15.3"
  18.240 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.241 +
  18.242 +config KERNEL_COPY_V_2_6_15_4
  18.243 +    bool
  18.244 +    prompt "2.6.15.4"
  18.245 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.246 +
  18.247 +config KERNEL_COPY_V_2_6_15_5
  18.248 +    bool
  18.249 +    prompt "2.6.15.5"
  18.250 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.251 +
  18.252 +config KERNEL_COPY_V_2_6_15_6
  18.253 +    bool
  18.254 +    prompt "2.6.15.6"
  18.255 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.256 +
  18.257 +config KERNEL_COPY_V_2_6_15_7
  18.258 +    bool
  18.259 +    prompt "2.6.15.7"
  18.260 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.261 +
  18.262 +config KERNEL_COPY_V_2_6_16
  18.263 +    bool
  18.264 +    prompt "2.6.16"
  18.265 +
  18.266 +config KERNEL_COPY_V_2_6_16_1
  18.267 +    bool
  18.268 +    prompt "2.6.16.1"
  18.269 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.270 +
  18.271 +config KERNEL_COPY_V_2_6_16_10
  18.272 +    bool
  18.273 +    prompt "2.6.16.10"
  18.274 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.275 +
  18.276 +config KERNEL_COPY_V_2_6_16_11
  18.277 +    bool
  18.278 +    prompt "2.6.16.11"
  18.279 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.280 +
  18.281 +config KERNEL_COPY_V_2_6_16_12
  18.282 +    bool
  18.283 +    prompt "2.6.16.12"
  18.284 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.285 +
  18.286 +config KERNEL_COPY_V_2_6_16_13
  18.287 +    bool
  18.288 +    prompt "2.6.16.13"
  18.289 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.290 +
  18.291 +config KERNEL_COPY_V_2_6_16_14
  18.292 +    bool
  18.293 +    prompt "2.6.16.14"
  18.294 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.295 +
  18.296 +config KERNEL_COPY_V_2_6_16_15
  18.297 +    bool
  18.298 +    prompt "2.6.16.15"
  18.299 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.300 +
  18.301 +config KERNEL_COPY_V_2_6_16_16
  18.302 +    bool
  18.303 +    prompt "2.6.16.16"
  18.304 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.305 +
  18.306 +config KERNEL_COPY_V_2_6_16_17
  18.307 +    bool
  18.308 +    prompt "2.6.16.17"
  18.309 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.310 +
  18.311 +config KERNEL_COPY_V_2_6_16_18
  18.312 +    bool
  18.313 +    prompt "2.6.16.18"
  18.314 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.315 +
  18.316 +config KERNEL_COPY_V_2_6_16_19
  18.317 +    bool
  18.318 +    prompt "2.6.16.19"
  18.319 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.320 +
  18.321 +config KERNEL_COPY_V_2_6_16_2
  18.322 +    bool
  18.323 +    prompt "2.6.16.2"
  18.324 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.325 +
  18.326 +config KERNEL_COPY_V_2_6_16_20
  18.327 +    bool
  18.328 +    prompt "2.6.16.20"
  18.329 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.330 +
  18.331 +config KERNEL_COPY_V_2_6_16_21
  18.332 +    bool
  18.333 +    prompt "2.6.16.21"
  18.334 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.335 +
  18.336 +config KERNEL_COPY_V_2_6_16_22
  18.337 +    bool
  18.338 +    prompt "2.6.16.22"
  18.339 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.340 +
  18.341 +config KERNEL_COPY_V_2_6_16_23
  18.342 +    bool
  18.343 +    prompt "2.6.16.23"
  18.344 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.345 +
  18.346 +config KERNEL_COPY_V_2_6_16_24
  18.347 +    bool
  18.348 +    prompt "2.6.16.24"
  18.349 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.350 +
  18.351 +config KERNEL_COPY_V_2_6_16_25
  18.352 +    bool
  18.353 +    prompt "2.6.16.25"
  18.354 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.355 +
  18.356 +config KERNEL_COPY_V_2_6_16_26
  18.357 +    bool
  18.358 +    prompt "2.6.16.26"
  18.359 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.360 +
  18.361 +config KERNEL_COPY_V_2_6_16_27
  18.362 +    bool
  18.363 +    prompt "2.6.16.27"
  18.364 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.365 +
  18.366 +config KERNEL_COPY_V_2_6_16_28
  18.367 +    bool
  18.368 +    prompt "2.6.16.28"
  18.369 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.370 +
  18.371 +config KERNEL_COPY_V_2_6_16_29
  18.372 +    bool
  18.373 +    prompt "2.6.16.29"
  18.374 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.375 +
  18.376 +config KERNEL_COPY_V_2_6_16_3
  18.377 +    bool
  18.378 +    prompt "2.6.16.3"
  18.379 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.380 +
  18.381 +config KERNEL_COPY_V_2_6_16_30
  18.382 +    bool
  18.383 +    prompt "2.6.16.30"
  18.384 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.385 +
  18.386 +config KERNEL_COPY_V_2_6_16_31
  18.387 +    bool
  18.388 +    prompt "2.6.16.31"
  18.389 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.390 +
  18.391 +config KERNEL_COPY_V_2_6_16_32
  18.392 +    bool
  18.393 +    prompt "2.6.16.32"
  18.394 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.395 +
  18.396 +config KERNEL_COPY_V_2_6_16_33
  18.397 +    bool
  18.398 +    prompt "2.6.16.33"
  18.399 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.400 +
  18.401 +config KERNEL_COPY_V_2_6_16_34
  18.402 +    bool
  18.403 +    prompt "2.6.16.34"
  18.404 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.405 +
  18.406 +config KERNEL_COPY_V_2_6_16_35
  18.407 +    bool
  18.408 +    prompt "2.6.16.35"
  18.409 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.410 +
  18.411 +config KERNEL_COPY_V_2_6_16_36
  18.412 +    bool
  18.413 +    prompt "2.6.16.36"
  18.414 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.415 +
  18.416 +config KERNEL_COPY_V_2_6_16_4
  18.417 +    bool
  18.418 +    prompt "2.6.16.4"
  18.419 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.420 +
  18.421 +config KERNEL_COPY_V_2_6_16_5
  18.422 +    bool
  18.423 +    prompt "2.6.16.5"
  18.424 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.425 +
  18.426 +config KERNEL_COPY_V_2_6_16_6
  18.427 +    bool
  18.428 +    prompt "2.6.16.6"
  18.429 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.430 +
  18.431 +config KERNEL_COPY_V_2_6_16_7
  18.432 +    bool
  18.433 +    prompt "2.6.16.7"
  18.434 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.435 +
  18.436 +config KERNEL_COPY_V_2_6_16_8
  18.437 +    bool
  18.438 +    prompt "2.6.16.8"
  18.439 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.440 +
  18.441 +config KERNEL_COPY_V_2_6_16_9
  18.442 +    bool
  18.443 +    prompt "2.6.16.9"
  18.444 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.445 +
  18.446 +config KERNEL_COPY_V_2_6_17
  18.447 +    bool
  18.448 +    prompt "2.6.17"
  18.449 +
  18.450 +config KERNEL_COPY_V_2_6_17_1
  18.451 +    bool
  18.452 +    prompt "2.6.17.1"
  18.453 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.454 +
  18.455 +config KERNEL_COPY_V_2_6_17_10
  18.456 +    bool
  18.457 +    prompt "2.6.17.10"
  18.458 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.459 +
  18.460 +config KERNEL_COPY_V_2_6_17_11
  18.461 +    bool
  18.462 +    prompt "2.6.17.11"
  18.463 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.464 +
  18.465 +config KERNEL_COPY_V_2_6_17_12
  18.466 +    bool
  18.467 +    prompt "2.6.17.12"
  18.468 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.469 +
  18.470 +config KERNEL_COPY_V_2_6_17_13
  18.471 +    bool
  18.472 +    prompt "2.6.17.13"
  18.473 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.474 +
  18.475 +config KERNEL_COPY_V_2_6_17_14
  18.476 +    bool
  18.477 +    prompt "2.6.17.14"
  18.478 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.479 +
  18.480 +config KERNEL_COPY_V_2_6_17_2
  18.481 +    bool
  18.482 +    prompt "2.6.17.2"
  18.483 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.484 +
  18.485 +config KERNEL_COPY_V_2_6_17_3
  18.486 +    bool
  18.487 +    prompt "2.6.17.3"
  18.488 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.489 +
  18.490 +config KERNEL_COPY_V_2_6_17_4
  18.491 +    bool
  18.492 +    prompt "2.6.17.4"
  18.493 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.494 +
  18.495 +config KERNEL_COPY_V_2_6_17_5
  18.496 +    bool
  18.497 +    prompt "2.6.17.5"
  18.498 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.499 +
  18.500 +config KERNEL_COPY_V_2_6_17_6
  18.501 +    bool
  18.502 +    prompt "2.6.17.6"
  18.503 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.504 +
  18.505 +config KERNEL_COPY_V_2_6_17_7
  18.506 +    bool
  18.507 +    prompt "2.6.17.7"
  18.508 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.509 +
  18.510 +config KERNEL_COPY_V_2_6_17_8
  18.511 +    bool
  18.512 +    prompt "2.6.17.8"
  18.513 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.514 +
  18.515 +config KERNEL_COPY_V_2_6_17_9
  18.516 +    bool
  18.517 +    prompt "2.6.17.9"
  18.518 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.519 +
  18.520 +config KERNEL_COPY_V_2_6_18
  18.521 +    bool
  18.522 +    prompt "2.6.18"
  18.523 +
  18.524 +config KERNEL_COPY_V_2_6_18_1
  18.525 +    bool
  18.526 +    prompt "2.6.18.1"
  18.527 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.528 +
  18.529 +config KERNEL_COPY_V_2_6_18_2
  18.530 +    bool
  18.531 +    prompt "2.6.18.2"
  18.532 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.533 +
  18.534 +config KERNEL_COPY_V_2_6_18_3
  18.535 +    bool
  18.536 +    prompt "2.6.18.3"
  18.537 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.538 +
  18.539 +config KERNEL_COPY_V_2_6_18_4
  18.540 +    bool
  18.541 +    prompt "2.6.18.4"
  18.542 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.543 +
  18.544 +config KERNEL_COPY_V_2_6_18_5
  18.545 +    bool
  18.546 +    prompt "2.6.18.5"
  18.547 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.548 +
  18.549 +config KERNEL_COPY_V_2_6_18_6
  18.550 +    bool
  18.551 +    prompt "2.6.18.6"
  18.552 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.553 +
  18.554 +config KERNEL_COPY_V_2_6_19
  18.555 +    bool
  18.556 +    prompt "2.6.19"
  18.557 +
  18.558 +config KERNEL_COPY_V_2_6_19_1
  18.559 +    bool
  18.560 +    prompt "2.6.19.1"
  18.561 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
  18.562 +
  18.563 +# CT_INSERT_VERSION_ABOVE
  18.564 +# Don't remove above line!
  18.565 +endchoice
  18.566 +
  18.567 +config KERNEL_VERSION
  18.568 +    string
  18.569 +    default "2.6.0" if KERNEL_COPY_V_2_6_0
  18.570 +    default "2.6.1" if KERNEL_COPY_V_2_6_1
  18.571 +    default "2.6.2" if KERNEL_COPY_V_2_6_2
  18.572 +    default "2.6.3" if KERNEL_COPY_V_2_6_3
  18.573 +    default "2.6.4" if KERNEL_COPY_V_2_6_4
  18.574 +    default "2.6.5" if KERNEL_COPY_V_2_6_5
  18.575 +    default "2.6.6" if KERNEL_COPY_V_2_6_6
  18.576 +    default "2.6.7" if KERNEL_COPY_V_2_6_7
  18.577 +    default "2.6.8" if KERNEL_COPY_V_2_6_8
  18.578 +    default "2.6.8.1" if KERNEL_COPY_V_2_6_8_1
  18.579 +    default "2.6.9" if KERNEL_COPY_V_2_6_9
  18.580 +    default "2.6.10" if KERNEL_COPY_V_2_6_10
  18.581 +    default "2.6.11" if KERNEL_COPY_V_2_6_11
  18.582 +    default "2.6.11.1" if KERNEL_COPY_V_2_6_11_1
  18.583 +    default "2.6.11.10" if KERNEL_COPY_V_2_6_11_10
  18.584 +    default "2.6.11.11" if KERNEL_COPY_V_2_6_11_11
  18.585 +    default "2.6.11.12" if KERNEL_COPY_V_2_6_11_12
  18.586 +    default "2.6.11.2" if KERNEL_COPY_V_2_6_11_2
  18.587 +    default "2.6.11.3" if KERNEL_COPY_V_2_6_11_3
  18.588 +    default "2.6.11.4" if KERNEL_COPY_V_2_6_11_4
  18.589 +    default "2.6.11.5" if KERNEL_COPY_V_2_6_11_5
  18.590 +    default "2.6.11.6" if KERNEL_COPY_V_2_6_11_6
  18.591 +    default "2.6.11.7" if KERNEL_COPY_V_2_6_11_7
  18.592 +    default "2.6.11.8" if KERNEL_COPY_V_2_6_11_8
  18.593 +    default "2.6.11.9" if KERNEL_COPY_V_2_6_11_9
  18.594 +    default "2.6.12" if KERNEL_COPY_V_2_6_12
  18.595 +    default "2.6.12.1" if KERNEL_COPY_V_2_6_12_1
  18.596 +    default "2.6.12.2" if KERNEL_COPY_V_2_6_12_2
  18.597 +    default "2.6.12.3" if KERNEL_COPY_V_2_6_12_3
  18.598 +    default "2.6.12.4" if KERNEL_COPY_V_2_6_12_4
  18.599 +    default "2.6.12.5" if KERNEL_COPY_V_2_6_12_5
  18.600 +    default "2.6.12.6" if KERNEL_COPY_V_2_6_12_6
  18.601 +    default "2.6.13" if KERNEL_COPY_V_2_6_13
  18.602 +    default "2.6.13.1" if KERNEL_COPY_V_2_6_13_1
  18.603 +    default "2.6.13.2" if KERNEL_COPY_V_2_6_13_2
  18.604 +    default "2.6.13.3" if KERNEL_COPY_V_2_6_13_3
  18.605 +    default "2.6.13.4" if KERNEL_COPY_V_2_6_13_4
  18.606 +    default "2.6.13.5" if KERNEL_COPY_V_2_6_13_5
  18.607 +    default "2.6.14" if KERNEL_COPY_V_2_6_14
  18.608 +    default "2.6.14.1" if KERNEL_COPY_V_2_6_14_1
  18.609 +    default "2.6.14.2" if KERNEL_COPY_V_2_6_14_2
  18.610 +    default "2.6.14.3" if KERNEL_COPY_V_2_6_14_3
  18.611 +    default "2.6.14.4" if KERNEL_COPY_V_2_6_14_4
  18.612 +    default "2.6.14.5" if KERNEL_COPY_V_2_6_14_5
  18.613 +    default "2.6.14.6" if KERNEL_COPY_V_2_6_14_6
  18.614 +    default "2.6.14.7" if KERNEL_COPY_V_2_6_14_7
  18.615 +    default "2.6.15" if KERNEL_COPY_V_2_6_15
  18.616 +    default "2.6.15.1" if KERNEL_COPY_V_2_6_15_1
  18.617 +    default "2.6.15.2" if KERNEL_COPY_V_2_6_15_2
  18.618 +    default "2.6.15.3" if KERNEL_COPY_V_2_6_15_3
  18.619 +    default "2.6.15.4" if KERNEL_COPY_V_2_6_15_4
  18.620 +    default "2.6.15.5" if KERNEL_COPY_V_2_6_15_5
  18.621 +    default "2.6.15.6" if KERNEL_COPY_V_2_6_15_6
  18.622 +    default "2.6.15.7" if KERNEL_COPY_V_2_6_15_7
  18.623 +    default "2.6.16" if KERNEL_COPY_V_2_6_16
  18.624 +    default "2.6.16.1" if KERNEL_COPY_V_2_6_16_1
  18.625 +    default "2.6.16.10" if KERNEL_COPY_V_2_6_16_10
  18.626 +    default "2.6.16.11" if KERNEL_COPY_V_2_6_16_11
  18.627 +    default "2.6.16.12" if KERNEL_COPY_V_2_6_16_12
  18.628 +    default "2.6.16.13" if KERNEL_COPY_V_2_6_16_13
  18.629 +    default "2.6.16.14" if KERNEL_COPY_V_2_6_16_14
  18.630 +    default "2.6.16.15" if KERNEL_COPY_V_2_6_16_15
  18.631 +    default "2.6.16.16" if KERNEL_COPY_V_2_6_16_16
  18.632 +    default "2.6.16.17" if KERNEL_COPY_V_2_6_16_17
  18.633 +    default "2.6.16.18" if KERNEL_COPY_V_2_6_16_18
  18.634 +    default "2.6.16.19" if KERNEL_COPY_V_2_6_16_19
  18.635 +    default "2.6.16.2" if KERNEL_COPY_V_2_6_16_2
  18.636 +    default "2.6.16.20" if KERNEL_COPY_V_2_6_16_20
  18.637 +    default "2.6.16.21" if KERNEL_COPY_V_2_6_16_21
  18.638 +    default "2.6.16.22" if KERNEL_COPY_V_2_6_16_22
  18.639 +    default "2.6.16.23" if KERNEL_COPY_V_2_6_16_23
  18.640 +    default "2.6.16.24" if KERNEL_COPY_V_2_6_16_24
  18.641 +    default "2.6.16.25" if KERNEL_COPY_V_2_6_16_25
  18.642 +    default "2.6.16.26" if KERNEL_COPY_V_2_6_16_26
  18.643 +    default "2.6.16.27" if KERNEL_COPY_V_2_6_16_27
  18.644 +    default "2.6.16.28" if KERNEL_COPY_V_2_6_16_28
  18.645 +    default "2.6.16.29" if KERNEL_COPY_V_2_6_16_29
  18.646 +    default "2.6.16.3" if KERNEL_COPY_V_2_6_16_3
  18.647 +    default "2.6.16.30" if KERNEL_COPY_V_2_6_16_30
  18.648 +    default "2.6.16.31" if KERNEL_COPY_V_2_6_16_31
  18.649 +    default "2.6.16.32" if KERNEL_COPY_V_2_6_16_32
  18.650 +    default "2.6.16.33" if KERNEL_COPY_V_2_6_16_33
  18.651 +    default "2.6.16.34" if KERNEL_COPY_V_2_6_16_34
  18.652 +    default "2.6.16.35" if KERNEL_COPY_V_2_6_16_35
  18.653 +    default "2.6.16.36" if KERNEL_COPY_V_2_6_16_36
  18.654 +    default "2.6.16.4" if KERNEL_COPY_V_2_6_16_4
  18.655 +    default "2.6.16.5" if KERNEL_COPY_V_2_6_16_5
  18.656 +    default "2.6.16.6" if KERNEL_COPY_V_2_6_16_6
  18.657 +    default "2.6.16.7" if KERNEL_COPY_V_2_6_16_7
  18.658 +    default "2.6.16.8" if KERNEL_COPY_V_2_6_16_8
  18.659 +    default "2.6.16.9" if KERNEL_COPY_V_2_6_16_9
  18.660 +    default "2.6.17" if KERNEL_COPY_V_2_6_17
  18.661 +    default "2.6.17.1" if KERNEL_COPY_V_2_6_17_1
  18.662 +    default "2.6.17.10" if KERNEL_COPY_V_2_6_17_10
  18.663 +    default "2.6.17.11" if KERNEL_COPY_V_2_6_17_11
  18.664 +    default "2.6.17.12" if KERNEL_COPY_V_2_6_17_12
  18.665 +    default "2.6.17.13" if KERNEL_COPY_V_2_6_17_13
  18.666 +    default "2.6.17.14" if KERNEL_COPY_V_2_6_17_14
  18.667 +    default "2.6.17.2" if KERNEL_COPY_V_2_6_17_2
  18.668 +    default "2.6.17.3" if KERNEL_COPY_V_2_6_17_3
  18.669 +    default "2.6.17.4" if KERNEL_COPY_V_2_6_17_4
  18.670 +    default "2.6.17.5" if KERNEL_COPY_V_2_6_17_5
  18.671 +    default "2.6.17.6" if KERNEL_COPY_V_2_6_17_6
  18.672 +    default "2.6.17.7" if KERNEL_COPY_V_2_6_17_7
  18.673 +    default "2.6.17.8" if KERNEL_COPY_V_2_6_17_8
  18.674 +    default "2.6.17.9" if KERNEL_COPY_V_2_6_17_9
  18.675 +    default "2.6.18" if KERNEL_COPY_V_2_6_18
  18.676 +    default "2.6.18.1" if KERNEL_COPY_V_2_6_18_1
  18.677 +    default "2.6.18.2" if KERNEL_COPY_V_2_6_18_2
  18.678 +    default "2.6.18.3" if KERNEL_COPY_V_2_6_18_3
  18.679 +    default "2.6.18.4" if KERNEL_COPY_V_2_6_18_4
  18.680 +    default "2.6.18.5" if KERNEL_COPY_V_2_6_18_5
  18.681 +    default "2.6.18.6" if KERNEL_COPY_V_2_6_18_6
  18.682 +    default "2.6.19" if KERNEL_COPY_V_2_6_19
  18.683 +    default "2.6.19.1" if KERNEL_COPY_V_2_6_19_1
  18.684 +# CT_INSERT_VERSION_STRING_ABOVE
  18.685 +# Don't remove above line!
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/config/kernel_linux_headers_install.in	Sat Feb 24 11:00:05 2007 +0000
    19.3 @@ -0,0 +1,75 @@
    19.4 +choice
    19.5 +    bool
    19.6 +    prompt "Linux kernel version"
    19.7 +
    19.8 +config KERNEL_INSTALL_V_2_6_18
    19.9 +    bool
   19.10 +    prompt "2.6.18"
   19.11 +
   19.12 +config KERNEL_INSTALL_V_2_6_18_1
   19.13 +    bool
   19.14 +    prompt "2.6.18.1"
   19.15 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.16 +
   19.17 +config KERNEL_INSTALL_V_2_6_18_2
   19.18 +    bool
   19.19 +    prompt "2.6.18.2"
   19.20 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.21 +
   19.22 +config KERNEL_INSTALL_V_2_6_18_3
   19.23 +    bool
   19.24 +    prompt "2.6.18.3"
   19.25 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.26 +
   19.27 +config KERNEL_INSTALL_V_2_6_18_4
   19.28 +    bool
   19.29 +    prompt "2.6.18.4"
   19.30 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.31 +
   19.32 +config KERNEL_INSTALL_V_2_6_18_5
   19.33 +    bool
   19.34 +    prompt "2.6.18.5"
   19.35 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.36 +
   19.37 +config KERNEL_INSTALL_V_2_6_18_6
   19.38 +    bool
   19.39 +    prompt "2.6.18.6"
   19.40 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.41 +
   19.42 +config KERNEL_INSTALL_V_2_6_19
   19.43 +    bool
   19.44 +    prompt "2.6.19"
   19.45 +
   19.46 +config KERNEL_INSTALL_V_2_6_19_1
   19.47 +    bool
   19.48 +    prompt "2.6.19.1"
   19.49 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.50 +
   19.51 +config KERNEL_INSTALL_V_2_6_19_2
   19.52 +    bool
   19.53 +    prompt "2.6.19.2"
   19.54 +    depends on KERNEL_VERSION_SEE_EXTRAVERSION
   19.55 +
   19.56 +config KERNEL_INSTALL_V_2_6_20
   19.57 +    bool
   19.58 +    prompt "2.6.20"
   19.59 +
   19.60 +# CT_INSERT_VERSION_ABOVE
   19.61 +# Don't remove above line!
   19.62 +endchoice
   19.63 +
   19.64 +config KERNEL_VERSION
   19.65 +    string
   19.66 +    default "2.6.18" if KERNEL_INSTALL_V_2_6_18
   19.67 +    default "2.6.18.1" if KERNEL_INSTALL_V_2_6_18_1
   19.68 +    default "2.6.18.2" if KERNEL_INSTALL_V_2_6_18_2
   19.69 +    default "2.6.18.3" if KERNEL_INSTALL_V_2_6_18_3
   19.70 +    default "2.6.18.4" if KERNEL_INSTALL_V_2_6_18_4
   19.71 +    default "2.6.18.5" if KERNEL_INSTALL_V_2_6_18_5
   19.72 +    default "2.6.18.6" if KERNEL_INSTALL_V_2_6_18_6
   19.73 +    default "2.6.19" if KERNEL_INSTALL_V_2_6_19
   19.74 +    default "2.6.19.1" if KERNEL_INSTALL_V_2_6_19_1
   19.75 +    default "2.6.19.2" if KERNEL_INSTALL_V_2_6_19_2
   19.76 +    default "2.6.20" if KERNEL_INSTALL_V_2_6_20
   19.77 +# CT_INSERT_VERSION_STRING_ABOVE
   19.78 +# Don't remove above line!
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/config/kernel_linux_headers_sanitised.in	Sat Feb 24 11:00:05 2007 +0000
    20.3 @@ -0,0 +1,62 @@
    20.4 +choice
    20.5 +    bool
    20.6 +    prompt "Linux headers version"
    20.7 +
    20.8 +config KERNEL_SANITISED_V_2_6_7_0
    20.9 +    bool
   20.10 +    prompt "2.6.7.0"
   20.11 +
   20.12 +config KERNEL_SANITISED_V_2_6_8_0
   20.13 +    bool
   20.14 +    prompt "2.6.8.0"
   20.15 +
   20.16 +config KERNEL_SANITISED_V_2_6_8_1
   20.17 +    bool
   20.18 +    prompt "2.6.8.1"
   20.19 +
   20.20 +config KERNEL_SANITISED_V_2_6_9_0
   20.21 +    bool
   20.22 +    prompt "2.6.9.0"
   20.23 +
   20.24 +config KERNEL_SANITISED_V_2_6_9_1
   20.25 +    bool
   20.26 +    prompt "2.6.9.1"
   20.27 +
   20.28 +config KERNEL_SANITISED_V_2_6_10_0
   20.29 +    bool
   20.30 +    prompt "2.6.10.0"
   20.31 +
   20.32 +config KERNEL_SANITISED_V_2_6_11_0
   20.33 +    bool
   20.34 +    prompt "2.6.11.0"
   20.35 +
   20.36 +config KERNEL_SANITISED_V_2_6_11_1
   20.37 +    bool
   20.38 +    prompt "2.6.11.1"
   20.39 +
   20.40 +config KERNEL_SANITISED_V_2_6_11_2
   20.41 +    bool
   20.42 +    prompt "2.6.11.2"
   20.43 +
   20.44 +config KERNEL_SANITISED_V_2_6_12_0
   20.45 +    bool
   20.46 +    prompt "2.6.12.0"
   20.47 +
   20.48 +# CT_INSERT_VERSION_ABOVE
   20.49 +# Don't remove above line!
   20.50 +endchoice
   20.51 +
   20.52 +config KERNEL_VERSION
   20.53 +    string
   20.54 +    default "2.6.7.0" if KERNEL_SANITISED_V_2_6_7_0
   20.55 +    default "2.6.8.0" if KERNEL_SANITISED_V_2_6_8_0
   20.56 +    default "2.6.8.1" if KERNEL_SANITISED_V_2_6_8_1
   20.57 +    default "2.6.9.0" if KERNEL_SANITISED_V_2_6_9_0
   20.58 +    default "2.6.9.1" if KERNEL_SANITISED_V_2_6_9_1
   20.59 +    default "2.6.10.0" if KERNEL_SANITISED_V_2_6_10_0
   20.60 +    default "2.6.11.0" if KERNEL_SANITISED_V_2_6_11_0
   20.61 +    default "2.6.11.1" if KERNEL_SANITISED_V_2_6_11_1
   20.62 +    default "2.6.11.2" if KERNEL_SANITISED_V_2_6_11_2
   20.63 +    default "2.6.12.0" if KERNEL_SANITISED_V_2_6_12_0
   20.64 +# CT_INSERT_VERSION_STRING_ABOVE
   20.65 +# Don't remove above line!
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/config/libc.in	Sat Feb 24 11:00:05 2007 +0000
    21.3 @@ -0,0 +1,36 @@
    21.4 +# C library options
    21.5 +
    21.6 +menu "C-library"
    21.7 +
    21.8 +choice
    21.9 +    bool
   21.10 +    prompt "C-library to use:"
   21.11 +    default LIBC_GLIBC
   21.12 +
   21.13 +config LIBC_GLIBC
   21.14 +    bool
   21.15 +    prompt "glibc"
   21.16 +
   21.17 +config LIBC_UCLIBC
   21.18 +    bool
   21.19 +    prompt "uClibc"
   21.20 +
   21.21 +endchoice
   21.22 +
   21.23 +config LIBC_VERSION
   21.24 +    string
   21.25 +
   21.26 +config LIBC
   21.27 +    string
   21.28 +    default "glibc" if LIBC_GLIBC
   21.29 +    default "uClibc" if LIBC_UCLIBC
   21.30 +
   21.31 +if LIBC_GLIBC
   21.32 +source config/libc_glibc.in
   21.33 +endif
   21.34 +
   21.35 +if LIBC_UCLIBC
   21.36 +source config/libc_uClibc.in
   21.37 +endif
   21.38 +
   21.39 +endmenu
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/config/libc_glibc.in	Sat Feb 24 11:00:05 2007 +0000
    22.3 @@ -0,0 +1,199 @@
    22.4 +# glibc options
    22.5 +
    22.6 +choice
    22.7 +    bool
    22.8 +    prompt "glibc version"
    22.9 +
   22.10 +config LIBC_V_1_09_1
   22.11 +    bool
   22.12 +    prompt "1.09.1"
   22.13 +
   22.14 +config LIBC_V_2_0_1
   22.15 +    bool
   22.16 +    prompt "2.0.1"
   22.17 +
   22.18 +config LIBC_V_2_0_6
   22.19 +    bool
   22.20 +    prompt "2.0.6"
   22.21 +
   22.22 +config LIBC_V_2_1_1
   22.23 +    bool
   22.24 +    prompt "2.1.1"
   22.25 +
   22.26 +config LIBC_V_2_1_2
   22.27 +    bool
   22.28 +    prompt "2.1.2"
   22.29 +
   22.30 +config LIBC_V_2_1_3
   22.31 +    bool
   22.32 +    prompt "2.1.3"
   22.33 +
   22.34 +config LIBC_V_2_2
   22.35 +    bool
   22.36 +    prompt "2.2"
   22.37 +
   22.38 +config LIBC_V_2_2_1
   22.39 +    bool
   22.40 +    prompt "2.2.1"
   22.41 +
   22.42 +config LIBC_V_2_2_2
   22.43 +    bool
   22.44 +    prompt "2.2.2"
   22.45 +
   22.46 +config LIBC_V_2_2_3
   22.47 +    bool
   22.48 +    prompt "2.2.3"
   22.49 +
   22.50 +config LIBC_V_2_2_4
   22.51 +    bool
   22.52 +    prompt "2.2.4"
   22.53 +
   22.54 +config LIBC_V_2_2_5
   22.55 +    bool
   22.56 +    prompt "2.2.5"
   22.57 +
   22.58 +config LIBC_V_2_3
   22.59 +    bool
   22.60 +    prompt "2.3"
   22.61 +
   22.62 +config LIBC_V_2_3_1
   22.63 +    bool
   22.64 +    prompt "2.3.1"
   22.65 +
   22.66 +config LIBC_V_2_3_2
   22.67 +    bool
   22.68 +    prompt "2.3.2"
   22.69 +
   22.70 +config LIBC_V_2_3_3
   22.71 +    bool
   22.72 +    prompt "2.3.3"
   22.73 +
   22.74 +config LIBC_V_2_3_4
   22.75 +    bool
   22.76 +    prompt "2.3.4"
   22.77 +
   22.78 +config LIBC_V_2_3_5
   22.79 +    bool
   22.80 +    prompt "2.3.5"
   22.81 +
   22.82 +config LIBC_V_2_3_6
   22.83 +    bool
   22.84 +    prompt "2.3.6"
   22.85 +
   22.86 +config LIBC_V_2_4
   22.87 +    bool
   22.88 +    prompt "2.4"
   22.89 +
   22.90 +config LIBC_V_2_5
   22.91 +    bool
   22.92 +    prompt "2.5"
   22.93 +
   22.94 +# CT_INSERT_VERSION_ABOVE
   22.95 +# Don't remove qbove line!
   22.96 +endchoice
   22.97 +
   22.98 +config LIBC_VERSION
   22.99 +    string
  22.100 +    default "1.09.1" if LIBC_V_1_09_1
  22.101 +    default "2.0.1" if LIBC_V_2_0_1
  22.102 +    default "2.0.6" if LIBC_V_2_0_6
  22.103 +    default "2.1.1" if LIBC_V_2_1_1
  22.104 +    default "2.1.2" if LIBC_V_2_1_2
  22.105 +    default "2.1.3" if LIBC_V_2_1_3
  22.106 +    default "2.2" if LIBC_V_2_2
  22.107 +    default "2.2.1" if LIBC_V_2_2_1
  22.108 +    default "2.2.2" if LIBC_V_2_2_2
  22.109 +    default "2.2.3" if LIBC_V_2_2_3
  22.110 +    default "2.2.4" if LIBC_V_2_2_4
  22.111 +    default "2.2.5" if LIBC_V_2_2_5
  22.112 +    default "2.3" if LIBC_V_2_3
  22.113 +    default "2.3.1" if LIBC_V_2_3_1
  22.114 +    default "2.3.2" if LIBC_V_2_3_2
  22.115 +    default "2.3.3" if LIBC_V_2_3_3
  22.116 +    default "2.3.4" if LIBC_V_2_3_4
  22.117 +    default "2.3.5" if LIBC_V_2_3_5
  22.118 +    default "2.3.6" if LIBC_V_2_3_6
  22.119 +    default "2.4" if LIBC_V_2_4
  22.120 +    default "2.5" if LIBC_V_2_5
  22.121 +# CT_INSERT_VERSION_STRING_ABOVE
  22.122 +# Don't remove above line!
  22.123 +
  22.124 +choice
  22.125 +    bool
  22.126 +    prompt "Threading implentation to use:"
  22.127 +    default LIBC_GLIBC_THREADS_LINUXTHREADS
  22.128 +
  22.129 +config LIBC_GLIBC_THREADS_NPTL
  22.130 +    bool
  22.131 +    prompt "nptl (not implemented)"
  22.132 +
  22.133 +config LIBC_GLIBC_THREADS_LINUXTHREADS
  22.134 +    bool
  22.135 +    prompt "linuxthreads"
  22.136 +
  22.137 +config LIBC_GLIBC_THREADS_NONE
  22.138 +    bool
  22.139 +    prompt "none"
  22.140 +
  22.141 +endchoice
  22.142 +
  22.143 +config LIBC_GLIBC_EXTRA_CONFIG
  22.144 +    string
  22.145 +    prompt "glibc extra config"
  22.146 +    default ""
  22.147 +    help
  22.148 +      Extra flags to pass onto ./configure when configuring glibc.
  22.149 +
  22.150 +      Eg.: --enable-static-nss
  22.151 +
  22.152 +config LIBC_GLIBC_EXTRA_CFLAGS
  22.153 +    string
  22.154 +    prompt "glibc extra target CFLAGS"
  22.155 +    default ""
  22.156 +    help
  22.157 +      Extra target CFLAGS to use when building glibc.
  22.158 +
  22.159 +config LIBC_EXTRA_CC_ARGS
  22.160 +    string
  22.161 +    prompt "gcc extra flags"
  22.162 +    default ""
  22.163 +    help
  22.164 +      Extra flags to pass gcc when building glibc.
  22.165 +
  22.166 +      Seldom used, except for sparc64 which seems to need the flag -64
  22.167 +      to be passed onto gcc.
  22.168 +
  22.169 +# Please note: This is not used for now (no sh support).
  22.170 +config LIBC_GLIBC_CONFIGPARMS
  22.171 +    string
  22.172 +    prompt "Extra config params (READ HELP)"
  22.173 +    default "" if ARCH != "sh3" && ARCH != "sh4"
  22.174 +    default "no-z-defs=yes" if ARCH = "sh3" || ARCH = "sh4"
  22.175 +    help
  22.176 +      Some architectures need to set options in the file configparms.
  22.177 +      This is the case for sh3/4, which really need to set configparms as of
  22.178 +      gcc-3.4/glibc-2.3.2.
  22.179 +
  22.180 +      Unless you are building a toolchain for sh3/4, you should leave that empty.
  22.181 +
  22.182 +      Note: this is awkward, doesn't work well if you need more than one
  22.183 +            line in configparms
  22.184 +
  22.185 +config LIBC_ADDONS
  22.186 +    bool
  22.187 +    prompt "Pass extra addons list"
  22.188 +    default n
  22.189 +    help
  22.190 +      If you say Y here, you'll be able to give the list of addons you want to
  22.191 +      include in your C library.
  22.192 +
  22.193 +config LIBC_ADDONS_LIST
  22.194 +    string
  22.195 +    prompt "Extra addons"
  22.196 +    default ""
  22.197 +    help
  22.198 +      Extra addons to include in glibc.
  22.199 +      
  22.200 +      Eg.: crypt        (for very old glibces)
  22.201 +           ports        (for the ports addon, with other architectures)
  22.202 +           linuxthreads (for the linuxthreads implementation of threads)
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/config/libc_uClibc.in	Sat Feb 24 11:00:05 2007 +0000
    23.3 @@ -0,0 +1,92 @@
    23.4 +# uClibc options
    23.5 +
    23.6 +choice
    23.7 +    bool
    23.8 +    prompt "uClibc version"
    23.9 +
   23.10 +config LIBC_V_snapshot
   23.11 +    bool
   23.12 +    prompt "latest snapshot"
   23.13 +
   23.14 +config LIBC_V_specific_date
   23.15 +    bool
   23.16 +    prompt "<specific date>"
   23.17 +
   23.18 +config LIBC_V_0_9_26
   23.19 +    bool
   23.20 +    prompt "0.9.26"
   23.21 +
   23.22 +config LIBC_V_0_9_27
   23.23 +    bool
   23.24 +    prompt "0.9.27"
   23.25 +
   23.26 +config LIBC_V_0_9_28
   23.27 +    bool
   23.28 +    prompt "0.9.28"
   23.29 +
   23.30 +config LIBC_V_0_9_28_1
   23.31 +    bool
   23.32 +    prompt "0.9.28.1"
   23.33 +
   23.34 +config LIBC_V_0_9_28_2
   23.35 +    bool
   23.36 +    prompt "0.9.28.2"
   23.37 +
   23.38 +# CT_INSERT_VERSION_ABOVE
   23.39 +# Don't remove above line!
   23.40 +endchoice
   23.41 +
   23.42 +config LIBC_VERSION
   23.43 +    string
   23.44 +    prompt "Enter date (YYYYMMDD)" if LIBC_V_specific_date
   23.45 +    default "snapshot" if LIBC_V_snapshot
   23.46 +    default "0.9.26" if LIBC_V_0_9_26
   23.47 +    default "0.9.27" if LIBC_V_0_9_27
   23.48 +    default "0.9.28" if LIBC_V_0_9_28
   23.49 +    default "0.9.28.1" if LIBC_V_0_9_28_1
   23.50 +    default "0.9.28.2" if LIBC_V_0_9_28_2
   23.51 +# CT_INSERT_VERSION_STRING_ABOVE
   23.52 +# Don't remove qbove line!
   23.53 +
   23.54 +choice
   23.55 +    bool
   23.56 +    prompt "Debug level"
   23.57 +    default LIBC_UCLIBC_DEBUG_LEVEL_0
   23.58 +
   23.59 +config LIBC_UCLIBC_DEBUG_LEVEL_0
   23.60 +    bool
   23.61 +    prompt "none"
   23.62 +
   23.63 +config LIBC_UCLIBC_DEBUG_LEVEL_1
   23.64 +    bool
   23.65 +    prompt "minimal"
   23.66 +
   23.67 +config LIBC_UCLIBC_DEBUG_LEVEL_2
   23.68 +    bool
   23.69 +    prompt "all"
   23.70 +
   23.71 +endchoice
   23.72 +
   23.73 +config LIBC_UCLIBC_DEBUG_LEVEL
   23.74 +    int
   23.75 +    default 0 if LIBC_UCLIBC_DEBUG_LEVEL_0
   23.76 +    default 1 if LIBC_UCLIBC_DEBUG_LEVEL_1
   23.77 +    default 2 if LIBC_UCLIBC_DEBUG_LEVEL_2
   23.78 +
   23.79 +config LIBC_UCLIBC_CONFIG_FILE
   23.80 +    string
   23.81 +    prompt "Configuration file"
   23.82 +    default ""
   23.83 +    help
   23.84 +      Path to the configuration file.
   23.85 +      
   23.86 +      You _must_ provide one (for now).
   23.87 +
   23.88 +config LIBC_UCLIBC_LOCALES
   23.89 +    bool
   23.90 +    prompt "Add support for locales"
   23.91 +    default n
   23.92 +    help
   23.93 +      Say y if you want uClibc to support localisation.
   23.94 +
   23.95 +      Note that seems to be broken on recent uClibc releases.
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/config/target.in	Sat Feb 24 11:00:05 2007 +0000
    24.3 @@ -0,0 +1,300 @@
    24.4 +# Target definition: architecture, optimisations, etc...
    24.5 +
    24.6 +menu "Target options"
    24.7 +
    24.8 +comment "General target options"
    24.9 +
   24.10 +choice
   24.11 +    bool
   24.12 +    prompt "Target architecture:"
   24.13 +    default ARCH_x86
   24.14 +
   24.15 +config ARCH_ARM
   24.16 +    bool
   24.17 +    prompt "arm"
   24.18 +
   24.19 +config ARCH_MIPS
   24.20 +    bool
   24.21 +    prompt "mips"
   24.22 +
   24.23 +config ARCH_x86
   24.24 +    bool
   24.25 +    prompt "x86"
   24.26 +
   24.27 +config ARCH_x86_64
   24.28 +    bool
   24.29 +    prompt "x86_64"
   24.30 +
   24.31 +endchoice
   24.32 +
   24.33 +choice
   24.34 +    bool
   24.35 +    prompt "Endianness:"
   24.36 +
   24.37 +config ARCH_BE
   24.38 +    bool
   24.39 +    prompt "Big endian"
   24.40 +
   24.41 +config ARCH_LE
   24.42 +    bool
   24.43 +    prompt "Little endian"
   24.44 +
   24.45 +endchoice
   24.46 +
   24.47 +comment "Target optimisations"
   24.48 +
   24.49 +config ARCH_CPU
   24.50 +    string
   24.51 +    prompt "Emit assembly for CPU"
   24.52 +    default ""
   24.53 +    help
   24.54 +      This specifies the name of the target ARM processor. GCC uses this name
   24.55 +      to determine what kind of instructions it can emit when generating
   24.56 +      assembly code.
   24.57 +      
   24.58 +      Pick a value from the gcc manual for your choosen gcc version and your
   24.59 +      target CPU.
   24.60 +      
   24.61 +      Leave blank if you don't know, or if your target architecture does not
   24.62 +      offer this option.
   24.63 +
   24.64 +config ARCH_TUNE
   24.65 +    string
   24.66 +    prompt "Tune for CPU"
   24.67 +    default ""
   24.68 +    help
   24.69 +      This option is very similar to the ARCH_CPU option (above), except
   24.70 +      that instead of specifying the actual target processor type, and hence
   24.71 +      restricting which instructions can be used, it specifies that GCC should
   24.72 +      tune the performance of the code as if the target were of the type
   24.73 +      specified in this option, but still choosing the instructions that it
   24.74 +      will generate based on the cpu specified by the ARCH_CPU option
   24.75 +      (above), or a (command-line) -mcpu= option.
   24.76 +      
   24.77 +      Pick a value from the gcc manual for your choosen gcc version and your
   24.78 +      target CPU.
   24.79 +      
   24.80 +      Leave blank if you don't know, or if your target architecture does not
   24.81 +      offer this option.
   24.82 +
   24.83 +config ARCH_ARCH
   24.84 +    string
   24.85 +    prompt "Achitecture level"
   24.86 +    default ""
   24.87 +    help
   24.88 +      GCC uses this name to determine what kind of instructions it can emit
   24.89 +      when generating assembly code. This option can be used in conjunction
   24.90 +      with or instead of the ARCH_CPU option (above), or a (command-line)
   24.91 +      -mcpu= option.
   24.92 +      
   24.93 +      Pick a value from the gcc manual for your choosen gcc version and your
   24.94 +      target CPU.
   24.95 +      
   24.96 +      Leave blank if you don't know, or if your target architecture does not
   24.97 +      offer this option.
   24.98 +
   24.99 +config ARCH_FPU
  24.100 +    string
  24.101 +    prompt "Use FPU"
  24.102 +    default ""
  24.103 +    help
  24.104 +      On some targets (eg. ARM), you can specify the kind of FPU to emit
  24.105 +      code for.
  24.106 +      
  24.107 +      See below wether to actually emit FP opcodes, or to emulate them.
  24.108 +      
  24.109 +      Pick a value from the gcc manual for your choosen gcc version and your
  24.110 +      target CPU.
  24.111 +      
  24.112 +      Leave blank if you don't know, or if your target architecture does not
  24.113 +      offer this option.
  24.114 +
  24.115 +choice
  24.116 +    bool
  24.117 +    prompt "Floating point:"
  24.118 +
  24.119 +config ARCH_FLOAT_HW
  24.120 +    bool
  24.121 +    prompt "hardware (FPU)"
  24.122 +    help
  24.123 +      Emit hardware floating point opcodes.
  24.124 +      
  24.125 +      If you've got a processor with a FPU, then you want that.
  24.126 +      If your hardware has no FPU, you still can use HW floating point, but
  24.127 +      need to compile support for FPU emulation in your kernel. Needless to
  24.128 +      say that emulating the FPU is /slooowwwww/...
  24.129 +      
  24.130 +      One situation you'd want HW floating point without a FPU is if you get
  24.131 +      binary blobs from different vendors that are compiling this way and
  24.132 +      can't (don't wan't to) change.
  24.133 +
  24.134 +config ARCH_FLOAT_SW
  24.135 +    bool
  24.136 +    prompt "software"
  24.137 +    help
  24.138 +      Do not emit any hardware floating point opcode.
  24.139 +      
  24.140 +      If your processor has no FPU, then you most probably want this, as it
  24.141 +      is faster than emulating the FPU in the kernel.
  24.142 +
  24.143 +endchoice
  24.144 +
  24.145 +config ARCH_FLOAT_SW_LIBFLOAT
  24.146 +    bool
  24.147 +    prompt "Use libfloat"
  24.148 +    default n
  24.149 +    depends on ARCH_FLOAT_SW
  24.150 +    help
  24.151 +      For those targets upporting it, you can use libfloat for the software
  24.152 +      floating point emulation.
  24.153 +      
  24.154 +      Note that some versions of gcc have support code that supersedes libfloat,
  24.155 +      while others don't. Known version of gcc that don't have support code are
  24.156 +      versions prior to 3.0, and version above 4.0.
  24.157 +      
  24.158 +      You should check gcc before deciding to use libfloat.
  24.159 +
  24.160 +config TARGET_CFLAGS
  24.161 +    string
  24.162 +    prompt "Default target CFLAGS"
  24.163 +    default ""
  24.164 +    help
  24.165 +      Used to add specific options when compiling libraries of the toolchain,
  24.166 +      that will run on the target (eg. libc.so).
  24.167 +      
  24.168 +      Note that the options above for CPU, tune, arch and FPU will be
  24.169 +      automaticaly used. You don't need to specify them here.
  24.170 +      
  24.171 +      Leave blank if you don't know better.
  24.172 +
  24.173 +comment "Toolchain options"
  24.174 +
  24.175 +config USE_SYSROOT
  24.176 +    bool
  24.177 +    prompt "Use sysroot'ed toolchain"
  24.178 +    default y
  24.179 +    help
  24.180 +      Use the 'shinny new' sysroot feature of gcc: libraries split between
  24.181 +      prefix/target/sys-root/lib and prefix/target/sys-root/usr/lib
  24.182 +      
  24.183 +      You definitely want to say 'Y' here. Yes you do. I know you do. Say 'Y'.
  24.184 +
  24.185 +config SHARED_LIBS
  24.186 +    bool
  24.187 +    prompt "Build shared libraries"
  24.188 +    default y
  24.189 +    help
  24.190 +      Say 'y' here, unless you don't want shared libraries.
  24.191 +      
  24.192 +      You might not want shared librries if you're building for a target that
  24.193 +      don't support it (maybe some nommu targets, for example, or bare metal).
  24.194 +
  24.195 +config TARGET_MULTILIB
  24.196 +    bool
  24.197 +#    prompt "Enable 'multilib' support (EXPERIMENTAL)"
  24.198 +    default n
  24.199 +    help
  24.200 +      Enable the so-called 'multilib' support.
  24.201 +      
  24.202 +      With the same toolchain, and on some architectures, you will be able to
  24.203 +      build big and little endian binaries, soft- and hard-float, etc...
  24.204 +      
  24.205 +      See the gcc configure manual at http://gcc.gnu.org/install/configure.html
  24.206 +      to see what multilib your target supports.
  24.207 +      
  24.208 +      It's preferable for now to build two (or more) toolchains, one for each
  24.209 +      configuration you need to support (eg. one for thumb and one for ARM,
  24.210 +      etc...). You can use the vendor string to diferentiate those toolchains.
  24.211 +
  24.212 +config TARGET_VENDOR
  24.213 +    string
  24.214 +    prompt "Vendor string"
  24.215 +    default "unknown"
  24.216 +    help
  24.217 +      Vendor part of the machine triplet.
  24.218 +      
  24.219 +      A triplet is of the form arch-vendor-kernel-system.
  24.220 +      You can set the second part, vendor, to whatever you see fit.
  24.221 +      Use a single word, or use underscores "_" to separate words.
  24.222 +      
  24.223 +      Keep the default (unkown) if you don't know better.
  24.224 +
  24.225 +config TARGET_ALIAS
  24.226 +    string
  24.227 +    prompt "Target alias"
  24.228 +    default ""
  24.229 +    help
  24.230 +      Normaly, you'd call your toolchain component (especially gcc) by
  24.231 +      prefixing the target triplet followed by a dash and the component name
  24.232 +      (eg. armeb-unknown-linux-uclibc-gcc).
  24.233 +      
  24.234 +      You can enter a shortcut here. This string will be used to create
  24.235 +      symbolic links to the toolchain tools (eg. if you enter "foo-bar" here,
  24.236 +      then gcc for your toolchain will also be available as "foo-bar-gcc" along
  24.237 +      with the original name).
  24.238 +      
  24.239 +      You shouldn't need to enter anything here, unless you plan to manually
  24.240 +      call the tools (autotools-based ./configure will use the standard name).
  24.241 +
  24.242 +config ARCH
  24.243 +    string
  24.244 +    default "arm"     if ARCH_ARM
  24.245 +    default "mips"    if ARCH_MIPS
  24.246 +    default "x86"     if ARCH_x86
  24.247 +    default "x86_64"  if ARCH_x86_64
  24.248 +
  24.249 +config BUILD 
  24.250 +    string
  24.251 +    prompt "Build system triplet"
  24.252 +    default ""
  24.253 +    help
  24.254 +      Canonical name of the machine building the toolchain.
  24.255 +      You should leave empty, unless you really now what you're doing.
  24.256 +
  24.257 +config CC_NATIVE
  24.258 +    string
  24.259 +    prompt "Native gcc"
  24.260 +    default "gcc"
  24.261 +    help
  24.262 +      The native C compiler.
  24.263 +      
  24.264 +      You can set this to an alternative compiler if you have more than one
  24.265 +      installed (eg. gcc is gcc-4.1.1 and you want to use gcc-3.4.6).
  24.266 +      
  24.267 +      You can leave this empty as well, in which case gcc will be used.
  24.268 +
  24.269 +config CANADIAN
  24.270 +    bool
  24.271 +    prompt "Canadian build (EXPERIMENTAL)"
  24.272 +    default n
  24.273 +    help
  24.274 +      A canadian build allows to build a compiler on a first machine
  24.275 +      (build system), that will run on second machine (host system),
  24.276 +      targetting a third machine (target system).
  24.277 +      
  24.278 +      An example where you'd want a candian cross-compiler is to create
  24.279 +      a native compiler for your target. In this case host and target
  24.280 +      are the same.
  24.281 +
  24.282 +config HOST
  24.283 +    string
  24.284 +    prompt "Host system triplet"
  24.285 +    default ""
  24.286 +    depends on CANADIAN
  24.287 +    help
  24.288 +      Canonical name of the machine serving as host.
  24.289 +
  24.290 +config HOST_CC
  24.291 +    string
  24.292 +    prompt "Host system compiler"
  24.293 +    default "${CT_HOST}-"
  24.294 +    depends on CANADIAN
  24.295 +    help
  24.296 +      C compiler targeting the host system.
  24.297 +      If HOST_CC ends with a dash (-), then it is considered to be the
  24.298 +      prefix to gcc (eg. x86-pc-linuc-gnu-).
  24.299 +      If it is empty, it is formed by appending '-gcc' to HOST.
  24.300 +      Else it is considered to be the complete name of the compiler, with
  24.301 +      full path, or without path (provided that it can be found in PATH).
  24.302 +
  24.303 +endmenu
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/docs/overview.txt	Sat Feb 24 11:00:05 2007 +0000
    25.3 @@ -0,0 +1,108 @@
    25.4 +File.........: overview.txt
    25.5 +Content......: Overview of how ct-ng works.
    25.6 +Copyrigth....: (C) 2006 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
    25.7 +License......: see COPYING in the root of this package
    25.8 +________________
    25.9 +               /
   25.10 +Introduction  /
   25.11 +_____________/
   25.12 +
   25.13 +crosstool-NG aims at building toolchains. Toolchains are an essential component
   25.14 +in a software development project. It will compile, assemble and link the code
   25.15 +that is being developped. Some pieces of the toolchain will eventually end up
   25.16 +in the resulting binary/ies: static libraries are but an example.
   25.17 +
   25.18 +So, a toolchain is a very sensitive piece of software, as any bug in one of the
   25.19 +components, or a poorly configured component, can lead to execution problems,
   25.20 +ranging from poor performance, to applications ending unexpectedly, to
   25.21 +mis-behaving software (which more than often is hard to detect), to hardware
   25.22 +damage, or even to human risks (which is more than regretable).
   25.23 +
   25.24 +Toolchains are made of different piece of software, each being quite complex
   25.25 +and requiring specially crafted options to build and work seamlessly. This
   25.26 +is usually not that easy, even in the not-so-trivial case of native toolchains.
   25.27 +The work reaches a higher degree of complexity when it comes to cross-
   25.28 +compilation, where it can becomes quite a nightmare...
   25.29 +
   25.30 +Some cross-toolchain exits on the internet, and can be used for general
   25.31 +development, but they have a number of limitations:
   25.32 +  - they can be general purpose, in that they are configured for the majority:
   25.33 +    no optimisation for your specific target,
   25.34 +  - they can be prepared for a specific target and thus are not easy to use,
   25.35 +    nor optimised for, or even supporting your target,
   25.36 +  - they often are using ageing components (compiler, C library, etc...) not
   25.37 +    supporting special features of your shiny new processor;
   25.38 +On the other side, these toolchain offer some advantages:
   25.39 +  - they are ready to use and quite easy to install and setup,
   25.40 +  - they are proven if used by a wide community.
   25.41 +
   25.42 +But once you want to get all the juice out of your specific hardware, you will
   25.43 +want to build your own toolchain. This is where crosstool-ng comes into play.
   25.44 +
   25.45 +There are also a number of tools that builds toolchains for specific needs,
   25.46 +which is not really scalable. Examples are:
   25.47 +  - buildroot (buildroot.uclibc.org) whose main puprpose is to build root file
   25.48 +    systems, hence the name. But once you have your toolchain with buildroot,
   25.49 +    part of it is installed in the root-to-be, so if you want to build a whole
   25.50 +    new root, you either have to save the existing one as a template and
   25.51 +    restore it later, or restart again from scratch. This is not convenient,
   25.52 +  - ptxdist (www.pengutronix.de/software/ptxdist), whose purpose is very
   25.53 +    similar to buildroot,
   25.54 +  - other projects (openembeded.org for example), which is again used to
   25.55 +    build root file systems.
   25.56 +
   25.57 +crosstool-NG is really targetted at building toolchains, and only toolchains.
   25.58 +It is then up to you to use it the way you want.
   25.59 +
   25.60 +___________
   25.61 +          /
   25.62 +History  /
   25.63 +________/
   25.64 +
   25.65 +crosstool was first 'conceived' by Dan Kegel, which offered it to the community,
   25.66 +as a set of scripts, a repository of patches, and some pre-configured, general
   25.67 +purpose setup files to be used to configure crosstool. This is available at
   25.68 +www.kegel.com/crosstool, and the subversion repository is hosted on google at
   25.69 +http://code.google.com/p/crosstool/.
   25.70 +
   25.71 +At the time of writing, crosstool only supports building with one C library,
   25.72 +namely glibc, and one C compiler, gcc; it is cripled with historical support
   25.73 +for legacy components, and is some kind of a mess to upgrade.
   25.74 +
   25.75 +I once managed to add support for uClibc-based toolchains, but it did not make
   25.76 +into mainline, mostly because I don't have time to port the patch forward to
   25.77 +the new versions, due in part to the big effort it was taking.
   25.78 +
   25.79 +So I decided to clean up crosstool in the state it was, re-order the things
   25.80 +in place, and add appropriate support for what I needed, that is uClibc
   25.81 +support.
   25.82 +
   25.83 +The only option left to me was rewrite crosstool from scratch. I decided to go
   25.84 +this way, and name the new implementation ct-ng, standing for crosstool Next
   25.85 +Generation, as many other comunity projects do, and as a wink at the TV series
   25.86 +"Star Trek: The Next Generation". ;-)
   25.87 +
   25.88 +_____________
   25.89 +            /
   25.90 +Operation  /
   25.91 +__________/
   25.92 +
   25.93 +ct-ng is configured by a configurator presenting a menu-stuctured set of
   25.94 +options. These options let you specify the way you want your toolchain built,
   25.95 +where you want it installed, what architecture and specific processor it
   25.96 +will support, the version of the components you want to use, etc... The
   25.97 +value for those options are then stored in a configuration file.
   25.98 +
   25.99 +You then simply run make. It will use this configuration file to retrieve,
  25.100 +extract and patch the components, build, install and test your newly built
  25.101 +toolchain.
  25.102 +
  25.103 +You are then free to add the toolchain /bin directory in your PATH to use
  25.104 +it at will.
  25.105 +
  25.106 +_____________
  25.107 +            /
  25.108 +Internals  /
  25.109 +__________/
  25.110 +
  25.111 +<To be completed>
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/kconfig/Makefile	Sat Feb 24 11:00:05 2007 +0000
    26.3 @@ -0,0 +1,71 @@
    26.4 +# ===========================================================================
    26.5 +# crosstool-ng configuration targets
    26.6 +# These targets are used from top-level makefile
    26.7 +
    26.8 +KCONFIG_TOP = config/config.in
    26.9 +obj = ./kconfig
   26.10 +PHONY += clean help oldconfig menuconfig config silentoldconfig \
   26.11 +	randconfig allyesconfig allnoconfig allmodconfig defconfig
   26.12 +
   26.13 +menuconfig: $(obj)/mconf
   26.14 +	@$< $(KCONFIG_TOP)
   26.15 +
   26.16 +config: $(obj)/conf
   26.17 +	@$< $(KCONFIG_TOP)
   26.18 +
   26.19 +oldconfig: $(obj)/conf
   26.20 +	@$< -s $(KCONFIG_TOP)
   26.21 +
   26.22 +randconfig: $(obj)/conf
   26.23 +	@$< -r $(KCONFIG_TOP)
   26.24 +
   26.25 +allyesconfig: $(obj)/conf
   26.26 +	@$< -y $(KCONFIG_TOP)
   26.27 +
   26.28 +allnoconfig: $(obj)/conf
   26.29 +	@$< -n $(KCONFIG_TOP)
   26.30 +
   26.31 +defconfig: $(obj)/conf
   26.32 +	@$< -d $(KCONFIG_TOP)
   26.33 +
   26.34 +# Build a list of all available samples
   26.35 +SAMPLES = $(patsubst $(CT_TOP_DIR)/samples/%,%,$(filter-out %Makefile,$(wildcard $(CT_TOP_DIR)/samples/*)))
   26.36 +SAMPLES_CONFIG = $(patsubst %,%_config,$(SAMPLES))
   26.37 +.PHONY: $(SAMPLES_CONFIG)
   26.38 +$(SAMPLES_CONFIG):
   26.39 +	@cp "$(CT_TOP_DIR)/samples/$(patsubst %_config,%,$@)/crosstool.config" "$(CT_TOP_DIR)/.config"
   26.40 +	@$(MAKE) oldconfig
   26.41 +
   26.42 +# Help text used by make help
   26.43 +help::
   26.44 +	@echo  'General purpose configuration targets:'
   26.45 +	@echo  '  config	  - Update current config utilising a line-oriented program'
   26.46 +	@echo  '  menuconfig	  - Update current config utilising a menu based program'
   26.47 +	@echo  '  oldconfig	  - Update current config utilising a provided .config as base'
   26.48 +	@echo  '  randconfig	  - New config with random answer to all options'
   26.49 +	@echo  '  defconfig	  - New config with default answer to all options'
   26.50 +	@echo  '  allyesconfig	  - New config where all options are accepted with yes'
   26.51 +	@echo  '  allnoconfig	  - New config where all options are answered with no'
   26.52 +	@echo
   26.53 +	@echo  'Preconfigured configuration targets:'
   26.54 +	@for s in $(SAMPLES_CONFIG); do   \
   26.55 +	    echo  "  $${s}"; \
   26.56 +	 done
   26.57 +	@echo  ''
   26.58 +
   26.59 +# Cheesy build
   26.60 +
   26.61 +SHIPPED = kconfig/zconf.tab.c kconfig/lex.zconf.c kconfig/zconf.hash.c
   26.62 +
   26.63 +%.c: %.c_shipped
   26.64 +	@ln -s $(notdir $<) $@
   26.65 +
   26.66 +kconfig/mconf: $(SHIPPED) kconfig/mconf.c
   26.67 +	@$(HOST_CC) -o $@ kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
   26.68 +		-lcurses "-DCURSES_LOC=<ncurses.h>"
   26.69 +
   26.70 +kconfig/conf: $(SHIPPED) kconfig/conf.c
   26.71 +	@$(HOST_CC) -o $@ kconfig/{conf.c,zconf.tab.c}
   26.72 +
   26.73 +clean::
   26.74 +	@rm -f $(wildcard kconfig/*zconf*.c) kconfig/{conf,mconf}
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/kconfig/conf.c	Sat Feb 24 11:00:05 2007 +0000
    27.3 @@ -0,0 +1,623 @@
    27.4 +/*
    27.5 + * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
    27.6 + * Released under the terms of the GNU GPL v2.0.
    27.7 + */
    27.8 +
    27.9 +#include <ctype.h>
   27.10 +#include <stdlib.h>
   27.11 +#include <stdio.h>
   27.12 +#include <string.h>
   27.13 +#include <unistd.h>
   27.14 +#include <time.h>
   27.15 +#include <sys/stat.h>
   27.16 +
   27.17 +#define LKC_DIRECT_LINK
   27.18 +#include "lkc.h"
   27.19 +
   27.20 +static void conf(struct menu *menu);
   27.21 +static void check_conf(struct menu *menu);
   27.22 +
   27.23 +enum {
   27.24 +	ask_all,
   27.25 +	ask_new,
   27.26 +	ask_silent,
   27.27 +	set_default,
   27.28 +	set_yes,
   27.29 +	set_mod,
   27.30 +	set_no,
   27.31 +	set_random
   27.32 +} input_mode = ask_all;
   27.33 +char *defconfig_file;
   27.34 +
   27.35 +static int indent = 1;
   27.36 +static int valid_stdin = 1;
   27.37 +static int conf_cnt;
   27.38 +static char line[128];
   27.39 +static struct menu *rootEntry;
   27.40 +
   27.41 +static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
   27.42 +
   27.43 +static void strip(char *str)
   27.44 +{
   27.45 +	char *p = str;
   27.46 +	int l;
   27.47 +
   27.48 +	while ((isspace(*p)))
   27.49 +		p++;
   27.50 +	l = strlen(p);
   27.51 +	if (p != str)
   27.52 +		memmove(str, p, l + 1);
   27.53 +	if (!l)
   27.54 +		return;
   27.55 +	p = str + l - 1;
   27.56 +	while ((isspace(*p)))
   27.57 +		*p-- = 0;
   27.58 +}
   27.59 +
   27.60 +static void check_stdin(void)
   27.61 +{
   27.62 +	if (!valid_stdin && input_mode == ask_silent) {
   27.63 +		printf(_("aborted!\n\n"));
   27.64 +		printf(_("Console input/output is redirected. "));
   27.65 +		printf(_("Run 'make oldconfig' to update configuration.\n\n"));
   27.66 +		exit(1);
   27.67 +	}
   27.68 +}
   27.69 +
   27.70 +static void conf_askvalue(struct symbol *sym, const char *def)
   27.71 +{
   27.72 +	enum symbol_type type = sym_get_type(sym);
   27.73 +	tristate val;
   27.74 +
   27.75 +	if (!sym_has_value(sym))
   27.76 +		printf("(NEW) ");
   27.77 +
   27.78 +	line[0] = '\n';
   27.79 +	line[1] = 0;
   27.80 +
   27.81 +	if (!sym_is_changable(sym)) {
   27.82 +		printf("%s\n", def);
   27.83 +		line[0] = '\n';
   27.84 +		line[1] = 0;
   27.85 +		return;
   27.86 +	}
   27.87 +
   27.88 +	switch (input_mode) {
   27.89 +	case set_no:
   27.90 +	case set_mod:
   27.91 +	case set_yes:
   27.92 +	case set_random:
   27.93 +		if (sym_has_value(sym)) {
   27.94 +			printf("%s\n", def);
   27.95 +			return;
   27.96 +		}
   27.97 +		break;
   27.98 +	case ask_new:
   27.99 +	case ask_silent:
  27.100 +		if (sym_has_value(sym)) {
  27.101 +			printf("%s\n", def);
  27.102 +			return;
  27.103 +		}
  27.104 +		check_stdin();
  27.105 +	case ask_all:
  27.106 +		fflush(stdout);
  27.107 +		fgets(line, 128, stdin);
  27.108 +		return;
  27.109 +	case set_default:
  27.110 +		printf("%s\n", def);
  27.111 +		return;
  27.112 +	default:
  27.113 +		break;
  27.114 +	}
  27.115 +
  27.116 +	switch (type) {
  27.117 +	case S_INT:
  27.118 +	case S_HEX:
  27.119 +	case S_STRING:
  27.120 +		printf("%s\n", def);
  27.121 +		return;
  27.122 +	default:
  27.123 +		;
  27.124 +	}
  27.125 +	switch (input_mode) {
  27.126 +	case set_yes:
  27.127 +		if (sym_tristate_within_range(sym, yes)) {
  27.128 +			line[0] = 'y';
  27.129 +			line[1] = '\n';
  27.130 +			line[2] = 0;
  27.131 +			break;
  27.132 +		}
  27.133 +	case set_mod:
  27.134 +		if (type == S_TRISTATE) {
  27.135 +			if (sym_tristate_within_range(sym, mod)) {
  27.136 +				line[0] = 'm';
  27.137 +				line[1] = '\n';
  27.138 +				line[2] = 0;
  27.139 +				break;
  27.140 +			}
  27.141 +		} else {
  27.142 +			if (sym_tristate_within_range(sym, yes)) {
  27.143 +				line[0] = 'y';
  27.144 +				line[1] = '\n';
  27.145 +				line[2] = 0;
  27.146 +				break;
  27.147 +			}
  27.148 +		}
  27.149 +	case set_no:
  27.150 +		if (sym_tristate_within_range(sym, no)) {
  27.151 +			line[0] = 'n';
  27.152 +			line[1] = '\n';
  27.153 +			line[2] = 0;
  27.154 +			break;
  27.155 +		}
  27.156 +	case set_random:
  27.157 +		do {
  27.158 +			val = (tristate)(random() % 3);
  27.159 +		} while (!sym_tristate_within_range(sym, val));
  27.160 +		switch (val) {
  27.161 +		case no: line[0] = 'n'; break;
  27.162 +		case mod: line[0] = 'm'; break;
  27.163 +		case yes: line[0] = 'y'; break;
  27.164 +		}
  27.165 +		line[1] = '\n';
  27.166 +		line[2] = 0;
  27.167 +		break;
  27.168 +	default:
  27.169 +		break;
  27.170 +	}
  27.171 +	printf("%s", line);
  27.172 +}
  27.173 +
  27.174 +int conf_string(struct menu *menu)
  27.175 +{
  27.176 +	struct symbol *sym = menu->sym;
  27.177 +	const char *def, *help;
  27.178 +
  27.179 +	while (1) {
  27.180 +		printf("%*s%s ", indent - 1, "", menu->prompt->text);
  27.181 +		printf("(%s) ", sym->name);
  27.182 +		def = sym_get_string_value(sym);
  27.183 +		if (sym_get_string_value(sym))
  27.184 +			printf("[%s] ", def);
  27.185 +		conf_askvalue(sym, def);
  27.186 +		switch (line[0]) {
  27.187 +		case '\n':
  27.188 +			break;
  27.189 +		case '?':
  27.190 +			/* print help */
  27.191 +			if (line[1] == '\n') {
  27.192 +				help = nohelp_text;
  27.193 +				if (menu->sym->help)
  27.194 +					help = menu->sym->help;
  27.195 +				printf("\n%s\n", menu->sym->help);
  27.196 +				def = NULL;
  27.197 +				break;
  27.198 +			}
  27.199 +		default:
  27.200 +			line[strlen(line)-1] = 0;
  27.201 +			def = line;
  27.202 +		}
  27.203 +		if (def && sym_set_string_value(sym, def))
  27.204 +			return 0;
  27.205 +	}
  27.206 +}
  27.207 +
  27.208 +static int conf_sym(struct menu *menu)
  27.209 +{
  27.210 +	struct symbol *sym = menu->sym;
  27.211 +	int type;
  27.212 +	tristate oldval, newval;
  27.213 +	const char *help;
  27.214 +
  27.215 +	while (1) {
  27.216 +		printf("%*s%s ", indent - 1, "", menu->prompt->text);
  27.217 +		if (sym->name)
  27.218 +			printf("(%s) ", sym->name);
  27.219 +		type = sym_get_type(sym);
  27.220 +		putchar('[');
  27.221 +		oldval = sym_get_tristate_value(sym);
  27.222 +		switch (oldval) {
  27.223 +		case no:
  27.224 +			putchar('N');
  27.225 +			break;
  27.226 +		case mod:
  27.227 +			putchar('M');
  27.228 +			break;
  27.229 +		case yes:
  27.230 +			putchar('Y');
  27.231 +			break;
  27.232 +		}
  27.233 +		if (oldval != no && sym_tristate_within_range(sym, no))
  27.234 +			printf("/n");
  27.235 +		if (oldval != mod && sym_tristate_within_range(sym, mod))
  27.236 +			printf("/m");
  27.237 +		if (oldval != yes && sym_tristate_within_range(sym, yes))
  27.238 +			printf("/y");
  27.239 +		if (sym->help)
  27.240 +			printf("/?");
  27.241 +		printf("] ");
  27.242 +		conf_askvalue(sym, sym_get_string_value(sym));
  27.243 +		strip(line);
  27.244 +
  27.245 +		switch (line[0]) {
  27.246 +		case 'n':
  27.247 +		case 'N':
  27.248 +			newval = no;
  27.249 +			if (!line[1] || !strcmp(&line[1], "o"))
  27.250 +				break;
  27.251 +			continue;
  27.252 +		case 'm':
  27.253 +		case 'M':
  27.254 +			newval = mod;
  27.255 +			if (!line[1])
  27.256 +				break;
  27.257 +			continue;
  27.258 +		case 'y':
  27.259 +		case 'Y':
  27.260 +			newval = yes;
  27.261 +			if (!line[1] || !strcmp(&line[1], "es"))
  27.262 +				break;
  27.263 +			continue;
  27.264 +		case 0:
  27.265 +			newval = oldval;
  27.266 +			break;
  27.267 +		case '?':
  27.268 +			goto help;
  27.269 +		default:
  27.270 +			continue;
  27.271 +		}
  27.272 +		if (sym_set_tristate_value(sym, newval))
  27.273 +			return 0;
  27.274 +help:
  27.275 +		help = nohelp_text;
  27.276 +		if (sym->help)
  27.277 +			help = sym->help;
  27.278 +		printf("\n%s\n", help);
  27.279 +	}
  27.280 +}
  27.281 +
  27.282 +static int conf_choice(struct menu *menu)
  27.283 +{
  27.284 +	struct symbol *sym, *def_sym;
  27.285 +	struct menu *child;
  27.286 +	int type;
  27.287 +	bool is_new;
  27.288 +
  27.289 +	sym = menu->sym;
  27.290 +	type = sym_get_type(sym);
  27.291 +	is_new = !sym_has_value(sym);
  27.292 +	if (sym_is_changable(sym)) {
  27.293 +		conf_sym(menu);
  27.294 +		sym_calc_value(sym);
  27.295 +		switch (sym_get_tristate_value(sym)) {
  27.296 +		case no:
  27.297 +			return 1;
  27.298 +		case mod:
  27.299 +			return 0;
  27.300 +		case yes:
  27.301 +			break;
  27.302 +		}
  27.303 +	} else {
  27.304 +		switch (sym_get_tristate_value(sym)) {
  27.305 +		case no:
  27.306 +			return 1;
  27.307 +		case mod:
  27.308 +			printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
  27.309 +			return 0;
  27.310 +		case yes:
  27.311 +			break;
  27.312 +		}
  27.313 +	}
  27.314 +
  27.315 +	while (1) {
  27.316 +		int cnt, def;
  27.317 +
  27.318 +		printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
  27.319 +		def_sym = sym_get_choice_value(sym);
  27.320 +		cnt = def = 0;
  27.321 +		line[0] = 0;
  27.322 +		for (child = menu->list; child; child = child->next) {
  27.323 +			if (!menu_is_visible(child))
  27.324 +				continue;
  27.325 +			if (!child->sym) {
  27.326 +				printf("%*c %s\n", indent, '*', menu_get_prompt(child));
  27.327 +				continue;
  27.328 +			}
  27.329 +			cnt++;
  27.330 +			if (child->sym == def_sym) {
  27.331 +				def = cnt;
  27.332 +				printf("%*c", indent, '>');
  27.333 +			} else
  27.334 +				printf("%*c", indent, ' ');
  27.335 +			printf(" %d. %s", cnt, menu_get_prompt(child));
  27.336 +			if (child->sym->name)
  27.337 +				printf(" (%s)", child->sym->name);
  27.338 +			if (!sym_has_value(child->sym))
  27.339 +				printf(" (NEW)");
  27.340 +			printf("\n");
  27.341 +		}
  27.342 +		printf("%*schoice", indent - 1, "");
  27.343 +		if (cnt == 1) {
  27.344 +			printf("[1]: 1\n");
  27.345 +			goto conf_childs;
  27.346 +		}
  27.347 +		printf("[1-%d", cnt);
  27.348 +		if (sym->help)
  27.349 +			printf("?");
  27.350 +		printf("]: ");
  27.351 +		switch (input_mode) {
  27.352 +		case ask_new:
  27.353 +		case ask_silent:
  27.354 +			if (!is_new) {
  27.355 +				cnt = def;
  27.356 +				printf("%d\n", cnt);
  27.357 +				break;
  27.358 +			}
  27.359 +			check_stdin();
  27.360 +		case ask_all:
  27.361 +			fflush(stdout);
  27.362 +			fgets(line, 128, stdin);
  27.363 +			strip(line);
  27.364 +			if (line[0] == '?') {
  27.365 +				printf("\n%s\n", menu->sym->help ?
  27.366 +					menu->sym->help : nohelp_text);
  27.367 +				continue;
  27.368 +			}
  27.369 +			if (!line[0])
  27.370 +				cnt = def;
  27.371 +			else if (isdigit(line[0]))
  27.372 +				cnt = atoi(line);
  27.373 +			else
  27.374 +				continue;
  27.375 +			break;
  27.376 +		case set_random:
  27.377 +			def = (random() % cnt) + 1;
  27.378 +		case set_default:
  27.379 +		case set_yes:
  27.380 +		case set_mod:
  27.381 +		case set_no:
  27.382 +			cnt = def;
  27.383 +			printf("%d\n", cnt);
  27.384 +			break;
  27.385 +		}
  27.386 +
  27.387 +	conf_childs:
  27.388 +		for (child = menu->list; child; child = child->next) {
  27.389 +			if (!child->sym || !menu_is_visible(child))
  27.390 +				continue;
  27.391 +			if (!--cnt)
  27.392 +				break;
  27.393 +		}
  27.394 +		if (!child)
  27.395 +			continue;
  27.396 +		if (line[strlen(line) - 1] == '?') {
  27.397 +			printf("\n%s\n", child->sym->help ?
  27.398 +				child->sym->help : nohelp_text);
  27.399 +			continue;
  27.400 +		}
  27.401 +		sym_set_choice_value(sym, child->sym);
  27.402 +		if (child->list) {
  27.403 +			indent += 2;
  27.404 +			conf(child->list);
  27.405 +			indent -= 2;
  27.406 +		}
  27.407 +		return 1;
  27.408 +	}
  27.409 +}
  27.410 +
  27.411 +static void conf(struct menu *menu)
  27.412 +{
  27.413 +	struct symbol *sym;
  27.414 +	struct property *prop;
  27.415 +	struct menu *child;
  27.416 +
  27.417 +	if (!menu_is_visible(menu))
  27.418 +		return;
  27.419 +
  27.420 +	sym = menu->sym;
  27.421 +	prop = menu->prompt;
  27.422 +	if (prop) {
  27.423 +		const char *prompt;
  27.424 +
  27.425 +		switch (prop->type) {
  27.426 +		case P_MENU:
  27.427 +			if (input_mode == ask_silent && rootEntry != menu) {
  27.428 +				check_conf(menu);
  27.429 +				return;
  27.430 +			}
  27.431 +		case P_COMMENT:
  27.432 +			prompt = menu_get_prompt(menu);
  27.433 +			if (prompt)
  27.434 +				printf("%*c\n%*c %s\n%*c\n",
  27.435 +					indent, '*',
  27.436 +					indent, '*', prompt,
  27.437 +					indent, '*');
  27.438 +		default:
  27.439 +			;
  27.440 +		}
  27.441 +	}
  27.442 +
  27.443 +	if (!sym)
  27.444 +		goto conf_childs;
  27.445 +
  27.446 +	if (sym_is_choice(sym)) {
  27.447 +		conf_choice(menu);
  27.448 +		if (sym->curr.tri != mod)
  27.449 +			return;
  27.450 +		goto conf_childs;
  27.451 +	}
  27.452 +
  27.453 +	switch (sym->type) {
  27.454 +	case S_INT:
  27.455 +	case S_HEX:
  27.456 +	case S_STRING:
  27.457 +		conf_string(menu);
  27.458 +		break;
  27.459 +	default:
  27.460 +		conf_sym(menu);
  27.461 +		break;
  27.462 +	}
  27.463 +
  27.464 +conf_childs:
  27.465 +	if (sym)
  27.466 +		indent += 2;
  27.467 +	for (child = menu->list; child; child = child->next)
  27.468 +		conf(child);
  27.469 +	if (sym)
  27.470 +		indent -= 2;
  27.471 +}
  27.472 +
  27.473 +static void check_conf(struct menu *menu)
  27.474 +{
  27.475 +	struct symbol *sym;
  27.476 +	struct menu *child;
  27.477 +
  27.478 +	if (!menu_is_visible(menu))
  27.479 +		return;
  27.480 +
  27.481 +	sym = menu->sym;
  27.482 +	if (sym && !sym_has_value(sym)) {
  27.483 +		if (sym_is_changable(sym) ||
  27.484 +		    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
  27.485 +			if (!conf_cnt++)
  27.486 +				printf(_("*\n* Restart config...\n*\n"));
  27.487 +			rootEntry = menu_get_parent_menu(menu);
  27.488 +			conf(rootEntry);
  27.489 +		}
  27.490 +	}
  27.491 +
  27.492 +	for (child = menu->list; child; child = child->next)
  27.493 +		check_conf(child);
  27.494 +}
  27.495 +
  27.496 +int main(int ac, char **av)
  27.497 +{
  27.498 +	int i = 1;
  27.499 +	const char *name;
  27.500 +	struct stat tmpstat;
  27.501 +
  27.502 +	if (ac > i && av[i][0] == '-') {
  27.503 +		switch (av[i++][1]) {
  27.504 +		case 'o':
  27.505 +			input_mode = ask_new;
  27.506 +			break;
  27.507 +		case 's':
  27.508 +			input_mode = ask_silent;
  27.509 +			valid_stdin = isatty(0) && isatty(1) && isatty(2);
  27.510 +			break;
  27.511 +		case 'd':
  27.512 +			input_mode = set_default;
  27.513 +			break;
  27.514 +		case 'D':
  27.515 +			input_mode = set_default;
  27.516 +			defconfig_file = av[i++];
  27.517 +			if (!defconfig_file) {
  27.518 +				printf(_("%s: No default config file specified\n"),
  27.519 +					av[0]);
  27.520 +				exit(1);
  27.521 +			}
  27.522 +			break;
  27.523 +		case 'n':
  27.524 +			input_mode = set_no;
  27.525 +			break;
  27.526 +		case 'm':
  27.527 +			input_mode = set_mod;
  27.528 +			break;
  27.529 +		case 'y':
  27.530 +			input_mode = set_yes;
  27.531 +			break;
  27.532 +		case 'r':
  27.533 +			input_mode = set_random;
  27.534 +			srandom(time(NULL));
  27.535 +			break;
  27.536 +		case 'h':
  27.537 +		case '?':
  27.538 +			fprintf(stderr, "See README for usage info\n");
  27.539 +			exit(0);
  27.540 +		}
  27.541 +	}
  27.542 +  	name = av[i];
  27.543 +	if (!name) {
  27.544 +		printf(_("%s: Kconfig file missing\n"), av[0]);
  27.545 +		exit(1);
  27.546 +	}
  27.547 +	conf_parse(name);
  27.548 +	//zconfdump(stdout);
  27.549 +	switch (input_mode) {
  27.550 +	case set_default:
  27.551 +		if (!defconfig_file)
  27.552 +			defconfig_file = conf_get_default_confname();
  27.553 +		if (conf_read(defconfig_file)) {
  27.554 +			printf("***\n"
  27.555 +				"*** Can't find default configuration \"%s\"!\n"
  27.556 +				"***\n", defconfig_file);
  27.557 +			exit(1);
  27.558 +		}
  27.559 +		break;
  27.560 +	case ask_silent:
  27.561 +		if (stat(".config", &tmpstat)) {
  27.562 +			printf(_("***\n"
  27.563 +				"*** You have not yet configured your "PROJECT_NAME"!\n"
  27.564 +				"***\n"
  27.565 +				"*** Please run some configurator (e.g. \"make oldconfig\" or\n"
  27.566 +				"*** \"make menuconfig\" or \"make xconfig\").\n"
  27.567 +				"***\n"));
  27.568 +			exit(1);
  27.569 +		}
  27.570 +	case ask_all:
  27.571 +	case ask_new:
  27.572 +		conf_read(NULL);
  27.573 +		break;
  27.574 +	case set_no:
  27.575 +	case set_mod:
  27.576 +	case set_yes:
  27.577 +	case set_random:
  27.578 +		name = getenv("KCONFIG_ALLCONFIG");
  27.579 +		if (name && !stat(name, &tmpstat)) {
  27.580 +			conf_read_simple(name, S_DEF_USER);
  27.581 +			break;
  27.582 +		}
  27.583 +		switch (input_mode) {
  27.584 +		case set_no:	 name = "allno.config"; break;
  27.585 +		case set_mod:	 name = "allmod.config"; break;
  27.586 +		case set_yes:	 name = "allyes.config"; break;
  27.587 +		case set_random: name = "allrandom.config"; break;
  27.588 +		default: break;
  27.589 +		}
  27.590 +		if (!stat(name, &tmpstat))
  27.591 +			conf_read_simple(name, S_DEF_USER);
  27.592 +		else if (!stat("all.config", &tmpstat))
  27.593 +			conf_read_simple("all.config", S_DEF_USER);
  27.594 +		break;
  27.595 +	default:
  27.596 +		break;
  27.597 +	}
  27.598 +
  27.599 +	if (input_mode != ask_silent) {
  27.600 +		rootEntry = &rootmenu;
  27.601 +		conf(&rootmenu);
  27.602 +		if (input_mode == ask_all) {
  27.603 +			input_mode = ask_silent;
  27.604 +			valid_stdin = 1;
  27.605 +		}
  27.606 +	} else if (sym_change_count) {
  27.607 +		name = getenv("KCONFIG_NOSILENTUPDATE");
  27.608 +		if (name && *name) {
  27.609 +			fprintf(stderr, _("\n*** "PROJECT_NAME" configuration requires explicit update.\n\n"));
  27.610 +			return 1;
  27.611 +		}
  27.612 +	} else
  27.613 +		goto skip_check;
  27.614 +
  27.615 +	do {
  27.616 +		conf_cnt = 0;
  27.617 +		check_conf(&rootmenu);
  27.618 +	} while (conf_cnt);
  27.619 +
  27.620 +	if (!conf_write(NULL)) {
  27.621 +skip_check:
  27.622 +		return 0;
  27.623 +	}
  27.624 +	fprintf(stderr, _("\n*** Error writing "PROJECT_NAME" configuration.\n\n"));
  27.625 +	return 1;
  27.626 +}
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/kconfig/confdata.c	Sat Feb 24 11:00:05 2007 +0000
    28.3 @@ -0,0 +1,800 @@
    28.4 +/*
    28.5 + * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
    28.6 + * Released under the terms of the GNU GPL v2.0.
    28.7 + */
    28.8 +
    28.9 +#include <sys/stat.h>
   28.10 +#include <ctype.h>
   28.11 +#include <errno.h>
   28.12 +#include <fcntl.h>
   28.13 +#include <limits.h>
   28.14 +#include <stdio.h>
   28.15 +#include <stdlib.h>
   28.16 +#include <string.h>
   28.17 +#include <time.h>
   28.18 +#include <unistd.h>
   28.19 +
   28.20 +#define LKC_DIRECT_LINK
   28.21 +#include "lkc.h"
   28.22 +
   28.23 +static void conf_warning(const char *fmt, ...)
   28.24 +	__attribute__ ((format (printf, 1, 2)));
   28.25 +
   28.26 +static const char *conf_filename;
   28.27 +static int conf_lineno, conf_warnings, conf_unsaved;
   28.28 +
   28.29 +#ifndef conf_defname
   28.30 +const char conf_defname[] = "arch/$ARCH/defconfig";
   28.31 +#endif
   28.32 +
   28.33 +static void conf_warning(const char *fmt, ...)
   28.34 +{
   28.35 +	va_list ap;
   28.36 +	va_start(ap, fmt);
   28.37 +	fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno);
   28.38 +	vfprintf(stderr, fmt, ap);
   28.39 +	fprintf(stderr, "\n");
   28.40 +	va_end(ap);
   28.41 +	conf_warnings++;
   28.42 +}
   28.43 +
   28.44 +const char *conf_get_configname(void)
   28.45 +{
   28.46 +	char *name = getenv("KCONFIG_CONFIG");
   28.47 +
   28.48 +	return name ? name : ".config";
   28.49 +}
   28.50 +
   28.51 +static char *conf_expand_value(const char *in)
   28.52 +{
   28.53 +	struct symbol *sym;
   28.54 +	const char *src;
   28.55 +	static char res_value[SYMBOL_MAXLENGTH];
   28.56 +	char *dst, name[SYMBOL_MAXLENGTH];
   28.57 +
   28.58 +	res_value[0] = 0;
   28.59 +	dst = name;
   28.60 +	while ((src = strchr(in, '$'))) {
   28.61 +		strncat(res_value, in, src - in);
   28.62 +		src++;
   28.63 +		dst = name;
   28.64 +		while (isalnum(*src) || *src == '_')
   28.65 +			*dst++ = *src++;
   28.66 +		*dst = 0;
   28.67 +		sym = sym_lookup(name, 0);
   28.68 +		sym_calc_value(sym);
   28.69 +		strcat(res_value, sym_get_string_value(sym));
   28.70 +		in = src;
   28.71 +	}
   28.72 +	strcat(res_value, in);
   28.73 +
   28.74 +	return res_value;
   28.75 +}
   28.76 +
   28.77 +char *conf_get_default_confname(void)
   28.78 +{
   28.79 +	struct stat buf;
   28.80 +	static char fullname[PATH_MAX+1];
   28.81 +	char *env, *name;
   28.82 +
   28.83 +	name = conf_expand_value(conf_defname);
   28.84 +	env = getenv(SRCTREE);
   28.85 +	if (env) {
   28.86 +		sprintf(fullname, "%s/%s", env, name);
   28.87 +		if (!stat(fullname, &buf))
   28.88 +			return fullname;
   28.89 +	}
   28.90 +	return name;
   28.91 +}
   28.92 +
   28.93 +int conf_read_simple(const char *name, int def)
   28.94 +{
   28.95 +	FILE *in = NULL;
   28.96 +	char line[1024];
   28.97 +	char *p, *p2;
   28.98 +	struct symbol *sym;
   28.99 +	int i, def_flags;
  28.100 +
  28.101 +	if (name) {
  28.102 +		in = zconf_fopen(name);
  28.103 +	} else {
  28.104 +		struct property *prop;
  28.105 +
  28.106 +		name = conf_get_configname();
  28.107 +		in = zconf_fopen(name);
  28.108 +		if (in)
  28.109 +			goto load;
  28.110 +		sym_change_count++;
  28.111 +		if (!sym_defconfig_list)
  28.112 +			return 1;
  28.113 +
  28.114 +		for_all_defaults(sym_defconfig_list, prop) {
  28.115 +			if (expr_calc_value(prop->visible.expr) == no ||
  28.116 +			    prop->expr->type != E_SYMBOL)
  28.117 +				continue;
  28.118 +			name = conf_expand_value(prop->expr->left.sym->name);
  28.119 +			in = zconf_fopen(name);
  28.120 +			if (in) {
  28.121 +				printf(_("#\n"
  28.122 +					 "# using defaults found in %s\n"
  28.123 +					 "#\n"), name);
  28.124 +				goto load;
  28.125 +			}
  28.126 +		}
  28.127 +	}
  28.128 +	if (!in)
  28.129 +		return 1;
  28.130 +
  28.131 +load:
  28.132 +	conf_filename = name;
  28.133 +	conf_lineno = 0;
  28.134 +	conf_warnings = 0;
  28.135 +	conf_unsaved = 0;
  28.136 +
  28.137 +	def_flags = SYMBOL_DEF << def;
  28.138 +	for_all_symbols(i, sym) {
  28.139 +		sym->flags |= SYMBOL_CHANGED;
  28.140 +		sym->flags &= ~(def_flags|SYMBOL_VALID);
  28.141 +		if (sym_is_choice(sym))
  28.142 +			sym->flags |= def_flags;
  28.143 +		switch (sym->type) {
  28.144 +		case S_INT:
  28.145 +		case S_HEX:
  28.146 +		case S_STRING:
  28.147 +			if (sym->def[def].val)
  28.148 +				free(sym->def[def].val);
  28.149 +		default:
  28.150 +			sym->def[def].val = NULL;
  28.151 +			sym->def[def].tri = no;
  28.152 +		}
  28.153 +	}
  28.154 +
  28.155 +	while (fgets(line, sizeof(line), in)) {
  28.156 +		conf_lineno++;
  28.157 +		sym = NULL;
  28.158 +		switch (line[0]) {
  28.159 +		case '#':
  28.160 +			if (memcmp(line + 2, "CT_", 3))
  28.161 +				continue;
  28.162 +			p = strchr(line + 5, ' ');
  28.163 +			if (!p)
  28.164 +				continue;
  28.165 +			*p++ = 0;
  28.166 +			if (strncmp(p, "is not set", 10))
  28.167 +				continue;
  28.168 +			if (def == S_DEF_USER) {
  28.169 +				sym = sym_find(line + 5);
  28.170 +				if (!sym) {
  28.171 +					conf_warning("trying to assign nonexistent symbol %s", line + 5);
  28.172 +					break;
  28.173 +				}
  28.174 +			} else {
  28.175 +				sym = sym_lookup(line + 5, 0);
  28.176 +				if (sym->type == S_UNKNOWN)
  28.177 +					sym->type = S_BOOLEAN;
  28.178 +			}
  28.179 +			if (sym->flags & def_flags) {
  28.180 +				conf_warning("trying to reassign symbol %s", sym->name);
  28.181 +				break;
  28.182 +			}
  28.183 +			switch (sym->type) {
  28.184 +			case S_BOOLEAN:
  28.185 +			case S_TRISTATE:
  28.186 +				sym->def[def].tri = no;
  28.187 +				sym->flags |= def_flags;
  28.188 +				break;
  28.189 +			default:
  28.190 +				;
  28.191 +			}
  28.192 +			break;
  28.193 +		case 'C':
  28.194 +			if (memcmp(line, "CT_", 3)) {
  28.195 +				conf_warning("unexpected data");
  28.196 +				continue;
  28.197 +			}
  28.198 +			p = strchr(line + 3, '=');
  28.199 +			if (!p)
  28.200 +				continue;
  28.201 +			*p++ = 0;
  28.202 +			p2 = strchr(p, '\n');
  28.203 +			if (p2) {
  28.204 +				*p2-- = 0;
  28.205 +				if (*p2 == '\r')
  28.206 +					*p2 = 0;
  28.207 +			}
  28.208 +			if (def == S_DEF_USER) {
  28.209 +				sym = sym_find(line + 3);
  28.210 +				if (!sym) {
  28.211 +					conf_warning("trying to assign nonexistent symbol %s", line + 3);
  28.212 +					break;
  28.213 +				}
  28.214 +			} else {
  28.215 +				sym = sym_lookup(line + 3, 0);
  28.216 +				if (sym->type == S_UNKNOWN)
  28.217 +					sym->type = S_OTHER;
  28.218 +			}
  28.219 +			if (sym->flags & def_flags) {
  28.220 +				conf_warning("trying to reassign symbol %s", sym->name);
  28.221 +				break;
  28.222 +			}
  28.223 +			switch (sym->type) {
  28.224 +			case S_TRISTATE:
  28.225 +				if (p[0] == 'm') {
  28.226 +					sym->def[def].tri = mod;
  28.227 +					sym->flags |= def_flags;
  28.228 +					break;
  28.229 +				}
  28.230 +			case S_BOOLEAN:
  28.231 +				if (p[0] == 'y') {
  28.232 +					sym->def[def].tri = yes;
  28.233 +					sym->flags |= def_flags;
  28.234 +					break;
  28.235 +				}
  28.236 +				if (p[0] == 'n') {
  28.237 +					sym->def[def].tri = no;
  28.238 +					sym->flags |= def_flags;
  28.239 +					break;
  28.240 +				}
  28.241 +				conf_warning("symbol value '%s' invalid for %s", p, sym->name);
  28.242 +				break;
  28.243 +			case S_OTHER:
  28.244 +				if (*p != '"') {
  28.245 +					for (p2 = p; *p2 && !isspace(*p2); p2++)
  28.246 +						;
  28.247 +					sym->type = S_STRING;
  28.248 +					goto done;
  28.249 +				}
  28.250 +			case S_STRING:
  28.251 +				if (*p++ != '"')
  28.252 +					break;
  28.253 +				for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) {
  28.254 +					if (*p2 == '"') {
  28.255 +						*p2 = 0;
  28.256 +						break;
  28.257 +					}
  28.258 +					memmove(p2, p2 + 1, strlen(p2));
  28.259 +				}
  28.260 +				if (!p2) {
  28.261 +					conf_warning("invalid string found");
  28.262 +					continue;
  28.263 +				}
  28.264 +			case S_INT:
  28.265 +			case S_HEX:
  28.266 +			done:
  28.267 +				if (sym_string_valid(sym, p)) {
  28.268 +					sym->def[def].val = strdup(p);
  28.269 +					sym->flags |= def_flags;
  28.270 +				} else {
  28.271 +					conf_warning("symbol value '%s' invalid for %s", p, sym->name);
  28.272 +					continue;
  28.273 +				}
  28.274 +				break;
  28.275 +			default:
  28.276 +				;
  28.277 +			}
  28.278 +			break;
  28.279 +		case '\r':
  28.280 +		case '\n':
  28.281 +			break;
  28.282 +		default:
  28.283 +			conf_warning("unexpected data");
  28.284 +			continue;
  28.285 +		}
  28.286 +		if (sym && sym_is_choice_value(sym)) {
  28.287 +			struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
  28.288 +			switch (sym->def[def].tri) {
  28.289 +			case no:
  28.290 +				break;
  28.291 +			case mod:
  28.292 +				if (cs->def[def].tri == yes) {
  28.293 +					conf_warning("%s creates inconsistent choice state", sym->name);
  28.294 +					cs->flags &= ~def_flags;
  28.295 +				}
  28.296 +				break;
  28.297 +			case yes:
  28.298 +				if (cs->def[def].tri != no) {
  28.299 +					conf_warning("%s creates inconsistent choice state", sym->name);
  28.300 +					cs->flags &= ~def_flags;
  28.301 +				} else
  28.302 +					cs->def[def].val = sym;
  28.303 +				break;
  28.304 +			}
  28.305 +			cs->def[def].tri = E_OR(cs->def[def].tri, sym->def[def].tri);
  28.306 +		}
  28.307 +	}
  28.308 +	fclose(in);
  28.309 +
  28.310 +	if (modules_sym)
  28.311 +		sym_calc_value(modules_sym);
  28.312 +	return 0;
  28.313 +}
  28.314 +
  28.315 +int conf_read(const char *name)
  28.316 +{
  28.317 +	struct symbol *sym;
  28.318 +	struct property *prop;
  28.319 +	struct expr *e;
  28.320 +	int i, flags;
  28.321 +
  28.322 +	sym_change_count = 0;
  28.323 +
  28.324 +	if (conf_read_simple(name, S_DEF_USER))
  28.325 +		return 1;
  28.326 +
  28.327 +	for_all_symbols(i, sym) {
  28.328 +		sym_calc_value(sym);
  28.329 +		if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))
  28.330 +			goto sym_ok;
  28.331 +		if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {
  28.332 +			/* check that calculated value agrees with saved value */
  28.333 +			switch (sym->type) {
  28.334 +			case S_BOOLEAN:
  28.335 +			case S_TRISTATE:
  28.336 +				if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym))
  28.337 +					break;
  28.338 +				if (!sym_is_choice(sym))
  28.339 +					goto sym_ok;
  28.340 +			default:
  28.341 +				if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val))
  28.342 +					goto sym_ok;
  28.343 +				break;
  28.344 +			}
  28.345 +		} else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE))
  28.346 +			/* no previous value and not saved */
  28.347 +			goto sym_ok;
  28.348 +		conf_unsaved++;
  28.349 +		/* maybe print value in verbose mode... */
  28.350 +	sym_ok:
  28.351 +		if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
  28.352 +			if (sym->visible == no)
  28.353 +				sym->flags &= ~SYMBOL_DEF_USER;
  28.354 +			switch (sym->type) {
  28.355 +			case S_STRING:
  28.356 +			case S_INT:
  28.357 +			case S_HEX:
  28.358 +				if (!sym_string_within_range(sym, sym->def[S_DEF_USER].val))
  28.359 +					sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER);
  28.360 +			default:
  28.361 +				break;
  28.362 +			}
  28.363 +		}
  28.364 +		if (!sym_is_choice(sym))
  28.365 +			continue;
  28.366 +		prop = sym_get_choice_prop(sym);
  28.367 +		flags = sym->flags;
  28.368 +		for (e = prop->expr; e; e = e->left.expr)
  28.369 +			if (e->right.sym->visible != no)
  28.370 +				flags &= e->right.sym->flags;
  28.371 +		sym->flags &= flags | ~SYMBOL_DEF_USER;
  28.372 +	}
  28.373 +
  28.374 +	sym_change_count += conf_warnings || conf_unsaved;
  28.375 +
  28.376 +	return 0;
  28.377 +}
  28.378 +
  28.379 +struct menu *next_menu(struct menu *menu)
  28.380 +{
  28.381 +	if (menu->list) return menu->list;
  28.382 +	do {
  28.383 +		if (menu->next) {
  28.384 +			menu = menu->next;
  28.385 +			break;
  28.386 +		}
  28.387 +	} while ((menu = menu->parent));
  28.388 +
  28.389 +	return menu;
  28.390 +}
  28.391 +
  28.392 +#define SYMBOL_FORCEWRITE (1<<31)
  28.393 +
  28.394 +int conf_write(const char *name)
  28.395 +{
  28.396 +	FILE *out;
  28.397 +	struct symbol *sym;
  28.398 +	struct menu *menu;
  28.399 +	const char *basename;
  28.400 +	char dirname[128], tmpname[128], newname[128];
  28.401 +	int type, l, writetype;
  28.402 +	const char *str;
  28.403 +	time_t now;
  28.404 +	int use_timestamp = 1;
  28.405 +	char *env;
  28.406 +
  28.407 +	dirname[0] = 0;
  28.408 +	if (name && name[0]) {
  28.409 +		struct stat st;
  28.410 +		char *slash;
  28.411 +
  28.412 +		if (!stat(name, &st) && S_ISDIR(st.st_mode)) {
  28.413 +			strcpy(dirname, name);
  28.414 +			strcat(dirname, "/");
  28.415 +			basename = conf_get_configname();
  28.416 +		} else if ((slash = strrchr(name, '/'))) {
  28.417 +			int size = slash - name + 1;
  28.418 +			memcpy(dirname, name, size);
  28.419 +			dirname[size] = 0;
  28.420 +			if (slash[1])
  28.421 +				basename = slash + 1;
  28.422 +			else
  28.423 +				basename = conf_get_configname();
  28.424 +		} else
  28.425 +			basename = name;
  28.426 +	} else
  28.427 +		basename = conf_get_configname();
  28.428 +
  28.429 +	sprintf(newname, "%s%s", dirname, basename);
  28.430 +	env = getenv("KCONFIG_OVERWRITECONFIG");
  28.431 +	if (!env || !*env) {
  28.432 +		sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
  28.433 +		out = fopen(tmpname, "w");
  28.434 +	} else {
  28.435 +		*tmpname = 0;
  28.436 +		out = fopen(newname, "w");
  28.437 +	}
  28.438 +	if (!out)
  28.439 +		return 1;
  28.440 +
  28.441 +	sym = sym_lookup("PROJECTVERSION", 0);
  28.442 +	sym_calc_value(sym);
  28.443 +	time(&now);
  28.444 +	env = getenv("KCONFIG_NOTIMESTAMP");
  28.445 +	if (env && *env)
  28.446 +		use_timestamp = 0;
  28.447 +
  28.448 +	fprintf(out, _("#\n"
  28.449 +		       "# Automatically generated make config: don't edit\n"
  28.450 +		       "# "PROJECT_NAME" version: %s\n"
  28.451 +		       "%s%s"
  28.452 +		       "#\n"),
  28.453 +		     sym_get_string_value(sym),
  28.454 +		     use_timestamp ? "# " : "",
  28.455 +		     use_timestamp ? ctime(&now) : "");
  28.456 +
  28.457 +	if (!sym_change_count)
  28.458 +		sym_clear_all_valid();
  28.459 +
  28.460 +	// Write out all symbols (even in closed sub-menus).
  28.461 +	if (1) {
  28.462 +		for (menu = rootmenu.list; menu; menu = next_menu(menu))
  28.463 +			if (menu->sym) menu->sym->flags |= SYMBOL_FORCEWRITE;
  28.464 +		writetype = SYMBOL_FORCEWRITE;
  28.465 +
  28.466 +	// Don't write  out symbols in closed menus.
  28.467 +
  28.468 +	} else writetype = SYMBOL_WRITE;
  28.469 +
  28.470 +
  28.471 +	menu = rootmenu.list;
  28.472 +	while (menu) {
  28.473 +		sym = menu->sym;
  28.474 +		if (!sym) {
  28.475 +			if (!menu_is_visible(menu))
  28.476 +				goto next;
  28.477 +			str = menu_get_prompt(menu);
  28.478 +			fprintf(out, "\n"
  28.479 +				     "#\n"
  28.480 +				     "# %s\n"
  28.481 +				     "#\n", str);
  28.482 +		} else if (!(sym->flags & SYMBOL_CHOICE)) {
  28.483 +			sym_calc_value(sym);
  28.484 +			if (!(sym->flags & writetype))
  28.485 +				goto next;
  28.486 +			sym->flags &= ~writetype;
  28.487 +			type = sym->type;
  28.488 +			if (type == S_TRISTATE) {
  28.489 +				sym_calc_value(modules_sym);
  28.490 +				if (modules_sym->curr.tri == no)
  28.491 +					type = S_BOOLEAN;
  28.492 +			}
  28.493 +			switch (type) {
  28.494 +			case S_BOOLEAN:
  28.495 +			case S_TRISTATE:
  28.496 +				switch (sym_get_tristate_value(sym)) {
  28.497 +				case no:
  28.498 +					fprintf(out, "# CT_%s is not set\n", sym->name);
  28.499 +					break;
  28.500 +				case mod:
  28.501 +					fprintf(out, "CT_%s=m\n", sym->name);
  28.502 +					break;
  28.503 +				case yes:
  28.504 +					fprintf(out, "CT_%s=y\n", sym->name);
  28.505 +					break;
  28.506 +				}
  28.507 +				break;
  28.508 +			case S_STRING:
  28.509 +				str = sym_get_string_value(sym);
  28.510 +				fprintf(out, "CT_%s=\"", sym->name);
  28.511 +				while (1) {
  28.512 +					l = strcspn(str, "\"\\");
  28.513 +					if (l) {
  28.514 +						fwrite(str, l, 1, out);
  28.515 +						str += l;
  28.516 +					}
  28.517 +					if (!*str)
  28.518 +						break;
  28.519 +					fprintf(out, "\\%c", *str++);
  28.520 +				}
  28.521 +				fputs("\"\n", out);
  28.522 +				break;
  28.523 +			case S_HEX:
  28.524 +				str = sym_get_string_value(sym);
  28.525 +				if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
  28.526 +					fprintf(out, "CT_%s=%s\n", sym->name, *str ? str : "0");
  28.527 +					break;
  28.528 +				}
  28.529 +			case S_INT:
  28.530 +				str = sym_get_string_value(sym);
  28.531 +				fprintf(out, "CT_%s=%s\n", sym->name, *str ? str : "0");
  28.532 +				break;
  28.533 +			}
  28.534 +		}
  28.535 +
  28.536 +	next:
  28.537 +		if (writetype == SYMBOL_WRITE) {
  28.538 +			if (menu->list) {
  28.539 +				menu = menu->list;
  28.540 +				continue;
  28.541 +			}
  28.542 +			if (menu->next)
  28.543 +				menu = menu->next;
  28.544 +			else while ((menu = menu->parent)) {
  28.545 +				if (menu->next) {
  28.546 +					menu = menu->next;
  28.547 +					break;
  28.548 +				}
  28.549 +			}
  28.550 +		} else
  28.551 +			menu = next_menu(menu);
  28.552 +	}
  28.553 +	fclose(out);
  28.554 +
  28.555 +	if (*tmpname) {
  28.556 +		strcat(dirname, basename);
  28.557 +		strcat(dirname, ".old");
  28.558 +		rename(newname, dirname);
  28.559 +		if (rename(tmpname, newname))
  28.560 +			return 1;
  28.561 +	}
  28.562 +
  28.563 +	printf(_("#\n"
  28.564 +		 "# configuration written to %s\n"
  28.565 +		 "#\n"), newname);
  28.566 +
  28.567 +	sym_change_count = 0;
  28.568 +
  28.569 +	return 0;
  28.570 +}
  28.571 +
  28.572 +int conf_split_config(void)
  28.573 +{
  28.574 +	char *name, path[128];
  28.575 +	char *s, *d, c;
  28.576 +	struct symbol *sym;
  28.577 +	struct stat sb;
  28.578 +	int res, i, fd;
  28.579 +
  28.580 +	name = getenv("KCONFIG_AUTOCONFIG");
  28.581 +	if (!name)
  28.582 +		name = "include/config/auto.conf";
  28.583 +	conf_read_simple(name, S_DEF_AUTO);
  28.584 +
  28.585 +	if (chdir("include/config"))
  28.586 +		return 1;
  28.587 +
  28.588 +	res = 0;
  28.589 +	for_all_symbols(i, sym) {
  28.590 +		sym_calc_value(sym);
  28.591 +		if ((sym->flags & SYMBOL_AUTO) || !sym->name)
  28.592 +			continue;
  28.593 +		if (sym->flags & SYMBOL_WRITE) {
  28.594 +			if (sym->flags & SYMBOL_DEF_AUTO) {
  28.595 +				/*
  28.596 +				 * symbol has old and new value,
  28.597 +				 * so compare them...
  28.598 +				 */
  28.599 +				switch (sym->type) {
  28.600 +				case S_BOOLEAN:
  28.601 +				case S_TRISTATE:
  28.602 +					if (sym_get_tristate_value(sym) ==
  28.603 +					    sym->def[S_DEF_AUTO].tri)
  28.604 +						continue;
  28.605 +					break;
  28.606 +				case S_STRING:
  28.607 +				case S_HEX:
  28.608 +				case S_INT:
  28.609 +					if (!strcmp(sym_get_string_value(sym),
  28.610 +						    sym->def[S_DEF_AUTO].val))
  28.611 +						continue;
  28.612 +					break;
  28.613 +				default:
  28.614 +					break;
  28.615 +				}
  28.616 +			} else {
  28.617 +				/*
  28.618 +				 * If there is no old value, only 'no' (unset)
  28.619 +				 * is allowed as new value.
  28.620 +				 */
  28.621 +				switch (sym->type) {
  28.622 +				case S_BOOLEAN:
  28.623 +				case S_TRISTATE:
  28.624 +					if (sym_get_tristate_value(sym) == no)
  28.625 +						continue;
  28.626 +					break;
  28.627 +				default:
  28.628 +					break;
  28.629 +				}
  28.630 +			}
  28.631 +		} else if (!(sym->flags & SYMBOL_DEF_AUTO))
  28.632 +			/* There is neither an old nor a new value. */
  28.633 +			continue;
  28.634 +		/* else
  28.635 +		 *	There is an old value, but no new value ('no' (unset)
  28.636 +		 *	isn't saved in auto.conf, so the old value is always
  28.637 +		 *	different from 'no').
  28.638 +		 */
  28.639 +
  28.640 +		/* Replace all '_' and append ".h" */
  28.641 +		s = sym->name;
  28.642 +		d = path;
  28.643 +		while ((c = *s++)) {
  28.644 +			c = tolower(c);
  28.645 +			*d++ = (c == '_') ? '/' : c;
  28.646 +		}
  28.647 +		strcpy(d, ".h");
  28.648 +
  28.649 +		/* Assume directory path already exists. */
  28.650 +		fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
  28.651 +		if (fd == -1) {
  28.652 +			if (errno != ENOENT) {
  28.653 +				res = 1;
  28.654 +				break;
  28.655 +			}
  28.656 +			/*
  28.657 +			 * Create directory components,
  28.658 +			 * unless they exist already.
  28.659 +			 */
  28.660 +			d = path;
  28.661 +			while ((d = strchr(d, '/'))) {
  28.662 +				*d = 0;
  28.663 +				if (stat(path, &sb) && mkdir(path, 0755)) {
  28.664 +					res = 1;
  28.665 +					goto out;
  28.666 +				}
  28.667 +				*d++ = '/';
  28.668 +			}
  28.669 +			/* Try it again. */
  28.670 +			fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
  28.671 +			if (fd == -1) {
  28.672 +				res = 1;
  28.673 +				break;
  28.674 +			}
  28.675 +		}
  28.676 +		close(fd);
  28.677 +	}
  28.678 +out:
  28.679 +	if (chdir("../.."))
  28.680 +		return 1;
  28.681 +
  28.682 +	return res;
  28.683 +}
  28.684 +
  28.685 +int conf_write_autoconf(void)
  28.686 +{
  28.687 +	struct symbol *sym;
  28.688 +	const char *str;
  28.689 +	char *name;
  28.690 +	FILE *out, *out_h;
  28.691 +	time_t now;
  28.692 +	int i, l;
  28.693 +
  28.694 +	sym_clear_all_valid();
  28.695 +
  28.696 +	file_write_dep("include/config/auto.conf.cmd");
  28.697 +
  28.698 +	if (conf_split_config())
  28.699 +		return 1;
  28.700 +
  28.701 +	out = fopen(".tmpconfig", "w");
  28.702 +	if (!out)
  28.703 +		return 1;
  28.704 +
  28.705 +	out_h = fopen(".tmpconfig.h", "w");
  28.706 +	if (!out_h) {
  28.707 +		fclose(out);
  28.708 +		return 1;
  28.709 +	}
  28.710 +
  28.711 +	sym = sym_lookup("PROJECTVERSION", 0);
  28.712 +	sym_calc_value(sym);
  28.713 +	time(&now);
  28.714 +	fprintf(out, "#\n"
  28.715 +		     "# Automatically generated make config: don't edit\n"
  28.716 +		     "# "PROJECT_NAME" version: %s\n"
  28.717 +		     "# %s"
  28.718 +		     "#\n",
  28.719 +		     sym_get_string_value(sym), ctime(&now));
  28.720 +	fprintf(out_h, "/*\n"
  28.721 +		       " * Automatically generated C config: don't edit\n"
  28.722 +		       " * "PROJECT_NAME" version: %s\n"
  28.723 +		       " * %s"
  28.724 +		       " */\n"
  28.725 +		       "#define AUTOCONF_INCLUDED\n",
  28.726 +		       sym_get_string_value(sym), ctime(&now));
  28.727 +
  28.728 +	for_all_symbols(i, sym) {
  28.729 +		sym_calc_value(sym);
  28.730 +		if (!(sym->flags & SYMBOL_WRITE) || !sym->name)
  28.731 +			continue;
  28.732 +		switch (sym->type) {
  28.733 +		case S_BOOLEAN:
  28.734 +		case S_TRISTATE:
  28.735 +			switch (sym_get_tristate_value(sym)) {
  28.736 +			case no:
  28.737 +				break;
  28.738 +			case mod:
  28.739 +				fprintf(out, "CT_%s=m\n", sym->name);
  28.740 +				fprintf(out_h, "#define CT_%s_MODULE 1\n", sym->name);
  28.741 +				break;
  28.742 +			case yes:
  28.743 +				fprintf(out, "CT_%s=y\n", sym->name);
  28.744 +				fprintf(out_h, "#define CT_%s 1\n", sym->name);
  28.745 +				break;
  28.746 +			}
  28.747 +			break;
  28.748 +		case S_STRING:
  28.749 +			str = sym_get_string_value(sym);
  28.750 +			fprintf(out, "CT_%s=\"", sym->name);
  28.751 +			fprintf(out_h, "#define CT_%s \"", sym->name);
  28.752 +			while (1) {
  28.753 +				l = strcspn(str, "\"\\");
  28.754 +				if (l) {
  28.755 +					fwrite(str, l, 1, out);
  28.756 +					fwrite(str, l, 1, out_h);
  28.757 +					str += l;
  28.758 +				}
  28.759 +				if (!*str)
  28.760 +					break;
  28.761 +				fprintf(out, "\\%c", *str);
  28.762 +				fprintf(out_h, "\\%c", *str);
  28.763 +				str++;
  28.764 +			}
  28.765 +			fputs("\"\n", out);
  28.766 +			fputs("\"\n", out_h);
  28.767 +			break;
  28.768 +		case S_HEX:
  28.769 +			str = sym_get_string_value(sym);
  28.770 +			if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
  28.771 +				fprintf(out, "CT_%s=%s\n", sym->name, str);
  28.772 +				fprintf(out_h, "#define CT_%s 0x%s\n", sym->name, str);
  28.773 +				break;
  28.774 +			}
  28.775 +		case S_INT:
  28.776 +			str = sym_get_string_value(sym);
  28.777 +			fprintf(out, "CT_%s=%s\n", sym->name, str);
  28.778 +			fprintf(out_h, "#define CT_%s %s\n", sym->name, str);
  28.779 +			break;
  28.780 +		default:
  28.781 +			break;
  28.782 +		}
  28.783 +	}
  28.784 +	fclose(out);
  28.785 +	fclose(out_h);
  28.786 +
  28.787 +	name = getenv("KCONFIG_AUTOHEADER");
  28.788 +	if (!name)
  28.789 +		name = "include/linux/autoconf.h";
  28.790 +	if (rename(".tmpconfig.h", name))
  28.791 +		return 1;
  28.792 +	name = getenv("KCONFIG_AUTOCONFIG");
  28.793 +	if (!name)
  28.794 +		name = "include/config/auto.conf";
  28.795 +	/*
  28.796 +	 * This must be the last step, kbuild has a dependency on auto.conf
  28.797 +	 * and this marks the successful completion of the previous steps.
  28.798 +	 */
  28.799 +	if (rename(".tmpconfig", name))
  28.800 +		return 1;
  28.801 +
  28.802 +	return 0;
  28.803 +}
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/kconfig/expr.c	Sat Feb 24 11:00:05 2007 +0000
    29.3 @@ -0,0 +1,1100 @@
    29.4 +/*
    29.5 + * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
    29.6 + * Released under the terms of the GNU GPL v2.0.
    29.7 + */
    29.8 +
    29.9 +#include <stdio.h>
   29.10 +#include <stdlib.h>
   29.11 +#include <string.h>
   29.12 +
   29.13 +#define LKC_DIRECT_LINK
   29.14 +#include "lkc.h"
   29.15 +
   29.16 +#define DEBUG_EXPR	0
   29.17 +
   29.18 +struct expr *expr_alloc_symbol(struct symbol *sym)
   29.19 +{
   29.20 +	struct expr *e = malloc(sizeof(*e));
   29.21 +	memset(e, 0, sizeof(*e));
   29.22 +	e->type = E_SYMBOL;
   29.23 +	e->left.sym = sym;
   29.24 +	return e;
   29.25 +}
   29.26 +
   29.27 +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce)
   29.28 +{
   29.29 +	struct expr *e = malloc(sizeof(*e));
   29.30 +	memset(e, 0, sizeof(*e));
   29.31 +	e->type = type;
   29.32 +	e->left.expr = ce;
   29.33 +	return e;
   29.34 +}
   29.35 +
   29.36 +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
   29.37 +{
   29.38 +	struct expr *e = malloc(sizeof(*e));
   29.39 +	memset(e, 0, sizeof(*e));
   29.40 +	e->type = type;
   29.41 +	e->left.expr = e1;
   29.42 +	e->right.expr = e2;
   29.43 +	return e;
   29.44 +}
   29.45 +
   29.46 +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)
   29.47 +{
   29.48 +	struct expr *e = malloc(sizeof(*e));
   29.49 +	memset(e, 0, sizeof(*e));
   29.50 +	e->type = type;
   29.51 +	e->left.sym = s1;
   29.52 +	e->right.sym = s2;
   29.53 +	return e;
   29.54 +}
   29.55 +
   29.56 +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
   29.57 +{
   29.58 +	if (!e1)
   29.59 +		return e2;
   29.60 +	return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
   29.61 +}
   29.62 +
   29.63 +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
   29.64 +{
   29.65 +	if (!e1)
   29.66 +		return e2;
   29.67 +	return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
   29.68 +}
   29.69 +
   29.70 +struct expr *expr_copy(struct expr *org)
   29.71 +{
   29.72 +	struct expr *e;
   29.73 +
   29.74 +	if (!org)
   29.75 +		return NULL;
   29.76 +
   29.77 +	e = malloc(sizeof(*org));
   29.78 +	memcpy(e, org, sizeof(*org));
   29.79 +	switch (org->type) {
   29.80 +	case E_SYMBOL:
   29.81 +		e->left = org->left;
   29.82 +		break;
   29.83 +	case E_NOT:
   29.84 +		e->left.expr = expr_copy(org->left.expr);
   29.85 +		break;
   29.86 +	case E_EQUAL:
   29.87 +	case E_UNEQUAL:
   29.88 +		e->left.sym = org->left.sym;
   29.89 +		e->right.sym = org->right.sym;
   29.90 +		break;
   29.91 +	case E_AND:
   29.92 +	case E_OR:
   29.93 +	case E_CHOICE:
   29.94 +		e->left.expr = expr_copy(org->left.expr);
   29.95 +		e->right.expr = expr_copy(org->right.expr);
   29.96 +		break;
   29.97 +	default:
   29.98 +		printf("can't copy type %d\n", e->type);
   29.99 +		free(e);
  29.100 +		e = NULL;
  29.101 +		break;
  29.102 +	}
  29.103 +
  29.104 +	return e;
  29.105 +}
  29.106 +
  29.107 +void expr_free(struct expr *e)
  29.108 +{
  29.109 +	if (!e)
  29.110 +		return;
  29.111 +
  29.112 +	switch (e->type) {
  29.113 +	case E_SYMBOL:
  29.114 +		break;
  29.115 +	case E_NOT:
  29.116 +		expr_free(e->left.expr);
  29.117 +		return;
  29.118 +	case E_EQUAL:
  29.119 +	case E_UNEQUAL:
  29.120 +		break;
  29.121 +	case E_OR:
  29.122 +	case E_AND:
  29.123 +		expr_free(e->left.expr);
  29.124 +		expr_free(e->right.expr);
  29.125 +		break;
  29.126 +	default:
  29.127 +		printf("how to free type %d?\n", e->type);
  29.128 +		break;
  29.129 +	}
  29.130 +	free(e);
  29.131 +}
  29.132 +
  29.133 +static int trans_count;
  29.134 +
  29.135 +#define e1 (*ep1)
  29.136 +#define e2 (*ep2)
  29.137 +
  29.138 +static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2)
  29.139 +{
  29.140 +	if (e1->type == type) {
  29.141 +		__expr_eliminate_eq(type, &e1->left.expr, &e2);
  29.142 +		__expr_eliminate_eq(type, &e1->right.expr, &e2);
  29.143 +		return;
  29.144 +	}
  29.145 +	if (e2->type == type) {
  29.146 +		__expr_eliminate_eq(type, &e1, &e2->left.expr);
  29.147 +		__expr_eliminate_eq(type, &e1, &e2->right.expr);
  29.148 +		return;
  29.149 +	}
  29.150 +	if (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
  29.151 +	    e1->left.sym == e2->left.sym &&
  29.152 +	    (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no))
  29.153 +		return;
  29.154 +	if (!expr_eq(e1, e2))
  29.155 +		return;
  29.156 +	trans_count++;
  29.157 +	expr_free(e1); expr_free(e2);
  29.158 +	switch (type) {
  29.159 +	case E_OR:
  29.160 +		e1 = expr_alloc_symbol(&symbol_no);
  29.161 +		e2 = expr_alloc_symbol(&symbol_no);
  29.162 +		break;
  29.163 +	case E_AND:
  29.164 +		e1 = expr_alloc_symbol(&symbol_yes);
  29.165 +		e2 = expr_alloc_symbol(&symbol_yes);
  29.166 +		break;
  29.167 +	default:
  29.168 +		;
  29.169 +	}
  29.170 +}
  29.171 +
  29.172 +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
  29.173 +{
  29.174 +	if (!e1 || !e2)
  29.175 +		return;
  29.176 +	switch (e1->type) {
  29.177 +	case E_OR:
  29.178 +	case E_AND:
  29.179 +		__expr_eliminate_eq(e1->type, ep1, ep2);
  29.180 +	default:
  29.181 +		;
  29.182 +	}
  29.183 +	if (e1->type != e2->type) switch (e2->type) {
  29.184 +	case E_OR:
  29.185 +	case E_AND:
  29.186 +		__expr_eliminate_eq(e2->type, ep1, ep2);
  29.187 +	default:
  29.188 +		;
  29.189 +	}
  29.190 +	e1 = expr_eliminate_yn(e1);
  29.191 +	e2 = expr_eliminate_yn(e2);
  29.192 +}
  29.193 +
  29.194 +#undef e1
  29.195 +#undef e2
  29.196 +
  29.197 +int expr_eq(struct expr *e1, struct expr *e2)
  29.198 +{
  29.199 +	int res, old_count;
  29.200 +
  29.201 +	if (e1->type != e2->type)
  29.202 +		return 0;
  29.203 +	switch (e1->type) {
  29.204 +	case E_EQUAL:
  29.205 +	case E_UNEQUAL:
  29.206 +		return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym;
  29.207 +	case E_SYMBOL:
  29.208 +		return e1->left.sym == e2->left.sym;
  29.209 +	case E_NOT:
  29.210 +		return expr_eq(e1->left.expr, e2->left.expr);
  29.211 +	case E_AND:
  29.212 +	case E_OR:
  29.213 +		e1 = expr_copy(e1);
  29.214 +		e2 = expr_copy(e2);
  29.215 +		old_count = trans_count;
  29.216 +		expr_eliminate_eq(&e1, &e2);
  29.217 +		res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
  29.218 +		       e1->left.sym == e2->left.sym);
  29.219 +		expr_free(e1);
  29.220 +		expr_free(e2);
  29.221 +		trans_count = old_count;
  29.222 +		return res;
  29.223 +	case E_CHOICE:
  29.224 +	case E_RANGE:
  29.225 +	case E_NONE:
  29.226 +		/* panic */;
  29.227 +	}
  29.228 +
  29.229 +	if (DEBUG_EXPR) {
  29.230 +		expr_fprint(e1, stdout);
  29.231 +		printf(" = ");
  29.232 +		expr_fprint(e2, stdout);
  29.233 +		printf(" ?\n");
  29.234 +	}
  29.235 +
  29.236 +	return 0;
  29.237 +}
  29.238 +
  29.239 +struct expr *expr_eliminate_yn(struct expr *e)
  29.240 +{
  29.241 +	struct expr *tmp;
  29.242 +
  29.243 +	if (e) switch (e->type) {
  29.244 +	case E_AND:
  29.245 +		e->left.expr = expr_eliminate_yn(e->left.expr);
  29.246 +		e->right.expr = expr_eliminate_yn(e->right.expr);
  29.247 +		if (e->left.expr->type == E_SYMBOL) {
  29.248 +			if (e->left.expr->left.sym == &symbol_no) {
  29.249 +				expr_free(e->left.expr);
  29.250 +				expr_free(e->right.expr);
  29.251 +				e->type = E_SYMBOL;
  29.252 +				e->left.sym = &symbol_no;
  29.253 +				e->right.expr = NULL;
  29.254 +				return e;
  29.255 +			} else if (e->left.expr->left.sym == &symbol_yes) {
  29.256 +				free(e->left.expr);
  29.257 +				tmp = e->right.expr;
  29.258 +				*e = *(e->right.expr);
  29.259 +				free(tmp);
  29.260 +				return e;
  29.261 +			}
  29.262 +		}
  29.263 +		if (e->right.expr->type == E_SYMBOL) {
  29.264 +			if (e->right.expr->left.sym == &symbol_no) {
  29.265 +				expr_free(e->left.expr);
  29.266 +				expr_free(e->right.expr);
  29.267 +				e->type = E_SYMBOL;
  29.268 +				e->left.sym = &symbol_no;
  29.269 +				e->right.expr = NULL;
  29.270 +				return e;
  29.271 +			} else if (e->right.expr->left.sym == &symbol_yes) {
  29.272 +				free(e->right.expr);
  29.273 +				tmp = e->left.expr;
  29.274 +				*e = *(e->left.expr);
  29.275 +				free(tmp);
  29.276 +				return e;
  29.277 +			}
  29.278 +		}
  29.279 +		break;
  29.280 +	case E_OR:
  29.281 +		e->left.expr = expr_eliminate_yn(e->left.expr);
  29.282 +		e->right.expr = expr_eliminate_yn(e->right.expr);
  29.283 +		if (e->left.expr->type == E_SYMBOL) {
  29.284 +			if (e->left.expr->left.sym == &symbol_no) {
  29.285 +				free(e->left.expr);
  29.286 +				tmp = e->right.expr;
  29.287 +				*e = *(e->right.expr);
  29.288 +				free(tmp);
  29.289 +				return e;
  29.290 +			} else if (e->left.expr->left.sym == &symbol_yes) {
  29.291 +				expr_free(e->left.expr);
  29.292 +				expr_free(e->right.expr);
  29.293 +				e->type = E_SYMBOL;
  29.294 +				e->left.sym = &symbol_yes;
  29.295 +				e->right.expr = NULL;
  29.296 +				return e;
  29.297 +			}
  29.298 +		}
  29.299 +		if (e->right.expr->type == E_SYMBOL) {
  29.300 +			if (e->right.expr->left.sym == &symbol_no) {
  29.301 +				free(e->right.expr);
  29.302 +				tmp = e->left.expr;
  29.303 +				*e = *(e->left.expr);
  29.304 +				free(tmp);
  29.305 +				return e;
  29.306 +			} else if (e->right.expr->left.sym == &symbol_yes) {
  29.307 +				expr_free(e->left.expr);
  29.308 +				expr_free(e->right.expr);
  29.309 +				e->type = E_SYMBOL;
  29.310 +				e->left.sym = &symbol_yes;
  29.311 +				e->right.expr = NULL;
  29.312 +				return e;
  29.313 +			}
  29.314 +		}
  29.315 +		break;
  29.316 +	default:
  29.317 +		;
  29.318 +	}
  29.319 +	return e;
  29.320 +}
  29.321 +
  29.322 +/*
  29.323 + * bool FOO!=n => FOO
  29.324 + */
  29.325 +struct expr *expr_trans_bool(struct expr *e)
  29.326 +{
  29.327 +	if (!e)
  29.328 +		return NULL;
  29.329 +	switch (e->type) {
  29.330 +	case E_AND:
  29.331 +	case E_OR:
  29.332 +	case E_NOT:
  29.333 +		e->left.expr = expr_trans_bool(e->left.expr);
  29.334 +		e->right.expr = expr_trans_bool(e->right.expr);
  29.335 +		break;
  29.336 +	case E_UNEQUAL:
  29.337 +		// FOO!=n -> FOO
  29.338 +		if (e->left.sym->type == S_TRISTATE) {
  29.339 +			if (e->right.sym == &symbol_no) {
  29.340 +				e->type = E_SYMBOL;
  29.341 +				e->right.sym = NULL;
  29.342 +			}
  29.343 +		}
  29.344 +		break;
  29.345 +	default:
  29.346 +		;
  29.347 +	}
  29.348 +	return e;
  29.349 +}
  29.350 +
  29.351 +/*
  29.352 + * e1 || e2 -> ?
  29.353 + */
  29.354 +struct expr *expr_join_or(struct expr *e1, struct expr *e2)
  29.355 +{
  29.356 +	struct expr *tmp;
  29.357 +	struct symbol *sym1, *sym2;
  29.358 +
  29.359 +	if (expr_eq(e1, e2))
  29.360 +		return expr_copy(e1);
  29.361 +	if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
  29.362 +		return NULL;
  29.363 +	if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
  29.364 +		return NULL;
  29.365 +	if (e1->type == E_NOT) {
  29.366 +		tmp = e1->left.expr;
  29.367 +		if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
  29.368 +			return NULL;
  29.369 +		sym1 = tmp->left.sym;
  29.370 +	} else
  29.371 +		sym1 = e1->left.sym;
  29.372 +	if (e2->type == E_NOT) {
  29.373 +		if (e2->left.expr->type != E_SYMBOL)
  29.374 +			return NULL;
  29.375 +		sym2 = e2->left.expr->left.sym;
  29.376 +	} else
  29.377 +		sym2 = e2->left.sym;
  29.378 +	if (sym1 != sym2)
  29.379 +		return NULL;
  29.380 +	if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
  29.381 +		return NULL;
  29.382 +	if (sym1->type == S_TRISTATE) {
  29.383 +		if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
  29.384 +		    ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
  29.385 +		     (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) {
  29.386 +			// (a='y') || (a='m') -> (a!='n')
  29.387 +			return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no);
  29.388 +		}
  29.389 +		if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
  29.390 +		    ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
  29.391 +		     (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) {
  29.392 +			// (a='y') || (a='n') -> (a!='m')
  29.393 +			return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod);
  29.394 +		}
  29.395 +		if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
  29.396 +		    ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
  29.397 +		     (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) {
  29.398 +			// (a='m') || (a='n') -> (a!='y')
  29.399 +			return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes);
  29.400 +		}
  29.401 +	}
  29.402 +	if (sym1->type == S_BOOLEAN && sym1 == sym2) {
  29.403 +		if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||
  29.404 +		    (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))
  29.405 +			return expr_alloc_symbol(&symbol_yes);
  29.406 +	}
  29.407 +
  29.408 +	if (DEBUG_EXPR) {
  29.409 +		printf("optimize (");
  29.410 +		expr_fprint(e1, stdout);
  29.411 +		printf(") || (");
  29.412 +		expr_fprint(e2, stdout);
  29.413 +		printf(")?\n");
  29.414 +	}
  29.415 +	return NULL;
  29.416 +}
  29.417 +
  29.418 +struct expr *expr_join_and(struct expr *e1, struct expr *e2)
  29.419 +{
  29.420 +	struct expr *tmp;
  29.421 +	struct symbol *sym1, *sym2;
  29.422 +
  29.423 +	if (expr_eq(e1, e2))
  29.424 +		return expr_copy(e1);
  29.425 +	if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
  29.426 +		return NULL;
  29.427 +	if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
  29.428 +		return NULL;
  29.429 +	if (e1->type == E_NOT) {
  29.430 +		tmp = e1->left.expr;
  29.431 +		if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
  29.432 +			return NULL;
  29.433 +		sym1 = tmp->left.sym;
  29.434 +	} else
  29.435 +		sym1 = e1->left.sym;
  29.436 +	if (e2->type == E_NOT) {
  29.437 +		if (e2->left.expr->type != E_SYMBOL)
  29.438 +			return NULL;
  29.439 +		sym2 = e2->left.expr->left.sym;
  29.440 +	} else
  29.441 +		sym2 = e2->left.sym;
  29.442 +	if (sym1 != sym2)
  29.443 +		return NULL;
  29.444 +	if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
  29.445 +		return NULL;
  29.446 +
  29.447 +	if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) ||
  29.448 +	    (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes))
  29.449 +		// (a) && (a='y') -> (a='y')
  29.450 +		return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
  29.451 +
  29.452 +	if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) ||
  29.453 +	    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no))
  29.454 +		// (a) && (a!='n') -> (a)
  29.455 +		return expr_alloc_symbol(sym1);
  29.456 +
  29.457 +	if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) ||
  29.458 +	    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod))
  29.459 +		// (a) && (a!='m') -> (a='y')
  29.460 +		return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
  29.461 +
  29.462 +	if (sym1->type == S_TRISTATE) {
  29.463 +		if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) {
  29.464 +			// (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
  29.465 +			sym2 = e1->right.sym;
  29.466 +			if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
  29.467 +				return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
  29.468 +							     : expr_alloc_symbol(&symbol_no);
  29.469 +		}
  29.470 +		if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) {
  29.471 +			// (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
  29.472 +			sym2 = e2->right.sym;
  29.473 +			if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
  29.474 +				return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
  29.475 +							     : expr_alloc_symbol(&symbol_no);
  29.476 +		}
  29.477 +		if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
  29.478 +			   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
  29.479 +			    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes)))
  29.480 +			// (a!='y') && (a!='n') -> (a='m')
  29.481 +			return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod);
  29.482 +
  29.483 +		if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
  29.484 +			   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
  29.485 +			    (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes)))
  29.486 +			// (a!='y') && (a!='m') -> (a='n')
  29.487 +			return expr_alloc_comp(E_EQUAL, sym1, &symbol_no);
  29.488 +
  29.489 +		if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
  29.490 +			   ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
  29.491 +			    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod)))
  29.492 +			// (a!='m') && (a!='n') -> (a='m')
  29.493 +			return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
  29.494 +
  29.495 +		if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) ||
  29.496 +		    (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) ||
  29.497 +		    (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) ||
  29.498 +		    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes))
  29.499 +			return NULL;
  29.500 +	}
  29.501 +
  29.502 +	if (DEBUG_EXPR) {
  29.503 +		printf("optimize (");
  29.504 +		expr_fprint(e1, stdout);
  29.505 +		printf(") && (");
  29.506 +		expr_fprint(e2, stdout);
  29.507 +		printf(")?\n");
  29.508 +	}
  29.509 +	return NULL;
  29.510 +}
  29.511 +
  29.512 +static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)
  29.513 +{
  29.514 +#define e1 (*ep1)
  29.515 +#define e2 (*ep2)
  29.516 +	struct expr *tmp;
  29.517 +
  29.518 +	if (e1->type == type) {
  29.519 +		expr_eliminate_dups1(type, &e1->left.expr, &e2);
  29.520 +		expr_eliminate_dups1(type, &e1->right.expr, &e2);
  29.521 +		return;
  29.522 +	}
  29.523 +	if (e2->type == type) {
  29.524 +		expr_eliminate_dups1(type, &e1, &e2->left.expr);
  29.525 +		expr_eliminate_dups1(type, &e1, &e2->right.expr);
  29.526 +		return;
  29.527 +	}
  29.528 +	if (e1 == e2)
  29.529 +		return;
  29.530 +
  29.531 +	switch (e1->type) {
  29.532 +	case E_OR: case E_AND:
  29.533 +		expr_eliminate_dups1(e1->type, &e1, &e1);
  29.534 +	default:
  29.535 +		;
  29.536 +	}
  29.537 +
  29.538 +	switch (type) {
  29.539 +	case E_OR:
  29.540 +		tmp = expr_join_or(e1, e2);
  29.541 +		if (tmp) {
  29.542 +			expr_free(e1); expr_free(e2);
  29.543 +			e1 = expr_alloc_symbol(&symbol_no);
  29.544 +			e2 = tmp;
  29.545 +			trans_count++;
  29.546 +		}
  29.547 +		break;
  29.548 +	case E_AND:
  29.549 +		tmp = expr_join_and(e1, e2);
  29.550 +		if (tmp) {
  29.551 +			expr_free(e1); expr_free(e2);
  29.552 +			e1 = expr_alloc_symbol(&symbol_yes);
  29.553 +			e2 = tmp;
  29.554 +			trans_count++;
  29.555 +		}
  29.556 +		break;
  29.557 +	default:
  29.558 +		;
  29.559 +	}
  29.560 +#undef e1
  29.561 +#undef e2
  29.562 +}
  29.563 +
  29.564 +static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2)
  29.565 +{
  29.566 +#define e1 (*ep1)
  29.567 +#define e2 (*ep2)
  29.568 +	struct expr *tmp, *tmp1, *tmp2;
  29.569 +
  29.570 +	if (e1->type == type) {
  29.571 +		expr_eliminate_dups2(type, &e1->left.expr, &e2);
  29.572 +		expr_eliminate_dups2(type, &e1->right.expr, &e2);
  29.573 +		return;
  29.574 +	}
  29.575 +	if (e2->type == type) {
  29.576 +		expr_eliminate_dups2(type, &e1, &e2->left.expr);
  29.577 +		expr_eliminate_dups2(type, &e1, &e2->right.expr);
  29.578 +	}
  29.579 +	if (e1 == e2)
  29.580 +		return;
  29.581 +
  29.582 +	switch (e1->type) {
  29.583 +	case E_OR:
  29.584 +		expr_eliminate_dups2(e1->type, &e1, &e1);
  29.585 +		// (FOO || BAR) && (!FOO && !BAR) -> n
  29.586 +		tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
  29.587 +		tmp2 = expr_copy(e2);
  29.588 +		tmp = expr_extract_eq_and(&tmp1, &tmp2);
  29.589 +		if (expr_is_yes(tmp1)) {
  29.590 +			expr_free(e1);
  29.591 +			e1 = expr_alloc_symbol(&symbol_no);