--- elwix/build_tools.sh 2012/03/20 15:10:06 1.1.2.4 +++ elwix/build_tools.sh 2014/01/15 09:15:43 1.6.6.4 @@ -1,11 +1,11 @@ #!/bin/sh # -# ELWIX build script for cross +# ELWIX build script for tools # # (C) AITNET ltd - Sofia/Bulgaria # by Michael Pounov # -# $Id: build_tools.sh,v 1.1.2.4 2012/03/20 15:10:06 misho Exp $ +# $Id: build_tools.sh,v 1.6.6.4 2014/01/15 09:15:43 misho Exp $ # [ -r ./config/rc.elwix ] && . ./config/rc.elwix @@ -15,8 +15,15 @@ if [ X"${ELWIX_IS_CONFIGURED}" != X"YES" ]; then echo exit 1 fi +V=${VERSION} [ -r ${CENV} ] && . ${CENV} +unset INSTALL +unset VERSION +VERSION="$V" +# Set TARGET_CPUTYPE only for world compiling. Don't use this in kernel build! +X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}" + if [ ! -d $BSDSRC ]; then echo echo "ELWIX project is not configured - missing BSD sources !?!" @@ -49,105 +56,161 @@ clean_bootstrap() { echo "+++ Clean ELWIX pkgsrc bootstrap tools ..." - rm -rf ${WORLD}/usr/pkgsrc/bootstrap/work + rm -Rf ${WORLD}/usr/pkgsrc/bootstrap/work rm -f /elwix ${WORLD}/usr/pkgsrc - rm -rf ${WORLD}/elwix + rm -Rf ${WORLD}/elwix install -d ${WORLD}/elwix ln -sf ${WORLD}/elwix /elwix ln -sf ${PKGSRC} ${WORLD}/usr/pkgsrc install -d ${PKGDIR} install -d ${PKGDIR}/db + install -d ${PKGDIR}/etc } +compile_deps() +{ + echo "+++ Compile ELWIX programs bootstrap tools ..." + if [ -d tools -a -f tools/Makefile ]; then + cd tools + make cleandepend + make clean + make obj + make + make install + cd - + fi +} + compile_bootstrap() { echo "+++ Compile ELWIX pkgsrc bootstrap tools ..." if [ ! -d ${WORLD}/usr/pkgsrc/bootstrap/work ]; then cd ${WORLD}/usr/pkgsrc/bootstrap + ./cleanup --prefix /elwix/pkg --pkgdbdir /elwix/pkg/db ./bootstrap --prefix /elwix/pkg --pkgdbdir /elwix/pkg/db cd - else echo " Skip bootstrap pkgsrc - already inited pkgsrc" fi - echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix/elwix.ver + cat >>/elwix/pkg/etc/mk.conf << _EOF + +.if defined(USE_CROSS_COMPILE) && !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) +USE_DESTDIR= yes +DEPENDS_TARGET= package-install + +TOOLDIR= ${CROSSTOOLDIR} +CROSS_DESTDIR= ${WORLD} + +TARGET= ${TARGET} +TARGET_ARCH= ${TARGET_ARCH} +MACHINE_PLATFORM= FreeBSD-${PLATFORM}-${TARGET_ARCH} +MACHINE_GNU_PLATFORM= ${TARGET_ARCH}-elwix-freebsd + +PKGSRC_COMPILER= gcc +USE_PKGSRC_GCC= no +USE_NATIVE_GCC= yes + +.endif # end cross-compilation settings +_EOF } compile_fbsdtools() { echo "+++ Compile ELWIX FreeBSD tools ..." - cd $CROSS_FT_ATH + cd $CROSS_FT_VIMAGE env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - clean DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - install DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} install cd - - cd $CROSS_FT_IPW + cd $CROSS_FT_ATH env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - clean DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - install DESTDIR=${WORLD}/usr/local/bin + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} install cd - - cd $CROSS_FT_IWI + cd $CROSS_FT_IPW env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - clean DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - install DESTDIR=${WORLD}/usr/local/bin + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD}/usr/local/bin install cd - - cd $CROSS_FT_MWL + cd $CROSS_FT_IWI env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - clean DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - install DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD}/usr/local/bin install cd - - cd $CROSS_FT_NET80211 + cd $CROSS_FT_MWL env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - clean DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - install DESTDIR=${WORLD} + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} install cd - - cd $CROSS_FT_VIMAGE - env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - clean DESTDIR=${WORLD} - env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - DESTDIR=${WORLD} - env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - install DESTDIR=${WORLD} - cd - +# cd $CROSS_FT_NET80211 +# env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ +# ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean +# env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ +# ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} +# env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ +# ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} install +# cd - # cd $CROSS_FT_WTAP # env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ -# clean DESTDIR=${WORLD} +# ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean # env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ -# DESTDIR=${WORLD} +# ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} # env MAKEOBJDIRPREFIX=${BSDOBJ} make TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ -# install DESTDIR=${WORLD} +# ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} install # cd - } +compile_files() +{ + cd files + env MAKEOBJDIRPREFIX=${BSDOBJ} make \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \ + __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} clean + env MAKEOBJDIRPREFIX=${BSDOBJ} make \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \ + __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} obj + env MAKEOBJDIRPREFIX=${BSDOBJ} make \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \ + __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} depend + env MAKEOBJDIRPREFIX=${BSDOBJ} make \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \ + __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} + env MAKEOBJDIRPREFIX=${BSDOBJ} make \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} \ + __MAKE_CONF=${MAKECONF} DESTDIR=${WORLD} install + cd - + + strip -s ${WORLD}/usr/bin/csh +} + compile_tools() { echo "+++ Compile ELWIX Cross ..." - unset INSTALL - cd $CROSS_AXL ${AXL_CFG} ${CBUILD} clean @@ -155,15 +218,15 @@ compile_tools() ${CBUILD} install cd - - cd $CROSS_AITIO - ${AITIO_CFG} + cd $CROSS_ELWIX + ${ELWIX_CFG} ${CBUILD} clean ${CBUILD} ${CBUILD} install cd - - cd $CROSS_AITCRC - ${AITCRC_CFG} + cd $CROSS_AITIO + ${AITIO_CFG} ${CBUILD} clean ${CBUILD} ${CBUILD} install @@ -176,8 +239,8 @@ compile_tools() ${CBUILD} install cd - - cd $CROSS_AITSESS - ${AITSESS_CFG} + cd $CROSS_AITSCHED + ${AITSCHED_CFG} ${CBUILD} clean ${CBUILD} ${CBUILD} install @@ -190,13 +253,6 @@ compile_tools() ${CBUILD} install cd - - cd $CROSS_AITSCHED - ${AITSCHED_CFG} - ${CBUILD} clean - ${CBUILD} - ${CBUILD} install - cd - - cd $CROSS_AITWWW ${AITWWW_CFG} ${CBUILD} clean @@ -211,13 +267,6 @@ compile_tools() ${CBUILD} install cd - - cd $CROSS_AITPWD - ${AITPWD_CFG} - ${CBUILD} clean - ${CBUILD} - ${CBUILD} install - cd - - cd $CROSS_AITSYNC ${AITSYNC_CFG} ${CBUILD} clean @@ -253,21 +302,73 @@ compile_tools() ${CBUILD} install cd - - echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/usr/local/elwix.ver + cd $CROSS_MQTT + ${MQTT_CFG} + ${CBUILD} clean + ${CBUILD} + ${CBUILD} install + cd - + + cd $CROSS_WIFINATOR + ${WIFINATOR_CFG} + ${CBUILD} clean + ${CBUILD} + ${CBUILD} install + cd - } +install_tools() +{ + LIBS="${ROMFS_USR2}/lib" + LIBEXEC="${ROMFS_USR2}/libexec" + BIN="${ROMFS_USR2}/bin" + SBIN="${ROMFS_USR2}/sbin" + ETC="${ROMFS_USR2}/etc" + + echo "+++ Install ELWIX RomFS secondary firmware ..." + + StripFiles \*.so\* ${PKG}/lib + InstallFiles \*.so\* ${PKG}/lib $LIBS + StripFiles \* ${PKG}/libexec + InstallFiles \* ${PKG}/libexec $LIBEXEC + StripFiles \* ${PKG}/bin + InstallFiles \* ${PKG}/bin $BIN + StripFiles \* ${PKG}/sbin + InstallFiles \* ${PKG}/sbin $SBIN + + InstallFiles \* ${PKG}/etc $ETC + + chown -R root:wheel $SBIN $BIN $LIBDATA $LIBEXEC $LIBS +} + +build_tools() +{ + echo "+++ Build ELWIX core firmware image ..." + + cd ${WORLD}/usr/local + pax -w -z -v -f${REL}/${LOCALFS_IMG} . + cd - +} + ### main() -if SnitVer ${WORLD}/elwix/elwix.ver; then - clean_bootstrap - compile_bootstrap +if ! SnitVer ${WORLD}/elwix/elwix.ver; then + compile_deps || exit 1 +# clean_bootstrap +# compile_bootstrap || exit 1 + + echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/elwix/elwix.ver else echo "Skipped ELWIX bootstrap pkgsrc tools build ..." fi -if SnitVer ${WORLD}/usr/local/elwix.ver; then +if ! SnitVer ${WORLD}/usr/local/elwix.ver; then clean_tools compile_fbsdtools + compile_files compile_tools + build_tools + + echo "ELWIX Platform:${PLATFORM} Version:${VERSION} TargetArch:${TARGET_ARCH}" >${WORLD}/usr/local/elwix.ver else echo "Skipped ELWIX tools build ..." fi