From c993bc01a49c39c3d293ce401db86b3dccba69c1 Mon Sep 17 00:00:00 2001 From: crueter Date: Fri, 26 Jun 2026 02:22:04 +0200 Subject: [cmake] Update CPMUtil (#4123) Notable changes - Single cpmfile - version/min_version/git_version have been fixed and replaced with version and min_version - Docs rewrite - Legacy options are gone - Fixed update/version commands - Added patch creation functionality Signed-off-by: crueter Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4123 Reviewed-by: Lizzie Reviewed-by: MaranBr --- docs/CPMUtil/AddPackage.md | 118 --------------------------------------------- 1 file changed, 118 deletions(-) delete mode 100644 docs/CPMUtil/AddPackage.md (limited to 'docs/CPMUtil/AddPackage.md') diff --git a/docs/CPMUtil/AddPackage.md b/docs/CPMUtil/AddPackage.md deleted file mode 100644 index 6e9ae1b775..0000000000 --- a/docs/CPMUtil/AddPackage.md +++ /dev/null @@ -1,118 +0,0 @@ -# `AddPackage` - - -- [Identification/Fetching](#identificationfetching) -- [Hashing](#hashing) -- [Other Options](#other-options) -- [Extra Variables](#extra-variables) -- [System/Bundled Packages](#systembundled-packages) -- [Identification](#identification) - - -## Identification/Fetching - -- `NAME` (required): The package name (must be the same as the `find_package` name if applicable) -- `VERSION`: The minimum version of this package that can be used on the system -- `GIT_VERSION`: The "version" found within git -- `URL`: The URL to fetch. -- `REPO`: The repo to use (`owner/repo`). -- `GIT_HOST`: The Git host to use - - Defaults to `github.com`. Do not include the protocol, as HTTPS is enforced. -- `TAG`: The tag to fetch, if applicable. -- `ARTIFACT`: The name of the artifact, if applicable. -- `SHA`: Commit sha to fetch, if applicable. -- `BRANCH`: Branch to fetch, if applicable. - -The following configurations are supported, in descending order of precedence: - -- `URL`: Bare URL download, useful for custom artifacts - - If this is set, `GIT_URL` or `REPO` should be set to allow the dependency viewer to link to the project's Git repository. - - If this is NOT set, `REPO` must be defined. -- `REPO + TAG + ARTIFACT`: GitHub release artifact - - The final download URL will be `https://github.com/${REPO}/releases/download/${TAG}/${ARTIFACT}` - - Useful for prebuilt libraries and prefetched archives -- `REPO + TAG`: GitHub tag archive - - The final download URL will be `https://github.com/${REPO}/archive/refs/tags/${TAG}.tar.gz` - - Useful for pinning to a specific tag, better for build identification -- `REPO + SHA`: GitHub commit archive - - The final download URL will be `https://github.com/${REPO}/archive/${SHA}.zip` - - Useful for pinning to a specific commit -- `REPO + BRANCH`: GitHub branch archive - - The final download URL will be `https://github.com/${REPO}/archive/refs/heads/${BRANCH}.zip` - - Generally not recommended unless the branch is frozen -- `REPO`: GitHub master archive - - The final download URL will be `https://github.com/${REPO}/archive/refs/heads/master.zip` - - Generally not recommended unless the project is dead - -## Hashing - -Hashing is used for verifying downloads. It's highly recommended to use these. - -- `HASH_ALGO` (default `SHA512`): Hash algorithm to use - -Hashing strategies, descending order of precedence: - -- `HASH`: Bare hash verification, useful for static downloads e.g. commit archives -- `HASH_SUFFIX`: Download the hash as `${DOWNLOAD_URL}.${HASH_SUFFIX}` - - The downloaded hash *must* match the hash algorithm and contain nothing but the hash; no filenames or extra content. -- `HASH_URL`: Download the hash from a separate URL - -## Other Options - -- `KEY`: Custom cache key to use (stored as `.cache/cpm/${packagename_lower}/${key}`) - - Default is based on, in descending order of precedence: - - First 4 characters of the sha - - `GIT_VERSION` - - Tag - - `VERSION` - - Otherwise, CPM defaults will be used. This is not recommended as it doesn't produce reproducible caches -- `DOWNLOAD_ONLY`: Whether or not to configure the downloaded package via CMake - - Useful to turn `OFF` if the project doesn't use CMake -- `SOURCE_SUBDIR`: Subdirectory of the project containing a CMakeLists.txt file -- `FIND_PACKAGE_ARGUMENTS`: Arguments to pass to the `find_package` call -- `BUNDLED_PACKAGE`: Set to `ON` to default to the bundled package -- `FORCE_BUNDLED_PACKAGE`: Set to `ON` to force the usage of the bundled package, regardless of CPMUTIL_FORCE_SYSTEM or `_FORCE_SYSTEM` -- `OPTIONS`: Options to pass to the configuration of the package -- `PATCHES`: Patches to apply to the package, stored in `.patch/${packagename_lower}/0001-patch-name.patch` and so on -- Other arguments can be passed to CPM as well - -## Extra Variables - -For each added package, users may additionally force usage of the system/bundled package. - -- `${package}_DIR`: Path to a separately-downloaded copy of the package. Note that versioning is not checked! -- `${package}_FORCE_SYSTEM`: Require the package to be installed on the system -- `${package}_FORCE_BUNDLED`: Force the package to be fetched and use the bundled version - -## System/Bundled Packages - -Descending order of precedence: - -- If `${package}_FORCE_SYSTEM` is true, requires the package to be on the system -- If `${package}_FORCE_BUNDLED` is true, forcefully uses the bundled package -- If `CPMUTIL_FORCE_SYSTEM` is true, requires the package to be on the system -- If `CPMUTIL_FORCE_BUNDLED` is true, forcefully uses the bundled package -- If the `BUNDLED_PACKAGE` argument is true, forcefully uses the bundled package -- Otherwise, CPM will search for the package first, and if not found, will use the bundled package - -## Identification - -All dependencies must be identifiable in some way for usage in the dependency viewer. Lists are provided in descending order of precedence. - -URLs: - -- `GIT_URL` -- `REPO` as a Git repository - - You may optionally specify `GIT_HOST` to use a custom host, e.g. `GIT_HOST git.crueter.xyz`. Note that the git host MUST be GitHub-like in its artifact/archive downloads, e.g. Forgejo - - If `GIT_HOST` is unspecified, defaults to `github.com` -- `URL` - -Versions (bundled): - -- `SHA` -- `GIT_VERSION` -- `VERSION` -- `TAG` -- "unknown" - -If the package is a system package, AddPackage will attempt to determine the package version and append `(system)` to the identifier. Otherwise, it will be marked as `unknown (system)` -- cgit v1.2.3