summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 9ea6d037d5297daa2df9196029bfb4e6361789e0 (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
# Maintainer: somebody <ehern.lee@gmail.com>

pkgname=proton-git
_pkgname=proton
epoch=1
pkgver=6.3.2.r0.g372d299e
pkgrel=1
pkgdesc="Compatibility tool for Steam Play based on Wine and additional components"
arch=('x86_64')
url="https://github.com/ValveSoftware/Proton/"
license=('BSD')
depends=('python2' 'wine-valve')
optdepends=()
makedepends=('git' 'make' 'gcc')
provides=("${_pkgname}")
conflicts=("${_pkgname}")
source=("${pkgname}::git+https://github.com/ValveSoftware/Proton.git" "wined3d-interop.h")
sha512sums=('SKIP' 'f2caacca6bd55030331de7d017d85772b09e5ad9e5fdbfc6343f303ac5447595660fd3f83ba2a177ef321d9b54335245bac548ca804e6e3e9346690f29d55ad0')

pkgver() {
	cd "${pkgname}"
	git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g' | sed 's/proton\.//g'
}

prepare() {
	cd "${pkgname}"
	cp $srcdir/wined3d-interop.h vrclient_x64/vrclient_x64/
}

build() {
	cd "${pkgname}"

	export CXXFLAGS="$CXXFLAGS -Wno-attributes"
	export WINEMAKEFLAGS="--nosource-fix --nolower-include --nodlls --nomsvcrt --dll -ldl"
	export WINEMAKEFLAGS32="$WINEMAKEFLAGS --wine32"
  export LDFLAGS="$LDFLAGS -L/usr/lib32/wine -lntdll.dll"

	# The build script provided has so much cruft that it's easier to make everything manually
	mkdir -p build/lsteamclient.win32
	cp -a lsteamclient/* build/lsteamclient.win32
	cd build/lsteamclient.win32
	winemaker $WINEMAKEFLAGS32 -DSTEAM_API_EXPORTS .
	make
	cd ../..

	mkdir -p build/lsteamclient.win64
	cp -a lsteamclient/* build/lsteamclient.win64
	cd build/lsteamclient.win64
	winemaker $WINEMAKEFLAGS -DSTEAM_API_EXPORTS .
	make
	cd ../..

	# Currently depends on the custom bundled wine
	mkdir -p build/vrclient.win32
	cp -a vrclient_x64/* build/vrclient.win32
	rm -rf build/vrclient.win32/vrclient
	mv build/vrclient.win32/vrclient_x64 build/vrclient.win32/vrclient
	cd build/vrclient.win32/vrclient
	mv -u vrclient_x64.spec vrclient.spec
	winemaker -I.. $WINEMAKEFLAGS32 .
	CXXFLAGS="$CXXFLAGS --std=c++0x" make
	winebuild --dll --fake-module -E vrclient.spec -o vrclient.dll.fake
	cd ../../..

	mkdir -p build/vrclient.win64
	cp -a vrclient_x64/* build/vrclient.win64
	cd build/vrclient.win64/vrclient_x64
	winemaker -I.. $WINEMAKEFLAGS .
	CXXFLAGS="$CXXFLAGS --std=c++0x" make
	winebuild --dll --fake-module -E vrclient_x64.spec -o vrclient_x64.dll.fake
}

package() {
	cd "${pkgname}"

	install -d -m755 $pkgdir/usr/share/licenses/$pkgname
	install -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
	install -m644 LICENSE.proton $pkgdir/usr/share/licenses/$pkgname/LICENSE.proton
	install -m644 dist.LICENSE $pkgdir/usr/share/licenses/$pkgname/dist.LICENSE

	install -d -m755 $pkgdir/usr/share/doc/$pkgname
	install -m644 README.md $pkgdir/usr/share/doc/$pkgname/README.md

	install -d -m755 $pkgdir/usr/lib32/wine
	install -m755 build/lsteamclient.win32/lsteamclient.dll.so $pkgdir/usr/lib32/wine/
	install -m755 build/vrclient.win32/vrclient/vrclient.dll.so $pkgdir/usr/lib32/wine/

	install -d $pkgdir/usr/lib32/wine/fakedlls
	install -m644 build/vrclient.win32/vrclient/vrclient.dll.fake $pkgdir/usr/lib32/wine/fakedlls/vrclient.dll

	install -d -m755 $pkgdir/usr/lib/wine
	install -m755 build/lsteamclient.win64/lsteamclient.dll.so $pkgdir/usr/lib/wine/
	install -m755 build/vrclient.win64/vrclient_x64/vrclient_x64.dll.so $pkgdir/usr/lib/wine/

	install -d $pkgdir/usr/lib/wine/fakedlls
	install -m644 build/vrclient.win64/vrclient_x64/vrclient_x64.dll.fake $pkgdir/usr/lib/wine/fakedlls/vrclient_x64.dll
}