@@ -159,14 +159,14 @@ if (WIN32)
endif()
# Once we've done basic symbol/header searches let's add them in.
configure_file(${CMAKE_SOURCE_DIR}/cmake/config.h.in ${CMAKE _BINARY_DIR}/config.h)
message(STATUS "Written ${CMAKE _BINARY_DIR}/config.h")
configure_file(${CMAKE_SOURCE_DIR}/cmake/json_config.h.in ${CMAKE _BINARY_DIR}/json_config.h)
message(STATUS "Written ${CMAKE _BINARY_DIR}/json_config.h")
configure_file(${PROJECT_SOURCE_DIR}/cmake/config.h.in ${PROJECT _BINARY_DIR}/config.h)
message(STATUS "Written ${PROJECT _BINARY_DIR}/config.h")
configure_file(${PROJECT_SOURCE_DIR}/cmake/json_config.h.in ${PROJECT _BINARY_DIR}/json_config.h)
message(STATUS "Written ${PROJECT _BINARY_DIR}/json_config.h")
configure_package_config_file(
"cmake/Config.cmake.in"
${CMAKE _BINARY_DIR}/${PROJECT_NAME}Config.cmake
${PROJECT _BINARY_DIR}/${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)
@@ -188,53 +188,53 @@ elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
endif()
set(JSON_C_PUBLIC_HEADERS
${CMAKE _BINARY_DIR}/config.h
${CMAKE _BINARY_DIR}/json_config.h
${CMAKE _SOURCE_DIR}/json.h
${CMAKE _SOURCE_DIR}/arraylist.h
${CMAKE _SOURCE_DIR}/debug.h
${CMAKE _SOURCE_DIR}/json_c_version.h
${CMAKE _SOURCE_DIR}/json_inttypes.h
${CMAKE _SOURCE_DIR}/json_object.h
${CMAKE _SOURCE_DIR}/json_object_iterator.h
${CMAKE _SOURCE_DIR}/json_pointer.h
${CMAKE _SOURCE_DIR}/json_tokener.h
${CMAKE _SOURCE_DIR}/json_util.h
${CMAKE _SOURCE_DIR}/linkhash.h
${CMAKE _SOURCE_DIR}/printbuf.h
${PROJECT _BINARY_DIR}/config.h
${PROJECT _BINARY_DIR}/json_config.h
${PROJECT _SOURCE_DIR}/json.h
${PROJECT _SOURCE_DIR}/arraylist.h
${PROJECT _SOURCE_DIR}/debug.h
${PROJECT _SOURCE_DIR}/json_c_version.h
${PROJECT _SOURCE_DIR}/json_inttypes.h
${PROJECT _SOURCE_DIR}/json_object.h
${PROJECT _SOURCE_DIR}/json_object_iterator.h
${PROJECT _SOURCE_DIR}/json_pointer.h
${PROJECT _SOURCE_DIR}/json_tokener.h
${PROJECT _SOURCE_DIR}/json_util.h
${PROJECT _SOURCE_DIR}/linkhash.h
${PROJECT _SOURCE_DIR}/printbuf.h
)
set(JSON_C_HEADERS
${JSON_C_PUBLIC_HEADERS}
${CMAKE _SOURCE_DIR}/json_object_private.h
${CMAKE _SOURCE_DIR}/random_seed.h
${CMAKE _SOURCE_DIR}/strerror_override.h
${CMAKE _SOURCE_DIR}/strerror_override_private.h
${CMAKE _SOURCE_DIR}/math_compat.h
${CMAKE _SOURCE_DIR}/snprintf_compat.h
${CMAKE _SOURCE_DIR}/strdup_compat.h
${CMAKE _SOURCE_DIR}/vasprintf_compat.h
${PROJECT _SOURCE_DIR}/json_object_private.h
${PROJECT _SOURCE_DIR}/random_seed.h
${PROJECT _SOURCE_DIR}/strerror_override.h
${PROJECT _SOURCE_DIR}/strerror_override_private.h
${PROJECT _SOURCE_DIR}/math_compat.h
${PROJECT _SOURCE_DIR}/snprintf_compat.h
${PROJECT _SOURCE_DIR}/strdup_compat.h
${PROJECT _SOURCE_DIR}/vasprintf_compat.h
)
set(JSON_C_SOURCES
${CMAKE _SOURCE_DIR}/arraylist.c
${CMAKE _SOURCE_DIR}/debug.c
${CMAKE _SOURCE_DIR}/json_c_version.c
${CMAKE _SOURCE_DIR}/json_object.c
${CMAKE _SOURCE_DIR}/json_object_iterator.c
${CMAKE _SOURCE_DIR}/json_pointer.c
${CMAKE _SOURCE_DIR}/json_tokener.c
${CMAKE _SOURCE_DIR}/json_util.c
${CMAKE _SOURCE_DIR}/json_visit.c
${CMAKE _SOURCE_DIR}/linkhash.c
${CMAKE _SOURCE_DIR}/printbuf.c
${CMAKE _SOURCE_DIR}/random_seed.c
${CMAKE _SOURCE_DIR}/strerror_override.c
${PROJECT _SOURCE_DIR}/arraylist.c
${PROJECT _SOURCE_DIR}/debug.c
${PROJECT _SOURCE_DIR}/json_c_version.c
${PROJECT _SOURCE_DIR}/json_object.c
${PROJECT _SOURCE_DIR}/json_object_iterator.c
${PROJECT _SOURCE_DIR}/json_pointer.c
${PROJECT _SOURCE_DIR}/json_tokener.c
${PROJECT _SOURCE_DIR}/json_util.c
${PROJECT _SOURCE_DIR}/json_visit.c
${PROJECT _SOURCE_DIR}/linkhash.c
${PROJECT _SOURCE_DIR}/printbuf.c
${PROJECT _SOURCE_DIR}/random_seed.c
${PROJECT _SOURCE_DIR}/strerror_override.c
)
include_directories(${CMAKE _SOURCE_DIR})
include_directories(${CMAKE _BINARY_DIR})
include_directories(${PROJECT _SOURCE_DIR})
include_directories(${PROJECT _BINARY_DIR})
# If -DBUILD_SHARED_LIBS is set in the CMake command-line, we'll be able to create shared libs, otherwise this would
# generate static libs. Good enough for most use-cases unless there's some serious requirement to create both
@@ -244,6 +244,12 @@ add_library(${PROJECT_NAME}
${JSON_C_HEADERS}
)
# If json-c is used as subroject it set to target correct interface -I flags and allow
# to build external target without extra include_directories(...)
set_property(TARGET ${PROJECT_NAME} PROPERTY
INTERFACE_INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}
)
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
@@ -251,9 +257,9 @@ install(TARGETS ${PROJECT_NAME}
)
if (UNIX OR MINGW OR CYGWIN)
configure_file(json-c.pc.in json-c.pc @ONLY)
set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
install(FILES ${CMAKE _BINARY_DIR}/json-c.pc DESTINATION "${INSTALL_PKGCONFIG_DIR}")
configure_file(json-c.pc.in json-c.pc @ONLY)
set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
install(FILES ${PROJECT _BINARY_DIR}/json-c.pc DESTINATION "${INSTALL_PKGCONFIG_DIR}")
endif ()
install(FILES ${JSON_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/json-c)