2016-08-24 00:16:13 -07:00
|
|
|
#Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
|
|
2016-09-25 18:49:34 -04:00
|
|
|
cmake_minimum_required(VERSION 2.8.7)
|
2017-10-09 13:16:00 -04:00
|
|
|
cmake_policy(SET CMP0048 NEW)
|
|
|
|
|
project(json-c VERSION 0.12.99)
|
|
|
|
|
|
2016-08-24 00:16:13 -07:00
|
|
|
|
2017-10-03 22:50:29 -04:00
|
|
|
include(CheckSymbolExists)
|
|
|
|
|
|
|
|
|
|
check_symbol_exists(strtoll "stdlib.h" HAVE_STRTOLL)
|
|
|
|
|
|
|
|
|
|
set(cmake_strtoll "strtoll")
|
|
|
|
|
if (NOT HAVE_STRTOLL)
|
|
|
|
|
# Use _strtoi64 if strtoll is not available.
|
|
|
|
|
check_symbol_exists(_strtoi64 stdlib.h have_strtoi64)
|
|
|
|
|
if (have_strtoi64)
|
|
|
|
|
set(HAVE_STRTOLL 1)
|
|
|
|
|
set(cmake_strtoll "_strtoi64")
|
|
|
|
|
# could do the same for strtoull, if needed
|
|
|
|
|
endif ()
|
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-24 00:16:13 -07:00
|
|
|
if(MSVC)
|
2016-09-25 22:03:56 -04:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4100 /wd4996 /wd4244 /wd4706 /wd4702 /wd4127 /wd4701")
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4100 /wd4996 /wd4244 /wd4706 /wd4702 /wd4127 /wd4701")
|
2017-10-03 22:50:29 -04:00
|
|
|
set(cmake_create_config 1)
|
2017-03-25 16:31:22 -03:00
|
|
|
elseif(MINGW)
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -D_GNU_SOURCE=1")
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -D_GNU_SOURCE=1")
|
|
|
|
|
if (MSYS OR CMAKE_GENERATOR STREQUAL "Unix Makefiles")
|
|
|
|
|
execute_process(COMMAND echo ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
|
execute_process(COMMAND sh autogen.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
|
execute_process(COMMAND sh ./configure WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
|
file(COPY ./config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
|
|
|
|
|
file(COPY ./json_config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
|
|
|
|
|
else()
|
2017-10-03 22:50:29 -04:00
|
|
|
set(cmake_create_config 1)
|
2017-03-25 16:31:22 -03:00
|
|
|
endif()
|
2016-09-25 22:03:56 -04:00
|
|
|
elseif(UNIX)
|
2016-08-24 00:16:13 -07:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
2017-05-03 11:29:12 +03:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -D_GNU_SOURCE")
|
2016-09-26 00:19:46 -04:00
|
|
|
execute_process(COMMAND echo ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
|
execute_process(COMMAND sh autogen.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
|
execute_process(COMMAND ./configure WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
2016-09-25 22:03:56 -04:00
|
|
|
file(COPY ./config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
|
|
|
|
|
file(COPY ./json_config.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
|
2016-08-24 00:16:13 -07:00
|
|
|
endif()
|
|
|
|
|
|
2017-10-03 22:50:29 -04:00
|
|
|
if (cmake_create_config)
|
|
|
|
|
file(REMOVE ./config.h) # make sure any stale one is gone
|
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
|
|
|
|
|
file(COPY ./json_config.h.win32 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
|
|
|
|
|
file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h)
|
|
|
|
|
endif ()
|
|
|
|
|
|
2016-08-24 00:16:13 -07:00
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
|
|
|
|
|
|
2017-09-17 21:27:07 -04:00
|
|
|
set(JSON_C_PUBLIC_HEADERS
|
2016-08-24 00:16:13 -07:00
|
|
|
./json.h
|
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/config.h
|
2017-09-17 21:27:07 -04:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/json_config.h
|
2016-08-24 00:16:13 -07:00
|
|
|
./arraylist.h
|
|
|
|
|
./debug.h
|
2017-09-17 21:27:07 -04:00
|
|
|
./json_c_version.h
|
2016-08-24 00:16:13 -07:00
|
|
|
./json_inttypes.h
|
|
|
|
|
./json_object.h
|
2016-10-25 17:39:16 +03:00
|
|
|
./json_pointer.h
|
2016-08-24 00:16:13 -07:00
|
|
|
./json_tokener.h
|
|
|
|
|
./json_util.h
|
|
|
|
|
./linkhash.h
|
2017-09-17 21:27:07 -04:00
|
|
|
./printbuf.h
|
|
|
|
|
)
|
|
|
|
|
set(JSON_C_HEADERS
|
|
|
|
|
${JSON_C_PUBLIC_HEADERS}
|
|
|
|
|
./json_object_private.h
|
|
|
|
|
./random_seed.h
|
2017-09-06 23:40:20 -04:00
|
|
|
./strerror_override.h
|
|
|
|
|
./strerror_override_private.h
|
2017-09-17 21:27:07 -04:00
|
|
|
./math_compat.h
|
|
|
|
|
./snprintf_compat.h
|
|
|
|
|
./strdup_compat.h
|
2016-11-16 17:04:41 +02:00
|
|
|
./vasprintf_compat.h
|
2016-08-24 00:16:13 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(JSON_C_SOURCES
|
|
|
|
|
./arraylist.c
|
|
|
|
|
./debug.c
|
2017-10-03 22:50:29 -04:00
|
|
|
./json_c_version.c
|
2016-08-24 00:16:13 -07:00
|
|
|
./json_object.c
|
2017-10-03 22:50:29 -04:00
|
|
|
./json_object_iterator.c
|
2016-10-25 17:39:16 +03:00
|
|
|
./json_pointer.c
|
2016-08-24 00:16:13 -07:00
|
|
|
./json_tokener.c
|
|
|
|
|
./json_util.c
|
2017-10-03 22:50:29 -04:00
|
|
|
./json_visit.c
|
2016-08-24 00:16:13 -07:00
|
|
|
./linkhash.c
|
|
|
|
|
./printbuf.c
|
|
|
|
|
./random_seed.c
|
2017-07-30 07:37:17 +03:00
|
|
|
./strerror_override.c
|
2016-08-24 00:16:13 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_library(json-c
|
2017-05-03 11:59:31 +03:00
|
|
|
SHARED
|
|
|
|
|
${JSON_C_SOURCES}
|
|
|
|
|
${JSON_C_HEADERS}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_library(json-c-static
|
|
|
|
|
STATIC
|
2016-08-24 00:16:13 -07:00
|
|
|
${JSON_C_SOURCES}
|
|
|
|
|
${JSON_C_HEADERS}
|
2016-09-25 22:03:56 -04:00
|
|
|
)
|
2016-08-24 00:16:13 -07:00
|
|
|
|
2016-09-26 00:09:55 -04:00
|
|
|
set_property(TARGET json-c PROPERTY C_STANDARD 99)
|
2017-06-19 18:12:03 +03:00
|
|
|
set_property(TARGET json-c-static PROPERTY C_STANDARD 99)
|
2017-06-19 18:08:13 +03:00
|
|
|
set_target_properties(json-c-static PROPERTIES OUTPUT_NAME json-c)
|
2016-09-26 00:09:55 -04:00
|
|
|
|
2017-05-03 11:59:31 +03:00
|
|
|
install(TARGETS json-c json-c-static
|
2016-09-25 14:42:14 -04:00
|
|
|
RUNTIME DESTINATION bin
|
|
|
|
|
LIBRARY DESTINATION lib
|
2016-09-25 22:03:56 -04:00
|
|
|
ARCHIVE DESTINATION lib
|
|
|
|
|
)
|
2016-09-25 14:42:14 -04:00
|
|
|
|
2017-09-17 21:27:07 -04:00
|
|
|
install(FILES ${JSON_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/json-c )
|
2017-10-09 13:16:00 -04:00
|
|
|
|
|
|
|
|
if (UNIX)
|
|
|
|
|
set(prefix ${CMAKE_INSTALL_PREFIX})
|
|
|
|
|
set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
|
|
|
|
|
set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
|
|
|
|
|
set(includedir ${CMAKE_INSTALL_PREFIX}/include)
|
|
|
|
|
set(VERSION ${PROJECT_VERSION})
|
|
|
|
|
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}")
|
|
|
|
|
endif ()
|