mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-03-13 14:00:34 +03:00
Compare commits
490 Commits
experiment
...
proton_8.0
Author | SHA1 | Date | |
---|---|---|---|
|
761c9783e9 | ||
|
0a19090d66 | ||
|
68cd5ce6a9 | ||
|
3c44ca59da | ||
|
5e6fa08ea8 | ||
|
6acc0f9e12 | ||
|
a092df7ec4 | ||
|
0bcc20cbc1 | ||
|
0e11c03ca0 | ||
|
e6cd3f8ec3 | ||
|
ea08ded0ca | ||
|
c9f5e8ff47 | ||
|
2e817dc4f6 | ||
|
90cc4f1075 | ||
|
d78cb3c0da | ||
|
10f39becdf | ||
|
5bd606ee03 | ||
|
21370a78f4 | ||
|
8eea1df800 | ||
|
c6c9bf0a2a | ||
|
fb588c5389 | ||
|
99009e774c | ||
|
0ab1dd2e70 | ||
|
f3326b23c1 | ||
|
8d989fdd46 | ||
|
4eb7119320 | ||
|
c50718c777 | ||
|
8473c3c7fa | ||
|
640d0b3e1b | ||
|
bd4d03123a | ||
|
cedc2aefff | ||
|
bfbc9b358d | ||
|
c6d562b388 | ||
|
52667847c4 | ||
|
d229821fdf | ||
|
db0991c4ae | ||
|
435b67aaf7 | ||
|
19c0eec97d | ||
|
01c366c0f8 | ||
|
cd727e9c05 | ||
|
2e1a64b18c | ||
|
f50e0b6be5 | ||
|
acc247acda | ||
|
ca8e8f7678 | ||
|
fc5c40db76 | ||
|
dd087f3c03 | ||
|
c0d0b2f295 | ||
|
45dff33596 | ||
|
681524010d | ||
|
87a75415e7 | ||
|
21efd44cf2 | ||
|
818cdb7e79 | ||
|
64465e595f | ||
|
eda653f413 | ||
|
a76c324c30 | ||
|
46304cde3d | ||
|
45039fc24e | ||
|
354a061c16 | ||
|
cdce0cd31a | ||
|
64bf702365 | ||
|
d0d4e32727 | ||
|
d0423e5d84 | ||
|
37b88eb035 | ||
|
48670ca952 | ||
|
81a4743db0 | ||
|
7c21be5c27 | ||
|
37cf4d2086 | ||
|
4f252eaf21 | ||
|
231e7f24d8 | ||
|
7da8928dd9 | ||
|
eaae654042 | ||
|
516f76e446 | ||
|
e8df09e258 | ||
|
8a109013b4 | ||
|
a798b8308f | ||
|
a7bdd61d20 | ||
|
6ed890c9e9 | ||
|
6d51ed29f3 | ||
|
727f81d380 | ||
|
c53ff7a082 | ||
|
9b3457c857 | ||
|
2ac09e541e | ||
|
343ccf211d | ||
|
06156dfe25 | ||
|
996672f057 | ||
|
c32e9213c6 | ||
|
9265ef9dce | ||
|
9a169bd27b | ||
|
40804a61af | ||
|
f55761ca1b | ||
|
67e3444e93 | ||
|
836e4723aa | ||
|
fd3d1bda0c | ||
|
df21891fe0 | ||
|
88a434e1ae | ||
|
55a3d3f165 | ||
|
cdd54b2a25 | ||
|
c444e6fea4 | ||
|
4e483d01d8 | ||
|
6d63c73c54 | ||
|
f0b5a6fe97 | ||
|
785757ec15 | ||
|
78fc6d34c6 | ||
|
3f57a0b71b | ||
|
e488a6cbaf | ||
|
2d00c9df0a | ||
|
2e0a609437 | ||
|
40103342d5 | ||
|
6d2bcbb559 | ||
|
f0064b6799 | ||
|
03550f8d2a | ||
|
5018cb5ab7 | ||
|
de63f8c5f9 | ||
|
311385c0e5 | ||
|
7bd855e054 | ||
|
89e4e160ac | ||
|
2f851ecb82 | ||
|
967b7878e5 | ||
|
33b0da5fb1 | ||
|
ea07c02886 | ||
|
a33bbf115c | ||
|
582047e3be | ||
|
a5a5239c0c | ||
|
49324a57d7 | ||
|
f5da6b1c22 | ||
|
840959f4cf | ||
|
d11d466cb3 | ||
|
b661fabcbd | ||
|
01603fb118 | ||
|
e82bed8475 | ||
|
656f440e94 | ||
|
5ac739906d | ||
|
f679be3cc0 | ||
|
576a839c18 | ||
|
ccb1c5a413 | ||
|
10db41a416 | ||
|
9ec1e2714e | ||
|
1164e4b0b8 | ||
|
9130990527 | ||
|
0b8c0e97b2 | ||
|
f7c895c287 | ||
|
5610e4538f | ||
|
e171c46460 | ||
|
e34482a580 | ||
|
6b4dce48bc | ||
|
c7cb79128e | ||
|
303299793f | ||
|
b59a3040d9 | ||
|
36f8ada2cd | ||
|
b75a61bc1f | ||
|
3d635bd789 | ||
|
a6f3965460 | ||
|
a8eeb1c9ac | ||
|
85ed53c1d8 | ||
|
77fd6c3b2d | ||
|
4378ee718a | ||
|
7e10a41649 | ||
|
5b52756384 | ||
|
8e9e6da034 | ||
|
62174c7c1e | ||
|
692ef0aa1f | ||
|
9f8a37c0c1 | ||
|
08a5f1cd56 | ||
|
2b95bc1771 | ||
|
e60f8c6aac | ||
|
b4bba7eec4 | ||
|
28aeb63901 | ||
|
b2b17774e4 | ||
|
bc63dbbf2a | ||
|
10a240c341 | ||
|
cbf52aaafa | ||
|
84012c12aa | ||
|
929733036f | ||
|
5e90e8283c | ||
|
559e652a45 | ||
|
331c90a874 | ||
|
8decbe981a | ||
|
bd1178a5b3 | ||
|
db3274b1c7 | ||
|
470f3084eb | ||
|
e1d797fd97 | ||
|
09bbd8c0bf | ||
|
e2ab395020 | ||
|
74ae018197 | ||
|
1489a6a8d5 | ||
|
19f18b660e | ||
|
f7a03d620e | ||
|
dc3a951754 | ||
|
f2223c0ba7 | ||
|
89a2dac0b2 | ||
|
f693c48a4c | ||
|
8e67412fcc | ||
|
e2493e2dfd | ||
|
6d138f5e96 | ||
|
eca48bb93f | ||
|
e36a9ba96a | ||
|
9eb5a1753c | ||
|
4db08dc766 | ||
|
b5d58d27ad | ||
|
c04ca71f7a | ||
|
4514ff3eff | ||
|
d8fbadbd2a | ||
|
dd32534265 | ||
|
f9b51bc244 | ||
|
5328d61f5a | ||
|
8959349ac9 | ||
|
175bc06a3f | ||
|
04dfc0937c | ||
|
c04edcea36 | ||
|
79134b581a | ||
|
42e034ece8 | ||
|
618221db82 | ||
|
66e57462c1 | ||
|
9ae252db4f | ||
|
69d6b82e94 | ||
|
30c6b5c41e | ||
|
be25891a0c | ||
|
8d2e85be8c | ||
|
4ee7c0c666 | ||
|
8f0b458bca | ||
|
981ca6febe | ||
|
f3cc9f0610 | ||
|
4221d9ef07 | ||
|
fb9231f0ca | ||
|
1db86a772d | ||
|
d760b63792 | ||
|
f3c98217cc | ||
|
5720dd3e9c | ||
|
7e27da4bc2 | ||
|
7d4ca96ae1 | ||
|
a62a80be58 | ||
|
5e7036d566 | ||
|
bcd3d5218f | ||
|
242d655a0f | ||
|
707741dcc1 | ||
|
79c9b6a15d | ||
|
4cc575b2f4 | ||
|
7785b9ab78 | ||
|
b1852d2e67 | ||
|
6a1714a0d7 | ||
|
0ba9319113 | ||
|
18195c558d | ||
|
ba3d473ec1 | ||
|
be4a80dac6 | ||
|
ade0363654 | ||
|
d141d538bc | ||
|
d957ff7c35 | ||
|
67d504c37e | ||
|
d95c5cc550 | ||
|
28a0276cda | ||
|
6acaf51d6e | ||
|
0a191c5961 | ||
|
112d3635f4 | ||
|
7523181830 | ||
|
db61ec1f1e | ||
|
6ded785ccd | ||
|
05efcef3fa | ||
|
46a427e8d0 | ||
|
fd79f236ca | ||
|
0178b2bc6f | ||
|
3a7e2f03a7 | ||
|
a5d28386b9 | ||
|
fe93b92ddc | ||
|
ff7bfc5595 | ||
|
faf8b2e64d | ||
|
673e1ae43d | ||
|
203580f96f | ||
|
cc8db7609b | ||
|
ced280e888 | ||
|
8909720216 | ||
|
d7452b523f | ||
|
a216f5baa0 | ||
|
94772426ac | ||
|
7e7f6155d3 | ||
|
47ae0819ae | ||
|
8d7d5bb129 | ||
|
7fd1f62249 | ||
|
b538b27fdd | ||
|
5fd2584fa5 | ||
|
43a131b97f | ||
|
d2e7a76010 | ||
|
252e903ff2 | ||
|
b1aea5b33e | ||
|
f8a8301f4c | ||
|
4e20758255 | ||
|
c8486ad372 | ||
|
0f50e49b85 | ||
|
ec4f158666 | ||
|
1af0593ce8 | ||
|
c523ec1382 | ||
|
f487cf436e | ||
|
44e38af171 | ||
|
34b55deb55 | ||
|
cd60b70756 | ||
|
e03828cdc3 | ||
|
aaabeb5567 | ||
|
f45b165030 | ||
|
76406455ac | ||
|
701dad161f | ||
|
d101742156 | ||
|
43bfd2a6ae | ||
|
a5bfe6edda | ||
|
d9ae1265c0 | ||
|
aa33dd9cb8 | ||
|
22a1828158 | ||
|
7195a2c542 | ||
|
a4824da779 | ||
|
b46a3bf712 | ||
|
addf6dc5b6 | ||
|
f0876fb99c | ||
|
6ab3403b1e | ||
|
7b49d43020 | ||
|
023a715241 | ||
|
0bbc7e480a | ||
|
99c07e4dae | ||
|
14ffc4d0f7 | ||
|
ab06ba22a0 | ||
|
473ce8c81d | ||
|
c5b505393a | ||
|
ccb2397f4c | ||
|
32fe36d9b2 | ||
|
6a3c03d64b | ||
|
42cb4d31bb | ||
|
33c77c5687 | ||
|
82b5301d55 | ||
|
88064f86ee | ||
|
47fe4a8063 | ||
|
17683bff97 | ||
|
90a11aca8e | ||
|
7cb4c4dc93 | ||
|
0623da2af4 | ||
|
25a58123a1 | ||
|
b7d532badf | ||
|
e97e717175 | ||
|
2a5b25a7a2 | ||
|
f3b9480b5f | ||
|
053954076c | ||
|
f0553aabb5 | ||
|
34bed50ea3 | ||
|
a5d2b67315 | ||
|
9a07890d7e | ||
|
b908213041 | ||
|
dd35b33d6c | ||
|
aafc2191a2 | ||
|
b203ba6bdd | ||
|
bcccab62e0 | ||
|
a18ffa9b8b | ||
|
293d4c2d8e | ||
|
32e058dcbc | ||
|
07d27b9a81 | ||
|
be0bdb7fb9 | ||
|
710257adb4 | ||
|
71e306aaaa | ||
|
d4e3c477dd | ||
|
d6aec09c05 | ||
|
2ad85256a3 | ||
|
f0a10371c9 | ||
|
844ba1e037 | ||
|
20ac2d95bc | ||
|
7a46a3cf40 | ||
|
18f4555528 | ||
|
bf8ee8e554 | ||
|
4070272852 | ||
|
2c19e6fd92 | ||
|
fc27d69033 | ||
|
a7d8aabc0d | ||
|
57ea5353ee | ||
|
db7e0e7a14 | ||
|
226313fa1d | ||
|
fc14f36b9d | ||
|
de5557448b | ||
|
e868aa6e1a | ||
|
5e3dab64e2 | ||
|
b01153b165 | ||
|
b502860b34 | ||
|
d1e6e83c15 | ||
|
47d21b5618 | ||
|
3dd273022e | ||
|
100dfb9476 | ||
|
ad07f9fef1 | ||
|
9d742a5332 | ||
|
3bffbe24b3 | ||
|
f28e37b95c | ||
|
de7ac78030 | ||
|
725dd255fc | ||
|
f002efd808 | ||
|
f1893068c3 | ||
|
e190c26058 | ||
|
48196af449 | ||
|
bfc4b2330d | ||
|
e3a12c2f18 | ||
|
7e4ee66328 | ||
|
808920b6b3 | ||
|
83e40165ba | ||
|
b3d4aa02a6 | ||
|
16b662a0bf | ||
|
212cbc0c9a | ||
|
0b9c8a34aa | ||
|
58860a6cc6 | ||
|
67316452df | ||
|
55fb5b0bd3 | ||
|
ab07135a89 | ||
|
c308ae9f32 | ||
|
6da8b268dd | ||
|
f46e62c775 | ||
|
7e287a4614 | ||
|
fa157d39f0 | ||
|
252d4c8b1d | ||
|
264ca8eda3 | ||
|
1ba590a207 | ||
|
8db0a29d4a | ||
|
920a2e52f0 | ||
|
959f3665c3 | ||
|
2b4bfa46d6 | ||
|
0b729bded4 | ||
|
0f1f692c70 | ||
|
ec2a650072 | ||
|
73982eb20f | ||
|
9b8046131d | ||
|
5838c1fbda | ||
|
c35122e209 | ||
|
e0e1d984c2 | ||
|
cb94853f03 | ||
|
04bf8f150e | ||
|
587f86fb9d | ||
|
5b8a6c72f9 | ||
|
4ade59b2ca | ||
|
09568c2159 | ||
|
808b99bd27 | ||
|
6d682e4b17 | ||
|
512208d15f | ||
|
2286a8e592 | ||
|
be485ab504 | ||
|
1c04188bc0 | ||
|
c9a428090f | ||
|
0d186ab788 | ||
|
2443100316 | ||
|
f158f52e44 | ||
|
50b4c8785f | ||
|
ea7eaa41d1 | ||
|
3d5c0375a7 | ||
|
e252df46d9 | ||
|
9f3ba9d9c3 | ||
|
cfaf65d982 | ||
|
856c5e422e | ||
|
3e4e8be82c | ||
|
c218238762 | ||
|
daf8263323 | ||
|
034ff27cf3 | ||
|
89f8134740 | ||
|
cc9c109bf6 | ||
|
fdc3651992 | ||
|
ef7b6fd07e | ||
|
7d37e79328 | ||
|
5b7de85bdf | ||
|
f2ff463c08 | ||
|
8d9c45a6f6 | ||
|
2983a44781 | ||
|
158e04cb05 | ||
|
d1c4de3d29 | ||
|
9d98dd3391 | ||
|
49602674d0 | ||
|
ccfad43c81 | ||
|
99a58cf845 | ||
|
06c9f221ec | ||
|
b39c95a7e1 | ||
|
50cab53a7b | ||
|
0d88b6db78 | ||
|
3b375e5463 | ||
|
cac66b1914 | ||
|
59fd9ea1da | ||
|
eb9c5d1821 | ||
|
d61fe4467d | ||
|
44d9fb94b2 | ||
|
4aac973ecf | ||
|
ac2caa3e54 | ||
|
905fc8ef44 | ||
|
9845a94d1c | ||
|
d02b5dc9ce | ||
|
1ae6c80f3e | ||
|
ca928d31f9 | ||
|
5525cf9931 | ||
|
7a90ff74ce | ||
|
b3c6c677bc | ||
|
2165c3ff81 | ||
|
0b1db713ac | ||
|
f9eef72c88 | ||
|
4b9b102b31 | ||
|
da911c3bf9 | ||
|
a1244bdf38 |
.github/ISSUE_TEMPLATE
.gitignore.gitmodulesFAudioLICENSELICENSE.protonMakefileMakefile.inOpenXR-SDKREADME.mdSPIRV-HeadersVagrantfileVulkan-HeadersVulkan-Loaderbuild
configure.shdav1ddefault_pfx.pydist.LICENSEdocker
MakefileREADME.md
context
gcc.Dockerfile.inmingw-crt.Dockerfile.inmingw-pthreads.Dockerfile.inproton.Dockerfile.indocs
dxvkdxvk-nvapiffmpegfonts
liberation-fonts
glslang/binnoto
LICENSENotoSans-Regular.ttfNotoSansArabic-Regular.ttfNotoSansArmenian-Regular.ttfNotoSansBengali-Regular.ttfNotoSansBengaliUI-Regular.ttfNotoSansChakma-Regular.ttfNotoSansCoptic-Regular.ttfNotoSansDevanagariUI-Regular.ttfNotoSansGeorgian-Regular.ttfNotoSansGujarati-Regular.ttfNotoSansGujaratiUI-Regular.ttfNotoSansGurmukhiUI-Regular.ttfNotoSansHebrew-Regular.ttfNotoSansKannadaUI-Regular.ttfNotoSansKhmer-Regular.ttfNotoSansMalayalamUI-Regular.ttfNotoSansMath-Regular.ttfNotoSansMeeteiMayek-Regular.ttfNotoSansMono-Regular.ttfNotoSansOlChiki-Regular.ttfNotoSansOriyaUI-Regular.ttfNotoSansSinhalaUI-Regular.ttfNotoSansSoraSompeng-Regular.ttfNotoSansSymbols-Regular.ttfNotoSansSymbols2-Regular.ttfNotoSansTamil-Regular.ttfNotoSansTamilUI-Regular.ttfNotoSansTeluguUI-Regular.ttfNotoSansThaana-Regular.ttfNotoSansThai-Regular.ttfNotoSerifTibetan-Regular.ttfREADME
patches
LiberationMono-Regular.patchMSGothic-FontMenuNameDBMSPGothic-FontMenuNameDBMSUIGothic-FontMenuNameDBUmeGothic-nametable.patchUmePGothic-nametable.patchUmeUIGothic-nametable.patch
ranges
scripts
source-han-sans
SourceHanSans_JP_sequences.txtSourceHanSans_KR_sequences.txtUniSourceHanSansCN-UTF32-HUniSourceHanSansJP-UTF32-HUniSourceHanSansKR-UTF32-Hcidfont.ps.OTC.Jcidfont.ps.OTC.Kcidfont.ps.OTC.SCcidfontinfo.OTC.Jcidfontinfo.OTC.Kcidfontinfo.OTC.SCfeatures.OTC.Jfeatures.OTC.Kfeatures.OTC.SC
ume
@ -10,7 +10,7 @@ about: Game compatibility issues.
|
||||
|
||||
## System Information
|
||||
- GPU: <!-- e.g. RX 580 or GTX 970 -->
|
||||
- Driver/LLVM version: <!-- e.g. Mesa 18.2/7.0.0 or nvidia 396.54 -->
|
||||
- Video driver version: <!-- e.g. Mesa 18.2 or nvidia 396.54 -->
|
||||
- Kernel version: <!-- e.g. 4.17 -->
|
||||
- Link to full system information report as [Gist](https://gist.github.com/):
|
||||
- Proton version:
|
||||
@ -39,6 +39,8 @@ attach the generated $HOME/steam-$APPID.log to this issue report as a file.
|
||||
4. Please copy it to your clipboard by pressing `Ctrl+A` and then `Ctrl+C`.
|
||||
Then paste it in a [Gist](https://gist.github.com/) and post the link in
|
||||
this issue.
|
||||
5. Please search for open issues and pull requests by the name of the game and
|
||||
5. Also, please copy the contents of `Help` > `Steam Runtime Information` to
|
||||
the gist.
|
||||
6. Please search for open issues and pull requests by the name of the game and
|
||||
find out whether they are relevant and should be referenced above.
|
||||
-->
|
||||
|
2
.github/ISSUE_TEMPLATE/whitelist-request.md
vendored
2
.github/ISSUE_TEMPLATE/whitelist-request.md
vendored
@ -10,7 +10,7 @@ about: Games tested and found to have no issues.
|
||||
|
||||
## System Information
|
||||
- GPU: <!-- e.g. RX 580 or GTX 970 -->
|
||||
- Driver/LLVM version: <!-- e.g. Mesa 18.2/7.0.0 or nvidia 396.54 -->
|
||||
- Video driver version: <!-- e.g. Mesa 18.2 or nvidia 396.54 -->
|
||||
- Distro version: <!-- e.g. Ubuntu 18.04 -->
|
||||
- Link to full system information report as [Gist](https://gist.github.com/):
|
||||
- Proton version:
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@
|
||||
|
||||
/.vagrant/
|
||||
/vagrant_share/
|
||||
/build/
|
||||
|
43
.gitmodules
vendored
43
.gitmodules
vendored
@ -10,21 +10,12 @@
|
||||
[submodule "fonts/liberation-fonts"]
|
||||
path = fonts/liberation-fonts
|
||||
url = https://github.com/liberationfonts/liberation-fonts
|
||||
[submodule "FAudio"]
|
||||
path = FAudio
|
||||
url = https://github.com/FNA-XNA/FAudio
|
||||
[submodule "gstreamer"]
|
||||
path = gstreamer
|
||||
url = https://gitlab.freedesktop.org/gstreamer/gstreamer.git
|
||||
[submodule "gst-plugins-base"]
|
||||
path = gst-plugins-base
|
||||
url = https://gitlab.freedesktop.org/gstreamer/gst-plugins-base.git
|
||||
[submodule "gst-plugins-good"]
|
||||
path = gst-plugins-good
|
||||
url = https://gitlab.freedesktop.org/gstreamer/gst-plugins-good.git
|
||||
url = https://github.com/GStreamer/gstreamer.git
|
||||
[submodule "gst-orc"]
|
||||
path = gst-orc
|
||||
url = https://gitlab.freedesktop.org/gstreamer/orc.git
|
||||
url = https://github.com/GStreamer/orc.git
|
||||
[submodule "vkd3d-proton"]
|
||||
path = vkd3d-proton
|
||||
url = https://github.com/HansKristian-Work/vkd3d-proton
|
||||
@ -34,3 +25,33 @@
|
||||
[submodule "dxvk-nvapi"]
|
||||
path = dxvk-nvapi
|
||||
url = https://github.com/jp7677/dxvk-nvapi
|
||||
[submodule "vkd3d"]
|
||||
path = vkd3d
|
||||
url = https://github.com/ValveSoftware/vkd3d
|
||||
[submodule "Vulkan-Headers"]
|
||||
path = Vulkan-Headers
|
||||
url = https://github.com/KhronosGroup/Vulkan-Headers
|
||||
[submodule "SPIRV-Headers"]
|
||||
path = SPIRV-Headers
|
||||
url = https://github.com/KhronosGroup/SPIRV-Headers
|
||||
[submodule "Vulkan-Loader"]
|
||||
path = Vulkan-Loader
|
||||
url = https://github.com/KhronosGroup/Vulkan-Loader
|
||||
[submodule "gst-libav"]
|
||||
path = gst-libav
|
||||
url = https://github.com/GStreamer/gst-libav
|
||||
[submodule "ffmpeg"]
|
||||
path = ffmpeg
|
||||
url = https://github.com/FFmpeg/FFmpeg
|
||||
[submodule "dav1d"]
|
||||
path = dav1d
|
||||
url = https://github.com/videolan/dav1d.git
|
||||
[submodule "gst-plugins-rs"]
|
||||
path = gst-plugins-rs
|
||||
url = https://github.com/sdroege/gst-plugin-rs
|
||||
[submodule "graphene"]
|
||||
path = graphene
|
||||
url = https://github.com/ebassi/graphene
|
||||
[submodule "glslang"]
|
||||
path = glslang
|
||||
url = https://github.com/KhronosGroup/glslang
|
||||
|
1
FAudio
1
FAudio
@ -1 +0,0 @@
|
||||
Subproject commit 0c352eb92de9a4901030c1bce4fc3ddf3b3f1aac
|
4
LICENSE
4
LICENSE
@ -1,10 +1,10 @@
|
||||
Copyright (c) 2018-2020, Valve Corporation
|
||||
Copyright (c) 2018-2022, Valve Corporation
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use of Proton in source and binary forms is governed
|
||||
by a variety of licenses.
|
||||
|
||||
Refer to the contents of LICENCE.proton for the license for the top
|
||||
Refer to the contents of LICENSE.proton for the license for the top
|
||||
level contents of the Proton project.
|
||||
|
||||
Proton uses a variety of other software, each of which is governed
|
||||
|
@ -1,4 +1,4 @@
|
||||
Copyright (c) 2018-2020, Valve Corporation
|
||||
Copyright (c) 2018-2022, Valve Corporation
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
|
244
Makefile
244
Makefile
@ -13,8 +13,10 @@ endif
|
||||
# remove special chars
|
||||
override _build_name := $(shell echo $(_build_name) | tr -dc '[:alnum:] ._-')
|
||||
|
||||
BUILD_ROOT := build
|
||||
|
||||
# make doesn't handle spaces well... replace them with underscores in paths
|
||||
BUILD_DIR := "build-$(shell echo $(_build_name) | sed -e 's/ /_/g')"
|
||||
BUILD_DIR := $(BUILD_ROOT)/build-$(shell echo $(_build_name) | sed -e 's/ /_/g')
|
||||
STEAM_DIR := $(HOME)/.steam/root
|
||||
|
||||
ifeq ($(build_name),)
|
||||
@ -23,17 +25,17 @@ else
|
||||
DEPLOY_DIR := $(_build_name)
|
||||
endif
|
||||
|
||||
enable_ccache := 1
|
||||
ifneq ($(enable_ccache),0)
|
||||
CCACHE_FLAG := ENABLE_CCACHE=1
|
||||
endif
|
||||
|
||||
ifneq ($(module),)
|
||||
ifneq ($(findstring .,$(module)),)
|
||||
MODULE_SFX :=
|
||||
else
|
||||
MODULE_SFX := .dll
|
||||
endif
|
||||
ifneq ($(findstring .drv,$(module)),)
|
||||
MODULE_PEFILE := $(module)
|
||||
MODULE_SOFILE := $(subst .drv,.so,$(module))
|
||||
else ifneq ($(findstring .sys,$(module)),)
|
||||
MODULE_PEFILE := $(module)
|
||||
MODULE_SOFILE := $(subst .sys,.so,$(module))
|
||||
else
|
||||
MODULE_PEFILE := $(module).dll
|
||||
MODULE_SOFILE := $(module).so
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(unstripped),)
|
||||
@ -41,7 +43,7 @@ ifneq ($(unstripped),)
|
||||
DEPLOY_DIR := $(DEPLOY_DIR)_unstripped
|
||||
endif
|
||||
|
||||
CONFIGURE_CMD := ../proton/configure.sh \
|
||||
CONFIGURE_CMD := ../../configure.sh \
|
||||
--build-name="$(_build_name)"
|
||||
|
||||
ifneq ($(protonsdk_version),)
|
||||
@ -50,10 +52,17 @@ else
|
||||
protonsdk_version := $(shell grep '^arg_protonsdk_image=' configure.sh|xargs echo|cut -d: -f2)
|
||||
endif
|
||||
|
||||
enable_ccache := 1
|
||||
ifneq ($(enable_ccache),0)
|
||||
CONFIGURE_CMD += --enable-ccache
|
||||
endif
|
||||
|
||||
TOPLEVELGOALS := all any clean configure deploy downloads help install module proton protonsdk redist
|
||||
CONTAINERGOALS := $(filter-out $(TOPLEVELGOALS),$(MAKECMDGOALS))
|
||||
CONTAINERGOALS := $(filter-out $(BUILD_ROOT)/%,$(CONTAINERGOALS))
|
||||
|
||||
all: help
|
||||
|
||||
.PHONY: help vagrant clean configure proton install deploy module protonsdk
|
||||
.PHONY: $(TOPLEVELGOALS)
|
||||
|
||||
help:
|
||||
@echo "Proton Makefile instructions"
|
||||
@ -61,8 +70,8 @@ help:
|
||||
@echo "\"Quick start\" Makefile targets:"
|
||||
@echo " install - Install Proton into current user's Steam installation"
|
||||
@echo " redist - Build a package suitable for manual installation or distribution"
|
||||
@echo " to other users in vagrant_share/ named after the nearest git tag"
|
||||
@echo " deploy - Build Steam deployment files into a directory in vagrant_share/ named"
|
||||
@echo " to other users in $(BUILD_ROOT)/ named after the nearest git tag"
|
||||
@echo " deploy - Build Steam deployment files into a directory in $(BUILD_ROOT)/ named"
|
||||
@echo " after the nearest git tag"
|
||||
@echo " clean - Delete the Proton build directory"
|
||||
@echo ""
|
||||
@ -73,55 +82,41 @@ help:
|
||||
@echo " remember to always set it!"
|
||||
@echo " Current build name: $(_build_name)"
|
||||
@echo " unstripped - Set to non-empty to avoid stripping installed library files."
|
||||
@echo " enable_ccache - Enabled by default, set to 0 to disable ccache."
|
||||
@echo " enable_ccache - Enabled by default, set to 0 prior to configuring to disable ccache."
|
||||
@echo " protonsdk_version - Version of the proton sdk image to use for building,"
|
||||
@echo " use protonsdk_version=local to build it locally."
|
||||
@echo ""
|
||||
@echo "Development targets:"
|
||||
@echo " vagrant - Start Vagrant VM"
|
||||
@echo " configure - Configure Proton build directory"
|
||||
@echo " proton - Build Proton"
|
||||
@echo ""
|
||||
@echo " The following targets are development targets only useful after building Proton."
|
||||
@echo " module - Rebuild a single Wine module and copy into vagrant_share/."
|
||||
@echo " module - Rebuild a single Wine module and copy into $(BUILD_ROOT)/<module>/."
|
||||
@echo " Specify module variable: make module=kernel32 module"
|
||||
@echo " dxvk - Rebuild DXVK and copy it into vagrant_share/."
|
||||
@echo " lsteamclient - Rebuild the Steam client wrapper and copy it into vagrant_share/."
|
||||
@echo " dxvk - Rebuild DXVK and copy it into $(BUILD_ROOT)/."
|
||||
@echo " lsteamclient - Rebuild the Steam client wrapper and copy it into $(BUILD_ROOT)/."
|
||||
@echo ""
|
||||
@echo "Examples:"
|
||||
@echo " make install - Build Proton and install into this user's Steam installation,"
|
||||
@echo " with the current Proton branch name as the tool's name."
|
||||
@echo ""
|
||||
@echo " make redist - Build a Proton redistribution package in a tagged directory"
|
||||
@echo " in vagrant_share/."
|
||||
@echo " in $(BUILD_ROOT)/."
|
||||
@echo ""
|
||||
@echo " make build_name=mytest install - Build Proton with the tool name \"mytest\" and"
|
||||
@echo " install into this user's Steam installation."
|
||||
@echo ""
|
||||
@echo " make build_name=mytest module=dsound module - Build only the dsound module"
|
||||
@echo " in the \"mytest\" build directory and place it into vagrant_share/dsound/."
|
||||
@echo ""
|
||||
@echo "Running out of disk space in the VM? See resize-vagrant-disk.sh"
|
||||
@echo " in the \"mytest\" build directory and place it into $(BUILD_ROOT)/dsound/."
|
||||
|
||||
VAGRANT_SHELL := vagrant ssh
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
vagrant: private SHELL := $(SHELL)
|
||||
vagrant:
|
||||
vagrant up
|
||||
vagrant rsync debian10
|
||||
protonsdk:
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C docker $(UNSTRIPPED) PROTONSDK_VERSION=$(protonsdk_version) proton
|
||||
|
||||
clean: private SHELL := $(VAGRANT_SHELL)
|
||||
clean: vagrant
|
||||
rm -rf $(BUILD_DIR)/
|
||||
|
||||
protonsdk: private SHELL := $(VAGRANT_SHELL)
|
||||
protonsdk: vagrant
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C proton/docker $(UNSTRIPPED) $(CCACHE_FLAG) PROTONSDK_VERSION=$(protonsdk_version) proton
|
||||
|
||||
configure: private SHELL := $(VAGRANT_SHELL)
|
||||
configure: vagrant
|
||||
if [ ! -e $(BUILD_DIR)/Makefile ]; \
|
||||
then mkdir -p $(BUILD_DIR); \
|
||||
configure: | $(BUILD_DIR)
|
||||
if [ ! -e $(BUILD_DIR)/Makefile ]; then \
|
||||
(cd $(BUILD_DIR) && $(CONFIGURE_CMD)); \
|
||||
fi
|
||||
|
||||
@ -129,96 +124,101 @@ ifeq ($(protonsdk_version),local)
|
||||
configure: protonsdk
|
||||
endif
|
||||
|
||||
downloads: private SHELL := $(VAGRANT_SHELL)
|
||||
downloads: configure
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR) downloads
|
||||
proton: configure
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) dist && \
|
||||
echo "Proton built locally. Use 'install', 'deploy' or 'redist' targets."
|
||||
|
||||
proton: private SHELL := $(VAGRANT_SHELL)
|
||||
proton: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dist && \
|
||||
echo "Proton built in VM. Use 'install' or 'deploy' targets to retrieve the build."
|
||||
|
||||
install-internal: | vagrant_share/compatibilitytools.d/$(_build_name)
|
||||
install-internal: private SHELL := $(VAGRANT_SHELL)
|
||||
install-internal: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) STEAM_DIR=/vagrant/ install
|
||||
|
||||
install: install-internal
|
||||
mkdir -p $(STEAM_DIR)/compatibilitytools.d/
|
||||
cp -Rf --no-dereference --preserve=mode,links vagrant_share/compatibilitytools.d/$(_build_name) $(STEAM_DIR)/compatibilitytools.d/
|
||||
install: configure
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) install
|
||||
echo "Proton installed to your local Steam installation"
|
||||
|
||||
redist: | vagrant_share/$(DEPLOY_DIR)
|
||||
redist: private SHELL := $(VAGRANT_SHELL)
|
||||
redist: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) redist && cp $(BUILD_DIR)/redist/* /vagrant/$(DEPLOY_DIR) && \
|
||||
echo "Proton build available at vagrant_share/$(DEPLOY_DIR)"
|
||||
redist: | $(BUILD_ROOT)/$(DEPLOY_DIR)
|
||||
redist: configure
|
||||
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)/* && \
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) redist && \
|
||||
cp -Rf $(BUILD_DIR)/redist/* $(BUILD_ROOT)/$(DEPLOY_DIR) && \
|
||||
echo "Proton build available at $(BUILD_ROOT)/$(DEPLOY_DIR)"
|
||||
|
||||
deploy: | vagrant_share/$(DEPLOY_DIR)-deploy
|
||||
deploy: private SHELL := $(VAGRANT_SHELL)
|
||||
deploy: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) deploy && cp $(BUILD_DIR)/deploy/* /vagrant/$(DEPLOY_DIR)-deploy && \
|
||||
echo "Proton deployed to vagrant_share/$(DEPLOY_DIR)-deploy"
|
||||
deploy: | $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy
|
||||
deploy: configure
|
||||
rm -rf $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy/* && \
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) deploy && \
|
||||
cp -Rf $(BUILD_DIR)/deploy/* $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy && \
|
||||
echo "Proton deployed to $(BUILD_ROOT)/$(DEPLOY_DIR)-deploy"
|
||||
|
||||
module: | vagrant_share/$(module)/lib/wine/
|
||||
module: | vagrant_share/$(module)/lib64/wine/
|
||||
module: private SHELL := $(VAGRANT_SHELL)
|
||||
module: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) module=$(module) module && \
|
||||
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module)$(MODULE_SFX)* /vagrant/$(module)/lib/wine/ && \
|
||||
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module)$(MODULE_SFX)* /vagrant/$(module)/lib64/wine/ && \
|
||||
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so ]; then \
|
||||
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(module).so /vagrant/$(module)/lib/wine/ && \
|
||||
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(module).so /vagrant/$(module)/lib64/wine/; \
|
||||
fi && \
|
||||
rm -f /vagrant/$(module)/lib*/wine/*.fake
|
||||
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-windows
|
||||
module: | $(BUILD_ROOT)/$(module)/lib/wine/i386-unix
|
||||
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-windows
|
||||
module: | $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix
|
||||
module: configure
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) module=$(module) module && \
|
||||
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-windows/ && \
|
||||
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_PEFILE) $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-windows/ && \
|
||||
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE).so ]; then \
|
||||
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
|
||||
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_PEFILE).so $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix/; \
|
||||
fi
|
||||
if [ -e $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_SOFILE) ]; then \
|
||||
cp -f $(BUILD_DIR)/obj-wine32/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib/wine/i386-unix/ && \
|
||||
cp -f $(BUILD_DIR)/obj-wine64/dlls/$(module)/$(MODULE_SOFILE) $(BUILD_ROOT)/$(module)/lib64/wine/x86_64-unix/; \
|
||||
fi
|
||||
|
||||
dxvk: | vagrant_share/dxvk/lib/wine/dxvk
|
||||
dxvk: | vagrant_share/dxvk/lib64/wine/dxvk
|
||||
dxvk: private SHELL := $(VAGRANT_SHELL)
|
||||
dxvk: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll /vagrant/dxvk/lib/wine/dxvk/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll /vagrant/dxvk/lib64/wine/dxvk/
|
||||
any $(CONTAINERGOALS): configure
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CONTAINERGOALS)
|
||||
|
||||
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib/wine/nvapi
|
||||
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib64/wine/nvapi
|
||||
dxvk-nvapi: private SHELL := $(VAGRANT_SHELL)
|
||||
dxvk-nvapi: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk-nvapi && \
|
||||
cp -f $(BUILD_DIR)/dist/files/lib/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib/wine/nvapi/ && \
|
||||
cp -f $(BUILD_DIR)/dist/files/lib64/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib64/wine/nvapi/
|
||||
dxvk: | $(BUILD_ROOT)/dxvk/lib/wine/dxvk
|
||||
dxvk: | $(BUILD_ROOT)/dxvk/lib64/wine/dxvk
|
||||
dxvk: any
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib/wine/dxvk/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll $(BUILD_ROOT)/dxvk/lib64/wine/dxvk/
|
||||
|
||||
vkd3d-proton: | vagrant_share/vkd3d-proton/lib/wine/vkd3d-proton
|
||||
vkd3d-proton: | vagrant_share/vkd3d-proton/lib64/wine/vkd3d-proton
|
||||
vkd3d-proton: private SHELL := $(VAGRANT_SHELL)
|
||||
vkd3d-proton: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vkd3d-proton && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib/wine/vkd3d-proton/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib64/wine/vkd3d-proton/
|
||||
dxvk-nvapi: | $(BUILD_ROOT)/dxvk-nvapi/lib/wine/nvapi
|
||||
dxvk-nvapi: | $(BUILD_ROOT)/dxvk-nvapi/lib64/wine/nvapi
|
||||
dxvk-nvapi: any
|
||||
cp -f $(BUILD_DIR)/dist/files/lib/wine/nvapi/*.dll $(BUILD_ROOT)/dxvk-nvapi/lib/wine/nvapi/ && \
|
||||
cp -f $(BUILD_DIR)/dist/files/lib64/wine/nvapi/*.dll $(BUILD_ROOT)/dxvk-nvapi/lib64/wine/nvapi/
|
||||
|
||||
lsteamclient: | vagrant_share/lsteamclient/lib/wine
|
||||
lsteamclient: | vagrant_share/lsteamclient/lib64/wine
|
||||
lsteamclient: private SHELL := $(VAGRANT_SHELL)
|
||||
lsteamclient: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) lsteamclient && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib/wine && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib64/wine
|
||||
vkd3d-proton: | $(BUILD_ROOT)/vkd3d-proton/lib/wine/vkd3d-proton
|
||||
vkd3d-proton: | $(BUILD_ROOT)/vkd3d-proton/lib64/wine/vkd3d-proton
|
||||
vkd3d-proton: any
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib/wine/vkd3d-proton/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vkd3d-proton/*.dll $(BUILD_ROOT)/vkd3d-proton/lib64/wine/vkd3d-proton/
|
||||
|
||||
vrclient: | vagrant_share/vrclient/lib/wine
|
||||
vrclient: | vagrant_share/vrclient/lib64/wine
|
||||
vrclient: private SHELL := $(VAGRANT_SHELL)
|
||||
vrclient: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vrclient && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vrclient.dll.so /vagrant/vrclient/lib/wine && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vrclient_x64.dll.so /vagrant/vrclient/lib64/wine
|
||||
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib/wine/i386-windows
|
||||
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib/wine/i386-unix
|
||||
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-windows
|
||||
lsteamclient: | $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-unix
|
||||
lsteamclient: any
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-windows/lsteamclient.dll $(BUILD_ROOT)/lsteamclient/lib/wine/i386-windows/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-unix/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib/wine/i386-unix/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-windows/lsteamclient.dll $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-windows/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-unix/lsteamclient.dll.so $(BUILD_ROOT)/lsteamclient/lib64/wine/x86_64-unix/
|
||||
|
||||
wineopenxr: | vagrant_share/wineopenxr/lib/wine
|
||||
wineopenxr: | vagrant_share/wineopenxr/lib64/wine
|
||||
wineopenxr: private SHELL := $(VAGRANT_SHELL)
|
||||
wineopenxr: downloads
|
||||
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) wineopenxr && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/wineopenxr.dll.so /vagrant/wineopenxr/lib64/wine
|
||||
vrclient: | $(BUILD_ROOT)/vrclient/lib/wine/i386-windows
|
||||
vrclient: | $(BUILD_ROOT)/vrclient/lib/wine/i386-unix
|
||||
vrclient: | $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-windows
|
||||
vrclient: | $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-unix
|
||||
vrclient: any
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-windows/vrclient.dll $(BUILD_ROOT)/vrclient/lib/wine/i386-windows/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib/wine/i386-unix/vrclient.dll.so $(BUILD_ROOT)/vrclient/lib/wine/i386-unix/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-windows/vrclient_x64.dll $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-windows/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-unix/vrclient_x64.dll.so $(BUILD_ROOT)/vrclient/lib64/wine/x86_64-unix/
|
||||
|
||||
vagrant_share/%:
|
||||
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-windows
|
||||
wineopenxr: | $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-unix
|
||||
wineopenxr: any
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-windows/wineopenxr.dll $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-windows/ && \
|
||||
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/x86_64-unix/wineopenxr.dll.so $(BUILD_ROOT)/wineopenxr/lib64/wine/x86_64-unix/
|
||||
|
||||
battleye: | $(BUILD_ROOT)/battleye/v1/lib/wine/i386-windows
|
||||
battleye: | $(BUILD_ROOT)/battleye/v1/lib/wine/i386-unix
|
||||
battleye: | $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-windows
|
||||
battleye: | $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-unix
|
||||
battleye: any
|
||||
cp -f $(BUILD_DIR)/dist-battleye/v1/lib/wine/i386-windows/beclient.dll $(BUILD_ROOT)/battleye/v1/lib/wine/i386-windows/ && \
|
||||
cp -f $(BUILD_DIR)/dist-battleye/v1/lib/wine/i386-unix/beclient.dll.so $(BUILD_ROOT)/battleye/v1/lib/wine/i386-unix/ && \
|
||||
cp -f $(BUILD_DIR)/dist-battleye/v1/lib64/wine/x86_64-windows/beclient_x64.dll $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-windows/ && \
|
||||
cp -f $(BUILD_DIR)/dist-battleye/v1/lib64/wine/x86_64-unix/beclient_x64.dll.so $(BUILD_ROOT)/battleye/v1/lib64/wine/x86_64-unix/
|
||||
|
||||
$(BUILD_ROOT)/%:
|
||||
mkdir -p $@
|
||||
|
1212
Makefile.in
Normal file
1212
Makefile.in
Normal file
File diff suppressed because it is too large
Load Diff
@ -1 +1 @@
|
||||
Subproject commit 960c4a6aa8cc9f47e357c696b5377d817550bf88
|
||||
Subproject commit 58a00cf85c39ad5ec4dc43a769624e420c06179a
|
484
README.md
484
README.md
@ -1,287 +1,265 @@
|
||||
---
|
||||
Introduction
|
||||
---
|
||||
Proton is a tool for use with the Steam client which allows games which are
|
||||
------------
|
||||
|
||||
**Proton** is a tool for use with the Steam client which allows games which are
|
||||
exclusive to Windows to run on the Linux operating system. It uses Wine to
|
||||
facilitate this.
|
||||
|
||||
Most users will prefer to use Proton provided by the Steam client itself. The
|
||||
source code is provided to enable advanced users the ability to alter
|
||||
Proton. For example, some users may wish to use a different version of Wine with
|
||||
a particular title.
|
||||
**Most users should use Proton provided by the Steam Client itself.** See
|
||||
[this Steam Community post][steam-play-introduction] for more details.
|
||||
|
||||
---
|
||||
Getting Started with Proton from Steam Play
|
||||
---
|
||||
* As the new Steam Play is still in Beta, it is recommended that you opt into the [Steam Client Beta](https://steamcommunity.com/sharedfiles/filedetails/?id=182912431) for the latest features and fixes.
|
||||
* Proton works best with the latest graphics drivers. For some cutting edge games and graphical features, you may need drivers newer than what your distribution ships.
|
||||
* Install and play games! Please refer to [this post](https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561) for more information.
|
||||
* Visit the [changelog](https://github.com/ValveSoftware/Proton/wiki/Changelog) for information about recent updates.
|
||||
The source code is provided to enable advanced users the ability to alter
|
||||
Proton. For example, some users may wish to use a different version of Wine
|
||||
with a particular title.
|
||||
|
||||
---
|
||||
Obtaining Proton from source
|
||||
---
|
||||
**NOTE:** If you are not comfortable in a command line terminal, or if you find
|
||||
any of the information presented in here strange and uncomfortable, then
|
||||
this is probably not for you. The instructions are likely to be incomplete
|
||||
and require some knowledge and skill on your part, and there is no warranty
|
||||
or guarantee that anyone will help you with this process.
|
||||
**The changelog** is available on [our wiki][changelog].
|
||||
|
||||
We strongly recommend that most users use the production build of Proton.
|
||||
[steam-play-introduction]: https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561
|
||||
[changelog]: https://github.com/ValveSoftware/Proton/wiki/Changelog
|
||||
|
||||
|
||||
Obtaining Proton sources
|
||||
------------------------
|
||||
|
||||
Acquire Proton's source by cloning <https://github.com/ValveSoftware/Proton>
|
||||
and checking out the branch you desire. Be sure to update submodules when
|
||||
switching between or updating branches.
|
||||
and checking out the branch you desire.
|
||||
|
||||
You can clone the latest Proton to your system with this command:
|
||||
|
||||
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
|
||||
cd proton
|
||||
```bash
|
||||
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
|
||||
```
|
||||
|
||||
If you wish to change any subcomponent, now is the time to do so.
|
||||
For example, if you wish make changes to Wine, you would apply those
|
||||
changes to the <tt>wine/</tt> directory.
|
||||
Be sure to update submodules when switching between branches:
|
||||
|
||||
---
|
||||
Easy build path
|
||||
---
|
||||
```bash
|
||||
git checkout experimental_6.3
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
Building Proton is quite complicated. We provide a top-level Makefile which
|
||||
will execute most of the build commands for you. This section describes how to
|
||||
use this Makefile for simple Proton builds.
|
||||
If you want to change any subcomponent, now is the time to do so. For
|
||||
example, if you wish to make changes to Wine, you would apply them to the
|
||||
`wine/` directory.
|
||||
|
||||
This Makefile uses a virtual machine to create a consistent build environment.
|
||||
The VM is managed with [Vagrant](https://www.vagrantup.com/), which you will
|
||||
need to install and configure before invoking these commands. Proton's build
|
||||
system is most well tested with Vagrant's VirtualBox and libvirt/qemu backends.
|
||||
It also requires the vagrant-sshfs plugin. You may run into problems with the
|
||||
shared folder (`vagrant_share`) and/or CPU and memory usage with other
|
||||
backends.
|
||||
|
||||
If your build VM gets cluttered, or falls out of date, you can use `vagrant
|
||||
destroy` to wipe the VM clean, then invoke one of the below commands to start
|
||||
over.
|
||||
Building Proton
|
||||
---------------
|
||||
|
||||
After checking out Proton and updating its submodules, you can use these
|
||||
targets to build Proton:
|
||||
Most of Proton builds inside the Proton SDK container with very few
|
||||
dependencies on the host side.
|
||||
|
||||
`make install` - This will build and install Proton into your user's Steam
|
||||
directory. You may need to restart the Steam client to see the new Proton
|
||||
tool. The tool's name in the Steam client will be based on the currently
|
||||
checked out branch of Proton. You can override this name using the `build_name`
|
||||
variable.
|
||||
## Preparing the build environment
|
||||
|
||||
`make redist` - This will create a build which you can easily redistribute to
|
||||
other users. The package will be dropped into a new directory in
|
||||
`vagrant_share/`, named after the nearest Git tag (see `git describe`). Copying
|
||||
this directory into `~/.steam/root/compatibilitytools.d/` will make the build
|
||||
available after restarting the Steam client. If you distribute your build to
|
||||
other users, be sure to understand and follow your obligations to make your
|
||||
source code modifications available to your users, see <tt>LICENSE</tt>.
|
||||
You need either a Docker or a Podman setup. We highly recommend [the rootless
|
||||
Podman setup][rootless-podman]. Please refer to your distribution's
|
||||
documentation for setup instructions (e.g. Arch [Podman][arch-podman] /
|
||||
[Docker][arch-docker], Debian [Podman][debian-podman] /
|
||||
[Docker][debian-docker]).
|
||||
|
||||
`make deploy` - This will create a deployment tarball and set of files which
|
||||
can be distributed as a Proton package. This is what we use to deploy Proton to
|
||||
Steam users. The package will be dropped into a new directory in
|
||||
`vagrant_share/`, named after the nearest Git tag (see `git describe`).
|
||||
[rootless-podman]: https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md
|
||||
[arch-podman]: https://wiki.archlinux.org/title/Podman
|
||||
[arch-docker]: https://wiki.archlinux.org/title/Docker
|
||||
[debian-podman]: https://wiki.debian.org/Podman
|
||||
[debian-docker]: https://wiki.debian.org/Docker
|
||||
|
||||
`make clean` - This will completely erase the Proton build tree within the VM.
|
||||
|
||||
`make help` - View the Makefile documentation and examples.
|
||||
## The Easy Way
|
||||
|
||||
We also provide targets useful for simple Wine development:
|
||||
We provide a top-level Makefile which will execute most of the build commands
|
||||
for you.
|
||||
|
||||
`make proton` - This will build Proton without copying its files out of the VM.
|
||||
After checking out the repository and updating its submodules, assuming that
|
||||
you have a working Docker or Podman setup, you can build and install Proton
|
||||
with a simple:
|
||||
|
||||
`make module=<module> module` - This will build both 32- and 64-bit versions of
|
||||
the specified module, and copy the result into the `vagrant_share` directory.
|
||||
This allows rapid iteration on one module. This target is only useful after
|
||||
building Proton.
|
||||
```bash
|
||||
make install
|
||||
```
|
||||
|
||||
`make dxvk` - This will rebuild DXVK and copy it into `vagrant_share`.
|
||||
If your build system is missing dependencies, it will fail quickly with a clear
|
||||
error message.
|
||||
|
||||
`make vkd3d-proton` - This will rebuild vkd3d-proton and copy it into
|
||||
`vagrant_share`.
|
||||
After the build finishes, you may need to restart the Steam client to see the
|
||||
new Proton tool. The tool's name in the Steam client will be based on the
|
||||
currently checked out branch of Proton. You can override this name using the
|
||||
`build_name` variable.
|
||||
|
||||
If you are doing significant Wine development or want to control the build with
|
||||
more fine detail, see the full documentation below.
|
||||
See `make help` for other build targets and options.
|
||||
|
||||
---
|
||||
Building
|
||||
---
|
||||
At a high level, the build instructions are:
|
||||
|
||||
1. Set up your build environment
|
||||
1. Configure the build
|
||||
1. Build Proton
|
||||
1. Install Proton locally (optional)
|
||||
|
||||
See below for more details on all of these steps. Please read all of the
|
||||
instructions before proceeding.
|
||||
## Manual building
|
||||
|
||||
---
|
||||
Set up the build environment
|
||||
---
|
||||
Proton has a lot of build-time dependencies. The following instructions
|
||||
describe how we create the build environment for the production builds of
|
||||
Proton. For reproducibility and security reasons, we will be setting up a
|
||||
Debian virtual machine. However, you should be able to follow these
|
||||
instructions on other distributions as well.
|
||||
### Configuring the build
|
||||
|
||||
Proton provides a Vagrantfile, which will automatically set up the Debian VM
|
||||
for you. After installing [Vagrant](https://www.vagrantup.com/), initialize the
|
||||
VM by running from within the Proton directory:
|
||||
```bash
|
||||
mkdir ../build && cd ../build
|
||||
../proton/configure.sh --enable-ccache --build-name=my_build
|
||||
```
|
||||
|
||||
vagrant up
|
||||
Running `configure.sh` will create a `Makefile` allowing you to build Proton.
|
||||
The scripts checks if containers are functional and prompt you if any
|
||||
host-side dependencies are missing. You should run the command from a
|
||||
directory created specifically for your build.
|
||||
|
||||
It will take a long time to download and install the Steam runtime containers
|
||||
and so on. Eventually it will complete. You can SSH into the virtual machine
|
||||
with:
|
||||
|
||||
vagrant ssh
|
||||
|
||||
At this point you will need to configure the build directory. See below.
|
||||
|
||||
The Vagrantfile is set up to rsync the `proton` directory into the VM on boot.
|
||||
On the host machine, you can use `vagrant rsync-auto` to have Vagrant
|
||||
automatically sync changes on your host machine into the build machine. It is
|
||||
recommended that you make changes on your host machine, and then perform the
|
||||
build in the VM. Any changes you make in the `proton` directory on the VM may
|
||||
be overwritten by later rsync updates from the host machine.
|
||||
|
||||
The Vagrantfile also creates a directory called `vagrant_share` in the `proton`
|
||||
directory of your host machine, which is mounted at `/vagrant` within the VM.
|
||||
You can use this shared folder to move your Proton build out of the VM, or as
|
||||
one way to copy files into the VM.
|
||||
|
||||
When you are done with the VM, you can shut it down from the host machine:
|
||||
|
||||
vagrant halt
|
||||
|
||||
Please read the Vagrant documentation for more information about how to use
|
||||
Vagrant VMs.
|
||||
|
||||
If you do not wish to use Vagrant, you can read through the Vagrantfile for the
|
||||
list of dependencies and instructions on how to set up your own machine or
|
||||
another VM of your choosing. It is aimed at Debian 10, but you should be able
|
||||
to adapt them for other distributions.
|
||||
|
||||
---
|
||||
Configure the build
|
||||
---
|
||||
After setting up the build machine, it is time to run the configure script
|
||||
which will generate the Makefile to build your project. Run these steps. You
|
||||
may of course use whatever paths you like.
|
||||
|
||||
To build Proton using the official Proton SDK images:
|
||||
|
||||
mkdir build/
|
||||
cd build
|
||||
../proton/configure.sh
|
||||
|
||||
If you want to build with a custom version of the Proton SDK images, then instead use:
|
||||
|
||||
../proton/configure.sh --proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version>
|
||||
|
||||
Or, if you want to build without the Proton SDK, then instead use:
|
||||
|
||||
../proton/configure.sh --no-proton-sdk
|
||||
|
||||
**Tip**: If you are building without the Steam runtime, you should now run
|
||||
`make wine-configure64 wine-configure32` and check the files
|
||||
`obj-wine64/config.log` and `obj-wine32/config.log` for missing packages.
|
||||
Search for `won't be supported`. A couple of missing packages are normal:
|
||||
`opencv`, `oss`. More than that may indicate a problem. Please see your
|
||||
distro's documentation to acquire the considerable build dependencies for Wine.
|
||||
Be aware that the build you make may not run correctly on other machines and
|
||||
distributions.
|
||||
|
||||
---
|
||||
Build Proton
|
||||
---
|
||||
A couple of Makefile targets are provided.
|
||||
|
||||
`make dist` will create a Proton installation in `dist/` that you can install
|
||||
manually (see below), or automatically with `make install`.
|
||||
|
||||
`make deploy` will package Proton up for distribution via Steamworks.
|
||||
|
||||
---
|
||||
Building without the VM
|
||||
---
|
||||
|
||||
Since most of the build happens inside the Proton SDK container, building
|
||||
without a VM should be mostly safe. It requires a working container engine
|
||||
(Docker / Podman) and few command line tools.
|
||||
|
||||
Running `configure.sh` will check if containers are functional and prompt you
|
||||
if any dependencies are missing.
|
||||
|
||||
The build by default uses Docker, but you can switch to another, compatible
|
||||
engine with `--container-engine=<executable_name>`.
|
||||
The configuration script tries to discover a working Docker or Podman setup
|
||||
to use, but you can force a compatible engine with
|
||||
`--container-engine=<executable_name>`.
|
||||
|
||||
You can enable ccache with `--enable-cache` flag. This will mount your
|
||||
`$CCACHE_DIR` or `$HOME/.ccache` inside the container.
|
||||
|
||||
If SELinux is in use, the Proton build container may fail to access your
|
||||
user's files. This is caused by [SELinux's filesystem labels][selinux-labels].
|
||||
You may pass the --relabel-volumes switch to configure to cause the
|
||||
[container engine to relabel its bind-mounts][bind-mounts] and allow access
|
||||
to those files from within the container. This can be dangerous when used
|
||||
with system directories. Proceed with caution and refer your container
|
||||
engine's manual.
|
||||
`--proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version>`
|
||||
can be used to build with a custom version of the Proton SDK images.
|
||||
|
||||
Check `--help` for other configuration options.
|
||||
|
||||
NOTE: If **SELinux** is in use, the Proton build container may fail to access
|
||||
your user's files. This is caused by [SELinux's filesystem
|
||||
labels][selinux-labels]. You may pass the `--relabel-volumes` switch to
|
||||
configure to cause the [container engine to relabel its
|
||||
bind-mounts][bind-mounts] and allow access to those files from within the
|
||||
container. This can be dangerous when used with system directories. Proceed
|
||||
with caution and refer your container engine's manual.
|
||||
|
||||
[selinux-labels]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-working_with_selinux-selinux_contexts_labeling_files
|
||||
[bind-mounts]: https://docs.docker.com/storage/bind-mounts/
|
||||
|
||||
|
||||
Example:
|
||||
### Building
|
||||
|
||||
```
|
||||
make
|
||||
```
|
||||
|
||||
**Important make targets:**
|
||||
|
||||
`make install` - install Proton into your user's Steam directory, see the [install Proton
|
||||
locally](#install-proton-locally) section for details.
|
||||
|
||||
`make redist` - create a redistribute build (`redist/`) that can be copied to
|
||||
`~/.steam/root/compatibilitytools.d/`.
|
||||
|
||||
`make deploy` - create a deployment build (`deploy/`). This is what we use to
|
||||
deploy Proton to Steam users via Steamworks.
|
||||
|
||||
`make module=<module> module` - build both 32- and 64-bit versions of the
|
||||
specified wine module. This allows rapid iteration on one module. This target
|
||||
is only useful after building Proton.
|
||||
|
||||
`make dxvk` / `make vkd3d-proton` - rebuild DXVK / vkd3d-proton.
|
||||
|
||||
|
||||
### Debug Builds
|
||||
|
||||
To prevent symbol stripping add `UNSTRIPPED_BUILD=1` to the `make`
|
||||
invocation. This should be used only with a clean build directory.
|
||||
|
||||
E.g.:
|
||||
|
||||
```
|
||||
mkdir ../debug-proton-build && cd ../debug-proton-build
|
||||
../proton/configure.sh --enable-ccache --build-name=debug_build
|
||||
make UNSTRIPPED_BUILD=1 install
|
||||
```
|
||||
|
||||
mkdir build && cd build
|
||||
../proton/configure.sh --container-engine=podman --enable-ccache
|
||||
make dist
|
||||
|
||||
---
|
||||
Install Proton locally
|
||||
---
|
||||
----------------------
|
||||
|
||||
Steam ships with several versions of Proton, which games will use by default or
|
||||
that you can select in Steam Settings's Steam Play page. Steam also supports
|
||||
that you can select in Steam Settings' Steam Play page. Steam also supports
|
||||
running games with local builds of Proton, which you can install on your
|
||||
machine. The `install` target will perform the below steps for you.
|
||||
machine.
|
||||
|
||||
To install a local build of Proton into Steam, make a new directory in
|
||||
`~/.steam/root/compatibilitytools.d/` with a tool name of your choosing and
|
||||
place the contents of `dist` into that folder. The `make install` target will
|
||||
perform this task for you, installing the Proton build into the Steam folder
|
||||
for the current user. You will have to restart the Steam client for it to pick
|
||||
up on a new tool.
|
||||
place the directory containing your redistributable build under that path.
|
||||
|
||||
A correct local tool installation should look like this:
|
||||
The `make install` target will perform this task for you, installing the
|
||||
Proton build into the Steam folder for the current user. You will have to
|
||||
restart the Steam client for it to pick up on a new tool.
|
||||
|
||||
compatibilitytools.d/my_proton/
|
||||
├── compatibilitytool.vdf
|
||||
├── filelock.py
|
||||
├── LICENSE
|
||||
├── proton
|
||||
├── proton_dist.tar
|
||||
├── toolmanifest.vdf
|
||||
├── user_settings.sample.py
|
||||
└── version
|
||||
A correct local tool installation should look similar to this:
|
||||
|
||||
```
|
||||
compatibilitytools.d/my_proton/
|
||||
├── compatibilitytool.vdf
|
||||
├── filelock.py
|
||||
├── LICENSE
|
||||
├── proton
|
||||
├── proton_dist.tar
|
||||
├── toolmanifest.vdf
|
||||
├── user_settings.sample.py
|
||||
└── version
|
||||
```
|
||||
|
||||
To enable your local build in Steam, go to the Steam Play section of the
|
||||
Settings window. If the build was correctly installed, you should see
|
||||
"proton-localbuild" in the drop-down list of compatibility tools.
|
||||
|
||||
Each component of this software is used under the terms of their licenses. See
|
||||
the <tt>LICENSE</tt> files here, as well as the <tt>LICENSE</tt>,
|
||||
<tt>COPYING</tt>, etc files in each submodule and directory for details. If you
|
||||
distribute a built version of Proton to other users, you must adhere to the
|
||||
terms of these licenses.
|
||||
Each component of this software is used under the terms of their licenses.
|
||||
See the `LICENSE` files here, as well as the `LICENSE`, `COPYING`, etc files
|
||||
in each submodule and directory for details. If you distribute a built
|
||||
version of Proton to other users, you must adhere to the terms of these
|
||||
licenses.
|
||||
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
Proton builds have their symbols stripped by default. You can switch to
|
||||
"debug" beta branch in Steam (search for Proton in your library,
|
||||
Properties... -> BETAS -> select "debug") or build without stripping (see
|
||||
[Debug Builds section](#debug-builds)).
|
||||
|
||||
The symbols are provided through the accompanying `.debug` files which may
|
||||
need to be explicitly loaded by the debugging tools. For GDB there's a helper
|
||||
script `wine/tools/gdbinit.py` (source it) that provides `load-symbol-files`
|
||||
(or `lsf` for short) command which loads the symbols for all the mapped files.
|
||||
|
||||
|
||||
`compile_commands.json`
|
||||
-----------------------
|
||||
|
||||
For use with [clangd](https://clangd.llvm.org/) LSP server and similar tooling.
|
||||
|
||||
Projects built using cmake or meson (e.g. vkd3d-proton) automatically come with
|
||||
`compile_commands.json`. For autotools (e.g. wine) you have to [configure the
|
||||
build](#configuring-the-build) with `--enable-bear` that uses
|
||||
[bear](https://github.com/rizsotto/Bear) to create the compilation database.
|
||||
It's not on by default as it make the build slightly slower.
|
||||
|
||||
The build system collects all the created compile_commands.json files in a
|
||||
build subdirectory named `compile_commands/`.
|
||||
|
||||
The paths are translated to point to the real source (i.e. not the rsynced
|
||||
copy). It still may depend on build directory for things like auto-generated
|
||||
`config.h` though and for wine it may be beneficial to run `tools/make_requests`
|
||||
in you source directories as those changes are not committed.
|
||||
|
||||
You can then configure your editor to use that file for clangd in a few ways:
|
||||
|
||||
1) directly - some editors/plugins allow you to specify the path to `compile_commands.json`
|
||||
2) via `.clangd` file, e.g.
|
||||
```bash
|
||||
cd src/proton/wine/
|
||||
cat > .clangd <<EOF
|
||||
CompileFlags:
|
||||
CompilationDatabase: ../build/current-dev/compile_commands/wine64/
|
||||
EOF
|
||||
```
|
||||
3) by symlinking:
|
||||
```bash
|
||||
ln -s ../build/current-dev/compile_commands/wine64/compile_commands.json .
|
||||
```
|
||||
|
||||
|
||||
----
|
||||
Runtime Config Options
|
||||
----
|
||||
----------------------
|
||||
|
||||
Proton can be tuned at runtime to help certain games run. The Steam client sets
|
||||
some options for known games using the <tt>STEAM_COMPAT_CONFIG</tt> variable.
|
||||
some options for known games using the `STEAM_COMPAT_CONFIG` variable.
|
||||
You can override these options using the environment variables described below.
|
||||
|
||||
The best way to set these environment overrides for all games is by renaming
|
||||
@ -295,40 +273,44 @@ Steam client. Set the variable, followed by `%command%`. For example, input
|
||||
"`PROTON_USE_WINED3D=1 %command%`" to use the OpenGL-based wined3d renderer
|
||||
instead of the Vulkan-based DXVK renderer.
|
||||
|
||||
To enable an option, set the variable to a non-<tt>0</tt> value. To disable an
|
||||
option, set the variable to <tt>0</tt>. To use Steam's default configuration, do
|
||||
To enable an option, set the variable to a non-`0` value. To disable an
|
||||
option, set the variable to `0`. To use Steam's default configuration, do
|
||||
not specify the variable at all.
|
||||
|
||||
All of the below are runtime options. They do not effect permanent changes to
|
||||
the Wine prefix. Removing the option will revert to the previous behavior.
|
||||
|
||||
| Compat config string | Environment Variable | Description |
|
||||
| :-------------------- | :----------------------------- | :----------- |
|
||||
| | <tt>PROTON_LOG</tt> | Convenience method for dumping a useful debug log to `$PROTON_LOG_DIR/steam-$APPID.log` For more thorough logging, use `user_settings.py`. |
|
||||
| | <tt>PROTON_LOG_DIR</tt> | Output log files into the directory specified. Defaults to your home directory. |
|
||||
| | <tt>PROTON_DUMP_DEBUG_COMMANDS</tt> | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
|
||||
| | <tt>PROTON_DEBUG_DIR</tt> | Root directory for the Proton debug scripts, `/tmp` by default. |
|
||||
| | <tt>PROTON_CRASH_REPORT_DIR</tt> | Write crash logs into this directory. Does not clean up old logs, so may eat all your disk space eventually. |
|
||||
| <tt>wined3d</tt> | <tt>PROTON_USE_WINED3D</tt> | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11, d3d10, and d3d9. |
|
||||
| <tt>nod3d11</tt> | <tt>PROTON_NO_D3D11</tt> | Disable <tt>d3d11.dll</tt>, for d3d11 games which can fall back to and run better with d3d9. |
|
||||
| <tt>nod3d10</tt> | <tt>PROTON_NO_D3D10</tt> | Disable <tt>d3d10.dll</tt> and <tt>dxgi.dll</tt>, for d3d10 games which can fall back to and run better with d3d9. |
|
||||
| <tt>noesync</tt> | <tt>PROTON_NO_ESYNC</tt> | Do not use eventfd-based in-process synchronization primitives. |
|
||||
| <tt>nofsync</tt> | <tt>PROTON_NO_FSYNC</tt> | Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no `FUTEX_WAIT_MULTIPLE` support.) |
|
||||
| <tt>noxim</tt> | <tt>PROTON_NO_XIM</tt> | Enabled by default. Do not attempt to use XIM (X Input Methods) support. XIM support is known to cause crashes with libx11 older than version 1.7. |
|
||||
| <tt>enablenvapi</tt> | <tt>PROTON_ENABLE_NVAPI</tt> | Enable NVIDIA's NVAPI GPU support library. |
|
||||
| <tt>nativevulkanloader</tt> | | Use the Vulkan loader shipped with the game instead of Proton's built-in Vulkan loader. This breaks VR support, but is required by a few games. |
|
||||
| <tt>forcelgadd</tt> | <tt>PROTON_FORCE_LARGE_ADDRESS_AWARE</tt> | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. |
|
||||
| <tt>heapdelayfree</tt>| <tt>PROTON_HEAP_DELAY_FREE</tt>| Delay freeing some memory, to work around application use-after-free bugs. |
|
||||
| <tt>gamedrive</tt> | <tt>PROTON_SET_GAME_DRIVE</tt> | Create an S: drive which points to the Steam Library which contains the game. |
|
||||
| <tt>noforcelgadd</tt> | | Disable forcelgadd. If both this and `forcelgadd` are set, enabled wins. |
|
||||
| <tt>oldglstr</tt> | <tt>PROTON_OLD_GL_STRING</tt> | Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings. |
|
||||
| <tt>vkd3dfl12</tt> | | Force the Direct3D 12 feature level to 12, regardless of driver support. |
|
||||
| <tt>vkd3dbindlesstb</tt>| | Put `force_bindless_texel_buffer` into `VKD3D_CONFIG`. |
|
||||
| <tt>hidenvgpu</tt> | <tt>PROTON_HIDE_NVIDIA_GPU</tt>| Force Nvidia GPUs to always be reported as AMD GPUs. Some games require this if they depend on Windows-only Nvidia driver functionality. See also DXVK's nvapiHack config, which only affects reporting from Direct3D. |
|
||||
| | <tt>WINE_FULLSCREEN_INTEGER_SCALING</tt> | Enable integer scaling mode, to give sharp pixels when upscaling. |
|
||||
| <tt>cmdlineappend:</tt>| | Append the string after the colon as an argument to the game command. May be specified more than once. Escape commas and backslashes with a backslash. |
|
||||
| <tt>nowritewatch</tt> | <tt>PROTON_NO_WRITE_WATCH</tt> | Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). |
|
||||
| <tt>seccomp</tt> | <tt>PROTON_USE_SECCOMP</tt> | **Note: Obsoleted in Proton 5.13.** In older versions, enable seccomp-bpf filter to emulate native syscalls, required for some DRM protections to work. |
|
||||
| <tt>d9vk</tt> | <tt>PROTON_USE_D9VK</tt> | **Note: Obsoleted in Proton 5.0.** In older versions, use Vulkan-based DXVK instead of OpenGL-based wined3d for d3d9. |
|
||||
| Compat config string | Environment Variable | Description |
|
||||
| :-------------------- | :--------------------------------- | :----------- |
|
||||
| | `PROTON_LOG` | Convenience method for dumping a useful debug log to `$PROTON_LOG_DIR/steam-$APPID.log`. Set to `1` to enable default logging, or set to a string to be appended to the default `WINEDEBUG` channels. |
|
||||
| | `PROTON_LOG_DIR` | Output log files into the directory specified. Defaults to your home directory. |
|
||||
| | `PROTON_DUMP_DEBUG_COMMANDS` | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
|
||||
| | `PROTON_DEBUG_DIR` | Root directory for the Proton debug scripts, `/tmp` by default. |
|
||||
| | `PROTON_WAIT_ATTACH` | Wait for a debugger to attach to steam.exe before launching the game process. To attach to the game process at startup, debuggers should be set to follow child processes. |
|
||||
| | `PROTON_CRASH_REPORT_DIR` | Write crash logs into this directory. Does not clean up old logs, so may eat all your disk space eventually. |
|
||||
| `wined3d` | `PROTON_USE_WINED3D` | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11, d3d10, and d3d9. |
|
||||
| `nod3d11` | `PROTON_NO_D3D11` | Disable `d3d11.dll`, for d3d11 games which can fall back to and run better with d3d9. |
|
||||
| `nod3d10` | `PROTON_NO_D3D10` | Disable `d3d10.dll` and `dxgi.dll`, for d3d10 games which can fall back to and run better with d3d9. |
|
||||
| `noesync` | `PROTON_NO_ESYNC` | Do not use eventfd-based in-process synchronization primitives. |
|
||||
| `nofsync` | `PROTON_NO_FSYNC` | Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no `FUTEX_WAIT_MULTIPLE` support.) |
|
||||
| `noxim` | `PROTON_NO_XIM` | Enabled by default. Do not attempt to use XIM (X Input Methods) support. XIM support is known to cause crashes with libx11 older than version 1.7. |
|
||||
| `enablenvapi` | `PROTON_ENABLE_NVAPI` | Enable NVIDIA's NVAPI GPU support library. |
|
||||
| `nativevulkanloader` | | Use the Vulkan loader shipped with the game instead of Proton's built-in Vulkan loader. This breaks VR support, but is required by a few games. |
|
||||
| `forcelgadd` | `PROTON_FORCE_LARGE_ADDRESS_AWARE` | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. |
|
||||
| `heapdelayfree` | `PROTON_HEAP_DELAY_FREE` | Delay freeing some memory, to work around application use-after-free bugs. |
|
||||
| `gamedrive` | `PROTON_SET_GAME_DRIVE` | Create an S: drive which points to the Steam Library which contains the game. |
|
||||
| `noforcelgadd` | | Disable forcelgadd. If both this and `forcelgadd` are set, enabled wins. |
|
||||
| `oldglstr` | `PROTON_OLD_GL_STRING` | Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings. |
|
||||
| `vkd3dfl12` | | Force the Direct3D 12 feature level to 12, regardless of driver support. |
|
||||
| `vkd3dbindlesstb` | | Put `force_bindless_texel_buffer` into `VKD3D_CONFIG`. |
|
||||
| `nomfdxgiman` | `WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER` | Enable hack to work around video issues in some games due to incomplete IMFDXGIDeviceManager support. |
|
||||
| `noopwr` | `WINE_DISABLE_VULKAN_OPWR` | Enable hack to disable Vulkan other process window rendering which sometimes causes issues on Wayland due to blit being one frame behind. |
|
||||
| `hidenvgpu` | `PROTON_HIDE_NVIDIA_GPU` | Force Nvidia GPUs to always be reported as AMD GPUs. Some games require this if they depend on Windows-only Nvidia driver functionality. See also DXVK's nvapiHack config, which only affects reporting from Direct3D. |
|
||||
| | `WINE_FULLSCREEN_INTEGER_SCALING` | Enable integer scaling mode, to give sharp pixels when upscaling. |
|
||||
| `cmdlineappend:` | | Append the string after the colon as an argument to the game command. May be specified more than once. Escape commas and backslashes with a backslash. |
|
||||
| `nowritewatch` | `PROTON_NO_WRITE_WATCH` | Disable support for memory write watches in ntdll. This is a very dangerous hack and should only be applied if you have verified that the game can operate without write watches. This improves performance for some very specific games (e.g. CoreRT-based games). |
|
||||
| `nosteamffmpeg` | `PROTON_NO_STEAM_FFMPEG` | Ignore ffmpeg that ships with Steam. Some videos may not play. |
|
||||
| `seccomp` | `PROTON_USE_SECCOMP` | **Note: Obsoleted in Proton 5.13.** In older versions, enable seccomp-bpf filter to emulate native syscalls, required for some DRM protections to work. |
|
||||
| `d9vk` | `PROTON_USE_D9VK` | **Note: Obsoleted in Proton 5.0.** In older versions, use Vulkan-based DXVK instead of OpenGL-based wined3d for d3d9. |
|
||||
|
||||
<!-- Target: GitHub Flavor Markdown. To test locally: pandoc -f markdown_github -t html README.md -->
|
||||
|
1
SPIRV-Headers
Submodule
1
SPIRV-Headers
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 6cae8216a6ea19ff3f237af01e54378c1ff81fcd
|
103
Vagrantfile
vendored
103
Vagrantfile
vendored
@ -1,103 +0,0 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
Vagrant.require_version ">= 2.2.0"
|
||||
|
||||
module OS
|
||||
def OS.windows?
|
||||
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
||||
end
|
||||
|
||||
def OS.mac?
|
||||
(/darwin/ =~ RUBY_PLATFORM) != nil
|
||||
end
|
||||
|
||||
def OS.unix?
|
||||
!OS.windows?
|
||||
end
|
||||
|
||||
def OS.linux?
|
||||
OS.unix? and not OS.mac?
|
||||
end
|
||||
end
|
||||
|
||||
# Vagrant file for setting up a build environment for Proton.
|
||||
if OS.linux?
|
||||
cpus = `nproc`.to_i
|
||||
# meminfo shows KB and we need to convert to MB
|
||||
memory = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 2
|
||||
elsif OS.mac?
|
||||
cpus = `sysctl -n hw.physicalcpu`.to_i
|
||||
# sysctl shows bytes and we need to convert to MB
|
||||
memory = `sysctl hw.memsize | sed -e 's/hw.memsize: //'`.to_i / 1024 / 1024 / 2
|
||||
else
|
||||
cpus = 1
|
||||
memory = 1024
|
||||
puts "Vagrant launched from unsupported platform."
|
||||
end
|
||||
memory = [memory, 4096].max
|
||||
puts "Platform: " + cpus.to_s + " CPUs, " + memory.to_s + " MB memory"
|
||||
|
||||
Vagrant.configure(2) do |config|
|
||||
#libvirt doesn't have a decent synced folder, so we have to use vagrant-sshfs.
|
||||
#This is not needed for virtualbox, but I couldn't find a way to use a
|
||||
#different synced folder type per provider, so we always use it.
|
||||
config.vagrant.plugins = "vagrant-sshfs"
|
||||
|
||||
config.vm.provider "virtualbox" do |v|
|
||||
v.cpus = [cpus, 32].min # virtualbox limit is 32 cpus
|
||||
v.memory = memory
|
||||
end
|
||||
|
||||
config.vm.provider "libvirt" do |v|
|
||||
v.cpus = cpus
|
||||
v.memory = memory
|
||||
v.random_hostname = true
|
||||
v.default_prefix = ENV['USER'].to_s.dup.concat('_').concat(File.basename(Dir.pwd))
|
||||
end
|
||||
|
||||
#debian10-based build VM
|
||||
config.vm.define "debian10", primary: true do |debian10|
|
||||
|
||||
debian10.vm.box = "generic/debian10"
|
||||
|
||||
debian10.vm.synced_folder "./vagrant_share/", "/vagrant/", create: true, type: "sshfs", sshfs_opts_append: "-o cache=no"
|
||||
debian10.vm.synced_folder ".", "/home/vagrant/proton", id: "proton", type: "rsync", rsync__exclude: ["vagrant_share"]
|
||||
|
||||
debian10.vm.provision "shell", privileged: "true", inline: <<-SHELL
|
||||
#install docker and steam-runtime dependencies
|
||||
dpkg --add-architecture i386
|
||||
apt-get update
|
||||
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
|
||||
|
||||
#add docker repo
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
|
||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"
|
||||
|
||||
#install host build-time dependencies
|
||||
apt-get update
|
||||
apt-get install -y ccache texinfo gpgv2 gnupg2 git docker-ce docker-ce-cli containerd.io \
|
||||
fontforge-nox python-debian python-pip
|
||||
|
||||
#install adobe font devkit to build source san hans
|
||||
pip install afdko
|
||||
|
||||
#work around an afdko dependency bug
|
||||
pip install singledispatch==3.4.0.4
|
||||
|
||||
#allow vagrant user to run docker
|
||||
adduser vagrant docker
|
||||
|
||||
# use faster overlay2 docker driver
|
||||
echo '{"storage-driver": "overlay2"}' >/etc/docker/daemon.json
|
||||
|
||||
#allow user to run stuff in steamrt
|
||||
sysctl kernel.unprivileged_userns_clone=1
|
||||
mkdir -p /etc/sysctl.d/
|
||||
echo kernel.unprivileged_userns_clone=1 > /etc/sysctl.d/docker_user.conf
|
||||
|
||||
#ensure we use only the mingw-w64 that we built
|
||||
apt-get remove -y '*mingw-w64*'
|
||||
SHELL
|
||||
end
|
||||
end
|
1
Vulkan-Headers
Submodule
1
Vulkan-Headers
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 8c1c27d5a9b9de8a17f500053bd08c7ca6bba19c
|
1
Vulkan-Loader
Submodule
1
Vulkan-Loader
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 538b2676eaac29565e4f1034a6f8a59ce158213d
|
File diff suppressed because it is too large
Load Diff
117
configure.sh
117
configure.sh
@ -19,9 +19,9 @@ if [[ $(tput colors 2>/dev/null || echo 0) -gt 0 ]]; then
|
||||
COLOR_CLEAR=$'\e[0m'
|
||||
fi
|
||||
|
||||
sh_quote() {
|
||||
sh_quote() {
|
||||
local quoted
|
||||
quoted="$(printf '%q ' "$@")"; [[ $# -eq 0 ]] || echo "${quoted:0:-1}";
|
||||
quoted="$(printf '%q ' "$@")"; [[ $# -eq 0 ]] || echo "${quoted:0:-1}";
|
||||
}
|
||||
err() { echo >&2 "${COLOR_ERR}!!${COLOR_CLEAR} $*"; }
|
||||
stat() { echo >&2 "${COLOR_STAT}::${COLOR_CLEAR} $*"; }
|
||||
@ -46,34 +46,24 @@ dependency_command() {
|
||||
fi
|
||||
}
|
||||
|
||||
dependency_afdko() {
|
||||
if command -v makeotf &> /dev/null; then
|
||||
AFDKO_VERB=
|
||||
elif command -v afdko &> /dev/null; then
|
||||
AFDKO_VERB=afdko
|
||||
else
|
||||
err "Couldn't find 'afdko'. Install it and make sure that 'makeotf' is in your PATH or 'afdko makeotf' works."
|
||||
MISSING_DEPENDENCIES=1
|
||||
fi
|
||||
}
|
||||
|
||||
CONTAINER_MOUNT_OPTS=""
|
||||
|
||||
check_container_engine() {
|
||||
info "Making sure that the container engine is working."
|
||||
if ! cmd $arg_container_engine run --rm $arg_protonsdk_image; then
|
||||
die "Broken container engine. Please fix your $arg_container_engine setup."
|
||||
stat "Trying $1."
|
||||
if ! cmd $1 run --rm $2; then
|
||||
info "$1 is unable to run the container."
|
||||
return 1
|
||||
fi
|
||||
|
||||
touch permission_check
|
||||
local inner_uid="$($arg_container_engine run -v "$(pwd):/test$CONTAINER_MOUNT_OPTS" \
|
||||
--rm $arg_protonsdk_image \
|
||||
local inner_uid="$($1 run -v "$(pwd):/test$CONTAINER_MOUNT_OPTS" \
|
||||
--rm $2 \
|
||||
stat --format "%u" /test/permission_check 2>&1)"
|
||||
rm permission_check
|
||||
|
||||
if [[ $inner_uid == *"Permission denied"* ]]; then
|
||||
err "The container cannot access files. Are you using SELinux?"
|
||||
die "Please read README.md and check your $arg_container_engine setup works."
|
||||
die "Please read README.md and check your $1 setup works."
|
||||
elif [ "$inner_uid" -eq 0 ]; then
|
||||
# namespace maps the user as root or the build is performed as host's root
|
||||
ROOTLESS_CONTAINER=1
|
||||
@ -81,7 +71,7 @@ check_container_engine() {
|
||||
ROOTLESS_CONTAINER=0
|
||||
else
|
||||
err "File owner's UID doesn't map to 0 or $(id -u) in the container."
|
||||
die "Don't know how to map permissions. Please check your $arg_container_engine setup."
|
||||
die "Don't know how to map permissions. Please check your $1 setup."
|
||||
fi
|
||||
}
|
||||
|
||||
@ -104,11 +94,21 @@ function escape_for_make() {
|
||||
}
|
||||
|
||||
function configure() {
|
||||
local steamrt_image="$1"
|
||||
local steamrt_name="$2"
|
||||
local steamrt_image="$arg_protonsdk_image"
|
||||
local srcdir
|
||||
srcdir="$(dirname "$0")"
|
||||
|
||||
if [[ "$srcdir" = "." ]]; then
|
||||
err "Cannot do a top level in-tree build."
|
||||
die "Create a subdirectory in build/ or outside of the tree and run configure.sh from there."
|
||||
fi
|
||||
|
||||
# nothing specified, getting the default value from the Makefile to test the
|
||||
# container engine
|
||||
if [[ -z $steamrt_image ]]; then
|
||||
steamrt_image="$(sed -n 's/STEAMRT_IMAGE ?= //p' $SRCDIR/Makefile.in)"
|
||||
fi
|
||||
|
||||
# Build name
|
||||
local build_name="$arg_build_name"
|
||||
if [[ -n $build_name ]]; then
|
||||
@ -118,18 +118,7 @@ function configure() {
|
||||
info "No build name specified, using default: $build_name"
|
||||
fi
|
||||
|
||||
dependency_command fontforge
|
||||
dependency_command find "findutils"
|
||||
dependency_command make "GNU Make"
|
||||
dependency_command rsync
|
||||
dependency_command wget
|
||||
dependency_command xz
|
||||
dependency_command patch
|
||||
dependency_command autoconf
|
||||
dependency_command git
|
||||
dependency_command python3
|
||||
|
||||
dependency_afdko
|
||||
|
||||
if [ "$MISSING_DEPENDENCIES" -ne 0 ]; then
|
||||
die "Missing dependencies, cannot continue."
|
||||
@ -140,9 +129,20 @@ function configure() {
|
||||
fi
|
||||
|
||||
if [[ -n "$arg_container_engine" ]]; then
|
||||
check_container_engine
|
||||
check_container_engine "$arg_container_engine" "$steamrt_image" || die "Specified container engine \"$arg_container_engine\" doesn't work"
|
||||
else
|
||||
stat "Trying to find usable container engine."
|
||||
if check_container_engine docker "$steamrt_image"; then
|
||||
arg_container_engine="docker"
|
||||
elif check_container_engine podman "$steamrt_image"; then
|
||||
arg_container_engine="podman"
|
||||
else
|
||||
die "${arg_container_engine:-Container engine discovery} has failed. Please fix your setup."
|
||||
fi
|
||||
fi
|
||||
|
||||
stat "Using $arg_container_engine."
|
||||
|
||||
## Write out config
|
||||
# Don't die after this point or we'll have rather unhelpfully deleted the Makefile
|
||||
[[ ! -e "$MAKEFILE" ]] || rm "$MAKEFILE"
|
||||
@ -154,9 +154,10 @@ function configure() {
|
||||
echo "SRCDIR := $(escape_for_make "$srcdir")"
|
||||
echo "BUILD_NAME := $(escape_for_make "$build_name")"
|
||||
|
||||
# SteamRT
|
||||
echo "STEAMRT_NAME := $(escape_for_make "$steamrt_name")"
|
||||
echo "STEAMRT_IMAGE := $(escape_for_make "$steamrt_image")"
|
||||
# SteamRT was specified, baking it into the Makefile
|
||||
if [[ -n $arg_protonsdk_image ]]; then
|
||||
echo "STEAMRT_IMAGE := $(escape_for_make "$arg_protonsdk_image")"
|
||||
fi
|
||||
|
||||
echo "ROOTLESS_CONTAINER := $ROOTLESS_CONTAINER"
|
||||
echo "CONTAINER_ENGINE := $arg_container_engine"
|
||||
@ -169,12 +170,13 @@ function configure() {
|
||||
if [[ -n "$arg_enable_ccache" ]]; then
|
||||
echo "ENABLE_CCACHE := 1"
|
||||
fi
|
||||
|
||||
echo "AFDKO_VERB := $AFDKO_VERB"
|
||||
if [[ -n "$arg_enable_bear" ]]; then
|
||||
echo "ENABLE_BEAR := 1"
|
||||
fi
|
||||
|
||||
# Include base
|
||||
echo ""
|
||||
echo "include \$(SRCDIR)/build/makefile_base.mak"
|
||||
echo "include \$(SRCDIR)/Makefile.in"
|
||||
} >> "$MAKEFILE"
|
||||
|
||||
stat "Created $MAKEFILE, now run make to build."
|
||||
@ -185,14 +187,13 @@ function configure() {
|
||||
# Parse arguments
|
||||
#
|
||||
|
||||
arg_steamrt="soldier"
|
||||
arg_protonsdk_image="registry.gitlab.steamos.cloud/proton/soldier/sdk:0.20210505.0-2"
|
||||
arg_no_protonsdk=""
|
||||
arg_protonsdk_image=""
|
||||
arg_build_name=""
|
||||
arg_container_engine="docker"
|
||||
arg_container_engine=""
|
||||
arg_docker_opts=""
|
||||
arg_relabel_volumes=""
|
||||
arg_enable_ccache=""
|
||||
arg_enable_bear=""
|
||||
arg_help=""
|
||||
invalid_args=""
|
||||
function parse_args() {
|
||||
@ -239,14 +240,11 @@ function parse_args() {
|
||||
arg_relabel_volumes="1"
|
||||
elif [[ $arg = --enable-ccache ]]; then
|
||||
arg_enable_ccache="1"
|
||||
elif [[ $arg = --enable-bear ]]; then
|
||||
arg_enable_bear="1"
|
||||
elif [[ $arg = --proton-sdk-image ]]; then
|
||||
val_used=1
|
||||
arg_protonsdk_image="$val"
|
||||
elif [[ $arg = --steam-runtime ]]; then
|
||||
val_used=1
|
||||
arg_steamrt="$val"
|
||||
elif [[ $arg = --no-proton-sdk ]]; then
|
||||
arg_no_protonsdk=1
|
||||
else
|
||||
err "Unrecognized option $arg"
|
||||
return 1
|
||||
@ -281,7 +279,7 @@ function parse_args() {
|
||||
}
|
||||
|
||||
usage() {
|
||||
"$1" "Usage: $0 { --no-proton-sdk | --proton-sdk-image=<image> --steam-runtime=<name> }"
|
||||
"$1" "Usage: $0 { --proton-sdk-image=<image> }"
|
||||
"$1" " Generate a Makefile for building Proton. May be run from another directory to create"
|
||||
"$1" " out-of-tree build directories (e.g. mkdir mybuild && cd mybuild && ../configure.sh)"
|
||||
"$1" ""
|
||||
@ -290,8 +288,8 @@ usage() {
|
||||
"$1" ""
|
||||
"$1" " --build-name=<name> Set the name of the build that displays when used in Steam"
|
||||
"$1" ""
|
||||
"$1" " --container-engine=<engine> Which container Docker-compatible container engine to use,"
|
||||
"$1" " e.g. podman. Defaults to docker."
|
||||
"$1" " --container-engine=<engine> Which Docker-compatible container engine to use,"
|
||||
"$1" " e.g. podman. Tries to do autodiscovery when not specified."
|
||||
"$1" ""
|
||||
"$1" " --docker-opts='<options>' Extra options to pass to Docker when invoking the runtime."
|
||||
"$1" ""
|
||||
@ -299,6 +297,8 @@ usage() {
|
||||
"$1" ""
|
||||
"$1" " --enable-ccache Mount \$CCACHE_DIR or \$HOME/.ccache inside of the container and use ccache for the build."
|
||||
"$1" ""
|
||||
"$1" " --enable-bear Invokes make via bear creating compile_commands.json."
|
||||
"$1" ""
|
||||
"$1" " Steam Runtime"
|
||||
"$1" " Proton builds that are to be installed & run under the steam client must be built with"
|
||||
"$1" " the Steam Runtime SDK to ensure compatibility. See README.md for more information."
|
||||
@ -307,21 +307,10 @@ usage() {
|
||||
"$1" " for build steps that must be run in an SDK"
|
||||
"$1" " environment. See README.md for instructions to"
|
||||
"$1" " create this image."
|
||||
"$1" " --steam-runtime=soldier Name of the steam runtime release to build for (soldier, scout)."
|
||||
"$1" ""
|
||||
"$1" " --no-proton-sdk Do not automatically invoke any runtime SDK as part of the build."
|
||||
"$1" " Build steps may still be manually run in a runtime environment."
|
||||
exit 1;
|
||||
}
|
||||
|
||||
parse_args "$@" || usage err
|
||||
[[ -z $arg_help ]] || usage info
|
||||
|
||||
# Sanity check arguments
|
||||
if [[ -n $arg_no_protonsdk && -n $arg_protonsdk_image ]]; then
|
||||
die "Cannot specify --proton-sdk-image as well as --no-proton-sdk"
|
||||
elif [[ -z $arg_no_protonsdk && -z $arg_protonsdk_image ]]; then
|
||||
die "Must specify either --no-proton-sdk or --proton-sdk-image"
|
||||
fi
|
||||
|
||||
configure "$arg_protonsdk_image" "$arg_steamrt"
|
||||
configure
|
||||
|
1
dav1d
Submodule
1
dav1d
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 8a6f054ef1e0f7886bc6e53e6be97c427154fe85
|
@ -6,6 +6,7 @@
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import re
|
||||
|
||||
def file_is_wine_builtin_dll(path):
|
||||
if not os.path.exists(path):
|
||||
@ -59,36 +60,72 @@ def setup_dll_symlinks(default_pfx_dir, dist_dir):
|
||||
if os.path.isfile(filename) and file_is_wine_builtin_dll(filename):
|
||||
bitness = dll_bitness(filename)
|
||||
if bitness == 32:
|
||||
libdir = os.path.join(dist_dir, 'lib/wine')
|
||||
libdir = os.path.join(dist_dir, 'lib/wine/i386-windows')
|
||||
elif bitness == 64:
|
||||
libdir = os.path.join(dist_dir, 'lib64/wine')
|
||||
libdir = os.path.join(dist_dir, 'lib64/wine/x86_64-windows')
|
||||
else:
|
||||
continue
|
||||
if os.path.exists(os.path.join(libdir, file_)):
|
||||
target = os.path.join(libdir, file_)
|
||||
elif os.path.exists(os.path.join(libdir, 'fakedlls', file_)):
|
||||
target = os.path.join(libdir, 'fakedlls', file_)
|
||||
else:
|
||||
continue
|
||||
os.unlink(filename)
|
||||
make_relative_symlink(target, filename)
|
||||
|
||||
def make_default_pfx(default_pfx_dir, dist_dir, runtime):
|
||||
KEY_RE = re.compile(r'\[(.+)\] ([0-9]+)')
|
||||
VALUE_RE = re.compile(r'"(.*)"="(.+)"')
|
||||
|
||||
def filter_registry(filename):
|
||||
"""Remove registry values that contain a fully qualified path
|
||||
inside some well-known registry keys. These paths are devised on
|
||||
the build machine and it makes no sense to distribute them. Plus,
|
||||
they are known to cause bugs."""
|
||||
|
||||
FILTER_KEYS = [
|
||||
r'Software\\Microsoft\\Windows\\CurrentVersion\\Fonts',
|
||||
r'Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts',
|
||||
r'Software\\Wine\\Fonts\\External Fonts',
|
||||
]
|
||||
|
||||
filtering = False
|
||||
with open(filename) as fin:
|
||||
with open(filename + '.tmp', 'w') as fout:
|
||||
for line in fin:
|
||||
line = line.strip()
|
||||
|
||||
match = KEY_RE.match(line)
|
||||
if match is not None:
|
||||
fout.write(line + '\n')
|
||||
filtering = match.group(1) in FILTER_KEYS
|
||||
continue
|
||||
|
||||
match = VALUE_RE.match(line)
|
||||
if match is not None:
|
||||
if not filtering or match.group(2)[1:2] != ':':
|
||||
fout.write(line + '\n')
|
||||
continue
|
||||
|
||||
fout.write(line + '\n')
|
||||
|
||||
os.rename(filename + '.tmp', filename)
|
||||
|
||||
#steampipe can't handle filenames with colons, so we remove them here
|
||||
#and restore them in the proton script
|
||||
def fixup_drive_links(default_pfx_dir):
|
||||
for walk_dir, dirs, files in os.walk(os.path.join(default_pfx_dir, "dosdevices")):
|
||||
for dir_ in dirs:
|
||||
if ":" in dir_:
|
||||
os.remove(os.path.join(walk_dir, dir_))
|
||||
|
||||
def make_default_pfx(default_pfx_dir, dist_dir):
|
||||
local_env = dict(os.environ)
|
||||
|
||||
ld_path = dist_dir + "/lib64:" + dist_dir + "/lib"
|
||||
|
||||
if runtime is None:
|
||||
local_env["LD_LIBRARY_PATH"] = ld_path
|
||||
local_env["WINEPREFIX"] = default_pfx_dir
|
||||
local_env["WINEDEBUG"] = "-all"
|
||||
runtime_args = []
|
||||
else:
|
||||
#the runtime clears the environment, so we pass it in on the CL via env
|
||||
runtime_args = runtime + ["env",
|
||||
"LD_LIBRARY_PATH=" + ld_path,
|
||||
"WINEPREFIX=" + default_pfx_dir,
|
||||
"WINEDEBUG=-all"]
|
||||
local_env["LD_LIBRARY_PATH"] = ld_path
|
||||
local_env["WINEPREFIX"] = default_pfx_dir
|
||||
local_env["WINEDEBUG"] = "-all"
|
||||
runtime_args = []
|
||||
|
||||
subprocess.run(runtime_args + ["/bin/bash", "-c",
|
||||
os.path.join(dist_dir, 'bin', 'wine') + " wineboot && " +
|
||||
@ -96,10 +133,11 @@ def make_default_pfx(default_pfx_dir, dist_dir, runtime):
|
||||
|
||||
env=local_env, check=True)
|
||||
setup_dll_symlinks(default_pfx_dir, dist_dir)
|
||||
fixup_drive_links(default_pfx_dir)
|
||||
|
||||
filter_registry(os.path.join(default_pfx_dir, 'user.reg'))
|
||||
filter_registry(os.path.join(default_pfx_dir, 'system.reg'))
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
if len(sys.argv) > 3:
|
||||
make_default_pfx(sys.argv[1], sys.argv[2], sys.argv[3:])
|
||||
else:
|
||||
make_default_pfx(sys.argv[1], sys.argv[2], None)
|
||||
make_default_pfx(sys.argv[1], sys.argv[2])
|
||||
|
124
dist.LICENSE
124
dist.LICENSE
@ -1,4 +1,4 @@
|
||||
Copyright (c) 2018-2021, Valve Corporation
|
||||
Copyright (c) 2018-2022, Valve Corporation
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
@ -34,7 +34,7 @@ Browse the source code for more information
|
||||
|
||||
This software contains a modified version of Wine licensed under the LGPL 2.1. Wine is
|
||||
|
||||
Copyright (c) 1993-2021 the Wine project authors
|
||||
Copyright (c) 1993-2022 the Wine project authors
|
||||
|
||||
Visit Wine at
|
||||
|
||||
@ -48,8 +48,8 @@ View our modifications at
|
||||
|
||||
This software contains a modified version of DXVK licensed under the zlib/libpng license. DXVK is
|
||||
|
||||
Copyright (c) 2017-2021 Philip Rebohle
|
||||
Copyright (c) 2019-2021 Joshua Ashton
|
||||
Copyright (c) 2017-2022 Philip Rebohle
|
||||
Copyright (c) 2019-2022 Joshua Ashton
|
||||
|
||||
Visit DXVK at
|
||||
|
||||
@ -61,9 +61,19 @@ View our modifications at
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains vkd3d-proton licensed under the LGPL 2.1. vkd3d-proton is
|
||||
|
||||
Copyright 2016-2022 the vkd3d-proton project authors
|
||||
|
||||
Visit vkd3d-proton at
|
||||
|
||||
https://github.com/HansKristian-Work/vkd3d-proton
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains FAudio licensed under the zlib license. FAudio is
|
||||
|
||||
Copyright (c) 2011-2021 Ethan Lee, Luigi Auriemma, and the MonoGame Team
|
||||
Copyright (c) 2011-2022 Ethan Lee, Luigi Auriemma, and the MonoGame Team
|
||||
|
||||
Visit FAudio at
|
||||
|
||||
@ -71,14 +81,6 @@ Visit FAudio at
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains glib licensed under the LGPL 2.1.
|
||||
|
||||
Visit glib at
|
||||
|
||||
https://wiki.gnome.org/Projects/GLib
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains gstreamer, gst-plugins-base, and gst-plugins-good licensed under the LGPL 2.
|
||||
|
||||
Visit gstreamer at
|
||||
@ -100,7 +102,7 @@ Visit Liberation Fonts at
|
||||
|
||||
This software contains Source Han Sans licensed under the SIL Open Font License, available at LICENSE.OFL. This font is
|
||||
|
||||
Copyright 2020 Adobe (http://www.adobe.com/)
|
||||
Copyright 2014-2021 Adobe (http://www.adobe.com/)
|
||||
|
||||
Visit Source Han Sans at
|
||||
|
||||
@ -108,6 +110,19 @@ Visit Source Han Sans at
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains Ume fonts distributed under the following license:
|
||||
|
||||
These fonts are free software. Unlimited permission is granted to
|
||||
use, copy, and distribute it, with or without modification, either
|
||||
commercially and noncommercially. THESE FONTS ARE PROVIDED "AS
|
||||
IS" WITHOUT WARRANTY.
|
||||
|
||||
Visit Ume fonts home page at
|
||||
|
||||
https://osdn.net/projects/ume-font/
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains some fonts from the Google Noto collection, licensed under the SIL Open Font License, available at LICENSE.OFL. They are
|
||||
|
||||
Copyright 2015 Google Inc.
|
||||
@ -174,16 +189,6 @@ wine-gecko is available in Source Code form at
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains vkd3d-proton licensed under the LGPL 2.1. vkd3d-proton is
|
||||
|
||||
Copyright 2016-2020 the vkd3d-proton project authors
|
||||
|
||||
Visit vkd3d-proton at
|
||||
|
||||
https://github.com/HansKristian-Work/vkd3d-proton
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains orc. Orc is
|
||||
|
||||
Copyright 2002 - 2009 David A. Schleef <ds@schleef.org>
|
||||
@ -252,12 +257,10 @@ Visit orc at
|
||||
This software contains the following Rust libraries under the MIT license:
|
||||
|
||||
gstreamer-rs <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs>
|
||||
gst-plugins-rs <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs>
|
||||
|
||||
array-init <https://github.com/Manishearth/array-init/>
|
||||
Copyright (c) 2010 The Rust Project Developers
|
||||
|
||||
autocfg <https://github.com/cuviper/autocfg>
|
||||
Copyright (c) 2018 Josh Stone
|
||||
Copyright (c) 2017-2020 The array-init developers
|
||||
|
||||
bitflags <https://github.com/bitflags/bitflags>
|
||||
num-integer <https://github.com/rust-num/num-integer>
|
||||
@ -266,29 +269,24 @@ This software contains the following Rust libraries under the MIT license:
|
||||
Copyright (c) 2014 The Rust Project Developers
|
||||
|
||||
cfg-if <https://github.com/alexcrichton/cfg-if>
|
||||
pkg-config <https://github.com/rust-lang/pkg-config-rs>
|
||||
proc-macro2 <https://github.com/alexcrichton/proc-macro2>
|
||||
proc-macro2 <https://github.com/dtolnay/proc-macro2>
|
||||
toml <https://github.com/alexcrichton/toml-rs>
|
||||
Copyright (c) 2014 Alex Crichton
|
||||
|
||||
chrono <https://github.com/chronotope/chrono>
|
||||
Copyright (c) 2014 Kang Seonghoon
|
||||
|
||||
crc32fast <https://github.com/srijs/rust-crc32fast>
|
||||
Copyright (c) 2018 Sam Rijs, Alex Crichton and contributors
|
||||
|
||||
dav1d-rs <https://github.com/rust-av/dav1d-rs>
|
||||
Copyright (c) 2018 Luca Barbato
|
||||
|
||||
futures-channel <https://github.com/rust-lang/futures-rs>
|
||||
futures-core <https://github.com/rust-lang/futures-rs>
|
||||
futures-executor <https://github.com/rust-lang/futures-rs>
|
||||
futures-macro <https://github.com/rust-lang/futures-rs>
|
||||
futures-task <https://github.com/rust-lang/futures-rs>
|
||||
futures-util <https://github.com/rust-lang/futures-rs>
|
||||
Copyright (c) 2016 Alex Crichton
|
||||
Copyright (c) 2017 The Tokio Authors
|
||||
|
||||
glib <https://github.com/gtk-rs/glib>
|
||||
Copyright (c) 2013-2015 The Gtk-rs Project Developers
|
||||
|
||||
heck <https://github.com/withoutboats/heck>
|
||||
unicode-segmentation <https://github.com/unicode-rs/unicode-segmentation>
|
||||
unicode-xid <https://github.com/unicode-rs/unicode-xid>
|
||||
@ -303,41 +301,35 @@ This software contains the following Rust libraries under the MIT license:
|
||||
murmur3 <https://github.com/stusmall/murmur3>
|
||||
Copyright (c) 2016 Stu Small
|
||||
|
||||
pin-utils <https://github.com/rust-lang/pin-utils>
|
||||
pin-utils <https://github.com/rust-lang-nursery/pin-utils>
|
||||
Copyright (c) 2018 The pin-utils authors
|
||||
|
||||
pretty-hex <https://github.com/wolandr/pretty-hex>
|
||||
Copyright (c) 2018 Andrei Volnin
|
||||
|
||||
proc-macro-error <https://gitlab.com/CreepySkeleton/proc-macro-error>
|
||||
proc-macro-error-attr <https://gitlab.com/CreepySkeleton/proc-macro-error>
|
||||
Copyright (c) 2019-2020 CreepySkeleton
|
||||
|
||||
proc-macro-hack <https://github.com/dtolnay/proc-macro-hack>
|
||||
Copyright (c) 2018 David Tolnay
|
||||
|
||||
quote <https://github.com/dtolnay/quote>
|
||||
Copyright (c) 2016 The Rust Project Developers
|
||||
|
||||
slab <https://github.com/carllerche/slab>
|
||||
slab <https://github.com/tokio-rs/slab>
|
||||
Copyright (c) 2019 Carl Lerche
|
||||
|
||||
time <https://github.com/time-rs/time>
|
||||
Copyright (c) 2019 Jacob Pratt
|
||||
|
||||
version_check <https://github.com/SergioBenitez/version_check>
|
||||
Copyright (c) 2017-2018 Sergio Benitez
|
||||
smallvec <https://github.com/servo/rust-smallvec>
|
||||
Copyright (c) 2018 The Servo Project Developers
|
||||
|
||||
anyhow <https://github.com/dtolnay/anyhow>
|
||||
either <https://github.com/bluss/either>
|
||||
itertools <https://github.com/rust-itertools/itertools>
|
||||
glib <https://github.com/gtk-rs/gtk-rs-core>
|
||||
once_cell <https://github.com/matklad/once_cell>
|
||||
paste <https://github.com/dtolnay/paste>
|
||||
pin-project <https://github.com/taiki-e/pin-project>
|
||||
pin-project-lite <https://github.com/taiki-e/pin-project-lite>
|
||||
proc-macro-crate <https://github.com/bkchr/proc-macro-crate>
|
||||
serde <https://github.com/serde-rs/serde>
|
||||
syn <https://github.com/dtolnay/syn>
|
||||
syn-mid <https://github.com/taiki-e/syn-mid>
|
||||
thiserror <https://github.com/dtolnay/thiserror>
|
||||
thiserror-impl <https://github.com/dtolnay/thiserror>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@ -443,3 +435,33 @@ This software contains the jxrlib library, which is
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
---- ---- ---- ----
|
||||
|
||||
This software contains the dav1d library, which is
|
||||
|
||||
Copyright © 2018-2019, VideoLAN and dav1d authors
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Distribution of dav1d is also covered by the Alliance for Open Media Patent License 1.0, available at PATENTS.AV1.
|
||||
|
@ -1,41 +1,44 @@
|
||||
STEAMRT_VERSION = 0.20210126.1
|
||||
STEAMRT_VERSION = 0.20230905.59202
|
||||
STEAMRT_URLBASE = registry.gitlab.steamos.cloud
|
||||
|
||||
PROTONSDK_URLBASE = $(STEAMRT_URLBASE)/proton/soldier/sdk
|
||||
PROTONSDK_URLBASE = $(STEAMRT_URLBASE)/proton/sniper/sdk
|
||||
PROTONSDK_VERSION = $(STEAMRT_VERSION)-0-dev
|
||||
|
||||
# this is just for building toolchain, as we do static builds it should
|
||||
# not have any impact on the end result, but changing it will invalidate
|
||||
# docker caches, so we need something that don't change much
|
||||
BASE_IMAGE_i686 = i386/ubuntu:18.04
|
||||
BASE_IMAGE_x86_64 = ubuntu:18.04
|
||||
BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/sniper/sdk:0.20221017.1
|
||||
|
||||
BINUTILS_VERSION = 2.36.1
|
||||
GCC_VERSION = 10.2.0
|
||||
MINGW_VERSION = 8.0.0
|
||||
RUST_VERSION = 1.50.0
|
||||
BINUTILS_VERSION = 2.40
|
||||
GCC_VERSION = 10.3.0
|
||||
MINGW_VERSION = 9.0.0
|
||||
RUST_VERSION = 1.68.0
|
||||
NINJA_VERSION = 1.11.1
|
||||
|
||||
SOURCES_URLBASE = https://repo.steampowered.com/proton-sdk
|
||||
BINUTILS_URLBASE = $(SOURCES_URLBASE)
|
||||
GCC_URLBASE = $(SOURCES_URLBASE)
|
||||
MINGW_URLBASE = $(SOURCES_URLBASE)
|
||||
RUST_URLBASE = $(SOURCES_URLBASE)
|
||||
NINJA_URLBASE = $(SOURCES_URLBASE)
|
||||
|
||||
BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.xz
|
||||
GCC_SOURCE = gcc-$(GCC_VERSION).tar.xz
|
||||
MINGW_SOURCE = mingw-w64-v$(MINGW_VERSION).tar.bz2
|
||||
RUST_SOURCE_x86_64 = rust-$(RUST_VERSION)-x86_64-unknown-linux-gnu.tar.gz
|
||||
RUST_SOURCE_i686 = rust-$(RUST_VERSION)-i686-unknown-linux-gnu.tar.gz
|
||||
NINJA_SOURCE = ninja-build_$(NINJA_VERSION).orig.tar.gz
|
||||
|
||||
BINUTILS_SHA256 = e81d9edf373f193af428a0f256674aea62a9d74dfe93f65192d4eae030b0f3b0
|
||||
GCC_SHA256 = b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c
|
||||
MINGW_SHA256 = 44c740ea6ab3924bc3aa169bad11ad3c5766c5c8459e3126d44eabb8735a5762
|
||||
RUST_SHA256_x86_64 = fa889b53918980aea2dea42bfae4e858dcb2104c6fdca6e4fe359f3a49767701
|
||||
RUST_SHA256_i686 = dee56dc425ed5d8e8112f26fba3060fd324c49f1261e0b7e8e29f7d9b852b09a
|
||||
BINUTILS_SHA256 = 0f8a4c272d7f17f369ded10a4aca28b8e304828e95526da482b0ccc4dfc9d8e1
|
||||
GCC_SHA256 = 64f404c1a650f27fc33da242e1f2df54952e3963a49e06e73f6940f3223ac344
|
||||
MINGW_SHA256 = 1929b94b402f5ff4d7d37a9fe88daa9cc55515a6134805c104d1794ae22a4181
|
||||
RUST_SHA256_x86_64 = 7be1acdac656d0b0b7e909e5c0d4ddf61c755c203ec26ebafbd306322335b361
|
||||
RUST_SHA256_i686 = dc931adeb2943dcadfbd29546481f0296fcb97a511421053ecae6586a85869b1
|
||||
NINJA_SHA256 = 31747ae633213f1eda3842686f83c2aa1412e0f5691d1c14dbbcc67fe7400cea
|
||||
|
||||
DOCKER = docker
|
||||
|
||||
%.Dockerfile: %.Dockerfile.in
|
||||
%.Dockerfile: %.Dockerfile.in Makefile
|
||||
sed -re 's!@PROTONSDK_URLBASE@!$(PROTONSDK_URLBASE)!g' \
|
||||
-re 's!@BASE_IMAGE@!$(BASE_IMAGE)!g' \
|
||||
-re 's!@BINUTILS_VERSION@!$(BINUTILS_VERSION)!g' \
|
||||
@ -56,37 +59,43 @@ DOCKER = docker
|
||||
-re 's!@RUST_SOURCE_i686@!$(RUST_SOURCE_i686)!g' \
|
||||
-re 's!@RUST_SHA256_x86_64@!$(RUST_SHA256_x86_64)!g' \
|
||||
-re 's!@RUST_SHA256_i686@!$(RUST_SHA256_i686)!g' \
|
||||
-re 's!@NINJA_VERSION@!$(NINJA_VERSION)!g' \
|
||||
-re 's!@NINJA_URLBASE@!$(NINJA_URLBASE)!g' \
|
||||
-re 's!@NINJA_SOURCE@!$(NINJA_SOURCE)!g' \
|
||||
-re 's!@NINJA_SHA256@!$(NINJA_SHA256)!g' \
|
||||
-re 's!@J@!$(shell nproc)!g' \
|
||||
$< >$@
|
||||
|
||||
%-i686.Dockerfile.in: %.Dockerfile.in
|
||||
sed -re 's!@ARCH@!i686!g' \
|
||||
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
|
||||
$< >$@
|
||||
|
||||
%-x86_64.Dockerfile.in: %.Dockerfile.in
|
||||
sed -re 's!@ARCH@!x86_64!g' \
|
||||
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
|
||||
$< >$@
|
||||
|
||||
%-linux-gnu.Dockerfile.in: %.Dockerfile.in
|
||||
sed -re 's!@TARGET@!linux-gnu!g' \
|
||||
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
|
||||
-re 's!@TARGET_FLAGS@!$(TARGET_FLAGS)!g' \
|
||||
$< >$@
|
||||
|
||||
%-w64-mingw32.Dockerfile.in: %.Dockerfile.in
|
||||
sed -re 's!@TARGET@!w64-mingw32!g' \
|
||||
-re 's!@ARCH_FLAGS@!$(ARCH_FLAGS)!g' \
|
||||
-re 's!@TARGET_FLAGS@!$(TARGET_FLAGS)!g' \
|
||||
$< >$@
|
||||
|
||||
define create-build-base-rules
|
||||
.PHONY: build-base-$(1)
|
||||
all build-base: build-base-$(1)
|
||||
build-base-$(1): BASE_IMAGE = $(BASE_IMAGE_$(1))
|
||||
build-base-$(1): build-base-$(1).Dockerfile
|
||||
rm -rf build; mkdir -p build
|
||||
$(DOCKER) build -f $$< \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/build-base-$(1):latest \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/build-base-$(1) \
|
||||
-t $(PROTONSDK_URLBASE)/build-base-$(1):latest \
|
||||
build
|
||||
context
|
||||
pull::
|
||||
-$(DOCKER) pull $(PROTONSDK_URLBASE)/build-base-$(1):latest
|
||||
push::
|
||||
@ -100,12 +109,11 @@ define create-binutils-rules
|
||||
.PHONY: binutils-$(1)-$(2)
|
||||
all binutils: binutils-$(1)-$(2)
|
||||
binutils-$(1)-$(2): binutils-$(1)-$(2).Dockerfile | build-base
|
||||
rm -rf build; mkdir -p build
|
||||
$(DOCKER) build -f $$< \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION) \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/binutils-$(1)-$(2) \
|
||||
-t $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION) \
|
||||
-t $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):latest \
|
||||
build
|
||||
context
|
||||
pull::
|
||||
-$(DOCKER) pull $(PROTONSDK_URLBASE)/binutils-$(1)-$(2):$(BINUTILS_VERSION)
|
||||
push::
|
||||
@ -118,16 +126,21 @@ $(eval $(call create-binutils-rules,i686,linux-gnu))
|
||||
$(eval $(call create-binutils-rules,x86_64,w64-mingw32))
|
||||
$(eval $(call create-binutils-rules,x86_64,linux-gnu))
|
||||
|
||||
MINGW_ARCH_FLAGS_crt-x86_64 = --disable-lib32 CFLAGS="-mcmodel=small"
|
||||
MINGW_ARCH_FLAGS_crt-i686 = --disable-lib64
|
||||
MINGW_ARCH_FLAGS_pthread-x86_64 = CFLAGS="-mcmodel=small"
|
||||
MINGW_ARCH_FLAGS_pthread-i686 =
|
||||
|
||||
define create-mingw-rules
|
||||
.PHONY: mingw-$(2)-$(1)
|
||||
all mingw: mingw-$(2)-$(1)
|
||||
mingw-$(2)-$(1): ARCH_FLAGS = $(MINGW_ARCH_FLAGS_$(2)-$(1))
|
||||
mingw-$(2)-$(1): mingw-$(2)-$(1).Dockerfile | binutils
|
||||
rm -rf build; mkdir -p build
|
||||
$(DOCKER) build -f $$< \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION) \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/mingw-$(2)-$(1) \
|
||||
-t $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION) \
|
||||
-t $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):latest \
|
||||
build
|
||||
context
|
||||
pull::
|
||||
-$(DOCKER) pull $(PROTONSDK_URLBASE)/mingw-$(2)-$(1):$(MINGW_VERSION)
|
||||
push::
|
||||
@ -146,20 +159,23 @@ $(eval $(call create-mingw-rules,x86_64,crt))
|
||||
$(eval $(call create-mingw-rules,x86_64,pthreads))
|
||||
$(eval $(call create-mingw-rules,x86_64,widl))
|
||||
|
||||
GCC_ARCH_FLAGS_x86_64 = CFLAGS_FOR_TARGET="-mcmodel=small" CXXFLAGS_FOR_TARGET="-mcmodel=small"
|
||||
GCC_ARCH_FLAGS_i686 =
|
||||
|
||||
GCC_TARGET_FLAGS_w64-mingw32 = --disable-shared
|
||||
GCC_TARGET_FLAGS_linux-gnu =
|
||||
|
||||
define create-gcc-rules
|
||||
.PHONY: gcc-$(1)-$(2)
|
||||
all gcc: gcc-$(1)-$(2)
|
||||
gcc-$(1)-$(2): ARCH_FLAGS = $(GCC_ARCH_FLAGS_$(1))
|
||||
gcc-$(1)-$(2): TARGET_FLAGS = $(GCC_TARGET_FLAGS_$(2))
|
||||
gcc-$(1)-$(2): gcc-$(1)-$(2).Dockerfile | mingw
|
||||
rm -rf build; mkdir -p build
|
||||
$(DOCKER) build -f $$< \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION) \
|
||||
--cache-from=$(PROTONSDK_URLBASE)/gcc-$(1)-$(2) \
|
||||
-t $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION) \
|
||||
-t $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):latest \
|
||||
build
|
||||
context
|
||||
pull::
|
||||
-$(DOCKER) pull $(PROTONSDK_URLBASE)/gcc-$(1)-$(2):$(GCC_VERSION)
|
||||
push::
|
||||
@ -175,14 +191,13 @@ $(eval $(call create-gcc-rules,x86_64,w64-mingw32))
|
||||
define create-proton-rules
|
||||
.PHONY: proton
|
||||
all: proton
|
||||
proton: BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/soldier/sdk:$(STEAMRT_VERSION)
|
||||
proton: BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/sniper/sdk:$(STEAMRT_VERSION)
|
||||
proton: proton.Dockerfile | gcc
|
||||
rm -rf build; mkdir -p build
|
||||
$(DOCKER) build -f $$< \
|
||||
--cache-from=$(PROTONSDK_URLBASE):$(PROTONSDK_VERSION) \
|
||||
--cache-from=$(PROTONSDK_URLBASE) \
|
||||
-t $(PROTONSDK_URLBASE):$(PROTONSDK_VERSION) \
|
||||
-t $(PROTONSDK_URLBASE):latest \
|
||||
build
|
||||
context
|
||||
pull::
|
||||
-$(DOCKER) pull $(PROTONSDK_URLBASE):$(PROTONSDK_VERSION)
|
||||
push::
|
||||
@ -198,13 +213,16 @@ sources::
|
||||
rm -f $(GCC_SOURCE)
|
||||
rm -f $(RUST_SOURCE_x86_64)
|
||||
rm -f $(RUST_SOURCE_i686)
|
||||
rm -f $(NINJA_SOURCE)
|
||||
wget $(BINUTILS_URLBASE)/$(BINUTILS_SOURCE)
|
||||
wget $(MINGW_URLBASE)/$(MINGW_SOURCE)
|
||||
wget $(GCC_URLBASE)/$(GCC_SOURCE)
|
||||
wget $(RUST_URLBASE)/$(RUST_SOURCE_x86_64)
|
||||
wget $(RUST_URLBASE)/$(RUST_SOURCE_i686)
|
||||
wget $(NINJA_URLBASE)/$(NINJA_SOURCE)
|
||||
echo $(BINUTILS_SHA256) $(BINUTILS_SOURCE) | sha256sum -c -
|
||||
echo $(MINGW_SHA256) $(MINGW_SOURCE) | sha256sum -c -
|
||||
echo $(GCC_SHA256) $(GCC_SOURCE) | sha256sum -c -
|
||||
echo $(RUST_SHA256_x86_64) $(RUST_SOURCE_x86_64) | sha256sum -c -
|
||||
echo $(RUST_SHA256_i686) $(RUST_SOURCE_i686) | sha256sum -c -
|
||||
echo $(NINJA_SHA256) $(NINJA_SOURCE) | sha256sum -c -
|
||||
|
@ -1,9 +1,9 @@
|
||||
Proton (soldier) SDK
|
||||
Proton (sniper) SDK
|
||||
====================
|
||||
|
||||
These are the build rules that are used to create docker images to build
|
||||
Proton. The automated creation of the official images lives in
|
||||
<https://gitlab.steamos.cloud/proton/soldier/sdk>, but this can be
|
||||
<https://gitlab.steamos.cloud/proton/sniper/sdk>, but this can be
|
||||
used to create local images too.
|
||||
|
||||
Local usage
|
||||
@ -31,11 +31,11 @@ To update the official Proton SDK images:
|
||||
commit and push the changes.
|
||||
|
||||
2) Update `.gitlab-ci.yml` in the
|
||||
[Proton SDK](https://gitlab.steamos.cloud/proton/soldier/sdk)
|
||||
[Proton SDK](https://gitlab.steamos.cloud/proton/sniper/sdk)
|
||||
repository to point to the new commit, commit and push to trigger a
|
||||
new build of "-dev" images.
|
||||
|
||||
3) Once the images are satifying, tag the version in Proton SDK
|
||||
3) Once the images are satisfying, tag the version in Proton SDK
|
||||
repository and push the tag, this will trigger a new build of the
|
||||
images and version them with the same tag as the Git tag.
|
||||
|
||||
@ -72,7 +72,7 @@ replacements done using `sed`.
|
||||
The <https://gitlab.steamos.cloud> CI uses Kaniko instead of Docker,
|
||||
with a bit of script conversion to generate commands usable there. More
|
||||
details are available in
|
||||
[Proton SDK](https://gitlab.steamos.cloud/proton/soldier/sdk).
|
||||
[Proton SDK](https://gitlab.steamos.cloud/proton/sniper/sdk).
|
||||
|
||||
The `build-base` images are there to create a common ground to build the
|
||||
other elements of the toolchain. They are based on fairly recent (more
|
||||
|
2156
docker/context/ninja-jobserver-client.patch
Normal file
2156
docker/context/ninja-jobserver-client.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -40,6 +40,7 @@ RUN wget -q @GCC_URLBASE@/@GCC_SOURCE@ \
|
||||
--with-system-mpfr \
|
||||
--with-system-zlib \
|
||||
--with-tune=core-avx2 \
|
||||
@ARCH_FLAGS@ \
|
||||
MAKEINFO=true \
|
||||
&& make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" \
|
||||
&& make --quiet -j@J@ MAKEINFO=true CFLAGS="-static --static" LDFLAGS="-s -static --static" install-strip DESTDIR=/opt \
|
||||
|
@ -13,7 +13,8 @@ RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
|
||||
--prefix=/usr/@ARCH@-w64-mingw32/ \
|
||||
--host=@ARCH@-w64-mingw32 \
|
||||
--enable-wildcard \
|
||||
MAKEINFO=true || cat config.log \
|
||||
@ARCH_FLAGS@ \
|
||||
MAKEINFO=true \
|
||||
&& make --quiet -j@J@ MAKEINFO=true \
|
||||
&& make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \
|
||||
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
|
||||
|
@ -15,6 +15,7 @@ RUN wget -q @MINGW_URLBASE@/@MINGW_SOURCE@ \
|
||||
--prefix=/usr/@ARCH@-w64-mingw32/ \
|
||||
--host=@ARCH@-w64-mingw32 \
|
||||
--disable-shared \
|
||||
@ARCH_FLAGS@ \
|
||||
MAKEINFO=true \
|
||||
&& make --quiet -j@J@ MAKEINFO=true \
|
||||
&& make --quiet -j@J@ MAKEINFO=true install-strip DESTDIR=/opt \
|
||||
|
@ -52,9 +52,40 @@ RUN bash -c 'mkdir -p /usr/lib/ccache && ls /usr/bin/{,*-}{cc,c++,gcc,g++}{,-[0-
|
||||
ENV PATH=/usr/lib/ccache:$PATH
|
||||
|
||||
RUN apt-get install -y \
|
||||
tini \
|
||||
autoconf-archive \
|
||||
fontforge \
|
||||
fonttools \
|
||||
libxpresent-dev \
|
||||
libxpresent-dev:i386 \
|
||||
libopenblas-dev \
|
||||
libopenblas-dev:i386 \
|
||||
python3-mako \
|
||||
python3-pefile \
|
||||
libcapstone-dev \
|
||||
libcapstone-dev:i386 \
|
||||
libutfcpp-dev \
|
||||
yasm \
|
||||
nasm \
|
||||
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY ninja-jobserver-client.patch /tmp
|
||||
|
||||
RUN wget -q @NINJA_URLBASE@/@NINJA_SOURCE@ \
|
||||
&& echo '@NINJA_SHA256@ @NINJA_SOURCE@' \
|
||||
&& echo '@NINJA_SHA256@ @NINJA_SOURCE@' | sha256sum -c - \
|
||||
&& tar xf @NINJA_SOURCE@ -C /tmp && rm @NINJA_SOURCE@ \
|
||||
&& cd /tmp/ninja-@NINJA_VERSION@ \
|
||||
&& patch -p1 < /tmp/ninja-jobserver-client.patch \
|
||||
&& mkdir build \
|
||||
&& cd build \
|
||||
&& cmake .. \
|
||||
&& make \
|
||||
&& cp ninja $(which ninja) \
|
||||
&& cd / \
|
||||
&& rm -rf /tmp/ninja-@NINJA_VERSION@ \
|
||||
&& rm -rf /tmp/ninja-jobserver-client.patch
|
||||
|
||||
ENTRYPOINT ["/usr/bin/tini-static", "-s", "-g", "--"]
|
||||
|
||||
CMD ["/bin/bash"]
|
||||
|
@ -14,54 +14,69 @@ hid is a layer above rawinput, where Windows will talk HID to the controller on
|
||||
the game's behalf. This turns the raw HID protocol data into usable things like
|
||||
buttons and joysticks.
|
||||
|
||||
dinput is a "legacy" API that allows applictions to talk to any type of
|
||||
joystick. On Windows, it is likely implemented on top of HID. Notably, dinput
|
||||
allows easy access to controllers that no other API does, so it is still used
|
||||
by modern games despite being "legacy."
|
||||
dinput is a "legacy" API that allows applications to talk to any type of
|
||||
joystick. On Windows, it is implemented on top of HID. Notably, dinput allows
|
||||
easy access to controllers that no other API does, so it is still used by
|
||||
modern games despite being "legacy."
|
||||
|
||||
xinput is the new API that supports only Xbox controllers. On Windows, it is
|
||||
likely implemented on top of rawinput, as Xbox controllers do not behave like
|
||||
standard HID devices.
|
||||
|
||||
winmm is the very legacy API, for when joysticks were hooked up through the
|
||||
soundcard. On modern Windows, it is likely implemented on top of hid.
|
||||
soundcard. On modern Windows, it is implemented on top of dinput.
|
||||
|
||||
|
||||
Here is a diagram for how these APIs are mapped down to the system by Proton:
|
||||
|
||||
|
||||
--------
|
||||
|game.exe|
|
||||
--------
|
||||
/ | | | | application
|
||||
********|**|*|*|**|***********************
|
||||
------ / | | | | wine
|
||||
|xinput| | | | |
|
||||
------ / | | |
|
||||
| / | | |
|
||||
--- / / | \
|
||||
|hid|--- / | \
|
||||
--- / | \
|
||||
| / | \
|
||||
-------- ------ -----
|
||||
|rawinput| |dinput| |winmm|
|
||||
-------- ------ -----
|
||||
| | |
|
||||
----------- | ----------------
|
||||
|winebus.sys| | |winejoystick.drv|
|
||||
----------- | ----------------
|
||||
| \ / | wine
|
||||
***|*********|***********|****************
|
||||
\ | | linux
|
||||
\ ---- |
|
||||
\ |SDL2| |
|
||||
\ ---- |
|
||||
\ | \ |
|
||||
\ | ---- |
|
||||
\ | \ |
|
||||
------ -----------
|
||||
|hidraw| |input event|
|
||||
------ -----------
|
||||
----------
|
||||
| game.exe |
|
||||
----------
|
||||
/ | | | \
|
||||
/ | | | \ application
|
||||
*********/****|*|**|****\******************
|
||||
| | | \ \ wine
|
||||
| | | | \
|
||||
------ | | ----- \
|
||||
|xinput| | | |winmm| |
|
||||
------ | | ----- |
|
||||
| | \ | |
|
||||
| | | | |
|
||||
\ | ------ |
|
||||
\ | |dinput| |
|
||||
\ | ------ /
|
||||
| | / /
|
||||
| | | /
|
||||
--- /
|
||||
|hid| /
|
||||
--- /
|
||||
| /
|
||||
| |
|
||||
--------
|
||||
|rawinput|
|
||||
--------
|
||||
|
|
||||
-----------
|
||||
|winebus.sys|
|
||||
-----------
|
||||
| | wine
|
||||
************|******|***********************
|
||||
| | linux
|
||||
| ----
|
||||
| |SDL2|
|
||||
| ----
|
||||
| | \
|
||||
| | \
|
||||
| | |
|
||||
------ -----------
|
||||
|hidraw| |input event|
|
||||
------ -----------
|
||||
| |
|
||||
\ /
|
||||
========
|
||||
|hardware|
|
||||
========
|
||||
|
||||
Some things to note:
|
||||
|
||||
@ -74,7 +89,7 @@ other) protocol can talk directly to those devices.
|
||||
Xbox controllers do not speak real HID. Instead Windows provides a HID
|
||||
compatibility layer so dinput, which is implemented on top of HID, will present
|
||||
the Xbox controller to legacy games. Of course some games (Unity) have noticed
|
||||
that, and talk directly to this internal HID interface, so we had to duplicate
|
||||
that, and talk directly to this internal HID interface, so we need to duplicate
|
||||
it bit-for-bit in winebus.sys.
|
||||
|
||||
Some games support talking directly to certain controller types. For example,
|
||||
@ -98,16 +113,3 @@ device for your controller, especially if it is a less well-known controller.
|
||||
In those cases, we access it through SDL2 via its linux js backend and try to
|
||||
treat it as an Xbox controller, even if it is not mapped with the Steam client
|
||||
mapping feature.
|
||||
|
||||
|
||||
Future improvements:
|
||||
|
||||
winmm's joystick APIs should be implemented on top of HID so it can use the
|
||||
Steam controller mapping feature via winebus/SDL2.
|
||||
|
||||
xinput should be implemented on top of rawinput, as the Xbox HID compatibility
|
||||
layer does not provide all of the features xinput requires. We currently use a
|
||||
hack to work around this.
|
||||
|
||||
dinput should be implemented on top of HID, so we can avoid the code
|
||||
duplication we have now with both winebus and dinput using SDL2 directly.
|
||||
|
26
docs/ICMP_ECHO.md
Normal file
26
docs/ICMP_ECHO.md
Normal file
@ -0,0 +1,26 @@
|
||||
# ICMP ECHO requests (ping)
|
||||
|
||||
Some games rely on ICMP ECHO requests to detect network connectivity,
|
||||
or to measure connection ping.
|
||||
|
||||
Proton supports sending ICMP ECHO requests using RAW sockets or DGRAM
|
||||
ICMP sockets, but the former requires elevated privileges, and the
|
||||
latter may also be disabled by default.
|
||||
|
||||
DGRAM ICMP sockets can be enabled for a given set of user groups by
|
||||
running the following command, and will stay enabled until next reboot:
|
||||
|
||||
```
|
||||
sudo sysctl -w net.ipv4.ping_group_range="<low> <high>"
|
||||
```
|
||||
|
||||
Where <low> (resp <high>) is lower bound (resp higher) of the user
|
||||
groups which will be allowed to create such sockets. It is possible to
|
||||
enable them for any group by using "0 4294967295".
|
||||
|
||||
In order for the configuration to be persistent, it is possible to add
|
||||
the following line to `/etc/sysctl.conf` (or a file in `/etc/sysctl.d`):
|
||||
|
||||
```
|
||||
net.ipv4.ping_group_range="<low> <high>"
|
||||
```
|
@ -6,7 +6,7 @@ priority levels. However, most default Linux configurations don't allow
|
||||
individual threads to raise their priority, so some system configuration is
|
||||
likely required.
|
||||
|
||||
It can be configured as a priviledged user by editing the
|
||||
It can be configured as a privileged user by editing the
|
||||
`/etc/security/limits.conf` file, or using the `/etc/security/limits.d/` conf
|
||||
directory, and adding the following line at the end:
|
||||
|
||||
|
2
dxvk
2
dxvk
@ -1 +1 @@
|
||||
Subproject commit b63ceedaef9333d82056e0fca71ef6a9165e3011
|
||||
Subproject commit 1b31aa5dbca0749d0737cff02043acb061332fb6
|
@ -1 +1 @@
|
||||
Subproject commit 8b3987f6707946b9202eda3dda38632197d2286b
|
||||
Subproject commit 0a7c48b256cafe6b3fa1db8183f089712c72e9ad
|
1
ffmpeg
Submodule
1
ffmpeg
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit a77521cd5d27e955b16e8097eecefc779ffdcb6d
|
@ -1 +1 @@
|
||||
Subproject commit 9510ebd130bcb4dfc76b053b438d8a97a3ed4600
|
||||
Subproject commit 4b0192046158094654e865245832c66d2104219e
|
@ -1,3 +1,5 @@
|
||||
Copyright 2018 The Noto Project Authors (github.com/googlei18n/noto-fonts)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License,
|
||||
Version 1.1.
|
||||
|
BIN
fonts/noto/NotoSans-Regular.ttf
Normal file
BIN
fonts/noto/NotoSans-Regular.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
fonts/noto/NotoSansArmenian-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansArmenian-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansBengali-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansBengali-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansBengaliUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansBengaliUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansChakma-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansChakma-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansCoptic-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansCoptic-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansDevanagariUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansDevanagariUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansGeorgian-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansGeorgian-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansGujarati-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansGujarati-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansGujaratiUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansGujaratiUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansGurmukhiUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansGurmukhiUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansHebrew-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansHebrew-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansKannadaUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansKannadaUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansKhmer-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansKhmer-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansMalayalamUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansMalayalamUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansMath-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansMath-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansMeeteiMayek-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansMeeteiMayek-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansMono-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansMono-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansOlChiki-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansOlChiki-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansOriyaUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansOriyaUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansSinhalaUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansSinhalaUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansSoraSompeng-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansSoraSompeng-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansSymbols-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansSymbols-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansSymbols2-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansSymbols2-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansTamil-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansTamil-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansTamilUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansTamilUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansTeluguUI-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansTeluguUI-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansThaana-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansThaana-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSansThai-Regular.ttf
Normal file
BIN
fonts/noto/NotoSansThai-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/noto/NotoSerifTibetan-Regular.ttf
Normal file
BIN
fonts/noto/NotoSerifTibetan-Regular.ttf
Normal file
Binary file not shown.
@ -1,11 +0,0 @@
|
||||
This package is part of the noto project. Visit
|
||||
google.com/get/noto for more information.
|
||||
|
||||
Built on 2017-10-24 from the following noto repository:
|
||||
-----
|
||||
Repo: noto-fonts
|
||||
Tag: v2017-10-24-phase3-second-cleanup
|
||||
Date: 2017-10-24 12:10:34 GMT
|
||||
Commit: 8ef14e6c606a7a0ef3943b9ca01fd49445620d79
|
||||
|
||||
Remove some files that aren't for release.
|
@ -1,8 +1,6 @@
|
||||
diff --git a/LiberationMono-Regular.sfd b/LiberationMono-Regular.sfd
|
||||
index 0cedbd4..13b9a63 100644
|
||||
--- a/LiberationMono-Regular.sfd
|
||||
+++ b/LiberationMono-Regular.sfd
|
||||
@@ -3931,6 +3931,10 @@ ShortTable: maxp 16
|
||||
@@ -3935,6 +3935,10 @@
|
||||
3
|
||||
1
|
||||
EndShort
|
||||
@ -10,6 +8,6 @@ index 0cedbd4..13b9a63 100644
|
||||
+!!!!"!!**$!<E0/!"B2J!!iQ/s8E!)!"&](!"&]4s8;p*!"8i*!"8i9s8;p,!"Ao*!"Ju<s82j-
|
||||
+!"Ju+!"],?s82j/!"],,!"o8Bs8)d0!"f2-!#,DFs8)cr
|
||||
+EndTtf
|
||||
LangName: 1033 "" "" "Regular" "Ascender - Liberation Mono" "" "Version 2.00.3" "" "Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and Trademark Office and certain other jurisdictions." "Ascender Corporation" "Steve Matteson" "Based on Cousine, which was designed by Steve Matteson as an innovative, refreshing sans serif design that is metrically compatible with Courier New+ISIA. Cousine offers improved on-screen readability characteristics and the pan-European WGL character set and solves the needs of developers looking for width-compatible fonts to address document portability across platforms." "http://www.ascendercorp.com/" "http://www.ascendercorp.com/typedesigners.html" "Licensed under the SIL Open Font License, Version 1.1" "http://scripts.sil.org/OFL"
|
||||
LangName: 1033 "" "" "Regular" "Ascender - Liberation Mono" "" "Version 2.1.5" "" "Liberation is a trademark of Red Hat, Inc. registered in U.S. Patent and Trademark Office and certain other jurisdictions." "Ascender Corporation" "Steve Matteson" "Based on Cousine, which was designed by Steve Matteson as an innovative, refreshing sans serif design that is metrically compatible with Courier New+ISIA. Cousine offers improved on-screen readability characteristics and the pan-European WGL character set and solves the needs of developers looking for width-compatible fonts to address document portability across platforms." "http://www.ascendercorp.com/" "http://www.ascendercorp.com/typedesigners.html" "Licensed under the SIL Open Font License, Version 1.1" "http://scripts.sil.org/OFL"
|
||||
GaspTable: 3 8 2 17 1 65535 3 0
|
||||
Encoding: UnicodeBmp
|
||||
|
@ -1,5 +0,0 @@
|
||||
[SourceHanSans-Regular]
|
||||
f=3,1,0x411,\FF2D\FF33 \30B4\30B7\30C3\30AF
|
||||
s=3,1,0x411,\6A19\6E96
|
||||
f=MS Gothic
|
||||
s=Regular
|
@ -1,5 +0,0 @@
|
||||
[SourceHanSans-Regular]
|
||||
f=3,1,0x411,\FF2D\FF33 \FF30\30B4\30B7\30C3\30AF
|
||||
s=3,1,0x411,\6A19\6E96
|
||||
f=MS PGothic
|
||||
s=Regular
|
@ -1,5 +0,0 @@
|
||||
[SourceHanSans-Regular]
|
||||
f=3,1,0x411,MS UI Gothic
|
||||
s=3,1,0x411,\6A19\6E96
|
||||
f=MS UI Gothic
|
||||
s=Regular
|
86
fonts/patches/UmeGothic-nametable.patch
Normal file
86
fonts/patches/UmeGothic-nametable.patch
Normal file
@ -0,0 +1,86 @@
|
||||
--- a/UmeGothic-nametable.ttx 2021-11-14 02:41:52.823198735 +0900
|
||||
+++ b/UmeGothic-nametable.ttx 2021-11-14 02:44:50.269352384 +0900
|
||||
@@ -5,8 +5,12 @@
|
||||
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
- Ume Gothic
|
||||
+ MS Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Regular
|
||||
@@ -14,8 +18,12 @@
|
||||
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Ume Gothic
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
- Ume Gothic
|
||||
+ MS Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Look update time of this file.
|
||||
@@ -29,8 +37,12 @@
|
||||
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
|
||||
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||
- Ume Gothic
|
||||
+ MS Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
|
||||
Regular
|
||||
@@ -38,8 +50,12 @@
|
||||
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
|
||||
Ume Gothic
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
|
||||
- Ume Gothic
|
||||
+ MS Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
|
||||
Look update time of this file.
|
||||
@@ -53,8 +69,12 @@
|
||||
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x411">
|
||||
作者: 蓬莱和多流. ライセンス: このフォントはフリー(自由な)ソフトウエアです。あらゆる改変の有無に関わらず、また商業的な利用であっても、自由に利用、複製、再配布することができますが、全て無保証とさせていただきます。
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x411">
|
||||
- 梅ゴシック
|
||||
+ MS ゴシック
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x411">
|
||||
Regular
|
||||
@@ -62,8 +82,12 @@
|
||||
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x411">
|
||||
梅ゴシック
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x411">
|
||||
- 梅ゴシック
|
||||
+ MS ゴシック
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x411">
|
||||
Look update time of this file.
|
86
fonts/patches/UmePGothic-nametable.patch
Normal file
86
fonts/patches/UmePGothic-nametable.patch
Normal file
@ -0,0 +1,86 @@
|
||||
--- a/UmePGothic-nametable.ttx 2021-11-14 02:41:46.983127001 +0900
|
||||
+++ b/UmePGothic-nametable.ttx 2021-11-14 02:44:42.413257975 +0900
|
||||
@@ -5,8 +5,12 @@
|
||||
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
- Ume P Gothic
|
||||
+ MS PGothic
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Regular
|
||||
@@ -14,8 +18,12 @@
|
||||
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Ume P Gothic
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
- Ume P Gothic
|
||||
+ MS PGothic
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Look update time of this file.
|
||||
@@ -29,8 +37,12 @@
|
||||
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
|
||||
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||
- Ume P Gothic
|
||||
+ MS PGothic
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
|
||||
Regular
|
||||
@@ -38,8 +50,12 @@
|
||||
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
|
||||
Ume P Gothic
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
|
||||
- Ume P Gothic
|
||||
+ MS PGothic
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
|
||||
Look update time of this file.
|
||||
@@ -53,8 +69,12 @@
|
||||
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x411">
|
||||
作者: 蓬莱和多流. ライセンス: このフォントはフリー(自由な)ソフトウエアです。あらゆる改変の有無に関わらず、また商業的な利用であっても、自由に利用、複製、再配布することができますが、全て無保証とさせていただきます。
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x411">
|
||||
- 梅Pゴシック
|
||||
+ MS Pゴシック
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x411">
|
||||
Regular
|
||||
@@ -62,8 +82,12 @@
|
||||
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x411">
|
||||
梅Pゴシック
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x411">
|
||||
- 梅Pゴシック
|
||||
+ MS Pゴシック
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x411">
|
||||
Look update time of this file.
|
86
fonts/patches/UmeUIGothic-nametable.patch
Normal file
86
fonts/patches/UmeUIGothic-nametable.patch
Normal file
@ -0,0 +1,86 @@
|
||||
--- a/UmeUIGothic-nametable.ttx 2021-11-14 02:41:57.955261726 +0900
|
||||
+++ b/UmeUIGothic-nametable.ttx 2021-11-14 02:44:57.653441054 +0900
|
||||
@@ -5,8 +5,12 @@
|
||||
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
- Ume UI Gothic
|
||||
+ MS UI Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Regular
|
||||
@@ -14,8 +18,12 @@
|
||||
<namerecord nameID="3" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Ume UI Gothic
|
||||
</namerecord>
|
||||
++ <!--
|
||||
++ NameID=4 (Full)
|
||||
++ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
++ -->
|
||||
<namerecord nameID="4" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
- Ume UI Gothic
|
||||
+ MS UI Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="1" platEncID="0" langID="0x411" unicode="True">
|
||||
Look update time of this file.
|
||||
@@ -29,8 +37,12 @@
|
||||
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
|
||||
Author: HORAI Wataru. License: This font is a free software. Unlimited permission is granted to use, copy, and distribute it, with or without modification, either commercially and noncommercially. THIS FONT IS PROVIDED "AS IS" WITHOUT WARRANTY.
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
|
||||
- Ume UI Gothic
|
||||
+ MS UI Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
|
||||
Regular
|
||||
@@ -38,8 +50,12 @@
|
||||
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
|
||||
Ume UI Gothic
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
|
||||
- Ume UI Gothic
|
||||
+ MS UI Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
|
||||
Look update time of this file.
|
||||
@@ -53,8 +69,12 @@
|
||||
<namerecord nameID="0" platformID="3" platEncID="1" langID="0x411">
|
||||
作者: 蓬莱和多流. ライセンス: このフォントはフリー(自由な)ソフトウエアです。あらゆる改変の有無に関わらず、また商業的な利用であっても、自由に利用、複製、再配布することができますが、全て無保証とさせていただきます。
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=1 (Family)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x411">
|
||||
- 梅UIゴシック
|
||||
+ MS UI Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="2" platformID="3" platEncID="1" langID="0x411">
|
||||
Regular
|
||||
@@ -62,8 +82,12 @@
|
||||
<namerecord nameID="3" platformID="3" platEncID="1" langID="0x411">
|
||||
梅UIゴシック
|
||||
</namerecord>
|
||||
+ <!--
|
||||
+ NameID=4 (Full)
|
||||
+ https://adobe-type-tools.github.io/font-tech-notes/pdfs/5149.OTFname_Tutorial.pdf
|
||||
+ -->
|
||||
<namerecord nameID="4" platformID="3" platEncID="1" langID="0x411">
|
||||
- 梅UIゴシック
|
||||
+ MS UI Gothic
|
||||
</namerecord>
|
||||
<namerecord nameID="5" platformID="3" platEncID="1" langID="0x411">
|
||||
Look update time of this file.
|
140
fonts/ranges/arial
Normal file
140
fonts/ranges/arial
Normal file
@ -0,0 +1,140 @@
|
||||
0020-007E
|
||||
00A0-0377
|
||||
037A-037F
|
||||
0384-038A
|
||||
038C
|
||||
038E-03A1
|
||||
03A3-052F
|
||||
0531-0556
|
||||
0559-055F
|
||||
0561-0587
|
||||
0589-058A
|
||||
058D-058F
|
||||
0591-05C7
|
||||
05D0-05EA
|
||||
05F0-05F4
|
||||
0600-061C
|
||||
061E-06FF
|
||||
0750-077F
|
||||
08A0-08B4
|
||||
08B6-08BD
|
||||
08D4-08FF
|
||||
1D00-1DCA
|
||||
1DFE-1F15
|
||||
1F18-1F1D
|
||||
1F20-1F45
|
||||
1F48-1F4D
|
||||
1F50-1F57
|
||||
1F59
|
||||
1F5B
|
||||
1F5D
|
||||
1F5F-1F7D
|
||||
1F80-1FB4
|
||||
1FB6-1FC4
|
||||
1FC6-1FD3
|
||||
1FD6-1FDB
|
||||
1FDD-1FEF
|
||||
1FF2-1FF4
|
||||
1FF6-1FFE
|
||||
2000-200F
|
||||
2012-2022
|
||||
2026
|
||||
202A-2030
|
||||
2032-2034
|
||||
2039-203A
|
||||
203C-203E
|
||||
2044
|
||||
205E
|
||||
206A-2070
|
||||
2074-2079
|
||||
207F
|
||||
2090-2094
|
||||
20A0-20BF
|
||||
20F0
|
||||
2105
|
||||
2113
|
||||
2116-2117
|
||||
2122
|
||||
2126
|
||||
212E
|
||||
214D-214E
|
||||
2153-2154
|
||||
215B-215E
|
||||
2184
|
||||
2190-2195
|
||||
21A8
|
||||
2202
|
||||
2206
|
||||
220F
|
||||
2211-2212
|
||||
2215
|
||||
2219-221A
|
||||
221E-221F
|
||||
2229
|
||||
222B
|
||||
2248
|
||||
2260-2261
|
||||
2264-2265
|
||||
2302
|
||||
2310
|
||||
2320-2321
|
||||
2500
|
||||
2502
|
||||
250C
|
||||
2510
|
||||
2514
|
||||
2518
|
||||
251C
|
||||
2524
|
||||
252C
|
||||
2534
|
||||
253C
|
||||
2550-256C
|
||||
2580
|
||||
2584
|
||||
2588
|
||||
258C
|
||||
2590-2593
|
||||
25A0-25A1
|
||||
25AA-25AC
|
||||
25B2
|
||||
25BA
|
||||
25BC
|
||||
25C4
|
||||
25CA-25CC
|
||||
25CF
|
||||
25D8-25D9
|
||||
25E6
|
||||
263A-263C
|
||||
2640
|
||||
2642
|
||||
2660
|
||||
2663
|
||||
2665-2666
|
||||
266A-266B
|
||||
266F
|
||||
2C60-2C7F
|
||||
2E17
|
||||
A717-A7AE
|
||||
A7B0-A7B7
|
||||
A7F7-A7FF
|
||||
AB30-AB65
|
||||
FB00-FB06
|
||||
FB13-FB17
|
||||
FB1D-FB36
|
||||
FB38-FB3C
|
||||
FB3E
|
||||
FB40-FB41
|
||||
FB43-FB44
|
||||
FB46-FBC1
|
||||
FBD3-FBFF
|
||||
FC5E-FC63
|
||||
FCF2-FCF4
|
||||
FD3C-FD3F
|
||||
FDF2
|
||||
FDF4
|
||||
FDFA-FDFD
|
||||
FE20-FE23
|
||||
FE70-FE74
|
||||
FE76-FEFC
|
||||
FFFC
|
123
fonts/ranges/micross
Normal file
123
fonts/ranges/micross
Normal file
@ -0,0 +1,123 @@
|
||||
0020-007E
|
||||
00A0-0377
|
||||
037A-037F
|
||||
0384-038A
|
||||
038C
|
||||
038E-03A1
|
||||
03A3-052F
|
||||
0531-0556
|
||||
0559-055F
|
||||
0561-0587
|
||||
0589-058A
|
||||
058D-058F
|
||||
0591-05C7
|
||||
05D0-05EA
|
||||
05F0-05F4
|
||||
0600-061C
|
||||
061E-06FF
|
||||
0750-077F
|
||||
0783
|
||||
08A0-08B4
|
||||
08B6-08BD
|
||||
08D4-08FF
|
||||
09F2-09F3
|
||||
0AF1
|
||||
0BF9
|
||||
0E01-0E3A
|
||||
0E3F-0E5B
|
||||
10A0-10C5
|
||||
10C7
|
||||
10CD
|
||||
10D0-10FF
|
||||
17DB
|
||||
1D00-1DCA
|
||||
1DFE-1F15
|
||||
1F18-1F1D
|
||||
1F20-1F45
|
||||
1F48-1F4D
|
||||
1F50-1F57
|
||||
1F59
|
||||
1F5B
|
||||
1F5D
|
||||
1F5F-1F7D
|
||||
1F80-1FB4
|
||||
1FB6-1FC4
|
||||
1FC6-1FD3
|
||||
1FD6-1FDB
|
||||
1FDD-1FEF
|
||||
1FF2-1FF4
|
||||
1FF6-1FFE
|
||||
2000-2064
|
||||
2066-2071
|
||||
2074-208E
|
||||
2090-209C
|
||||
20A0-20BF
|
||||
20E3
|
||||
20F0
|
||||
2105
|
||||
2113
|
||||
2116-2117
|
||||
2122
|
||||
2126
|
||||
212E
|
||||
2133
|
||||
214D-214E
|
||||
2150-218B
|
||||
2190-2195
|
||||
21A8
|
||||
2202
|
||||
2206
|
||||
220F
|
||||
2211-2212
|
||||
2215
|
||||
2219-221A
|
||||
221E-221F
|
||||
2229
|
||||
222B
|
||||
2248
|
||||
2260-2261
|
||||
2264-2265
|
||||
2302
|
||||
2310
|
||||
2320-2321
|
||||
2500
|
||||
2502
|
||||
250C
|
||||
25A1
|
||||
25AA-25AB
|
||||
25CA
|
||||
25CC
|
||||
25CF
|
||||
25E6
|
||||
266F
|
||||
2C60-2C7F
|
||||
2D00-2D25
|
||||
2D27
|
||||
2D2D
|
||||
2DE0-2DFF
|
||||
2E17
|
||||
A640-A69F
|
||||
A717-A7AD
|
||||
A7B0-A7B7
|
||||
A7F7-A7FF
|
||||
AB30-AB65
|
||||
FB00-FB06
|
||||
FB13-FB17
|
||||
FB1D-FB36
|
||||
FB38-FB3C
|
||||
FB3E
|
||||
FB40-FB41
|
||||
FB43-FB44
|
||||
FB46-FBC1
|
||||
FBD3-FBFF
|
||||
FC5E-FC63
|
||||
FCF2-FCF4
|
||||
FD3C-FD3F
|
||||
FDF2
|
||||
FDF4
|
||||
FDFA-FDFD
|
||||
FE20-FE23
|
||||
FE70-FE74
|
||||
FE76-FEFC
|
||||
FEFF
|
||||
FFFC-FFFD
|
166
fonts/ranges/nirmala
Normal file
166
fonts/ranges/nirmala
Normal file
@ -0,0 +1,166 @@
|
||||
000D
|
||||
0020-007E
|
||||
00A0-00FF
|
||||
0131
|
||||
0152-0153
|
||||
0160-0161
|
||||
0178
|
||||
017D-017E
|
||||
0192
|
||||
02BC
|
||||
02C6-02C7
|
||||
02D8
|
||||
02DA
|
||||
02DC
|
||||
03BC
|
||||
0900-0983
|
||||
0985-098C
|
||||
098F-0990
|
||||
0993-09A8
|
||||
09AA-09B0
|
||||
09B2
|
||||
09B6-09B9
|
||||
09BC-09C4
|
||||
09C7-09C8
|
||||
09CB-09CE
|
||||
09D7
|
||||
09DC-09DD
|
||||
09DF-09E3
|
||||
09E6-09FE
|
||||
0A01-0A03
|
||||
0A05-0A0A
|
||||
0A0F-0A10
|
||||
0A13-0A28
|
||||
0A2A-0A30
|
||||
0A32-0A33
|
||||
0A35-0A36
|
||||
0A38-0A39
|
||||
0A3C
|
||||
0A3E-0A42
|
||||
0A47-0A48
|
||||
0A4B-0A4D
|
||||
0A51
|
||||
0A59-0A5C
|
||||
0A5E
|
||||
0A66-0A76
|
||||
0A81-0A83
|
||||
0A85-0A8D
|
||||
0A8F-0A91
|
||||
0A93-0AA8
|
||||
0AAA-0AB0
|
||||
0AB2-0AB3
|
||||
0AB5-0AB9
|
||||
0ABC-0AC5
|
||||
0AC7-0AC9
|
||||
0ACB-0ACD
|
||||
0AD0
|
||||
0AE0-0AE3
|
||||
0AE6-0AF1
|
||||
0AF9-0AFF
|
||||
0B01-0B03
|
||||
0B05-0B0C
|
||||
0B0F-0B10
|
||||
0B13-0B28
|
||||
0B2A-0B30
|
||||
0B32-0B33
|
||||
0B35-0B39
|
||||
0B3C-0B44
|
||||
0B47-0B48
|
||||
0B4B-0B4D
|
||||
0B56-0B57
|
||||
0B5C-0B5D
|
||||
0B5F-0B63
|
||||
0B66-0B77
|
||||
0B82-0B83
|
||||
0B85-0B8A
|
||||
0B8E-0B90
|
||||
0B92-0B95
|
||||
0B99-0B9A
|
||||
0B9C
|
||||
0B9E-0B9F
|
||||
0BA3-0BA4
|
||||
0BA8-0BAA
|
||||
0BAE-0BB9
|
||||
0BBE-0BC2
|
||||
0BC6-0BC8
|
||||
0BCA-0BCD
|
||||
0BD0
|
||||
0BD7
|
||||
0BE6-0BFA
|
||||
0C00-0C0C
|
||||
0C0E-0C10
|
||||
0C12-0C28
|
||||
0C2A-0C39
|
||||
0C3D-0C44
|
||||
0C46-0C48
|
||||
0C4A-0C4D
|
||||
0C55-0C56
|
||||
0C58-0C5A
|
||||
0C60-0C63
|
||||
0C66-0C6F
|
||||
0C78-0C8C
|
||||
0C8E-0C90
|
||||
0C92-0CA8
|
||||
0CAA-0CB3
|
||||
0CB5-0CB9
|
||||
0CBC-0CC4
|
||||
0CC6-0CC8
|
||||
0CCA-0CCD
|
||||
0CD5-0CD6
|
||||
0CDE
|
||||
0CE0-0CE3
|
||||
0CE6-0CEF
|
||||
0CF1-0CF2
|
||||
0D00-0D03
|
||||
0D05-0D0C
|
||||
0D0E-0D10
|
||||
0D12-0D44
|
||||
0D46-0D48
|
||||
0D4A-0D4F
|
||||
0D54-0D63
|
||||
0D66-0D7F
|
||||
0D82-0D83
|
||||
0D85-0D96
|
||||
0D9A-0DB1
|
||||
0DB3-0DBB
|
||||
0DBD
|
||||
0DC0-0DC6
|
||||
0DCA
|
||||
0DCF-0DD4
|
||||
0DD6
|
||||
0DD8-0DDF
|
||||
0DE6-0DEF
|
||||
0DF2-0DF4
|
||||
0FD5-0FD8
|
||||
1C50-1C7F
|
||||
1CD0-1CF9
|
||||
200B-200D
|
||||
2010
|
||||
2013-2014
|
||||
2018-201A
|
||||
201C-201E
|
||||
2020-2022
|
||||
2026
|
||||
2030
|
||||
2039-203A
|
||||
2044
|
||||
20A8
|
||||
20AC
|
||||
20B9
|
||||
2122
|
||||
2212
|
||||
2215
|
||||
2219
|
||||
2236
|
||||
25CC
|
||||
25CF
|
||||
262C
|
||||
A830-A839
|
||||
A8E0-A8FF
|
||||
ABC0-ABED
|
||||
ABF0-ABF9
|
||||
110D0-110E8
|
||||
110F0-110F9
|
||||
11100-11134
|
||||
11136-11146
|
||||
111E1-111F4
|
@ -1,7 +1,7 @@
|
||||
if ($argc != 5)
|
||||
Error ("Expected arguments - FileName, PSName, FamilyName, FaceName")
|
||||
if ($argc != 6)
|
||||
Error ("Expected arguments - FileName, PSName, FamilyName, FaceName, OutFileName")
|
||||
endif
|
||||
|
||||
Open($1)
|
||||
SetFontNames($argv[2], $argv[3], $argv[4])
|
||||
Generate($1:r + ".ttf")
|
||||
Generate($5)
|
||||
|
290
fonts/scripts/merge.py
Executable file
290
fonts/scripts/merge.py
Executable file
@ -0,0 +1,290 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# This script was created by Giovanni Mascellani for CodeWeavers
|
||||
|
||||
# Based on merge_noto.py and merge_fonts.py from the nototools
|
||||
# (https://github.com/googlefonts/nototools), with the following
|
||||
# copyright notice:
|
||||
|
||||
# Copyright 2014-2017 Google Inc. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# The font name changing logic is taken from
|
||||
# https://github.com/chrissimpkins/fontname.py/blob/master/fontname.py,
|
||||
# with the following copyright notice:
|
||||
|
||||
# Copyright 2019 Christopher Simpkins
|
||||
# MIT License
|
||||
|
||||
# The font subsetting logic is taken from
|
||||
# https://github.com/fonttools/fonttools/blob/main/Lib/fontTools/subset/__init__.py
|
||||
# with the following copyright notice:
|
||||
|
||||
# Copyright 2013 Google, Inc. All Rights Reserved.
|
||||
# Google Author(s): Behdad Esfahbod
|
||||
|
||||
# The whole fonttools repository is distributed under the MIT license.
|
||||
|
||||
"""Merges a number of Noto fonts and then sets a given name to the
|
||||
result.
|
||||
|
||||
"""
|
||||
|
||||
import sys
|
||||
import tempfile
|
||||
import os
|
||||
|
||||
from fontTools import merge
|
||||
from fontTools import ttLib
|
||||
from fontTools import subset
|
||||
from fontTools.ttLib.tables import otTables
|
||||
|
||||
def read_line_metrics(font):
|
||||
metrics = {
|
||||
"ascent": font["hhea"].ascent,
|
||||
"descent": font["hhea"].descent,
|
||||
"usWinAscent": font["OS/2"].usWinAscent,
|
||||
"usWinDescent": font["OS/2"].usWinDescent,
|
||||
"sTypoAscender": font["OS/2"].sTypoAscender,
|
||||
"sTypoDescender": font["OS/2"].sTypoDescender,
|
||||
"sxHeight": font["OS/2"].sxHeight,
|
||||
"sCapHeight": font["OS/2"].sCapHeight,
|
||||
"sTypoLineGap": font["OS/2"].sTypoLineGap,
|
||||
}
|
||||
return metrics
|
||||
|
||||
|
||||
def set_line_metrics(font, metrics):
|
||||
font["hhea"].ascent = metrics["ascent"]
|
||||
font["hhea"].descent = metrics["descent"]
|
||||
font["OS/2"].usWinAscent = metrics["usWinAscent"]
|
||||
font["OS/2"].usWinDescent = metrics["usWinDescent"]
|
||||
font["OS/2"].sTypoAscender = metrics["sTypoAscender"]
|
||||
font["OS/2"].sTypoDescender = metrics["sTypoDescender"]
|
||||
font["OS/2"].sxHeight = metrics["sxHeight"]
|
||||
font["OS/2"].sCapHeight = metrics["sCapHeight"]
|
||||
font["OS/2"].sTypoLineGap = metrics["sTypoLineGap"]
|
||||
|
||||
def has_gsub_table(fontfile):
|
||||
font = ttLib.TTFont(fontfile)
|
||||
return "GSUB" in font
|
||||
|
||||
SCRIPT_TO_OPENTYPE_SCRIPT_TAG = {
|
||||
# Retrieved from Opentype 1.9 delta specs. Prerelease scripttags used out of necessity. https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags
|
||||
"Carian": "cari",
|
||||
"CypriotSyllabary": "cprt",
|
||||
"CyproMinoan": "cpmn",
|
||||
"Deseret": "dsrt",
|
||||
"Glagolitic": "glag",
|
||||
"EgyptianHieroglyphs": "egyp",
|
||||
"ImperialAramaic": "armi",
|
||||
"LinearA": "lina",
|
||||
"LinearB": "linb",
|
||||
"Lisu": "lisu",
|
||||
"Lycian": "lyci",
|
||||
"Lydian": "lydi",
|
||||
"Ogham": "ogam",
|
||||
"OldItalic": "ital",
|
||||
"OldPersian": "xpeo",
|
||||
"OldSouthArabian": "sarb",
|
||||
"OldTurkic": "orkh",
|
||||
"OldSogdian": "sogo",
|
||||
"OldNorthArabian": "narb",
|
||||
"OldHungarian": "hung",
|
||||
"Osmanya": "osma",
|
||||
"Phoenician": "phnx",
|
||||
"SumeroAkkadianCuneiform": "xsux",
|
||||
"Ugaritic": "ugar",
|
||||
"OlChiki": "olck",
|
||||
"TaiLe": "tale",
|
||||
"Cuneiform": "xsux",
|
||||
"Cypriot": "cprt",
|
||||
"Runic": "runr",
|
||||
"Shavian": "shaw",
|
||||
"Vai": "vai ",
|
||||
"Yi": "yi ",
|
||||
"AnatolianHieroglyphs": "hluw",
|
||||
"Bamum": "bamu",
|
||||
"ByzantineMusic": "byzm",
|
||||
"Gothic": "goth",
|
||||
"ImperialAramaic": "armi",
|
||||
"InscriptionalPahlavi": "phli",
|
||||
"InscriptionalParthian": "prti",
|
||||
"Khojki": "khoj",
|
||||
"MathematicalAlphanumericSymbols": "math",
|
||||
"MeroiticCursive": "merc",
|
||||
"MeroiticHieroglyphs": "mero",
|
||||
"MusicalSymbols": "musc",
|
||||
"Palmyrene": "palm",
|
||||
"Rejang": "rjng",
|
||||
"Samaritan": "samr",
|
||||
"Carian": "cari",
|
||||
"Ahom": "ahom",
|
||||
"Adlam": "adlm",
|
||||
"Dogra": "dogr",
|
||||
"Lisu": "lisu",
|
||||
"Mandaean": "mand",
|
||||
"Manichaean": "mani",
|
||||
"Tifinagh": "tfng",
|
||||
"Wancho": "wcho",
|
||||
"Yezidi": "yezi",
|
||||
"Cherokee": "cher",
|
||||
"Chorasmian": "chrs",
|
||||
"PahawhHmong": "hmng",
|
||||
"Phagspa": "phag",
|
||||
"Sundanese": "sund",
|
||||
"WarangCiti": "wara",
|
||||
"SylotiNagri": "sylo",
|
||||
"PsalterPahlavi": "phlp",
|
||||
"CaucasianAlbanian": "aghb",
|
||||
"Medefaidrin": "medf",
|
||||
"MeiteiMayek": "mtei",
|
||||
"MendeKikakui": "mend",
|
||||
"Mro": "mroo",
|
||||
"Multani": "mult",
|
||||
"Nabataean": "nbat",
|
||||
"Nandinagari": "nand",
|
||||
"Newa": "newa",
|
||||
"NewTaiLue": "talu",
|
||||
"Nushu": "nshu",
|
||||
"NyiakengPuachueHmong": "hmnp",
|
||||
"OldPermic": "perm",
|
||||
"SoraSompeng": "sora",
|
||||
"Soyombo": "soyo",
|
||||
"SylotiNagri": "sylo",
|
||||
"Tagbanwa": "tagb",
|
||||
"Tagalog": "tglg",
|
||||
"Takri": "takr",
|
||||
"TaiTham": "lana",
|
||||
"TaiViet": "tavt",
|
||||
"Tangut": "tang",
|
||||
"Thaana": "thaa",
|
||||
"UgariticCuneiform": "ugar",
|
||||
"ZanabazarSquare": "zanb",
|
||||
"SignWriting": "sgnw",
|
||||
"OldUyghur": "ougr",
|
||||
"Tangsa": "tnsa",
|
||||
"Toto": "toto",
|
||||
"Vithkuqi": "vith",
|
||||
"Duployan": "dupl",
|
||||
"Hatran": "hatr",
|
||||
# These last two would only merge using the long script name including the 'NotoSerif' part
|
||||
"NotoSerifYezidi": "yezi",
|
||||
"NotoSerifNyiakengPuachueHmong": "hmnp",
|
||||
}
|
||||
|
||||
def get_opentype_script_tag(fontfile):
|
||||
fontfile = os.path.basename(fontfile)
|
||||
if fontfile.startswith("NotoSans"):
|
||||
fontfile = fontfile[8:]
|
||||
fontfile = fontfile[: fontfile.index("-")]
|
||||
return SCRIPT_TO_OPENTYPE_SCRIPT_TAG[fontfile]
|
||||
|
||||
def add_gsub_to_font(fontfile):
|
||||
"""Adds an empty GSUB table to a font."""
|
||||
font = ttLib.TTFont(fontfile)
|
||||
gsub_table = ttLib.getTableClass("GSUB")("GSUB")
|
||||
gsub_table.table = otTables.GSUB()
|
||||
gsub_table.table.Version = 1.0
|
||||
gsub_table.table.ScriptList = otTables.ScriptList()
|
||||
gsub_table.table.ScriptCount = 1
|
||||
gsub_table.table.LookupList = otTables.LookupList()
|
||||
gsub_table.table.LookupList.LookupCount = 0
|
||||
gsub_table.table.LookupList.Lookup = []
|
||||
gsub_table.table.FeatureList = otTables.FeatureList()
|
||||
gsub_table.table.FeatureList.FeatureCount = 0
|
||||
gsub_table.table.LookupList.FeatureRecord = []
|
||||
|
||||
script_record = otTables.ScriptRecord()
|
||||
script_record.ScriptTag = get_opentype_script_tag(fontfile)
|
||||
script_record.Script = otTables.Script()
|
||||
script_record.Script.LangSysCount = 0
|
||||
script_record.Script.LangSysRecord = []
|
||||
|
||||
default_lang_sys = otTables.DefaultLangSys()
|
||||
default_lang_sys.FeatureIndex = []
|
||||
default_lang_sys.FeatureCount = 0
|
||||
default_lang_sys.LookupOrder = None
|
||||
default_lang_sys.ReqFeatureIndex = 65535
|
||||
script_record.Script.DefaultLangSys = default_lang_sys
|
||||
|
||||
gsub_table.table.ScriptList.ScriptRecord = [script_record]
|
||||
|
||||
font["GSUB"] = gsub_table
|
||||
|
||||
target_file = tempfile.gettempdir() + "/" + os.path.basename(fontfile)
|
||||
font.save(target_file)
|
||||
return target_file
|
||||
|
||||
def parse_unicodes(s):
|
||||
import re
|
||||
|
||||
s = re.sub(r"0[xX]", " ", s)
|
||||
s = re.sub(r"[<+>,;&#\\xXuU\n ]", " ", s)
|
||||
l = []
|
||||
for item in s.split():
|
||||
fields = item.split("-")
|
||||
if len(fields) == 1:
|
||||
l.append(int(item, 16))
|
||||
else:
|
||||
start, end = fields
|
||||
l.extend(range(int(start, 16), int(end, 16) + 1))
|
||||
return l
|
||||
|
||||
def main():
|
||||
output_filename = sys.argv[-1]
|
||||
ranges_filename = sys.argv[-2]
|
||||
weight = sys.argv[-3]
|
||||
font_name = sys.argv[-4]
|
||||
ps_name = sys.argv[-5]
|
||||
input_filenames = sys.argv[1:-5]
|
||||
|
||||
# Add a GSUB table to the fonts that do not have one, otherwise
|
||||
# the merger will complain
|
||||
for index, filename in enumerate(input_filenames):
|
||||
if not has_gsub_table(filename):
|
||||
input_filenames[index] = add_gsub_to_font(filename)
|
||||
|
||||
merger = merge.Merger()
|
||||
font = merger.merge(input_filenames)
|
||||
|
||||
# Use the line metrics defined by the first font, which is
|
||||
# supposed to be the basic NotoSans
|
||||
metrics = read_line_metrics(ttLib.TTFont(input_filenames[0]))
|
||||
set_line_metrics(font, metrics)
|
||||
|
||||
# Select the subset we care about
|
||||
options = subset.Options(ignore_missing_unicodes=False)
|
||||
subsetter = subset.Subsetter(options)
|
||||
unicodes = []
|
||||
with open(ranges_filename) as ranges:
|
||||
for line in ranges:
|
||||
unicodes.extend(parse_unicodes(line.split("#")[0]))
|
||||
if len(unicodes) != 0:
|
||||
subsetter.populate(unicodes=unicodes)
|
||||
subsetter.subset(font)
|
||||
|
||||
# Rename the result
|
||||
for record in font['name'].names:
|
||||
if record.nameID == 1:
|
||||
record.string = font_name
|
||||
elif record.nameID == 4:
|
||||
record.string = "{} {}".format(font_name, weight)
|
||||
elif record.nameID == 6:
|
||||
record.string = "{}-{}".format(ps_name, weight.replace(' ', ''))
|
||||
|
||||
font.save(output_filename)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
File diff suppressed because it is too large
Load Diff
@ -29,8 +29,8 @@
|
||||
8941 E0105; KRName; CID+62775
|
||||
8AA0 E0104; KRName; CID+37864
|
||||
8AA0 E0105; KRName; CID+62792
|
||||
8ACB E0104; KRName; CID+62792
|
||||
8ACB E0105; KRName; CID+37864
|
||||
8ACB E0104; KRName; CID+62795
|
||||
8ACB E0105; KRName; CID+37953
|
||||
927C E0103; KRName; CID+41543
|
||||
927C E0104; KRName; CID+41542
|
||||
9F9C E0107; KRName; CID+47476
|
||||
|
@ -3,9 +3,9 @@
|
||||
%%IncludeResource: ProcSet (CIDInit)
|
||||
%%BeginResource: CMap (UniSourceHanSansCN-UTF32-H)
|
||||
%%Title: (UniSourceHanSansCN-UTF32-H Adobe Identity 0)
|
||||
%%Version: 2.001
|
||||
%%Version: 2.004
|
||||
%%Copyright: -----------------------------------------------------------
|
||||
%%Copyright: Copyright 1990-2019 Adobe. All rights reserved.
|
||||
%%Copyright: Copyright 1990-2021 Adobe. All rights reserved.
|
||||
%%Copyright:
|
||||
%%Copyright: Redistribution and use in source and binary forms, with or
|
||||
%%Copyright: without modification, are permitted provided that the
|
||||
@ -53,7 +53,7 @@ begincmap
|
||||
end def
|
||||
|
||||
/CMapName /UniSourceHanSansCN-UTF32-H def
|
||||
/CMapVersion 2.001 def
|
||||
/CMapVersion 2.004 def
|
||||
/CMapType 1 def
|
||||
|
||||
/WMode 0 def
|
||||
@ -11804,7 +11804,7 @@ endcidchar
|
||||
<0002f91a> 61840
|
||||
endcidchar
|
||||
|
||||
8 begincidchar
|
||||
12 begincidchar
|
||||
<0002f945> 61843
|
||||
<0002f947> 61844
|
||||
<0002f96c> 61845
|
||||
@ -11813,6 +11813,10 @@ endcidchar
|
||||
<0002f9d0> 61849
|
||||
<0002f9d4> 61850
|
||||
<0002f9f4> 61853
|
||||
<00030729> 61858
|
||||
<00030edd> 61859
|
||||
<00030ede> 61856
|
||||
<0003106c> 61861
|
||||
endcidchar
|
||||
|
||||
100 begincidrange
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,22 +0,0 @@
|
||||
FontName (SourceHanSans-Regular)
|
||||
FullName (Source Han Sans Regular)
|
||||
FamilyName (Source Han Sans)
|
||||
Weight (Regular)
|
||||
version (2.001)
|
||||
Registry (Adobe)
|
||||
Ordering (Identity)
|
||||
Supplement 0
|
||||
Layout (AI0-SourceHanSans)
|
||||
FSType 0
|
||||
isFixedPitch false
|
||||
UnderlinePosition -150
|
||||
AdobeCopyright (Copyright 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
|
||||
Trademark (Source is a trademark of Adobe in the United States and/or other countries.)
|
||||
Serif false
|
||||
IsBoldStyle false
|
||||
IsItalicStyle false
|
||||
PreferOS/2TypoMetrics false
|
||||
IsOS/2WidthWeigthSlopeOnly false
|
||||
IsOS/2OBLIQUE false
|
||||
UseOldNameID4 false
|
||||
LicenseCode ADOBE
|
@ -2,7 +2,7 @@ FontName (SourceHanSansK-Regular)
|
||||
FullName (Source Han Sans Korean Regular)
|
||||
FamilyName (Source Han Sans Korean)
|
||||
Weight (Regular)
|
||||
version (2.001)
|
||||
version (2.004)
|
||||
Registry (Adobe)
|
||||
Ordering (Identity)
|
||||
Supplement 0
|
||||
@ -10,7 +10,7 @@ Layout (AI0-SourceHanSans)
|
||||
FSType 0
|
||||
isFixedPitch false
|
||||
UnderlinePosition -150
|
||||
AdobeCopyright (Copyright 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
|
||||
AdobeCopyright (Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
|
||||
Trademark (Source is a trademark of Adobe in the United States and/or other countries.)
|
||||
Serif false
|
||||
IsBoldStyle false
|
||||
|
@ -2,7 +2,7 @@ FontName (SourceHanSansSC-Regular)
|
||||
FullName (Source Han Sans Simplified Chinese Regular)
|
||||
FamilyName (Source Han Sans Simplified Chinese)
|
||||
Weight (Regular)
|
||||
version (2.001)
|
||||
version (2.004)
|
||||
Registry (Adobe)
|
||||
Ordering (Identity)
|
||||
Supplement 0
|
||||
@ -10,7 +10,7 @@ Layout (AI0-SourceHanSans)
|
||||
FSType 0
|
||||
isFixedPitch false
|
||||
UnderlinePosition -150
|
||||
AdobeCopyright (Copyright 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
|
||||
AdobeCopyright (Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.)
|
||||
Trademark (Source is a trademark of Adobe in the United States and/or other countries.)
|
||||
Serif false
|
||||
IsBoldStyle false
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -37,7 +37,7 @@ languagesystem hani ZHT;
|
||||
languagesystem hani ZHH;
|
||||
|
||||
table head {
|
||||
FontRevision 2.001;
|
||||
FontRevision 2.004;
|
||||
} head;
|
||||
|
||||
table hhea {
|
||||
@ -47,7 +47,7 @@ table hhea {
|
||||
} hhea;
|
||||
|
||||
table name {
|
||||
nameid 0 "\00A9 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
|
||||
nameid 0 "\00A9 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
|
||||
nameid 7 "Source is a trademark of Adobe in the United States and/or other countries.";
|
||||
nameid 8 "Adobe";
|
||||
nameid 9 "Ryoko NISHIZUKA \897F\585A\6DBC\5B50 (kana, bopomofo & ideographs); Paul D. Hunt (Latin, Greek & Cyrillic); Sandoll Communications \C0B0\B3CC\CEE4\BBA4\B2C8\CF00\C774\C158, Soo-young JANG \C7A5\C218\C601 & Joo-yeon KANG \AC15\C8FC\C5F0 (hangul elements, letters & syllables)";
|
||||
@ -364,47 +364,6 @@ lookup std_ccmp {
|
||||
substitute \63128 \63128 by \63143;
|
||||
substitute \723 \723 \723 by \63144;
|
||||
substitute \723 \723 by \63143;
|
||||
# UTC-00791 (Extension G)
|
||||
# JP
|
||||
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61854;
|
||||
# KR
|
||||
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61855;
|
||||
# CN
|
||||
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61856;
|
||||
# TW
|
||||
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
|
||||
# HK
|
||||
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
|
||||
# UTC-01200 (Extension G)
|
||||
# JP/KR
|
||||
substitute \1384 \23011 \17745 by \61858;
|
||||
# CN/TW/HK
|
||||
substitute \1384 \23011 \17746 by \61858;
|
||||
# UTC-01312 (Extension G)
|
||||
# JP
|
||||
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
|
||||
# KR
|
||||
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
|
||||
# CN
|
||||
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
|
||||
# TW
|
||||
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
|
||||
# HK
|
||||
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
|
||||
# UK-02960 (Extension G): Long IDS
|
||||
# JP/KR
|
||||
substitute \1387 \43442 \1386 \43442 \47443 \43442 \1384 \47443 \47443 by \61860;
|
||||
# CN
|
||||
substitute \1387 \43443 \1386 \43443 \47444 \43443 \1384 \47444 \47444 by \61861;
|
||||
# TW
|
||||
substitute \1387 \43444 \1386 \43444 \47445 \43444 \1384 \47445 \47445 by \61862;
|
||||
# HK
|
||||
substitute \1387 \43444 \1386 \43444 \47444 \43444 \1384 \47444 \47444 by \61863;
|
||||
# UK-02960 (Extension G): Short IDS
|
||||
# JP/KR/CN/HK
|
||||
# substitute \1389 \8547 \47471 by \61860;
|
||||
# TW
|
||||
# substitute \1389 \8547 \47472 by \61862;
|
||||
substitute \1447 \1449 by \1445;
|
||||
substitute \1448 \1449 by \1446;
|
||||
substitute \1461 \1546 by \61872;
|
||||
@ -3905,6 +3864,7 @@ lookup kr2jp useExtension {
|
||||
substitute \13215 by \13214;
|
||||
substitute \13690 by \13689;
|
||||
substitute \13787 by \13786;
|
||||
substitute \13900 by \13899;
|
||||
substitute \14020 by \14019;
|
||||
substitute \14036 by \14035;
|
||||
substitute \14065 by \14064;
|
||||
@ -4185,7 +4145,6 @@ lookup kr2jp useExtension {
|
||||
substitute \61852 by \39830;
|
||||
substitute \61855 by \61854;
|
||||
substitute \61899 by \10855;
|
||||
substitute \61900 by \10989;
|
||||
substitute \61905 by \11892;
|
||||
substitute \61909 by \12827;
|
||||
substitute \61920 by \17069;
|
||||
@ -5065,6 +5024,7 @@ lookup kr2cn useExtension {
|
||||
substitute \10973 by \10974;
|
||||
substitute \10983 by \10984;
|
||||
substitute \10985 by \10986;
|
||||
substitute \10989 by \61900;
|
||||
substitute \10990 by \10991;
|
||||
substitute \11005 by \11006;
|
||||
substitute \11010 by \11011;
|
||||
@ -5666,7 +5626,6 @@ lookup kr2cn useExtension {
|
||||
substitute \13890 by \13891;
|
||||
substitute \13894 by \13895;
|
||||
substitute \13896 by \13897;
|
||||
substitute \13899 by \13900;
|
||||
substitute \13901 by \13902;
|
||||
substitute \13904 by \13905;
|
||||
substitute \13906 by \13907;
|
||||
@ -14243,6 +14202,7 @@ lookup kr2tw useExtension {
|
||||
substitute \10979 by \10980;
|
||||
substitute \10983 by \10984;
|
||||
substitute \10985 by \10987;
|
||||
substitute \10989 by \61900;
|
||||
substitute \10990 by \10991;
|
||||
substitute \10996 by \10997;
|
||||
substitute \11005 by \11006;
|
||||
@ -14990,7 +14950,6 @@ lookup kr2tw useExtension {
|
||||
substitute \13890 by \13891;
|
||||
substitute \13894 by \13895;
|
||||
substitute \13896 by \13897;
|
||||
substitute \13899 by \13900;
|
||||
substitute \13901 by \13902;
|
||||
substitute \13904 by \13905;
|
||||
substitute \13906 by \13908;
|
||||
@ -26220,6 +26179,7 @@ lookup kr2hk useExtension {
|
||||
substitute \10973 by \10974;
|
||||
substitute \10983 by \10984;
|
||||
substitute \10985 by \10987;
|
||||
substitute \10989 by \61900;
|
||||
substitute \10990 by \10991;
|
||||
substitute \10996 by \10997;
|
||||
substitute \11005 by \11006;
|
||||
@ -26934,7 +26894,6 @@ lookup kr2hk useExtension {
|
||||
substitute \13890 by \13891;
|
||||
substitute \13894 by \13895;
|
||||
substitute \13896 by \13897;
|
||||
substitute \13899 by \13900;
|
||||
substitute \13901 by \13902;
|
||||
substitute \13904 by \13905;
|
||||
substitute \13906 by \13907;
|
||||
@ -27544,7 +27503,6 @@ lookup kr2hk useExtension {
|
||||
substitute \15731 by \15732;
|
||||
substitute \15737 by \15739;
|
||||
substitute \15742 by \15743;
|
||||
substitute \15744 by \15745;
|
||||
substitute \15755 by \15756;
|
||||
substitute \15761 by \15763;
|
||||
substitute \15769 by \15770;
|
||||
@ -27584,6 +27542,7 @@ lookup kr2hk useExtension {
|
||||
substitute \15912 by \15914;
|
||||
substitute \15915 by \15916;
|
||||
substitute \15917 by \15918;
|
||||
substitute \15923 by \65530;
|
||||
substitute \15925 by \15926;
|
||||
substitute \15927 by \15928;
|
||||
substitute \15929 by \15930;
|
||||
|
@ -37,7 +37,7 @@ languagesystem hani ZHT;
|
||||
languagesystem hani ZHH;
|
||||
|
||||
table head {
|
||||
FontRevision 2.001;
|
||||
FontRevision 2.004;
|
||||
} head;
|
||||
|
||||
table hhea {
|
||||
@ -47,7 +47,7 @@ table hhea {
|
||||
} hhea;
|
||||
|
||||
table name {
|
||||
nameid 0 "\00A9 2014-2019 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
|
||||
nameid 0 "\00A9 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.";
|
||||
nameid 7 "Source is a trademark of Adobe in the United States and/or other countries.";
|
||||
nameid 8 "Adobe";
|
||||
nameid 9 "Ryoko NISHIZUKA \897F\585A\6DBC\5B50 (kana, bopomofo & ideographs); Paul D. Hunt (Latin, Greek & Cyrillic); Sandoll Communications \C0B0\B3CC\CEE4\BBA4\B2C8\CF00\C774\C158, Soo-young JANG \C7A5\C218\C601 & Joo-yeon KANG \AC15\C8FC\C5F0 (hangul elements, letters & syllables)";
|
||||
@ -363,47 +363,6 @@ lookup std_ccmp {
|
||||
substitute \63128 \63128 by \63143;
|
||||
substitute \723 \723 \723 by \63144;
|
||||
substitute \723 \723 by \63143;
|
||||
# UTC-00791 (Extension G)
|
||||
# JP
|
||||
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61854;
|
||||
# KR
|
||||
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42830 \1385 \37543 \44746 \1385 \16866 \42830 \11137 \17487 by \61855;
|
||||
# CN
|
||||
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61856;
|
||||
# TW
|
||||
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
|
||||
# HK
|
||||
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42831 \1385 \37544 \44746 \1385 \16867 \42831 \11137 \17488 by \61857;
|
||||
# UTC-01200 (Extension G)
|
||||
# JP/KR
|
||||
substitute \1384 \23011 \17745 by \61858;
|
||||
# CN/TW/HK
|
||||
substitute \1384 \23011 \17746 by \61858;
|
||||
# UTC-01312 (Extension G)
|
||||
# JP
|
||||
substitute \1394 \40029 \1387 \29388 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
|
||||
# KR
|
||||
substitute \1394 \40029 \1387 \62576 \1384 \20694 \1384 \1386 \1385 \16866 \42842 \1385 \37543 \45072 \1385 \16866 \42842 \11137 \17487 by \61859;
|
||||
# CN
|
||||
substitute \1394 \40030 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
|
||||
# TW
|
||||
substitute \1394 \40031 \1387 \29390 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
|
||||
# HK
|
||||
substitute \1394 \40031 \1387 \29389 \1384 \20694 \1384 \1386 \1385 \16867 \42842 \1385 \37544 \45072 \1385 \16867 \42842 \11137 \17488 by \61859;
|
||||
# UK-02960 (Extension G): Long IDS
|
||||
# JP/KR
|
||||
substitute \1387 \43442 \1386 \43442 \47443 \43442 \1384 \47443 \47443 by \61860;
|
||||
# CN
|
||||
substitute \1387 \43443 \1386 \43443 \47444 \43443 \1384 \47444 \47444 by \61861;
|
||||
# TW
|
||||
substitute \1387 \43444 \1386 \43444 \47445 \43444 \1384 \47445 \47445 by \61862;
|
||||
# HK
|
||||
substitute \1387 \43444 \1386 \43444 \47444 \43444 \1384 \47444 \47444 by \61863;
|
||||
# UK-02960 (Extension G): Short IDS
|
||||
# JP/KR/CN/HK
|
||||
# substitute \1389 \8547 \47471 by \61860;
|
||||
# TW
|
||||
# substitute \1389 \8547 \47472 by \61862;
|
||||
substitute \1447 \1449 by \1445;
|
||||
substitute \1448 \1449 by \1446;
|
||||
substitute \1461 \1546 by \61872;
|
||||
@ -13931,7 +13890,6 @@ lookup cn2kr useExtension {
|
||||
substitute \13891 by \13890;
|
||||
substitute \13895 by \13894;
|
||||
substitute \13897 by \13896;
|
||||
substitute \13900 by \13899;
|
||||
substitute \13902 by \13901;
|
||||
substitute \13905 by \13904;
|
||||
substitute \13907 by \13906;
|
||||
@ -21579,6 +21537,7 @@ lookup cn2kr useExtension {
|
||||
substitute \61830 by \18829;
|
||||
substitute \61856 by \61855;
|
||||
substitute \61861 by \61860;
|
||||
substitute \61900 by \10989;
|
||||
substitute \61907 by \12272;
|
||||
substitute \61910 by \12850;
|
||||
substitute \61913 by \13658;
|
||||
@ -31145,6 +31104,7 @@ lookup cn2hk useExtension {
|
||||
substitute \15734 by \15735;
|
||||
substitute \15737 by \15739;
|
||||
substitute \15741 by \15740;
|
||||
substitute \15745 by \15744;
|
||||
substitute \15749 by \15748;
|
||||
substitute \15755 by \15756;
|
||||
substitute \15760 by \15759;
|
||||
@ -31168,6 +31128,7 @@ lookup cn2hk useExtension {
|
||||
substitute \15910 by \15911;
|
||||
substitute \15913 by \15914;
|
||||
substitute \15917 by \15918;
|
||||
substitute \15923 by \65530;
|
||||
substitute \15925 by \15926;
|
||||
substitute \15927 by \15928;
|
||||
substitute \15933 by \15934;
|
||||
|
21
fonts/ume/PROTON_NOTE.md
Normal file
21
fonts/ume/PROTON_NOTE.md
Normal file
@ -0,0 +1,21 @@
|
||||
# UmeFont (version 670)
|
||||
|
||||
https://osdn.net/projects/ume-font/
|
||||
|
||||
## Fonts
|
||||
|
||||
https://osdn.net/projects/ume-font/downloads/22212/umefont_670.tar.xz/
|
||||
|
||||
- ume-tgo4.ttf: Ume Gothic
|
||||
- ume-pgo4.ttf: Ume P Gothic
|
||||
- ume-ugo4.ttf: Ume UI Gothic
|
||||
|
||||
## License
|
||||
|
||||
See license.html for details.
|
||||
|
||||
## Why UmeFont?
|
||||
|
||||
UmeFont is metric-compatible fonts with MS Japanese fonts.
|
||||
|
||||
https://wiki.archlinux.org/title/Metric-compatible_fonts#Ume
|
79
fonts/ume/license.html
Normal file
79
fonts/ume/license.html
Normal file
@ -0,0 +1,79 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<pre>
|
||||
-------------------------------------------------------------------------------
|
||||
梅フォントのライセンス (日本語 UTF-8) (UmeFont license (In Japanese UTF-8))
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
本ライセンスは以下の梅フォントに共通のライセンスです。
|
||||
|
||||
* 梅ゴシック
|
||||
* 梅ゴシックC4
|
||||
* 梅ゴシックS4
|
||||
* 梅ゴシックO5
|
||||
* 梅ゴシックC5
|
||||
* 梅ゴシックS5
|
||||
* 梅Pゴシック
|
||||
* 梅PゴシックC4
|
||||
* 梅PゴシックS4
|
||||
* 梅PゴシックO5
|
||||
* 梅PゴシックC5
|
||||
* 梅PゴシックS5
|
||||
* 梅UIゴシック
|
||||
* 梅UIゴシックO5
|
||||
* 梅Hyゴシック
|
||||
* 梅HyゴシックO5
|
||||
* 梅明朝
|
||||
* 梅明朝S3
|
||||
* 梅P明朝
|
||||
* 梅P明朝S3
|
||||
|
||||
|
||||
これらのフォントはフリー(自由な)ソフトウエアです。
|
||||
あらゆる改変の有無に関わらず、また商業的な利用であっても、自由にご利用、複製、
|
||||
再配布することができますが、全て無保証とさせていただきます。
|
||||
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
UmeFont license (In English)
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
This is common license of the UmeFont family. UmeFont family provides the
|
||||
following fonts:
|
||||
|
||||
* Ume Gothic
|
||||
* Ume Gothic C4
|
||||
* Ume Gothic S4
|
||||
* Ume Gothic O5
|
||||
* Ume Gothic C5
|
||||
* Ume Gothic S5
|
||||
* Ume P Gothic
|
||||
* Ume P Gothic C4
|
||||
* Ume P Gothic S4
|
||||
* Ume P Gothic O5
|
||||
* Ume P Gothic C5
|
||||
* Ume P Gothic S5
|
||||
* Ume UI Gothic
|
||||
* Ume UI Gothic O5
|
||||
* Ume Hy Gothic
|
||||
* Ume Hy Gothic O5
|
||||
* Ume Mincho
|
||||
* Ume Mincho S3
|
||||
* Ume P Mincho
|
||||
* Ume P Mincho S3
|
||||
|
||||
|
||||
These fonts are free software.
|
||||
Unlimited permission is granted to use, copy, and distribute it,
|
||||
with or without modification, either commercially and noncommercially.
|
||||
THESE FONTS ARE PROVIDED "AS IS" WITHOUT WARRANTY.
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
BIN
fonts/ume/ume-pgo4.ttf
Normal file
BIN
fonts/ume/ume-pgo4.ttf
Normal file
Binary file not shown.
BIN
fonts/ume/ume-tgo4.ttf
Normal file
BIN
fonts/ume/ume-tgo4.ttf
Normal file
Binary file not shown.
BIN
fonts/ume/ume-ugo4.ttf
Normal file
BIN
fonts/ume/ume-ugo4.ttf
Normal file
Binary file not shown.
1
glslang
Submodule
1
glslang
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit df7fec2cfa966919172ee83bfcae6c9c9b3f91b8
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user