diff options
author | Richard Purdie <richard@openedhand.com> | 2008-04-11 11:32:22 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2008-04-11 11:32:22 +0000 |
commit | 0f331d1d84b7a36aabe016198992642bc61f49bc (patch) | |
tree | f7d7f9f2073cf379a064ec4db398953df6d97ad3 /meta/packages | |
parent | 92e6c2c549e1f46902fedf6cc8c3f90c769e32aa (diff) | |
download | openembedded-core-0f331d1d84b7a36aabe016198992642bc61f49bc.tar.gz openembedded-core-0f331d1d84b7a36aabe016198992642bc61f49bc.tar.bz2 openembedded-core-0f331d1d84b7a36aabe016198992642bc61f49bc.zip |
libtool-cross: Enable using dolt for the cases where it works, work around broken libtool fallback handling
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4230 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages')
-rw-r--r-- | meta/packages/libtool/libtool-1.5.10/add_dolt.patch | 15 | ||||
-rw-r--r-- | meta/packages/libtool/libtool-1.5.10/dolt.m4 | 130 | ||||
-rw-r--r-- | meta/packages/libtool/libtool-cross_1.5.10.bb | 10 | ||||
-rw-r--r-- | meta/packages/libtool/libtool_1.5.10.bb | 5 |
4 files changed, 157 insertions, 3 deletions
diff --git a/meta/packages/libtool/libtool-1.5.10/add_dolt.patch b/meta/packages/libtool/libtool-1.5.10/add_dolt.patch new file mode 100644 index 0000000000..45dd78a812 --- /dev/null +++ b/meta/packages/libtool/libtool-1.5.10/add_dolt.patch @@ -0,0 +1,15 @@ +Index: libtool-1.5.10/libtool.m4 +=================================================================== +--- libtool-1.5.10.orig/libtool.m4 2008-04-10 16:08:19.000000000 +0100 ++++ libtool-1.5.10/libtool.m4 2008-04-10 16:08:44.000000000 +0100 +@@ -67,7 +67,9 @@ + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +-])])# AC_PROG_LIBTOOL ++]) ++DOLT ++])# AC_PROG_LIBTOOL + + + # _AC_PROG_LIBTOOL diff --git a/meta/packages/libtool/libtool-1.5.10/dolt.m4 b/meta/packages/libtool/libtool-1.5.10/dolt.m4 new file mode 100644 index 0000000000..e7cf6809cb --- /dev/null +++ b/meta/packages/libtool/libtool-1.5.10/dolt.m4 @@ -0,0 +1,130 @@ +dnl dolt, a replacement for libtool +dnl Copyright © 2007-2008 Josh Triplett <josh@freedesktop.org> +dnl Copying and distribution of this file, with or without modification, +dnl are permitted in any medium without royalty provided the copyright +dnl notice and this notice are preserved. +dnl +dnl To use dolt, invoke the DOLT macro immediately after the libtool macros. +dnl Optionally, copy this file into acinclude.m4, to avoid the need to have it +dnl installed when running autoconf on your project. + +AC_DEFUN([DOLT], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +# dolt, a replacement for libtool +# Josh Triplett <josh@freedesktop.org> +AC_PATH_PROG(DOLT_BASH, bash) +AC_MSG_CHECKING([if dolt supports this host]) +dolt_supported=yes +if test x$DOLT_BASH = x; then + AC_MSG_ERROR([dolt: Bash not found, fatal error]) +fi +if test x$GCC != xyes; then + AC_MSG_ERROR([dolt: gcc not found, fatal error]) +fi +case $host in +i?86-*-linux*|x86_64-*-linux*|arm-*-linux*) ;; +*) AC_MSG_ERROR([dolt: incompatible host, fatal error]) ;; +esac +AC_MSG_RESULT([yes, replacing libtool]) + +dnl Start writing out doltcompile. + cat <<__DOLTCOMPILE__EOF__ >doltcompile +#!$DOLT_BASH +__DOLTCOMPILE__EOF__ + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +args=("$[]@") +for ((arg=0; arg<${#args@<:@@@:>@}; arg++)) ; do + if test x"${args@<:@$arg@:>@}" = x-o ; then + objarg=$((arg+1)) + break + fi +done +if test x$objarg = x ; then + echo 'Error: no -o on compiler command line' 1>&2 + exit 1 +fi +lo="${args@<:@$objarg@:>@}" +obj="${lo%.lo}" +if test x"$lo" = x"$obj" ; then + echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2 + exit 1 +fi +objbase="${obj##*/}" +__DOLTCOMPILE__EOF__ + +dnl Write out shared compilation code. + if test x$enable_shared = xyes; then + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +libobjdir="${obj%$objbase}.libs" +if test ! -d "$libobjdir" ; then + mkdir "$libobjdir" + mkdir_ret=$? + if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then + exit $mkdir_ret + fi +fi +pic_object="$libobjdir/$objbase.o" +args@<:@$objarg@:>@="$pic_object" +"${args@<:@@@:>@}" -fPIC -DPIC +__DOLTCOMPILE__EOF__ + fi + +dnl Write out static compilation code. +dnl Avoid duplicate compiler output if also building shared objects. + if test x$enable_static = xyes; then + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +non_pic_object="$obj.o" +args@<:@$objarg@:>@="$non_pic_object" +__DOLTCOMPILE__EOF__ + if test x$enable_shared = xyes; then + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +"${args@<:@@@:>@}" >/dev/null 2>&1 +__DOLTCOMPILE__EOF__ + else + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +"${args@<:@@@:>@}" +__DOLTCOMPILE__EOF__ + fi + fi + +dnl Write out the code to write the .lo file. +dnl The second line of the .lo file must match "^# Generated by .*libtool" + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +{ +echo "# $lo - a libtool object file" +echo "# Generated by doltcompile, not libtool" +__DOLTCOMPILE__EOF__ + + if test x$enable_shared = xyes; then + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +echo "pic_object='$pic_object'" +__DOLTCOMPILE__EOF__ + else + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +echo pic_object=none +__DOLTCOMPILE__EOF__ + fi + + if test x$enable_static = xyes; then + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +echo "non_pic_object='$non_pic_object'" +__DOLTCOMPILE__EOF__ + else + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +echo non_pic_object=none +__DOLTCOMPILE__EOF__ + fi + + cat <<'__DOLTCOMPILE__EOF__' >>doltcompile +} > "$lo" +__DOLTCOMPILE__EOF__ + +dnl Done writing out doltcompile; substitute it for libtool compilation. + chmod +x doltcompile + LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)' + AC_SUBST(LTCOMPILE) + LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)' + AC_SUBST(LTCXXCOMPILE) +fi +# end dolt +]) diff --git a/meta/packages/libtool/libtool-cross_1.5.10.bb b/meta/packages/libtool/libtool-cross_1.5.10.bb index 0d0b90ac81..7029a3d0a8 100644 --- a/meta/packages/libtool/libtool-cross_1.5.10.bb +++ b/meta/packages/libtool/libtool-cross_1.5.10.bb @@ -1,7 +1,7 @@ require libtool.inc require libtool_${PV}.bb -PR = "r10" +PR = "r11" PACKAGES = "" FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}" SRC_URI_append = " file://libdir-la.patch;patch=1 \ @@ -12,6 +12,13 @@ SRC_URI_append = " file://libdir-la.patch;patch=1 \ file://nmedit_fix.patch;patch=1 \ file://nousrlib.patch;patch=1" +DOLT_PATCH = "" +DOLT_PATCH_arm = " file://add_dolt.patch;patch=1" +DOLT_PATCH_i586 = " file://add_dolt.patch;patch=1" + +SRC_URI_append_linux = "${DOLT_PATCH}" +SRC_URI_append_linux-gnueabi = "${DOLT_PATCH}" + S = "${WORKDIR}/libtool-${PV}" prefix = "${STAGING_DIR_NATIVE}${layout_prefix}" @@ -41,6 +48,7 @@ do_stage () { install -c -m 0644 ltmain.sh ${STAGING_DATADIR}/libtool/ install -c -m 0644 libtool.m4 ${STAGING_DATADIR}/aclocal/ install -c -m 0644 ltdl.m4 ${STAGING_DATADIR}/aclocal/ + install -c -m 0644 ${WORKDIR}/dolt.m4 ${STAGING_DATADIR}/aclocal/ } do_install () { diff --git a/meta/packages/libtool/libtool_1.5.10.bb b/meta/packages/libtool/libtool_1.5.10.bb index 5419450c7d..c78cfefab2 100644 --- a/meta/packages/libtool/libtool_1.5.10.bb +++ b/meta/packages/libtool/libtool_1.5.10.bb @@ -4,8 +4,9 @@ PR = "r5" SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \ file://autotools.patch;patch=1 \ - file://uclibc.patch;patch=1 \ - file://3figures.patch;patch=1" + file://uclibc.patch;patch=1 \ + file://3figures.patch;patch=1 \ + file://dolt.m4" S = "${WORKDIR}/libtool-${PV}" PACKAGES =+ "libltdl libltdl-dev libltdl-dbg" |