summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: 0a20bfbbe57db9fbb31cbe7c5ab06e12a41b718f (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
# 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
# Arch version cannot be built offline

pkgname=openrct2
pkgver=0.4.10
_titlepkgver=0.4.6
_objectpkgver=1.4.3
_opensfxpkgver=1.0.5
_openmsxpkgver=1.5
_replayspkgver=0.0.79
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=('7889791f2a8f14e6a970d6f6e48b897f91c9c6345a745b0e07815a77d7ddbc36'
            '24a189cdaf1f78fb6d6caede8f1ab3cedf8ab9f819cd2260a09b2cce4c710d98'
            'cc2c8304e35337fb7b4daffa9b0ad1afa9a9f3f8f895817671a71c665d372764'
            'a952148be164c128e4fd3aea96822e5f051edd9a0b1f2c84de7f7628ce3b2e18'
            'c3fac4caa90398a2b4c5bb32e0dd0f44073086fe16121d3dc49b3ca120474068'
            '045da1df8697e2d33ff33b34008f22e7698280aa4639afd1b1fc3c590d5e9956')
b2sums=('001918bf436be79a96b222971cdbb9118f26c5350c027360b749588c2112e8a12ae9aa435f6111dec1cb5c3f03d53560ca8b429c7ef0cccb4a5fe12eaf01c9ba'
        '5f7b36cd1372106923000775307ea7ff8c142c3b1d026d84b86f255a629b0a2ac16a682300999789229a8833d4c7327c858c04710ecddfb97af1858ff121a5c4'
        '0e84f5b520c2c46503e3b1ea46ce6eebbc4960101b30405f7b29c3c8b2e76d45ff807e0a632b262a30a1d9f2acd11ed7870b81e0a3afd5357637ff946ef5a0e6'
        '7ddb1437d7e68373f05bd60d77f03971b8a1d6f4280d008d5bf3e86b5d2cb46001a04edddeeb04a06a37801c3afbd35926beb54fe5a72c7fa88b50d0a0b18535'
        '11cf46a54716097038e134ae11aeb23823097ca96189dabeb0e43d7050d5e776aa309c38de247da15b1eec7ed6be6299d5673a92df1323cc3a4a5bbc4f48d567'
        '4b5c4d96be91055ceff8f5f5f1a894cc2544659983e61ac2f42d655229357b6a368553c1ee45d147cb360c8d54bb0ca78b61a9716efa8d1d7f37cd7c5ba50fa7')

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