Browse Source
[build, cmake] port to solaris (#96)
[build, cmake] port to solaris (#96)
Co-authored-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/96 Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>pull/103/head
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
16 changed files with 215 additions and 76 deletions
-
4.gitmodules
-
2CMakeLists.txt
-
94docs/Solaris.md
-
9externals/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp
-
4externals/nx_tzdb/tzdb_to_nx/externals/tz/CMakeLists.txt
-
9externals/nx_tzdb/tzdb_to_nx/src/tzdb2nx/main.cpp
-
37externals/nx_tzdb/tzdb_to_nx/src/tzdb2nx/tzif.cpp
-
39externals/nx_tzdb/tzdb_to_nx/src/tzdb2nx/tzif.h
-
11externals/renderdoc/renderdoc_app.h
-
4src/audio_core/sink/sdl2_sink.cpp
-
5src/common/minicoro.h
-
7src/core/hle/service/caps/caps_manager.cpp
-
9src/core/hle/service/psc/time/common.h
-
41src/core/internal_network/network_interface.cpp
-
5src/network/CMakeLists.txt
-
5src/yuzu_cmd/CMakeLists.txt
@ -0,0 +1,94 @@ |
|||
# Building for Solaris |
|||
|
|||
## Dependencies. |
|||
Always consult [the OpenIndiana package list](https://pkg.openindiana.org/hipster/en/index.shtml) to cross-verify availability. |
|||
|
|||
Run the usual update + install of essential toolings: `sudo pkg update && sudo pkg install git cmake`. |
|||
|
|||
- **gcc**: `sudo pkg install developer/gcc-14`. |
|||
- **clang**: Version 20 is broken, use `sudo pkg install developer/clang-19`. |
|||
|
|||
Then install the libraies: `sudo pkg install qt6 boost glslang libzip library/lz4 nlohmann-json openssl opus sdl2 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm`. |
|||
|
|||
fmtlib is not available on repositories and has to be manually built: |
|||
```sh |
|||
git clone --recurisve --depth=1 https://github.com/fmtlib/fmt.git |
|||
cd fmt |
|||
cmake -DCMAKE_BUILD_TYPE=Release -B build |
|||
cmake --build build |
|||
sudo cmake --install build |
|||
``` |
|||
|
|||
pkg lz4 doesn't provide a proper CMakeFile to find the library, has to also be manually built: |
|||
```sh |
|||
git clone --depth=1 https://github.com/lz4/lz4.git |
|||
cd lz4 |
|||
gmake |
|||
sudo gmake install |
|||
``` |
|||
|
|||
Same goes for zstd: |
|||
```sh |
|||
git clone --depth=1 https://github.com/facebook/zstd.git |
|||
cd zstd |
|||
cmake -DCMAKE_BUILD_TYPE=Release -B build0 -S build/cmake |
|||
cmake --build build0 |
|||
cd build0 |
|||
sudo gmake install |
|||
``` |
|||
|
|||
pkg SDL2 is also not nice to work with on CMake, save yourself some pain and compile it yourself: |
|||
```sh |
|||
git clone --depth=1 --branch=release-2.32.8 https://github.com/libsdl-org/SDL |
|||
cmake -DCMAKE_BUILD_TYPE=Release -B build |
|||
cmake --build build |
|||
sudo cmake --install build |
|||
``` |
|||
|
|||
Audio is broken in OpenIndiana [see this issue](https://github.com/libsdl-org/SDL/issues/13405), go into `SDL/CMakeLists.txt` and comment out lines 1468: |
|||
```diff |
|||
+# set(SDL_AUDIO_DRIVER_SUNAUDIO 1) |
|||
+# file(GLOB SUN_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/sun/*.c) |
|||
+# list(APPEND SOURCE_FILES ${SUN_AUDIO_SOURCES}) |
|||
+# set(HAVE_SDL_AUDIO TRUE) |
|||
``` |
|||
For Solaris this issue does not exist - however PulseAudio crashes on Solaris - so use a different backend. |
|||
|
|||
--- |
|||
|
|||
### Build preparations: |
|||
Run the following command to clone eden with git: |
|||
```sh |
|||
git clone --recursive https://git.eden-emu.dev/eden-emu/eden |
|||
``` |
|||
You usually want to add the `--recursive` parameter as it also takes care of the external dependencies for you. |
|||
|
|||
Now change into the eden directory and create a build directory there: |
|||
```sh |
|||
cd eden |
|||
mkdir build |
|||
``` |
|||
|
|||
Change into that build directory: `cd build` |
|||
|
|||
Now choose one option either 1 or 2, but not both as one option overwrites the other. |
|||
|
|||
### Building |
|||
|
|||
```sh |
|||
# Needed for some dependencies that call cc directly (tz) |
|||
echo '#!/bin/sh' >cc |
|||
echo 'gcc $@' >>cc |
|||
chmod +x cc |
|||
export PATH="$PATH:$PWD" |
|||
``` |
|||
|
|||
- **Configure**: `cmake -B build -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_SDL2=OFF -DYUZU_USE_EXTERNAL_SDL2=OFF -DYUZU_USE_LLVM_DEMANGLE=OFF -DYUZU_USE_QT_MULTIMEDIA=OFF -DYUZU_USE_QT_WEB_ENGINE=OFF -DYUZU_USE_BUNDLED_VCPKG=OFF -DYUZU_USE_BUNDLED_QT=OFF -DENABLE_QT=OFF -DSDL_AUDIO=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_QT_UPDATE_CHECKER=OFF`. |
|||
- **Build**: `cmake --build build`. |
|||
- **Installing**: `sudo cmake --install build`. |
|||
|
|||
### Notes |
|||
|
|||
- 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. |
|||
- Enabling OpenSSL requires compiling OpenSSL manually instead of using the provided one from repositores. |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue