diff --git a/BaseBuild/Basesys/Basesys.dmk b/BaseBuild/Basesys/Basesys.dmk index 68036ca..876e310 100644 --- a/BaseBuild/Basesys/Basesys.dmk +++ b/BaseBuild/Basesys/Basesys.dmk @@ -40,7 +40,7 @@ 16 Basesys/linux-headers 16 Basesys/man-pages 16 Basesys/man-pages-de -16 Basesys/glibc +16 Basesys/eglibc 16 Basesys/adjust 16 Basesys/gmp 16 Basesys/mpfr diff --git a/BaseBuild/Basesys/eglibc b/BaseBuild/Basesys/eglibc new file mode 100644 index 0000000..13a28fb --- /dev/null +++ b/BaseBuild/Basesys/eglibc @@ -0,0 +1,129 @@ +#!/bin/bash +#Framework, welches ein komplettes Linux System aus den Sourcen erstellt +#dieses Framework wird im CVS Repository +#:pserver:cvs.compuextreme.de:/Data/cvs zur Verfügung gestellt +# +#Lage dieser Datei im Archiv: $HeadURL: svn://www.compuextreme.de/Viitor/V962/ViitorMake/BaseBuild/crosschain/glibc $ +# +#(c) 2003 Harald Kueller, Germany +#This program is free software; you can redistribute it and/or +#modify ist 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. +# +#Dies ist ein Module zur Verwendung mit genpkg. Die Erzeugung eines +#Viitor Linux Packetes wird über die Funktionen premk, mk und postmk +#gesteuert. premk() dient zur Vorbereitung des Sourcecodes. Hier können +#diverse Änderungen am sourcecode (mit awk/sed usw.) vorgenommen werden +#mk() umfasst die source Konfiguration und das Übersetzten des source +#codes. Auch die Installation muß von mk erledigt werden. Hier gild dass +#die Installation immer nach $TMPROOT erfolgen soll (meisst kann das mit +#"make DESTDIR=$TMPROOT install" angestossen werden). postmk kann +#vor der packeterstellung noch einiges am installationtree ändern. postmk +#läuft nachdem die Packetabhängigkeiten erstellt wurden. +#Das Verhalten von genpkg kann über die Variable MKPKG gesteuert werden. +#Hier müssen FLAGS zur Steuerung gesetzt werden. Folgende Flags werden +#erkannt: +# +# 1 : Package Erzeugung erzwingen. Packet wird, auch wenn es schon +# vorhanden ist, ohne weitere rückfragen neu Erzeugt. +# 2 : Package Installation erzwingen. Installpkg wird mit -f aufgerufen. +# Das bewirkt, das installpkg keine rückfragen bei der installation +# Stellt, und das packet in jedemfall (neu) installiert. +# 4 : Sourcepacket nicht nach MAKEDIR entpacken. Ist dieses Flag gesetzt +# muss sich das Module selber um das Entpacken der sourcedateien kümmern. +# vor allem wichtig bei Packeten, für die es keine source.tgz gibt +# (z.B. aus dem CVS generierte Packete). +# 8 : Erstellung des Packetes aus $TMPROOT wird unterdrückt. Dies ist bei +# manchen Sonderfällen möglich - wenn sich z.B. der Packetnamen nicht +# aus dem Namen des sourcearchives ableiten lässt. Packet sollte in +# so einem Fall in der postmk() Funktion erstellt werden. +# 16 : Packet wird nicht installiert. Bei Packeten wie tar oder bash kann +# die installation mittelst installpkg probleme machen. +# 32 : Dependics File so erzeugen, das die Abhängigkeiten bei der installation +# erfüllt sein müssen. installpkg bricht in so einem fall bei fehlenden +# packeten die installation ab, und gibt nicht "nur" warnmeldungen aus. +# Wichtig bei packeten mit postinstallroutine, die software aus dem +# frisch installierten Packet verwendet (wie z.B. postgresql) +# 64 : sourcetree aufräumen nach packeterstellung unterbinden. +# 128 : Patches zu den Sourcen nicht einspielen - Module muss sich darum +# kümmern + +#Module zur Erstellung des Packetes: +#Quelle der Source Archive: +#Kurzbeschreibung: +# +# +#Letzte Änderung von: $Author: kueller $ +#Datum der letzten Änderung: $Date: 2009-05-20 13:53:37 +0000 (Mi, 20 Mai 2009) $ +#Version der Datei: $Revision: 4731 $ +# + +SRCPATH=Base/Lib + +premk() { + ARCH=`echo $TARGET|cut -d"-" -f 1` + ARCH32=`echo $TARGET32|cut -d"-" -f 1` + cp scripts/test-installation.pl{,.orig} + mkdir ../build-eglibc + touch /etc/ld.so.conf +} + +mk32() { + LINKER=$(readelf -l $(file /tools/lib/libc-*|cut -f1 -d:) | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p') + sed -e "s|libs -o|lib -L/usr/lib -Wl,-dynamic-linker=${LINKER} -o|" \ + scripts/test-installation.pl.orig >scripts/test-installation.pl + unset LINKER + cd ../build-eglibc + CC="gcc ${BUILDOPTIONS32}" \ + CXX="g++ ${BUILDOPTIONS32}" \ + CFLAGS="-march=$ARCH32 -mtune=generic -g -O2" \ + ../eglibc-*/configure --prefix=/usr \ + --host=${TARGET32} \ + --disable-profile \ + --enable-add-ons \ + --enable-kernel=2.6.0 \ + --libexecdir=/usr/lib/eglibc + make -j $NUMCPU + make -j $NUMCPU install_root=$TMPROOT install + cd ../eglibc* + rm -r ../build-eglibc/ + mkdir ../build-eglibc +} + +mk() { + LINKER=$(readelf -l $(file /tools/lib64/libc-*|cut -f1 -d:) | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p') + sed -e "s|libs -o|lib -L/usr/lib -Wl,-dynamic-linker=${LINKER} -o|" \ + scripts/test-installation.pl.orig >scripts/test-installation.pl + unset LINKER + cd ../build-eglibc + if [ "$MK64BIT" == "true" ]; then + echo "slibdir=/lib64" >>configparms + ADDOPTIONS="--libdir=/usr/lib64" + fi + CC="gcc ${BUILDOPTIONS}" \ + CXX="g++ ${BUILDOPTIONS}" \ + ../eglibc-*/configure --prefix=/usr \ + $ADDOPTIONS \ + --disable-profile \ + --enable-add-ons \ + --enable-kernel=2.6.0 \ + --libexecdir=/usr/$LIBDIR/eglibc + make -j $NUMCPU + make -j $NUMCPU install_root=$TMPROOT install + make -j $NUMCPU install_root=$TMPROOT localedata/install-locales +} + +postmk() { + cd ../eglibc* + rm -r ../build-eglibc +} diff --git a/BaseBuild/Basesys/gcc b/BaseBuild/Basesys/gcc index ac46d60..6e66696 100644 --- a/BaseBuild/Basesys/gcc +++ b/BaseBuild/Basesys/gcc @@ -83,14 +83,12 @@ mk() { if [ "$MK64BIT" == "true" ]; then ADDCONFIGURE="--libdir=/usr/lib64 --libexecdir=/usr/lib64" RPATH="/lib64:/lib" - CCOPTIONS="" else ADDCONFIGURE="--libexecdir=/usr/lib" RPATH="/lib" - CCOPTIONS="$BUILDOPTIONS" fi - CC="gcc -Wl,-rpath-link,$RPATH -isystem /usr/include ${CCOPTIONS}" \ - CXX="g++ -Wl,-rpath-link,$RPATH -isystem /usr/include ${CCOPTIONS}" \ + CC="gcc -Wl,-rpath-link,$RPATH -isystem /usr/include ${BUILDOPTIONS}" \ + CXX="g++ -Wl,-rpath-link,$RPATH -isystem /usr/include ${BUILDOPTIONS}" \ ../gcc*/configure --prefix=/usr \ $ADDCONFIGURE \ --enable-shared \ diff --git a/BaseBuild/crosschain/crosschain.dmk b/BaseBuild/crosschain/crosschain.dmk index 2b7d723..21bc9d8 100644 --- a/BaseBuild/crosschain/crosschain.dmk +++ b/BaseBuild/crosschain/crosschain.dmk @@ -5,5 +5,5 @@ 16 crosschain/mpfr 16 crosschain/binutils 17 crosschain/gcc -16 crosschain/glibc +16 crosschain/eglibc 16 crosschain/gcc diff --git a/BaseBuild/crosschain/eglibc b/BaseBuild/crosschain/eglibc new file mode 100644 index 0000000..b802ffa --- /dev/null +++ b/BaseBuild/crosschain/eglibc @@ -0,0 +1,147 @@ +#!/bin/bash +#Framework, welches ein komplettes Linux System aus den Sourcen erstellt +#dieses Framework wird im CVS Repository +#:pserver:cvs.compuextreme.de:/Data/cvs zur Verfügung gestellt +# +#Lage dieser Datei im Archiv: $HeadURL: svn://www.compuextreme.de/Viitor/V962/ViitorMake/BaseBuild/crosschain/glibc $ +# +#(c) 2003 Harald Kueller, Germany +#This program is free software; you can redistribute it and/or +#modify ist 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. +# +#Dies ist ein Module zur Verwendung mit genpkg. Die Erzeugung eines +#Viitor Linux Packetes wird über die Funktionen premk, mk und postmk +#gesteuert. premk() dient zur Vorbereitung des Sourcecodes. Hier können +#diverse Änderungen am sourcecode (mit awk/sed usw.) vorgenommen werden +#mk() umfasst die source Konfiguration und das Übersetzten des source +#codes. Auch die Installation muß von mk erledigt werden. Hier gild dass +#die Installation immer nach $TMPROOT erfolgen soll (meisst kann das mit +#"make DESTDIR=$TMPROOT install" angestossen werden). postmk kann +#vor der packeterstellung noch einiges am installationtree ändern. postmk +#läuft nachdem die Packetabhängigkeiten erstellt wurden. +#Das Verhalten von genpkg kann über die Variable MKPKG gesteuert werden. +#Hier müssen FLAGS zur Steuerung gesetzt werden. Folgende Flags werden +#erkannt: +# +# 1 : Package Erzeugung erzwingen. Packet wird, auch wenn es schon +# vorhanden ist, ohne weitere rückfragen neu Erzeugt. +# 2 : Package Installation erzwingen. Installpkg wird mit -f aufgerufen. +# Das bewirkt, das installpkg keine rückfragen bei der installation +# Stellt, und das packet in jedemfall (neu) installiert. +# 4 : Sourcepacket nicht nach MAKEDIR entpacken. Ist dieses Flag gesetzt +# muss sich das Module selber um das Entpacken der sourcedateien kümmern. +# vor allem wichtig bei Packeten, für die es keine source.tgz gibt +# (z.B. aus dem CVS generierte Packete). +# 8 : Erstellung des Packetes aus $TMPROOT wird unterdrückt. Dies ist bei +# manchen Sonderfällen möglich - wenn sich z.B. der Packetnamen nicht +# aus dem Namen des sourcearchives ableiten lässt. Packet sollte in +# so einem Fall in der postmk() Funktion erstellt werden. +# 16 : Packet wird nicht installiert. Bei Packeten wie tar oder bash kann +# die installation mittelst installpkg probleme machen. +# 32 : Dependics File so erzeugen, das die Abhängigkeiten bei der installation +# erfüllt sein müssen. installpkg bricht in so einem fall bei fehlenden +# packeten die installation ab, und gibt nicht "nur" warnmeldungen aus. +# Wichtig bei packeten mit postinstallroutine, die software aus dem +# frisch installierten Packet verwendet (wie z.B. postgresql) +# 64 : sourcetree aufräumen nach packeterstellung unterbinden. +# 128 : Patches zu den Sourcen nicht einspielen - Module muss sich darum +# kümmern + +#Module zur Erstellung des Packetes: +#Quelle der Source Archive: +#Kurzbeschreibung: +# +# +#Letzte Änderung von: $Author: kueller $ +#Datum der letzten Änderung: $Date: 2009-05-20 13:53:37 +0000 (Mi, 20 Mai 2009) $ +#Version der Datei: $Revision: 4731 $ +# + +SRCPATH=Base/Lib + +(( MKPKG = $MKPKG | 8 )) +(( MKPKG = $MKPKG | 16 )) +(( MKPKG = $MKPKG | 128 )) + +premk() { + ARCH=`echo $TARGET|cut -d"-" -f 1` + ARCH32=`echo $TARGET32|cut -d"-" -f 1` + cp -v Makeconfig{,.orig} + sed -e 's/-lgcc_eh//g' Makeconfig.orig >Makeconfig + mkdir ../build-eglibc + cd ../build-eglibc +} + +mk32() { + cat > config.cache << "EOF" +libc_cv_forced_unwind=yes +libc_cv_c_cleanup=yes +libc_cv_gnu89_inline=yes +EOF + BUILD_CC="gcc" CC="${TARGET}-gcc ${BUILDOPTIONS32}" \ + AR="${TARGET}-ar" \ + RANLIB="${TARGET}-ranlib" \ + CFLAGS="-march=$ARCH32 -mtune=generic -g -O2" \ + ../eglibc-*/configure --prefix=/tools \ + --host=${TARGET32} \ + --build=${HOSTSYS} \ + --disable-profile \ + --enable-add-ons \ + --with-tls \ + --enable-kernel=2.6.0 \ + --with-__thread \ + --with-binutils=/cross-tools/bin \ + --with-headers=/tools/include \ + --cache-file=config.cache + make -j $NUMCPU + make -j $NUMCPU install + cd ../eglibc* + rm -r ../build-eglibc/ + mkdir ../build-eglibc + cd ../build-eglibc +} + +mk() { + cat > config.cache << "EOF" +libc_cv_forced_unwind=yes +libc_cv_c_cleanup=yes +libc_cv_gnu89_inline=yes +EOF + if [ "$MK64BIT" == "true" ]; then + echo "slibdir=/tools/lib64" >>configparms + ADDOPTIONS="--libdir=/tools/lib64" + fi + BUILD_CC="gcc" CC="${TARGET}-gcc ${BUILDOPTIONS}" \ + AR="${TARGET}-ar" \ + RANLIB="${TARGET}-ranlib" \ + ../eglibc-*/configure --prefix=/tools \ + --host=${TARGET} \ + --build=${HOSTSYS} \ + $ADDOPTIONS \ + --disable-profile \ + --enable-add-ons \ + --with-tls \ + --enable-kernel=2.6.0 \ + --with-__thread \ + --with-binutils=/cross-tools/bin \ + --with-headers=/tools/include \ + --cache-file=config.cache + make -j $NUMCPU + make -j $NUMCPU install +} + +postmk() { + cd ../eglibc* + rm -r ../build-eglibc +} diff --git a/BaseBuild/crosschain/gcc b/BaseBuild/crosschain/gcc index bef49e7..a01f72d 100644 --- a/BaseBuild/crosschain/gcc +++ b/BaseBuild/crosschain/gcc @@ -90,7 +90,7 @@ premk() { OUTFILE="gcc/config/linux.h" fi for i in $OUTFILE; do - echo -en '#undef STANDARD_INCLUDE_DIR\n#define STANDARD_INCLUDE_DIR "/tools/include/" \n\n' >>$i + echo -en '\n#undef STANDARD_INCLUDE_DIR\n#define STANDARD_INCLUDE_DIR "/tools/include/" \n\n' >>$i echo -en '\n#undef STANDARD_STARTFILE_PREFIX_1\n#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"\n' >>$i echo -en '\n#undef STANDARD_STARTFILE_PREFIX_2\n#define STANDARD_STARTFILE_PREFIX_2 ""\n' >>$i done diff --git a/BaseBuild/toolchain/binutils b/BaseBuild/toolchain/binutils index 5256b4c..0b1f3ab 100644 --- a/BaseBuild/toolchain/binutils +++ b/BaseBuild/toolchain/binutils @@ -87,8 +87,8 @@ SRCPATH=Base/Utilities premk() { SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-posix-*.patch* - SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-genscripts_multilib-*.patch* SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-branch_update-*.patch* + SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-genscripts_multilib-*.patch* mkdir ../build-binutils cd ../build-binutils diff --git a/BaseBuild/toolchain/gcc b/BaseBuild/toolchain/gcc index fcf0d65..857077e 100644 --- a/BaseBuild/toolchain/gcc +++ b/BaseBuild/toolchain/gcc @@ -96,12 +96,9 @@ premk() { mk() { if [ "$MK64BIT" == "true" ]; then ADDCONFIGURE="--libdir=/tools/lib64" - CCOPTIONS="" - else - CCOPTIONS="$BUILDOPTIONS" fi - CC="${CC} ${CCOPTIONS}" \ - CXX="${CXX} ${CCOPTIONS}" \ + CC="${CC} ${BUILDOPTIONS}" \ + CXX="${CXX} ${BUILDOPTIONS}" \ ../gcc*/configure --host=$TARGET \ --target=$TARGET \ --build=$HOSTSYS \ diff --git a/BaseBuild/toolchain/zlib b/BaseBuild/toolchain/zlib index f8e19aa..893e37e 100644 --- a/BaseBuild/toolchain/zlib +++ b/BaseBuild/toolchain/zlib @@ -85,6 +85,10 @@ SRCPATH=Base/Lib (( MKPKG = $MKPKG | 8 )) (( MKPKG = $MKPKG | 16 )) +if [ "$MK64BIT" == "true" ]; then + (( MKPKG = $MKPKG | 128 )) +fi + premk() { echo "nothing to do for premk()" }