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.2 2014/01/15 08:44:56 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: clean_world()
41: {
42: echo "+++ Clean ELWIX World ..."
43: rm -rf $WORLD
44: mkdir -p $WORLD
45:
46: rm -f ${CBUILD} ${CGBUILD} ${CENV}
47: }
48:
49: build_toolchain()
50: {
51: echo "+++ Build ELWIX Toolchain ..."
52: cd $BSDSRC
53: env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
54: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
55: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} toolchain
56: if [ $? -eq 0 ]; then
57: cd -
58: else
59: exit 1
60: fi
61: }
62:
63: build_world()
64: {
65: echo "+++ Build ELWIX World ..."
66: cd $BSDSRC
67: if [ -z "$1" ]; then
68: env MAKEOBJDIRPREFIX=${BSDOBJ} make ${PARALLEL_BUILD} \
69: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
70: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} buildworld
71: else
72: env MAKEOBJDIRPREFIX=${BSDOBJ} NO_CLEAN="YES" make ${PARALLEL_BUILD} \
73: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
74: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} buildworld
75: fi
76: if [ $? -eq 0 ]; then
77: cd -
78: else
79: exit 1
80: fi
81: }
82:
83: install_world()
84: {
85: echo "+++ Install ELWIX World ..."
86: cd $BSDSRC
87: env MAKEOBJDIRPREFIX=${BSDOBJ} make \
88: TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
89: SRCCONF=${SRCCONF} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} installworld
90: cd -
91:
92: if [ $? -eq 0 ]; then
93: echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix.ver
94: fi
95: }
96:
97: build_cross()
98: {
99: echo "+++ Build ELWIX Cross script ..."
100: cd $BSDSRC
101: cat >${CENV} <<_EOF
102: #!/bin/sh
103: #
104: # Create auto cross build env script
105: #
106: export \\
107: _EOF
108: env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
109: buildenvvars >> ${CENV}
110: cat >>${CENV} <<_EOF
111: PATH=$WORLD/elwix/pkg/bin:$WORLD/elwix/pkg/sbin:/elwix/pkg/bin:/elwix/pkg/sbin:$PKG/bin:$PKG/sbin:\$PATH:$PATH
112: _EOF
113: cd -
114: cp ${CENV} ${CBUILD}
115: cp ${CENV} ${CGBUILD}
116: cp ${CENV} ${CEXEC}
117: cat >>${CBUILD} <<_EOF
118: make \$*
119: _EOF
120: cat >>${CGBUILD} <<_EOF
121: gmake \$*
122: _EOF
123: cat >>${CEXEC} <<_EOF
124: eval \$*
125: _EOF
126: chmod +x ${CBUILD} ${CGBUILD} ${CEXEC} ${CENV}
127: echo "Done."
128: }
129:
130: ### main()
131: if ! SnitVer ${WORLD}/elwix.ver; then
132: if [ -z "$1" ]; then
133: clean_world
134: fi
135: # build_toolchain $1
136: build_world $1
137: install_world
138:
139: build_cross
140: else
141: echo "Skipped ELWIX World build ..."
142: fi
143:
144: echo "+++ Complete build ELWIX World"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>