summaryrefslogtreecommitdiffstats
path: root/EXTERNAL
diff options
context:
space:
mode:
authorRobert Schwebel <r.schwebel@pengutronix.de>2006-08-29 11:37:11 +0000
committerRobert Schwebel <r.schwebel@pengutronix.de>2006-08-29 11:37:11 +0000
commitb4530153ff35ce82fdf10d0d7fbae7700047c2fe (patch)
treed0f084f8c062311eb242f6a22a26de1f415ab913 /EXTERNAL
parenta09127b31e4a718afef553b7aff77ab6a20cdfe2 (diff)
downloadOSELAS.Toolchain-b4530153ff35ce82fdf10d0d7fbae7700047c2fe.tar.gz
OSELAS.Toolchain-b4530153ff35ce82fdf10d0d7fbae7700047c2fe.tar.xz
git-svn-id: https://svn.pengutronix.de/svn/oselas/toolchain/trunks/OSELAS.Toolchain-trunk@769 f8d472c7-5700-0410-ac5a-87979cec3adf
Diffstat (limited to 'EXTERNAL')
-rw-r--r--EXTERNAL/build-arm-linux-3.4.4214
-rw-r--r--EXTERNAL/build.sh231
-rw-r--r--EXTERNAL/mk-arm-hard276
-rw-r--r--EXTERNAL/mk-arm-soft277
4 files changed, 998 insertions, 0 deletions
diff --git a/EXTERNAL/build-arm-linux-3.4.4 b/EXTERNAL/build-arm-linux-3.4.4
new file mode 100644
index 0000000..655c0d9
--- /dev/null
+++ b/EXTERNAL/build-arm-linux-3.4.4
@@ -0,0 +1,214 @@
+
+HOWTO build arm-linux toolchain for ARM/XSCALE
+----------------------------------------------
+
+These instructions document how to build an arm-linux tool chain
+that contains both little-endian and big-endian target libraries.
+
+
+1. Packages used:
+
+ binutils-2.16.tar.gz
+ gcc-3.4.4.tar.gz
+ glibc-2.3.3.tar.gz
+ glibc-linuxthreads-2.3.3.tar.gz
+
+
+2. binutils-2.16
+
+ tar xvzf binutils-2.16.tar.gz
+ cd binutils-2.16
+ mkdir arm-linux
+ cd arm-linux
+ ../configure --target=arm-linux --with-lib-path=/usr/local/arm-linux/lib:/usr/local/arm-linux/lib/be:/usr/local/arm-linux/lib/soft-float:/usr/local/arm-linux/lib/be/soft-float
+ make
+ make install
+ chmod 777 /usr/local/arm-linux
+
+
+3. gcc-3.4.4
+
+ tar xvzf gcc-3.4.4.tar.gz
+ cd gcc-3.4.4
+
+ cp $(ATTACHED t-linux file) gcc/config/arm/
+ vi gcc/config/arm/linux-elf.h
+ -- remove line that defines LIBGCC_SPEC
+
+ mkdir arm-linux
+ cd arm-linux
+ ../configure --target=arm-linux --disable-shared --disable-threads \
+ --prefix=/usr/local --with-headers=linux-2.4.x/include \
+ --with-gnu-as --with-gnu-ld --enable-multilib --enable-languages=c
+ make
+ make install
+
+
+4. glibc-2.3.3 (big-endian)
+
+ tar xvzf glibc-2.3.3.tar.gz
+ cd glibc-2.3.3
+ tar xvzf glibc-linuxthreads-2.3.3.tar.gz
+
+ rm -rf nptl
+ vi sysdeps/unix/sysv/linux/arm/ioperm.c
+ - change "BUS_ISA" to be "CTL_BUS_ISA" lines 103 and 104
+ vi config.make.in
+ - change "slibdir = @...@" to "slibdir = @libdir@"
+ vi Makeconfig
+ - change all occurrances of "O2" to "O"
+ - remove any occurrances of -lgcc_eh
+ vi configure
+ - change all occurrances of "O2" to "O"
+ touch sysdeps/arm/framestate.c
+
+ mkdir arm-linux
+ cd arm-linux
+ CC="arm-linux-gcc -mbig-endian -finline-limit=10000" \
+ AS="arm-linux-as -mbig-endian" \
+ LD="arm-linux-ld -EB" \
+ ../configure --host=arm-linux --build=i686-pc-linux-gnu \
+ --with-headers=linux-2.4.x/include \
+ --enable-add-ons --enable-shared --prefix=/usr/local/arm-linux \
+ --libdir=/usr/local/arm-linux/lib/be
+ make
+ make install
+
+
+5. glibc-2.3.3 (little-endian)
+
+ tar xvzf glibc-2.3.3.tar.gz
+ cd glibc-2.3.3
+ tar xvzf glibc-linuxthreads-2.3.3.tar.gz
+
+ [ Apply same fixes as above ]
+
+ mkdir arm-linux
+ cd arm-linux
+ CC="arm-linux-gcc -finline-limit=10000" \
+ AS="arm-linux-as" \
+ LD="arm-linux-ld" \
+ ../configure --host=arm-linux --build=i686-pc-linux-gnu \
+ --with-headers=linux-2.4.x/include \
+ --enable-add-ons --enable-shared --prefix=/usr/local/arm-linux
+ make
+ make install
+
+
+
+6. glibc-2.3.3 (big-endian/soft-float)
+
+ tar xvzf glibc-2.3.3.tar.gz
+ cd glibc-2.3.3
+ tar xvzf glibc-linuxthreads-2.3.3.tar.gz
+
+ [ Apply same fixes as above ]
+
+ mkdir arm-linux
+ cd arm-linux
+ CC="arm-linux-gcc -mbig-endian -msoft-float -finline-limit=10000" \
+ AS="arm-linux-as -mbig-endian" \
+ LD="arm-linux-ld -EB" \
+ ../configure --host=arm-linux --build=i686-pc-linux-gnu \
+ --with-headers=linux-2.4.x/include \
+ --enable-add-ons --enable-shared --prefix=/usr/local/arm-linux \
+ --without-fp --libdir=/usr/local/arm-linux/lib/be/soft-float
+ make
+ make install
+
+
+
+7. glibc-2.3.3 (little-endian/soft-float)
+
+ tar xvzf glibc-2.3.3.tar.gz
+ cd glibc-2.3.3
+ tar xvzf glibc-linuxthreads-2.3.3.tar.gz
+
+ [ Apply same fixes as above ]
+
+ mkdir arm-linux
+ cd arm-linux
+
+ CC="arm-linux-gcc -msoft-float -finline-limit=10000" \
+ AS="arm-linux-as" \
+ LD="arm-linux-ld" \
+ ../configure --host=arm-linux --build=i686-pc-linux-gnu \
+ --with-headers=linux-2.4.x/include \
+ --enable-add-ons --enable-shared --prefix=/usr/local/arm-linux \
+ --without-fp --libdir=/usr/local/arm-linux/lib/soft-float
+ make
+ make install
+
+
+8. gcc-3.4.4 (c++, etc)
+
+ tar xvzf gcc-3.4.4.tar.gz
+ cd gcc-3.4.4
+
+ cp $(ATTACHED t-linux file) gcc/config/arm/
+ vi gcc/config/arm/t-linux
+ - remove all "-Dinhibit_libc" occruances
+ vi gcc/config/arm/linux-elf.h
+ -- remove line that defines LIBGCC_SPEC
+ perl -pi -e 's/int namelen/unsigned int namelen/' libjava/java/net/natInetAddressPosix.cc
+
+ mkdir arm-linux
+ cd arm-linux
+ ../configure --target=arm-linux --disable-shared \
+ --prefix=/usr/local --with-headers=linux-2.4.x/include \
+ --with-gnu-as --with-gnu-ld --enable-multilib
+ make
+ make install
+
+
+9. cd /
+ find /usr/local/arm-linux -name CVS -type d | xargs rm -rf
+ strip /usr/local/arm-linux/bin/*
+ strip /usr/local/bin/arm-linux-*
+ tar cvzf /tmp/arm-linux-tools-xxxxxxxx.tar.gz \
+ /usr/local/arm-linux \
+ /usr/local/lib/gcc/arm-linux \
+ /usr/local/include/c++/3.4.4 \
+ /usr/local/bin/arm-linux-* \
+ /usr/local/libexec/gcc/arm-linux/3.4.4 \
+ /usr/local/bin/genext2fs
+
+
+------------------------------------------------------------------------------
+
+APPENDIX A -- modified t-linux for gcc-3.4.4
+
+------------------------------------------------------------------------------
+# Just for these, we omit the frame pointer since it makes such a big
+# difference. It is then pointless adding debugging.
+TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix
+LIBGCC2_DEBUG_CFLAGS = -g0
+
+# Don't build enquire
+ENQUIRE=
+
+LIB1ASMSRC = arm/lib1funcs.asm
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+ _bb_init_func _call_via_rX _interwork_call_via_rX \
+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+ _fixsfsi _fixunssfsi
+
+MULTILIB_OPTIONS = mlittle-endian/mbig-endian mhard-float/msoft-float
+MULTILIB_DIRNAMES = le be hard-float soft-float
+
+EXTRA_MULTILIB_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crti.o crtn.o
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h
+
+# Assemble startup files.
+$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
+
+$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm
+------------------------------------------------------------------------------
diff --git a/EXTERNAL/build.sh b/EXTERNAL/build.sh
new file mode 100644
index 0000000..ae44209
--- /dev/null
+++ b/EXTERNAL/build.sh
@@ -0,0 +1,231 @@
+#!/bin/sh
+# http://yann.poupet.free.fr/ep93xx/
+
+TCDIR='ep93xx'
+WHEREAMI=`pwd`
+TOOLCHAINDIR='/home/yannouch/KURZFMB/ToolChains'
+SRCDIR="SOMEWHERE"
+GCCVERS='3.4.4'
+BINUTILVERS='2.16'
+GLIBCVERS='2.3.5'
+GLIBCKHVERS='2.3.5'
+SRCEXT='tar.bz2'
+KERNHEADVERS='2.6.11.7-eb'
+
+unset LD_LIBRARY_PATH
+export CPPFLAGS="-D__MAVERICK__"
+
+while [ "x$ANS" == "x" ];
+do
+ clear
+ echo -n "Destination directory ? "
+ read ANS
+done
+
+if [ -d $ANS ]; then
+ while [ "x$DEL" == "x" ];
+ do
+ clear
+ echo Directory $ANS allready exists
+ echo -n "Delete it [y/n] ? "
+ read DEL
+ DEL=`echo $DEL | sed -e 's|[^yYnN]||'`
+ if [ "x$DEL" == "xn" -o "x$DEL" == "xN" ]; then
+ echo "Okay, abort ..."
+ exit 0
+ elif [ "x$DEL" == "xy" -o "x$DEL" == "xY" ]; then
+ echo "Deleting $ANS ..."
+ rm -fr $ANS
+ echo "Done"
+ else
+ DEL=""
+ fi
+ done
+fi
+
+if [ -e $ANS ]; then
+ echo "$ANS is an existing file. Abort."
+ exit 0
+fi
+
+DESTDIR=$ANS
+mkdir -p "$DESTDIR/$TCDIR"
+cd "$DESTDIR/$TCDIR"
+mkdir arm-linux
+mkdir lib
+cd arm-linux
+ln -s ../lib .
+
+cd $DESTDIR
+# BINUTILS
+if [ ! -e "$SRCDIR/binutils-$BINUTILVERS.$SRCEXT" ]; then
+ echo "ERROR : missing $SRCDIR/binutils-$BINUTILVERS.$SRCEXT file"
+ echo Abort.
+ exit 0
+fi
+
+mkdir "binutils-${BINUTILVERS}.build"
+echo "Unpacking $SRCDIR/binutils-$BINUTILVERS.$SRCEXT ..."
+tar -jxf "$SRCDIR/binutils-$BINUTILVERS.$SRCEXT"
+echo "Done."
+
+if [ -e "$SRCDIR/binutils-$BINUTILVERS.patch" ]; then
+ echo "Applying $SRCDIR/binutils-$BINUTILVERS.patch"
+ cd "$DESTDIR/binutils-$BINUTILVERS"
+ cat "$SRCDIR/binutils-$BINUTILVERS.patch" | patch -p1
+ echo "Done."
+fi
+
+cd "$DESTDIR/binutils-$BINUTILVERS.build"
+$DESTDIR/binutils-$BINUTILVERS/configure --target=arm-linux --build=arm-linux --prefix=$DESTDIR/$TCDIR
+make -j4
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Build binutils-$BINUTILVERS failed"
+ exit 1
+fi
+make install
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Install binutils-$BINUTILVERS failed"
+ exit 1
+fi
+#KERNEL HEADERS
+cd "$DESTDIR/$TCDIR"
+if [ ! -e "$SRCDIR/linux-kernel-headers-$KERNHEADVERS.$SRCEXT" ]; then
+ echo "ERROR : missing $SRCDIR/linux-kernel-headers-$KERNHEADVERS.$SRCEXT file"
+ echo Abort.
+ exit 0
+fi
+
+echo "Unpacking linux-kernel-headers-$KERNHEADVERS"
+tar -jxf "$SRCDIR/linux-kernel-headers-$KERNHEADVERS.$SRCEXT"
+echo "Done."
+
+cd arm-linux
+ln -s ../include/ .
+ln -s ../include/ ./sys-include
+cd ../include
+ln -s ../include/ include
+
+export PATH=$DESTDIR/$TCDIR/bin:$PATH
+
+cd $DESTDIR
+#GCC 1ST PASS
+if [ ! -e "$SRCDIR/gcc-$GCCVERS.$SRCEXT" ]; then
+ echo "ERROR : missing $SRCDIR/gcc-$GCCVERS.$SRCEXT file"
+ echo Abort.
+ exit 0
+fi
+
+mkdir "gcc-${GCCVERS}.build-1"
+echo "Unpacking $SRCDIR/gcc-$GCCVERS.$SRCEXT ..."
+tar -jxf "$SRCDIR/gcc-$GCCVERS.$SRCEXT"
+echo "Done."
+
+if [ -e "$SRCDIR/gcc-$GCCVERS.patch" ]; then
+ echo "Applying $SRCDIR/gcc-$GCCVERS.patch"
+ cd "$DESTDIR/gcc-$GCCVERS"
+ cat "$SRCDIR/gcc-$GCCVERS.patch" | patch -p1
+ echo "Done."
+fi
+
+cd "$DESTDIR/gcc-$GCCVERS.build-1"
+$DESTDIR/gcc-$GCCVERS/configure --target=arm-linux --prefix=$DESTDIR/$TCDIR --disable-shared --disable-threads --enable-languages=c --disable-multilib
+
+make -j4
+
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Build gcc-${GCCVERS} failed"
+ exit 1
+fi
+
+make install
+
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Install gcc-${GCCVERS} failed"
+ exit 1
+fi
+
+cd $DESTDIR
+#GLIBC
+if [ ! -e "$SRCDIR/glibc-$GLIBCVERS.$SRCEXT" ]; then
+ echo "ERROR : missing $SRCDIR/glibc-$GLIBCVERS.$SRCEXT file"
+ echo Abort.
+ exit 0
+fi
+
+mkdir "glibc-${GLIBCVERS}.build"
+echo "Unpacking $SRCDIR/glibc-$GLIBCVERS.$SRCEXT ..."
+tar -jxf "$SRCDIR/glibc-$GLIBCVERS.$SRCEXT"
+echo "Done."
+
+if [ -e "$SRCDIR/glibc-$GLIBCVERS.patch" ]; then
+ echo "Applying $SRCDIR/glibc-$GLIBCVERS.patch"
+ cd "$DESTDIR/glibc-$GLIBCVERS"
+ cat "$SRCDIR/glibc-$GLIBCVERS.patch" | patch -p1
+ echo "Done."
+fi
+# GLIBC LINUXTHREADS
+cd "$DESTDIR/glibc-$GLIBCVERS"
+if [ ! -e "$SRCDIR/glibc-linuxthreads-$GLIBCKHVERS.$SRCEXT" ]; then
+ echo "ERROR : missing $SRCDIR/glibc-linuxthreads-$GLIBCKHVERS.$SRCEXT file"
+ echo Abort.
+ exit 0
+fi
+tar -jxf $SRCDIR/glibc-linuxthreads-$GLIBCKHVERS.$SRCEXT
+# BUILD
+cd "$DESTDIR/glibc-$GLIBCVERS.build"
+$DESTDIR/glibc-$GLIBCVERS/configure --host=arm-linux --prefix=$DESTDIR/$TCDIR --enable-add-ons=linuxthreads --disable-profile --enable-kernel=2.6.0 --without-cvs --with-headers=$DESTDIR/$TCDIR/include --with-__thread
+perl -pi -e 's/^CC = .*/CC = arm-linux-gcc -mcpu=ep9312/' config.make
+perl -pi -e 's/CFLAGS = -g -O2/CFLAGS = -g -O1 -mfix-crunch-d1/' config.make
+
+make -j4
+
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Build glibc-$GLIBCVERS failed"
+ exit 1
+fi
+
+make install
+
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Install glibc-$GLIBCVERS failed"
+ exit 1
+fi
+
+perl -pi -e 's/.*BUG in libc.*$//' $DESTDIR/$TCDIR/lib/libc.so
+perl -pi -e 's/.*BUG in libc.*$//' $DESTDIR/$TCDIR/lib/libpthread.so
+
+# GCC 2ND PASS
+cd $DESTDIR
+mkdir "gcc-${GCCVERS}.build-2"
+cd "gcc-${GCCVERS}.build-2"
+$DESTDIR/gcc-$GCCVERS/configure --target=arm-linux --prefix=$DESTDIR/$TCDIR --disable-multilib --disable-nls --enable-languages=c,c++
+perl -pi -e 's/CFLAGS_FOR_BUILD =/CFLAGS_FOR_BUILD = -g -O1 /' Makefile
+perl -pi -e 's/CFLAGS =/CFLAGS = -g -O1 /' Makefile
+perl -pi -e 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O1/' Makefile
+perl -pi -e 's/CFLAGS_FOR_TARGET = -O2/CFLAGS_FOR_TARGET = -O2 -mcpu=ep9312 -mfix-crunch-d1/' Makefile
+perl -pi -e "s/CXXFLAGS_FOR_TARGET = \$(CXXFLAGS)/CXXFLAGS_FOR_TARGET = -mcpu=ep9312 -mfix-crunch-d1 \$(CXXFLAGS)/" Makefile
+
+make -j4
+
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Build gcc-${GCCVERS} failed"
+ exit 1
+fi
+
+make install
+
+RETCODE=$?
+if [ "x$RETCODE" != "x0" ]; then
+ echo "Install gcc-${GCCVERS} failed"
+ exit 1
+fi
+
+echo "Installation successfully finished."
diff --git a/EXTERNAL/mk-arm-hard b/EXTERNAL/mk-arm-hard
new file mode 100644
index 0000000..14cb6bf
--- /dev/null
+++ b/EXTERNAL/mk-arm-hard
@@ -0,0 +1,276 @@
+#! /bin/sh
+
+INSTDIR=/opt/cross/arm-unknown
+ARCH=arm
+TARGET=arm-unknown-linux-gnu
+HOST=i686-pc-linux-gnu
+
+SYSROOT=$INSTDIR/sys-root-hard
+HEADERDIR=$SYSROOT/usr/include
+BINDIR=linuxthreads-hard
+
+SYSROOTNPTL=$INSTDIR/sys-root-nptl-hard
+HEADERDIRNPTL=$SYSROOTNPTL/usr/include
+BINDIRNPTL=nptl-hard
+
+ORIGPATH=$PATH
+
+cleanup() {
+ # cleanup
+ sudo rm -rf ep-hard-*
+ sudo rm -rf $SYSROOT
+ sudo rm -rf $SYSROOTNPTL
+ sudo rm -rf $BINDIR
+ sudo rm -rf $BINDIRNPTL
+}
+
+create_sys_root() {
+ # create sys-root
+ mkdir -p $SYSROOT/lib
+ mkdir -p $SYSROOT/usr/lib
+ mkdir -p $HEADERDIR
+}
+
+create_sys_root_nptl() {
+ # create sys-root-nptl
+ mkdir -p $SYSROOTNPTL/lib
+ mkdir -p $SYSROOTNPTL/usr/lib
+ mkdir -p $HEADERDIRNPTL
+}
+
+prepare_kernel() {
+ # prepare kernel
+ pushd linux
+ make distclean
+ make ARCH=$ARCH edb7211_defconfig
+ make ARCH=$ARCH include/asm include/linux/version.h include/asm-$ARCH/.arch
+
+ cp -r include/linux $HEADERDIR
+ cp -r include/asm-${ARCH} $HEADERDIR/asm
+ cp -r include/asm-generic $HEADERDIR/asm-generic
+
+ cp -r include/linux $HEADERDIRNPTL
+ cp -r include/asm-${ARCH} $HEADERDIRNPTL/asm
+ cp -r include/asm-generic $HEADERDIRNPTL/asm-generic
+
+ popd
+}
+
+build_binutils() {
+ # build binutils
+ mkdir -p ep-hard-binutils
+
+ pushd ep-hard-binutils
+ ../binutils/configure --target=$TARGET --host=$HOST --with-sysroot=$SYSROOT \
+ --prefix=$INSTDIR/$BINDIR
+ make
+ sudo make install
+
+ ../binutils/configure --target=$TARGET --host=$HOST \
+ --with-sysroot=$SYSROOTNPTL --prefix=$INSTDIR/$BINDIRNPTL
+ make
+ sudo make install
+
+ popd
+}
+
+glibc_header() {
+ # glibc-header
+ mkdir -p ep-hard-glibc-header
+
+ pushd ep-hard-glibc-header
+ libc_cv_ppc_machine=yes ../libc/configure --prefix=/usr \
+ --build=$HOST --host=$TARGET --without-cvs \
+ --disable-sanity-checks --with-headers=$HEADERDIR \
+ --enable-hacker-mode
+
+ libc_cv_ppc_machine=yes make sysdeps/gnu/errlist.c
+ mkdir -p stdio-common
+ touch stdio-common/errlist-compat.c
+
+ libc_cv_ppc_machine=yes make cross-compiling=yes install_root=$SYSROOT \
+ install-headers
+ mkdir -p $HEADERDIR/gnu
+ touch $HEADERDIR/gnu/stubs.h
+ cp ../libc/include/features.h $HEADERDIR/features.h
+ cp bits/stdio_lim.h $HEADERDIR/bits/stdio_lim.h
+
+ libc_cv_ppc_machine=yes make cross-compiling=yes install_root=$SYSROOTNPTL \
+ install-headers
+ mkdir -p $HEADERDIRNPTL/gnu
+ touch $HEADERDIRNPTL/gnu/stubs.h
+ cp ../libc/include/features.h $HEADERDIRNPTL/features.h
+ cp bits/stdio_lim.h $HEADERDIRNPTL/bits/stdio_lim.h
+
+ popd
+}
+
+build_gcc_core() {
+ # build gcc-core
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+ mkdir -p ep-hard-gcc-core
+
+ pushd ep-hard-gcc-core
+ ../gcc-arm/configure --target=$TARGET --host=$HOST \
+ --with-local-prefix=$SYSROOT --disable-multilib --with-newlib \
+ --with-sysroot=$SYSROOT --enable-threads=no \
+ --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c \
+ --disable-shared --prefix=$INSTDIR/$BINDIR
+ make all-gcc
+ sudo make PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH install-gcc
+ popd
+}
+
+build_glibc_linuxthreads() {
+ # build glibc/linuxthreads
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+
+ mkdir -p ep-hard-glibc
+ sudo touch $INSTDIR/$BINDIR/lib/gcc/arm-unknown-linux-gnu/3.4.3/libgcc_s.a
+
+ pushd ep-hard-glibc
+ #BUILD_CC=gcc CFLAGS="-O2 -funroll-loops -mcpu=ep9312 -mfpu=maverick" \
+ BUILD_CC=gcc CFLAGS="-O2 -funroll-loops" \
+ CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib \
+ ../libc/configure --prefix=/usr \
+ --build=$HOST --host=$TARGET \
+ --enable-kernel=2.4.3 --without-cvs --disable-profile \
+ --disable-debug --without-gd --without-tls --without-__thread \
+ --enable-shared --enable-add-ons=linuxthreads --enable-omitfp \
+ --without-fp --with-headers=$HEADERDIR
+ make LD=$TARGET-ld RANLIB=$TARGET-ranlib lib
+ make install_root=$SYSROOT install-lib-all install-headers
+ popd
+
+ sudo rm $INSTDIR/$BINDIR/lib/gcc/arm-unknown-linux-gnu/3.4.3/libgcc_s.a
+}
+
+build_final_gcc() {
+ # build final gcc
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+
+ mkdir -p ep-hard-gcc
+ pushd ep-hard-gcc
+ ac_cv_lib_m_main=yes ../gcc-arm/configure --target=$TARGET --host=$HOST \
+ --with-local-prefix=$SYSROOT --with-sysroot=$SYSROOT \
+ --enable-threads=posix --enable-symvers=gnu \
+ --enable-__cxa_atexit --enable-languages="c,c++" \
+ --enable-shared --enable-c99 --enable-long-long \
+ --prefix=$INSTDIR/$BINDIR --enable-multilib
+ make all
+ sudo make PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH install
+ popd
+}
+
+build_glibc_NPTL() {
+ # build glibc-NPTL
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+
+ mkdir -p ep-hard-glibc-nptl
+ pushd ep-hard-glibc-nptl
+ #BUILD_CC=gcc CFLAGS="-O2 -funroll-loops -mcpu=ep9312 -mfpu=maverick" -mtp=linux" \
+ BUILD_CC=gcc CFLAGS="-O2 -funroll-loops -mtp=soft" \
+ CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib \
+ ../libc/configure --prefix=/usr \
+ --build=$HOST --host=$TARGET \
+ --enable-kernel=2.4.3 --without-cvs --disable-profile \
+ --enable-debug --without-gd --with-tls --with-__thread \
+ --enable-shared --enable-add-ons=nptl --enable-profile \
+ --without-fp --with-headers=$HEADERDIRNPTL
+ make LD=$TARGET-ld RANLIB=$TARGET-ranlib lib
+ make install_root=$SYSROOTNPTL install-lib-all install-headers
+ popd
+}
+
+build_final_nptl_gcc() {
+ # build final nptl gcc
+ export PATH=$INSTDIR/$BINDIRNPTL/bin:$ORIGPATH
+ mkdir -p ep-hard-gcc-nptl
+
+ pushd ep-hard-gcc-nptl
+ ac_cv_lib_m_main=yes ../gcc-arm/configure --target=$TARGET --host=$HOST \
+ --with-local-prefix=$SYSROOTNPTL --with-sysroot=$SYSROOTNPTL \
+ --enable-threads=posix --enable-symvers=gnu \
+ --enable-__cxa_atexit --enable-languages="c,c++" \
+ --enable-shared --enable-c99 --enable-long-long \
+ --prefix=$INSTDIR/$BINDIRNPTL \
+ # --enable-cxx-flags='-mcpu=ep9312 -mfpu=maverick'
+ make all
+ sudo make PATH=$INSTDIR/$BINDIRNPTL/bin:$ORIGPATH install
+ popd
+}
+
+build_gdb() {
+ # build gdb
+ pushd ep-hard-binutils
+
+ mkdir readline
+ cd readline
+ ../../binutils-complete/readline/configure --target=$TARGET --host=$HOST
+ make
+ cd ..
+ mkdir gdb
+ cd gdb
+ ../../binutils-complete/gdb/configure --target=$TARGET --host=$HOST \
+ --with-sysroot=$SYSROOT --prefix=$INSTDIR/$BINDIR \
+ --enable-tui --disable-gdbtk
+ make
+ sudo make install
+
+ ../../binutils-complete/gdb/configure --target=$TARGET --host=$HOST \
+ --with-sysroot=$SYSROOTNPTL --prefix=$INSTDIR/$BINDIRNPTL \
+ --enable-tui --disable-gdbtk
+ make
+ sudo make install
+
+ cd ..
+ popd
+}
+
+err() {
+ echo Failed to build $1
+ exec false
+}
+
+keystroke() {
+# read -n1 -p "$@ [key to continue]"
+ echo "*** $@ ***"
+}
+
+### MAIN ###
+
+keystroke "cleanup"
+cleanup
+
+keystroke "create sys_root"
+create_sys_root
+
+keystroke "create sys_root_nptl"
+create_sys_root_nptl
+
+keystroke "prepare kernel"
+prepare_kernel
+
+keystroke "binutils"
+build_binutils
+
+keystroke "glibc header"
+glibc_header
+
+keystroke "gcc core"
+build_gcc_core
+
+keystroke "glibc linuxthreads"
+build_glibc_linuxthreads
+
+keystroke "final gcc linuxthreads"
+build_final_gcc
+
+keystroke "glibc nptl"
+build_glibc_NPTL
+
+keystroke "final gcc nptl"
+build_final_nptl_gcc
+
+keystroke "gdb"
+build_gdb
diff --git a/EXTERNAL/mk-arm-soft b/EXTERNAL/mk-arm-soft
new file mode 100644
index 0000000..e4992de
--- /dev/null
+++ b/EXTERNAL/mk-arm-soft
@@ -0,0 +1,277 @@
+#! /bin/sh
+
+INSTDIR=/opt/cross/arm-unknown
+ARCH=arm
+TARGET=arm-unknown-linux-gnu
+HOST=i686-pc-linux-gnu
+
+SYSROOT=$INSTDIR/sys-root-soft
+HEADERDIR=$SYSROOT/usr/include
+BINDIR=linuxthreads-soft
+
+SYSROOTNPTL=$INSTDIR/sys-root-nptl-soft
+HEADERDIRNPTL=$SYSROOTNPTL/usr/include
+BINDIRNPTL=nptl-soft
+
+ORIGPATH=$PATH
+
+cleanup() {
+ # cleanup
+ sudo rm -rf ep-soft-*
+ sudo rm -rf $SYSROOT
+ sudo rm -rf $SYSROOTNPTL
+ sudo rm -rf $BINDIR
+ sudo rm -rf $BINDIRNPTL
+}
+
+create_sys_root() {
+ # create sys-root
+ mkdir -p $SYSROOT/lib
+ mkdir -p $SYSROOT/usr/lib
+ mkdir -p $HEADERDIR
+}
+
+create_sys_root_nptl() {
+ # create sys-root-nptl
+ mkdir -p $SYSROOTNPTL/lib
+ mkdir -p $SYSROOTNPTL/usr/lib
+ mkdir -p $HEADERDIRNPTL
+}
+
+prepare_kernel() {
+ # prepare kernel
+ pushd linux
+ make distclean
+ make ARCH=$ARCH edb7211_defconfig
+ make ARCH=$ARCH include/asm include/linux/version.h include/asm-$ARCH/.arch
+
+ cp -r include/linux $HEADERDIR
+ cp -r include/asm-${ARCH} $HEADERDIR/asm
+ cp -r include/asm-generic $HEADERDIR/asm-generic
+
+ cp -r include/linux $HEADERDIRNPTL
+ cp -r include/asm-${ARCH} $HEADERDIRNPTL/asm
+ cp -r include/asm-generic $HEADERDIRNPTL/asm-generic
+
+ popd
+}
+
+build_binutils() {
+ # build binutils
+ mkdir -p ep-soft-binutils
+
+ pushd ep-soft-binutils
+ ../binutils/configure --target=$TARGET --host=$HOST --with-sysroot=$SYSROOT \
+ --prefix=$INSTDIR/$BINDIR
+ make
+ sudo make install
+
+ ../binutils/configure --target=$TARGET --host=$HOST \
+ --with-sysroot=$SYSROOTNPTL --prefix=$INSTDIR/$BINDIRNPTL
+ make
+ sudo make install
+
+ popd
+}
+
+glibc_header() {
+ # glibc-header
+ mkdir -p ep-soft-glibc-header
+
+ pushd ep-soft-glibc-header
+ libc_cv_ppc_machine=yes ../libc/configure --prefix=/usr \
+ --build=$HOST --host=$TARGET --without-cvs \
+ --disable-sanity-checks --with-headers=$HEADERDIR \
+ --enable-hacker-mode
+
+ libc_cv_ppc_machine=yes make sysdeps/gnu/errlist.c
+ mkdir -p stdio-common
+ touch stdio-common/errlist-compat.c
+
+ libc_cv_ppc_machine=yes make cross-compiling=yes install_root=$SYSROOT \
+ install-headers
+ mkdir -p $HEADERDIR/gnu
+ touch $HEADERDIR/gnu/stubs.h
+ cp ../libc/include/features.h $HEADERDIR/features.h
+ cp bits/stdio_lim.h $HEADERDIR/bits/stdio_lim.h
+
+ libc_cv_ppc_machine=yes make cross-compiling=yes install_root=$SYSROOTNPTL \
+ install-headers
+ mkdir -p $HEADERDIRNPTL/gnu
+ touch $HEADERDIRNPTL/gnu/stubs.h
+ cp ../libc/include/features.h $HEADERDIRNPTL/features.h
+ cp bits/stdio_lim.h $HEADERDIRNPTL/bits/stdio_lim.h
+
+ popd
+}
+
+build_gcc_core() {
+ # build gcc-core
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+ mkdir -p ep-soft-gcc-core
+
+ pushd ep-soft-gcc-core
+ ../gcc-arm/configure --target=$TARGET --host=$HOST \
+ --with-local-prefix=$SYSROOT --disable-multilib --with-newlib \
+ --with-sysroot=$SYSROOT --enable-threads=no --with-softfloat-supp \
+ --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c \
+ --disable-shared --prefix=$INSTDIR/$BINDIR --with-float=soft
+ make all-gcc
+ sudo make PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH install-gcc
+ popd
+}
+
+build_glibc_linuxthreads() {
+ # build glibc/linuxthreads
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+
+ mkdir -p ep-soft-glibc
+ sudo touch $INSTDIR/$BINDIR/lib/gcc/arm-unknown-linux-gnu/3.4.3/libgcc_s.a
+
+ pushd ep-soft-glibc
+ #BUILD_CC=gcc CFLAGS="-O2 -funroll-loops -mcpu=ep9312 -mfpu=maverick" \
+ BUILD_CC=gcc CFLAGS="-O2 -funroll-loops" \
+ CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib \
+ ../libc/configure --prefix=/usr \
+ --build=$HOST --host=$TARGET \
+ --enable-kernel=2.4.3 --without-cvs --disable-profile \
+ --disable-debug --without-gd --without-tls --without-__thread \
+ --enable-shared --enable-add-ons=linuxthreads --enable-omitfp \
+ --without-fp --with-headers=$HEADERDIR
+ make LD=$TARGET-ld RANLIB=$TARGET-ranlib lib
+ make install_root=$SYSROOT install-lib-all install-headers
+ popd
+
+ sudo rm $INSTDIR/$BINDIR/lib/gcc/arm-unknown-linux-gnu/3.4.3/libgcc_s.a
+}
+
+build_final_gcc() {
+ # build final gcc
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+
+ mkdir -p ep-soft-gcc
+ pushd ep-soft-gcc
+ ac_cv_lib_m_main=yes ../gcc-arm/configure --target=$TARGET --host=$HOST \
+ --with-local-prefix=$SYSROOT --with-sysroot=$SYSROOT \
+ --enable-threads=posix --enable-symvers=gnu \
+ --enable-__cxa_atexit --enable-languages="c,c++" \
+ --enable-shared --enable-c99 --enable-long-long \
+ --prefix=$INSTDIR/$BINDIR --with-float=soft \
+ --enable-multilib --with-softfloat-supp
+ make all
+ sudo make PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH install
+ popd
+}
+
+build_glibc_NPTL() {
+ # build glibc-NPTL
+ export PATH=$INSTDIR/$BINDIR/bin:$ORIGPATH
+
+ mkdir -p ep-soft-glibc-nptl
+ pushd ep-soft-glibc-nptl
+ #BUILD_CC=gcc CFLAGS="-O2 -funroll-loops -mcpu=ep9312 -mfpu=maverick" -mtp=linux" \
+ BUILD_CC=gcc CFLAGS="-O2 -funroll-loops -mtp=soft" \
+ CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib \
+ ../libc/configure --prefix=/usr \
+ --build=$HOST --host=$TARGET \
+ --enable-kernel=2.4.3 --without-cvs --disable-profile \
+ --enable-debug --without-gd --with-tls --with-__thread \
+ --enable-shared --enable-add-ons=nptl --enable-profile \
+ --without-fp --with-headers=$HEADERDIRNPTL
+ make LD=$TARGET-ld RANLIB=$TARGET-ranlib lib
+ make install_root=$SYSROOTNPTL install-lib-all install-headers
+ popd
+}
+
+build_final_nptl_gcc() {
+ # build final nptl gcc
+ export PATH=$INSTDIR/$BINDIRNPTL/bin:$ORIGPATH
+ mkdir -p ep-soft-gcc-nptl
+
+ pushd ep-soft-gcc-nptl
+ ac_cv_lib_m_main=yes ../gcc-arm/configure --target=$TARGET --host=$HOST \
+ --with-local-prefix=$SYSROOTNPTL --with-sysroot=$SYSROOTNPTL \
+ --enable-threads=posix --enable-symvers=gnu \
+ --enable-__cxa_atexit --enable-languages="c,c++" \
+ --enable-shared --enable-c99 --enable-long-long \
+ --prefix=$INSTDIR/$BINDIRNPTL --with-float=soft --with-softfloat-supp \
+ # --enable-cxx-flags='-mcpu=ep9312 -mfpu=maverick'
+ make all
+ sudo make PATH=$INSTDIR/$BINDIRNPTL/bin:$ORIGPATH install
+ popd
+}
+
+build_gdb() {
+ # build gdb
+ pushd ep-soft-binutils
+
+ mkdir readline
+ cd readline
+ ../../binutils-complete/readline/configure --target=$TARGET --host=$HOST
+ make
+ cd ..
+ mkdir gdb
+ cd gdb
+ ../../binutils-complete/gdb/configure --target=$TARGET --host=$HOST \
+ --with-sysroot=$SYSROOT --prefix=$INSTDIR/$BINDIR \
+ --enable-tui --disable-gdbtk
+ make
+ sudo make install
+
+ ../../binutils-complete/gdb/configure --target=$TARGET --host=$HOST \
+ --with-sysroot=$SYSROOTNPTL --prefix=$INSTDIR/$BINDIRNPTL \
+ --enable-tui --disable-gdbtk
+ make
+ sudo make install
+
+ cd ..
+ popd
+}
+
+err() {
+ echo Failed to build $1
+ exec false
+}
+
+keystroke() {
+# read -n1 -p "$@ [key to continue]"
+ echo "*** $@ ***"
+}
+
+### MAIN ###
+
+keystroke "cleanup"
+cleanup
+
+keystroke "create sys_root"
+create_sys_root
+
+keystroke "create sys_root_nptl"
+create_sys_root_nptl
+
+keystroke "prepare kernel"
+prepare_kernel
+
+keystroke "binutils"
+build_binutils
+
+keystroke "glibc header"
+glibc_header
+
+keystroke "gcc core"
+build_gcc_core
+
+keystroke "glibc linuxthreads"
+build_glibc_linuxthreads
+
+keystroke "final gcc linuxthreads"
+build_final_gcc
+
+keystroke "glibc nptl"
+build_glibc_NPTL
+
+keystroke "final gcc nptl"
+build_final_nptl_gcc
+
+keystroke "gdb"
+build_gdb