File:  [ELWIX - Embedded LightWeight unIX -] / elwix / build_world.sh
Revision 1.4.2.1: download - view: text, annotated - select for diffs - revision graph
Tue Nov 15 15:02:25 2016 UTC (7 years, 7 months ago) by misho
Branches: elwix2_3
Diff to: branchpoint 1.4: preferred, unified
improve verbosity

    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.4.2.1 2016/11/15 15:02:25 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: 
  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: 
  116: if [ -n "\${REPLACE_MAKEOBJDIRPREFIX}" ]; then
  117: 	MAKEOBJDIRPREFIX="\${REPLACE_MAKEOBJDIRPREFIX}"
  118: fi
  119: 
  120: _EOF
  121: 	cd -
  122: 	cp ${CENV} ${CBUILD}
  123: 	cp ${CENV} ${CGBUILD}
  124: 	cp ${CENV} ${CEXEC}
  125: 	cat >>${CBUILD} <<_EOF
  126: make \$*
  127: _EOF
  128: 	cat >>${CGBUILD} <<_EOF
  129: gmake \$*
  130: _EOF
  131: 	cat >>${CEXEC} <<_EOF
  132: eval \$*
  133: _EOF
  134: 	chmod +x ${CBUILD} ${CGBUILD} ${CEXEC} ${CENV}
  135: 	echo "Done."
  136: }
  137: 
  138: ### main()
  139: if ! SnitVer ${WORLD}/elwix.ver; then
  140: 	if [ -z "$1" ]; then
  141: 		clean_world
  142: 	fi
  143: #	build_toolchain $1
  144: 	build_world $1
  145: 	install_world
  146: 
  147: 	build_cross
  148: else
  149: 	echo "Skipped ELWIX World build ..."
  150: fi
  151: 
  152: echo "+++ Complete build ELWIX World"

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