1: #!/bin/sh
2: #
3: # ELWIX build script for tools
4: #
5: # (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
6: # by Michael Pounov <misho@elwix.org>
7: #
8: # $Id: build_tools.sh,v 1.8.2.3 2017/10/08 22:03:32 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: V=${VERSION}
19: #[ -r ${CENV} ] && . ${CENV}
20: unset INSTALL
21: unset VERSION
22: VERSION="$V"
23:
24: # Set TARGET_CPUTYPE only for world compiling. Don't use this in kernel build!
25: X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}"
26:
27: if [ ! -d $BSDSRC ]; then
28: echo
29: echo "ELWIX project is not configured - missing BSD sources !?!"
30: echo
31: exit 1
32: fi
33:
34: if [ ! -d $DEST ]; then
35: echo
36: echo "ELWIX project is not configured - missing Dest directory !?!"
37: echo
38: exit 1
39: fi
40:
41: clean_tools()
42: {
43: echo "+++ Clean ELWIX FreeBSD tools ... ${WORLD}/usr/local"
44:
45: rm -rf ${WORLD}/usr/local
46: install -d ${WORLD}/usr/local
47: install -d ${WORLD}/usr/local/bin
48: install -d ${WORLD}/usr/local/include
49: install -d ${WORLD}/usr/local/lib
50: install -d ${WORLD}/usr/local/libdata
51: install -d ${WORLD}/usr/local/sbin
52:
53: }
54:
55: clean_bootstrap()
56: {
57: echo "+++ Clean ELWIX pkgsrc bootstrap tools ..."
58:
59: rm -Rf ${WORLD}/usr/pkgsrc/bootstrap/work
60: rm -f /elwix ${WORLD}/usr/pkgsrc
61: rm -Rf ${WORLD}/elwix
62: install -d ${WORLD}/elwix
63: ln -sf ${WORLD}/elwix /elwix
64: ln -sf ${PKGSRC} ${WORLD}/usr/pkgsrc
65:
66: install -d ${PKGDIR}
67: install -d ${PKGDIR}/db
68: install -d ${PKGDIR}/etc
69: }
70:
71: compile_deps()
72: {
73: echo "+++ Compile ELWIX programs bootstrap tools ..."
74: if [ -d tools -a -f tools/Makefile ]; then
75: cd tools
76: make cleandepend
77: make clean
78: make obj
79: make
80: make install
81: cd -
82: fi
83: }
84:
85: compile_bootstrap()
86: {
87: echo "+++ Compile ELWIX pkgsrc bootstrap tools ..."
88: if [ ! -d ${WORLD}/usr/pkgsrc/bootstrap/work ]; then
89: cd ${WORLD}/usr/pkgsrc/bootstrap
90: ./cleanup --prefix /elwix/pkg --pkgdbdir /elwix/pkg/db
91: ./bootstrap --prefix /elwix/pkg --pkgdbdir /elwix/pkg/db
92: cd -
93: else
94: echo " Skip bootstrap pkgsrc - already inited pkgsrc"
95: fi
96:
97: cat >>/elwix/pkg/etc/mk.conf << _EOF
98:
99: .if defined(USE_CROSS_COMPILE) && !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
100: USE_DESTDIR= yes
101: DEPENDS_TARGET= package-install
102:
103: TOOLDIR= ${CROSSTOOLDIR}
104: CROSS_DESTDIR= ${WORLD}
105:
106: TARGET= ${TARGET}
107: TARGET_ARCH= ${TARGET_ARCH}
108: MACHINE_PLATFORM= FreeBSD-${PLATFORM}-${TARGET_ARCH}
109: MACHINE_GNU_PLATFORM= ${TARGET_ARCH}-elwix-freebsd
110:
111: PKGSRC_COMPILER= gcc
112: USE_PKGSRC_GCC= no
113: USE_NATIVE_GCC= yes
114:
115: .endif # end cross-compilation settings
116: _EOF
117: }
118:
119: compile_fbsdtools()
120: {
121: echo "+++ Compile ELWIX FreeBSD tools ..."
122:
123: if [ "$(uname -m)" != ${TARGET} ]; then
124: BSDSTATDIR="${BSDOBJ}/${TARGET}.${TARGET_ARCH}${BSDSRC}/lib/libbsdstat"
125: else
126: BSDSTATDIR="${BSDOBJ}${BSDSRC}/lib/libbsdstat"
127: fi
128:
129: # cd $CROSS_FT_VIMAGE
130: # ${CBUILD} DESTDIR=${WORLD} clean || exit 1
131: # ${CBUILD} DESTDIR=${WORLD} || exit 1
132: # ${CBUILD} DESTDIR=${WORLD} install || exit 1
133: # cd -
134:
135: cd $CROSS_FT_ATH
136: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
137: cp ${CROSSTOOLDIR}/usr/include/private/bsdstat/bsdstat.h ${BSDTOOLS}/ath/common || exit 1
138: ${CBUILD} DESTDIR=${WORLD} LIBBSDSTATDIR="${BSDSTATDIR}" || exit 1
139: ${CBUILD} DESTDIR=${WORLD} install || exit 1
140: cd -
141:
142: cd $CROSS_FT_CXGB
143: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
144: ${CBUILD} DESTDIR=${WORLD} || exit 1
145: ${CBUILD} DESTDIR=${WORLD}/usr/local/bin BINDIR="" install || exit 1
146: cd -
147:
148: cd $CROSS_FT_IFINFO
149: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
150: ${CBUILD} DESTDIR=${WORLD} || exit 1
151: ${CBUILD} DESTDIR=${WORLD}/usr/local/bin BINDIR="" install || exit 1
152: cd -
153:
154: cd $CROSS_FT_MCTEST
155: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
156: ${CBUILD} DESTDIR=${WORLD} MK_MAN="no" || exit 1
157: ${CBUILD} DESTDIR=${WORLD}/usr/local/bin MK_MAN="no" BINDIR="" install || exit 1
158: cd -
159:
160: # cd $CROSS_FT_NETMAP
161: # ${CBUILD} DESTDIR=${WORLD} clean || exit 1
162: # ${CBUILD} DESTDIR=${WORLD} || exit 1
163: # ${CBUILD} DESTDIR=${WORLD}/usr/local/bin BINDIR="" install || exit 1
164: # cd -
165:
166: cd $CROSS_FT_NETBLAST
167: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
168: ${CBUILD} DESTDIR=${WORLD} || exit 1
169: ${CBUILD} DESTDIR=${WORLD}/usr/local/bin BINDIR="" install || exit 1
170: cd -
171:
172: cd $CROSS_FT_NETRCV
173: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
174: ${CBUILD} DESTDIR=${WORLD} || exit 1
175: ${CBUILD} DESTDIR=${WORLD}/usr/local/bin BINDIR="" install || exit 1
176: cd -
177:
178: cd $CROSS_FT_NETSND
179: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
180: ${CBUILD} DESTDIR=${WORLD} || exit 1
181: ${CBUILD} DESTDIR=${WORLD}/usr/local/bin BINDIR="" install || exit 1
182: cd -
183: }
184:
185: compile_files()
186: {
187: cd files
188: ${CBUILD} DESTDIR=${WORLD} clean || exit 1
189: ${CBUILD} DESTDIR=${WORLD} obj || exit 1
190: ${CBUILD} DESTDIR=${WORLD} depend || exit 1
191: ${CBUILD} DESTDIR=${WORLD} || exit 1
192: ${CBUILD} DESTDIR=${WORLD} install || exit 1
193: cd -
194: }
195:
196: compile_tools()
197: {
198: echo "+++ Compile ELWIX Cross ..."
199:
200: cd $CROSS_ELWIX
201: ${CEXEC} INSTALL="/usr/bin/install" ${ELWIX_CFG}
202: ${CBUILD} clean
203: ${CBUILD}
204: ${CBUILD} install
205: cd -
206:
207: cd $CROSS_AITSCHED
208: ${CEXEC} INSTALL="/usr/bin/install" ${AITSCHED_CFG}
209: ${CBUILD} clean
210: ${CBUILD}
211: ${CBUILD} install
212: cd -
213:
214: cd $CROSS_AITIO
215: ${CEXEC} INSTALL="/usr/bin/install" ${AITIO_CFG}
216: ${CBUILD} clean
217: ${CBUILD}
218: ${CBUILD} install
219: cd -
220:
221: cd $CROSS_AITCFG
222: ${CEXEC} INSTALL="/usr/bin/install" ${AITCFG_CFG}
223: ${CBUILD} clean
224: ${CBUILD}
225: ${CBUILD} install
226: cd -
227:
228: cd $CROSS_AITRPC
229: ${CEXEC} INSTALL="/usr/bin/install" ${AITRPC_CFG}
230: ${CBUILD} clean
231: ${CBUILD}
232: ${CBUILD} install
233: cd -
234:
235: cd $CROSS_AITWWW
236: ${CEXEC} INSTALL="/usr/bin/install" ${AITWWW_CFG}
237: ${CBUILD} clean
238: ${CBUILD}
239: ${CBUILD} install
240: cd -
241:
242: cd $CROSS_AITPELCO
243: ${CEXEC} INSTALL="/usr/bin/install" ${AITPELCO_CFG}
244: ${CBUILD} clean
245: ${CBUILD}
246: ${CBUILD} install
247: cd -
248:
249: cd $CROSS_AITSYNC
250: ${CEXEC} INSTALL="/usr/bin/install" ${AITSYNC_CFG}
251: ${CBUILD} clean
252: ${CBUILD}
253: ${CBUILD} install
254: cd -
255:
256: cd $CROSS_AITCLI
257: ${CEXEC} INSTALL="/usr/bin/install" ${AITCLI_CFG}
258: ${CBUILD} clean
259: ${CBUILD}
260: ${CBUILD} install
261: cd -
262:
263: cd $CROSS_AITMQTT
264: ${CEXEC} INSTALL="/usr/bin/install" ${AITMQTT_CFG}
265: ${CBUILD} clean
266: ${CBUILD}
267: ${CBUILD} install
268: cd -
269:
270: cd $CROSS_EMBEDTOOLS
271: ${CEXEC} INSTALL="/usr/bin/install" ${EMBEDTOOLS_CFG}
272: ${CBUILD} clean
273: ${CBUILD}
274: ${CBUILD} install
275: cd -
276:
277: cd $CROSS_ANSH
278: ${CEXEC} INSTALL="/usr/bin/install" ${ANSH_CFG}
279: ${CBUILD} clean
280: ${CBUILD}
281: ${CBUILD} install
282: cd -
283:
284: cd $CROSS_MQTT
285: ${CEXEC} INSTALL="/usr/bin/install" ${MQTT_CFG}
286: ${CBUILD} clean
287: ${CBUILD}
288: ${CBUILD} install
289: cd -
290:
291: cd $CROSS_WIFINATOR
292: ${CEXEC} INSTALL="/usr/bin/install" ${WIFINATOR_CFG}
293: ${CBUILD} clean
294: ${CBUILD}
295: ${CBUILD} install
296: cd -
297:
298: cd $CROSS_TFTPD
299: ${CEXEC} INSTALL="/usr/bin/install" ${TFTPD_CFG}
300: ${CBUILD} clean
301: ${CBUILD}
302: ${CBUILD} install
303: cd -
304: }
305:
306: install_tools()
307: {
308: LIBS="${ROMFS_USR2}/lib"
309: LIBEXEC="${ROMFS_USR2}/libexec"
310: BIN="${ROMFS_USR2}/bin"
311: SBIN="${ROMFS_USR2}/sbin"
312: ETC="${ROMFS_USR2}/etc"
313:
314: echo "+++ Install ELWIX RomFS secondary firmware ... ${ROMFS_USR2}"
315:
316: StripFiles \*.so\* ${PKG}/lib
317: InstallFiles \*.so\* ${PKG}/lib $LIBS
318: StripFiles \* ${PKG}/libexec
319: InstallFiles \* ${PKG}/libexec $LIBEXEC
320: StripFiles \* ${PKG}/bin
321: InstallFiles \* ${PKG}/bin $BIN
322: StripFiles \* ${PKG}/sbin
323: InstallFiles \* ${PKG}/sbin $SBIN
324:
325: InstallFiles \* ${PKG}/etc $ETC
326:
327: chown -R root:wheel $SBIN $BIN $LIBDATA $LIBEXEC $LIBS
328: }
329:
330: build_tools()
331: {
332: echo "+++ Build ELWIX core firmware image ... ${WORLD}/usr/local --> ${REL}/${LOCALFS_IMG}"
333:
334: cd ${WORLD}/usr/local
335: find . -name ".debug" -exec rm -rf {} \;
336: pax -w -z -v -f${REL}/${LOCALFS_IMG} .
337: cd -
338:
339: echo "+++ Completed ELWIX core firmware image ... ${REL}/${LOCALFS_IMG}"
340: }
341:
342: ### main()
343: if [ -n "${1}" ]; then
344: rm ${WORLD}/usr/local/elwix.ver
345: fi
346:
347: if [ "${COMPILE_DEPTOOLS}" = "YES" ]; then
348: compile_deps || exit 1
349: fi
350:
351: #if ! SnitVer ${WORLD}/elwix/elwix.ver; then
352: # clean_bootstrap
353: # compile_bootstrap || exit 1
354: #
355: # echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix/elwix.ver
356: #else
357: # echo "Skipped ELWIX bootstrap pkgsrc tools build ..."
358: #fi
359:
360: if ! SnitVer ${WORLD}/usr/local/elwix.ver; then
361: clean_tools || exit 1
362:
363: compile_fbsdtools || exit 1
364: compile_files || exit 1
365: compile_tools || exit 1
366:
367: build_tools || exit 1
368:
369: echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/usr/local/elwix.ver
370: else
371: echo "Skipped ELWIX tools build ..."
372: fi
373:
374: echo "+++ Complete build ELWIX tools"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>