diff options
Diffstat (limited to 'tools/cpm/cmake/package/add.cmake')
| -rw-r--r-- | tools/cpm/cmake/package/add.cmake | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/tools/cpm/cmake/package/add.cmake b/tools/cpm/cmake/package/add.cmake new file mode 100644 index 0000000000..02c4e1d900 --- /dev/null +++ b/tools/cpm/cmake/package/add.cmake @@ -0,0 +1,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}") |
