mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-10 09:48:58 +02: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
104 lines
3.6 KiB
Markdown
104 lines
3.6 KiB
Markdown
# 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.
|
|
<!-- TOC -->
|
|
- [Options](#options)
|
|
- [Examples](#examples)
|
|
<!-- /TOC -->
|
|
|
|
## Options
|
|
|
|
- `package` -> `NAME` (`PACKAGE` for CI), defaults to the object key
|
|
- `repo` -> `REPO`
|
|
- `version` -> `VERSION`
|
|
- `ci` (bool)
|
|
|
|
If `ci` is `false`:
|
|
|
|
- `hash` -> `HASH`
|
|
- `hash_suffix` -> `HASH_SUFFIX`
|
|
- `sha` -> `SHA`
|
|
- `key` -> `KEY`
|
|
- `tag` -> `TAG`
|
|
- If the tag contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified
|
|
- `url` -> `URL`
|
|
- `artifact` -> `ARTIFACT`
|
|
- If the artifact contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified
|
|
- If the artifact contains `%TAG%`, that part will be replaced by the `tag` (with its replacement already done)
|
|
- `git_version` -> `GIT_VERSION`
|
|
- `git_host` -> `GIT_HOST`
|
|
- `source_subdir` -> `SOURCE_SUBDIR`
|
|
- `bundled` -> `BUNDLED_PACKAGE`
|
|
- `find_args` -> `FIND_PACKAGE_ARGUMENTS`
|
|
- `download_only` -> `DOWNLOAD_ONLY`
|
|
- `patches` -> `PATCHES` (array)
|
|
- `options` -> `OPTIONS` (array)
|
|
- `skip_updates`: Tells `check-updates.sh` to 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 key
|
|
- `extension` -> `EXTENSION`, defaults to `tar.zst`
|
|
- `min_version` -> `MIN_VERSION`
|
|
- `extension` -> `EXTENSION`
|
|
- `disabled_platforms` -> `DISABLED_PLATFORMS` (array)
|
|
|
|
## Examples
|
|
|
|
In order: OpenSSL CI, Boost (tag + artifact), Opus (options + find_args), discord-rpc (sha + options + patches).
|
|
|
|
```json
|
|
{
|
|
"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"
|
|
]
|
|
}
|
|
}
|
|
```
|