generic-poky/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb

46 lines
2.0 KiB
BlitzBasic
Raw Normal View History

require libtool-${PV}.inc
PACKAGES = ""
SRC_URI += "file://prefix.patch"
SRC_URI += "file://fixinstall.patch"
datadir = "${STAGING_DIR_TARGET}${target_datadir}"
do_configure_prepend () {
# Remove any existing libtool m4 since old stale versions would break
# any upgrade
rm -f ${STAGING_DATADIR}/aclocal/libtool.m4
rm -f ${STAGING_DATADIR}/aclocal/lt*.m4
}
do_install () {
install -d ${D}${bindir_crossscripts}/
install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
libtool-cross: Unset pre|post dep objects predep_objects and postdep_objects are specifying the duplicate objects which are better computed by gcc/g++ driver, since we want to generate PIE, PIC and non-PIC combinations, let gcc decide on this, since it knows best about linker options to use in each of these situations. When we defer the linker options to driver, we also need to remove -nostdlib from linker commandline options. Remove duplicate directory creation for ${D}${bindir_crossscripts}/ This fixes a frequent problem we see during -fpie links e.g. | /home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/qemux86-64/usr/include/c++/5.3.0/iostream:74: undefined reference to `__dso_handle' | /home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: .libs/cxx_channel.o: relocation R_X86_64_PC32 against undefined hidden symbol `__dso_handle' can not be used when making a shared object | /home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: final link failed: Bad value After this change libtool gets changed as below old_archive_from_expsyms_cmds="" # Commands used to build a shared archive. -archive_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname -o \$lib" -archive_expsym_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname \$wl-retain-symbols-file \$wl\$export_symbols -o \$lib" +archive_cmds="\$CC \$pic_flag -shared \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$CC \$pic_flag -shared \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname \$wl-retain-symbols-file \$wl\$export_symbols -o \$lib" # Commands used to build a loadable module if different from building # a shared archive. @@ -11908,8 +11908,8 @@ # Dependencies to place before and after the objects being linked to # create a shared library. -predep_objects="/home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/qemux86-64/usr/lib/../lib/Scrt1.o /home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/qemux86-64/usr/lib/../lib/crti.o /home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/qemux86-64/usr/lib/../lib/x86_64-oe-linux/5.3.0/crtbeginS.o" -postdep_objects="/home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/qemux86-64/usr/lib/../lib/x86_64-oe-linux/5.3.0/crtendS.o /home/ubuntu/work/oe/openembedded-core/build/tmp-glibc/sysroots/qemux86-64/usr/lib/../lib/crtn.o" +predep_objects="" +postdep_objects="" predeps="" postdeps="-lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc" (From OE-Core rev: e1b45cb8e15458dde21f5e86ea1cbb619fb5c4cf) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-02-01 04:49:49 +00:00
sed -e 's@^\(predep_objects="\).*@\1"@' \
-e 's@^\(postdep_objects="\).*@\1"@' \
-i ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
sed -i '/^archive_cmds=/s/\-nostdlib//g' ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
sed -i '/^archive_expsym_cmds=/s/\-nostdlib//g' ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
GREP='/bin/grep' SED='sed' ${S}/build-aux/inline-source libtoolize > ${D}${bindir_crossscripts}/libtoolize
chmod 0755 ${D}${bindir_crossscripts}/libtoolize
install -d ${D}${target_datadir}/libtool/build-aux/
install -d ${D}${target_datadir}/aclocal/
install -c ${S}/build-aux/compile ${D}${target_datadir}/libtool/build-aux/
install -c ${S}/build-aux/config.guess ${D}${target_datadir}/libtool/build-aux/
install -c ${S}/build-aux/config.sub ${D}${target_datadir}/libtool/build-aux/
install -c ${S}/build-aux/depcomp ${D}${target_datadir}/libtool/build-aux/
install -c ${S}/build-aux/install-sh ${D}${target_datadir}/libtool/build-aux/
install -c ${S}/build-aux/missing ${D}${target_datadir}/libtool/build-aux/
install -c -m 0644 ${S}/build-aux/ltmain.sh ${D}${target_datadir}/libtool/build-aux/
install -c -m 0644 ${S}/m4/*.m4 ${D}${target_datadir}/aclocal/
}
SYSROOT_PREPROCESS_FUNCS += "libtoolcross_sysroot_preprocess"
libtoolcross_sysroot_preprocess () {
sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
sysroot_stage_dir ${D}${target_datadir} ${SYSROOT_DESTDIR}${target_datadir}
}
SSTATE_SCAN_FILES += "libtoolize *-libtool"