# 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](https://www.visualstudio.com/downloads/) * 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](https://www.python.org/downloads/) * 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: ```sh 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.