Below are instructions for Fedora 28. The dependencies are pretty common and should be available for any other popular distribution. A recent GCC (7+) is required for C++17.
Install dependencies
$ dnf install git gcc-c++ cmake boost-devel qt5-devel glfw-devel \
metis-devel sqlite-devel openssl-devel libpng-devel zlib-devel \
freetype-devel pulseaudio-libs-devel libicu-devel spdlog-devel \
pugixml-devel glm-devel tbb-devel SDL2-devel ninja-build
Clone the repository recursively
$ git clone --recurse-submodules https://github.com/nongeneric/ps3emu.git
Configure
$ mkdir /path/to/build-dir
$ cd /path/to/build-dir
$ cmake -GNinja /path/to/repo
Compile
$ ninja
Intel VTune integration
The ITTNOTIFY_API is used in several places for better profiler output. Either make sure the following directory exists
/opt/intel/vtune_amplifier/include
or set EMU_CONFIGURATION_VTUNE
to FALSE
.
Debug vs. Release
Building in the Debug configuration drastically reduces performance and also impacts the code generation of the rewrite tool. As such it is recommended to initially build in the Release configuration, preparing the environment and then building in Debug to continue developing.
The EMU_CONFIGURATION_DEBUG
option select the configuration.
Other options
EMU_CONFIGURATION_PAUSE
allows pausing the virtual machine to implement breakpoints for the debugger. It decreases performance and is only using for debugging.
EMU_CONFIGURATION_LOG
can be used to completely remove any trace of logging functionality from the source code. Usually the performance improvement after disabling logging is negligible.
EMU_CONFIGURATION_TESTS
enables some hooks necessary for running tests. Setting it to FALSE
has no effect on performance.
EMU_CONFIGURATION_GLDEBUG
enables OpenGL debug context and installs a callback that prints any warnings and errors that come from the video driver.