1*4882a593SmuzhiyunFrom b47f6a50925efb8c8707b1faed5561a4b66ffdb1 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Samuel Martin <s.martin49@gmail.com>
3*4882a593SmuzhiyunDate: Sun, 24 Apr 2016 18:45:27 +0200
4*4882a593SmuzhiyunSubject: [PATCH] Link libyajl{,_s} with libm when isnan is not brought by the
5*4882a593Smuzhiyun libc
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunCheck whether isnan is provided by the libc library, otherwise make sure
8*4882a593Smuzhiyunyajl libraries are link against libm.
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunNote that setting libm as PUBLIC link libraries enable the transitivity
11*4882a593Smuzhiyun[1, 2]; therefore it will be automatically passed to target linking
12*4882a593Smuzhiyunagainst libyajl{,_s}.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunThis patch also makes sure the link libraries will appear in the yajl.pc
15*4882a593Smuzhiyunfile.
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun[1] https://cmake.org/cmake/help/v3.5/command/target_link_libraries.html
18*4882a593Smuzhiyun[2] https://cmake.org/cmake/help/v3.5/manual/cmake-buildsystem.7.html#target-usage-requirements
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunSigned-off-by: Samuel Martin <s.martin49@gmail.com>
21*4882a593Smuzhiyun---
22*4882a593Smuzhiyun src/CMakeLists.txt | 10 ++++++++++
23*4882a593Smuzhiyun src/yajl.pc.cmake  |  2 +-
24*4882a593Smuzhiyun 2 files changed, 11 insertions(+), 1 deletion(-)
25*4882a593Smuzhiyun
26*4882a593Smuzhiyundiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
27*4882a593Smuzhiyunindex b487bfd..a88698f 100644
28*4882a593Smuzhiyun--- a/src/CMakeLists.txt
29*4882a593Smuzhiyun+++ b/src/CMakeLists.txt
30*4882a593Smuzhiyun@@ -35,11 +35,21 @@ SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig)
31*4882a593Smuzhiyun # set the output path for libraries
32*4882a593Smuzhiyun SET(LIBRARY_OUTPUT_PATH ${libDir})
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun+SET(yajl_lib_link)
35*4882a593Smuzhiyun+INCLUDE(CheckLibraryExists)
36*4882a593Smuzhiyun+CHECK_LIBRARY_EXISTS(c isnan "" HAVE_LIBC_ISNAN)
37*4882a593Smuzhiyun+
38*4882a593Smuzhiyun+IF(NOT HAVE_LIBC_ISNAN)
39*4882a593Smuzhiyun+  LIST(APPEND yajl_lib_link "-lm")
40*4882a593Smuzhiyun+ENDIF(NOT HAVE_LIBC_ISNAN)
41*4882a593Smuzhiyun+
42*4882a593Smuzhiyun ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS})
43*4882a593Smuzhiyun SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl)
44*4882a593Smuzhiyun+TARGET_LINK_LIBRARIES(yajl_s PUBLIC ${yajl_lib_link})
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun IF(BUILD_SHARED_LIBS)
47*4882a593Smuzhiyun ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS})
48*4882a593Smuzhiyun+TARGET_LINK_LIBRARIES(yajl PUBLIC ${yajl_lib_link})
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun #### setup shared library version number
51*4882a593Smuzhiyun SET_TARGET_PROPERTIES(yajl PROPERTIES
52*4882a593Smuzhiyundiff --git a/src/yajl.pc.cmake b/src/yajl.pc.cmake
53*4882a593Smuzhiyunindex 6eaca14..4681dd4 100644
54*4882a593Smuzhiyun--- a/src/yajl.pc.cmake
55*4882a593Smuzhiyun+++ b/src/yajl.pc.cmake
56*4882a593Smuzhiyun@@ -6,4 +6,4 @@ Name: Yet Another JSON Library
57*4882a593Smuzhiyun Description: A Portable JSON parsing and serialization library in ANSI C
58*4882a593Smuzhiyun Version: ${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO}
59*4882a593Smuzhiyun Cflags: -I${dollar}{includedir}
60*4882a593Smuzhiyun-Libs: -L${dollar}{libdir} -lyajl
61*4882a593Smuzhiyun+Libs: -L${dollar}{libdir} -lyajl ${yajl_lib_link}
62*4882a593Smuzhiyun--
63*4882a593Smuzhiyun2.8.0
64*4882a593Smuzhiyun
65