File:  [ELWIX - Embedded LightWeight unIX -] / elwix / build_world.sh
Revision 1.3: download - view: text, annotated - select for diffs - revision graph
Sun Jan 5 23:14:22 2014 UTC (10 years, 4 months ago) by misho
Branches: MAIN
CVS tags: elwix2_2, HEAD, ELWIX2_1
version 2.1

#!/bin/sh
#
# ELWIX build script for world
#
# (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
#    by Michael Pounov <misho@elwix.org>
#
# $Id: build_world.sh,v 1.3 2014/01/05 23:14:22 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

if [ ! -d $BSDSRC ]; then
	echo
	echo "ELWIX project is not configured - missing BSD sources !?!"
	echo
	exit 1
fi

if [ ! -d $ADIR ]; then
	echo
	echo "ELWIX project is not configured - missing TargetArch directory !?!"
	echo
	exit 1
fi

if [ "${USER}" != "root" ]; then
	echo
	echo "ELWIX project is not configured - BSD kernel must compile under root !?!"
	echo
	exit 1
fi

clean_world()
{
	echo "+++ Clean ELWIX World ..."
	rm -rf $WORLD
	mkdir -p $WORLD

	rm -f ${CBUILD} ${CGBUILD} ${CENV}
}

build_toolchain()
{
	echo "+++ Build ELWIX Toolchain ..."
	cd $BSDSRC
	env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
		TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
		MAKEOBJDIRPREFIX=${BSDOBJ} SRCCONF=${SRCCONF} \
		DESTDIR=${WORLD} toolchain
	if [ $? -eq 0 ]; then
		cd -
	else
		exit 1
	fi
}

build_world()
{
	echo "+++ Build ELWIX World ..."
	cd $BSDSRC
	if [ -z "$1" ]; then
		env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
			TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
			MAKEOBJDIRPREFIX=${BSDOBJ} SRCCONF=${SRCCONF} buildworld
	else
		env MAKEOBJDIRPREFIX=${BSDOBJ} NO_CLEAN="YES" make ${PARALLEL_BUILD} \
			TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
			MAKEOBJDIRPREFIX=${BSDOBJ} SRCCONF=${SRCCONF} buildworld
	fi
	if [ $? -eq 0 ]; then
		cd -
	else
		exit 1
	fi
}

install_world()
{
	echo "+++ Install ELWIX World ..."
	cd $BSDSRC
	env MAKEOBJDIRPREFIX=${BSDOBJ} make \
		TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
		MAKEOBJDIRPREFIX=${BSDOBJ} SRCCONF=${SRCCONF} DESTDIR=${WORLD} installworld
	cd -

	if [ $? -eq 0 ]; then
		echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix.ver
	fi
}

build_cross()
{
	echo "+++ Build ELWIX Cross script ..."
	cd $BSDSRC
	cat >${CENV} <<_EOF
#!/bin/sh
#
# Create auto cross build env script
#
export \\
_EOF
	make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
		MAKEOBJDIRPREFIX=${BSDOBJ} buildenvvars >> ${CENV}
	cat >>${CENV} <<_EOF
PATH=$WORLD/elwix/pkg/bin:$WORLD/elwix/pkg/sbin:/elwix/pkg/bin:/elwix/pkg/sbin:$PKG/bin:$PKG/sbin:\$PATH:$PATH
_EOF
	cd -
	cp ${CENV} ${CBUILD}
	cp ${CENV} ${CGBUILD}
	cp ${CENV} ${CEXEC}
	cat >>${CBUILD} <<_EOF
make \$*
_EOF
	cat >>${CGBUILD} <<_EOF
gmake \$*
_EOF
	cat >>${CEXEC} <<_EOF
eval \$*
_EOF
	chmod +x ${CBUILD} ${CGBUILD} ${CEXEC} ${CENV}
	echo "Done."
}

### main()
if ! SnitVer ${WORLD}/elwix.ver; then
	if [ -z "$1" ]; then
		clean_world
	fi
#	build_toolchain $1
	build_world $1
	install_world

	build_cross
else
	echo "Skipped ELWIX World build ..."
fi

echo "+++ Complete build ELWIX World"

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>