2019-06-10 19:52:07 +00:00
# Building
Only Windows and Linux are officially supported for building. However, various other platforms are capable of building RPCS3.
Other instructions may be found [here ](https://wiki.rpcs3.net/index.php?title=Building ).
## Setup your environment
### Windows 7 or later
2021-04-29 23:28:51 +00:00
* [CMake 3.16.9+ ](https://www.cmake.org/download/ ) (add to PATH)
* [Python 3.6+ ](https://www.python.org/downloads/ ) (add to PATH)
2020-12-08 21:22:08 +00:00
* [Qt 5.15.2 ](https://www.qt.io/download-qt-installer )
2019-08-31 14:40:01 +00:00
* [Visual Studio 2019 ](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community )
2021-04-29 23:28:51 +00:00
* [Vulkan SDK 1.2.154+ ](https://vulkan.lunarg.com/sdk/home ) (See "Install the SDK" [here ](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html ))
2019-06-10 19:52:07 +00:00
2020-12-08 21:22:08 +00:00
**Either add the** `QTDIR` **environment variable, e.g.** `<QtInstallFolder>\5.15.2\msvc2019_64\` ** , or use the [Visual Studio Qt Plugin ](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2019 )**
2019-06-10 19:52:07 +00:00
### Linux
These are the essentials tools to build RPCS3 on Linux. Some of them can be installed through your favorite package manager.
2021-04-13 13:02:18 +00:00
* Clang 12+ or GCC 10+
* [CMake 3.16.9+ ](https://www.cmake.org/download/ )
2020-12-08 21:22:08 +00:00
* [Qt 5.15.2 ](https://www.qt.io/download-qt-installer )
2021-04-29 23:28:51 +00:00
* [Vulkan SDK 1.2.154+ ](https://vulkan.lunarg.com/sdk/home ) (See "Install the SDK" [here ](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html ))
2019-10-24 19:26:29 +00:00
* [SDL2 ](https://www.libsdl.org/download-2.0.php ) (for the FAudio backend)
2019-06-10 19:52:07 +00:00
**If you have an NVIDIA GPU, you may need to install the libglvnd package.**
#### Arch Linux
2019-10-24 19:26:29 +00:00
sudo pacman -S glew openal cmake vulkan-validation-layers qt5-base qt5-declarative sdl2
2019-06-10 19:52:07 +00:00
#### Debian & Ubuntu
2020-02-26 21:31:46 +00:00
sudo apt-get install build-essential libasound2-dev libpulse-dev libopenal-dev libglew-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl2-2.0 libsdl2-dev
2019-06-10 19:52:07 +00:00
2020-02-26 21:31:46 +00:00
Ubuntu is usually horrendously out of date, and some packages need to be downloaded by hand. This part is for Qt, GCC, Vulkan, and CMake
##### Qt PPA
2019-06-10 19:52:07 +00:00
2020-02-26 21:31:46 +00:00
Ubuntu usually does not have a new enough Qt package to suit rpcs3's needs. There is a PPA available to work around this. Run the following:
2019-06-10 19:52:07 +00:00
```
2020-08-26 05:30:03 +00:00
. /etc/os-release
2020-12-08 21:22:08 +00:00
sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-$UBUNTU_CODENAME
2020-02-26 21:31:46 +00:00
sudo apt-get update
2021-04-11 21:03:34 +00:00
sudo apt-get install qt515base qt515svg
2020-12-08 21:22:08 +00:00
. /opt/qt515/bin/qt515-env.sh >/dev/null 2>& 1
2019-06-10 19:52:07 +00:00
```
2020-02-26 21:31:46 +00:00
2021-04-13 13:02:18 +00:00
##### GCC 10.x installation
2020-02-26 21:31:46 +00:00
2021-04-13 13:02:18 +00:00
If the `gcc-10` package is not available on your system, use the following commands
2019-06-10 19:52:07 +00:00
```
2020-02-26 21:31:46 +00:00
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
2019-06-10 19:52:07 +00:00
sudo apt-get update
2021-04-13 13:02:18 +00:00
sudo apt-get install gcc-10 g++-10
2019-06-10 19:52:07 +00:00
```
2021-04-13 13:02:18 +00:00
You can either use `update-alternatives` to setup `gcc-10` /`g++-10` as your default compilers or prefix any `cmake` command by `CXX=g++-10 CC=gcc-10 ` to use it.
2019-06-10 19:52:07 +00:00
##### Vulkan SDK
For Ubuntu systems, it is strongly recommended to use the PPA from [LunarG ](https://packages.lunarg.com/ ) which will provide a compatible Vulkan SDK to compile RPCS3. If your Vulkan SDK is older, it can lead to compilation errors.
```
2020-08-26 05:30:03 +00:00
. /etc/os-release
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
2021-04-29 23:28:51 +00:00
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.2.154-$UBUNTU_CODENAME.list https://packages.lunarg.com/vulkan/1.2.154/lunarg-vulkan-1.2.154-$UBUNTU_CODENAME.list
2019-06-10 19:52:07 +00:00
sudo apt update
sudo apt install vulkan-sdk
```
2020-02-26 21:31:46 +00:00
##### CMake
2019-06-10 19:52:07 +00:00
```
2020-08-26 05:30:03 +00:00
. /etc/os-release
2020-02-26 21:31:46 +00:00
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
2020-08-26 05:30:03 +00:00
sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $UBUNTU_CODENAME main"
2020-02-26 21:31:46 +00:00
sudo apt-get update
sudo apt-get install kitware-archive-keyring
sudo apt-key --keyring /etc/apt/trusted.gpg del C1F34CDD40CD72DA
sudo apt-get install cmake
2019-06-10 19:52:07 +00:00
```
#### Fedora
2021-01-05 02:28:23 +00:00
sudo dnf install alsa-lib-devel cmake glew glew-devel libatomic libevdev-devel libudev-devel openal-devel qt5-qtbase-devel qt5-qtbase-private-devel vulkan-devel
2019-06-10 19:52:07 +00:00
#### OpenSUSE
2021-04-05 07:20:51 +00:00
sudo zypper install git cmake libasound2 libpulse-devel openal-soft-devel glew-devel zlib-devel libedit-devel vulkan-devel libudev-devel libqt5-qtbase-devel libqt5gui-private-headers-devel libevdev-devel
2019-06-10 19:52:07 +00:00
## Setup the project
Clone and initialize the repository
```
git clone https://github.com/RPCS3/rpcs3.git
cd rpcs3
git submodule update --init
```
### Windows
#### Configuring the Qt plugin (if used)
1) Go to the Qt5 menu and edit Qt5 options.
2020-12-08 21:22:08 +00:00
2) Add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\5.15.2\msvc2019_64` .
2019-06-10 19:52:07 +00:00
3) While selecting the rpcs3qt project, go to Qt5->Project Setting and select the version you added.
#### Building the projects
2021-03-29 19:45:48 +00:00
Open `rpcs3.sln` . The recommended build configuration is `Release` . (On older revisions: `Release - LLVM` )
2019-06-10 19:52:07 +00:00
2020-03-27 07:34:13 +00:00
You may want to download the precompiled [LLVM libs ](https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win/llvmlibs_mt.7z ) and extract them to the root rpcs3 folder (which contains `rpcs3.sln` ), as well as download and extract the [additional libs ](https://github.com/RPCS3/glslang/releases/download/custom-build-win/glslanglibs_mt.7z ) to `lib\%CONFIGURATION%-x64\` to speed up compilation time (unoptimised/debug libs are currently not available precompiled).
2019-06-10 19:52:07 +00:00
2021-03-29 19:45:48 +00:00
If you're not using the precompiled libs, build the following projects in *__BUILD_BEFORE* folder by right-clicking on a project > *Build* .:
* glslang-build
* **Either** llvm_build **or** llvm_build_clang_cl
* spirv-tools-build
Afterwards:
2019-06-10 19:52:07 +00:00
`Build > Build Solution`
### Linux
While still in the project root:
1) `cd .. && mkdir rpcs3_build && cd rpcs3_build`
2021-04-13 13:02:18 +00:00
2) `cmake ../rpcs3/ && make` or `CXX=g++-10 CC=gcc-10 cmake ../rpcs3/ && make` to force these compilers
2019-06-10 19:52:07 +00:00
3) Run RPCS3 with `./bin/rpcs3`
When using GDB, configure it to ignore SIGSEGV signal (`handle SIGSEGV nostop noprint`).
If desired, use the various build options in [CMakeLists ](https://github.com/RPCS3/rpcs3/blob/master/CMakeLists.txt ).