aboutsummaryrefslogtreecommitdiff
path: root/tools/cpm/cmake/package/add.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cpm/cmake/package/add.cmake')
-rw-r--r--tools/cpm/cmake/package/add.cmake104
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}")