mirror of
https://github.com/void-linux/void-packages.git
synced 2025-07-29 08:52:56 +02:00
mktoolchain: added new flags to specify dirs and misc stuff.
--HG-- extra : convert_revision : f5f9eb9aa5cedf41c1a99b862d31e5a8368b6e8b
This commit is contained in:
parent
af67e8f905
commit
1ae9019da2
1 changed files with 55 additions and 34 deletions
|
@ -12,14 +12,21 @@
|
||||||
: ${BINUTILS_VER:=2.19}
|
: ${BINUTILS_VER:=2.19}
|
||||||
: ${GLIBC_VER:=2.7}
|
: ${GLIBC_VER:=2.7}
|
||||||
: ${KERNEL_VER:=2.6.27.3}
|
: ${KERNEL_VER:=2.6.27.3}
|
||||||
: ${SOURCEDISTDIR:=/xbps_srcdistdir}
|
|
||||||
: ${CROSSDIR:=/cross-tools}
|
: ${CROSSDIR:=$HOME/mktoolchain}
|
||||||
|
: ${BUILDDIR:=$CROSSDIR/build}
|
||||||
|
: ${SOURCEDISTDIR:=$BUILDDIR/sources}
|
||||||
|
|
||||||
: ${FETCH_CMD:=wget}
|
: ${FETCH_CMD:=wget}
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
echo "usage: $0 <build directory> <target triplet>"
|
echo "usage: $0 [-b dir] [-c dir] [-s dir] <target triplet>"
|
||||||
|
echo
|
||||||
|
echo "Optional flags:"
|
||||||
|
echo " -b Directory to be used for temporary building."
|
||||||
|
echo " -c Directory to be used for final cross tools."
|
||||||
|
echo " -s Directory where the sources are available."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +88,7 @@ kernel_headers()
|
||||||
cd $SYSROOT/usr/include && ln -s asm asm-$KERNEL_ARCH
|
cd $SYSROOT/usr/include && ln -s asm asm-$KERNEL_ARCH
|
||||||
cd $BUILDDIR && rm -rf $pkg || exit 1
|
cd $BUILDDIR && rm -rf $pkg || exit 1
|
||||||
|
|
||||||
touch -f $CROSSDIR/.kernel_headers_done
|
touch -f $BUILDDIR/.kernel_headers_done
|
||||||
}
|
}
|
||||||
|
|
||||||
binutils()
|
binutils()
|
||||||
|
@ -114,7 +121,7 @@ binutils()
|
||||||
|
|
||||||
cd $BUILDDIR && rm -rf $pkg || exit 1
|
cd $BUILDDIR && rm -rf $pkg || exit 1
|
||||||
|
|
||||||
touch -f $CROSSDIR/.binutils_done
|
touch -f $BUILDDIR/.binutils_done
|
||||||
}
|
}
|
||||||
|
|
||||||
glibc_patches()
|
glibc_patches()
|
||||||
|
@ -164,13 +171,12 @@ gcc()
|
||||||
configure_args="$configure_args --enable-languages=c,c++"
|
configure_args="$configure_args --enable-languages=c,c++"
|
||||||
configure_args="$configure_args --enable-__cxa_atexit"
|
configure_args="$configure_args --enable-__cxa_atexit"
|
||||||
configure_args="$configure_args --enable-tls"
|
configure_args="$configure_args --enable-tls"
|
||||||
configure_args="$configure_args --prefix=$SYSROOT/usr"
|
|
||||||
;;
|
;;
|
||||||
libgcc)
|
libgcc)
|
||||||
# Enough to be able to build full glibc.
|
# Enough to be able to build full glibc.
|
||||||
make all-target-libgcc && make install-target-libgcc || exit 1
|
make all-target-libgcc && make install-target-libgcc || exit 1
|
||||||
rm -rf $SYSROOT/lib/crt* || exit 1
|
rm -rf $SYSROOT/lib/crt* || exit 1
|
||||||
touch -f $CROSSDIR/.gcc_libgcc_done
|
touch -f $BUILDDIR/.gcc_libgcc_done
|
||||||
cd $BUILDDIR/$pkg && rm -rf build
|
cd $BUILDDIR/$pkg && rm -rf build
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
@ -183,12 +189,12 @@ gcc()
|
||||||
configure_args="$configure_args --disable-threads"
|
configure_args="$configure_args --disable-threads"
|
||||||
configure_args="$configure_args --disable-libssp"
|
configure_args="$configure_args --disable-libssp"
|
||||||
configure_args="$configure_args --enable-languages=c"
|
configure_args="$configure_args --enable-languages=c"
|
||||||
configure_args="$configure_args --prefix=$CROSSDIR"
|
|
||||||
;;
|
;;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
../configure --build=$CROSS_HOST --host=$CROSS_HOST \
|
../configure --prefix=$CROSSDIR \
|
||||||
|
--build=$CROSS_HOST --host=$CROSS_HOST \
|
||||||
--target=$CROSS_TARGET \
|
--target=$CROSS_TARGET \
|
||||||
--with-sysroot=$SYSROOT \
|
--with-sysroot=$SYSROOT \
|
||||||
--with-build-sysroot=$SYSROOT \
|
--with-build-sysroot=$SYSROOT \
|
||||||
|
@ -210,7 +216,7 @@ gcc()
|
||||||
cd $BUILDDIR/$pkg && rm -rf build || exit 1
|
cd $BUILDDIR/$pkg && rm -rf build || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
touch -f $CROSSDIR/$touch_f
|
touch -f $BUILDDIR/$touch_f
|
||||||
}
|
}
|
||||||
|
|
||||||
glibc()
|
glibc()
|
||||||
|
@ -304,34 +310,41 @@ glibc()
|
||||||
cd $BUILDDIR/$pkg && rm -rf build || exit 1
|
cd $BUILDDIR/$pkg && rm -rf build || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
touch -f $CROSSDIR/$touch_f
|
touch -f $BUILDDIR/$touch_f
|
||||||
}
|
}
|
||||||
|
|
||||||
[ $# -ne 2 ] && usage
|
while getopts "b:c:s:" opt; do
|
||||||
|
case $opt in
|
||||||
|
b) BUILDDIR=$OPTARG
|
||||||
|
check_path $BUILDDIR
|
||||||
|
BUILDDIR=$SANITIZED_DESTDIR
|
||||||
|
;;
|
||||||
|
c) CROSSDIR=$OPTARG
|
||||||
|
check_path $CROSSDIR
|
||||||
|
CROSSDIR=$SANITIZED_DESTDIR
|
||||||
|
;;
|
||||||
|
s) SOURCEDISTDIR=$OPTARG
|
||||||
|
check_path $SOURCEDISTDIR
|
||||||
|
SOURCEDISTDIR=$SANITIZED_DESTDIR
|
||||||
|
;;
|
||||||
|
--) shift; break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
[ $# -ne 1 ] && usage
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
echo "ERROR: missing cross compiler directory."
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
check_path $1
|
|
||||||
BUILDDIR=$SANITIZED_DESTDIR
|
|
||||||
SYSROOT=$CROSSDIR/sysroot
|
|
||||||
unset SANITIZED_DESTDIR
|
|
||||||
[ ! -d $SYSROOT/usr ] && mkdir -p $SYSROOT/usr
|
|
||||||
[ ! -d $BUILDDIR ] && mkdir -p $BUILDDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$2" ]; then
|
|
||||||
echo "ERROR: missing target triplet."
|
echo "ERROR: missing target triplet."
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
CROSS_TARGET=$2
|
CROSS_TARGET=$1
|
||||||
case $CROSS_TARGET in
|
case $CROSS_TARGET in
|
||||||
i686-pc-linux-gnu)
|
i686-pc-linux-gnu)
|
||||||
KERNEL_ARCH=i386
|
KERNEL_ARCH=i386
|
||||||
CROSS_HOST=x86_64-unknown-linux-gnu
|
CROSS_HOST=x86_64-unknown-linux-gnu
|
||||||
;;
|
;;
|
||||||
x86-64-linux-gnu)
|
x86-64-unknown-linux-gnu)
|
||||||
KERNEL_ARCH=x86_64
|
KERNEL_ARCH=x86_64
|
||||||
CROSS_HOST=i686-pc-linux-gnu
|
CROSS_HOST=i686-pc-linux-gnu
|
||||||
;;
|
;;
|
||||||
|
@ -342,52 +355,60 @@ else
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
CROSSDIR=$CROSSDIR/$CROSS_TARGET
|
||||||
|
SYSROOT=$CROSSDIR/sysroot
|
||||||
|
[ ! -d $SYSROOT/usr ] && mkdir -p $SYSROOT/usr
|
||||||
|
[ ! -d $BUILDDIR ] && mkdir -p $BUILDDIR
|
||||||
|
[ ! -d $SOURCEDISTDIR ] && mkdir -p $SOURCEDISTDIR
|
||||||
|
|
||||||
unset CFLAGS CXXFLAGS CC CXX AR AS RANLIB LD_STRIP
|
unset CFLAGS CXXFLAGS CC CXX AR AS RANLIB LD_STRIP
|
||||||
unset LD_LIBRARY_PATH LD_RUN_PATH
|
unset LD_LIBRARY_PATH LD_RUN_PATH
|
||||||
export PATH="$CROSSDIR/bin:/bin:/usr/bin"
|
export PATH="$CROSSDIR/bin:/bin:/usr/bin"
|
||||||
|
|
||||||
fetch_sources
|
fetch_sources
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.kernel_headers_done ]; then
|
if [ ! -f $BUILDDIR/.kernel_headers_done ]; then
|
||||||
echo "Installing kernel headers..."
|
echo "Installing kernel headers..."
|
||||||
kernel_headers
|
kernel_headers
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.binutils_done ]; then
|
if [ ! -f $BUILDDIR/.binutils_done ]; then
|
||||||
echo "Installing binutils..."
|
echo "Installing binutils..."
|
||||||
binutils
|
binutils
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.glibc_headers_done ]; then
|
if [ ! -f $BUILDDIR/.glibc_headers_done ]; then
|
||||||
echo "Installing glibc headers..."
|
echo "Installing glibc headers..."
|
||||||
glibc headers
|
glibc headers
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.gcc_bootstrap_done ]; then
|
if [ ! -f $BUILDDIR/.gcc_bootstrap_done ]; then
|
||||||
echo "Installing gcc (bootstrap)..."
|
echo "Installing gcc (bootstrap)..."
|
||||||
gcc bootstrap
|
gcc bootstrap
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.glibc_startup_done ]; then
|
if [ ! -f $BUILDDIR/.glibc_startup_done ]; then
|
||||||
echo "Installing glibc (startup)..."
|
echo "Installing glibc (startup)..."
|
||||||
glibc startup
|
glibc startup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.gcc_libgcc_done ]; then
|
if [ ! -f $BUILDDIR/.gcc_libgcc_done ]; then
|
||||||
echo "Installing gcc (libgcc)..."
|
echo "Installing gcc (libgcc)..."
|
||||||
gcc libgcc
|
gcc libgcc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.glibc_full_done ]; then
|
if [ ! -f $BUILDDIR/.glibc_full_done ]; then
|
||||||
echo "Installing glibc (full)..."
|
echo "Installing glibc (full)..."
|
||||||
glibc full
|
glibc full
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $CROSSDIR/.gcc_full_done ]; then
|
if [ ! -f $BUILDDIR/.gcc_full_done ]; then
|
||||||
echo "Installing gcc (full)..."
|
echo "Installing gcc (full)..."
|
||||||
gcc full
|
gcc full
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ -d $BUILDDIR ] && rm -rf $BUILDDIR
|
||||||
|
|
||||||
echo "Finished. Toolchain for $CROSS_TARGET at $CROSSDIR."
|
echo "Finished. Toolchain for $CROSS_TARGET at $CROSSDIR."
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
Loading…
Add table
Reference in a new issue