mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-02-04 02:51:18 +01:00
Support for bundled Qt, not through aqtinstall but rather my CI. Multimedia is implemented too, works on both Windows and Linux, though we don't actually use it so it doesn't really matter. Contains Declarative and all that so the Quick frontend will work once it becomes a thing. Some options have changed, notably w.r.t LTO and faster linker, which are now handled directly in the modules. CPMUtil also has support for custom dirs (`PackageName_CUSTOM_DIR`) now. Probably most useful for adding external fragment shaders and whatnot. Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3289
3.6 KiB
3.6 KiB
AddJsonPackage
In each directory that utilizes CPMUtil, there must be a cpmfile.json that defines dependencies in a similar manner to the individual calls.
The cpmfile is an object of objects, with each sub-object being named according to the package's identifier, e.g. openssl, which can then be fetched with AddJsonPackage(<identifier>). Options are designed to map closely to the argument names, and are always strings unless otherwise specified.
Options
package->NAME(PACKAGEfor CI), defaults to the object keyrepo->REPOversion->VERSIONci(bool)
If ci is false:
hash->HASHhash_suffix->HASH_SUFFIXsha->SHAkey->KEYtag->TAG- If the tag contains
%VERSION%, that part will be replaced by thegit_version, ORversionifgit_versionis not specified
- If the tag contains
url->URLartifact->ARTIFACT- If the artifact contains
%VERSION%, that part will be replaced by thegit_version, ORversionifgit_versionis not specified - If the artifact contains
%TAG%, that part will be replaced by thetag(with its replacement already done)
- If the artifact contains
git_version->GIT_VERSIONgit_host->GIT_HOSTsource_subdir->SOURCE_SUBDIRbundled->BUNDLED_PACKAGEfind_args->FIND_PACKAGE_ARGUMENTSdownload_only->DOWNLOAD_ONLYpatches->PATCHES(array)options->OPTIONS(array)skip_updates: Tellscheck-updates.shto not check for new updates on this package.
Other arguments aren't currently supported. If you wish to add them, see the AddJsonPackage function in CMakeModules/CPMUtil.cmake.
If ci is true:
name->NAME, defaults to the object keyextension->EXTENSION, defaults totar.zstmin_version->MIN_VERSIONextension->EXTENSIONdisabled_platforms->DISABLED_PLATFORMS(array)
Examples
In order: OpenSSL CI, Boost (tag + artifact), Opus (options + find_args), discord-rpc (sha + options + patches).
{
"openssl": {
"ci": true,
"package": "OpenSSL",
"name": "openssl",
"repo": "crueter-ci/OpenSSL",
"version": "3.6.0",
"min_version": "1.1.1",
"disabled_platforms": [
"macos-universal"
]
},
"boost": {
"package": "Boost",
"repo": "boostorg/boost",
"tag": "boost-%VERSION%",
"artifact": "%TAG%-cmake.7z",
"hash": "e5b049e5b61964480ca816395f63f95621e66cb9bcf616a8b10e441e0e69f129e22443acb11e77bc1e8170f8e4171b9b7719891efc43699782bfcd4b3a365f01",
"git_version": "1.88.0",
"version": "1.57"
},
"opus": {
"package": "Opus",
"repo": "xiph/opus",
"sha": "5ded705cf4",
"hash": "0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203",
"version": "1.3",
"find_args": "MODULE",
"options": [
"OPUS_BUILD_TESTING OFF",
"OPUS_BUILD_PROGRAMS OFF",
"OPUS_INSTALL_PKG_CONFIG_MODULE OFF",
"OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF"
]
},
"discord-rpc": {
"repo": "discord/discord-rpc",
"sha": "963aa9f3e5",
"hash": "386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde",
"options": [
"BUILD_EXAMPLES OFF"
],
"patches": [
"0001-cmake-version.patch",
"0002-no-clang-format.patch",
"0003-fix-cpp17.patch"
]
}
}