mkxp-z/libretro
刘皓 42c4ff9497
Make sandbox_malloc into a coroutine
According to AddressSanitizer, when `sandbox_malloc` causes the
WebAssembly memory to grow in size, every single coroutine on the
sandbox stack gets corrupted. So if `sandbox_malloc` is going to cause
the memory to grow in size, we need to yield so that there are no
coroutines on the sandbox stack while the reallocation occurs.
2025-02-17 00:38:40 -05:00
..
.gitignore Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
core.info Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
GMGSx.sf2 Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
link.T Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
Makefile Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
README.md Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
retroarch-1.20.0-libnx.patch Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
ruby-bindings.h Change some of the nomenclature in libretro builds 2025-02-14 12:05:30 -05:00
sandbox-bindgen.rb Make sandbox_malloc into a coroutine 2025-02-17 00:38:40 -05:00

The build process for the libretro core is divided into two stages.

Stage 1

All the files produced by this stage are platform-agnostic, so you can run this build stage on any computer, regardless of which operating system or CPU architecture the libretro core is for.

Required software:

Go to the directory that this README.md is in and run this command, filling in the paths to WASI SDK, wasm-opt from Binaryen, wasm2c from WABT and ctags from Universal Ctags or Exuberant Ctags accordingly:

make WASI_SDK=/path/to/wasi-sdk WASM_OPT=/path/to/binaryen/bin/wasm-opt WASM2C=/path/to/wabt/bin/wasm2c CTAGS=/path/to/ctags

This will produce the directory "libretro/build/libretro-stage1".

Stage 2

This stage produces the actual core file.

Required software:

No software libraries are required other than the system libraries.

Go to the root directory of this repository and run:

meson setup build -Dlibretro=true
cd build
ninja