blob: 05530ed6adf0da0b5548bdf47a2271619e8589c4 (
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
|
# Maintainer: Dylan Ferris <dylan@psilly.com>
# Maintainer: Michael Lojkovic <mikelojkovic@gmail.com>
# Maintainer: Shatur95 <genaloner@gmail.com>
# The source is about 200 MiB, with an extra ~11 GiB of dependencies downloaded in Setup.sh, and may take several hours to compile.
pkgname=unreal-engine
pkgver=4.26.1
pkgrel=4
pkgdesc='A 3D game engine by Epic Games which can be used non-commercially for free.'
arch=(x86_64)
url=https://www.unrealengine.com/
makedepends=(mono dos2unix git openssh)
depends=(icu sdl2 python lld xdg-user-dirs)
optdepends=('qt5-base: qmake build system for projects'
'cmake: build system for projects'
'qtcreator: IDE for projects'
'codelite: IDE for projects'
'kdevelop: IDE for projects'
'clion: IDE for projects')
license=(custom:UnrealEngine)
source=(com.unrealengine.UE4Editor.desktop
use-arch-mono.patch
clang_11.patch
PackageWithSystemCompiler.patch
ccache.patch
compile_in_editor.patch)
sha256sums=('15e9f9d8dc8bd8513f6a5eca990e2aab21fd38724ad57d213b06a6610a951d58'
'e891f07bf7294cd5fde8eb6de92e6d47ed004847ea8afd7c944e9b9b2bacaff4'
'8042bed3405298b5a4357068dd6b22a5a8a0f19def64b4f61ed0362fb46cb00d'
'9e403b939a0601c6271da17af9497742cacd74e3cde41562c9f288dfbdcbdbfe'
'a0a0d3f065e27f4d31e21e5f9d15cb4d8f59c50245a45469878fc1fe8bdc78e6'
'e4153fce86147dec7bf7dade1fc9aeac3e8f9a68d75ae92f60a6f070ff6378a4')
options=(!strip staticlibs) # Package is 3 Gib smaller with "strip" but it takes a long time and generates many warnings
# Set options to anything that is not null to enable them.
_system_compiler= # for the system compiler you'll need to set LINUX_MULTIARCH_ROOT
# as an environment to /usr/sbin compile projects after building.
_ccache_support= # Patches for ccache. More optimizations might be needed.
prepare() {
# Check access to the repository
if ! git ls-remote git@github.com:EpicGames/UnrealEngine &>-
then
error 'You must register at unrealengine.com and link your github account to access this private repo. See the wiki for more info: https://wiki.archlinux.org/index.php/Unreal_Engine_4'
exit 1
fi
# Download Unreal Engine source or update if the folder exists
if [ ! -d $pkgname ]
then
git clone --depth=1 --branch=$pkgver-release git@github.com:EpicGames/UnrealEngine $pkgname
cd $pkgname
else
cd $pkgname
rm -f .git/index.lock
git fetch --depth=1 origin tag $pkgver-release
git reset --hard $pkgver-release
fi
patch Engine/Build/BatchFiles/Linux/SetupMono.sh $srcdir/use-arch-mono.patch # Use system mono
generateProjectArgs="-makefile"
if [ -n "$_system_compiler" ]
then
patch -p1 -i "$srcdir/clang_11.patch"
patch -p9 -i "$srcdir/PackageWithSystemCompiler.patch"
patch -p8 -i "$srcdir/compile_in_editor.patch"
export LINUX_MULTIARCH_ROOT="/usr/sbin"
generateProjectArgs+=" -ForceUseSystemCompiler"
fi
if [ -n "$_ccache_support" ]
then
patch -p1 -i "$srcdir/ccache.patch"
fi
# Qt Creator source code access
if [ ! -d Engine/Plugins/Developer/QtCreatorSourceCodeAccess ]
then
git -C Engine/Plugins/Developer clone --depth=1 git@github.com:fire/QtCreatorSourceCodeAccess
fi
export TERM=xterm
./Setup.sh
./GenerateProjectFiles.sh $generateProjectArgs
}
build() {
cd $pkgname
# Build all targets from the "all" rule separately, because building multiple targets in parallel results in an error (but building one target with multiple threads is possible)
ARGS=""
if [ -n "$_system_compiler" ]
then
ARGS="ARGS=-ForceUseSystemCompiler"
fi
make $ARGS CrashReportClient-Linux-Shipping
make $ARGS CrashReportClientEditor-Linux-Shipping
make $ARGS ShaderCompileWorker
make $ARGS UnrealLightmass
make $ARGS UnrealFrontend
make $ARGS UE4Editor
make $ARGS UnrealInsights
}
package() {
# Install dir
dir="opt/$pkgname"
# Desktop entry
if [ "$dir" != "opt/$pkgname" ] # Set new path if dir changed
then
sed -i "5c\Path=/$dir/Engine/Binaries/Linux/" com.unrealengine.UE4Editor.desktop
sed -i "6c\Exec=/$dir/Engine/Binaries/Linux/UE4Editor %F" com.unrealengine.UE4Editor.desktop
fi
install -Dm777 com.unrealengine.UE4Editor.desktop $pkgdir/usr/share/applications/com.unrealengine.UE4Editor.desktop
cd $pkgname
# Icon for Desktop entry
install -Dm777 Engine/Source/Programs/UnrealVS/Resources/Preview.png $pkgdir/usr/share/pixmaps/ue4editor.png
# License
install -Dm777 LICENSE.md $pkgdir/usr/share/licenses/UnrealEngine/LICENSE.md
# Engine
install -dm777 "$pkgdir/$dir/Engine"
mv Engine/Binaries "$pkgdir/$dir/Engine/Binaries"
mv Engine/Build "$pkgdir/$dir/Engine/Build"
mv Engine/Config "$pkgdir/$dir/Engine/Config"
mv Engine/Content "$pkgdir/$dir/Engine/Content"
mv Engine/Documentation "$pkgdir/$dir/Engine/Documentation"
mv Engine/Extras "$pkgdir/$dir/Engine/Extras"
mv Engine/Plugins "$pkgdir/$dir/Engine/Plugins"
mv Engine/Programs "$pkgdir/$dir/Engine/Programs"
mv Engine/Shaders "$pkgdir/$dir/Engine/Shaders"
mv Engine/Source "$pkgdir/$dir/Engine/Source"
# Required folders
# install -d "$pkgdir/$dir/Engine/DerivedDataCache"
# Content
mv FeaturePacks "$pkgdir/$dir/FeaturePacks"
mv Samples "$pkgdir/$dir/Samples"
mv Templates "$pkgdir/$dir/Templates"
# Build scripts, used by some plugins (CLion)
install -Dm777 GenerateProjectFiles.sh "$pkgdir/$dir/GenerateProjectFiles.sh"
install -Dm777 Setup.sh "$pkgdir/$dir/Setup.sh"
install -Dm777 .ue4dependencies "$pkgdir/$dir/.ue4dependencies"
}
|