1*4882a593SmuzhiyunFrom 425b25993ef58d07aa18c5d4938876a90e22c47a Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
3*4882a593SmuzhiyunDate: Sat, 9 Apr 2016 23:24:27 +0200
4*4882a593SmuzhiyunSubject: [PATCH] Link with shared libyajl in a shared build
5*4882a593SmuzhiyunMIME-Version: 1.0
6*4882a593SmuzhiyunContent-Type: text/plain; charset=UTF-8
7*4882a593SmuzhiyunContent-Transfer-Encoding: 8bit
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunBuilding yajl in a static context fails in a parallel build:
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun[ 21%] Linking C executable gen-extra-close
12*4882a593Smuzhiyun[ 26%] Building C object src/CMakeFiles/yajl_s.dir/yajl_buf.c.o
13*4882a593Smuzhiyun/home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/bin/ld.real: cannot find -lyajl
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunFix this issue by linking against the shared libyail in a shared build. Apply
16*4882a593Smuzhiyunthis fix also to all other build targets who are linking against the library.
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunUpstream status: Pending
19*4882a593Smuzhiyunhttps://github.com/lloyd/yajl/pull/187
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun[Update: align with commit 302563539dacb284576a443401cdfd061eb2e1e8 and remove
22*4882a593Smuzhiyun linking with libm from test/api/CMakeLists.txt]
23*4882a593SmuzhiyunSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>
24*4882a593Smuzhiyun---
25*4882a593Smuzhiyun example/CMakeLists.txt      | 7 ++++++-
26*4882a593Smuzhiyun perf/CMakeLists.txt         | 6 +++++-
27*4882a593Smuzhiyun reformatter/CMakeLists.txt  | 6 +++++-
28*4882a593Smuzhiyun test/api/CMakeLists.txt     | 6 +++++-
29*4882a593Smuzhiyun test/parsing/CMakeLists.txt | 6 +++++-
30*4882a593Smuzhiyun verify/CMakeLists.txt       | 6 +++++-
31*4882a593Smuzhiyun 6 files changed, 31 insertions(+), 6 deletions(-)
32*4882a593Smuzhiyun
33*4882a593Smuzhiyundiff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
34*4882a593Smuzhiyunindex 0a7f622..8cfcef8 100644
35*4882a593Smuzhiyun--- a/example/CMakeLists.txt
36*4882a593Smuzhiyun+++ b/example/CMakeLists.txt
37*4882a593Smuzhiyun@@ -20,4 +20,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun ADD_EXECUTABLE(parse_config ${SRCS})
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun-TARGET_LINK_LIBRARIES(parse_config yajl_s)
42*4882a593Smuzhiyun+IF(BUILD_SHARED_LIBS)
43*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(parse_config yajl)
44*4882a593Smuzhiyun+ELSE()
45*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(parse_config yajl_s)
46*4882a593Smuzhiyun+ENDIF()
47*4882a593Smuzhiyun+
48*4882a593Smuzhiyundiff --git a/perf/CMakeLists.txt b/perf/CMakeLists.txt
49*4882a593Smuzhiyunindex b438d7a..40ba363 100644
50*4882a593Smuzhiyun--- a/perf/CMakeLists.txt
51*4882a593Smuzhiyun+++ b/perf/CMakeLists.txt
52*4882a593Smuzhiyun@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun ADD_EXECUTABLE(perftest ${SRCS})
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun-TARGET_LINK_LIBRARIES(perftest yajl_s)
57*4882a593Smuzhiyun+IF(BUILD_SHARED_LIBS)
58*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(perftest yajl)
59*4882a593Smuzhiyun+ELSE()
60*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(perftest yajl_s)
61*4882a593Smuzhiyun+ENDIF()
62*4882a593Smuzhiyundiff --git a/reformatter/CMakeLists.txt b/reformatter/CMakeLists.txt
63*4882a593Smuzhiyunindex 52a9bee..7629094 100644
64*4882a593Smuzhiyun--- a/reformatter/CMakeLists.txt
65*4882a593Smuzhiyun+++ b/reformatter/CMakeLists.txt
66*4882a593Smuzhiyun@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun ADD_EXECUTABLE(json_reformat ${SRCS})
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun-TARGET_LINK_LIBRARIES(json_reformat yajl_s)
71*4882a593Smuzhiyun+IF(BUILD_SHARED_LIBS)
72*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(json_reformat yajl)
73*4882a593Smuzhiyun+ELSE()
74*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(json_reformat yajl_s)
75*4882a593Smuzhiyun+ENDIF()
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun # In some environments, we must explicitly link libm (like qnx,
78*4882a593Smuzhiyun # thanks @shahbag)
79*4882a593Smuzhiyundiff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt
80*4882a593Smuzhiyunindex cd65a54..0c9debf 100644
81*4882a593Smuzhiyun--- a/test/api/CMakeLists.txt
82*4882a593Smuzhiyun+++ b/test/api/CMakeLists.txt
83*4882a593Smuzhiyun@@ -21,5 +21,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib)
84*4882a593Smuzhiyun FOREACH (test ${TESTS})
85*4882a593Smuzhiyun   GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)
86*4882a593Smuzhiyun   ADD_EXECUTABLE(${testProg} ${test})
87*4882a593Smuzhiyun-  TARGET_LINK_LIBRARIES(${testProg} yajl)
88*4882a593Smuzhiyun+  IF(BUILD_SHARED_LIBS)
89*4882a593Smuzhiyun+    TARGET_LINK_LIBRARIES(${testProg} yajl)
90*4882a593Smuzhiyun+  ELSE()
91*4882a593Smuzhiyun+    TARGET_LINK_LIBRARIES(${testProg} yajl_s)
92*4882a593Smuzhiyun+  ENDIF()
93*4882a593Smuzhiyun ENDFOREACH()
94*4882a593Smuzhiyundiff --git a/test/parsing/CMakeLists.txt b/test/parsing/CMakeLists.txt
95*4882a593Smuzhiyunindex c22a388..285f048 100644
96*4882a593Smuzhiyun--- a/test/parsing/CMakeLists.txt
97*4882a593Smuzhiyun+++ b/test/parsing/CMakeLists.txt
98*4882a593Smuzhiyun@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib)
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun ADD_EXECUTABLE(yajl_test ${SRCS})
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun-TARGET_LINK_LIBRARIES(yajl_test yajl_s)
103*4882a593Smuzhiyun+IF(BUILD_SHARED_LIBS)
104*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(yajl_test yajl)
105*4882a593Smuzhiyun+ELSE()
106*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(yajl_test yajl_s)
107*4882a593Smuzhiyun+ENDIF()
108*4882a593Smuzhiyundiff --git a/verify/CMakeLists.txt b/verify/CMakeLists.txt
109*4882a593Smuzhiyunindex 967fca1..06cb2dc 100644
110*4882a593Smuzhiyun--- a/verify/CMakeLists.txt
111*4882a593Smuzhiyun+++ b/verify/CMakeLists.txt
112*4882a593Smuzhiyun@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun ADD_EXECUTABLE(json_verify ${SRCS})
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun-TARGET_LINK_LIBRARIES(json_verify yajl_s)
117*4882a593Smuzhiyun+IF(BUILD_SHARED_LIBS)
118*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(json_verify yajl)
119*4882a593Smuzhiyun+ELSE()
120*4882a593Smuzhiyun+  TARGET_LINK_LIBRARIES(json_verify yajl_s)
121*4882a593Smuzhiyun+ENDIF()
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun # copy in the binary
124*4882a593Smuzhiyun GET_TARGET_PROPERTY(binPath json_verify LOCATION)
125*4882a593Smuzhiyun--
126*4882a593Smuzhiyun2.8.0
127*4882a593Smuzhiyun
128