#
###############################################################################
-CONFIG_ROOT=/etc/$SNAME # Configuration rootdir
-NICE=10 # Nice level
-TARGET=i686 # Default target
+CONFIG_ROOT=/etc/$SNAME # Configuration rootdir
+NICE=10 # Nice level
+TARGET=i686 # Default target
KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }' | tr -d '\n'; grep --max-count=1 FULLVER lfs/linux | awk '{ print $3 }' | cut -c 7-| tail -1`
MACHINE_REAL=`uname -m`
GIT_TAG=$(git tag | tail -1)
PAX=1
# Parallelism flag
-PARALLELISM=$(( $(grep processor < /proc/cpuinfo | wc -l) * 2 + 1 ))
+PARALLELISMFLAGS=-j$(( $(grep processor < /proc/cpuinfo | wc -l) * 2 + 1 ))
DISTCC_HOSTS=localhost
PWD=`pwd`
IFS_TARGET="${MACHINE}-pc-linux-gnu"
CFLAGS="-march=${MACHINE} -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
+ UCLIBC_TARGET=${MACHINE}-pc-linux-uclibc
+ UCLIBC_CFLAGS="-march=${MACHINE} -Os -pipe"
elif [ 'via-c7' = $TARGET ]; then
MACHINE=i686
MACHINE_REAL=${MACHINE_REAL}
LINKER=/lib/ld-linux.so.2
IFS_TARGET="${MACHINE}-pc-linux-gnu"
- CFLAGS="-march=${MACHINE} -mmmx -msse -msse2 -msse3 -O2 -pipe -fomit-frame-pointer"
+ CFLAGS="-march=${MACHINE} -mmmx -msse -msse2 -msse3 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
+ UCLIBC_TARGET=${MACHINE}-pc-linux-uclibc
+ UCLIBC_CFLAGS="-march=i386 -Os -pipe"
elif [ 'via-c3' = $TARGET ]; then
MACHINE=i586
MACHINE_REAL=${MACHINE_REAL}
IFS_TARGET="${MACHINE}-pc-linux-gnu"
CFLAGS="-march=c3 -m3dnow -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
+ UCLIBC_TARGET=${MACHINE}-pc-linux-uclibc
+ UCLIBC_CFLAGS="-march=${MACHINE} -Os -pipe"
else
beautify message FAIL
echo "Not a valid target arch (i686|i586|i486|i386|via-c7|via-c3) - $TARGET"
# include machine in TOOLCHAINNAME
TOOLCHAINNAME=$SNAME-$TOOLCHAINVERSION-toolchain-t${TARGET}-m${MACHINE}
+# The place where all uclibc files are stored in
+UCLIBC_DIR=/usr/${UCLIBC_TARGET}
+UCLIBC_CC_CORE_STATIC_DIR=${UCLIBC_DIR}/gcc-core-static
+
+#UCLIBC_SYSROOT_DIR=${UCLIBC_DIR}/${UCLIBC_TARGET}/sys-root
+UCLIBC_SYSROOT_DIR=${INSTALLER_DIR}
###############################################################################
#
CCACHE_PREFIX=${CCACHE_PREFIX} \
CCACHE_HASHDIR=${CCACHE_HASHDIR} \
DISTCC_DIR=/usr/src/distcc \
- PARALLELISM=$PARALLELISM \
+ PARALLELISMFLAGS=$PARALLELISMFLAGS \
LINKER=$LINKER \
TOOLS_DIR=$TOOLS_DIR \
INSTALLER_DIR=$INSTALLER_DIR \
################################################################################
# Common checking before entering the chroot and compilling #
# Return:0 caller can continue #
-# :1 skip (nothing to do) #
-# or fail if no script file found #
+# :1 skip (nothing to do) #
+# or fail if no script file found #
################################################################################
lfsmakecommoncheck()
{
# Script present?
if [ ! -f $BASEDIR/lfs/$1 ]; then
- exiterror "No such file or directory: $BASEDIR/$1"
+ exiterror "No such file or directory: $BASEDIR/lfs/$1"
fi
local PKG_VER=`get_pkg_ver $BASEDIR/lfs/$1`
IFS_TARGET="$IFS_TARGET" \
LFS_BASEDIR=$BASEDIR \
LFS=$LFS \
- PARALLELISM=$PARALLELISM \
+ INSTALLER_DIR=$INSTALLER_DIR \
+ PARALLELISMFLAGS=$PARALLELISMFLAGS \
KVER=$KVER \
STAGE=$STAGE \
STAGE_ORDER=$STAGE_ORDER \
} # End of toolchain_make()
################################################################################
-# This is the function that builds every package in stage "base" #
+# This is the function that builds every package in stage "base" and "ipfire" #
################################################################################
ipfire_make() {
lfsmakecommoncheck $*
if grep -qEi 'KERNEL_MOD = yes' $1 ; then
unset EXTRA_MAKE
fi
+
+ local MYCFLAGS MYCXXFLAGS
+ if [ "${STAGE}" = "installer" ]; then
+ MYCFLAGS=${UCLIBC_CFLAGS}
+ MYCXXFLAGS=${UCLIBC_CFLAGS}
+ else
+ MYCFLAGS=${CFLAGS}
+ MYCXXFLAGS=${CXXFLAGS}
+ fi
local PKG_TIME_START=`date +%s`
chroot $LFS $TOOLS_DIR/bin/env -i \
CCACHE_PREFIX=${CCACHE_PREFIX} \
CCACHE_HASHDIR=${CCACHE_HASHDIR} \
DISTCC_DIR=/usr/src/distcc \
- PARALLELISM=$PARALLELISM \
+ PARALLELISMFLAGS=$PARALLELISMFLAGS \
LINKER=$LINKER \
TOOLS_DIR=$TOOLS_DIR \
INSTALLER_DIR=$INSTALLER_DIR \
CDROM_DIR=$CDROM_DIR \
IMAGES_DIR=$IMAGES_DIR \
+ UCLIBC_DIR=$UCLIBC_DIR \
+ UCLIBC_SYSROOT_DIR=$UCLIBC_SYSROOT_DIR \
+ UCLIBC_TARGET=$UCLIBC_TARGET \
+ UCLIBC_CC_CORE_STATIC_DIR=${UCLIBC_CC_CORE_STATIC_DIR} \
MACHINE="$MACHINE" \
MACHINE_REAL="$MACHINE_REAL" \
- CFLAGS="$CFLAGS" \
- CXXFLAGS="$CXXFLAGS" \
+ CFLAGS="$MYCFLAGS" \
+ CXXFLAGS="$MYCXXFLAGS" \
IFS_HOST="$IFS_HOST" \
IFS_TARGET="$IFS_TARGET" \
KVER=$KVER \
unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
# Make some extra directories
- mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,$INSTALLER_DIR,cdrom,images} 2>/dev/null
+ mkdir -p $BASEDIR/build_${MACHINE}/{$TOOLS_DIR,cdrom} 2>/dev/null
mkdir -p $BASEDIR/{cache,ccache,distcc} 2>/dev/null
+ mkdir -p $BASEDIR/cache/toolchains 2>/dev/null
mkdir -p $LFS/{$TOOLS_DIR/usr,usr/src} 2>/dev/null
mkdir -p $LFS/dev/pts
mkdir -p $LFS/proc
mknod -m 666 $BASEDIR/build/dev/null c 1 3 2>/dev/null
# Make all sources and proc available under lfs build
- mount --bind /dev $LFS/dev
- mount --bind /proc $LFS/proc
- mount --bind $BASEDIR/cache $LFS/usr/src/cache
- mount --bind $BASEDIR/ccache $LFS/usr/src/ccache
- mount --bind $BASEDIR/distcc $LFS/usr/src/distcc
- mount --bind $BASEDIR/config $LFS/usr/src/config
- mount --bind $BASEDIR/doc $LFS/usr/src/doc
- mount --bind $BASEDIR/lfs $LFS/usr/src/lfs
- mount --bind $BASEDIR/log_${MACHINE} $LFS/usr/src/log_${MACHINE}
- mount --bind $BASEDIR/src $LFS/usr/src/src
- mount --bind $BASEDIR/build_${MACHINE}/$TOOLS_DIR $LFS/$TOOLS_DIR
- mount --bind $BASEDIR/build_${MACHINE}/$INSTALLER_DIR $LFS/$INSTALLER_DIR
- mount --bind $BASEDIR/build_${MACHINE}/$CDROM_DIR $LFS/$CDROM_DIR
- mount --bind $BASEDIR/build_${MACHINE}/$IMAGES_DIR $LFS/$IMAGES_DIR
+ mount --bind /dev $LFS/dev
+ mount --bind /proc $LFS/proc
+ mount --bind $BASEDIR/cache $LFS/usr/src/cache
+ mount --bind $BASEDIR/ccache $LFS/usr/src/ccache
+ mount --bind $BASEDIR/distcc $LFS/usr/src/distcc
+ mount --bind $BASEDIR/config $LFS/usr/src/config
+ mount --bind $BASEDIR/doc $LFS/usr/src/doc
+ mount --bind $BASEDIR/lfs $LFS/usr/src/lfs
+ mount --bind $BASEDIR/log_${MACHINE} $LFS/usr/src/log_${MACHINE}
+ mount --bind $BASEDIR/src $LFS/usr/src/src
+ mount --bind $BASEDIR/build_${MACHINE}/$TOOLS_DIR $LFS/$TOOLS_DIR
+ mount --bind $BASEDIR/build_${MACHINE}/$CDROM_DIR $LFS/$CDROM_DIR
# Run LFS static binary creation scripts one by one
export CCACHE_DIR=$BASEDIR/ccache
toolchain_build
else
echo "Restore from $PACKAGE"
- if [ `md5sum $BASEDIR/cache/toolchains/$PACKAGE | awk '{print $1}'` == `cat $BASEDIR/cache/toolchains/$TOOLCHAINNAME.md5 | awk '{print $1}'` ]; then
- cd $BASEDIR && tar jxf $BASEDIR/cache/toolchains/$PACKAGE
- prepareenv
- else
- exiterror "$TOOLCHAINNAME md5 did not match, check downloaded package"
- fi
+ cd $BASEDIR && tar jxf $BASEDIR/cache/toolchains/$PACKAGE
+ prepareenv
fi
fi