update docs for cpm
All checks were successful
eden-license / license-header (pull_request) Successful in 24s

Signed-off-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
crueter 2025-08-19 16:00:48 -04:00
parent 6189b1c5be
commit d0222b53f4
Signed by: crueter
GPG key ID: 425ACD2D4830EBC6
4 changed files with 21 additions and 9 deletions

View file

@ -7,6 +7,16 @@
* **FreeBSD**: [FreeBSD Building Guide](./docs/build/FreeBSD.md) * **FreeBSD**: [FreeBSD Building Guide](./docs/build/FreeBSD.md)
* **macOS**: [macOS Building Guide](./docs/build/macOS.md) * **macOS**: [macOS Building Guide](./docs/build/macOS.md)
# CPM
CPM (CMake Package Manager) is the preferred method of managing dependencies within Eden. Documentation on adding dependencies/using CPMUtil is in the works.
Notes:
- `YUZU_USE_CPM` is set by default on MSVC and Android. Other platforms should use this if certain "required" system dependencies (e.g. OpenSSL) are broken or missing
- `CPMUTIL_DEFAULT_SYSTEM` can be set to `OFF` to force the usage of bundled dependencies. This can marginally decrease the final package size.
- When adding new prebuilt dependencies a la OpenSSL, SDL2, or FFmpeg, there *must* be a CMake option made available to forcefully download this bundle. See the OpenSSL implementation in the root CMakeLists for an example.
* This is necessary to allow for creation of fully-qualified source packs that allow for offline builds after download (some package managers and distros enforce this)
# Guidelines # Guidelines
## License Headers ## License Headers

14
docs/build/FreeBSD.md vendored
View file

@ -1,12 +1,13 @@
## One word of caution before proceeding. ## One word of caution before proceeding.
This is not the usual or preferred way to build programs on FreeBSD. This is not the usual or preferred way to build programs on FreeBSD.
As of writing there is no official fresh port available for eden-emu, but it is in the works. As of writing there is no official fresh port available for Eden, but it is in the works.
After it is available you can find a link to the eden-emu fresh port here and on Escarys github repo. After it is available you can find a link to the eden-emu fresh port here and on Escary's github repo.
See this build as an App Image alternative for FreeBSD. See this build as an AppImage alternative for FreeBSD.
## Dependencies. ## Dependencies.
Before we start we need some dependencies. Before we start we need some dependencies.
These dependencies are generally needed to build eden-emu on FreeBSD. These dependencies are generally needed to build Eden on FreeBSD.
``` ```
devel/cmake devel/cmake
@ -56,8 +57,6 @@ Change into that build directory:
cd build cd build
``` ```
Now choose one option either 1 or 2, but not both as one option overwrites the other.
#### 1. Building in Release Mode (usually preferred and the most performant choice): #### 1. Building in Release Mode (usually preferred and the most performant choice):
```sh ```sh
cmake .. -GNinja -DYUZU_TESTS=OFF cmake .. -GNinja -DYUZU_TESTS=OFF
@ -81,3 +80,6 @@ OR
```sh ```sh
doas -- ninja install doas -- ninja install
``` ```
## OpenSSL
The available OpenSSL port (3.0.17) is out-of-date, and using a bundled static library instead is recommended; to do so, add `-DYUZU_USE_CPM=ON` to your CMake configure command.

2
docs/build/Linux.md vendored
View file

@ -12,7 +12,7 @@ The following are handled by Eden's externals:
* [SDL2](https://www.libsdl.org/download-2.0.php) 2.0.18+ * [SDL2](https://www.libsdl.org/download-2.0.php) 2.0.18+
* [opus](https://opus-codec.org/downloads/) 1.3+ * [opus](https://opus-codec.org/downloads/) 1.3+
All other dependencies will be downloaded and built by [CPM](https://github.com/cpm-cmake/CPM.cmake/) if `YUZU_USE_CPM` is on, but will use system dependencies if available: All other dependencies will be downloaded and built by [CPM](https://github.com/cpm-cmake/CPM.cmake/) if `YUZU_USE_CPM` is on, but will always use system dependencies if available:
* [Boost](https://www.boost.org/users/download/) 1.79.0+ * [Boost](https://www.boost.org/users/download/) 1.79.0+
* [Catch2](https://github.com/catchorg/Catch2) 2.13.7 - 2.13.9 * [Catch2](https://github.com/catchorg/Catch2) 2.13.7 - 2.13.9

View file

@ -27,7 +27,7 @@ Patch for FFmpeg:
sed -i 's/ make / gmake /' externals/ffmpeg/CMakeFiles/ffmpeg-build.dir/build.make sed -i 's/ make / gmake /' externals/ffmpeg/CMakeFiles/ffmpeg-build.dir/build.make
``` ```
- **Configure**: `cmake -B build -DENABLE_WEB_SERVICE=OFF -DENABLE_OPENSSL=OFF -DCMAKE_CXX_FLAGS="-I/usr/include/SDL2" -DCMAKE_C_FLAGS="-I/usr/include/SDL2"`. - **Configure**: `cmake -B build -DYUZU_USE_CPM=ON -DCMAKE_CXX_FLAGS="-I/usr/include/SDL2" -DCMAKE_C_FLAGS="-I/usr/include/SDL2"`.
- **Build**: `cmake --build build`. - **Build**: `cmake --build build`.
- **Installing**: `sudo cmake --install build`. - **Installing**: `sudo cmake --install build`.
@ -48,4 +48,4 @@ export LIBGL_ALWAYS_SOFTWARE=1
- Modify the generated ffmpeg.make (in build dir) if using multiple threads (base system `make` doesn't use `-j4`, so change for `gmake`). - Modify the generated ffmpeg.make (in build dir) if using multiple threads (base system `make` doesn't use `-j4`, so change for `gmake`).
- If using OpenIndiana, due to a bug in SDL2 cmake configuration; Audio driver defaults to SunOS `<sys/audioio.h>`, which does not exist on OpenIndiana. - If using OpenIndiana, due to a bug in SDL2 cmake configuration; Audio driver defaults to SunOS `<sys/audioio.h>`, which does not exist on OpenIndiana.
- System OpenSSL is too old and must be build from source to use it - System OpenSSL generally does not work. Instead, use `-DYUZU_USE_CPM=ON` to use a bundled static OpenSSL, or build a system dependency from source.