summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 90f5df8715d86ffd28cb231a3a33e19d1079c802 (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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# Maintainer: Alexander F. Rødseth <xyproto@archlinux.org>
# Contributor: loqs
# Contributor: Jorge Araya Navarro <jorgejavieran@yahoo.com.mx>
# Contributor: Cristian Porras <porrascristian@gmail.com>
# Contributor: Matthew Bentley <matthew@mtbentley.us>
# Contributor: HurricanePootis <hurricanepootis@protonmail.com>
# Contributor: Toolybird <toolybird at tuta dot io>

pkgbase=godot-double
pkgname=(godot-double godot-double-mono)
pkgver=4.7
pkgrel=2
pkgdesc='Advanced cross-platform 2D and 3D game engine (double-precision build)'
url='https://godotengine.org/'
license=(MIT)
arch=(x86_64)
options=(!lto)
makedepends=(alsa-lib dotnet-sdk git nuget pulse-native-provider scons setconf yasm)
depends=(brotli ca-certificates embree freetype2 graphite libglvnd libspeechd libsquish libtheora libvorbis
         libwebp libwslay libxcursor libxi libxinerama libxrandr miniupnpc openxr pcre2)
optdepends=('pipewire-alsa: for audio support'
            'pulse-native-provider: for audio support')
source=("godot::git+https://github.com/godotengine/godot#tag=$pkgver-stable")
b2sums=('d778a58d2d0b357bac463e7e4bbf0fd916a6688dd2516893dd7342e6a2bc368df356b4ab0087e786c173222246f6a5b33a540001aac0246d09b3f4be17f5d0d0')


prepare() {
  cd godot

  # Patch for miniupnpc
  sed -i 's/addr, 16/addr, 16, nullptr, 0/g' modules/upnp/upnp.cpp

  cd misc/dist/linux

  cp -f org.godotengine.Godot.desktop org.godotengine.Godot-Double.desktop
  setconf org.godotengine.Godot-Double.desktop Exec godot-double
  setconf org.godotengine.Godot-Double.desktop Icon godot-double.svg
  setconf org.godotengine.Godot-Double.desktop Name 'Godot Engine (Double Precision)'

  sed -i 's,xmlns="https://specifications.freedesktop.org/shared-mime-info-spec",xmlns="http://www.freedesktop.org/standards/shared-mime-info",g' \
    org.godotengine.Godot.xml
  cp -f org.godotengine.Godot.xml org.godotengine.Godot-Double.xml

  cp -f org.godotengine.Godot.desktop org.godotengine.Godot-Double-mono.desktop
  setconf org.godotengine.Godot-Double-mono.desktop Exec godot-double-mono
  setconf org.godotengine.Godot-Double-mono.desktop Icon godot-double-mono.svg
  setconf org.godotengine.Godot-Double-mono.desktop Name 'Godot Engine Mono (Double Precision)'

  cp -f org.godotengine.Godot.xml org.godotengine.Godot-Double-mono.xml
}

case $CARCH in
  x86_64*) _CARCH=x86_64;;
  aarch64) _CARCH=arm64;;
esac

build() {
  cd godot

  export BUILD_NAME=arch_linux

  # Not unbundled (yet):
  #  mbedtls
  #  enet (contains no upstreamed IPv6 support)
  #  AUR: libwebm, rvo2
  #  recastnavigation, xatlas

  _args=(
    -j"${GDOPS_SCONS_JOBS:-$(nproc --all)}"
    cflags="$CFLAGS -fPIC -Wl,-z,relro,-z,now -w"
    cxxflags="$CXXFLAGS -fPIC -Wl,-z,relro,-z,now -w"
    linkflags="$LDFLAGS"
    arch=$_CARCH
    builtin_brotli=no
    builtin_certs=no
    builtin_clipper2=yes
    builtin_embree=no
    builtin_enet=yes
    builtin_freetype=no
    builtin_glslang=yes
    builtin_graphite=no
    builtin_harfbuzz=yes
    builtin_icu4c=yes
    builtin_libogg=no
    builtin_libpng=no
    builtin_libtheora=no
    builtin_libvorbis=no
    builtin_libwebp=no
    builtin_mbedtls=yes
    builtin_miniupnpc=no
    builtin_msdfgen=yes
    builtin_openxr=no
    builtin_pcre2=no
    builtin_pcre2_with_jit=no
    builtin_recastnavigation=yes
    builtin_rvo2_2d=yes
    builtin_rvo2_3d=yes
    builtin_squish=no
    builtin_wslay=yes
    builtin_xatlas=yes
    builtin_zlib=no
    builtin_zstd=no
    colored=yes
    debug_symbols=yes
    disable_exceptions=false
    platform=linuxbsd
    production=yes
    pulseaudio=yes
    precision=double
    system_certs_path=/etc/ssl/certs/ca-certificates.crt
    target=editor
    use_llvm=no
    werror=no
  )

  # Regular build
  scons "${_args[@]}"

  # Mono build
  _args+=(module_mono_enabled=yes mono_glue=no)
  scons "${_args[@]}"

  bin/godot.linuxbsd.editor.double.$_CARCH.mono --headless --generate-mono-glue modules/mono/glue
  modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd --precision=double
}

package_godot-double() {
  cd godot

  install -Dm755 bin/godot.linuxbsd.editor.double.$_CARCH "$pkgdir/usr/bin/godot-double"

  install -Dm644 misc/logo/icon.svg "$pkgdir/usr/share/pixmaps/$pkgname.svg"
  install -Dm644 misc/dist/linux/org.godotengine.Godot-Double.desktop "$pkgdir/usr/share/applications/org.godotengine.Godot-Double.desktop"
  install -Dm644 misc/dist/linux/org.godotengine.Godot-Double.xml "$pkgdir/usr/share/mime/packages/org.godotengine.Godot-Double.xml"

  install -Dm644 misc/dist/linux/godot.6 "$pkgdir/usr/share/man/man6/$pkgname.6"
  install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}

package_godot-double-mono() {
  depends+=(dotnet-sdk-8.0)

  cd godot

  install -Dm755 bin/godot.linuxbsd.editor.double.$_CARCH.mono "$pkgdir/usr/lib/$pkgname/godot.linuxbsd.editor.double.$_CARCH.mono"

  cp -a bin/GodotSharp "$pkgdir/usr/lib/$pkgname/"
  install -d "$pkgdir/usr/bin"
  ln -s /usr/lib/$pkgname/godot.linuxbsd.editor.double.$_CARCH.mono "$pkgdir/usr/bin/$pkgname"

  install -Dm644 misc/logo/icon.svg "$pkgdir/usr/share/pixmaps/$pkgname.svg"
  install -Dm644 misc/dist/linux/org.godotengine.Godot-Double-mono.desktop "$pkgdir/usr/share/applications/org.godotengine.Godot-Double-mono.desktop"
  install -Dm644 misc/dist/linux/org.godotengine.Godot-Double-mono.xml "$pkgdir/usr/share/mime/packages/org.godotengine.Godot-Double-mono.xml"

  install -Dm644 misc/dist/linux/godot.6 "$pkgdir/usr/share/man/man6/$pkgname.6"
  install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}