elfutils_0.148.bb: Fix compilation on uclibc

Currently all components of elfutils dont compile with uclibc
but elfutils is one part which is needed by other recipes e.g.
gcc 4.5 to compile. we make adjustments so that when compiling
for uclibc targets it _only_ builds and packages libelf

use --enable-uclibc only when building for uclibc targets

The supporting patch is also needed for compiling with uclibc
to specify -lintl and -luargp on linker commandline

Add missing inherit on gettext

(From OE-Core rev: e21267f1837b25fec4443dbf4367e501639541bd)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj 2011-05-23 18:53:59 -07:00 committed by Richard Purdie
parent c792ca026a
commit a49cc20ad2
2 changed files with 103 additions and 3 deletions

View File

@ -0,0 +1,91 @@
on uclibc systems libintl and libuargp are separate from libc.
so they need to be specified on commandline when we use proxy-libintl
then libintl is a static archive so it should be listed last since
elfutils does not respect disable-nls we need to link in libintl
We add a new option --enable-uclibc which will be used to control
the uclibc specific configurations during build.
Signed-off-by: Khem Raj <raj.khem>
Upstream-Status: Inappropriate [uclibc specific]
Index: elfutils-0.148/configure.ac
===================================================================
--- elfutils-0.148.orig/configure.ac
+++ elfutils-0.148/configure.ac
@@ -55,9 +55,16 @@ AS_IF([test "$use_locks" = yes], [AC_DEF
AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.])
+AC_ARG_ENABLE([uclibc],
+AS_HELP_STRING([--enable-uclibc], [Use uclibc for system libraries]),
+use_uclibc=yes, use_uclibc=no)
+AM_CONDITIONAL(USE_UCLIBC, test "$use_uclibc" = yes)
+AS_IF([test "$use_uclibc" = yes], [AC_DEFINE(USE_UCLIBC)])
+
+AH_TEMPLATE([USE_UCLIBC], [Defined if uclibc libraries are used.])
+
dnl Add all the languages for which translations are available.
ALL_LINGUAS=
-
AC_PROG_CC
AC_PROG_RANLIB
AC_PROG_YACC
Index: elfutils-0.148/libelf/Makefile.am
===================================================================
--- elfutils-0.148.orig/libelf/Makefile.am
+++ elfutils-0.148/libelf/Makefile.am
@@ -93,7 +93,12 @@ if !MUDFLAP
libelf_pic_a_SOURCES =
am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
+
libelf_so_LDLIBS =
+if USE_UCLIBC
+libelf_so_LDLIBS += -lintl -luargp
+endif
+
if USE_LOCKS
libelf_so_LDLIBS += -lpthread
endif
Index: elfutils-0.148/libdw/Makefile.am
===================================================================
--- elfutils-0.148.orig/libdw/Makefile.am
+++ elfutils-0.148/libdw/Makefile.am
@@ -98,6 +98,11 @@ if !MUDFLAP
libdw_pic_a_SOURCES =
am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
+libdw_so_LDLIBS =
+if USE_UCLIBC
+libdw_so_LDLIBS += -lintl -luargp
+endif
+
libdw_so_SOURCES =
libdw.so: $(srcdir)/libdw.map libdw_pic.a \
../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
@@ -108,7 +113,7 @@ libdw.so: $(srcdir)/libdw.map libdw_pic.
-Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
-Wl,--version-script,$<,--no-undefined \
-Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
- -ldl $(zip_LIBS)
+ -ldl $(zip_LIBS) $(libdw_so_LDLIBS)
if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
ln -fs $@ $@.$(VERSION)
Index: elfutils-0.148/libcpu/Makefile.am
===================================================================
--- elfutils-0.148.orig/libcpu/Makefile.am
+++ elfutils-0.148/libcpu/Makefile.am
@@ -63,6 +63,10 @@ i386_parse_CFLAGS = -DNMNES="`wc -l < i3
i386_lex.o: i386_parse.h
i386_gendis_LDADD = $(libeu) -lm $(libmudflap)
+if USE_UCLIBC
+i386_gendis_LDADD += -luargp -lintl
+endif
+
i386_parse.h: i386_parse.c ;
noinst_HEADERS = memory-access.h i386_parse.h i386_data.h

View File

@ -30,6 +30,9 @@ SRC_URI += "\
file://remove-unused.patch \
file://mempcpy.patch \
"
# Only apply when building uclibc based target recipe
SRC_URI_append_libc-uclibc = " ${@['', 'file://uclibc-support.patch']['${PN}' == '${BPN}']}"
# The buildsystem wants to generate 2 .h files from source using a binary it just built,
# which can not pass the cross compiling, so let's work around it by adding 2 .h files
# along with the do_configure_prepend()
@ -38,9 +41,10 @@ SRC_URI += "\
file://i386_dis.h \
file://x86_64_dis.h \
"
inherit autotools
inherit autotools gettext
EXTRA_OECONF = "--program-prefix=eu-"
EXTRA_OECONF_append_libc-uclibc = " ${@['', '--enable-uclibc']['${PN}' == '${BPN}']}"
do_configure_prepend() {
sed -i 's:./i386_gendis:echo\ \#:g' ${S}/libcpu/Makefile.am
@ -48,8 +52,13 @@ do_configure_prepend() {
cp ${WORKDIR}/*dis.h ${S}/libcpu
}
# Only append ldflags for target recipe
TARGET_LDFLAGS_libc-uclibc += "${@['', '-lintl -luargp']['${PN}' == '${BPN}']}"
# we can not build complete elfutils when using uclibc
# but some recipes e.g. gcc 4.5 depends on libelf so we
# build only libelf for uclibc case
EXTRA_OEMAKE_libc-uclibc = "-C libelf"
EXTRA_OEMAKE_virtclass-native = ""
EXTRA_OEMAKE_virtclass-nativesdk = ""
BBCLASSEXTEND = "native nativesdk"