cmake/modules/FindLibJsonC.cmake (94 lines of code) (raw):
# - Try to find LibJsonC include dirs and libraries
#
# Usage of this module as follows:
#
# find_package(LibJsonC)
#
# Variables used by this module, they can change the default behaviour and need
# to be set before calling find_package:
#
# Variables defined by this module:
#
# LibJsonC_FOUND System has libjson-c, include and library dirs found
# LibJsonC_INCLUDE_DIR The json-c include directories.
# LibJsonC_LIBRARY The json-c library, depending on the value of BUILD_SHARED_LIBS.
# LibJsonC_SHARED_LIBRARY The path to libjson-c.so
# LibJsonC_STATIC_LIBRARY The path to libjson-c.a
find_path(LibJsonC_INCLUDE_DIR
NAMES json-c/json.h
HINTS
${CMAKE_PREFIX_PATH}/include
${CMAKE_INSTALL_PREFIX}/include
/usr/include/json-c/
/usr/local/include/json-c/
)
if(${WIN32})
set(LibJsonC_SHARED_LIB_NAME json-c.lib)
set(LibJsonC_STATIC_LIB_NAME json-c-static.lib)
else()
set(LibJsonC_SHARED_LIB_NAME libjson-c.so)
set(LibJsonC_STATIC_LIB_NAME libjson-c.a)
endif()
find_library(LibJsonC_SHARED_LIBRARY
NAMES ${LibJsonC_SHARED_LIB_NAME}
HINTS
${CMAKE_PREFIX_PATH}/build/json-c
${CMAKE_PREFIX_PATH}/build
${CMAKE_PREFIX_PATH}
${CMAKE_PREFIX_PATH}/lib64
${CMAKE_PREFIX_PATH}/lib
${CMAKE_INSTALL_PREFIX}/build/json-c
${CMAKE_INSTALL_PREFIX}/build
${CMAKE_INSTALL_PREFIX}
${CMAKE_INSTALL_PREFIX}/lib64
${CMAKE_INSTALL_PREFIX}/lib
)
find_library(LibJsonC_STATIC_LIBRARY
NAMES ${LibJsonC_STATIC_LIB_NAME}
HINTS
${CMAKE_PREFIX_PATH}/build/json-c
${CMAKE_PREFIX_PATH}/build
${CMAKE_PREFIX_PATH}
${CMAKE_PREFIX_PATH}/lib64
${CMAKE_PREFIX_PATH}/lib
${CMAKE_INSTALL_PREFIX}/build/json-c
${CMAKE_INSTALL_PREFIX}/build
${CMAKE_INSTALL_PREFIX}
${CMAKE_INSTALL_PREFIX}/lib64
${CMAKE_INSTALL_PREFIX}/lib
)
if (BUILD_SHARED_LIBS)
set(LibJsonC_LIBRARY ${LibJsonC_SHARED_LIBRARY})
else()
set(LibJsonC_LIBRARY ${LibJsonC_STATIC_LIBRARY})
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibJsonC DEFAULT_MSG
LibJsonC_LIBRARY
LibJsonC_INCLUDE_DIR
)
mark_as_advanced(
LibJsonC_ROOT_DIR
LibJsonC_INCLUDE_DIR
LibJsonC_LIBRARY
LibJsonC_SHARED_LIBRARY
LibJsonC_STATIC_LIBRARY
)
# some versions of cmake have a super esoteric bug around capitalization differences between
# find dependency and find package, just avoid that here by checking and
# setting both.
if(LIBJSONC_FOUND OR LibJsonC_FOUND)
set(LIBJSONC_FOUND true)
set(LibJsonC_FOUND true)
message(STATUS "LibJsonC Include Dir: ${LibJsonC_INCLUDE_DIR}")
message(STATUS "LibJsonC Shared Lib: ${LibJsonC_SHARED_LIBRARY}")
message(STATUS "LibJsonC Static Lib: ${LibJsonC_STATIC_LIBRARY}")
if (NOT TARGET LibJsonC::Json AND (EXISTS "${LibJsonC_LIBRARY}"))
add_library(LibJsonC::Json UNKNOWN IMPORTED)
set_target_properties(LibJsonC::Json PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LibJsonC_INCLUDE_DIR}")
set_target_properties(LibJsonC::Json PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${LibJsonC_LIBRARY}")
endif()
endif()