summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: b1fdabf91906a8c0e631743a397d2f7de6bb4860 (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
# Maintainer: asyync1024 <asyync1024 at proton dot me>
# Maintainer: Vitalii Kuzhdin <vitaliikuzhdin@gmail.com>

_pkgname=godot
pkgname=${_pkgname}32
pkgver=4.6
pkgrel=5
pkgdesc='Advanced cross-platform 2D and 3D game engine (32-bit)'
url='https://godotengine.org/'
license=(MIT)
arch=(x86_64)
makedepends=(
  alsa-lib
  pulse-native-provider
  scons
  setconf
  yasm
)
depends=(
  ca-certificates
  lib32-brotli
  lib32-freetype2
  lib32-graphite # AUR
  lib32-libglvnd
  lib32-miniupnpc # AUR
  #lib32-libsquish # AUR
  lib32-libtheora
  lib32-libvorbis
  lib32-libwebp
  lib32-libxcursor
  lib32-libxi
  lib32-libxinerama
  lib32-libxrandr
  lib32-openxr # AUR
  lib32-pcre2
)
optdepends=(
  'pipewire-alsa: for audio support'
  'pulse-native-provider: for audio support'
)
source=("${_pkgname}-${pkgver}.tar.gz::https://github.com/godotengine/godot/archive/${pkgver}-stable.tar.gz")
b2sums=('086dc97858e066e1510a108c7751186f5072fe7b41fdbc658957ebd8a5540d6ad34b54f410363bbe12244b2503ce4fd1d02d25c9d0bb6ab701610902b9df8f5b')

prepare() {
  cd "${_pkgname}-${pkgver}-stable"

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

  cd misc/dist/linux

  # Fix the MIME info, ref FS#77810
  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
}

build() {
  cd "${_pkgname}-${pkgver}-stable"

  export BUILD_NAME=arch_linux

  export _godot_arch=x86_32 # Explicitly set 32-bit build.

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

  _args=(
    -j$(nproc --all)
    cflags="$CFLAGS -fPIC -Wl,-z,relro,-z,now -w"
    cxxflags="$CXXFLAGS -fPIC -Wl,-z,relro,-z,now -w"
    linkflags="$LDFLAGS"
    arch=${_godot_arch}
    bits=32     # Ensure 32-bit binary.
    builtin_brotli=no
    builtin_certs=no
    builtin_clipper2=yes
    builtin_embree=yes # lib32-embree isn't available.
    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=yes # Temporary disabled due to build failure.
    builtin_wslay=yes  # lib32-libwslay isn't available.
    builtin_xatlas=yes
    builtin_zlib=no
    builtin_zstd=no
    colored=yes
    debug_symbols=no # Disable debug_symbols for smaller binary.
    disable_exceptions=false
    platform=linuxbsd
    production=yes
    pulseaudio=yes
    system_certs_path=/etc/ssl/certs/ca-certificates.crt
    target=editor
    use_llvm=no
    werror=no
  )

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

package() {
  cd "${_pkgname}-${pkgver}-stable"

  install -Dm755 bin/godot.linuxbsd.editor.${_godot_arch} "${pkgdir}/usr/bin/godot32"

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

  # Patch upstream Godot.desktop
  sed -i \
    -e 's|Exec=godot|Exec=godot32|' \
    -e 's|Icon=godot|Icon=godot32|' \
    -e 's|Name=Godot Engine|Name=Godot Engine (32-bit)|' \
    "${pkgdir}/usr/share/applications/org.godotengine.Godot32.desktop"

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