From 1a7923d1a0fba3b69352dfe0411019ccd821112e Mon Sep 17 00:00:00 2001 From: Vicente Olivert Riera Date: Wed, 28 Oct 2015 15:39:43 +0000 Subject: [PATCH 1/4] Install the pkgconfig file in the usual location Signed-off-by: Vicente Olivert Riera --- src/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 99cf9e95..3e047c00 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,7 +30,7 @@ ADD_DEFINITIONS(-DYAJL_BUILD) # set up some paths SET (libDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) SET (incDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/include/yajl) -SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig) +SET (pcDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib${LIB_SUFFIX}/pkgconfig) # set the output path for libraries SET(LIBRARY_OUTPUT_PATH ${libDir}) @@ -61,7 +61,7 @@ FILE(MAKE_DIRECTORY ${incDir}) # generate build-time source SET(dollar $) CONFIGURE_FILE(api/yajl_version.h.cmake ${incDir}/yajl_version.h) -CONFIGURE_FILE(yajl.pc.cmake ${shareDir}/yajl.pc) +CONFIGURE_FILE(yajl.pc.cmake ${pcDir}/yajl.pc) # copy public headers to output directory FOREACH (header ${PUB_HDRS}) @@ -84,4 +84,4 @@ INSTALL(TARGETS yajl INSTALL(TARGETS yajl_s ARCHIVE DESTINATION lib${LIB_SUFFIX}) INSTALL(FILES ${PUB_HDRS} DESTINATION include/yajl) INSTALL(FILES ${incDir}/yajl_version.h DESTINATION include/yajl) -INSTALL(FILES ${shareDir}/yajl.pc DESTINATION share/pkgconfig) +INSTALL(FILES ${pcDir}/yajl.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig) From 6d09f11b8fd358cab0e31b965327e64a599f9ce9 Mon Sep 17 00:00:00 2001 From: Vicente Olivert Riera Date: Wed, 28 Oct 2015 15:45:10 +0000 Subject: [PATCH 2/4] Let the shared and the static library have the same name The will be differentiated by the extension (.so or .a) Signed-off-by: Vicente Olivert Riera --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3e047c00..a111579c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -36,6 +36,7 @@ SET (pcDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib${LIB_SUFFIX}/pkg SET(LIBRARY_OUTPUT_PATH ${libDir}) ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) +SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl) ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) From 814e039f53d2afdf9721632d568bfa9819bc0409 Mon Sep 17 00:00:00 2001 From: Vicente Olivert Riera Date: Wed, 28 Oct 2015 15:50:49 +0000 Subject: [PATCH 3/4] Allow the user to not build the shared library Signed-off-by: Vicente Olivert Riera --- src/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a111579c..7d4bd3f1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -38,6 +38,7 @@ SET(LIBRARY_OUTPUT_PATH ${libDir}) ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl) +IF(BUILD_SHARED_LIBS) ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) #### setup shared library version number @@ -52,6 +53,7 @@ IF(APPLE) SET_TARGET_PROPERTIES(yajl PROPERTIES INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") ENDIF(APPLE) +ENDIF(BUILD_SHARED_LIBS) #### build up an sdk as a post build step @@ -78,10 +80,12 @@ INCLUDE_DIRECTORIES(${incDir}/..) # at build time you may specify the cmake variable LIB_SUFFIX to handle # 64-bit systems which use 'lib64' +IF(BUILD_SHARED_LIBS) INSTALL(TARGETS yajl RUNTIME DESTINATION lib${LIB_SUFFIX} LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX}) +ENDIF(BUILD_SHARED_LIBS) INSTALL(TARGETS yajl_s ARCHIVE DESTINATION lib${LIB_SUFFIX}) INSTALL(FILES ${PUB_HDRS} DESTINATION include/yajl) INSTALL(FILES ${incDir}/yajl_version.h DESTINATION include/yajl) From f272fb4675fbd67c58abbc63596229a3228d776b Mon Sep 17 00:00:00 2001 From: Vicente Olivert Riera Date: Wed, 28 Oct 2015 16:00:21 +0000 Subject: [PATCH 4/4] Fix json_reformat, yajl_test and gen-extra-close linking with uClibc json_reformat, yajl_test and gen-extra-close call yajl_gen_* functions, which internally use isnan() and isinf(). On glibc, these are provided by libc, but on uClibc you need to link with -lm (like the spec says), otherwise the build process will fail with an error like this one: yajl_gen.c:(.text+0x67c): undefined reference to `__isnan' yajl_gen.c:(.text+0x70c): undefined reference to `__isinf' Signed-off-by: Vicente Olivert Riera --- reformatter/CMakeLists.txt | 2 +- test/api/CMakeLists.txt | 2 +- test/parsing/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/reformatter/CMakeLists.txt b/reformatter/CMakeLists.txt index 52a9bee8..e6308512 100644 --- a/reformatter/CMakeLists.txt +++ b/reformatter/CMakeLists.txt @@ -26,7 +26,7 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) ADD_EXECUTABLE(json_reformat ${SRCS}) -TARGET_LINK_LIBRARIES(json_reformat yajl_s) +TARGET_LINK_LIBRARIES(json_reformat yajl_s m) # In some environments, we must explicitly link libm (like qnx, # thanks @shahbag) diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt index cd65a542..e0ce2f64 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() diff --git a/test/parsing/CMakeLists.txt b/test/parsing/CMakeLists.txt index c22a3887..c37e5e5b 100644 --- a/test/parsing/CMakeLists.txt +++ b/test/parsing/CMakeLists.txt @@ -20,4 +20,4 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib) ADD_EXECUTABLE(yajl_test ${SRCS}) -TARGET_LINK_LIBRARIES(yajl_test yajl_s) +TARGET_LINK_LIBRARIES(yajl_test yajl_s m)