summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 6a3ab8fd86e4ef9f78c19fb3b857829a1a40cd35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Maintainer: Zion Nimchuk <zionnimchuk@gmail.com>
# Submitter: Maxime Gauduin <alucryd@archlinux.org>

pkgname=rpcs3-git
pkgver=0.0.33.r16916.53c84577c0
pkgrel=1
pkgdesc='A Sony PlayStation 3 emulator'
arch=(x86_64 aarch64)
url=https://github.com/RPCS3/rpcs3
license=(GPL-2.0-only)
depends=(
  alsa-lib
  glew
  glu
  # Use bundled FFMPEG for now since we use FFMPEG 5.1.2
  #libavcodec.so
  #libavutil.so
  #libswscale.so
  libevdev
  libgl
  libice
  libncursesw.so
  libpng
  libpulse
  libsm
  libx11
  libxext
  openal
  qt6-base
  qt6-declarative
  qt6-multimedia
  qt6-svg
  sdl2
  vulkan-icd-loader
  zlib
  curl
  pugixml
  flatbuffers
  llvm
)
optdepends=(
  vulkan-validation-layers
  rpcs3-udev
)
makedepends=(
  cmake
  git
  libglvnd
  python
  # clang is required because audio is broken with latest gcc
  clang
)
provides=(rpcs3)
conflicts=(rpcs3)
options=(!emptydirs !lto !strip)
source=(
  git+https://github.com/RPCS3/rpcs3.git
  git+https://github.com/KhronosGroup/glslang.git
)
sha256sums=(
  SKIP
  SKIP
)

pkgver() {
  cd rpcs3

  COMM_TAG="$(grep 'version{.*}' rpcs3/rpcs3_version.cpp | awk -F[{,] '{printf "%d.%d.%d", $2, $3, $4}')"
  COMM_COUNT="$(git rev-list --count HEAD)"
  COMM_HASH="$(git rev-parse --short HEAD)"
  echo "${COMM_TAG}.r${COMM_COUNT}.${COMM_HASH}"
}

prepare() {
  cd rpcs3
  
  git submodule init 3rdparty/glslang/glslang
  git config submodule.3rdparty/glslang.url ../glslang
  
  SUBMODULES=($(git config --file .gitmodules --get-regexp path | \
    awk '!/libpng/ && !/zlib/ && !/curl/ && !/llvm/ && !/glslang/ && !/pugixml/ && !/SDL/ && !/flatbuffers/ '))

  # We need to convert from a relative folder path to a https://github.com path
  for ((i=0;i<${#SUBMODULES[@]};i+=2))
  do
    pathid=${SUBMODULES[$i]}
    path=${SUBMODULES[$i+1]}

    git submodule init $path
    urlid=${pathid/%.path/.url}

    # This gets the last two paths in the url, ie RPCS3/rpcs3.git
    url=$(git config $urlid | awk -F/ '{print $(NF-1)"/"$(NF-0)}')

    git config $urlid https://github.com/$url
    git -c protocol.file.allow=always submodule update --init --filter=tree:0 $path
  done
  
  git -c protocol.file.allow=always submodule update 3rdparty/glslang/glslang
}

build() {
  # GLIBCXX_ASSERTIONS is know to cause unwanted assertions and crash rpcs3
  BAD_FLAG="-Wp,-D_GLIBCXX_ASSERTIONS"
  CXXFLAGS="${CXXFLAGS//$BAD_FLAG/}"

  CC=clang CXX=clang++ cmake -S rpcs3 -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_SKIP_RPATH=ON \
    -DUSE_NATIVE_INSTRUCTIONS=OFF \
    -DUSE_SYSTEM_FFMPEG=OFF \
    -DUSE_SYSTEM_LIBPNG=ON \
    -DUSE_SYSTEM_ZLIB=ON \
    -DUSE_SYSTEM_CURL=ON \
    -DUSE_SYSTEM_FLATBUFFERS=ON \
    -DUSE_SYSTEM_PUGIXML=ON \
    -DUSE_SDL=ON \
    -DUSE_SYSTEM_SDL=ON \
    -DBUILD_LLVM=OFF \
    -DUSE_SYSTEM_WOLFSSL=OFF
  
  cmake --build build
}

package() {
  DESTDIR="${pkgdir}" cmake --install build
}

# vim: ts=2 sw=2 et: