Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ sudo dnf install cmake libunwind-devel glfw-devel vulkan-devel gcc-c++ gcc sox-d
sudo pacman -S libunwind glfw-x11 vulkan-devel sox git cmake alsa-lib nasm
```

### The dependencies for MacOS (iOS target, rpcs3 only):

macOS 15, Xcode 16 (with iOS workload) and Cmake 3.20+

## Cloning the Repo

```
Expand All @@ -34,3 +38,10 @@ For Ubuntu 24.04 you need to manually specify compiler version:
```
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_INIT="-march=native" -DCMAKE_CXX_COMPILER=g++-14 && cmake --build build -j$(nproc)
```

For iOS you need to manually specify the compiler and toolchain file:

```
cmake -B build -G Xcode -DCMAKE_TOOLCHAIN_FILE=ios/ios.toolchain.cmake -DPLATFORM=OS64 -DCMAKE_POLICY_VERSION_MINIMUM=3.20
cmake --build build --config Release
```
7 changes: 6 additions & 1 deletion .github/workflows/rpcsx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
sudo apt update
sudo apt install -y cmake build-essential libunwind-dev \
libvulkan-dev vulkan-validationlayers \
libsox-dev g++-14 ninja-build libasound2-dev libglfw3-dev nasm libudev-dev
libsox-dev g++-14 ninja-build libasound2-dev libglfw3-dev nasm libudev-dev libusb-1.0-0-dev
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build -j$(($(nproc) + 2))
sudo cmake --build build
Expand Down Expand Up @@ -90,6 +90,11 @@ jobs:
sudo apt update
sudo apt install ninja-build

- name: Install libusb
run: |
sudo apt-get update
sudo apt-get install -y libusb-1.0-0-dev

- name: Setup Android SDK
uses: android-actions/setup-android@v3

Expand Down
30 changes: 21 additions & 9 deletions 3rdparty/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ endif()


# libusb
if(CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
if (CMAKE_SYSTEM_NAME MATCHES "iOS")
message(STATUS "Skip libusb on iOS")
elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
pkg_check_modules(LIBUSB REQUIRED IMPORTED_TARGET libusb-1.0>=1.0 )
cmake_dependent_option(USE_SYSTEM_LIBUSB "Use system libusb-1.0 as shared library" ON
"LIBUSB_FOUND" OFF)
Expand All @@ -144,7 +146,9 @@ else()
cmake_dependent_option(USE_SYSTEM_LIBUSB "Use system libusb-1.0 as shared library" OFF
"LIBUSB_FOUND" OFF)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
if (CMAKE_SYSTEM_NAME MATCHES "iOS")
message(STATUS "Skip libusb on iOS")
elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
# Always use system libusb as reference implementation isn't supported
add_library(usb-1.0-shared INTERFACE)
target_link_libraries(usb-1.0-shared INTERFACE PkgConfig::LIBUSB)
Expand All @@ -168,9 +172,13 @@ else()
endif()
endif()


# hidapi
add_subdirectory(hidapi)
if (CMAKE_SYSTEM_NAME MATCHES "iOS")
add_library(3rdparty_hidapi INTERFACE)
else()
add_subdirectory(hidapi)
endif()


# glslang
add_library(3rdparty_glslang INTERFACE)
Expand All @@ -182,8 +190,7 @@ add_subdirectory(yaml-cpp)


# OpenGL

if (NOT ANDROID AND NOT WITHOUT_OPENGL)
if (NOT ANDROID AND NOT WITHOUT_OPENGL AND NOT CMAKE_SYSTEM_NAME MATCHES "iOS")
find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS EGL)

add_library(3rdparty_opengl INTERFACE)
Expand All @@ -209,7 +216,11 @@ endif()
add_subdirectory(stblib)

# Cubeb
add_subdirectory(cubeb EXCLUDE_FROM_ALL)
if (CMAKE_SYSTEM_NAME MATCHES "iOS")
add_library(3rdparty_cubeb INTERFACE)
else()
add_subdirectory(cubeb EXCLUDE_FROM_ALL)
endif()

# SoundTouch
add_subdirectory(SoundTouch EXCLUDE_FROM_ALL)
Expand Down Expand Up @@ -387,9 +398,10 @@ add_subdirectory(opencv EXCLUDE_FROM_ALL)
# FUSION
add_subdirectory(fusion EXCLUDE_FROM_ALL)


