Compare commits
505 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
2640716496 | |
![]() |
b065db66d9 | |
![]() |
4d837fd739 | |
![]() |
1ef356c6f0 | |
![]() |
a8c82bb4a1 | |
![]() |
1778d605f4 | |
![]() |
d6d2a83e7e | |
![]() |
881667a5f8 | |
![]() |
b332aa693d | |
![]() |
7f7035a07b | |
![]() |
3e355509e9 | |
![]() |
e68681ffda | |
![]() |
f83aa940d7 | |
![]() |
a18559678c | |
![]() |
d927594af2 | |
![]() |
06507775e8 | |
![]() |
b08ecd123d | |
![]() |
d154a6abc8 | |
![]() |
b134bacc45 | |
![]() |
9ae1473f36 | |
![]() |
9cd0c5c04c | |
![]() |
9e41c5476a | |
![]() |
e91171459d | |
![]() |
16f008b448 | |
![]() |
bad10342bd | |
![]() |
06b3cb094e | |
![]() |
82617ea75d | |
![]() |
0561ef91a4 | |
![]() |
afc6a1cc3a | |
![]() |
35df9d7647 | |
![]() |
031ae2ebf6 | |
![]() |
6242679e23 | |
![]() |
537393a0ab | |
![]() |
616f7abc4e | |
![]() |
f1414000e6 | |
![]() |
e2a235768e | |
![]() |
1d54ee2135 | |
![]() |
013a9b87ac | |
![]() |
a06d3ed1b4 | |
![]() |
b1bad9d53d | |
![]() |
d2eed85c28 | |
![]() |
d5a37e06aa | |
![]() |
cea049161d | |
![]() |
3eadc6e78f | |
![]() |
4f3ed0dc8b | |
![]() |
d38e1d0f89 | |
![]() |
f870bf252d | |
![]() |
536ea705ab | |
![]() |
802162ad97 | |
![]() |
25895e8636 | |
![]() |
27e7aa6864 | |
![]() |
dd7461103b | |
![]() |
c892c269fa | |
![]() |
dcf87c0a71 | |
![]() |
6d1e7e8069 | |
![]() |
b8868fce37 | |
![]() |
d92c4e465f | |
![]() |
bceb138961 | |
![]() |
83aa80440e | |
![]() |
4bd54ba128 | |
![]() |
27acf80b80 | |
![]() |
ae09ab7189 | |
![]() |
ce8de563e3 | |
![]() |
47a8e7e8ed | |
![]() |
adbaeacf20 | |
![]() |
8d8ecd8dfa | |
![]() |
cfbfc9ecb0 | |
![]() |
4445a20d9c | |
![]() |
b83a7c8aa2 | |
![]() |
66aabab61f | |
![]() |
a5e6b57fd8 | |
![]() |
b9061ddafd | |
![]() |
3c291ef3ac | |
![]() |
e44c83e1d0 | |
![]() |
8ce4848dd6 | |
![]() |
34cba3bb2c | |
![]() |
9b78b26010 | |
![]() |
94f9df4baa | |
![]() |
c726989d67 | |
![]() |
3344e7cf71 | |
![]() |
3d69bde8cb | |
![]() |
09984eed2f | |
![]() |
69809ff556 | |
![]() |
80dec6a38d | |
![]() |
ea7b9e5049 | |
![]() |
18701fc0a4 | |
![]() |
6b596c7ad7 | |
![]() |
3c01643112 | |
![]() |
0895c7a52e | |
![]() |
1e52787078 | |
![]() |
fc0e63d554 | |
![]() |
9b573f4465 | |
![]() |
51ae605850 | |
![]() |
ac4b39b6d8 | |
![]() |
97ca69d050 | |
![]() |
b1bcaed3a2 | |
![]() |
2a1b41040d | |
![]() |
930d0e282c | |
![]() |
df23826721 | |
![]() |
de46284747 | |
![]() |
715f685447 | |
![]() |
eabf319c9a | |
![]() |
c98263603d | |
![]() |
9d46f8e6d1 | |
![]() |
dab91fc8ca | |
![]() |
d672d425be | |
![]() |
53d60b726d | |
![]() |
b6ce89bff8 | |
![]() |
8c3d0f0984 | |
![]() |
3d4c03d0e6 | |
![]() |
92230e0003 | |
![]() |
88d58db0e9 | |
![]() |
4d4c06b26b | |
![]() |
23a3d0b20f | |
![]() |
53f5ec7b7d | |
![]() |
61f93348ca | |
![]() |
9a78ecbab3 | |
![]() |
3ffbe7816a | |
![]() |
2064af05b4 | |
![]() |
ae8bfb4ab3 | |
![]() |
1f3a1cb9dc | |
![]() |
bbaf70c083 | |
![]() |
b96e0ad35c | |
![]() |
96324ddb92 | |
![]() |
dca119905a | |
![]() |
6a702ad09b | |
![]() |
796ecee8cf | |
![]() |
c1d3d19d6b | |
![]() |
f7a79bfe2e | |
![]() |
f8c52377a3 | |
![]() |
357eccc6eb | |
![]() |
80f595c0b0 | |
![]() |
1c73f0c7d3 | |
![]() |
3aff3784cf | |
![]() |
59fa419820 | |
![]() |
b0820a28b6 | |
![]() |
a782c1c5fe | |
![]() |
16a73fcbcf | |
![]() |
9ff3b9e3b7 | |
![]() |
379be68f69 | |
![]() |
8bfb39b3ad | |
![]() |
d97c8eabf5 | |
![]() |
e42e6323e8 | |
![]() |
d0463ddb5e | |
![]() |
1da359ba22 | |
![]() |
15612c2bcc | |
![]() |
11a941f33d | |
![]() |
a808cfb6f5 | |
![]() |
0266b9e4d1 | |
![]() |
ef01f4c491 | |
![]() |
d784b60aaa | |
![]() |
67b17f50ec | |
![]() |
be6addf034 | |
![]() |
d9b58d683e | |
![]() |
604f5412a6 | |
![]() |
de64dfd9e9 | |
![]() |
024ae098e6 | |
![]() |
3d7cce05aa | |
![]() |
205459f7ae | |
![]() |
3ac5aa4f27 | |
![]() |
6fedbdc512 | |
![]() |
996a827d8e | |
![]() |
0c91d45627 | |
![]() |
3cf6ac5a80 | |
![]() |
c5d1862e4e | |
![]() |
c63469ac63 | |
![]() |
3e0541c639 | |
![]() |
00e48e11e6 | |
![]() |
07c6e3119e | |
![]() |
3d8ed512cf | |
![]() |
e49cce5b9e | |
![]() |
1dfd7ec121 | |
![]() |
f1beea9214 | |
![]() |
865add067d | |
![]() |
22c620967d | |
![]() |
8dfc9fa14b | |
![]() |
20db98897d | |
![]() |
8a2cec5790 | |
![]() |
78a1c42162 | |
![]() |
469c8713b8 | |
![]() |
ec3e46abc8 | |
![]() |
f69ce0de0f | |
![]() |
08027f0f38 | |
![]() |
e018c1c41a | |
![]() |
4b6454bac5 | |
![]() |
e36d436174 | |
![]() |
d49e6a31e2 | |
![]() |
08ffe49414 | |
![]() |
c76edf74c6 | |
![]() |
fac5d565aa | |
![]() |
5702bc5102 | |
![]() |
99f2530d37 | |
![]() |
adedc507cf | |
![]() |
5745ed3d8d | |
![]() |
5f866f8567 | |
![]() |
7ce5b4940d | |
![]() |
27dc60f2d1 | |
![]() |
8002f91c1c | |
![]() |
cc2bda6991 | |
![]() |
e8eada5658 | |
![]() |
1de7b60e5b | |
![]() |
cdac9d445c | |
![]() |
2a4697c04f | |
![]() |
d7c6eb81cd | |
![]() |
43a6a90a8c | |
![]() |
54f56fc984 | |
![]() |
4bde911531 | |
![]() |
31cfe30468 | |
![]() |
2f8369c3c7 | |
![]() |
2c17201cdd | |
![]() |
6f5c785a35 | |
![]() |
05d181849a | |
![]() |
6505ca17df | |
![]() |
856abf8067 | |
![]() |
e8d4adaf12 | |
![]() |
3a9124fecf | |
![]() |
a3ebf1af41 | |
![]() |
15619e9e43 | |
![]() |
50aa85d909 | |
![]() |
9c36ed6550 | |
![]() |
9b7dba5931 | |
![]() |
db8e2279a5 | |
![]() |
ce7aa3fae3 | |
![]() |
4ba7796d46 | |
![]() |
179bec9d2b | |
![]() |
d3a05166fd | |
![]() |
e0cdf74b90 | |
![]() |
0f863e45a3 | |
![]() |
3e0ba6d5c1 | |
![]() |
c7abd4e74e | |
![]() |
65e2706473 | |
![]() |
9ea2360514 | |
![]() |
a5676b4b8b | |
![]() |
4fa72ce721 | |
![]() |
d91d7fd5e3 | |
![]() |
d1d2cd7ba7 | |
![]() |
e36fc38eba | |
![]() |
83707cf56c | |
![]() |
00be6c96a2 | |
![]() |
30d671f2f8 | |
![]() |
c8205825ac | |
![]() |
8688e2351b | |
![]() |
e352eb93b3 | |
![]() |
5d1c84613c | |
![]() |
90980741e2 | |
![]() |
b82e7a3b66 | |
![]() |
72c4adae79 | |
![]() |
e8fb9b7622 | |
![]() |
89fd875b3c | |
![]() |
bd9a7e45fc | |
![]() |
309fe49ed1 | |
![]() |
f091a656ff | |
![]() |
fa40f41866 | |
![]() |
47b2785b74 | |
![]() |
50bb818034 | |
![]() |
01991889d7 | |
![]() |
a570d21f35 | |
![]() |
8f66c79eea | |
![]() |
647c007193 | |
![]() |
f0a30d45a1 | |
![]() |
38c5267adb | |
![]() |
70d6a1ac39 | |
![]() |
77f49ac671 | |
![]() |
e40c1e7140 | |
![]() |
afef36820c | |
![]() |
a97a6879d9 | |
![]() |
8579e192af | |
![]() |
910ec06e47 | |
![]() |
e795e9522c | |
![]() |
e64a8b695a | |
![]() |
3cd82d1f24 | |
![]() |
de426adf02 | |
![]() |
0c8e09a029 | |
![]() |
4b080c2e4e | |
![]() |
917ed4014f | |
![]() |
5d65a5b6e8 | |
![]() |
e7de32ee18 | |
![]() |
34218c25bf | |
![]() |
8a1f4db62f | |
![]() |
c31499ca10 | |
![]() |
41895eea36 | |
![]() |
05f2cb7dea | |
![]() |
61be54d3d9 | |
![]() |
48fc076cc2 | |
![]() |
5e2e2ab4a9 | |
![]() |
74528ccb30 | |
![]() |
3f5a89e5c4 | |
![]() |
2c2ee70109 | |
![]() |
6ddfdd615f | |
![]() |
c3ad631f3a | |
![]() |
21752425da | |
![]() |
3a68f08bcf | |
![]() |
90e17d86ad | |
![]() |
e4b2b5afb8 | |
![]() |
f8626cf363 | |
![]() |
d7135b782d | |
![]() |
f6dacc887d | |
![]() |
3c048f178c | |
![]() |
1468caa494 | |
![]() |
5972e73e37 | |
![]() |
88302602ca | |
![]() |
830c8ccd4d | |
![]() |
c048f0c713 | |
![]() |
7c1a6a44f7 | |
![]() |
6b6e1f76cb | |
![]() |
97894c7899 | |
![]() |
8a3e3841cf | |
![]() |
39cad5feb8 | |
![]() |
8ced18c22f | |
![]() |
fd2c767319 | |
![]() |
31ce5d1732 | |
![]() |
fdc7d05be0 | |
![]() |
11e0b8b2f6 | |
![]() |
18e626ae58 | |
![]() |
532a6d345b | |
![]() |
19705e0dcf | |
![]() |
10195bff1a | |
![]() |
e0102f7242 | |
![]() |
82fa5cab96 | |
![]() |
b699d809d9 | |
![]() |
48ba8fe197 | |
![]() |
020f20e494 | |
![]() |
3f436073be | |
![]() |
ac0dc48263 | |
![]() |
c065851616 | |
![]() |
e868bc959b | |
![]() |
17cb394236 | |
![]() |
4a424c18a8 | |
![]() |
befdea4be1 | |
![]() |
3c5aa7b7bb | |
![]() |
311b79e03a | |
![]() |
cbbcea9c28 | |
![]() |
6cf2400cba | |
![]() |
4693e6936f | |
![]() |
5b9a26ba6c | |
![]() |
c9ca85b839 | |
![]() |
0037d61ad1 | |
![]() |
8ac1b297f7 | |
![]() |
06f0537619 | |
![]() |
d89fb4846a | |
![]() |
4839a89f42 | |
![]() |
caf064e210 | |
![]() |
a742d7f1dd | |
![]() |
d5ea803bb8 | |
![]() |
0d38117e83 | |
![]() |
39d5761181 | |
![]() |
d9a392a69a | |
![]() |
9712c424fd | |
![]() |
3625a1ad2d | |
![]() |
6216a7b5d0 | |
![]() |
e81f4cc6ed | |
![]() |
7f82fa0089 | |
![]() |
81dbe6de6e | |
![]() |
9abe3f46e3 | |
![]() |
3283bcad22 | |
![]() |
7f192348de | |
![]() |
1b466d7e38 | |
![]() |
7ce3e4db00 | |
![]() |
73fd7f260f | |
![]() |
2175bc6edf | |
![]() |
4f00ba9662 | |
![]() |
8e4651d819 | |
![]() |
05707bbd26 | |
![]() |
12f2d88c73 | |
![]() |
79d3453544 | |
![]() |
ef85b71444 | |
![]() |
a2515b3bbd | |
![]() |
41bbb49f51 | |
![]() |
209cb0e96a | |
![]() |
375e31f6cc | |
![]() |
34e46945f9 | |
![]() |
5912be5a32 | |
![]() |
aa0e95a968 | |
![]() |
a10c6b93bb | |
![]() |
f08443f307 | |
![]() |
5529797f10 | |
![]() |
bd0a59cc5f | |
![]() |
d2762a95bf | |
![]() |
10a4b5dc71 | |
![]() |
001dd9548d | |
![]() |
1c436f2dfe | |
![]() |
8f47df28bf | |
![]() |
db5c890e0d | |
![]() |
7dbad8e85c | |
![]() |
d3da049269 | |
![]() |
bc0e406aba | |
![]() |
eb6491ecb7 | |
![]() |
546ddfbc41 | |
![]() |
ef46bb7e46 | |
![]() |
a3b92a3348 | |
![]() |
2f92dd73b1 | |
![]() |
07c7bb40a1 | |
![]() |
ed013bd22c | |
![]() |
aaf4e7c18c | |
![]() |
116af5c6a8 | |
![]() |
1788b366af | |
![]() |
0820ba587e | |
![]() |
f975809e3c | |
![]() |
3a1780145c | |
![]() |
18c3c3bd51 | |
![]() |
0aecfb5d1b | |
![]() |
44b274c9fa | |
![]() |
491bc1c009 | |
![]() |
24643675c5 | |
![]() |
0c6617e920 | |
![]() |
864cc69061 | |
![]() |
dae4397dff | |
![]() |
4cf6cccbaf | |
![]() |
9e724ea4b8 | |
![]() |
eb26ec2ef6 | |
![]() |
6a9eeeaece | |
![]() |
9f6285842d | |
![]() |
e5ad7b3403 | |
![]() |
94752f8314 | |
![]() |
3c32bad886 | |
![]() |
8936feaa71 | |
![]() |
f93a32ab0b | |
![]() |
3fa850c15d | |
![]() |
364776b833 | |
![]() |
2d439f7ba6 | |
![]() |
11a6068a03 | |
![]() |
6139428207 | |
![]() |
5a5579d27f | |
![]() |
29e85e5d87 | |
![]() |
e228394656 | |
![]() |
d5ac2a853b | |
![]() |
e82ae7bb13 | |
![]() |
20b82d8ab7 | |
![]() |
8d26b4f49f | |
![]() |
3fdc30f7d7 | |
![]() |
57211ddc77 | |
![]() |
2de7efd9eb | |
![]() |
5b4559f4ee | |
![]() |
6178526cd9 | |
![]() |
c8a1d8eb2e | |
![]() |
6e3883937b | |
![]() |
8dd647914a | |
![]() |
0dae126a29 | |
![]() |
5038cd7ba5 | |
![]() |
ddd8fca044 | |
![]() |
25c85a83d9 | |
![]() |
32dd410954 | |
![]() |
e4f17d33ce | |
![]() |
2ab707c0ca | |
![]() |
4dba928765 | |
![]() |
3d6550d161 | |
![]() |
3cf12f2594 | |
![]() |
de1ec01c78 | |
![]() |
295abb9cd0 | |
![]() |
8260b62482 | |
![]() |
d18c6f115f | |
![]() |
d36f80b5e6 | |
![]() |
44aa859e6d | |
![]() |
5a2d3a6f95 | |
![]() |
d6b939c428 | |
![]() |
8b8be7d4a8 | |
![]() |
72364fd1a4 | |
![]() |
c6da07feb3 | |
![]() |
94979eff97 | |
![]() |
e8494b56d1 | |
![]() |
c85397518b | |
![]() |
cf2339822d | |
![]() |
dcb9ccca90 | |
![]() |
a8ec85d536 | |
![]() |
611f3a3409 | |
![]() |
b6da6c490c | |
![]() |
379dd97301 | |
![]() |
60b48a3a4a | |
![]() |
9d20ce9b59 | |
![]() |
709a322337 | |
![]() |
cdfd37fc4e | |
![]() |
4f8d0a8867 | |
![]() |
b22e9fb709 | |
![]() |
4e2799b582 | |
![]() |
7fa90531e6 | |
![]() |
e1c2ecc584 | |
![]() |
4c450ab360 | |
![]() |
d5e1a1f36b | |
![]() |
821b9176bd | |
![]() |
9031103c9a | |
![]() |
557f897ead | |
![]() |
c8a4f66cf8 | |
![]() |
ddc93ec6e1 | |
![]() |
ab38ae8f24 | |
![]() |
d337688fa7 | |
![]() |
3eea90afb6 | |
![]() |
b3952d74a8 | |
![]() |
be09125d52 | |
![]() |
f264e7f807 | |
![]() |
fe0791762a | |
![]() |
61f427dec1 | |
![]() |
d619ee2bb1 | |
![]() |
7128e6dd08 | |
![]() |
0decffea8d | |
![]() |
9b60e17746 | |
![]() |
26207038c9 | |
![]() |
90867bc802 | |
![]() |
7f49cd33ad | |
![]() |
d8342d3d67 | |
![]() |
12e840a8fa | |
![]() |
b5a4788747 | |
![]() |
e63acb9545 | |
![]() |
1c7db77192 | |
![]() |
02f3bd6765 | |
![]() |
3c16671e39 |
|
@ -20,7 +20,7 @@ body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
Please try to troubleshoot using the information on this page:h ttps://wiki.archlinux.org/index.php/Gamepad **BEFORE** filing an issue.
|
Please try to troubleshoot using the information on this page: https://wiki.archlinux.org/index.php/Gamepad **BEFORE** filing an issue.
|
||||||
We use SDL for joystick support, any problems will generally be an issue with SDL and **NOT** the emulator.
|
We use SDL for joystick support, any problems will generally be an issue with SDL and **NOT** the emulator.
|
||||||
If relevant, the joystick you are using and the drivers you are using for it:
|
If relevant, the joystick you are using and the drivers you are using for it:
|
||||||
- type: textarea
|
- type: textarea
|
||||||
|
@ -46,7 +46,7 @@ body:
|
||||||
attributes:
|
attributes:
|
||||||
label: Steps to reproduce the problem
|
label: Steps to reproduce the problem
|
||||||
description: "How do you trigger this bug? Please walk us through it step by step."
|
description: "How do you trigger this bug? Please walk us through it step by step."
|
||||||
value: |
|
placeholder: |
|
||||||
1.
|
1.
|
||||||
2.
|
2.
|
||||||
3.
|
3.
|
||||||
|
@ -81,29 +81,76 @@ body:
|
||||||
Clean, Intro'd or Hacked?:(Attach Patch here)
|
Clean, Intro'd or Hacked?:(Attach Patch here)
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
- type: textarea
|
- type: markdown
|
||||||
id: Settings
|
|
||||||
attributes:
|
attributes:
|
||||||
label: What settings are you using?
|
value: "### Emulator Settings\nList the settings you are using."
|
||||||
description: "Please list them"
|
- type: input
|
||||||
value: |
|
id: Video_Driver
|
||||||
Video driver (simple, opengl):
|
attributes:
|
||||||
Sound driver (directsound, xaudio, openal, SDL):
|
label: Video Driver
|
||||||
Scale Filter Used?:
|
description: "Specify which video driver you're using (e.g., Simple, OpenGL)."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: textarea
|
- type: input
|
||||||
id: SysInfo
|
id: Sound_Driver
|
||||||
attributes:
|
attributes:
|
||||||
label: Specifications and Build details
|
label: Sound Driver
|
||||||
description: "List your system information, you can obtain this from MSINFO32 and the emulators Titlebar."
|
description: "Specify which sound driver you're using (e.g., DirectSound, XAudio, OpenAL, SDL)."
|
||||||
value: |
|
validations:
|
||||||
VBA-M: (include commit version number and whether you are using the 32-bit or 64-bit version)
|
required: true
|
||||||
OS: (include version and OS build number using WinVer if on Windows):
|
- type: input
|
||||||
If using Linux, specify if using xorg or Wayland:
|
id: Scale_Filter
|
||||||
CPU:
|
attributes:
|
||||||
GPU:
|
label: Scale Filter
|
||||||
RAM:
|
description: "Specify which scale filter you are using."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: "### Specifications and Build Details\nList your system information, you can obtain this from MSINFO32 and the emulator's Titlebar."
|
||||||
|
- type: input
|
||||||
|
id: VBA-M
|
||||||
|
attributes:
|
||||||
|
label: VBA-M Version
|
||||||
|
description: "Include commit version number and whether you are using the 32-bit or 64-bit version."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: OS
|
||||||
|
attributes:
|
||||||
|
label: Operating System
|
||||||
|
description: "Include version and OS build number using WinVer if on Windows."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: Linux_Display_Server
|
||||||
|
attributes:
|
||||||
|
label: Linux Display Server
|
||||||
|
description: "Specify whether using Xorg or Wayland."
|
||||||
|
options:
|
||||||
|
- Xorg
|
||||||
|
- Wayland
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: input
|
||||||
|
id: CPU
|
||||||
|
attributes:
|
||||||
|
label: CPU Model
|
||||||
|
description: "Provide details of your CPU model."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: GPU
|
||||||
|
attributes:
|
||||||
|
label: GPU Model
|
||||||
|
description: "Provide details of your GPU model."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: RAM
|
||||||
|
attributes:
|
||||||
|
label: RAM Size
|
||||||
|
description: "Specify the amount of RAM installed."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
|
|
|
@ -5,7 +5,8 @@ jobs:
|
||||||
build:
|
build:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
target_name: [ngc, wii, wiiu, switch]
|
# target_name: [ngc, wii, wiiu, switch]
|
||||||
|
target_name: [ngc, wii, wiiu]
|
||||||
build_type: [release, debug]
|
build_type: [release, debug]
|
||||||
include:
|
include:
|
||||||
- libretro_build: 'DEBUG=0'
|
- libretro_build: 'DEBUG=0'
|
||||||
|
@ -18,8 +19,8 @@ jobs:
|
||||||
target_name: wii
|
target_name: wii
|
||||||
- devkit_container: 'devkitpro/devkitppc:latest'
|
- devkit_container: 'devkitpro/devkitppc:latest'
|
||||||
target_name: wiiu
|
target_name: wiiu
|
||||||
- devkit_container: 'devkitpro/devkita64:latest'
|
# - devkit_container: 'devkitpro/devkita64:latest'
|
||||||
target_name: switch
|
# target_name: switch
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: ${{ matrix.devkit_container }}
|
container: ${{ matrix.devkit_container }}
|
||||||
steps:
|
steps:
|
||||||
|
|
|
@ -7,7 +7,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
build_compiler: [gcc, clang]
|
build_compiler: [gcc, clang]
|
||||||
build_type: [release, debug]
|
build_type: [release, debug]
|
||||||
build_options: [default, link_off, translations_only, libretro]
|
# build_options: [default, link_off, translations_only, libretro]
|
||||||
|
build_options: [default, link_off, translations_only]
|
||||||
include:
|
include:
|
||||||
- cmake_compiler: '-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++'
|
- cmake_compiler: '-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++'
|
||||||
build_compiler: gcc
|
build_compiler: gcc
|
||||||
|
@ -21,12 +22,12 @@ jobs:
|
||||||
build_options: link_off
|
build_options: link_off
|
||||||
- cmake_options: '-DTRANSLATIONS_ONLY=ON'
|
- cmake_options: '-DTRANSLATIONS_ONLY=ON'
|
||||||
build_options: translations_only
|
build_options: translations_only
|
||||||
- libretro_build: 'DEBUG=0'
|
# - libretro_build: 'DEBUG=0'
|
||||||
build_type: release
|
# build_type: release
|
||||||
build_options: libretro
|
# build_options: libretro
|
||||||
- libretro_build: 'DEBUG=1'
|
# - libretro_build: 'DEBUG=1'
|
||||||
build_type: debug
|
# build_type: debug
|
||||||
build_options: libretro
|
# build_options: libretro
|
||||||
exclude:
|
exclude:
|
||||||
# Exclude debug/translations_only build
|
# Exclude debug/translations_only build
|
||||||
- build_type: debug
|
- build_type: debug
|
||||||
|
@ -42,8 +43,13 @@ jobs:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: >-
|
run: |
|
||||||
bash installdeps; if [ "${{ matrix.build_compiler }}" = clang ]; then sudo apt -y install clang; fi
|
sudo add-apt-repository ppa:hrzhu/sdl3-backport
|
||||||
|
sudo apt update
|
||||||
|
bash installdeps
|
||||||
|
if [ "${{ matrix.build_compiler }}" = clang ]; then
|
||||||
|
sudo apt -y install clang
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Install xvfb
|
- name: Install xvfb
|
||||||
run: sudo apt -y install xvfb
|
run: sudo apt -y install xvfb
|
||||||
|
@ -61,9 +67,9 @@ jobs:
|
||||||
run: sudo ninja -C build install
|
run: sudo ninja -C build install
|
||||||
|
|
||||||
# Libretro build
|
# Libretro build
|
||||||
- if: matrix.build_options == 'libretro'
|
# - if: matrix.build_options == 'libretro'
|
||||||
name: Build libretro core
|
# name: Build libretro core
|
||||||
run: make -C src/libretro ${{ matrix.libretro_build }}
|
# run: make -C src/libretro ${{ matrix.libretro_build }}
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
- if: matrix.build_options == 'default'
|
- if: matrix.build_options == 'default'
|
||||||
|
|
|
@ -17,3 +17,6 @@ compile_commands.json
|
||||||
|
|
||||||
# mac finder crap
|
# mac finder crap
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
|
|
||||||
|
# online updates header
|
||||||
|
src/wx/winsparkle-path.h
|
||||||
|
|
|
@ -181,7 +181,7 @@ libretro-build-ngc:
|
||||||
extends:
|
extends:
|
||||||
- .libretro-ngc-static-retroarch-master
|
- .libretro-ngc-static-retroarch-master
|
||||||
- .core-defs
|
- .core-defs
|
||||||
|
|
||||||
# Nintendo Wii
|
# Nintendo Wii
|
||||||
libretro-build-wii:
|
libretro-build-wii:
|
||||||
extends:
|
extends:
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
[submodule "dependencies"]
|
[submodule "win32-deps"]
|
||||||
path = dependencies
|
path = win32-deps
|
||||||
url = https://github.com/visualboyadvance-m/dependencies.git
|
url = https://github.com/visualboyadvance-m/win32-deps.git
|
||||||
branch = master
|
[submodule "third_party/googletest"]
|
||||||
|
path = third_party/googletest
|
||||||
|
url = https://github.com/google/googletest.git
|
||||||
|
|
276
CHANGELOG.md
276
CHANGELOG.md
|
@ -4,97 +4,158 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [2.2.2] - 2025-07-30
|
||||||
|
|
||||||
|
========================
|
||||||
|
* 27acf80b - Make language configurable (requires restart) [andyvand]
|
||||||
|
* ae09ab71 - Embed translations for Windows [andyvand]
|
||||||
|
* 47a8e7e8 - Update wxWidgets for Mac builder to 3.3.1 [andyvand]
|
||||||
|
* 8ce4848d - Fix Wii U VC opcodes [andyvand]
|
||||||
|
* dab91fc8 - Fix bigger than 32MB ROM files [andyvand]
|
||||||
|
|
||||||
|
## [2.2.1] - 2025-07-19
|
||||||
|
=======================
|
||||||
|
* 23a3d0b2 - build: fix include paths for bundled SFML [rkitover]
|
||||||
|
* 53f5ec7b - build: fix building with OpenAL enabled [rkitover]
|
||||||
|
* 3ffbe781 - translations: remove ja_JP, 0% and ja exists [rkitover]
|
||||||
|
* ae8bfb4a - Several fixes for windows [danialhorton]
|
||||||
|
* bbaf70c0 - build: fix slow CMake vcpkg startup time [rkitover]
|
||||||
|
* dca11990 - Fix GBA sound [andyvand]
|
||||||
|
* 357eccc6 - build: fix checking if bin pkg host deps installed [rkitover]
|
||||||
|
* d0463ddb - Initial tar support [andyvand]
|
||||||
|
* a808cfb6 - Update macOS plist [andyvand]
|
||||||
|
* 604f5412 - Add LZIP support [andyvand]
|
||||||
|
* 6fedbdc5 - Add .xz support [andyvand]
|
||||||
|
* 0c91d456 - Add .bz2 file support [andyvand]
|
||||||
|
* 3e0541c6 - Update unrar to V7.1.8 [andyvand]
|
||||||
|
* 00e48e11 - Fix RAR support [andyvand]
|
||||||
|
* 3d8ed512 - Use macOS 10.10 Sparkle [andyvand]
|
||||||
|
|
||||||
|
## [2.2.0] - 2025-07-08
|
||||||
|
========================
|
||||||
|
* 865add06 - Adjust throttle limit 450 -> 1000 [rkitover]
|
||||||
|
* 20db9889 - Add dark mode support [andyvand]
|
||||||
|
* fac5d565 - build: use vcpkg host pkgconf when cross compiling [rkitover]
|
||||||
|
* 5702bc51 - build: fix x64-mingw-static for MSYS2 CLANG64 [rkitover]
|
||||||
|
* 5745ed3d - Use external libwebp and use built pcre2 [andyvand]
|
||||||
|
* 5f866f85 - Revert beeping fix and fix again the previous way [andyvand]
|
||||||
|
* 8002f91c - Fix save dialog [andyvand]
|
||||||
|
* cc2bda69 - build: inst host deps for bins only if not [rkitover]
|
||||||
|
* d7c6eb81 - Fix MinGW FFMpeg [andyvand]
|
||||||
|
* 43a6a90a - Fix FFMPEG for macOS [andyvand]
|
||||||
|
* 54f56fc9 - Fix libx265 build for macOS [andyvand]
|
||||||
|
* 31cfe304 - Fix MinGW compile with title of DX9 window [andyvand]
|
||||||
|
* 2c17201c - Separate window for SDL direct3d9 with background input [andyvand]
|
||||||
|
* 6f5c785a - build: add x264+x265 for ffmpeg for macOS [rkitover]
|
||||||
|
* 05d18184 - build: rm FindFFmpeg for distro ver, fix x264/x265 [rkitover]
|
||||||
|
* 856abf80 - build: add option VCPKG_BINARY_PACKAGES [rkitover]
|
||||||
|
* e8d4adaf - build: always use pwsh vcpkg-list [rkitover]
|
||||||
|
* 50aa85d9 - build: update vcpkg ports list, drop gettext [rkitover]
|
||||||
|
* ce7aa3fa - Fix FAudio crash on Windows debug [andyvand]
|
||||||
|
* 4ba7796d - Fix FAudio crash on MSVC [andyvand]
|
||||||
|
* 83707cf5 - Fix Direct3D9 [andyvand]
|
||||||
|
* b82e7a3b - Update wxvbam.rc [andyvand]
|
||||||
|
* f0a30d45 - build: fix installing host build dep bin pkgs [rkitover]
|
||||||
|
* 70d6a1ac - Make Sparkle framework optional [andyvand]
|
||||||
|
* 77f49ac6 - Clean up WinSparkle code [andyvand]
|
||||||
|
* e40c1e71 - Update macOS Sparkle [andyvand]
|
||||||
|
* 8579e192 - Check for kInputBufSize [andyvand]
|
||||||
|
* e64a8b69 - Update 7z_C to 2409 and update extractor [andyvand]
|
||||||
|
* c31499ca - Fix winsparkle dependency and update win32-deps to latest push [andyvand]
|
||||||
|
* 41895eea - Add option not to update vcpkg builds [andyvand]
|
||||||
|
* 05f2cb7d - Fix auto updates [andyvand]
|
||||||
|
* 61be54d3 - build: avoid using VS vcpkg with elevation [rkitover]
|
||||||
|
* 5e2e2ab4 - Add MinGW WinSparkle support [andyvand]
|
||||||
|
* 2c2ee701 - build: minor improvements to the Mac builder [rkitover]
|
||||||
|
* 3c048f17 - Add alert sound on macOS fix [andyvand]
|
||||||
|
* 830c8ccd - Add x264 and x265 to ffmpeg [andyvand]
|
||||||
|
* 8ced18c2 - build: make OpenAL-Soft optional again [rkitover]
|
||||||
|
* 31ce5d17 - CoreAudio fix [andyvand]
|
||||||
|
* ac0dc482 - Fix SDL3 detection [andyvand]
|
||||||
|
* 5b9a26ba - build: make some minor CMake improvements [rkitover]
|
||||||
|
* 9712c424 - build: make some minor fixes to Mac builder [rkitover]
|
||||||
|
* 12f2d88c - Update versions on macOS build script [andyvand]
|
||||||
|
* 79d34535 - Implement CoreAudio driver [andyvand]
|
||||||
|
* 34e46945 - build: generalize linking openal-soft to libfmt [rkitover]
|
||||||
|
* 5529797f - Set directory path for generic file dialog [andyvand]
|
||||||
|
* bd0a59cc - ci: fix shell syntax for Ubuntu runner [rkitover]
|
||||||
|
* d2762a95 - ci: add libsdl3-dev for Ubuntu runner [rkitover]
|
||||||
|
* 1c436f2d - Add MSVC secure library functions [andyvand]
|
||||||
|
* 8f47df28 - Add entitlements file for sandboxing [andyvand]
|
||||||
|
* db5c890e - Add option for generic file dialogs [andyvand]
|
||||||
|
* 7dbad8e8 - translations: transifex pull [rkitover]
|
||||||
|
* d3da0492 - Update nixpkgs for SDL3 [andyvand]
|
||||||
|
* ef46bb7e - build: in installdeps for SUSE s/libSDL3/SDL3/ [rkitover]
|
||||||
|
* a3b92a33 - build: update installdeps to SDL3 [rkitover]
|
||||||
|
* 2f92dd73 - Add MSVC 2022 libretro support [andyvand]
|
||||||
|
* 07c7bb40 - Fix AVCodec deprecations and fix warnings [andyvand]
|
||||||
|
* ed013bd2 - Fix SFML deprecations and fix SFML warnings [andyvand]
|
||||||
|
* 116af5c6 - build: replace sdl2 vcpkg port with sdl3 [rkitover]
|
||||||
|
* 1788b366 - build: default ENABLE_SDL3=ON in CMake [rkitover]
|
||||||
|
* 0820ba58 - BUILDER: Updated core.sh source packages required to build vba-m [zachbacon]
|
||||||
|
* f975809e - Update to SDL3 APIs, fix bpps, add SDL audio/video, add Metal video, fix Quartz drawing [andyvand]
|
||||||
|
* 18c3c3bd - build: fix link error on MSVC for SFML port [andyvand]
|
||||||
|
* 0aecfb5d - build: make minor improvements to the Mac builder [rkitover]
|
||||||
|
* dae4397d - build: lower bundled SFML C++17 to C++14 [rkitover]
|
||||||
|
* 4cf6cccb - build: bundle SFML 3.x sys/network in third_party [rkitover]
|
||||||
|
* 9e724ea4 - build: support building ARM64 binary for Mac [rkitover]
|
||||||
|
* eb26ec2e - Enable Hide Status Bar in UI Settings for macOS [rkitover]
|
||||||
|
* 6a9eeeae - core.sh Switched to github source for nasm [zachbacon]
|
||||||
|
* 9f628584 - initialize sound_buffer_len_ to silence a warning. [danialhorton]
|
||||||
|
* e5ad7b34 - build: find_package(nanosvg) w/ vcpkg [rkitover]
|
||||||
|
* 94752f83 - [FAudio]Correct the behavior of device_changed check [danialhorton]
|
||||||
|
* 8936feaa - build: add libtiff to Nix derivation [rkitover]
|
||||||
|
* f93a32ab - build: add libtiff to brews on macOS [rkitover]
|
||||||
|
* 3fa850c1 - build: capitalize ARCH_NAME in CMake [rkitover]
|
||||||
|
* 364776b8 - build: s/-Ofast/-O3 -ffast-math/ [rkitover]
|
||||||
|
* 61394282 - translations: remove dup Chinese translations [rkitover]
|
||||||
|
* 29e85e5d - build: update Link SFML usage to SFML 3.x APIs [rkitover]
|
||||||
|
* e2283946 - [Input] Process key down event for some controls [steelskin]
|
||||||
|
* 3fdc30f7 - Mark `wxEVT_KEY_DOWN` as processed in `wxvbamApp` (#1424) [Steelskin]
|
||||||
|
* 2de7efd9 - Reallocate GBA ROM to the new size(#1422) [danialhorton]
|
||||||
|
* e4f17d33 - [Sound] Set volume on game startup (#1410) [Steelskin]
|
||||||
|
* 2ab707c0 - build: update default.nix [rkitover]
|
||||||
|
* 4dba9287 - build: update installdeps for OpenSUSE [rkitover]
|
||||||
|
* 44aa859e - build: add cmake var and cpp macro for XP builds [rkitover]
|
||||||
|
* 5a2d3a6f - build: set arch to pentium3 not -mmx for XP builds [rkitover]
|
||||||
|
* d6b939c4 - Set developer id/component type in metainfo.xml [116445585+PunkPangolin]
|
||||||
|
* c6da07fe - build: link avrt for OpenAL on WIN32 [rkitover]
|
||||||
|
* 94979eff - build: initialize GTest submodule in CMake [rkitover]
|
||||||
|
* dcb9ccca - [gtest] Use googletest as a submodule (#1373) [Steelskin]
|
||||||
|
* a8ec85d5 - [GB] Add support for per-game overrides (#1370) [Steelskin]
|
||||||
|
* 9d20ce9b - [Input] Reset keyboard tracking on focus loss (#1357) [Steelskin]
|
||||||
|
* cdfd37fc - build: rename dependencies submodule -> win32-deps [rkitover]
|
||||||
|
* 4f8d0a88 - build: update harfbuzz for macOS builder [rkitover]
|
||||||
|
* b22e9fb7 - Ignore illegal opcodes used by Wii U VC (#1351) [Steelskin]
|
||||||
|
* 7fa90531 - Disable open menu tracking outside of Windows (#1350) [Steelskin]
|
||||||
|
* e1c2ecc5 - [dialogs] Display all controls in AccelConfig on Mac (#1349) [Steelskin]
|
||||||
|
* 4c450ab3 - build: fix linking FAudio statically on MINGW [rkitover]
|
||||||
|
* d5e1a1f3 - [GB] Properly set OPRI on startup [steelskin]
|
||||||
|
* 821b9176 - build: do not use debug libs for RelWithDebInfo [rkitover]
|
||||||
|
* 9031103c - build: fix linking non-debug pcre for debug wx [rkitover]
|
||||||
|
|
||||||
|
## [2.1.11] - 2024-09-15
|
||||||
|
|
||||||
|
==========================
|
||||||
|
* 3eea90af - build: set BUILD_TESTING=OFF when not git checkout [rkitover]
|
||||||
|
* b3952d74 - build: fix ENABLE_LIRC=ON [rkitover]
|
||||||
|
* f264e7f8 - Fix Help -> Translations URL [rkitover]
|
||||||
|
* 61f427de - Write shortcuts in the proper section (#1335) [Steelskin]
|
||||||
|
* d619ee2b - build: fix installing GoogleTest [rkitover]
|
||||||
|
* 26207038 - Update WinSparkle to 0.8.1 and add ARM64 [rkitover]
|
||||||
|
|
||||||
## [2.1.10] - 2024-09-08
|
## [2.1.10] - 2024-09-08
|
||||||
|
|
||||||
==========================
|
==========================
|
||||||
* 2b8f9f71 - Copy string options rather than referencing them [steelskin]
|
|
||||||
* e76cef79 - Remove cast for UTF-16 -> UTF-8 conversion [steelskin]
|
|
||||||
* 7f06428d - Disable dialog position save/restore on wxGTK (#1331) [Steelskin]
|
* 7f06428d - Disable dialog position save/restore on wxGTK (#1331) [Steelskin]
|
||||||
* e4a93404 - Update README.md and Developer Manual [rkitover]
|
|
||||||
* 5d7023a5 - translations: transifex pull [rkitover]
|
|
||||||
* 3bd7c918 - build: fix cmake -DTAG_RELEASE functionality [rkitover]
|
|
||||||
* 67e4944c - translations: transifex pull [rkitover]
|
|
||||||
* df4ff16e - translations: transifex pull [rkitover]
|
|
||||||
* d4805065 - translations: transifex pull [rkitover]
|
|
||||||
* e39b1f2c - translations: transifex pull [rkitover]
|
|
||||||
* 73b65a65 - translations: transifex pull [rkitover]
|
|
||||||
* 9e556e6a - translations: transifex pull [rkitover]
|
|
||||||
* 11e73f2c - translations: transifex pull [rkitover]
|
|
||||||
* e97b0448 - translations: transifex pull [rkitover]
|
|
||||||
* aa6ed14b - [FAudio] Always convert UTF-16 names (#1328) [Steelskin]
|
|
||||||
* 2ce20c4f - translations: transifex pull [rkitover]
|
|
||||||
* e4ef4aa6 - Propagate key events (#1323) [Steelskin]
|
* e4ef4aa6 - Propagate key events (#1323) [Steelskin]
|
||||||
* cf5cb40c - translations: transifex pull [rkitover]
|
|
||||||
* c450d143 - translations: transifex pull [rkitover]
|
|
||||||
* 41572be3 - translations: transifex pull [rkitover]
|
|
||||||
* 4f8da1c5 - translations: transifex pull [rkitover]
|
|
||||||
* 32091669 - translations: transifex pull [rkitover]
|
|
||||||
* abd72a5b - translations: transifex pull [rkitover]
|
|
||||||
* 7e6349b1 - translations: transifex pull [rkitover]
|
|
||||||
* 0782be74 - translations: transifex pull [rkitover]
|
|
||||||
* a7b545ab - translations: transifex pull [rkitover]
|
|
||||||
* 1a564f90 - translations: transifex pull [rkitover]
|
|
||||||
* 3d4e03f8 - translations: transifex pull [rkitover]
|
|
||||||
* fc17209a - translations: transifex pull [rkitover]
|
|
||||||
* 38877ef2 - translations: transifex pull [rkitover]
|
|
||||||
* 8691a15b - translations: transifex pull [rkitover]
|
|
||||||
* 961fd030 - translations: rebuild source .pot [rkitover]
|
|
||||||
* e2cf6ecb - Add option to mute sound during speedup [rkitover]
|
* e2cf6ecb - Add option to mute sound during speedup [rkitover]
|
||||||
* 7a0826a6 - Migrate vba-m.com links in .github folder [aavindraa]
|
|
||||||
* d516683a - build: fix for wx using GTK2 [rkitover]
|
* d516683a - build: fix for wx using GTK2 [rkitover]
|
||||||
* 834c7de8 - build: update macOS builder dists [rkitover]
|
* 834c7de8 - build: update macOS builder dists [rkitover]
|
||||||
* 4f1a5dd7 - [Test] Add tests for widgets code [steelskin]
|
|
||||||
* 5766b9b9 - translations: transifex pull [rkitover]
|
|
||||||
* 5d8426d3 - translations: transifex pull [rkitover]
|
|
||||||
* 63ec3528 - translations: transifex pull [rkitover]
|
|
||||||
* f646c384 - [Test] Change assert to custom CHECK macros [steelskin]
|
|
||||||
* 09433875 - [CI] Remove workaround for MSVC CI [steelskin]
|
|
||||||
* 05c09ff5 - [Build] Add devkitpro-based libretro targets to CI [steelskin]
|
|
||||||
* 7f78fbb3 - translations: transifex pull [rkitover]
|
|
||||||
* 261e26f4 - translations: transifex pull [rkitover]
|
|
||||||
* ed820708 - translations: transifex pull [rkitover]
|
|
||||||
* 5b8b6a0b - [Test] Add tests for the EmulatedGamepad class [steelskin]
|
|
||||||
* 8809ce26 - [Test] Add tests for the Bindings class [steelskin]
|
|
||||||
* a4862585 - [Build] Share wx-related targets configuration [steelskin]
|
|
||||||
* 55c1477d - build: disable FAudio for 32 bit Windows builds [rkitover]
|
|
||||||
* 2d7a1ea2 - build: fix faudio linkage regression on MSVC+vcpkg [rkitover]
|
|
||||||
* 244149c0 - build: fix faudio static linkage [rkitover]
|
|
||||||
* c0bcf3bf - [Test] Add tests for many config classes [steelskin]
|
|
||||||
* 13756bcb - [Test] Replace doctest with googletest [steelskin]
|
|
||||||
* fc82e062 - build: do not build SDL bin on Windows or macOS [rkitover]
|
* fc82e062 - build: do not build SDL bin on Windows or macOS [rkitover]
|
||||||
* df89beb2 - build: disable gpg signatures by default [rkitover]
|
|
||||||
* 82eda48e - translations: transifex pull [rkitover]
|
|
||||||
* b47787b3 - translations: rebuild source .pot [rkitover]
|
|
||||||
* c9668d9a - [config] Create the vbam-wx-config target [steelskin]
|
|
||||||
* 90a56c69 - [config] Move strutils to src/config/ [steelskin]
|
|
||||||
* d377f7ab - [CI] Install only one MSVC toolchain [steelskin]
|
|
||||||
* 1fac1297 - translations: transifex pull [rkitover]
|
|
||||||
* af7d5f7b - translations: transifex pull [rkitover]
|
|
||||||
* 28f7c201 - translations: transifex pull [rkitover]
|
|
||||||
* 486330f2 - Activate GitHub Sponsors [rkitover]
|
|
||||||
* 1ae78a04 - translations: transifex pull [rkitover]
|
|
||||||
* c776da71 - translations: rebuild source .pot [rkitover]
|
|
||||||
* d543784a - [UserInput] Filter key events globally [steelskin]
|
* d543784a - [UserInput] Filter key events globally [steelskin]
|
||||||
* 902c6c8e - [UserInput] Only process shortcut commands once [steelskin]
|
* 902c6c8e - [UserInput] Only process shortcut commands once [steelskin]
|
||||||
* d32be9dd - Move cmdtab and command enable flags to config/ [steelskin]
|
|
||||||
* b7765092 - [bindings] Set default shortcut for recent file 3 [steelskin]
|
* b7765092 - [bindings] Set default shortcut for recent file 3 [steelskin]
|
||||||
* 56eb97c8 - translations: transifex pull [rkitover]
|
|
||||||
* 9f46c575 - translations: transifex pull [rkitover]
|
|
||||||
* e0402a9b - translations: transifex pull [rkitover]
|
|
||||||
* 3e30f54d - translations: fix strings starting with lowercase [rkitover]
|
|
||||||
* d73085a8 - translations: transifex pull [rkitover]
|
|
||||||
* 8eb6a690 - translations: transifex pull [rkitover]
|
|
||||||
* 3615137c - translations: transifex pull [rkitover]
|
|
||||||
* bbd5b76f - translations: transifex pull [rkitover]
|
|
||||||
* bb3604f3 - translations: rebuild source .pot [rkitover]
|
|
||||||
* 18a0067c - [Input] Unify command handling [steelskin]
|
|
||||||
* cfdbdc4e - [Input] Move input configuration objects to app [steelskin]
|
|
||||||
* 32ca2ae4 - translations: transifex pull [rkitover]
|
|
||||||
* bad96cf9 - translations: rebuild source .pot [rkitover]
|
|
||||||
* 62294702 - [Input] Remove transitional key, mod, joy triplet [steelskin]
|
|
||||||
* 72c4f33d - translations: transifex pull [rkitover]
|
|
||||||
* 3fe57f54 - translations: rebuild source .pot [rkitover]
|
|
||||||
* 1e1a369c - [Input] Unify UserInput event handling [steelskin]
|
|
||||||
* cc65ef28 - doc: add system requirements to README.md [danialhorton]
|
* cc65ef28 - doc: add system requirements to README.md [danialhorton]
|
||||||
* 32627f6b - [Dialogs] Save and restore dialog positions [steelskin]
|
* 32627f6b - [Dialogs] Save and restore dialog positions [steelskin]
|
||||||
* 41952d06 - build: update macOS linker tool to 1.5 [rkitover]
|
* 41952d06 - build: update macOS linker tool to 1.5 [rkitover]
|
||||||
|
@ -102,91 +163,34 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
||||||
* 1b77d659 - build: update macOS build to ffmpeg 7.0 [rkitover]
|
* 1b77d659 - build: update macOS build to ffmpeg 7.0 [rkitover]
|
||||||
* 8d08223d - build: fix compatibility with older ffmpeg [rkitover]
|
* 8d08223d - build: fix compatibility with older ffmpeg [rkitover]
|
||||||
* af6028a9 - build: fix build for nix on macOS [rkitover]
|
* af6028a9 - build: fix build for nix on macOS [rkitover]
|
||||||
* ff3b5ee0 - build: update mac link tool to 1.4 [rkitover]
|
|
||||||
* b52edf52 - build: fix building on macOS with Homebrew [rkitover]
|
* b52edf52 - build: fix building on macOS with Homebrew [rkitover]
|
||||||
* 6766b9ca - build: fix ffmpeg 7.x compat [rkitover]
|
* 6766b9ca - build: fix ffmpeg 7.x compat [rkitover]
|
||||||
* 8eae2e5b - build: add FAudio to nix deps [rkitover]
|
|
||||||
* 50d17363 - build: fail finding FAudio silently [rkitover]
|
|
||||||
* 795f25bb - build: fix nix deps for OpenGL [rkitover]
|
* 795f25bb - build: fix nix deps for OpenGL [rkitover]
|
||||||
* 647be137 - gba: set cpsr=spsr when switching to FIQ mode [40356555+Aikku93]
|
* 647be137 - gba: set cpsr=spsr when switching to FIQ mode [40356555+Aikku93]
|
||||||
* 8abe3e79 - build: remove -lgcc from static link flags [rkitover]
|
* 8abe3e79 - build: remove -lgcc from static link flags [rkitover]
|
||||||
* 710ffeb1 - build: update mac build [rkitover]
|
|
||||||
* a855ff54 - translations: transifex pull [rkitover]
|
|
||||||
* dbb5e534 - translations: transifex pull [rkitover]
|
|
||||||
* 75395696 - translations: transifex pull [rkitover]
|
|
||||||
* b00e23f5 - build: enable FAudio on non-Windows [rkitover]
|
|
||||||
* 8ef9a66b - [FAudio] Switch to portable `condition_variable` [steelskin]
|
|
||||||
* 0e503a52 - translations: transifex pull [rkitover]
|
|
||||||
* b4b02040 - translations: rebuild source .pot [rkitover]
|
|
||||||
* f4835674 - [Audio] Rework audio devices enumeration [steelskin]
|
* f4835674 - [Audio] Rework audio devices enumeration [steelskin]
|
||||||
* 4104a3d1 - build: fix codesigning Windows bins with signtool [rkitover]
|
|
||||||
* 1e1ec2e3 - translations: transifex pull [rkitover]
|
|
||||||
* ff21f8da - build: enable FAudio sound driver on Windows [rkitover]
|
|
||||||
* 775a571f - build: fix detecting Visual Studio default vcpkg [rkitover]
|
* 775a571f - build: fix detecting Visual Studio default vcpkg [rkitover]
|
||||||
* 64abd3e8 - [Audio] Remove manual memory allocations [steelskin]
|
* 64abd3e8 - [Audio] Remove manual memory allocations [steelskin]
|
||||||
* 56320ec6 - translations: transifex pull [rkitover]
|
|
||||||
* 311b232e - FAudio: Implement and have functional FAudio output [zachbacon]
|
|
||||||
* 0e13cc93 - translations: transifex pull [rkitover]
|
|
||||||
* b455de01 - translations: transifex pull [rkitover]
|
|
||||||
* c3053d38 - translations: rebuild source .pot [rkitover]
|
|
||||||
* c8106573 - [Dialogs] Move SoundConfig dialog to its own class [steelskin]
|
|
||||||
* 047ad277 - [Dialogs] Prevent viewers from causing a crash [steelskin]
|
* 047ad277 - [Dialogs] Prevent viewers from causing a crash [steelskin]
|
||||||
* ecd16a21 - translations: transifex pull [rkitover]
|
|
||||||
* 1594fda1 - translations: transifex pull [rkitover]
|
|
||||||
* de9b3a21 - translations: transifex pull [rkitover]
|
|
||||||
* 045c98d8 - build: only use -Werror=lto-type-mismatch on gcc [rkitover]
|
* 045c98d8 - build: only use -Werror=lto-type-mismatch on gcc [rkitover]
|
||||||
* 4ace296b - [Build] Improve the TRANSLATIONS_ONLY build speed [steelskin]
|
|
||||||
* 011adce2 - translations: transifex pull [rkitover]
|
|
||||||
* cc99ec0c - translations: transifex pull [rkitover]
|
|
||||||
* 1d652edf - translations: rebuild source .pot [rkitover]
|
|
||||||
* db08ca93 - [Build] Improve CI build coverage [steelskin]
|
|
||||||
* 3518dc6a - build: fix LTO on Linux [rkitover]
|
* 3518dc6a - build: fix LTO on Linux [rkitover]
|
||||||
* cc9a03ce - Add toggle: SDL GameController mode for joysticks [rkitover]
|
* cc9a03ce - Add toggle: SDL GameController mode for joysticks [rkitover]
|
||||||
* 8576733c - [Build] Remove lingering references to OpenAl [steelskin]
|
* 8576733c - [Build] Remove lingering references to OpenAl [steelskin]
|
||||||
* c6da7e38 - build: add faudio to list of optional vcpkg deps [rkitover]
|
|
||||||
* 98abb8c2 - translations: transifex pull [rkitover]
|
|
||||||
* 05561922 - build: fix MSYS2 check [rkitover]
|
* 05561922 - build: fix MSYS2 check [rkitover]
|
||||||
* d9432ebb - build: fix build on MINGW{64,32}/UCRT64 on MSYS2 [rkitover]
|
* d9432ebb - build: fix build on MINGW{64,32}/UCRT64 on MSYS2 [rkitover]
|
||||||
* f57cad67 - build: fix static linking on MSYS2 CLANG64 [rkitover]
|
* f57cad67 - build: fix static linking on MSYS2 CLANG64 [rkitover]
|
||||||
* ce7cc4e2 - build: add FAudio to MSYS2 deps [rkitover]
|
|
||||||
* 8183a005 - translations: transifex pull [rkitover]
|
|
||||||
* 75a34cd0 - translations: transifex pull [rkitover]
|
|
||||||
* 23e15734 - build: set wxWidgets_DIR with vcpkg [rkitover]
|
* 23e15734 - build: set wxWidgets_DIR with vcpkg [rkitover]
|
||||||
* 98b51910 - [Build] Remove ENABLE_NLS, fix TRANSLATIONS_ONLY [steelskin]
|
* 98b51910 - [Build] Remove ENABLE_NLS, fix TRANSLATIONS_ONLY [steelskin]
|
||||||
* c3f0aa2e - translations: transifex pull [rkitover]
|
|
||||||
* ea596e4c - translations: rebuild source .pot [rkitover]
|
|
||||||
* 68adb14b - [Build] Use Toolchain-gcc-clang for non-MSVC [steelskin]
|
|
||||||
* a565cea8 - [Build] Remove the OpenGL check [steelskin]
|
* a565cea8 - [Build] Remove the OpenGL check [steelskin]
|
||||||
* 6ac95d37 - [Build] Rework wx/CMakeLists.txt [steelskin]
|
|
||||||
* d4430ca4 - [Build] Move SDL build configuration to `sdl/` [steelskin]
|
|
||||||
* 000c7f85 - [Build] Move non-core common code to `components/` [steelskin]
|
|
||||||
* 047bd935 - [Build] Move the core emulator to src/core/ [steelskin]
|
|
||||||
* 33cb9a66 - [Build] Move System.h and most of Util.h to core/ [steelskin]
|
|
||||||
* f8374b52 - [Build] Move more of src/common to src/core/base [steelskin]
|
|
||||||
* 2f10e71f - [Build] Cleanup files in src/common [steelskin]
|
|
||||||
* 8f92d999 - [Build] Move file-related utilities to core/base [steelskin]
|
|
||||||
* ce12db1e - [Build] Move fex/ to src/core/fex/ [steelskin]
|
|
||||||
* d8a1886c - [Build] Use new way of setting /Z flag with MSVC [steelskin]
|
|
||||||
* 1d051d0e - [Build] Make powershell optional on non-Windows (#1248) [Steelskin]
|
|
||||||
* f96e42fe - build: cmake refactor and improvements [Steelskin]
|
* f96e42fe - build: cmake refactor and improvements [Steelskin]
|
||||||
* aa59d944 - [Build] Add toolchain-specific files (#1244) [Steelskin]
|
|
||||||
* 07e49025 - Fix most remaining release warnings (#1243) [Steelskin]
|
* 07e49025 - Fix most remaining release warnings (#1243) [Steelskin]
|
||||||
* 18b97b43 - Fix various build warnings (#1242) [Steelskin]
|
* 18b97b43 - Fix various build warnings (#1242) [Steelskin]
|
||||||
* b45a4066 - ci: add clang+bintools for macOS, disable LTO [rkitover]
|
|
||||||
* 1fff5cb1 - Move build options to their own file [steelskin]
|
|
||||||
* 13a16eb7 - Fix various warnings in filters and headers (#1241) [Steelskin]
|
* 13a16eb7 - Fix various warnings in filters and headers (#1241) [Steelskin]
|
||||||
* 69769c1b - [CI] Use proper POWERSHELL variable casing [steelskin]
|
|
||||||
* e998a401 - [CI] Properly inclue SDL2 directories for vbamcore (#1240) [Steelskin]
|
|
||||||
* f17a9855 - [CI] Look for pwsh in addition to powerhsell (#1239) [Steelskin]
|
|
||||||
* 85b7cf7a - translations: transifex pull [rkitover]
|
|
||||||
* f46da1c5 - build: remove our version of FindSDL2.cmake [rkitover]
|
* f46da1c5 - build: remove our version of FindSDL2.cmake [rkitover]
|
||||||
* 404e9a1a - build: add clang to ./installdeps for MSYS2 [rkitover]
|
* 404e9a1a - build: add clang to ./installdeps for MSYS2 [rkitover]
|
||||||
* 3ec8960f - translations: transifex pull [rkitover]
|
|
||||||
* 613bd403 - Make menu more reasonably organized (#1230) [wwrustc]
|
* 613bd403 - Make menu more reasonably organized (#1230) [wwrustc]
|
||||||
* ecb69a24 - build: add pthreads w/vcpkg, link FAudio target [rkitover]
|
|
||||||
* 215e3c5a - build: use find_program() to find powershell [rkitover]
|
* 215e3c5a - build: use find_program() to find powershell [rkitover]
|
||||||
* e5aa685f - build: don't use wx utils as UNIX cmds on Windows [rkitover]
|
* e5aa685f - build: don't use wx utils as UNIX cmds on Windows [rkitover]
|
||||||
* 53e1f44a - translations: transifex pull [rkitover]
|
|
||||||
* 9e4c8e17 - build: fix gentoo dependency namespaces [68k]
|
* 9e4c8e17 - build: fix gentoo dependency namespaces [68k]
|
||||||
* 5f853b99 - Update metainfo.xml to new standards [jhonny.oliveira]
|
* 5f853b99 - Update metainfo.xml to new standards [jhonny.oliveira]
|
||||||
* e7d135db - Update links to new domain visualboyadvance-m.org [rkitover]
|
* e7d135db - Update links to new domain visualboyadvance-m.org [rkitover]
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
cmake_minimum_required(VERSION 3.19)
|
cmake_minimum_required(VERSION 3.19)
|
||||||
cmake_policy(VERSION 3.19...3.28.3)
|
cmake_policy(VERSION 3.19...3.28.3)
|
||||||
|
|
||||||
|
# Use new link library de-duplication behavior.
|
||||||
|
cmake_policy(SET CMP0156 NEW)
|
||||||
|
cmake_policy(SET CMP0179 NEW)
|
||||||
|
# cmake_policy(SET CMP0181 NEW)
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@ -22,12 +27,16 @@ if(TAG_RELEASE)
|
||||||
include(MakeReleaseCommitAndTag)
|
include(MakeReleaseCommitAndTag)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(VCPKG_DEPS pkgconf zlib pthreads "sdl2[samplerate]" gettext wxwidgets)
|
option(VCPKG_BINARY_PACKAGES "Use vcpkg binary packages" TRUE)
|
||||||
|
|
||||||
|
set(VCPKG_DEPS zlib bzip2 "liblzma[tools]" pthreads gettext-libintl wxwidgets nanosvg)
|
||||||
|
|
||||||
set(VCPKG_DEPS_OPTIONAL
|
set(VCPKG_DEPS_OPTIONAL
|
||||||
sfml ENABLE_LINK
|
"sdl3[vulkan]" ENABLE_SDL3
|
||||||
ffmpeg ENABLE_FFMPEG
|
"sdl2[samplerate]" ENABLE_SDL2
|
||||||
faudio ENABLE_FAUDIO
|
openal-soft ENABLE_OPENAL
|
||||||
|
"ffmpeg[x264,x265]" ENABLE_FFMPEG
|
||||||
|
faudio ENABLE_FAUDIO
|
||||||
)
|
)
|
||||||
|
|
||||||
include(Set-Toolchain-vcpkg)
|
include(Set-Toolchain-vcpkg)
|
||||||
|
@ -52,7 +61,7 @@ if(GIT_FOUND AND WIN32)
|
||||||
# Win32 deps submodule
|
# Win32 deps submodule
|
||||||
set(SUBMODULE_MANUAL_UPDATE FALSE)
|
set(SUBMODULE_MANUAL_UPDATE FALSE)
|
||||||
|
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/.git" AND NOT EXISTS "${CMAKE_SOURCE_DIR}/dependencies/mingw-xaudio/include")
|
if(EXISTS "${CMAKE_SOURCE_DIR}/.git" AND NOT EXISTS "${CMAKE_SOURCE_DIR}/win32-deps/mingw-xaudio/include")
|
||||||
set(SUBMODULE_MANUAL_UPDATE TRUE)
|
set(SUBMODULE_MANUAL_UPDATE TRUE)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND "${GIT_EXECUTABLE}" submodule update --init --remote --recursive
|
COMMAND "${GIT_EXECUTABLE}" submodule update --init --remote --recursive
|
||||||
|
@ -61,7 +70,7 @@ if(GIT_FOUND AND WIN32)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/dependencies/mingw-xaudio/include")
|
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/win32-deps/mingw-xaudio/include")
|
||||||
if(NOT (SUBMODULE_MANUAL_UPDATE AND SUBMODULE_UPDATE_STATUS EQUAL 0))
|
if(NOT (SUBMODULE_MANUAL_UPDATE AND SUBMODULE_UPDATE_STATUS EQUAL 0))
|
||||||
message(FATAL_ERROR "Please pull in git submodules, e.g.\nrun: git submodule update --init --remote --recursive")
|
message(FATAL_ERROR "Please pull in git submodules, e.g.\nrun: git submodule update --init --remote --recursive")
|
||||||
endif()
|
endif()
|
||||||
|
@ -75,6 +84,25 @@ set(CMAKE_C_STANDARD_REQUIRED True)
|
||||||
|
|
||||||
project(VBA-M C CXX)
|
project(VBA-M C CXX)
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
include(CheckLanguage)
|
||||||
|
include(MetalShaderSupport)
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND xcrun -f metal
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
OUTPUT_VARIABLE CMAKE_Metal_COMPILER
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_COMPILER)
|
||||||
|
check_language(Metal)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_Metal_COMPILER)
|
||||||
|
enable_language(Metal)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
@ -83,16 +111,34 @@ include(Options)
|
||||||
include(Toolchain)
|
include(Toolchain)
|
||||||
include(Dependencies)
|
include(Dependencies)
|
||||||
|
|
||||||
|
# We target Windows XP for 32 bit Windows builds.
|
||||||
|
if(WIN32 AND X86)
|
||||||
|
add_compile_definitions(-DWINVER=0x0501 -D_WIN32_WINNT=0x0501)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Disable tests when not in a git checkout.
|
||||||
|
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||||
|
set(BUILD_TESTING OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Configure gtest
|
# Configure gtest
|
||||||
if(BUILD_TESTING)
|
if(BUILD_TESTING)
|
||||||
FetchContent_Declare(googletest
|
|
||||||
URL https://github.com/google/googletest/archive/2d16ed055d09c3689d44b272adc097393de948a0.zip
|
|
||||||
)
|
|
||||||
|
|
||||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||||
FetchContent_MakeAvailable(googletest)
|
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
include(GoogleTest)
|
if(NOT EXISTS third_party/googletest/CMakeLists.txt)
|
||||||
|
execute_process(
|
||||||
|
COMMAND git submodule update --init --recursive -- third_party/googletest
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(EXISTS third_party/googletest/CMakeLists.txt)
|
||||||
|
add_subdirectory(./third_party/googletest)
|
||||||
|
include(GoogleTest)
|
||||||
|
else()
|
||||||
|
set(BUILD_TESTING OFF)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_PREFIX_PATH AND (NOT ("$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")))
|
if(NOT CMAKE_PREFIX_PATH AND (NOT ("$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")))
|
||||||
|
@ -105,11 +151,6 @@ elseif(NOT CMAKE_BUILD_TYPE MATCHES "^(Release|Debug|RelWithDebInfo|MinSizeRel)$
|
||||||
message(FATAL_ERROR "Invalid CMAKE_BUILD_TYPE: '${CMAKE_BUILD_TYPE}', must be one of: 'Release', 'Debug', 'RelWithDebInfo' or 'MinSizeRel'")
|
message(FATAL_ERROR "Invalid CMAKE_BUILD_TYPE: '${CMAKE_BUILD_TYPE}', must be one of: 'Release', 'Debug', 'RelWithDebInfo' or 'MinSizeRel'")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Link debug libs for RelWithDebInfo
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
||||||
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO "Debug")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(MSYS OFF)
|
set(MSYS OFF)
|
||||||
if(NOT "$ENV{MSYSTEM_PREFIX}" STREQUAL "")
|
if(NOT "$ENV{MSYSTEM_PREFIX}" STREQUAL "")
|
||||||
set(MSYS ON)
|
set(MSYS ON)
|
||||||
|
@ -177,6 +218,16 @@ set(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale)
|
||||||
if(NOT TRANSLATIONS_ONLY)
|
if(NOT TRANSLATIONS_ONLY)
|
||||||
add_subdirectory(third_party/include/nonstd)
|
add_subdirectory(third_party/include/nonstd)
|
||||||
add_subdirectory(third_party/include/stb)
|
add_subdirectory(third_party/include/stb)
|
||||||
|
add_subdirectory(third_party/include/ghc)
|
||||||
|
|
||||||
|
if(ENABLE_LINK)
|
||||||
|
include_directories(third_party/sfml/include)
|
||||||
|
add_subdirectory(third_party/sfml/src/SFML/System EXCLUDE_FROM_ALL)
|
||||||
|
add_subdirectory(third_party/sfml/src/SFML/Network EXCLUDE_FROM_ALL)
|
||||||
|
set(SFML_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/third_party/sfml/include)
|
||||||
|
set(SFML_LIBRARIES sfml-system sfml-network)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(src/core)
|
add_subdirectory(src/core)
|
||||||
add_subdirectory(src/components)
|
add_subdirectory(src/components)
|
||||||
add_subdirectory(src/sdl)
|
add_subdirectory(src/sdl)
|
||||||
|
@ -190,5 +241,5 @@ set(CPACK_SOURCE_GENERATOR "TGZ")
|
||||||
set(CPACK_PACKAGE_VERSION_MAJOR "2")
|
set(CPACK_PACKAGE_VERSION_MAJOR "2")
|
||||||
set(CPACK_PACKAGE_VERSION_MINOR "0")
|
set(CPACK_PACKAGE_VERSION_MINOR "0")
|
||||||
set(CPACK_PACKAGE_VERSION_PATCH "0-Git-${COMMITHASH}")
|
set(CPACK_PACKAGE_VERSION_PATCH "0-Git-${COMMITHASH}")
|
||||||
list(APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/dependencies")
|
list(APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/win32-deps")
|
||||||
include(CPack)
|
include(CPack)
|
||||||
|
|
|
@ -33,6 +33,8 @@ setup guides.
|
||||||
|
|
||||||
Follow the following steps to process newly submitted issues:
|
Follow the following steps to process newly submitted issues:
|
||||||
|
|
||||||
|
- Edit the user's post to remove any links to illegal content such as ROM files.
|
||||||
|
|
||||||
- Edit the user's post to remove unused template sections etc.. Rephrase the
|
- Edit the user's post to remove unused template sections etc.. Rephrase the
|
||||||
issue title if it needs to be clarified.
|
issue title if it needs to be clarified.
|
||||||
|
|
||||||
|
@ -48,13 +50,13 @@ Follow the following steps to process newly submitted issues:
|
||||||
|
|
||||||
#### Resolving Issues
|
#### Resolving Issues
|
||||||
|
|
||||||
- An issue is resolved by closing it in github. A commit that fixes the issue
|
- An issue is resolved by closing it in GitHub. A commit that fixes the issue
|
||||||
should have the following line near the end of the body of the commit message:
|
should have the following line near the end of the body of the commit message:
|
||||||
```
|
```
|
||||||
Fix #999.
|
Fix #999.
|
||||||
```
|
```
|
||||||
This will automatically close the issue and assign the closing commit in the
|
This will automatically close the issue and assign the closing commit in the
|
||||||
github metadata when it is merged to master. The issue can be reopened if
|
GitHub metadata when it is merged to master. The issue can be reopened if
|
||||||
needed.
|
needed.
|
||||||
|
|
||||||
- A commit that is work towards resolving an issue, should have the issue number
|
- A commit that is work towards resolving an issue, should have the issue number
|
||||||
|
@ -83,13 +85,8 @@ A commit message must always have a title and a description, the description
|
||||||
must be independent of the title line, if necessary repeat the information in
|
must be independent of the title line, if necessary repeat the information in
|
||||||
the title line in the description.
|
the title line in the description.
|
||||||
|
|
||||||
Make sure the git history in your branch is clean and logical, edit when
|
The commit message must **ALL** changes, unless it's a minor refactor or
|
||||||
necessary with `rebase -i`.
|
white space change or something and is not important.
|
||||||
|
|
||||||
Use one commit per logical change if necessary, most work can be squashed into
|
|
||||||
one commit when you are done. It is not necessary to have separate commits
|
|
||||||
per-file if they are one logical change. We are less strict about this than
|
|
||||||
other projects, fewer is better.
|
|
||||||
|
|
||||||
The commit title line should be prefixed with an area, unless it involves the
|
The commit title line should be prefixed with an area, unless it involves the
|
||||||
wxWidgets GUI app, in which case it should **NOT** have a prefix.
|
wxWidgets GUI app, in which case it should **NOT** have a prefix.
|
||||||
|
@ -102,14 +99,15 @@ The text after the area prefix should not be capitalized.
|
||||||
|
|
||||||
Please use one of these area prefixes for non-main-GUI-app commits:
|
Please use one of these area prefixes for non-main-GUI-app commits:
|
||||||
|
|
||||||
- doc: documentation, README.md etc.
|
- doc: documentation, README.md etc..
|
||||||
- build: cmake, installdeps, preprocessor compatibility defines, compatibility
|
- build: CMake, installdeps, preprocessor compatibility defines, compatibility
|
||||||
headers, etc.
|
headers, macOS build system etc..
|
||||||
- gb: the GameBoy emulator core
|
- gb: the GameBoy emulator core or changes related to it.
|
||||||
- gba: the GameBoy Advance emulator core
|
- gba: the GameBoy Advance emulator core or changes related to it.
|
||||||
- libretro: the libretro core glue and build
|
- libretro: the libretro core glue and build.
|
||||||
- sdl: anything for the SDL port
|
- sdl: anything for the SDL port, but **NOT** SDL functionality in the wxWidgets
|
||||||
- translations: anything related to translations
|
GUI app.
|
||||||
|
- translations: anything related to translations.
|
||||||
|
|
||||||
. Add other areas here if needed.
|
. Add other areas here if needed.
|
||||||
|
|
||||||
|
@ -118,21 +116,85 @@ If a commit fixes a regression, use a title line such as:
|
||||||
```console
|
```console
|
||||||
Fix regression <PROBLEM> in <SHORT-SHA>
|
Fix regression <PROBLEM> in <SHORT-SHA>
|
||||||
```
|
```
|
||||||
, you can get the short sha from `git log --oneline -100` or similar.
|
, you can get the short SHA from `git log --oneline -100` or similar.
|
||||||
|
|
||||||
The commit description for a regression must refer to the breaking change in
|
The commit description for a regression must refer to the breaking change in
|
||||||
reference format, which you can get from e.g. `git log --format=reference -20`.
|
reference format, which you can get from e.g. `git log --format=reference -20`.
|
||||||
|
|
||||||
You can refer to github issues using `#<ISSUE-NUMBER>` freely in the description
|
#### Working on Pull Requests
|
||||||
text.
|
|
||||||
|
|
||||||
If a commit fixes an issue, add a line at the end of the description such as:
|
When opening a pull request, push your branch to our repository if you were
|
||||||
|
given access, or a branch in your fork if you have not yet been given access. Do
|
||||||
|
**NOT** use `master`, use a specific branch.
|
||||||
|
|
||||||
```console
|
If you are using a fork, set up your workflow like this:
|
||||||
Fix #<ISSUE-NUMBER>.
|
|
||||||
|
```bash
|
||||||
|
git clone git@github.com:visualboyadvance-m/visualboyadvance-m
|
||||||
|
git remote add fork git@github.com:<your-GitHub-user>/visualboyadvance-m
|
||||||
|
git fetch --all --prune
|
||||||
|
git checkout -b your-work-branch-name
|
||||||
|
git commit -a --verbose --signoff -S
|
||||||
```
|
```
|
||||||
.
|
.
|
||||||
|
|
||||||
|
The `-S` flags tells Git to sign your commit with GnuPG. If you do not have a
|
||||||
|
GnuPG key, you will need to create one and upload it to a keyserver. I recommend
|
||||||
|
removing the password on your private key to not deal with `gpg-agent` and all
|
||||||
|
of this stuff.
|
||||||
|
|
||||||
|
All of this works fine on Windows, just install `GnuPG.GnuPG` from WinGet.
|
||||||
|
|
||||||
|
Your first push will then be:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push -u fork HEAD
|
||||||
|
```
|
||||||
|
.
|
||||||
|
|
||||||
|
Subsequent commits will then be:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git commit -a --verbose --amend --reset-author --signoff -S
|
||||||
|
git push -f
|
||||||
|
```
|
||||||
|
|
||||||
|
. If you are a project member, then the workflow will be roughly:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone git@github.com:visualboyadvance-m/visualboyadvance-m
|
||||||
|
git fetch --all --prune
|
||||||
|
git checkout -b your-work-branch-name
|
||||||
|
git commit -a --verbose --signoff -S
|
||||||
|
```
|
||||||
|
|
||||||
|
. Your first push will be:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push -u origin HEAD
|
||||||
|
```
|
||||||
|
|
||||||
|
. And subsequent pushes will be:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git commit -a --verbose --signoff -S --amend --reset-author
|
||||||
|
git push -f
|
||||||
|
```
|
||||||
|
|
||||||
|
. Please push frequently so that we can track your progress and review it.
|
||||||
|
|
||||||
|
Make sure the git history in your branch is clean and logical, edit when
|
||||||
|
necessary with `rebase -i`. In most cases a single commit with all of the
|
||||||
|
changes will be good. Sometimes you may want to split it up into multiple
|
||||||
|
logical commits for a large work, but a single commit is also fine if the title
|
||||||
|
line encapsulates all of the work for the changelog.
|
||||||
|
|
||||||
|
See the previous section on how to write commit messages.
|
||||||
|
|
||||||
|
If you are using Windows as your development environment, I recommend reading my
|
||||||
|
manual on Windows development environments
|
||||||
|
[here](https://github.com/rkitover/windows-dev-guide).
|
||||||
|
|
||||||
#### Collaboration on a Branch
|
#### Collaboration on a Branch
|
||||||
|
|
||||||
To update when multiple people are working on a git branch, keep a couple of
|
To update when multiple people are working on a git branch, keep a couple of
|
||||||
|
@ -142,23 +204,32 @@ things in mind:
|
||||||
better to edit the history than to add more commits. Never add commits fixing
|
better to edit the history than to add more commits. Never add commits fixing
|
||||||
previous commits, only improving or adding to them.
|
previous commits, only improving or adding to them.
|
||||||
|
|
||||||
- To update when someone else updated the branch with a `push -f`
|
- To update when someone else updated the branch with a `git push -f`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git status # should be clean, with your work having been already pushed
|
git status # should be clean, with your work having been already pushed
|
||||||
git fetch --all --prune
|
git fetch --all --prune
|
||||||
git reset --hard origin/<branch-name>
|
git reset --hard origin/<work-branch-name>
|
||||||
```
|
```
|
||||||
.
|
.
|
||||||
|
|
||||||
- While actively working on a branch, keep it rebased on top of master.
|
- While actively working on a branch, keep it rebased on top of master, like
|
||||||
|
this:
|
||||||
|
|
||||||
#### Commits from Maintainers
|
```bash
|
||||||
|
git fetch --all --prune
|
||||||
|
git rebase origin/master
|
||||||
|
git push -f
|
||||||
|
```
|
||||||
|
|
||||||
|
. You may sometimes need to fix conflicts, follow the instructions.
|
||||||
|
|
||||||
|
#### Commits from Admins
|
||||||
|
|
||||||
Maintainers and project members have the power to commit directly to master.
|
Maintainers and project members have the power to commit directly to master.
|
||||||
This power must be used responsibly.
|
This power must be used responsibly.
|
||||||
|
|
||||||
Make your best attempt to follow these general guidelines to keep our
|
Make your best attempt to follow these general guidelines:
|
||||||
history clean:
|
|
||||||
|
|
||||||
- Things that are a minor fix or improvement that does not require discussion
|
- Things that are a minor fix or improvement that does not require discussion
|
||||||
can be committed directly, keeping the following guidelines in mind.
|
can be committed directly, keeping the following guidelines in mind.
|
||||||
|
@ -166,19 +237,34 @@ history clean:
|
||||||
- Bigger new features, code refactors and changes in architecture should go
|
- Bigger new features, code refactors and changes in architecture should go
|
||||||
through the PR process.
|
through the PR process.
|
||||||
|
|
||||||
|
- Absolutely **NEVER** `git push -f` on `master`. If you make a mistake, revert
|
||||||
|
or push a fix commit.
|
||||||
|
|
||||||
- Push code changes to a branch first, so they can run through the CI. When you
|
- Push code changes to a branch first, so they can run through the CI. When you
|
||||||
open the commit in GitHub there is a little icon in the upper left corner that
|
open the commit in GitHub there is a little icon in the upper left corner that
|
||||||
shows the CI status for this commit. Differences in what different compilers
|
shows the CI status for this commit. Differences in what different compilers
|
||||||
allow is a problem that comes up **VERY** frequently. As well as
|
allow is a problem that comes up **VERY** frequently. As well as
|
||||||
incompatibilities between different configurations for both the C++ code and
|
incompatibilities between different configurations for both the C++ code and
|
||||||
any supporting code.
|
any supporting code. Once the CI is clear, you can merge your branch like
|
||||||
|
this:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git push -f
|
||||||
|
git checkout master
|
||||||
|
git merge --ff-only <your-work-branch-name>
|
||||||
|
git push
|
||||||
|
git branch -D <your-work-branch-name>
|
||||||
|
git push origin ':refs/heads/your-work-branch-nbame'
|
||||||
|
```
|
||||||
|
|
||||||
|
. The last line there deletes the branch in our repository.
|
||||||
|
|
||||||
### Miscellaneous
|
### Miscellaneous
|
||||||
|
|
||||||
#### Debug Messages
|
#### Debug Messages
|
||||||
|
|
||||||
We have an override for `wxLogDebug()` to make it work even in non-debug builds
|
We have an override for `wxLogDebug()` to make it work even in non-debug builds
|
||||||
of wx and on windows, even in mintty.
|
of wxWidgets and on windows, even in mintty.
|
||||||
|
|
||||||
It works like `printf()`, e.g.:
|
It works like `printf()`, e.g.:
|
||||||
|
|
||||||
|
@ -195,15 +281,27 @@ fprintf(stderr, "...", ...);
|
||||||
, will work fine.
|
, will work fine.
|
||||||
|
|
||||||
You need a debug build for this to work or to even have a console on Windows.
|
You need a debug build for this to work or to even have a console on Windows.
|
||||||
Pass `-DCMAKE_BUILD_TYPE=Debug` to cmake.
|
Pass `-DCMAKE_BUILD_TYPE=Debug` to CMake.
|
||||||
|
|
||||||
### Release Process
|
### Release Process
|
||||||
|
|
||||||
|
#### GnuPG Key
|
||||||
|
|
||||||
|
You will need to create a GnuPG key for signing your commits and release tags,
|
||||||
|
and upload it to a keyserver.
|
||||||
|
|
||||||
|
Make sure to install GnuPG on all environments where you will be making commits
|
||||||
|
and tags.
|
||||||
|
|
||||||
#### Certificates
|
#### Certificates
|
||||||
|
|
||||||
Make sure you have set up a Windows code signing certificate with the right
|
Make sure you have set up a Windows code signing certificate with the right
|
||||||
password and a Mac 'Developer ID Application' certificate.
|
password and a Mac 'Developer ID Application' certificate.
|
||||||
|
|
||||||
|
Put the Windows certificate into `~/.codesign/windows_comodo.pkcs12` as a PKCS12
|
||||||
|
file that is password protected, and put the password for it into
|
||||||
|
`~/.codesign/windows_comodo.pkcs12.password`.
|
||||||
|
|
||||||
#### Release Commit and Tag
|
#### Release Commit and Tag
|
||||||
|
|
||||||
Once you are sure you're ready to release, and you are in a git clone on master
|
Once you are sure you're ready to release, and you are in a git clone on master
|
||||||
|
@ -216,6 +314,9 @@ cmake .. -DTAG_RELEASE=TRUE
|
||||||
```
|
```
|
||||||
, follow the instructions to edit the `CHANGELOG.md` and then push the release:
|
, follow the instructions to edit the `CHANGELOG.md` and then push the release:
|
||||||
|
|
||||||
|
To reiterate, **make sure you edit the `CHANGELOG.md`** to remove any
|
||||||
|
non-user-facing changes before you make the release commit.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git push
|
git push
|
||||||
git push --tags
|
git push --tags
|
||||||
|
@ -257,6 +358,10 @@ The 32-bit build is a legacy build for Windows XP compatibility. You will need
|
||||||
the MinGW toolchain to build it. The easiest method is to use the MINGW32 MSYS2
|
the MinGW toolchain to build it. The easiest method is to use the MINGW32 MSYS2
|
||||||
environment.
|
environment.
|
||||||
|
|
||||||
|
Make sure the Visual Studio `signtool.exe` is in your path, you can start MSYS2
|
||||||
|
with an inherited `PATH` from a Visual Studio enabled environment or add it to
|
||||||
|
your shell configuration.
|
||||||
|
|
||||||
First install dependencies with:
|
First install dependencies with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -311,10 +416,29 @@ certificate of the type 'Developer ID Application' stored in your login
|
||||||
keychain.
|
keychain.
|
||||||
|
|
||||||
If you are not using a GUI session, you will need to use a method to unlock your
|
If you are not using a GUI session, you will need to use a method to unlock your
|
||||||
login keychain before building. Adding the certificate and key to the System
|
login keychain before building so that your codesigning certificate can be used.
|
||||||
keychain is also a method that some people use.
|
Adding the certificate and key to the System keychain is also a method that some
|
||||||
|
people use.
|
||||||
|
|
||||||
Then run:
|
To unlock your keychain on login, you can add something like this to your
|
||||||
|
`~/.zshrc`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
security unlock-keychain -p "$(cat ~/.login-keychain-password)" login.keychain
|
||||||
|
```
|
||||||
|
, with your login password in that file.
|
||||||
|
|
||||||
|
For notarization to work, you will need to create an app-specific password on
|
||||||
|
https://appleid.apple.com , get your Team ID from your Apple Developer account,
|
||||||
|
and store them with this command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
xcrun notarytool store-credentials AC_PASSWORD \
|
||||||
|
--apple-id you@domain.com \
|
||||||
|
--team-id <DeveloperTeamID> \
|
||||||
|
--password <secret_app_specific_2FA_password>
|
||||||
|
```
|
||||||
|
. Once all of this is set up, run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
tools/osx/builder
|
tools/osx/builder
|
||||||
|
|
|
@ -166,8 +166,7 @@ And the following development libraries:
|
||||||
- [ffmpeg](https://ffmpeg.org/) (optional, at least version `4.0.4`, for game recording)
|
- [ffmpeg](https://ffmpeg.org/) (optional, at least version `4.0.4`, for game recording)
|
||||||
- [gettext](https://www.gnu.org/software/gettext/) and gettext-tools
|
- [gettext](https://www.gnu.org/software/gettext/) and gettext-tools
|
||||||
- [SDL2](https://www.libsdl.org/) (required)
|
- [SDL2](https://www.libsdl.org/) (required)
|
||||||
- [SFML](https://www.sfml-dev.org/) (optional, for link)
|
- [openal-soft](https://kcat.strangesoft.net/openal.html) (optional, a sound interface)
|
||||||
- [openal-soft](https://kcat.strangesoft.net/openal.html) (required, a sound interface)
|
|
||||||
- [wxWidgets](https://wxwidgets.org/) (required for GUI, 2.8 and non-stl builds are no longer supported)
|
- [wxWidgets](https://wxwidgets.org/) (required for GUI, 2.8 and non-stl builds are no longer supported)
|
||||||
|
|
||||||
On Linux and similar, you also need the version of GTK your wxWidgets is linked
|
On Linux and similar, you also need the version of GTK your wxWidgets is linked
|
||||||
|
@ -211,19 +210,20 @@ cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_LINK=NO -G Ninja
|
||||||
| `ENABLE_ASM` | Enable the following two ASM options | ON for 32 bit builds |
|
| `ENABLE_ASM` | Enable the following two ASM options | ON for 32 bit builds |
|
||||||
| `ENABLE_ASM_SCALERS` | Enable x86 ASM graphic filters | ON for 32 bit builds |
|
| `ENABLE_ASM_SCALERS` | Enable x86 ASM graphic filters | ON for 32 bit builds |
|
||||||
| `ENABLE_MMX` | Enable MMX | ON for 32 bit builds |
|
| `ENABLE_MMX` | Enable MMX | ON for 32 bit builds |
|
||||||
| `ENABLE_LINK` | Enable GBA linking functionality (requires SFML) | AUTO |
|
| `ENABLE_LINK` | Enable GBA linking functionality | AUTO |
|
||||||
| `ENABLE_LIRC` | Enable LIRC support | OFF |
|
| `ENABLE_LIRC` | Enable LIRC support | OFF |
|
||||||
| `ENABLE_FFMPEG` | Enable ffmpeg A/V recording | AUTO |
|
| `ENABLE_FFMPEG` | Enable ffmpeg A/V recording | AUTO |
|
||||||
| `ENABLE_ONLINEUPDATES` | Enable online update checks | ON |
|
| `ENABLE_ONLINEUPDATES` | Enable online update checks | ON |
|
||||||
| `ENABLE_LTO` | Compile with Link Time Optimization (gcc and clang only) | ON for release build |
|
| `ENABLE_LTO` | Compile with Link Time Optimization (gcc and clang only) | ON for release build |
|
||||||
| `ENABLE_GBA_LOGGING` | Enable extended GBA logging | ON |
|
| `ENABLE_GBA_LOGGING` | Enable extended GBA logging | ON |
|
||||||
|
| `ENABLE_OPENAL` | Enable openal-soft sound output for wxWidgets | ON, not 32 bit Win |
|
||||||
| `ENABLE_XAUDIO2` | Enable xaudio2 sound output for wxWidgets (Windows only) | ON |
|
| `ENABLE_XAUDIO2` | Enable xaudio2 sound output for wxWidgets (Windows only) | ON |
|
||||||
|
| `ENABLE_FAUDIO` | Enable faudio sound output for wxWidgets, | ON, not 32 bit Win |
|
||||||
| `ENABLE_ASAN` | Enable libasan sanitizers (by default address, only in debug mode) | OFF |
|
| `ENABLE_ASAN` | Enable libasan sanitizers (by default address, only in debug mode) | OFF |
|
||||||
| `UPSTREAM_RELEASE` | Do some release tasks, like codesigning, making zip and gpg sigs. | OFF |
|
| `UPSTREAM_RELEASE` | Do some release tasks, like codesigning, making zip and gpg sigs. | OFF |
|
||||||
| `BUILD_TESTING` | Build the tests and enable ctest support. | ON |
|
| `BUILD_TESTING` | Build the tests and enable ctest support. | ON |
|
||||||
| `VBAM_STATIC` | Try link all libs statically (the following are set to ON if ON) | OFF |
|
| `VBAM_STATIC` | Try link all libs statically (the following are set to ON if ON) | OFF |
|
||||||
| `SDL2_STATIC` | Try to link static SDL2 libraries | OFF |
|
| `SDL2_STATIC` | Try to link static SDL2 libraries | OFF |
|
||||||
| `SFML_STATIC_LIBRARIES` | Try to link static SFML libraries | OFF |
|
|
||||||
| `FFMPEG_STATIC` | Try to link static ffmpeg libraries | OFF |
|
| `FFMPEG_STATIC` | Try to link static ffmpeg libraries | OFF |
|
||||||
| `OPENAL_STATIC` | Try to link static OpenAL libraries | OFF |
|
| `OPENAL_STATIC` | Try to link static OpenAL libraries | OFF |
|
||||||
| `TRANSLATIONS_ONLY` | Build only the translations.zip and nothing else | OFF |
|
| `TRANSLATIONS_ONLY` | Build only the translations.zip and nothing else | OFF |
|
||||||
|
|
|
@ -31,6 +31,15 @@ elseif(VCPKG_TARGET_TRIPLET MATCHES "^[aA][rR][mM]-")
|
||||||
set(CMAKE_SYSTEM_PROCESSOR ARM)
|
set(CMAKE_SYSTEM_PROCESSOR ARM)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(APPLE AND
|
||||||
|
(CMAKE_OSX_ARCHITECTURES MATCHES "[xX]86_64") OR
|
||||||
|
(ENV{CFLAGS} MATCHES "[xX]86_64") OR
|
||||||
|
(ENV{CXXFLAGS} MATCHES "[xX]86_64") OR
|
||||||
|
(ENV{LDFLAGS} MATCHES "[xX]86_64"))
|
||||||
|
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Turn asm on by default on 32bit x86 and set WINARCH for windows stuff.
|
# Turn asm on by default on 32bit x86 and set WINARCH for windows stuff.
|
||||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "[xX]86|i[3-9]86|[aA][mM][dD]64")
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "[xX]86|i[3-9]86|[aA][mM][dD]64")
|
||||||
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 4) # 32 bit
|
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 4) # 32 bit
|
||||||
|
@ -46,20 +55,14 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "[xX]86|i[3-9]86|[aA][mM][dD]64")
|
||||||
set(WINARCH x64)
|
set(WINARCH x64)
|
||||||
set(ARCH_NAME x86_64)
|
set(ARCH_NAME x86_64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED VCPKG_TARGET_TRIPLET)
|
|
||||||
string(REGEX MATCH "^x[86][64]" target_arch ${VCPKG_TARGET_TRIPLET})
|
|
||||||
|
|
||||||
if(NOT WINARCH STREQUAL target_arch)
|
|
||||||
message(FATAL_ERROR "Wrong build environment architecture for VCPKG_TARGET_TRIPLET, you specified ${target_arch} but your compiler is for ${WINARCH}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "[aA][aA][rR][cC][hH]|[aA][rR][mM]")
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "[aA][aA][rR][cC][hH]|[aA][rR][mM]")
|
||||||
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 4) # 32 bit
|
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 4) # 32 bit
|
||||||
set(ARCH_NAME arm32)
|
set(ARM32 ON)
|
||||||
|
set(ARCH_NAME ARM32)
|
||||||
set(WINARCH arm)
|
set(WINARCH arm)
|
||||||
elseif(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
|
elseif(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
|
||||||
set(ARCH_NAME arm64)
|
set(ARM64 ON)
|
||||||
|
set(ARCH_NAME ARM64)
|
||||||
set(WINARCH arm64)
|
set(WINARCH arm64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -68,6 +71,14 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "[aA][aA][rR][cC][hH]|[aA][rR][mM]")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(DEFINED VCPKG_TARGET_TRIPLET)
|
||||||
|
string(REGEX MATCH "^[^-]+" target_arch ${VCPKG_TARGET_TRIPLET})
|
||||||
|
|
||||||
|
if(NOT WINARCH STREQUAL target_arch)
|
||||||
|
message(FATAL_ERROR "Wrong build environment architecture for VCPKG_TARGET_TRIPLET, you specified ${target_arch} but your compiler is for ${WINARCH}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# We do not support amd64 asm yet
|
# We do not support amd64 asm yet
|
||||||
if(X86_64 AND (ENABLE_ASM_CORE OR ENABLE_ASM_SCALERS OR ENABLE_MMX))
|
if(X86_64 AND (ENABLE_ASM_CORE OR ENABLE_ASM_SCALERS OR ENABLE_MMX))
|
||||||
message(FATAL_ERROR "The options ASM_CORE, ASM_SCALERS and MMX are not supported on X86_64 yet.")
|
message(FATAL_ERROR "The options ASM_CORE, ASM_SCALERS and MMX are not supported on X86_64 yet.")
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file LICENCE.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
# CMakeDetermine(LANG)Compiler.cmake -> this should find the compiler for LANG and configure CMake(LANG)Compiler.cmake.in
|
||||||
|
|
||||||
|
include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_COMPILER_NAMES)
|
||||||
|
set(CMAKE_Metal_COMPILER_NAMES metal)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
|
||||||
|
set(CMAKE_Metal_COMPILER_XCODE_TYPE sourcecode.metal)
|
||||||
|
|
||||||
|
execute_process(COMMAND xcrun --find metal
|
||||||
|
OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_VARIABLE _xcrun_err RESULT_VARIABLE _xcrun_result
|
||||||
|
)
|
||||||
|
|
||||||
|
if(_xcrun_result EQUAL 0 AND EXISTS "${_xcrun_out}")
|
||||||
|
set(CMAKE_Metal_COMPILER "${_xcrun_out}")
|
||||||
|
else()
|
||||||
|
_cmake_find_compiler_path(Metal)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
if(CMAKE_Metal_COMPILER)
|
||||||
|
_cmake_find_compiler_path(Metal)
|
||||||
|
else()
|
||||||
|
set(CMAKE_Metal_COMPILER_INIT NOTFOUND)
|
||||||
|
|
||||||
|
if(NOT $ENV{METALC} STREQUAL "")
|
||||||
|
get_filename_component(CMAKE_Metal_COMPILER_INIT $ENV{METALC} PROGRAM PROGRAM_ARGS CMAKE_Metal_FLAGS_ENV_INIT)
|
||||||
|
if(CMAKE_Metal_FLAGS_ENV_INIT)
|
||||||
|
set(CMAKE_Metal_COMPILER_ARG1 "${CMAKE_Metal_FLAGS_ENV_INIT}" CACHE STRING "Arguments to the Metal compiler")
|
||||||
|
endif()
|
||||||
|
if(NOT EXISTS ${CMAKE_Metal_COMPILER_INIT})
|
||||||
|
message(FATAL_ERROR "Could not find compiler set in environment variable METALC\n$ENV{METALC}.\n${CMAKE_Metal_COMPILER_INIT}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_COMPILER_INIT)
|
||||||
|
set(CMAKE_Metal_COMPILER_LIST metal ${_CMAKE_TOOLCHAIN_PREFIX}metal)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
_cmake_find_compiler(Metal)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(CMAKE_Metal_COMPILER)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# For Metal we need to explicitly query the version.
|
||||||
|
if(CMAKE_Metal_COMPILER AND NOT CMAKE_Metal_COMPILER_VERSION)
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${CMAKE_Metal_COMPILER}" --version
|
||||||
|
OUTPUT_VARIABLE output ERROR_VARIABLE output
|
||||||
|
RESULT_VARIABLE result
|
||||||
|
TIMEOUT 10
|
||||||
|
)
|
||||||
|
message(CONFIGURE_LOG
|
||||||
|
"Running the Metal compiler: \"${CMAKE_Metal_COMPILER}\" --version\n"
|
||||||
|
"${output}\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
if(output MATCHES [[metal version ([0-9]+\.[0-9]+(\.[0-9]+)?)]])
|
||||||
|
set(CMAKE_Metal_COMPILER_VERSION "${CMAKE_MATCH_1}")
|
||||||
|
if(NOT CMAKE_Metal_COMPILER_ID)
|
||||||
|
set(CMAKE_Metal_COMPILER_ID "Apple")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT _CMAKE_TOOLCHAIN_LOCATION)
|
||||||
|
get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Metal_COMPILER}" PATH)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(_CMAKE_PROCESSING_LANGUAGE "Metal")
|
||||||
|
include(CMakeFindBinUtils)
|
||||||
|
unset(_CMAKE_PROCESSING_LANGUAGE)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/CMakeMetalCompiler.cmake.in
|
||||||
|
${CMAKE_PLATFORM_INFO_DIR}/CMakeMetalCompiler.cmake
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CMAKE_Metal_COMPILER_ENV_VAR "METALC")
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file LICENCE.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
# CMake(LANG)Compiler.cmake.in -> used by CMakeDetermine(LANG)Compiler.cmake
|
||||||
|
# This file is used to store compiler information and is copied down into try
|
||||||
|
# compile directories so that try compiles do not need to re-determine and test
|
||||||
|
# the LANG
|
||||||
|
|
||||||
|
set(CMAKE_Metal_COMPILER "@CMAKE_Metal_COMPILER@")
|
||||||
|
set(CMAKE_Metal_COMPILER_ID "@CMAKE_Metal_COMPILER_ID@")
|
||||||
|
set(CMAKE_Metal_COMPILER_VERSION "@CMAKE_Metal_COMPILER_VERSION@")
|
||||||
|
|
||||||
|
set(CMAKE_Metal_COMPILER_LOADED 1)
|
||||||
|
set(CMAKE_Metal_COMPILER_WORKS "@CMAKE_Metal_COMPILER_WORKS@")
|
||||||
|
|
||||||
|
set(CMAKE_Metal_COMPILER_ENV_VAR "METALC")
|
||||||
|
|
||||||
|
set(CMAKE_Metal_COMPILER_ID_RUN "@CMAKE_Metal_COMPILER_ID_RUN@")
|
||||||
|
set(CMAKE_Metal_SOURCE_FILE_EXTENSIONS metal)
|
||||||
|
set(CMAKE_Metal_OUTPUT_EXTENSION ".air")
|
||||||
|
set(CMAKE_STATIC_LIBRARY_PREFIX_Metal "")
|
||||||
|
set(CMAKE_STATIC_LIBRARY_SUFFIX_Metal ".metal-ar")
|
||||||
|
set(CMAKE_SHARED_LIBRARY_PREFIX_Metal "")
|
||||||
|
set(CMAKE_SHARED_LIBRARY_SUFFIX_Metal ".metallib")
|
||||||
|
set(CMAKE_SHARED_MODULE_PREFIX_Metal "")
|
||||||
|
set(CMAKE_SHARED_MODULE_SUFFIX_Metal ".metallib")
|
||||||
|
set(CMAKE_EXECUTABLE_SUFFIX_Metal ".metallib")
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file LICENCE.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
# CMake(LANG)Information.cmake -> set up rule variables for LANG :
|
||||||
|
# CMAKE_(LANG)_CREATE_SHARED_LIBRARY
|
||||||
|
# CMAKE_(LANG)_CREATE_SHARED_MODULE
|
||||||
|
# CMAKE_(LANG)_CREATE_STATIC_LIBRARY
|
||||||
|
# CMAKE_(LANG)_COMPILE_OBJECT
|
||||||
|
# CMAKE_(LANG)_LINK_EXECUTABLE
|
||||||
|
|
||||||
|
include(CMakeCommonLanguageInclude)
|
||||||
|
|
||||||
|
set(CMAKE_Metal_FLAGS_INIT "-ffast-math")
|
||||||
|
set(CMAKE_Metal_FLAGS_DEBUG_INIT "-gline-tables-only -frecord-sources")
|
||||||
|
set(CMAKE_Metal_FLAGS_RELWITHDEBINFO_INIT "-gline-tables-only -frecord-sources")
|
||||||
|
|
||||||
|
cmake_initialize_per_config_variable(CMAKE_Metal_FLAGS "Flags used by the Metal compiler")
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_FLAG_Metal "-I ")
|
||||||
|
set(CMAKE_Metal_COMPILER_ARG1 "")
|
||||||
|
set(CMAKE_Metal_DEFINE_FLAG -D)
|
||||||
|
set(CMAKE_Metal_FRAMEWORK_SEARCH_FLAG "-F ")
|
||||||
|
set(CMAKE_Metal_LIBRARY_PATH_FLAG "-L ")
|
||||||
|
set(CMAKE_Metal_SYSROOT_FLAG "-isysroot")
|
||||||
|
set(CMAKE_Metal_COMPILE_OPTIONS_TARGET "-target ")
|
||||||
|
set(CMAKE_DEPFILE_FLAGS_Metal "-MMD -MT dependencies -MF <DEP_FILE>")
|
||||||
|
|
||||||
|
if(CMAKE_GENERATOR MATCHES "Makefiles")
|
||||||
|
set(CMAKE_Metal_DEPFILE_FORMAT gcc)
|
||||||
|
set(CMAKE_Metal_DEPENDS_USE_COMPILER TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_Metal_COMPILER_PREDEFINES_COMMAND "${CMAKE_Metal_COMPILER}")
|
||||||
|
if(CMAKE_Metal_COMPILER_TARGET)
|
||||||
|
list(APPEND CMAKE_Metal_COMPILER_PREDEFINES_COMMAND "-target" "${CMAKE_Metal_COMPILER_TARGET}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# now define the following rule variables
|
||||||
|
|
||||||
|
# CMAKE_Metal_CREATE_SHARED_LIBRARY
|
||||||
|
# CMAKE_Metal_CREATE_SHARED_MODULE
|
||||||
|
# CMAKE_Metal_COMPILE_OBJECT
|
||||||
|
# CMAKE_Metal_LINK_EXECUTABLE
|
||||||
|
|
||||||
|
# variables supplied by the generator at use time
|
||||||
|
# <TARGET>
|
||||||
|
# <TARGET_BASE> the target without the suffix
|
||||||
|
# <OBJECTS>
|
||||||
|
# <OBJECT>
|
||||||
|
# <LINK_LIBRARIES>
|
||||||
|
# <FLAGS>
|
||||||
|
# <LINK_FLAGS>
|
||||||
|
|
||||||
|
# Metal compiler information
|
||||||
|
# <CMAKE_Metal_COMPILER>
|
||||||
|
# <CMAKE_SHARED_LIBRARY_CREATE_Metal_FLAGS>
|
||||||
|
# <CMAKE_SHARED_MODULE_CREATE_Metal_FLAGS>
|
||||||
|
# <CMAKE_Metal_LINK_FLAGS>
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_COMPILE_OBJECT)
|
||||||
|
set(CMAKE_Metal_COMPILE_OBJECT
|
||||||
|
"<CMAKE_Metal_COMPILER> -c <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_CREATE_SHARED_LIBRARY)
|
||||||
|
set(CMAKE_Metal_CREATE_SHARED_LIBRARY
|
||||||
|
"<CMAKE_Metal_COMPILER> <CMAKE_SHARED_LIBRARY_Metal_FLAGS> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Metal_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_CREATE_SHARED_MODULE)
|
||||||
|
set(CMAKE_Metal_CREATE_SHARED_MODULE
|
||||||
|
"${CMAKE_Metal_CREATE_SHARED_LIBRARY}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_LINK_EXECUTABLE)
|
||||||
|
# Metal shaders don't really have "executables", but we need this for the try_compile to work properly, so we'll just have it output a metallib file
|
||||||
|
set(CMAKE_Metal_LINK_EXECUTABLE
|
||||||
|
"<CMAKE_Metal_COMPILER> <FLAGS> <CMAKE_Metal_LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_Metal_INFORMATION_LOADED 1)
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file LICENCE.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
# CMakeTest(LANG)Compiler.cmake -> test the compiler and set:
|
||||||
|
# SET(CMAKE_(LANG)_COMPILER_WORKS 1 CACHE INTERNAL "")
|
||||||
|
|
||||||
|
if(CMAKE_Metal_COMPILER_FORCED)
|
||||||
|
# The compiler configuration was forced by the user.
|
||||||
|
# Assume the user has configured all compiler information.
|
||||||
|
set(CMAKE_Metal_COMPILER_WORKS TRUE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(CMakeTestCompilerCommon)
|
||||||
|
|
||||||
|
if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
|
||||||
|
if(XCODE_VERSION VERSION_GREATER 7.0)
|
||||||
|
set(CMAKE_Metal_COMPILER_WORKS 1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# This file is used by EnableLanguage in cmGlobalGenerator to
|
||||||
|
# determine that that selected Metal compiler can actually compile
|
||||||
|
# and link the most basic of programs. If not, a fatal error
|
||||||
|
# is set and cmake stops processing commands and will not generate
|
||||||
|
# any makefiles or projects.
|
||||||
|
if(NOT CMAKE_Metal_COMPILER_WORKS)
|
||||||
|
PrintTestCompilerStatus("Metal")
|
||||||
|
__TestCompiler_setTryCompileTargetType()
|
||||||
|
|
||||||
|
string(CONCAT __TestCompiler_testMetalCompilerSource
|
||||||
|
"#ifndef __METAL_VERSION__\n"
|
||||||
|
"# error \"The CMAKE_Metal_COMPILER is not a Metal compiler\"\n"
|
||||||
|
"#endif\n"
|
||||||
|
"#import <metal_stdlib>\n"
|
||||||
|
"using namespace metal;\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Clear result from normal variable.
|
||||||
|
unset(CMAKE_Metal_COMPILER_WORKS)
|
||||||
|
|
||||||
|
# Puts test result in cache variable.
|
||||||
|
try_compile(CMAKE_Metal_COMPILER_WORKS
|
||||||
|
SOURCE_FROM_VAR testMetalCompiler.metal __TestCompiler_testMetalCompilerSource
|
||||||
|
OUTPUT_VARIABLE __CMAKE_Metal_COMPILER_OUTPUT
|
||||||
|
)
|
||||||
|
unset(__TestCompiler_testMetalCompilerSource)
|
||||||
|
|
||||||
|
# Move result from cache to normal variable.
|
||||||
|
set(CMAKE_Metal_COMPILER_WORKS ${CMAKE_Metal_COMPILER_WORKS})
|
||||||
|
unset(CMAKE_Metal_COMPILER_WORKS CACHE)
|
||||||
|
__TestCompiler_restoreTryCompileTargetType()
|
||||||
|
set(METAL_TEST_WAS_RUN 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_Metal_COMPILER_WORKS)
|
||||||
|
PrintTestCompilerResult(CHECK_FAIL "broken")
|
||||||
|
string(REPLACE "\n" "\n " _output "${__CMAKE_Metal_COMPILER_OUTPUT}")
|
||||||
|
message(FATAL_ERROR "The Metal compiler\n \"${CMAKE_Metal_COMPILER}\"\n"
|
||||||
|
"is not able to compile a simple test program.\nIt fails "
|
||||||
|
"with the following output:\n ${_output}\n\n"
|
||||||
|
"CMake will not be able to correctly generate this project."
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
if(METAL_TEST_WAS_RUN)
|
||||||
|
PrintTestCompilerResult(CHECK_PASS "works")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Re-configure to save learned information.
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/CMakeMetalCompiler.cmake.in
|
||||||
|
${CMAKE_PLATFORM_INFO_DIR}/CMakeMetalCompiler.cmake
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
include(${CMAKE_PLATFORM_INFO_DIR}/CMakeMetalCompiler.cmake)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(__CMAKE_Metal_COMPILER_OUTPUT)
|
|
@ -0,0 +1,169 @@
|
||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file LICENCE.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
#[=======================================================================[.rst:
|
||||||
|
CheckLanguage
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Check whether a language can be enabled by the :command:`enable_language`
|
||||||
|
or :command:`project` commands:
|
||||||
|
|
||||||
|
.. command:: check_language
|
||||||
|
|
||||||
|
.. code-block:: cmake
|
||||||
|
|
||||||
|
check_language(<lang>)
|
||||||
|
|
||||||
|
Try enabling language ``<lang>`` in a test project and record results
|
||||||
|
in the cache:
|
||||||
|
|
||||||
|
:variable:`CMAKE_<LANG>_COMPILER`
|
||||||
|
If the language can be enabled, this variable is set to the compiler
|
||||||
|
that was found. If the language cannot be enabled, this variable is
|
||||||
|
set to ``NOTFOUND``.
|
||||||
|
|
||||||
|
If this variable is already set, either explicitly or cached by
|
||||||
|
a previous call, the check is skipped.
|
||||||
|
|
||||||
|
:variable:`CMAKE_<LANG>_HOST_COMPILER`
|
||||||
|
This variable is set when ``<lang>`` is ``CUDA`` or ``HIP``.
|
||||||
|
|
||||||
|
If the check detects an explicit host compiler that is required for
|
||||||
|
compilation, this variable will be set to that compiler.
|
||||||
|
If the check detects that no explicit host compiler is needed,
|
||||||
|
this variable will be cleared.
|
||||||
|
|
||||||
|
If this variable is already set, its value is preserved only if
|
||||||
|
:variable:`CMAKE_<LANG>_COMPILER` is also set.
|
||||||
|
Otherwise, the check runs and overwrites
|
||||||
|
:variable:`CMAKE_<LANG>_HOST_COMPILER` with a new result.
|
||||||
|
Note that :variable:`CMAKE_<LANG>_HOST_COMPILER` documents it should
|
||||||
|
not be set without also setting
|
||||||
|
:variable:`CMAKE_<LANG>_COMPILER` to a NVCC compiler.
|
||||||
|
|
||||||
|
:variable:`CMAKE_<LANG>_PLATFORM <CMAKE_HIP_PLATFORM>`
|
||||||
|
This variable is set to the detected GPU platform when ``<lang>`` is ``HIP``.
|
||||||
|
|
||||||
|
If the variable is already set its value is always preserved. Only compatible values
|
||||||
|
will be considered for :variable:`CMAKE_<LANG>_COMPILER`.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: cmake
|
||||||
|
|
||||||
|
check_language(Fortran)
|
||||||
|
if(CMAKE_Fortran_COMPILER)
|
||||||
|
enable_language(Fortran)
|
||||||
|
else()
|
||||||
|
message(STATUS "No Fortran support")
|
||||||
|
endif()
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# This file has been modified to take into account the CMAKE_MODULES path when trying to build the test project
|
||||||
|
# Ref https://gitlab.kitware.com/cmake/cmake/-/issues/26020
|
||||||
|
# This was merged in to CMake 3.30.0, so we only need this for older versions
|
||||||
|
|
||||||
|
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.30)
|
||||||
|
include(${CMAKE_ROOT}/Modules/CheckLanguage.cmake)
|
||||||
|
else()
|
||||||
|
include_guard(GLOBAL)
|
||||||
|
|
||||||
|
block(SCOPE_FOR POLICIES)
|
||||||
|
cmake_policy(SET CMP0126 NEW)
|
||||||
|
|
||||||
|
macro(check_language lang)
|
||||||
|
if(NOT DEFINED CMAKE_${lang}_COMPILER)
|
||||||
|
set(_desc "Looking for a ${lang} compiler")
|
||||||
|
message(CHECK_START "${_desc}")
|
||||||
|
file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang})
|
||||||
|
|
||||||
|
set(extra_compiler_variables)
|
||||||
|
if("${lang}" MATCHES "^(CUDA|HIP)$" AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
|
set(extra_compiler_variables "set(CMAKE_${lang}_HOST_COMPILER \\\"\${CMAKE_${lang}_HOST_COMPILER}\\\")")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${lang}" STREQUAL "HIP")
|
||||||
|
list(APPEND extra_compiler_variables "set(CMAKE_${lang}_PLATFORM \\\"\${CMAKE_${lang}_PLATFORM}\\\")")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(TRANSFORM extra_compiler_variables PREPEND "\"")
|
||||||
|
list(TRANSFORM extra_compiler_variables APPEND "\\n\"")
|
||||||
|
list(JOIN extra_compiler_variables "\n " extra_compiler_variables)
|
||||||
|
|
||||||
|
set(_cl_content
|
||||||
|
"cmake_minimum_required(VERSION ${CMAKE_VERSION})
|
||||||
|
set(CMAKE_MODULE_PATH \"${CMAKE_MODULE_PATH}\")
|
||||||
|
project(Check${lang} ${lang})
|
||||||
|
file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
|
||||||
|
\"set(CMAKE_${lang}_COMPILER \\\"\${CMAKE_${lang}_COMPILER}\\\")\\n\"
|
||||||
|
${extra_compiler_variables}
|
||||||
|
)"
|
||||||
|
)
|
||||||
|
|
||||||
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt"
|
||||||
|
"${_cl_content}")
|
||||||
|
if(CMAKE_GENERATOR_INSTANCE)
|
||||||
|
set(_D_CMAKE_GENERATOR_INSTANCE "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}")
|
||||||
|
else()
|
||||||
|
set(_D_CMAKE_GENERATOR_INSTANCE "")
|
||||||
|
endif()
|
||||||
|
if(CMAKE_GENERATOR MATCHES "^(Xcode$|Green Hills MULTI$|Visual Studio)")
|
||||||
|
set(_D_CMAKE_MAKE_PROGRAM "")
|
||||||
|
else()
|
||||||
|
set(_D_CMAKE_MAKE_PROGRAM "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}")
|
||||||
|
endif()
|
||||||
|
if(CMAKE_TOOLCHAIN_FILE)
|
||||||
|
set(_D_CMAKE_TOOLCHAIN_FILE "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}")
|
||||||
|
else()
|
||||||
|
set(_D_CMAKE_TOOLCHAIN_FILE "")
|
||||||
|
endif()
|
||||||
|
if(CMAKE_${lang}_PLATFORM)
|
||||||
|
set(_D_CMAKE_LANG_PLATFORM "-DCMAKE_${lang}_PLATFORM:STRING=${CMAKE_${lang}_PLATFORM}")
|
||||||
|
else()
|
||||||
|
set(_D_CMAKE_LANG_PLATFORM "")
|
||||||
|
endif()
|
||||||
|
execute_process(
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}
|
||||||
|
COMMAND ${CMAKE_COMMAND} . -G ${CMAKE_GENERATOR}
|
||||||
|
-A "${CMAKE_GENERATOR_PLATFORM}"
|
||||||
|
-T "${CMAKE_GENERATOR_TOOLSET}"
|
||||||
|
${_D_CMAKE_GENERATOR_INSTANCE}
|
||||||
|
${_D_CMAKE_MAKE_PROGRAM}
|
||||||
|
${_D_CMAKE_TOOLCHAIN_FILE}
|
||||||
|
${_D_CMAKE_LANG_PLATFORM}
|
||||||
|
OUTPUT_VARIABLE _cl_output
|
||||||
|
ERROR_VARIABLE _cl_output
|
||||||
|
RESULT_VARIABLE _cl_result
|
||||||
|
)
|
||||||
|
include(${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/result.cmake OPTIONAL)
|
||||||
|
if(CMAKE_${lang}_COMPILER AND "${_cl_result}" STREQUAL "0")
|
||||||
|
message(CONFIGURE_LOG
|
||||||
|
"${_desc} passed with the following output:\n"
|
||||||
|
"${_cl_output}\n")
|
||||||
|
set(_CHECK_COMPILER_STATUS CHECK_PASS)
|
||||||
|
else()
|
||||||
|
set(CMAKE_${lang}_COMPILER NOTFOUND)
|
||||||
|
set(_CHECK_COMPILER_STATUS CHECK_FAIL)
|
||||||
|
message(CONFIGURE_LOG
|
||||||
|
"${_desc} failed with the following output:\n"
|
||||||
|
"${_cl_output}\n")
|
||||||
|
endif()
|
||||||
|
message(${_CHECK_COMPILER_STATUS} "${CMAKE_${lang}_COMPILER}")
|
||||||
|
set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE FILEPATH "${lang} compiler")
|
||||||
|
mark_as_advanced(CMAKE_${lang}_COMPILER)
|
||||||
|
|
||||||
|
if(CMAKE_${lang}_HOST_COMPILER)
|
||||||
|
message(STATUS "Looking for a ${lang} host compiler - ${CMAKE_${lang}_HOST_COMPILER}")
|
||||||
|
set(CMAKE_${lang}_HOST_COMPILER "${CMAKE_${lang}_HOST_COMPILER}" CACHE FILEPATH "${lang} host compiler")
|
||||||
|
mark_as_advanced(CMAKE_${lang}_HOST_COMPILER)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_${lang}_PLATFORM)
|
||||||
|
set(CMAKE_${lang}_PLATFORM "${CMAKE_${lang}_PLATFORM}" CACHE STRING "${lang} platform")
|
||||||
|
mark_as_advanced(CMAKE_${lang}_PLATFORM)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
endblock()
|
||||||
|
endif()
|
|
@ -11,33 +11,58 @@ if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
|
||||||
set(OpenGL_GL_PREFERENCE LEGACY)
|
set(OpenGL_GL_PREFERENCE LEGACY)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(OpenGL REQUIRED)
|
if(NOT DISABLE_OPENGL)
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(OpenGL)
|
||||||
|
|
||||||
|
if(NOT OpenGL_FOUND)
|
||||||
|
set(CMAKE_C_FLAGS "-DNO_OPENGL -DNO_OGL ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-DNO_OPENGL -DNO_OGL ${CMAKE_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add libsamplerate to SDL2 with vcpkg
|
# Add libsamplerate to SDL2 with vcpkg
|
||||||
unset(SDL2_LIBRARY_TEMP)
|
unset(SDL_LIBRARY_TEMP)
|
||||||
if(CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg")
|
if((NOT ENABLE_SDL3) AND CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg")
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
unset(arch_suffix)
|
unset(arch_suffix)
|
||||||
unset(path_prefix)
|
unset(path_prefix)
|
||||||
if(VCPKG_TARGET_TRIPLET MATCHES -static)
|
if(VCPKG_TARGET_TRIPLET MATCHES -static)
|
||||||
set(arch_suffix -static)
|
set(arch_suffix -static)
|
||||||
endif()
|
endif()
|
||||||
if(CMAKE_BUILD_TYPE MATCHES "^(Debug|RelWithDebInfo)$")
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set(path_prefix debug)
|
set(path_prefix debug)
|
||||||
endif()
|
endif()
|
||||||
set(installed_prefix ${_VCPKG_INSTALLED_DIR}/${WINARCH}-windows${arch_suffix}/${path_prefix})
|
|
||||||
|
|
||||||
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${installed_prefix}/lib/samplerate.lib)
|
set(samplerate_lib_name samplerate)
|
||||||
|
set(installed_prefix ${_VCPKG_INSTALLED_DIR}/${WINARCH}-windows${arch_suffix}/${path_prefix})
|
||||||
|
|
||||||
|
if(MINGW)
|
||||||
|
set(installed_prefix ${_VCPKG_INSTALLED_DIR}/${WINARCH}-mingw${arch_suffix}/${path_prefix})
|
||||||
|
set(samplerate_lib_name lib${samplerate_lib_name})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
SET(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} "${installed_prefix}/lib/${samplerate_lib_name}${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||||
else()
|
else()
|
||||||
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} -lsamplerate)
|
SET(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} -lsamplerate)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(VBAM_STATIC)
|
if(ENABLE_SDL3)
|
||||||
set(VBAM_SDL2_LIBS SDL2::SDL2-static ${SDL2_LIBRARY_TEMP})
|
if(UNIX AND NOT APPLE)
|
||||||
|
set(VBAM_SDL_LIBS "${SDL3_LIBRARIES}")
|
||||||
|
else()
|
||||||
|
if(VBAM_STATIC)
|
||||||
|
set(VBAM_SDL_LIBS SDL3::SDL3-static ${SDL_LIBRARY_TEMP})
|
||||||
|
else()
|
||||||
|
set(VBAM_SDL_LIBS SDL3::SDL3 ${SDL_LIBRARY_TEMP})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
set(VBAM_SDL2_LIBS SDL2::SDL2 ${SDL2_LIBRARY_TEMP})
|
if(VBAM_STATIC)
|
||||||
|
set(VBAM_SDL_LIBS SDL2::SDL2-static ${SDL_LIBRARY_TEMP})
|
||||||
|
else()
|
||||||
|
set(VBAM_SDL_LIBS SDL2::SDL2 ${SDL_LIBRARY_TEMP})
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_FFMPEG)
|
if(ENABLE_FFMPEG)
|
||||||
|
@ -49,7 +74,7 @@ if(ENABLE_FFMPEG)
|
||||||
list(APPEND FFMPEG_LDFLAGS "SHELL:-framework CoreText" "SHELL:-framework ApplicationServices")
|
list(APPEND FFMPEG_LDFLAGS "SHELL:-framework CoreText" "SHELL:-framework ApplicationServices")
|
||||||
|
|
||||||
if(UPSTREAM_RELEASE)
|
if(UPSTREAM_RELEASE)
|
||||||
list(APPEND FFMPEG_LDFLAGS -lbz2 -ltiff "SHELL:-framework DiskArbitration" -lfreetype -lfontconfig -llzma -lxml2 -lharfbuzz)
|
list(APPEND FFMPEG_LDFLAGS -lbz2 -ltiff "SHELL:-framework DiskArbitration" -lfreetype -lfontconfig -llzma -lxml2 -lharfbuzz -lcrypto -lssl)
|
||||||
endif()
|
endif()
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
set(WIN32_MEDIA_FOUNDATION_LIBS dxva2 evr mf mfplat mfplay mfreadwrite mfuuid amstrmid)
|
set(WIN32_MEDIA_FOUNDATION_LIBS dxva2 evr mf mfplat mfplay mfreadwrite mfuuid amstrmid)
|
||||||
|
@ -119,4 +144,3 @@ if(ENABLE_LINK OR ENABLE_WX)
|
||||||
message(FATAL_ERROR "NLS requires libintl/gettext")
|
message(FATAL_ERROR "NLS requires libintl/gettext")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
# The default components were taken from a survey over other FindFFMPEG.cmake files
|
# The default components were taken from a survey over other FindFFMPEG.cmake files
|
||||||
if (NOT FFmpeg_FIND_COMPONENTS)
|
if (NOT FFmpeg_FIND_COMPONENTS)
|
||||||
set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL)
|
set(FFmpeg_FIND_COMPONENTS AVFORMAT AVCODEC AVUTIL SWSCALE SWRESAMPLE X264 X265)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -65,7 +65,7 @@ macro(find_component _component _pkgconfig _library _header)
|
||||||
if (PKG_CONFIG_FOUND)
|
if (PKG_CONFIG_FOUND)
|
||||||
pkg_check_modules(PC_${_component} ${_pkgconfig})
|
pkg_check_modules(PC_${_component} ${_pkgconfig})
|
||||||
endif ()
|
endif ()
|
||||||
endif (NOT WIN32)
|
endif (NOT WIN32)
|
||||||
|
|
||||||
find_path(${_component}_INCLUDE_DIRS ${_header}
|
find_path(${_component}_INCLUDE_DIRS ${_header}
|
||||||
HINTS
|
HINTS
|
||||||
|
@ -99,14 +99,16 @@ endmacro()
|
||||||
if (NOT FFMPEG_LIBRARIES)
|
if (NOT FFMPEG_LIBRARIES)
|
||||||
|
|
||||||
# Check for all possible component.
|
# Check for all possible component.
|
||||||
find_component(AVCODEC libavcodec avcodec libavcodec/avcodec.h)
|
|
||||||
find_component(AVFORMAT libavformat avformat libavformat/avformat.h)
|
find_component(AVFORMAT libavformat avformat libavformat/avformat.h)
|
||||||
|
find_component(AVCODEC libavcodec avcodec libavcodec/avcodec.h)
|
||||||
find_component(AVDEVICE libavdevice avdevice libavdevice/avdevice.h)
|
find_component(AVDEVICE libavdevice avdevice libavdevice/avdevice.h)
|
||||||
find_component(AVUTIL libavutil avutil libavutil/avutil.h)
|
find_component(AVUTIL libavutil avutil libavutil/avutil.h)
|
||||||
find_component(AVFILTER libavfilter avfilter libavfilter/avfilter.h)
|
find_component(AVFILTER libavfilter avfilter libavfilter/avfilter.h)
|
||||||
find_component(SWSCALE libswscale swscale libswscale/swscale.h)
|
find_component(SWSCALE libswscale swscale libswscale/swscale.h)
|
||||||
find_component(POSTPROC libpostproc postproc libpostproc/postprocess.h)
|
find_component(POSTPROC libpostproc postproc libpostproc/postprocess.h)
|
||||||
find_component(SWRESAMPLE libswresample swresample libswresample/swresample.h)
|
find_component(SWRESAMPLE libswresample swresample libswresample/swresample.h)
|
||||||
|
find_component(X264 x264 x264 x264.h)
|
||||||
|
find_component(X265 x265 x265 x265.h)
|
||||||
|
|
||||||
# Check if the required components were found and add their stuff to the FFMPEG_* vars.
|
# Check if the required components were found and add their stuff to the FFMPEG_* vars.
|
||||||
foreach (_component ${FFmpeg_FIND_COMPONENTS})
|
foreach (_component ${FFmpeg_FIND_COMPONENTS})
|
||||||
|
|
|
@ -1,110 +0,0 @@
|
||||||
#.rst:
|
|
||||||
# FindOpenAL
|
|
||||||
# ----------
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Locate OpenAL This module defines OPENAL_LIBRARY OPENAL_FOUND, if
|
|
||||||
# false, do not try to link to OpenAL OPENAL_INCLUDE_DIR, where to find
|
|
||||||
# the headers
|
|
||||||
#
|
|
||||||
# $OPENALDIR is an environment variable that would correspond to the
|
|
||||||
# ./configure --prefix=$OPENALDIR used in building OpenAL.
|
|
||||||
#
|
|
||||||
# Created by Eric Wing. This was influenced by the FindSDL.cmake
|
|
||||||
# module.
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2005-2009 Kitware, Inc.
|
|
||||||
#
|
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
|
||||||
# see accompanying file Copyright.txt for details.
|
|
||||||
#
|
|
||||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
||||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the License for more information.
|
|
||||||
#=============================================================================
|
|
||||||
# (To distribute this file outside of CMake, substitute the full
|
|
||||||
# License text for the above reference.)
|
|
||||||
|
|
||||||
# This makes the presumption that you are include al.h like
|
|
||||||
# #include "al.h"
|
|
||||||
# and not
|
|
||||||
# #include <AL/al.h>
|
|
||||||
# The reason for this is that the latter is not entirely portable.
|
|
||||||
# Windows/Creative Labs does not by default put their headers in AL/ and
|
|
||||||
# OS X uses the convention <OpenAL/al.h>.
|
|
||||||
#
|
|
||||||
# For Windows, Creative Labs seems to have added a registry key for their
|
|
||||||
# OpenAL 1.1 installer. I have added that key to the list of search paths,
|
|
||||||
# however, the key looks like it could be a little fragile depending on
|
|
||||||
# if they decide to change the 1.00.0000 number for bug fix releases.
|
|
||||||
# Also, they seem to have laid down groundwork for multiple library platforms
|
|
||||||
# which puts the library in an extra subdirectory. Currently there is only
|
|
||||||
# Win32 and I have hardcoded that here. This may need to be adjusted as
|
|
||||||
# platforms are introduced.
|
|
||||||
# The OpenAL 1.0 installer doesn't seem to have a useful key I can use.
|
|
||||||
# I do not know if the Nvidia OpenAL SDK has a registry key.
|
|
||||||
#
|
|
||||||
# For OS X, remember that OpenAL was added by Apple in 10.4 (Tiger).
|
|
||||||
# To support the framework, I originally wrote special framework detection
|
|
||||||
# code in this module which I have now removed with CMake's introduction
|
|
||||||
# of native support for frameworks.
|
|
||||||
# In addition, OpenAL is open source, and it is possible to compile on Panther.
|
|
||||||
# Furthermore, due to bugs in the initial OpenAL release, and the
|
|
||||||
# transition to OpenAL 1.1, it is common to need to override the built-in
|
|
||||||
# framework.
|
|
||||||
# Per my request, CMake should search for frameworks first in
|
|
||||||
# the following order:
|
|
||||||
# ~/Library/Frameworks/OpenAL.framework/Headers
|
|
||||||
# /Library/Frameworks/OpenAL.framework/Headers
|
|
||||||
# /System/Library/Frameworks/OpenAL.framework/Headers
|
|
||||||
#
|
|
||||||
# On OS X, this will prefer the Framework version (if found) over others.
|
|
||||||
# People will have to manually change the cache values of
|
|
||||||
# OPENAL_LIBRARY to override this selection or set the CMake environment
|
|
||||||
# CMAKE_INCLUDE_PATH to modify the search paths.
|
|
||||||
|
|
||||||
find_path(OPENAL_INCLUDE_DIR al.h
|
|
||||||
HINTS
|
|
||||||
ENV OPENALDIR
|
|
||||||
PATH_SUFFIXES AL OpenAL
|
|
||||||
PATHS
|
|
||||||
~/Library/Frameworks
|
|
||||||
/Library/Frameworks
|
|
||||||
/sw # Fink
|
|
||||||
/opt/local # DarwinPorts
|
|
||||||
/opt/csw # Blastwave
|
|
||||||
/opt
|
|
||||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir]
|
|
||||||
)
|
|
||||||
|
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
||||||
set(_OpenAL_ARCH_DIR libs/Win64)
|
|
||||||
else()
|
|
||||||
set(_OpenAL_ARCH_DIR libs/Win32)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library(OPENAL_LIBRARY
|
|
||||||
NAMES OpenAL al openal OpenAL32
|
|
||||||
HINTS
|
|
||||||
ENV OPENALDIR
|
|
||||||
PATH_SUFFIXES lib64 lib libs64 libs ${_OpenAL_ARCH_DIR}
|
|
||||||
PATHS
|
|
||||||
~/Library/Frameworks
|
|
||||||
/Library/Frameworks
|
|
||||||
/sw
|
|
||||||
/opt/local
|
|
||||||
/opt/csw
|
|
||||||
/opt
|
|
||||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir]
|
|
||||||
)
|
|
||||||
|
|
||||||
unset(_OpenAL_ARCH_DIR)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set OPENAL_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenAL DEFAULT_MSG OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
|
|
||||||
|
|
||||||
mark_as_advanced(OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
|
|
|
@ -1,365 +0,0 @@
|
||||||
# This script locates the SFML library
|
|
||||||
# ------------------------------------
|
|
||||||
#
|
|
||||||
# Usage
|
|
||||||
# -----
|
|
||||||
#
|
|
||||||
# When you try to locate the SFML libraries, you must specify which modules you want to use (system, window, graphics, network, audio, main).
|
|
||||||
# If none is given, the SFML_LIBRARIES variable will be empty and you'll end up linking to nothing.
|
|
||||||
# example:
|
|
||||||
# find_package(SFML COMPONENTS graphics window system) # find the graphics, window and system modules
|
|
||||||
#
|
|
||||||
# You can enforce a specific version, either MAJOR.MINOR or only MAJOR.
|
|
||||||
# If nothing is specified, the version won't be checked (i.e. any version will be accepted).
|
|
||||||
# example:
|
|
||||||
# find_package(SFML COMPONENTS ...) # no specific version required
|
|
||||||
# find_package(SFML 2 COMPONENTS ...) # any 2.x version
|
|
||||||
# find_package(SFML 2.4 COMPONENTS ...) # version 2.4 or greater
|
|
||||||
#
|
|
||||||
# By default, the dynamic libraries of SFML will be found. To find the static ones instead,
|
|
||||||
# you must set the SFML_STATIC_LIBRARIES variable to TRUE before calling find_package(SFML ...).
|
|
||||||
# Since you have to link yourself all the SFML dependencies when you link it statically, the following
|
|
||||||
# additional variables are defined: SFML_XXX_DEPENDENCIES and SFML_DEPENDENCIES (see their detailed
|
|
||||||
# description below).
|
|
||||||
# In case of static linking, the SFML_STATIC macro will also be defined by this script.
|
|
||||||
# example:
|
|
||||||
# set(SFML_STATIC_LIBRARIES TRUE)
|
|
||||||
# find_package(SFML 2 COMPONENTS network system)
|
|
||||||
#
|
|
||||||
# On Mac OS X if SFML_STATIC_LIBRARIES is not set to TRUE then by default CMake will search for frameworks unless
|
|
||||||
# CMAKE_FIND_FRAMEWORK is set to "NEVER" for example. Please refer to CMake documentation for more details.
|
|
||||||
# Moreover, keep in mind that SFML frameworks are only available as release libraries unlike dylibs which
|
|
||||||
# are available for both release and debug modes.
|
|
||||||
#
|
|
||||||
# If SFML is not installed in a standard path, you can use the SFML_ROOT CMake (or environment) variable
|
|
||||||
# to tell CMake where SFML is.
|
|
||||||
#
|
|
||||||
# Output
|
|
||||||
# ------
|
|
||||||
#
|
|
||||||
# This script defines the following variables:
|
|
||||||
# - For each specified module XXX (system, window, graphics, network, audio, main):
|
|
||||||
# - SFML_XXX_LIBRARY_DEBUG: the name of the debug library of the xxx module (set to SFML_XXX_LIBRARY_RELEASE is no debug version is found)
|
|
||||||
# - SFML_XXX_LIBRARY_RELEASE: the name of the release library of the xxx module (set to SFML_XXX_LIBRARY_DEBUG is no release version is found)
|
|
||||||
# - SFML_XXX_LIBRARY: the name of the library to link to for the xxx module (includes both debug and optimized names if necessary)
|
|
||||||
# - SFML_XXX_FOUND: true if either the debug or release library of the xxx module is found
|
|
||||||
# - SFML_XXX_DEPENDENCIES: the list of libraries the module depends on, in case of static linking
|
|
||||||
# - SFML_LIBRARIES: the list of all libraries corresponding to the required modules
|
|
||||||
# - SFML_FOUND: true if all the required modules are found
|
|
||||||
# - SFML_INCLUDE_DIR: the path where SFML headers are located (the directory containing the SFML/Config.hpp file)
|
|
||||||
# - SFML_DEPENDENCIES: the list of libraries SFML depends on, in case of static linking
|
|
||||||
#
|
|
||||||
# example:
|
|
||||||
# find_package(SFML 2 COMPONENTS system window graphics audio REQUIRED)
|
|
||||||
# include_directories(${SFML_INCLUDE_DIR})
|
|
||||||
# add_executable(myapp ...)
|
|
||||||
# target_link_libraries(myapp ${SFML_LIBRARIES})
|
|
||||||
|
|
||||||
# define the SFML_STATIC macro if static build was chosen
|
|
||||||
if(SFML_STATIC_LIBRARIES)
|
|
||||||
add_compile_definitions(SFML_STATIC)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# define the list of search paths for headers and libraries
|
|
||||||
set(FIND_SFML_PATHS
|
|
||||||
${SFML_ROOT}
|
|
||||||
$ENV{SFML_ROOT}
|
|
||||||
~/Library/Frameworks
|
|
||||||
/Library/Frameworks
|
|
||||||
/usr/local
|
|
||||||
/usr
|
|
||||||
/sw
|
|
||||||
/opt/local
|
|
||||||
/opt/csw
|
|
||||||
/opt)
|
|
||||||
|
|
||||||
# find the SFML include directory
|
|
||||||
find_path(SFML_INCLUDE_DIR SFML/Config.hpp
|
|
||||||
PATH_SUFFIXES include
|
|
||||||
PATHS ${FIND_SFML_PATHS})
|
|
||||||
|
|
||||||
# check the version number
|
|
||||||
set(SFML_VERSION_OK TRUE)
|
|
||||||
if(SFML_FIND_VERSION AND SFML_INCLUDE_DIR)
|
|
||||||
# extract the major and minor version numbers from SFML/Config.hpp
|
|
||||||
# we have to handle framework a little bit differently:
|
|
||||||
if("${SFML_INCLUDE_DIR}" MATCHES "SFML.framework")
|
|
||||||
set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/Headers/Config.hpp")
|
|
||||||
else()
|
|
||||||
set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/SFML/Config.hpp")
|
|
||||||
endif()
|
|
||||||
FILE(READ "${SFML_CONFIG_HPP_INPUT}" SFML_CONFIG_HPP_CONTENTS)
|
|
||||||
STRING(REGEX REPLACE ".*#define *SFML_VERSION_MAJOR *([0-9]+).*" "\\1" SFML_VERSION_MAJOR "${SFML_CONFIG_HPP_CONTENTS}")
|
|
||||||
STRING(REGEX REPLACE ".*#define *SFML_VERSION_MINOR *([0-9]+).*" "\\1" SFML_VERSION_MINOR "${SFML_CONFIG_HPP_CONTENTS}")
|
|
||||||
STRING(REGEX REPLACE ".*#define *SFML_VERSION_PATCH *([0-9]+).*" "\\1" SFML_VERSION_PATCH "${SFML_CONFIG_HPP_CONTENTS}")
|
|
||||||
if (NOT "${SFML_VERSION_PATCH}" MATCHES "^[0-9]+$")
|
|
||||||
set(SFML_VERSION_PATCH 0)
|
|
||||||
endif()
|
|
||||||
math(EXPR SFML_REQUESTED_VERSION "${SFML_FIND_VERSION_MAJOR} * 10000 + ${SFML_FIND_VERSION_MINOR} * 100 + ${SFML_FIND_VERSION_PATCH}")
|
|
||||||
|
|
||||||
# if we could extract them, compare with the requested version number
|
|
||||||
if (SFML_VERSION_MAJOR)
|
|
||||||
# transform version numbers to an integer
|
|
||||||
math(EXPR SFML_VERSION "${SFML_VERSION_MAJOR} * 10000 + ${SFML_VERSION_MINOR} * 100 + ${SFML_VERSION_PATCH}")
|
|
||||||
|
|
||||||
# compare them
|
|
||||||
if(SFML_VERSION LESS SFML_REQUESTED_VERSION)
|
|
||||||
set(SFML_VERSION_OK FALSE)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
# SFML version is < 2.0
|
|
||||||
if (SFML_REQUESTED_VERSION GREATER 10900)
|
|
||||||
set(SFML_VERSION_OK FALSE)
|
|
||||||
set(SFML_VERSION_MAJOR 1)
|
|
||||||
set(SFML_VERSION_MINOR x)
|
|
||||||
set(SFML_VERSION_PATCH x)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# find the requested modules
|
|
||||||
set(SFML_FOUND TRUE) # will be set to false if one of the required modules is not found
|
|
||||||
foreach(FIND_SFML_COMPONENT ${SFML_FIND_COMPONENTS})
|
|
||||||
string(TOLOWER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_LOWER)
|
|
||||||
string(TOUPPER ${FIND_SFML_COMPONENT} FIND_SFML_COMPONENT_UPPER)
|
|
||||||
set(FIND_SFML_COMPONENT_NAME sfml-${FIND_SFML_COMPONENT_LOWER})
|
|
||||||
|
|
||||||
# no suffix for sfml-main, it is always a static library
|
|
||||||
if(FIND_SFML_COMPONENT_LOWER STREQUAL "main")
|
|
||||||
# release library
|
|
||||||
find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE
|
|
||||||
NAMES ${FIND_SFML_COMPONENT_NAME}
|
|
||||||
PATH_SUFFIXES lib64 lib
|
|
||||||
PATHS ${FIND_SFML_PATHS})
|
|
||||||
|
|
||||||
# debug library
|
|
||||||
find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG
|
|
||||||
NAMES ${FIND_SFML_COMPONENT_NAME}-d
|
|
||||||
PATH_SUFFIXES lib64 lib
|
|
||||||
PATHS ${FIND_SFML_PATHS})
|
|
||||||
else()
|
|
||||||
# static release library
|
|
||||||
find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_RELEASE
|
|
||||||
NAMES ${FIND_SFML_COMPONENT_NAME}-s
|
|
||||||
PATH_SUFFIXES lib64 lib
|
|
||||||
PATHS ${FIND_SFML_PATHS})
|
|
||||||
|
|
||||||
# static debug library
|
|
||||||
find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_DEBUG
|
|
||||||
NAMES ${FIND_SFML_COMPONENT_NAME}-s-d
|
|
||||||
PATH_SUFFIXES lib64 lib
|
|
||||||
PATHS ${FIND_SFML_PATHS})
|
|
||||||
|
|
||||||
# dynamic release library
|
|
||||||
find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_RELEASE
|
|
||||||
NAMES ${FIND_SFML_COMPONENT_NAME}
|
|
||||||
PATH_SUFFIXES lib64 lib
|
|
||||||
PATHS ${FIND_SFML_PATHS})
|
|
||||||
|
|
||||||
# dynamic debug library
|
|
||||||
find_library(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_DEBUG
|
|
||||||
NAMES ${FIND_SFML_COMPONENT_NAME}-d
|
|
||||||
PATH_SUFFIXES lib64 lib
|
|
||||||
PATHS ${FIND_SFML_PATHS})
|
|
||||||
|
|
||||||
# choose the entries that fit the requested link type
|
|
||||||
if(SFML_STATIC_LIBRARIES)
|
|
||||||
if(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_RELEASE)
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_RELEASE})
|
|
||||||
endif()
|
|
||||||
if(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_DEBUG)
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_DEBUG})
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_RELEASE)
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_RELEASE})
|
|
||||||
endif()
|
|
||||||
if(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_DEBUG)
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_DEBUG})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG OR SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE)
|
|
||||||
# library found
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND TRUE)
|
|
||||||
|
|
||||||
# if both are found, set SFML_XXX_LIBRARY to contain both
|
|
||||||
if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE)
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY debug ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG}
|
|
||||||
optimized ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# if only one debug/release variant is found, set the other to be equal to the found one
|
|
||||||
if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE)
|
|
||||||
# debug and not release
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG})
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG})
|
|
||||||
endif()
|
|
||||||
if (SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE AND NOT SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG)
|
|
||||||
# release and not debug
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE})
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY ${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE})
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
# library not found
|
|
||||||
set(SFML_FOUND FALSE)
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_FOUND FALSE)
|
|
||||||
set(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY "")
|
|
||||||
set(FIND_SFML_MISSING "${FIND_SFML_MISSING} SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# mark as advanced
|
|
||||||
MARK_AS_ADVANCED(SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY
|
|
||||||
SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_RELEASE
|
|
||||||
SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DEBUG
|
|
||||||
SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_RELEASE
|
|
||||||
SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_STATIC_DEBUG
|
|
||||||
SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_RELEASE
|
|
||||||
SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY_DYNAMIC_DEBUG)
|
|
||||||
|
|
||||||
# add to the global list of libraries
|
|
||||||
set(SFML_LIBRARIES ${SFML_LIBRARIES} "${SFML_${FIND_SFML_COMPONENT_UPPER}_LIBRARY}")
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# in case of static linking, we must also define the list of all the dependencies of SFML libraries
|
|
||||||
if(SFML_STATIC_LIBRARIES)
|
|
||||||
|
|
||||||
# detect the OS
|
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|
||||||
set(FIND_SFML_OS_WINDOWS 1)
|
|
||||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
||||||
set(FIND_SFML_OS_LINUX 1)
|
|
||||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
|
||||||
set(FIND_SFML_OS_FREEBSD 1)
|
|
||||||
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|
||||||
set(FIND_SFML_OS_MACOSX 1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# start with an empty list
|
|
||||||
set(SFML_DEPENDENCIES)
|
|
||||||
set(FIND_SFML_DEPENDENCIES_NOTFOUND)
|
|
||||||
|
|
||||||
# macro that searches for a 3rd-party library
|
|
||||||
macro(find_sfml_dependency output friendlyname)
|
|
||||||
# No lookup in environment variables (PATH on Windows), as they may contain wrong library versions
|
|
||||||
find_library(${output} NAMES ${ARGN} PATHS ${FIND_SFML_PATHS} PATH_SUFFIXES lib NO_SYSTEM_ENVIRONMENT_PATH)
|
|
||||||
if(${${output}} STREQUAL "${output}-NOTFOUND")
|
|
||||||
unset(output)
|
|
||||||
set(FIND_SFML_DEPENDENCIES_NOTFOUND "${FIND_SFML_DEPENDENCIES_NOTFOUND} ${friendlyname}")
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# sfml-system
|
|
||||||
list(FIND SFML_FIND_COMPONENTS "system" FIND_SFML_SYSTEM_COMPONENT)
|
|
||||||
if(NOT ${FIND_SFML_SYSTEM_COMPONENT} EQUAL -1)
|
|
||||||
|
|
||||||
# update the list -- these are only system libraries, no need to find them
|
|
||||||
if(FIND_SFML_OS_LINUX OR FIND_SFML_OS_FREEBSD OR FIND_SFML_OS_MACOSX)
|
|
||||||
set(SFML_SYSTEM_DEPENDENCIES "pthread")
|
|
||||||
endif()
|
|
||||||
if(FIND_SFML_OS_LINUX)
|
|
||||||
set(SFML_SYSTEM_DEPENDENCIES ${SFML_SYSTEM_DEPENDENCIES} "rt")
|
|
||||||
endif()
|
|
||||||
if(FIND_SFML_OS_WINDOWS)
|
|
||||||
set(SFML_SYSTEM_DEPENDENCIES "winmm")
|
|
||||||
endif()
|
|
||||||
set(SFML_DEPENDENCIES ${SFML_SYSTEM_DEPENDENCIES} ${SFML_DEPENDENCIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# sfml-network
|
|
||||||
list(FIND SFML_FIND_COMPONENTS "network" FIND_SFML_NETWORK_COMPONENT)
|
|
||||||
if(NOT ${FIND_SFML_NETWORK_COMPONENT} EQUAL -1)
|
|
||||||
|
|
||||||
# update the list -- these are only system libraries, no need to find them
|
|
||||||
if(FIND_SFML_OS_WINDOWS)
|
|
||||||
set(SFML_NETWORK_DEPENDENCIES "ws2_32")
|
|
||||||
endif()
|
|
||||||
set(SFML_DEPENDENCIES ${SFML_NETWORK_DEPENDENCIES} ${SFML_DEPENDENCIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# sfml-window
|
|
||||||
list(FIND SFML_FIND_COMPONENTS "window" FIND_SFML_WINDOW_COMPONENT)
|
|
||||||
if(NOT ${FIND_SFML_WINDOW_COMPONENT} EQUAL -1)
|
|
||||||
|
|
||||||
# find libraries
|
|
||||||
if(FIND_SFML_OS_LINUX OR FIND_SFML_OS_FREEBSD)
|
|
||||||
find_sfml_dependency(X11_LIBRARY "X11" X11)
|
|
||||||
find_sfml_dependency(XRANDR_LIBRARY "Xrandr" Xrandr)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(FIND_SFML_OS_LINUX)
|
|
||||||
find_sfml_dependency(UDEV_LIBRARIES "UDev" udev libudev)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# update the list
|
|
||||||
if(FIND_SFML_OS_WINDOWS)
|
|
||||||
set(SFML_WINDOW_DEPENDENCIES ${SFML_WINDOW_DEPENDENCIES} "opengl32" "winmm" "gdi32")
|
|
||||||
elseif(FIND_SFML_OS_LINUX)
|
|
||||||
set(SFML_WINDOW_DEPENDENCIES ${SFML_WINDOW_DEPENDENCIES} "GL" ${X11_LIBRARY} ${XRANDR_LIBRARY} ${UDEV_LIBRARIES})
|
|
||||||
elseif(FIND_SFML_OS_FREEBSD)
|
|
||||||
set(SFML_WINDOW_DEPENDENCIES ${SFML_WINDOW_DEPENDENCIES} "GL" ${X11_LIBRARY} ${XRANDR_LIBRARY} "usbhid")
|
|
||||||
elseif(FIND_SFML_OS_MACOSX)
|
|
||||||
set(SFML_WINDOW_DEPENDENCIES ${SFML_WINDOW_DEPENDENCIES} "-framework OpenGL -framework Foundation -framework AppKit -framework IOKit -framework Carbon")
|
|
||||||
endif()
|
|
||||||
set(SFML_DEPENDENCIES ${SFML_WINDOW_DEPENDENCIES} ${SFML_DEPENDENCIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# sfml-graphics
|
|
||||||
list(FIND SFML_FIND_COMPONENTS "graphics" FIND_SFML_GRAPHICS_COMPONENT)
|
|
||||||
if(NOT ${FIND_SFML_GRAPHICS_COMPONENT} EQUAL -1)
|
|
||||||
|
|
||||||
# find libraries
|
|
||||||
find_sfml_dependency(FREETYPE_LIBRARY "FreeType" freetype)
|
|
||||||
find_sfml_dependency(JPEG_LIBRARY "libjpeg" jpeg)
|
|
||||||
|
|
||||||
# update the list
|
|
||||||
set(SFML_GRAPHICS_DEPENDENCIES ${FREETYPE_LIBRARY} ${JPEG_LIBRARY})
|
|
||||||
set(SFML_DEPENDENCIES ${SFML_GRAPHICS_DEPENDENCIES} ${SFML_DEPENDENCIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# sfml-audio
|
|
||||||
list(FIND SFML_FIND_COMPONENTS "audio" FIND_SFML_AUDIO_COMPONENT)
|
|
||||||
if(NOT ${FIND_SFML_AUDIO_COMPONENT} EQUAL -1)
|
|
||||||
|
|
||||||
# find libraries
|
|
||||||
find_sfml_dependency(OPENAL_LIBRARY "OpenAL" openal openal32)
|
|
||||||
find_sfml_dependency(OGG_LIBRARY "Ogg" ogg)
|
|
||||||
find_sfml_dependency(VORBIS_LIBRARY "Vorbis" vorbis)
|
|
||||||
find_sfml_dependency(VORBISFILE_LIBRARY "VorbisFile" vorbisfile)
|
|
||||||
find_sfml_dependency(VORBISENC_LIBRARY "VorbisEnc" vorbisenc)
|
|
||||||
find_sfml_dependency(FLAC_LIBRARY "FLAC" FLAC)
|
|
||||||
|
|
||||||
# update the list
|
|
||||||
set(SFML_AUDIO_DEPENDENCIES ${OPENAL_LIBRARY} ${FLAC_LIBRARY} ${VORBISENC_LIBRARY} ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY} ${OGG_LIBRARY})
|
|
||||||
set(SFML_DEPENDENCIES ${SFML_DEPENDENCIES} ${SFML_AUDIO_DEPENDENCIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# handle errors
|
|
||||||
if(NOT SFML_VERSION_OK)
|
|
||||||
# SFML version not ok
|
|
||||||
set(FIND_SFML_ERROR "SFML found but version too low (requested: ${SFML_FIND_VERSION}, found: ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR}.${SFML_VERSION_PATCH})")
|
|
||||||
set(SFML_FOUND FALSE)
|
|
||||||
elseif(SFML_STATIC_LIBRARIES AND FIND_SFML_DEPENDENCIES_NOTFOUND)
|
|
||||||
set(FIND_SFML_ERROR "SFML found but some of its dependencies are missing (${FIND_SFML_DEPENDENCIES_NOTFOUND})")
|
|
||||||
set(SFML_FOUND FALSE)
|
|
||||||
elseif(NOT SFML_FOUND)
|
|
||||||
# include directory or library not found
|
|
||||||
set(FIND_SFML_ERROR "Could NOT find SFML (missing: ${FIND_SFML_MISSING})")
|
|
||||||
endif()
|
|
||||||
if (NOT SFML_FOUND)
|
|
||||||
if(SFML_FIND_REQUIRED)
|
|
||||||
# fatal error
|
|
||||||
message(FATAL_ERROR ${FIND_SFML_ERROR})
|
|
||||||
elseif(NOT SFML_FIND_QUIETLY)
|
|
||||||
# error but continue
|
|
||||||
message("${FIND_SFML_ERROR}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# handle success
|
|
||||||
if(SFML_FOUND AND NOT SFML_FIND_QUIETLY)
|
|
||||||
message(STATUS "Found SFML ${SFML_VERSION_MAJOR}.${SFML_VERSION_MINOR}.${SFML_VERSION_PATCH} in ${SFML_INCLUDE_DIR}")
|
|
||||||
endif()
|
|
|
@ -221,7 +221,7 @@ release notes.
|
||||||
|
|
||||||
Run the following commands to commit the change:
|
Run the following commands to commit the change:
|
||||||
|
|
||||||
git commit -m'release ${new_tag}' --signoff -S
|
git commit -a -m'release ${new_tag}' --signoff -S
|
||||||
git tag -s -m'${new_tag}' ${new_tag}
|
git tag -s -m'${new_tag}' ${new_tag}
|
||||||
|
|
||||||
To rollback these changes, run this command:
|
To rollback these changes, run this command:
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file LICENCE.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
function(add_metal_shader_library TARGET)
|
||||||
|
cmake_parse_arguments(PARSE_ARGV 1 _amsl
|
||||||
|
""
|
||||||
|
"STANDARD"
|
||||||
|
""
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(${TARGET} MODULE ${_amsl_UNPARSED_ARGUMENTS})
|
||||||
|
|
||||||
|
set_target_properties(${TARGET} PROPERTIES
|
||||||
|
DEBUG_POSTFIX ""
|
||||||
|
XCODE_PRODUCT_TYPE com.apple.product-type.metal-library
|
||||||
|
XCODE_ATTRIBUTE_MTL_FAST_MATH "YES"
|
||||||
|
XCODE_ATTRIBUTE_MTL_ENABLE_DEBUG_INFO[variant=Debug] "INCLUDE_SOURCE"
|
||||||
|
XCODE_ATTRIBUTE_MTL_ENABLE_DEBUG_INFO[variant=RelWithDebInfo] "INCLUDE_SOURCE"
|
||||||
|
XCODE_ATTRIBUTE_MTL_HEADER_SEARCH_PATHS "$(HEADER_SEARCH_PATHS)"
|
||||||
|
)
|
||||||
|
|
||||||
|
if(_amsl_STANDARD AND _amsl_STANDARD MATCHES "metal([0-9]+)\.([0-9]+)")
|
||||||
|
target_compile_options(${TARGET}
|
||||||
|
PRIVATE "-std=${_amsl_STANDARD}"
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(${TARGET} PROPERTIES
|
||||||
|
XCODE_ATTRIBUTE_MTL_LANGUAGE_REVISION "Metal${CMAKE_MATCH_1}${CMAKE_MATCH_2}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(target_embed_metal_shader_libraries TARGET)
|
||||||
|
cmake_parse_arguments(PARSE_ARGV 1 _temsl
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
)
|
||||||
|
|
||||||
|
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.28 AND ${CMAKE_GENERATOR} STREQUAL "Xcode")
|
||||||
|
set_target_properties(${TARGET} PROPERTIES
|
||||||
|
XCODE_EMBED_RESOURCES "${_temsl_UNPARSED_ARGUMENTS}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
foreach(SHADERLIB IN LISTS _temsl_UNPARSED_ARGUMENTS)
|
||||||
|
add_dependencies(${TARGET} ${SHADERLIB})
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:${SHADERLIB}>" "$<TARGET_BUNDLE_CONTENT_DIR:${TARGET}>/Resources/$<TARGET_FILE_NAME:${SHADERLIB}>"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
|
@ -9,15 +9,11 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(ENABLE_SDL_DEFAULT ${BUILD_DEFAULT})
|
set(ENABLE_SDL_DEFAULT ${BUILD_DEFAULT})
|
||||||
|
|
||||||
if(WIN32 OR APPLE)
|
if(WIN32 OR APPLE)
|
||||||
set(ENABLE_SDL_DEFAULT OFF)
|
set(ENABLE_SDL_DEFAULT OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(ENABLE_SDL "Build the SDL port" ${ENABLE_SDL_DEFAULT})
|
|
||||||
option(ENABLE_WX "Build the wxWidgets port" ${BUILD_DEFAULT})
|
|
||||||
option(ENABLE_DEBUGGER "Enable the debugger" ON)
|
|
||||||
option(ENABLE_ASAN "Enable -fsanitize=address by default. Requires debug build with GCC/Clang" OFF)
|
|
||||||
|
|
||||||
# Static linking
|
# Static linking
|
||||||
set(VBAM_STATIC_DEFAULT OFF)
|
set(VBAM_STATIC_DEFAULT OFF)
|
||||||
if(VCPKG_TARGET_TRIPLET MATCHES -static OR CMAKE_TOOLCHAIN_FILE MATCHES "mxe|-static")
|
if(VCPKG_TARGET_TRIPLET MATCHES -static OR CMAKE_TOOLCHAIN_FILE MATCHES "mxe|-static")
|
||||||
|
@ -30,6 +26,7 @@ option(VBAM_STATIC "Try to link all libraries statically" ${VBAM_STATIC_DEFAULT}
|
||||||
|
|
||||||
if(VBAM_STATIC)
|
if(VBAM_STATIC)
|
||||||
set(SDL2_STATIC ON)
|
set(SDL2_STATIC ON)
|
||||||
|
set(SDL3_STATIC ON)
|
||||||
set(SFML_STATIC_LIBRARIES ON)
|
set(SFML_STATIC_LIBRARIES ON)
|
||||||
set(FFMPEG_STATIC ON)
|
set(FFMPEG_STATIC ON)
|
||||||
set(OPENAL_STATIC ON)
|
set(OPENAL_STATIC ON)
|
||||||
|
@ -43,6 +40,49 @@ if(VBAM_STATIC)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg" AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^([xX]86_64|[aA][mM][dD]64)$")
|
||||||
|
set(PKG_CONFIG_EXECUTABLE "$ENV{VCPKG_ROOT}/installed/x64-windows/tools/pkgconf/pkgconf.exe")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(PkgConfig)
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
pkg_check_modules(SDL3 sdl3 QUIET)
|
||||||
|
else()
|
||||||
|
find_package(SDL3 QUIET)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(ENABLE_SDL3 "Use SDL3" "${SDL3_FOUND}")
|
||||||
|
|
||||||
|
if(NOT TRANSLATIONS_ONLY)
|
||||||
|
if(ENABLE_SDL3)
|
||||||
|
if(NOT UNIX)
|
||||||
|
find_package(SDL3 REQUIRED)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
find_package(SDL2 REQUIRED)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(ENABLE_GENERIC_FILE_DIALOGS "Use generic file dialogs" OFF)
|
||||||
|
option(DISABLE_OPENGL "Disable OpenGL" OFF)
|
||||||
|
option(ENABLE_SDL "Build the SDL port" ${ENABLE_SDL_DEFAULT})
|
||||||
|
option(ENABLE_WX "Build the wxWidgets port" ${BUILD_DEFAULT})
|
||||||
|
option(ENABLE_DEBUGGER "Enable the debugger" ON)
|
||||||
|
option(ENABLE_ASAN "Enable -fsanitize=address by default. Requires debug build with GCC/Clang" OFF)
|
||||||
|
option(ENABLE_BZ2 "Enable BZ2 archive support" ON)
|
||||||
|
option(ENABLE_LZMA "Enable LZMA archive support" ON)
|
||||||
|
|
||||||
|
if(ENABLE_SDL3)
|
||||||
|
set(CMAKE_C_FLAGS "-DENABLE_SDL3 ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-DENABLE_SDL3 ${CMAKE_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(DISABLE_OPENGL)
|
||||||
|
set(CMAKE_C_FLAGS "-DNO_OPENGL -DNO_OGL ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-DNO_OPENGL -DNO_OGL ${CMAKE_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
option(ENABLE_ASM "Enable x86 ASM related options" OFF)
|
option(ENABLE_ASM "Enable x86 ASM related options" OFF)
|
||||||
|
|
||||||
# The ARM ASM core seems to be very buggy, see #98 and #54. Default to it being
|
# The ARM ASM core seems to be very buggy, see #98 and #54. Default to it being
|
||||||
|
@ -65,50 +105,36 @@ if(APPLE AND NOT DISABLE_MACOS_PACKAGE_MANAGERS)
|
||||||
include(MacPackageManagers)
|
include(MacPackageManagers)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(PkgConfig)
|
|
||||||
|
|
||||||
# Link / SFML
|
# Link / SFML
|
||||||
if(TRANSLATIONS_ONLY)
|
if(NOT TRANSLATIONS_ONLY)
|
||||||
set(ENABLE_LINK_DEFAULT OFF)
|
set(ENABLE_LINK_DEFAULT ON)
|
||||||
else()
|
|
||||||
find_package(SFML 2.4 COMPONENTS network system)
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
||||||
if(SFML_STATIC_LIBRARIES AND SFML_NETWORK_LIBRARY_STATIC_DEBUG AND SFML_SYSTEM_LIBRARY_STATIC_DEBUG)
|
|
||||||
set(SFML_LIBRARIES ${SFML_NETWORK_LIBRARY_STATIC_DEBUG} ${SFML_SYSTEM_LIBRARY_STATIC_DEBUG})
|
|
||||||
elseif(SFML_NETWORK_LIBRARY_DYNAMIC_DEBUG AND SFML_SYSTEM_LIBRARY_DYNAMIC_DEBUG)
|
|
||||||
set(SFML_LIBRARIES ${SFML_NETWORK_LIBRARY_DYNAMIC_DEBUG} ${SFML_SYSTEM_LIBRARY_DYNAMIC_DEBUG})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
set(ENABLE_LINK_DEFAULT OFF)
|
|
||||||
if(SFML_FOUND)
|
|
||||||
set(ENABLE_LINK_DEFAULT ON)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
option(ENABLE_LINK "Enable GBA linking functionality" ${ENABLE_LINK_DEFAULT})
|
option(ENABLE_LINK "Enable GBA linking functionality" ${ENABLE_LINK_DEFAULT})
|
||||||
|
|
||||||
# FFMpeg
|
# FFMpeg
|
||||||
set(FFMPEG_DEFAULT OFF)
|
set(FFMPEG_DEFAULT OFF)
|
||||||
set(FFMPEG_COMPONENTS AVCODEC AVFORMAT SWSCALE AVUTIL SWRESAMPLE)
|
set(FFMPEG_COMPONENTS AVFORMAT AVCODEC SWSCALE AVUTIL SWRESAMPLE X264 X265)
|
||||||
set(FFMPEG_COMPONENT_VERSIONS AVCODEC>=58.18.100 AVFORMAT>=58.12.100 SWSCALE>=5.1.100 AVUTIL>=56.14.100 SWRESAMPLE>=3.1.100)
|
set(FFMPEG_COMPONENT_VERSIONS AVFORMAT>=58.12.100 AVCODEC>=58.18.100 SWSCALE>=5.1.100 AVUTIL>=56.14.100 SWRESAMPLE>=3.1.100 X264>=0 X265>=0)
|
||||||
|
|
||||||
if(NOT TRANSLATIONS_ONLY AND NOT DEFINED ENABLE_FFMPEG OR ENABLE_FFMPEG)
|
if(NOT TRANSLATIONS_ONLY AND (NOT DEFINED ENABLE_FFMPEG OR ENABLE_FFMPEG))
|
||||||
set(FFMPEG_DEFAULT ON)
|
set(FFMPEG_DEFAULT ON)
|
||||||
|
|
||||||
find_package(FFmpeg COMPONENTS ${FFMPEG_COMPONENTS})
|
find_package(FFmpeg COMPONENTS ${FFMPEG_COMPONENTS})
|
||||||
|
|
||||||
# check versions, but only if pkgconfig is available
|
# check versions, but only if pkgconfig is available
|
||||||
if(FFMPEG_FOUND AND PKG_CONFIG_FOUND AND NOT CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
|
if(FFmpeg_FOUND AND PKG_CONFIG_FOUND AND NOT CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
|
||||||
foreach(component ${FFMPEG_COMPONENT_VERSIONS})
|
foreach(component ${FFMPEG_COMPONENT_VERSIONS})
|
||||||
string(REPLACE ">=" ";" parts ${component})
|
string(REPLACE ">=" ";" parts ${component})
|
||||||
list(GET parts 0 name)
|
list(GET parts 0 name)
|
||||||
list(GET parts 1 version)
|
list(GET parts 1 version)
|
||||||
|
|
||||||
if((NOT DEFINED ${name}_VERSION) OR ${name}_VERSION VERSION_LESS ${version})
|
if((NOT DEFINED ${name}_VERSION) OR ${name}_VERSION VERSION_LESS ${version})
|
||||||
set(FFMPEG_FOUND OFF)
|
set(FFmpeg_FOUND OFF)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT FFMPEG_FOUND)
|
if(NOT FFmpeg_FOUND)
|
||||||
set(FFMPEG_DEFAULT OFF)
|
set(FFMPEG_DEFAULT OFF)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@ -139,7 +165,7 @@ if(WIN32)
|
||||||
option(ENABLE_DIRECT3D "Enable Direct3D rendering for the wxWidgets port" OFF)
|
option(ENABLE_DIRECT3D "Enable Direct3D rendering for the wxWidgets port" OFF)
|
||||||
|
|
||||||
set(XAUDIO2_DEFAULT ON)
|
set(XAUDIO2_DEFAULT ON)
|
||||||
if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
if ((MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) OR (MINGW AND X86))
|
||||||
# TODO: We should update the XAudio headers to build with clang-cl. See
|
# TODO: We should update the XAudio headers to build with clang-cl. See
|
||||||
# https://github.com/visualboyadvance-m/visualboyadvance-m/issues/1021
|
# https://github.com/visualboyadvance-m/visualboyadvance-m/issues/1021
|
||||||
set(XAUDIO2_DEFAULT OFF)
|
set(XAUDIO2_DEFAULT OFF)
|
||||||
|
@ -147,6 +173,17 @@ if(WIN32)
|
||||||
option(ENABLE_XAUDIO2 "Enable xaudio2 sound output for the wxWidgets port" ${XAUDIO2_DEFAULT})
|
option(ENABLE_XAUDIO2 "Enable xaudio2 sound output for the wxWidgets port" ${XAUDIO2_DEFAULT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
find_package(OpenAL QUIET)
|
||||||
|
|
||||||
|
set(OPENAL_DEFAULT ${OpenAL_FOUND})
|
||||||
|
|
||||||
|
if(MINGW AND X86)
|
||||||
|
# OpenAL-Soft uses avrt.dll which is not available on Windows XP.
|
||||||
|
set(OPENAL_DEFAULT OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(ENABLE_OPENAL "Enable OpenAL-Soft sound output for the wxWidgets port" ${OPENAL_DEFAULT})
|
||||||
|
|
||||||
set(ENABLE_FAUDIO_DEFAULT OFF)
|
set(ENABLE_FAUDIO_DEFAULT OFF)
|
||||||
|
|
||||||
find_package(FAudio QUIET)
|
find_package(FAudio QUIET)
|
||||||
|
@ -169,3 +206,13 @@ if(TRANSLATIONS_ONLY AND (ENABLE_SDL OR ENABLE_WX))
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(GPG_SIGNATURES "Create GPG signatures for release files" OFF)
|
option(GPG_SIGNATURES "Create GPG signatures for release files" OFF)
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
set(wx_mac_patched_default OFF)
|
||||||
|
|
||||||
|
if(UPSTREAM_RELEASE)
|
||||||
|
set(wx_mac_patched_default ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(WX_MAC_PATCHED "A build of wxWidgets that is patched for the alert sound bug is being used" ${wx_mac_patched_default})
|
||||||
|
endif()
|
||||||
|
|
|
@ -10,19 +10,27 @@ if(NOT DEFINED VCPKG_TARGET_TRIPLET)
|
||||||
# Check if we are in an MSVC environment.
|
# Check if we are in an MSVC environment.
|
||||||
find_program(cl_exe_path NAME cl.exe HINTS ENV PATH)
|
find_program(cl_exe_path NAME cl.exe HINTS ENV PATH)
|
||||||
|
|
||||||
if($ENV{CXX} MATCHES "cl.exe$" OR cl_exe_path)
|
if(ENV{CXX} MATCHES "cl.exe$" OR cl_exe_path)
|
||||||
# Infer the architecture from the LIB folders.
|
# Infer the architecture from the LIB folders.
|
||||||
foreach(LIB $ENV{LIB})
|
foreach(lib $ENV{LIB})
|
||||||
if(${LIB} MATCHES "x64$")
|
if(lib MATCHES "x64$")
|
||||||
set(VBAM_VCPKG_PLATFORM "x64-windows-static")
|
set(VBAM_VCPKG_PLATFORM "x64-windows-static")
|
||||||
break()
|
break()
|
||||||
endif()
|
endif()
|
||||||
if(${LIB} MATCHES "x86$")
|
if(lib MATCHES "x86$")
|
||||||
set(VBAM_VCPKG_PLATFORM "x86-windows-static")
|
set(VBAM_VCPKG_PLATFORM "x86-windows-static")
|
||||||
break()
|
break()
|
||||||
endif()
|
endif()
|
||||||
if(${LIB} MATCHES "ARM64$")
|
if(lib MATCHES "ARM64$")
|
||||||
set(VBAM_VCPKG_PLATFORM "arm64-windows-static")
|
set(VBAM_VCPKG_PLATFORM "arm64-windows-static")
|
||||||
|
|
||||||
|
foreach(path $ENV{PATH})
|
||||||
|
if(path MATCHES "[Hh]ost[Xx]64")
|
||||||
|
set(VCPKG_HOST_TRIPLET "x64-windows" CACHE STRING "Vcpkg host triplet" FORCE)
|
||||||
|
set(VCPKG_USE_HOST_TOOLS ON CACHE BOOL "Use vcpkg host tools" FORCE)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
break()
|
break()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -142,24 +150,16 @@ function(vcpkg_is_installed vcpkg_exe pkg_name pkg_ver pkg_triplet powershell ou
|
||||||
string(REPLACE "-" "." pkg_ver ${pkg_ver})
|
string(REPLACE "-" "." pkg_ver ${pkg_ver})
|
||||||
|
|
||||||
if(NOT DEFINED VCPKG_INSTALLED_COUNT)
|
if(NOT DEFINED VCPKG_INSTALLED_COUNT)
|
||||||
if(VCPKG_ROOT MATCHES "Visual Studio")
|
execute_process(
|
||||||
execute_process(
|
COMMAND ${powershell}
|
||||||
COMMAND ${powershell}
|
-executionpolicy bypass -noprofile
|
||||||
-executionpolicy bypass -noprofile
|
-command "import-module '${CMAKE_BINARY_DIR}/vcpkg-binpkg/vcpkg-binpkg.psm1'; vcpkg-list"
|
||||||
-command "import-module '${CMAKE_BINARY_DIR}/vcpkg-binpkg/vcpkg-binpkg.psm1'; vcpkg-list"
|
OUTPUT_VARIABLE vcpkg_list_text
|
||||||
OUTPUT_VARIABLE vcpkg_list_text
|
)
|
||||||
)
|
|
||||||
else()
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${vcpkg_exe} list
|
|
||||||
OUTPUT_VARIABLE vcpkg_list_text
|
|
||||||
ERROR_QUIET
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(REGEX REPLACE "\r?\n" ";" vcpkg_list_raw "${vcpkg_list_text}")
|
string(REGEX REPLACE "\r?\n" ";" vcpkg_list_raw "${vcpkg_list_text}")
|
||||||
|
|
||||||
set(VCPKG_INSTALLED_COUNT 0 PARENT_SCOPE)
|
set(VCPKG_INSTALLED_COUNT 0 CACHE INTERNAL "Number of installed vcpkg packages" FORCE)
|
||||||
foreach(pkg ${vcpkg_list_raw})
|
foreach(pkg ${vcpkg_list_raw})
|
||||||
if(NOT pkg MATCHES "^([^:[]+)[^:]*:([^ ]+) +([0-9][^ ]*) +.*\$")
|
if(NOT pkg MATCHES "^([^:[]+)[^:]*:([^ ]+) +([0-9][^ ]*) +.*\$")
|
||||||
continue()
|
continue()
|
||||||
|
@ -181,8 +181,8 @@ function(vcpkg_is_installed vcpkg_exe pkg_name pkg_ver pkg_triplet powershell ou
|
||||||
list(APPEND VCPKG_INSTALLED ${inst_pkg_name} ${inst_pkg_ver} ${inst_pkg_rev} ${inst_pkg_triplet})
|
list(APPEND VCPKG_INSTALLED ${inst_pkg_name} ${inst_pkg_ver} ${inst_pkg_rev} ${inst_pkg_triplet})
|
||||||
math(EXPR VCPKG_INSTALLED_COUNT "${VCPKG_INSTALLED_COUNT} + 1")
|
math(EXPR VCPKG_INSTALLED_COUNT "${VCPKG_INSTALLED_COUNT} + 1")
|
||||||
endforeach()
|
endforeach()
|
||||||
set(VCPKG_INSTALLED ${VCPKG_INSTALLED} PARENT_SCOPE)
|
set(VCPKG_INSTALLED ${VCPKG_INSTALLED} CACHE INTERNAL "List of installed vcpkg packages" FORCE)
|
||||||
set(VCPKG_INSTALLED_COUNT ${VCPKG_INSTALLED_COUNT} PARENT_SCOPE)
|
set(VCPKG_INSTALLED_COUNT ${VCPKG_INSTALLED_COUNT} CACHE INTERNAL "Number of installed vcpkg packages" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT VCPKG_INSTALLED_COUNT GREATER 0)
|
if(NOT VCPKG_INSTALLED_COUNT GREATER 0)
|
||||||
|
@ -216,48 +216,79 @@ function(vcpkg_is_installed vcpkg_exe pkg_name pkg_ver pkg_triplet powershell ou
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(get_triplet_package_list triplet)
|
||||||
|
if(EXISTS "${CMAKE_BINARY_DIR}/binary_package_list_${triplet}.html")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
file(
|
||||||
|
DOWNLOAD "https://nightly.visualboyadvance-m.org/vcpkg/${triplet}/" "${CMAKE_BINARY_DIR}/binary_package_list_${triplet}.html"
|
||||||
|
STATUS pkg_list_status
|
||||||
|
)
|
||||||
|
list(GET pkg_list_status 1 pkg_list_error)
|
||||||
|
list(GET pkg_list_status 0 pkg_list_status)
|
||||||
|
|
||||||
|
if(NOT pkg_list_status EQUAL 0)
|
||||||
|
message(STATUS "Failed to download vcpkg binary package list: ${pkg_list_status} - ${pkg_list_error}")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(download_package pkg pkgs_dir)
|
||||||
|
string(REGEX REPLACE "^[^_]+_[^_]+_([^.]+)[.]zip\$" "\\1" pkg_triplet ${pkg})
|
||||||
|
|
||||||
|
message(STATUS "Downloading https://nightly.visualboyadvance-m.org/vcpkg/${pkg_triplet}/${pkg} ...")
|
||||||
|
|
||||||
|
file(
|
||||||
|
DOWNLOAD "https://nightly.visualboyadvance-m.org/vcpkg/${pkg_triplet}/${pkg}" "${pkgs_dir}/${pkg}"
|
||||||
|
STATUS pkg_download_status
|
||||||
|
)
|
||||||
|
list(GET pkg_download_status 1 pkg_download_error)
|
||||||
|
list(GET pkg_download_status 0 pkg_download_status)
|
||||||
|
|
||||||
|
if(NOT pkg_download_status EQUAL 0)
|
||||||
|
message(STATUS "Failed to download vcpkg binary package '${pkg}': ${pkg_download_status} - ${pkg_download_error}")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "done.")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(zip_is_installed vcpkg_exe zip outvar)
|
||||||
|
if(NOT zip MATCHES "([^_]+)_([^_]+)_([^.]+)[.]zip")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(pkg_name ${CMAKE_MATCH_1})
|
||||||
|
set(pkg_version ${CMAKE_MATCH_2})
|
||||||
|
set(pkg_triplet ${CMAKE_MATCH_3})
|
||||||
|
|
||||||
|
vcpkg_is_installed(${vcpkg_exe} ${pkg_name} ${pkg_version} ${pkg_triplet} ${POWERSHELL} pkg_installed)
|
||||||
|
|
||||||
|
set(${outvar} ${pkg_installed} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(cleanup_binary_packages)
|
||||||
|
file(REMOVE_RECURSE "${CMAKE_BINARY_DIR}/vcpkg-binary-packages")
|
||||||
|
|
||||||
|
unset(VCPKG_INSTALLED CACHE)
|
||||||
|
unset(VCPKG_INSTALLED_COUNT CACHE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
function(get_binary_packages vcpkg_exe)
|
function(get_binary_packages vcpkg_exe)
|
||||||
set(binary_packages_installed FALSE PARENT_SCOPE)
|
set(binary_packages_installed FALSE PARENT_SCOPE)
|
||||||
|
|
||||||
unset(triplets)
|
get_triplet_package_list(${VCPKG_TARGET_TRIPLET})
|
||||||
unset(host_triplet)
|
|
||||||
# Determine host triplet for vcpkg build dependencies
|
if(NOT EXISTS "${CMAKE_BINARY_DIR}/binary_package_list_${VCPKG_TARGET_TRIPLET}.html")
|
||||||
if(WIN32)
|
message(STATUS "Failed to download binary package list found for triplet '${VCPKG_TARGET_TRIPLET}', aborting.")
|
||||||
if($ENV{PROCESSOR_ARCHITECTURE} MATCHES "[Aa][Rr][Mm]64")
|
return()
|
||||||
set(host_triplet "arm64-windows")
|
|
||||||
elseif($ENV{PROCESSOR_ARCHITECTURE} MATCHES "[Aa][Mm][Dd]64|[Xx]64")
|
|
||||||
set(host_triplet "x64-windows")
|
|
||||||
else()
|
|
||||||
set(host_triplet "x86-windows")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
if(DEFINED host_triplet)
|
|
||||||
list(APPEND triplets ${host_triplet})
|
|
||||||
endif()
|
|
||||||
list(APPEND triplets ${VCPKG_TARGET_TRIPLET})
|
|
||||||
|
|
||||||
foreach(triplet ${triplets})
|
file(READ "${CMAKE_BINARY_DIR}/binary_package_list_${VCPKG_TARGET_TRIPLET}.html" raw_html)
|
||||||
file(
|
string(REGEX MATCHALL "<a href=\"[^\"]+[.]zip\"" links ${raw_html})
|
||||||
DOWNLOAD "https://nightly.visualboyadvance-m.org/vcpkg/${triplet}/" "${CMAKE_BINARY_DIR}/binary_package_list_${triplet}.html"
|
foreach(link ${links})
|
||||||
STATUS pkg_list_status
|
string(REGEX REPLACE "<a href=\"([^\"]+[.]zip)\"" "\\1" pkg ${link})
|
||||||
)
|
list(APPEND binary_packages ${pkg})
|
||||||
list(GET pkg_list_status 1 pkg_list_error)
|
|
||||||
list(GET pkg_list_status 0 pkg_list_status)
|
|
||||||
|
|
||||||
if(NOT pkg_list_status EQUAL 0)
|
|
||||||
message(STATUS "Failed to download vcpkg binary package list: ${pkg_list_status} - ${pkg_list_error}")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
unset(binary_packages)
|
|
||||||
foreach(triplet ${triplets})
|
|
||||||
file(READ "${CMAKE_BINARY_DIR}/binary_package_list_${triplet}.html" raw_html)
|
|
||||||
string(REGEX MATCHALL "<a href=\"[^\"]+[.]zip\"" links ${raw_html})
|
|
||||||
foreach(link ${links})
|
|
||||||
string(REGEX REPLACE "<a href=\"([^\"]+[.]zip)\"" "\\1" pkg ${link})
|
|
||||||
list(APPEND binary_packages ${pkg})
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
set(vcpkg_binpkg_dir ${CMAKE_BINARY_DIR}/vcpkg-binpkg)
|
set(vcpkg_binpkg_dir ${CMAKE_BINARY_DIR}/vcpkg-binpkg)
|
||||||
|
@ -270,19 +301,11 @@ function(get_binary_packages vcpkg_exe)
|
||||||
|
|
||||||
FetchContent_GetProperties(vcpkg_binpkg)
|
FetchContent_GetProperties(vcpkg_binpkg)
|
||||||
if(NOT vcpkg_binpkg_POPULATED)
|
if(NOT vcpkg_binpkg_POPULATED)
|
||||||
FetchContent_Populate(vcpkg_binpkg)
|
FetchContent_MakeAvailable(vcpkg_binpkg)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
unset(to_install)
|
|
||||||
foreach(pkg ${binary_packages})
|
foreach(pkg ${binary_packages})
|
||||||
if(NOT pkg MATCHES "([^_]+)_([^_]+)_([^.]+)[.]zip")
|
zip_is_installed(${vcpkg_exe} ${pkg} pkg_installed)
|
||||||
continue()
|
|
||||||
endif()
|
|
||||||
set(pkg_name ${CMAKE_MATCH_1})
|
|
||||||
set(pkg_version ${CMAKE_MATCH_2})
|
|
||||||
set(pkg_triplet ${CMAKE_MATCH_3})
|
|
||||||
|
|
||||||
vcpkg_is_installed(${vcpkg_exe} ${pkg_name} ${pkg_version} ${pkg_triplet} ${POWERSHELL} pkg_installed)
|
|
||||||
|
|
||||||
if(NOT pkg_installed)
|
if(NOT pkg_installed)
|
||||||
list(APPEND to_install ${pkg})
|
list(APPEND to_install ${pkg})
|
||||||
|
@ -294,26 +317,82 @@ function(get_binary_packages vcpkg_exe)
|
||||||
file(MAKE_DIRECTORY ${bin_pkgs_dir})
|
file(MAKE_DIRECTORY ${bin_pkgs_dir})
|
||||||
|
|
||||||
foreach(pkg ${to_install})
|
foreach(pkg ${to_install})
|
||||||
string(REGEX REPLACE "^[^_]+_[^_]+_([^.]+)[.]zip\$" "\\1" pkg_triplet ${pkg})
|
download_package("${pkg}" "${bin_pkgs_dir}")
|
||||||
|
|
||||||
message(STATUS "Downloading https://nightly.visualboyadvance-m.org/vcpkg/${pkg_triplet}/${pkg} ...")
|
if(NOT EXISTS "${bin_pkgs_dir}/${pkg}")
|
||||||
|
message(STATUS "Failed to download package '${pkg}', aborting.")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
file(
|
unset(installed_host_deps)
|
||||||
DOWNLOAD "https://nightly.visualboyadvance-m.org/vcpkg/${pkg_triplet}/${pkg}" "${bin_pkgs_dir}/${pkg}"
|
|
||||||
STATUS pkg_download_status
|
while(TRUE)
|
||||||
|
# -command "import-module ($env:USERPROFILE + '/source/repos/vcpkg-binpkg-prototype/vcpkg-binpkg.psm1'); vcpkg-listmissing ."
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${POWERSHELL}
|
||||||
|
-executionpolicy bypass -noprofile
|
||||||
|
-command "import-module '${CMAKE_BINARY_DIR}/vcpkg-binpkg/vcpkg-binpkg.psm1'; vcpkg-listmissing ."
|
||||||
|
WORKING_DIRECTORY ${bin_pkgs_dir}
|
||||||
|
OUTPUT_VARIABLE host_deps
|
||||||
|
RESULT_VARIABLE host_deps_status
|
||||||
)
|
)
|
||||||
list(GET pkg_download_status 1 pkg_download_error)
|
|
||||||
list(GET pkg_download_status 0 pkg_download_status)
|
|
||||||
|
|
||||||
if(NOT pkg_download_status EQUAL 0)
|
if(NOT host_deps_status EQUAL 0)
|
||||||
message(STATUS "Failed to download vcpkg binary package '${pkg}': ${pkg_download_status} - ${pkg_download_error}")
|
message(STATUS "Failed to calculate host dependencies: ${host_deps_status}")
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
message(STATUS "done.")
|
string(REGEX REPLACE "\r?\n" ";" host_deps "${host_deps}")
|
||||||
endforeach()
|
string(REGEX REPLACE " *;+ *$" "" host_deps "${host_deps}")
|
||||||
|
|
||||||
|
list(LENGTH host_deps host_deps_count)
|
||||||
|
list(LENGTH installed_host_deps installed_host_deps_count)
|
||||||
|
|
||||||
|
if(host_deps_count EQUAL installed_host_deps_count)
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
foreach(host_dep ${host_deps})
|
||||||
|
if(NOT host_dep MATCHES "^([^:]+):([^:]+)\$")
|
||||||
|
continue()
|
||||||
|
endif()
|
||||||
|
set(host_dep_name ${CMAKE_MATCH_1})
|
||||||
|
set(host_dep_triplet ${CMAKE_MATCH_2})
|
||||||
|
|
||||||
|
get_triplet_package_list(${host_dep_triplet})
|
||||||
|
|
||||||
|
file(READ "${CMAKE_BINARY_DIR}/binary_package_list_${host_dep_triplet}.html" raw_html)
|
||||||
|
string(REGEX MATCHALL "<a href=\"${host_dep_name}_[^\"]+[.]zip\"" links ${raw_html})
|
||||||
|
|
||||||
|
list(LENGTH links links_count)
|
||||||
|
|
||||||
|
if(NOT links_count EQUAL 1)
|
||||||
|
message(STATUS "Multiple host dependencies found for '${host_dep_name}' for triplet '${host_dep_triplet}', aborting.")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REGEX REPLACE "<a href=\"([^\"]+[.]zip)\"" "\\1" pkg ${links})
|
||||||
|
|
||||||
|
list(FIND installed_host_deps "${pkg}" found_idx)
|
||||||
|
|
||||||
|
if(found_idx EQUAL -1)
|
||||||
|
zip_is_installed(${vcpkg_exe} ${pkg} pkg_installed)
|
||||||
|
|
||||||
|
if(NOT pkg_installed)
|
||||||
|
download_package("${pkg}" "${bin_pkgs_dir}")
|
||||||
|
|
||||||
|
if(NOT EXISTS "${bin_pkgs_dir}/${pkg}")
|
||||||
|
message(STATUS "Failed to download host dependency package '${pkg}', aborting.")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
list(APPEND installed_host_deps "${pkg}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endwhile()
|
||||||
|
|
||||||
# -command "import-module ($env:USERPROFILE + '/source/repos/vcpkg-binpkg-prototype/vcpkg-binpkg.psm1'); vcpkg-instpkg ."
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${POWERSHELL}
|
COMMAND ${POWERSHELL}
|
||||||
-executionpolicy bypass -noprofile
|
-executionpolicy bypass -noprofile
|
||||||
|
@ -324,6 +403,8 @@ function(get_binary_packages vcpkg_exe)
|
||||||
file(REMOVE_RECURSE ${bin_pkgs_dir})
|
file(REMOVE_RECURSE ${bin_pkgs_dir})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
cleanup_binary_packages()
|
||||||
|
|
||||||
set(binary_packages_installed TRUE PARENT_SCOPE)
|
set(binary_packages_installed TRUE PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
@ -346,11 +427,12 @@ function(vcpkg_remove_optional_deps vcpkg_exe)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(vcpkg_set_toolchain)
|
function(vcpkg_set_toolchain)
|
||||||
|
get_filename_component(preferred_root ${CMAKE_SOURCE_DIR}/../vcpkg ABSOLUTE)
|
||||||
|
|
||||||
if(NOT DEFINED POWERSHELL)
|
if(NOT DEFINED POWERSHELL)
|
||||||
message(FATAL_ERROR "Powershell is required to use vcpkg binaries.")
|
message(FATAL_ERROR "Powershell is required to use vcpkg binaries.")
|
||||||
endif()
|
endif()
|
||||||
if(NOT DEFINED ENV{VCPKG_ROOT})
|
if(NOT DEFINED ENV{VCPKG_ROOT})
|
||||||
get_filename_component(preferred_root ${CMAKE_SOURCE_DIR}/../vcpkg ABSOLUTE)
|
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
if(DEFINED ENV{CI} OR EXISTS /vcpkg)
|
if(DEFINED ENV{CI} OR EXISTS /vcpkg)
|
||||||
|
@ -381,6 +463,22 @@ function(vcpkg_set_toolchain)
|
||||||
set(VCPKG_ROOT $ENV{VCPKG_ROOT})
|
set(VCPKG_ROOT $ENV{VCPKG_ROOT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Avoid using Visual Studio default vcpkg, because that requires elevaction.
|
||||||
|
if(VCPKG_ROOT MATCHES "Visual Studio")
|
||||||
|
set(mkdir_status 0)
|
||||||
|
if(NOT EXISTS "${preferred_root}")
|
||||||
|
file(
|
||||||
|
MAKE_DIRECTORY "${preferred_root}"
|
||||||
|
RESULT mkdir_status
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(mkdir_status EQUAL 0)
|
||||||
|
set(VCPKG_ROOT "${preferred_root}")
|
||||||
|
set(ENV{VCPKG_ROOT} ${VCPKG_ROOT})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
set(VCPKG_ROOT ${VCPKG_ROOT} CACHE FILEPATH "vcpkg installation root path" FORCE)
|
set(VCPKG_ROOT ${VCPKG_ROOT} CACHE FILEPATH "vcpkg installation root path" FORCE)
|
||||||
|
|
||||||
if(NOT EXISTS ${VCPKG_ROOT})
|
if(NOT EXISTS ${VCPKG_ROOT})
|
||||||
|
@ -465,6 +563,10 @@ function(vcpkg_set_toolchain)
|
||||||
|
|
||||||
foreach(pkg ${VCPKG_DEPS})
|
foreach(pkg ${VCPKG_DEPS})
|
||||||
list(APPEND VCPKG_DEPS_QUALIFIED ${pkg}:${VCPKG_TARGET_TRIPLET})
|
list(APPEND VCPKG_DEPS_QUALIFIED ${pkg}:${VCPKG_TARGET_TRIPLET})
|
||||||
|
|
||||||
|
if(VCPKG_TARGET_TRIPLET STREQUAL "x86-mingw-static")
|
||||||
|
list(APPEND VCPKG_DEPS_QUALIFIED libsamplerate:x86-mingw-static)
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@ -473,13 +575,9 @@ function(vcpkg_set_toolchain)
|
||||||
set(vcpkg_exe "${VCPKG_ROOT}/vcpkg")
|
set(vcpkg_exe "${VCPKG_ROOT}/vcpkg")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# update portfiles
|
if (NOT (NO_VCPKG_UPDATES OR (NOT VCPKG_BINARY_PACKAGES)))
|
||||||
execute_process(
|
get_binary_packages(${vcpkg_exe})
|
||||||
COMMAND ${vcpkg_exe} update
|
endif()
|
||||||
WORKING_DIRECTORY ${VCPKG_ROOT}
|
|
||||||
)
|
|
||||||
|
|
||||||
get_binary_packages(${vcpkg_exe})
|
|
||||||
|
|
||||||
if(NOT binary_packages_installed)
|
if(NOT binary_packages_installed)
|
||||||
# Get number of seconds since midnight (might be wrong if am/pm is in effect on Windows.)
|
# Get number of seconds since midnight (might be wrong if am/pm is in effect on Windows.)
|
||||||
|
@ -493,7 +591,7 @@ function(vcpkg_set_toolchain)
|
||||||
|
|
||||||
# Install core deps.
|
# Install core deps.
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${vcpkg_exe} install ${VCPKG_DEPS_QUALIFIED}
|
COMMAND ${vcpkg_exe} --triplet ${VCPKG_TARGET_TRIPLET} install ${pkg}
|
||||||
WORKING_DIRECTORY ${VCPKG_ROOT}
|
WORKING_DIRECTORY ${VCPKG_ROOT}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -535,7 +633,7 @@ function(vcpkg_set_toolchain)
|
||||||
set(dep_qualified "${dep}:${VCPKG_TARGET_TRIPLET}")
|
set(dep_qualified "${dep}:${VCPKG_TARGET_TRIPLET}")
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${vcpkg_exe} install ${dep_qualified}
|
COMMAND --triplet ${VCPKG_TARGET_TRIPLET} ${vcpkg_exe} install ${dep}
|
||||||
WORKING_DIRECTORY ${VCPKG_ROOT}
|
WORKING_DIRECTORY ${VCPKG_ROOT}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -551,14 +649,10 @@ function(vcpkg_set_toolchain)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32 AND NOT CMAKE_GENERATOR MATCHES "Visual Studio" AND NOT DEFINED CMAKE_CXX_COMPILER)
|
if(WIN32 AND NOT CMAKE_GENERATOR MATCHES "Visual Studio" AND NOT DEFINED CMAKE_CXX_COMPILER)
|
||||||
if(VCPKG_TARGET_TRIPLET MATCHES "^x[68][46]-windows-")
|
if(VCPKG_TARGET_TRIPLET MATCHES "-windows-")
|
||||||
# set toolchain to VS for e.g. Ninja or jom
|
# set toolchain to VS for e.g. Ninja or jom
|
||||||
set(CMAKE_C_COMPILER cl CACHE STRING "Microsoft C/C++ Compiler" FORCE)
|
set(CMAKE_C_COMPILER cl CACHE STRING "Microsoft C/C++ Compiler" FORCE)
|
||||||
set(CMAKE_CXX_COMPILER cl CACHE STRING "Microsoft C/C++ Compiler" FORCE)
|
set(CMAKE_CXX_COMPILER cl CACHE STRING "Microsoft C/C++ Compiler" FORCE)
|
||||||
elseif(VCPKG_TARGET_TRIPLET MATCHES "^x[68][46]-mingw-")
|
|
||||||
# set toolchain to MinGW for e.g. Ninja or jom
|
|
||||||
set(CMAKE_C_COMPILER gcc CACHE STRING "MinGW GCC C Compiler" FORCE)
|
|
||||||
set(CMAKE_CXX_COMPILER g++ CACHE STRING "MinGW G++ C++ Compiler" FORCE)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -567,14 +661,4 @@ endfunction()
|
||||||
|
|
||||||
vcpkg_set_toolchain()
|
vcpkg_set_toolchain()
|
||||||
|
|
||||||
# Make vcpkg use debug libs for RelWithDebInfo
|
|
||||||
set(orig_build_type ${CMAKE_BUILD_TYPE})
|
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo)
|
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
|
include(${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
|
||||||
|
|
||||||
set(CMAKE_BUILD_TYPE ${orig_build_type})
|
|
||||||
unset(orig_build_type)
|
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
if(X86_32 OR X86_64)
|
if(X86_32 OR X86_64)
|
||||||
add_compile_options(-mfpmath=sse -msse2)
|
add_compile_options(-msse2)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UPSTREAM_RELEASE)
|
if(UPSTREAM_RELEASE)
|
||||||
if(X86_64)
|
if(X86_64)
|
||||||
# Require and optimize for Core2 level support, tune for generic.
|
# Require and optimize for Core2 level support, tune for generic.
|
||||||
add_compile_options(-march=core2 -mtune=generic)
|
if(APPLE)
|
||||||
|
add_compile_options(-march=core2 -mtune=skylake)
|
||||||
|
else()
|
||||||
|
add_compile_options(-march=core2 -mtune=generic)
|
||||||
|
endif()
|
||||||
elseif(X86_32)
|
elseif(X86_32)
|
||||||
# Optimize for pentium-mmx and tune for generic for older builds.
|
# Optimize for pentiumi3 and tune for generic for Windows XP builds.
|
||||||
add_compile_options(-march=pentium-mmx -mtune=generic)
|
set(WINXP TRUE)
|
||||||
|
add_compile_options(-march=pentium3 -mtune=generic)
|
||||||
|
add_compile_definitions(-DWINXP)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -41,14 +47,16 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#add_compile_options(-std=c++14)
|
||||||
|
|
||||||
if(NOT ENABLE_ASM) # inline asm is not allowed with -fPIC
|
if(NOT ENABLE_ASM) # inline asm is not allowed with -fPIC
|
||||||
add_compile_options(-fPIC)
|
add_compile_options(-fPIC)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
add_compile_options(-ggdb3 -Og -fno-omit-frame-pointer -Wall -Wextra)
|
add_compile_options(-ggdb3 -fno-omit-frame-pointer -Wall -Wextra)
|
||||||
else()
|
else()
|
||||||
add_compile_options(-Ofast -fomit-frame-pointer)
|
add_compile_options(-O3 -ffast-math -fomit-frame-pointer)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# for some reason this is necessary
|
# for some reason this is necessary
|
||||||
|
|
|
@ -3,8 +3,8 @@ if (NOT MINGW)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# this has to run after the toolchain is initialized.
|
# this has to run after the toolchain is initialized.
|
||||||
include_directories("${CMAKE_SOURCE_DIR}/dependencies/mingw-include")
|
include_directories("${CMAKE_SOURCE_DIR}/win32-deps/mingw-include")
|
||||||
include_directories("${CMAKE_SOURCE_DIR}/dependencies/mingw-xaudio/include")
|
include_directories("${CMAKE_SOURCE_DIR}/win32-deps/mingw-xaudio/include")
|
||||||
|
|
||||||
# Add Winsock as the last library linked because of broken link precedence.
|
# Add Winsock as the last library linked because of broken link precedence.
|
||||||
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lws2_32")
|
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lws2_32")
|
||||||
|
|
|
@ -10,7 +10,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories("${CMAKE_SOURCE_DIR}/dependencies/msvc")
|
include_directories("${CMAKE_SOURCE_DIR}/win32-deps/msvc")
|
||||||
|
|
||||||
add_compile_definitions(
|
add_compile_definitions(
|
||||||
_FORCENAMELESSUNION
|
_FORCENAMELESSUNION
|
||||||
|
@ -68,6 +68,8 @@ if(CMAKE_VERSION VERSION_LESS "3.25")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/std:c++17>)
|
||||||
|
|
||||||
set(CMAKE_RC_FLAGS "-c65001 /DWIN32" CACHE STRING "" FORCE)
|
set(CMAKE_RC_FLAGS "-c65001 /DWIN32" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
# We need to explicitly set all of these to override the CMake defaults.
|
# We need to explicitly set all of these to override the CMake defaults.
|
||||||
|
|
|
@ -16,7 +16,7 @@ Ignore the following cmake error.
|
||||||
# Get last tag.
|
# Get last tag.
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${GIT_EXECUTABLE} tag --sort=-v:refname
|
COMMAND git tag --sort=-v:refname
|
||||||
OUTPUT_VARIABLE git_tags
|
OUTPUT_VARIABLE git_tags
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
@ -43,7 +43,7 @@ Ignore the following cmake error.
|
||||||
# Clone repo.
|
# Clone repo.
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${GIT_EXECUTABLE} clone git@github.com:visualboyadvance-m/visualboyadvance-m.github.io web-data
|
COMMAND git clone git@github.com:visualboyadvance-m/visualboyadvance-m.github.io web-data
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -103,21 +103,21 @@ Ignore the following cmake error.
|
||||||
)
|
)
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${GIT_EXECUTABLE} add appcast.xml
|
COMMAND git add appcast.xml
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/web-data
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/web-data
|
||||||
)
|
)
|
||||||
|
|
||||||
# Commit the change.
|
# Commit the change.
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${GIT_EXECUTABLE} commit -m "release ${new_tag}" --signoff -S
|
COMMAND git commit -m "release ${new_tag}" --signoff -S
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/web-data
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/web-data
|
||||||
)
|
)
|
||||||
|
|
||||||
# Make release tag.
|
# Make release tag.
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${GIT_EXECUTABLE} tag -s -m${new_tag} ${new_tag}
|
COMMAND git tag -s -m${new_tag} ${new_tag}
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/web-data
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/web-data
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,48 @@ function(check_clean_exit var)
|
||||||
set(${var} ${exit_status} PARENT_SCOPE)
|
set(${var} ${exit_status} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(try_wx_util var util conf_suffix major_version minor_version)
|
||||||
|
unset(suffix)
|
||||||
|
if(conf_suffix)
|
||||||
|
set(suffix "-${conf_suffix}")
|
||||||
|
endif()
|
||||||
|
if(major_version)
|
||||||
|
set(suffix "${suffix}-${major_version}")
|
||||||
|
|
||||||
|
if(NOT minor_version EQUAL -1)
|
||||||
|
set(suffix "${suffix}.${minor_version}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# find_program caches the result
|
||||||
|
set(exe NOTFOUND CACHE INTERNAL "" FORCE)
|
||||||
|
find_program(exe NAMES "${util}${suffix}")
|
||||||
|
|
||||||
|
# try infix variant, as on FreeBSD
|
||||||
|
if(NOT EXISTS "${exe}")
|
||||||
|
string(REGEX REPLACE "^-" "" suffix "${suffix}")
|
||||||
|
|
||||||
|
string(REGEX REPLACE "-" "${suffix}-" try "${util}")
|
||||||
|
|
||||||
|
set(exe NOTFOUND CACHE INTERNAL "" FORCE)
|
||||||
|
find_program(exe NAMES "${try}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(EXISTS "${exe}")
|
||||||
|
# check that the utility can be executed cleanly
|
||||||
|
# in case we find e.g. the wrong architecture binary
|
||||||
|
# when cross-compiling
|
||||||
|
check_clean_exit(exit_status "${exe}" --help)
|
||||||
|
|
||||||
|
if(exit_status EQUAL 0)
|
||||||
|
set("${var}" "${exe}" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
function(find_wx_util var util)
|
function(find_wx_util var util)
|
||||||
if(WIN32 OR EXISTS /etc/gentoo-release)
|
if((WIN32 AND (NOT CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg")) OR EXISTS /etc/gentoo-release)
|
||||||
# On win32, including cross builds we prefer the plain utility
|
# On win32, including cross builds we prefer the plain utility
|
||||||
# name first from PATH, with the exception of -static for static
|
# name first from PATH, with the exception of -static for static
|
||||||
# builds.
|
# builds.
|
||||||
|
@ -57,48 +97,34 @@ function(find_wx_util var util)
|
||||||
set(major_versions ";")
|
set(major_versions ";")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND conf_suffixes gtk4u gtk4 gtk3u gtk3 gtk2u gtk2 "")
|
list(APPEND conf_suffixes "" gtk3u gtk3 gtk2u gtk2)
|
||||||
list(APPEND major_versions 4 3 2 "")
|
list(APPEND major_versions "" 3)
|
||||||
|
|
||||||
|
get_target_property(wx_base_lib_prop wx::base LOCATION)
|
||||||
|
string(STRIP "${wx_base_lib_prop}" wx_base_lib)
|
||||||
|
|
||||||
|
if(wx_base_lib MATCHES "wx_baseu?-([0-9]+)\\.([0-9]+)\\.")
|
||||||
|
set(lib_major "${CMAKE_MATCH_1}")
|
||||||
|
set(lib_minor "${CMAKE_MATCH_2}")
|
||||||
|
endif()
|
||||||
|
|
||||||
foreach(conf_suffix IN LISTS conf_suffixes)
|
foreach(conf_suffix IN LISTS conf_suffixes)
|
||||||
|
if(lib_major AND lib_minor)
|
||||||
|
try_wx_util(exe "${util}" "${conf_suffix}" "${lib_major}" "${lib_minor}")
|
||||||
|
|
||||||
|
if(exe)
|
||||||
|
set("${var}" "${exe}" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
foreach(major_version IN LISTS major_versions)
|
foreach(major_version IN LISTS major_versions)
|
||||||
foreach(minor_version RANGE 100 -1 -1)
|
foreach(minor_version RANGE 30 -1 -1)
|
||||||
unset(suffix)
|
try_wx_util(exe "${util}" "${conf_suffix}" "${major_version}" "${minor_version}")
|
||||||
if(conf_suffix)
|
|
||||||
set(suffix "-${conf_suffix}")
|
|
||||||
endif()
|
|
||||||
if(major_version)
|
|
||||||
set(suffix "${suffix}-${major_version}")
|
|
||||||
|
|
||||||
if(NOT minor_version EQUAL -1)
|
if(exe)
|
||||||
set(suffix "${suffix}.${minor_version}")
|
set("${var}" "${exe}" PARENT_SCOPE)
|
||||||
endif()
|
return()
|
||||||
endif()
|
|
||||||
|
|
||||||
# find_program caches the result
|
|
||||||
set(exe NOTFOUND CACHE INTERNAL "" FORCE)
|
|
||||||
find_program(exe NAMES "${util}${suffix}")
|
|
||||||
|
|
||||||
# try infix variant, as on FreeBSD
|
|
||||||
if(NOT EXISTS ${exe})
|
|
||||||
string(REGEX REPLACE "^-" "" suffix "${suffix}")
|
|
||||||
|
|
||||||
string(REGEX REPLACE "-" "${suffix}-" try ${util})
|
|
||||||
|
|
||||||
set(exe NOTFOUND CACHE INTERNAL "" FORCE)
|
|
||||||
find_program(exe NAMES ${try})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(EXISTS ${exe})
|
|
||||||
# check that the utility can be executed cleanly
|
|
||||||
# in case we find e.g. the wrong architecture binary
|
|
||||||
# when cross-compiling
|
|
||||||
check_clean_exit(exit_status ${exe} --help)
|
|
||||||
|
|
||||||
if(exit_status EQUAL 0)
|
|
||||||
set(${var} ${exe} PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# don't iterate over minor versions for empty major version
|
# don't iterate over minor versions for empty major version
|
||||||
|
|
|
@ -2,7 +2,7 @@ with import <nixpkgs> {};
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "visualboyadvance-m";
|
name = "visualboyadvance-m";
|
||||||
buildInputs = if stdenv.isDarwin then
|
buildInputs = if stdenv.isDarwin then
|
||||||
[ ninja cmake gcc nasm faudio gettext libintl pkg-config zip sfml zlib openal ffmpeg wxGTK32 SDL2 pcre pcre2 darwin.apple_sdk.frameworks.System darwin.apple_sdk.frameworks.IOKit darwin.apple_sdk.frameworks.Carbon darwin.apple_sdk.frameworks.Cocoa darwin.apple_sdk.frameworks.QuartzCore darwin.apple_sdk.frameworks.AudioToolbox darwin.apple_sdk.frameworks.OpenGL darwin.apple_sdk.frameworks.OpenAL llvmPackages_latest.clang llvmPackages_latest.bintools ]
|
[ ninja cmake nasm faudio gettext libintl libtiff pkg-config zip zlib openal ffmpeg wxGTK32 sdl3 pcre pcre2 darwin.apple_sdk.frameworks.System darwin.apple_sdk.frameworks.IOKit darwin.apple_sdk.frameworks.Carbon darwin.apple_sdk.frameworks.Cocoa darwin.apple_sdk.frameworks.QuartzCore darwin.apple_sdk.frameworks.AudioToolbox darwin.apple_sdk.frameworks.OpenGL darwin.apple_sdk.frameworks.OpenAL llvmPackages_latest.clang llvmPackages_latest.bintools ]
|
||||||
else
|
else
|
||||||
[ ninja cmake gcc nasm faudio gettext libintl pkg-config zip sfml zlib openal ffmpeg wxGTK32 libGL libGLU glfw SDL2 gtk3-x11 pcre pcre2 util-linuxMinimal libselinux libsepol libthai libdatrie xorg.libXdmcp xorg.libXtst libxkbcommon epoxy dbus at-spi2-core ];
|
[ ninja cmake gcc clang llvm llvmPackages.libcxx nasm faudio gettext libintl libtiff pkg-config zip zlib openal ffmpeg wxGTK32 libGL libGLU glfw sdl3 gtk3-x11 pcre pcre2 util-linuxMinimal libselinux libsepol libthai libdatrie xorg.libXdmcp xorg.libXtst libxkbcommon libepoxy dbus at-spi2-core ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit e8ce758a98161d47559aa294d3298425ec75e28e
|
|
70
installdeps
70
installdeps
|
@ -191,7 +191,7 @@ freebsd_installdeps() {
|
||||||
|
|
||||||
check sudo pkg update
|
check sudo pkg update
|
||||||
|
|
||||||
pkgs="llvm-devel cmake ccache nasm ffmpeg gettext-tools gettext pkgconf sdl2 sfml wx31-gtk3 iconv zip ninja"
|
pkgs="llvm-devel cmake ccache nasm ffmpeg gettext-tools gettext pkgconf sdl3 wx31-gtk3 iconv zip ninja"
|
||||||
|
|
||||||
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs ffmpeg"
|
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs ffmpeg"
|
||||||
|
|
||||||
|
@ -318,16 +318,8 @@ debian_installdeps() {
|
||||||
if [ -z "$target" ]; then
|
if [ -z "$target" ]; then
|
||||||
sudo apt-get -qq -y update
|
sudo apt-get -qq -y update
|
||||||
|
|
||||||
sfml_libs=
|
|
||||||
|
|
||||||
for lib in graphics window network; do
|
|
||||||
sfml_libs="$sfml_libs $(apt-cache search "libsfml-$lib" | sed 's/ - .*//' | sort -r | head -1)"
|
|
||||||
done
|
|
||||||
|
|
||||||
glew_lib=$(apt-cache search libglew | grep '^libglew[0-9]' | sed 's/ - .*//' | sort -r | head -1)
|
glew_lib=$(apt-cache search libglew | grep '^libglew[0-9]' | sed 's/ - .*//' | sort -r | head -1)
|
||||||
|
|
||||||
sdl_lib=$(apt-cache search '^libsdl2-2.0' | sed 's/ - .*//' | sort -r | head -1)
|
|
||||||
|
|
||||||
# not present in trusty
|
# not present in trusty
|
||||||
if [ -n "$ENABLE_FFMPEG" ]; then
|
if [ -n "$ENABLE_FFMPEG" ]; then
|
||||||
libswresample_dev=$(apt-cache search libswresample-dev | awk '{print $1}')
|
libswresample_dev=$(apt-cache search libswresample-dev | awk '{print $1}')
|
||||||
|
@ -350,7 +342,7 @@ debian_installdeps() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
pkgs="build-essential g++ nasm cmake ccache gettext zlib1g-dev libgl1-mesa-dev libgettextpo-dev libsdl2-dev $sdl_lib libglu1-mesa-dev libglu1-mesa libgles2-mesa-dev libsfml-dev $sfml_libs $glew_lib $wx_libs libgtk2.0-dev libgtk-3-dev ccache zip ninja-build libopenal-dev"
|
pkgs="build-essential g++ nasm cmake ccache gettext zlib1g-dev libgl1-mesa-dev libgettextpo-dev libsdl3-dev libglu1-mesa-dev libglu1-mesa libgles2-mesa-dev $glew_lib $wx_libs libgtk2.0-dev libgtk-3-dev ccache zip ninja-build libopenal-dev"
|
||||||
|
|
||||||
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs libavcodec-dev libavformat-dev libswscale-dev libavutil-dev $libswresample_dev"
|
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs libavcodec-dev libavformat-dev libswscale-dev libavutil-dev $libswresample_dev"
|
||||||
|
|
||||||
|
@ -401,7 +393,7 @@ debian_installdeps() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
deps="gcc zlib ffmpeg gettext sdl2 sfml openal wxwidgets openal"
|
deps="gcc zlib ffmpeg gettext sdl3 openal wxwidgets openal"
|
||||||
[ -n "$ENABLE_FFMPEG" ] && deps="$deps ffmpeg"
|
[ -n "$ENABLE_FFMPEG" ] && deps="$deps ffmpeg"
|
||||||
|
|
||||||
set --
|
set --
|
||||||
|
@ -498,7 +490,7 @@ fedora_installdeps() {
|
||||||
# this is sometimes necessary for rawhide
|
# this is sometimes necessary for rawhide
|
||||||
set -- --exclude='glibc32*'
|
set -- --exclude='glibc32*'
|
||||||
fi
|
fi
|
||||||
for pkg in zlib-devel mesa-libGL-devel ffmpeg-devel gettext-devel SDL2-devel SFML-devel openal-soft-devel wxGTK-devel gtk3-devel; do
|
for pkg in zlib-devel mesa-libGL-devel ffmpeg-devel gettext-devel SDL3-devel openal-soft-devel wxGTK-devel gtk3-devel; do
|
||||||
case $pkg in
|
case $pkg in
|
||||||
*ffmpeg*)
|
*ffmpeg*)
|
||||||
[ -z "$ENABLE_FFMPEG" ] && continue
|
[ -z "$ENABLE_FFMPEG" ] && continue
|
||||||
|
@ -591,14 +583,12 @@ fedora_installdeps() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# install static deps
|
# install static deps
|
||||||
for pkg in zlib gettext SDL2 wxWidgets3 openal-soft; do
|
for pkg in zlib gettext SDL3 wxWidgets3 openal-soft; do
|
||||||
set -- "$@" "${target}-${pkg}-static"
|
set -- "$@" "${target}-${pkg}-static"
|
||||||
done
|
done
|
||||||
|
|
||||||
# get the necessary win32 headers
|
# get the necessary win32 headers
|
||||||
git submodule update --init --remote --recursive
|
git submodule update --init --remote --recursive
|
||||||
|
|
||||||
warning='SFML is required for LINK support, Fedora does not currently have a MinGW SFML package, if you want LINK support you will need to install it manually'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -z "$rpms_installed" ] && check sudo dnf -y --nogpgcheck --best --allowerasing install "$@"
|
[ -z "$rpms_installed" ] && check sudo dnf -y --nogpgcheck --best --allowerasing install "$@"
|
||||||
|
@ -684,9 +674,7 @@ rhel_installdeps() {
|
||||||
set -- --exclude='glibc32*'
|
set -- --exclude='glibc32*'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
warning='RHEL does not currently have SFML packages, LINK support will be disabled'
|
for pkg in zlib-devel mesa-libGL-devel ffmpeg-devel gettext-devel SDL3-devel openal-soft-devel wxGTK3-devel gtk3-devel; do
|
||||||
|
|
||||||
for pkg in zlib-devel mesa-libGL-devel ffmpeg-devel gettext-devel SDL2-devel openal-soft-devel wxGTK3-devel gtk3-devel; do
|
|
||||||
case $pkg in
|
case $pkg in
|
||||||
*ffmpeg*)
|
*ffmpeg*)
|
||||||
[ -z "$ENABLE_FFMPEG" ] && continue
|
[ -z "$ENABLE_FFMPEG" ] && continue
|
||||||
|
@ -771,14 +759,12 @@ rhel_installdeps() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# install static deps
|
# install static deps
|
||||||
for pkg in zlib gettext SDL2 wxWidgets openal-soft; do
|
for pkg in zlib gettext SDL3 wxWidgets openal-soft; do
|
||||||
set -- "$@" "${target}-${pkg}-static"
|
set -- "$@" "${target}-${pkg}-static"
|
||||||
done
|
done
|
||||||
|
|
||||||
# get the necessary win32 headers
|
# get the necessary win32 headers
|
||||||
git submodule update --init --remote --recursive
|
git submodule update --init --remote --recursive
|
||||||
|
|
||||||
warning='SFML is required for LINK support, RHEL/EPEL does not currently have a MinGW SFML package, if you want LINK support you will need to install it manually'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -z "$rpms_installed" ] && check sudo yum -y install "$@"
|
[ -z "$rpms_installed" ] && check sudo yum -y install "$@"
|
||||||
|
@ -797,14 +783,12 @@ suse_installdeps() {
|
||||||
check_cross
|
check_cross
|
||||||
installing
|
installing
|
||||||
|
|
||||||
tools="make cmake ccache nasm gettext-tools pkg-config ccache zip sfml2-devel ninja"
|
tools="make cmake ccache nasm gettext-tools pkg-config ccache zip ninja"
|
||||||
|
|
||||||
libs="gcc gcc-c++ libSDL2-devel wxWidgets-3_0-devel openal-soft-devel" # ffmpeg-devel
|
libs="gcc gcc-c++ SDL3-devel wxGTK3-3_2-devel openal-soft-devel ffmpeg-7-libavcodec-devel ffmpeg-7-libavdevice-devel ffmpeg-7-libavfilter-devel ffmpeg-7-libavformat-devel ffmpeg-7-libavutil-devel ffmpeg-7-libpostproc-devel ffmpeg-7-libswresample-devel ffmpeg-7-libswscale-devel"
|
||||||
|
|
||||||
# ffmpeg requires packman repos
|
|
||||||
|
|
||||||
if [ "$target" = m32 ]; then
|
if [ "$target" = m32 ]; then
|
||||||
libs=$(echo "$libs" | sed -E 's/([^ ]) ([^ ])/\1-32bit \2/g; s/$/-32bit/;')
|
error '32 bit cross builds are no longer supported on OpenSUSE'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
check sudo zypper in -y $tools $libs
|
check sudo zypper in -y $tools $libs
|
||||||
|
@ -868,7 +852,7 @@ archlinux_installdeps() {
|
||||||
|
|
||||||
$pacman -Q gtk3-classic >/dev/null 2>&1 && gtk=gtk3-classic
|
$pacman -Q gtk3-classic >/dev/null 2>&1 && gtk=gtk3-classic
|
||||||
|
|
||||||
libs="zlib mesa gettext sdl2 wxgtk3 $gtk sfml openal"
|
libs="zlib mesa gettext sdl3 wxgtk3 $gtk openal"
|
||||||
|
|
||||||
[ -n "$ENABLE_FFMPEG" ] && libs="$libs ffmpeg"
|
[ -n "$ENABLE_FFMPEG" ] && libs="$libs ffmpeg"
|
||||||
|
|
||||||
|
@ -884,7 +868,7 @@ archlinux_installdeps() {
|
||||||
else
|
else
|
||||||
# try to build 32 bit binaries
|
# try to build 32 bit binaries
|
||||||
|
|
||||||
# lib32-sfml and lib32-ffmpeg are in AUR
|
# lib32-ffmpeg is in AUR
|
||||||
archlinux_require_yaourt
|
archlinux_require_yaourt
|
||||||
|
|
||||||
# enable multilib repos if not enabled
|
# enable multilib repos if not enabled
|
||||||
|
@ -964,7 +948,7 @@ EOF
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
deps="zlib gettext pkg-config sdl2 wxmsw openal"
|
deps="zlib gettext pkg-config sdl3 wxmsw openal"
|
||||||
|
|
||||||
# and the actual deps
|
# and the actual deps
|
||||||
for p in $deps; do
|
for p in $deps; do
|
||||||
|
@ -978,8 +962,6 @@ EOF
|
||||||
|
|
||||||
# get the necessary win32 headers
|
# get the necessary win32 headers
|
||||||
git submodule update --init --remote --recursive
|
git submodule update --init --remote --recursive
|
||||||
|
|
||||||
warning 'SFML is required for LINK support, the SFML package in AUR is currently broken, if you want LINK support you will need to install it manually'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
build_instructions
|
build_instructions
|
||||||
|
@ -995,7 +977,7 @@ solus_installdeps() {
|
||||||
check sudo eopkg -y install -c system.devel
|
check sudo eopkg -y install -c system.devel
|
||||||
check sudo eopkg -y install git ccache ninja
|
check sudo eopkg -y install git ccache ninja
|
||||||
|
|
||||||
set -- sdl2-devel wxwidgets-devel libgtk-2-devel libgtk-3-devel libglu-devel openal-soft-devel
|
set -- sdl3-devel wxwidgets-devel libgtk-2-devel libgtk-3-devel libglu-devel openal-soft-devel
|
||||||
|
|
||||||
if [ -n "$amd64" -a "$target" = m32 ]; then
|
if [ -n "$amd64" -a "$target" = m32 ]; then
|
||||||
info_msg 'Calculating dependencies, this will take a while..'
|
info_msg 'Calculating dependencies, this will take a while..'
|
||||||
|
@ -1042,13 +1024,12 @@ solus_installdeps() {
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
# no 32bit versions of these
|
# no 32bit versions of these
|
||||||
set -- "$@" SFML-devel ffmpeg-devel
|
set -- "$@" ffmpeg-devel
|
||||||
fi
|
fi
|
||||||
|
|
||||||
check sudo eopkg -y install "$@"
|
check sudo eopkg -y install "$@"
|
||||||
|
|
||||||
if [ -n "$amd64" -a "$target" = m32 ]; then
|
if [ -n "$amd64" -a "$target" = m32 ]; then
|
||||||
warning 'SFML is required for LINK support, there is no 32 bit SFML package in Solus currently, if you want LINK support you will need to install it manually'
|
|
||||||
warning 'ffmpeg is required for game recording, there is no 32 bit ffmpeg package in Solus currently, you may wish to install it manually'
|
warning 'ffmpeg is required for game recording, there is no 32 bit ffmpeg package in Solus currently, you may wish to install it manually'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1069,8 +1050,7 @@ gentoo_installdeps() {
|
||||||
dev-build/cmake \
|
dev-build/cmake \
|
||||||
dev-util/ccache \
|
dev-util/ccache \
|
||||||
sys-devel/binutils \
|
sys-devel/binutils \
|
||||||
media-libs/libsdl2 \
|
media-libs/libsdl3 \
|
||||||
media-libs/libsfml \
|
|
||||||
media-libs/openal \
|
media-libs/openal \
|
||||||
x11-libs/wxGTK:$wx_slot \
|
x11-libs/wxGTK:$wx_slot \
|
||||||
sys-libs/zlib \
|
sys-libs/zlib \
|
||||||
|
@ -1088,7 +1068,7 @@ gentoo_installdeps() {
|
||||||
alpine_installdeps() {
|
alpine_installdeps() {
|
||||||
installing
|
installing
|
||||||
|
|
||||||
check sudo apk add cmake ninja g++ ccache nasm gettext-dev zlib-dev mesa-dev sdl2-dev glu-dev sfml-dev wxwidgets-dev gtk+3.0-dev zip
|
check sudo apk add cmake ninja g++ ccache nasm gettext-dev zlib-dev mesa-dev sdl3-dev glu-dev wxwidgets-dev gtk+3.0-dev zip
|
||||||
|
|
||||||
build_instructions
|
build_instructions
|
||||||
}
|
}
|
||||||
|
@ -1118,9 +1098,12 @@ windows_installdeps() {
|
||||||
*i686*)
|
*i686*)
|
||||||
pkgs="$pkgs nasm"
|
pkgs="$pkgs nasm"
|
||||||
;;
|
;;
|
||||||
|
*)
|
||||||
|
pkgs="$pkgs FAudio"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
pkgs="$pkgs SDL2 sfml FAudio wxWidgets3.2 zlib binutils cmake crt-git headers-git make pkgconf tools-git windows-default-manifest libmangle-git ninja gdb ccache openal"
|
pkgs="$pkgs SDL3 wxWidgets3.2 zlib binutils cmake crt-git headers-git make pkgconf tools-git windows-default-manifest libmangle-git ninja gdb ccache openal"
|
||||||
|
|
||||||
case "$target" in
|
case "$target" in
|
||||||
*x86_64)
|
*x86_64)
|
||||||
|
@ -1192,15 +1175,10 @@ brew_installdeps() {
|
||||||
|
|
||||||
check brew -v update
|
check brew -v update
|
||||||
|
|
||||||
brews="nasm cmake ccache gettext pkg-config sdl2 wxwidgets faudio ccache ninja zlib"
|
brews="nasm cmake ccache gettext libtiff pkg-config sdl3 wxwidgets faudio ccache ninja zlib"
|
||||||
|
|
||||||
[ -n "$ENABLE_FFMPEG" ] && brews="$brews ffmpeg"
|
[ -n "$ENABLE_FFMPEG" ] && brews="$brews ffmpeg"
|
||||||
|
|
||||||
# sfml brew currently broken in the travis mac environment
|
|
||||||
# if [ -z "$TRAVIS" ]; then
|
|
||||||
brews="$brews sfml"
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# This is necessary for the GitHub Actions CI:
|
# This is necessary for the GitHub Actions CI:
|
||||||
brew -v install python
|
brew -v install python
|
||||||
brew link --overwrite python
|
brew link --overwrite python
|
||||||
|
@ -1223,7 +1201,7 @@ macports_installdeps() {
|
||||||
|
|
||||||
check sudo port -v selfupdate
|
check sudo port -v selfupdate
|
||||||
|
|
||||||
ports="cmake ccache nasm gettext pkgconfig libsdl2 sfml wxWidgets-3.0 libiconv ninja"
|
ports="cmake ccache nasm gettext pkgconfig libsdl3 wxWidgets-3.0 libiconv ninja"
|
||||||
|
|
||||||
[ -n "$ENABLE_FFMPEG" ] && ports="$ports ffmpeg"
|
[ -n "$ENABLE_FFMPEG" ] && ports="$ports ffmpeg"
|
||||||
|
|
||||||
|
@ -1239,7 +1217,7 @@ fink_installdeps() {
|
||||||
|
|
||||||
check sudo fink -vy selfupdate
|
check sudo fink -vy selfupdate
|
||||||
|
|
||||||
pkgs="cmake ccache nasm libgettext8-dev gettext-tools pkgconfig sdl2 wxwidgets300-osxcocoa libiconv-dev sfml24-dev ccache ninja"
|
pkgs="cmake ccache nasm libgettext8-dev gettext-tools pkgconfig sdl3 wxwidgets300-osxcocoa libiconv-dev ccache ninja"
|
||||||
|
|
||||||
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs ffmpeg"
|
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs ffmpeg"
|
||||||
|
|
||||||
|
|
1108
po/wxvbam/bg.po
1108
po/wxvbam/bg.po
File diff suppressed because it is too large
Load Diff
1108
po/wxvbam/br.po
1108
po/wxvbam/br.po
File diff suppressed because it is too large
Load Diff
1108
po/wxvbam/cs.po
1108
po/wxvbam/cs.po
File diff suppressed because it is too large
Load Diff
3902
po/wxvbam/de.po
3902
po/wxvbam/de.po
File diff suppressed because it is too large
Load Diff
1145
po/wxvbam/el.po
1145
po/wxvbam/el.po
File diff suppressed because it is too large
Load Diff
|
@ -1560,6 +1560,14 @@ msgstr ""
|
||||||
msgid "Using interframe blending: %s"
|
msgid "Using interframe blending: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bits per pixel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bits per pixel:"
|
||||||
|
|
||||||
#: dialogs/game-boy-config.cpp:142 xrc/GameBoyAdvanceConfig.xrc:122
|
#: dialogs/game-boy-config.cpp:142 xrc/GameBoyAdvanceConfig.xrc:122
|
||||||
#: xrc/GameBoyConfig.xrc:138 xrc/GameBoyConfig.xrc:159
|
#: xrc/GameBoyConfig.xrc:138 xrc/GameBoyConfig.xrc:159
|
||||||
msgid "(None)"
|
msgid "(None)"
|
||||||
|
|
1450
po/wxvbam/es.po
1450
po/wxvbam/es.po
File diff suppressed because it is too large
Load Diff
1242
po/wxvbam/es_419.po
1242
po/wxvbam/es_419.po
File diff suppressed because it is too large
Load Diff
|
@ -1553,6 +1553,14 @@ msgstr "No usable rpi plugins found in %s"
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr "Plugin"
|
msgstr "Plugin"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bits per píxel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bits per píxel:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:417
|
#: dialogs/display-config.cpp:417
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
|
@ -1549,6 +1549,14 @@ msgstr "No usable rpi plugins found in %s"
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr "Plugin"
|
msgstr "Plugin"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bits per píxel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bits per píxel:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:417
|
#: dialogs/display-config.cpp:417
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
|
@ -1549,6 +1549,14 @@ msgstr "No usable rpi plugins found in %s"
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr "Plugin"
|
msgstr "Plugin"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bits per píxel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bits per píxel:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:417
|
#: dialogs/display-config.cpp:417
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
|
@ -1563,6 +1563,14 @@ msgstr "Extension rpi utilisable non trouvée dans %s"
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr "Extension"
|
msgstr "Extension"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bits par pixel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bits par pixel:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:417
|
#: dialogs/display-config.cpp:417
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
1410
po/wxvbam/fr_FR.po
1410
po/wxvbam/fr_FR.po
File diff suppressed because it is too large
Load Diff
1108
po/wxvbam/gl.po
1108
po/wxvbam/gl.po
File diff suppressed because it is too large
Load Diff
1108
po/wxvbam/he_IL.po
1108
po/wxvbam/he_IL.po
File diff suppressed because it is too large
Load Diff
|
@ -1549,6 +1549,14 @@ msgstr "A %s helyen nincs használható RPI bővítmény"
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr "Bővítmény"
|
msgstr "Bővítmény"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bit per pixel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bit per pixel:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:417
|
#: dialogs/display-config.cpp:417
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
1108
po/wxvbam/hu_HU.po
1108
po/wxvbam/hu_HU.po
File diff suppressed because it is too large
Load Diff
1170
po/wxvbam/id.po
1170
po/wxvbam/id.po
File diff suppressed because it is too large
Load Diff
1125
po/wxvbam/it_IT.po
1125
po/wxvbam/it_IT.po
File diff suppressed because it is too large
Load Diff
1127
po/wxvbam/ja.po
1127
po/wxvbam/ja.po
File diff suppressed because it is too large
Load Diff
3886
po/wxvbam/ja_JP.po
3886
po/wxvbam/ja_JP.po
File diff suppressed because it is too large
Load Diff
|
@ -1552,6 +1552,14 @@ msgstr "%s에서 사용가능한 rpi 플러그인을 찾을 수 없음"
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr "플러그인"
|
msgstr "플러그인"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "픽셀당 비트"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "픽셀당 비트:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:417
|
#: dialogs/display-config.cpp:417
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
1118
po/wxvbam/ko_KR.po
1118
po/wxvbam/ko_KR.po
File diff suppressed because it is too large
Load Diff
1108
po/wxvbam/ms_MY.po
1108
po/wxvbam/ms_MY.po
File diff suppressed because it is too large
Load Diff
1108
po/wxvbam/nb.po
1108
po/wxvbam/nb.po
File diff suppressed because it is too large
Load Diff
1108
po/wxvbam/nl.po
1108
po/wxvbam/nl.po
File diff suppressed because it is too large
Load Diff
|
@ -1552,6 +1552,14 @@ msgstr "Nie znaleziono użytecznych wtyczek rpi w %s"
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr "Wtyczka"
|
msgstr "Wtyczka"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bity na piksel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bity na piksel:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:417
|
#: dialogs/display-config.cpp:417
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
1114
po/wxvbam/pl_PL.po
1114
po/wxvbam/pl_PL.po
File diff suppressed because it is too large
Load Diff
1117
po/wxvbam/pt_BR.po
1117
po/wxvbam/pt_BR.po
File diff suppressed because it is too large
Load Diff
|
@ -362,6 +362,14 @@ msgstr ""
|
||||||
msgid "Plugin"
|
msgid "Plugin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr "Bits por pixel"
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr "Bits por pixel:"
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:407
|
#: dialogs/display-config.cpp:407
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Using pixel filter: %s"
|
msgid "Using pixel filter: %s"
|
||||||
|
|
1127
po/wxvbam/ru_RU.po
1127
po/wxvbam/ru_RU.po
File diff suppressed because it is too large
Load Diff
1581
po/wxvbam/sv.po
1581
po/wxvbam/sv.po
File diff suppressed because it is too large
Load Diff
1117
po/wxvbam/tr.po
1117
po/wxvbam/tr.po
File diff suppressed because it is too large
Load Diff
1118
po/wxvbam/uk.po
1118
po/wxvbam/uk.po
File diff suppressed because it is too large
Load Diff
|
@ -1046,6 +1046,14 @@ msgstr ""
|
||||||
msgid "Invalid value for Default magnification."
|
msgid "Invalid value for Default magnification."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: xrc/DisplayConfig.xrc
|
||||||
|
msgid "Bit Depth:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: dialogs/display-config.cpp:331 xrc/DisplayConfig.xrc:86
|
#: dialogs/display-config.cpp:331 xrc/DisplayConfig.xrc:86
|
||||||
#: xrc/DisplayConfig.xrc:136 xrc/DisplayConfig.xrc:222
|
#: xrc/DisplayConfig.xrc:136 xrc/DisplayConfig.xrc:222
|
||||||
#: xrc/GameBoyAdvanceConfig.xrc:32 xrc/GameBoyAdvanceConfig.xrc:204
|
#: xrc/GameBoyAdvanceConfig.xrc:32 xrc/GameBoyAdvanceConfig.xrc:204
|
||||||
|
|
1129
po/wxvbam/wxvbam.pot
1129
po/wxvbam/wxvbam.pot
File diff suppressed because it is too large
Load Diff
3897
po/wxvbam/zh-Hans.po
3897
po/wxvbam/zh-Hans.po
File diff suppressed because it is too large
Load Diff
3706
po/wxvbam/zh.po
3706
po/wxvbam/zh.po
File diff suppressed because it is too large
Load Diff
1146
po/wxvbam/zh_CN.po
1146
po/wxvbam/zh_CN.po
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -19,8 +19,6 @@ parts:
|
||||||
cmake-generator: Ninja
|
cmake-generator: Ninja
|
||||||
stage-packages:
|
stage-packages:
|
||||||
- libsdl2-2.0-0
|
- libsdl2-2.0-0
|
||||||
- libsfml-network2.5
|
|
||||||
- libsfml-system2.5
|
|
||||||
- libnotify4
|
- libnotify4
|
||||||
- libsm6
|
- libsm6
|
||||||
- libopenal1
|
- libopenal1
|
||||||
|
@ -46,7 +44,6 @@ parts:
|
||||||
- zip
|
- zip
|
||||||
- libnotify-dev
|
- libnotify-dev
|
||||||
- libsdl2-dev
|
- libsdl2-dev
|
||||||
- libsfml-dev
|
|
||||||
- libgtk-3-dev
|
- libgtk-3-dev
|
||||||
- libopenal-dev
|
- libopenal-dev
|
||||||
- libwxgtk3.0-gtk3-dev
|
- libwxgtk3.0-gtk3-dev
|
||||||
|
|
|
@ -119,24 +119,48 @@ recording::MediaRet recording::MediaRecorder::setup_audio_stream()
|
||||||
// audio codec context
|
// audio codec context
|
||||||
aenc = avcodec_alloc_context3(acodec);
|
aenc = avcodec_alloc_context3(acodec);
|
||||||
if (!aenc) return MRET_ERR_BUFSIZE;
|
if (!aenc) return MRET_ERR_BUFSIZE;
|
||||||
|
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
|
||||||
aenc->sample_fmt = acodec->sample_fmts ? acodec->sample_fmts[0] : AV_SAMPLE_FMT_FLTP;
|
aenc->sample_fmt = acodec->sample_fmts ? acodec->sample_fmts[0] : AV_SAMPLE_FMT_FLTP;
|
||||||
|
#else
|
||||||
|
const enum AVSampleFormat *sample_fmts = NULL;
|
||||||
|
if (acodec) {
|
||||||
|
avcodec_get_supported_config (aenc, acodec, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0,
|
||||||
|
(const void **)&sample_fmts, NULL);
|
||||||
|
aenc->sample_fmt = sample_fmts ? sample_fmts[0] : AV_SAMPLE_FMT_FLTP;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
aenc->bit_rate = 128000; // mp3
|
aenc->bit_rate = 128000; // mp3
|
||||||
aenc->sample_rate = sampleRate;
|
aenc->sample_rate = sampleRate;
|
||||||
// this might be useful to check if the codec suports the
|
// this might be useful to check if the codec suports the
|
||||||
// sample rate, but it is not strictly needed for now
|
// sample rate, but it is not strictly needed for now
|
||||||
bool isSupported = false;
|
bool isSupported = false;
|
||||||
|
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
|
||||||
if (acodec->supported_samplerates)
|
if (acodec->supported_samplerates)
|
||||||
{
|
{
|
||||||
for (int i = 0; acodec->supported_samplerates[i]; ++i)
|
for (int i = 0; acodec->supported_samplerates[i]; ++i)
|
||||||
{
|
{
|
||||||
if (acodec->supported_samplerates[i] == sampleRate)
|
if (acodec->supported_samplerates[i] == sampleRate)
|
||||||
|
#else
|
||||||
|
const int *supported_samplerates = NULL;
|
||||||
|
int num_supported_samplerates = 0;
|
||||||
|
if (acodec) {
|
||||||
|
avcodec_get_supported_config(aenc, acodec, AV_CODEC_CONFIG_SAMPLE_RATE, 0,
|
||||||
|
(const void **) &supported_samplerates, &num_supported_samplerates);
|
||||||
|
for (int i = 0; i < num_supported_samplerates; i++)
|
||||||
|
{
|
||||||
|
if (supported_samplerates[i] == sampleRate)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
isSupported = true;
|
isSupported = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
|
||||||
if (!isSupported && acodec->supported_samplerates) return MRET_ERR_NOCODEC;
|
if (!isSupported && acodec->supported_samplerates) return MRET_ERR_NOCODEC;
|
||||||
|
#else
|
||||||
|
if (!isSupported && num_supported_samplerates) return MRET_ERR_NOCODEC;
|
||||||
|
#endif
|
||||||
#if LIBAVCODEC_VERSION_MAJOR >= 60
|
#if LIBAVCODEC_VERSION_MAJOR >= 60
|
||||||
av_channel_layout_from_mask(&(aenc->ch_layout), AV_CH_LAYOUT_STEREO);
|
av_channel_layout_from_mask(&(aenc->ch_layout), AV_CH_LAYOUT_STEREO);
|
||||||
#else
|
#else
|
||||||
|
@ -226,6 +250,9 @@ recording::MediaRet recording::MediaRecorder::setup_video_stream_info(int width,
|
||||||
{
|
{
|
||||||
switch (depth)
|
switch (depth)
|
||||||
{
|
{
|
||||||
|
case 8:
|
||||||
|
pixfmt = AV_PIX_FMT_RGB8;
|
||||||
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
// FIXME: test & make endian-neutral
|
// FIXME: test & make endian-neutral
|
||||||
pixfmt = AV_PIX_FMT_RGB565LE;
|
pixfmt = AV_PIX_FMT_RGB565LE;
|
||||||
|
@ -250,6 +277,9 @@ recording::MediaRet recording::MediaRecorder::setup_video_stream_info(int width,
|
||||||
linesize = pixsize * width;
|
linesize = pixsize * width;
|
||||||
switch (pixsize)
|
switch (pixsize)
|
||||||
{
|
{
|
||||||
|
case 1:
|
||||||
|
tbord = 1; rbord = 4;
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
// 16-bit: 2 @ right, 1 @ top
|
// 16-bit: 2 @ right, 1 @ top
|
||||||
tbord = 1; rbord = 2;
|
tbord = 1; rbord = 2;
|
||||||
|
@ -455,7 +485,9 @@ void recording::MediaRecorder::Stop(bool initSuccess)
|
||||||
if (enc)
|
if (enc)
|
||||||
{
|
{
|
||||||
avcodec_free_context(&enc);
|
avcodec_free_context(&enc);
|
||||||
|
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
|
||||||
avcodec_close(enc);
|
avcodec_close(enc);
|
||||||
|
#endif
|
||||||
enc = NULL;
|
enc = NULL;
|
||||||
}
|
}
|
||||||
if (vcodec)
|
if (vcodec)
|
||||||
|
@ -504,7 +536,9 @@ void recording::MediaRecorder::Stop(bool initSuccess)
|
||||||
if (aenc)
|
if (aenc)
|
||||||
{
|
{
|
||||||
avcodec_free_context(&aenc);
|
avcodec_free_context(&aenc);
|
||||||
|
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
|
||||||
avcodec_close(aenc);
|
avcodec_close(aenc);
|
||||||
|
#endif
|
||||||
aenc = NULL;
|
aenc = NULL;
|
||||||
}
|
}
|
||||||
samplesCount = 0;
|
samplesCount = 0;
|
||||||
|
@ -618,7 +652,7 @@ recording::MediaRet recording::MediaRecorder::AddFrame(const uint16_t *aud, int
|
||||||
return MRET_ERR_RECORDING;
|
return MRET_ERR_RECORDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dst_nb_samples = av_rescale_rnd(swr_get_delay(swr, c->sample_rate) + audioframeTmp->nb_samples, c->sample_rate, c->sample_rate, AV_ROUND_UP);
|
int64_t dst_nb_samples = av_rescale_rnd(swr_get_delay(swr, c->sample_rate) + audioframeTmp->nb_samples, c->sample_rate, c->sample_rate, AV_ROUND_UP);
|
||||||
av_assert0(dst_nb_samples == audioframeTmp->nb_samples);
|
av_assert0(dst_nb_samples == audioframeTmp->nb_samples);
|
||||||
|
|
||||||
if (swr_convert(swr, audioframe->data, audioframe->nb_samples, (const uint8_t **)audioframeTmp->data, audioframeTmp->nb_samples) < 0)
|
if (swr_convert(swr, audioframe->data, audioframe->nb_samples, (const uint8_t **)audioframeTmp->data, audioframeTmp->nb_samples) < 0)
|
||||||
|
|
|
@ -105,7 +105,7 @@ class MediaRecorder
|
||||||
const AVCodec *acodec;
|
const AVCodec *acodec;
|
||||||
AVStream *ast;
|
AVStream *ast;
|
||||||
AVCodecContext *aenc;
|
AVCodecContext *aenc;
|
||||||
int samplesCount; // for audio frame pts generation
|
int64_t samplesCount; // for audio frame pts generation
|
||||||
AVFrame *audioframe;
|
AVFrame *audioframe;
|
||||||
AVFrame *audioframeTmp;
|
AVFrame *audioframeTmp;
|
||||||
// audio buffer
|
// audio buffer
|
||||||
|
|
|
@ -58,7 +58,7 @@ void drawText(uint8_t* screen, int pitch, int x, int y,
|
||||||
char c = *string++;
|
char c = *string++;
|
||||||
uint8_t* scr = screen;
|
uint8_t* scr = screen;
|
||||||
|
|
||||||
uint16_t mask = ~RGB_LOW_BITS_MASK;
|
uint16_t mask = (uint16_t)(~RGB_LOW_BITS_MASK);
|
||||||
int h, w;
|
int h, w;
|
||||||
uint16_t* s = (uint16_t*)scr;
|
uint16_t* s = (uint16_t*)scr;
|
||||||
for (h = 0; h < 8; h++) {
|
for (h = 0; h < 8; h++) {
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
add_library(vbam-components-filters OBJECT)
|
add_library(vbam-components-filters OBJECT)
|
||||||
|
|
||||||
|
unset(extra_src)
|
||||||
|
if(WINXP)
|
||||||
|
list(APPEND extra_src
|
||||||
|
${CMAKE_SOURCE_DIR}/third_party/quake3-sqrt/quake3-sqrt.h
|
||||||
|
)
|
||||||
|
target_include_directories(vbam-components-filters PRIVATE ${CMAKE_SOURCE_DIR}/third_party/quake3-sqrt)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_sources(vbam-components-filters
|
target_sources(vbam-components-filters
|
||||||
PRIVATE
|
PRIVATE
|
||||||
internal/2xSaI.cpp
|
internal/2xSaI.cpp
|
||||||
|
@ -17,6 +25,7 @@ target_sources(vbam-components-filters
|
||||||
internal/xBRZ/xbrz_config.h
|
internal/xBRZ/xbrz_config.h
|
||||||
internal/xBRZ/xbrz_tools.h
|
internal/xBRZ/xbrz_tools.h
|
||||||
internal/xbrzfilter.cpp
|
internal/xbrzfilter.cpp
|
||||||
|
${extra_src}
|
||||||
|
|
||||||
PUBLIC
|
PUBLIC
|
||||||
filters.h
|
filters.h
|
||||||
|
|
|
@ -45,11 +45,11 @@ void lq2x(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp,
|
||||||
// in any case, they are worthless, since all renderers do "simple" or
|
// in any case, they are worthless, since all renderers do "simple" or
|
||||||
// better by default
|
// better by default
|
||||||
void Simple2x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
void Simple2x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
||||||
void Simple2x(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
void Simple2x16(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
||||||
void Simple3x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
void Simple3x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
||||||
void Simple3x(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
void Simple3x16(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
||||||
void Simple4x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
void Simple4x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
||||||
void Simple4x(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
void Simple4x16(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
||||||
// note: 16-bit input for asm version only!
|
// note: 16-bit input for asm version only!
|
||||||
void hq3x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
void hq3x32(uint8_t* src, uint32_t spitch, uint8_t*, uint8_t* dst, uint32_t dstp, int w, int h);
|
||||||
// this takes 32-bit input
|
// this takes 32-bit input
|
||||||
|
|
|
@ -620,7 +620,7 @@ void SuperEagle (uint8_t *srcPtr, uint32_t srcPitch, uint8_t *deltaPtr,
|
||||||
|
|
||||||
*((uint32_t *) dP) = product1a;
|
*((uint32_t *) dP) = product1a;
|
||||||
*((uint32_t *) (dP + dstPitch)) = product2a;
|
*((uint32_t *) (dP + dstPitch)) = product2a;
|
||||||
*xP = color5;
|
*xP = (uint16_t)color5;
|
||||||
|
|
||||||
bP += inc_bP;
|
bP += inc_bP;
|
||||||
xP += inc_bP;
|
xP += inc_bP;
|
||||||
|
@ -1169,7 +1169,7 @@ void Scale_2xSaI (uint8_t *srcPtr, uint32_t srcPitch, uint8_t * /* deltaPtr */,
|
||||||
uint32_t E, F, G, H;
|
uint32_t E, F, G, H;
|
||||||
uint32_t I, J, K, L;
|
uint32_t I, J, K, L;
|
||||||
uint32_t x1, x2, a1, f1, f2;
|
uint32_t x1, x2, a1, f1, f2;
|
||||||
uint32_t position, product1;
|
uint32_t position, product1 = 0;
|
||||||
|
|
||||||
position = w >> 16;
|
position = w >> 16;
|
||||||
A = bP[position]; // current pixel
|
A = bP[position]; // current pixel
|
||||||
|
|
|
@ -21,6 +21,10 @@
|
||||||
#include <cmath> //std::sqrt
|
#include <cmath> //std::sqrt
|
||||||
#include "xbrz_tools.h"
|
#include "xbrz_tools.h"
|
||||||
|
|
||||||
|
#ifdef WINXP
|
||||||
|
#include "quake3-sqrt.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// some gcc versions lie about having this C++17 feature
|
// some gcc versions lie about having this C++17 feature
|
||||||
#define static_assert(x) static_assert(x, "assertion failed")
|
#define static_assert(x) static_assert(x, "assertion failed")
|
||||||
|
|
||||||
|
@ -66,7 +70,9 @@ uint32_t gradientARGB(uint32_t pixFront, uint32_t pixBack) //find intermediate c
|
||||||
|
|
||||||
inline double fastSqrt(double n)
|
inline double fastSqrt(double n)
|
||||||
{
|
{
|
||||||
#if (defined(__GNUC__) || defined(__clang__)) && (defined(__x86_64__) || defined(__i386__))
|
#ifdef WINXP
|
||||||
|
return quake3_sqrt((float)n);
|
||||||
|
#elif (defined(__GNUC__) || defined(__clang__)) && (defined(__x86_64__) || defined(__i386__))
|
||||||
__asm__ ("fsqrt" : "+t" (n));
|
__asm__ ("fsqrt" : "+t" (n));
|
||||||
return n;
|
return n;
|
||||||
#elif defined(_MSC_VER) && defined(_M_IX86)
|
#elif defined(_MSC_VER) && defined(_M_IX86)
|
||||||
|
|
|
@ -5,6 +5,7 @@ extern int systemRedShift;
|
||||||
extern int systemGreenShift;
|
extern int systemGreenShift;
|
||||||
extern int systemBlueShift;
|
extern int systemBlueShift;
|
||||||
|
|
||||||
|
extern uint8_t systemColorMap8[0x10000];
|
||||||
extern uint16_t systemColorMap16[0x10000];
|
extern uint16_t systemColorMap16[0x10000];
|
||||||
extern uint32_t systemColorMap32[0x10000];
|
extern uint32_t systemColorMap32[0x10000];
|
||||||
|
|
||||||
|
@ -27,6 +28,13 @@ inline void swap(short& a, short& b)
|
||||||
|
|
||||||
void gbafilter_update_colors(bool lcd) {
|
void gbafilter_update_colors(bool lcd) {
|
||||||
switch (systemColorDepth) {
|
switch (systemColorDepth) {
|
||||||
|
case 8: {
|
||||||
|
for (int i = 0; i < 0x10000; i++) {
|
||||||
|
systemColorMap8[i] = (uint8_t)((((i & 0x1f) << 3) & 0xE0) |
|
||||||
|
((((i & 0x3e0) >> 5) << 0) & 0x1C) |
|
||||||
|
((((i & 0x7c00) >> 10) >> 3) & 0x3));
|
||||||
|
}
|
||||||
|
} break;
|
||||||
case 16: {
|
case 16: {
|
||||||
for (int i = 0; i < 0x10000; i++) {
|
for (int i = 0; i < 0x10000; i++) {
|
||||||
systemColorMap16[i] = ((i & 0x1f) << systemRedShift) |
|
systemColorMap16[i] = ((i & 0x1f) << systemRedShift) |
|
||||||
|
@ -237,6 +245,15 @@ void gbafilter_pad(uint8_t* buf, int count)
|
||||||
void UpdateSystemColorMaps(int lcd)
|
void UpdateSystemColorMaps(int lcd)
|
||||||
{
|
{
|
||||||
switch(systemColorDepth) {
|
switch(systemColorDepth) {
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
for(int i = 0; i < 0x10000; i++) {
|
||||||
|
systemColorMap8[i] = (((i & 0x1f) << systemRedShift) & 0xE0) |
|
||||||
|
((((i & 0x3e0) >> 5) << systemGreenShift) & 0x1C) |
|
||||||
|
((((i & 0x7c00) >> 10) << systemBlueShift) & 0x3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 0x10000; i++) {
|
for(int i = 0; i < 0x10000; i++) {
|
||||||
|
|
|
@ -159,6 +159,51 @@ static void SmartIB_MMX(uint8_t *srcPtr, uint32_t srcPitch, int width, int start
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void SmartIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
||||||
|
{
|
||||||
|
(void)width; // unused param
|
||||||
|
if(frm1 == NULL) {
|
||||||
|
InterframeFilterInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t colorMask = (uint16_t)(~RGB_LOW_BITS_MASK);
|
||||||
|
|
||||||
|
uint8_t *src0 = (uint8_t *)srcPtr + starty * srcPitch;
|
||||||
|
uint8_t *src1 = (uint8_t *)frm1 + srcPitch * starty;
|
||||||
|
uint8_t *src2 = (uint8_t *)frm2 + srcPitch * starty;
|
||||||
|
uint8_t *src3 = (uint8_t *)frm3 + srcPitch * starty;
|
||||||
|
|
||||||
|
int sPitch = srcPitch;
|
||||||
|
|
||||||
|
int pos = 0;
|
||||||
|
for (int j = 0; j < height; j++)
|
||||||
|
for (int i = 0; i < sPitch; i++) {
|
||||||
|
uint16_t color = src0[pos] == 0xff ? 0x7fff : ((src0[pos] & 0xe0) << 7) | ((src0[pos] & 0x1c) << 5) | ((src0[pos] & 0x3) << 3);
|
||||||
|
uint16_t color2 = src1[pos] == 0xff ? 0x7fff : ((src1[pos] & 0xe0) << 7) | ((src1[pos] & 0x1c) << 5) | ((src1[pos] & 0x3) << 3);
|
||||||
|
uint16_t color_dst = ((color & colorMask) >> 1) + ((color2 & colorMask) >> 1);
|
||||||
|
src0[pos] =
|
||||||
|
(src1[pos] != src2[pos]) &&
|
||||||
|
(src3[pos] != color) &&
|
||||||
|
((color == src2[pos]) || (src1[pos] == src3[pos]))
|
||||||
|
? (uint8_t)(((color_dst >> 7) & 0xe0) | ((color_dst >> 5) & 0x1c) | ((color_dst >> 3) & 0x3)) :
|
||||||
|
(uint8_t)(((color >> 7) & 0xe0) | ((color >> 5) & 0x1c) | ((color >> 3) & 0x3));
|
||||||
|
src3[pos] = (uint8_t)(((color >> 7) & 0xe0) | ((color >> 5) & 0x1c) | ((color >> 3) & 0x3)); /* oldest buffer now holds newest frame */
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Swap buffers around */
|
||||||
|
uint8_t *temp = frm1;
|
||||||
|
frm1 = frm3;
|
||||||
|
frm3 = frm2;
|
||||||
|
frm2 = temp;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SmartIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int height)
|
||||||
|
{
|
||||||
|
SmartIB8(srcPtr, srcPitch, width, 0, height);
|
||||||
|
}
|
||||||
|
|
||||||
void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
||||||
{
|
{
|
||||||
(void)width; // unused param
|
(void)width; // unused param
|
||||||
|
@ -172,7 +217,7 @@ void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int heig
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint16_t colorMask = ~RGB_LOW_BITS_MASK;
|
uint16_t colorMask = (uint16_t)(~RGB_LOW_BITS_MASK);
|
||||||
|
|
||||||
uint16_t *src0 = (uint16_t *)srcPtr + starty * srcPitch / 2;
|
uint16_t *src0 = (uint16_t *)srcPtr + starty * srcPitch / 2;
|
||||||
uint16_t *src1 = (uint16_t *)frm1 + srcPitch * starty / 2;
|
uint16_t *src1 = (uint16_t *)frm1 + srcPitch * starty / 2;
|
||||||
|
@ -207,6 +252,64 @@ void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int height)
|
||||||
SmartIB(srcPtr, srcPitch, width, 0, height);
|
SmartIB(srcPtr, srcPitch, width, 0, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SmartIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
||||||
|
{
|
||||||
|
(void)width; // unused param
|
||||||
|
if(frm1 == NULL) {
|
||||||
|
InterframeFilterInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t colorMask = 0xfe;
|
||||||
|
|
||||||
|
uint8_t *src0 = (uint8_t *)srcPtr + starty * srcPitch / 3;
|
||||||
|
uint8_t *src1 = (uint8_t *)frm1 + srcPitch * starty / 3;
|
||||||
|
uint8_t *src2 = (uint8_t *)frm2 + srcPitch * starty / 3;
|
||||||
|
uint8_t *src3 = (uint8_t *)frm3 + srcPitch * starty / 3;
|
||||||
|
|
||||||
|
int sPitch = srcPitch / 3;
|
||||||
|
|
||||||
|
int pos = 0;
|
||||||
|
for (int j = 0; j < height; j++)
|
||||||
|
for (int i = 0; i < sPitch; i++) {
|
||||||
|
uint8_t color = src0[pos];
|
||||||
|
uint8_t color2 = src0[pos+1];
|
||||||
|
uint8_t color3 = src0[pos+2];
|
||||||
|
src0[pos] =
|
||||||
|
(src1[pos] != src2[pos]) &&
|
||||||
|
(src3[pos] != color) &&
|
||||||
|
((color == src2[pos]) || (src1[pos] == src3[pos]))
|
||||||
|
? (((color & colorMask) >> 1) + ((src1[pos] & colorMask) >> 1)) :
|
||||||
|
color;
|
||||||
|
src0[pos+1] =
|
||||||
|
(src1[pos+1] != src2[pos+1]) &&
|
||||||
|
(src3[pos+1] != color2) &&
|
||||||
|
((color2 == src2[pos+1]) || (src1[pos+1] == src3[pos+1]))
|
||||||
|
? (((color2 & colorMask) >> 1) + ((src1[pos+1] & colorMask) >> 1)) :
|
||||||
|
color2;
|
||||||
|
src0[pos+2] =
|
||||||
|
(src1[pos+2] != src2[pos+2]) &&
|
||||||
|
(src3[pos+2] != color3) &&
|
||||||
|
((color3 == src2[pos+2]) || (src1[pos+1] == src3[pos+2]))
|
||||||
|
? (((color3 & colorMask) >> 1) + ((src1[pos+2] & colorMask) >> 1)) :
|
||||||
|
color3;
|
||||||
|
src3[pos] = color; /* oldest buffer now holds newest frame */
|
||||||
|
src3[pos+1] = color2; /* oldest buffer now holds newest frame */
|
||||||
|
src3[pos+2] = color3; /* oldest buffer now holds newest frame */
|
||||||
|
pos += 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Swap buffers around */
|
||||||
|
uint8_t *temp = frm1;
|
||||||
|
frm1 = frm3;
|
||||||
|
frm3 = frm2;
|
||||||
|
frm2 = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SmartIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int height)
|
||||||
|
{
|
||||||
|
SmartIB24(srcPtr, srcPitch, width, 0, height);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef MMX
|
#ifdef MMX
|
||||||
static void SmartIB32_MMX(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
static void SmartIB32_MMX(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
||||||
{
|
{
|
||||||
|
@ -443,6 +546,70 @@ static void MotionBlurIB_MMX(uint8_t *srcPtr, uint32_t srcPitch, int width, int
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void MotionBlurIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
||||||
|
{
|
||||||
|
(void)width; // unused param
|
||||||
|
if(frm1 == NULL) {
|
||||||
|
InterframeFilterInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t colorMask = 0xfe;
|
||||||
|
|
||||||
|
uint8_t *src0 = (uint8_t *)srcPtr + starty * srcPitch / 3;
|
||||||
|
uint8_t *src1 = (uint8_t *)frm1 + starty * srcPitch / 3;
|
||||||
|
int sPitch = srcPitch / 3;
|
||||||
|
|
||||||
|
int pos = 0;
|
||||||
|
for (int j = 0; j < height; j++)
|
||||||
|
for (int i = 0; i < sPitch; i++) {
|
||||||
|
uint8_t color = src0[pos];
|
||||||
|
uint8_t color2 = src0[pos+1];
|
||||||
|
uint8_t color3 = src0[pos+2];
|
||||||
|
src0[pos] = ((color & colorMask) >> 1) + ((src1[pos] & colorMask) >> 1);
|
||||||
|
src0[pos+1] = ((color2 & colorMask) >> 1) + ((src1[pos+1] & colorMask) >> 1);
|
||||||
|
src0[pos+2] = ((color3 & colorMask) >> 1) + ((src1[pos+2] & colorMask) >> 1);
|
||||||
|
src1[pos] = color;
|
||||||
|
src1[pos+1] = color2;
|
||||||
|
src1[pos+2] = color3;
|
||||||
|
pos += 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MotionBlurIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int height)
|
||||||
|
{
|
||||||
|
MotionBlurIB24(srcPtr, srcPitch, width, 0, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MotionBlurIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
||||||
|
{
|
||||||
|
(void)width; // unused param
|
||||||
|
if(frm1 == NULL) {
|
||||||
|
InterframeFilterInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t colorMask = (uint16_t)(~RGB_LOW_BITS_MASK);
|
||||||
|
|
||||||
|
uint8_t *src0 = (uint8_t *)srcPtr + starty * srcPitch;
|
||||||
|
uint8_t *src1 = (uint8_t *)frm1 + starty * srcPitch;
|
||||||
|
int sPitch = srcPitch;
|
||||||
|
|
||||||
|
int pos = 0;
|
||||||
|
for (int j = 0; j < height; j++)
|
||||||
|
for (int i = 0; i < sPitch; i++) {
|
||||||
|
uint16_t color = src0[pos] == 0xff ? 0x7fff : ((src0[pos] & 0xe0) << 7) | ((src0[pos] & 0x1c) << 5) | ((src0[pos] & 0x3) << 3);
|
||||||
|
uint16_t color2 = src1[pos] == 0xff ? 0x7fff : ((src1[pos] & 0xe0) << 7) | ((src1[pos] & 0x1c) << 5) | ((src1[pos] & 0x3) << 3);
|
||||||
|
uint16_t color_dst = ((color & colorMask) >> 1) + ((color2 & colorMask) >> 1);
|
||||||
|
src0[pos] = (uint8_t)(((color_dst >> 7) & 0xe0) | ((color_dst >> 5) & 0x1c) | ((color_dst >> 3) & 0x3));
|
||||||
|
src1[pos] = (uint8_t)(((color >> 7) & 0xe0) | ((color >> 5) & 0x1c) | ((color >> 3) & 0x3));
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MotionBlurIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int height)
|
||||||
|
{
|
||||||
|
MotionBlurIB8(srcPtr, srcPitch, width, 0, height);
|
||||||
|
}
|
||||||
|
|
||||||
void MotionBlurIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
void MotionBlurIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height)
|
||||||
{
|
{
|
||||||
(void)width; // unused param
|
(void)width; // unused param
|
||||||
|
@ -457,7 +624,7 @@ void MotionBlurIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint16_t colorMask = ~RGB_LOW_BITS_MASK;
|
uint16_t colorMask = (uint16_t)(~RGB_LOW_BITS_MASK);
|
||||||
|
|
||||||
uint16_t *src0 = (uint16_t *)srcPtr + starty * srcPitch / 2;
|
uint16_t *src0 = (uint16_t *)srcPtr + starty * srcPitch / 2;
|
||||||
uint16_t *src1 = (uint16_t *)frm1 + starty * srcPitch / 2;
|
uint16_t *src1 = (uint16_t *)frm1 + starty * srcPitch / 2;
|
||||||
|
|
|
@ -14,8 +14,12 @@ void InterframeCleanup();
|
||||||
|
|
||||||
// all 4 are MMX-accelerated if enabled
|
// all 4 are MMX-accelerated if enabled
|
||||||
void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
|
void SmartIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
|
void SmartIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
void SmartIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
void SmartIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
void MotionBlurIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
void MotionBlurIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
|
void MotionBlurIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
|
void MotionBlurIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
void MotionBlurIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
void MotionBlurIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int starty, int height);
|
||||||
|
|
||||||
#ifdef MMX
|
#ifdef MMX
|
||||||
|
@ -27,8 +31,12 @@ static void MotionBlurIB32_MMX(uint8_t *srcPtr, uint32_t srcPitch, int width, in
|
||||||
|
|
||||||
//Options for if start is 0
|
//Options for if start is 0
|
||||||
void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
void SmartIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
|
void SmartIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
|
void SmartIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
void SmartIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
void SmartIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
void MotionBlurIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
void MotionBlurIB(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
|
void MotionBlurIB8(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
|
void MotionBlurIB24(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
void MotionBlurIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
void MotionBlurIB32(uint8_t *srcPtr, uint32_t srcPitch, int width, int height);
|
||||||
|
|
||||||
#endif //VBAM_COMPONENTS_FILTERS_INTERFRAME_INTERFRAME_H_
|
#endif //VBAM_COMPONENTS_FILTERS_INTERFRAME_INTERFRAME_H_
|
||||||
|
|
|
@ -13,8 +13,15 @@ std::string get_xdg_user_config_home()
|
||||||
std::string home(getenv("HOME"));
|
std::string home(getenv("HOME"));
|
||||||
path = home + "/Library/Application Support";
|
path = home + "/Library/Application Support";
|
||||||
#elif _WIN32
|
#elif _WIN32
|
||||||
|
#if __STDC_WANT_SECURE_LIB__
|
||||||
|
char *app_data_env = NULL;
|
||||||
|
size_t app_data_env_sz = 0;
|
||||||
|
_dupenv_s(&app_data_env, &app_data_env_sz, "LOCALAPPDATA");
|
||||||
|
if (!app_data_env) _dupenv_s(&app_data_env, &app_data_env_sz, "APPDATA");
|
||||||
|
#else
|
||||||
char *app_data_env = getenv("LOCALAPPDATA");
|
char *app_data_env = getenv("LOCALAPPDATA");
|
||||||
if (!app_data_env) app_data_env = getenv("APPDATA");
|
if (!app_data_env) app_data_env = getenv("APPDATA");
|
||||||
|
#endif
|
||||||
std::string app_data(app_data_env);
|
std::string app_data(app_data_env);
|
||||||
path = app_data;
|
path = app_data;
|
||||||
#else // Unix
|
#else // Unix
|
||||||
|
@ -40,8 +47,15 @@ std::string get_xdg_user_data_home()
|
||||||
std::string home(getenv("HOME"));
|
std::string home(getenv("HOME"));
|
||||||
path = home + "/Library/Application Support";
|
path = home + "/Library/Application Support";
|
||||||
#elif _WIN32
|
#elif _WIN32
|
||||||
|
#if __STDC_WANT_SECURE_LIB__
|
||||||
|
char *app_data_env = NULL;
|
||||||
|
size_t app_data_env_sz = 0;
|
||||||
|
_dupenv_s(&app_data_env, &app_data_env_sz, "LOCALAPPDATA");
|
||||||
|
if (!app_data_env) _dupenv_s(&app_data_env, &app_data_env_sz, "APPDATA");
|
||||||
|
#else
|
||||||
char *app_data_env = getenv("LOCALAPPDATA");
|
char *app_data_env = getenv("LOCALAPPDATA");
|
||||||
if (!app_data_env) app_data_env = getenv("APPDATA");
|
if (!app_data_env) app_data_env = getenv("APPDATA");
|
||||||
|
#endif
|
||||||
std::string app_data(app_data_env);
|
std::string app_data(app_data_env);
|
||||||
path = app_data;
|
path = app_data;
|
||||||
#else // Unix
|
#else // Unix
|
||||||
|
|
|
@ -93,7 +93,7 @@ target_include_directories(vbam-core
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(vbam-core
|
target_link_libraries(vbam-core
|
||||||
PRIVATE vbam-core-apu vbam-fex
|
PRIVATE vbam-core-apu vbam-fex nonstd-lib
|
||||||
PUBLIC vbam-core-base ${ZLIB_LIBRARY}
|
PUBLIC vbam-core-base ${ZLIB_LIBRARY}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -120,9 +120,7 @@ if(ENABLE_LINK)
|
||||||
gba/gbaLink.h
|
gba/gbaLink.h
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(vbam-core
|
target_include_directories(vbam-core PRIVATE ${SFML_INCLUDE_DIR} ${SFML_INCLUDE_DIR}/SFML/Network ${SFML_INCLUDE_DIR}/SFML/System)
|
||||||
PRIVATE ${SFML_INCLUDE_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(vbam-core
|
target_link_libraries(vbam-core
|
||||||
PRIVATE ${SFML_LIBRARIES}
|
PRIVATE ${SFML_LIBRARIES}
|
||||||
|
|
|
@ -445,7 +445,9 @@ void Blip_Buffer::mix_samples( blip_sample_t const* in, long count )
|
||||||
*out -= prev;
|
*out -= prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
blip_ulong const subsample_mask = (1L << BLIP_BUFFER_ACCURACY) - 1;
|
blip_ulong const subsample_mask = (1L << BLIP_BUFFER_ACCURACY) - 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
void Blip_Buffer::save_state( blip_buffer_state_t* out )
|
void Blip_Buffer::save_state( blip_buffer_state_t* out )
|
||||||
{
|
{
|
||||||
|
|
|
@ -553,9 +553,9 @@ inline void Blip_Synth<quality, range>::offset_resampled(blip_resampled_time_t t
|
||||||
|
|
||||||
blip_long i0 = *imp;
|
blip_long i0 = *imp;
|
||||||
BLIP_FWD(0)
|
BLIP_FWD(0)
|
||||||
if (quality > 8)
|
if constexpr (quality > 8)
|
||||||
BLIP_FWD(2)
|
BLIP_FWD(2)
|
||||||
if (quality > 12)
|
if constexpr (quality > 12)
|
||||||
BLIP_FWD(4)
|
BLIP_FWD(4)
|
||||||
{
|
{
|
||||||
blip_long t0 = i0 * delta + buf[fwd + mid - 1];
|
blip_long t0 = i0 * delta + buf[fwd + mid - 1];
|
||||||
|
@ -565,9 +565,9 @@ inline void Blip_Synth<quality, range>::offset_resampled(blip_resampled_time_t t
|
||||||
buf[fwd + mid - 1] = t0;
|
buf[fwd + mid - 1] = t0;
|
||||||
buf[fwd + mid] = t1;
|
buf[fwd + mid] = t1;
|
||||||
}
|
}
|
||||||
if (quality > 12)
|
if constexpr (quality > 12)
|
||||||
BLIP_REV(6)
|
BLIP_REV(6)
|
||||||
if (quality > 8)
|
if constexpr (quality > 8)
|
||||||
BLIP_REV(4)
|
BLIP_REV(4)
|
||||||
BLIP_REV(2)
|
BLIP_REV(2)
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ blargg_err_t Effects_Buffer::set_channel_count( int count, int const* types )
|
||||||
for ( auto& buf : bufs )
|
for ( auto& buf : bufs )
|
||||||
RETURN_ERR( buf.set_sample_rate( sample_rate(), length() ) );
|
RETURN_ERR( buf.set_sample_rate( sample_rate(), length() ) );
|
||||||
|
|
||||||
for ( int i = chans.size(); --i >= 0; )
|
for ( int i = (int)chans.size(); --i >= 0; )
|
||||||
{
|
{
|
||||||
chan_t& ch = chans [i];
|
chan_t& ch = chans [i];
|
||||||
ch.cfg.vol = 1.0f;
|
ch.cfg.vol = 1.0f;
|
||||||
|
@ -266,7 +266,7 @@ void Effects_Buffer::apply_config()
|
||||||
}
|
}
|
||||||
|
|
||||||
// convert volumes
|
// convert volumes
|
||||||
for ( i = chans.size(); --i >= 0; )
|
for ( i = (int)chans.size(); --i >= 0; )
|
||||||
{
|
{
|
||||||
chan_t& ch = chans [i];
|
chan_t& ch = chans [i];
|
||||||
ch.vol [0] = TO_FIXED( ch.cfg.vol - ch.cfg.vol * ch.cfg.pan );
|
ch.vol [0] = TO_FIXED( ch.cfg.vol - ch.cfg.vol * ch.cfg.pan );
|
||||||
|
@ -278,7 +278,7 @@ void Effects_Buffer::apply_config()
|
||||||
assign_buffers();
|
assign_buffers();
|
||||||
|
|
||||||
// set side channels
|
// set side channels
|
||||||
for ( i = chans.size(); --i >= 0; )
|
for ( i = (int)chans.size(); --i >= 0; )
|
||||||
{
|
{
|
||||||
chan_t& ch = chans [i];
|
chan_t& ch = chans [i];
|
||||||
ch.channel.left = chans [ch.cfg.echo*2 ].channel.center;
|
ch.channel.left = chans [ch.cfg.echo*2 ].channel.center;
|
||||||
|
@ -290,7 +290,7 @@ void Effects_Buffer::apply_config()
|
||||||
// determine whether effects and echo are needed at all
|
// determine whether effects and echo are needed at all
|
||||||
no_effects = true;
|
no_effects = true;
|
||||||
no_echo = true;
|
no_echo = true;
|
||||||
for ( i = chans.size(); --i >= extra_chans; )
|
for ( i = (int)chans.size(); --i >= extra_chans; )
|
||||||
{
|
{
|
||||||
chan_t& ch = chans [i];
|
chan_t& ch = chans [i];
|
||||||
if ( ch.cfg.echo && s.feedback )
|
if ( ch.cfg.echo && s.feedback )
|
||||||
|
@ -313,7 +313,7 @@ void Effects_Buffer::apply_config()
|
||||||
|
|
||||||
if ( no_effects )
|
if ( no_effects )
|
||||||
{
|
{
|
||||||
for ( i = chans.size(); --i >= 0; )
|
for ( i = (int)chans.size(); --i >= 0; )
|
||||||
{
|
{
|
||||||
chan_t& ch = chans [i];
|
chan_t& ch = chans [i];
|
||||||
ch.channel.center = &bufs [2];
|
ch.channel.center = &bufs [2];
|
||||||
|
@ -343,8 +343,8 @@ void Effects_Buffer::assign_buffers()
|
||||||
int x = i;
|
int x = i;
|
||||||
if ( i > 1 )
|
if ( i > 1 )
|
||||||
x += 2;
|
x += 2;
|
||||||
if ( x >= (int) chans.size() )
|
if ( x >= (int)chans.size() )
|
||||||
x -= (chans.size() - 2);
|
x -= (int)(chans.size() - 2);
|
||||||
chan_t& ch = chans [x];
|
chan_t& ch = chans [x];
|
||||||
|
|
||||||
int b = 0;
|
int b = 0;
|
||||||
|
@ -488,7 +488,7 @@ void Effects_Buffer::mix_effects( blip_sample_t* out_, int pair_count )
|
||||||
// mix any modified buffers
|
// mix any modified buffers
|
||||||
{
|
{
|
||||||
buf_t* buf = bufs.data();
|
buf_t* buf = bufs.data();
|
||||||
int bufs_remain = bufs.size();
|
int bufs_remain = (int)bufs.size();
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if ( buf->non_silent() && ( buf->echo == !!echo_phase ) )
|
if ( buf->non_silent() && ( buf->echo == !!echo_phase ) )
|
||||||
|
@ -513,11 +513,11 @@ void Effects_Buffer::mix_effects( blip_sample_t* out_, int pair_count )
|
||||||
int offset = -count;
|
int offset = -count;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
fixed_t s = BLIP_READER_READ( in );
|
fixed_t _s = BLIP_READER_READ( in );
|
||||||
BLIP_READER_NEXT_IDX_( in, bass, offset );
|
BLIP_READER_NEXT_IDX_( in, bass, offset );
|
||||||
|
|
||||||
out [offset] [0] += s * vol_0;
|
out [offset] [0] += _s * vol_0;
|
||||||
out [offset] [1] += s * vol_1;
|
out [offset] [1] += _s * vol_1;
|
||||||
}
|
}
|
||||||
while ( ++offset );
|
while ( ++offset );
|
||||||
|
|
||||||
|
|
|
@ -228,7 +228,10 @@ class Stereo_Buffer : public Multi_Buffer
|
||||||
buf_t bufs[bufs_size];
|
buf_t bufs[bufs_size];
|
||||||
Stereo_Mixer mixer;
|
Stereo_Mixer mixer;
|
||||||
channel_t chan;
|
channel_t chan;
|
||||||
|
|
||||||
|
#if 0
|
||||||
long samples_avail_;
|
long samples_avail_;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
// Silent_Buffer generates no samples, useful where no sound is wanted
|
// Silent_Buffer generates no samples, useful where no sound is wanted
|
||||||
|
|
|
@ -57,7 +57,7 @@ target_include_directories(vbam-core-base
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(vbam-core-base
|
target_link_libraries(vbam-core-base
|
||||||
PRIVATE vbam-fex stb-image
|
PRIVATE vbam-fex stb-image nonstd-lib
|
||||||
PUBLIC ${ZLIB_LIBRARY}
|
PUBLIC ${ZLIB_LIBRARY}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ uint8_t *utilLoad(const char *, bool (*)(const char *), uint8_t *, int &);
|
||||||
IMAGE_TYPE utilFindType(const char *);
|
IMAGE_TYPE utilFindType(const char *);
|
||||||
bool utilIsGBAImage(const char *);
|
bool utilIsGBAImage(const char *);
|
||||||
bool utilIsGBImage(const char *);
|
bool utilIsGBImage(const char *);
|
||||||
|
bool utilIsTARAchive(const char *);
|
||||||
|
|
||||||
#if defined(__LIBRETRO__)
|
#if defined(__LIBRETRO__)
|
||||||
|
|
||||||
|
@ -40,7 +41,7 @@ void utilReadDataMem(const uint8_t *&data, variable_desc *);
|
||||||
#else // !defined(__LIBRETRO__)
|
#else // !defined(__LIBRETRO__)
|
||||||
|
|
||||||
// strip .gz or .z off end
|
// strip .gz or .z off end
|
||||||
void utilStripDoubleExtension(const char *, char *);
|
void utilStripDoubleExtension(const char *, char *, size_t);
|
||||||
|
|
||||||
gzFile utilAutoGzOpen(const char *file, const char *mode);
|
gzFile utilAutoGzOpen(const char *file, const char *mode);
|
||||||
gzFile utilGzOpen(const char *file, const char *mode);
|
gzFile utilGzOpen(const char *file, const char *mode);
|
||||||
|
@ -58,4 +59,4 @@ void utilWriteInt(gzFile, int);
|
||||||
|
|
||||||
#endif // defined(__LIBRETRO__)
|
#endif // defined(__LIBRETRO__)
|
||||||
|
|
||||||
#endif // VBAM_CORE_BASE_FILE_UTIL_H_
|
#endif // VBAM_CORE_BASE_FILE_UTIL_H_
|
||||||
|
|
|
@ -19,26 +19,41 @@ FILE* utilOpenFile(const char* filename, const char* mode) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
std::wstring wfilename = core::internal::ToUTF16(filename);
|
std::wstring wfilename = core::internal::ToUTF16(filename);
|
||||||
if (wfilename.empty()) {
|
if (wfilename.empty()) {
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring wmode = core::internal::ToUTF16(mode);
|
std::wstring wmode = core::internal::ToUTF16(mode);
|
||||||
if (wmode.empty()) {
|
if (wmode.empty()) {
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if __STDC_WANT_SECURE_LIB__
|
||||||
|
FILE *ret = NULL;
|
||||||
|
_wfopen_s(&ret, wfilename.data(), wmode.data());
|
||||||
|
return ret;
|
||||||
|
#else
|
||||||
return _wfopen(wfilename.data(), wmode.data());
|
return _wfopen(wfilename.data(), wmode.data());
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
return fopen(filename, mode);
|
return fopen(filename, mode);
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool utilIsTARAchive(const char* file) {
|
||||||
|
const char* p = strrchr(file, '.');
|
||||||
|
|
||||||
|
if ((strcasecmp(p, ".tar") == 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool utilIsGBAImage(const char* file) {
|
bool utilIsGBAImage(const char* file) {
|
||||||
coreOptions.cpuIsMultiBoot = false;
|
coreOptions.cpuIsMultiBoot = false;
|
||||||
if (strlen(file) > 4) {
|
if (strlen(file) > 4) {
|
||||||
const char* p = strrchr(file, '.');
|
const char* p = strrchr(file, '.');
|
||||||
|
|
||||||
if (p != nullptr) {
|
if (p != NULL) {
|
||||||
if ((strcasecmp(p, ".agb") == 0) || (strcasecmp(p, ".gba") == 0) ||
|
if ((strcasecmp(p, ".agb") == 0) || (strcasecmp(p, ".gba") == 0) ||
|
||||||
(strcasecmp(p, ".bin") == 0) || (strcasecmp(p, ".elf") == 0))
|
(strcasecmp(p, ".bin") == 0) || (strcasecmp(p, ".elf") == 0))
|
||||||
return true;
|
return true;
|
||||||
|
@ -56,7 +71,7 @@ bool utilIsGBImage(const char* file) {
|
||||||
if (strlen(file) > 4) {
|
if (strlen(file) > 4) {
|
||||||
const char* p = strrchr(file, '.');
|
const char* p = strrchr(file, '.');
|
||||||
|
|
||||||
if (p != nullptr) {
|
if (p != NULL) {
|
||||||
if ((strcasecmp(p, ".dmg") == 0) || (strcasecmp(p, ".gb") == 0) ||
|
if ((strcasecmp(p, ".dmg") == 0) || (strcasecmp(p, ".gb") == 0) ||
|
||||||
(strcasecmp(p, ".gbc") == 0) || (strcasecmp(p, ".cgb") == 0) ||
|
(strcasecmp(p, ".gbc") == 0) || (strcasecmp(p, ".cgb") == 0) ||
|
||||||
(strcasecmp(p, ".sgb") == 0))
|
(strcasecmp(p, ".sgb") == 0))
|
||||||
|
|
|
@ -24,7 +24,7 @@ bool utilIsGzipFile(const char* file) {
|
||||||
if (strlen(file) > 3) {
|
if (strlen(file) > 3) {
|
||||||
const char* p = strrchr(file, '.');
|
const char* p = strrchr(file, '.');
|
||||||
|
|
||||||
if (p != nullptr) {
|
if (p != NULL) {
|
||||||
if (strcasecmp(p, ".gz") == 0)
|
if (strcasecmp(p, ".gz") == 0)
|
||||||
return true;
|
return true;
|
||||||
if (strcasecmp(p, ".z") == 0)
|
if (strcasecmp(p, ".z") == 0)
|
||||||
|
@ -36,22 +36,27 @@ bool utilIsGzipFile(const char* file) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opens and scans archive using accept(). Returns fex_t if found.
|
// Opens and scans archive using accept(). Returns fex_t if found.
|
||||||
// If error or not found, displays message and returns nullptr.
|
// If error or not found, displays message and returns NULL.
|
||||||
fex_t* scanArchive(const char* file, bool (*accept)(const char*), char (&buffer)[2048]) {
|
fex_t* scanArchive(const char* file, bool (*accept)(const char*), char (&buffer)[2048]) {
|
||||||
fex_t* fe;
|
fex_t* fe;
|
||||||
fex_err_t err = fex_open(&fe, file);
|
fex_err_t err = fex_open(&fe, file);
|
||||||
if (!fe) {
|
if (!fe) {
|
||||||
systemMessage(MSG_CANNOT_OPEN_FILE, N_("Cannot open file %s: %s"), file, err);
|
systemMessage(MSG_CANNOT_OPEN_FILE, N_("Cannot open file %s: %s"), file, err);
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan filenames
|
// Scan filenames
|
||||||
bool found = false;
|
bool found = false;
|
||||||
while (!fex_done(fe)) {
|
while (!fex_done(fe)) {
|
||||||
|
#ifdef __STDC_WANT_SECURE_LIB__
|
||||||
|
strncpy_s(buffer, sizeof buffer, fex_name(fe), sizeof buffer);
|
||||||
|
#else
|
||||||
strncpy(buffer, fex_name(fe), sizeof buffer);
|
strncpy(buffer, fex_name(fe), sizeof buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
buffer[sizeof buffer - 1] = '\0';
|
buffer[sizeof buffer - 1] = '\0';
|
||||||
|
|
||||||
utilStripDoubleExtension(buffer, buffer);
|
utilStripDoubleExtension(buffer, buffer, sizeof buffer);
|
||||||
|
|
||||||
if (accept(buffer)) {
|
if (accept(buffer)) {
|
||||||
found = true;
|
found = true;
|
||||||
|
@ -62,14 +67,14 @@ fex_t* scanArchive(const char* file, bool (*accept)(const char*), char (&buffer)
|
||||||
if (err) {
|
if (err) {
|
||||||
systemMessage(MSG_BAD_ZIP_FILE, N_("Cannot read archive %s: %s"), file, err);
|
systemMessage(MSG_BAD_ZIP_FILE, N_("Cannot read archive %s: %s"), file, err);
|
||||||
fex_close(fe);
|
fex_close(fe);
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
systemMessage(MSG_NO_IMAGE_ON_ZIP, N_("No image found in file %s"), file);
|
systemMessage(MSG_NO_IMAGE_ON_ZIP, N_("No image found in file %s"), file);
|
||||||
fex_close(fe);
|
fex_close(fe);
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
return fe;
|
return fe;
|
||||||
}
|
}
|
||||||
|
@ -96,10 +101,10 @@ IMAGE_TYPE utilFindType(const char* file, char (&buffer)[2048]) {
|
||||||
return utilIsGBAImage(file) ? IMAGE_GBA : IMAGE_GB;
|
return utilIsGBAImage(file) ? IMAGE_GBA : IMAGE_GB;
|
||||||
}
|
}
|
||||||
|
|
||||||
int(ZEXPORT* utilGzWriteFunc)(gzFile, const voidp, unsigned int) = nullptr;
|
int(ZEXPORT* utilGzWriteFunc)(gzFile, const voidp, unsigned int) = NULL;
|
||||||
int(ZEXPORT* utilGzReadFunc)(gzFile, voidp, unsigned int) = nullptr;
|
int(ZEXPORT* utilGzReadFunc)(gzFile, voidp, unsigned int) = NULL;
|
||||||
int(ZEXPORT* utilGzCloseFunc)(gzFile) = nullptr;
|
int(ZEXPORT* utilGzCloseFunc)(gzFile) = NULL;
|
||||||
z_off_t(ZEXPORT* utilGzSeekFunc)(gzFile, z_off_t, int) = nullptr;
|
z_off_t(ZEXPORT* utilGzSeekFunc)(gzFile, z_off_t, int) = NULL;
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
@ -108,7 +113,7 @@ uint8_t* utilLoad(const char* file, bool (*accept)(const char*), uint8_t* data,
|
||||||
char buffer[2048];
|
char buffer[2048];
|
||||||
fex_t* fe = scanArchive(file, accept, buffer);
|
fex_t* fe = scanArchive(file, accept, buffer);
|
||||||
if (!fe)
|
if (!fe)
|
||||||
return nullptr;
|
return NULL;
|
||||||
|
|
||||||
// Allocate space for image
|
// Allocate space for image
|
||||||
fex_err_t err = fex_stat(fe);
|
fex_err_t err = fex_stat(fe);
|
||||||
|
@ -117,17 +122,17 @@ uint8_t* utilLoad(const char* file, bool (*accept)(const char*), uint8_t* data,
|
||||||
size = fileSize;
|
size = fileSize;
|
||||||
|
|
||||||
if (size > MAX_CART_SIZE)
|
if (size > MAX_CART_SIZE)
|
||||||
return nullptr;
|
return NULL;
|
||||||
|
|
||||||
uint8_t* image = data;
|
uint8_t* image = data;
|
||||||
|
|
||||||
if (image == nullptr) {
|
if (image == NULL) {
|
||||||
// allocate buffer memory if none was passed to the function
|
// allocate buffer memory if none was passed to the function
|
||||||
image = (uint8_t*)malloc(utilGetSize(size));
|
image = (uint8_t*)malloc(utilGetSize(size));
|
||||||
if (image == nullptr) {
|
if (image == NULL) {
|
||||||
fex_close(fe);
|
fex_close(fe);
|
||||||
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"), "data");
|
systemMessage(MSG_OUT_OF_MEMORY, N_("Failed to allocate memory for %s"), "data");
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
size = fileSize;
|
size = fileSize;
|
||||||
}
|
}
|
||||||
|
@ -136,11 +141,12 @@ uint8_t* utilLoad(const char* file, bool (*accept)(const char*), uint8_t* data,
|
||||||
int read = fileSize <= size ? fileSize : size; // do not read beyond file
|
int read = fileSize <= size ? fileSize : size; // do not read beyond file
|
||||||
err = fex_read(fe, image, read);
|
err = fex_read(fe, image, read);
|
||||||
fex_close(fe);
|
fex_close(fe);
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
systemMessage(MSG_ERROR_READING_IMAGE, N_("Error reading image from %s: %s"), buffer, err);
|
systemMessage(MSG_ERROR_READING_IMAGE, N_("Error reading image from %s: %s"), buffer, err);
|
||||||
if (data == nullptr)
|
if (data == NULL)
|
||||||
free(image);
|
free(image);
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
size = fileSize;
|
size = fileSize;
|
||||||
|
@ -153,9 +159,16 @@ IMAGE_TYPE utilFindType(const char* file) {
|
||||||
return utilFindType(file, buffer);
|
return utilFindType(file, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void utilStripDoubleExtension(const char* file, char* buffer) {
|
void utilStripDoubleExtension(const char* file, char* buffer, size_t len) {
|
||||||
|
#if !__STDC_WANT_SECURE_LIB__
|
||||||
|
(void)len;
|
||||||
|
#endif
|
||||||
if (buffer != file) // allows conversion in place
|
if (buffer != file) // allows conversion in place
|
||||||
|
#if __STDC_WANT_SECURE_LIB__
|
||||||
|
strcpy_s(buffer, len, file);
|
||||||
|
#else
|
||||||
strcpy(buffer, file);
|
strcpy(buffer, file);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (utilIsGzipFile(file)) {
|
if (utilIsGzipFile(file)) {
|
||||||
char* p = strrchr(buffer, '.');
|
char* p = strrchr(buffer, '.');
|
||||||
|
@ -170,7 +183,7 @@ gzFile utilAutoGzOpen(const char* file, const char* mode) {
|
||||||
|
|
||||||
std::wstring wfile = core::internal::ToUTF16(file);
|
std::wstring wfile = core::internal::ToUTF16(file);
|
||||||
if (wfile.empty()) {
|
if (wfile.empty()) {
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return gzopen_w(wfile.data(), mode);
|
return gzopen_w(wfile.data(), mode);
|
||||||
|
|
|
@ -25,12 +25,12 @@ static int utilGetSize(int size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* utilLoad(const char* file, bool (*)(const char*), uint8_t* data, int& size) {
|
uint8_t* utilLoad(const char* file, bool (*)(const char*), uint8_t* data, int& size) {
|
||||||
FILE* fp = nullptr;
|
FILE* fp = NULL;
|
||||||
|
|
||||||
fp = fopen(file, "rb");
|
fp = fopen(file, "rb");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
log("Failed to open file %s", file);
|
log("Failed to open file %s", file);
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
fseek(fp, 0, SEEK_END); // go to end
|
fseek(fp, 0, SEEK_END); // go to end
|
||||||
|
|
||||||
|
@ -38,18 +38,18 @@ uint8_t* utilLoad(const char* file, bool (*)(const char*), uint8_t* data, int& s
|
||||||
rewind(fp);
|
rewind(fp);
|
||||||
|
|
||||||
uint8_t* image = data;
|
uint8_t* image = data;
|
||||||
if (image == nullptr) {
|
if (image == NULL) {
|
||||||
image = (uint8_t*)malloc(utilGetSize(size));
|
image = (uint8_t*)malloc(utilGetSize(size));
|
||||||
if (image == nullptr) {
|
if (image == NULL) {
|
||||||
log("Failed to allocate memory for %s", file);
|
log("Failed to allocate memory for %s", file);
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fread(image, 1, size, fp) != (size_t)size) {
|
if (fread(image, 1, size, fp) != (size_t)size) {
|
||||||
log("Failed to read from %s", file);
|
log("Failed to read from %s", file);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return nullptr;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
|
@ -20,6 +20,25 @@ bool utilWritePNGFile(const char* fileName, int w, int h, uint8_t* pix) {
|
||||||
int sizeY = h;
|
int sizeY = h;
|
||||||
|
|
||||||
switch (systemColorDepth) {
|
switch (systemColorDepth) {
|
||||||
|
case 8: {
|
||||||
|
uint8_t* pixU8 = (uint8_t*)pix + (w + 4);
|
||||||
|
for (int y = 0; y < sizeY; y++) {
|
||||||
|
for (int x = 0; x < sizeX; x++, pixU8++) {
|
||||||
|
// White color fix
|
||||||
|
if (*pixU8 == 0xff) {
|
||||||
|
*b++ = 0xff;
|
||||||
|
*b++ = 0xff;
|
||||||
|
*b++ = 0xff;
|
||||||
|
} else {
|
||||||
|
*b++ = (((*pixU8 >> 5) & 0x7) << 5);
|
||||||
|
*b++ = (((*pixU8 >> 2) & 0x7) << 5);
|
||||||
|
*b++ = ((*pixU8 & 0x3) << 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pixU8 += 4;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
case 16: {
|
case 16: {
|
||||||
uint16_t* p = (uint16_t*)(pix + (w + 2) * 2); // skip first black line
|
uint16_t* p = (uint16_t*)(pix + (w + 2) * 2); // skip first black line
|
||||||
for (int y = 0; y < sizeY; y++) {
|
for (int y = 0; y < sizeY; y++) {
|
||||||
|
@ -77,7 +96,12 @@ bool utilWritePNGFile(const char* fileName, int w, int h, uint8_t* pix) {
|
||||||
bool utilWriteBMPFile(const char* fileName, int w, int h, uint8_t* pix) {
|
bool utilWriteBMPFile(const char* fileName, int w, int h, uint8_t* pix) {
|
||||||
uint8_t writeBuffer[512 * 3];
|
uint8_t writeBuffer[512 * 3];
|
||||||
|
|
||||||
|
#if __STDC_WANT_SECURE_LIB__
|
||||||
|
FILE* fp = NULL;
|
||||||
|
fopen_s(&fp, fileName, "wb");
|
||||||
|
#else
|
||||||
FILE* fp = fopen(fileName, "wb");
|
FILE* fp = fopen(fileName, "wb");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
systemMessage(MSG_ERROR_CREATING_FILE, N_("Error creating file %s"), fileName);
|
systemMessage(MSG_ERROR_CREATING_FILE, N_("Error creating file %s"), fileName);
|
||||||
|
@ -125,6 +149,34 @@ bool utilWriteBMPFile(const char* fileName, int w, int h, uint8_t* pix) {
|
||||||
int sizeY = h;
|
int sizeY = h;
|
||||||
|
|
||||||
switch (systemColorDepth) {
|
switch (systemColorDepth) {
|
||||||
|
case 8: {
|
||||||
|
uint8_t* pixU8 = 0;
|
||||||
|
pixU8 = (uint8_t*)pix + ((w + 4) * (h));
|
||||||
|
|
||||||
|
for (int y = 0; y < sizeY; y++) {
|
||||||
|
for (int x = 0; x < sizeX; x++, pixU8++) {
|
||||||
|
// White color fix
|
||||||
|
if (*pixU8 == 0xff) {
|
||||||
|
*b++ = 0xff;
|
||||||
|
*b++ = 0xff;
|
||||||
|
*b++ = 0xff;
|
||||||
|
} else {
|
||||||
|
*b++ = ((*pixU8 & 0x3) << 6);
|
||||||
|
*b++ = (((*pixU8 >> 2) & 0x7) << 5);
|
||||||
|
*b++ = (((*pixU8 >> 5) & 0x7) << 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pixU8++;
|
||||||
|
pixU8++;
|
||||||
|
pixU8++;
|
||||||
|
pixU8++;
|
||||||
|
pixU8 -= 2 * (w + 4);
|
||||||
|
|
||||||
|
fwrite(writeBuffer, 1, 3 * w, fp);
|
||||||
|
b = writeBuffer;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
case 16: {
|
case 16: {
|
||||||
uint16_t* p = (uint16_t*)(pix + (w + 2) * (h) * 2); // skip first black line
|
uint16_t* p = (uint16_t*)(pix + (w + 2) * (h) * 2); // skip first black line
|
||||||
for (int y = 0; y < sizeY; y++) {
|
for (int y = 0; y < sizeY; y++) {
|
||||||
|
|
|
@ -10,4 +10,6 @@
|
||||||
bool utilWritePNGFile(const char*, int, int, uint8_t*);
|
bool utilWritePNGFile(const char*, int, int, uint8_t*);
|
||||||
bool utilWriteBMPFile(const char*, int, int, uint8_t*);
|
bool utilWriteBMPFile(const char*, int, int, uint8_t*);
|
||||||
|
|
||||||
#endif // VBAM_CORE_BASE_IMAGE_UTIL_H_
|
extern bool no_border;
|
||||||
|
|
||||||
|
#endif // VBAM_CORE_BASE_IMAGE_UTIL_H_
|
||||||
|
|
|
@ -10,13 +10,13 @@ namespace internal {
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
|
|
||||||
std::wstring ToUTF16(const char* utf8) {
|
std::wstring ToUTF16(const char* utf8) {
|
||||||
int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, nullptr, 0);
|
int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
return std::wstring();
|
return std::wstring();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring result(len, 0);
|
std::wstring result(len, 0);
|
||||||
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, result.data(), len);
|
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, (LPWSTR)result.data(), len);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,10 @@
|
||||||
|
|
||||||
#include "core/base/internal/memgzio.h"
|
#include "core/base/internal/memgzio.h"
|
||||||
|
|
||||||
|
#if __STDC_WANT_SECURE_LIB__
|
||||||
|
#define vsnprintf vsprintf_s
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef local
|
#ifndef local
|
||||||
#define local static
|
#define local static
|
||||||
#endif
|
#endif
|
||||||
|
@ -213,7 +217,7 @@ local int memPrintf(MEMFILE *f, const char *format, ...)
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
va_start(list, format);
|
va_start(list, format);
|
||||||
len = vsprintf(buffer, format, list);
|
len = vsnprintf(buffer, sizeof(buffer), format, list);
|
||||||
va_end(list);
|
va_end(list);
|
||||||
|
|
||||||
return (int)memWrite(buffer, 1, len, f);
|
return (int)memWrite(buffer, 1, len, f);
|
||||||
|
|
|
@ -285,8 +285,8 @@ static bool patchApplyUPS(const char* patchname, uint8_t** rom, int* size)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (dataSize > *size) {
|
if (dataSize > *size) {
|
||||||
*rom = (uint8_t*)realloc(*rom, dataSize);
|
*rom = (uint8_t*)realloc(*rom, (size_t)dataSize);
|
||||||
memset(*rom + *size, 0, dataSize - *size);
|
memset(*rom + *size, 0, (size_t)(dataSize - *size));
|
||||||
*size = (int)(dataSize);
|
*size = (int)(dataSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,12 +70,12 @@ extern struct CoreOptions {
|
||||||
int skipSaveGameBattery = 1;
|
int skipSaveGameBattery = 1;
|
||||||
int skipSaveGameCheats = 0;
|
int skipSaveGameCheats = 0;
|
||||||
int useBios = 0;
|
int useBios = 0;
|
||||||
int winGbPrinterEnabled = 1;
|
int gbPrinterEnabled = 0;
|
||||||
uint32_t speedup_throttle = 100;
|
uint32_t speedup_throttle = 100;
|
||||||
uint32_t speedup_frame_skip = 9;
|
uint32_t speedup_frame_skip = 9;
|
||||||
uint32_t throttle = 100;
|
uint32_t throttle = 100;
|
||||||
const char* loadDotCodeFile = nullptr;
|
const char* loadDotCodeFile = NULL;
|
||||||
const char* saveDotCodeFile = nullptr;
|
const char* saveDotCodeFile = NULL;
|
||||||
} coreOptions;
|
} coreOptions;
|
||||||
|
|
||||||
// The following functions must be implemented by the emulator.
|
// The following functions must be implemented by the emulator.
|
||||||
|
@ -110,6 +110,7 @@ extern void systemFrame();
|
||||||
extern void systemGbBorderOn();
|
extern void systemGbBorderOn();
|
||||||
extern void (*dbgOutput)(const char* s, uint32_t addr);
|
extern void (*dbgOutput)(const char* s, uint32_t addr);
|
||||||
extern void (*dbgSignal)(int sig, int number);
|
extern void (*dbgSignal)(int sig, int number);
|
||||||
|
extern uint8_t systemColorMap8[0x10000];
|
||||||
extern uint16_t systemColorMap16[0x10000];
|
extern uint16_t systemColorMap16[0x10000];
|
||||||
extern uint32_t systemColorMap32[0x10000];
|
extern uint32_t systemColorMap32[0x10000];
|
||||||
extern uint16_t systemGbPalette[24];
|
extern uint16_t systemGbPalette[24];
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue