Skip to content

Latest commit

 

History

History
136 lines (82 loc) · 6.45 KB

building-linux.md

File metadata and controls

136 lines (82 loc) · 6.45 KB

Build shadPS4 for Linux

First and foremost, Clang 18 is the recommended compiler as it is used for official builds and CI. If you build with GCC, you might encounter issues — please report any you find. Additionally, if you choose to use GCC, please build shadPS4 with Clang at least once before creating an [APP BUG] issue or submitting a pull request.

Preparatory steps

Installing dependencies

Debian & Ubuntu

sudo apt install build-essential clang git cmake libasound2-dev libpulse-dev libopenal-dev libssl-dev zlib1g-dev libedit-dev libudev-dev libevdev-dev libsdl2-dev libjack-dev libsndio-dev qt6-base-dev qt6-tools-dev qt6-multimedia-dev libvulkan-dev vulkan-validationlayers

Fedora

sudo dnf install clang git cmake libatomic alsa-lib-devel pipewire-jack-audio-connection-kit-devel openal-devel openssl-devel libevdev-devel libudev-devel libXext-devel qt6-qtbase-devel qt6-qtbase-private-devel qt6-qtmultimedia-devel qt6-qtsvg-devel qt6-qttools-devel vulkan-devel vulkan-validation-layers

Arch Linux

sudo pacman -S base-devel clang git cmake sndio jack2 openal qt6-base qt6-declarative qt6-multimedia sdl2 vulkan-validation-layers

Note: The shadps4-git AUR package is not maintained by any of the developers, and it uses the default compiler, which is often set to GCC. Use at your own discretion.

OpenSUSE

sudo zypper install clang git cmake libasound2 libpulse-devel libsndio7 libjack-devel openal-soft-devel libopenssl-devel zlib-devel libedit-devel systemd-devel libevdev-devel qt6-base-devel qt6-multimedia-devel qt6-svg-devel qt6-linguist-devel qt6-gui-private-devel vulkan-devel vulkan-validationlayers

Other Linux distributions

You can try one of two methods:

  • Search the packages by name and install them with your package manager, or
  • Install distrobox, create a container using any of the distributions cited above as a base, for Arch Linux you'd do:
distrobox create --name archlinux --init --image archlinux:latest

and install the dependencies on that container as cited above. This option is highly recommended for NixOS and distributions with immutable/atomic filesystems (example: Fedora Kinoite, SteamOS).

Cloning

git clone --recursive https://github.com/shadps4-emu/shadPS4.git
cd shadPS4

Building

There are 3 options you can choose from. Option 1 is highly recommended.

Option 1: Terminal-only

  1. Generate the build directory in the shadPS4 directory.
cmake -S . -B build/ -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++

To disable the Qt GUI, remove the -DENABLE_QT_GUI=ON flag. To change the build type (for debugging), add -DCMAKE_BUILD_TYPE=Debug.

  1. Use CMake to build the project:
cmake --build ./build --parallel$(nproc)

If your computer freezes during this step, this could be caused by excessive system resource usage. In that case, remove --parallel$(nproc).

Now run the emulator. If Qt was enabled at configure time:

./build/shadps4

Otherwise, specify the path to your PKG's boot file:

./build/shadps4 /"PATH"/"TO"/"GAME"/"FOLDER"/eboot.bin

You can also specify the Game ID as an argument for which game to boot, as long as the folder containing the games is specified in config.toml (example: Bloodborne (US) is CUSA00900).

Option 2: Configuring with cmake-gui

cmake-gui should be installed by default alongside cmake, if not search for the package in your package manager and install it.

Open cmake-gui and specify the source code and build directories. If you cloned the source code to your Home directory, it would be /home/user/shadPS4 and /home/user/shadPS4/build.

Click on Configure, select "Unix Makefiles", select "Specify native compilers", click Next and choose clang and clang++ as the C and CXX compilers. Usually they are located in /bin/clang and /bin/clang++. Click on Finish and let it configure the project.

Now every option should be displayed in red. Change anything you want, then click on Generate to make the changes permanent, then open a terminal window and do step 2 of Option 1.

Option 3: Visual Studio Code

This option is pretty convoluted and should only be used if you have VSCode as your default IDE, or just prefer building and debugging projects through it. This also assumes that you're using an Arch Linux environment, as the naming for some options might differ from other distros.

Download Visual Studio Code for your platform, or use Code - OSS if you'd like. Code - OSS is available on most Linux distributions' package repositories (on Arch Linux it is simply named code).

Once set up, go to Extensions and install "CMake Tools":

image

You can also install other CMake and Clang related extensions if you'd like, but this one is what enables you to configure and build CMake projects directly within VSCode.

Go to Settings, filter by @ext:ms-vscode.cmake-tools configure and disable this option:

image

If you wish to build with the Qt GUI, add -DENABLE_QT_GUI=ON to the configure arguments:

image

On the CMake tab, change the options as you wish, but make sure that it looks similar to or exactly like this:

image

When hovering over Project Status > Configure, there should be an icon titled "Configure". Click on it and let it configure the project, then do the same for Project Status > Build.

If you want to debug it, change the build type under Project Status > Configure to Debug (it should be the default) and compile it, then click on the icon in Project Status > Debug. If you simply want to launch the shadPS4 executable from within VSCode, click on the icon in Project Status > Launch.

Don't forget to change the launch target for both options to the shadPS4 executable inside shadPS4/build:

image