File:  [ELWIX - Embedded LightWeight unIX -] / elwix / build_world.sh
Revision 1.7: download - view: text, annotated - select for diffs - revision graph
Fri Jul 16 18:35:50 2021 UTC (2 years, 10 months ago) by misho
Branches: MAIN
CVS tags: elwix2_8, HEAD, ELWIX2_7
ver 2.7

    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.7 2021/07/16 18:35:50 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: 		WORLDTMP=${WORLD} 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: export CROSS_WORLD=$WORLD
  123: export CFLAGS="\$CFLAGS -I\${CROSS_WORLD}/usr/include"
  124: export LDFLAGS="\$LDFLAGS -L\${CROSS_WORLD}/lib -L\${CROSS_WORLD}/usr/lib"
  125: 
  126: _EOF
  127: 	cd -
  128: 	cp ${CENV} ${CBUILD}
  129: 	cp ${CENV} ${CGBUILD}
  130: 	cp ${CENV} ${CEXEC}
  131: 	cat >>${CBUILD} <<_EOF
  132: make \$*
  133: _EOF
  134: 	echo "+++ Ready cross script ${CBUILD}"
  135: 	cat >>${CGBUILD} <<_EOF
  136: gmake \$*
  137: _EOF
  138: 	echo "+++ Ready cross script ${CGBUILD}"
  139: 	cat >>${CEXEC} <<_EOF
  140: eval \$*
  141: _EOF
  142: 	echo "+++ Ready cross script ${CEXEC}"
  143: 	chmod +x ${CBUILD} ${CGBUILD} ${CEXEC} ${CENV}
  144: 	echo "Done."
  145: }
  146: 
  147: ### main()
  148: if [ -n "${1}" ]; then
  149: 	rm ${WORLD}/elwix.ver
  150: fi
  151: 
  152: if ! SnitVer ${WORLD}/elwix.ver; then
  153: 	if [ -z "$1" ]; then
  154: 		clean_world
  155: 	fi
  156: #	build_toolchain $1
  157: 	build_world $1
  158: 	install_world
  159: 
  160: 	build_cross
  161: else
  162: 	echo "Skipped ELWIX World build ..."
  163: fi
  164: 
  165: echo "+++ Complete build ELWIX World"

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