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