#!/bin/sh NAME='libchewing' ARCH=$(uname -m) BUILD_DIR="/tmp/${NAME}_build" OUTPUTDIR='/tmp/out' SOURCEDIR='/tmp/source' ## build dependencies ## BUILD_DEPS="autogen-dev.tcz automake.tcz cmake.tcz compiletc.tcz git.tcz libtool-dev.tcz ncursesw-dev.tcz sqlite3-dev.tcz squashfs-tools.tcz " echo tce-load -w $BUILD_DEPS tce-load -w $BUILD_DEPS > /dev/null 2>&1 echo tce-load -i $BUILD_DEPS tce-load -i $BUILD_DEPS > /dev/null 2>&1 || exit 1 rm -fr $OUTPUTDIR mkdir $OUTPUTDIR ## get source ## sudo rm -fr $BUILD_DIR mkdir -p $BUILD_DIR && cd $BUILD_DIR || { echo Can not create $BUILD_DIR >&2; exit 1; } git clone https://github.com/chewing/libchewing.git cd libchewing || exit 1 # enable `subdir-objects` # # sed -i 's/AM_INIT_AUTOMAKE/AM_INIT_AUTOMAKE(\[subdir-objects\])/g' configure.ac ## compile flags ## FLAGS_i686='-march=i486 -mtune=i686 ' FLAGS_x86_64='-mtune=generic ' eval CFLAGS="\$FLAGS_${ARCH}" eval CXXFLAGS="\$FLAGS_${ARCH}" CFLAGS="${CFLAGS}-Os -pipe -fno-exceptions -flto -fuse-linker-plugin" CXXFLAGS="${CXXFLAGS}-Os -pipe -fno-exceptions -flto -fuse-linker-plugin -fno-rtti" LDFLAGS="-Wl,-O1" export CFLAGS CXXFLAGS LDFLAGS ## configure ## cmake . \ -DCMAKE_INSTALL_PREFIX:PATH=/usr/local \ -DCMAKE_INSTALL_LIBDIR:PATH=lib \ 2> ${BUILD_DIR}/cmake2 | tee ${BUILD_DIR}/cmake1 ## make ## make -j 2> ${BUILD_DIR}/make2 | tee ${BUILD_DIR}/make1 make DESTDIR=${BUILD_DIR}/${NAME}-base install [ $? != 0 ] && { echo Error occur, make install failed >&2 exit 1 } ## strip ## find ${BUILD_DIR}/${NAME}-base -type f -exec file {} + | \ grep 'not stripped' | cut -d : -f 1 | \ xargs strip --strip-unneeded ## packing up ## cd ${BUILD_DIR}/${NAME}-base ## dev ## EXT='-dev' for dev in $(find . -name *.a -o -name *.la -o -name *.h -o -name *.m4 -o -name *.pc); do path=${dev#./} path=${path%/*} mkdir -p ${BUILD_DIR}/${NAME}${EXT}/$path mv $dev ${BUILD_DIR}/${NAME}${EXT}/$path done 2> /dev/null sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz printf 'libchewing.tcz ncursesw-dev.tcz sqlite3-dev.tcz ' > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep ## doc ## EXT='-doc' mkdir -p ${BUILD_DIR}/${NAME}${EXT}/usr/local/share/doc/${NAME} cp ${BUILD_DIR}/${NAME}/AUTHORS \ ${BUILD_DIR}/${NAME}/COPYING \ ${BUILD_DIR}/${NAME}${EXT}/usr/local/share/doc/${NAME} sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz ## base ## EXT='-base' # remove empty directory find . -depth -type d -exec rmdir {} \; 2> /dev/null sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}.tcz printf 'sqlite3.tcz\n' > ${OUTPUTDIR}/${NAME}.tcz.dep