Files
Dylan Carr c318048d7d Build: move the shared build system to Kazarov (#163)
* Build: check out scripts with LF line endings

* Build: replace the build scripts with Kazarov

* Port: rename PC_OVERRIDE to Kazarov's PORT_OVERRIDE

* Build: build the PS2 executables through Kazarov's CMake modules

* Scripts: remove unused tooling

* Build: update Kazarov

* Build: update Kazarov

* Build: run the port without a disc when its data exists, reject the old REGION variable, and lock the shared Windows dependencies

* Build: update Kazarov

* Port: serialise game data extraction across configurations

* Build: update Kazarov

* Port: hold a shared data lock while the game runs

* Port: refuse to start on data another configuration re-extracted

* Build: update Kazarov
2026-10-11 19:03:41 +11:00

1.6 KiB

macOS on Apple Silicon

The PC port (docs/PC.md) builds natively for arm64 macOS and runs on Vulkan through MoltenVK. Like on Linux, it needs your own PAL disc.

Dependencies

Xcode or its command line tools, and Homebrew in /opt/homebrew:

brew install llvm lld cmake ninja python glslang sdl3 nlohmann-json vulkan-headers vulkan-loader vulkan-tools molten-vk googletest

The presets use Homebrew's llvm; Apple's clang is not current enough for C++26.

Building

./build.sh macos-arm64                        # Debug, port/build/macos-arm64
./build.sh macos                              # Release, port/build/macos-arm64-release
cmake --preset macos-arm64-release            # the same Release build, without the container
cmake --build --preset macos-arm64-release

CLEAN=1 discards the build directory first; JOBS=N sets the number of parallel jobs.

Game data

port/build/macos-arm64-release/dcdata extract "rom/pal/Dark Cloud (PAL).iso" data

Without it, the first windowed start asks for the disc image and extracts it. File names on the disc that are not UTF-8 are written with %xx escapes, since APFS refuses them; the game looks them up the same way.

Running

export VK_DRIVER_FILES=/opt/homebrew/etc/vulkan/icd.d/MoltenVK_icd.json
port/build/macos-arm64-release/darkcloud --data data --save save

The Vulkan loader does not search Homebrew's prefix, so VK_DRIVER_FILES is required. Options and config.json are those of docs/PC.md.

Tests

The tests run on MoltenVK too, as CI runs them:

export VK_DRIVER_FILES=/opt/homebrew/etc/vulkan/icd.d/MoltenVK_icd.json
ctest --preset macos-arm64