File: FindcJSON.cmake

package info (click to toggle)
freespace2 25.0.0~rc11%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 47,232 kB
  • sloc: cpp: 657,500; ansic: 22,305; sh: 293; python: 200; makefile: 198; xml: 181
file content (84 lines) | stat: -rw-r--r-- 2,325 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Copyright 2019-2022, Collabora, Ltd.
#
# SPDX-License-Identifier: BSL-1.0
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
#
# Original Author:
# 2019-2022 Rylie Pavlik <rylie.pavlik@collabora.com> <rylie@ryliepavlik.com>

#.rst:
# FindcJSON
# ---------------
#
# Find the cJSON lightweight JSON parser
#
# Targets
# ^^^^^^^
#
# If successful, the following import target is created.
#
# ``cJSON::cJSON``
#
# Cache variables
# ^^^^^^^^^^^^^^^
#
# The following cache variable may also be set to assist/control the operation of this module:
#
# ``CJSON_ROOT_DIR``
#  The root to search for cJSON.

set(CJSON_ROOT_DIR
    "${CJSON_ROOT_DIR}"
    CACHE PATH "Root to search for cJSON")

include(FindPackageHandleStandardArgs)

# Check for CMake config first.
find_package(cJSON QUIET CONFIG)
if(cJSON_FOUND AND TARGET cjson)
    # Found config, let's prefer it.
    find_package_handle_standard_args(cJSON CONFIG_MODE)
    set(CJSON_LIBRARY cjson)

else()
    # Manually find
    find_path(
        CJSON_INCLUDE_DIR
        NAMES cjson/cJSON.h
        PATHS ${CJSON_ROOT_DIR}
        PATH_SUFFIXES include)
    find_library(
        CJSON_LIBRARY
        NAMES cjson
        PATHS ${CJSON_ROOT_DIR}
        PATH_SUFFIXES lib)

    find_package_handle_standard_args(cJSON REQUIRED_VARS CJSON_INCLUDE_DIR
                                                          CJSON_LIBRARY)
endif()

if(CJSON_FOUND)
    set(CJSON_INCLUDE_DIRS "${CJSON_INCLUDE_DIR}")
    set(CJSON_LIBRARIES "${CJSON_LIBRARY}")
    if(NOT TARGET cJSON::cJSON)
        if(TARGET "${CJSON_LIBRARY}")
            # Alias if we found the config file
            add_library(cJSON::cJSON ALIAS cjson)
        else()
            add_library(cJSON::cJSON UNKNOWN IMPORTED)
            set_target_properties(
                cJSON::cJSON PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
                                        "${CJSON_INCLUDE_DIR}")
            set_target_properties(
                cJSON::cJSON PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C"
                                        IMPORTED_LOCATION "${CJSON_LIBRARY}")

        endif()
    endif()
    mark_as_advanced(CJSON_INCLUDE_DIR CJSON_LIBRARY)
endif()

mark_as_advanced(CJSON_ROOT_DIR)