# add nice ALIAS targets for ease of use
if(USE_SYSTEM_LIBUSB)
if (CMAKE_SYSTEM_NAME MATCHES "iOS")
message(STATUS "Skip libusb on iOS")
elseif(USE_SYSTEM_LIBUSB)
add_library(3rdparty::libusb ALIAS usb-1.0-shared)
else()
add_library(3rdparty::libusb ALIAS usb-1.0-static)
Expand Down
37 changes: 26 additions & 11 deletions 3rdparty/MoltenVK/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@
cmake_minimum_required(VERSION 3.20)
project(moltenvk NONE)
include(ExternalProject)

ExternalProject_Add(moltenvk
GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git
GIT_TAG 81541f6
BUILD_IN_SOURCE 1
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK
CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --macos
BUILD_COMMAND xcodebuild build -quiet -project "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKPackaging.xcodeproj" -scheme "MoltenVK Package \(macOS only\)" -configuration "Release" -arch "${CMAKE_HOST_SYSTEM_PROCESSOR}"
COMMAND ln -f "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/dylib/macOS/libMoltenVK.dylib" "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib"
INSTALL_COMMAND ""
BUILD_BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib"
)
if (CMAKE_SYSTEM_NAME MATCHES "iOS")
ExternalProject_Add(moltenvk
GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git
GIT_TAG 6f892b6
BUILD_IN_SOURCE YES
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK
CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --ios
BUILD_COMMAND xcodebuild build -quiet -project "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKPackaging.xcodeproj" -scheme "MoltenVK Package \(iOS only\)" -configuration "Release" -arch "arm64"
COMMAND ""
INSTALL_COMMAND ""
BUILD_BYPRODUCTS ""
)
else()
ExternalProject_Add(moltenvk
GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git
GIT_TAG 81541f6
BUILD_IN_SOURCE 1
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK
CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --macos
BUILD_COMMAND xcodebuild build -quiet -project "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKPackaging.xcodeproj" -scheme "MoltenVK Package \(macOS only\)" -configuration "Release" -arch "${CMAKE_HOST_SYSTEM_PROCESSOR}"
COMMAND ln -f "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/dylib/macOS/libMoltenVK.dylib" "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib"
INSTALL_COMMAND ""
BUILD_BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib"
)
endif()
4 changes: 4 additions & 0 deletions 3rdparty/asmjit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,7 @@ target_link_libraries(asmjit PRIVATE ${ASMJIT_DEPS})

set_property(TARGET asmjit PROPERTY FOLDER "3rdparty/")
add_library(3rdparty::asmjit ALIAS asmjit)

if(CMAKE_SYSTEM_NAME MATCHES "iOS")
target_compile_options(asmjit PRIVATE -DASMJIT_NO_JIT)
endif()
26 changes: 26 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,32 @@ option(USE_SYSTEM_OPENCV "Prefer system OpenCV instead of the builtin one" ON)
option(HAS_MEMORY_BREAKPOINTS "Add support for memory breakpoints to the interpreter" OFF)
option(USE_LTO "Use LTO for building" ON)

# use global cmake to build rpcs3 for iOS at the moment
if (CMAKE_SYSTEM_NAME MATCHES "iOS")
set(WITH_RPCSX off)
set(WITH_RPCS3 on)
set(USE_SYSTEM_CURL off)
set(USE_DISCORD_RPC off)
set(USE_SYSTEM_OPENCV off)
set(USE_SYSTEM_FFMPEG off)
set(USE_FAUDIO off)
set(USE_SDL2 off)
set(WITH_LLVM off)
set(BUILD_LLVM off)
set(STATIC_LINK_LLVM off)
set(DISABLE_LTO on)
set(USE_LTO off)
set(USE_OPENSL off)
set(ASMJIT_NO_SHM_OPEN on)
set(USE_SYSTEM_ZLIB off)
set(USE_LIBEVDEV off)
set(COMPILE_FFMPEG on)
set(WITHOUT_OPENGL on)
set(WITHOUT_OPENGLEW on)
set(WITHOUT_OPENAL on)
set(USE_SYSTEM_SDL off)
set(USE_SYSTEM_MVK off)
endif()

if (NOT WITH_RPCS3)
set(WITHOUT_OPENGL on)
Expand Down
Loading
Loading