Browse Source

Merge pull request #450 from drizt/subproject

Allow use json-c cmake as subproject
tags/json-c-0.14-20200419
Eric Haszlakiewicz GitHub 7 years ago
parent
commit
ebe520e96e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 52 additions and 46 deletions
  1. +52
    -46
      CMakeLists.txt

+ 52
- 46
CMakeLists.txt View File

@@ -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)

Loading…
Cancel
Save