[YOCTO #2519] When getting gcc from sstate, it is possible to get a gcc with a bogus sysroot configuration, as discussed in [1] or in [YOCTO #2519]. mklibs script will eventually call gcc, so we need to make sure that it provides gcc with the right sysroot location. [1] http://lists.openembedded.org/pipermail/openembedded-core/2013-September/084159.html (From OE-Core rev: 3a66dd762e493ad2cda57110be67c3b06628050a) Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
75 lines
1.7 KiB
Text
75 lines
1.7 KiB
Text
do_rootfs[depends] += "mklibs-native:do_populate_sysroot"
|
|
|
|
IMAGE_PREPROCESS_COMMAND += "mklibs_optimize_image; "
|
|
|
|
mklibs_optimize_image_doit() {
|
|
rm -rf ${WORKDIR}/mklibs
|
|
mkdir -p ${WORKDIR}/mklibs/dest
|
|
cd ${IMAGE_ROOTFS}
|
|
du -bs > ${WORKDIR}/mklibs/du.before.mklibs.txt
|
|
for i in `find .`; do file $i; done \
|
|
| grep ELF \
|
|
| grep "LSB *executable" \
|
|
| grep "dynamically linked" \
|
|
| sed "s/:.*//" \
|
|
| sed "s+^\./++" \
|
|
> ${WORKDIR}/mklibs/executables.list
|
|
|
|
case ${TARGET_ARCH} in
|
|
powerpc | mips | microblaze )
|
|
dynamic_loader="${base_libdir}/ld.so.1"
|
|
;;
|
|
powerpc64)
|
|
dynamic_loader="${base_libdir}/ld64.so.1"
|
|
;;
|
|
x86_64)
|
|
dynamic_loader="${base_libdir}/ld-linux-x86-64.so.2"
|
|
;;
|
|
i586 )
|
|
dynamic_loader="${base_libdir}/ld-linux.so.2"
|
|
;;
|
|
arm )
|
|
dynamic_loader="${base_libdir}/ld-linux.so.3"
|
|
;;
|
|
* )
|
|
dynamic_loader="/unknown_dynamic_linker"
|
|
;;
|
|
esac
|
|
|
|
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
|
|
}
|
|
|
|
|
|
EXPORT_FUNCTIONS mklibs_optimize_image
|