1 # Many projects still are stuck using CMake 2.8 is several places so it's good to provide backward support too. This is 2 # specially true in old embedded systems (OpenWRT and friends) where CMake isn't necessarily upgraded. 3 cmake_minimum_required(VERSION 2.8) 4 5 if(POLICY CMP0048) 6 cmake_policy(SET CMP0048 NEW) 7 endif() 8 9 # JSON-C library is C only project. 10 if (CMAKE_VERSION VERSION_LESS 3.0) 11 project(json-c) 12 set(PROJECT_VERSION_MAJOR "0") 13 set(PROJECT_VERSION_MINOR "15") 14 set(PROJECT_VERSION_PATCH "0") 15 set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") 16 else() 17 project(json-c LANGUAGES C VERSION 0.15) 18 endif() 19 20 # If we've got 3.0 then it's good, let's provide support. Otherwise, leave it be. 21 if(POLICY CMP0038) 22 # Policy CMP0038 introduced was in CMake 3.0 23 cmake_policy(SET CMP0038 NEW) 24 endif() 25 26 if(POLICY CMP0054) 27 cmake_policy(SET CMP0054 NEW) 28 endif() 29 30 # set default build type if not specified by user 31 if(NOT CMAKE_BUILD_TYPE) 32 set(CMAKE_BUILD_TYPE debug) 33 endif() 34 35 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2") 36 37 # Include file check macros honor CMAKE_REQUIRED_LIBRARIES 38 # i.e. the check_include_file() calls will include -lm when checking. 39 if(POLICY CMP0075) 40 cmake_policy(SET CMP0075 NEW) 41 endif() 42 43 include(CTest) 44 45 if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING AND 46 (NOT MSVC OR NOT (MSVC_VERSION LESS 1800)) # Tests need at least VS2013 47 ) 48 add_subdirectory(tests) 49 endif() 50 51 if (NOT MSVC) # cmd line apps don't built on Windows currently. 52 add_subdirectory(apps) 53 endif() 54 55 # Set some packaging variables. 56 set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") 57 set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") 58 set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") 59 set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") 60 set(JSON_C_BUGREPORT "json-c@googlegroups.com") 61 set(CPACK_SOURCE_IGNORE_FILES 62 ${PROJECT_SOURCE_DIR}/build 63 ${PROJECT_SOURCE_DIR}/cmake-build-debug 64 ${PROJECT_SOURCE_DIR}/pack 65 ${PROJECT_SOURCE_DIR}/.idea 66 ${PROJECT_SOURCE_DIR}/.DS_Store 67 ${PROJECT_SOURCE_DIR}/.git 68 ${PROJECT_SOURCE_DIR}/.vscode) 69 70 include(CheckSymbolExists) 71 include(CheckIncludeFile) 72 include(CheckIncludeFiles) 73 include(CheckCSourceCompiles) 74 include(CheckTypeSize) 75 include(CPack) 76 include(GNUInstallDirs) 77 include(CMakePackageConfigHelpers) 78 79 option(BUILD_SHARED_LIBS "Default to building shared libraries" ON) 80 option(BUILD_STATIC_LIBS "Default to building static libraries" ON) 81 82 # Generate a release merge and test it to verify the correctness of republishing the package. 83 ADD_CUSTOM_TARGET(distcheck 84 COMMAND make package_source 85 COMMAND tar -xvf "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-Source.tar.gz" 86 COMMAND mkdir "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-Source/build" 87 COMMAND cmake "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-Source/" -B"./${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-Source/build/" 88 COMMAND make -C "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-Source/build" 89 COMMAND make test -C "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-Source/build" 90 COMMAND rm -rf "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-Source" 91 ) 92 93 # Enable or disable features. By default, all features are turned off. 94 option(DISABLE_BSYMBOLIC "Avoid linking with -Bsymbolic-function." OFF) 95 option(DISABLE_THREAD_LOCAL_STORAGE "Disable using Thread-Local Storage (HAVE___THREAD)." OFF) 96 option(DISABLE_WERROR "Avoid treating compiler warnings as fatal errors." OFF) 97 option(ENABLE_RDRAND "Enable RDRAND Hardware RNG Hash Seed." OFF) 98 option(ENABLE_THREADING "Enable partial threading support." OFF) 99 option(OVERRIDE_GET_RANDOM_SEED "Override json_c_get_random_seed() with custom code." OFF) 100 101 102 if (UNIX OR MINGW OR CYGWIN) 103 list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) 104 endif() 105 106 if (UNIX) 107 list(APPEND CMAKE_REQUIRED_LIBRARIES m) 108 endif() 109 110 if (MSVC) 111 list(APPEND CMAKE_REQUIRED_DEFINITIONS /D_CRT_SECURE_NO_DEPRECATE) 112 list(APPEND CMAKE_REQUIRED_FLAGS /wd4996) 113 endif() 114 115 if (NOT DISABLE_STATIC_FPIC) 116 # Use '-fPIC'/'-fPIE' option. 117 # This will allow other libraries to statically link in libjson-c.a 118 # which in turn prevents crashes in downstream apps that may use 119 # a different JSON library with identical symbol names. 120 set(CMAKE_POSITION_INDEPENDENT_CODE ON) 121 endif() 122 123 check_include_file("fcntl.h" HAVE_FCNTL_H) 124 check_include_file("inttypes.h" HAVE_INTTYPES_H) 125 check_include_file(stdarg.h HAVE_STDARG_H) 126 check_include_file(strings.h HAVE_STRINGS_H) 127 check_include_file(string.h HAVE_STRING_H) 128 check_include_file(syslog.h HAVE_SYSLOG_H) 129 130 131 check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) 132 133 check_include_file(unistd.h HAVE_UNISTD_H) 134 check_include_file(sys/types.h HAVE_SYS_TYPES_H) 135 check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H) # for getrusage 136 137 check_include_file("dlfcn.h" HAVE_DLFCN_H) 138 check_include_file("endian.h" HAVE_ENDIAN_H) 139 check_include_file("limits.h" HAVE_LIMITS_H) 140 check_include_file("locale.h" HAVE_LOCALE_H) 141 check_include_file("memory.h" HAVE_MEMORY_H) 142 143 check_include_file(stdint.h HAVE_STDINT_H) 144 check_include_file(stdlib.h HAVE_STDLIB_H) 145 check_include_file(sys/cdefs.h HAVE_SYS_CDEFS_H) 146 check_include_file(sys/param.h HAVE_SYS_PARAM_H) 147 check_include_file(sys/stat.h HAVE_SYS_STAT_H) 148 check_include_file(xlocale.h HAVE_XLOCALE_H) 149 150 if (HAVE_INTTYPES_H AND NOT MSVC) 151 set(JSON_C_HAVE_INTTYPES_H 1) 152 endif() 153 154 check_symbol_exists(_isnan "float.h" HAVE_DECL__ISNAN) 155 check_symbol_exists(_finite "float.h" HAVE_DECL__FINITE) 156 157 if ((MSVC AND NOT (MSVC_VERSION LESS 1800)) OR MINGW OR CYGWIN OR UNIX) 158 check_symbol_exists(INFINITY "math.h" HAVE_DECL_INFINITY) 159 check_symbol_exists(isinf "math.h" HAVE_DECL_ISINF) 160 check_symbol_exists(isnan "math.h" HAVE_DECL_ISNAN) 161 check_symbol_exists(nan "math.h" HAVE_DECL_NAN) 162 endif() 163 164 check_symbol_exists(_doprnt "stdio.h" HAVE_DOPRNT) 165 if (UNIX OR MINGW OR CYGWIN) 166 check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF) 167 endif() 168 check_symbol_exists(vasprintf "stdio.h" HAVE_VASPRINTF) 169 check_symbol_exists(vsnprintf "stdio.h" HAVE_VSNPRINTF) 170 check_symbol_exists(vprintf "stdio.h" HAVE_VPRINTF) 171 172 if (HAVE_FCNTL_H) 173 check_symbol_exists(open "fcntl.h" HAVE_OPEN) 174 endif() 175 if (HAVE_STDLIB_H) 176 check_symbol_exists(realloc "stdlib.h" HAVE_REALLOC) 177 endif() 178 if (HAVE_LOCALE_H) 179 check_symbol_exists(setlocale "locale.h" HAVE_SETLOCALE) 180 check_symbol_exists(uselocale "locale.h" HAVE_USELOCALE) 181 endif() 182 if (HAVE_STRINGS_H) 183 check_symbol_exists(strcasecmp "strings.h" HAVE_STRCASECMP) 184 check_symbol_exists(strncasecmp "strings.h" HAVE_STRNCASECMP) 185 endif() 186 if (HAVE_STRING_H) 187 check_symbol_exists(strdup "string.h" HAVE_STRDUP) 188 check_symbol_exists(strerror "string.h" HAVE_STRERROR) 189 endif() 190 if (HAVE_SYSLOG_H) 191 check_symbol_exists(vsyslog "syslog.h" HAVE_VSYSLOG) 192 endif() 193 if (HAVE_SYS_RESOURCE_H) 194 check_symbol_exists(getrusage "sys/resource.h" HAVE_GETRUSAGE) 195 endif() 196 197 check_symbol_exists(strtoll "stdlib.h" HAVE_STRTOLL) 198 check_symbol_exists(strtoull "stdlib.h" HAVE_STRTOULL) 199 200 set(json_c_strtoll "strtoll") 201 if (NOT HAVE_STRTOLL) 202 # Use _strtoi64 if strtoll is not available. 203 check_symbol_exists(_strtoi64 "stdlib.h" __have_strtoi64) 204 if (__have_strtoi64) 205 #set(HAVE_STRTOLL 1) 206 set(json_c_strtoll "_strtoi64") 207 endif() 208 endif() 209 210 set(json_c_strtoull "strtoull") 211 if (NOT HAVE_STRTOULL) 212 # Use _strtoui64 if strtoull is not available. 213 check_symbol_exists(_strtoui64 "stdlib.h" __have_strtoui64) 214 if (__have_strtoui64) 215 #set(HAVE_STRTOULL 1) 216 set(json_c_strtoull "_strtoui64") 217 endif() 218 endif() 219 220 221 check_type_size(int SIZEOF_INT) 222 check_type_size(int64_t SIZEOF_INT64_T) 223 check_type_size(long SIZEOF_LONG) 224 check_type_size("long long" SIZEOF_LONG_LONG) 225 check_type_size("size_t" SIZEOF_SIZE_T) 226 if (MSVC) 227 list(APPEND CMAKE_EXTRA_INCLUDE_FILES BaseTsd.h) 228 check_type_size("SSIZE_T" SIZEOF_SSIZE_T) 229 else() 230 check_type_size("ssize_t" SIZEOF_SSIZE_T) 231 endif() 232 233 check_c_source_compiles( 234 " 235 extern void json_object_get(); 236 __asm__(\".section .gnu.json_object_get\\n\\t.ascii \\\"Please link against libjson-c instead of libjson\\\"\\n\\t.text\"); 237 int main(int c, char *v) { return 0;} 238 " 239 HAS_GNU_WARNING_LONG) 240 241 check_c_source_compiles( 242 "int main() { int i, x = 0; i = __sync_add_and_fetch(&x,1); return x; }" 243 HAVE_ATOMIC_BUILTINS) 244 245 if (NOT DISABLE_THREAD_LOCAL_STORAGE) 246 check_c_source_compiles( 247 "__thread int x = 0; int main() { return 0; }" 248 HAVE___THREAD) 249 250 if (HAVE___THREAD) 251 set(SPEC___THREAD __thread) 252 elseif (MSVC) 253 set(SPEC___THREAD __declspec(thread)) 254 endif() 255 endif() 256 257 # Hardware random number is not available on Windows? Says, config.h.win32. Best to preserve compatibility. 258 if (WIN32) 259 set(ENABLE_RDRAND 0) 260 endif() 261 262 # Once we've done basic symbol/header searches let's add them in. 263 configure_file(${PROJECT_SOURCE_DIR}/cmake/config.h.in ${PROJECT_BINARY_DIR}/config.h) 264 message(STATUS "Wrote ${PROJECT_BINARY_DIR}/config.h") 265 configure_file(${PROJECT_SOURCE_DIR}/cmake/json_config.h.in ${PROJECT_BINARY_DIR}/json_config.h) 266 message(STATUS "Wrote ${PROJECT_BINARY_DIR}/json_config.h") 267 268 if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") 269 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections") 270 if ("${DISABLE_WERROR}" STREQUAL "OFF") 271 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") 272 endif() 273 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") 274 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-qual") 275 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=deprecated-declarations") 276 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra") 277 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wwrite-strings") 278 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter") 279 if (NOT WIN32) 280 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wstrict-prototypes") 281 endif() 282 283 add_definitions(-D_GNU_SOURCE) 284 elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") 285 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DEBUG") 286 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4100") 287 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996") 288 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4244") 289 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4706") 290 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4702") 291 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127") 292 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4701") 293 endif() 294 295 if (NOT ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")) 296 check_c_source_compiles( 297 " 298 /* uClibc toolchains without threading barf when _REENTRANT is defined */ 299 #define _REENTRANT 1 300 #include <sys/types.h> 301 int main (void) 302 { 303 return 0; 304 } 305 " 306 REENTRANT_WORKS 307 ) 308 if (REENTRANT_WORKS) 309 add_compile_options("-D_REENTRANT") 310 endif() 311 312 # OSX Mach-O doesn't support linking with '-Bsymbolic-functions'. 313 # Others may not support it, too. 314 list(APPEND CMAKE_REQUIRED_LIBRARIES "-Wl,-Bsymbolic-functions") 315 check_c_source_compiles( 316 " 317 int main (void) 318 { 319 return 0; 320 } 321 " 322 BSYMBOLIC_WORKS 323 ) 324 list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "-Wl,-Bsymbolic-functions") 325 if (DISABLE_BSYMBOLIC STREQUAL "OFF" AND BSYMBOLIC_WORKS) 326 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic-functions") 327 # XXX need cmake>=3.13 for this: 328 #add_link_options("-Wl,-Bsymbolic-functions") 329 endif() 330 331 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/check-version-script.sym" "TEST { global: *; };") 332 list(APPEND CMAKE_REQUIRED_LIBRARIES "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/check-version-script.sym") 333 check_c_source_compiles( 334 " 335 int main (void) 336 { 337 return 0; 338 } 339 " 340 VERSION_SCRIPT_WORKS 341 ) 342 list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/check-version-script.sym") 343 if (VERSION_SCRIPT_WORKS) 344 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/json-c.sym") 345 endif() 346 endif() 347 348 if ($ENV{VALGRIND}) 349 # Build so that valgrind doesn't complain about linkhash.c 350 add_definitions(-DVALGRIND=1) 351 endif() 352 353 set(JSON_C_PUBLIC_HEADERS 354 # Note: config.h is _not_ included here 355 ${PROJECT_BINARY_DIR}/json_config.h 356 357 ${PROJECT_SOURCE_DIR}/json.h 358 ${PROJECT_SOURCE_DIR}/arraylist.h 359 ${PROJECT_SOURCE_DIR}/debug.h 360 ${PROJECT_SOURCE_DIR}/json_c_version.h 361 ${PROJECT_SOURCE_DIR}/json_inttypes.h 362 ${PROJECT_SOURCE_DIR}/json_object.h 363 ${PROJECT_SOURCE_DIR}/json_object_iterator.h 364 ${PROJECT_SOURCE_DIR}/json_pointer.h 365 ${PROJECT_SOURCE_DIR}/json_tokener.h 366 ${PROJECT_SOURCE_DIR}/json_types.h 367 ${PROJECT_SOURCE_DIR}/json_util.h 368 ${PROJECT_SOURCE_DIR}/json_visit.h 369 ${PROJECT_SOURCE_DIR}/linkhash.h 370 ${PROJECT_SOURCE_DIR}/printbuf.h 371 ) 372 373 set(JSON_C_HEADERS 374 ${JSON_C_PUBLIC_HEADERS} 375 ${PROJECT_SOURCE_DIR}/json_object_private.h 376 ${PROJECT_SOURCE_DIR}/random_seed.h 377 ${PROJECT_SOURCE_DIR}/strerror_override.h 378 ${PROJECT_SOURCE_DIR}/strerror_override_private.h 379 ${PROJECT_SOURCE_DIR}/math_compat.h 380 ${PROJECT_SOURCE_DIR}/snprintf_compat.h 381 ${PROJECT_SOURCE_DIR}/strdup_compat.h 382 ${PROJECT_SOURCE_DIR}/vasprintf_compat.h 383 ) 384 385 set(JSON_C_SOURCES 386 ${PROJECT_SOURCE_DIR}/arraylist.c 387 ${PROJECT_SOURCE_DIR}/debug.c 388 ${PROJECT_SOURCE_DIR}/json_c_version.c 389 ${PROJECT_SOURCE_DIR}/json_object.c 390 ${PROJECT_SOURCE_DIR}/json_object_iterator.c 391 ${PROJECT_SOURCE_DIR}/json_pointer.c 392 ${PROJECT_SOURCE_DIR}/json_tokener.c 393 ${PROJECT_SOURCE_DIR}/json_util.c 394 ${PROJECT_SOURCE_DIR}/json_visit.c 395 ${PROJECT_SOURCE_DIR}/linkhash.c 396 ${PROJECT_SOURCE_DIR}/printbuf.c 397 ${PROJECT_SOURCE_DIR}/random_seed.c 398 ${PROJECT_SOURCE_DIR}/strerror_override.c 399 ) 400 401 include_directories(${PROJECT_SOURCE_DIR}) 402 include_directories(${PROJECT_BINARY_DIR}) 403 404 add_subdirectory(doc) 405 406 # uninstall 407 add_custom_target(uninstall 408 COMMAND cat ${PROJECT_BINARY_DIR}/install_manifest.txt | xargs rm 409 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 410 ) 411 412 # XXX for a normal full distribution we'll need to figure out 413 # XXX how to build both shared and static libraries. 414 # Probably leverage that to build a local VALGRIND=1 library for testing too. 415 add_library(${PROJECT_NAME} 416 ${JSON_C_SOURCES} 417 ${JSON_C_HEADERS} 418 ) 419 set_target_properties(${PROJECT_NAME} PROPERTIES 420 VERSION 5.1.0 421 SOVERSION 5) 422 list(APPEND CMAKE_TARGETS ${PROJECT_NAME}) 423 # If json-c is used as subroject it set to target correct interface -I flags and allow 424 # to build external target without extra include_directories(...) 425 target_include_directories(${PROJECT_NAME} 426 PUBLIC 427 $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> 428 $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}> 429 ) 430 431 # Allow to build static and shared libraries at the same time 432 if (BUILD_STATIC_LIBS AND BUILD_SHARED_LIBS) 433 set(STATIC_LIB ${PROJECT_NAME}-static) 434 add_library(${STATIC_LIB} STATIC 435 ${JSON_C_SOURCES} 436 ${JSON_C_HEADERS} 437 ) 438 439 # rename the static library 440 if (NOT MSVC) 441 set_target_properties(${STATIC_LIB} PROPERTIES 442 OUTPUT_NAME ${PROJECT_NAME} 443 ) 444 endif() 445 list(APPEND CMAKE_TARGETS ${STATIC_LIB}) 446 endif () 447 448 # Always create new install dirs with 0755 permissions, regardless of umask 449 set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS 450 OWNER_READ 451 OWNER_WRITE 452 OWNER_EXECUTE 453 GROUP_READ 454 GROUP_EXECUTE 455 WORLD_READ 456 WORLD_EXECUTE 457 ) 458 459 install(TARGETS ${CMAKE_TARGETS} 460 EXPORT ${PROJECT_NAME}-targets 461 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 462 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 463 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 464 INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} 465 ) 466 467 install(EXPORT ${PROJECT_NAME}-targets 468 FILE ${PROJECT_NAME}-targets.cmake 469 NAMESPACE ${PROJECT_NAME}:: 470 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} 471 ) 472 473 configure_package_config_file( 474 "cmake/Config.cmake.in" 475 ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake 476 INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" 477 ) 478 479 install( 480 FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake 481 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} 482 ) 483 484 if (UNIX OR MINGW OR CYGWIN) 485 SET(prefix ${CMAKE_INSTALL_PREFIX}) 486 # exec_prefix is prefix by default and CMake does not have the 487 # concept. 488 SET(exec_prefix ${CMAKE_INSTALL_PREFIX}) 489 SET(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) 490 SET(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) 491 SET(VERSION ${PROJECT_VERSION}) 492 configure_file(json-c.pc.in json-c.pc @ONLY) 493 set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") 494 install(FILES ${PROJECT_BINARY_DIR}/json-c.pc DESTINATION "${INSTALL_PKGCONFIG_DIR}") 495 endif () 496 497 install(FILES ${JSON_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/json-c)
This page was automatically generated by LXR 0.3.1. • OpenWrt