Annotation of elwix/build_world.sh, revision 1.7
1.1 misho 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: #
1.7 ! misho 8: # $Id: build_world.sh,v 1.6.2.1 2021/03/17 17:17:09 misho Exp $
1.1 misho 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:
1.4 misho 40: # Set TARGET_CPUTYPE only for world compiling. Don't use this in kernel build!
41: X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}"
42:
1.1 misho 43: clean_world()
44: {
1.5 misho 45: echo "+++ Clean ELWIX World ... $WORLD"
1.1 misho 46: rm -rf $WORLD
47: mkdir -p $WORLD
1.2 misho 48:
49: rm -f ${CBUILD} ${CGBUILD} ${CENV}
1.1 misho 50: }
51:
1.3 misho 52: build_toolchain()
53: {
54: echo "+++ Build ELWIX Toolchain ..."
55: cd $BSDSRC
56: env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
1.4 misho 57: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
58: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} toolchain
1.3 misho 59: if [ $? -eq 0 ]; then
60: cd -
61: else
62: exit 1
63: fi
64: }
65:
1.1 misho 66: build_world()
67: {
68: echo "+++ Build ELWIX World ..."
69: cd $BSDSRC
1.3 misho 70: if [ -z "$1" ]; then
71: env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
1.4 misho 72: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
73: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} buildworld
1.3 misho 74: else
75: env MAKEOBJDIRPREFIX=${BSDOBJ} NO_CLEAN="YES" make ${PARALLEL_BUILD} \
1.4 misho 76: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
77: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} buildworld
1.3 misho 78: fi
1.2 misho 79: if [ $? -eq 0 ]; then
80: cd -
81: else
82: exit 1
83: fi
1.1 misho 84: }
85:
86: install_world()
87: {
1.5 misho 88: echo "+++ Install ELWIX World ... $WORLD"
1.1 misho 89: cd $BSDSRC
1.3 misho 90: env MAKEOBJDIRPREFIX=${BSDOBJ} make \
1.4 misho 91: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
92: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} installworld
1.1 misho 93: cd -
94:
1.2 misho 95: if [ $? -eq 0 ]; then
96: echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix.ver
97: fi
1.5 misho 98:
99: echo "+++ Completed ELWIX World ... $WORLD"
1.2 misho 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
1.4 misho 113: env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \
1.7 ! misho 114: WORLDTMP=${WORLD} buildenvvars >> ${CENV}
1.2 misho 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
1.4 misho 117:
118: if [ -n "\${REPLACE_MAKEOBJDIRPREFIX}" ]; then
119: MAKEOBJDIRPREFIX="\${REPLACE_MAKEOBJDIRPREFIX}"
120: fi
121:
1.7 ! misho 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:
1.2 misho 126: _EOF
127: cd -
128: cp ${CENV} ${CBUILD}
129: cp ${CENV} ${CGBUILD}
130: cp ${CENV} ${CEXEC}
131: cat >>${CBUILD} <<_EOF
132: make \$*
133: _EOF
1.5 misho 134: echo "+++ Ready cross script ${CBUILD}"
1.2 misho 135: cat >>${CGBUILD} <<_EOF
136: gmake \$*
137: _EOF
1.5 misho 138: echo "+++ Ready cross script ${CGBUILD}"
1.2 misho 139: cat >>${CEXEC} <<_EOF
140: eval \$*
141: _EOF
1.5 misho 142: echo "+++ Ready cross script ${CEXEC}"
1.2 misho 143: chmod +x ${CBUILD} ${CGBUILD} ${CEXEC} ${CENV}
144: echo "Done."
1.1 misho 145: }
146:
147: ### main()
1.6 misho 148: if [ -n "${1}" ]; then
149: rm ${WORLD}/elwix.ver
150: fi
151:
1.1 misho 152: if ! SnitVer ${WORLD}/elwix.ver; then
1.3 misho 153: if [ -z "$1" ]; then
154: clean_world
155: fi
156: # build_toolchain $1
157: build_world $1
1.1 misho 158: install_world
1.2 misho 159:
160: build_cross
1.1 misho 161: else
162: echo "Skipped ELWIX World build ..."
163: fi
164:
165: echo "+++ Complete build ELWIX World"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>