All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2 1/1] package/yajl: Update patch to link with libm
@ 2016-04-19 17:13 Bernd Kuhls
  2016-04-19 19:11 ` Jörg Krause
  0 siblings, 1 reply; 2+ messages in thread
From: Bernd Kuhls @ 2016-04-19 17:13 UTC (permalink / raw)
  To: buildroot

Currently yajl does not compile using gcc6 from
http://patchwork.ozlabs.org/patch/611249/

Patch 0003 needed a rebase after patch 0001 was replaced by a version
which also works with gcc6.

This patch also fixes current build failures:
http://autobuild.buildroot.net/results/05b/05b1847bc838a328e7398d03a4bb0efb95ef3938/

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
v2: updated patch description, patch is needed not only for gcc6

 ...1-cmake-uClibc-Fix-missing-libm-for-tests.patch | 30 -------------------
 .../yajl/0001-cmake-uClibc-Fix-missing-libm.patch  | 34 ++++++++++++++++++++++
 ...ink-with-shared-libyajl-in-a-shared-build.patch |  6 ++--
 3 files changed, 37 insertions(+), 33 deletions(-)
 delete mode 100644 package/yajl/0001-cmake-uClibc-Fix-missing-libm-for-tests.patch
 create mode 100644 package/yajl/0001-cmake-uClibc-Fix-missing-libm.patch

diff --git a/package/yajl/0001-cmake-uClibc-Fix-missing-libm-for-tests.patch b/package/yajl/0001-cmake-uClibc-Fix-missing-libm-for-tests.patch
deleted file mode 100644
index 08553f9..0000000
--- a/package/yajl/0001-cmake-uClibc-Fix-missing-libm-for-tests.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From a36814a6f9fbb62f49897f9fb1e68d204602e199 Mon Sep 17 00:00:00 2001
-From: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
-Date: Tue, 2 Feb 2016 17:28:31 +0100
-Subject: [PATCH] cmake: uClibc: Fix missing libm for tests
-
-At the link time, the tests are not linked against libm which cause an
-error with uClibc based toolchain:
-
-../../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to `__isnan'
-../../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to `__isinf'
-
-Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
----
- test/api/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt
-index cd65a54..e0ce2f6 100644
---- a/test/api/CMakeLists.txt
-+++ b/test/api/CMakeLists.txt
-@@ -21,5 +21,5 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib)
- FOREACH (test ${TESTS})
-   GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
-   ADD_EXECUTABLE(${testProg} ${test})
--  TARGET_LINK_LIBRARIES(${testProg} yajl)
-+  TARGET_LINK_LIBRARIES(${testProg} yajl m)
- ENDFOREACH()
--- 
-2.7.0
-
diff --git a/package/yajl/0001-cmake-uClibc-Fix-missing-libm.patch b/package/yajl/0001-cmake-uClibc-Fix-missing-libm.patch
new file mode 100644
index 0000000..3564cb2
--- /dev/null
+++ b/package/yajl/0001-cmake-uClibc-Fix-missing-libm.patch
@@ -0,0 +1,34 @@
+From 76f6ead65b46e4a9cceca4e21efa940cc8a77a6e Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd.kuhls@t-online.de>
+Date: Sat, 16 Apr 2016 19:28:41 +0200
+Subject: [PATCH 1/1] cmake: uClibc: Fix missing libm
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Patch created by Ren? Rh?aume, downloaded from
+https://bugs.gentoo.org/show_bug.cgi?id=512738#c9
+
+Patch is discussed upstream:
+https://github.com/lloyd/yajl/pull/184#issuecomment-201549734
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 471eee1..08d69ec 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -60,6 +60,7 @@ ELSE (WIN32)
+ 
+   SET(CMAKE_C_FLAGS_DEBUG "-DDEBUG -g")
+   SET(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -Wuninitialized")
++  SET(CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}")
+ ENDIF (WIN32)
+ 
+ 
+-- 
+2.8.0.rc3
+
diff --git a/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch b/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch
index 6a6e5e3..46e652d 100644
--- a/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch
+++ b/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch
@@ -82,11 +82,11 @@ index e0ce2f6..9adebdc 100644
  FOREACH (test ${TESTS})
    GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
    ADD_EXECUTABLE(${testProg} ${test})
--  TARGET_LINK_LIBRARIES(${testProg} yajl m)
+-  TARGET_LINK_LIBRARIES(${testProg} yajl)
 +  IF(BUILD_SHARED_LIBS)
-+    TARGET_LINK_LIBRARIES(${testProg} yajl m)
++    TARGET_LINK_LIBRARIES(${testProg} yajl)
 +  ELSE()
-+    TARGET_LINK_LIBRARIES(${testProg} yajl_s m)
++    TARGET_LINK_LIBRARIES(${testProg} yajl_s)
 +  ENDIF()
  ENDFOREACH()
 diff --git a/test/parsing/CMakeLists.txt b/test/parsing/CMakeLists.txt
-- 
2.8.0.rc3

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [Buildroot] [PATCH v2 1/1] package/yajl: Update patch to link with libm
  2016-04-19 17:13 [Buildroot] [PATCH v2 1/1] package/yajl: Update patch to link with libm Bernd Kuhls
@ 2016-04-19 19:11 ` Jörg Krause
  0 siblings, 0 replies; 2+ messages in thread
