aboutsummaryrefslogtreecommitdiff
path: root/tools/cpm/cmake/package/add.cmake
blob: 02c4e1d9006438ad762ced31827ff4756c8d63e9 (plain) (blame)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env -S cmake -P

# SPDX-FileCopyrightText: Copyright 2026 crueter
# SPDX-License-Identifier: LGPL-3.0-or-later

cmake_minimum_required(VERSION 3.31)

include(${CMAKE_CURRENT_LIST_DIR}/../ScriptUtils.cmake)

function(usage)
    echo([=[
Usage: add.cmake [OPTIONS...]

Internal use only.
]=])
endfunction()

if (NOT DEFINED KEY)
    fatal("KEY is required")
endif()

if (NOT DEFINED REPO)
    fatal("REPO is required")
endif()

if (NOT DEFINED VERSION)
    fatal("VERSION is required")
endif()


if (NOT DEFINED CI)
    set(CI FALSE)
endif()

# construct json
set(object "{}")

macro(add key val)
    set(${key} ${val})
    string(JSON object SET ${object} ${key} "\"${val}\"")
endmacro()

add(repo ${REPO})
add(version ${VERSION})

if (DEFINED GIT_HOST AND NOT "${GIT_HOST}" STREQUAL github.com)
    add(git_host ${GIT_HOST})
else()
    set(git_host github.com)
endif()

if (DEFINED PACKAGE)
    add(package ${PACKAGE})
else()
    set(package ${KEY})
endif()

if (DEFINED FIND_ARGS)
    add(find_args "${FIND_ARGS}")
endif()

if (DEFINED MIN_VERSION)
    add(min_version ${MIN_VERSION})
endif()

if (DEFINED ARTIFACT)
    add(artifact ${ARTIFACT})
endif()

if (CI)
    add(ci true)

    if (DEFINED DISABLED_PLATFORMS)
        list_to_array(${DISABLED_PLATFORMS} json_disabled)
        string(JSON object SET "${object}" disabled_platforms "${json_disabled}")
    endif()
else()
    if (DEFINED OPTIONS)
        list_to_array(${OPTIONS} json_options)
        string(JSON object SET "${object}" options "${json_options}")
    endif()

    # get hash
    get_package_url_object(pkg_url)
    get_package_hash("${pkg_url}" pkg_hash)

    add(hash ${pkg_hash})

endif()

echo("\"${KEY}\": ${object}")

# now write
get_cpmfile_content(cpmfile)

# update cached cpmfile content
string(JSON cpmfile SET "${cpmfile}" "${KEY}" "${object}")

# write cached cpmfile
get_cpmfile_path(file)
file(WRITE ${file} "${cpmfile}")
format_cpmfile()

echo("-- Added ${KEY}")