* [Buildroot] [PATCH] yajl: fix build with uClibc @ 2016-04-20 9:38 Vicente Olivert Riera 2016-04-21 6:15 ` Jörg Krause 0 siblings, 1 reply; 3+ messages in thread From: Vicente Olivert Riera @ 2016-04-20 9:38 UTC (permalink / raw) To: buildroot The failure looks like this: ../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to `__isinf' ../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to `__isnan' We already have a patch (0001) which should fix this problem, however, as stated here [1], it doesn't work when cross compiling. To fix the problem we add -lm to CFLAGS when building with uClibc. Fixes: http://autobuild.buildroot.net/results/308/30892ffb298acc2334f8c694038c420120fe43b9/ 1: https://github.com/lloyd/yajl/issues/58#issuecomment-15683796 Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> --- package/yajl/yajl.mk | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package/yajl/yajl.mk b/package/yajl/yajl.mk index 7770e86..145bf2c 100644 --- a/package/yajl/yajl.mk +++ b/package/yajl/yajl.mk @@ -11,4 +11,8 @@ YAJL_LICENSE = ISC YAJL_LICENSE_FILES = COPYING YAJL_PATCH = https://github.com/vriera/yajl/commit/6d09f11b8fd358cab0e31b965327e64a599f9ce9.patch +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +YAJL_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -lm" +endif + $(eval $(cmake-package)) -- 2.7.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH] yajl: fix build with uClibc 2016-04-20 9:38 [Buildroot] [PATCH] yajl: fix build with uClibc Vicente Olivert Riera @ 2016-04-21 6:15 ` Jörg Krause 2016-04-22 13:58 ` Benoît Mauduit 0 siblings, 1 reply; 3+ messages in thread From: Jörg Krause @ 2016-04-21 6:15 UTC (permalink / raw) To: buildroot Hi Vicente, On Mi, 2016-04-20 at 10:38 +0100, Vicente Olivert Riera wrote: > The failure looks like this: > > ../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to `__isinf' > ../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to `__isnan' > > We already have a patch (0001) which should fix this problem, > however, > as stated here [1], it doesn't work when cross compiling. > > To fix the problem we add -lm to CFLAGS when building with uClibc. > > Fixes: > > ? http://autobuild.buildroot.net/results/308/30892ffb298acc2334f8c694 > 038c420120fe43b9/ > > 1: https://github.com/lloyd/yajl/issues/58#issuecomment-15683796 > > Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> > --- > ?package/yajl/yajl.mk | 4 ++++ > ?1 file changed, 4 insertions(+) > > diff --git a/package/yajl/yajl.mk b/package/yajl/yajl.mk > index 7770e86..145bf2c 100644 > --- a/package/yajl/yajl.mk > +++ b/package/yajl/yajl.mk > @@ -11,4 +11,8 @@ YAJL_LICENSE = ISC > ?YAJL_LICENSE_FILES = COPYING > ?YAJL_PATCH = https://github.com/vriera/yajl/commit/6d09f11b8fd358cab > 0e31b965327e64a599f9ce9.patch > ? > +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) > +YAJL_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -lm" > +endif > + > ?$(eval $(cmake-package)) For the record, Bernd Kuhls proposed a patch [1] to fix this issue, too. The patch [2] in commit?3cfd8bf15cd8b80215bb70db28e065ff0b80437b fixed an issue, where the executables build in yajl, like 'parse_config', are linked against the static yajl library, even in a shared context. Unfortunatly, the submitter (me) of this patch did not test with the uClibc based toolchain, but only for musl. We have already the patch "0001-cmake-uClibc-Fix-missing-libm-for- tests.patch" for yajl which fixes the missing libm for uClibc for the executable 'gen-extra-close', which should be removed by your patch. I'm not sure if it's worth, but I would prefer to fix the CMake build files of yajl by checking if libm is needed for isnan and it to the list of LIBS and let all executables link against LIBS. Thomas Petazzoni did this for an autotools package [3]. For CMake it would be something like this: # check if isnan needs libm try_compile(ISNAN_NEEDS_LIBM, ...) if (ISNAN_NEEDS_LIBM) ? set(LIBS ${LIBS} m) endif () [..] TARGET_LINK_LIBRARIES(${testProg} yajl ${LIBS}) Furthermore, the .pc file should be fixed. [1]?http://patchwork.ozlabs.org/patch/612226/ [2]?http://patchwork.ozlabs.org/patch/608412/ [3]?http://lists.busybox.net/pipermail/buildroot/2015-May/127381.html Best regards J?rg Krause ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH] yajl: fix build with uClibc 2016-04-21 6:15 ` Jörg Krause @ 2016-04-22 13:58 ` Benoît Mauduit 0 siblings, 0 replies; 3+ messages in thread From: Benoît Mauduit @ 2016-04-22 13:58 UTC (permalink / raw) To: buildroot Hi Vicente, J?rg, On 04/21/2016 08:15 AM, J?rg Krause wrote: > (...) > > I'm not sure if it's worth, but I would prefer to fix the CMake build > files of yajl by checking if libm is needed for isnan and it to the > list of LIBS and let all executables link against LIBS. Thomas > Petazzoni did this for an autotools package [3]. For CMake it would be > something like this: > > # check if isnan needs libm > try_compile(ISNAN_NEEDS_LIBM, ...) > if (ISNAN_NEEDS_LIBM) > set(LIBS ${LIBS} m) > endif () > > [..] > > TARGET_LINK_LIBRARIES(${testProg} yajl ${LIBS}) > I just encountered this build issue. I end up with a patch like that, in yasl Top-level CMakeList.txt : # uclibc does not provide isnan() & isinf(). # Symbol are in libm instead. INCLUDE(CheckLibraryExists) CHECK_LIBRARY_EXISTS(c isnan "" HAVE_LIBC_ISNAN) IF (NOT HAVE_LIBC_ISNAN) SET(CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}") ENDIF (NOT HAVE_LIBC_ISNAN) It works with uClibc based toolchain. But I am not sure about this patch for compatibility with other C library. I have just test on my host (glibc) with a dummy CMakeList.txt, and : CHECK_LIBRARY_EXISTS(c isnan "" HAVE_LIBC_ISNAN) >> -- Looking for isnan in c -- Looking for isnan in c - found Anyway, looking at the man page for isnan & isinf, we are supposed to link against libmath... (Link with -lm) Regards, -- Beno?t Mauduit Mail : <bmauduit@beneth.fr> XMPP : <bmauduit@im.beneth.fr> ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-04-22 13:58 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-04-20 9:38 [Buildroot] [PATCH] yajl: fix build with uClibc Vicente Olivert Riera 2016-04-21 6:15 ` Jörg Krause 2016-04-22 13:58 ` Benoît Mauduit
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox