Files
eden/docs/CPMUtil/AddJsonPackage.md
crueter 89f72d286a [cmake, tools] update CPMUtil and add support for CPMUtil bundled Qt, module updates, cleanups (#3289)
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
2026-01-14 19:29:13 +01:00

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 (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).

{
    "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"
        ]
    }
}