File:  [ELWIX - Embedded LightWeight unIX -] / elwix / build_world.sh
Revision 1.3.2.4: download - view: text, annotated - select for diffs - revision graph
Wed Jan 15 09:15:43 2014 UTC (10 years, 8 months ago) by misho
Branches: elwix2_2
Diff to: branchpoint 1.3: preferred, unified
fix line

    1: #!/bin/sh
    2: #
    3: # ELWIX build script for world
    4: #
    5: # (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
    6: #    by Michael Pounov <misho@elwix.org>
    7: #
    8: # $Id: build_world.sh,v 1.3.2.4 2014/01/15 09:15:43 misho Exp $
    9: #
   10: 
   11: [ -r ./config/rc.elwix ] && . ./config/rc.elwix
   12: if [ X"${ELWIX_IS_CONFIGURED}" != X"YES" ]; then
   13: 	echo
   14: 	echo "ELWIX project is not configured !?!"
   15: 	echo
   16: 	exit 1
   17: fi
   18: 
   19: if [ ! -d $BSDSRC ]; then
   20: 	echo
   21: 	echo "ELWIX project is not configured - missing BSD sources !?!"
   22: 	echo
   23: 	exit 1
   24: fi
   25: 
   26: if [ ! -d $ADIR ]; then
   27: 	echo
   28: 	echo "ELWIX project is not configured - missing TargetArch directory !?!"
   29: 	echo
   30: 	exit 1
   31: fi
   32: 
   33: if [ "${USER}" != "root" ]; then
   34: 	echo
   35: 	echo "ELWIX project is not configured - BSD kernel must compile under root !?!"
   36: 	echo
   37: 	exit 1
   38: fi
   39: 
   40: # Set TARGET_CPUTYPE only for world compiling. Don't use this in kernel build!
   41: X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}"
   42: 
   43: clean_world()
   44: {
   45: 	echo "+++ Clean ELWIX World ..."
   46: 	rm -rf $WORLD
   47: 	mkdir -p $WORLD
   48: 
   49: 	rm -f ${CBUILD} ${CGBUILD} ${CENV}
   50: }
   51: 
   52: build_toolchain()
   53: {
   54: 	echo "+++ Build ELWIX Toolchain ..."
   55: 	cd $BSDSRC
   56: 	env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
   57: 		TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
   58: 		SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} toolchain
   59: 	if [ $? -eq 0 ]; then
   60: 		cd -
   61: 	else
   62: 		exit 1
   63: 	fi
   64: }
   65: 
   66: build_world()
   67: {
   68: 	echo "+++ Build ELWIX World ..."
   69: 	cd $BSDSRC
   70: 	if [ -z "$1" ]; then
   71: 		env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
   72: 			TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
   73: 			SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} buildworld
   74: 	else
   75: 		env MAKEOBJDIRPREFIX=${BSDOBJ} NO_CLEAN="YES" make ${PARALLEL_BUILD} \
   76: 			TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
   77: 			SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} buildworld
   78: 	fi
   79: 	if [ $? -eq 0 ]; then
   80: 		cd -
   81: 	else
   82: 		exit 1
   83: 	fi
   84: }
   85: 
   86: install_world()
   87: {
   88: 	echo "+++ Install ELWIX World ..."
   89: 	cd $BSDSRC
   90: 	env MAKEOBJDIRPREFIX=${BSDOBJ} make \
   91: 		TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
   92: 		SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} installworld
   93: 	cd -
   94: 
   95: 	if [ $? -eq 0 ]; then
   96: 		echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix.ver
   97: 	fi
   98: }
   99: 
  100: build_cross()
  101: {
  102: 	echo "+++ Build ELWIX Cross script ..."
  103: 	cd $BSDSRC
  104: 	cat >${CENV} <<_EOF
  105: #!/bin/sh
  106: #
  107: # Create auto cross build env script
  108: #
  109: export \\
  110: _EOF
  111: 	env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
  112: 		buildenvvars >> ${CENV}
  113: 	cat >>${CENV} <<_EOF
  114: PATH=$WORLD/elwix/pkg/bin:$WORLD/elwix/pkg/sbin:/elwix/pkg/bin:/elwix/pkg/sbin:$PKG/bin:$PKG/sbin:\$PATH:$PATH
  115: _EOF
  116: 	cd -
  117: 	cp ${CENV} ${CBUILD}
  118: 	cp ${CENV} ${CGBUILD}
  119: 	cp ${CENV} ${CEXEC}
  120: 	cat >>${CBUILD} <<_EOF
  121: make \$*
  122: _EOF
  123: 	cat >>${CGBUILD} <<_EOF
  124: gmake \$*
  125: _EOF
  126: 	cat >>${CEXEC} <<_EOF
  127: eval \$*
  128: _EOF
  129: 	chmod +x ${CBUILD} ${CGBUILD} ${CEXEC} ${CENV}
  130: 	echo "Done."
  131: }
  132: 
  133: ### main()
  134: if ! SnitVer ${WORLD}/elwix.ver; then
  135: 	if [ -z "$1" ]; then
  136: 		clean_world
  137: 	fi
  138: #	build_toolchain $1
  139: 	build_world $1
  140: 	install_world
  141: 
  142: 	build_cross
  143: else
  144: 	echo "Skipped ELWIX World build ..."
  145: fi
  146: 
  147: echo "+++ Complete build ELWIX World"

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