Browse Source
[compat] openbsd port fixes (#273)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/273
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
release/0.0.3
lizzie
4 months ago
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
10 changed files with
39 additions and
14 deletions
-
CMakeLists.txt
-
README.md
-
docs/Development.md
-
docs/build/OpenBSD.md
-
externals/CMakeLists.txt
-
src/core/debugger/debugger.cpp
-
src/dynarmic/CMakeLists.txt
-
src/dynarmic/externals/CMakeLists.txt
-
src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp
-
src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp
|
|
|
@ -50,7 +50,9 @@ CMAKE_DEPENDENT_OPTION(ENABLE_SDL2 "Enable the SDL2 frontend" ON "NOT ANDROID" O |
|
|
|
|
|
|
|
set(EXT_DEFAULT ON) |
|
|
|
|
|
|
|
if (PLATFORM_FREEBSD) |
|
|
|
# See https://github.com/llvm/llvm-project/issues/123946 |
|
|
|
# OpenBSD va_list doesn't play nice with precompiled headers |
|
|
|
if (PLATFORM_FREEBSD OR PLATFORM_OPENBSD) |
|
|
|
set(EXT_DEFAULT OFF) |
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
@ -63,6 +63,7 @@ If you would like to contribute, we are open to new developers and pull requests |
|
|
|
* **Solaris**: [Solaris Building Guide](./docs/build/Solaris.md) |
|
|
|
* **FreeBSD**: [FreeBSD Building Guide](./docs/build/FreeBSD.md) |
|
|
|
* **macOS**: [macOS Building Guide](./docs/build/macOS.md) |
|
|
|
* **OpenBSD**: [OpenBSD Building Guide](./docs/build/OpenBSD.md) |
|
|
|
|
|
|
|
## Download |
|
|
|
|
|
|
|
|
|
|
|
@ -6,6 +6,7 @@ |
|
|
|
* **Solaris**: [Solaris Building Guide](./build/Solaris.md) |
|
|
|
* **FreeBSD**: [FreeBSD Building Guide](./build/FreeBSD.md) |
|
|
|
* **macOS**: [macOS Building Guide](./build/macOS.md) |
|
|
|
* **OpenBSD**: [OpenBSD Building Guide](./build/OpenBSD.md) |
|
|
|
|
|
|
|
# CPM |
|
|
|
|
|
|
|
|
|
|
|
@ -0,0 +1,10 @@ |
|
|
|
# Building for OpenBSD |
|
|
|
|
|
|
|
```sh |
|
|
|
pkg_add -u |
|
|
|
pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake llvm-19.1.7p3 qt6 jq |
|
|
|
git --recursive https://git.eden-emu.dev/eden-emu/eden |
|
|
|
cmake -DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19 -DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_QT=OFF -DENABLE_OPENSSL=OFF -DENABLE_WEB_SERVICE=OFF -B /usr/obj/eden |
|
|
|
``` |
|
|
|
|
|
|
|
- Modify `externals/ffmpeg/CMakeFiles/ffmpeg-build/build.make` to use `-j$(nproc)` instead of just `-j`. |
|
|
|
@ -33,7 +33,7 @@ endif() |
|
|
|
|
|
|
|
# Xbyak (also used by Dynarmic, so needs to be added first) |
|
|
|
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64) |
|
|
|
if (PLATFORM_SUN) |
|
|
|
if (PLATFORM_SUN OR PLATFORM_OPENBSD) |
|
|
|
AddJsonPackage(xbyak_sun) |
|
|
|
else() |
|
|
|
AddJsonPackage(xbyak) |
|
|
|
|
|
|
|
@ -7,7 +7,7 @@ |
|
|
|
#include <boost/asio.hpp>
|
|
|
|
#include <boost/version.hpp>
|
|
|
|
|
|
|
|
#if BOOST_VERSION > 108300 && (!defined(_WINDOWS) && !defined(ANDROID)) || defined(YUZU_BOOST_v1)
|
|
|
|
#if BOOST_VERSION > 108400 && (!defined(_WINDOWS) && !defined(ANDROID)) || defined(YUZU_BOOST_v1)
|
|
|
|
#define USE_BOOST_v1
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
@ -14,12 +14,24 @@ endif() |
|
|
|
|
|
|
|
# Dynarmic project options |
|
|
|
option(DYNARMIC_ENABLE_CPU_FEATURE_DETECTION "Turning this off causes dynarmic to assume the host CPU doesn't support anything later than SSE3" ON) |
|
|
|
option(DYNARMIC_ENABLE_NO_EXECUTE_SUPPORT "Enables support for systems that require W^X" OFF) |
|
|
|
|
|
|
|
if (PLATFORM_OPENBSD) |
|
|
|
option(DYNARMIC_ENABLE_NO_EXECUTE_SUPPORT "Enables support for systems that require W^X" ON) |
|
|
|
else() |
|
|
|
option(DYNARMIC_ENABLE_NO_EXECUTE_SUPPORT "Enables support for systems that require W^X" OFF) |
|
|
|
endif() |
|
|
|
|
|
|
|
option(DYNARMIC_FATAL_ERRORS "Errors are fatal" OFF) |
|
|
|
option(DYNARMIC_IGNORE_ASSERTS "Ignore asserts" OFF) |
|
|
|
option(DYNARMIC_TESTS_USE_UNICORN "Enable fuzzing tests against unicorn" OFF) |
|
|
|
option(DYNARMIC_USE_LLVM "Support disassembly of jitted x86_64 code using LLVM" OFF) |
|
|
|
option(DYNARMIC_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON) |
|
|
|
|
|
|
|
if (PLATFORM_OPENBSD) |
|
|
|
option(DYNARMIC_USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) |
|
|
|
else() |
|
|
|
option(DYNARMIC_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON) |
|
|
|
endif() |
|
|
|
|
|
|
|
option(DYNARMIC_INSTALL "Install dynarmic headers and CMake files" OFF) |
|
|
|
option(DYNARMIC_USE_BUNDLED_EXTERNALS "Use all bundled externals (useful when e.g. cross-compiling)" OFF) |
|
|
|
option(DYNARMIC_WARNINGS_AS_ERRORS "Warnings as errors" ${MASTER_PROJECT}) |
|
|
|
|
|
|
|
@ -60,13 +60,6 @@ AddJsonPackage( |
|
|
|
# endif() |
|
|
|
# endif() |
|
|
|
|
|
|
|
# unordered_dense |
|
|
|
|
|
|
|
# AddJsonPackage( |
|
|
|
# NAME unordered-dense |
|
|
|
# BUNDLED_PACKAGE ${DYNARMIC_USE_BUNDLED_EXTERNALS} |
|
|
|
# ) |
|
|
|
|
|
|
|
# xbyak |
|
|
|
# uncomment if in an independent repo |
|
|
|
|
|
|
|
|
|
|
|
@ -225,8 +225,14 @@ bool IsUnderRosetta() { |
|
|
|
|
|
|
|
} // anonymous namespace
|
|
|
|
|
|
|
|
#ifdef DYNARMIC_ENABLE_NO_EXECUTE_SUPPORT
|
|
|
|
static const auto default_cg_mode = Xbyak::DontSetProtectRWE; |
|
|
|
#else
|
|
|
|
static const auto default_cg_mode = nullptr; //Allow RWE
|
|
|
|
#endif
|
|
|
|
|
|
|
|
BlockOfCode::BlockOfCode(RunCodeCallbacks cb, JitStateInfo jsi, size_t total_code_size, std::function<void(BlockOfCode&)> rcp) |
|
|
|
: Xbyak::CodeGenerator(total_code_size, nullptr, &s_allocator) |
|
|
|
: Xbyak::CodeGenerator(total_code_size, default_cg_mode, &s_allocator) |
|
|
|
, cb(std::move(cb)) |
|
|
|
, jsi(jsi) |
|
|
|
, constant_pool(*this, CONSTANT_POOL_SIZE) |
|
|
|
|
|
|
|
@ -37,7 +37,7 @@ namespace { |
|
|
|
struct SpinLockImpl { |
|
|
|
void Initialize(); |
|
|
|
|
|
|
|
Xbyak::CodeGenerator code; |
|
|
|
Xbyak::CodeGenerator code = Xbyak::CodeGenerator(4096, Xbyak::DontSetProtectRWE); |
|
|
|
|
|
|
|
void (*lock)(volatile int*); |
|
|
|
void (*unlock)(volatile int*); |
|
|
|
|