summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: 626aa7d660f91d6bcdad7fd9f201c3bcb19e1e13 (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
# 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.18
_titlepkgver=0.4.14
_objectpkgver=1.4.12
_opensfxpkgver=1.0.5
_openmsxpkgver=1.6
_replayspkgver=0.0.84
pkgrel=1
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
        )
sha256sums=('2dd45609053e74a8b2043869b4163d5fe87711c5623d144250368cca0b3b71ae'
            '140df714e806fed411cc49763e7f16b0fcf2a487a57001d1e50fce8f9148a9f3'
            '6417dad971674e5cf39bf56e83e04e4086547145e3fac696f163037fe841e7be'
            'a952148be164c128e4fd3aea96822e5f051edd9a0b1f2c84de7f7628ce3b2e18'
            'f097d3a4ccd39f7546f97db3ecb1b8be73648f53b7a7595b86cccbdc1a7557e4'
            'de798331dfee60dbd12c01adb70dc12d01271365dfbe84ce529bf341b7b2f0f8')
b2sums=('5e19ebbf021753e402bb00bf33f79eda254bb2b0c4d22113ab7cdc802cbee2f4a37a5142b238b5eeb0a3d6fce919f60dc0ab2b9c73c628cf273137aa88902878'
        'e0bc547b26ba0032c54be0661a1e26bf63a73e3bf0183e3e3d972cbff80e95dd4fa2584852f0da6a597849d822b6d89c3154cbe5ecc99b7eb456560810ed8d17'
        '896c54e873a7cc143335e8b73dd3115def8fb5205de0028120dee63589db1644b9ba37e390d15cea0cac31014682ac8901e88b519684a03c686b93a702ada579'
        '7ddb1437d7e68373f05bd60d77f03971b8a1d6f4280d008d5bf3e86b5d2cb46001a04edddeeb04a06a37801c3afbd35926beb54fe5a72c7fa88b50d0a0b18535'
        'fff3ac6d944ed2021645c064de3daf88c11930bf8817e9c8620cfa73f2da076745dd5b5da36b616c8ee7b2ee0272228a88e264bf1ce948509dc90d77a7a87d5d'
        '7f28f3d5e07e2aa8dc966dafe3fc3ad7e76961c84558d3cdd7fd494ba63dc2f4dfc0a79154d196b9b9139dfa304e745b03546e4087b67538efcf6dc428c69bad')

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
}

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"
}