mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-07 12:48:03 +00:00
[cmake] CPMUtil rewrite of the day number 852 (#4130)
Composite PR for several changes to CPMUtil, most notably: - https://git.crueter.xyz/CMake/CPMUtil/pulls/19 - https://git.crueter.xyz/CMake/CPMUtil/pulls/22 - https://git.crueter.xyz/CMake/CPMUtil/pulls/24 - https://git.crueter.xyz/CMake/CPMUtil/pulls/25 These contain a lot of changes that generally simplify control flow and improve ease-of-use. Read those descriptions and patchsets for more info. Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4130 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
This commit is contained in:
@@ -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}")
|
||||
Reference in New Issue
Block a user