xenia-canary/docs/building.md

3.5 KiB

Building

You must have a 64-bit machine for building and running the project. Always run your system updater before building and make sure you have the latest drivers.

Setup

Windows

  • Windows 10 or later
  • Visual Studio 2022
  • CMake 3.10+ (or C++ CMake tools for Windows)
  • Windows 11 SDK version 10.0.22000.0 (for Visual Studio 2022, this or any newer version)
  • Python 3.9+ 64-bit
    • Ensure Python is in PATH.
git clone https://github.com/xenia-canary/xenia-canary.git
cd xenia-canary
xb setup

# Build on command line (add --config=release for release):
xb build


# Pull latest changes, rebase, update submodules, and run premake:
xb pull

# Run premake and open Visual Studio (run the 'xenia-app' project):
xb devenv

# Run premake to update the sln/vcproj's:
xb premake

# Format code to the style guide:
xb format

Debugging

VS behaves oddly with the debug paths. Open the 'xenia-app' project properties and set the 'Command' to $(SolutionDir)$(TargetPath) and the 'Working Directory' to $(SolutionDir)..\... You can specify flags and the file to run in the 'Command Arguments' field (or use --flagfile=flags.txt).

By default logs are written to a file with the name of the executable. You can override this with --log_file=log.txt.

If running under Visual Studio and you want to look at the JIT'ed code (available around 0xA0000000) you should pass --emit_source_annotations to get helpful spacers/movs in the disassembly.

Linux

Linux support is extremely experimental and presently incomplete.

The build script uses Clang 19. GCC while it should work in theory, is not easily interchangeable right now.

  • Normal building via xb build uses CMake+Ninja.
  • Environment variables:
    Name Default Value
    CC clang
    CXX clang++

Clang-19 or newer should be available from system repositories on all up to date distributions. You will also need some development libraries. To get them on an Ubuntu system:

sudo apt-get install build-essential mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev liblz4-dev libsdl2-dev libvulkan-dev libx11-xcb-dev clang-19 llvm-19 ninja-build

In addition, you will need up to date Vulkan libraries and drivers for your hardware, which most distributions have in their standard repositories nowadays.

Running

To make life easier you can set the program startup arguments in your IDE to something like --log_file=stdout /path/to/Default.xex to log to console rather than a file and start up the emulator right away.