110 lines
3.4 KiB
Markdown
110 lines
3.4 KiB
Markdown
# 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 7 or later
|
|
* [Visual Studio 2019 or Visual Studio 2017](https://www.visualstudio.com/downloads/)
|
|
* [Python 3.6+](https://www.python.org/downloads/)
|
|
* Ensure Python is in PATH.
|
|
* Windows 10 SDK version 10.0.19041.0 (for Visual Studio 2019, this or any newer version)
|
|
|
|
```
|
|
git clone https://github.com/xenia-project/xenia.git
|
|
cd xenia
|
|
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
|
|
```
|
|
<!--
|
|
# Remove intermediate files and build outputs (doesn't work on Linux):
|
|
xb clean
|
|
|
|
# Check for lint errors with clang-format:
|
|
xb lint
|
|
|
|
# Run the style checker on all code:
|
|
xb style
|
|
|
|
# Remove all build/ output and do a hard git reset:
|
|
xb nuke
|
|
|
|
# Runs the clang-tidy checker on all code:
|
|
xb tidy
|
|
|
|
|
|
## Testing:
|
|
|
|
# Generate tests:
|
|
xb gentests
|
|
|
|
# Run tests:
|
|
xb test
|
|
|
|
# Run GPU tests:
|
|
xb gputest
|
|
|
|
|
|
## Other:
|
|
|
|
# Generate SPIR-V binaries and header files:
|
|
xb genspirv
|
|
-->
|
|
|
|
#### 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 LLVM/Clang 9. GCC while it should work in theory, is not easily
|
|
interchangeable right now.
|
|
|
|
* Normal building via `xb build` uses Make.
|
|
* [CodeLite](https://codelite.org) is supported. `xb devenv` will generate a workspace and attempt to open it. Your distribution's version may be out of date so check their website.
|
|
* Experimental CMake generation is available to facilitate use of other IDEs such as [CLion](https://www.jetbrains.com/clion/). If `clion` is available inside `$PATH`, `xb devenv` will start it. Otherwise `build/CMakeLists.txt` needs to be generated by invoking `xb premake --devenv=cmake` manually.
|
|
|
|
Clang-9 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:
|
|
|
|
```bash
|
|
sudo apt-get install libgtk-3-dev libpthread-stubs0-dev liblz4-dev libx11-dev libx11-xcb-dev libvulkan-dev libsdl2-dev libiberty-dev libunwind-dev libc++-dev libc++abi-dev
|
|
```
|
|
|
|
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.
|