This commit is contained in:
momo5502
2025-04-14 20:01:00 +02:00
parent d9fc5457bc
commit 68022ef501
6 changed files with 21 additions and 6 deletions

7
deps/CMakeLists.txt vendored
View File

@@ -1,6 +1,7 @@
set(UNICORN_ARCH "x86" CACHE STRING "")
add_subdirectory(unicorn)
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
set(UNICORN_ARCH "x86" CACHE STRING "")
add_subdirectory(unicorn)
endif()
##########################################

View File

@@ -1,4 +1,6 @@
add_subdirectory(unicorn-emulator)
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
add_subdirectory(unicorn-emulator)
endif()
if (MOMO_ENABLE_RUST_CODE)
add_subdirectory(icicle-emulator)

View File

@@ -13,7 +13,9 @@ endif()
set(CARGO_TRIPLE)
set(CARGO_OPTIONS)
if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
set(CARGO_TRIPLE "wasm32-unknown-emscripten")
elseif(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
set(CARGO_TRIPLE "i686-pc-windows-msvc")
elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS")
set(CARGO_TRIPLE "aarch64-apple-ios")

View File

@@ -13,6 +13,8 @@
#define OS_MAC
#elif defined(__linux__)
#define OS_LINUX
#elif defined(__EMSCRIPTEN__)
#define OS_EMSCRIPTEN
#else
#error "Unsupported platform"
#endif

View File

@@ -14,9 +14,11 @@ if(NOT MOMO_ENABLE_CLANG_TIDY)
target_precompile_headers(windows-emulator PRIVATE std_include.hpp)
endif()
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
target_link_libraries(windows-emulator PRIVATE
unicorn-emulator
)
endif()
if (MOMO_ENABLE_RUST_CODE)
target_link_libraries(windows-emulator PRIVATE

View File

@@ -3,7 +3,9 @@
#include "cpu_context.hpp"
#ifndef OS_EMSCRIPTEN
#include <unicorn_x64_emulator.hpp>
#endif
#if MOMO_ENABLE_RUST_CODE
#include <icicle_x64_emulator.hpp>
@@ -263,6 +265,10 @@ namespace
std::unique_ptr<x64_emulator> create_default_x64_emulator()
{
#ifdef OS_EMSCRIPTEN
return icicle::create_x64_emulator();
#else
#if MOMO_ENABLE_RUST_CODE
const auto* env = getenv("EMULATOR_ICICLE");
if (env && (env == "1"sv || env == "true"sv))
@@ -270,8 +276,8 @@ std::unique_ptr<x64_emulator> create_default_x64_emulator()
return icicle::create_x64_emulator();
}
#endif
return unicorn::create_x64_emulator();
#endif
}
windows_emulator::windows_emulator(application_settings app_settings, const emulator_settings& settings,