diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ca88e3c65..ecb8a8268d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,12 @@ if (PLATFORM_SUN) # Terrific Solaris pkg shenanigans list(APPEND CMAKE_PREFIX_PATH "/usr/lib/qt/6.6/lib/amd64/cmake") list(APPEND CMAKE_MODULE_PATH "/usr/lib/qt/6.6/lib/amd64/cmake") + # For some mighty reason, doing a normal release build sometimes may not trigger + # the proper -O3 switch to materialize + if (CMAKE_BUILD_TYPE MATCHES "Release") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") + endif() endif() set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm) diff --git a/docs/Development.md b/docs/Development.md index 26a10fd062..72400476d8 100644 --- a/docs/Development.md +++ b/docs/Development.md @@ -76,9 +76,16 @@ cmake --build /tmp/ramdisk -- -j32 sudo umount /tmp/ramdisk ``` -# How to test JIT +## Debugging (host code) -## gdb +Ignoring SIGSEGV when debugging in host: + +- **gdb**: `handle all nostop pass`. +- **lldb**: `pro hand -p true -s false -n false SIGSEGV`. + +## Debugging (guest code) + +### gdb Run `./build/bin/eden-cli -c -d -g ` @@ -110,7 +117,7 @@ Expressions can be `variable_names` or `1234` (numbers) or `*var` (dereference o For more information type `info gdb` and read [the man page](https://man7.org/linux/man-pages/man1/gdb.1.html). -## Bisecting older commits +# Bisecting older commits Since going into the past can be tricky (especially due to the dependencies from the project being lost thru time). This should "restore" the URLs for the respective submodules. diff --git a/docs/build/Solaris.md b/docs/build/Solaris.md index be681d5308..bc6ae6fde1 100644 --- a/docs/build/Solaris.md +++ b/docs/build/Solaris.md @@ -8,73 +8,12 @@ Run the usual update + install of essential toolings: `sudo pkg update && sudo p - **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. +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 developer/fmt`. ### Building +Clone eden with git `git clone --recursive https://git.eden-emu.dev/eden-emu/eden` + ```sh # Needed for some dependencies that call cc directly (tz) echo '#!/bin/sh' >cc @@ -83,7 +22,12 @@ 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`. +Patch for FFmpeg: +```sh +sed -i 's/ make / gmake /' externals/ffmpeg/CMakeFiles/ffmpeg-build.dir/build.make +``` + +- **Configure**: `cmake -B build -DENABLE_WEB_SERVICE=OFF`. - **Build**: `cmake --build build`. - **Installing**: `sudo cmake --install build`. @@ -104,4 +48,3 @@ 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`). - If using OpenIndiana, due to a bug in SDL2 cmake configuration; Audio driver defaults to SunOS ``, which does not exist on OpenIndiana. -- Enabling OpenSSL requires compiling OpenSSL manually instead of using the provided one from repositores. diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 314f414e2e..71dd2962e7 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -139,6 +139,7 @@ endif() # Sirit # TODO(crueter): spirv-tools doesn't work w/ system +set(SPIRV_WERROR OFF) AddPackage( NAME SPIRV-Headers REPO "KhronosGroup/SPIRV-Headers"