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