From: Jörg Krause @ 2016-04-19 19:11 UTC (permalink / raw)
  To: buildroot

Dear Bernd Kuhls,

On Di, 2016-04-19 at 19:13 +0200, Bernd Kuhls wrote:
> Currently yajl does not compile using gcc6 from
> http://patchwork.ozlabs.org/patch/611249/
> 
> Patch 0003 needed a rebase after patch 0001 was replaced by a version
> which also works with gcc6.
> 
> This patch also fixes current build failures:
> http://autobuild.buildroot.net/results/05b/05b1847bc838a328e7398d03a4
> bb0efb95ef3938/
> 
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> ---
> v2: updated patch description, patch is needed not only for gcc6
> 
> ?...1-cmake-uClibc-Fix-missing-libm-for-tests.patch | 30 ------------
> -------
> ?.../yajl/0001-cmake-uClibc-Fix-missing-libm.patch??| 34
> ++++++++++++++++++++++
> ?...ink-with-shared-libyajl-in-a-shared-build.patch |??6 ++--
> ?3 files changed, 37 insertions(+), 33 deletions(-)
> ?delete mode 100644 package/yajl/0001-cmake-uClibc-Fix-missing-libm-
> for-tests.patch
> ?create mode 100644 package/yajl/0001-cmake-uClibc-Fix-missing-
> libm.patch
> 
> diff --git a/package/yajl/0001-cmake-uClibc-Fix-missing-libm-for-
> tests.patch b/package/yajl/0001-cmake-uClibc-Fix-missing-libm-for-
> tests.patch
> deleted file mode 100644
> index 08553f9..0000000
> --- a/package/yajl/0001-cmake-uClibc-Fix-missing-libm-for-tests.patch
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -From a36814a6f9fbb62f49897f9fb1e68d204602e199 Mon Sep 17 00:00:00
> 2001
> -From: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
> -Date: Tue, 2 Feb 2016 17:28:31 +0100
> -Subject: [PATCH] cmake: uClibc: Fix missing libm for tests
> -
> -At the link time, the tests are not linked against libm which cause
> an
> -error with uClibc based toolchain:
> -
> -../../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to
> `__isnan'
> -../../yajl-2.1.0/lib/libyajl.so.2.1.0: undefined reference to
> `__isinf'
> -
> -Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
> ----
> - test/api/CMakeLists.txt | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt
> -index cd65a54..e0ce2f6 100644
> ---- a/test/api/CMakeLists.txt
> -+++ b/test/api/CMakeLists.txt
> -@@ -21,5 +21,5 @@
> LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/
> lib)
> - FOREACH (test ${TESTS})
> -???GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
> -???ADD_EXECUTABLE(${testProg} ${test})
> --??TARGET_LINK_LIBRARIES(${testProg} yajl)
> -+??TARGET_LINK_LIBRARIES(${testProg} yajl m)
> - ENDFOREACH()
> ---?
> -2.7.0
> -
> diff --git a/package/yajl/0001-cmake-uClibc-Fix-missing-libm.patch
> b/package/yajl/0001-cmake-uClibc-Fix-missing-libm.patch
> new file mode 100644
> index 0000000..3564cb2
> --- /dev/null
> +++ b/package/yajl/0001-cmake-uClibc-Fix-missing-libm.patch
> @@ -0,0 +1,34 @@
> +From 76f6ead65b46e4a9cceca4e21efa940cc8a77a6e Mon Sep 17 00:00:00
> 2001
> +From: Bernd Kuhls <bernd.kuhls@t-online.de>
> +Date: Sat, 16 Apr 2016 19:28:41 +0200
> +Subject: [PATCH 1/1] cmake: uClibc: Fix missing libm
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Patch created by Ren? Rh?aume, downloaded from
> +https://bugs.gentoo.org/show_bug.cgi?id=512738#c9
> +
> +Patch is discussed upstream:
> +https://github.com/lloyd/yajl/pull/184#issuecomment-201549734
> +
> +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> +---
> + CMakeLists.txt | 1 +
> + 1 file changed, 1 insertion(+)
> +
> +diff --git a/CMakeLists.txt b/CMakeLists.txt
> +index 471eee1..08d69ec 100644
> +--- a/CMakeLists.txt
> ++++ b/CMakeLists.txt
> +@@ -60,6 +60,7 @@ ELSE (WIN32)
> +?
> +???SET(CMAKE_C_FLAGS_DEBUG "-DDEBUG -g")
> +???SET(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -Wuninitialized")
> ++??SET(CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}")
> + ENDIF (WIN32)
> +?
> +?
> +--?
> +2.8.0.rc3
> +
> diff --git a/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-
> build.patch b/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-
> build.patch
> index 6a6e5e3..46e652d 100644
> --- a/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-
> build.patch
> +++ b/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-
> build.patch
> @@ -82,11 +82,11 @@ index e0ce2f6..9adebdc 100644
> ? FOREACH (test ${TESTS})
> ????GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
> ????ADD_EXECUTABLE(${testProg} ${test})
> --??TARGET_LINK_LIBRARIES(${testProg} yajl m)
> +-??TARGET_LINK_LIBRARIES(${testProg} yajl)
> ?+??IF(BUILD_SHARED_LIBS)
> -+????TARGET_LINK_LIBRARIES(${testProg} yajl m)
> ++????TARGET_LINK_LIBRARIES(${testProg} yajl)
> ?+??ELSE()
> -+????TARGET_LINK_LIBRARIES(${testProg} yajl_s m)
> ++????TARGET_LINK_LIBRARIES(${testProg} yajl_s)
> ?+??ENDIF()
> ? ENDFOREACH()
> ?diff --git a/test/parsing/CMakeLists.txt
> b/test/parsing/CMakeLists.txt

While this patch indeed fixes the build issue for shared builds, it
does not for static builds.

In my opinion the macro?CMAKE_SHARED_LINKER_FLAGS is not the right
place to add the library. I would prefer to use TARGET_LINK_LIBRARIES.
Of course, it's tedious to add '-lm' to each CMakeLists.txt, so a macro
YAJL_LIBS should be defined and used instead.

Furthermore, linking with libmath is not required with every C library,
so the need for '-lm' could (should?) be detected and added to
YAJL_LIBS conditionally.

Best regards
J?rg Krause

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-04-19 19:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-19 17:13 [Buildroot] [PATCH v2 1/1] package/yajl: Update patch to link with libm Bernd Kuhls
2016-04-19 19:11 ` Jörg Krause

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.