File:  [ELWIX - Embedded LightWeight unIX -] / elwix / build_world.sh
Revision 1.5: download - view: text, annotated - select for diffs - revision graph
Mon Feb 13 16:52:46 2017 UTC (7 years, 3 months ago) by misho
Branches: MAIN
CVS tags: elwix2_6, HEAD, ELWIX2_5
ELWIX 2.5

    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.5 2017/02/13 16:52:46 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 ... $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 ... $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: 	echo "+++ Completed ELWIX World ... $WORLD"
  100: }
  101: 
  102: build_cross()
  103: {
  104: 	echo "+++ Build ELWIX Cross script ..."
  105: 	cd $BSDSRC
  106: 	cat >${CENV} <<_EOF
  107: #!/bin/sh
  108: #
  109: # Create auto cross build env script
  110: #
  111: export \\
  112: _EOF
  113: 	env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
  114: 		buildenvvars >> ${CENV}
  115: 	cat >>${CENV} <<_EOF
  116: PATH=$WORLD/elwix/pkg/bin:$WORLD/elwix/pkg/sbin:/elwix/pkg/bin:/elwix/pkg/sbin:$PKG/bin:$PKG/sbin:\$PATH:$PATH
  117: 
  118: if [ -n "\${REPLACE_MAKEOBJDIRPREFIX}" ]; then
  119: 	MAKEOBJDIRPREFIX="\${REPLACE_MAKEOBJDIRPREFIX}"
  120: fi
  121: 
  122: _EOF
  123: 	cd -
  124: 	cp ${CENV} ${CBUILD}
  125: 	cp ${CENV} ${CGBUILD}
  126: 	cp ${CENV} ${CEXEC}
  127: 	cat >>${CBUILD} <<_EOF
  128: make \$*
  129: _EOF
  130: 	echo "+++ Ready cross script ${CBUILD}"
  131: 	cat >>${CGBUILD} <<_EOF
  132: gmake \$*
  133: _EOF
  134: 	echo "+++ Ready cross script ${CGBUILD}"
  135: 	cat >>${CEXEC} <<_EOF
  136: eval \$*
  137: _EOF
  138: 	echo "+++ Ready cross script ${CEXEC}"
  139: 	chmod +x ${CBUILD} ${CGBUILD} ${CEXEC} ${CENV}
  140: 	echo "Done."
  141: }
  142: 
  143: ### main()
  144: if ! SnitVer ${WORLD}/elwix.ver; then
  145: 	if [ -z "$1" ]; then
  146: 		clean_world
  147: 	fi
  148: #	build_toolchain $1
  149: 	build_world $1
  150: 	install_world
  151: 
  152: 	build_cross
  153: else
  154: 	echo "Skipped ELWIX World build ..."
  155: fi
  156: 
  157: echo "+++ Complete build ELWIX World"

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