#!/bin/sh
#
# ELWIX build script for tools
#
# (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
# by Michael Pounov <misho@elwix.org>
#
# $Id: build_tools.sh,v 1.7.2.1 2014/09/17 15:33:21 misho Exp $
#
[ -r ./config/rc.elwix ] && . ./config/rc.elwix
if [ X"${ELWIX_IS_CONFIGURED}" != X"YES" ]; then
echo
echo "ELWIX project is not configured !?!"
echo
exit 1
fi
V=${VERSION}
#[ -r ${CENV} ] && . ${CENV}
unset INSTALL
unset VERSION
VERSION="$V"
# Set TARGET_CPUTYPE only for world compiling. Don't use this in kernel build!
X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}"
if [ ! -d $BSDSRC ]; then
echo
echo "ELWIX project is not configured - missing BSD sources !?!"
echo
exit 1
fi
if [ ! -d $DEST ]; then
echo
echo "ELWIX project is not configured - missing Dest directory !?!"
echo
exit 1
fi
clean_tools()
{
echo "+++ Clean ELWIX FreeBSD tools ..."
rm -rf ${WORLD}/usr/local
install -d ${WORLD}/usr/local
install -d ${WORLD}/usr/local/bin
install -d ${WORLD}/usr/local/include
install -d ${WORLD}/usr/local/lib
install -d ${WORLD}/usr/local/libdata
install -d ${WORLD}/usr/local/sbin
}
clean_bootstrap()
{
echo "+++ Clean ELWIX pkgsrc bootstrap tools ..."
rm -Rf ${WORLD}/usr/pkgsrc/bootstrap/work
rm -f /elwix ${WORLD}/usr/pkgsrc
rm -Rf ${WORLD}/elwix
install -d ${WORLD}/elwix
ln -sf ${WORLD}/elwix /elwix
ln -sf ${PKGSRC} ${WORLD}/usr/pkgsrc
install -d ${PKGDIR}
install -d ${PKGDIR}/db
install -d ${PKGDIR}/etc
}
compile_deps()
{
echo "+++ Compile ELWIX programs bootstrap tools ..."
if [ -d tools -a -f tools/Makefile ]; then
cd tools
make cleandepend
make clean
make obj
make
make install
cd -
fi
}
compile_bootstrap()
{
echo "+++ Compile ELWIX pkgsrc bootstrap tools ..."
if [ ! -d ${WORLD}/usr/pkgsrc/bootstrap/work ]; then
cd ${WORLD}/usr/pkgsrc/bootstrap
./cleanup --prefix /elwix/pkg --pkgdbdir /elwix/pkg/db
./bootstrap --prefix /elwix/pkg --pkgdbdir /elwix/pkg/db
cd -
else
echo " Skip bootstrap pkgsrc - already inited pkgsrc"
fi
cat >>/elwix/pkg/etc/mk.conf << _EOF
.if defined(USE_CROSS_COMPILE) && !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
USE_DESTDIR= yes
DEPENDS_TARGET= package-install
TOOLDIR= ${CROSSTOOLDIR}
CROSS_DESTDIR= ${WORLD}
TARGET= ${TARGET}
TARGET_ARCH= ${TARGET_ARCH}
MACHINE_PLATFORM= FreeBSD-${PLATFORM}-${TARGET_ARCH}
MACHINE_GNU_PLATFORM= ${TARGET_ARCH}-elwix-freebsd
PKGSRC_COMPILER= gcc
USE_PKGSRC_GCC= no
USE_NATIVE_GCC= yes
.endif # end cross-compilation settings
_EOF
}
compile_fbsdtools()
{
echo "+++ Compile ELWIX FreeBSD tools ..."
if [ "$(uname -m)" != ${TARGET} ]; then
BSDSTATDIR="${BSDOBJ}/${TARGET}.${TARGET_ARCH}${BSDSRC}/lib/libbsdstat"
else
BSDSTATDIR="${BSDOBJ}${BSDSRC}/lib/libbsdstat"
fi
cd $CROSS_FT_VIMAGE
${CBUILD} DESTDIR=${WORLD} clean
${CBUILD} DESTDIR=${WORLD}
${CBUILD} DESTDIR=${WORLD} install
cd -
cd $CROSS_FT_ATH
${CBUILD} DESTDIR=${WORLD} clean
${CBUILD} DESTDIR=${WORLD} LIBBSDSTATDIR="${BSDSTATDIR}"
${CBUILD} DESTDIR=${WORLD} install
cd -
cd $CROSS_FT_NET80211/wlanstats
${CBUILD} DESTDIR=${WORLD} clean
${CBUILD} DESTDIR=${WORLD} LIBBSDSTATDIR="${BSDSTATDIR}"
${CBUILD} DESTDIR=${WORLD} install
cd -
cd $CROSS_FT_IPW
${CBUILD} DESTDIR=${WORLD} clean
${CBUILD} DESTDIR=${WORLD}
${CBUILD} DESTDIR=${WORLD}/usr/local/bin install
cd -
cd $CROSS_FT_IWI
${CBUILD} DESTDIR=${WORLD} clean
${CBUILD} DESTDIR=${WORLD}
${CBUILD} DESTDIR=${WORLD}/usr/local/bin install
cd -
cd $CROSS_FT_MWL
${CBUILD} DESTDIR=${WORLD} clean
${CBUILD} DESTDIR=${WORLD} LIBBSDSTATDIR="${BSDSTATDIR}"
${CBUILD} DESTDIR=${WORLD} install
cd -
}
compile_files()
{
cd files
${CBUILD} DESTDIR=${WORLD} clean
${CBUILD} DESTDIR=${WORLD} obj
${CBUILD} DESTDIR=${WORLD} depend
${CBUILD} DESTDIR=${WORLD}
${CBUILD} DESTDIR=${WORLD} install
cd -
}
compile_tools()
{
echo "+++ Compile ELWIX Cross ..."
# cd $CROSS_AXL
# ${AXL_CFG}
# ${CBUILD} clean
# ${CBUILD}
# ${CBUILD} install
# cd -
cd $CROSS_ELWIX
${ELWIX_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITSCHED
${AITSCHED_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITIO
${AITIO_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITCFG
${AITCFG_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITRPC
${AITRPC_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITWWW
${AITWWW_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITPELCO
${AITPELCO_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITSYNC
${AITSYNC_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITCLI
${AITCLI_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_AITMQTT
${AITMQTT_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_EMBEDTOOLS
${EMBEDTOOLS_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_ANSH
${ANSH_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_MQTT
${MQTT_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_WIFINATOR
${WIFINATOR_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
cd $CROSS_TFTPD
${TFTPD_CFG}
${CBUILD} clean
${CBUILD}
${CBUILD} install
cd -
}
install_tools()
{
LIBS="${ROMFS_USR2}/lib"
LIBEXEC="${ROMFS_USR2}/libexec"
BIN="${ROMFS_USR2}/bin"
SBIN="${ROMFS_USR2}/sbin"
ETC="${ROMFS_USR2}/etc"
echo "+++ Install ELWIX RomFS secondary firmware ..."
StripFiles \*.so\* ${PKG}/lib
InstallFiles \*.so\* ${PKG}/lib $LIBS
StripFiles \* ${PKG}/libexec
InstallFiles \* ${PKG}/libexec $LIBEXEC
StripFiles \* ${PKG}/bin
InstallFiles \* ${PKG}/bin $BIN
StripFiles \* ${PKG}/sbin
InstallFiles \* ${PKG}/sbin $SBIN
InstallFiles \* ${PKG}/etc $ETC
chown -R root:wheel $SBIN $BIN $LIBDATA $LIBEXEC $LIBS
}
build_tools()
{
echo "+++ Build ELWIX core firmware image ..."
cd ${WORLD}/usr/local
pax -w -z -v -f${REL}/${LOCALFS_IMG} .
cd -
}
### main()
compile_deps || exit 1
#if ! SnitVer ${WORLD}/elwix/elwix.ver; then
# clean_bootstrap
# compile_bootstrap || exit 1
#
# echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix/elwix.ver
#else
# echo "Skipped ELWIX bootstrap pkgsrc tools build ..."
#fi
if ! SnitVer ${WORLD}/usr/local/elwix.ver; then
clean_tools || exit 1
compile_fbsdtools || exit 1
compile_files || exit 1
compile_tools || exit 1
build_tools || exit 1
echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/usr/local/elwix.ver
else
echo "Skipped ELWIX tools build ..."
fi
echo "+++ Complete build ELWIX tools"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>