diff options
68 files changed, 14228 insertions, 1185 deletions
@@ -19,3 +19,5 @@ S: Vor den Grashöfen 1 S: 38162 Cremlingen S: Germany +N: Marc Kleine-Budde +E: kleine-budde@gmx.de
\ No newline at end of file @@ -1,3 +1,76 @@ +2003-04-28 Marc Kleine-Budde <kleine-budde@gmx.de> + * openssl.make: openssl.prepare: deps on gccstage2.install if + xcompiler is selected + * openssl.make: added support for 386 and i586 targets + +2003-04-27 Marc Kleine-Budde <kleine-budde@gmx.de> + * Config.in: added 586 target + * e2fsprogs.make: target clean cleans now builddir + * grub.make: the crosscompiler is now used + * grub.make: fix typo: --disable-enable-cs89x0 + +2003-04-25 Marc Kleine-Budde <kleine-budde@gmx.de> + * xchain-kernel.make: introduced xchain_kernel_extact_deps, only + depending on MTD if wanted (saves us downloding MTD if not needed) + * xchain-gccstage1.make: changed GCC_PREFIX to PTXCONF_GNU_TARGET + * xchain-gccstage2.make: xchain-gccstage2_prepare: made threads in + gcc depending on glibc threads + * xchain-gccstage2.make: xchain-gccstage2_compile: removed -Os + from CXXFLAGS_FOR_TARGET, because gcc doesn't like opts. + [see: http://www.linuxfromscratch.org/view/3.3/chapter06/gcc.html] + +2003-04-24 Marc Kleine-Budde <kleine-budde@gmx.de> + + * xchain-glibc.make: glibc.targetinstall: changed the names of the + libs, they have the same name as beeing installed by glibc's make + install + * bash.make: bash-prepare: added deps to gccstage2 if defined + xchain + * e2fsprogs.make: e2fsprogs-prepare: added deps to gccstage2 if + defined xchain + * Makefile: target clean and rootclean, are deleting now + * xchain-glibc.make: glibc_get: changed dep from glibc-base.get to + glibc.get, to get the patches too + +2003-04-23 Marc Kleine-Budde <kleine-budde@gmx.de> + + * xchain-kernel.make: xchain-kernel.prepare: removed touch of + autoconf.h, that's done already in xchain-kernel.extract + * xchain-gccstage1.make: xchain-gccstage1.prepare: removed touch + of autoconf, and 'construction' of version.h, that's done already + in xchain-kernel.extract + * xchain-glibc.make: glibc-prepare: removed optimisation from + GLIBC_CFLAGS (like -mpcu) + [see: http://www.linuxfromscratch.org/view/3.3/chapter05/gcc.html] + * Config.in: make GRUB dependend on X86 + +2003-04-22 Marc Kleine-Budde <kleine-budde@gmx.de> + + * openssh.make: changed URL, points now to existing sources + * openssl.make: changed URL, points now to existing sources + +2003-04-20 Marc Kleine-Budde <kleine-budde@gmx.de> + + * Config.in: added Kernel image format vmlinux + * xchain-kernel.make: handles now vmlinux kernel format + * xchain-kernel.make: added arch to KERNEL_TARGET_PATH for zImage + and bzImage + * xchain-kernel.make: removed double rule + $(STATEDIR)/xchain-kernel.get + * xchain-kernel.make: xchain-kernel.extract: version.h is now + automatically generated by kernel's make + * xchain-kernel.make: kernel.prepare: ARCH in kernel's Makefile is + now always setted to PTXCONF_ARCH + * xchain-kernel.make: kernel.prepare: CROSS_COMPILE in kernel's + Makefile is now always setted to PTXCONF_GNU_TARGET + * xchain-kernel.make: kernel.targetinstall: copying the kernel to + rootdir is now arch independent, using KERNEL_TAGET_PATH + * bootdisk.make: copying the kernel to bootdisk is now arch + independent, using KERNEL_TARGET_PATH + * bootdisk.make: added link from menu.lst to grub.conf, cause new + grub version use grub.conf + +2003-04-19 Robert Schwebel <r.schwebel@pengutronix.de> * Rules.make: added GNU_HOST to get rid of hardcoded x86 compilers * config system: ARM architecture dependency fixed @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.7 2003/06/26 16:10:36 robert Exp $ +# $Id: Makefile,v 1.8 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Robert Schwebel <r.schwebel@pengutronix.de> # (c) 2002 by Jochen Striepe <ptxdist@tolot.escape.de> @@ -19,6 +19,7 @@ TAR=tar TOPDIR=$(shell /bin/pwd) BASENAME=$(shell /usr/bin/basename $(TOPDIR)) BUILDDIR=$(TOPDIR)/build +XCHAIN_BUILDDIR=$(BUILDDIR)/xchain ROOTDIR=$(TOPDIR)/root SRCDIR=$(TOPDIR)/src PTXSRCDIR=$(TOPDIR)/src_ptx @@ -63,7 +64,7 @@ help: @echo " make world Make-everything-and-be-happy" @echo @echo "Calling these targets affects the whole system. If you want to" - @echo "do something for a packet do 'make packet-<action>'." + @echo "do something for a packet do 'make packet_<action>'." @echo @echo "Available packages and versions: " @echo "$(PACKAGES)" @@ -77,15 +78,15 @@ compile: $(PACKAGES_COMPILE) install: $(PACKAGES_INSTALL) dep_output_clean: - if [ -e $(DEP_OUTPUT) ]; then rm -f $(DEP_OUTPUT); fi +# if [ -e $(DEP_OUTPUT) ]; then rm -f $(DEP_OUTPUT); fi touch $(DEP_OUTPUT) dep_tree: - scripts/makedeptree $(DEP_OUTPUT) | $(DOT) -Tps > $(DEP_TREE_PS) + @sort $(DEP_OUTPUT) | uniq | scripts/makedeptree | $(DOT) -Tps > $(DEP_TREE_PS) dep_world: $(PACKAGES_TARGETINSTALL) - echo $@ : $^ | sed -e "s/_/./g" >> $(DEP_OUTPUT) - + @echo $@ : $^ | sed -e "s/_/./g" >> $(DEP_OUTPUT) + world: dep_output_clean dep_world dep_tree # menuconfig: @@ -136,7 +137,7 @@ rayonic_config: @cp $(call latestconfig, kernel*rayonic) .kernelconfig # ---------------------------------------------------------------------------- -clean: rootclean +clean: rootclean @echo @echo -n "cleaning build dir............... " @for i in $$(ls -I CVS $(BUILDDIR)); do echo -n $$i' '; rm -rf $(BUILDDIR)/"$$i"; done diff --git a/config/Config.in b/config/Config.in index b1f53fbcb..7b9095b59 100644 --- a/config/Config.in +++ b/config/Config.in @@ -25,61 +25,156 @@ choice config ARCH_ARM bool "ARM" help - This is support for the ARM processor architecture. + This is support for the ARM processor architecture. + + config ARCH_ARM_NOMMU + bool "ARM-nommu" + help + This is support for the ARM processor architecture w/o MMU. config ARCH_X86 - bool "x86" + bool "X86" help - This is support for the Intel x86 architecture. + This is support for the Intel x86 architecture. + + config ARCH_PPC + bool "PPC" + + config ARCH_SPARC + bool "SPARC" + + config ARCH_MIPS + bool "MIPS" + + config ARCH_CRIS + bool "CRIS" + + config ARCH_PARISC + bool "PARISC" +endchoice + +choice + prompt "ARM architecture" + depends on ARCH_ARM || ARCH_ARM_NOMMU + + config ARM_ARCH_PXA + bool "pxa" + depends on ARCH_ARM + + config ARM_ARCH_NETARM + bool "net+arm" + depends on ARCH_ARM_NOMMU + + config ARM_ARCH_ATMEL + bool "atmel" + depends on ARCH_ARM_NOMMU endchoice -config ARCH - string - default "arm" if ARCH_ARM - default "i386" if ARCH_X86 choice prompt "Code Optimization" - default OPT_ARM4 + default OPT_ARM4 if ARCH_ARM + default OPT_PPC if ARCH_PPC + config OPT_ARM4 + bool "arm4" + depends on ARCH_ARM + config OPT_ARM_NOMMU + bool "arm7tdmi" + depends on ARCH_ARM_NOMMU config OPT_I386 bool "386" depends on ARCH_X86 - config OPT_I486 bool "486" depends on ARCH_X86 - config OPT_I586 bool "586" depends on ARCH_X86 - config OPT_I686 bool "686" depends on ARCH_X86 - - config OPT_ARM4 - bool "arm4" - depends on ARCH_ARM + config OPT_PPC + bool "generic PPC" + depends on ARCH_PPC + config OPT_PPC405 + bool "PPC 405" + depends on ARCH_PPC + config OPT_SPARC + bool "sparc" + depends on ARCH_SPARC + config OPT_MIPS + bool "mips" + depends on ARCH_MIPS + config OPT_CRIS + bool "cris" + depends on ARCH_CRIS + config OPT_PA8X00 + bool "PA8x00" + depends on ARCH_PARISC endchoice -config GNU_TARGET +config ARCH_NOMMU + bool + default y if ARCH_ARM_NOMMU + +config ARCH string - default "i386-linux" if OPT_I386 - default "i486-linux" if OPT_I486 - default "i586-linux" if OPT_I586 - default "i686-linux" if OPT_I686 - default "arm-linux" if OPT_ARM4 + default "arm" if ARCH_ARM + default "armnommu" if ARCH_ARM_NOMMU + default "i386" if ARCH_X86 + default "ppc" if ARCH_PPC + default "sparc" if ARCH_SPARC + default "mips" if ARCH_MIPS + default "cris" if ARCH_CRIS + default "parisc" if ARCH_PARISC -choice - prompt "ARM architecture" - depends on ARCH_ARM +config ARCH_USERSPACE + string + default "arm" if ARCH_ARM + default "arm" if ARCH_ARM_NOMMU + default "i386" if ARCH_X86 + default "powerpc" if ARCH_PPC + default "sparc" if ARCH_SPARC + default "mips" if ARCH_MIPS + default "cris" if ARCH_CRIS + default "parisc" if ARCH_PARISC - config ARM_ARCH_PXA - bool "pxa" - depends on ARCH_ARM -endchoice +config ARM_PROC + string + default "armv" if ARCH_ARM || ARCH_ARM_NOMMU +config ARM_ARCH + string + default "pxa" if ARM_ARCH_PXA + default "netarm" if ARM_ARCH_NETARM + default "atmel" if ARM_ARCH_ATMEL + +config GNU_TARGET + string + default "arm-linux" if ARCH_ARM && GLIBC + default "arm-elf" if ARCH_ARM_NOMMU && GLIBC + default "i386-linux" if OPT_I386 && GLIBC + default "i486-linux" if OPT_I486 && GLIBC + default "i586-linux" if OPT_I586 && GLIBC + default "i686-linux" if OPT_I686 && GLIBC + default "powerpc-linux" if ARCH_PPC && GLIBC + default "sparc-linux" if OPT_SPARC && GLIBC + default "mips-linux" if ARCH_MIPS && GLIBC + default "cris-linux" if ARCH_CRIS && GLIBC + default "hppa-linux" if ARCH_PARISC && GLIBC + + default "arm-uclibc-linux" if ARCH_ARM && UCLIBC + default "arm-elf" if ARCH_ARM_NOMMU && UCLIBC + default "i386-uclibc-linux" if OPT_I386 && UCLIBC + default "i486-uclibc-linux" if OPT_I486 && UCLIBC + default "i586-uclibc-linux" if OPT_I586 && UCLIBC + default "i686-uclibc-linux" if OPT_I686 && UCLIBC + default "powerpc-uclibc-linux" if ARCH_PPC && UCLIBC + default "sparc-uclibc-linux" if OPT_SPARC && UCLIBC + default "mips-uclibc-linux" if ARCH_MIPS && UCLIBC + default "cris-uclibc-linux" if ARCH_CRIS && UCLIBC + default "hppa-uclibc-linux" if ARCH_PARISC && UCLIBC config PREFIX prompt "Install PREFIX" @@ -97,6 +192,25 @@ config BUILD_CROSSCHAIN prompt "Build Cross Toolchain" default y if ARCH_ARM default n if ARCH_X86 + default y if ARCH_SPARC + default y if ARCH_MIPS + default y if ARCH_CRIS + default y if ARCH_PARISC +choice + prompt "GCC (GNU Compiler Collection) Version" + default GCC_3_2_3 if ARCH_X86 || ARCH_SPARC || ARCH_MIPS || ARCH_CRIS || ARCH_PARISC + depends on BUILD_CROSSCHAIN + + config GCC_2_95_3 + bool + prompt "2.95.3" + depends on ARCH_X86 || ARCH_ARM || ARCH_SPARC || ARCH_PPC || ARCH_ARM_NOMMU + + config GCC_3_2_3 + bool + prompt "3.2.3" + depends on ARCH_X86 || ARCH_SPARC || ARCH_MIPS || ARCH_CRIS || ARCH_PARISC || ARCH_PPC || !ARCH_ARM_NOMMU +endchoice config BUILD_CROSSCHAIN_GDB bool @@ -171,7 +285,7 @@ config ROOTFS_ETC default y config ETC_NAME - prompt "Name of dir in ./etc/ to be used" + prompt "Name of dir in $PTXDIST/etc to be used" string default "innokom" depends on ROOTFS_ETC @@ -200,25 +314,41 @@ comment "Core System " ############################################################################## menu "Kernel " -#source "config/config-kernel.in" config DONT_COMPILE_KERNEL bool prompt "Don't compile kernel" default n +config KERNEL_CONFIG + string + default "kernel-2.4." + prompt "Name of config in $PTXDIST/config/kernel to be used" + choice prompt "Kernel Version" - default KERNEL_2_4_19 + default KERNEL_2_4_19 config KERNEL_2_4_18 bool prompt "2.4.18" + depends on !ARCH_ARM_NOMMU config KERNEL_2_4_19 bool prompt "2.4.19" - + depends on !ARCH_ARM_NOMMU + + config KERNEL_2_4_20 + bool + prompt "2.4.20" + depends on ARCH_SPARC || ARCH_X86 || ARCH_MIPS || ARCH_CRIS || ARCH_PPC + depends on !ARCH_ARM_NOMMU + + config KERNEL_2_4_21 + bool + prompt "2.4.21" + depends on ARCH_SPARC || ARCH_X86 || ARCH_MIPS || ARCH_CRIS || ARCH_PPC || ARCH_ARM_NOMMU endchoice config KERNEL_XSCALE @@ -242,32 +372,37 @@ config KERNEL_INSTALL bool prompt "Install kernel into /boot on target" default n + depends on !DONT_COMPILE_KERNEL choice prompt "Kernel Image" default KERNEL_IMAGE_BZ + depends on !DONT_COMPILE_KERNEL config KERNEL_IMAGE_BZ bool prompt "bzImage" + depends on ARCH_X86 config KERNEL_IMAGE_Z bool prompt "zImage" + depends on ARCH_X86 config KERNEL_IMAGE_U bool prompt "uImage" + depends on ARCH_ARM config KERNEL_IMAGE_VMLINUX bool prompt "vmlinux" - endchoice config RTAI bool prompt "Realtime Extension: RTAI" + depends on KERNEL_2_4_20 || KERNEL_2_4_19 || KERNEL_2_4_18 default n choice @@ -322,14 +457,18 @@ choice config GLIBC bool prompt "GLIBC" + depends on !ARCH_NOMMU config UCLIBC bool prompt "uClibc" endchoice +comment "C Library options" + choice prompt "C-Lib Version" + default GLIBC_2_2_5 config GLIBC_2_2_5 bool @@ -348,41 +487,51 @@ choice depends on GLIBC depends on ARCH_X86 - config UCLIBC_0_9_9 + config UCLIBC_0_9_19 bool - prompt "0.9.9" + prompt "0.9.19" depends on UCLIBC -endchoice + config UCLIBC_0_9_20 + bool + prompt "0.9.20" + depends on UCLIBC +endchoice config GLIBC_PTHREADS bool prompt "Compile glibc with pthreads" + default y depends on GLIBC config GLIBC_FLOATINGPOINT bool prompt "Enable glibc floating point support" + default y depends on GLIBC config GLIBC_LIBIO bool prompt "Build in GNU libio instead of GNU stdio" + default n depends on GLIBC config GLIBC_SHARED bool prompt "Build shared library" + default y depends on GLIBC config GLIBC_PROFILED bool prompt "Include profiling support" + default n depends on GLIBC config GLIBC_OMITFP bool prompt "Build undebuggable optimized library" + default n depends on GLIBC config GLIBC_BOUNDED @@ -390,11 +539,20 @@ config GLIBC_BOUNDED prompt "Build with runtime bounds checking" depends on GLIBC +comment "Install options" + depends on GLIBC + config GLIBC_THREAD_DB bool prompt "Install libthread_db on the target" depends on GLIBC +config GLIBC_DL + bool + prompt "Install libdl on the target" + default y if BASH + depends on GLIBC + config GLIBC_CRYPT bool prompt "Install libcrypt on the target" @@ -450,36 +608,57 @@ config GLIBC_NSL prompt "Install libnsl" depends on GLIBC -config UCLIBC_DEBUG +source "config/uClibc/extra/Configs/Config.alpha" +source "config/uClibc/extra/Configs/Config.arm" +source "config/uClibc/extra/Configs/Config.cris" +source "config/uClibc/extra/Configs/Config.h8300" +source "config/uClibc/extra/Configs/Config.i386" +source "config/uClibc/extra/Configs/Config.i960" +source "config/uClibc/extra/Configs/Config.m68k" +source "config/uClibc/extra/Configs/Config.mips" +source "config/uClibc/extra/Configs/Config.mipsel" +source "config/uClibc/extra/Configs/Config.powerpc" +source "config/uClibc/extra/Configs/Config.sh" +source "config/uClibc/extra/Configs/Config.sparc" +source "config/uClibc/extra/Configs/Config.v850" + +comment "Install options" + depends on UCLIBC + +config UCLIBC_CRYPT bool - prompt "Enable debugging" + prompt "Install libcrypt on the target" depends on UCLIBC - -config UCLIBC_HAS_MMU - bool - prompt "Target has MMU" - depends on UCLIBC -config UCLIBC_SHADOWPASS +config UCLIBC_DL bool - prompt "Enable shadow passwords" + prompt "Install libdl on the target" depends on UCLIBC -config UCLIBC_REGEX +config UCLIBC_M bool - prompt "Enable POSIX regular expressions" + prompt "Install libm on the target" depends on UCLIBC - -config UCLIBC_RPC + +config UCLIBC_NSL + bool + prompt "Install libnsl on the target" + depends on UCLIBC + +config UCLIBC_PTHREAD bool - prompt "Enable RPC" + prompt "Install libpthread on the target" depends on UCLIBC -config UCLIBC_SHARED +config UCLIBC_RESOLV bool - prompt "Make shared library" + prompt "Install libresolv on the target" depends on UCLIBC +config UCLIBC_UTIL + bool + prompt "Install libutil on the target" + depends on UCLIBC endmenu # ============================================================================ @@ -657,9 +836,14 @@ source "config/busybox/sysdeps/linux/Config.in" endmenu -menu "TinyLogin " -#source "foo/bar/baz" -endmenu +# ---------------------------------------------------------------------------- + +#menu "TinyLogin " + +#config TINYLOGIN +# bool +# prompt "Compile Tinylogin" +#endmenu # ---------------------------------------------------------------------------- @@ -672,91 +856,76 @@ config MTD_UTILS config MTD_EINFO bool prompt "einfo" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_ERASE bool prompt "erase" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_ERASEALL bool prompt "eraseall" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_FCP bool prompt "fcp" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_FTL_CHECK bool prompt "ftl_check" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_FTL_FORMAT bool prompt "ftl_format" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_JFFS2READER bool prompt "jffs2reader" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_LOCK bool prompt "lock" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_MTDDEBUG bool prompt "mtd_debug" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_NANDDUMP bool prompt "nanddump" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_NANDTEST bool prompt "nandtest" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_NANDWRITE bool prompt "nandwrite" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_NFTL_FORMAT bool prompt "nftl_format" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_NFTLDUMP bool prompt "nftldump" - depends on KERNEL_MTD depends on MTD_UTILS config MTD_UNLOCK bool prompt "unlock" - depends on KERNEL_MTD depends on MTD_UTILS endmenu @@ -765,6 +934,22 @@ endmenu comment "Network Tools" ############################################################################## +menu "ppp " + +config PPP + bool + prompt "Compile ppp" +# +# FIXME: enable/disable +# +# plugins +# ms-chap +# crypt +# +endmenu + +# ---------------------------------------------------------------------------- + menu "udhcp " config UDHCP @@ -841,20 +1026,8 @@ config LSH_WRITEKEY prompt "Install lsh-writekey" depends on LSH -config ZLIB - bool - default y if OPENSSH - default n if !OPENSSH - -config OPENSSL - bool - depends on ZLIB - default y if OPENSSH - default n if !OPENSSH - config OPENSSH bool - depends on GLIBC_NSL prompt "OpenSSH" endmenu @@ -1015,6 +1188,10 @@ endmenu # ---------------------------------------------------------------------------- +############################################################################## +comment "Disk and file " +############################################################################## + menu "Disk and file utils " config E2FSPROGS @@ -1081,9 +1258,241 @@ config GRUB_BOOTDISK prompt "make bootdisk in $PTXDIST/bootdisk" depends on GRUB +config LILO + bool "LILO" + depends on ARCH_X86 + config PTXFLASH bool prompt "Install ptxflash utility" +endmenu + + + +############################################################################## +comment "Applications " +############################################################################## +menu "Kaffe " + +config KAFFE + bool + prompt "Compile Kaffe" + +comment "Target Options" + depends on KAFFE + + choice + prompt "Engine" + default KAFFE_ENG_JIT3 + depends on KAFFE + + config KAFFE_ENG_INTRP + bool Interpreter + + config KAFFE_ENG_JIT + bool JIT + depends on ARCH_ARM || ARCH_X86 || ARCH_SPARC || ARCH_ARM || ARCH_ALPHA || ARCH_MIPS + + config KAFFE_ENG_JIT3 + bool JITv3 + depends on ARCH_ARM || ARCH_X86 || ARCH_SPARC || ARCH_ARM || ARCH_ALPHA || ARCH_MIPS + endchoice + + choice + prompt "Threading System" + default KAFFE_THREAD_J + depends on KAFFE + + config KAFFE_THREAD_P + bool unix-pthreads + + config KAFFE_THREAD_J + bool unix-jthreads + endchoice + + choice + prompt "API" + default KAFFE_API_SE + depends on KAFFE + + config KAFFE_API_CLDC + bool CLDC + + config KAFFE_API_SE + bool J2SE + endchoice + + config KAFFE_ENABLE_JIKES + bool + default n + prompt "Use Jikes or other Java compiler" + depends on KAFFE_API_SE + depends on KAFFE + + config KAFFE_JIKES + string + default "jikes" if KAFFE_API_SE + default "javac" if KAFFE_API_CLDC + prompt "java compiler (see help)" + depends on KAFFE_API_SE && KAFFE_ENABLE_JIKES || KAFFE_API_CLDC + depends on KAFFE + help + The compiler must be in the $PATH or an absoloute path to the compiler must be supplied. + If compiling the CLDC API jikes is not working, please use Sun's javac. + + config KAFFE_JIKES_WO_DEBUG + bool + default n + prompt "Compile Java Class Libs without debugging symbols (see help)" + depends on KAFFE_API_SE && KAFFE_ENABLE_JIKES || KAFFE_API_CLDC + depends on KAFFE + help + Works only with Sun's javac. +############################################################################# +comment "Debugging Options" + depends on KAFFE + + config KAFFE_DEB_DEB + bool + default n + prompt "Enable run-time debugging machinery" + depends on KAFFE + + config KAFFE_DEB_X + bool + default n + prompt "Enable debugging symbol generation for jitted code (xdebugging)" + depends on KAFFE + + config KAFFE_DEB_PROFILING + bool + default n + prompt "Compile with gprof(1) profiling support" + depends on KAFFE + + config KAFFE_DEB_XPROFILING + bool + default n + prompt "Enable profiling for C and jitted code (xprofiling)" + depends on KAFFE + + config KAFFE_DEB_STATS + bool + default n + prompt "Gather statistics on vm execution" + depends on KAFFE +############################################################################## +comment "Features" + depends on KAFFE + + config KAFFE_FEAT_GCJ + bool + default n + prompt "Enable GCJ support" + depends on KAFFE + + choice + prompt "AWT Engine" + default KAFFE_AWT_X + depends on KAFFE_API_SE + depends on KAFFE + + config KAFFE_AWT_NO + bool none + + config KAFFE_AWT_X + bool XFree + + config KAFFE_AWT_QT + bool QT + endchoice + + config KAFFE_FEAT_FEEDBACK + bool + default n + prompt "Enable generation of feedback data" + depends on KAFFE + + config KAFFE_FEAT_JAVAMATH + bool + default n + prompt "Enable pure java java.math.* package" + depends on KAFFE_API_SE + depends on KAFFE + + config KAFFE_FEAT_DISABLE_SOUND + bool + default n + prompt "Disable javax.sound support" + depends on KAFFE_API_SE + depends on KAFFE + config KAFFE_FEAT_DISABLE_ALSA + bool + default n + prompt "Don't use ALSA for sound" + depends on KAFFE_API_SE && !KAFFE_FEAT_DISABLE_SOUND + depends on KAFFE + + config KAFFE_FEAT_DISABLE_ESD + bool + default n + prompt "Don't use esd for sound" + depends on KAFFE_API_SE && !KAFFE_FEAT_DISABLE_SOUND + depends on KAFFE + + config KAFFE_FEAT_DISABLE_SUNCOMPAT + bool + default n + prompt "Don't include Sun compatibility scripts" + depends on KAFFE + + config KAFFE_FEAT_CLDC_GMP + bool + default n + prompt "Enable native java/math/BigInteger in CLDC (see help)" + depends on KAFFE_API_CLDC + depends on KAFFE + help + Note: + This is not tested! + Use on your own risk! +############################################################################## +comment "Linking options" + depends on KAFFE + + config KAFFE_LINK_VM + bool + prompt "Force the creation of a static virtual machine (staticvm)" + depends on !KAFFE_LINK_LIB && !KAFFE_LINK_BIN + depends on KAFFE + + config KAFFE_LINK_LIB + bool + prompt "Force the use of static libraries rather than shared (staticlib)" + depends on !KAFFE_LINK_BIN + depends on KAFFE + + config KAFFE_LINK_GMP + bool + prompt "Link libgmp static into kaffe-bin" + depends on KAFFE_FEAT_CLDC_GMP + depends on KAFFE + + config KAFFE_LINK_BIN + bool + prompt "Force the creation of a static virtual machine binary (staticbin)" + depends on KAFFE + + + config KAFFE_TARGETINSTALL_GMP + bool + default y if KAFFE_API_SE && !KAFFE_FEAT_JAVAMATH || \ + KAFFE_FEAT_CLDC_GMP && !(KAFFE_LINK_GMP || KAFFE_LINK_BIN) + depends on KAFFE endmenu +############################################################################## + + + diff --git a/config/uClibc/Extract b/config/uClibc/Extract new file mode 100755 index 000000000..e69217ea2 --- /dev/null +++ b/config/uClibc/Extract @@ -0,0 +1,80 @@ +#!/usr/bin/perl + +# +# first extract all configuration files from the original source tree +# + +@configfiles = `find ../../build/uClibc* -name "Config.*" | grep -v default`; + +while($_ = shift @configfiles) { + chomp $_; + my $filename = $_; $filename =~ s/(.*\/uClibc.*?)\/(.*$)/$2/; + my $dir = $filename; $dir =~ s/(.*\/)(.*$)/$1/; + system("mkdir -p $dir"); + system("../../scripts/mkprefix -v -p UCLIBC_ < $_ > $filename"); +} + + +# +# fix some entries +# + +print "---------------------------------------------------------------------\n"; +print "Fixing some stuff...\n"; +print "---------------------------------------------------------------------\n"; + +%depends = ("alpha","ARCH_ALPHA", + "arm", "(ARCH_ARM || ARCH_ARM_NOMMU)", + "cris", "ARCH_CRIS", + "h8300", "ARCH_H8300", + "i386", "ARCH_X86", + "i960", "ARCH_I960", + "m68k", "ARCH_M68K", + "mips", "ARCH_MIPS", + "mipsel", "ARCH_MIPSEL", + "powerpc", "ARCH_PPC", + "sh", "ARCH_SH", + "sparc", "ARCH_SPARC", + "v850", "ARCH_V850"); + +@fixfiles = `find . -name "Config.*"|grep -v .in`; + + +while($file = shift @fixfiles) { + + open (FILE, "$file"); + @file = <FILE>; + close FILE; + + for (@file) { + + if (/^\s*source\s+\"(.*)\"/) { + + open(TEMP, "$1"); + @contens = <TEMP>; + close TEMP; + + $_ = join('',(@contens)); + } + } + + my $arch = $file; $arch =~ s/.*Config\.(.*)$/$1/g; + chomp ($arch); + + for (@file) { $_ =~ s/^\s*mainmenu (.*$)/\# mainmenu $1/g;} + + open (FILE, ">$file"); + print FILE @file; + close FILE; + + + open (FILE, "$file"); + @file = <FILE>; + close FILE; + + for (@file) { $_ =~ s/^(\s*menu\s+.*)$/$1\n\tdepends on UCLIBC && $depends{$arch}/g;} + + open (FILE, ">$file"); + print FILE @file; + close FILE; +} diff --git a/config/uClibc/extra/Configs/Config.alpha b/config/uClibc/extra/Configs/Config.alpha new file mode 100644 index 000000000..38edb9194 --- /dev/null +++ b/config/uClibc/extra/Configs/Config.alpha @@ -0,0 +1,613 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_ALPHA + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_ALPHA + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_ALPHA + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_ALPHA + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_ALPHA + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_ALPHA + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.arm b/config/uClibc/extra/Configs/Config.arm new file mode 100644 index 000000000..f051c15b3 --- /dev/null +++ b/config/uClibc/extra/Configs/Config.arm @@ -0,0 +1,657 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && (ARCH_ARM || ARCH_ARM_NOMMU) + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool + default y + +choice + prompt "Target Processor Type" + default UCLIBC_CONFIG_GENERIC_ARM + help + This is the processor type of your CPU. This information is used for + optimizing purposes. To build a library that will run on all ARMCPU + types (albeit not optimally fast), you can specify "Generic Arm" here. + If you pick anything other than "Generic Arm", there is no guarantee + that uClibc will even run on anything other than the selected processor + type. + + Here are the settings recommended for greatest speed: + - "Generic Arm" select this if your compiler is already setup to + optimize things properly. + - "arm7tdmi" an MMU-less ARM core such as those distributed + by Atmel, Samsung, and others. + - "StrongARM" for Intel's StrongARM cores, such as the + StrongARM 110/1100/1110. + - "XScale" for Intel's XScale processors + + If you don't know what to do, choose "Generic Arm". + +config UCLIBC_CONFIG_GENERIC_ARM + bool "Generic Arm" + +config UCLIBC_CONFIG_ARM7TDMI + bool "arm7tdmi" + +config UCLIBC_CONFIG_STRONGARM + bool "StrongARM" + +config UCLIBC_CONFIG_XSCALE + bool "XScale" + +endchoice + +config UCLIBC_ARCH_HAS_NO_MMU + bool + default y if UCLIBC_CONFIG_ARM7TDMI + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && (ARCH_ARM || ARCH_ARM_NOMMU) + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && (ARCH_ARM || ARCH_ARM_NOMMU) + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && (ARCH_ARM || ARCH_ARM_NOMMU) + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && (ARCH_ARM || ARCH_ARM_NOMMU) + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && (ARCH_ARM || ARCH_ARM_NOMMU) + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.cris b/config/uClibc/extra/Configs/Config.cris new file mode 100644 index 000000000..19ae60c31 --- /dev/null +++ b/config/uClibc/extra/Configs/Config.cris @@ -0,0 +1,631 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_CRIS + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + default "-mcrislinux" + +config UCLIBC_LIBGCC_CFLAGS + string + default "-mlinux" + + +choice + prompt "Target Architecture Type" + default UCLIBC_CONFIG_CRIS + help + This is the architecture type of your CPU. This information is used for + optimizing purposes. + + These are the possible settings: + - CRIS Generic support for Axis' CRIS architecture. + +config UCLIBC_CONFIG_CRIS + bool "CRIS" + +endchoice + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_CRIS + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_CRIS + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_CRIS + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_CRIS + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_CRIS + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.h8300 b/config/uClibc/extra/Configs/Config.h8300 new file mode 100644 index 000000000..05a78bb5c --- /dev/null +++ b/config/uClibc/extra/Configs/Config.h8300 @@ -0,0 +1,635 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_H8300 + +choice + prompt "Target Processor" + default UCLIBC_CONFIG_H8300H + help + This is the processor type of your CPU. + +config UCLIBC_CONFIG_H8300H + bool "H8300H" + +config UCLIBC_CONFIG_H8S + bool "H8S (edosk2674)" + +endchoice + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +config UCLIBC_ARCH_HAS_NO_MMU + bool + default y + +config UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + bool + default y + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_H8300 + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_H8300 + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_H8300 + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_H8300 + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_H8300 + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.i386 b/config/uClibc/extra/Configs/Config.i386 new file mode 100644 index 000000000..943f18b2e --- /dev/null +++ b/config/uClibc/extra/Configs/Config.i386 @@ -0,0 +1,690 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_X86 + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +choice + prompt "Target Processor Type" + default UCLIBC_CONFIG_GENERIC_386 + help + This is the processor type of your CPU. This information is used for + optimizing purposes. To build a library that will run on all x86 CPU + types (albeit not optimally fast), you can specify "386" here. If + you pick anything other than "386", there is no guarantee that uClibc + will even run on anything other than the selected processor type. + + Here are the settings recommended for greatest speed: + - "Generic 386" select this if your compiler is already setup to + optimize things properly. + - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI + 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels + will run on a 386 class machine. + - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or + SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S. + - "586" for Intel Pentium and other generic Pentium CPUs + - "Pentium-MMX" for the Intel Pentium MMX. + - "Pentium-Pro" for the Intel Pentium Pro/Celeron/Pentium II. + - "Pentium-III" for the Intel Pentium III + and Celerons based on the Coppermine core. + - "Pentium-4" for the Intel Pentium 4. + - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D). + - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird). + - "Crusoe" for the Transmeta Crusoe series. + - "Winchip-C6" for original IDT Winchip. + - "Winchip-2" for IDT Winchip 2. + - "Winchip-2A" for IDT Winchips with 3dNow! capabilities. + - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3. + + If you don't know what to do, choose "386". + +config UCLIBC_CONFIG_GENERIC_386 + bool "Generic 386" + +config UCLIBC_CONFIG_386 + bool "386" + +config UCLIBC_CONFIG_486 + bool "486" + +config UCLIBC_CONFIG_586 + bool "Pentium/586/K5/5x86/6x86/6x86MX/Winchip-2A/Winchip-3" + +config UCLIBC_CONFIG_586MMX + bool "Pentium-MMX" + +config UCLIBC_CONFIG_686 + bool "Pentium-Pro/Celeron/Pentium-II" + +config UCLIBC_CONFIG_PENTIUMIII + bool "Pentium-III/Celeron(Coppermine)" + +config UCLIBC_CONFIG_PENTIUM4 + bool "Pentium-4" + +config UCLIBC_CONFIG_K6 + bool "K6/K6-II/K6-III" + +config UCLIBC_CONFIG_K7 + bool "Athlon/Duron/K7" + +config UCLIBC_CONFIG_CRUSOE + bool "Crusoe" + +config UCLIBC_CONFIG_WINCHIPC6 + bool "Winchip-C6" + +config UCLIBC_CONFIG_WINCHIP2 + bool "Winchip-2" + +config UCLIBC_CONFIG_CYRIXIII + bool "CyrixIII/VIA-C3" + +endchoice + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_X86 + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_X86 + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_X86 + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_X86 + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_X86 + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + diff --git a/config/uClibc/extra/Configs/Config.i960 b/config/uClibc/extra/Configs/Config.i960 new file mode 100644 index 000000000..3e7c80dd8 --- /dev/null +++ b/config/uClibc/extra/Configs/Config.i960 @@ -0,0 +1,622 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_I960 + +config UCLIBC_HAVE_ELF + bool + default n + +config UCLIBC_ARCH_CFLAGS + string + default "-mh -mint32 -fsigned-char" + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +config UCLIBC_ARCH_HAS_NO_MMU + bool + default y + +config UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + bool + default y + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_I960 + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_I960 + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_I960 + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_I960 + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_I960 + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.in b/config/uClibc/extra/Configs/Config.in new file mode 100644 index 000000000..2bdfce6db --- /dev/null +++ b/config/uClibc/extra/Configs/Config.in @@ -0,0 +1,485 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu diff --git a/config/uClibc/extra/Configs/Config.in.arch b/config/uClibc/extra/Configs/Config.in.arch new file mode 100644 index 000000000..847b97f1b --- /dev/null +++ b/config/uClibc/extra/Configs/Config.in.arch @@ -0,0 +1,95 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + diff --git a/config/uClibc/extra/Configs/Config.m68k b/config/uClibc/extra/Configs/Config.m68k new file mode 100644 index 000000000..75ce3725e --- /dev/null +++ b/config/uClibc/extra/Configs/Config.m68k @@ -0,0 +1,622 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_M68K + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + default "-Wa,--bitwise-or -I$(KERNEL_SOURCE)/include" + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_HAS_NO_MMU + bool + default y + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_M68K + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_M68K + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_M68K + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_M68K + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_M68K + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.mips b/config/uClibc/extra/Configs/Config.mips new file mode 100644 index 000000000..da21ce48e --- /dev/null +++ b/config/uClibc/extra/Configs/Config.mips @@ -0,0 +1,614 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_MIPS + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + default "-mno-split-addresses" + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_MIPS + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_MIPS + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_MIPS + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_MIPS + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_MIPS + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.mipsel b/config/uClibc/extra/Configs/Config.mipsel new file mode 100644 index 000000000..641730beb --- /dev/null +++ b/config/uClibc/extra/Configs/Config.mipsel @@ -0,0 +1,614 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_MIPSEL + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + default "-mno-split-addresses" + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_MIPSEL + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_MIPSEL + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_MIPSEL + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_MIPSEL + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_MIPSEL + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.powerpc b/config/uClibc/extra/Configs/Config.powerpc new file mode 100644 index 000000000..7674e6ee2 --- /dev/null +++ b/config/uClibc/extra/Configs/Config.powerpc @@ -0,0 +1,613 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_PPC + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_PPC + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_PPC + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_PPC + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_PPC + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_PPC + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.sh b/config/uClibc/extra/Configs/Config.sh new file mode 100644 index 000000000..4ac1dc6ad --- /dev/null +++ b/config/uClibc/extra/Configs/Config.sh @@ -0,0 +1,674 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_SH + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +config UCLIBC_HAVE_DOT_HIDDEN + bool + default y + +config UCLIBC_UCLIBC_COMPLETELY_PIC + bool + default y + +choice + prompt "Target Processor Type" + default UCLIBC_CONFIG_SH4 + help + This is the processor type of your CPU. This information is used for + optimizing purposes, as well as to determine if your CPU has an MMU, + an FPU, etc. If you pick the wrong CPU type, there is no guarantee + that uClibc will work at all.... + + Here are the available choices: + - "SH2" Hitachi SH2 + - "SH3" Hitachi SH3 + - "SH4" Hitachi SH4 + - "SH5" Hitachi SH5 + +config UCLIBC_CONFIG_SH2 + bool "SH2" + +config UCLIBC_CONFIG_SH3 + bool "SH3" + +config UCLIBC_CONFIG_SH4 + bool "SH4" + +config UCLIBC_CONFIG_SH5 + bool "SH5" + +endchoice + +choice + prompt "Target Processor Endianness" + default UCLIBC_ARCH_LITTLE_ENDIAN + help + This is the endianness you wish to build use. Choose either Big + Endian, or Little Endian. + +config UCLIBC_ARCH_LITTLE_ENDIAN + bool "Little Endian" + +config UCLIBC_ARCH_BIG_ENDIAN + bool "Big Endian" + +endchoice + + +config UCLIBC_ARCH_HAS_NO_MMU + bool + default y if UCLIBC_CONFIG_SH2 + +config UCLIBC_ARCH_HAS_NO_FPU + bool + default y if UCLIBC_CONFIG_SH2 || UCLIBC_CONFIG_SH3 + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_SH + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_SH + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_SH + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_SH + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_SH + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.sparc b/config/uClibc/extra/Configs/Config.sparc new file mode 100644 index 000000000..c723e9b04 --- /dev/null +++ b/config/uClibc/extra/Configs/Config.sparc @@ -0,0 +1,613 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_SPARC + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_SPARC + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_SPARC + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_SPARC + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_SPARC + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_SPARC + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/config/uClibc/extra/Configs/Config.v850 b/config/uClibc/extra/Configs/Config.v850 new file mode 100644 index 000000000..30a515246 --- /dev/null +++ b/config/uClibc/extra/Configs/Config.v850 @@ -0,0 +1,633 @@ +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +# mainmenu "uClibc C Library Configuration" + +menu "Target Architecture Features and Options" + depends on UCLIBC && ARCH_V850 + +config UCLIBC_ARCH_CFLAGS + string + +config UCLIBC_ARCH_LDFLAGS + string + +config UCLIBC_LIBGCC_CFLAGS + string + +config UCLIBC_HAVE_ELF + bool + default y + +config UCLIBC_ARCH_HAS_NO_MMU + bool + default y + +config UCLIBC_ARCH_HAS_NO_FPU + bool + default y + +config UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + bool + default y + +config UCLIBC_HAVE_NO_PIC + bool + default y + +config UCLIBC_CROSS + string + default "v850e-elf-" + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# + +config UCLIBC_UCLIBC_HAS_MMU + bool "Target CPU has a memory management unit (MMU)" + default y + depends !ARCH_HAS_NO_MMU + help + If your target CPU does not have a memory management unit (MMU), + then answer N here. Normally, Linux runs on systems with an MMU. + If you are building a uClinux system, answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_FLOATS + bool "Enable floating point number support" + default y + help + This option allows you to entirely omit all floating point number + support from uClibc. This will cause floating point functions like + strtod() to be omitted from uClibc. Other floating point functions, + such as printf() and scanf() will still be included in the library, + but will not contain support for floating point numbers. + + Answering N to this option can reduce the size of uClibc. Most people + will answer Y. + +config UCLIBC_HAS_FPU + bool "Target CPU has a floating point unit (FPU)" + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_ARCH_HAS_NO_FPU + default y + help + If your target CPU does not have a Floating Point Unit (FPU) or a + kernel FPU emulator, but you still wish to support floating point + functions, then uClibc will need to be compiled with soft floating + point support (-msoft-float). If your target CPU does not have an + FPU or an FPU emulator within the Linux kernel, then you should + answer N. + + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_SOFT_FLOAT + bool + depends on UCLIBC_UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU + default y + +config UCLIBC_DO_C99_MATH + bool "Enable full C99 math library support" + depends on UCLIBC_UCLIBC_HAS_FLOATS + default n + help + If you want the uClibc math library to contain the full set C99 + math library features, then answer Y. If you leave this set to + N the math library will contain only the math functions that were + listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard. + Leaving this option set to N will save around 35k on an x86 system. + + If your applications require the newer C99 math library functions, + then answer Y. + +config UCLIBC_WARNINGS + string "Compiler Warnings" + default "-Wall" + help + Set this to the set of gcc warnings you wish to see while compiling. + +config UCLIBC_KERNEL_SOURCE + string "Linux kernel header location" + default "/usr/src/linux" + help + The kernel source you use to compile with should be the same as the + Linux kernel you run your apps on. uClibc doesn't even try to achieve binary + compatibility across kernel versions. So don't expect, for example, uClibc + compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x + can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers, + but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't + work at all. You have been warned. + +config UCLIBC_UCLIBC_UCLINUX_BROKEN_MUNMAP + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_EXCLUDE_BRK + bool + depends on !UCLIBC_UCLIBC_HAS_MMU + default y + +config UCLIBC_C_SYMBOL_PREFIX + string + default "_" if UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + default "" if !UCLIBC_ARCH_HAS_C_SYMBOL_PREFIX + + +endmenu + +# +# For a description of the syntax of this configuration file, +# see extra/config/Kconfig-language.txt +# +config UCLIBC_HAVE_DOT_CONFIG + bool + default y + + +menu "General Library Settings" + depends on UCLIBC && ARCH_V850 + +config UCLIBC_DOPIC + bool "Generate Position Independent Code (PIC)" + default y + depends !HAVE_NO_PIC + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_HAVE_SHARED + bool "Enable support for shared libraries" + depends on UCLIBC_DOPIC + default y + help + If you wish to build uClibc with support for shared libraries then + answer Y here. If you only want to build uClibc as a static library, + then answer N. + +config UCLIBC_ADD_LIBGCC_FUNCTIONS + bool "Add unresolved libgcc symbols to uClibc" + depends on UCLIBC_HAVE_SHARED + default n + help + If you answer Y here, all unresolved functions provided by the libgcc + library that are used by uClibc will be added directly into the + uClibc library. If your gcc compiler only provides a static libgcc + library, then enabling this option can reduce the size of your + binaries by preventing these functions from being staticly linked + into every binary. If you have compiled uClibc as PIC code, one + potential size effect of this option is that you may end up adding + non-PIC libgcc code into your shared uClibc library, resulting in a + non shareable text segment (thereby wasting a bunch of ram). If your + compiler supports a shared libgcc library, you should certainly leave + this option disabled. Regardless, the safest answer is N. + +config UCLIBC_BUILD_UCLIBC_LDSO + bool "Compile native shared library loader" + depends on UCLIBC_HAVE_SHARED + default y + help + uClibc has a native shared library loader for some architectures. + If you answer Y here, the uClibc native shared library loader will + be built for your target architecture. If this option is available, + to you, then you almost certainly want to answer Y. + +config UCLIBC_FORCE_SHAREABLE_TEXT_SEGMENTS + bool "Only load shared libraries which can share their text segment" + depends on UCLIBC_BUILD_UCLIBC_LDSO && UCLIBC_UCLIBC_COMPLETELY_PIC && !UCLIBC_ADD_LIBGCC_SYMBOLS + default n + help + If you answer Y here, the uClibc native shared library loader will + only load shared libraries, which do not need to modify any non-writable + segments. These libraries haven't set the DT_TEXTREL tag in the dynamic + section (==> objdump). So all your libraries must be compiled with + -fPIC or -fpic, and all assembler function must be written as position + independent code (PIC). + Enabling this option will makes uClibc's shared library loader a + little bit smaller and guarantee that no memory will be wasted by badly + coded shared libraries. + +config UCLIBC_LDSO_LDD_SUPPORT + bool "Native shared library loader 'ldd' support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default y + help + Enable this to enable all the code needed to support traditional ldd, + which executes the shared library loader to resolve all dependencies + and then provide a list of shared libraries that are required for an + application to function. Disabling this option will makes uClibc's + shared library loader a little bit smaller. Most people will answer Y. + +config UCLIBC_UCLIBC_CTOR_DTOR + bool "Support global constructors and destructors" + default y + help + If you wish to build uClibc with support for global constructor + (ctor) and global destructor (dtor) support, then answer Y here. + When ctor/dtor support is enabled, binaries linked with uClibc must + also be linked with crtbegin.o and crtend.o which are provided by gcc + (the "*startfile:" and "*endfile:" settings in your gcc specs file + may need to be adjusted to include these files). This support will + also add a small amount of additional size to each binary compiled vs + uClibc. If you will be using uClibc with C++, or if you need the gcc + __attribute__((constructor)) and __attribute__((destructor)) to work, + then you definitely want to answer Y here. If you don't need ctors + or dtors and want your binaries to be as small as possible, then + answer N. + +config UCLIBC_UCLIBC_PROFILING + bool "Support gprof profiling" + default y + help + If you wish to build uClibc with support for application profiling + using the gprof tool, then you should enable this feature. Then in + addition to building uClibc with profiling support, you will also + need to recompile all your shared libraries with the profiling + enabled version of uClibc. To add profiling support to your + applications, you must compile things using the gcc options + "-fprofile-arcs -pg". Then when you run your applications, a + gmon.out file will be generated which can then be analyzed by + 'gprof'. + + These exist a number of less invasive alternatives that do not + require your to specially instrument your application, and recompile + and relink everything. + + Many people have had good results using the combination of Valgrind + to generate profiling information and KCachegrind for analysis: + http://developer.kde.org/~sewardj/ + http://kcachegrind.sourceforge.net/ + + The OProfile system-wide profiler is another alternative: + http://oprofile.sourceforge.net/ + + Prospect is another alternative based on OProfile: + http://prospect.sourceforge.net/ + + And the Linux Trace Toolkit (LTT) is also a fine tool: + http://www.opersys.com/LTT/ + + If none of these tools do what you need, you can of course enable + this option, rebuild everything, and use 'gprof'. There is both a + size and performance penelty to profiling your applications this way, + so most people should answer N. + +config UCLIBC_UCLIBC_HAS_THREADS + bool "POSIX Threading Support" + default y + help + If you want to compile uClibc with pthread support, then answer Y. + This will increase the size of uClibc by adding a bunch of locking + to critical data structures, and adding extra code to ensure that + functions are properly reentrant. + + If your applications require pthreads, answer Y. + +config UCLIBC_PTHREADS_DEBUG_SUPPORT + bool "Build pthreads debugging support" + default n + depends on UCLIBC_UCLIBC_HAS_THREADS + help + Say Y here if you wish to be able to debug applications that use + uClibc's pthreads library. By enabling this option, a library + named libthread_db will be built. This library will be dlopen()'d + by gdb and will allow gdb to debug the threads in your application. + + IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, + you must compile gdb with uClibc in order for pthread debugging to + work properly. + + If you are doing development and want to debug applications using + uClibc's pthread library, answer Y. Otherwise, answer N. + +config UCLIBC_UCLIBC_HAS_LFS + bool "Large File Support" + default y + help + If you wish to build uClibc with support for accessing large files + (i.e. files greater then 2 GiB) then answer Y. Do not enable this + if you are using an older UCLIBC_Linux kernel (UCLIBC_2.UCLIBC_0.x) that lacks large file + support. Enabling this option will increase the size of uClibc. + +choice + prompt "Malloc Implementation" + default "malloc-930716" + help + "malloc" use mmap for all allocations and so works very well on MMU-less + systems that do not support the brk() system call. It is pretty smart + about reusing already allocated memory, and minimizing memory wastage. + + "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call + for all memory allocations. This makes it very fast. It is also pretty + smart about reusing already allocated memory, and minimizing memory wastage. + Because this uses brk() it will not work on uClinux MMU-less systems. + + If unsure, answer "malloc". + +config UCLIBC_MALLOC + bool "malloc" + +config UCLIBC_MALLOC_930716 + bool "malloc-930716" + depends on UCLIBC_UCLIBC_HAS_MMU + +endchoice + +config UCLIBC_UCLIBC_DYNAMIC_ATEXIT + bool "Dynamic atexit() Support" + default y + help + + When this option is enabled, uClibc will support an infinite number, + of atexit() and on_exit() functions, limited only by your available + memory. This can be important when uClibc is used with C++, since + global destructors are implemented via atexit(), and it is quite + possible to exceed the default number when this option is disabled. + Enabling this option adds a few bytes, and more significantly makes + atexit and on_exit depend on malloc, which can be bad when compiling + static executables. + + Unless you use uClibc with C++, you should probably answer N. + + +config UCLIBC_HAS_SHADOW + bool "Shadow Password Support" + default y + help + Answer N if you do not need shadow password support. + Most people will answer Y. + +config UCLIBC_UCLIBC_HAS_REGEX + bool "Regular Expression Support" + default y + help + POSIX regular expression code is really big -- 27k all by itself. + If you don't use regular expressions, turn this off and save space. + Of course, if you only staticly link, leave this on, since it will + only be included in your apps if you use regular expressions. + +config UCLIBC_UNIX98PTY_ONLY + bool "Support only Unix 98 PTYs" + default y + help + If you want to support only Unix 98 PTYs enable this. Some older + applications may need this disabled. For most current programs, + you can generally answer Y. + +config UCLIBC_ASSUME_DEVPTS + bool "Assume that /dev/pts is a devpts or devfs file system" + default y + help + Enable this if /dev/pts is on a devpts or devfs filesystem. Both + these filesystems automatically manage permissions on the /dev/pts + devices. You may need to mount your devpts or devfs filesystem on + /dev/pts for this to work. + + Most people should answer Y. + +config UCLIBC_UCLIBC_HAS_TM_EXTENSIONS + bool "Support 'struct tm' timezone extension fields" + default y + help + Enabling this option adds fields to 'struct tm' in time.h for + tracking the number of seconds east of UTC, and an abbreviation for + the current timezone. These fields are not specified by the SuSv3 + standard, but they are commonly used in both GNU and BSD application + code. + + To strictly follow the SuSv3 standard, leave this disabled. + Most people will probably want to answer Y. + +endmenu + + + +menu "Networking Support" + depends on UCLIBC && ARCH_V850 + +config UCLIBC_UCLIBC_HAS_IPV6 + bool "IP version 6 Support" + default n + help + If you want to include support for the next version of the Internet + Protocol (IP version 6) then answer Y. + + Most people should answer N. + +config UCLIBC_UCLIBC_HAS_RPC + bool "Remote Procedure Call (RPC) support" + default n + help + If you want to include RPC support, enable this. RPC is rarely used + for anything except for the NFS filesystem. Unless you plan to use NFS, + you can probably leave this set to N and save some space. If you need + to use NFS then you should answer Y. + +config UCLIBC_UCLIBC_HAS_FULL_RPC + bool "Full RPC support" + depends on UCLIBC_UCLIBC_HAS_RPC + default y if !UCLIBC_HAVE_SHARED + help + Normally we enable just enough RPC support for things like rshd and + nfs mounts to work. If you find you need the rest of the RPC stuff, + then enable this option. Most people can safely answer N. + +endmenu + + +menu "String and Stdio Support" + depends on UCLIBC && ARCH_V850 + +config UCLIBC_UCLIBC_HAS_WCHAR + bool "Wide Character Support" + default n + help + Answer Y to enable wide character support. This will make uClibc + much larger. + + Most people will answer N. + +config UCLIBC_UCLIBC_HAS_LOCALE + bool "Locale Support (experimental/incomplete)" + depends on UCLIBC_UCLIBC_HAS_WCHAR + default n + help + Answer Y to enable locale support. This will make uClibc much + bigger. uClibc's locale support is still under development, and + should be finished in the next several weeks (November 2002). + + Most people will wisely answer N. + +config UCLIBC_USE_OLD_VFPRINTF + bool "Use the old vfprintf implementation" + default n + help + Set to true to use the old vfprintf instead of the new. This is roughly + C89 compliant, but doesn't deal with qualifiers on %n and doesn't deal with + %h correctly or %hh at all on the integer conversions. But on i386 it is + over 1.5k smaller than the new code. Of course, the new code fixes the + above mentioned deficiencies and adds custom specifier support similar to + glibc, as well as handling positional args. This will be rewritten at some + point to bring it to full C89 standards compliance. + + Most people will answer N. + +endmenu + +menu "Library Installation Options" + depends on UCLIBC && ARCH_V850 + +config UCLIBC_SHARED_LIB_LOADER_PATH + string "Shared library loader path" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default "$(DEVEL_PREFIX)/lib" + help + When using shared libraries, this path is the location where the + shared library will be invoked. This value will be compiled into + every binary compiled with uClibc. + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_SYSTEM_LDSO + string "System shared library loader" + depends on UCLIBC_HAVE_SHARED && !UCLIBC_BUILD_UCLIBC_LDSO + default "/lib/ld-linux.so.2" + help + If you are using shared libraries, but do not want/have a native + uClibc shared library loader, please specify the name of your + target system's shared library loader here... + + BIG FAT WARNING: + If you do not have a shared library loader with the correct name + sitting in the directory this points to, your binaries will not + run. + +config UCLIBC_DEVEL_PREFIX + string "uClibc development environment directory" + default "/usr/$(TARGET_ARCH)-linux-uclibc" + help + DEVEL_PREFIX is the directory into which the uClibc development + environment will be installed. The result will look something + like the following: + $(DEVEL_PREFIX)/ + lib/ <contains all runtime and static libs> + include/ <Where all the header files go> + This value is used by the 'make install' Makefile target. Since this + directory is compiled into the uclibc cross compiler spoofer, you + have to recompile uClibc if you change this value... + +config UCLIBC_SYSTEM_DEVEL_PREFIX + string "uClibc development environment system directory" + default "$(DEVEL_PREFIX)" + help + SYSTEM_DEVEL_PREFIX is the directory prefix used when installing + bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc. This is only used by + the 'make install' target, and is not compiled into anything. This + defaults to $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs will + want to set this to "/usr" instead. + +config UCLIBC_DEVEL_TOOL_PREFIX + string "uClibc development environment tool directory" + default "$(DEVEL_PREFIX)/usr" + help + DEVEL_TOOL_PREFIX is the directory prefix used when installing + bin/gcc, bin/ld, etc. This is only used by the 'make install' + target, and is not compiled into anything. This defaults to + $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to + set this to something else. + +endmenu + +menu "uClibc hacking options" + depends on UCLIBC && ARCH_V850 + +config UCLIBC_DODEBUG + bool "Build uClibc with debugging symbols" + default n + help + Say Y here if you wish to compile uClibc with debugging symbols. + This will allow you to use a debugger to examine uClibc internals + while applications are running. This increases the size of the + library considerably and should only be used when doing development. + If you are doing development and want to debug uClibc, answer Y. + + Otherwise, answer N. + +config UCLIBC_DOASSERTS + bool "Build uClibc with run-time assertion testing" + default n + help + Say Y here to include runtime assertion tests. + This enables runtime assertion testing in some code, which can + increase the size of the library and incur runtime overhead. + If you say N, then this testing will be disabled. + +config UCLIBC_SUPPORT_LD_DEBUG + bool "Build the shared library loader with debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to enable all the extra code needed to debug the uClibc + native shared library loader. The level of debugging noise that is + generated depends on the LD_DEBUG environment variable... Just set + LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to + debug your application. Diagnostic messages will then be printed to + the stderr. + + For now these debugging tokens are available: + detail provide more information for some options + move display copy processing + symbols display symbol table processing + reloc display relocation processing; detail shows the relocation patch + nofixups never fixes up jump relocations + bindings displays the resolve processing (function calls); detail shows the relocation patch + all Enable everything! + + The additional environment variable: + LD_DEBUG_OUTPUT=file + redirects the diagnostics to an output file created using + the specified name and the process id as a suffix. + + An excellent start is simply: + $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname + or to log everything to a file named 'logfile', try this + $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname + + If you are doing development and want to debug uClibc's shared library + loader, answer Y. Mere mortals answer N. + +config UCLIBC_SUPPORT_LD_DEBUG_EARLY + bool "Build the shared library loader with early debugging support" + depends on UCLIBC_BUILD_UCLIBC_LDSO + default n + help + Answer Y here to if you find the uClibc shared library loader is + crashing or otherwise not working very early on. This is typical + only when starting a new port when you haven't figured out how to + properly get the values for argc, argv, environ, etc. This method + allows a degree of visibility into the very early shared library + loader initialization process. If you are doing development and want + to debug the uClibc shared library loader early initialization, + answer Y. Mere mortals answer N. + +config UCLIBC_UCLIBC_MALLOC_DEBUGGING + bool "Build malloc with debugging support" + depends MALLOC + default n + help + Answer Y here to compile extra debugging support code into malloc. + Malloc debugging output may then be enabled at runtime using + the MALLOC_DEBUG environment variable. Because this increases + the size of malloc appreciably (due to strings etc), you + should say N unless you need to debug a malloc problem. + +endmenu + + diff --git a/rules/Rules.make b/rules/Rules.make index a0b17153f..78b57a71d 100644 --- a/rules/Rules.make +++ b/rules/Rules.make @@ -1,27 +1,144 @@ # -*-makefile-*- -PASSIVEFTP = --passive-ftp -SUDO ?= sudo -PTXUSER = $(shell echo $$USER) -GNU_HOST = $(shell uname -m)-linux -HOSTCC = gcc -CROSSSTRIP = $(PTXCONF_PREFIX)/bin/$(PTXCONF_GNU_TARGET)-strip -DOT = dot -DEP_OUTPUT = depend.out -DEP_TREE_PS = deptree.ps +PASSIVEFTP = --passive-ftp +SUDO = sudo +PTXUSER = $(shell echo $$USER) +GNU_HOST = $(shell $(TOPDIR)/scripts/config.guess) +HOSTCC = gcc +HOSTCC_ENV = CC=$(HOSTCC) +CROSSSTRIP = $(PTXCONF_PREFIX)/bin/$(PTXCONF_GNU_TARGET)-strip +CROSS_STRIP = $(CROSSSTRIP) +DOT = dot +DEP_OUTPUT = depend.out +DEP_TREE_PS = deptree.ps # # some convenience functions # +# # print out header information +# targetinfo=echo ; \ -echo `echo target: $(1) |sed -e "s/./-/g"` ; \ -echo target: $(1) ; \ -echo `echo target: $(1) |sed -e "s/./-/g"` ; \ -echo ; \ +TG=`echo $(1) | sed -e "s,/.*/,,g"` ; \ +LINE=`echo target: $$TG |sed -e "s/./-/g"` ; \ +echo $$LINE ; \ +echo target: $$TG ; \ +echo $$LINE ; \ +echo ; \ echo $@ : $^ | sed -e "s@$(TOPDIR)@@g" -e "s@/src/@@g" -e "s@/state/@@g" >> $(DEP_OUTPUT) -# find out latest configuration + +# +# extract the given source to sourcedir +# +extract = \ + DEST="$(2)"; \ + DEST=$${DEST:-$(BUILDDIR)}; \ + case "$(1)" in \ + *gz) \ + EXTRACT=gzip \ + ;; \ + *bz2) \ + EXTRACT=bzip2 \ + ;; \ + *) \ + false \ + ;; \ + esac; \ + [ -d $$DEST ] || mkdir -p $$DEST; \ + $$EXTRACT -dc $(1) | $(TAR) -C $$DEST -xf - + +# +# download the given URL +# +get = \ + SRC="$(2)"; \ + SRC=$${SRC:-$(SRCDIR)}; \ + [ -d $$SRC ] || mkdir -p $$SRC; \ + wget -P $$SRC $(PASSIVEFTP) $(1) + +# +# cleanup the given directory +# +clean = \ + [ -d $(1) ] && rm -rf $(1) || true + +# +# find latest config +# latestconfig=`find $(TOPDIR)/config -name $(1)* -print | sort | tail -1` + +# +# crossenvironment - glibc or uClibc depending on selected option +# +CROSS_ENV_AR = AR=$(PTXCONF_GNU_TARGET)-ar +CROSS_ENV_AS = AS=$(PTXCONF_GNU_TARGET)-as +CROSS_ENV_LD = LD=$(PTXCONF_GNU_TARGET)-gcc +CROSS_ENV_NM = NM=$(PTXCONF_GNU_TARGET)-nm +CROSS_ENV_CC = CC=$(PTXCONF_GNU_TARGET)-gcc +CROSS_ENV_CXX = CXX=$(PTXCONF_GNU_TARGET)-c++ +CROSS_ENV_OBJCOPY = OBJCOPY=$(PTXCONF_GNU_TARGET)-objcopy +CROSS_ENV_OBJDUMP = OBJDUMP=$(PTXCONF_GNU_TARGET)-objdump +CROSS_ENV_RANLIB = RANLIB=$(PTXCONF_GNU_TARGET)-ranlib +CROSS_ENV_STRIP = STRIP=$(PTXCONF_GNU_TARGET)-strip + +CROSS_ENV = $(CROSS_ENV_AR) +CROSS_ENV += $(CORSS_ENV_AS) +CROSS_ENV += $(CROSS_ENV_CXX) +CROSS_ENV += $(CROSS_ENV_CC) +CROSS_ENV += $(CROSS_ENV_LD) +CROSS_ENV += $(CROSS_ENV_NM) +CROSS_ENV += $(CROSS_ENV_OBJCOPY) +CROSS_ENV += $(CROSS_ENV_OBJDUMP) +CROSS_ENV += $(CROSS_ENV_RANLIB) +CROSS_ENV += $(CROSS_ENV_STRIP) + +# +# CORSS_LIB_DIR = into this dir, the libs for the target system, are installed +# +CROSS_LIB_DIR = $(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET) + +# +# distcc, perhaps we will use this feature in far future :) +# for more info see: +# http://distcc.samba.org +# +DISTCC_ENV = CC='distcc $(PTXCONF_GNU_TARGET)-gcc' +DISTCC_MAKE = CC='distcc $(PTXCONF_GNU_TARGET)-gcc' -j16 + + +# +# prepare the search path +# +CROSS_PATH = $(PTXCONF_PREFIX)/bin:$$PATH + + +# +# same as PTXCONF_GNU_TARGET, but w/o -linux +# e.g. i486 instead of i486-linux +# +SHORT_TARGET = `echo $(PTXCONF_GNU_TARGET) | perl -i -p -e 's/(.*?)-.*/$$1/'` + +# +# change this if you have some wired configuration :) +# +SH = /bin/sh +WGET = wget +MAKE = make +PATCH = patch +TAR = tar +GZIP = gzip +BZIP2 = bzip2 +CAT = cat +RM = rm +MKDIR = mkdir +CD = cd +MV = mv +CP = cp +LN = ln +PERL = perl +GREP = grep +INSTALL = install + # vim: syntax=make diff --git a/rules/Virtual.make b/rules/Virtual.make new file mode 100644 index 000000000..ac698d197 --- /dev/null +++ b/rules/Virtual.make @@ -0,0 +1,26 @@ +# -*-makefile-*- +# $Id: Virtual.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +ifdef PTXCONF_GLIBC +DYNAMIC_LINKER = /lib/ld.so.1 +endif +ifdef PTXCONF_UCLIBC +DYNAMIC_LINKER = /lib/ld-uClibc.so.0 +endif + +virtual-xchain_install: $(STATEDIR)/virtual-xchain.install + +ifdef PTXCONF_BUILD_CROSSCHAIN +virtual-xchain_install_deps = $(STATEDIR)/xchain-gccstage2.install +endif + +$(STATEDIR)/virtual-xchain.install: $(virtual-xchain_install_deps) + @$(call targetinfo, virtual-xchain.install) + touch $@
\ No newline at end of file diff --git a/rules/autoconf-2.13.make b/rules/autoconf-2.13.make index f798d7b13..3a9ef95de 100644 --- a/rules/autoconf-2.13.make +++ b/rules/autoconf-2.13.make @@ -1,4 +1,5 @@ -# $Id: autoconf-2.13.make,v 1.2 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: autoconf-2.13.make,v 1.3 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -10,7 +11,7 @@ # # We provide this package # -PACKAGES += autoconf213 +#PACKAGES += autoconf213 # # Paths and names @@ -19,7 +20,6 @@ AUTOCONF213 = autoconf-2.13 AUTOCONF213_URL = ftp://ftp.gnu.org/pub/gnu/autoconf/$(AUTOCONF213).tar.gz AUTOCONF213_SOURCE = $(SRCDIR)/$(AUTOCONF213).tar.gz AUTOCONF213_DIR = $(BUILDDIR)/$(AUTOCONF213) -AUTOCONF213_EXTRACT = gzip -dc # ---------------------------------------------------------------------------- # Get @@ -32,7 +32,8 @@ $(STATEDIR)/autoconf213.get: $(AUTOCONF213_SOURCE) touch $@ $(AUTOCONF213_SOURCE): - wget -P $(SRCDIR) $(PASSIVEFTP) $(AUTOCONF213_URL) + @$(call targetinfo, $(AUTOCONF213_SOURCE)) + @$(call get, $(AUTOCONF213_URL)) # ---------------------------------------------------------------------------- # Extract @@ -42,7 +43,8 @@ autoconf213_extract: $(STATEDIR)/autoconf213.extract $(STATEDIR)/autoconf213.extract: $(STATEDIR)/autoconf213.get @$(call targetinfo, autoconf213.extract) - $(AUTOCONF213_EXTRACT) $(AUTOCONF213_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(AUTOCONF213_DIR)) + @$(call extract, $(AUTOCONF213_SOURCE)) touch $@ # ---------------------------------------------------------------------------- @@ -51,10 +53,13 @@ $(STATEDIR)/autoconf213.extract: $(STATEDIR)/autoconf213.get autoconf213_prepare: $(STATEDIR)/autoconf213.prepare +AUTOCONF213_ENV = $(HOSTCC_ENV) + $(STATEDIR)/autoconf213.prepare: $(STATEDIR)/autoconf213.extract @$(call targetinfo, autoconf213.prepare) - cd $(AUTOCONF213_DIR) && \ - CFLAGS=$(CFLAGS) ./configure --prefix=$(PTXCONF_PREFIX)/$(AUTOCONF213) + cd $(AUTOCONF213_DIR) && \ + $(AUTOCONF213_ENV) \ + ./configure --prefix=$(PTXCONF_PREFIX)/$(AUTOCONF213) touch $@ # ---------------------------------------------------------------------------- @@ -65,7 +70,7 @@ autoconf213_compile: $(STATEDIR)/autoconf213.compile $(STATEDIR)/autoconf213.compile: $(STATEDIR)/autoconf213.prepare @$(call targetinfo, autoconf213.compile) - make -C $(AUTOCONF213_DIR) $(MAKEPARMS) + make -C $(AUTOCONF213_DIR) touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/autoconf-2.57.make b/rules/autoconf-2.57.make index 4edb64f64..0b9244b25 100644 --- a/rules/autoconf-2.57.make +++ b/rules/autoconf-2.57.make @@ -1,4 +1,5 @@ -# $Id: autoconf-2.57.make,v 1.2 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: autoconf-2.57.make,v 1.3 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -10,7 +11,7 @@ # # We provide this package # -PACKAGES += autoconf257 +#PACKAGES += autoconf257 # # Paths and names @@ -19,7 +20,6 @@ AUTOCONF257 = autoconf-2.57 AUTOCONF257_URL = ftp://ftp.gnu.org/pub/gnu/autoconf/$(AUTOCONF257).tar.gz AUTOCONF257_SOURCE = $(SRCDIR)/$(AUTOCONF257).tar.gz AUTOCONF257_DIR = $(BUILDDIR)/$(AUTOCONF257) -AUTOCONF257_EXTRACT = gzip -dc # ---------------------------------------------------------------------------- # Get @@ -28,11 +28,12 @@ AUTOCONF257_EXTRACT = gzip -dc autoconf257_get: $(STATEDIR)/autoconf257.get $(STATEDIR)/autoconf257.get: $(AUTOCONF257_SOURCE) + @$(call targetinfo, autoconf257.get) touch $@ $(AUTOCONF257_SOURCE): - @$(call targetinfo, autoconf257.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(AUTOCONF257_URL) + @$(call targetinfo, $(AUTOCONF257_SOURCE)) + @$(call get, $(AUTOCONF257_URL)) # ---------------------------------------------------------------------------- # Extract @@ -42,7 +43,8 @@ autoconf257_extract: $(STATEDIR)/autoconf257.extract $(STATEDIR)/autoconf257.extract: $(STATEDIR)/autoconf257.get @$(call targetinfo, autoconf257.extract) - $(AUTOCONF257_EXTRACT) $(AUTOCONF257_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(AUTOCONF257_DIR)) + @$(call extract, $(AUTOCONF257_SOURCE)) touch $@ # ---------------------------------------------------------------------------- @@ -51,10 +53,13 @@ $(STATEDIR)/autoconf257.extract: $(STATEDIR)/autoconf257.get autoconf257_prepare: $(STATEDIR)/autoconf257.prepare +AUTOCONF257_ENV = $(HOSTCC_ENV) + $(STATEDIR)/autoconf257.prepare: $(STATEDIR)/autoconf257.extract @$(call targetinfo, autoconf257.prepare) - cd $(AUTOCONF257_DIR) && \ - CFLAGS=$(CFLAGS) ./configure --prefix=$(PTXCONF_PREFIX)/$(AUTOCONF257) + cd $(AUTOCONF257_DIR) && \ + $(AUTOCONF257_ENV) \ + ./configure --prefix=$(PTXCONF_PREFIX)/$(AUTOCONF257) touch $@ # ---------------------------------------------------------------------------- @@ -65,7 +70,7 @@ autoconf257_compile: $(STATEDIR)/autoconf257.compile $(STATEDIR)/autoconf257.compile: $(STATEDIR)/autoconf257.prepare @$(call targetinfo, autoconf257.compile) - make -C $(AUTOCONF257_DIR) $(MAKEPARMS) + make -C $(AUTOCONF257_DIR) touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/bash.make b/rules/bash.make index 88d195741..3cb5c88f0 100644 --- a/rules/bash.make +++ b/rules/bash.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: bash.make,v 1.4 2003/07/09 14:49:52 bsp Exp $ +# $Id: bash.make,v 1.5 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -22,7 +22,6 @@ BASH = bash-2.05b BASH_URL = ftp://ftp.gnu.org/pub/gnu/bash/$(BASH).tar.gz BASH_SOURCE = $(SRCDIR)/$(BASH).tar.gz BASH_DIR = $(BUILDDIR)/$(BASH) -BASH_EXTRACT = gzip -dc # ---------------------------------------------------------------------------- # Get @@ -31,11 +30,12 @@ BASH_EXTRACT = gzip -dc bash_get: $(STATEDIR)/bash.get $(STATEDIR)/bash.get: $(BASH_SOURCE) + @$(call targetinfo, bash.get) touch $@ $(BASH_SOURCE): - @$(call targetinfo, bash.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(BASH_URL) + @$(call targetinfo, $(BASH_SOURCE)) + @$(call get, $(BASH_URL)) # ---------------------------------------------------------------------------- # Extract @@ -45,7 +45,8 @@ bash_extract: $(STATEDIR)/bash.extract $(STATEDIR)/bash.extract: $(STATEDIR)/bash.get @$(call targetinfo, bash.extract) - $(BASH_EXTRACT) $(BASH_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean $(BASH_DIR)) + @$(call extract, $(BASH_SOURCE)) touch $@ # ---------------------------------------------------------------------------- @@ -58,12 +59,10 @@ BASH_AUTOCONF = --build=$(GNU_HOST) BASH_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) BASH_AUTOCONF += --target=$(PTXCONF_GNU_TARGET) BASH_AUTOCONF += --disable-sanity-checks -BASH_AUTOCONF += --prefix=$(PTXCONF_PREFIX) -BASH_ENVIRONMENT= PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(PTXCONF_PREFIX)/bin:$$PATH -BASH_ENVIRONMENT+= ac_cv_func_setvbuf_reversed=no bash_cv_have_mbstate_t=yes -BASH_MAKEVARS = AR=$(PTXCONF_GNU_TARGET)-ar -BASH_MAKEVARS += RANLIB=$(PTXCONF_GNU_TARGET)-ranlib -BASH_MAKEVARS += CC=$(PTXCONF_GNU_TARGET)-gcc +BASH_AUTOCONF += --prefix=/usr --bindir=/bin +BASH_PATH = PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(CROSS_PATH) +BASH_ENV = ac_cv_func_setvbuf_reversed=no bash_cv_have_mbstate_t=yes +BASH_ENV += $(CROSS_ENV) # FIXME: "disable" does not compile with bash-2.05b (at least not on ARM) BASH_AUTOCONF += --enable-dparen-arithmetic @@ -190,18 +189,15 @@ endif # # dependencies # -bash_prepare_deps = $(STATEDIR)/bash.extract -ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) -bash_prepare_deps += $(STATEDIR)/xchain-gccstage2.install -endif - +bash_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/bash.extract $(STATEDIR)/bash.prepare: $(bash_prepare_deps) @$(call targetinfo, bash.prepare) - mkdir -p $(BUILDDIR)/$(BASH) - cd $(BUILDDIR)/$(BASH) && \ - $(BASH_ENVIRONMENT) \ - $(BASH_DIR)/configure $(BASH_AUTOCONF) + cd $(BASH_DIR) && \ + $(BASH_PATH) $(BASH_ENV) \ + ./configure $(BASH_AUTOCONF) touch $@ # ---------------------------------------------------------------------------- @@ -212,7 +208,7 @@ bash_compile: $(STATEDIR)/bash.compile $(STATEDIR)/bash.compile: $(STATEDIR)/bash.prepare @$(call targetinfo, bash.compile) - PATH=$(PTXCONF_PREFIX)/bin:$$PATH make -C $(BASH_DIR) $(MAKEPARMS) + $(BASH_PATH) make -C $(BASH_DIR) touch $@ # ---------------------------------------------------------------------------- @@ -231,9 +227,12 @@ $(STATEDIR)/bash.install: $(STATEDIR)/bash.compile bash_targetinstall: $(STATEDIR)/bash.targetinstall -$(STATEDIR)/bash.targetinstall: $(STATEDIR)/bash.install +$(STATEDIR)/bash.targetinstall: $(STATEDIR)/bash.compile @$(call targetinfo, bash.targetinstall) - cd $(BASH_DIR) && install -m 0755 -s bash $(ROOTDIR)/bin/bash + mkdir -p $(ROOTDIR)/bin + install $(BASH_DIR)/bash $(ROOTDIR)/bin/bash + ln -sf bash $(ROOTDIR)/bin/sh + $(CROSS_STRIP) -R .note -R .comment $(ROOTDIR)/bin/bash touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/busybox.make b/rules/busybox.make index 4567a158e..a1b73027f 100644 --- a/rules/busybox.make +++ b/rules/busybox.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: busybox.make,v 1.3 2003/06/16 12:05:16 bsp Exp $ +# $Id: busybox.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -11,7 +11,7 @@ # # We provide this package # -ifeq (y,$(PTXCONF_BUSYBOX)) +ifdef PTXCONF_BUSYBOX PACKAGES += busybox endif @@ -22,7 +22,6 @@ BUSYBOX = busybox-0.61.pre-ptx9 BUSYBOX_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(BUSYBOX).tar.gz BUSYBOX_SOURCE = $(SRCDIR)/$(BUSYBOX).tar.gz BUSYBOX_DIR = $(BUILDDIR)/$(BUSYBOX) -BUSYBOX_EXTRACT = gzip -dc # ---------------------------------------------------------------------------- # Get @@ -33,12 +32,12 @@ busybox_get: $(STATEDIR)/busybox.get busybox_get_deps = $(BUSYBOX_SOURCE) $(STATEDIR)/busybox.get: $(busybox_get_deps) + @$(call targetinfo, busybox.get) touch $@ $(BUSYBOX_SOURCE): - @$(call targetinfo, busybox.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(BUSYBOX_URL) - @exit + @$(call targetinfo, $(BUSYBOX_SOURCE)) + @$(call get, $(BUSYBOX_URL)) # ---------------------------------------------------------------------------- # Extract @@ -48,7 +47,8 @@ busybox_extract: $(STATEDIR)/busybox.extract $(STATEDIR)/busybox.extract: $(STATEDIR)/busybox.get @$(call targetinfo, busybox.extract) - $(BUSYBOX_EXTRACT) $(BUSYBOX_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(BUSYBOX_DIR)) + @$(call extract, $(BUSYBOX_SOURCE)) # # # # fix: turn off debugging in init.c # # @@ -62,47 +62,36 @@ $(STATEDIR)/busybox.extract: $(STATEDIR)/busybox.get busybox_prepare: $(STATEDIR)/busybox.prepare -BUSYBOX_ENVIRONMENT = -BUSYBOX_MAKEVARS = -BUSYBOX_ENVIRONMENT += PATH=$(PTXCONF_PREFIX)/bin:$$PATH -BUSYBOX_MAKEVARS += CROSS=$(PTXCONF_GNU_TARGET)- +BUSYBOX_PATH = PATH=$(CROSS_PATH) +BUSYBOX_MAKEVARS = CROSS=$(PTXCONF_GNU_TARGET)- HOSTCC=$(HOSTCC) # # dependencies # -busybox_prepare_deps = $(STATEDIR)/busybox.extract -ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) -busybox_prepare_deps += $(STATEDIR)/xchain-gccstage2.install -endif +busybox_prepare_deps = $(STATEDIR)/virtual-xchain.install $(STATEDIR)/busybox.extract $(STATEDIR)/busybox.prepare: $(busybox_prepare_deps) @$(call targetinfo, busybox.prepare) # FIXME: is this necessary? touch $(BUSYBOX_DIR)/busybox.links - $(BUSYBOX_ENVIRONMENT) make -C $(BUSYBOX_DIR) distclean $(BUSYBOX_MAKEVARS) + $(BUSYBOX_PATH) make -C $(BUSYBOX_DIR) distclean $(BUSYBOX_MAKEVARS) grep -e PTXCONF_BB_ .config > $(BUSYBOX_DIR)/.config perl -i -p -e 's/PTXCONF_BB_//g' $(BUSYBOX_DIR)/.config - $(BUSYBOX_ENVIRONMENT) make -C $(BUSYBOX_DIR) oldconfig $(BUSYBOX_MAKEVARS) - $(BUSYBOX_ENVIRONMENT) make -C $(BUSYBOX_DIR) dep $(BUSYBOX_MAKEVARS) + $(BUSYBOX_PATH) make -C $(BUSYBOX_DIR) oldconfig $(BUSYBOX_MAKEVARS) + $(BUSYBOX_PATH) make -C $(BUSYBOX_DIR) dep $(BUSYBOX_MAKEVARS) touch $@ # ---------------------------------------------------------------------------- # Compile # ---------------------------------------------------------------------------- -busybox_compile_deps = $(STATEDIR)/busybox.prepare -ifeq (y, $(PTXCONF_GLIBC)) -busybox_compile_deps += $(STATEDIR)/glibc.install -endif -ifeq (y, $(PTXCONF_UCLIBC)) -busybox_compile_deps += $(STATEDIR)/uclibc.install -endif - busybox_compile: $(STATEDIR)/busybox.compile +busybox_compile_deps = $(STATEDIR)/busybox.prepare + $(STATEDIR)/busybox.compile: $(busybox_compile_deps) @$(call targetinfo, busybox.compile) - $(BUSYBOX_ENVIRONMENT) make -C $(BUSYBOX_DIR) $(BUSYBOX_MAKEVARS) + $(BUSYBOX_PATH) make -C $(BUSYBOX_DIR) $(BUSYBOX_MAKEVARS) touch $@ # ---------------------------------------------------------------------------- @@ -121,12 +110,12 @@ $(STATEDIR)/busybox.install: $(STATEDIR)/busybox.compile busybox_targetinstall: $(STATEDIR)/busybox.targetinstall -$(STATEDIR)/busybox.targetinstall: $(STATEDIR)/busybox.install +$(STATEDIR)/busybox.targetinstall: $(STATEDIR)/busybox.compile @$(call targetinfo, busybox.targetinstall) rm -f $(BUSYBOX_DIR)/busybox.links - $(BUSYBOX_ENVIRONMENT) make -C $(BUSYBOX_DIR) install \ + $(BUSYBOX_PATH) make -C $(BUSYBOX_DIR) install \ PREFIX=$(ROOTDIR) $(BUSYBOX_MAKEVARS) - $(CROSSSTRIP) -S $(ROOTDIR)/bin/busybox + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/bin/busybox touch $@ # ---------------------------------------------------------------------------- @@ -137,4 +126,4 @@ busybox_clean: -rm -rf $(STATEDIR)/busybox* -rm -rf $(BUSYBOX_DIR) -# vim: syntax=make +# vim: syntax=make
\ No newline at end of file diff --git a/rules/distcc.make b/rules/distcc.make new file mode 100644 index 000000000..a192fd68e --- /dev/null +++ b/rules/distcc.make @@ -0,0 +1,103 @@ +# -*-makefile-*- +# $Id: distcc.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# Paths and names +# +DISTCC_VERSION = 2.8 +DISTCC = distcc-$(DISTCC_VERSION) +DISTCC_SUFFIX = tar.bz2 +DISTCC_URL = http://distcc.samba.org/ftp/distcc/$(DISTCC).$(DISTCC_SUFFIX) +DISTCC_SOURCE = $(SRCDIR)/$(DISTCC).$(DISTCC_SUFFIX) +DISTCC_DIR = $(BUILDDIR)/$(DISTCC) +DISTCC_EXTRACT = bzip2 -dc + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +distcc_get: $(STATEDIR)/distcc.get + +$(STATEDIR)/distcc.get: $(DISTCC_SOURCE) + @$(call targetinfo, distcc.get) + touch $@ + +$(DISTCC_SOURCE): + @$(call targetinfo, $(DISTCC_SOURCE)) + @$(call get, $(DISTCC_URL)) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +distcc_extract: $(STATEDIR)/distcc.extract + +$(STATEDIR)/distcc.extract: $(STATEDIR)/distcc.get + @$(call targetinfo, distcc.extract) + @$(call extract, $(DISTCC_SOURCE)) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +distcc_prepare: $(STATEDIR)/distcc.prepare + +DISTCC_ENV = CC=$(HOSTCC) + +DISTCC_AUTOCONF = --prefix=$(PTXCONF_PREFIX) + +$(STATEDIR)/distcc.prepare: $(STATEDIR)/distcc.extract + @$(call targetinfo, distcc.prepare) + cd $(DISTCC_DIR) && $(DISTCC_ENV) \ + ./configure $(DISTCC_AUTOCONF) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +distcc_compile: $(STATEDIR)/distcc.compile + +$(STATEDIR)/distcc.compile: $(STATEDIR)/distcc.prepare + @$(call targetinfo, distcc.compile) + make -C $(DISTCC_DIR) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +distcc_install: $(STATEDIR)/distcc.install + +$(STATEDIR)/distcc.install: $(STATEDIR)/distcc.compile + @$(call targetinfo, distcc.install) + make -C $(DISTCC_DIR) install + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +distcc_targetinstall: $(STATEDIR)/distcc.targetinstall + +$(STATEDIR)/distcc.targetinstall: $(STATEDIR)/distcc.install + @$(call targetinfo, distcc.targetinstall) + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +distcc_clean: + rm -rf $(STATEDIR)/distcc.* + rm -rf $(DISTCC_DIR) + +# vim: syntax=make diff --git a/rules/e2fsprogs.make b/rules/e2fsprogs.make index 13d816207..2104841a7 100644 --- a/rules/e2fsprogs.make +++ b/rules/e2fsprogs.make @@ -31,10 +31,11 @@ E2FSPROGS_EXTRACT = gzip -dc e2fsprogs_get: $(STATEDIR)/e2fsprogs.get $(STATEDIR)/e2fsprogs.get: $(E2FSPROGS_SOURCE) + @$(call targetinfo, e2fsprogs.get) touch $@ $(E2FSPROGS_SOURCE): - @$(call targetinfo, e2fsprogs.get) + @$(call targetinfo, $(E2FSPROGS_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(E2FSPROGS_URL) # ---------------------------------------------------------------------------- @@ -54,19 +55,17 @@ $(STATEDIR)/e2fsprogs.extract: $(STATEDIR)/e2fsprogs.get e2fsprogs_prepare: $(STATEDIR)/e2fsprogs.prepare - E2FSPROGS_AUTOCONF = --prefix=$(PTXCONF_PREFIX) E2FSPROGS_AUTOCONF += --enable-fsck E2FSPROGS_AUTOCONF += --build=$(GNU_HOST) E2FSPROGS_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) -E2FSPROGS_ENVIRONMENT = PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(PTXCONF_PREFIX)/bin:$$PATH -E2FSPROGS_MAKEVARS = AR=$(PTXCONF_GNU_TARGET)-ar -E2FSPROGS_MAKEVARS += RANLIB=$(PTXCONF_GNU_TARGET)-ranlib -E2FSPROGS_MAKEVARS += CC=$(PTXCONF_GNU_TARGET)-gcc +E2FSPROGS_PATH = PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(CROSS_PATH):$$PATH +E2FSPROGS_ENV = $(CROSS_ENV) -$(STATEDIR)/e2fsprogs.prepare: $(STATEDIR)/e2fsprogs.extract +$(STATEDIR)/e2fsprogs.prepare: $(STATEDIR)/virtual-xchain.install $(STATEDIR)/e2fsprogs.extract @$(call targetinfo, e2fsprogs.prepare) - cd $(E2FSPROGS_DIR) && \ + cd $(E2FSPROGS_DIR) \ + $(E2FSPROGS_PATH) $(E2FSPROGS_ENV) && \ ./configure $(E2FSPROGS_AUTOCONF) touch $@ @@ -77,17 +76,12 @@ $(STATEDIR)/e2fsprogs.prepare: $(STATEDIR)/e2fsprogs.extract e2fsprogs_compile: $(STATEDIR)/e2fsprogs.compile e2fsprogs_compile_deps = $(STATEDIR)/e2fsprogs.prepare -ifeq (y, $(PTXCONF_GLIBC)) e2fsprogs_compile_deps += $(STATEDIR)/glibc.install -endif -ifeq (y, $(PTXCONF_UCLIBC)) -e2fsprogs_compile_deps += $(STATEDIR)/uclibc.install -endif $(STATEDIR)/e2fsprogs.compile: $(e2fsprogs_compile_deps) @$(call targetinfo, e2fsprogs.compile) # FIXME: not tested on non-x86 - $(E2FSPROGS_ENVIRONMENT) make -C $(E2FSPROGS_DIR) $(E2FSPROGS_MAKEVARS) + $(E2FSPROGS_PATH) make -C $(E2FSPROGS_DIR) touch $@ # ---------------------------------------------------------------------------- @@ -98,7 +92,7 @@ e2fsprogs_install: $(STATEDIR)/e2fsprogs.install $(STATEDIR)/e2fsprogs.install: $(STATEDIR)/e2fsprogs.compile @$(call targetinfo, e2fsprogs.install) - make -C $(E2FSPROGS_DIR) install + $(E2FSPROGS_PATH) make -C $(E2FSPROGS_DIR) install touch $@ # ---------------------------------------------------------------------------- @@ -111,11 +105,11 @@ $(STATEDIR)/e2fsprogs.targetinstall: $(STATEDIR)/e2fsprogs.install @$(call targetinfo, e2fsprogs.targetinstall) ifeq (y, $(PTXCONF_E2FSPROGS_MKFS)) install $(E2FSPROGS_DIR)/misc/mke2fs $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/mke2fs + $(CROSSSTRIP) -R .note -R .comment $(ROOTDIR)/sbin/mke2fs endif ifeq (y, $(PTXCONF_E2FSPROGS_E2FSCK)) install $(E2FSPROGS_DIR)/e2fsck/e2fsck.shared $(ROOTDIR)/sbin/e2fsck - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/e2fsck + $(CROSSSTRIP) -R .note -R .comment $(ROOTDIR)/sbin/e2fsck endif touch $@ diff --git a/rules/glibc.make b/rules/glibc.make new file mode 100644 index 000000000..70264e9b4 --- /dev/null +++ b/rules/glibc.make @@ -0,0 +1,567 @@ +# -*-makefile-*- +# $Id: glibc.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Auerswald GmbH & Co. KG, Schandelah, Germany +# (c) 2002 by Pengutronix e.K., Hildesheim, Germany +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_GLIBC +PACKAGES += glibc +endif + + +# +# Paths and names +# +ifeq (y, $(PTXCONF_GLIBC_2_3_2)) +GLIBC_VERSION = 2.3.2 +endif +ifeq (y, $(PTXCONF_GLIBC_2_2_5)) +GLIBC_VERSION = 2.2.5 +endif +ifeq (y, $(PTXCONF_GLIBC_2_2_4)) +GLIBC_VERSION = 2.2.4 +endif +ifeq (y, $(PTXCONF_GLIBC_2_2_3)) +GLIBC_VERSION = 2.2.3 +endif + +GLIBC = glibc-$(GLIBC_VERSION) +GLIBC_URL = ftp://ftp.gnu.org/gnu/glibc/$(GLIBC).tar.gz +GLIBC_SOURCE = $(SRCDIR)/$(GLIBC).tar.gz +GLIBC_DIR = $(BUILDDIR)/$(GLIBC) + +GLIBC_BUILDDIR = $(BUILDDIR)/$(GLIBC)-build +XCHAIN_GLIBC_BUILDDIR = $(BUILDDIR)/xchain-$(GLIBC)-build + +GLIBC_THREADS = glibc-linuxthreads-$(GLIBC_VERSION) +GLIBC_THREADS_URL = ftp://ftp.gnu.org/gnu/glibc/$(GLIBC_THREADS).tar.gz +GLIBC_THREADS_SOURCE = $(SRCDIR)/$(GLIBC_THREADS).tar.gz +GLIBC_THREADS_DIR = $(GLIBC_DIR) +GLIBC_THREADS_EXTRACT = gzip -dc + +GLIBC_PTXPATCH = glibc-$(GLIBC_VERSION)-ptx3.diff +GLIBC_PTXPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PTXPATCH) +GLIBC_PTXPATCH_SOURCE = $(SRCDIR)/$(GLIBC_PTXPATCH) +GLIBC_PTXPATCH_DIR = $(GLIBC_DIR) +GLIBC_PTXPATCH_EXTRACT = cat + +GLIBC_MKBPATCH = glibc-2.2.5-mkb1.patch +GLIBC_MKBPATCH_SOURCE = $(SRCDIR)/$(GLIBC_MKBPATCH) +GLIBC_MKBPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_MKBPATCH) + +# \t before comment ('#') +# stackdirection for cris architecture +# see: +# http://sources.redhat.com/ml/libc-alpha/2002-06/msg00006.html +# http://sources.redhat.com/ml/libc-alpha/2002-06/msg00007.html +# --- only for cris --- +GLIBC_CRISPATCH = glibc-2.2.5-cris-mkb1.patch +GLIBC_CRISPATCH_SOURCE = $(SRCDIR)/$(GLIBC_CRISPATCH) +GLIBC_CRISPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_CRISPATCH) + +# +# fix varous bugs - borrowed from gentoo +# + +# Fix for http://www.cert.org/advisories/CA-2003-10.html +GLIBC_XDRPATCH = glibc-xdr_security.patch +GLIBC_XDRPATCH_SOURCE = $(SRCDIR)/$(GLIBC_XDRPATCH) +GLIBC_XDRPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_XDRPATCH) + +# This patch apparently eliminates compiler warnings for some versions of gcc. +# For information about the string2 patch, see: +# http://lists.gentoo.org/pipermail/gentoo-dev/2001-June/001559.html +GLIBC_STRINGHPATCH = glibc-2.2.4-string2.h.diff +GLIBC_STRINGHPATCH_SOURCE = $(SRCDIR)/$(GLIBC_STRINGHPATCH) +GLIBC_STRINGHPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_STRINGHPATCH) + +# This next one is a new patch to fix thread signal handling. See: +# http://sources.redhat.com/ml/libc-hacker/2002-02/msg00120.html +GLIBC_THREADSIGPATCH = glibc-2.2.5-threadsig.diff +GLIBC_THREADSIGPATCH_SOURCE = $(SRCDIR)/$(GLIBC_THREADSIGPATCH) +GLIBC_THREADSIGPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_THREADSIGPATCH) + +# This next patch fixes a test that will timeout due to ReiserFS' slow handling of sparse files +GLIBC_TIMEOUTPATCH = glibc-2.2.2-test-lfs-timeout.patch +GLIBC_TIMEOUTPATCH_SOURCE = $(SRCDIR)/$(GLIBC_TIMEOUTPATCH) +GLIBC_TIMEOUTPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_TIMEOUTPATCH) + +# A buffer overflow vulnerability exists in multiple implementations of DNS +# resolver libraries. This affects glibc-2.2.5 and earlier. See bug #4923 +# and: http://www.cert.org/advisories/CA-2002-19.html +GLIBC_DNSPATCH = glibc-2.2.5-dns-network-overflow.diff +GLIBC_DNSPATCH_SOURCE = $(SRCDIR)/$(GLIBC_DNSPATCH) +GLIBC_DNSPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_DNSPATCH) + +# Security update for sunrpc +GLIBC_SUNRPCPATCH = glibc-2.2.5-sunrpc-overflow.diff +GLIBC_SUNRPCPATCH_SOURCE = $(SRCDIR)/$(GLIBC_SUNRPCPATCH) +GLIBC_SUNRPCPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_SUNRPCPATCH) + +# This patch fixes the nvidia-glx probs, openoffice and vmware probs and such.. +# http://sources.redhat.com/ml/libc-hacker/2002-02/msg00152.html +# --- only for X86 and PPC --- +GLIBC_DIVDI3PATCH = glibc-2.2.5-divdi3.diff +GLIBC_DIVDI3PATCH_SOURCE = $(SRCDIR)/$(GLIBC_DIVDI3PATCH) +GLIBC_DIVDI3PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_DIVDI3PATCH) + +# This patch fixes the absence of sqrtl on PPC +# http://sources.redhat.com/ml/libc-hacker/2002-05/msg00012.html +# --- only for PPC --- +GLIBC_SRQTPATCH = glibc-2.2.5-ppc-sqrtl.diff +GLIBC_SRQTPATCH_SOURCE = $(SRCDIR)/$(GLIBC_SRQTPATCH) +GLIBC_SRQTPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_SRQTPATCH) + +# http://archive.linuxfromscratch.org/mail-archives/lfs-dev/2002/08/0228.html +# --- only gcc.major = 3 gcc.minor >= 2 --- +GLIBC_DIVBYZEROPATCH = glibc-2.2.5.divbyzero.patch +GLIBC_DIVBYZEROPATCH_SOURCE = $(SRCDIR)/$(GLIBC_DIVBYZEROPATCH) +GLIBC_DIVBYZEROPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_DIVBYZEROPATCH) + +GLIBC_RESTRICTPATCH = glibc-2.2.5.restrict_arr.patch +GLIBC_RESTRICTPATCH_SOURCE = $(SRCDIR)/$(GLIBC_RESTRICTPATCH) +GLIBC_RESTRICTPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_RESTRICTPATCH) + +# Some patches to fixup build on alpha +# --- only for ALPHA --- +# GLIBC_ALPHAGCC3PATCH_SOURCE = $(SRCDIR)/glibc-2.2.5-alpha-gcc3-fix.diff +# GLIBC_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) +# GLIBC_ALPHAPCDYNPATCH_SOURCE = $(SRCDIR)/glibc-2.2.5-alpha-pcdyn-fix.diff +# GLIBC_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) +# GLIBC_ALPHAGCCPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) +# GLIBC_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) + +# Some patches to fixup build on sparc +# --- only SPARC and SPARC64 --- +# GLIBC_SPARCMATHINLINEPATCH_SOURCE= $(SRCDIR)/glibc-2.2.5-sparc-mathinline.patch +# GLIBC_SPARCMISCPATCH_SOURCE = $(SRCDIR)/glibc-2.2.5-sparc-misc.diff +# GLIBC_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) +# GLIBC_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) + +# Some patches to fixup build on sparc +# --- only SPARC64 --- +# GLIBC_SPARC64PATCH_SOURCE = $(SRCDIR)/glibc-2.2.5-sparc64-fixups.diff +# GLIBC_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) + +# Some patches to fixup build on sparc +# --- only SPARC and SPARC64 --- +# GLIBC_SPARC32SEMCTLPATCH_SOURCE = $(SRCDIR)/glibc-2.2.5-sparc32-semctl.patch +# GLIBC_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PATCH) + +# For ppc405, there is no fpu. The following hack disables a +# build-error causing code. See thread: +# http://sources.redhat.com/ml/crossgcc/2002-05/msg00131.html +GLIBC_PPCNOFPU1PATCH = glibc-ppc-nofpu.patch1 +GLIBC_PPCNOFPU1PATCH_SOURCE = $(SRCDIR)/$(GLIBC_PPCNOFPU1PATCH) +GLIBC_PPCNOFPU1PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PPCNOFPU1PATCH) + +GLIBC_PPCNOFPU2PATCH = glibc-ppc-nofpu.patch2 +GLIBC_PPCNOFPU2PATCH_SOURCE = $(SRCDIR)/$(GLIBC_PPCNOFPU2PATCH) +GLIBC_PPCNOFPU2PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PPCNOFPU2PATCH) + +GLIBC_PPCNOFPU3PATCH = glibc-ppc-nofpu.patch3 +GLIBC_PPCNOFPU3PATCH_SOURCE = $(SRCDIR)/$(GLIBC_PPCNOFPU3PATCH) +GLIBC_PPCNOFPU3PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PPCNOFPU3PATCH) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +glibc_get: $(STATEDIR)/glibc.get + +glibc_get_deps = $(GLIBC_SOURCE) +glibc_get_deps += $(GLIBC_PTXPATCH_SOURCE) +glibc_get_deps += $(GLIBC_MKBPATCH_SOURCE) +ifdef PTXCONF_ARCH_CRIS +glibc_get_deps += $(GLIBC_CRISPATCH_SOURCE) +endif +glibc_get_deps += $(GLIBC_XDRPATCH_SOURCE) +glibc_get_deps += $(GLIBC_STRINGHPATCH_SOURCE) +glibc_get_deps += $(GLIBC_TIMEOUTPATCH_SOURCE) +glibc_get_deps += $(GLIBC_DNSPATCH_SOURCE) +glibc_get_deps += $(GLIBC_SUNRPCPATCH_SOURCE) +ifdef PTXCONF_ARCH_X86 +glibc_get_deps += $(GLIBC_DIVDI3PATCH_SOURCE) +endif +ifdef PTXCONF_ARCH_PPC +glibc_get_deps += $(GLIBC_DIVDI3PATCH_SOURCE) +glibc_get_deps += $(GLIBC_SRQTPATCH_SOURCE) +endif +ifdef PTXCONF_GCC_3_2_3 +glibc_get_deps += $(GLIBC_DIVBYZEROPATCH_SOURCE) +glibc_get_deps += $(GLIBC_RESTRICTPATCH_SOURCE) +endif +ifdef PTXCONF_OPT_PPC405 +glibc_get_deps += $(GLIBC_PPCNOFPU1PATCH_SOURCE) +glibc_get_deps += $(GLIBC_PPCNOFPU2PATCH_SOURCE) +glibc_get_deps += $(GLIBC_PPCNOFPU3PATCH_SOURCE) +endif + +ifdef PTXCONF_GLIBC_PTHREADS +glibc_get_deps += $(GLIBC_THREADS_SOURCE) +glibc_get_deps += $(GLIBC_THREADSIGPATCH_SOURCE) +endif + +$(STATEDIR)/glibc.get: $(glibc_get_deps) + @$(call targetinfo, glibc.get) + touch $@ + +$(GLIBC_SOURCE): + @$(call targetinfo, $(GLIBC_SOURCE)) + @$(call get, $(GLIBC_URL)) + +$(GLIBC_THREADS_SOURCE): + @$(call targetinfo, $(GLIBC_THREADS_SOURCE)) + @$(call get, $(GLIBC_THREADS_URL)) + +$(GLIBC_PTXPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_PTXPATCH_SOURCE)) + @$(call get, $(GLIBC_PTXPATCH_URL)) + +$(GLIBC_MKBPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_MKBPATCH_SOURCE)) + @$(call get, $(GLIBC_MKBPATCH_URL)) + +$(GLIBC_CRISPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_CRISPATCH_SOURCE)) + @$(call get, $(GLIBC_CRISPATCH_URL)) + +$(GLIBC_XDRPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_XDRPATCH_SOURCE)) + @$(call get, $(GLIBC_XDRPATCH_URL)) + +$(GLIBC_STRINGHPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_STRINGHPATCH_SOURCE)) + @$(call get, $(GLIBC_STRINGHPATCH_URL)) + +$(GLIBC_TIMEOUTPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_TIMEOUTPATCH_SOURCE)) + @$(call get, $(GLIBC_TIMEOUTPATCH_URL)) + +$(GLIBC_DNSPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_DNSPATCH_SOURCE)) + @$(call get, $(GLIBC_DNSPATCH_URL)) + +$(GLIBC_SUNRPCPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_SUNRPCPATCH_SOURCE)) + @$(call get, $(GLIBC_SUNRPCPATCH_URL)) + +$(GLIBC_DIVDI3PATCH_SOURCE): + @$(call targetinfo, $(GLIBC_DIVDI3PATCH_SOURCE)) + @$(call get, $(GLIBC_DIVDI3PATCH_URL)) + +$(GLIBC_SRQTPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_SRQTPATCH_SOURCE)) + @$(call get, $(GLIBC_SRQTPATCH_URL)) + +$(GLIBC_DIVBYZEROPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_DIVBYZEROPATCH_SOURCE)) + @$(call get, $(GLIBC_DIVBYZEROPATCH_URL)) + +$(GLIBC_RESTRICTPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_RESTRICTPATCH_SOURCE)) + @$(call get, $(GLIBC_RESTRICTPATCH_URL)) + +$(GLIBC_PPCNOFPU1PATCH_SOURCE): + @$(call targetinfo, $(GLIBC_PPCNOFPU1PATCH_SOURCE)) + @$(call get, $(GLIBC_PPCNOFPU1PATCH_URL)) + +$(GLIBC_PPCNOFPU2PATCH_SOURCE): + @$(call targetinfo, $(GLIBC_PPCNOFPU2PATCH_SOURCE)) + @$(call get, $(GLIBC_PPCNOFPU2PATCH_URL)) + +$(GLIBC_PPCNOFPU3PATCH_SOURCE): + @$(call targetinfo, $(GLIBC_PPCNOFPU3PATCH_SOURCE)) + @$(call get, $(GLIBC_PPCNOFPU3PATCH_URL)) + +$(GLIBC_THREADSIGPATCH_SOURCE): + @$(call targetinfo, $(GLIBC_THREADSIGPATCH_SOURCE)) + @$(call get, $(GLIBC_THREADSIGPATCH_URL)) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +glibc_extract: $(STATEDIR)/glibc.extract + +glibc_extract_deps = $(STATEDIR)/glibc-base.extract +ifeq (y, $(PTXCONF_GLIBC_PTHREADS)) +glibc_extract_deps += $(STATEDIR)/glibc-threads.extract +endif + +$(STATEDIR)/glibc.extract: $(glibc_extract_deps) + @$(call targetinfo, glibc.extract) + touch $@ + +$(STATEDIR)/glibc-base.extract: $(STATEDIR)/glibc.get + @$(call targetinfo, glibc-base.extract) + @$(call clean, $(GLIBC_DIR)) + + @$(call extract, $(GLIBC_SOURCE)) + + # fix some bugs... + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_PTXPATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_MKBPATCH_SOURCE) + +ifdef PTXCONF_GLIBC_2_2_5 + ifdef PTXCONF_ARCH_CRIS + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_CRISPATCH_SOURCE) + endif + + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_XDRPATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p0 < $(GLIBC_STRINGHPATCH_SOURCE) + cd $(GLIBC_DIR)/io && patch -p0 < $(GLIBC_TIMEOUTPATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_DNSPATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_SUNRPCPATCH_SOURCE) + + ifdef PTXCONF_ARCH_X86 + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_DIVDI3PATCH_SOURCE) + endif + ifdef PTXCONF_ARCH_PPC + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_DIVDI3PATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p0 < $(GLIBC_SRQTPATCH_SOURCE) + endif + + ifdef PTXCONF_GCC_3_2_3 + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_DIVBYZEROPATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_RESTRICTPATCH_SOURCE) + endif + +# FIXME: apply sparc & alpha patches + + ifdef PTXCONF_OPT_PPC405 + cd $(GLIBC_DIR) && mv sysdeps/powerpc/fclrexcpt.c sysdeps/powerpc/fpu/ + cd $(GLIBC_DIR) && rm sysdeps/powerpc/memset.S + + cd $(GLIBC_DIR) && patch -p0 < $(GLIBC_PPCNOFPU1PATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p0 < $(GLIBC_PPCNOFPU2PATCH_SOURCE) + cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_PPCNOFPU3PATCH_SOURCE) + endif +endif # PTXCONF_GLIBC_2_2_5 + + # fix: sunrpc's makefile has the wrong magic to find cpp... + # FIXME: is this the right fix for other versions than 2.2.5? + cd $(GLIBC_DIR)/sunrpc && mkdir cpp && \ + ln -sf $(PTXCONF_PREFIX)/bin/$(PTXCONF_GNU_TARGET)-cpp cpp/ + + # this is magically recreated if missing (necessary because + # of patch against configure.in) + rm -f $(GLIBC_DIR)/sysdeps/unix/sysv/linux/configure + touch $@ + +$(STATEDIR)/glibc-threads.extract: $(STATEDIR)/glibc.get + @$(call targetinfo, glibc-threads.extract) + @$(call extract, $(GLIBC_THREADS_SOURCE), $(GLIBC_DIR)) + cd $(GLIBC_DIR) && patch -p0 < $(GLIBC_THREADSIGPATCH_SOURCE) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +glibc_prepare: $(STATEDIR)/glibc.prepare + +# +# arcitecture dependend configuration +# +GLIBC_AUTOCONF = --build=$(GNU_HOST) +GLIBC_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) +GLIBC_AUTOCONF += --disable-sanity-checks +GLIBC_PATH = PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(CROSS_PATH) +GLIBC_ENV = $(CROSS_ENV) + +# +# features +# +ifdef PTXCONF_GLIBC_FLOATINGPOINT + GLIBC_AUTOCONF+=--with-fp=yes +else + GLIBC_AUTOCONF+=--with-fp=no +endif +ifdef PTXCONF_GLIBC_LIBIO + GLIBC_AUTOCONF+=--enable-libio +endif +ifdef PTXCONF_GLIBC_SHARED + GLIBC_AUTOCONF+=--enable-shared +else + GLIBC_AUTOCONF+=--enable-shared=no +endif +ifdef PTXCONF_GLIBC_PROFILED + GLIBC_AUTOCONF+=--enable-profile=yes +else + GLIBC_AUTOCONF+=--enable-profile=no +endif +ifdef PTXCONF_GLIBC_OMITFP + GLIBC_AUTOCONF+=--enable-omitfp +endif +ifdef PTXCONF_GLIBC_PTHREADS + GLIBC_AUTOCONF+=--enable-add-ons=linuxthreads +endif + + +# +# dependencies +# +glibc_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/autoconf213.install \ + $(STATEDIR)/glibc.extract + +$(STATEDIR)/glibc.prepare: $(glibc_prepare_deps) + @$(call targetinfo, glibc.prepare) + mkdir -p $(GLIBC_BUILDDIR) + cd $(GLIBC_BUILDDIR) && \ + $(GLIBC_PATH) $(GLIBC_ENV) \ + $(GLIBC_DIR)/configure $(PTXCONF_GNU_TARGET) \ + $(GLIBC_AUTOCONF) \ + --prefix=/usr \ + --libexecdir=/usr/bin + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +glibc_compile: $(STATEDIR)/glibc.compile + +$(STATEDIR)/glibc.compile: $(STATEDIR)/glibc.prepare + @$(call targetinfo, glibc.compile) + cd $(GLIBC_BUILDDIR) && $(GLIBC_PATH) make + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +glibc_install: $(STATEDIR)/glibc.install + +$(STATEDIR)/glibc.install: $(STATEDIR)/glibc.compile + @$(call targetinfo, glibc.install) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +glibc_targetinstall: $(STATEDIR)/glibc.targetinstall + +$(STATEDIR)/glibc.targetinstall: $(STATEDIR)/glibc.compile + @$(call targetinfo, glibc.targetinstall) + # CAREFUL: don't never ever make install in ldso tree!!! + mkdir -p $(ROOTDIR)/lib + + install $(GLIBC_BUILDDIR)/elf/ld.so $(ROOTDIR)/lib/ld-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/ld-$(GLIBC_VERSION).so + ln -sf ld-$(GLIBC_VERSION).so $(ROOTDIR)/lib/ld.so.1 + ln -sf ld-$(GLIBC_VERSION).so $(ROOTDIR)/lib/ld-linux.so.2 + + install $(GLIBC_BUILDDIR)/libc.so $(ROOTDIR)/lib/libc-$(GLIBC_VERSION).so.6 + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libc-$(GLIBC_VERSION).so.6 + ln -sf libc-$(GLIBC_VERSION).so.6 $(ROOTDIR)/lib/libc.so.6 + + ifeq (y, $(PTXCONF_GLIBC_PTHREADS)) + install $(GLIBC_BUILDDIR)/linuxthreads/libpthread.so $(ROOTDIR)/lib/libpthread-0.9.so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libpthread-0.9.so + ln -sf libpthread-0.9.so $(ROOTDIR)/lib/libpthread.so.0 + endif + + ifeq (y, $(PTXCONF_GLIBC_THREAD_DB)) + install $(GLIBC_BUILDDIR)/linuxthreads_db/libthread_db.so $(ROOTDIR)/lib/libthread_db.so.1 + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libthread_db.so.1 + endif + + ifeq (y, $(PTXCONF_GLIBC_DL)) + install $(GLIBC_BUILDDIR)/dlfcn/libdl.so $(ROOTDIR)/lib/libdl-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libdl-$(GLIBC_VERSION).so + ln -sf libdl-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libdl.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_CRYPT)) + install $(GLIBC_BUILDDIR)/crypt/libcrypt.so $(ROOTDIR)/lib/libcrypt-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libcrypt-$(GLIBC_VERSION).so + ln -sf libcrypt-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libcrypt.so.1 + endif + + ifeq (y, $(PTXCONF_GLIBC_UTIL)) + install $(GLIBC_BUILDDIR)/login/libutil.so $(ROOTDIR)/lib/libutil-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libutil-$(GLIBC_VERSION).so + ln -sf libutil-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libutil.so.1 + endif + + ifeq (y, $(PTXCONF_GLIBC_LIBM)) + install $(GLIBC_BUILDDIR)/math/libm.so $(ROOTDIR)/lib/libm-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libm-$(GLIBC_VERSION).so + ln -sf libm-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libm.so.6 + endif + + ifeq (y, $(PTXCONF_GLIBC_NSS_DNS)) + install $(GLIBC_BUILDDIR)/resolv/libnss_dns.so.2 $(ROOTDIR)/lib/libnss_dns-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libnss_dns-$(GLIBC_VERSION).so + ln -sf libnss_dns-$(GLIBC_VERSION) $(ROOTDIR)/lib/libnss_dns.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_NSS_FILES)) + install $(GLIBC_BUILDDIR)/nss/libnss_files.so.2 $(ROOTDIR)/lib/libnss_files-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libnss_files-$(GLIBC_VERSION).so + ln -sf libnss_files-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libnss_files.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_NSS_HESIOD)) + install $(GLIBC_BUILDDIR)/hesiod/libnss_hesiod.so.2 $(ROOTDIR)/lib/libnss_hesiod-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libnss_hesiod-$(GLIBC_VERSION).so + ln -sf libnss_hesiod-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libnss_hesiod.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_NSS_NIS)) + install $(GLIBC_BUILDDIR)/nis/libnss_nis.so.2 $(ROOTDIR)/lib/libnss_nis-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libnss_nis-$(GLIBC_VERSION).so + ln -sf libnss_nis-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libnss_nis.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_NSS_NISPLUS)) + install $(GLIBC_BUILDDIR)/nis/libnss_nisplus.so.2 $(ROOTDIR)/lib/libnss_nisplus-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libnss_nisplus-$(GLIBC_VERSION).so + ln -sf libnss_nisplus-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libnss_nisplus.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_NSS_COMPAT)) + install $(GLIBC_BUILDDIR)/nis/libnss_compat.so.2 $(ROOTDIR)/lib/libnss_compat-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libnss_compat-$(GLIBC_VERSION).so + ln -sf libnss_compat-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libnss_compat.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_RESOLV)) + install $(GLIBC_BUILDDIR)/resolv/libresolv.so $(ROOTDIR)/lib/libresolv-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libresolv-$(GLIBC_VERSION).so + ln -sf libresolv.$(GLIBC_VERSION).so $(ROOTDIR)/lib/libresolv.so.2 + endif + + ifeq (y, $(PTXCONF_GLIBC_NSL)) + install $(GLIBC_BUILDDIR)/nis/libnsl.so $(ROOTDIR)/lib/libnsl-$(GLIBC_VERSION).so + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libnsl-$(GLIBC_VERSION).so + ln -sf libnsl-$(GLIBC_VERSION).so $(ROOTDIR)/lib/libnsl.so.1 + endif + + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +glibc_clean: + -rm -rf $(STATEDIR)/xchain-glibc.extract + -rm -rf $(STATEDIR)/xchain-glibc.prepare + -rm -rf $(STATEDIR)/xchain-glibc.compile + -rm -rf $(STATEDIR)/glibc* + -rm -rf $(GLIBC_DIR) + -rm -rf $(GLIBC_BUILDDIR) + -rm -rf $(XCHAIN_GLIBC_BUILDDIR) +# vim: syntax=make
\ No newline at end of file diff --git a/rules/gmp.make b/rules/gmp.make index 641668d00..f97220857 100644 --- a/rules/gmp.make +++ b/rules/gmp.make @@ -1,4 +1,5 @@ -# $Id: gmp.make,v 1.3 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: gmp.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -33,10 +34,11 @@ GMP_EXTRACT = gzip -dc gmp_get: $(STATEDIR)/gmp.get $(STATEDIR)/gmp.get: $(GMP_SOURCE) + @$(call targetinfo, gmp.get) touch $@ $(GMP_SOURCE): - @$(call targetinfo, gmp.get) + @$(call targetinfo, $(GMP_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(GMP_URL) # ---------------------------------------------------------------------------- @@ -47,7 +49,7 @@ gmp_extract: $(STATEDIR)/gmp.extract $(STATEDIR)/gmp.extract: $(STATEDIR)/gmp.get @$(call targetinfo, gmp.extract) - $(GMP_EXTRACT) $(GMP_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + $(GMP_EXTRACT) $(GMP_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/gmp3.make b/rules/gmp3.make new file mode 100644 index 000000000..b02298447 --- /dev/null +++ b/rules/gmp3.make @@ -0,0 +1,114 @@ +# -*-makefile-*- +# $Id: gmp3.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2002 by Pengutronix e.K., Hildesheim, Germany +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# Paths and names +# +GMP3_VERSION = 3.1.1 +GMP3 = gmp-$(GMP3_VERSION) +GMP3_SUFFIX = tar.gz +GMP3_URL = ftp://ftp.gnu.org/gnu/gmp/$(GMP3).$(GMP3_SUFFIX) +GMP3_SOURCE = $(SRCDIR)/$(GMP3).$(GMP3_SUFFIX) +GMP3_DIR = $(BUILDDIR)/$(GMP3) +GMP3_EXTRACT = gzip -dc + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +gmp3_get: $(STATEDIR)/gmp3.get + +$(STATEDIR)/gmp3.get: $(GMP3_SOURCE) + @$(call targetinfo, gmp3.get) + touch $@ + +$(GMP3_SOURCE): + @$(call targetinfo, $(GMP3_SOURCE)) + @$(call get, $(GMP3_URL)) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +gmp3_extract: $(STATEDIR)/gmp3.extract + +$(STATEDIR)/gmp3.extract: $(STATEDIR)/gmp3.get + @$(call targetinfo, gmp3.extract) + @$(call extract, $(GMP3_SOURCE)) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +gmp3_prepare: $(STATEDIR)/gmp3.prepare + +gmp3_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/gmp3.extract + +GMP3_PATH = PATH=$(CROSS_PATH) +GMP3_ENV = $(CROSS_ENV) + +GMP3_AUTOCONF = +GMP3_AUTOCONF += --build=$(GNU_HOST) +GMP3_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) +GMP3_AUTOCONF += --prefix=$(CROSS_LIB_DIR) + +$(STATEDIR)/gmp3.prepare: $(gmp3_prepare_deps) + @$(call targetinfo, gmp3.prepare) + cd $(GMP3_DIR) && \ + $(GMP3_PATH) $(GMP3_ENV) ./configure $(GMP3_AUTOCONF) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +gmp3_compile: $(STATEDIR)/gmp3.compile + +$(STATEDIR)/gmp3.compile: $(STATEDIR)/gmp3.prepare + @$(call targetinfo, gmp3.compile) + $(GMP3_PATH) make -C $(GMP3_DIR) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +gmp3_install: $(STATEDIR)/gmp3.install + +$(STATEDIR)/gmp3.install: $(STATEDIR)/gmp3.compile + @$(call targetinfo, gmp3.install) + $(GMP3_PATH) make -C $(GMP3_DIR) install + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +gmp3_targetinstall: $(STATEDIR)/gmp3.targetinstall + +$(STATEDIR)/gmp3.targetinstall: $(STATEDIR)/gmp3.install + @$(call targetinfo, gmp3.targetinstall) + mkdir -p $(ROOTDIR)/lib + cp -a $(CROSS_LIB_DIR)/lib/libgmp.so* $(ROOTDIR)/lib + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libgmp.so* + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +gmp3_clean: + rm -rf $(STATEDIR)/gmp3.* + rm -rf $(GMP3_DIR) + +# vim: syntax=make diff --git a/rules/grub.make b/rules/grub.make index a31dcfd0a..f5c40c2aa 100644 --- a/rules/grub.make +++ b/rules/grub.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: grub.make,v 1.5 2003/07/04 13:58:13 bsp Exp $ +# $Id: grub.make,v 1.6 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -22,7 +22,6 @@ GRUB = grub-0.93 GRUB_URL = ftp://alpha.gnu.org/gnu/grub/$(GRUB).tar.gz GRUB_SOURCE = $(SRCDIR)/$(GRUB).tar.gz GRUB_DIR = $(BUILDDIR)/$(GRUB) -GRUB_EXTRACT = gzip -dc # ---------------------------------------------------------------------------- # Get @@ -31,11 +30,12 @@ GRUB_EXTRACT = gzip -dc grub_get: $(STATEDIR)/grub.get $(STATEDIR)/grub.get: $(GRUB_SOURCE) + @$(call targetinfo, grub.get) touch $@ $(GRUB_SOURCE): - @$(call targetinfo, grub.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(GRUB_URL) + @$(call targetinfo, $(GRUB_SOURCE)) + @$(call get, $(GRUB_URL)) # ---------------------------------------------------------------------------- # Extract @@ -45,7 +45,8 @@ grub_extract: $(STATEDIR)/grub.extract $(STATEDIR)/grub.extract: $(STATEDIR)/grub.get @$(call targetinfo, grub.extract) - $(GRUB_EXTRACT) $(GRUB_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(GRUB_DIR)) + @$(call extract, $(GRUB_SOURCE)) touch $@ # ---------------------------------------------------------------------------- @@ -54,7 +55,14 @@ $(STATEDIR)/grub.extract: $(STATEDIR)/grub.get grub_prepare: $(STATEDIR)/grub.prepare -GRUB_AUTOCONF = --prefix=$(PTXCONF_PREFIX) +GRUB_PATH = PATH=$(CROSS_PATH) +GRUB_ENV = $(CROSS_ENV) + +GRUB_AUTOCONF = --build=$(GNU_HOST) +GRUB_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) +GRUB_AUTOCONF += --target=$(PTXCONF_GNU_TARGET) + +GRUB_AUTOCONF += --prefix=$(PTXCONF_PREFIX) ifeq (y, $(PTXCONF_GRUB_FFS)) GRUB_AUTOCONF += --enable-ffs else @@ -95,11 +103,15 @@ GRUB_AUTOCONF += --enable-cs89x0 else GRUB_AUTOCONF += --disable-cs89x0 endif -GRUB_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) -$(STATEDIR)/grub.prepare: $(STATEDIR)/grub.extract $(STATEDIR)/glibc.install +grub_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/grub.extract + +$(STATEDIR)/grub.prepare: $(grub_prepare_deps) @$(call targetinfo, grub.prepare) - cd $(GRUB_DIR) && CC=$(PTXCONF_PREFIX)/bin/$(PTXCONF_GNU_TARGET)-gcc ./configure $(GRUB_AUTOCONF) + cd $(GRUB_DIR) && \ + $(GRUB_PATH) $(GRUB_ENV) ./configure $(GRUB_AUTOCONF) touch $@ # ---------------------------------------------------------------------------- @@ -108,9 +120,9 @@ $(STATEDIR)/grub.prepare: $(STATEDIR)/grub.extract $(STATEDIR)/glibc.install grub_compile: $(STATEDIR)/grub.compile -$(STATEDIR)/grub.compile: $(STATEDIR)/grub.prepare $(STATEDIR)/xchain-gccstage2.install +$(STATEDIR)/grub.compile: $(STATEDIR)/grub.prepare @$(call targetinfo, grub.compile) - make -C $(GRUB_DIR) + $(GRUB_PATH) make -C $(GRUB_DIR) touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/kaffe.make b/rules/kaffe.make new file mode 100644 index 000000000..23c769762 --- /dev/null +++ b/rules/kaffe.make @@ -0,0 +1,342 @@ +# -*-makefile-*- +# $Id: kaffe.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> for +# GYRO net GmbH <info@gyro-net.de>, Hannover, Germany +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_KAFFE +PACKAGES += kaffe +endif + +# +# Paths and names +# +KAFFE_VERSION = 1.1.0 +KAFFE = kaffe-$(KAFFE_VERSION) +KAFFE_SUFFIX = tar.gz +KAFFE_URL = http://www.kaffe.org/ftp/pub/kaffe/v1.1.x-development/$(KAFFE).$(KAFFE_SUFFIX) +KAFFE_SOURCE = $(SRCDIR)/$(KAFFE).$(KAFFE_SUFFIX) +KAFFE_DIR = $(BUILDDIR)/$(KAFFE) +KAFFE_BUILDDIR = $(BUILDDIR)/$(KAFFE)-build + +KAFFE_KANGAROO_VERSION = 0.0.3-user +KAFFE_KANGAROO = kangaroo-$(KAFFE_KANGAROO_VERSION) +KAFFE_KANGAROO_SUFFIX = tar.gz +KAFFE_KANGAROO_URL = http://playground.gyro-net.de/kangaroo/$(KAFFE_KANGAROO).$(KAFFE_KANGAROO_SUFFIX) +KAFFE_KANGAROO_SOURCE = $(SRCDIR)/$(KAFFE_KANGAROO).$(KAFFE_KANGAROO_SUFFIX) +KAFFE_KANGAROO_DIR = $(BUILDDIR)/$(KAFFE_KANGAROO) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +kaffe_get: $(STATEDIR)/kaffe.get + +kaffe_get_deps = $(KAFFE_SOURCE) +ifdef PTXCONF_KAFFE_API_CLDC +kaffe_get_deps += $(KAFFE_KANGAROO_SOURCE) +endif + +$(STATEDIR)/kaffe.get: $(kaffe_get_deps) + @$(call targetinfo, kaffe.get) + touch $@ + +$(KAFFE_SOURCE): + @$(call targetinfo, $(KAFFE_SOURCE)) + @$(call get, $(KAFFE_URL)) + +$(KAFFE_KANGAROO_SOURCE): + @$(call targetinfo, $(KAFFE_KANGAROO_SOURCE)) + @$(call get, $(KAFFE_KANGAROO_URL)) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +kaffe_extract: $(STATEDIR)/kaffe.extract + +kaffe_extract_deps = $(STATEDIR)/kaffe-base.extract +ifdef PTXCONF_KAFFE_API_CLDC +kaffe_extract_deps += $(STATEDIR)/kaffe-kangaroo.extract +endif + +$(STATEDIR)/kaffe.extract: $(kaffe_extract_deps) + @$(call targetinfo, kaffe.extract) + touch $@ + +$(STATEDIR)/kaffe-base.extract: $(STATEDIR)/kaffe.get + @$(call targetinfo, kaffe-base.extract) + @$(call clean, $(KAFFE_DIR)) + @$(call extract, $(KAFFE_SOURCE)) + touch $@ + +$(STATEDIR)/kaffe-kangaroo.extract: $(STATEDIR)/kaffe.get + @$(call targetinfo, kaffe-kangaroo.extract) + @$(call clean, $(KAFFE_KANGAROO_DIR)) + @$(call extract, $(KAFFE_KANGAROO_SOURCE)) + cp -a $(BUILDDIR)/$(KAFFE_KANGAROO)/* $(BUILDDIR)/$(KAFFE) + rm -rf $(BUILDDIR)/$(KAFFE_KANGAROO) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +kaffe_prepare: $(STATEDIR)/kaffe.prepare + +# +# dependencies +# +kaffe_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/xchain-kaffe.install \ + $(STATEDIR)/kaffe.extract + +ifndef PTXCONF_KAFFE_FEAT_JAVAMATH +kaffe_prepare_deps += $(STATEDIR)/gmp3.install +endif +ifdef PTXCONF_KAFFE_FEAT_CLDC_GMP +kaffe_prepare_deps += $(STATEDIR)/gmp3.install +endif + +KAFFE_PATH = PATH=$(CROSS_PATH) +KAFFE_ENV = $(CROSS_ENV) KAFFEH=$(PTXCONF_PREFIX)/bin/kaffeh + +# +# autoconf +# +KAFFE_AUTOCONF = --prefix=/usr +KAFFE_AUTOCONF += --build=$(GNU_HOST) +KAFFE_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) + +ifdef PTXCONF_KAFFE_ENG_INTRP +KAFFE_AUTOCONF += --with-engine=intrp +endif +ifdef PTXCONF_KAFFE_ENG_JIT +KAFFE_AUTOCONF += --with-engine=jit +endif +ifdef PTXCONF_KAFFE_ENG_JIT3 +KAFFE_AUTOCONF += --with-engine=jit3 +endif + +ifdef PTXCONF_KAFFE_THREAD_P +KAFFE_AUTOCONF += --with-threads=unix-pthreads +endif +ifdef PTXCONF_KAFFE_THREAD_J +KAFFE_AUTOCONF += --with-threads=unix-jthreads +endif + +ifdef PTXCONF_KAFFE_JIKES +KAFFE_AUTOCONF += --with-jikes=$(PTXCONF_KAFFE_JIKES) +endif + +ifdef PTXCONF_KAFFE_API_SE +KAFFE_AUTOCONF += --with-api=se +endif +ifdef PTXCONF_KAFFE_API_CLDC +KAFFE_AUTOCONF += --with-api=cldc +endif + +ifdef PTXCONF_KAFFE_DEB_DEV +KAFFE_AUTOCONF += --enable-debug +else +KAFFE_AUTOCONF += --disable-debug +endif +ifdef PTXCONF_KAFFE_DEB_X +KAFFE_AUTOCONF += --enable-xdebugging +else +KAFFE_AUTOCONF += --disable-xdebugging +endif +ifdef PTXCONF_KAFFE_DEB_PROFILING +KAFFE_AUTOCONF += --with-profiling +else +KAFFE_AUTOCONF += --without--profiling +endif +ifdef PTXCONF_KAFFE_DEB_XPROFILING +KAFFE_AUTOCONF += --enable-xprofiling +else +KAFFE_AUTOCONF += --disable-xprofiling +endif +ifdef PTXCONF_KAFFE_DEB_STATS +KAFFE_AUTOCONF += --with-stats +else +KAFFE_AUTOCONF += --without-stats +endif + +ifdef PTXCONF_KAFFE_FEAT_GCJ +KAFFE_AUTOCONF += --enable-gcj +else +KAFFE_AUTOCONF += --disable-gcj +endif + +ifdef PTXCONF_KAFFE_AWT_NO +KAFFE_AUTOCONF += --without-x --with-awt=no +endif +ifdef PTXCONF_KAFFE_AWT_X +KAFFE_AUTOCONF += --with-awt=X +endif +ifdef PTXCONF_KAFFE_AWT_QT +KAFFE_AUTOCONF += --with-awt=qt +endif + +ifdef PTXCONF_KAFFE_FEAT_FEEDBACK +KAFFE_AUTOCONF += --enable-feedback +else +KAFFE_AUTOCONF += --disable-feedback +endif +ifdef PTXCONF_KAFFE_FEAT_JAVAMATH +KAFFE_AUTOCONF += --enable-pure-java-math +else +KAFFE_AUTOCONF += --disable-pure-java-math +endif + +ifdef PTXCONF_KAFFE_FEAT_DISABLE_SOUND +KAFFE_AUTOCONF += --disable-sound +endif +ifdef PTXCONF_KAFFE_FEAT_DISABLE_ALSA +KAFFE_AUTOCONF += --without-alsa +endif +ifdef PTXCONF_KAFFE_FEAT_DISABLE_ESD +KAFFE_AUTOCONF += --without-esd +endif +ifdef PTXCONF_KAFFE_FEAT_DISABLE_SUNCOMPAT +KAFFE_AUTOCONF += --without-suncompat +endif + +ifdef PTXCONF_KAFFE_FEAT_CLDC_GMP +KAFFE_AUTOCONF += --enable-cldc-bigint +endif + +ifdef PTXCONF_KAFFE_LINK_BIN +KAFFE_AUTOCONF += --with-staticbin +endif +ifdef PTXCONF_KAFFE_LINK_VM +KAFFE_AUTOCONF += --with-staticvm +endif +ifdef PTXCONF_KAFFE_LINK_LIB +KAFFE_AUTOCONF += --with-staticlib +endif + +$(STATEDIR)/kaffe.prepare: $(kaffe_prepare_deps) + @$(call targetinfo, kaffe.prepare) + @$(call clean, $(KAFFE_BUILDDIR)) + mkdir -p $(KAFFE_BUILDDIR) + cd $(KAFFE_BUILDDIR) && \ + $(KAFFE_PATH) $(KAFFE_ENV) \ + $(KAFFE_DIR)/configure $(KAFFE_AUTOCONF) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +kaffe_compile: $(STATEDIR)/kaffe.compile + +kaffe_compile_deps = $(STATEDIR)/kaffe.prepare + +ifdef KAFFE_JIKES_WO_DEBUG +KAFFE_MAKEVARS = JAVAC_FLAGS="-g:none -verbose" +else +KAFFE_MAKEVARS = JAVAC_FLAGS="-verbose" +endif + +$(STATEDIR)/kaffe.compile: $(kaffe_compile_deps) + @$(call targetinfo, kaffe.compile) + $(KAFFE_PATH) make -C $(KAFFE_BUILDDIR) $(KAFFE_MAKEVARS) + +ifdef PTXCONF_KAFFE_LINK_GMP +# +# what we here do is: +# - in the .la file is a list of libs this lib depends on +# - during linking this lib against the kaffe-bin, it is passed to the linker +# - we replace the shared library (-lgmp) with the static one (/path/to/libgmp.a) +# + perl -i -p -e 's,-lgmp,$(CROSS_LIB_DIR)/lib/libgmp.a,' \ + $(KAFFE_BUILDDIR)/libraries/clib-cldc/native/libnative.la + $(KAFFE_PATH) make -C $(KAFFE_BUILDDIR) $(KAFFE_MAKEVARS) +endif + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +kaffe_install: $(STATEDIR)/kaffe.install + +$(STATEDIR)/kaffe.install: $(STATEDIR)/kaffe.compile + @$(call targetinfo, kaffe.install) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +kaffe_targetinstall: $(STATEDIR)/kaffe.targetinstall + +kaffe_targetinstall_deps = $(STATEDIR)/kaffe.compile + +ifdef PTXCONF_KAFFE_TARGETINSTALL_GMP +kaffe_targetinstall_deps += $(STATEDIR)/gmp3.targetinstall +endif + +$(STATEDIR)/kaffe.targetinstall: $(kaffe_targetinstall_deps) + @$(call targetinfo, kaffe.targetinstall) + @$(call clean, $(KAFFE_BUILDDIR)-tmp) + mkdir -p $(ROOTDIR)/usr/jre/bin + mkdir -p $(ROOTDIR)/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE) + + $(KAFFE_PATH) make -C $(KAFFE_BUILDDIR) $(KAFFE_MAKEVARS) \ + install DESTDIR=$(KAFFE_BUILDDIR)-tmp + + install $(KAFFE_BUILDDIR)-tmp/usr/jre/bin/kaffe-bin \ + $(ROOTDIR)/usr/jre/bin/kaffe-bin + $(CROSS_STRIP) -R .note -R .comment $(ROOTDIR)/usr/jre/bin/kaffe-bin + + install $(KAFFE_BUILDDIR)-tmp/usr/jre/bin/kaffe \ + $(ROOTDIR)/usr/jre/bin/kaffe + + rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm.la + rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/*.a + +ifdef PTXCONF_KAFFE_LINK_VM + rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm* +endif + +ifdef PTXCONF_KAFFE_LINK_LIB + rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm* +endif + +ifdef PTXCONF_KAFFE_LINK_BIN + rm -rf $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/libkaffevm* +endif + + cp -av $(KAFFE_BUILDDIR)-tmp/usr/jre/lib/* $(ROOTDIR)/usr/jre/lib/ + $(CROSS_STRIP) -R .note -R .comment \ + $(ROOTDIR)/usr/jre/lib/$(PTXCONF_ARCH_USERSPACE)/*.so || true + + rm -rf $(KAFFE_BUILDDIR)-tmp + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +kaffe_clean: + rm -rf $(STATEDIR)/xchain-kaffe.extract + rm -rf $(STATEDIR)/xchain-kaffe.prepare + rm -rf $(STATEDIR)/xchain-kaffe.compile + rm -rf $(STATEDIR)/kaffe* + rm -rf $(KAFFE_DIR) + rm -rf $(KAFFE_BUILDDIR) + rm -rf $(XCHAIN_KAFFE_BUILDDIR) + rm -rf $(KAFFE_KANGAROO_DIR) + +# vim: syntax=make
\ No newline at end of file diff --git a/rules/kernel.make b/rules/kernel.make new file mode 100644 index 000000000..120ad040d --- /dev/null +++ b/rules/kernel.make @@ -0,0 +1,431 @@ +# -*-makefile-*- +# $Id: kernel.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2002 by Pengutronix e.K., Hildesheim, Germany +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# There are two "groups" of targets here: that ones starting with xchain- are +# only used for the cross chain. The "normal" targets are used for building the +# runtime kernel. +# + +# +# We provide this package +# +ifndef PTXCONF_DONT_COMPILE_KERNEL +PACKAGES += kernel +endif + +# +# Paths and names +# +# FIXME: make extraversion configurable! +# +ifeq (y,$(PTXCONF_KERNEL_2_4_18)) +KERNEL = linux-2.4.18 +KERNEL_URL = ftp://ftp.kernel.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2 +KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2 +KERNEL_DIR = $(BUILDDIR)/$(KERNEL) +KERNEL_EXTRACT = bzip2 -dc + +KERNEL_RMKPATCH = patch-2.4.18-rmk7 +KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_EXTRACT = bzip2 -dc + +KERNEL_PXAPATCH = diff-2.4.18-rmk7-pxa3 +KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_EXTRACT = gzip -dc + +KERNEL_PTXPATCH = patch-2.4.18-rmk7-ptx3 +KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH) +KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/dnp/patch-2.4.18-rmk7-ptx3 +KERNEL_PTXPATCH_EXTRACT = cat + +ifeq (y, $(PTXCONF_RTAI_ALLSOFT)) +KERNEL_RTAIPATCH = patch-2.4.18-allsoft +endif +ifeq (y, $(PTXCONF_RTAI_RTHAL)) +KERNEL_RTAIPATCH = patch-2.4.18-rthal5g +endif +KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches +endif + +ifeq (y,$(PTXCONF_KERNEL_2_4_19)) +KERNEL = linux-2.4.19 +KERNEL_URL = ftp://ftp.rfc822.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2 +KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2 +KERNEL_DIR = $(BUILDDIR)/$(KERNEL) +KERNEL_EXTRACT = bzip2 -dc + +KERNEL_RMKPATCH = patch-2.4.19-rmk7 +KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_EXTRACT = bzip2 -dc + +KERNEL_PXAPATCH = diff-2.4.19-rmk7-pxa2 +KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_EXTRACT = gzip -dc + +KERNEL_MTDPATCH = linux-2.4.19-rmk7-pxa2-mtd20030424.diff +KERNEL_MTDPATCH_SOURCE = $(SRCDIR)/$(KERNEL_MTDPATCH).bz2 +KERNEL_MTDPATCH_URL = http://www.pengutronix.de/software/linux-arm/$(KERNEL_MTDPATCH).bz2 +KERNEL_MTDPATCH_DIR = $(BUILDDIR)/$(KERNEL) +KERNEL_MTDPATCH_EXTRACT = bzip2 -cd + +KERNEL_PTXPATCH = linux-2.4.19-rmk7-pxa2-ptx4.diff +KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH) +KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/linux-arm/$(KERNEL_PTXPATCH) +KERNEL_PTXPATCH_EXTRACT = cat + +ifeq (y, $(PTXCONF_RTAI_ALLSOFT)) +KERNEL_RTAIPATCH = patch-2.4.19-allsoft +endif +ifeq (y, $(PTXCONF_RTAI_RTHAL)) +KERNEL_RTAIPATCH = patch-2.4.19-rthal5g +endif +KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches +endif + +ifeq (y,$(PTXCONF_KERNEL_2_4_20)) +KERNEL = linux-2.4.20 +KERNEL_URL = ftp://ftp.rfc822.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2 +KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2 +KERNEL_DIR = $(BUILDDIR)/$(KERNEL) +KERNEL_EXTRACT = bzip2 -dc + +#FIXME: find right patch // not yet available +KERNEL_RMKPATCH = patch-2.4.19-rmk4 +KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_EXTRACT = bzip2 -dc + +#FIXME: find right patch // not yet available +KERNEL_PXAPATCH = diff-2.4.19-rmk4-pxa1 +KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_SOURCE = $(SRCDIR22)/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_EXTRACT = gzip -dc + +#FIXME: find right patch // not yet available +KERNEL_PTXPATCH = linux-2.4.19-rmk4-pxa1-ptx10.diff +KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH) +KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/linux-arm/$(KERNEL_PTXPATCH) +KERNEL_PTXPATCH_EXTRACT = cat + +ifeq (y, $(PTXCONF_RTAI_ALLSOFT)) +KERNEL_RTAIPATCH = patch-2.4.20-allsoft +endif +ifeq (y, $(PTXCONF_RTAI_RTHAL)) +KERNEL_RTAIPATCH = patch-2.4.20-rthal5g +endif +KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches +endif + +ifeq (y,$(PTXCONF_KERNEL_2_4_21)) +KERNEL = linux-2.4.21 +KERNEL_URL = ftp://ftp.rfc822.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2 +KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2 +KERNEL_DIR = $(BUILDDIR)/$(KERNEL) +KERNEL_EXTRACT = bzip2 -dc + +#FIXME: find right patch // not yet available +KERNEL_RMKPATCH = patch-2.4.19-rmk4 +KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2 +KERNEL_RMKPATCH_EXTRACT = bzip2 -dc + +#FIXME: find right patch // not yet available +KERNEL_PXAPATCH = diff-2.4.19-rmk4-pxa1 +KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PXAPATCH).gz +KERNEL_PXAPATCH_EXTRACT = gzip -dc + +#FIXME: find right patch // not yet available +KERNEL_PTXPATCH = linux-2.4.19-rmk4-pxa1-ptx10.diff +KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH) +KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/linux-arm/$(KERNEL_PTXPATCH) +KERNEL_PTXPATCH_EXTRACT = cat + +KERNEL_UCLINUXPATCH = uClinux-2.4.21-uc0.diff.gz +KERNEL_UCLINUXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_UCLINUXPATCH) +KERNEL_UCLINUXPATCH_URL = http://www.uclinux.org/pub/uClinux/uClinux-2.4.x/$(KERNEL_UCLINUXPATCH) +KERNEL_UCLINUXPATCH_EXTRACT = zcat + +ifeq (y, $(PTXCONF_RTAI_ALLSOFT)) +KERNEL_RTAIPATCH = patch-2.4.21-allsoft +endif +ifeq (y, $(PTXCONF_RTAI_RTHAL)) +KERNEL_RTAIPATCH = patch-2.4.21-rthal5g +endif +KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches +endif + +ifeq (y, $(PTXCONF_KERNEL_IMAGE_Z)) +KERNEL_TARGET = zImage +KERNEL_TARGET_PATH = $(KERNEL_DIR)/arch/$(PTXCONF_ARCH)/boot/zImage +endif +ifeq (y, $(PTXCONF_KERNEL_IMAGE_BZ)) +KERNEL_TARGET = bzImage +KERNEL_TARGET_PATH = $(KERNEL_DIR)/arch/$(PTXCONF_ARCH)/boot/bzImage +endif +ifeq (y, $(PTXCONF_KERNEL_IMAGE_U)) +KERNEL_TARGET = uImage +KERNEL_TARGET_PATH = $(KERNEL_DIR)/uImage +endif +ifeq (y, $(PTXCONF_KERNEL_IMAGE_VMLINUX)) +KERNEL_TARGET = vmlinux +KERNEL_TARGET_PATH = $(KERNEL_DIR)/vmlinux +endif + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +kernel_get: $(STATEDIR)/kernel.get + +kernel_get_deps = $(KERNEL_SOURCE) + +ifdef PTXCONF_ARCH_NOMMU +kernel_get_deps += $(KERNEL_UCLINUXPATCH_SOURCE) +endif +ifdef PTXCONF_ARCH_ARM +kernel_get_deps += $(KERNEL_RMKPATCH_SOURCE) +endif +ifdef PTXCONF_KERNEL_XSCALE +kernel_get_deps += $(KERNEL_PXAPATCH_SOURCE) +endif +ifdef PTXCONF_KERNEL_XSCALE_PTX +kernel_get_deps += $(KERNEL_MTDPATCH_SOURCE) +kernel_get_deps += $(KERNEL_PTXPATCH_SOURCE) +endif + +$(STATEDIR)/kernel.get: $(kernel_get_deps) + @$(call targetinfo, kernel.get) + touch $@ + +$(KERNEL_SOURCE): + @$(call targetinfo, $(KERNEL_SOURCE)) + wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_URL) + +$(KERNEL_RMKPATCH_SOURCE): + @$(call targetinfo, $(KERNEL_RMKPATCH_SOURCE)) + wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_RMKPATCH_URL) + +$(KERNEL_PXAPATCH_SOURCE): + @$(call targetinfo, $(KERNEL_PXAPATCH_SOURCE)) + wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_PXAPATCH_URL) + +$(KERNEL_MTDPATCH_SOURCE): + @$(call targetinfo, $(KERNEL_MTDPATCH_SOURCE)) + wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_MTDPATCH_URL) + +$(KERNEL_PTXPATCH_SOURCE): + @$(call targetinfo, $(KERNEL_PTXPATCH_SOURCE)) + wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_PTXPATCH_URL) + +$(KERNEL_UCLINUXPATCH_SOURCE): + @$(call targetinfo, $(KERNEL_UCLINUXPATCH_SOURCE)) + @$(call get, $(KERNEL_UCLINUXPATCH_URL) + +# +# RTAI patches are included in the normal RTAI packet +# +rtai-patches_get: $(STATEDIR)/rtai-patches.get + +$(STATEDIR)/rtai-patches.get: $(RTAI_SOURCE) + @$(call targetinfo, rtai-patches.get) + touch $@ + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +kernel_extract: $(STATEDIR)/kernel.extract + +kernel_extract_deps = $(STATEDIR)/kernel.get +ifeq (y, $(PTXCONF_RTAI)) +kernel_extract_deps += $(STATEDIR)/rtai-patches.extract +endif +ifeq (y, $(PTXCONF_KERNEL_MTD)) +kernel_extract_deps += $(STATEDIR)/mtd.extract +endif + +$(STATEDIR)/kernel.extract: $(kernel_extract_deps) + @$(call targetinfo, kernel.extract) + @$(call clean, $(KERNEL_DIR)) + @$(call extract, $(KERNEL_SOURCE)) +# # +# # kernels before 2.4.19 extract to "linux" instead of "linux-version" +# # + ifeq (y,$(PTXCONF_KERNEL_2_4_18)) + cd $(BUILDDIR) && mv linux $(KERNEL_DIR) + endif +# # +# # ARM patch +# # + ifeq (y,$(PTXCONF_ARCH_ARM)) + cd $(KERNEL_DIR) && \ + $(KERNEL_RMKPATCH_EXTRACT) $(KERNEL_RMKPATCH_SOURCE) | \ + patch -p1 + endif +# # +# # XSCALE patch +# # + ifeq (y, $(PTXCONF_KERNEL_XSCALE)) + cd $(KERNEL_DIR) && \ + $(KERNEL_PXAPATCH_EXTRACT) $(KERNEL_PXAPATCH_SOURCE) | \ + patch -p1 + endif +# # +# # MTD patch +# # + ifeq (y, $(PTXCONF_KERNEL_MTD)) + cd $(KERNEL_DIR) && \ + $(KERNEL_MTDPATCH_EXTRACT) $(KERNEL_MTDPATCH_SOURCE) | \ + patch -p1 + endif +# # +# # XSCALE_PTX patch +# # + ifeq (y, $(PTXCONF_KERNEL_XSCALE_PTX)) + cd $(KERNEL_DIR) && \ + $(KERNEL_PTXPATCH_EXTRACT) $(KERNEL_PTXPATCH_SOURCE) | \ + patch -p1 + endif +# # +# # patch for mmu-less architectures +# # + ifdef PTXCONF_ARCH_NOMMU + cd $(KERNEL_DIR) && \ + $(KERNEL_UCLINUXPATCH_EXTRACT) $(KERNEL_UCLINUXPATCH_SOURCE) | \ + patch -p1 || true + endif +# # +# # patches for all architectures +# # + ifeq (y, $(PTXCONF_RTAI)) + cd $(KERNEL_DIR) && \ + patch -p1 < $(KERNEL_RTAIPATCH_DIR)/$(RTAI)/patches/$(KERNEL_RTAIPATCH) + endif + touch $@ + +# +# RTAI patch +# + +rtai-patches_extract: $(STATEDIR)/rtai-patches.extract + +$(STATEDIR)/rtai-patches.extract: $(STATEDIR)/rtai-patches.get + @$(call targetinfo, rtai-patches.extract) +# # remove old rtaipatch directory + rm -fr $(KERNEL_RTAIPATCH_DIR) + install -d $(KERNEL_RTAIPATCH_DIR) +# # extract only the patches directory + cd $(KERNEL_RTAIPATCH_DIR) && \ + tar zxvf $(RTAI_SOURCE) $(RTAI)/patches + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +kernel_prepare: $(STATEDIR)/kernel.prepare + +kernel_prepare_deps = $(STATEDIR)/kernel.extract +ifdef PTXCONF_RTAI +kernel_prepare_deps += $(STATEDIR)/rtai-patches.extract +endif +ifdef PTXCONF_BUILD_CROSSCHAIN +kernel_prepare_deps += $(STATEDIR)/xchain-gccstage2.install +endif + +KERNEL_PATH = PATH=$(CROSS_PATH) +KERNEL_MAKEVARS = ARCH=$(PTXCONF_ARCH) CROSS_COMPILE=$(PTXCONF_GNU_TARGET)- HOSTCC=$(HOSTCC) + +$(STATEDIR)/kernel.prepare: $(kernel_prepare_deps) + @$(call targetinfo, kernel.prepare) + + test -f $(TOPDIR)/config/kernel/$(PTXCONF_KERNEL_CONFIG) && \ + install -m 644 $(TOPDIR)/config/kernel/$(PTXCONF_KERNEL_CONFIG) \ + $(KERNEL_DIR)/.config + + $(KERNEL_PATH) make -C $(KERNEL_DIR) $(KERNEL_MAKEVARS) \ + oldconfig + $(KERNEL_PATH) make -C $(KERNEL_DIR) $(KERNEL_MAKEVARS) \ + dep + + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +kernel_compile: $(STATEDIR)/kernel.compile + +kernel_compile_deps = $(STATEDIR)/kernel.prepare +ifdef PTXCONF_KERNEL_IMAGE_U +kernel_compile_deps += $(STATEDIR)/umkimage.install +endif + +$(STATEDIR)/kernel.compile: $(kernel_compile_deps) + @$(call targetinfo, kernel.compile) + $(KERNEL_PATH) make -C $(KERNEL_DIR) $(KERNEL_MAKEVARS) \ + $(KERNEL_TARGET) modules + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +kernel_install: $(STATEDIR)/kernel.install + +$(STATEDIR)/kernel.install: $(STATEDIR)/kernel.compile + @$(call targetinfo, kernel.install) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +kernel_targetinstall: $(STATEDIR)/kernel.targetinstall + +$(STATEDIR)/kernel.targetinstall: $(STATEDIR)/kernel.install + @$(call targetinfo, kernel.targetinstall) + ifeq (y,$(PTXCONF_KERNEL_INSTALL)) + mkdir -p $(ROOTDIR)/boot + install $(KERNEL_TARGET_PATH) $(ROOTDIR)/boot + $(KERNEL_PATH) make -C $(KERNEL_DIR) $(KERNEL_MAKEVARS) \ + modules_install INSTALL_MOD_PATH=$(ROOTDIR) + endif # PTXCONF_KERNEL_INSTALL + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +kernel_clean: rtai-patches_clean + rm -rf $(STATEDIR)/kernel.* $(KERNEL_DIR) + +rtai-patches_clean: + rm -rf $(STATEDIR)/rtai-patches.* $(KERNEL_RTAIPATCH_DIR) + +kernel_menuconfig: $(STATEDIR)/kernel.extract + if test -f $(TOPDIR)/config/kernel/$(PTXCONF_KERNEL_CONFIG) ; then \ + install -m 644 $(TOPDIR)/config/kernel/$(PTXCONF_KERNEL_CONFIG) \ + $(KERNEL_DIR)/.config ; \ + fi + + $(KERNEL_PATH) make -C $(KERNEL_DIR) $(KERNEL_MAKEVARS) \ + menuconfig + + install -m 644 $(KERNEL_DIR)/.config \ + $(TOPDIR)/config/kernel/$(PTXCONF_KERNEL_CONFIG) ; \ + rm $(STATEDIR)/kernel.compile || true +# vim: syntax=make
\ No newline at end of file diff --git a/rules/ksymoops.make b/rules/ksymoops.make index 6419bbb31..9b54bdc29 100644 --- a/rules/ksymoops.make +++ b/rules/ksymoops.make @@ -1,4 +1,5 @@ -# $Id: ksymoops.make,v 1.3 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: ksymoops.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -30,10 +31,11 @@ KSYMOOPS_EXTRACT = bzip2 -dc ksymoops_get: $(STATEDIR)/ksymoops.get $(STATEDIR)/ksymoops.get: $(KSYMOOPS_SOURCE) + @$(call targetinfo, ksymoops.get) touch $@ $(KSYMOOPS_SOURCE): - @$(call targetinfo, ksymoops.get) + @$(call targetinfo, $(KSYMOOPS_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(KSYMOOPS_URL) # ---------------------------------------------------------------------------- diff --git a/rules/liboop.make b/rules/liboop.make index 46435f65a..e7f729927 100644 --- a/rules/liboop.make +++ b/rules/liboop.make @@ -1,4 +1,5 @@ -# $Id: liboop.make,v 1.3 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: liboop.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -30,10 +31,11 @@ LIBOOP_EXTRACT = gzip -dc liboop_get: $(STATEDIR)/liboop.get $(STATEDIR)/liboop.get: $(LIBOOP_SOURCE) + @$(call targetinfo, liboop.get) touch $@ $(LIBOOP_SOURCE): - @$(call targetinfo, liboop.get) + @$(call targetinfo, $(LIBOOP_SOURCES)) wget -P $(SRCDIR) $(PASSIVEFTP) $(LIBOOP_URL) # ---------------------------------------------------------------------------- diff --git a/rules/lilo.make b/rules/lilo.make new file mode 100644 index 000000000..4baf8de74 --- /dev/null +++ b/rules/lilo.make @@ -0,0 +1,113 @@ +# -*-makefile-*- +# $Id: lilo.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_LILO +PACKAGES += lilo +endif + +# +# Paths and names +# +LILO = lilo-22.5.4 +LILO_URL = http://home.san.rr.com/johninsd/pub/linux/lilo/$(LILO).tar.gz +LILO_SOURCE = $(SRCDIR)/$(LILO).tar.gz +LILO_DIR = $(BUILDDIR)/$(LILO) +LILO_EXTRACT = gzip -dc + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +lilo_get: $(STATEDIR)/lilo.get + +lilo_get_deps = $(LILO_SOURCE) + +$(STATEDIR)/lilo.get: $(lilo_get_deps) + @$(call targetinfo, lilo.get) + touch $@ + +$(LILO_SOURCE): + @$(call targetinfo, $(LILO_SOURCE)) + wget -P $(SRCDIR) $(PASSIVEFTP) $(LILO_URL) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +lilo_extract: $(STATEDIR)/lilo.extract + +$(STATEDIR)/lilo.extract: $(STATEDIR)/lilo.get + @$(call targetinfo, lilo.extract) + $(LILO_EXTRACT) $(LILO_SOURCE) | tar -C $(BUILDDIR) -xf - + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +lilo_prepare: $(STATEDIR)/lilo.prepare + +LILO_PATH = PATH=$(CROSS_PATH) +LILO_MAKEVARS = CROSS=$(PTXCONF_GNU_TARGET)- + +# +# dependencies +# +lilo_prepare_deps = $(STATEDIR)/lilo.extract $(STATEDIR)/virtual-xchain.install + +$(STATEDIR)/lilo.prepare: $(lilo_prepare_deps) + @$(call targetinfo, lilo.prepare) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +lilo_compile: $(STATEDIR)/lilo.compile + +lilo_compile_deps = $(STATEDIR)/lilo.prepare + +$(STATEDIR)/lilo.compile: $(lilo_compile_deps) + @$(call targetinfo, lilo.compile) + $(LILO_PATH) make -C $(LILO_DIR) $(LILO_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +lilo_install: $(STATEDIR)/lilo.install + +$(STATEDIR)/lilo.install: $(STATEDIR)/lilo.compile + @$(call targetinfo, lilo.install) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +lilo_targetinstall: $(STATEDIR)/lilo.targetinstall + +$(STATEDIR)/lilo.targetinstall: $(STATEDIR)/lilo.install + @$(call targetinfo, lilo.targetinstall) + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +lilo_clean: + -rm -rf $(STATEDIR)/lilo* + -rm -rf $(LILO_DIR) + +# vim: syntax=make
\ No newline at end of file diff --git a/rules/lsh.make b/rules/lsh.make index febcb10c5..6b753b592 100644 --- a/rules/lsh.make +++ b/rules/lsh.make @@ -1,4 +1,5 @@ -# $Id: lsh.make,v 1.3 2003/06/25 12:12:31 robert Exp $ +# -*-makefile-*- +# $Id: lsh.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -30,10 +31,11 @@ LSH_EXTRACT = gzip -dc lsh_get: $(STATEDIR)/lsh.get $(STATEDIR)/lsh.get: $(LSH_SOURCE) + @$(call targetinfo, lsh.get) touch $@ $(LSH_SOURCE): - @$(call targetinfo, lsh.get) + @$(call targetinfo, $(LSH_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(LSH_URL) # ---------------------------------------------------------------------------- diff --git a/rules/mtd.make b/rules/mtd.make index 231baaa8f..950bc2b7e 100644 --- a/rules/mtd.make +++ b/rules/mtd.make @@ -1,4 +1,5 @@ -# $Id: mtd.make,v 1.2 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: mtd.make,v 1.3 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -35,12 +36,13 @@ MTD_EXTRACT = gzip -dc mtd_get: $(STATEDIR)/mtd.get $(STATEDIR)/mtd.get: $(MTD_SOURCE) + @$(call targetinfo, mtdutil.get) touch $@ mtdutil_get: $(STATEDIR)/mtdutil.get $(STATEDIR)/mtdutil.get: $(MTD_SOURCE) - @$(call targetinfo, mtdutil.get) + @$(call targetinfo, $(MTD_SOURCE)) touch $@ $(MTD_SOURCE): @@ -116,8 +118,6 @@ MTD-UTIL_ENVIRONMENT = MTD-UTIL_MAKEVARS = MTD-UTIL_ENVIRONMENT += PATH=$(PTXCONF_PREFIX)/bin:$$PATH MTD-UTIL_MAKEVARS += CROSS=$(PTXCONF_GNU_TARGET)- -MTD-UTIL_MAKEVARS += CFLAGS=-I$(PTXCONF_PREFIX)/include -MTD-UTIL_MAKEVARS += LDFLAGS=-L$(ZLIB_DIR) mtdutil_compile: $(STATEDIR)/mtdutil.compile @@ -160,63 +160,63 @@ $(STATEDIR)/mtdutil.targetinstall: $(STATEDIR)/mtdutil.install @$(call targetinfo, mtdutil.targetinstall) ifeq (y, $(PTXCONF_MTD_EINFO)) install $(BUILDDIR)/mtdutil/$(MTD)/util/einfo $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/einfo + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/einfo endif ifeq (y, $(PTXCONF_MTD_ERASE)) install $(BUILDDIR)/mtdutil/$(MTD)/util/erase $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/erase + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/erase endif ifeq (y, $(PTXCONF_MTD_ERASEALL)) install $(BUILDDIR)/mtdutil/$(MTD)/util/eraseall $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/eraseall + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/eraseall endif ifeq (y, $(PTXCONF_MTD_FCP)) install $(BUILDDIR)/mtdutil/$(MTD)/util/fcp $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/fcp + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/fcp endif ifeq (y, $(PTXCONF_MTD_FTL_CHECK)) install $(BUILDDIR)/mtdutil/$(MTD)/util/ftl_check $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/check + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/check endif ifeq (y, $(PTXCONF_MTD_FTL_FORMAT)) install $(BUILDDIR)/mtdutil/$(MTD)/util/ftl_format $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/ftl_format + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/ftl_format endif ifeq (y, $(PTXCONF_MTD_JFFS2READER)) install $(BUILDDIR)/mtdutil/$(MTD)/util/jffs2reader $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/jffs2reader + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/jffs2reader endif ifeq (y, $(PTXCONF_MTD_LOCK)) install $(BUILDDIR)/mtdutil/$(MTD)/util/lock $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/lock + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/lock endif ifeq (y, $(PTXCONF_MTD_MTDDEBUG)) install $(BUILDDIR)/mtdutil/$(MTD)/util/mtd_debug $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/mtd_debug + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/mtd_debug endif ifeq (y, $(PTXCONF_MTD_NANDDUMP)) install $(BUILDDIR)/mtdutil/$(MTD)/util/nanddump $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nanddump + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nanddump endif ifeq (y, $(PTXCONF_MTD_NANDTEST)) install $(BUILDDIR)/mtdutil/$(MTD)/util/nandtest $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nandtest + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nandtest endif ifeq (y, $(PTXCONF_MTD_NANDWRITE)) install $(BUILDDIR)/mtdutil/$(MTD)/util/nandwrite $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nandwrite + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nandwrite endif ifeq (y, $(PTXCONF_MTD_NFTL_FORMAT)) install $(BUILDDIR)/mtdutil/$(MTD)/util/nftl_format $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nftl_format + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nftl_format endif ifeq (y, $(PTXCONF_MTD_NFTLDUMP)) install $(BUILDDIR)/mtdutil/$(MTD)/util/nftldump $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nftldump + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nftldump endif ifeq (y, $(PTXCONF_MTD_UNLOCK)) install $(BUILDDIR)/mtdutil/$(MTD)/util/unlock $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/unlock + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/unlock endif touch $@ diff --git a/rules/ncurses.make b/rules/ncurses.make index 90c36ec82..599136a4d 100644 --- a/rules/ncurses.make +++ b/rules/ncurses.make @@ -1,4 +1,5 @@ -# $Id: ncurses.make,v 1.3 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: ncurses.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -31,10 +32,11 @@ NCURSES_EXTRACT = gzip -dc ncurses_get: $(STATEDIR)/ncurses.get $(STATEDIR)/ncurses.get: $(NCURSES_SOURCE) + @$(call targetinfo, ncurses.get) touch $@ $(NCURSES_SOURCE): - @$(call targetinfo, ncurses.get) + @$(call targetinfo, $(NCURSES_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(NCURSES_URL) # ---------------------------------------------------------------------------- diff --git a/rules/nettle.make b/rules/nettle.make index 7d794c364..e7fd4aef8 100644 --- a/rules/nettle.make +++ b/rules/nettle.make @@ -1,4 +1,5 @@ -# $Id: nettle.make,v 1.3 2003/06/25 12:12:31 robert Exp $ +# -*-makefile-*- +# $Id: nettle.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -30,10 +31,11 @@ NETTLE_EXTRACT = gzip -dc nettle_get: $(STATEDIR)/nettle.get $(STATEDIR)/nettle.get: $(NETTLE_SOURCE) + @$(call targetinfo, nettle.get) touch $@ $(NETTLE_SOURCE): - @$(call targetinfo, nettle.get) + @$(call targetinfo, $(NETTLE_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(NETTLE_URL) # ---------------------------------------------------------------------------- diff --git a/rules/nfs-utils.make b/rules/nfs-utils.make index 176603518..28da3ba2c 100644 --- a/rules/nfs-utils.make +++ b/rules/nfs-utils.make @@ -1,4 +1,5 @@ -# $Id: nfs-utils.make,v 1.3 2003/06/25 12:12:31 robert Exp $ +# -*-makefile-*- +# $Id: nfs-utils.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -30,10 +31,11 @@ NFSUTILS_EXTRACT = gzip -dc nfsutils_get: $(STATEDIR)/nfsutils.get $(STATEDIR)/nfsutils.get: $(NFSUTILS_SOURCE) + @$(call targetinfo, nfsutils.get) touch $@ $(NFSUTILS_SOURCE): - @$(call targetinfo, nfsutils.get) + @$(call targetinfo, $(NFSUTILS_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(NFSUTILS_URL) # ---------------------------------------------------------------------------- @@ -44,7 +46,8 @@ nfsutils_extract: $(STATEDIR)/nfsutils.extract $(STATEDIR)/nfsutils.extract: $(STATEDIR)/nfsutils.get $(STATEDIR)/autoconf257.targetinstall @$(call targetinfo, nfsutils.extract) - $(NFSUTILS_EXTRACT) $(NFSUTILS_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(NFSUTILS_DIR)) + @$(call extract, $(NFSUTILS_SOURCE)) # # regenerate configure script with new autoconf, to make cross compiling work cd $(NFSUTILS_DIR) && PATH=$(PTXCONF_PREFIX)/$(AUTOCONF257)/bin:$$PATH autoconf @@ -56,18 +59,15 @@ $(STATEDIR)/nfsutils.extract: $(STATEDIR)/nfsutils.get $(STATEDIR)/autoconf257.t nfsutils_prepare: $(STATEDIR)/nfsutils.prepare -NFSUTILS_AUTOCONF = -NFSUTILS_ENVIRONMENT = - # # # arcitecture dependend configuration # # # -NFSUTILS_AUTOCONF += --build=$(GNU_HOST) -NFSUTILS_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) -NFSUTILS_ENVIRONMENT = PATH=$(PTXCONF_PREFIX)/bin:$$PATH -NFSUTILS_ENVIRONMENT += CC=$(PTXCONF_GNU_TARGET)-gcc CC_FOR_BUILD=gcc -NFSUTILS_MAKEVARS = +NFSUTILS_AUTOCONF = --build=$(GNU_HOST) +NFSUTILS_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) + +NFSUTILS_PATH = PATH=$(CROSS_PATH) +NFSUTILS_ENV += CC_FOR_BUILD=$(HOSTCC) $(CROSS_ENV) ifeq (y, $(PTXCONF_NFSUTILS_V3)) NFSUTILS_AUTOCONF += --enable-nfsv3 @@ -84,13 +84,16 @@ NFSUTILS_AUTOCONF += --enable-rquotad else NFSUTILS_AUTOCONF += --disable-rquotad endif - -$(STATEDIR)/nfsutils.prepare: $(STATEDIR)/nfsutils.extract + +nfsutils_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/nfsutils.extract + +$(STATEDIR)/nfsutils.prepare: $(nfsutils_prepare_deps) @$(call targetinfo, nfsutils.prepare) cd $(NFSUTILS_DIR) && \ - $(NFSUTILS_ENVIRONMENT) \ - $(NFSUTILS_DIR)/configure \ - $(NFSUTILS_AUTOCONF) + $(NFSUTILS_PATH) $(NFSUTILS_ENV) \ + $(NFSUTILS_DIR)/configure $(NFSUTILS_AUTOCONF) touch $@ # ---------------------------------------------------------------------------- @@ -101,7 +104,7 @@ nfsutils_compile: $(STATEDIR)/nfsutils.compile $(STATEDIR)/nfsutils.compile: $(STATEDIR)/nfsutils.prepare @$(call targetinfo, nfsutils.compile) - $(NFSUTILS_ENVIRONMENT) make -C $(NFSUTILS_DIR) $(NFSUTILS_MAKEVARS) + $(NFSUTILS_PATH) make -C $(NFSUTILS_DIR) touch $@ # ---------------------------------------------------------------------------- @@ -112,7 +115,6 @@ nfsutils_install: $(STATEDIR)/nfsutils.install $(STATEDIR)/nfsutils.install: $(STATEDIR)/nfsutils.compile @$(call targetinfo, nfsutils.install) - # make -C $(NFSUTILS_DIR) install touch $@ # ---------------------------------------------------------------------------- @@ -123,7 +125,7 @@ nfsutils_targetinstall: $(STATEDIR)/nfsutils.targetinstall $(STATEDIR)/nfsutils.targetinstall: $(STATEDIR)/nfsutils.install @$(call targetinfo, nfsutils.targetinstall) - # don't forget to $(CROSSSTRIP) -S your source! + mkdir -p $(ROOTDIR)/etc/init.d ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_CLIENTSCRIPT)) install $(NFSUTILS_DIR)/etc/nodist/nfs-client $(ROOTDIR)/etc/init.d/ @@ -137,23 +139,23 @@ $(STATEDIR)/nfsutils.targetinstall: $(STATEDIR)/nfsutils.install ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_EXPORTFS)) install $(NFSUTILS_DIR)/utils/exportfs/exportfs $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/exportfs + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/exportfs endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_LOCKD)) install $(NFSUTILS_DIR)/utils/lockd/lockd $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/lockd + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/lockd endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_MOUNTD)) install $(NFSUTILS_DIR)/utils/mountd/mountd $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/mountd + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/mountd endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_NFSD)) install $(NFSUTILS_DIR)/utils/nfsd/nfsd $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nfsd + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nfsd endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_NFSSTAT)) install $(NFSUTILS_DIR)/utils/nfsstat/nfsstat $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nfsstat + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nfsstat endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_NHFSGRAPH)) # don't strip, this is a shell script @@ -169,15 +171,15 @@ $(STATEDIR)/nfsutils.targetinstall: $(STATEDIR)/nfsutils.install endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_NHFSSTONE)) install $(NFSUTILS_DIR)/utils/nhfsstone/nhfsstone $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/nhfsstone + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/nhfsstone endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_SHOWMOUNT)) install $(NFSUTILS_DIR)/utils/showmount/showmount $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/showmount + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/showmount endif ifeq (y, $(PTXCONF_NFSUTILS_INSTALL_STATD)) install $(NFSUTILS_DIR)/utils/statd/statd $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/statd + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/statd endif # create stuff necessary for nfs mkdir -p $(ROOTDIR)/var/lib/nfs diff --git a/rules/openssh.make b/rules/openssh.make index be88fafc6..de0624343 100644 --- a/rules/openssh.make +++ b/rules/openssh.make @@ -1,4 +1,5 @@ -# $Id: openssh.make,v 1.6 2003/07/07 13:19:04 bsp Exp $ +# -*-makefile-*- +# $Id: openssh.make,v 1.7 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -21,7 +22,10 @@ OPENSSH = openssh-3.6.1p2 OPENSSH_URL = ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$(OPENSSH).tar.gz OPENSSH_SOURCE = $(SRCDIR)/$(OPENSSH).tar.gz OPENSSH_DIR = $(BUILDDIR)/$(OPENSSH) -OPENSSH_EXTRACT = gzip -dc + +OPENSSH_PATCH = openssh.patch +OPENSSH_PATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(OPENSSH_PATCH) +OPENSSH_PATCH_SOURCE = $(SRCDIR)/$(OPENSSH_PATCH) # ---------------------------------------------------------------------------- # Get @@ -29,12 +33,21 @@ OPENSSH_EXTRACT = gzip -dc openssh_get: $(STATEDIR)/openssh.get -$(STATEDIR)/openssh.get: $(OPENSSH_SOURCE) +openssh_get_deps = \ + $(OPENSSH_SOURCE) \ + $(OPENSSH_PATCH_SOURCE) + +$(STATEDIR)/openssh.get: $(openssh_get_deps) + @$(call targetinfo, openssh.get) touch $@ $(OPENSSH_SOURCE): - @$(call targetinfo, openssh.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(OPENSSH_URL) + @$(call targetinfo, $(OPENSSH_SOURCE)) + @$(call get, $(OPENSSH_URL)) + +$(OPENSSH_PATCH_SOURCE): + @$(call targetinfo, $(OPENSSH_PATCH_SOURCE)) + @$(call get, $(OPENSSH_PATCH_URL)) # ---------------------------------------------------------------------------- # Extract @@ -42,9 +55,28 @@ $(OPENSSH_SOURCE): openssh_extract: $(STATEDIR)/openssh.extract -$(STATEDIR)/openssh.extract: $(STATEDIR)/openssh.get +# +# we depend on openssl.install, because we need the header files +# to patch configure.ac with the version string of the installed +# openssl packet +# +openssh_extract_deps = \ + $(STATEDIR)/autoconf257.install \ + $(STATEDIR)/openssl.install \ + $(STATEDIR)/openssh.get + +$(STATEDIR)/openssh.extract: $(openssh_extract_deps) @$(call targetinfo, openssh.extract) - $(OPENSSH_EXTRACT) $(OPENSSH_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(OPENSSH_DIR)) + @$(call extract, $(OPENSSH_SOURCE)) + + cd $(OPENSSH_DIR) && patch -p1 < $(OPENSSH_PATCH_SOURCE) + OPENSSL_VERSION_NUMBER="`sed -n -e 's/.*OPENSSL_VERSION_NUMBER.*0x[0]*\([0-9a-f]*\)L/\1/p' $(CROSS_LIB_DIR)/include/openssl/opensslv.h`" \ + OPENSSL_VERSION_TEXT="`sed -n -e 's/.*OPENSSL_VERSION_TEXT.*"\(.*\)"/\1/p' $(CROSS_LIB_DIR)/include/openssl/opensslv.h`" && \ + perl -i -p -e "s/ssl_library_ver=\"VERSION\"/ssl_library_ver=\"$$OPENSSL_VERSION_NUMBER ($$OPENSSL_VERSION_TEXT)\"/g" $(OPENSSH_DIR)/configure.ac && \ + perl -i -p -e "s/ssl_header_ver=\"VERSION\"/ssl_header_ver=\"$$OPENSSL_VERSION_NUMBER ($$OPENSSL_VERSION_TEXT)\"/g" $(OPENSSH_DIR)/configure.ac + + cd $(OPENSSH_DIR) && PATH=$(PTXCONF_PREFIX)/$(AUTOCONF257)/bin:$$PATH autoconf touch $@ # ---------------------------------------------------------------------------- @@ -53,16 +85,25 @@ $(STATEDIR)/openssh.extract: $(STATEDIR)/openssh.get openssh_prepare: $(STATEDIR)/openssh.prepare -OPENSSH_AUTOCONF = --prefix=/ --with-ipv4-default -OPENSSH_AUTOCONF += --without-pam --without-md5-passwords -OPENSSH_AUTOCONF += --with-zlib=$(PTXCONF_PREFIX) -# TODO dont know if this finds its way hardcoded into some binary: +OPENSSH_AUTOCONF = --prefix=/usr --libexecdir=/usr/sbin +OPENSSH_AUTOCONF += --without-pam --with-ipv4-default +OPENSSH_AUTOCONF += --build=$(GNU_HOST) +OPENSSH_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) OPENSSH_AUTOCONF += --with-privsep-path=/var/run/sshd -$(STATEDIR)/openssh.prepare: $(STATEDIR)/openssh.extract $(STATEDIR)/openssl.install + +openssh_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/openssh.extract + +OPENSSH_PATH = PATH=$(CROSS_PATH) +OPENSSH_ENV = $(CROSS_ENV) + +$(STATEDIR)/openssh.prepare: $(openssh_prepare_deps) @$(call targetinfo, openssh.prepare) - cd $(OPENSSH_DIR) && LIBS=-lcrypt \ - CC=$(PTXCONF_PREFIX)/bin/$(PTXCONF_GNU_TARGET)-gcc ./configure $(OPENSSH_AUTOCONF) + cd $(OPENSSH_DIR) && \ + $(OPENSSH_PATH) $(OPENSSH_ENV) \ + ./configure $(OPENSSH_AUTOCONF) touch $@ # ---------------------------------------------------------------------------- @@ -73,7 +114,7 @@ openssh_compile: $(STATEDIR)/openssh.compile $(STATEDIR)/openssh.compile: $(STATEDIR)/openssh.prepare @$(call targetinfo, openssh.compile) - cd $(OPENSSH_DIR) && PATH=$(PTXCONF_PREFIX)/bin:$$PATH make + $(OPENSSH_PATH) make -C $(OPENSSH_DIR) touch $@ # ---------------------------------------------------------------------------- @@ -92,12 +133,16 @@ $(STATEDIR)/openssh.install: $(STATEDIR)/openssh.compile openssh_targetinstall: $(STATEDIR)/openssh.targetinstall -$(STATEDIR)/openssh.targetinstall: $(STATEDIR)/openssh.install +$(STATEDIR)/openssh.targetinstall: $(STATEDIR)/openssh.compile @$(call targetinfo, openssh.targetinstall) touch $(ROOTDIR)/SSH_hostkeys_needed - cd $(OPENSSH_DIR) && install -m 0755 -s ssh-keygen $(ROOTDIR)/sbin/ssh-keygen - cd $(OPENSSH_DIR) && install -m 0755 -s sshd $(ROOTDIR)/sbin/sshd + install -m 0755 -s $(OPENSSH_DIR)/ssh-keygen $(ROOTDIR)/sbin/ssh-keygen + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/ssh-keygen + + install -m 0755 -s $(OPENSSH_DIR)/sshd $(ROOTDIR)/sbin/sshd + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/sshd touch $@ + # ---------------------------------------------------------------------------- # Clean # ---------------------------------------------------------------------------- diff --git a/rules/openssl.make b/rules/openssl.make index 42fd09a85..de9f992da 100644 --- a/rules/openssl.make +++ b/rules/openssl.make @@ -1,4 +1,5 @@ -# $Id: openssl.make,v 1.6 2003/06/27 12:19:59 bsp Exp $ +# -*-makefile-*- +# $Id: openssl.make,v 1.7 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Jochen Striepe for Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -21,7 +22,6 @@ OPENSSL = openssl-0.9.7b OPENSSL_URL = http://www.openssl.org/source/$(OPENSSL).tar.gz OPENSSL_SOURCE = $(SRCDIR)/$(OPENSSL).tar.gz OPENSSL_DIR = $(BUILDDIR)/$(OPENSSL) -OPENSSL_EXTRACT = gzip -dc ifeq (y,$(PTXCONF_ARCH_ARM)) THUD = linux-elf-arm @@ -30,11 +30,14 @@ ifeq (y,$(PTXCONF_ARCH_X86)) THUD = linux-elf endif ifeq (y,$(PTXCONF_OPT_i586)) - THUD = linux-pentium + THUD = linux-pentium endif ifeq (y,$(PTXCONF_OPT_I686)) THUD = linux-ppro endif +ifeq (y,$(PTXCONF_ARCH_PPC)) + THUD = linux-ppc +endif # ---------------------------------------------------------------------------- # Get @@ -43,11 +46,12 @@ endif openssl_get: $(STATEDIR)/openssl.get $(STATEDIR)/openssl.get: $(OPENSSL_SOURCE) + @$(call targetinfo, openssl.get) touch $@ $(OPENSSL_SOURCE): - @$(call targetinfo, openssl.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(OPENSSL_URL) + @$(call targetinfo, $(OPENSSL_SOURCE)) + @$(call get, $(OPENSSL_URL)) # ---------------------------------------------------------------------------- # Extract @@ -57,7 +61,8 @@ openssl_extract: $(STATEDIR)/openssl.extract $(STATEDIR)/openssl.extract: $(STATEDIR)/openssl.get @$(call targetinfo, openssl.extract) - $(OPENSSL_EXTRACT) $(OPENSSL_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(OPENSSL_DIR)) + @$(call extract, $(OPENSSL_SOURCE)) touch $@ # ---------------------------------------------------------------------------- @@ -66,16 +71,20 @@ $(STATEDIR)/openssl.extract: $(STATEDIR)/openssl.get openssl_prepare: $(STATEDIR)/openssl.prepare -openssl_prepare_deps = $(STATEDIR)/openssl.extract -openssl_prepare_deps += $(STATEDIR)/zlib.install -openssl_prepare_deps += $(STATEDIR)/xchain-gccstage2.install +openssl_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/zlib.install \ + $(STATEDIR)/openssl.extract + +OPENSSL_PATH = PATH=$(CROSS_PATH) +OPENSSL_MAKEVARS= $(CROSS_ENV_CC) $(CROSS_ENV_RANLIB) AR='$(PTXCONF_GNU_TARGET)-ar r' $(STATEDIR)/openssl.prepare: $(openssl_prepare_deps) @$(call targetinfo, openssl.prepare) - cd $(OPENSSL_DIR) && ./Configure $(THUD) --prefix=$(PTXCONF_PREFIX) no-shared - perl -p -i -e 's@^CC= .*@CC = $(subst ",, $(PTXCONF_GNU_TARGET))-gcc@' $(OPENSSL_DIR)/Makefile - perl -p -i -e 's/-m486//' $(OPENSSL_DIR)/Makefile - perl -p -i -e 's@^CC= .*@CC = $(subst ",, $(PTXCONF_GNU_TARGET))-gcc@' $(OPENSSL_DIR)/crypto/Makefile + perl -p -i -e 's/-m486//' $(OPENSSL_DIR)/Configure + cd $(OPENSSL_DIR) && \ + $(OPENSSL_PATH) \ + ./Configure $(THUD) --prefix=$(CROSS_LIB_DIR) no-shared touch $@ # ---------------------------------------------------------------------------- @@ -86,8 +95,7 @@ openssl_compile: $(STATEDIR)/openssl.compile $(STATEDIR)/openssl.compile: $(STATEDIR)/openssl.prepare @$(call targetinfo, openssl.compile) - cd $(OPENSSL_DIR) && PATH=$(PTXCONF_PREFIX)/bin:$$PATH \ - make + $(OPENSSL_PATH) make -C $(OPENSSL_DIR) $(OPENSSL_MAKEVARS) touch $@ # ---------------------------------------------------------------------------- @@ -98,7 +106,7 @@ openssl_install: $(STATEDIR)/openssl.install $(STATEDIR)/openssl.install: $(STATEDIR)/openssl.compile @$(call targetinfo, openssl.install) - PATH=$(PTXCONF_PREFIX)/bin:$$PATH make -C $(OPENSSL_DIR) install + $(OPENSSL_PATH) make -C $(OPENSSL_DIR) install $(OPENSSL_MAKEVARS) touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/pdksh.make b/rules/pdksh.make index f4deb135d..d0d3dec5b 100644 --- a/rules/pdksh.make +++ b/rules/pdksh.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: pdksh.make,v 1.6 2003/07/15 13:59:34 robert Exp $ +# $Id: pdksh.make,v 1.7 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Auerswald GmbH & Co. KG, Schandelah, Germany # (c) 2003 by Pengutronix e.K., Hildesheim, Germany @@ -32,9 +32,11 @@ PDKSH_EXTRACT = gzip -dc pdksh_get: $(STATEDIR)/pdksh.get $(STATEDIR)/pdksh.get: $(PDKSH_SOURCE) + @$(call targetinfo, pdksh.get) touch $@ $(PDKSH_SOURCE): + @$(call targetinfo, $(PDKSH_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(PDKSH_URL) # ---------------------------------------------------------------------------- @@ -45,6 +47,7 @@ pdksh_extract: $(STATEDIR)/pdksh.extract $(STATEDIR)/pdksh.extract: $(STATEDIR)/pdksh.get @$(call targetinfo, pdksh.extract) + @$(call clean, $(PDKSH_DIR)) $(PDKSH_EXTRACT) $(PDKSH_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - touch $@ @@ -58,13 +61,16 @@ PDKSH_AUTOCONF = --build=$(GNU_HOST) PDKSH_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) PDKSH_AUTOCONF += --target=$(PTXCONF_GNU_TARGET) PDKSH_AUTOCONF += --disable-sanity-checks -PDKSH_AUTOCONF += --prefix=$(ROOTDIR) -PDKSH_ENVIRONMENT= PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(PTXCONF_PREFIX)/bin:$$PATH -PDKSH_ENVIRONMENT+= ac_cv_func_setvbuf_reversed=no pdksh_cv_have_mbstate_t=yes -PDKSH_MAKEVARS = AR=$(PTXCONF_GNU_TARGET)-ar -PDKSH_MAKEVARS += RANLIB=$(PTXCONF_GNU_TARGET)-ranlib -PDKSH_MAKEVARS += CC=$(PTXCONF_GNU_TARGET)-gcc -PDKSH_MAKEVARS += "CFLAGS=-Os -fomit-frame-pointer" +PDKSH_AUTOCONF += --prefix=/usr + +PDKSH_PATH = PATH=$(CROSS_PATH) +PDKSH_ENV = ac_cv_sizeof_long=4 ac_cv_sizeof_int=4 ac_cv_func_mmap=yes +PDKSH_ENV += ksh_cv_func_memmove=yes +PDKSH_ENV += ksh_cv_func_times_ok=yes ksh_cv_pgrp_check=posix +PDKSH_ENV += ksh_cv_dup2_clexec_ok=yes +PDKSH_ENV += ksh_cv_dev_fd=yes ksh_cv_need_pgrp_sync=no ksh_cv_opendir_ok=yes + +PDKSH_ENV += $(CROSS_ENV) ifeq (y, $(PTXCONF_PDKSH_SHLIKE)) PDKSH_AUTOCONF += --enable-shell=sh @@ -106,16 +112,13 @@ endif # dependencies # pdksh_prepare_deps = $(STATEDIR)/pdksh.extract -ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) -pdksh_prepare_deps += $(STATEDIR)/xchain-gccstage2.install -endif - +pdksh_prepare_deps += $(STATEDIR)/virtual-xchain.install $(STATEDIR)/pdksh.prepare: $(pdksh_prepare_deps) @$(call targetinfo, pdksh.prepare) mkdir -p $(BUILDDIR)/$(PDKSH) - cd $(BUILDDIR)/$(PDKSH) && \ - $(PDKSH_ENVIRONMENT) \ + cd $(PDKSH_DIR) && \ + $(PDKSH_PATH) $(PDKSH_ENV) \ $(PDKSH_DIR)/configure $(PDKSH_AUTOCONF) touch $@ @@ -124,18 +127,12 @@ $(STATEDIR)/pdksh.prepare: $(pdksh_prepare_deps) # ---------------------------------------------------------------------------- pdksh_compile_deps = $(STATEDIR)/pdksh.prepare -ifeq (y, $(PTXCONF_GLIBC)) -pdksh_compile_deps += $(STATEDIR)/glibc.install -endif -ifeq (y, $(PTXCONF_UCLIBC)) -pdksh_compile_deps += $(STATEDIR)/uclibc.install -endif pdksh_compile: $(STATEDIR)/pdksh.compile $(STATEDIR)/pdksh.compile: $(STATEDIR)/pdksh.prepare @$(call targetinfo, pdksh.compile) - PATH=$(PTXCONF_PREFIX)/bin:$$PATH make -C $(PDKSH_DIR) $(PDKSH_MAKEVARS) $(MAKEPARMS) + $(PDKSH_PATH) make -C $(PDKSH_DIR) touch $@ # ---------------------------------------------------------------------------- @@ -156,8 +153,8 @@ pdksh_targetinstall: $(STATEDIR)/pdksh.targetinstall $(STATEDIR)/pdksh.targetinstall: $(STATEDIR)/pdksh.install @$(call targetinfo, pdksh.targetinstall) - $(CROSSSTRIP) $(PDKSH_DIR)/ksh - cp $(PDKSH_DIR)/ksh $(ROOTDIR)/bin + install $(PDKSH_DIR)/ksh $(ROOTDIR)/bin + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/bin/ksh touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/portmap.make b/rules/portmap.make index 0ee903565..3d4e8345b 100644 --- a/rules/portmap.make +++ b/rules/portmap.make @@ -1,4 +1,5 @@ -# $Id: portmap.make,v 1.3 2003/06/30 15:43:26 bsp Exp $ +# -*-makefile-*- +# $Id: portmap.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -30,10 +31,11 @@ PORTMAP_EXTRACT = gzip -dc portmap_get: $(STATEDIR)/portmap.get $(STATEDIR)/portmap.get: $(PORTMAP_SOURCE) + @$(call targetinfo, portmap.get) touch $@ $(PORTMAP_SOURCE): - @$(call targetinfo, portmap.get) + @$(call targetinfo, $(PORTMAP_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(PORTMAP_URL) # ---------------------------------------------------------------------------- @@ -44,6 +46,7 @@ portmap_extract: $(STATEDIR)/portmap.extract $(STATEDIR)/portmap.extract: $(STATEDIR)/portmap.get @$(call targetinfo, portmap.extract) + @$(call clean, $(PORTMAP_DIR)) $(PORTMAP_EXTRACT) $(PORTMAP_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - # apply some fixes perl -i -p -e 's/^HOSTS_ACCESS/#HOSTS_ACCESS/g' $(PORTMAP_DIR)/Makefile @@ -60,7 +63,12 @@ $(STATEDIR)/portmap.extract: $(STATEDIR)/portmap.get portmap_prepare: $(STATEDIR)/portmap.prepare -$(STATEDIR)/portmap.prepare: $(STATEDIR)/portmap.extract +portmap_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/tcpwrapper.compile \ + $(STATEDIR)/portmap.extract + +$(STATEDIR)/portmap.prepare: $(portmap_prepare_deps) @$(call targetinfo, portmap.prepare) touch $@ @@ -70,12 +78,10 @@ $(STATEDIR)/portmap.prepare: $(STATEDIR)/portmap.extract portmap_compile: $(STATEDIR)/portmap.compile -PORTMAP_ENVIRONMENT = CC=$(PTXCONF_GNU_TARGET)-gcc PATH=$(PTXCONF_PREFIX)/bin:$$PATH - -portmap_compile_deps = $(STATEDIR)/portmap.prepare -portmap_compile_deps += $(STATEDIR)/tcpwrapper.compile +PORTMAP_ENVIRONMENT = PATH=$(CROSS_PATH) +PORTMAP_MAKEVARS = $(CROSS_ENV) -$(STATEDIR)/portmap.compile: $(portmap_compile_deps) +$(STATEDIR)/portmap.compile: $(STATEDIR)/portmap.prepare @$(call targetinfo, portmap.compile) $(PORTMAP_ENVIRONMENT) make -C $(PORTMAP_DIR) $(PORTMAP_MAKEVARS) touch $@ @@ -88,7 +94,6 @@ portmap_install: $(STATEDIR)/portmap.install $(STATEDIR)/portmap.install: $(STATEDIR)/portmap.compile @$(call targetinfo, portmap.install) - #make -C $(PORTMAP_DIR) install touch $@ # ---------------------------------------------------------------------------- @@ -102,7 +107,7 @@ $(STATEDIR)/portmap.targetinstall: $(STATEDIR)/portmap.install ifeq (y, $(PTXCONF_PORTMAP_INSTALL_PORTMAPPER)) mkdir -p $(ROOTDIR)/sbin install $(PORTMAP_DIR)/portmap $(ROOTDIR)/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/portmap + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/portmap endif touch $@ diff --git a/rules/pppd.make b/rules/pppd.make new file mode 100644 index 000000000..fa452f1ad --- /dev/null +++ b/rules/pppd.make @@ -0,0 +1,119 @@ +# -*-makefile-*- +# $Id: pppd.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_PPP +PACKAGES += ppp +endif + +# +# Paths and names +# +PPP = ppp-2.4.1 +PPP_URL = ftp://ftp.samba.org/pub/ppp/$(PPP).tar.gz +PPP_SOURCE = $(SRCDIR)/$(PPP).tar.gz +PPP_DIR = $(BUILDDIR)/$(PPP) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +ppp_get: $(STATEDIR)/ppp.get + +ppp_get_deps = $(PPP_SOURCE) + +$(STATEDIR)/ppp.get: $(ppp_get_deps) + @$(call targetinfo, ppp.get) + touch $@ + +$(PPP_SOURCE): + @$(call targetinfo, $(PPP_SOURCE)) + @$(call get, $(PPP_URL)) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +ppp_extract: $(STATEDIR)/ppp.extract + +$(STATEDIR)/ppp.extract: $(STATEDIR)/ppp.get + @$(call targetinfo, ppp.extract) + @$(call clean, $(PPP_DIR)) + @$(call extract, $(PPP_SOURCE)) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +ppp_prepare: $(STATEDIR)/ppp.prepare + +PPP_PATH = PATH=$(CROSS_PATH) +PPP_MAKEVARS = CROSS=$(CROSS_ENV) + +$(STATEDIR)/ppp.prepare: \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/ppp.extract + @$(call targetinfo, ppp.prepare) + cd $(PPP_DIR) && \ + ./configure + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +ppp_compile: $(STATEDIR)/ppp.compile + +ppp_compile_deps = $(STATEDIR)/ppp.prepare + +$(STATEDIR)/ppp.compile: $(ppp_compile_deps) + @$(call targetinfo, ppp.compile) + cd $(PPP_DIR) && \ + $(PPP_PATH) make $(PPP_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +ppp_install: $(STATEDIR)/ppp.install + +$(STATEDIR)/ppp.install: $(STATEDIR)/ppp.compile + @$(call targetinfo, ppp.install) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +ppp_targetinstall: $(STATEDIR)/ppp.targetinstall + +$(STATEDIR)/ppp.targetinstall: $(STATEDIR)/ppp.compile + @$(call targetinfo, ppp.targetinstalll) + install $(PPP_DIR)/pppd/pppd $(ROOTDIR)/sbin/ + $(CROSSSTRIP) -R .note -R .comment $(ROOTDIR)/sbin/pppd + + install $(PPP_DIR)/chat/chat $(ROOTDIR)/sbin/ + $(CROSSSTRIP) -R .note -R .comment $(ROOTDIR)/sbin/chat + + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +ppp_clean: + -rm -rf $(STATEDIR)/ppp* + -rm -rf $(PPP_DIR) + +# vim: syntax=make
\ No newline at end of file diff --git a/rules/proftpd.make b/rules/proftpd.make index 50aea744a..b12e583d5 100644 --- a/rules/proftpd.make +++ b/rules/proftpd.make @@ -1,4 +1,5 @@ -# $Id: proftpd.make,v 1.3 2003/06/26 15:05:58 bsp Exp $ +# -*-makefile-*- +# $Id: proftpd.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -31,10 +32,11 @@ PROFTPD_EXTRACT = gzip -dc proftpd_get: $(STATEDIR)/proftpd.get $(STATEDIR)/proftpd.get: $(PROFTPD_SOURCE) + @$(call targetinfo, proftpd.get) touch $@ $(PROFTPD_SOURCE): - @$(call targetinfo, proftpd.get) + @$(call targetinfo, $(PROFTPD_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(PROFTPD_URL) # ---------------------------------------------------------------------------- diff --git a/rules/rootfs.make b/rules/rootfs.make index e81d20de7..6f43df6a8 100644 --- a/rules/rootfs.make +++ b/rules/rootfs.make @@ -1,4 +1,5 @@ -# $Id: rootfs.make,v 1.3 2003/07/04 13:58:13 bsp Exp $ +# -*-makefile-*- +# $Id: rootfs.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -28,10 +29,11 @@ ROOTFS_EXTRACT = gzip -dc rootfs_get: $(STATEDIR)/rootfs.get $(STATEDIR)/rootfs.get: $(ROOTFS_SOURCE) + @$(call targetinfo, rootfs.get) touch $@ $(ROOTFS_SOURCE): - @$(call targetinfo, rootfs.get) + @$(call targetinfo, $(ROOTFS_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(ROOTFS_URL) # ---------------------------------------------------------------------------- diff --git a/rules/rtai.make b/rules/rtai.make index f4f1a0fdf..27163ac19 100644 --- a/rules/rtai.make +++ b/rules/rtai.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: rtai.make,v 1.4 2003/06/16 12:05:16 bsp Exp $ +# $Id: rtai.make,v 1.5 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -34,6 +34,9 @@ endif ifeq (y, $(PTXCONF_KERNEL_2_4_19)) RTAI_MODULEDIR = /lib/modules/2.4.19-rthal5/rtai endif +ifeq (y, $(PTXCONF_KERNEL_2_4_20)) +RTAI_MODULEDIR = /lib/modules/2.4.20-rthal5/rtai +endif # ---------------------------------------------------------------------------- # Get @@ -42,10 +45,11 @@ endif rtai_get: $(STATEDIR)/rtai.get $(STATEDIR)/rtai.get: $(RTAI_SOURCE) + @$(call targetinfo, rtai.get) touch $@ $(RTAI_SOURCE): - @$(call targetinfo, rtai.get) + @$(call targetinfo, $(RTAI_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(RTAI_URL) # ---------------------------------------------------------------------------- diff --git a/rules/tcpwrapper.make b/rules/tcpwrapper.make index 8b4ab5642..12e66d5b7 100644 --- a/rules/tcpwrapper.make +++ b/rules/tcpwrapper.make @@ -1,4 +1,5 @@ -# $Id: tcpwrapper.make,v 1.3 2003/06/30 15:43:26 bsp Exp $ +# -*-makefile-*- +# $Id: tcpwrapper.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -34,14 +35,15 @@ TCPWRAPPER_PTXPATCH_SOURCE = $(SRCDIR)/$(TCPWRAPPER_PTXPATCH).diff tcpwrapper_get: $(STATEDIR)/tcpwrapper.get $(STATEDIR)/tcpwrapper.get: $(TCPWRAPPER_SOURCE) $(TCPWRAPPER_PTXPATCH_SOURCE) + @$(call targetinfo, tcpwrapper.get) touch $@ $(TCPWRAPPER_SOURCE): - @$(call targetinfo, tcpwrapper.get) + @$(call targetinfo, $(TCPWRAPPER_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(TCPWRAPPER_URL) - + $(TCPWRAPPER_PTXPATCH_SOURCE): - @$(call targetinfo, tcpwrapper-ptxpatch.get) + @$(call targetinfo, $(TCPWRAPPER_PTXPATCH_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(TCPWRAPPER_PTXPATCH_URL) # ---------------------------------------------------------------------------- @@ -52,6 +54,7 @@ tcpwrapper_extract: $(STATEDIR)/tcpwrapper.extract $(STATEDIR)/tcpwrapper.extract: $(STATEDIR)/tcpwrapper.get @$(call targetinfo, tcpwrapper.extract) + @$(call clean, $(TCPWRAPPER_DIR)) $(TCPWRAPPER_EXTRACT) $(TCPWRAPPER_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - cd $(TCPWRAPPER_DIR) && patch -p1 < $(TCPWRAPPER_PTXPATCH_SOURCE) touch $@ @@ -62,7 +65,7 @@ $(STATEDIR)/tcpwrapper.extract: $(STATEDIR)/tcpwrapper.get tcpwrapper_prepare: $(STATEDIR)/tcpwrapper.prepare -$(STATEDIR)/tcpwrapper.prepare: $(STATEDIR)/tcpwrapper.extract +$(STATEDIR)/tcpwrapper.prepare: $(STATEDIR)/virtual-xchain.install $(STATEDIR)/tcpwrapper.extract @$(call targetinfo, tcpwrapper.prepare) touch $@ @@ -72,9 +75,10 @@ $(STATEDIR)/tcpwrapper.prepare: $(STATEDIR)/tcpwrapper.extract tcpwrapper_compile: $(STATEDIR)/tcpwrapper.compile -TCPWRAPPER_ENVIRONMENT = CC=$(PTXCONF_GNU_TARGET)-gcc PATH=$(PTXCONF_PREFIX)/bin:$$PATH +TCPWRAPPER_ENVIRONMENT = PATH=$(CROSS_PATH) +TCPWRAPPER_MAKEVARS = $(CROSS_ENV) -$(STATEDIR)/tcpwrapper.compile: $(STATEDIR)/tcpwrapper.prepare +$(STATEDIR)/tcpwrapper.compile: $(STATEDIR)/tcpwrapper.prepare @$(call targetinfo, tcpwrapper.compile) $(TCPWRAPPER_ENVIRONMENT) make -C $(TCPWRAPPER_DIR) linux $(TCPWRAPPER_MAKEVARS) touch $@ @@ -100,7 +104,7 @@ $(STATEDIR)/tcpwrapper.targetinstall: $(STATEDIR)/tcpwrapper.install ifeq (y, $(PTXCONF_TCPWRAPPER_INSTALL_TCPD)) mkdir -p $(ROOTDIR)/usr/sbin install $(TCPWRAPPER_DIR)/tcpd $(ROOTDIR)/usr/sbin - $(CROSSSTRIP) -S $(ROOTDIR)/usr/sbin/tcpd + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/usr/sbin/tcpd endif touch $@ diff --git a/rules/template b/rules/template index 7fe4ac1e7..0f8a9bf0b 100644 --- a/rules/template +++ b/rules/template @@ -1,4 +1,5 @@ -# $Id: template,v 1.2 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $Id: template,v 1.3 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. diff --git a/rules/tinylogin.make b/rules/tinylogin.make new file mode 100644 index 000000000..c2d0412ea --- /dev/null +++ b/rules/tinylogin.make @@ -0,0 +1,113 @@ +# -*-makefile-*- +# $Id: tinylogin.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_TINYLOGIN +PACKAGES += tinylogin +endif + +# +# Paths and names +# +TINYLOGIN = tinylogin-1.4.tar.bz2 +TINYLOGIN_URL = http://tinylogin.busybox.net/downloads/$(TINYLOGIN).tar.bz2 +TINYLOGIN_SOURCE = $(SRCDIR)/$(TINYLOGIN).tar.bz2 +TINYLOGIN_DIR = $(BUILDDIR)/$(TINYLOGIN) +TINYLOGIN_EXTRACT = bzip2 -dc + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +tinylogin_get: $(STATEDIR)/tinylogin.get + +tinylogin_get_deps = $(TINYLOGIN_SOURCE) + +$(STATEDIR)/tinylogin.get: $(tinylogin_get_deps) + @$(call targetinfo, tinylogin.get) + touch $@ + +$(TINYLOGIN_SOURCE): + @$(call targetinfo, $(TINYLOGIN_SOURCE)) + wget -P $(SRCDIR) $(PASSIVEFTP) $(TINYLOGIN_URL) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +tinylogin_extract: $(STATEDIR)/tinylogin.extract + +$(STATEDIR)/tinylogin.extract: $(STATEDIR)/tinylogin.get + @$(call targetinfo, tinylogin.extract) + $(TINYLOGIN_EXTRACT) $(TINYLOGIN_SOURCE) | tar -C $(BUILDDIR) -xf - + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +tinylogin_prepare: $(STATEDIR)/tinylogin.prepare + +TINYLOGIN_PATH = PATH=$(CROSS_PATH) +TINYLOGIN_MAKEVARS = CROSS=$(PTXCONF_GNU_TARGET)- + +# +# dependencies +# +tinylogin_prepare_deps = $(STATEDIR)/tinylogin.extract $(STATEDIR)/virtual-xchain.install + +$(STATEDIR)/tinylogin.prepare: $(tinylogin_prepare_deps) + @$(call targetinfo, tinylogin.prepare) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +tinylogin_compile: $(STATEDIR)/tinylogin.compile + +tinylogin_compile_deps = $(STATEDIR)/tinylogin.prepare + +$(STATEDIR)/tinylogin.compile: $(tinylogin_compile_deps) + @$(call targetinfo, tinylogin.compile) + $(TINYLOGIN_PATH) make -C $(TINYLOGIN_DIR) $(TINYLOGIN_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +tinylogin_install: $(STATEDIR)/tinylogin.install + +$(STATEDIR)/tinylogin.install: $(STATEDIR)/tinylogin.compile + @$(call targetinfo, tinylogin.install) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +tinylogin_targetinstall: $(STATEDIR)/tinylogin.targetinstall + +$(STATEDIR)/tinylogin.targetinstall: $(STATEDIR)/tinylogin.install + @$(call targetinfo, tinylogin.targetinstall) + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +tinylogin_clean: + -rm -rf $(STATEDIR)/tinylogin* + -rm -rf $(TINYLOGIN_DIR) + +# vim: syntax=make
\ No newline at end of file diff --git a/rules/u-boot-mkimage.make b/rules/u-boot-mkimage.make index 73fbd3a4a..b770e2181 100644 --- a/rules/u-boot-mkimage.make +++ b/rules/u-boot-mkimage.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: u-boot-mkimage.make,v 1.4 2003/06/16 12:05:16 bsp Exp $ +# $Id: u-boot-mkimage.make,v 1.5 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -11,7 +11,7 @@ # # We provide this package # -PACKAGES += umkimage +# PACKAGES += umkimage # # Paths and names @@ -29,10 +29,11 @@ UMKIMAGE_EXTRACT = gzip -dc umkimage_get: $(STATEDIR)/umkimage.get $(STATEDIR)/umkimage.get: $(UMKIMAGE_SOURCE) + @$(call targetinfo, umkimage.get) touch $@ $(UMKIMAGE_SOURCE): - @$(call targetinfo, umkimage.get) + @$(call targetinfo, $(UMKIMAGE_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(UMKIMAGE_URL) # ---------------------------------------------------------------------------- diff --git a/rules/uclibc.make b/rules/uclibc.make new file mode 100644 index 000000000..d6e21810d --- /dev/null +++ b/rules/uclibc.make @@ -0,0 +1,217 @@ +# -*-makefile-*- +# $Id: uclibc.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_UCLIBC +PACKAGES += uclibc +endif + +# +# Paths and names +# +ifdef PTXCONF_UCLIBC_0_9_19 +UCLIBC_VERSION = 0.9.19 +endif +ifdef PTXCONF_UCLIBC_0_9_20 +UCLIBC_VERSION = 0.9.20 +endif + +UCLIBC_SUFFIX = tar.bz2 +UCLIBC = uClibc-$(UCLIBC_VERSION) +UCLIBC_URL = http://www.uclibc.org/downloads/$(UCLIBC).$(UCLIBC_SUFFIX) +UCLIBC_SOURCE = $(SRCDIR)/$(UCLIBC).$(UCLIBC_SUFFIX) +UCLIBC_DIR = $(BUILDDIR)/$(UCLIBC) + +UCLIBC_CRIS_PATCH_SOURCE = $(SRCDIR)/$(UCLIBC)-mkb1.patch + +# +# uClibc config file fixup +# +# for uClibc that gets installed on target +# +uclibc_fix_config = \ + @$(call uclibx_fix_config_general, $(1)) + +# +# +# uClibc config file fixup +# +# for uClibc that is used for the xchain +# +xchain_uclibc_fix_config = \ + @$(call uclibc_fix_config_general, $(1)) + +# +# +# +uclibc_fix_config_general = \ + perl -i -p -e 's,^(KERNEL_SOURCE=).*,$$1\"$(XCHAIN_KERNEL_BUILDDIR)\",' $(1); \ + perl -i -p -e 's,^(SHARED_LIB_LOADER_PATH=).*,$$1"/lib",' $(1); \ + perl -i -p -e 's,^(DEVEL_PREFIX=).*,$$1$(CROSS_LIB_DIR),' $(1); \ + perl -i -p -e 's,^(SYSTEM_DEVEL_PREFIX=).*,$$1$(PTXCONF_PREFIX),' $(1); \ + perl -i -p -e 's,^(DEVEL_TOOL_PREFIX=).*,$$1"\$$(DEVEL_PREFIX)",' $(1); \ + perl -i -p -e 's/^(.*=)"(.*?)"(.*)"(.*)"/$$1"$$2$$3$$4"/' $(1); \ + perl -i -p -e 's/^(.*=)"(.*?)"(.*)/$$1"$$2$$3"/' $(1) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +uclibc_get: $(STATEDIR)/uclibc.get + +uclibc_get_deps = $(UCLIBC_SOURCE) + +$(STATEDIR)/uclibc.get: $(uclibc_get_deps) + @$(call targetinfo, uclibc.get) + touch $@ + +$(UCLIBC_SOURCE): + @$(call targetinfo, $(UCLIBC_SOURCE)) + @$(call get, $(UCLIBC_URL)) + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +uclibc_extract: $(STATEDIR)/uclibc.extract + +uclibc_extract_deps = $(STATEDIR)/uclibc.get + +$(STATEDIR)/uclibc.extract: $(uclibc_extract_deps) + @$(call targetinfo, uclibc.extract) + @$(call clean, $(UCLIBC_DIR)) + @$(call extract, $(UCLIBC_SOURCE)) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +uclibc_prepare: $(STATEDIR)/uclibc.prepare + +UCLIBC_PATH = PATH=$(CROSS_PATH) +UCLIBC_MAKEVARS = CROSS=$(PTXCONF_GNU_TARGET)- HOSTCC=$(HOSTCC) + +# +# dependencies +# +uclibc_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/uclibc.extract + + +$(STATEDIR)/uclibc.prepare: $(uclibc_prepare_deps) + @$(call targetinfo, uclibc.prepare) + + grep -e PTXCONF_UCLIBC_ .config > $(UCLIBC_DIR)/.config + perl -i -p -e 's/PTXCONF_UCLIBC_//g' $(UCLIBC_DIR)/.config + @$(call uclibc_fix_config, $(UCLIBC_DIR)/.config) + + $(UCLIBC_PATH) make -C $(UCLIBC_DIR) oldconfig $(UCLIBC_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +uclibc_compile: $(STATEDIR)/uclibc.compile + +uclibc_compile_deps = $(STATEDIR)/uclibc.prepare + +$(STATEDIR)/uclibc.compile: $(uclibc_compile_deps) + @$(call targetinfo, uclibc.compile) + $(UCLIBC_PATH) make -C $(UCLIBC_DIR) $(UCLIBC_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +uclibc_install: $(STATEDIR)/uclibc.install + +$(STATEDIR)/uclibc.install: + @$(call targetinfo, uclibc.install) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +uclibc_targetinstall: $(STATEDIR)/uclibc.targetinstall + +$(STATEDIR)/uclibc.targetinstall: $(STATEDIR)/uclibc.compile + @$(call targetinfo, uclibc.targetinstall) + mkdir -p $(ROOTDIR)/lib + + install $(UCLIBC_DIR)/lib/ld-uClibc-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/ld-uClibc-$(UCLIBC_VERSION).so + ln -sf ld-uClibc-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/ld-uClibc.so.0 + + install $(UCLIBC_DIR)/lib/libuClibc-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libuClibc-$(UCLIBC_VERSION).so + ln -sf libuClibc-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libc.so.0 + +ifdef PTXCONF_UCLIBC_CRYPT + install $(UCLIBC_DIR)/lib/libcrypt-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libcrypt-$(UCLIBC_VERSION).so + ln -sf libcrypt-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libcrypt.so.0 +endif + +ifdef PTXCONF_UCLIBC_DL + install $(UCLIBC_DIR)/lib/libdl-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libdl-$(UCLIBC_VERSION).so + ln -sf libdl-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libdl.so.0 +endif + +ifdef PTXCONF_UCLIBC_M + install $(UCLIBC_DIR)/lib/libm-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libm-$(UCLIBC_VERSION).so + ln -sf libm-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libm.so.0 +endif + +ifdef PTXCONF_UCLIBC_NSL + install $(UCLIBC_DIR)/lib/libnsl-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libnsl-$(UCLIBC_VERSION).so + ln -sf libnsl-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libnsl.so.0 +endif + +ifdef PTXCONF_UCLIBC_PTHREAD + install $(UCLIBC_DIR)/lib/libpthread-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libpthread-$(UCLIBC_VERSION).so + ln -sf libpthread-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libpthread.so.0 +endif + +ifdef PTXCONF_UCLIBC_RESOLV + install $(UCLIBC_DIR)/lib/libresolv-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libresolv-$(UCLIBC_VERSION).so + ln -sf libresolv-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libresolv.so.0 +endif + +ifdef PTXCONF_UCLIBC_UTIL + install $(UCLIBC_DIR)/lib/libutil-$(UCLIBC_VERSION).so \ + $(ROOTDIR)/lib/libutil-$(UCLIBC_VERSION).so + ln -sf libutil-$(UCLIBC_VERSION).so $(ROOTDIR)/lib/libutil.so.0 +endif + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +uclibc_clean: + -rm -rf $(STATEDIR)/xchain-uclibc.extract + -rm -rf $(STATEDIR)/xchain-uclibc.prepare + -rm -rf $(STATEDIR)/xchain-uclibc.compile + -rm -rf $(STATEDIR)/uclibc* + -rm -rf $(UCLIBC_DIR) + +# vim: syntax=make diff --git a/rules/utelnetd.make b/rules/utelnetd.make index 555e9a130..d94c83819 100644 --- a/rules/utelnetd.make +++ b/rules/utelnetd.make @@ -1,4 +1,5 @@ -# $Id: utelnetd.make,v 1.4 2003/07/08 08:10:04 robert Exp $ +# -*-makefile-*- +# $Id: utelnetd.make,v 1.5 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -30,10 +31,11 @@ UTELNETD_EXTRACT = gzip -dc utelnetd_get: $(STATEDIR)/utelnetd.get $(STATEDIR)/utelnetd.get: $(UTELNETD_SOURCE) + @$(call targetinfo, utelnetd.get) touch $@ $(UTELNETD_SOURCE): - @$(call targetinfo, utelnetd.get) + @$(call targetinfo, $(UTELNETD_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(UTELNETD_URL) # ---------------------------------------------------------------------------- @@ -44,6 +46,7 @@ utelnetd_extract: $(STATEDIR)/utelnetd.extract $(STATEDIR)/utelnetd.extract: $(STATEDIR)/utelnetd.get @$(call targetinfo, utelnetd.extract) + @$(call clean, $(UTELNETS_DIR)) $(UTELNETD_EXTRACT) $(UTELNETD_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - touch $@ @@ -53,7 +56,7 @@ $(STATEDIR)/utelnetd.extract: $(STATEDIR)/utelnetd.get utelnetd_prepare: $(STATEDIR)/utelnetd.prepare -$(STATEDIR)/utelnetd.prepare: $(STATEDIR)/utelnetd.extract +$(STATEDIR)/utelnetd.prepare: $(STATEDIR)/virtual-xchain.install $(STATEDIR)/utelnetd.extract @$(call targetinfo, utelnetd.prepare) touch $@ @@ -63,12 +66,8 @@ $(STATEDIR)/utelnetd.prepare: $(STATEDIR)/utelnetd.extract utelnetd_compile: $(STATEDIR)/utelnetd.compile -UTELNETD_ENVIRONMENT = -UTELNETD_MAKEVARS = -ifeq (y,$(PTXCONF_ARCH_ARM)) UTELNETD_ENVIRONMENT += PATH=$(PTXCONF_PREFIX)/bin:$$PATH UTELNETD_MAKEVARS += CROSS=$(PTXCONF_GNU_TARGET)- -endif $(STATEDIR)/utelnetd.compile: $(STATEDIR)/utelnetd.prepare @$(call targetinfo, utelnetd.compile) @@ -95,7 +94,7 @@ $(STATEDIR)/utelnetd.targetinstall: $(STATEDIR)/utelnetd.install @$(call targetinfo, utelnetd.targetinstall) install -d $(ROOTDIR)/sbin/ install $(UTELNETD_DIR)/utelnetd $(ROOTDIR)/sbin/ - $(CROSSSTRIP) -S $(ROOTDIR)/sbin/utelnetd + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/sbin/utelnetd touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/xchain-binutils.make b/rules/xchain-binutils.make index edafc3eb7..0eb9b111b 100644 --- a/rules/xchain-binutils.make +++ b/rules/xchain-binutils.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: xchain-binutils.make,v 1.4 2003/06/16 12:05:16 bsp Exp $ +# $Id: xchain-binutils.make,v 1.5 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -9,20 +9,28 @@ # # -# We provide this package -# -ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) -PACKAGES += xchain-binutils -endif - -# # Paths and names # -BINUTILS = binutils-2.11.2 +BINUTILS = binutils-2.13.2.1 BINUTILS_URL = ftp://ftp.gnu.org/pub/gnu/binutils/$(BINUTILS).tar.gz BINUTILS_SOURCE = $(SRCDIR)/$(BINUTILS).tar.gz BINUTILS_DIR = $(BUILDDIR)/$(BINUTILS) -BINUTILS_EXTRACT = gzip -dc +ifdef PTXCONF_ARCH_NOMMU +BINUTILS = binutils-2.10 +BINUTILS_URL = ftp://ftp.gnu.org/pub/gnu/binutils/$(BINUTILS).tar.gz +endif +ifdef PTXCONF_ARCH_MIPS +BINUTILS = binutils-2.14.90.0.4 +BINUTILS_URL = ftp://ftp.de.kernel.org/pub/linux/devel/binutils/$(BINUTILS).tar.gz +endif +ifdef PTXCONF_ARCH_PARISC +BINUTILS = binutils-2.14.90.0.4 +BINUTILS_URL = ftp://ftp.de.kernel.org/pub/linux/devel/binutils/$(BINUTILS).tar.gz +endif + +BINUTILS_NOMMU_PATCH = binutils-2.10-full.patch +BINUTILS_NOMMU_PATCH_URL = http://www.uclinux.org/pub/uClinux/m68k-elf-tools/tools-20030314/$(BINUTILS_NOMMU_PATCH) +BINUTILS_NOMMU_PATCH_SOURCE = $(SRCDIR)/$(BINUTILS_NOMMU_PATCH) # ---------------------------------------------------------------------------- # Get @@ -30,12 +38,22 @@ BINUTILS_EXTRACT = gzip -dc xchain-binutils_get: $(STATEDIR)/xchain-binutils.get -$(STATEDIR)/xchain-binutils.get: $(BINUTILS_SOURCE) +binutils_get_deps = $(BINUTILS_SOURCE) +ifdef PTXCONF_ARCH_ARM_NOMMU +binutils_get_deps += $(BINUTILS_NOMMU_PATCH_SOURCE) +endif + +$(STATEDIR)/xchain-binutils.get: $(binutils_get_deps) + @$(call targetinfo, xchain-binutils.get) touch $@ $(BINUTILS_SOURCE): - @$(call targetinfo, xchain-binutils.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(BINUTILS_URL) + @$(call targetinfo, $(BINUTILS_SOURCE)) + @$(call get, $(BINUTILS_URL)) + +$(BINUTILS_NOMMU_PATCH_SOURCE): + @$(call targetinfo, $(BINUTILS_NOMMU_PATCH_SOURCE)) + @$(call get, $(BINUTILS_NOMMU_PATCH_URL)) # ---------------------------------------------------------------------------- # Extract @@ -45,7 +63,36 @@ xchain-binutils_extract: $(STATEDIR)/xchain-binutils.extract $(STATEDIR)/xchain-binutils.extract: $(STATEDIR)/xchain-binutils.get @$(call targetinfo, xchain-binutils.extract) - $(BINUTILS_EXTRACT) $(BINUTILS_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - + @$(call clean, $(BINUTILS_DIR)) + @$(call extract, $(BINUTILS_SOURCE)) + +# +# sto^H^H^Hinspired by Erik Andersen's buildroot +# + +# +# Enable combreloc, since it is such a nice thing to have... +# + perl -i -p -e "s,link_info.combreloc = false,link_info.combreloc = true,g;" $(BINUTILS_DIR)/ld/ldmain.c + +# +# Hack binutils to use the correct shared lib loader +# + cd $(BINUTILS_DIR) && \ + perl -i -p -e "s,#.*define.*ELF_DYNAMIC_INTERPRETER.*\".*\",#define ELF_DYNAMIC_INTERPRETER \"$(DYNAMIC_LINKER)\",;" \ + `grep -lr "#define ELF_DYNAMIC_INTERPRETER" $(BINUTILS_DIR)` + +# +# Hack binutils to prevent it from searching the host system +# for libraries. We only want libraries for the target system. +# + cd $(BINUTILS_DIR) && \ + perl -i -p -e "s,^NATIVE_LIB_DIRS.*,NATIVE_LIB_DIRS='$(CROSS_LIB_DIR)/usr/lib $(CROSS_LIB_DIR)/lib',;" \ + $(BINUTILS_DIR)/ld/configure.host + +ifdef PTXCONF_ARCH_ARM_NOMMU + cd $(BINUTILS_DIR) && patch -p1 < $(BINUTILS_NOMMU_PATCH_SOURCE) +endif touch $@ # ---------------------------------------------------------------------------- @@ -54,14 +101,30 @@ $(STATEDIR)/xchain-binutils.extract: $(STATEDIR)/xchain-binutils.get xchain-binutils_prepare: $(STATEDIR)/xchain-binutils.prepare +XCHAIN_BINUTILS_AUTOCONF_TARGET = --enable-targets=$(PTXCONF_GNU_TARGET) +ifdef PTXCONF_ARCH_MIPS +XCHAIN_BINUTILS_AUTOCONF_TARGET = --enable-targets=$(PTXCONF_GNU_TARGET),mips64-linux +endif +ifdef PTXCONF_OPT_PA8X00 +XCHAIN_BINUTILS_AUTOCONF_TARGET = --enable-targets=$(PTXCONF_GNU_TARGET),hppa64-linux +endif + +XCHAIN_BINUTILS_AUTOCONF = \ + --target=$(PTXCONF_GNU_TARGET) \ + --host=$(GNU_HOST) \ + --build=$(GNU_HOST) \ + --prefix=$(PTXCONF_PREFIX) \ + --disable-nls \ + --disable-shared \ + --enable-multilib \ + $(XCHAIN_BINUTILS_AUTOCONF_TARGET) + +XCHAIN_BINUTILS_ENV = $(HOSTCC_ENV) + $(STATEDIR)/xchain-binutils.prepare: $(STATEDIR)/xchain-binutils.extract @$(call targetinfo, xchain-binutils.prepare) - cd $(BINUTILS_DIR) && \ - ./configure \ - --disable-shared \ - --target=$(PTXCONF_GNU_TARGET) \ - --prefix=$(PTXCONF_PREFIX) \ - --enable-targets=$(PTXCONF_GNU_TARGET) + cd $(BINUTILS_DIR) && $(XCHAIN_BINUTILS_ENV) \ + ./configure $(XCHAIN_BINUTILS_AUTOCONF) touch $@ # ---------------------------------------------------------------------------- @@ -72,7 +135,7 @@ xchain-binutils_compile: $(STATEDIR)/xchain-binutils.compile $(STATEDIR)/xchain-binutils.compile: $(STATEDIR)/xchain-binutils.prepare @$(call targetinfo, xchain-binutils.compile) - cd $(BINUTILS_DIR) && make + make -C $(BINUTILS_DIR) touch $@ # ---------------------------------------------------------------------------- @@ -83,11 +146,7 @@ xchain-binutils_install: $(STATEDIR)/xchain-binutils.install $(STATEDIR)/xchain-binutils.install: $(STATEDIR)/xchain-binutils.compile @$(call targetinfo, xchain-binutils.install) -# [ -d $(PTXCONF_PREFIX) ] || \ -# $(SUDO) install -g users -m 0755 \ -# -o $(PTXUSER) \ -# -d $(PTXCONF_PREFIX) - cd $(BINUTILS_DIR) && make install + make install -C $(BINUTILS_DIR) touch $@ # ---------------------------------------------------------------------------- diff --git a/rules/xchain-gccstage1.make b/rules/xchain-gccstage1.make index fd09240cb..405c86ab3 100644 --- a/rules/xchain-gccstage1.make +++ b/rules/xchain-gccstage1.make @@ -1,4 +1,5 @@ -# $Id: xchain-gccstage1.make,v 1.4 2003/06/29 13:27:36 robert Exp $ +# -*-makefile-*- +# $Id: xchain-gccstage1.make,v 1.5 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002,2003 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -10,22 +11,23 @@ # # We provide this package # -ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) -PACKAGES += xchain-gccstage1 + +ifdef PTXCONF_GCC_2_95_3 +GCC_VERSION = 2.95.3 +endif +ifdef PTXCONF_GCC_3_2_3 +GCC_VERSION = 3.2.3 endif # # Paths and names -# GCC_PREFIX = $(PTXCONF_GNU_TARGET)- - -GCC = gcc-2.95.3 +GCC = gcc-$(GCC_VERSION) GCC_URL = ftp://ftp.gnu.org/pub/gnu/gcc/$(GCC).tar.gz GCC_SOURCE = $(SRCDIR)/$(GCC).tar.gz GCC_DIR = $(BUILDDIR)/$(GCC) GCC_STAGE1_DIR = $(BUILDDIR)/$(GCC)-$(GCC_PREFIX)stage1 GCC_STAGE2_DIR = $(BUILDDIR)/$(GCC)-$(GCC_PREFIX)stage2 -GCC_EXTRACT = gzip -dc GCC_ARMPATCH = gcc-2.95.3.diff GCC_ARMPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/src-2.95.3/$(GCC_ARMPATCH).bz2 @@ -33,6 +35,18 @@ GCC_ARMPATCH_SOURCE = $(SRCDIR)/$(GCC_ARMPATCH).bz2 GCC_ARMPATCH_DIR = $(GCC_DIR) GCC_ARMPATCH_EXTRACT = bzip2 -dc +GCC_PATCH = gcc-2.95.3-2.patch +GCC_PATCH_URL = ftp://igwe.vub.ac.be/pub/linux/lfs/lfs-packages/3.3/$(GCC_PATCH).bz2 +GCC_PATCH_SOURCE = $(SRCDIR)/$(GCC_PATCH).bz2 +GCC_PATCH_DIR = $(GCC_DIR) +GCC_PATCH_EXTRACT = bzip2 -dc + +GCC_PPCPATCH = gcc-3.2.3-ppc-mkb1.patch +GCC_PPCPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GCC_PPCPATCH) +GCC_PPCPATCH_SOURCE = $(SRCDIR)/$(GCC_PPCPATCH) +GCC_PPCPATCH_DIR = $(GCC_DIR) +GCC_PPCPATCH_EXTRACT = cat + # ---------------------------------------------------------------------------- # Get # ---------------------------------------------------------------------------- @@ -40,18 +54,35 @@ GCC_ARMPATCH_EXTRACT = bzip2 -dc xchain-gccstage1_get: $(STATEDIR)/xchain-gccstage1.get xchain-gccstage1_get_deps = $(GCC_SOURCE) -ifeq (y,$(PTXCONF_ARCH_ARM)) +ifdef PTXCONF_GCC_2_95_3 +xchain-gccstage1_get_deps += $(GCC_PATCH_SOURCE) +endif +ifdef PTXCONF_ARCH_ARM xchain-gccstage1_get_deps += $(GCC_ARMPATCH_SOURCE) endif +ifdef PTXCONF_ARCH_PPC +xchain-gccstage1_get_deps += $(GCC_PPCPATCH_SOURCE) +endif $(STATEDIR)/xchain-gccstage1.get: $(xchain-gccstage1_get_deps) + @$(call targetinfo, xchain-gccstage1.get) touch $@ $(GCC_SOURCE): - wget -P $(SRCDIR) $(PASSIVEFTP) $(GCC_URL) + @$(call targetinfo, $(GCC_SOURCE)) + @$(call get, $(GCC_URL)) + +$(GCC_PATCH_SOURCE): + @$(call targetinfo, $(GCC_PATCH_SOURCE)) + @$(call get, $(GCC_PATCH_URL)) $(GCC_ARMPATCH_SOURCE): - wget -P $(SRCDIR) $(PASSIVEFTP) $(GCC_ARMPATCH_URL) + @$(call targetinfo, $(GCC_ARMPATCH_SOURCE)) + @$(call get, $(GCC_ARMPATCH_URL)) + +$(GCC_PPCPATCH_SOURCE): + @$(call targetinfo, $(GCC_PPCPATCH_SOURCE)) + @$(call get, $(GCC_PPCPATCH_URL)) # ---------------------------------------------------------------------------- # Extract @@ -59,29 +90,121 @@ $(GCC_ARMPATCH_SOURCE): xchain-gccstage1_extract: $(STATEDIR)/xchain-gccstage1.extract -$(STATEDIR)/xchain-gccstage1.extract: $(STATEDIR)/xchain-gccstage1.get +xchain-gccstage1_extract_deps = $(STATEDIR)/xchain-gccstage1.get + +$(STATEDIR)/xchain-gccstage1.extract: $(xchain-gccstage1_extract_deps) @$(call targetinfo, xchain-gccstage1.extract) - $(GCC_EXTRACT) $(GCC_SOURCE) | tar -C $(BUILDDIR) -xf - - # - ifeq (y, $(PTXCONF_ARCH_ARM)) + @$(call clean, $(GCC_DIR)) + + @$(call extract, $(GCC_SOURCE)) + + ifdef PTXCONF_GCC_2_95_3 + ifdef PTXCONF_ARCH_ARM # - # ARM: add architecure patch; fake headers + # ARM: add architecure patch # - cd $(GCC_DIR) && \ + cd $(GCC_DIR) && \ $(GCC_ARMPATCH_EXTRACT) $(GCC_ARMPATCH_SOURCE) | patch -p1 - perl -i -p -e \ - 's/^(TARGET_LIBGCC2_CFLAGS.*)/$$1 -Dinhibit_libc -D__gthr_posix_h/' \ - $(GCC_DIR)/gcc/config/arm/t-linux +# else #PTXCONF_ARCH_ARM + cd $(GCC_DIR) && \ + $(GCC_PATCH_EXTRACT) $(GCC_PATCH_SOURCE) | patch -p1 + endif #PTXCONF_ARCH_ARM + endif #PTXCONF_GCC_2_95_3 + + + ifdef PTXCONF_GCC_3_2_3 + ifdef PTXCONF_ARCH_PPC + cd $(GCC_DIR) && \ + $(GCC_PPCPATCH_EXTRACT) $(GCC_PPCPATCH_SOURCE) | patch -p1 endif - # - ifeq (y, $(PTXCONF_ARCH_X86)) - # - # x86: fake headers - # - perl -i -p -e \ - 's/^(TARGET_LIBGCC2_CFLAGS.*)/$$1 -Dinhibit_libc -D__gthr_posix_h/' \ - $(GCC_DIR)/gcc/config/t-linux - endif + endif + +# +# sto^H^H^Hinspired by Erik Andersen's buildroot +# + +# +# Hack things to use the correct shared lib loader +# + cd $(GCC_DIR) && \ + export LIST=`grep -lr -- "-dynamic-linker.*\.so[\.0-9]*" *` && \ + if [ -n "$$LIST" ] ; then \ + perl -i -p -e "s,-dynamic-linker.*\.so[\.0-9]*},-dynamic-linker $(DYNAMIC_LINKER)},;" $$LIST; \ + fi; + +# +# Prevent system glibc start files from leaking in uninvited... +# + perl -i -p -e "s,standard_startfile_prefix_1 = \".*,standard_startfile_prefix_1 =\"$(CROSS_LIB_DIR)/lib/\";,;" $(GCC_DIR)/gcc/gcc.c; + perl -i -p -e "s,standard_startfile_prefix_2 = \".*,standard_startfile_prefix_2 =\"$(CROSS_LIB_DIR)/usr/lib/\";,;" $(GCC_DIR)/gcc/gcc.c; + +# +# Prevent system glibc include files from leaking in uninvited... +# + perl -i -p -e "s,^NATIVE_SYSTEM_HEADER_DIR.*,NATIVE_SYSTEM_HEADER_DIR=$(CROSS_LIB_DIR)/include,;" $(GCC_DIR)/gcc/Makefile.in; + perl -i -p -e "s,^CROSS_SYSTEM_HEADER_DIR.*,CROSS_SYSTEM_HEADER_DIR=$(CROSS_LIB_DIR)/include,;" $(GCC_DIR)/gcc/Makefile.in; + cd $(GCC_DIR) && \ + export LIST=`grep -lr -- "define STANDARD_INCLUDE_DIR" *` && \ + if [ -n "$$LIST" ] ; then \ + perl -i -p -e "s,^#\s*define.*STANDARD_INCLUDE_DIR.*,#define STANDARD_INCLUDE_DIR \"$(CROSS_LIB_DIR)/include\",;" $$LIST; \ + fi; + +# +# Prevent system glibc libraries from being found by collect2 +# when it calls locatelib() and rummages about the system looking +# for libraries with the correct name... +# + perl -i -p -e "s,\"/lib,\"$(CROSS_LIB_DIR)/lib,g;" $(GCC_DIR)/gcc/collect2.c + perl -i -p -e "s,\"/usr/,\"$(CROSS_LIB_DIR)/usr/,g;" $(GCC_DIR)/gcc/collect2.c + + +ifdef PTXCONF_UCLIBC +# +# Prevent gcc from using the unwind-dw2-fde-glibc code +# + perl -i -p -e "s,^#ifndef inhibit_libc,#define inhibit_libc\n#ifndef inhibit_libc,g;" $(GCC_DIR)/gcc/unwind-dw2-fde-glibc.c; +endif + + +ifdef PTXCONF_UCLIBC +ifdef PTXCONF_GCC_2_95_3 +# +# Use atexit() directly, rather than cxa_atexit +# + perl -i -p -e "s,int flag_use_cxa_atexit = 1;,int flag_use_cxa_atexit = 0;,g;"\ + $(GCC_DIR)/gcc/cp/decl2.c; +# +# We do not wish to build the libstdc++ library provided with gcc, +# since it doesn't seem to work at all with uClibc plus gcc 2.95... +# + mv $(GCC_DIR)/libstdc++ $(GCC_DIR)/libstdc++.orig + mv $(GCC_DIR)/libio $(GCC_DIR)/libio.orig +endif # PTXCONFIG_GCC_2_95_3 + +ifdef PTXCONF_GCC_3_2_3 +# +# Hack up the soname for libstdc++ +# + perl -i -p -e "s,\.so\.1,.so.0.9.9,g;" $(GCC_DIR)/gcc/config/t-slibgcc-elf-ver; + perl -i -p -e "s,-version-info.*[0-9]:[0-9]:[0-9],-version-info 9:9:0,g;" \ + $(GCC_DIR)/libstdc++-v3/src/Makefile.am $(GCC_DIR)/libstdc++-v3/src/Makefile.in; + perl -i -p -e "s,3\.0\.0,9.9.0,g;" $(GCC_DIR)/libstdc++-v3/acinclude.m4 \ + $(GCC_DIR)/libstdc++-v3/aclocal.m4 $(GCC_DIR)/libstdc++-v3/configure; +# +# For now, we don't support locale-ified ctype (we will soon), +# so bypass that problem for now... +# + perl -i -p -e "s,defined.*_GLIBCPP_USE_C99.*,1,g;" \ + $(GCC_DIR)/libstdc++-v3/config/locale/generic/c_locale.cc; + cp $(GCC_DIR)/libstdc++-v3/config/os/generic/bits/ctype_base.h \ + $(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/ + cp $(GCC_DIR)/libstdc++-v3/config/os/generic/bits/ctype_inline.h \ + $(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/ + cp $(GCC_DIR)/libstdc++-v3/config/os/generic/bits/ctype_noninline.h \ + $(GCC_DIR)/libstdc++-v3/config/os/gnu-linux/bits/ + +endif # PTXCONF_GCC_3_2_3 +endif # PTXCON_UCLIBC touch $@ # ---------------------------------------------------------------------------- @@ -94,25 +217,30 @@ xchain-gccstage1_prepare_deps = $(STATEDIR)/xchain-binutils.install xchain-gccstage1_prepare_deps += $(STATEDIR)/xchain-gccstage1.extract xchain-gccstage1_prepare_deps += $(STATEDIR)/xchain-kernel.install +GCC_STAGE1_PATH = PATH=$(CROSS_PATH) +GCC_STAGE1_ENV = $(HOSTCC_ENV) + +GCC_STAGE1_AUTOCONF = \ + --target=$(PTXCONF_GNU_TARGET) \ + --host=$(GNU_HOST) \ + --build=$(GNU_HOST) \ + --prefix=$(PTXCONF_PREFIX) \ + --disable-nls \ + --disable-shared \ + --enable-multilib \ + --enable-target-optspace \ + --disable-threads \ + --with-gnu-ld \ + --enable-languages=c + $(STATEDIR)/xchain-gccstage1.prepare: $(xchain-gccstage1_prepare_deps) @$(call targetinfo, xchain-gccstage1.prepare) - mkdir -p $(GCC_STAGE1_DIR) - # - # configure - # + @$(call clean, $(GCC_STAGE1_DIR)) + [ -d $(GCC_STAGE1_DIR) ] || mkdir -p $(GCC_STAGE1_DIR) + cd $(GCC_STAGE1_DIR) && \ - PATH=$(PTXCONF_PREFIX)/bin:$$PATH \ - AR=$(PTXCONF_GNU_TARGET)-ar \ - RANLIB=$(PTXCONF_GNU_TARGET)-ranlib \ - CC=$(HOSTCC) \ - $(GCC_DIR)/configure \ - --target=$(PTXCONF_GNU_TARGET) \ - --prefix=$(PTXCONF_PREFIX) \ - --enable-target-optspace \ - --disable-nls \ - --with-gnu-ld \ - --disable-shared \ - --enable-languages=c + $(GCC_STAGE1_PATH) $(GCC_STAGE1_ENV) \ + $(GCC_DIR)/configure $(GCC_STAGE1_AUTOCONF) touch $@ # ---------------------------------------------------------------------------- @@ -121,11 +249,21 @@ $(STATEDIR)/xchain-gccstage1.prepare: $(xchain-gccstage1_prepare_deps) xchain-gccstage1_compile: $(STATEDIR)/xchain-gccstage1.compile -$(STATEDIR)/xchain-gccstage1.compile: \ - $(STATEDIR)/xchain-gccstage1.prepare +$(STATEDIR)/xchain-gccstage1.compile: $(STATEDIR)/xchain-gccstage1.prepare @$(call targetinfo, xchain-gccstage1.compile) - cd $(GCC_STAGE1_DIR) && \ - PATH=$(PATH):$(PTXCONF_PREFIX)/bin make + ifdef PTXCONF_GCC_2_95_3 + cd $(GCC_STAGE1_DIR) && \ + $(GCC_STAGE1_PATH) \ + make MAKE="make TARGET_LIBGCC2_CFLAGS='-Dinhibit_libc -D__gthr_posix_h'" + else +# +# -DSTAGE1 is a switch for the PPC platfrom +# it makes some modification active needed only for stage 1 +# + cd $(GCC_STAGE1_DIR) && \ + $(GCC_STAGE1_PATH) \ + make MAKE="make TARGET_LIBGCC2_CFLAGS='-Dinhibit_libc -DSTAGE1'" + endif touch $@ # ---------------------------------------------------------------------------- @@ -136,8 +274,9 @@ xchain-gccstage1_install: $(STATEDIR)/xchain-gccstage1.install $(STATEDIR)/xchain-gccstage1.install: $(STATEDIR)/xchain-gccstage1.compile @$(call targetinfo, xchain-gccstage1.install) - cd $(GCC_STAGE1_DIR) && \ - PATH=$(PATH):$(PTXCONF_PREFIX)/bin make install + cd $(GCC_STAGE1_DIR) && \ + $(GCC_STAGE1_PATH) $(GCC_STAGE1_ENV) \ + make install touch $@ # ---------------------------------------------------------------------------- @@ -146,7 +285,7 @@ $(STATEDIR)/xchain-gccstage1.install: $(STATEDIR)/xchain-gccstage1.compile xchain-gccstage1_targetinstall: $(STATEDIR)/xchain-gccstage1.targetinstall -$(STATEDIR)/xchain-gccstage1.targetinstall: $(STATEDIR)/xchain-gccstage1.install +$(STATEDIR)/xchain-gccstage1.targetinstall: @$(call targetinfo, xchain-gccstage1.targetinstall) touch $@ @@ -155,7 +294,9 @@ $(STATEDIR)/xchain-gccstage1.targetinstall: $(STATEDIR)/xchain-gccstage1.install # ---------------------------------------------------------------------------- xchain-gccstage1_clean: - rm -fr $(GCC_STAGE1_DIR) $(STATEDIR)/xchain-gccstage1.* $(GCC_DIR) + rm -fr $(GCC_STAGE1_DIR) + rm -fr $(STATEDIR)/xchain-gccstage1.* + rm -fr $(GCC_DIR) # vim: syntax=make diff --git a/rules/xchain-gccstage2.make b/rules/xchain-gccstage2.make index 4685efa9d..77f8fe822 100644 --- a/rules/xchain-gccstage2.make +++ b/rules/xchain-gccstage2.make @@ -1,4 +1,5 @@ -# $Id: xchain-gccstage2.make,v 1.5 2003/06/29 13:27:36 robert Exp $ +# -*-makefile-*- +# $Id: xchain-gccstage2.make,v 1.6 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -8,13 +9,6 @@ # # -# We provide this package -# -ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) -PACKAGES += xchain-gccstage2 -endif - -# # Paths and names # # See gccstage1 for variable definitions @@ -24,10 +18,9 @@ endif # Get # ---------------------------------------------------------------------------- -# FIXME: ??? xchain-gccstage2_get: $(STATEDIR)/glibc.install xchain-gccstage2_get: $(STATEDIR)/xchain-gccstage2.get -$(STATEDIR)/xchain-gccstage2.get: $(STATEDIR)/xchain-gccstage1.get +$(STATEDIR)/xchain-gccstage2.get: $(xchain-gccstate1_get_deps) @$(call targetinfo, xchain-gccstage2.get) touch $@ @@ -37,21 +30,8 @@ $(STATEDIR)/xchain-gccstage2.get: $(STATEDIR)/xchain-gccstage1.get xchain-gccstage2_extract: $(STATEDIR)/xchain-gccstage2.extract -$(STATEDIR)/xchain-gccstage2.extract: \ - $(STATEDIR)/xchain-gccstage2.get \ - $(STATEDIR)/glibc.install +$(STATEDIR)/xchain-gccstage2.extract: $(xchain-gccstage1_extract_deps) @$(call targetinfo, xchain-gccstage2.extract) - # remove glibc header hack - ifeq (y, $(PTXCONF_ARCH_ARM)) - perl -p -i -e \ - 's/^(TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC).*/$$1/' \ - $(GCC_DIR)/gcc/config/arm/t-linux - endif - ifeq (y, $(PTXCONF_ARCH_X86)) - perl -p -i -e \ - 's/^(TARGET_LIBGCC2_CFLAGS = -fPIC).*/$$1/' \ - $(GCC_DIR)/gcc/config/t-linux - endif touch $@ # ---------------------------------------------------------------------------- @@ -60,34 +40,47 @@ $(STATEDIR)/xchain-gccstage2.extract: \ xchain-gccstage2_prepare: $(STATEDIR)/xchain-gccstage2.prepare -GCC_STAGE2_AUTOCONF = --target=$(PTXCONF_GNU_TARGET) -GCC_STAGE2_AUTOCONF += --prefix=$(PTXCONF_PREFIX) -GCC_STAGE2_AUTOCONF += --enable-target-optspace -GCC_STAGE2_AUTOCONF += --disable-nls -GCC_STAGE2_AUTOCONF += --with-gnu-ld -GCC_STAGE2_AUTOCONF += --disable-shared -GCC_STAGE2_AUTOCONF += --enable-languages="c,c++" -GCC_STAGE2_AUTOCONF += --with-headers=$(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET)/include -ifeq (y, $(PTXCONF_GLIBC_PTHREADS)) -GCC_STAGE2_AUTOCONF += --enable-threads=posix -else -GCC_STAGE2_AUTOCONF += --disable-threads +xchain-gccstage2_prepare_deps = $(STATEDIR)/xchain-gccstage2.extract +ifdef PTXCONF_GLIBC +xchain-gccstage2_prepare_deps += $(STATEDIR)/xchain-glibc.install +endif +ifdef PTXCONF_UCLIBC +xchain-gccstage2_prepare_deps += $(STATEDIR)/xchain-uclibc.install +endif + +GCC_STAGE2_PATH = PATH=$(CROSS_PATH) +GCC_STAGE2_ENV = $(HOSTCC_ENV) + +GCC_STAGE2_AUTOCONF_THREADS = --disable-threads +ifdef PTXCONF_GLIBC_PTHREADS +GCC_STAGE2_AUTOCONF_THREADS = --enable-threads=posix +endif +ifdef PTXCONF_UCLIBC_UCLIBC_HAS_THREADS +GCC_STAGE2_AUTOCONF_THREADS = --enable-threads=posix endif -xchain-gccstage2_prepare_deps = $(STATEDIR)/xchain-gccstage2.extract -xchain-gccstage2_prepare_deps += $(STATEDIR)/xchain-kernel.prepare +GCC_STAGE2_AUTOCONF = \ + --target=$(PTXCONF_GNU_TARGET) \ + --host=$(GNU_HOST) \ + --build=$(GNU_HOST) \ + --prefix=$(PTXCONF_PREFIX) \ + --disable-nls \ + --disable-shared \ + --enable-multilib \ + --enable-target-optspace \ + --disable-threads \ + --with-gnu-ld \ + --enable-languages="c,c++" \ + --with-headers=$(CROSS_LIB_DIR)/include \ + $(GCC_STAGE2_AUTOCONF_THREADS) $(STATEDIR)/xchain-gccstage2.prepare: $(xchain-gccstage2_prepare_deps) @$(call targetinfo, xchain-gccstage2.prepare) - [ -d $(GCC_STAGE2_DIR) ] || mkdir $(GCC_STAGE2_DIR) -# # -# # configure -# # - cd $(GCC_STAGE2_DIR) && \ - PATH=$(PTXCONF_PREFIX)/bin:$$PATH \ - AR=$(PTXCONF_GNU_TARGET)-ar \ - RANLIB=$(PTXCONF_GNU_TARGET)-ranlib \ - CC=$(HOSTCC) \ + @$(call clean, $(GCC_STAGE2_DIR)) + [ -d $(GCC_STAGE2_DIR) ] || mkdir -p $(GCC_STAGE2_DIR) + + cd $(GCC_STAGE2_DIR) && \ + $(GCC_STAGE2_PATH) $(GCC_STAGE2_ENV) \ $(GCC_DIR)/configure $(GCC_STAGE2_AUTOCONF) touch $@ @@ -100,10 +93,11 @@ xchain-gccstage2_compile: $(STATEDIR)/xchain-gccstage2.compile $(STATEDIR)/xchain-gccstage2.compile: \ $(STATEDIR)/xchain-gccstage2.prepare @$(call targetinfo, xchain-gccstage2.compile) - # FIXME: why do we have to define _GNU_SOURCE here? Otherwhise - # the c++ compiler cannot be compiled. +# # FIXME: why do we have to define _GNU_SOURCE here? Otherwhise +# # the c++ compiler cannot be compiled. cd $(GCC_STAGE2_DIR) && \ - PATH=$(PATH):$(PTXCONF_PREFIX)/bin make CXXFLAGS_FOR_TARGET="-D_GNU_SOURCE" + $(GCC_STAGE2_PATH) $(GCC_STAGE2_ENV) \ + make CXXFLAGS_FOR_TARGET="-D_GNU_SOURCE" touch $@ # ---------------------------------------------------------------------------- @@ -115,7 +109,8 @@ xchain-gccstage2_install: $(STATEDIR)/xchain-gccstage2.install $(STATEDIR)/xchain-gccstage2.install: $(STATEDIR)/xchain-gccstage2.compile @$(call targetinfo, xchain-gccstage2.install) cd $(GCC_STAGE2_DIR) && \ - PATH=$(PATH):$(PTXCONF_PREFIX)/bin make install + $(GCC_STAGE2_PATH) $(GCC_STAGE2_ENV) \ + make install touch $@ # ---------------------------------------------------------------------------- @@ -124,7 +119,7 @@ $(STATEDIR)/xchain-gccstage2.install: $(STATEDIR)/xchain-gccstage2.compile xchain-gccstage2_targetinstall: $(STATEDIR)/xchain-gccstage2.targetinstall -$(STATEDIR)/xchain-gccstage2.targetinstall: $(STATEDIR)/xchain-gccstage2.install +$(STATEDIR)/xchain-gccstage2.targetinstall: @$(call targetinfo, xchain-gccstage2.targetinstall) touch $@ diff --git a/rules/xchain-gdb.make b/rules/xchain-gdb.make index f5577a1b5..42c48c868 100644 --- a/rules/xchain-gdb.make +++ b/rules/xchain-gdb.make @@ -1,5 +1,5 @@ # -*-makefile-*- -# $Id: xchain-gdb.make,v 1.3 2003/06/30 15:43:26 bsp Exp $ +# $Id: xchain-gdb.make,v 1.4 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Auerswald GmbH & Co. KG, Schandelah, Germany # (c) 2002 by Pengutronix e.K., Hildesheim, Germany @@ -21,7 +21,7 @@ endif # GDB = gdb-5.3 GDB_URL = ftp://ftp.gnu.org/pub/gnu/gdb/$(GDB).tar.gz -GDB_SOURCE = $(SRCDIR)/$(GDB).tar.gz +GDB_SOURCE = $(SRCDIR)/$(GDB).tar.gz GDB_DIR = $(BUILDDIR)/$(GDB) GDB_EXTRACT = gzip -dc @@ -32,10 +32,11 @@ GDB_EXTRACT = gzip -dc xchain-gdb_get: $(STATEDIR)/xchain-gdb.get $(STATEDIR)/xchain-gdb.get: $(GDB_SOURCE) + @$(call targetinfo, xchain-gdb.get) touch $@ $(GDB_SOURCE): - @$(call targetinfo, xchain-gdb.get) + @$(call targetinfo, $(GDB_SOURCE)) wget -P $(SRCDIR) $(PASSIVEFTP) $(GDB_URL) # ---------------------------------------------------------------------------- @@ -46,6 +47,7 @@ xchain-gdb_extract: $(STATEDIR)/xchain-gdb.extract $(STATEDIR)/xchain-gdb.extract: $(STATEDIR)/xchain-gdb.get @$(call targetinfo, xchain-gdb.extract) + @$(call clean, $(GDB_DIR)) $(GDB_EXTRACT) $(GDB_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - touch $@ @@ -93,10 +95,6 @@ xchain-gdb_install: $(STATEDIR)/xchain-gdb.install $(STATEDIR)/xchain-gdb.install: $(STATEDIR)/xchain-gdb.compile @$(call targetinfo, xchain-gdb.install) -# [ -d $(PTXCONF_PREFIX) ] || \ -# $(SUDO) install -g users -m 0755 \ -# -o $(PTXUSER) \ -# -d $(PTXCONF_PREFIX) cd $(GDB_DIR) && make install touch $@ @@ -109,8 +107,8 @@ xchain-gdb_targetinstall: $(STATEDIR)/xchain-gdb.targetinstall $(STATEDIR)/xchain-gdb.targetinstall: $(STATEDIR)/xchain-gdb.install @$(call targetinfo, xchain-gdb.targetinstall) ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN_GDBSERVER)) - $(CROSSSTRIP) -S $(GDB_DIR)/gdb/gdbserver/gdbserver cp $(GDB_DIR)/gdb/gdbserver/gdbserver $(ROOTDIR)/bin + $(CROSSSTRIP) -R .notes -R .comment $(ROOTDIR)/bin/gdbserver endif touch $@ diff --git a/rules/xchain-glibc.make b/rules/xchain-glibc.make index 721a36d63..453a68018 100644 --- a/rules/xchain-glibc.make +++ b/rules/xchain-glibc.make @@ -1,4 +1,5 @@ -# $Id: xchain-glibc.make,v 1.8 2003/06/29 13:27:36 robert Exp $ +# -*-makefile-*- +# $Id: xchain-glibc.make,v 1.9 2003/07/16 04:23:28 mkl Exp $ # # (c) 2003 by Auerswald GmbH & Co. KG, Schandelah, Germany # (c) 2002 by Pengutronix e.K., Hildesheim, Germany @@ -11,336 +12,101 @@ # # We provide this package # -ifeq (y, $(PTXCONF_GLIBC_2_2_5)) -PACKAGES += glibc -endif -ifeq (y, $(PTXCONF_GLIBC_2_2_4)) -PACKAGES += glibc -endif -ifeq (y, $(PTXCONF_GLIBC_2_2_3)) -PACKAGES += glibc -endif - - -# -# Paths and names -# -ifeq (y, $(PTXCONF_GLIBC_2_2_5)) -GLIBC_VERSION = 2.2.5 -endif -ifeq (y, $(PTXCONF_GLIBC_2_2_4)) -GLIBC_VERSION = 2.2.4 -endif -ifeq (y, $(PTXCONF_GLIBC_2_2_3)) -GLIBC_VERSION = 2.2.3 +ifdef PTXCONF_GLIBC +XCHAIN += xchain-glibc endif -GLIBC = glibc-$(GLIBC_VERSION) -GLIBC_URL = ftp://ftp.gnu.org/gnu/glibc/$(GLIBC).tar.gz -GLIBC_SOURCE = $(SRCDIR)/$(GLIBC).tar.gz -GLIBC_DIR = $(BUILDDIR)/$(GLIBC) -GLIBC_EXTRACT = gzip -dc - -GLIBC_THREADS = glibc-linuxthreads-$(GLIBC_VERSION) -GLIBC_THREADS_URL = ftp://ftp.gnu.org/gnu/glibc/$(GLIBC_THREADS).tar.gz -GLIBC_THREADS_SOURCE = $(SRCDIR)/$(GLIBC_THREADS).tar.gz -GLIBC_THREADS_DIR = $(GLIBC_DIR) -GLIBC_THREADS_EXTRACT = gzip -dc - -GLIBC_PTXPATCH = glibc-$(GLIBC_VERSION)-ptx3.diff -GLIBC_PTXPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PTXPATCH) -GLIBC_PTXPATCH_SOURCE = $(SRCDIR)/$(GLIBC_PTXPATCH) -GLIBC_PTXPATCH_DIR = $(GLIBC_DIR) -GLIBC_PTXPATCH_EXTRACT = cat - +XCHAIN_GLIBC_BUILDDIR = $(BUILDDIR)/xchain-$(GLIBC)-build # ---------------------------------------------------------------------------- # Get # ---------------------------------------------------------------------------- -glibc_get: $(STATEDIR)/glibc.get - -glibc_get_deps = $(STATEDIR)/glibc-base.get -glibc_get_deps += $(STATEDIR)/glibc-ptxpatch.get -ifdef PTXCONF_GLIBC_PTHREADS -glibc_get_deps += $(STATEDIR)/glibc-threads.get -endif +xchain-glibc_get: $(STATEDIR)/xchain-glibc.get -$(STATEDIR)/glibc.get: $(glibc_get_deps) +$(STATEDIR)/xchain-glibc.get: $(glibc_get_deps) + @$(call targetinfo, xchain-glibc.get) touch $@ -$(STATEDIR)/glibc-base.get: $(GLIBC_SOURCE) - touch $@ - -$(STATEDIR)/glibc-threads.get: $(GLIBC_THREADS_SOURCE) - touch $@ - -$(STATEDIR)/glibc-ptxpatch.get: $(GLIBC_PTXPATCH_SOURCE) - touch $@ - -$(GLIBC_SOURCE): - @$(call targetinfo, glibc-base.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(GLIBC_URL) - -$(GLIBC_THREADS_SOURCE): - @$(call targetinfo, glibc-threads.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(GLIBC_THREADS_URL) - -$(GLIBC_PTXPATCH_SOURCE): - @$(call targetinfo, glibc-ptxpatch.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(GLIBC_PTXPATCH_URL) - # ---------------------------------------------------------------------------- # Extract # ---------------------------------------------------------------------------- -glibc_extract: $(STATEDIR)/glibc.extract -glibc-base_extract: $(STATEDIR)/glibc-base.extract -glibc-threads_extract: $(STATEDIR)/glibc-threads.extract +xchain-glibc_extract: $(STATEDIR)/xchain-glibc.extract -glibc_extract_deps = $(STATEDIR)/glibc-base.extract -ifeq (y, $(PTXCONF_GLIBC_PTHREADS)) -glibc_extract_deps += $(STATEDIR)/glibc-threads.extract -endif - -$(STATEDIR)/glibc.extract: $(glibc_extract_deps) - @$(call targetinfo, glibc.extract) - touch $@ - -$(STATEDIR)/glibc-base.extract: $(STATEDIR)/glibc.get - @$(call targetinfo, glibc-base.extract) - $(GLIBC_EXTRACT) $(GLIBC_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - - # fix some bugs... - cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_PTXPATCH_SOURCE) - # fix: sunrpc's makefile has the wrong magic to find cpp... - # FIXME: is this the right fix for other versions than 2.2.5? - cd $(GLIBC_DIR)/sunrpc && mkdir cpp && ln -s $(PTXCONF_PREFIX)/bin/cpp cpp/ - # this is magically recreated if missing (necessary because - # of patch against configure.in) - rm -f $(GLIBC_DIR)/sysdeps/unix/sysv/linux/configure - touch $@ - -$(STATEDIR)/glibc-threads.extract: $(STATEDIR)/glibc-threads.get - @$(call targetinfo, glibc-threads.extract) - $(GLIBC_THREADS_EXTRACT) $(GLIBC_THREADS_SOURCE) | $(TAR) -C $(GLIBC_DIR) -xf - +$(STATEDIR)/xchain-glibc.extract: $(glibc_extract_deps) + @$(call targetinfo, xchain-glibc.extract) touch $@ # ---------------------------------------------------------------------------- # Prepare # ---------------------------------------------------------------------------- -glibc_prepare: $(STATEDIR)/glibc.extract $(STATEDIR)/autoconf213.install - -GLIBC_AUTOCONF = -GLIBC_ENVIRONMENT = - -ifdef PTXCONF_GLIBC - -# -# arcitecture dependend configuration -# - -GLIBC_AUTOCONF += --build=$(GNU_HOST) -GLIBC_AUTOCONF += --host=$(PTXCONF_GNU_TARGET) -GLIBC_AUTOCONF += --disable-sanity-checks -GLIBC_ENVIRONMENT = PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(PTXCONF_PREFIX)/bin:$$PATH -GLIBC_MAKEVARS = AR=$(PTXCONF_GNU_TARGET)-ar -GLIBC_MAKEVARS += RANLIB=$(PTXCONF_GNU_TARGET)-ranlib -GLIBC_MAKEVARS += CC=$(PTXCONF_GNU_TARGET)-gcc - -# -# features -# -ifdef PTXCONF_GLIBC_FLOATINGPOINT - GLIBC_AUTOCONF+=--with-fp=yes -else - GLIBC_AUTOCONF+=--with-fp=no -endif -ifdef PTXCONF_GLIBC_LIBIO - GLIBC_AUTOCONF+=--enable-libio -endif -ifdef PTXCONF_GLIBC_SHARED - GLIBC_AUTOCONF+=--enable-shared -else - GLIBC_AUTOCONF+=--enable-shared=no -endif -ifdef PTXCONF_GLIBC_PROFILED - GLIBC_AUTOCONF+=--enable-profile=yes -else - GLIBC_AUTOCONF+=--enable-profile=no -endif -ifdef PTXCONF_GLIBC_OMITFP - GLIBC_AUTOCONF+=--enable-omitfp -endif -ifdef PTXCONF_GLIBC_PTHREADS - GLIBC_AUTOCONF+=--enable-add-ons=linuxthreads -endif - -# -# optimisation -# -ifdef PTXCONF_OPT_I386 - GLIBC_CFLAGS+=-mcpu=i386 -O2 -endif -ifdef PTXCONF_OPT_I486 - GLIBC_CFLAGS+=-mcpu=i486 -O2 -endif -ifdef PTXCONF_OPT_I686 - GLIBC_CFLAGS+=-mcpu=i686 -O2 -endif -ifdef PTXCONF_ARCH_ARM -# GLIBC_CFLAGS+=-Wall -O2 -endif -ifdef GLIBC_CFLAGS -GLIBC_ENVIRONMENT += CFLAGS="$(GLIBC_CFLAGS)" -endif - -endif - -# -# dependencies -# -glibc_prepare_deps = $(STATEDIR)/glibc.extract -ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) -glibc_prepare_deps += $(STATEDIR)/xchain-gccstage1.install -endif - -$(STATEDIR)/glibc.prepare: $(glibc_prepare_deps) - @$(call targetinfo, glibc.prepare) - ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) - mkdir -p $(BUILDDIR)/$(GLIBC)-obj - cd $(BUILDDIR)/$(GLIBC)-obj && \ - $(GLIBC_ENVIRONMENT) \ +xchain-glibc_prepare: $(STATEDIR)/xchain-glibc.prepare + +$(STATEDIR)/xchain-glibc.prepare: \ + $(STATEDIR)/autoconf213.install \ + $(STATEDIR)/xchain-gccstage1.install \ + $(STATEDIR)/xchain-glibc.extract + @$(call targetinfo, xchain-glibc.prepare) + @$(call clean, $(XCHAIN_GLIBC_BUILDDIR)) + mkdir -p $(XCHAIN_GLIBC_BUILDDIR) + cd $(XCHAIN_GLIBC_BUILDDIR) && \ + $(GLIBC_PATH) $(GLIBC_ENV) \ $(GLIBC_DIR)/configure $(PTXCONF_GNU_TARGET) \ - $(GLIBC_AUTOCONF) \ - --prefix=$(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET) - endif - # - # we need a second directory where we configure glibc for the - # dynamic linker - # - mkdir -p $(BUILDDIR)/$(GLIBC)-ldso - cd $(BUILDDIR)/$(GLIBC)-ldso && \ - $(GLIBC_ENVIRONMENT) \ - $(GLIBC_DIR)/configure $(PTXCONF_GNU_TARGET) \ - $(GLIBC_AUTOCONF) \ - --prefix= + $(GLIBC_AUTOCONF) \ + --prefix=$(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET) \ + --libexecdir=$(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET)/usr/bin + sync + sync + sync + sleep 5 + sync + sync + sync touch $@ # ---------------------------------------------------------------------------- # Compile # ---------------------------------------------------------------------------- -glibc_compile: $(STATEDIR)/glibc.compile +xchain-glibc_compile: $(STATEDIR)/xchain-glibc.compile -$(STATEDIR)/glibc.compile: $(STATEDIR)/glibc.prepare - ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) - # let makefile find autoconf-2.13 as default - cd $(BUILDDIR)/$(GLIBC)-obj && $(GLIBC_ENVIRONMENT) make $(MAKEVARS) - endif -# # FIXME: We need 2 separate targets *here* - # FIXME: is there another possibility to create an ld.so which has - # correct search paths compiled in for /lib? - cd $(BUILDDIR)/$(GLIBC)-ldso && $(GLIBC_ENVIRONMENT) make $(MAKEVARS) +$(STATEDIR)/xchain-glibc.compile: $(STATEDIR)/xchain-glibc.prepare + @$(call targetinfo, xchain-glibc.compile) + cd $(XCHAIN_GLIBC_BUILDDIR) && $(GLIBC_PATH) make touch $@ # ---------------------------------------------------------------------------- # Install # ---------------------------------------------------------------------------- -glibc_install: $(STATEDIR)/glibc.install +xchain-glibc_install: $(STATEDIR)/xchain-glibc.install -$(STATEDIR)/glibc.install: $(STATEDIR)/glibc.compile - @$(call targetinfo, glibc.install) - ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) - cd $(BUILDDIR)/$(GLIBC)-obj && $(GLIBC_ENVIRONMENT) make install - endif +$(STATEDIR)/xchain-glibc.install: $(STATEDIR)/xchain-glibc.compile + @$(call targetinfo, xchain-glibc.install) + cd $(XCHAIN_GLIBC_BUILDDIR) && $(GLIBC_PATH) make install touch $@ # ---------------------------------------------------------------------------- # Target-Install # ---------------------------------------------------------------------------- -glibc_targetinstall: $(STATEDIR)/glibc.targetinstall +xchain-glibc_targetinstall: $(STATEDIR)/xchain-glibc.targetinstall -$(STATEDIR)/glibc.targetinstall: $(STATEDIR)/glibc.install - @$(call targetinfo, glibc.targetinstall) - # CAREFUL: don't never ever make install in ldso tree!!! - mkdir -p $(ROOTDIR)/lib - install $(BUILDDIR)/$(GLIBC)-ldso/elf/ld.so $(ROOTDIR)/lib/ld-$(GLIBC_VERSION).so - $(CROSSSTRIP) -S $(ROOTDIR)/lib/ld-$(GLIBC_VERSION).so - ln -sf ld-$(GLIBC_VERSION).so $(ROOTDIR)/lib/ld-linux.so.2 - install $(BUILDDIR)/$(GLIBC)-ldso/libc.so $(ROOTDIR)/lib/libc.so.6 - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libc.so.6 - ln -sf libc.so.6 $(ROOTDIR)/lib/libc.so - ifeq (y, $(PTXCONF_GLIBC_PTHREADS)) - install $(BUILDDIR)/$(GLIBC)-ldso/linuxthreads/libpthread.so $(ROOTDIR)/lib/libpthread.so.0 - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libpthread.so.0 - endif - ifeq (y, $(PTXCONF_GLIBC_THREAD_DB)) - install $(BUILDDIR)/$(GLIBC)-ldso/linuxthreads_db/libthread_db.so $(ROOTDIR)/lib/libthread_db.so.1 - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libthread_db.so.1 - endif - ifeq (y, $(PTXCONF_GLIBC_CRYPT)) - install $(BUILDDIR)/$(GLIBC)-ldso/crypt/libcrypt.so.1 $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libcrypt.so.1 - endif - ifeq (y, $(PTXCONF_GLIBC_UTIL)) - install $(BUILDDIR)/$(GLIBC)-ldso/login/libutil.so $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libutil.so - ln -sf libutil.so $(ROOTDIR)/lib/libutil.so.1 - endif - ifeq (y, $(PTXCONF_GLIBC_LIBM)) - install $(BUILDDIR)/$(GLIBC)-ldso/math/libm.so $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libm.so - ln -sf libm.so $(ROOTDIR)/lib/libm.so.6 - endif - ifeq (y, $(PTXCONF_GLIBC_NSS_DNS)) - install $(BUILDDIR)/$(GLIBC)-ldso/resolv/libnss_dns.so.2 $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_dns.so.2 - $(CROSSSTRIP) $(ROOTDIR)/lib/libnss_dns.so.2 - endif - ifeq (y, $(PTXCONF_GLIBC_NSS_FILES)) - install $(BUILDDIR)/$(GLIBC)-ldso/nss/libnss_files.so.2 $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_files.so.2 - endif - ifeq (y, $(PTXCONF_GLIBC_NSS_HESIOD)) - install $(BUILDDIR)/$(GLIBC)-ldso/hesiod/libnss_hesiod.so.2 $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_hesiod.so.2 - endif - ifeq (y, $(PTXCONF_GLIBC_NSS_NIS)) - install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnss_nis.so.2 $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_nis.so.2 - endif - ifeq (y, $(PTXCONF_GLIBC_NSS_NISPLUS)) - install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnss_nisplus.so.2 $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_nisplus.so.2 - endif - ifeq (y, $(PTXCONF_GLIBC_NSS_COMPAT)) - install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnss_compat.so.2 $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_compat.so.2 - endif - ifeq (y, $(PTXCONF_GLIBC_RESOLV)) - install $(BUILDDIR)/$(GLIBC)-ldso/resolv/libresolv.so $(ROOTDIR)/lib/libresolv.so.$(GLIBC_VERSION) - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libresolv.so.$(GLIBC_VERSION) - ln -sf libresolv.so.$(GLIBC_VERSION) $(ROOTDIR)/lib/libresolv.so - endif - ifeq (y, $(PTXCONF_GLIBC_NSL)) - install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnsl.so $(ROOTDIR)/lib/libnsl.so.$(GLIBC_VERSION) - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnsl.so.$(GLIBC_VERSION) - ln -sf libnsl.so.$(GLIBC_VERSION) $(ROOTDIR)/lib/libnsl.so - ln -sf libnsl.so.$(GLIBC_VERSION) $(ROOTDIR)/lib/libnsl.so.1 - endif +$(STATEDIR)/xchain-glibc.targetinstall: $(STATEDIR)/xchain-glibc.install touch $@ # ---------------------------------------------------------------------------- # Clean # ---------------------------------------------------------------------------- -glibc_clean: - -rm -rf $(STATEDIR)/glibc* - -rm -rf $(GLIBC_DIR) - -rm -rf $(BUILDDIR)/$(GLIBC)-obj - -rm -rf $(BUILDDIR)/$(GLIBC)-ldso - -# vim: syntax=make +xchain-glibc_clean: + -rm -rf $(STATEDIR)/xchain-glibc* + -rm -rf $(STATEDIR)/glibc*extract + -rm -rf $(STATEDIR)/glibc.prepare + -rm -rf $(STATEDIR)/glibc.compile + -rm -rf $(GLIBC_DIR) + -rm -rf $(GLIBC_BUILDDIR) + -rm -rf $(XCHAIN_GLIBC_BUILDDIR) +# vim: syntax=make
\ No newline at end of file diff --git a/rules/xchain-kaffe.make b/rules/xchain-kaffe.make new file mode 100644 index 000000000..87f441f07 --- /dev/null +++ b/rules/xchain-kaffe.make @@ -0,0 +1,108 @@ +# -*-makefile-*- +# $Id: xchain-kaffe.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> for +# GYRO net GmbH <info@gyro-net.de>, Hannover, Germany +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_KAFFE +XCHAIN += xchain-kaffe +endif + +# +# Paths and names +# +XCHAIN_KAFFE_BUILDDIR = $(BUILDDIR)/xchain-$(KAFFE)-build + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +xchain-kaffe_get: $(STATEDIR)/xchain-kaffe.get + +$(STATEDIR)/xchain-kaffe.get: $(kaffe_get_deps) + @$(call targetinfo, xchain-kaffe.get) + touch $@ + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +xchain-kaffe_extract: $(STATEDIR)/xchain-kaffe.extract + +$(STATEDIR)/xchain-kaffe.extract: $(kaffe_extract_deps) + @$(call targetinfo, xchain-kaffe.extract) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +xchain-kaffe_prepare: $(STATEDIR)/xchain-kaffe.prepare + +XCHAIN_KAFFE_ENV = $(HOSTCC_ENV) + +$(STATEDIR)/xchain-kaffe.prepare: $(STATEDIR)/xchain-kaffe.extract \ + $(STATEDIR)/xchain-kaffe.extract + @$(call targetinfo, xchain-kaffe.prepare) + @$(calll clean, $(XCHAIN_KAFFE_BUILDDIR)) + mkdir -p $(XCHAIN_KAFFE_BUILDDIR) + cd $(XCHAIN_KAFFE_BUILDDIR) && \ + $(XCHAIN_KAFFE_ENV) \ + $(KAFFE_DIR)/configure --prefix=$(PTXCONF_PREFIX) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +xchain-kaffe_compile: $(STATEDIR)/xchain-kaffe.compile + +$(STATEDIR)/xchain-kaffe.compile: $(STATEDIR)/xchain-kaffe.prepare + @$(call targetinfo, xchain-kaffe.compile) + make -C $(XCHAIN_KAFFE_BUILDDIR)/config + make -C $(XCHAIN_KAFFE_BUILDDIR)/kaffe/kaffeh + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +xchain-kaffe_install: $(STATEDIR)/xchain-kaffe.install + +$(STATEDIR)/xchain-kaffe.install: $(STATEDIR)/xchain-kaffe.compile + @$(call targetinfo, xchain-kaffe.install) + make -C $(XCHAIN_KAFFE_BUILDDIR)/kaffe/kaffeh install + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +xchain-kaffe_targetinstall: $(STATEDIR)/xchain-kaffe.targetinstall + +$(STATEDIR)/xchain-kaffe.targetinstall: + @$(call targetinfo, xchain-kaffe.targetinstall) + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +xchain-kaffe_clean: + rm -rf $(STATEDIR)/xchain-kaffe* + rm -rf $(STATEDIR)/kaffe.extract + rm -rf $(STATEDIR)/kaffe.prepare + rm -rf $(STATEDIR)/kaffe.compile + rm -rf $(XCHAIN_KAFFE_BUILDDIR) + rm -rf $(KAFFE_BUILDDIR) + rm -rf $(KAFFE_DIR) + +# vim: syntax=make
\ No newline at end of file diff --git a/rules/xchain-kernel.make b/rules/xchain-kernel.make index 6f5b41a5f..db8d34b10 100644 --- a/rules/xchain-kernel.make +++ b/rules/xchain-kernel.make @@ -1,7 +1,8 @@ -# $Id: xchain-kernel.make,v 1.7 2003/07/16 03:58:31 robert Exp $ +# -*-makefile-*- +# $Id: xchain-kernel.make,v 1.8 2003/07/16 04:23:28 mkl Exp $ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany -# See CREDITS for details about who has contributed to this project. +# See CREDITS for details about who has contributed to this project. # # For further information about the PTXDIST project and license conditions # see the README file. @@ -9,170 +10,18 @@ # # There are two "groups" of targets here: that ones starting with xchain- are -# only used for the cross chain. The "normal" targets are used for building the -# runtime kernel. +# only used for the cross chain. The "normal" targets are used for building the +# runtime kernel. # -# -# We provide this package -# -ifeq (y,$(PTXCONF_KERNEL_2_4_18)) -PACKAGES += xchain-kernel -PACKAGES += kernel -endif -ifeq (y,$(PTXCONF_KERNEL_2_4_19)) -PACKAGES += xchain-kernel -PACKAGES += kernel -endif - -# -# Paths and names -# -# FIXME: make extraversion configurable! -# -ifeq (y,$(PTXCONF_KERNEL_2_4_18)) -KERNEL = linux-2.4.18 -KERNEL_URL = ftp://ftp.kernel.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2 -KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2 -KERNEL_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_EXTRACT = bzip2 -dc - -KERNEL_RMKPATCH = patch-2.4.18-rmk7 -KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2 -KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2 -KERNEL_RMKPATCH_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_RMKPATCH_EXTRACT = bzip2 -dc - -KERNEL_PXAPATCH = diff-2.4.18-rmk7-pxa3 -KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz -KERNEL_PXAPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PXAPATCH).gz -KERNEL_PXAPATCH_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_PXAPATCH_EXTRACT = gzip -dc - -KERNEL_MTDPATCH = linux-2.4.19-rmk7-pxa2-mtd20030424.diff -KERNEL_MTDPATCH_SOURCE = $(SRCDIR)/$(KERNEL_MTDPATCH).bz2 -KERNEL_MTDPATCH_URL = http://www.pengutronix.de/software/linux-arm/$(KERNEL_MTDPATCH).bz2 -KERNEL_MTDPATCH_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_MTDPATCH_EXTRACT = bzip2 -cd - -KERNEL_PTXPATCH = patch-2.4.18-rmk7-ptx3 -KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH) -KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/dnp/patch-2.4.18-rmk7-ptx3 -KERNEL_PTXPATCH_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_PTXPATCH_EXTRACT = cat - -ifeq (y, $(PTXCONF_RTAI_ALLSOFT)) -KERNEL_RTAIPATCH = patch-2.4.18-allsoft -endif -ifeq (y, $(PTXCONF_RTAI_RTHAL)) -KERNEL_RTAIPATCH = patch-2.4.18-rthal5g -endif -KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches -endif - -ifeq (y,$(PTXCONF_KERNEL_2_4_19)) -KERNEL = linux-2.4.19 -KERNEL_URL = ftp://ftp.rfc822.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2 -KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2 -KERNEL_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_EXTRACT = bzip2 -dc - -KERNEL_RMKPATCH = patch-2.4.19-rmk7 -KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2 -KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2 -KERNEL_RMKPATCH_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_RMKPATCH_EXTRACT = bzip2 -dc - -KERNEL_PXAPATCH = diff-2.4.19-rmk7-pxa2 -KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz -KERNEL_PXAPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PXAPATCH).gz -KERNEL_PXAPATCH_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_PXAPATCH_EXTRACT = gzip -dc - -KERNEL_PTXPATCH = linux-2.4.19-rmk7-pxa2-ptx4.diff -KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH) -KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/linux-arm/$(KERNEL_PTXPATCH) -KERNEL_PTXPATCH_DIR = $(BUILDDIR)/$(KERNEL) -KERNEL_PTXPATCH_EXTRACT = cat - -ifeq (y, $(PTXCONF_RTAI_ALLSOFT)) -KERNEL_RTAIPATCH = patch-2.4.19-allsoft -endif -ifeq (y, $(PTXCONF_RTAI_RTHAL)) -KERNEL_RTAIPATCH = patch-2.4.19-rthal5g -endif -KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches -endif - -ifeq (y, $(PTXCONF_KERNEL_IMAGE_Z)) -KERNEL_TARGET = zImage -KERNEL_TARGET_PATH = $(KERNEL_DIR)/arch/$(PTXCONF_ARCH)/boot/zImage -endif -ifeq (y, $(PTXCONF_KERNEL_IMAGE_BZ)) -KERNEL_TARGET = bzImage -KERNEL_TARGET_PATH = $(KERNEL_DIR)/arch/$(PTXCONF_ARCH)/boot/bzImage -endif -ifeq (y, $(PTXCONF_KERNEL_IMAGE_U)) -KERNEL_TARGET = uImage -KERNEL_TARGET_PATH = $(KERNEL_DIR)/uImage -endif +XCHAIN_KERNEL_BUILDDIR = $(BUILDDIR)/xchain-kernel # ---------------------------------------------------------------------------- # Get # ---------------------------------------------------------------------------- -kernel_get: $(STATEDIR)/kernel.get xchain-kernel_get: $(STATEDIR)/xchain-kernel.get -kernel_get_deps = $(KERNEL_SOURCE) -ifeq (y, $(PTXCONF_ARCH_ARM)) -kernel_get_deps += $(KERNEL_RMKPATCH_SOURCE) -kernel_get_deps += $(KERNEL_PTXPATCH_SOURCE) -ifeq (y, $(PTXCONF_KERNEL_XSCALE)) -kernel_get_deps += $(KERNEL_PXAPATCH_SOURCE) -ifeq (y, $(PTXCONF_KERNEL_XSCALE_PTX)) -kernel_get_deps += $(KERNEL_MTDPATCH_SOURCE) -kernel_get_deps += $(KERNEL_PTXPATCH_SOURCE) -endif # PTXCONF_KERNEL_XSCALE_PTX -endif # PTXCONF_KERNEL_XSCALE -endif # PTXCONF_ARCH_ARM - -$(STATEDIR)/kernel.get: $(kernel_get_deps) - touch $@ - -$(STATEDIR)/xchain-kernel.get: $(kernel_get_deps) - -$(KERNEL_SOURCE): - @$(call targetinfo, kernel.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_URL) - -$(KERNEL_RMKPATCH_SOURCE): - @$(call targetinfo, kernel-armpatch.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_RMKPATCH_URL) - -$(KERNEL_MTDPATCH_SOURCE): - @$(call targetinfo, kernel-mtdpatch.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_MTDPATCH_URL) - -$(KERNEL_PXAPATCH_SOURCE): - @$(call targetinfo, kernel-pxapatch.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_PXAPATCH_URL) - -$(KERNEL_PTXPATCH_SOURCE): - @$(call targetinfo, kernel-ptxpatch.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_PTXPATCH_URL) - -# -# RTAI patches are included in the normal RTAI packet -# -rtai-patches_get: $(STATEDIR)/rtai-patches.get - -$(STATEDIR)/rtai-patches.get: $(RTAI_SOURCE) - touch $@ - -# -# xchain -# $(STATEDIR)/xchain-kernel.get: $(kernel_get_deps) @$(call targetinfo, xchain-kernel.get) touch $@ @@ -181,97 +30,17 @@ $(STATEDIR)/xchain-kernel.get: $(kernel_get_deps) # Extract # ---------------------------------------------------------------------------- -kernel_extract: $(STATEDIR)/kernel.extract +xchain-kernel_extract: $(STATEDIR)/xchain-kernel.extract -kernel_extract_deps = $(STATEDIR)/kernel.get -ifeq (y, $(PTXCONF_RTAI)) -kernel_extract_deps += $(STATEDIR)/rtai-patches.extract -endif -ifeq (y, $(PTXCONF_KERNEL_MTD)) -kernel_extract_deps += $(STATEDIR)/mtd.extract +xchain_kernel_extract_deps = $(kernel_get_deps) +ifdef PTXCONF_KERNEL_MTD +xchain_kernel_extract_deps += $(STATEDIR)/mtd.extract endif -$(STATEDIR)/kernel.extract: $(kernel_extract_deps) - @$(call targetinfo, kernel.extract) -# # remove old kernel directories before we extract - rm -fr $(KERNEL_DIR) - $(KERNEL_EXTRACT) $(KERNEL_SOURCE) | tar -C $(BUILDDIR) -xf - -# # -# # kernels before 2.4.19 extract to "linux" instead of "linux-version" -# # - ifeq (y,$(PTXCONF_KERNEL_2_4_18)) - cd $(BUILDDIR) && mv linux $(KERNEL_DIR) - endif -# # -# # ARM patch -# # - ifeq (y,$(PTXCONF_ARCH_ARM)) - cd $(KERNEL_DIR) && \ - $(KERNEL_RMKPATCH_EXTRACT) $(KERNEL_RMKPATCH_SOURCE) | \ - patch -p1 - endif -# # -# # XSCALE patch -# # - ifeq (y, $(PTXCONF_KERNEL_XSCALE)) - cd $(KERNEL_DIR) && \ - $(KERNEL_PXAPATCH_EXTRACT) $(KERNEL_PXAPATCH_SOURCE) | \ - patch -p1 - endif -# # -# # MTD patch -# # - ifeq (y, $(PTXCONF_KERNEL_MTD)) - cd $(KERNEL_DIR) && \ - $(KERNEL_MTDPATCH_EXTRACT) $(KERNEL_MTDPATCH_SOURCE) | \ - patch -p1 - endif -# # -# # XSCALE_PTX patch -# # - ifeq (y, $(PTXCONF_KERNEL_XSCALE_PTX)) - cd $(KERNEL_DIR) && \ - $(KERNEL_PTXPATCH_EXTRACT) $(KERNEL_PTXPATCH_SOURCE) | \ - patch -p1 - endif -# # -# # patches for all architectures -# # - ifeq (y, $(PTXCONF_RTAI)) - cd $(KERNEL_DIR) && \ - patch -p1 < $(KERNEL_RTAIPATCH_DIR)/$(RTAI)/patches/$(KERNEL_RTAIPATCH) - endif - touch $@ - -# -# RTAI patch -# - -rtai-patches_extract: $(STATEDIR)/rtai-patches.extract - -$(STATEDIR)/rtai-patches.extract: $(STATEDIR)/rtai-patches.get - @$(call targetinfo, rtai-patches.extract) -# # remove old rtaipatch directory - rm -fr $(KERNEL_RTAIPATCH_DIR) - install -d $(KERNEL_RTAIPATCH_DIR) -# # extract only the patches directory - cd $(KERNEL_RTAIPATCH_DIR) && \ - tar zxvf $(RTAI_SOURCE) $(RTAI)/patches - touch $@ - -# -# xchain -# - -xchain-kernel_extract: $(STATEDIR)/xchain-kernel.extract - -$(STATEDIR)/xchain-kernel.extract: $(STATEDIR)/xchain-kernel.get $(STATEDIR)/mtd.extract +$(STATEDIR)/xchain-kernel.extract: $(xchain_kernel_extract_deps) @$(call targetinfo, xchain-kernel.extract) -# # - rm -fr $(BUILDDIR)/xchain-kernel - mkdir -p $(BUILDDIR)/xchain-kernel/tmp - cd $(BUILDDIR)/xchain-kernel && \ - $(KERNEL_EXTRACT) $(KERNEL_SOURCE) | tar -C $(BUILDDIR)/xchain-kernel/tmp -xf - + @$(call clean, $(BUILDDIR)/xchain-kernel) + @$(call extract, $(KERNEL_SOURCE), $(BUILDDIR)/xchain-kernel/tmp) # # # # kernels before 2.4.19 extract to "linux" instead of "linux-version" # # @@ -282,7 +51,7 @@ $(STATEDIR)/xchain-kernel.extract: $(STATEDIR)/xchain-kernel.get $(STATEDIR)/mtd # # ARM patch # # ifeq (y,$(PTXCONF_ARCH_ARM)) - cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \ + cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \ $(KERNEL_RMKPATCH_EXTRACT) $(KERNEL_RMKPATCH_SOURCE) | \ patch -p1 endif @@ -290,7 +59,7 @@ $(STATEDIR)/xchain-kernel.extract: $(STATEDIR)/xchain-kernel.get $(STATEDIR)/mtd # # XSCALE patch # # ifeq (y, $(PTXCONF_KERNEL_XSCALE)) - cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \ + cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \ $(KERNEL_PXAPATCH_EXTRACT) $(KERNEL_PXAPATCH_SOURCE) | \ patch -p1 endif @@ -307,14 +76,22 @@ $(STATEDIR)/xchain-kernel.extract: $(STATEDIR)/xchain-kernel.get $(STATEDIR)/mtd # # XSCALE_PTX patch # # ifeq (y, $(PTXCONF_KERNEL_XSCALE_PTX)) - cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \ + cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \ $(KERNEL_PTXPATCH_EXTRACT) $(KERNEL_PTXPATCH_SOURCE) | \ patch -p1 endif - # fake headers +# # +# # patch for mmu-less architectures +# # + ifdef PTXCONF_ARCH_NOMMU + cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \ + $(KERNEL_UCLINUXPATCH_EXTRACT) $(KERNEL_UCLINUXPATCH_SOURCE) | \ + patch -p1 || true + endif +# # fake headers make -C $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) include/linux/version.h touch $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)/include/linux/autoconf.h - # we are only interested in include/ here +# # we are only interested in include/ here cp -a $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)/include $(BUILDDIR)/xchain-kernel/ rm -fr $(BUILDDIR)/xchain-kernel/tmp touch $@ @@ -323,47 +100,23 @@ $(STATEDIR)/xchain-kernel.extract: $(STATEDIR)/xchain-kernel.get $(STATEDIR)/mtd # Prepare # ---------------------------------------------------------------------------- -kernel_prepare: $(STATEDIR)/kernel.prepare - -kernel_prepare_deps = $(STATEDIR)/kernel.extract -ifeq (y,$(PTXCONF_RTAI)) -kernel_prepare_deps += $(STATEDIR)/rtai-patches.extract -endif - -KERNEL_ENVIRONMENT = PATH=$(PTXCONF_PREFIX)/bin:$$PATH -kernel_prepare_deps += $(STATEDIR)/xchain-gccstage1.install - -$(STATEDIR)/kernel.prepare: $(kernel_prepare_deps) - @$(call targetinfo, kernel.prepare) - ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN)) - echo -n 'Please supply root password for sudo: ' - # FIXME: wheel is not the correct group - [ -d $(PTXCONF_PREFIX) ] || \ - $(SUDO) install -g wheel -m 0755 -o $(PTXUSER) \ - -d $(PTXCONF_PREFIX) - endif - install .kernelconfig $(KERNEL_DIR)/.config - perl -p -i -e 's/^ARCH := .*/ARCH := $(subst ",,$(PTXCONF_ARCH))/' $(KERNEL_DIR)/Makefile - perl -p -i -e 's@^CROSS_COMPILE .*@CROSS_COMPILE = $(PTXCONF_PREFIX)/bin/$(PTXCONF_GNU_TARGET)-@' $(KERNEL_DIR)/Makefile - cd $(KERNEL_DIR) && make oldconfig - cd $(KERNEL_DIR) && PATH=$(PTXCONF_PREFIX)/bin:$$PATH make dep - touch $@ - -# -# xchain -# - xchain-kernel_prepare: $(STATEDIR)/xchain-kernel.prepare $(STATEDIR)/xchain-kernel.prepare: $(STATEDIR)/xchain-kernel.extract @$(call targetinfo, xchain-kernel.prepare) + + rm -rf `find $(XCHAIN_KERNEL_BUILDDIR)/include -name "asm*" -type d |grep -v asm-$(PTXCONF_ARCH)` cd $(BUILDDIR)/xchain-kernel/include && ln -s asm-$(PTXCONF_ARCH) asm - ifeq (y, $(PTXCONF_ARCH_ARM)) - cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s proc-armv proc - ifeq (y, $(PTXCONF_ARM_ARCH_PXA)) - cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s arch-pxa arch - endif - endif + +ifdef PTXCONF_ARCH_ARM + cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s proc-$(PTXCONF_ARM_PROC) proc + cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s arch-$(PTXCONF_ARM_ARCH) arch +endif + +ifdef PTXCONF_ARCH_ARM_NOMMU + cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s proc-$(PTXCONF_ARM_PROC) proc + cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s arch-$(PTXCONF_ARM_ARCH) arch +endif touch $@ @@ -371,21 +124,9 @@ $(STATEDIR)/xchain-kernel.prepare: $(STATEDIR)/xchain-kernel.extract # Compile # ---------------------------------------------------------------------------- -kernel_compile: $(STATEDIR)/kernel.compile - -kernel_compile_deps = $(STATEDIR)/kernel.prepare -kernel_compile_deps += $(STATEDIR)/umkimage.install - -$(STATEDIR)/kernel.compile: $(kernel_compile_deps) - @$(call targetinfo, kernel.compile) - ifneq (y, $(PTXCONF_DONT_COMPILE_KERNEL)) - $(KERNEL_ENVIRONMENT) make -C $(KERNEL_DIR) oldconfig dep clean $(KERNEL_TARGET) modules - endif - touch $@ - xchain-kernel_compile: $(STATEDIR)/xchain-kernel.compile -$(STATEDIR)/xchain-kernel.compile: $(STATEDIR)/xchain-kernel.prepare +$(STATEDIR)/xchain-kernel.compile: @$(call targetinfo, xchain-kernel.compile) touch $@ @@ -393,61 +134,28 @@ $(STATEDIR)/xchain-kernel.compile: $(STATEDIR)/xchain-kernel.prepare # Install # ---------------------------------------------------------------------------- -kernel_install: $(STATEDIR)/kernel.install - -$(STATEDIR)/kernel.install: $(STATEDIR)/kernel.compile - @$(call targetinfo, kernel.install) - ifeq (y, $(PTXCONF_KERNEL_INSTALL)) - mkdir -p $(ROOTDIR)/boot - cp $(KERNEL_TARGET_PATH) $(ROOTDIR)/boot/ - endif - touch $@ - -xchain-kernel_install: $(STATEDIR)/xchain-kernel.install - -$(STATEDIR)/xchain-kernel.install: $(STATEDIR)/xchain-kernel.compile +$(STATEDIR)/xchain-kernel.install: $(STATEDIR)/xchain-kernel.prepare @$(call targetinfo, xchain-kernel.install) install -d $(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET) cp -a $(BUILDDIR)/xchain-kernel/include $(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET)/ touch $@ - # ---------------------------------------------------------------------------- # Target-Install # ---------------------------------------------------------------------------- -kernel_targetinstall: $(STATEDIR)/kernel.targetinstall - -$(STATEDIR)/kernel.targetinstall: $(STATEDIR)/kernel.install - @$(call targetinfo, kernel.targetinstall) - ifneq (y, $(PTXCONF_DONT_COMPILE_KERNEL)) - mkdir -p $(ROOTDIR)/boot - ifeq (y,$(PTXCONF_KERNEL_INSTALL)) - mkdir -p $(ROOTDIR)/boot - install $(KERNEL_TARGET_PATH) $(ROOTDIR)/boot - $(KERNEL_ENVIRONMENT) make -C $(KERNEL_DIR) modules_install INSTALL_MOD_PATH=$(ROOTDIR) - endif # PTXCONF_KERNEL_INSTALL - endif # PTXCONF_DONT_COMPILE_KERNEL - touch $@ - xchain-kernel_targetinstall: $(STATEDIR)/xchain-kernel.targetinstall -$(STATEDIR)/xchain-kernel.targetinstall: $(STATEDIR)/xchain-kernel.compile - @$(call targetinfo,xchain-kernel.targetinstall) +$(STATEDIR)/xchain-kernel.targetinstall: + @$(call targetinfo, xchain-kernel.targetinstall) touch $@ # ---------------------------------------------------------------------------- # Clean # ---------------------------------------------------------------------------- -kernel_clean: rtai-patches_clean - rm -rf $(STATEDIR)/kernel.* $(KERNEL_DIR) - xchain-kernel_clean: - rm -fr $(BUILDDIR)/xchain-kernel rm -fr $(STATEDIR)/xchain-kernel.* + rm -fr $(XCHAIN_KERNEL_BUILDDIR) -rtai-patches_clean: - rm -rf $(STATEDIR)/rtai-patches.* $(KERNEL_RTAIPATCH_DIR) - -# vim: syntax=make +# vim: syntax=make
\ No newline at end of file diff --git a/rules/xchain-uclibc.make b/rules/xchain-uclibc.make new file mode 100644 index 000000000..59c1329ac --- /dev/null +++ b/rules/xchain-uclibc.make @@ -0,0 +1,104 @@ +# -*-makefile-*- +# $Id: xchain-uclibc.make,v 1.1 2003/07/16 04:23:28 mkl Exp $ +# +# (c) 2003 by Marc Kleine-Budde <kleine-budde@gmx.de> +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_UCLIBC +XCHAIN += xchain-uclibc +endif + +XCHAIN_UCLIBC_BUILDDIR = $(BUILDDIR)/xchain/$(UCLIBC) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +xchain-uclibc_get: $(STATEDIR)/xchain-uclibc.get + +$(STATEDIR)/xchain-uclibc.get: $(uclibc_get_deps) + @$(call targetinfo, xchain-uclibc.get) + touch $@ + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +xchain-uclibc_extract: $(STATEDIR)/xchain-uclibc.extract + +$(STATEDIR)/xchain-uclibc.extract: $(uclibc_get_deps) + @$(call targetinfo, xchain-uclibc.extract) + @$(call clean, $(XCHAIN_UCLIBC_BUILDDIR)) + @$(call extract, $(UCLIBC_SOURCE), $(XCHAIN_BUILDDIR)) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +xchain-uclibc_prepare: $(STATEDIR)/xchain-uclibc.prepare + +XCHAIN_UCLIBC_PATH = PATH=$(CROSS_PATH) +XCHAIN_UCLIBC_MAKEVARS = CROSS=$(PTXCONF_GNU_TARGET)- HOSTCC=$(HOSTCC) + +$(STATEDIR)/xchain-uclibc.prepare: \ + $(STATEDIR)/xchain-gccstage1.install \ + $(STATEDIR)/xchain-uclibc.extract + @$(call targetinfo, xchain-uclibc.prepare) + + grep -e PTXCONF_UCLIBC_ .config > $(XCHAIN_UCLIBC_BUILDDIR)/.config + perl -i -p -e 's/PTXCONF_UCLIBC_//g' $(XCHAIN_UCLIBC_BUILDDIR)/.config + @$(call xchain_uclibc_fix_config, $(XCHAIN_UCLIBC_BUILDDIR)/.config) + + $(XCHAIN_UCLIBC_PATH) make -C $(XCHAIN_UCLIBC_BUILDDIR) oldconfig $(XCHAIN_UCLIBC_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +xchain-uclibc_compile: $(STATEDIR)/xchain-uclibc.compile + +$(STATEDIR)/xchain-uclibc.compile: $(STATEDIR)/xchain-uclibc.prepare + @$(call targetinfo, xchain-uclibc.compile) + $(XCHAIN_UCLIBC_PATH) make -C $(XCHAIN_UCLIBC_BUILDDIR) $(XCHAIN_UCLIBC_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +xchain-uclibc_install: $(STATEDIR)/xchain-uclibc.install + +$(STATEDIR)/xchain-uclibc.install: $(STATEDIR)/xchain-uclibc.compile + @$(call targetinfo, xchain-uclibc.install) + $(XCHAIN_UCLIBC_PATH) make -C $(XCHAIN_UCLIBC_BUILDDIR) \ + install_dev install_runtime install_utils \ + $(XCHAIN_UCLIBC_MAKEVARS) TARGET_ARCH=$(SHORT_TARGET) + touch $@ + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +xchain-uclibc_targetinstall: $(STATEDIR)/xchain-uclibc.targetinstall + +$(STATEDIR)/xchain-uclibc.targetinstall: + @$(call targetinfo, xchain-uclibc.targetinstall) + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +xchain-uclibc_clean: + -rm -rf $(STATEDIR)/xchain-uclibc* + -rm -rf $(XCHAIN_UCLIBC_BUILDDIR) +# vim: syntax=make
\ No newline at end of file diff --git a/rules/xchain-zlib.make b/rules/xchain-zlib.make new file mode 100644 index 000000000..b49d7f262 --- /dev/null +++ b/rules/xchain-zlib.make @@ -0,0 +1,97 @@ +# -*-makefile-*- +# $id$ +# +# (c) 2002 by Pengutronix e.K., Hildesheim, Germany +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXDIST project and license conditions +# see the README file. +# + +# +# We provide this package +# + +# +# Paths and names +# +XCHAIN_ZLIB_BUILDDIR = $(BUILDDIR)/xchain/$(ZLIB) + + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +xchain-zlib_get: $(STATEDIR)/xchain-zlib.get + +$(STATEDIR)/xchain-zlib.get: $(ZLIB_SOURCE) + @$(call targetinfo, xchain-zlib.get) + touch $@ + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +xchain-zlib_extract: $(STATEDIR)/xchain-zlib.extract + +$(STATEDIR)/xchain-zlib.extract: $(STATEDIR)/xchain-zlib.get + @$(call targetinfo, xchain-zlib.extract) + @$(call clean, $(XCHAIN_ZLIB_BUILDDIR)) + @$(call extract, $(ZLIB_SOURCE), $(XCHAIN_BUILDDIR)) + touch $@ + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +xchain-zlib_prepare: $(STATEDIR)/xchain-zlib.prepare + +XCHAIN_ZLIB_AUTOCONF = --shared +XCHAIN_ZLIB_AUTOCONF += --prefix=$(PTXCONF_PREFIX) +XCHAIN_ZLIB_MAKEVARS = $(HOSTCC_ENV) + +$(STATEDIR)/xchain-zlib.prepare: $(STATEDIR)/xchain-zlib.extract + @$(call targetinfo, xchain-zlib.prepare) + cd $(XCHAIN_ZLIB_BUILDDIR) && \ + ./configure $(XCHAIN_ZLIB_AUTOCONF) + touch $@ + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +$(STATEDIR)/xchain-zlib.compile: $(STATEDIR)/xchain-zlib.prepare + @$(call targetinfo, xchain-zlib.compile) + make -C $(XCHAIN_ZLIB_BUILDDIR) $(XCHAIN_ZLIB_MAKEVARS) + touch $@ + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +xchain-zlib_install: $(STATEDIR)/xchain-zlib.install + +$(STATEDIR)/xchain-zlib.install: $(STATEDIR)/xchain-zlib.compile + @$(call targetinfo, xchain-zlib.install) + make -C $(XCHAIN_ZLIB_BUILDDIR) $(XCHAIN_ZLIB_MAKEVARS) \ + install + touch $@ +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +xchain-zlib_targetinstall: $(STATEDIR)/xchain-zlib.targetinstall + +$(STATEDIR)/xchain-zlib.targetinstall: $(STATEDIR)/xchain-zlib.install + @$(call targetinfo, xchain-zlib.targetinstall) + touch $@ + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +xchain-zlib_clean: + rm -rf $(STATEDIR)/xchain-zlib.* + rm -rf $(XCHAIN_ZLIB_BUILDDIR) + +# vim: syntax=make diff --git a/rules/zlib.make b/rules/zlib.make index d5d776c2d..149189bc0 100644 --- a/rules/zlib.make +++ b/rules/zlib.make @@ -1,4 +1,5 @@ -# $Id: zlib.make,v 1.3 2003/06/16 12:05:16 bsp Exp $ +# -*-makefile-*- +# $id$ # # (c) 2002 by Pengutronix e.K., Hildesheim, Germany # See CREDITS for details about who has contributed to this project. @@ -10,10 +11,6 @@ # # We provide this package # -ifeq (y,$(PTXCONF_ZLIB)) -PACKAGES += zlib -PACKAGES += xchain-zlib -endif # # Paths and names @@ -21,8 +18,7 @@ endif ZLIB = zlib-1.1.4 ZLIB_URL = ftp://ftp.info-zip.org/pub/infozip/zlib/$(ZLIB).tar.gz ZLIB_SOURCE = $(SRCDIR)/$(ZLIB).tar.gz -ZLIB_DIR = $(BUILDDIR)/$(ZLIB) -ZLIB_EXTRACT = gzip -dc +ZLIB_DIR = $(BUILDDIR)/$(ZLIB) # ---------------------------------------------------------------------------- # Get @@ -31,16 +27,12 @@ ZLIB_EXTRACT = gzip -dc zlib_get: $(STATEDIR)/zlib.get $(STATEDIR)/zlib.get: $(ZLIB_SOURCE) - touch $@ - -xchain-zlib_get: $(STATEDIR)/xchain-zlib.get - -$(STATEDIR)/xchain-zlib.get: $(ZLIB_SOURCE) + @$(call targetinfo, zlib.get) touch $@ $(ZLIB_SOURCE): - @$(call targetinfo, zlib.get) - wget -P $(SRCDIR) $(PASSIVEFTP) $(ZLIB_URL) + @$(call targetinfo, $(ZLIB_SOURCE)) + @$(call get, $(ZLIB_URL)) # ---------------------------------------------------------------------------- # Extract @@ -50,16 +42,8 @@ zlib_extract: $(STATEDIR)/zlib.extract $(STATEDIR)/zlib.extract: $(STATEDIR)/zlib.get @$(call targetinfo, zlib.extract) - $(ZLIB_EXTRACT) $(ZLIB_SOURCE) | $(TAR) -C $(BUILDDIR) -xf - - touch $@ - -xchain-zlib_extract: $(STATEDIR)/xchain-zlib.extract - -$(STATEDIR)/xchain-zlib.extract: $(STATEDIR)/xchain-zlib.get - @$(call targetinfo, xchain-zlib.extract) - rm -fr $(BUILDDIR)/xchain-zlib - mkdir -p $(BUILDDIR)/xchain-zlib - $(ZLIB_EXTRACT) $(ZLIB_SOURCE) | $(TAR) -C $(BUILDDIR)/xchain-zlib -xf - + @$(call clean, $(ZLIB_DIR)) + @$(call extract, $(ZLIB_SOURCE)) touch $@ # ---------------------------------------------------------------------------- @@ -68,28 +52,21 @@ $(STATEDIR)/xchain-zlib.extract: $(STATEDIR)/xchain-zlib.get zlib_prepare: $(STATEDIR)/zlib.prepare -ZLIB_AUTOCONF = -ZLIB_AUTOCONF += --shared -ZLIB_AUTOCONF += --prefix=$(PTXCONF_PREFIX) - -$(STATEDIR)/zlib.prepare: $(STATEDIR)/zlib.extract - @$(call targetinfo, zlib.prepare) - # FIXME: this does currently not work with the local toolchain - cd $(ZLIB_DIR) && \ - ./configure $(ZLIB_AUTOCONF) - perl -i -p -e 's/gcc/$(PTXCONF_GNU_TARGET)-gcc/g' $(ZLIB_DIR)/Makefile - touch $@ +zlib_prepare_deps = \ + $(STATEDIR)/virtual-xchain.install \ + $(STATEDIR)/zlib.extract -xchain-zlib_prepare: $(STATEDIR)/xchain-zlib.prepare +ZLIB_PATH = PATH=$(CROSS_PATH) +ZLIB_AUTOCONF = --shared +ZLIB_AUTOCONF += --prefix=$(CROSS_LIB_DIR) -XCHAIN_ZLIB_AUTOCONF = -XCHAIN_ZLIB_AUTOCONF += --shared -XCHAIN_ZLIB_AUTOCONF += --prefix=$(PTXCONF_PREFIX) - -$(STATEDIR)/xchain-zlib.prepare: $(STATEDIR)/xchain-zlib.extract - @$(call targetinfo, xchain-zlib.prepare) - cd $(BUILDDIR)/xchain-zlib/$(ZLIB) && \ - ./configure $(XCHAIN_ZLIB_AUTOCONF) +$(STATEDIR)/zlib.prepare: $(zlib_prepare_deps) + @$(call targetinfo, zlib.prepare) + cd $(ZLIB_DIR) && \ + $(ZLIB_PATH) \ + ./configure $(ZLIB_AUTOCONF) + perl -i -p -e 's/=gcc/=$(PTXCONF_GNU_TARGET)-gcc/g' $(ZLIB_DIR)/Makefile + perl -i -p -e 's/=ar/=$(PTXCONF_GNU_TARGET)-ar/g' $(ZLIB_DIR)/Makefile touch $@ # ---------------------------------------------------------------------------- @@ -100,16 +77,9 @@ zlib_compile: $(STATEDIR)/zlib.compile $(STATEDIR)/zlib.compile: $(STATEDIR)/zlib.prepare @$(call targetinfo, zlib.compile) - cd $(ZLIB_DIR) && PATH=$(PTXCONF_PREFIX)/bin:$$PATH make CC=$(PTXCONF_GNU_TARGET)-gcc + $(ZLIB_PATH) make -C $(ZLIB_DIR) touch $@ -xchain-zlib_compile: $(STATEDIR)/xchain-zlib.compile - -$(STATEDIR)/xchain-zlib.compile: $(STATEDIR)/xchain-zlib.prepare - @$(call targetinfo, xchain-zlib.compile) - cd $(BUILDDIR)/xchain-zlib/$(ZLIB) && make CC=$(HOSTCC) - touch $@ - # ---------------------------------------------------------------------------- # Install # ---------------------------------------------------------------------------- @@ -118,15 +88,9 @@ zlib_install: $(STATEDIR)/zlib.install $(STATEDIR)/zlib.install: $(STATEDIR)/zlib.compile @$(call targetinfo, zlib.install) - PATH=$(PTXCONF_PREFIX)/bin:$$PATH make -C $(BUILDDIR)/$(ZLIB) install PREFIX=$(PTXCONF_PREFIX) + $(ZLIB_PATH) make -C $(ZLIB_DIR) install touch $@ -xchain-zlib_install: $(STATEDIR)/xchain-zlib.install - -$(STATEDIR)/xchain-zlib.install: $(STATEDIR)/xchain-zlib.compile - @$(call targetinfo, xchain-zlib.install) - PATH=$(PTXCONF_PREFIX)/bin:$$PATH make -C $(BUILDDIR)/xchain-zlib/$(ZLIB) install PREFIX=$(PTXCONF_PREFIX) - touch $@ # ---------------------------------------------------------------------------- # Target-Install # ---------------------------------------------------------------------------- @@ -137,13 +101,7 @@ $(STATEDIR)/zlib.targetinstall: $(STATEDIR)/zlib.install @$(call targetinfo, zlib.targetinstall) mkdir -p $(ROOTDIR)/lib cp -d $(ZLIB_DIR)/libz.so* $(ROOTDIR)/lib - $(CROSSSTRIP) -S $(ROOTDIR)/lib/libz.so* - touch $@ - -xchain-zlib_targetinstall: $(STATEDIR)/xchain-zlib.targetinstall - -$(STATEDIR)/xchain-zlib.targetinstall: $(STATEDIR)/xchain-zlib.install - @$(call targetinfo, xchain-zlib.targetinstall) + $(CROSSSTRIP) -S -R .note -R .comment $(ROOTDIR)/lib/libz.so* touch $@ # ---------------------------------------------------------------------------- @@ -153,7 +111,4 @@ $(STATEDIR)/xchain-zlib.targetinstall: $(STATEDIR)/xchain-zlib.install zlib_clean: rm -rf $(STATEDIR)/zlib.* $(ZLIB_DIR) -xchain-zlib_clean: - rm -rf $(STATEDIR)/xchain-zlib.* $(BUILDDIR)/xchain-zlib - # vim: syntax=make diff --git a/scripts/config.guess b/scripts/config.guess new file mode 100755 index 000000000..cc726cd15 --- /dev/null +++ b/scripts/config.guess @@ -0,0 +1,1388 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-02-22' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner <per@bothner.com>. +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i586-pc-interix3 + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + ftp://ftp.gnu.org/pub/gnu/config/ + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/scripts/mkprefix b/scripts/mkprefix index b6602d17b..b3e1b8e10 100755 --- a/scripts/mkprefix +++ b/scripts/mkprefix @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# $Id: mkprefix,v 1.1 2003/04/24 08:06:32 jst Exp $ +# $Id: mkprefix,v 1.2 2003/07/16 04:23:28 mkl Exp $ require 5.008; @@ -8,7 +8,7 @@ use Getopt::Mixed qw(nextOption); my @lines = (); -my ($REL) = q$Revision: 1.1 $=~m/(\d+(?:\.\d+)+)/; +my ($REL) = q$Revision: 1.2 $=~m/(\d+(?:\.\d+)+)/; my $prefix = undef; my $verbose = undef; my $reverse = undef; @@ -50,7 +50,7 @@ while (my ($opt, $val, $pretty) = nextOption()) { Getopt::Mixed::cleanup(); if (!defined $prefix) { - print STDERR "Fatal: prefix not specified\n"; die; + print STDERR "Fatal: prefix not specified\n\n"; help; die; } if (defined $reverse) { esc(\$prefix); } |