summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: d14b2acf8641471fcccee795efb8820a761865cd (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
131
132
133
134
# Maintainer: jc_gargma <jc_gargma@iserlohn-fortress.net>
# Maintainer (Arch): Jelle van der Waa <jelle@archlinux.org>
# Contributor (AUR): Graham Edgecombe <graham@grahamedgecombe.com>

# # I maintain this because:
# Arch version lacks additional optimization and hardening flags
# Arch version builds with discord, benchmark, update checks, online tests, ccache
# Arch version cannot be built offline

pkgname=openrct2
pkgver=0.4.11
_titlepkgver=0.4.6
_objectpkgver=1.4.4
_opensfxpkgver=1.0.5
_openmsxpkgver=1.5
_replayspkgver=0.0.79
pkgrel=2
pkgdesc='Open source re-implementation of Roller Coaster Tycoon 2 (requires full copy of the game)'
arch=('x86_64' 'i686' 'armv7h' 'aarch64')
url='https://openrct2.io'
license=('GPL3')
depends=('hicolor-icon-theme' 'sdl2' 'speexdsp'
          'fontconfig' 'libpng' 'libzip' 'icu'
         'libogg' 'libvorbis' 'flac')
makedepends=('cmake' 'nlohmann-json')
optdepends=('zenity: System dialog box support (GNOME/GTK)'
            'kdialog: System dialog box support (KDE)'
            'alsa-lib: ALSA audio driver'
            'libpulse: PulseAudio audio driver')
options=('lto')
install=openrct2.install
source=($pkgname-$pkgver.tar.gz::https://github.com/OpenRCT2/OpenRCT2/archive/v${pkgver}.tar.gz
        $pkgname-title-sequences-$_titlepkgver.zip::https://github.com/OpenRCT2/title-sequences/releases/download/v${_titlepkgver}/title-sequences.zip
        $pkgname-objects-$_objectpkgver.zip::https://github.com/OpenRCT2/objects/releases/download/v${_objectpkgver}/objects.zip
        $pkgname-opensfx-$_opensfxpkgver.zip::https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${_opensfxpkgver}/opensound.zip
        $pkgname-openmsx-$_openmsxpkgver.zip::https://github.com/OpenRCT2/OpenMusic/releases/download/v${_openmsxpkgver}/openmusic.zip
        $pkgname-replays-$_replayspkgver.zip::https://github.com/OpenRCT2/replays/releases/download/v${_replayspkgver}/replays.zip
        add-algorithm-include-gcc-14.patch
        )
sha256sums=('d6211dc9651b43315c5d22e30aa41e582bb861d2541b82bb65de8f4f95f0cdef'
            '24a189cdaf1f78fb6d6caede8f1ab3cedf8ab9f819cd2260a09b2cce4c710d98'
            'da017b90a3870649cb4ff22e14edfc746259af048967311d1133cf4c836ae5a0'
            'a952148be164c128e4fd3aea96822e5f051edd9a0b1f2c84de7f7628ce3b2e18'
            'c3fac4caa90398a2b4c5bb32e0dd0f44073086fe16121d3dc49b3ca120474068'
            '045da1df8697e2d33ff33b34008f22e7698280aa4639afd1b1fc3c590d5e9956'
            'c894771e782df348919646506504676506f9d49eecb1d84486d8589055c8e59f')
b2sums=('16647324f46aadd8b193dc703619836553e69c45b41a541b4c5670e37321c5ea5a6d9cf4a9ed1f669c25d9e9f178f28e806c9535e42a8be3d7212a1e92a4503e'
        '5f7b36cd1372106923000775307ea7ff8c142c3b1d026d84b86f255a629b0a2ac16a682300999789229a8833d4c7327c858c04710ecddfb97af1858ff121a5c4'
        '6e17659902dc76ab595ed68fc696eba64ac9add6212cbbd945abafe0d178e183410506543509135f2c1c5d2a1e0dfddd287c4f2b80e7d4bc794596844658f26d'
        '7ddb1437d7e68373f05bd60d77f03971b8a1d6f4280d008d5bf3e86b5d2cb46001a04edddeeb04a06a37801c3afbd35926beb54fe5a72c7fa88b50d0a0b18535'
        '11cf46a54716097038e134ae11aeb23823097ca96189dabeb0e43d7050d5e776aa309c38de247da15b1eec7ed6be6299d5673a92df1323cc3a4a5bbc4f48d567'
        '4b5c4d96be91055ceff8f5f5f1a894cc2544659983e61ac2f42d655229357b6a368553c1ee45d147cb360c8d54bb0ca78b61a9716efa8d1d7f37cd7c5ba50fa7'
        'dbe21a82a6650496d94d58d8133998c099c87844f204e3fae3d4eca372a33953eb58fabec544589b3f0ebd98f8ac10efdc2c37ba4e5d30cae513d87520ba66c5')

prepare() {
  cd "$srcdir/OpenRCT2-$pkgver"

  # Add titles data
  mkdir data/sequence
  cp -r --reflink $srcdir/*.parkseq data/sequence

  # Add objects data
  mkdir data/object
  cp -r --reflink $srcdir/official data/object
  cp -r --reflink $srcdir/rct1 data/object
  cp -r --reflink $srcdir/rct2 data/object
  cp -r --reflink $srcdir/rct2tt data/object
  cp -r --reflink $srcdir/rct2ww data/object

  # Add opensfx data
  mkdir data/assetpack
  mkdir data/object/official/audio
  cp -r --reflink $srcdir/assetpack/openrct2.sound.parkap data/assetpack/
  cp -r --reflink $srcdir/object/official/audio/openrct2.audio.additional.parkobj data/object/official/audio/

  # Add openmsx data
  mkdir data/object/official/music
  cp -r --reflink $srcdir/assetpack/openrct2.music.alternative.parkap data/assetpack/
  cp -r --reflink $srcdir/object/official/music/*.parkobj data/object/official/music/

  # Add replays data
  mkdir -p testdata/replays
  cp -r --reflink $srcdir/*.parkrep testdata/replays

  mkdir -p build

  # Workaround for gcc14
  patch -Np1 -i ${srcdir}/add-algorithm-include-gcc-14.patch
}

build() {
  cd "$srcdir/OpenRCT2-$pkgver/build"

  # Needed to be able to build while LTO is enabled
  # https://github.com/OpenRCT2/OpenRCT2/issues/6200
  CXXFLAGS+=" -Wno-error=stringop-overflow -Wno-error=nonnull"

  # Required options to workaround GCC 12 issues
  # https://github.com/OpenRCT2/OpenRCT2/issues/17371
  CXXFLAGS+=" -Wno-error=maybe-uninitialized  -Wno-error=restrict  -Wno-error=null-dereference"

  # Required for -DDISABLE_NETWORK as of 0.3.3
  CXXFLAGS+=" -Wno-error=unused-const-variable"

  export CFLAGS="$CFLAGS -O3 -fstack-protector-all -fPIE"
  export CXXFLAGS="$CXXFLAGS -O3 -fstack-protector-all -fPIE"
  export LDFLAGS="$LDFLAGS,-pie"

  cmake -DCMAKE_BUILD_TYPE=Release    \
        -DCMAKE_INSTALL_PREFIX=/usr   \
        -DSTATIC=OFF  \
        -DCMAKE_INSTALL_LIBDIR=/usr/lib      \
        -DOPENRCT2_USE_CCACHE=OFF      \
        -DDOWNLOAD_TITLE_SEQUENCES=OFF \
        -DDOWNLOAD_OBJECTS=OFF         \
        -DDOWNLOAD_OPENSFX=OFF         \
        -DDOWNLOAD_OPENMSX=OFF         \
        -DDOWNLOAD_REPLAYS=OFF         \
        -DDISABLE_DISCORD_RPC=ON       \
        -DDISABLE_GOOGLE_BENCHMARK=ON  \
        -DDISABLE_HTTP=ON              \
        -DDISABLE_NETWORK=ON           \
        ..
  make all g2
}

package() {
  cd "$srcdir/OpenRCT2-$pkgver/build"

  make DESTDIR="$pkgdir" install

  rm "$pkgdir/usr/lib/libopenrct2.a"
  rmdir "$pkgdir/usr/lib"
}