summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: f4e5f451fb62ab42225af25d5ba2cafe94708338 (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
# Maintainer: jc_gargma <jc_gargma@iserlohn-fortress.net>
# Maintainer (Arch): Sven-Hendrik Haase <svenstaro@gmail.com>
# Contributor (Arch): Sandy Carter <bwrsandman@gmail.com>

# # I maintain this because:
# Arch version lacks additional optimization and hardening flags
# Arch version does not use system bullet
# Arch version does not use system recastnavigation
# Arch version cannot be built offline
# Arch version segfaults when loading save games

pkgname=openmw
pkgver=0.47.0
pkgrel=11
pkgdesc="Open-source engine reimplementation for the role-playing game Morrowind"
arch=('x86_64')
url="http://www.openmw.org"
license=('GPL3' 'MIT' 'custom')
depends=('openal' 'openscenegraph' 'mygui' 'qt5-base' 'ffmpeg' 'sdl2' 'unshield' 'libxt' 'boost-libs'
         'recastnavigation-openmw' 'bullet-dp')
makedepends=('cmake' 'boost' 'doxygen' 'ninja' 'gcc12')
options=(lto)
source=("https://github.com/OpenMW/openmw/archive/openmw-${pkgver}.tar.gz"
        1870.patch
        1941.patch
        98a7d90ee258ceef9c70b0b2955d0458ec46f048.patch)
sha512sums=('517e650d0054cdba8d38de05ed3975b0fcf8de32fda59c8df7c34b973e5390efa0dd9ec79babdfdaa79dee7aa8a75009776f62fad91b9aa9aa28016c5032652b'
            '99f721bbeba43a0e259498bbf16ae24dba2a8554e5543fce265ef6c3cc544f4b28c6a13ed3aa51b1eea97fc0552fe056b028188f326dca0265096cf29988f504'
            'ca1b8601b4baca6929c928b9349e3b07d21992890d4c50c5ff4d537a5ab1b77f044c520af46e8f21480d37902e6329e5ec4459056ac9d8801ba0278d8391bcd7'
            '37dfc5611523bf158fe2b6c19bdc11ebd0a70837943183b16b1ec36e06df37c7e089586935753c7442720349d5a7e356dc4f11e79666af0c4d5146f8f64d4853')
b2sums=('40e8b9670423259fa0cc03ef000c17ebe06d1d58c2527b51b25cea3b54978b8a698984371eac14ff212f9550253ab17d41b83d37426371f12f5ce2d30b240d3d'
        '8989cd81b4a61eb91123d15da6c3cbbf7d0fcf1e70561a1691c82de2cfb479a594635a8a7437989e054e293427b800bae44b1155eedf860c9320e9382620ea0b'
        '9f5511b5b8a02fbfa669367339db9b76d2e4c99c3d285be9c83b30ee040e88c09dc00ee5d404f33e43bce2735fe6d6e40799cbc1ec60fa1759f6c7b997eb255c'
        '293027182d38b0b75aa46b9a4048bec3ccb57e1d200996c3340ba4b9a3512f5952d2b2da67be89e86c799312448b23ce5d4b56801002384b41428ac9f8fe77bd')

prepare () {
  cd openmw-openmw-$pkgver
  patch -Np1 -i "$srcdir"/1870.patch
  patch -Np1 -i "$srcdir"/1941.patch
  patch -Np1 -i "$srcdir"/98a7d90ee258ceef9c70b0b2955d0458ec46f048.patch
}

build() {
  cd ${pkgname}-${pkgname}-${pkgver}

  # Use gcc12 until build errors are fixed
  export CC=gcc-12
  export CXX=g++-12
  export AR=gcc-ar-12
  export NM=gcc-nm-12
  export RANLIB=gcc-ranlib-12

  # gcc 10.2 + qt 5.15 + pie = segfault
  export CFLAGS="$CFLAGS -O3"
  export CXXFLAGS="$CXXFLAGS -O3"

  # Prevent segfaults when loading a save game
  #export CXXFLAGS="$(echo $CXXFLAGS | sed -i 's/-Wp,-D_GLIBCXX_ASSERTIONS//' - )" # No longer works
  export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-Wp,-D_GLIBCXX_ASSERTIONS//')"

  cmake \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_BUILD_TYPE=Release \
    -GNinja \
    -DOPENMW_USE_SYSTEM_BULLET=ON \
    -DOPENMW_USE_SYSTEM_OSG=ON \
    -DOPENMW_USE_SYSTEM_MYGUI=ON \
    -DOPENMW_USE_SYSTEM_RECASTNAVIGATION=ON \
    -DOpenGL_GL_PREFERENCE=GLVND \
    -Bbuild
  ninja -C build "$MAKEFLAGS"
}

package() {
  cd ${pkgname}-${pkgname}-${pkgver}
  DESTDIR="$pkgdir" ninja -C build install
}