2013-02-24 19:44:10 +00:00
# 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
2019-07-05 19:29:36 +00:00
drivers.
2013-02-24 19:44:10 +00:00
## Setup
2013-10-18 06:35:54 +00:00
### Windows
2019-07-05 19:29:36 +00:00
* Windows 7 or later
* [Visual Studio 2019 or Visual Studio 2017 ](https://www.visualstudio.com/downloads/ )
2020-04-01 13:07:35 +00:00
* [Python 3.6+ ](https://www.python.org/downloads/ )
2019-07-05 19:29:36 +00:00
* Ensure Python is in PATH.
2020-09-05 21:52:30 +00:00
* Windows 10 SDK version 10.0.19041.0 (for Visual Studio 2019, this or any newer version)
2013-10-18 06:35:54 +00:00
2019-07-05 19:29:36 +00:00
```
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
2013-10-18 06:35:54 +00:00
2019-07-05 19:29:36 +00:00
## Testing:
# Generate tests:
xb gentests
# Run tests:
xb test
# Run GPU tests:
xb gputest
## Other:
# Generate SPIR-V binaries and header files:
xb genspirv
-->
2014-10-25 18:42:54 +00:00
2013-10-18 06:35:54 +00:00
#### Debugging
2019-10-02 21:34:43 +00:00
VS behaves oddly with the debug paths. Open the 'xenia-app' project properties
2013-10-18 06:35:54 +00:00
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` ).
2015-08-30 01:06:30 +00:00
By default logs are written to a file with the name of the executable. You can
override this with `--log_file=log.txt` .
2013-02-24 19:44:10 +00:00
2015-09-21 04:31:05 +00:00
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.
2015-08-18 21:18:00 +00:00
### Linux
2015-09-26 04:17:32 +00:00
Linux support is extremely experimental and presently incomplete.
2015-08-18 21:18:00 +00:00
2020-04-01 13:07:35 +00:00
The build script uses LLVM/Clang 9. GCC while it should work in theory, is not easily
interchangeable right now.
2015-08-18 21:18:00 +00:00
2020-11-05 11:26:04 +00:00
* 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.
2020-11-08 21:28:36 +00:00
* 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.
2015-12-31 22:26:39 +00:00
2020-04-01 13:07:35 +00:00
Clang-9 or newer should be available from system repositories on all up to date distributions.
2019-07-05 19:29:36 +00:00
You will also need some development libraries. To get them on an Ubuntu system:
2020-11-05 11:26:04 +00:00
```bash
2021-06-19 16:38:04 +00:00
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
2017-12-20 20:11:23 +00:00
```
2020-04-01 13:07:35 +00:00
In addition, you will need up to date Vulkan libraries and drivers for your hardware, which most distributions have in their standard repositories nowadays.
2017-12-20 20:11:23 +00:00
2015-07-01 02:34:48 +00:00
## Running
2013-02-24 19:44:10 +00:00
2020-04-01 13:07:35 +00:00
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.