b5fa96e376
The build process has been completely restructured to use sysroots.
223 lines
7.5 KiB
Bash
Executable File
223 lines
7.5 KiB
Bash
Executable File
#!/bin/bash
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
. $DIR/config.sh
|
|
. $DIR/util.sh
|
|
|
|
# Build everything by default.
|
|
BUILD_BINUTILS=true
|
|
BUILD_GCC=true
|
|
BUILD_NEWLIB=true
|
|
BUILD_LIBSTDCPP=true
|
|
BUILD_ZLIB=true
|
|
BUILD_FREETYPE=true
|
|
BUILD_PNG=true
|
|
BUILD_PIXMAN=true
|
|
BUILD_CAIRO=true
|
|
BUILD_MESA=true
|
|
BUILD_NCURSES=true
|
|
BUILD_VIM=true
|
|
|
|
#BUILD_BINUTILS=false
|
|
#BUILD_GCC=false
|
|
#BUILD_NEWLIB=false
|
|
#BUILD_LIBSTDCPP=false
|
|
#BUILD_ZLIB=false
|
|
#BUILD_FREETYPE=false
|
|
#BUILD_PNG=false
|
|
#BUILD_PIXMAN=false
|
|
#BUILD_CAIRO=false
|
|
#BUILD_MESA=false
|
|
#BUILD_NCURSES=false
|
|
#BUILD_VIM=false
|
|
|
|
echo "Building a toolchain with a sysroot of $TOARU_SYSROOT with host binaries in $PREFIX targeting $TARGET"
|
|
|
|
if [ ! -d build ]; then
|
|
mkdir build
|
|
fi
|
|
|
|
pushd build
|
|
if $BUILD_BINUTILS; then
|
|
if [ ! -d binutils ]; then
|
|
mkdir binutils
|
|
fi
|
|
|
|
unset PKG_CONFIG_LIBDIR
|
|
|
|
pushd binutils
|
|
$DIR/tarballs/binutils-2.22/configure --target=$TARGET --prefix=$PREFIX --with-sysroot=$TOARU_SYSROOT --disable-werror || bail
|
|
make || bail
|
|
make install || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_GCC; then
|
|
if [ -d gcc ]; then
|
|
rm -rf gcc
|
|
fi
|
|
mkdir gcc
|
|
|
|
unset PKG_CONFIG_LIBDIR
|
|
|
|
pushd gcc
|
|
$DIR/tarballs/gcc-4.6.4/configure --target=$TARGET --prefix=$PREFIX --with-sysroot=$TOARU_SYSROOT --with-build-sysroot=$TOARU_SYSROOT --with-native-system-header-dir=$TOARU_SYSROOT --disable-nls --enable-languages=c,c++ --disable-libssp --with-newlib || bail
|
|
make all-gcc || bail
|
|
make install-gcc || bail
|
|
make all-target-libgcc || bail
|
|
make install-target-libgcc || bail
|
|
popd
|
|
fi
|
|
|
|
. $DIR/activate.sh
|
|
|
|
if $BUILD_NEWLIB; then
|
|
if [ ! -d newlib ]; then
|
|
mkdir newlib
|
|
else
|
|
# Newlib is touchy about reconfigures
|
|
rm -r newlib
|
|
mkdir newlib
|
|
fi
|
|
pushd $DIR/tarballs/newlib-1.19.0
|
|
find -type f -exec sed 's|--cygnus||g;s|cygnus||g' -i {} + || bail
|
|
popd
|
|
pushd $DIR/tarballs/newlib-1.19.0/newlib/libc/sys
|
|
autoconf || bail
|
|
pushd toaru
|
|
touch INSTALL NEWS README AUTHORS ChangeLog COPYING || bail
|
|
autoreconf || bail
|
|
yasm -f elf -o crt0.o crt0.s || bail
|
|
yasm -f elf -o crti.o crti.s || bail
|
|
yasm -f elf -o crtn.o crtn.s || bail
|
|
cp crt0.o ../
|
|
cp crt0.o /tmp/__toaru_crt0.o
|
|
cp crti.o ../
|
|
cp crti.o /tmp/__toaru_crti.o
|
|
cp crtn.o ../
|
|
cp crtn.o /tmp/__toaru_crtn.o
|
|
popd
|
|
popd
|
|
pushd newlib
|
|
mkdir -p $TARGET/newlib/libc/sys
|
|
cp /tmp/__toaru_crt0.o $TARGET/newlib/libc/sys/crt0.o
|
|
rm /tmp/__toaru_crt0.o
|
|
cp /tmp/__toaru_crti.o $TARGET/newlib/libc/sys/crti.o
|
|
rm /tmp/__toaru_crti.o
|
|
cp /tmp/__toaru_crtn.o $TARGET/newlib/libc/sys/crtn.o
|
|
rm /tmp/__toaru_crtn.o
|
|
echo "" > $DIR/tarballs/newlib-1.19.0/newlib/libc/stdlib/malign.c
|
|
$DIR/tarballs/newlib-1.19.0/configure --target=$TARGET --prefix=$VIRTPREFIX || bail
|
|
# Fix the damned tooldir
|
|
sed -s 's/prefix}\/i686-pc-toaru/prefix}/' Makefile > Makefile.tmp
|
|
mv Makefile.tmp Makefile
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
cp -r $DIR/patches/newlib/include/* $TOARU_SYSROOT/$VIRTPREFIX/include/
|
|
cp $TARGET/newlib/libc/sys/crt0.o $TOARU_SYSROOT/$VIRTPREFIX/lib/
|
|
cp $TARGET/newlib/libc/sys/crti.o $TOARU_SYSROOT/$VIRTPREFIX/lib/
|
|
cp $TARGET/newlib/libc/sys/crtn.o $TOARU_SYSROOT/$VIRTPREFIX/lib/
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_LIBSTDCPP; then
|
|
pushd gcc
|
|
# build libstdc++
|
|
make all-target-libstdc++-v3 || bail
|
|
make install-target-libstdc++-v3 || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_FREETYPE; then
|
|
if [ ! -d freetype ]; then
|
|
mkdir freetype
|
|
fi
|
|
pushd freetype
|
|
$DIR/tarballs/freetype-2.4.9/configure --host=$TARGET --prefix=$VIRTPREFIX || bail
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_ZLIB; then
|
|
# XXX zlib can not be built in a separate directory
|
|
pushd $DIR/tarballs/zlib*
|
|
CC=i686-pc-toaru-gcc ./configure --static --prefix=$PREFIX/$TARGET || bail
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_PNG; then
|
|
if [ ! -d libpng ]; then
|
|
mkdir libpng
|
|
fi
|
|
pushd libpng
|
|
$DIR/tarballs/libpng-1.5.13/configure --host=$TARGET --prefix=$VIRTPREFIX || bail
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_PIXMAN; then
|
|
if [ ! -d pixman ]; then
|
|
mkdir pixman
|
|
fi
|
|
pushd pixman
|
|
$DIR/tarballs/pixman-0.26.2/configure --host=$TARGET --prefix=$VIRTPREFIX || bail
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_CAIRO; then
|
|
if [ ! -d cairo ]; then
|
|
mkdir cairo
|
|
fi
|
|
pushd cairo
|
|
$DIR/tarballs/cairo-1.12.2/configure --host=$TARGET --prefix=$VIRTPREFIX --enable-ps=no --enable-pdf=no --enable-interpreter=no --enable-xlib=no || bail
|
|
cp $DIR/patches/cairo-Makefile test/Makefile
|
|
cp $DIR/patches/cairo-Makefile perf/Makefile
|
|
echo -e "\n\n#define CAIRO_NO_MUTEX 1" >> config.h
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_MESA; then
|
|
# XXX Mesa can not be built from a separate directory (configure script doesn't provide a Makefile)
|
|
pushd $DIR/tarballs/Mesa-*
|
|
./configure --enable-32-bit --host=$TARGET --prefix=$VIRTPREFIX --with-osmesa-bits=8 --with-driver=osmesa --disable-egl --disable-shared --without-x --disable-glw --disable-glut --disable-driglx-direct --disable-gallium || bail
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_NCURSES; then
|
|
if [ ! -d ncurses ]; then
|
|
mkdir ncurses
|
|
fi
|
|
pushd ncurses
|
|
$DIR/tarballs/ncurses-5.9/configure --prefix=$VIRTPREFIX --host=$TARGET --with-terminfo-dirs=/usr/share/terminfo --with-default-terminfo-dir=/usr/share/terminfo --without-tests || bail
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
cp $DIR/../util/toaru.tic $TOARU_SYSROOT/$VIRTPREFIX/share/terminfo/t/toaru
|
|
cp $DIR/../util/toaru-vga.tic $TOARU_SYSROOT/$VIRTPREFIX/share/terminfo/t/toaru-vga
|
|
popd
|
|
fi
|
|
|
|
if $BUILD_VIM; then
|
|
pushd $DIR/tarballs/vim73
|
|
make distclean
|
|
ac_cv_sizeof_int=4 vim_cv_getcwd_broken=no vim_cv_memmove_handles_overlap=yes vim_cv_stat_ignores_slash=no vim_cv_tgetent=zero vim_cv_terminfo=yes vim_cv_toupper_broken=no vim_cv_tty_group=world ./configure --host=$TARGET --target=$TARGET --with-sysroot=$TOARU_SYSROOT --prefix=$VIRTPREFIX --with-tlib=ncurses --enable-gui=no --disable-gtktest --disable-xim --with-features=normal --disable-gpm --without-x --disable-netbeans --enable-multibyte
|
|
make || bail
|
|
make DESTDIR=$TOARU_SYSROOT install || bail
|
|
popd
|
|
fi
|
|
|
|
pushd $TOARU_SYSROOT/usr/bin || bail
|
|
$TARGET-strip *
|
|
popd
|
|
|
|
popd
|