do_rootfs[depends] += "mklibs-native:do_populate_sysroot" IMAGE_PREPROCESS_COMMAND += "mklibs_optimize_image; " inherit linuxloader mklibs_optimize_image_doit() { rm -rf ${WORKDIR}/mklibs mkdir -p ${WORKDIR}/mklibs/dest cd ${IMAGE_ROOTFS} du -bs > ${WORKDIR}/mklibs/du.before.mklibs.txt # Build a list of dynamically linked executable ELF files. # Omit libc/libpthread as a special case because it has an interpreter # but is primarily what we intend to strip down. for i in `find . -type f -executable ! -name 'libc-*' ! -name 'libpthread-*'`; do file $i | grep -q ELF || continue ${HOST_PREFIX}readelf -l $i | grep -q INTERP || continue echo $i done > ${WORKDIR}/mklibs/executables.list dynamic_loader=$(linuxloader) mklibs -v \ --ldlib ${dynamic_loader} \ --libdir ${baselib} \ --sysroot ${PKG_CONFIG_SYSROOT_DIR} \ --gcc-options "--sysroot=${PKG_CONFIG_SYSROOT_DIR}" \ --root ${IMAGE_ROOTFS} \ --target `echo ${TARGET_PREFIX} | sed 's/-$//' ` \ -d ${WORKDIR}/mklibs/dest \ `cat ${WORKDIR}/mklibs/executables.list` cd ${WORKDIR}/mklibs/dest for i in * do cp $i `find ${IMAGE_ROOTFS} -name $i` done cd ${IMAGE_ROOTFS} du -bs > ${WORKDIR}/mklibs/du.after.mklibs.txt echo rootfs size before mklibs optimization: `cat ${WORKDIR}/mklibs/du.before.mklibs.txt` echo rootfs size after mklibs optimization: `cat ${WORKDIR}/mklibs/du.after.mklibs.txt` } mklibs_optimize_image() { for img in ${MKLIBS_OPTIMIZED_IMAGES} do if [ "${img}" = "${PN}" ] || [ "${img}" = "all" ] then mklibs_optimize_image_doit break fi done }