Compare commits
1134 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
24ccf8d8fd | ||
![]() |
fd28ec3077 | ||
![]() |
49c8c6ee00 | ||
![]() |
bf5a26c58c | ||
![]() |
38dd046398 | ||
![]() |
cbffb7caed | ||
![]() |
3eda6e4b61 | ||
![]() |
197bb5ee47 | ||
![]() |
c1d26698e9 | ||
![]() |
815cc536b7 | ||
![]() |
165d2ba37f | ||
![]() |
8e25550407 | ||
![]() |
8b6ef6aeeb | ||
![]() |
6b328bfef8 | ||
![]() |
65783af8e7 | ||
![]() |
6135c97456 | ||
![]() |
0d29fa8862 | ||
![]() |
e1ca9ea1a1 | ||
![]() |
dbb4f6e4bc | ||
![]() |
7da5f76d1d | ||
![]() |
e628e278f5 | ||
![]() |
ba9b2ebfb3 | ||
![]() |
33253866aa | ||
![]() |
cf2ce3906d | ||
![]() |
4fbb6ff0b5 | ||
![]() |
83d4b397f1 | ||
![]() |
6fac1b7d3a | ||
![]() |
184e1c1c68 | ||
![]() |
903b5d2660 | ||
![]() |
825e1a5da5 | ||
![]() |
1e91b76dbc | ||
![]() |
c99ebfe60e | ||
![]() |
eb09f5a766 | ||
![]() |
305c632a35 | ||
![]() |
213aae2ea0 | ||
![]() |
3247d4f0a2 | ||
![]() |
b141ad900b | ||
![]() |
abaed9897c | ||
![]() |
b2e0e71308 | ||
![]() |
7732768fff | ||
![]() |
ddf0bd4cb9 | ||
![]() |
be92e416e6 | ||
![]() |
63d8edc7e3 | ||
![]() |
d47a83cab5 | ||
![]() |
67a6e0d655 | ||
![]() |
fd2acc36c1 | ||
![]() |
4f9f052ede | ||
![]() |
26bb5031c8 | ||
![]() |
81ad620f2b | ||
![]() |
0e13f2377b | ||
![]() |
748a7863c7 | ||
![]() |
ad3e2779d6 | ||
![]() |
88cd18448a | ||
![]() |
1c8df22891 | ||
![]() |
9d457d136a | ||
![]() |
988173530f | ||
![]() |
76ea1499c4 | ||
![]() |
41ec1d131e | ||
![]() |
800060bce3 | ||
![]() |
7cb5f09bcf | ||
![]() |
136e651d69 | ||
![]() |
0bf93f42e3 | ||
![]() |
6434bcd7f2 | ||
![]() |
95a97af027 | ||
![]() |
a3b65afc28 | ||
![]() |
2d34463be5 | ||
![]() |
8a06dc066d | ||
![]() |
1deb3bc83d | ||
![]() |
52beffb4e2 | ||
![]() |
09440ecc2a | ||
![]() |
e7696736ad | ||
![]() |
8537aad68f | ||
![]() |
ec11479e68 | ||
![]() |
151d917f56 | ||
![]() |
b834912eaa | ||
![]() |
9ad7a3e821 | ||
![]() |
7f8ce9982f | ||
![]() |
c81c3d00ff | ||
![]() |
6ce218f7a2 | ||
![]() |
92544f380d | ||
![]() |
0250b1dfc8 | ||
![]() |
672519726d | ||
![]() |
76e2b074d0 | ||
![]() |
fbfc96aaf5 | ||
![]() |
3392e98ef0 | ||
![]() |
9fbe346612 | ||
![]() |
51e18a8601 | ||
![]() |
0e5f091077 | ||
![]() |
6f05fba7b2 | ||
![]() |
006b60878e | ||
![]() |
d4b84ef98e | ||
![]() |
8f2844846f | ||
![]() |
e20d013472 | ||
![]() |
c39a076a7e | ||
![]() |
bdaade45c0 | ||
![]() |
2b600e22a3 | ||
![]() |
b42a1b83a1 | ||
![]() |
6818fc565a | ||
![]() |
ed625c3347 | ||
![]() |
d07b74f010 | ||
![]() |
d8f9daa1a8 | ||
![]() |
f0ceaf2ae0 | ||
![]() |
364a5ad390 | ||
![]() |
600a0ec98a | ||
![]() |
16c2877643 | ||
![]() |
c2ce1bc537 | ||
![]() |
1325475d20 | ||
![]() |
86461b3c43 | ||
![]() |
f3b848f941 | ||
![]() |
9be10d73f6 | ||
![]() |
1acd78661f | ||
![]() |
11e0e27670 | ||
![]() |
acf407db5c | ||
![]() |
a15e47a1a4 | ||
![]() |
d9f3bb9fae | ||
![]() |
7149a3830c | ||
![]() |
eef9a072a5 | ||
![]() |
982c99a9b1 | ||
![]() |
128b7cbc3d | ||
![]() |
3be802ba1f | ||
![]() |
4e7b9b98c8 | ||
![]() |
85393d4ec5 | ||
![]() |
c7e2b5d83c | ||
![]() |
531dfb4cca | ||
![]() |
d4725dc0e6 | ||
![]() |
f601a32476 | ||
![]() |
7526d0588d | ||
![]() |
58eaa70ae1 | ||
![]() |
4a34b683e5 | ||
![]() |
3995ca4e4c | ||
![]() |
5b788c6caf | ||
![]() |
a8bf477e49 | ||
![]() |
435dc05490 | ||
![]() |
f659e3d4a9 | ||
![]() |
5e38649b34 | ||
![]() |
b5cc3b0235 | ||
![]() |
cefdae37fc | ||
![]() |
3d7c31fe4c | ||
![]() |
c0553d8b23 | ||
![]() |
76100ae563 | ||
![]() |
0bac96a4ca | ||
![]() |
3824868dec | ||
![]() |
c1c73407cb | ||
![]() |
808c556654 | ||
![]() |
98324ee4c2 | ||
![]() |
5bb6cdd8a4 | ||
![]() |
fc37a1cb4d | ||
![]() |
dcc92d72b6 | ||
![]() |
0eae27a474 | ||
![]() |
3c3fd51098 | ||
![]() |
43fc79235a | ||
![]() |
7fe5d09745 | ||
![]() |
d483070ddb | ||
![]() |
b9ef1b6baa | ||
![]() |
aac0f087bf | ||
![]() |
a0361b43f8 | ||
![]() |
df9bbd5b25 | ||
![]() |
dd060f8540 | ||
![]() |
377cc62446 | ||
![]() |
1a671afd7a | ||
![]() |
1c6d56867b | ||
![]() |
b3446e6a46 | ||
![]() |
59f8886e18 | ||
![]() |
fb45275626 | ||
![]() |
f50d76adb5 | ||
![]() |
6a65058c38 | ||
![]() |
d7f4f4e36c | ||
![]() |
21ce1c7a74 | ||
![]() |
0f96454d35 | ||
![]() |
ef2bf208e2 | ||
![]() |
b18616fc0a | ||
![]() |
f030eced1b | ||
![]() |
29d86d2c36 | ||
![]() |
76306d3fb6 | ||
![]() |
9186714a69 | ||
![]() |
97bf085317 | ||
![]() |
0dfed528d5 | ||
![]() |
c6de996b3e | ||
![]() |
1db6357060 | ||
![]() |
88a6fb216f | ||
![]() |
860a73a120 | ||
![]() |
18040c1ad7 | ||
![]() |
24b03ad5de | ||
![]() |
1df22e5eea | ||
![]() |
92a47a59f4 | ||
![]() |
008c05ff00 | ||
![]() |
9f9ef51fc5 | ||
![]() |
f83ab5db50 | ||
![]() |
257139f7d4 | ||
![]() |
d5f20c0f4e | ||
![]() |
6e57d12ffd | ||
![]() |
bfeed31d5e | ||
![]() |
9022d583e5 | ||
![]() |
1485cfd625 | ||
![]() |
3892b947af | ||
![]() |
77561e4472 | ||
![]() |
c72ca64ea4 | ||
![]() |
4b3e902567 | ||
![]() |
a9322e2f23 | ||
![]() |
0932ac6661 | ||
![]() |
a96efcfe6a | ||
![]() |
0824dd3b55 | ||
![]() |
356faf133d | ||
![]() |
ea9b482a5e | ||
![]() |
a0f4e8f9ed | ||
![]() |
c34d9d1270 | ||
![]() |
86199d2eaf | ||
![]() |
937465fb8c | ||
![]() |
f10f9779eb | ||
![]() |
0540523614 | ||
![]() |
467e8d2e55 | ||
![]() |
83dcaffc9b | ||
![]() |
9a981ef293 | ||
![]() |
6cff1d72c3 | ||
![]() |
8ab766b7d7 | ||
![]() |
a0193a6b79 | ||
![]() |
98442c8d63 | ||
![]() |
fff7220222 | ||
![]() |
e039ee8c18 | ||
![]() |
2c3e674e89 | ||
![]() |
b8393c49d1 | ||
![]() |
d86f36f6c3 | ||
![]() |
3f762a58ef | ||
![]() |
67fff40786 | ||
![]() |
5c952f4c30 | ||
![]() |
4d1fc268b1 | ||
![]() |
a35ae685de | ||
![]() |
971ea6c6ef | ||
![]() |
23a575d5d2 | ||
![]() |
9ad7da6620 | ||
![]() |
31df3eed12 | ||
![]() |
47fa4faa15 | ||
![]() |
f0b99fbb27 | ||
![]() |
2ef00f37cd | ||
![]() |
4ae1d3fade | ||
![]() |
1b24365dae | ||
![]() |
04b179699f | ||
![]() |
2ddc179ff1 | ||
![]() |
f1ee711169 | ||
![]() |
63ff8737a3 | ||
![]() |
7e09ab2313 | ||
![]() |
48fcaaba0e | ||
![]() |
274c6567a4 | ||
![]() |
d71e90ee50 | ||
![]() |
c41189e987 | ||
![]() |
e7903e4eac | ||
![]() |
a06d450d56 | ||
![]() |
695d146e13 | ||
![]() |
a735cd2b6f | ||
![]() |
3fd4a6fca0 | ||
![]() |
cd052a6de6 | ||
![]() |
1ccae3254a | ||
![]() |
412e5d1979 | ||
![]() |
6b090186da | ||
![]() |
099ff0a17a | ||
![]() |
138a28bdc8 | ||
![]() |
300c3cf635 | ||
![]() |
4b84916e82 | ||
![]() |
aff68c3699 | ||
![]() |
89dd7f060d | ||
![]() |
86c87ef3d4 | ||
![]() |
495433fae8 | ||
![]() |
74e2ac7e94 | ||
![]() |
70a41c5fd5 | ||
![]() |
e40e66143b | ||
![]() |
50e7c39e5c | ||
![]() |
52bedc1d5d | ||
![]() |
6e9c6b08e3 | ||
![]() |
acb3fecf81 | ||
![]() |
ee7d375f82 | ||
![]() |
5db8f11229 | ||
![]() |
1933c7379b | ||
![]() |
d014d11546 | ||
![]() |
6f8e7f0156 | ||
![]() |
5d8681b4b0 | ||
![]() |
2b868b4a2b | ||
![]() |
9b3fab1583 | ||
![]() |
c9c831101a | ||
![]() |
d74c3cede0 | ||
![]() |
b32c973b57 | ||
![]() |
78c4b46073 | ||
![]() |
855f006d0b | ||
![]() |
d0d9dfaf04 | ||
![]() |
f308614328 | ||
![]() |
491c6464f9 | ||
![]() |
eadba482d2 | ||
![]() |
7b8ccf5a6c | ||
![]() |
b5ce501088 | ||
![]() |
f790bd922c | ||
![]() |
064608a722 | ||
![]() |
f27cc8bd98 | ||
![]() |
25a545406c | ||
![]() |
f0943366e4 | ||
![]() |
0bdd9281db | ||
![]() |
310cf7b580 | ||
![]() |
9e89c62a0d | ||
![]() |
20166c02ad | ||
![]() |
2c3991fa7d | ||
![]() |
35af5e2f14 | ||
![]() |
bacf0a1220 | ||
![]() |
0ad6ba9091 | ||
![]() |
8a3e4d9b8b | ||
![]() |
0f96f091c6 | ||
![]() |
5efdb49954 | ||
![]() |
f3cb90caff | ||
![]() |
1bbce65aee | ||
![]() |
b8024dab89 | ||
![]() |
df4d76ef3c | ||
![]() |
b1fc5f1e39 | ||
![]() |
8ce13c9e68 | ||
![]() |
bf5e50978e | ||
![]() |
15d1fb7938 | ||
![]() |
f1c550b363 | ||
![]() |
e1f94faf16 | ||
![]() |
ea83042ffd | ||
![]() |
4baa48df58 | ||
![]() |
5bde7158e3 | ||
![]() |
d205955136 | ||
![]() |
f0f76ed8a5 | ||
![]() |
fbd74c7453 | ||
![]() |
9f060fffa6 | ||
![]() |
bc01efebdd | ||
![]() |
40ae66441d | ||
![]() |
af6c023039 | ||
![]() |
93d6427fd4 | ||
![]() |
bdc54c678a | ||
![]() |
14ec2eb318 | ||
![]() |
446bb9ed59 | ||
![]() |
2efbe78f8f | ||
![]() |
489d955d80 | ||
![]() |
9b766013b2 | ||
![]() |
ab42d54057 | ||
![]() |
444e7cfe6d | ||
![]() |
e5c2a13468 | ||
![]() |
c99397a643 | ||
![]() |
96986838d2 | ||
![]() |
7b1ec72acb | ||
![]() |
9b23565b0c | ||
![]() |
b79d99844e | ||
![]() |
d2f610c4a7 | ||
![]() |
c44e720ec0 | ||
![]() |
6d75ecd0e9 | ||
![]() |
0894435946 | ||
![]() |
6b58a5694f | ||
![]() |
e3aca551be | ||
![]() |
fd5de5c9e5 | ||
![]() |
314d1031f7 | ||
![]() |
3bc6c81b9c | ||
![]() |
3864239cc0 | ||
![]() |
7d974dd3dd | ||
![]() |
356e5f9147 | ||
![]() |
1f3f6102f1 | ||
![]() |
7303ec9a6b | ||
![]() |
fa440c1358 | ||
![]() |
c34c0d4c15 | ||
![]() |
cda4683b1d | ||
![]() |
82b4d01337 | ||
![]() |
3530ec2987 | ||
![]() |
7fde85be6e | ||
![]() |
0e888f396f | ||
![]() |
6ff3703da0 | ||
![]() |
5d4683c664 | ||
![]() |
236a5cbfaa | ||
![]() |
b07320f4d0 | ||
![]() |
a6bf253c73 | ||
![]() |
e8005f51aa | ||
![]() |
6331a49c1c | ||
![]() |
1ac042c941 | ||
![]() |
f7f3e0c62c | ||
![]() |
f08d2c1d9f | ||
![]() |
04d44a9e3b | ||
![]() |
031ab276ec | ||
![]() |
6aaface658 | ||
![]() |
e64ddeb040 | ||
![]() |
c40590879a | ||
![]() |
b9268c87cd | ||
![]() |
d86c212f47 | ||
![]() |
ba255c2a7b | ||
![]() |
32fbae8d7e | ||
![]() |
1c798d9ec5 | ||
![]() |
1867b81b4c | ||
![]() |
ce5c08e122 | ||
![]() |
8ee5cdf092 | ||
![]() |
585f671557 | ||
![]() |
542382cba9 | ||
![]() |
31e0b0656f | ||
![]() |
524b07b6aa | ||
![]() |
8c22b137bc | ||
![]() |
7792e9b5f4 | ||
![]() |
b019bfa180 | ||
![]() |
82d69c92b8 | ||
![]() |
88071c7880 | ||
![]() |
81ccaa2cd6 | ||
![]() |
e8edb5e48c | ||
![]() |
c6bf0b4245 | ||
![]() |
78079ffd79 | ||
![]() |
6fefd6ac08 | ||
![]() |
19ecc3dc61 | ||
![]() |
ac346b86c8 | ||
![]() |
c7a237d677 | ||
![]() |
7de1b38f77 | ||
![]() |
a7fb72ec40 | ||
![]() |
72197b62ad | ||
![]() |
b95a1f520b | ||
![]() |
77b71b2a9d | ||
![]() |
142c6db677 | ||
![]() |
c6eb655d67 | ||
![]() |
8f90160b26 | ||
![]() |
cdfe07df7f | ||
![]() |
afbe80746d | ||
![]() |
533ca873c2 | ||
![]() |
8fa0526153 | ||
![]() |
9d5134d4cf | ||
![]() |
7976fefbb6 | ||
![]() |
e73bb70179 | ||
![]() |
16755deb60 | ||
![]() |
656a3ac1eb | ||
![]() |
adb2e0921d | ||
![]() |
330c13b2da | ||
![]() |
bf2fdc6e4e | ||
![]() |
12c07516e7 | ||
![]() |
7cda523b96 | ||
![]() |
641bfec3d5 | ||
![]() |
3c849f2f1c | ||
![]() |
d54bbd857a | ||
![]() |
7d802ccef7 | ||
![]() |
9351998f50 | ||
![]() |
b8a37cb8ca | ||
![]() |
728d87274b | ||
![]() |
c6b5bb7d98 | ||
![]() |
cc58f530e7 | ||
![]() |
5c7577c452 | ||
![]() |
acafcd04b9 | ||
![]() |
b1bbb07375 | ||
![]() |
b23cccc23d | ||
![]() |
8af84a1093 | ||
![]() |
9dc9431bde | ||
![]() |
9be14b4603 | ||
![]() |
20d2c042ba | ||
![]() |
dca1228e01 | ||
![]() |
b18cea57ab | ||
![]() |
71f142bb86 | ||
![]() |
745a0e1271 | ||
![]() |
3241fbf300 | ||
![]() |
f7f8aa00d5 | ||
![]() |
ff88db00f7 | ||
![]() |
2581ab6c87 | ||
![]() |
d6b56969a0 | ||
![]() |
1d1aa1f790 | ||
![]() |
1fb6ca626e | ||
![]() |
6a37f9f9a1 | ||
![]() |
5aeb8b1961 | ||
![]() |
a1e60f061d | ||
![]() |
7b39b65606 | ||
![]() |
4840705675 | ||
![]() |
7c4368b064 | ||
![]() |
de13e1579a | ||
![]() |
ba1767f8b9 | ||
![]() |
904bb9bfb8 | ||
![]() |
b109713853 | ||
![]() |
30d02cb40c | ||
![]() |
ade9c0d73c | ||
![]() |
27b1776840 | ||
![]() |
45948827df | ||
![]() |
63c72ea42b | ||
![]() |
ada186769b | ||
![]() |
d96968b2ec | ||
![]() |
4dc923eec1 | ||
![]() |
93e4dfc356 | ||
![]() |
51b4f02665 | ||
![]() |
3c2e7a65dd | ||
![]() |
df049776cb | ||
![]() |
6bd1cf502c | ||
![]() |
8036edf175 | ||
![]() |
d8d18a77f7 | ||
![]() |
2f6a999989 | ||
![]() |
a5825a58c7 | ||
![]() |
d28b524bb5 | ||
![]() |
459104cbec | ||
![]() |
ead8607f27 | ||
![]() |
0e988f6c7a | ||
![]() |
0da1ea40dd | ||
![]() |
38eb7df787 | ||
![]() |
9874afd4fa | ||
![]() |
9fe10e570b | ||
![]() |
e5d9dab248 | ||
![]() |
c4a9336041 | ||
![]() |
fd9f1f0a7b | ||
![]() |
beab603091 | ||
![]() |
b261de4f2b | ||
![]() |
351ad17758 | ||
![]() |
576cc889e0 | ||
![]() |
dc315931a6 | ||
![]() |
897e6b9b63 | ||
![]() |
0607f310e9 | ||
![]() |
b1ff723986 | ||
![]() |
f27cbcfaad | ||
![]() |
6e476296fb | ||
![]() |
3190470386 | ||
![]() |
5e5727cb79 | ||
![]() |
be0b2fd0ae | ||
![]() |
a7b22f56d7 | ||
![]() |
8ef7c36289 | ||
![]() |
a6024d4549 | ||
![]() |
28ce494474 | ||
![]() |
c80f83da94 | ||
![]() |
80c9263003 | ||
![]() |
f47909ad55 | ||
![]() |
cb2ae4605b | ||
![]() |
bd209189a8 | ||
![]() |
e348e6da6b | ||
![]() |
3fe24cade9 | ||
![]() |
359e4c8270 | ||
![]() |
2b92aa0d89 | ||
![]() |
a7bd28a85a | ||
![]() |
6a72b2e511 | ||
![]() |
6bbcdf9ad0 | ||
![]() |
930bce2186 | ||
![]() |
2d20b72a9e | ||
![]() |
5b9f3f6bec | ||
![]() |
0983707698 | ||
![]() |
60e48e38c9 | ||
![]() |
44f18ea01c | ||
![]() |
73e492cc26 | ||
![]() |
52986a42a1 | ||
![]() |
f2fa807e61 | ||
![]() |
a72c5ff64e | ||
![]() |
b23ddded76 | ||
![]() |
4a8d098a12 | ||
![]() |
1ded573793 | ||
![]() |
b1cb0e0e15 | ||
![]() |
560f70cfa2 | ||
![]() |
13cbc0da3d | ||
![]() |
67a1ab4567 | ||
![]() |
f047a53f48 | ||
![]() |
bd9444ef06 | ||
![]() |
d194544c7e | ||
![]() |
76578ae2f6 | ||
![]() |
a589d8635d | ||
![]() |
ceab683b67 | ||
![]() |
09131c8695 | ||
![]() |
7c6521d5a8 | ||
![]() |
cebcd653fb | ||
![]() |
fe1f46c320 | ||
![]() |
07eff028fe | ||
![]() |
ec7bd83721 | ||
![]() |
bd871f3e24 | ||
![]() |
a12fd551ec | ||
![]() |
807f8d5188 | ||
![]() |
48077331e4 | ||
![]() |
afdd6083ce | ||
![]() |
e537d91dd7 | ||
![]() |
bccf8c49f2 | ||
![]() |
79937a5ca4 | ||
![]() |
527cd415d5 | ||
![]() |
4f0795381b | ||
![]() |
bae537155f | ||
![]() |
58571928a2 | ||
![]() |
e75134dab6 | ||
![]() |
b825c3fb62 | ||
![]() |
46d155be92 | ||
![]() |
a623cc2575 | ||
![]() |
75a0648412 | ||
![]() |
c8e40b2472 | ||
![]() |
ebb2fea5c9 | ||
![]() |
78b62e3c41 | ||
![]() |
fe21b428d9 | ||
![]() |
11f382ba39 | ||
![]() |
d72a123209 | ||
![]() |
eb24b7ee96 | ||
![]() |
1df5f246f7 | ||
![]() |
72870150c5 | ||
![]() |
b5f25f2ccc | ||
![]() |
6e7d14ab16 | ||
![]() |
f26fb8b11b | ||
![]() |
e5e885fff1 | ||
![]() |
ca0eaf43e2 | ||
![]() |
7e63a1d06f | ||
![]() |
5f3629f1bb | ||
![]() |
1c3001e568 | ||
![]() |
8351fec2ae | ||
![]() |
af0968d9c3 | ||
![]() |
22bdbc7c88 | ||
![]() |
372bdd6e4d | ||
![]() |
d48e94a24a | ||
![]() |
8114898013 | ||
![]() |
096d8aba14 | ||
![]() |
165f2cfb40 | ||
![]() |
fdfce55d1a | ||
![]() |
77e4a793ae | ||
![]() |
b643d25406 | ||
![]() |
6115e141c0 | ||
![]() |
8bf732ea9c | ||
![]() |
836ac46978 | ||
![]() |
20989f87cf | ||
![]() |
758be2c83d | ||
![]() |
c1b2069cf9 | ||
![]() |
2211243289 | ||
![]() |
63ea31adcc | ||
![]() |
d867c81809 | ||
![]() |
16c3070c3c | ||
![]() |
84acdf0615 | ||
![]() |
64f63946c5 | ||
![]() |
68ed937329 | ||
![]() |
929e7d0eb2 | ||
![]() |
a4e8ac339e | ||
![]() |
05b70ae0b8 | ||
![]() |
0728ae834e | ||
![]() |
299550113a | ||
![]() |
23cb582d5c | ||
![]() |
9f11701944 | ||
![]() |
48024c5caa | ||
![]() |
8c22a8e6e1 | ||
![]() |
fffa8a62d2 | ||
![]() |
167e7874d5 | ||
![]() |
b574f76f3d | ||
![]() |
948afc6a97 | ||
![]() |
84792b4195 | ||
![]() |
9981f5a2dc | ||
![]() |
cd435f23ad | ||
![]() |
53168a5b90 | ||
![]() |
d228f6ac29 | ||
![]() |
9eee6058a7 | ||
![]() |
03679821b4 | ||
![]() |
13643e30d2 | ||
![]() |
e70a3bd2e0 | ||
![]() |
2e6b69c8e3 | ||
![]() |
d4b9104abe | ||
![]() |
029606b722 | ||
![]() |
7e25d47d53 | ||
![]() |
57a39ec4ea | ||
![]() |
290e821402 | ||
![]() |
3cce6719e2 | ||
![]() |
d5b5cf1cba | ||
![]() |
68aa08ad21 | ||
![]() |
ec3c9e3f30 | ||
![]() |
e9aa965ec6 | ||
![]() |
c1499e06b5 | ||
![]() |
c61a65efed | ||
![]() |
fa0c0c2554 | ||
![]() |
513e8dba2b | ||
![]() |
d0fac1841d | ||
![]() |
1b543d8ed1 | ||
![]() |
0f2bcf594d | ||
![]() |
bf4928c807 | ||
![]() |
3bb7438afc | ||
![]() |
c76c605574 | ||
![]() |
ed06a79b1d | ||
![]() |
423da97087 | ||
![]() |
6739f1b39c | ||
![]() |
f6beed7bd6 | ||
![]() |
fc8aae50f6 | ||
![]() |
165f33d48a | ||
![]() |
18b00b6496 | ||
![]() |
9decea7e4f | ||
![]() |
7b6459d735 | ||
![]() |
e8c0a78b04 | ||
![]() |
b14e097995 | ||
![]() |
ba2051fd3c | ||
![]() |
eb6eb7d962 | ||
![]() |
88e3bfd142 | ||
![]() |
bf5f560770 | ||
![]() |
2a1f220113 | ||
![]() |
8fc0350df0 | ||
![]() |
91239039da | ||
![]() |
35676b08b1 | ||
![]() |
4bf0476b95 | ||
![]() |
faf7db6036 | ||
![]() |
fee8e853bb | ||
![]() |
2adcb92fab | ||
![]() |
e08b1e7f52 | ||
![]() |
055097f202 | ||
![]() |
c826233343 | ||
![]() |
2201c5aeea | ||
![]() |
3627082abb | ||
![]() |
2c45eb4e03 | ||
![]() |
9c4adddcb7 | ||
![]() |
3334230d89 | ||
![]() |
0d4854d5ff | ||
![]() |
80b3ea48a1 | ||
![]() |
b1d12cbb5d | ||
![]() |
9d19a104c5 | ||
![]() |
decc964402 | ||
![]() |
a6b9e88eb0 | ||
![]() |
9408d8355a | ||
![]() |
cc74772e26 | ||
![]() |
32b003c71c | ||
![]() |
24bdaf710b | ||
![]() |
d887a48551 | ||
![]() |
1b0d245baf | ||
![]() |
0a119b00eb | ||
![]() |
bfe9c3d937 | ||
![]() |
0946c6b4ca | ||
![]() |
ebac7ccddc | ||
![]() |
ff3ae6f685 | ||
![]() |
a279fae285 | ||
![]() |
8f649293de | ||
![]() |
26636bfdc8 | ||
![]() |
6ad2bfbed9 | ||
![]() |
c1531a66a4 | ||
![]() |
55c3a7b465 | ||
![]() |
430ea23620 | ||
![]() |
07f75ea500 | ||
![]() |
e74ceb4432 | ||
![]() |
d30ca01656 | ||
![]() |
1e844357c1 | ||
![]() |
76947efe5e | ||
![]() |
c6c46a0843 | ||
![]() |
bc31063963 | ||
![]() |
ab3d4920f4 | ||
![]() |
fa7deb0f66 | ||
![]() |
b08be54e65 | ||
![]() |
565ba530df | ||
![]() |
2ee66b1b18 | ||
![]() |
33344f75eb | ||
![]() |
f99f5faf8d | ||
![]() |
335e945d17 | ||
![]() |
2291014cc4 | ||
![]() |
a449af1ca4 | ||
![]() |
6e4091eedf | ||
![]() |
9ada328249 | ||
![]() |
64c475f830 | ||
![]() |
ea654d1de5 | ||
![]() |
af068aa6f6 | ||
![]() |
df893a25b4 | ||
![]() |
58472b048d | ||
![]() |
d5d518665b | ||
![]() |
36749ca6fa | ||
![]() |
0277d7bd7b | ||
![]() |
f9a959481c | ||
![]() |
ed4f6dea78 | ||
![]() |
f1302144cd | ||
![]() |
3784b83c76 | ||
![]() |
a2449b833a | ||
![]() |
36807dd6d6 | ||
![]() |
b0988d3c8b | ||
![]() |
6c48867062 | ||
![]() |
5525c39477 | ||
![]() |
0cb5c5bf45 | ||
![]() |
da9065aac7 | ||
![]() |
c1ab38403f | ||
![]() |
bab195f14b | ||
![]() |
c159cf9131 | ||
![]() |
4df1365ffa | ||
![]() |
190b3cce08 | ||
![]() |
0e37282fdb | ||
![]() |
d6737070e1 | ||
![]() |
010034e05a | ||
![]() |
76d335c773 | ||
![]() |
80a790e1ca | ||
![]() |
d842a10730 | ||
![]() |
9114f9bf5d | ||
![]() |
99c3d2c7b5 | ||
![]() |
8d3d4b2c71 | ||
![]() |
f1f00e0f5c | ||
![]() |
06fc639b74 | ||
![]() |
8a2d08589c | ||
![]() |
8fcd08fc08 | ||
![]() |
347360b273 | ||
![]() |
016035badf | ||
![]() |
5f22034094 | ||
![]() |
c7cab90d5d | ||
![]() |
38b8fc1f50 | ||
![]() |
30c57f1a3f | ||
![]() |
e04f3f41da | ||
![]() |
8989e65c3f | ||
![]() |
237adec312 | ||
![]() |
d9d3c3461e | ||
![]() |
ff489be529 | ||
![]() |
e21e025519 | ||
![]() |
2c391ece5f | ||
![]() |
302a95e93c | ||
![]() |
9fb9c5dc79 | ||
![]() |
7b06daa5b2 | ||
![]() |
2cfa7d4dd5 | ||
![]() |
9c9bc6a64d | ||
![]() |
5f0d1848d6 | ||
![]() |
08f1890b0c | ||
![]() |
51a9f8f311 | ||
![]() |
603430c3aa | ||
![]() |
8e8d9a3c8f | ||
![]() |
54482b133c | ||
![]() |
8304ada17c | ||
![]() |
b0c59a558a | ||
![]() |
c2b4d11ebf | ||
![]() |
92e8e1cd86 | ||
![]() |
02db53c928 | ||
![]() |
d08e16b45e | ||
![]() |
cdfec1c1c6 | ||
![]() |
7ff88e3fc2 | ||
![]() |
f2b5c915bc | ||
![]() |
1f32466782 | ||
![]() |
831655fd57 | ||
![]() |
f8b98a725f | ||
![]() |
4c63401607 | ||
![]() |
734a99c781 | ||
![]() |
8cdf83393e | ||
![]() |
71422ead8e | ||
![]() |
5e195930c9 | ||
![]() |
53eb1628f5 | ||
![]() |
264367197f | ||
![]() |
4503c994f8 | ||
![]() |
28323814ed | ||
![]() |
80015e78c0 | ||
![]() |
9a1b4caa55 | ||
![]() |
100045c00f | ||
![]() |
c234b3ddda | ||
![]() |
8f68fa1054 | ||
![]() |
8d06e6f223 | ||
![]() |
fb2d03fdba | ||
![]() |
a6923bfef0 | ||
![]() |
297ee3d1ce | ||
![]() |
e321d18687 | ||
![]() |
91d1296af9 | ||
![]() |
ce6f367607 | ||
![]() |
97eb451da1 | ||
![]() |
ab97a37394 | ||
![]() |
bfa16ee0c7 | ||
![]() |
5e3a98dd97 | ||
![]() |
13c5d8a96e | ||
![]() |
59e19cbe5f | ||
![]() |
5b5676d2d0 | ||
![]() |
db7f9e7c49 | ||
![]() |
219f2c8f02 | ||
![]() |
7f2323ddc5 | ||
![]() |
782dcf272f | ||
![]() |
62f0f62c97 | ||
![]() |
3e8b5196b2 | ||
![]() |
378d71ff13 | ||
![]() |
cccf8094a0 | ||
![]() |
07fba86f71 | ||
![]() |
2c103cc63a | ||
![]() |
7d04b80385 | ||
![]() |
c9d7e02d34 | ||
![]() |
b8b27ae821 | ||
![]() |
efad706bde | ||
![]() |
c267d0c752 | ||
![]() |
94707b31d4 | ||
![]() |
c1005f2d1f | ||
![]() |
869926a2b4 | ||
![]() |
877aaafb2c | ||
![]() |
b62531154c | ||
![]() |
4d241b788b | ||
![]() |
922b7a8715 | ||
![]() |
6f499ddeab | ||
![]() |
da5e23e912 | ||
![]() |
485b98e5bc | ||
![]() |
039fed73c7 | ||
![]() |
694c3fb22a | ||
![]() |
ca9dd3a8d8 | ||
![]() |
e5a0400721 | ||
![]() |
12d4129aca | ||
![]() |
57078c4eb7 | ||
![]() |
374104d7c6 | ||
![]() |
81b1ce0338 | ||
![]() |
9a9989fe11 | ||
![]() |
c7e6bb9c56 | ||
![]() |
9c2ad49026 | ||
![]() |
24a11e4404 | ||
![]() |
24ebaf7048 | ||
![]() |
3c7613c2ec | ||
![]() |
1ad44fda5e | ||
![]() |
9d50ee7052 | ||
![]() |
afd1a9021c | ||
![]() |
06b7efd77c | ||
![]() |
faa451d75e | ||
![]() |
c6b9749026 | ||
![]() |
af629b7131 | ||
![]() |
a8d6f65c7a | ||
![]() |
781d603600 | ||
![]() |
c3a837fdd7 | ||
![]() |
8ceec1f950 | ||
![]() |
263064e994 | ||
![]() |
46938d56d1 | ||
![]() |
c2e04296f9 | ||
![]() |
1f384d8987 | ||
![]() |
94e8ef7b6d | ||
![]() |
da982a3dc3 | ||
![]() |
1ef03e4552 | ||
![]() |
291fb3fd79 | ||
![]() |
29fe94440b | ||
![]() |
1bcc6a5ace | ||
![]() |
7d65b2603e | ||
![]() |
7379ee7c2a | ||
![]() |
06d0daa4e5 | ||
![]() |
a0cd1dda2a | ||
![]() |
d5ebd982f4 | ||
![]() |
5f5b2c1b1b | ||
![]() |
da7d8c6aed | ||
![]() |
df9f12568e | ||
![]() |
ff3e7c3339 | ||
![]() |
67aa5d9a08 | ||
![]() |
47d0ca2843 | ||
![]() |
681fa20f35 | ||
![]() |
5daf66222f | ||
![]() |
9fecd16f2c | ||
![]() |
460de107ed | ||
![]() |
957b23e550 | ||
![]() |
e1fe49a694 | ||
![]() |
3116867c60 | ||
![]() |
fd91907e18 | ||
![]() |
6b1de3bc1d | ||
![]() |
1014fd1741 | ||
![]() |
8d2171df26 | ||
![]() |
4220e99d89 | ||
![]() |
7c892a50c1 | ||
![]() |
c97d9ce79c | ||
![]() |
29e214cf5a | ||
![]() |
d1c86c1c46 | ||
![]() |
dc61835567 | ||
![]() |
7f002f3ce6 | ||
![]() |
2041bca678 | ||
![]() |
ca91280807 | ||
![]() |
9569977676 | ||
![]() |
b7df6e4a90 | ||
![]() |
5750e3d49d | ||
![]() |
367c87c37d | ||
![]() |
849cdd03d5 | ||
![]() |
480ff7cbed | ||
![]() |
43f60a9d8b | ||
![]() |
b34b8a9dcd | ||
![]() |
8927330c3b | ||
![]() |
8042db88e9 | ||
![]() |
6e3caa5ae4 | ||
![]() |
9a36ff4d8c | ||
![]() |
d3d21e59ee | ||
![]() |
6f817df889 | ||
![]() |
5bdae673af | ||
![]() |
0694d92a08 | ||
![]() |
1dc2680ebf | ||
![]() |
4604f876b0 | ||
![]() |
7dc237ba59 | ||
![]() |
1fe6e24b64 | ||
![]() |
851c49fcc3 | ||
![]() |
cddf3c783b | ||
![]() |
30f50bac68 | ||
![]() |
9dabf99d17 | ||
![]() |
05ed330d79 | ||
![]() |
abce6e6a77 | ||
![]() |
5643f97c3b | ||
![]() |
5037ad1a4e | ||
![]() |
8c1d23d218 | ||
![]() |
c658e3ed5a | ||
![]() |
159649db74 | ||
![]() |
8919c2e948 | ||
![]() |
9d32c77035 | ||
![]() |
2ed26f609c | ||
![]() |
706a38b92e | ||
![]() |
7b80f1f711 | ||
![]() |
9e88add2c3 | ||
![]() |
aff21f4466 | ||
![]() |
a16e5455ba | ||
![]() |
f6b066be16 | ||
![]() |
93d0436db7 | ||
![]() |
757f020e23 | ||
![]() |
eaf576ed7f | ||
![]() |
5cf3b08e15 | ||
![]() |
d2fff8ac30 | ||
![]() |
84e465aac6 | ||
![]() |
bd556a7405 | ||
![]() |
45f47fc3e6 | ||
![]() |
19c61374ff | ||
![]() |
4f0de69cd2 | ||
![]() |
8b27a8e305 | ||
![]() |
4fbf33a0ca | ||
![]() |
add5476964 | ||
![]() |
0880d78077 | ||
![]() |
6145abd4ad | ||
![]() |
b39d9b0222 | ||
![]() |
a9dcc25b20 | ||
![]() |
b1b79bfd14 | ||
![]() |
a9906226a7 | ||
![]() |
55d12404aa | ||
![]() |
3546bf99b1 | ||
![]() |
26054a7ead | ||
![]() |
25163c06a2 | ||
![]() |
8896244030 | ||
![]() |
94d88bb00c | ||
![]() |
dfadb99e4e | ||
![]() |
2fb553bcbb | ||
![]() |
f2fc0417a6 | ||
![]() |
aec6cbc955 | ||
![]() |
856d3e8786 | ||
![]() |
5d83cb46a8 | ||
![]() |
882c8313f3 | ||
![]() |
cc4c9e96b2 | ||
![]() |
47c19ceff6 | ||
![]() |
df781bfe27 | ||
![]() |
1dcfee8fb5 | ||
![]() |
1a1f971fe8 | ||
![]() |
ef80064ed8 | ||
![]() |
799d652e48 | ||
![]() |
f8a856bad7 | ||
![]() |
574929b051 | ||
![]() |
cf078b40a7 | ||
![]() |
1dae7b1a3d | ||
![]() |
58fe9e4b1e | ||
![]() |
d56fcd47e5 | ||
![]() |
cc089162cf | ||
![]() |
5988c7b612 | ||
![]() |
35bb541f32 | ||
![]() |
6673524c8f | ||
![]() |
6c12d7e01f | ||
![]() |
35d22698eb | ||
![]() |
cba14eb5c4 | ||
![]() |
8590a2bd70 | ||
![]() |
5ae496e492 | ||
![]() |
318ed3bf30 | ||
![]() |
99fd840b6d | ||
![]() |
ab16cc614f | ||
![]() |
cda910854e | ||
![]() |
0801061ee2 | ||
![]() |
0ae97085b6 | ||
![]() |
0be3c8466d | ||
![]() |
81b4597b23 | ||
![]() |
634a3e26fd | ||
![]() |
f37513c1b7 | ||
![]() |
7d10aad57f | ||
![]() |
32c107b797 | ||
![]() |
417aae61be | ||
![]() |
79ebcad196 | ||
![]() |
35ffda3d4c | ||
![]() |
1c6d9fafa1 | ||
![]() |
d568d0f45c | ||
![]() |
4c4e30945a | ||
![]() |
87126e6870 | ||
![]() |
b765c0be66 | ||
![]() |
f8c0f3c60d | ||
![]() |
bdaeb3212d | ||
![]() |
e197bb71d9 | ||
![]() |
6fd9137c67 | ||
![]() |
000799fce0 | ||
![]() |
2334d48b35 | ||
![]() |
46cab83cd7 | ||
![]() |
eca3fa6e9a | ||
![]() |
e6c3c1f522 | ||
![]() |
5cc8b452d7 | ||
![]() |
c66dcfea3d | ||
![]() |
4e4b603364 | ||
![]() |
1bc0dc4c1a | ||
![]() |
00f9c54eac | ||
![]() |
2e49f20102 | ||
![]() |
3cd5342d3f | ||
![]() |
72a5952f10 | ||
![]() |
b02b1ad2ff | ||
![]() |
ec44c3be73 | ||
![]() |
9759853269 | ||
![]() |
304a8b7dcf | ||
![]() |
db7f3200b8 | ||
![]() |
df6e679f13 | ||
![]() |
1cfbef2d93 | ||
![]() |
ea7c3e3176 | ||
![]() |
3b3d4cc08a | ||
![]() |
b418f50319 | ||
![]() |
c6052e805f | ||
![]() |
65a951111c | ||
![]() |
16fef70909 | ||
![]() |
89596b7c04 | ||
![]() |
30376fd77d | ||
![]() |
8ee8a0647e | ||
![]() |
ecccc60027 | ||
![]() |
d7c148c3b4 | ||
![]() |
5c31e17e4f | ||
![]() |
b05215d8aa | ||
![]() |
35911a3dcc | ||
![]() |
2968aca834 | ||
![]() |
cab47b696d | ||
![]() |
b56c17d216 | ||
![]() |
582b90b235 | ||
![]() |
f7e3c02fb8 | ||
![]() |
074e84cb81 | ||
![]() |
a93f47ff31 | ||
![]() |
fc7054c568 | ||
![]() |
3fa666070b | ||
![]() |
7571fa1ec9 | ||
![]() |
a6351b0bef | ||
![]() |
346d47b64c | ||
![]() |
839bcb513c | ||
![]() |
4426f9740f | ||
![]() |
c90f13cf77 | ||
![]() |
326b4a7997 | ||
![]() |
d23f072597 | ||
![]() |
b4b0c73acb | ||
![]() |
339b1d5de0 | ||
![]() |
baa1456538 | ||
![]() |
3fcb9fce41 | ||
![]() |
4e2e832bdf | ||
![]() |
8f1578faec | ||
![]() |
7516cd428c | ||
![]() |
5757bca9ee | ||
![]() |
b0c73ac1b0 | ||
![]() |
39401aca02 | ||
![]() |
d598014db8 | ||
![]() |
dd94e03a84 | ||
![]() |
6f889d98ba | ||
![]() |
ed4d16c976 | ||
![]() |
aa1e62aa52 | ||
![]() |
b3c1289a4a | ||
![]() |
072a67bf99 | ||
![]() |
08226655d5 | ||
![]() |
253aca2c32 | ||
![]() |
3c41b209d3 | ||
![]() |
4d414fa9c9 | ||
![]() |
767010fb52 | ||
![]() |
c5a3a506ca | ||
![]() |
4abfe7a302 | ||
![]() |
294c242239 | ||
![]() |
70d2884005 | ||
![]() |
ade32fa227 | ||
![]() |
951508fd2b | ||
![]() |
4fbe2bdec0 | ||
![]() |
845067d7e8 | ||
![]() |
16157e286b | ||
![]() |
10b59c99d0 | ||
![]() |
00b60265ee | ||
![]() |
8679f0573f | ||
![]() |
52a23d38cb | ||
![]() |
e97de1706a | ||
![]() |
cd7bffe0b2 | ||
![]() |
6af31a3e48 | ||
![]() |
a5dd081648 | ||
![]() |
d62715673a | ||
![]() |
b2472be6e6 | ||
![]() |
4a3020be51 | ||
![]() |
037bdc2561 | ||
![]() |
8c6a0a50cd | ||
![]() |
33b678ae2e | ||
![]() |
63e482ff61 | ||
![]() |
3d6707936e | ||
![]() |
34349a4452 | ||
![]() |
0cb7b4e52b | ||
![]() |
affcaba0b1 | ||
![]() |
4e77d499db | ||
![]() |
91b5231cf1 |
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
Checks: '-*,modernize-use-nullptr,performance-unnecessary-value-param'
|
||||
WarningsAsErrors: true
|
||||
...
|
|
@ -13,7 +13,3 @@ indent_size = 4
|
|||
[*.{cpp,hpp}]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.lua]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
|
4
.gitattributes
vendored
|
@ -2,8 +2,8 @@
|
|||
/attic export-ignore
|
||||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
/.github export-ignore
|
||||
/changelog_entries export-ignore
|
||||
.travis.yml export-ignore
|
||||
RELEASE_NOTES export-ignore
|
||||
|
||||
# help github's language detection and syntax highlighting
|
||||
*.cfg linguist-language=INI
|
||||
|
|
36
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve the game
|
||||
title: ''
|
||||
labels: 'bug'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### Game and System Information
|
||||
- What version of the game are you running?
|
||||
- Where did you download it from? (Steam, Mac App Store, our website, built from source, etc.)
|
||||
- If you're using a custom build, what compiler did you use, and what commit did you build at?
|
||||
- What OS are you running?
|
||||
|
||||
### Describe the bug
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
### To Reproduce
|
||||
Steps to reproduce the behavior:
|
||||
|
||||
1. First..
|
||||
2. Then...
|
||||
3. Lastly...
|
||||
|
||||
### Expected behavior
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
### Screenshots
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
### Savefiles
|
||||
If applicable, attach savefiles to help explain your problem. (To find savefiles, start Wesnoth, click on the `i` button at the bottom left corner of the title screen, and open the `Saved games` directory.)
|
||||
|
||||
### Additional context
|
||||
Add any other context (compiler logs, console output, etc) about the problem here.
|
46
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
@ -1,46 +0,0 @@
|
|||
name: Bug Report
|
||||
description: Create a bug report to help us improve the game.
|
||||
labels: ['Bug']
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: info
|
||||
attributes:
|
||||
label: Game and System Information
|
||||
description: |
|
||||
- What version of the game are you running? (If you built wesnoth yourself, mention the exact commit)
|
||||
- What OS are you running?
|
||||
value: |
|
||||
- **Version:**
|
||||
- **OS:**
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description of the bug
|
||||
description: A clear and concise description of what the bug is.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: to_reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce the behavior
|
||||
placeholder: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
- type: textarea
|
||||
id: expectation
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: |
|
||||
A clear and concise description of what you expected to happen. If applicable, add screenshots or savefiles to help explain your problem.
|
||||
To find savefiles, start Wesnoth, click on the `i` button at the bottom left corner of the title screen, and open the `Saved games` directory.
|
||||
|
||||
- type: textarea
|
||||
id: more_info
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context (compiler logs, console output, etc) about the problem here.
|
21
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
name: Feature Request
|
||||
about: Request a new feature to enhance the game
|
||||
title: ''
|
||||
labels: 'enhancement'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### Game and System Information
|
||||
- What version of the game are you running?
|
||||
- Where did you download it from? (Steam, Mac App Store, our website, built from source, etc.)
|
||||
- If you're using a custom build, what compiler did you use, and what commit did you build at?
|
||||
- What OS are you running?
|
||||
|
||||
### Describe the desired feature
|
||||
Try to explain the desired end result, rather than speculating about how the feature could be implemented
|
||||
|
||||
### Screenshots
|
||||
If applicable, add screenshots or mockups to help explain your request.
|
||||
|
14
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
|
@ -1,14 +0,0 @@
|
|||
name: Feature Request
|
||||
description: Request a new feature to enhance the game.
|
||||
labels: ['Enhancement']
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Describe the desired feature
|
||||
description: |
|
||||
Try to explain the desired end result, rather than speculating about how the feature could be implemented.
|
||||
If applicable, add screenshots or mockups to help explain your request.
|
||||
validations:
|
||||
required: true
|
31
.github/ISSUE_TEMPLATE/text-typos-or-improvements.md
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
name: Text Typos or Improvements
|
||||
about: Any typo fixes or improvement suggestions for campaign dialog, unit descriptions,
|
||||
or other game text.
|
||||
title: ''
|
||||
labels: Prose
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Note: The house style of Wesnoth uses a good many words and constructions that
|
||||
are archaic, poetic, or dialectal. If you speak modern English as a second
|
||||
language you may incorrectly read these as errors. Please see
|
||||
[NotSpellingMistakes](https://wiki.wesnoth.org/NotSpellingMistakes) for a list
|
||||
of things you will encounter that may look like spelling or usage errors but
|
||||
are not.
|
||||
|
||||
Note that the mainline campaigns are now using correct typography,
|
||||
including sexed quotes and en and em dashes. These will appear as three byte
|
||||
sequences if you are not using a viewer that supports UTF-8.
|
||||
|
||||
### Text Issues: Typos, grammar mistakes, suggested improvemetns
|
||||
|
||||
* Is the text in English? If not, what language is it in?
|
||||
|
||||
* What campaign does the text appear in? If it's not in a campaign, say where it is:
|
||||
|
||||
* Please quote the text verbatim. You can use `**bold**` to point out the mistaken part:
|
||||
|
||||
* _(optional)_ What do you propose to change the text to?
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
name: Text Typos or Improvements
|
||||
description: Any typo fixes or improvement suggestions for campaign dialog, unit descriptions, or other game text.
|
||||
labels: ['Prose']
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
**Note:** The house style of Wesnoth uses a good many words and constructions that are archaic, poetic,
|
||||
or dialectal. If you speak modern English as a second language you may incorrectly read these as errors.
|
||||
Please see [NotSpellingMistakes](https://wiki.wesnoth.org/NotSpellingMistakes) for a list of things you
|
||||
will encounter that may look like spelling or usage errors but are not.
|
||||
|
||||
Note that the mainline campaigns are now using correct typography, including sexed quotes and en and em
|
||||
dashes. These will appear as three byte sequences if you are not using a viewer that supports UTF-8.
|
||||
|
||||
- type: input
|
||||
id: language
|
||||
attributes:
|
||||
label: Language
|
||||
description: What language does the typo appear in?
|
||||
|
||||
- type: input
|
||||
id: location
|
||||
attributes:
|
||||
label: Source
|
||||
description: Where does the typo appear? If part of a campaign, specify the scenario.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: original_text
|
||||
attributes:
|
||||
label: Original Text
|
||||
description: Quote the text verbatim. You can use `**bold**` to highlight the issue.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: new_text
|
||||
attributes:
|
||||
label: Proposed Change
|
104
.github/labeler.yml
vendored
|
@ -1,13 +1,3 @@
|
|||
Achievements:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- src/achievements.hpp
|
||||
- src/achievements.cpp
|
||||
- src/gui/dialogs/achievements_dialog.hpp
|
||||
- src/gui/dialogs/achievements_dialog.cpp
|
||||
- data/achievements.cfg
|
||||
- data/campaigns/*/achievements.cfg
|
||||
|
||||
Add-ons:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
|
@ -44,100 +34,10 @@ Building:
|
|||
- src/SConscript
|
||||
- src/SConstruct
|
||||
|
||||
Campaign AToTB:
|
||||
Campaign:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Two_Brothers/**
|
||||
|
||||
Campaign DW:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Dead_Water/**
|
||||
|
||||
Campaign DM:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Delfadors_Memoirs/**
|
||||
|
||||
Campaign DiD:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Descent_Into_Darkness/**
|
||||
|
||||
Campaign EI:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Eastern_Invasion/**
|
||||
|
||||
Campaign HttT:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Heir_To_The_Throne/**
|
||||
|
||||
Campaign LoW:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Legend_of_Wesmere/**
|
||||
|
||||
Campaign L:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Liberty/**
|
||||
|
||||
Campaign NR:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Northern_Rebirth/**
|
||||
|
||||
Campaign SoF:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Sceptre_of_Fire/**
|
||||
|
||||
Campaign SotA:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Secrets_of_the_Ancients/**
|
||||
|
||||
Campaign SotBE:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Son_Of_The_Black_Eye/**
|
||||
|
||||
Campaign THoT:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/The_Hammer_of_Thursagan/**
|
||||
|
||||
Campaign TRoW:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/The_Rise_Of_Wesnoth/**
|
||||
|
||||
Campaign TSG:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/The_South_Guard/**
|
||||
|
||||
Campaign Tutorial:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/tutorial/**
|
||||
|
||||
Campaign UtBS:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Under_the_Burning_Suns/**
|
||||
|
||||
Campaign WoF:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/Winds_of_Fate/**
|
||||
|
||||
Campaign WC:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/World_Conquest/**
|
||||
- data/campaigns/**/*
|
||||
|
||||
CMake:
|
||||
- changed-files:
|
||||
|
|
434
.github/workflows/ci-main.yml
vendored
|
@ -2,243 +2,160 @@ name: CI
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ 1.16 ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ 1.16 ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
checks: # checks that don't need a wesnoth binary
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: wesnoth/wesnoth:2404-master
|
||||
options: --tty # docker create options
|
||||
env:
|
||||
CLICOLOR_FORCE: 1
|
||||
# run after all other jobs have completed to check overall build status
|
||||
discord-notification:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
name: Discord Notification
|
||||
|
||||
needs: [ubuntu-2004-scons-gcc-release-lto, ubuntu-2004-cmake-clang-debug, steam-runtime, mingw, flatpak, translations, macos-intel]
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- uses: technote-space/workflow-conclusion-action@v3
|
||||
- uses: rjstone/discord-webhook-notify@v1
|
||||
if: env.WORKFLOW_CONCLUSION == 'failure' && github.event_name == 'push'
|
||||
with:
|
||||
severity: error
|
||||
webhookUrl: ${{ secrets.DISCORD_CI_WEBHOOK }}
|
||||
description: |-
|
||||
pusher: ${{ github.actor }}
|
||||
commit: ${{ github.event.head_commit.message }}
|
||||
commit url: ${{ github.event.head_commit.url }}
|
||||
|
||||
ubuntu-2004-scons-gcc-release-lto:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set git safe directory
|
||||
if: success() || failure()
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
- name: Check for invalid characters
|
||||
if: success() || failure()
|
||||
run: |
|
||||
./utils/CI/check_utf8.sh
|
||||
./utils/CI/utf8_bom_dog.sh
|
||||
- name: Whitespace and WML indentation check
|
||||
if: success() || failure()
|
||||
run: ./utils/CI/fix_whitespace.sh; git status; git diff --exit-code
|
||||
- name: WML missing images check
|
||||
if: success() || failure()
|
||||
run: utils/CI/check_wml_images.sh
|
||||
- name: Run luacheck
|
||||
if: success() || failure()
|
||||
run: luacheck .
|
||||
- name: Doxygen check
|
||||
if: success() || failure()
|
||||
run: doxygen doc/doxygen/Doxyfile
|
||||
|
||||
copyright: # check takes a bit longer and does not need to run in docker (sound/music only)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- { uses: actions/checkout@v4, with: { fetch-depth: 50 } }
|
||||
|
||||
- name: Sound/Music copyright check
|
||||
run: ./update_copyrights
|
||||
|
||||
ubuntu:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
# the check for WML tests below may need to be adjusted if configurations are changed
|
||||
- { cfg: debug, tool: scons, cc: gcc, cxx: g++, std: 17, lto: false, sys_lua: false }
|
||||
- { cfg: release, tool: cmake, cc: gcc, cxx: g++, std: 20, lto: true, sys_lua: false }
|
||||
- { cfg: release, tool: cmake, cc: clang, cxx: clang++, std: 17, lto: true, sys_lua: true }
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: wesnoth/wesnoth:2404-master
|
||||
options: --tty # docker create options
|
||||
env:
|
||||
TOOL: ${{ matrix.tool }}
|
||||
CFG: ${{ matrix.cfg }}
|
||||
CC: ${{ matrix.cc }}
|
||||
CXX: ${{ matrix.cxx }}
|
||||
CXX_STD: ${{ matrix.std }}
|
||||
LTO: ${{ matrix.lto }}
|
||||
SYS_LUA: ${{ matrix.sys_lua }}
|
||||
CLICOLOR_FORCE: 1
|
||||
SDL_VIDEODRIVER: dummy
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
|
||||
# 1) wesnothd and campaignd should be buildable without SDL2 being present
|
||||
# 2) boost is installed via apt as well as built and installed into /usr/local (for _GLIBCXX_DEBUG support in boost program options)
|
||||
# 3) mariadbpp currently has a deprecation warning that causes strict builds to fail
|
||||
# scons doesn't build it for the wesnoth client and the boost tests, but cmake apparently does
|
||||
- name: Build wesnoth, wesnothd, campaignd and unit tests
|
||||
id: build # needed to check step outcome
|
||||
run: |
|
||||
case $TOOL in
|
||||
scons)
|
||||
build() {
|
||||
ldconfig
|
||||
scons "$@" build="$CFG" ctool="$CC" cxxtool="$CXX" cxx_std="$CXX_STD" \
|
||||
extra_flags_config="-pipe" forum_user_handler=true \
|
||||
nls=false enable_lto="$LTO" system_lua="$SYS_LUA" force_color=true \
|
||||
jobs=2 --debug=time glibcxx_debug=true glibcxx_assertions=true compile_db=true
|
||||
}
|
||||
build strict=true wesnoth boost_unit_tests
|
||||
|
||||
build cdb
|
||||
# disable all warnings since we have coverage on them in a standard build, and clang-tidy
|
||||
# triggers false positive compiler warnings that clang itself won't
|
||||
run-clang-tidy -quiet -use-color -j 2 -extra-arg="-w" -warnings-as-errors='*' '^(?!.*src/modules/|.*build/)'
|
||||
|
||||
apt remove -y -qq libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev
|
||||
|
||||
build strict=false wesnothd campaignd
|
||||
;;
|
||||
cmake)
|
||||
build() {
|
||||
ldconfig
|
||||
cmake "$@" -DCMAKE_BUILD_TYPE="$CFG" -DCXX_STD="$CXX_STD" \
|
||||
-DEXTRA_FLAGS_CONFIG="-pipe" -DENABLE_MYSQL=true \
|
||||
-DENABLE_NLS=false -DENABLE_LTO="$LTO" -DFORCE_COLOR_OUTPUT=true -DLTO_JOBS=2 \
|
||||
-DENABLE_SYSTEM_LUA="$SYS_LUA -DCLANG_TIDY=true" .
|
||||
}
|
||||
rm -R /usr/local/lib/cmake
|
||||
rm /usr/local/lib/libboost*
|
||||
rm -R /usr/local/include/boost
|
||||
build -DENABLE_GAME=true -DENABLE_SERVER=false -DENABLE_CAMPAIGN_SERVER=false -DENABLE_TESTS=true -DENABLE_STRICT_COMPILATION=false
|
||||
make conftests
|
||||
make VERBOSE=1 -j2
|
||||
|
||||
apt remove -y -qq libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev
|
||||
|
||||
build -DENABLE_GAME=false -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true -DENABLE_TESTS=false -DENABLE_STRICT_COMPILATION=false
|
||||
make VERBOSE=1 -j2
|
||||
;;
|
||||
esac
|
||||
- name: Check path options
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
run: |
|
||||
./wesnoth --version
|
||||
for opt in data userdata usercache
|
||||
do
|
||||
output=$(./wesnoth --nobanner --"$opt"-path)
|
||||
if [ "$output" = "" ]; then printf 'option --%s-path prints nothing to stdout!\n' "$opt" >&2; exit 1; fi
|
||||
printf '%s-path: %s\n' "$opt" "$output"
|
||||
done
|
||||
- name: WML validation
|
||||
# only run on release builds (takes ~10 times as long on debug); since there are multiple release builds
|
||||
# but running the following tests multiple times doesn't make much sense use cc==clang as the check
|
||||
if: matrix.cc == 'clang' && (success() || steps.build.outcome == 'success')
|
||||
run: ./utils/CI/schema_validation.sh
|
||||
- name: Run WML tests
|
||||
# only run on release builds (takes ~6 times as long on debug)
|
||||
if: matrix.cc == 'clang' && (success() || steps.build.outcome == 'success')
|
||||
run: ./run_wml_tests -v -v -g -c -t 20 -bt 1000 -a=--userdata-dir=ud
|
||||
- name: Upload userdata files from WML unit tests (logs, replays)
|
||||
if: matrix.cc == 'clang' && (success() || failure())
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: WMLTest-userdata-Linux
|
||||
path: ud
|
||||
- name: Run play tests
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
run: ./utils/CI/play_test_executor.sh
|
||||
- name: Run MP tests
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
run: ./utils/CI/mp_test_executor.sh
|
||||
- name: Run unit tests
|
||||
if: success() || steps.build.outcome == 'success'
|
||||
run: ./run_boost_tests
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Ubuntu 20.04
|
||||
run: |
|
||||
export BRANCH=master
|
||||
export IMAGE=2004
|
||||
export NLS=false
|
||||
export TOOL=scons
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
export CXX_STD=17
|
||||
export CFG=release
|
||||
export LTO=true
|
||||
export CACHE_DIR=/home/wesnoth-CI/build
|
||||
./.github/workflows/ci-scripts/ubuntu.sh
|
||||
|
||||
ubuntu-2004-cmake-clang-debug:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Ubuntu 20.04
|
||||
run: |
|
||||
export BRANCH=master
|
||||
export IMAGE=2004
|
||||
export NLS=false
|
||||
export TOOL=cmake
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
export CXX_STD=17
|
||||
export CFG=debug
|
||||
export LTO=false
|
||||
export CACHE_DIR=/home/wesnoth-CI/build
|
||||
./.github/workflows/ci-scripts/ubuntu.sh
|
||||
|
||||
steam-runtime:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Steam Runtime
|
||||
run: |
|
||||
version=$(sed -n 's/#define VERSION "\(.*\)"/\1/p' src/wesconfig.h)
|
||||
cd utils/dockerbuilds && ./make_steam_build
|
||||
tar -cf "steambuild-$version.tar" steambuild
|
||||
export BRANCH=master
|
||||
export IMAGE=steamrt
|
||||
export NLS=false
|
||||
export TOOL=scons
|
||||
export CC=gcc-9
|
||||
export CXX=g++-9
|
||||
export CXX_STD=17
|
||||
export CFG=release
|
||||
export LTO=false
|
||||
export CACHE_DIR=/home/wesnoth-CI/build
|
||||
./.github/workflows/ci-scripts/ubuntu.sh
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Steam-Linux
|
||||
path: utils/dockerbuilds/steambuild-*.tar
|
||||
path: |
|
||||
~/steambuild-*.tar
|
||||
|
||||
mingw:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
- name: MinGW Crosscompile
|
||||
run: |
|
||||
version=$(sed -n 's/#define VERSION "\(.*\)"/\1/p' src/wesconfig.h)
|
||||
git archive --format=tar HEAD > "wesnoth-$version.tar"
|
||||
tar -rf "wesnoth-$version.tar" src/modules/
|
||||
bzip2 "wesnoth-$version.tar"
|
||||
export BRANCH=master
|
||||
export IMAGE=mingw
|
||||
export NLS=false
|
||||
export TOOL=scons
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
export CXX_STD=17
|
||||
export CFG=release
|
||||
export LTO=false
|
||||
export CACHE_DIR=/home/wesnoth-CI/build
|
||||
./.github/workflows/ci-scripts/ubuntu.sh
|
||||
|
||||
cd utils/dockerbuilds && ./make_mingw_build
|
||||
mv mingwbuild/wesnoth*-win64.exe "wesnoth-$version-win64.exe"
|
||||
|
||||
- name: Upload Source
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Source
|
||||
path: wesnoth-*.tar.bz2
|
||||
|
||||
- name: Upload Windows-Installer
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Windows-Installer
|
||||
path: utils/dockerbuilds/wesnoth-*-win64.exe
|
||||
name: Source-And-Windows-Installer
|
||||
path: |
|
||||
~/wesnoth-*.tar.bz2
|
||||
~/wesnoth-*-win64.exe
|
||||
|
||||
flatpak:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: wesnoth/wesnoth:flatpak-master
|
||||
options: --tty --cap-add=ALL --privileged # docker create options
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive", fetch-depth: 500, fetch-tags: true } }
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Flatpak
|
||||
run: |
|
||||
# write to an ignored filename so the build is not marked as modified
|
||||
jq '.modules |= map(select(.name == "wesnoth").sources[0]={type:"dir",path:"."})' packaging/flatpak/org.wesnoth.Wesnoth.json > wesnoth-manifest.json
|
||||
git config --global --add safe.directory "$PWD"
|
||||
branch=ci-$(git describe || git log -n 1 --format=%h) # if git describe fails fall back to the commit hash
|
||||
flatpak-builder --force-clean --default-branch="$branch" --disable-rofiles-fuse --jobs=2 wesnoth-app wesnoth-manifest.json
|
||||
flatpak build-export export wesnoth-app "$branch"
|
||||
flatpak build-bundle export wesnoth.flatpak org.wesnoth.Wesnoth "$branch" --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
- name: Upload flatpak bundle
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Flatpak-Bundle
|
||||
path: wesnoth.flatpak
|
||||
export BRANCH=master
|
||||
export IMAGE=flatpak
|
||||
export NLS=false
|
||||
export TOOL=scons
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
export CXX_STD=17
|
||||
export CFG=release
|
||||
export LTO=false
|
||||
export CACHE_DIR=/home/wesnoth-CI/build
|
||||
./.github/workflows/ci-scripts/ubuntu.sh
|
||||
|
||||
translations:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: wesnoth/wesnoth:2404-master
|
||||
env:
|
||||
LANGUAGE: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
LC_ALL: en_US.UTF-8
|
||||
CLICOLOR_FORCE: 1
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
@ -247,26 +164,27 @@ jobs:
|
|||
|
||||
- name: Translations
|
||||
run: |
|
||||
cmake -DENABLE_NLS=true -DENABLE_GAME=false -DENABLE_SERVER=false -DENABLE_CAMPAIGN_SERVER=false -DENABLE_TESTS=false -DENABLE_POT_UPDATE_TARGET=TRUE .
|
||||
make update-po4a-man; echo "Ran make update-po4a-man"
|
||||
make update-po4a-manual; echo "Ran make update-po4a-manual"
|
||||
make pot-update; echo "Ran make pot-update"
|
||||
make mo-update; echo "Ran make mo-update"
|
||||
make clean
|
||||
|
||||
scons translations build=release --debug=time nls=true jobs=2; echo "Ran scons translations"
|
||||
scons pot-update; echo "Ran scons pot-update"
|
||||
scons update-po4a; echo "Ran scons update-po4a"
|
||||
scons manual
|
||||
export BRANCH=master
|
||||
export IMAGE=2004
|
||||
export NLS=only
|
||||
export TOOL=scons
|
||||
export CC=gcc
|
||||
export CXX=g++
|
||||
export CXX_STD=17
|
||||
export CFG=release
|
||||
export LTO=false
|
||||
export CACHE_DIR=/home/wesnoth-CI/build
|
||||
./.github/workflows/ci-scripts/ubuntu.sh
|
||||
|
||||
macos-intel:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
cfg: [ Release ]
|
||||
runs-on: macos-13
|
||||
cfg: [ Debug ]
|
||||
runs-on: macos-12
|
||||
env:
|
||||
CFG: ${{ matrix.cfg }}
|
||||
DEVELOPER_DIR: /Applications/Xcode_13.1.app/Contents/Developer
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
@ -288,7 +206,6 @@ jobs:
|
|||
[ -x "build/$CFG/unit_tests" ] || { printf 'Failed to build unit test executable!\n' >&2; exit 1; }
|
||||
- name: Create disk image
|
||||
working-directory: projectfiles/Xcode
|
||||
continue-on-error: true # allow failures since this is not essential and it does fail spuriously (hdiutil: create failed - Resource busy)
|
||||
run: hdiutil create -volname "Wesnoth_$CFG" -fs 'HFS+' -srcfolder "build/$CFG" -ov -format UDBZ "Wesnoth_${CFG}.dmg"
|
||||
- name: Upload disk image
|
||||
uses: actions/upload-artifact@v4
|
||||
|
@ -297,95 +214,4 @@ jobs:
|
|||
path: projectfiles/Xcode/Wesnoth_${{ matrix.cfg }}.dmg
|
||||
- name: Run WML tests
|
||||
if: matrix.cfg == 'Release'
|
||||
run: ./run_wml_tests -g -c -t 30 -bt 350 -p "projectfiles/Xcode/build/$CFG/The Battle for Wesnoth.app/Contents/MacOS/The Battle for Wesnoth" -a=--userdata-dir="$PWD/ud"
|
||||
- name: Upload userdata files from WML unit tests (logs, replays)
|
||||
if: matrix.cfg == 'Release' && (success() || failure())
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: WMLTest-userdata-MacOS
|
||||
path: ud
|
||||
- name: Run unit tests
|
||||
run: ./run_boost_tests --path=projectfiles/Xcode/build/"$CFG" --executable=unit_tests
|
||||
|
||||
windows:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
cfg: [Release]
|
||||
env:
|
||||
CFG: ${{ matrix.cfg }}
|
||||
VCPKG_FEATURE_FLAGS: dependencygraph
|
||||
permissions:
|
||||
contents: write # for dependency graph
|
||||
defaults:
|
||||
run:
|
||||
shell: cmd
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
|
||||
- name: Make version of the runner image (https://github.com/actions/runner-images/releases) accessible to expression
|
||||
run: echo IMAGE_VERSION=%ImageVersion%>> %GITHUB_ENV%
|
||||
|
||||
- name: Cache object files
|
||||
id: windows-cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: vcpkg_installed # vcpkg generates this dir next to vcpkg.json
|
||||
# the final key part needs to be changed if anything in the build process changes that is not already included here
|
||||
key: win-cache-master-${{ matrix.cfg }}-${{ env.IMAGE_VERSION }}-${{ hashFiles('vcpkg.json') }}-0001
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
|
||||
- name: Run cmake
|
||||
run: cmake -DCMAKE_BUILD_TYPE=%CFG% -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true
|
||||
-DENABLE_TESTS=true -DENABLE_MYSQL=false -DENABLE_NLS=false
|
||||
-DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_INSTALL_OPTIONS=--debug
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_GENERATOR_PLATFORM=x64 -G "Visual Studio 17 2022" .
|
||||
|
||||
- name: Build wesnoth, wesnothd, campaignd and unit tests
|
||||
run: MSBuild.exe wesnoth.sln -p:Configuration=%CFG%
|
||||
|
||||
- name: Run WML unit tests
|
||||
if: matrix.cfg == 'Release'
|
||||
run: python run_wml_tests -v -g -c -t 20 -p %CFG%/wesnoth.exe -a=--userdata-dir=ud
|
||||
|
||||
- name: Upload userdata files from WML unit tests (logs, replays)
|
||||
if: matrix.cfg == 'Release' && (success() || failure())
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: WMLTest-userdata-Windows
|
||||
path: ud
|
||||
|
||||
# run after all other jobs have completed to check overall build status
|
||||
notification:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [checks, copyright, ubuntu, steam-runtime, mingw, flatpak, translations, macos-intel, windows]
|
||||
if: failure() && github.event_name == 'push'
|
||||
|
||||
steps:
|
||||
- name: Discord Notification
|
||||
uses: rjstone/discord-webhook-notify@v1
|
||||
with:
|
||||
severity: error
|
||||
webhookUrl: ${{ secrets.DISCORD_CI_WEBHOOK }}
|
||||
description: |-
|
||||
pusher: ${{ github.actor }}
|
||||
commit: ${{ github.event.head_commit.message }}
|
||||
commit url: ${{ github.event.head_commit.url }}
|
||||
- name: Prepare message
|
||||
if: github.event_name == 'push'
|
||||
env:
|
||||
MSG: ${{ github.event.head_commit.message }}
|
||||
run: |
|
||||
printf COMMIT_SUBJECT=%s "${MSG}" | head -n 1 >> "$GITHUB_ENV"
|
||||
- name: IRC Notification
|
||||
uses: rectalogic/notify-irc@v1
|
||||
with:
|
||||
channel: ${{ vars.IRC_CHANNEL }}
|
||||
server: ${{ vars.IRC_SERVER }}
|
||||
nickname: ${{ vars.IRC_NICK }} # is also used for sasl username
|
||||
sasl_password: ${{ secrets.IRC_SASL_PASSWORD }}
|
||||
message: "❌ ${{ github.workflow }} workflow run ${{ github.run_number }} failed on \x0306${{ github.ref_name }}\x0F: ${{ env.COMMIT_SUBJECT }} by \x0315${{ github.actor }}\x0F: \x0302${{ github.event.head_commit.url }}\x0F"
|
||||
run: ./run_wml_tests -g -c -t 30 -p "projectfiles/Xcode/build/$CFG/The Battle for Wesnoth.app/Contents/MacOS/The Battle for Wesnoth"
|
||||
|
|
145
.github/workflows/ci-scripts/docker.sh
vendored
Executable file
|
@ -0,0 +1,145 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "Using docker:"
|
||||
echo "BRANCH: $BRANCH"
|
||||
echo "IMAGE: $IMAGE"
|
||||
echo "NLS: $NLS"
|
||||
echo "TOOL: $TOOL"
|
||||
echo "CC: $CC"
|
||||
echo "CXX: $CXX"
|
||||
echo "CXX_STD: $CXX_STD"
|
||||
echo "CFG: $CFG"
|
||||
echo "LTO: $LTO"
|
||||
echo "CACHE_DIR: $CACHE_DIR"
|
||||
|
||||
# set the fake display for unit tests
|
||||
export DISPLAY=:99.0
|
||||
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1024x768x24
|
||||
|
||||
error() { printf '%s\n' "$*"; }
|
||||
die() { error "$*"; exit 1; }
|
||||
|
||||
# print given message ($1) and execute given command; sets EXIT_VAL on failure
|
||||
execute() {
|
||||
local message=$1; shift
|
||||
printf 'Executing %s\n' "$message"
|
||||
if "$@"; then
|
||||
: # success
|
||||
else
|
||||
EXIT_VAL=$?
|
||||
echo "********** !FAILURE! **********"
|
||||
echo "********** !FAILURE! **********"
|
||||
echo "********** !FAILURE! **********"
|
||||
echo "********** !FAILURE! **********"
|
||||
echo "********** !FAILURE! **********"
|
||||
error "$message failed! ($*)"
|
||||
fi
|
||||
}
|
||||
|
||||
# in order:
|
||||
# check for proper indentation of WML
|
||||
# check for trailing whitespace in hpp|cpp files
|
||||
# check for trailing whitespace in lua files
|
||||
checkindent() {
|
||||
./utils/CI/fix_whitespace.sh
|
||||
git status
|
||||
(( $(git status --short | wc -l) == 0 ))
|
||||
}
|
||||
|
||||
EXIT_VAL=-1
|
||||
# remove temp dockerfile so it doesn't get picked up by `git status`
|
||||
rm utils/dockerbuilds/CI/Dockerfile-CI-2004-master
|
||||
|
||||
if [ "$NLS" == "only" ]; then
|
||||
export LANGUAGE=en_US.UTF-8
|
||||
export LANG=en_US.UTF-8
|
||||
export LC_ALL=en_US.UTF-8
|
||||
|
||||
./utils/CI/check_utf8.sh || exit 1
|
||||
./utils/CI/utf8_bom_dog.sh || exit 1
|
||||
echo "Checked for invalid characters"
|
||||
|
||||
cmake -DENABLE_NLS=true -DENABLE_GAME=false -DENABLE_SERVER=false -DENABLE_CAMPAIGN_SERVER=false -DENABLE_TESTS=false -DENABLE_POT_UPDATE_TARGET=TRUE .
|
||||
make update-po4a-man || exit 1
|
||||
echo "Ran cmake pdate-po4a-man"
|
||||
make update-po4a-manual || exit 1
|
||||
echo "Ran make update-po4a-manual"
|
||||
make pot-update || exit 1
|
||||
echo "Ran make pot-update"
|
||||
make mo-update || exit 1
|
||||
echo "Ran make mo-update"
|
||||
make clean
|
||||
|
||||
scons translations build=release --debug=time nls=true jobs=2 || exit 1
|
||||
echo "Ran scons translations"
|
||||
scons pot-update || exit 1
|
||||
echo "Ran scons pot-update"
|
||||
scons update-po4a || exit 1
|
||||
echo "Ran scons update-po4a"
|
||||
scons manual || exit 1
|
||||
exit 0
|
||||
elif [ "$IMAGE" == "flatpak" ]; then
|
||||
# docker's --volume means the directory is on a separate filesystem
|
||||
# flatpak-builder doesn't support this
|
||||
# therefore manually move stuff between where flatpak needs it and where CI caching can see it
|
||||
rm -R .flatpak-builder/*
|
||||
cp -R "$CACHE_DIR"/. .flatpak-builder/
|
||||
jq '.modules[2].sources[0]={"type":"dir","path":"/home/wesnoth-CI"} | ."build-options".env.FLATPAK_BUILDER_N_JOBS="2"' packaging/flatpak/org.wesnoth.Wesnoth.json > utils/dockerbuilds/CI/org.wesnoth.Wesnoth.json
|
||||
flatpak-builder --ccache --force-clean --disable-rofiles-fuse wesnoth-app utils/dockerbuilds/CI/org.wesnoth.Wesnoth.json
|
||||
EXIT_VAL=$?
|
||||
rm -R "$CACHE_DIR"/*
|
||||
cp -R .flatpak-builder/. "$CACHE_DIR"/
|
||||
chmod -R 777 "$CACHE_DIR"/
|
||||
exit $EXIT_VAL
|
||||
else
|
||||
if [ "$TOOL" == "cmake" ]; then
|
||||
export CCACHE_MAXSIZE=3000M
|
||||
export CCACHE_COMPILERCHECK=content
|
||||
export CCACHE_DIR="$CACHE_DIR"
|
||||
|
||||
cmake -DCMAKE_BUILD_TYPE="$CFG" -DENABLE_GAME=true -DENABLE_SERVER=true -DENABLE_CAMPAIGN_SERVER=true -DENABLE_TESTS=true -DENABLE_NLS="$NLS" \
|
||||
-DEXTRA_FLAGS_CONFIG="-pipe" -DENABLE_STRICT_COMPILATION=true -DENABLE_LTO="$LTO" -DLTO_JOBS=2 -DENABLE_MYSQL=true \
|
||||
-DCXX_STD="$CXX_STD" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache . && \
|
||||
make VERBOSE=1 -j2
|
||||
EXIT_VAL=$?
|
||||
|
||||
ccache -s
|
||||
ccache -z
|
||||
else
|
||||
scons wesnoth wesnothd campaignd boost_unit_tests build="$CFG" \
|
||||
ctool="$CC" cxxtool="$CXX" cxx_std="$CXX_STD" \
|
||||
extra_flags_config="-pipe" strict=true forum_user_handler=true \
|
||||
nls="$NLS" enable_lto="$LTO" jobs=2 --debug=time
|
||||
EXIT_VAL=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $EXIT_VAL != 0 ]; then
|
||||
exit $EXIT_VAL
|
||||
fi
|
||||
|
||||
# rename debug executables to what the tests expect
|
||||
if [ "$CFG" == "debug" ]; then
|
||||
mv wesnoth-debug wesnoth
|
||||
mv wesnothd-debug wesnothd
|
||||
mv campaignd-debug campaignd
|
||||
mv boost_unit_tests-debug boost_unit_tests
|
||||
fi
|
||||
|
||||
execute "WML validation" ./utils/CI/schema_validation.sh
|
||||
execute "Whitespace and WML indentation check" checkindent
|
||||
execute "Doxygen check" ./utils/CI/doxygen-check.sh
|
||||
execute "WML tests" ./run_wml_tests -g -c -t 20
|
||||
execute "Play tests" ./utils/CI/play_test_executor.sh
|
||||
execute "MP tests" ./utils/CI/play_test_executor.sh
|
||||
execute "Boost unit tests" ./utils/CI/test_executor.sh
|
||||
|
||||
if [ -f "errors.log" ]; then
|
||||
error $'\n*** \n*\n* Errors reported in wml unit tests, here is errors.log...\n*\n*** \n'
|
||||
cat errors.log
|
||||
fi
|
||||
|
||||
mv wesnoth "$CACHE_DIR"/wesnoth
|
||||
mv wesnothd "$CACHE_DIR"/wesnothd
|
||||
|
||||
exit $EXIT_VAL
|
45
.github/workflows/ci-scripts/ubuntu.sh
vendored
Executable file
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "Using linux:"
|
||||
echo "BRANCH: $BRANCH"
|
||||
echo "IMAGE: $IMAGE"
|
||||
echo "NLS: $NLS"
|
||||
echo "TOOL: $TOOL"
|
||||
echo "CC: $CC"
|
||||
echo "CXX: $CXX"
|
||||
echo "CXX_STD: $CXX_STD"
|
||||
echo "CFG: $CFG"
|
||||
echo "LTO: $LTO"
|
||||
echo "CACHE_DIR: $CACHE_DIR"
|
||||
|
||||
version=$(grep '#define VERSION' src/wesconfig.h | cut -d\" -f2)
|
||||
echo "Found version: $version"
|
||||
|
||||
if [ "$IMAGE" == "steamrt" ]; then
|
||||
cd utils/dockerbuilds/
|
||||
./make_steam_build || exit 1
|
||||
tar -cf steambuild.tar steambuild
|
||||
mv steambuild.tar ~/steambuild-$version.tar
|
||||
elif [ "$IMAGE" == "mingw" ]; then
|
||||
git archive --format=tar HEAD > wesnoth.tar
|
||||
bzip2 -z wesnoth.tar
|
||||
mv wesnoth.tar.bz2 ~/wesnoth-$version.tar.bz2
|
||||
cd utils/dockerbuilds/
|
||||
./make_mingw_build || exit 1
|
||||
cd mingwbuild
|
||||
mv ./wesnoth*-win64.exe ~/wesnoth-$version-win64.exe
|
||||
else
|
||||
# create temp docker file to pull the pre-created images
|
||||
echo FROM wesnoth/wesnoth:"$IMAGE"-"$BRANCH" > utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH"
|
||||
echo COPY ./ /home/wesnoth-CI/ >> utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH"
|
||||
echo WORKDIR /home/wesnoth-CI >> utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH"
|
||||
|
||||
docker build -t wesnoth-repo:"$IMAGE"-"$BRANCH" -f utils/dockerbuilds/CI/Dockerfile-CI-"$IMAGE"-"$BRANCH" .
|
||||
|
||||
docker run --cap-add=ALL --privileged \
|
||||
--volume ~/build-cache:"$CACHE_DIR" \
|
||||
--env BRANCH --env IMAGE --env NLS --env TOOL --env CC --env CXX \
|
||||
--env CXX_STD --env CFG --env LTO --env CACHE_DIR \
|
||||
wesnoth-repo:"$IMAGE"-"$BRANCH" ./.github/workflows/ci-scripts/docker.sh
|
||||
fi
|
||||
|
67
.github/workflows/codeql.yml
vendored
|
@ -1,67 +0,0 @@
|
|||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
||||
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
||||
# - https://gh.io/supported-runners-and-hardware-resources
|
||||
# - https://gh.io/using-larger-runners
|
||||
# Consider using larger runners for possible analysis time improvements.
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 360
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'cpp', 'python', 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ]
|
||||
# Use only 'java' to analyze code written in Java, Kotlin or both
|
||||
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
|
||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||
|
||||
steps:
|
||||
- { name: Checkout repository, uses: actions/checkout@v4, with: { submodules: "recursive" } }
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
|
||||
- name: Install dependencies
|
||||
if: matrix.language == 'cpp'
|
||||
run: |
|
||||
utils/autorevision.sh -t h > src/revision.h
|
||||
sudo apt update
|
||||
sudo apt install scons libboost-system1.83-dev libboost-filesystem1.83-dev libboost-iostreams1.83-dev \
|
||||
libboost-serialization1.83-dev libboost-locale1.83-dev libboost-regex1.83-dev libboost-random1.83-dev \
|
||||
libboost-program-options1.83-dev libboost-thread1.83-dev libboost-context1.83-dev libboost-test-dev \
|
||||
libboost-coroutine1.83-dev libboost-graph1.83-dev libasio-dev libsdl2-dev libsdl2-image-dev \
|
||||
libsdl2-mixer-dev libvorbis-dev libpango1.0-dev libssl-dev libcurl4-openssl-dev liblua5.4-dev
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
88
.github/workflows/image_metadata.yml
vendored
|
@ -1,88 +0,0 @@
|
|||
name: Image metadata check CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
paths: [ '**.webp', '**.png', '**.jpg', '**.jpeg' ]
|
||||
pull_request:
|
||||
paths: [ '**.webp', '**.png', '**.jpg', '**.jpeg' ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Image Metadata
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
BASE_SHA: ${{ github.event_name == 'push' && github.event.before || github.event.pull_request.base.sha }}
|
||||
HEAD_SHA: ${{ github.event_name == 'push' && github.event.after || github.event.pull_request.head.sha }}
|
||||
|
||||
steps:
|
||||
- name: exiftool installation
|
||||
run: |
|
||||
sudo apt-get install --assume-yes exiftool
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: check image EXIF metadata
|
||||
run: |
|
||||
mapfile -t image_files < <(git diff --name-only --diff-filter=d "$BASE_SHA" "$HEAD_SHA" | grep -E '\.(webp|je?pg)$')
|
||||
# cycle through the changed image files, make sure they have the right fields
|
||||
for file in "${image_files[@]}"; do
|
||||
# check Artist tag, fail if missing
|
||||
artist="$(exiftool -p '$Artist' "$file")"
|
||||
if [ "$artist" ]; then
|
||||
printf 'Artist tag in %s is %s\n' "$file" "$artist"
|
||||
else
|
||||
printf 'no Artist EXIF tag in %s\n' "$file"
|
||||
exit 1
|
||||
fi
|
||||
# check Copyright tag, fail if missing or wrong type
|
||||
copyright="$(exiftool -p '$Copyright' "$file")"
|
||||
case $copyright in
|
||||
'GNU GPL v2+'|'CC BY-SA 4.0'|CC0)
|
||||
printf 'Copyright tag in %s is %s\n' "$file" "$copyright"
|
||||
;;
|
||||
'')
|
||||
printf 'no Copyright EXIF tag in %s\n' "$file"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
printf 'Copyright tag %s in file %s is not an accepted license! Must be one of: "GNU GPL v2+", "CC BY-SA 4.0", "CC0"\n' "$copyright" "$file"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
- name: check png XMP metadata
|
||||
run: |
|
||||
mapfile -t image_files < <(git diff --name-only --diff-filter=d "$BASE_SHA" "$HEAD_SHA" | grep -E '\.png$')
|
||||
# cycle through the changed image files, make sure they have the right fields
|
||||
for file in "${image_files[@]}"; do
|
||||
# check Creator tag, fail if missing
|
||||
artist="$(exiftool -p '$XMP:Creator' "$file")"
|
||||
if [ "$artist" ]; then
|
||||
printf 'Creator tag in %s is %s\n' "$file" "$artist"
|
||||
else
|
||||
printf 'no Creator XMP tag in %s\n' "$file"
|
||||
exit 1
|
||||
fi
|
||||
# check Rights tag, fail if missing or wrong type
|
||||
copyright="$(exiftool -p '$XMP:Rights' "$file")"
|
||||
case $copyright in
|
||||
'GNU GPL v2+'|'CC BY-SA 4.0'|CC0)
|
||||
printf 'Rights tag in %s is %s\n' "$file" "$copyright"
|
||||
;;
|
||||
'')
|
||||
printf 'no Rights XMP tag in %s\n' "$file"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
printf 'Rights tag %s in file %s is not an accepted license! Must be one of: "GNU GPL v2+", "CC BY-SA 4.0", "CC0"\n' "$copyright" "$file"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
45
.github/workflows/irc-notify.yml
vendored
|
@ -1,45 +0,0 @@
|
|||
name: IRC Notification
|
||||
on:
|
||||
push:
|
||||
pull_request_target:
|
||||
types: [ opened, closed, reopened ]
|
||||
issues:
|
||||
types: [ opened, closed, reopened ]
|
||||
# create: # creation also gets mentioned when pushing
|
||||
delete:
|
||||
|
||||
jobs:
|
||||
notify:
|
||||
if: vars.IRC_CHANNEL != '' # skip if not set up (like in a fork for example)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Prepare message
|
||||
if: github.event_name == 'push'
|
||||
env:
|
||||
MSG: ${{ github.event.head_commit.message }}
|
||||
run: |
|
||||
printf COMMIT_SUBJECT=%s "${MSG}" | head -n 1 >> "$GITHUB_ENV"
|
||||
- uses: rectalogic/notify-irc@v1
|
||||
env: { COLOR: "\x03", BLUE: "02", PURPLE: "06", ACTOR: "\x0315${{ github.actor }}\x03" }
|
||||
with:
|
||||
channel: ${{ vars.IRC_CHANNEL }}
|
||||
server: ${{ vars.IRC_SERVER }}
|
||||
nickname: ${{ vars.IRC_NICK }} # is also used for sasl username
|
||||
sasl_password: ${{ secrets.IRC_SASL_PASSWORD }}
|
||||
# See https://docs.github.com/en/actions/learn-github-actions/expressions
|
||||
# github context: https://docs.github.com/en/actions/learn-github-actions/contexts#github-context
|
||||
# github.event data: https://docs.github.com/en/webhooks-and-events/webhooks/webhook-events-and-payloads
|
||||
message: >-
|
||||
${{ (github.event_name == 'push' &&
|
||||
format('{1} {2} {0}{3}{4}{0}: {5}: {0}{6}{7}{0}', env.COLOR, env.ACTOR,
|
||||
(github.event.created && (github.event.tag && 'tagged' || 'created')) || (github.event.deleted && 'deleted') || (github.event.forced && 'force-pushed to') || 'pushed to',
|
||||
env.PURPLE, github.ref_name, env.COMMIT_SUBJECT, env.BLUE, github.event.compare)
|
||||
) || (github.event_name == 'pull_request_target' &&
|
||||
format('{1} {2} PR #{3} for {0}{4}{5}{0}: {6}: {0}{7}{8}{0}', env.COLOR, env.ACTOR, github.event.action, github.event.number, env.PURPLE, github.base_ref, github.event.pull_request.title, env.BLUE, github.event.pull_request.html_url)
|
||||
) || (github.event_name == 'issues' &&
|
||||
format('{1} {2} issue {0}{3}#{4}{0}: {5}: {0}{6}{7}{0}', env.COLOR, env.ACTOR, github.event.action, env.PURPLE, github.event.issue.number, github.event.issue.title, env.BLUE, github.event.issue.html_url)
|
||||
) || ((github.event_name == 'create' || github.event_name == 'delete') &&
|
||||
format('{1} {2}d {3} {0}{4}{5}{0}', env.COLOR, env.ACTOR, github.event_name, github.event.ref_type, env.PURPLE, github.event.ref)
|
||||
)
|
||||
}}
|
||||
_debug: ${{ toJSON(github) }}
|
78
.github/workflows/map-diff.yml
vendored
|
@ -1,78 +0,0 @@
|
|||
name: Map Diff
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
paths:
|
||||
- '**.map'
|
||||
|
||||
jobs:
|
||||
comment-map-diff:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
continue-on-error: true
|
||||
runs-on: ubuntu-20.04
|
||||
defaults:
|
||||
run:
|
||||
working-directory: utils/wesnoth-map-diff
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '16'
|
||||
- name: Package install
|
||||
run: npm install
|
||||
- name: Package build
|
||||
run: npm run build:prod
|
||||
- name: Get maps diff
|
||||
id: get-maps-diff
|
||||
env:
|
||||
SHA: ${{ github.event.pull_request.head.sha }}
|
||||
run: |
|
||||
sudo apt-get -y -q install pngquant
|
||||
comment_body=""
|
||||
log() { printf '\e[1m%s\e[m\n' "$*"; } # write log message in bold
|
||||
|
||||
## Get changed maps
|
||||
git fetch --depth=1 origin "$SHA"
|
||||
mapfile -t map_paths < <(git diff --name-only HEAD "$SHA" | grep '\.map$')
|
||||
|
||||
for map_path in "${map_paths[@]}"
|
||||
do
|
||||
## Get new map version
|
||||
log "Check out $map_path from $SHA..."
|
||||
new_map=${map_path##*/}
|
||||
git show "$SHA":"$map_path" > "$new_map"
|
||||
|
||||
log "Generate map diff image for $map_path..."
|
||||
node build/index.js "../../$map_path" "$new_map" diff_image.png
|
||||
identify diff_image.png
|
||||
|
||||
log 'Compress image...'
|
||||
pngquant --force --output diff_image.png diff_image.png
|
||||
identify diff_image.png
|
||||
|
||||
log 'Uploading diff_image.png...'
|
||||
json=$(curl -s -F image=@diff_image.png https://api.imgur.com/3/upload | tee /dev/stderr) || continue
|
||||
|
||||
log 'Generating HTML comment...'
|
||||
html=$(jq -r --arg path "$map_path" 'if .data.link != null
|
||||
then @html "<h3>\($path)</h3><img src=\"\(.data.link)\" /> <br />"
|
||||
elif has("errors") then .errors[].status | halt_error
|
||||
else "Unexpected JSON structure!\n" | halt_error end' <<< "$json") || continue
|
||||
comment_body+=$html
|
||||
done
|
||||
|
||||
printf 'COMMENT_BODY=%s\n' "$comment_body" >> "$GITHUB_OUTPUT"
|
||||
- name: Find comment
|
||||
uses: peter-evans/find-comment@v2
|
||||
id: fc
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
comment-author: 'github-actions[bot]'
|
||||
- name: Add comment
|
||||
uses: peter-evans/create-or-update-comment@v3
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
comment-id: ${{ steps.fc.outputs.comment-id }}
|
||||
edit-mode: replace
|
||||
body: ${{ steps.get-maps-diff.outputs.COMMENT_BODY }}
|
18
.gitignore
vendored
|
@ -19,15 +19,6 @@ uninstall.cmake
|
|||
CMakeCache.txt
|
||||
install_manifest.txt
|
||||
out/**/*
|
||||
CTestTestfile.cmake
|
||||
DartConfiguration.tcl
|
||||
Testing/*
|
||||
doc/CTestTestfile.cmake
|
||||
doc/design/CTestTestfile.cmake
|
||||
doc/man/CTestTestfile.cmake
|
||||
doc/manual/CTestTestfile.cmake
|
||||
src/CTestTestfile.cmake
|
||||
src/Testing/
|
||||
|
||||
# scons
|
||||
.scons-option-cache
|
||||
|
@ -114,6 +105,7 @@ tags
|
|||
/create_images*
|
||||
/wesmage*
|
||||
pgo_data/
|
||||
src/modules/lua/
|
||||
|
||||
# build results etc.
|
||||
wesnoth_zip
|
||||
|
@ -127,7 +119,6 @@ wesnoth.plg
|
|||
*.exe
|
||||
*.dll
|
||||
*.so
|
||||
compile_commands.json
|
||||
|
||||
# library files
|
||||
.libs
|
||||
|
@ -147,7 +138,6 @@ src/test
|
|||
error*.log
|
||||
boost_test_result.xml
|
||||
*build*.sh
|
||||
boost_tests.log
|
||||
|
||||
# translations
|
||||
locales
|
||||
|
@ -166,8 +156,6 @@ po/**/Makefile*
|
|||
data/tools/unit_tree/**/files
|
||||
data/tools/unit_tree/**/reports
|
||||
data/tools/unit_tree/**/Locale
|
||||
data/tools/macro_reference.html
|
||||
about.wiki
|
||||
|
||||
# doc
|
||||
doc/doxygen/html
|
||||
|
@ -222,7 +210,3 @@ config.h
|
|||
callgrind.out.*
|
||||
data/dist
|
||||
clean.sh
|
||||
widgets_tested.log
|
||||
|
||||
# clangd cache
|
||||
.cache/clangd
|
||||
|
|
3
.gitmodules
vendored
|
@ -2,6 +2,3 @@
|
|||
path = src/modules/mariadbpp
|
||||
url = https://github.com/viaduck/mariadbpp.git
|
||||
ignore = untracked
|
||||
[submodule "src/modules/lua"]
|
||||
path = src/modules/lua
|
||||
url = https://github.com/lua/lua.git
|
||||
|
|
15
.luacheckrc
|
@ -1,15 +0,0 @@
|
|||
-- ignore line length warnings
|
||||
max_line_length=false
|
||||
max_code_line_length=false
|
||||
max_string_line_length=false
|
||||
max_comment_line_length=false
|
||||
-- show the warning/error codes as well
|
||||
codes=true
|
||||
-- don't show files with no issues
|
||||
quiet=1
|
||||
-- don't show undefined variable usage
|
||||
-- there are thousands of warnings here because luacheck is unaware of Wesnoth's lua environment and has no way to check which have been loaded
|
||||
global=false
|
||||
-- don't show unused variables
|
||||
unused=false
|
||||
exclude_files={"src/modules/lua/testes/*.lua"}
|
120
CMakeLists.txt
|
@ -1,10 +1,9 @@
|
|||
# set minimum version
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
# set minimum version
|
||||
cmake_minimum_required(VERSION 3.7)
|
||||
|
||||
project(wesnoth)
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(CTest)
|
||||
|
||||
# use our own version of FindBoost.cmake and other Find* scripts
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
|
@ -52,27 +51,7 @@ option(ENABLE_MYSQL "Enable building MP/add-ons servers with mysql support" OFF)
|
|||
option(ENABLE_TESTS "Build unit tests")
|
||||
option(ENABLE_NLS "Enable building of translations" ${ENABLE_GAME})
|
||||
|
||||
set(BOOST_VERSION "1.67")
|
||||
|
||||
if(NOT WIN32)
|
||||
set(Lua_FIND_VERSION_MAJOR 5)
|
||||
set(Lua_FIND_VERSION_MINOR 4)
|
||||
option(ENABLE_SYSTEM_LUA "Enable use of system Lua ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR} (compiled as C++)" OFF)
|
||||
endif()
|
||||
if(ENABLE_SYSTEM_LUA)
|
||||
set(Lua_FIND_VERSION_EXACT ON)
|
||||
set(Lua_FIND_VERSION_COUNT 2)
|
||||
include(FindLua)
|
||||
if(NOT LUA_FOUND)
|
||||
message(FATAL_ERROR "Lua ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR} C++ not found. Try setting 'LUA_DIR'.")
|
||||
endif()
|
||||
else()
|
||||
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/src/modules/lua/.git")
|
||||
message(FATAL_ERROR "Lua submodule does not exist. You must run 'git submodule update --init --recursive' to initialize it.")
|
||||
else()
|
||||
message("-- Lua submodule found.")
|
||||
endif()
|
||||
endif()
|
||||
set(BOOST_VERSION "1.66")
|
||||
|
||||
# set what std version to use
|
||||
if(NOT CXX_STD)
|
||||
|
@ -87,24 +66,32 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
|||
find_package(OpenSSL 1.0 REQUIRED)
|
||||
|
||||
if(APPLE)
|
||||
find_library(APPKIT_LIBRARY AppKit REQUIRED)
|
||||
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
|
||||
find_library(IOKIT_LIBRARY IOKit REQUIRED)
|
||||
find_library(SECURITY_LIBRARY Security REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(Boost ${BOOST_VERSION} REQUIRED COMPONENTS iostreams program_options regex system thread random coroutine locale filesystem graph)
|
||||
find_package(Boost ${BOOST_VERSION} REQUIRED COMPONENTS iostreams program_options regex system thread random coroutine locale filesystem)
|
||||
find_package(ICU REQUIRED COMPONENTS data i18n uc)
|
||||
|
||||
# no, gettext executables are not required when NLS is deactivated
|
||||
find_package(Gettext)
|
||||
find_package(Python)
|
||||
|
||||
find_package(X11)
|
||||
|
||||
if(NOT WIN32 AND NOT ENABLE_SYSTEM_LUA)
|
||||
# Use the safer `mkstemp' instead of `tmpnam' on POSIX systems.
|
||||
add_definitions(-DLUA_USE_POSIX)
|
||||
if(NOT WIN32)
|
||||
# needed to get some SDL2 defines in... (as of rev31694 -D_GNU_SOURCE=1 is required!)
|
||||
if(NOT MINGW)
|
||||
set(SDL2_CONFIG "sdl2-config" CACHE STRING "Path to sdl2-config script")
|
||||
exec_program(${SDL2_CONFIG} ARGS "--cflags" OUTPUT_VARIABLE SDL2_CFLAGS)
|
||||
add_definitions(${SDL2_CFLAGS})
|
||||
else()
|
||||
# equivalent to sdl2-config --cflags --libs
|
||||
# since cmake cannot execute sdl2-config in msys2 shell
|
||||
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -I/mingw64/include/SDL2 -Dmain=SDL_main -L/mingw64/lib -lmingw32 -lSDL2main -lSDL2 -mwindows)
|
||||
endif()
|
||||
|
||||
# Use the safer `mkstemp' instead of `tmpnam' on POSIX systems.
|
||||
add_definitions(-DLUA_USE_POSIX)
|
||||
endif()
|
||||
|
||||
#check for some compiler/arch specific things and export defines accordingly...
|
||||
|
@ -167,11 +154,8 @@ option(ENABLE_PEDANTIC_COMPILATION "Sets the pedantic compilation mode" OFF)
|
|||
option(ENABLE_DEBUG_WINDOW_LAYOUT "Add the debug option to allow the generation of debug layout files in dot format" OFF)
|
||||
option(ENABLE_DESIGN_DOCUMENTS "Enables the generation of design documents, and has additional dependencies" OFF)
|
||||
option(ENABLE_LTO "Sets Link Time Optimization for Release builds" OFF)
|
||||
option(GLIBCXX_ASSERTIONS "Whether to define _GLIBCXX_ASSERTIONS" OFF)
|
||||
option(GLIBCXX_DEBUG "Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC. Requires a version of Boost's program_options that's compiled with __GLIBCXX_DEBUG too." OFF)
|
||||
option(GLIBCXX_DEBUG "Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC" OFF)
|
||||
option(ENABLE_POT_UPDATE_TARGET "Enables the tools to update the pot files and manuals. This target has extra dependencies." OFF)
|
||||
option(FORCE_COLOR_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." FALSE)
|
||||
option(CLANG_TIDY "Enable clang-tidy linter checks." OFF)
|
||||
|
||||
if(UNIX AND NOT APPLE AND NOT CYGWIN)
|
||||
option(ENABLE_NOTIFICATIONS "Enable Window manager notification messages" ON)
|
||||
|
@ -186,7 +170,7 @@ set(BINARY_PREFIX "" CACHE STRING "Prefix in front of all binaries")
|
|||
|
||||
### Set the environment compiler flags.
|
||||
|
||||
if(NOT MSVC)
|
||||
if(NOT WIN32)
|
||||
if(NOT DEFINED CXX_FLAGS_USER)
|
||||
|
||||
MESSAGE(STATUS "Environment compiler flags set to »${CXX_FLAGS_USER}«")
|
||||
|
@ -206,18 +190,6 @@ if(NOT MSVC)
|
|||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Qunused-arguments -Wno-unknown-warning-option -Wmismatched-tags -Wno-conditional-uninitialized -Wno-unused-lambda-capture")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU"
|
||||
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13
|
||||
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
|
||||
# GCC-13 added this new warning, and included it in -Wextra,
|
||||
# however in GCC-13 it has a lot of false positives.
|
||||
#
|
||||
# It's likely to generate false postives with GCC-14 too, but
|
||||
# I'm using a narrow version check as GCC-14 is still in dev.
|
||||
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110075
|
||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Wno-dangling-reference")
|
||||
endif()
|
||||
|
||||
### Set strict compiler flags.
|
||||
|
||||
if(ENABLE_STRICT_COMPILATION)
|
||||
|
@ -246,21 +218,6 @@ if(NOT MSVC)
|
|||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fno-omit-frame-pointer -fno-optimize-sibling-calls")
|
||||
endif()
|
||||
|
||||
### Force colour output (for example for Ninja, or piped CI)
|
||||
|
||||
if(FORCE_COLOR_OUTPUT)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fdiagnostics-color=always")
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fcolor-diagnostics")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
### Enable clang-tidy linting
|
||||
if (CLANG_TIDY)
|
||||
set(CMAKE_CXX_CLANG_TIDY "clang-tidy -Wno-unknown-warning-option")
|
||||
endif()
|
||||
|
||||
### Set the final compiler flags.
|
||||
|
||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} ${CXX_FLAGS_USER}")
|
||||
|
@ -303,8 +260,6 @@ if(NOT MSVC)
|
|||
|
||||
if(APPLE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -Wl,-pie")
|
||||
elseif(WIN32 AND MINGW)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie")
|
||||
else()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie -Wl,-z,relro,-z,now")
|
||||
endif()
|
||||
|
@ -433,14 +388,7 @@ if(NOT MSVC)
|
|||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG -ggdb3 ${EXTRA_FLAGS_CONFIG} ${EXTRA_FLAGS_DEBUG}" CACHE STRING "change cmake's Debug flags to match scons' flags" FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${LINK_EXTRA_FLAGS_CONFIG} ${LINK_EXTRA_FLAGS_DEBUG}" CACHE STRING "" FORCE)
|
||||
|
||||
# Enabling GLIBCXX_ASSERTIONS puts bounds-checks on std::vector::operator[], etc
|
||||
if(GLIBCXX_ASSERTIONS)
|
||||
MESSAGE("Defining _GLIBCXX_ASSERTIONS")
|
||||
add_definitions(-D_GLIBCXX_ASSERTIONS)
|
||||
endif()
|
||||
|
||||
# GLIBCXX_DEBUG enables more checks that GLIBCXX_ASSERTIONS, but changes the ABI of Boost's program_options library.
|
||||
# When _GLIBCXX_DEBUG is defined, _GLIBCXX_ASSERTIONS is automatically implied (Gnu's c++config.h will define it).
|
||||
# adds GLIBCXX_DEBUG definitions
|
||||
if(GLIBCXX_DEBUG)
|
||||
MESSAGE("Defining _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC")
|
||||
add_definitions(-D_GLIBCXX_DEBUG)
|
||||
|
@ -478,14 +426,14 @@ if(NOT MSVC)
|
|||
# End setting profiler build options
|
||||
# #
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "/W3 /WX /wd4503 /wd4351 /wd4250 /wd4244 /wd4267 /we4239 /wd4275 /EHsc /utf-8 /Zc:__cplusplus" CACHE STRING "Global flags used by the CXX compiler during all builds." FORCE)
|
||||
set(CMAKE_CXX_FLAGS "/W3 /WX /wd4503 /wd4351 /wd4250 /wd4244 /wd4267 /we4239 /wd4275 /EHsc /utf-8" CACHE STRING "Global flags used by the CXX compiler during all builds." FORCE)
|
||||
set(CMAKE_C_FLAGS "/WX" CACHE STRING "Global flags used by the C compiler during all builds." FORCE)
|
||||
add_definitions(-D_WIN32_WINNT=0x0A00 -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS -DNOMINMAX)
|
||||
add_definitions(-D_WIN32_WINNT=_WIN32_WINNT_WIN7 -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS -DNOMINMAX)
|
||||
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG_LUA")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRT")
|
||||
|
||||
|
||||
# -DNDEBUG is automatically added to all release build types, so manually remove this define from the related variables
|
||||
RemoveFlag(CMAKE_CXX_FLAGS_RELEASE CACHE "/DNDEBUG" "Default C++ flags for RELEASE")
|
||||
RemoveFlag(CMAKE_C_FLAGS_RELEASE CACHE "/DNDEBUG" "Default C flags for RELEASE")
|
||||
|
@ -529,25 +477,29 @@ endif()
|
|||
#
|
||||
|
||||
if(ENABLE_GAME OR ENABLE_TESTS)
|
||||
find_package(CURL REQUIRED)
|
||||
find_package(VorbisFile REQUIRED)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
find_package(Fontconfig REQUIRED)
|
||||
find_package(SDL2 2.0.18 REQUIRED)
|
||||
if(NOT MSVC)
|
||||
# for everything else, use pkgconfig
|
||||
# SDL2_image and SDL2_mixer don't seem to have any cmake configuration available at all
|
||||
# find_package can't be used for SDL2 since at least as of Ubuntu 20.04 they forgot to include the sdl2-config-version.cmake, so cmake can't tell if it's >= 2.0.8 and thus rejects using it
|
||||
# meanwhile SDL2_image and SDL2_mixer don't seem to have any cmake configuration available at all
|
||||
# the best I could find is that the more modern cmake module support is only available if you build SDL2 yourself instead of using a distro-packaged version
|
||||
# still wouldn't help for SDL2_image and SDL2_mixer though
|
||||
pkg_check_modules(SDL2 REQUIRED sdl2>=2.0.8)
|
||||
pkg_check_modules(SDL2IMAGE REQUIRED SDL2_image>=2.0.2)
|
||||
pkg_check_modules(SDL2MIXER REQUIRED SDL2_mixer>=2.0.0)
|
||||
else()
|
||||
# for MSVC, vcpkg builds and provides custom SDL2-related modules for cmake to use, so use those
|
||||
# for MSVC, vcpkg builds and provides SDL2-related modules for cmake to use, so use those
|
||||
# this also fixes the issue with our previous FindSDL2* scripts incorrectly using the Release version of these libs instead of the Debug version
|
||||
find_package(SDL2 2.0.8 CONFIG REQUIRED)
|
||||
find_package(SDL2_image CONFIG REQUIRED)
|
||||
find_package(SDL2_mixer CONFIG REQUIRED)
|
||||
endif()
|
||||
pkg_check_modules(CAIRO REQUIRED cairo>=1.10)
|
||||
pkg_check_modules(PANGOCAIRO REQUIRED pangocairo>=1.44.0)
|
||||
pkg_check_modules(PANGO REQUIRED pango>=1.44.0)
|
||||
pkg_check_modules(PANGOCAIRO REQUIRED pangocairo>=1.22.0)
|
||||
# TODO: can use find_package and Fontconfig::Fontconfig with cmake 3.14+
|
||||
pkg_check_modules(FONTCONFIG REQUIRED fontconfig>=2.4.1)
|
||||
pkg_check_modules(PANGO REQUIRED pango>=1.22.0)
|
||||
pkg_check_modules(LIBREADLINE readline)
|
||||
endif()
|
||||
|
||||
|
@ -590,7 +542,7 @@ endif()
|
|||
|
||||
add_subdirectory(doc)
|
||||
|
||||
if(GETTEXT_FOUND AND Python_FOUND AND ENABLE_NLS)
|
||||
if(GETTEXT_FOUND AND ENABLE_NLS)
|
||||
add_subdirectory(po)
|
||||
endif()
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
The Battle for Wesnoth's Code of Conduct may be found in the following forum post:
|
||||
https://forums.wesnoth.org/viewtopic.php?t=24277
|
|
@ -1,6 +1,6 @@
|
|||
# Contributing to Wesnoth
|
||||
|
||||
Wesnoth was built with the hard work of volunteers all over the world! Everyone is welcome to come and contribute code, art, and music to improve the game for everyone who wants to play it.
|
||||
Wesnoth was built with the hard work of volunteers all over the world! Everyone is welcome to come and contribute. TODO: list the different types of contributions that people can make.
|
||||
|
||||
## Contacting Us
|
||||
|
||||
|
@ -18,7 +18,7 @@ Wesnoth's engine conforms to the C++17 standard. We encourage the use of standar
|
|||
|
||||
### Code Formatting
|
||||
|
||||
All C++, WML and Lua files are in UTF-8, as we use Gettext-style translations, and translatable strings use some punctuation that's outside of the ASCII subset. More details are in the [Typography Style Guide](https://wiki.wesnoth.org/Typography_Style_Guide) and the guide to [using Gettext strings](https://wiki.wesnoth.org/GettextForWesnothDevelopers).
|
||||
All C++, WML and Lua files are in UTF-8, as we use Gettext-style translations, and translatable strings use some punctuation that's outside of the ASCII subset. More details are in the [Typography Style Guide](https://wiki.wesnoth.org/GettextForWesnothDevelopers).
|
||||
|
||||
If your pull request touches the engine's C++ source code, we recommend (but don't require) you run `clang-format` on your changes before submission (Visual Studio Code gives you a handy context menu option to do so). This ensures that your code remains formatted according to our conventions. Make a local commit before running `clang-format`, in case more code than expected gets changed.
|
||||
|
||||
|
@ -118,9 +118,6 @@ private:
|
|||
};
|
||||
```
|
||||
|
||||
## Translations
|
||||
For specific information on how to update and submit translations, see [here](https://wiki.wesnoth.org/WesnothTranslationsHowTo).
|
||||
|
||||
## Bug Reports
|
||||
|
||||
Please report any bugs here on GitHub (preferred) or on the forums.
|
||||
|
|
36
INSTALL.md
|
@ -2,13 +2,13 @@
|
|||
|
||||
## Prerequisites
|
||||
|
||||
Wesnoth requires a compiler with sufficient C++17 support such as GCC 11 and
|
||||
Wesnoth requires a compiler with sufficient C++17 support such as GCC 7 and
|
||||
later, or a version of Clang with equivalent support.
|
||||
|
||||
You'll need to have these libraries and their development headers installed in
|
||||
order to build Wesnoth:
|
||||
|
||||
* Boost libraries >= 1.66.0
|
||||
* Boost libraries >= 1.65.0
|
||||
Most headers plus the following binary libs:
|
||||
* Filesystem
|
||||
* Locale
|
||||
|
@ -17,22 +17,17 @@ order to build Wesnoth:
|
|||
* Regex
|
||||
* Program Options
|
||||
* System
|
||||
* Coroutine
|
||||
* Graph
|
||||
* Charconv (This requires boost 1.85 or higher and is optional but reccomended especially for clang builds)
|
||||
* SDL2 libraries:
|
||||
* SDL2 >= 2.0.18 (macOS: 2.0.22 due to needing https://github.com/libsdl-org/SDL/commit/3bebdaccb7bff8c40438856081d404a7ce3def30)
|
||||
* SDL2_image >= 2.0.2 (with PNG, JPEG, and WEBP support)
|
||||
* SDL2 >= 2.0.8
|
||||
* SDL2_image >= 2.0.2 (with PNG and JPEG support)
|
||||
* SDL2_mixer >= 2.0.0 (with Ogg Vorbis support)
|
||||
* Fontconfig >= 2.4.1
|
||||
* Cairo >= 1.10.0
|
||||
* Pango >= 1.44.0 (with Cairo backend)
|
||||
* Pango >= 1.22.0 (with Cairo backend)
|
||||
* Vorbisfile aka libvorbis
|
||||
* libbz2
|
||||
* libz
|
||||
* libssl
|
||||
* libcrypto (from OpenSSL)
|
||||
* libcurl4 (OpenSSL version)
|
||||
|
||||
The following libraries are optional dependencies that enable additional
|
||||
features:
|
||||
|
@ -55,13 +50,11 @@ created directory:
|
|||
$ tar xvjf wesnoth-<version>.tar.bz2
|
||||
$ cd wesnoth-<version>
|
||||
|
||||
Alternatively, you can clone this git repository. Since Wesnoth uses submodules, when cloning you must add the `--recurse-submodules` option, or if you have already cloned the repository without using that option then you must run the command `git submodule update --init --recursive`.
|
||||
|
||||
The following build systems are fully supported for compiling Wesnoth on Linux,
|
||||
*BSD, and other Unix-like platforms:
|
||||
|
||||
* SCons >= 0.98.3
|
||||
* CMake >= 3.14
|
||||
* CMake >= 2.8.5
|
||||
|
||||
You will also need to have a working installation of GNU gettext to build the
|
||||
translations.
|
||||
|
@ -77,7 +70,7 @@ See [here](https://github.com/wesnoth/wesnoth/blob/master/projectfiles/Xcode/REA
|
|||
### Windows
|
||||
Wesnoth uses CMake for project configuration and vcpkg for installing dependencies. See [here](https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio) for information on using Visual Studio with cmake. The first time it's run, vcpkg will build all the required dependencies which may take over an hour, however it will only need to be done once.
|
||||
|
||||
NOTE 1: You will need to run `vcpkg integrate install` on the command line to make Visual Studio aware of vcpkg. If Visual Studio is open when this is executed, then you will need to close and re-open Visual Studio.
|
||||
NOTE 1: You will need a Windows implementation of pkg-config present in your PATH, such as [pkg-config-lite](https://sourceforge.net/projects/pkgconfiglite/).
|
||||
|
||||
## SCons Build
|
||||
|
||||
|
@ -164,19 +157,20 @@ false value.
|
|||
|
||||
### Some of the most important options follow.
|
||||
|
||||
| SCons | CMake | Description |
|
||||
| Scons | CMake | Description |
|
||||
|------------------------------------------------------------------------|--------------------------------------------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `build=<build type>` | `CMAKE_BUILD_TYPE=<build type>` | Selects a specific build configuration when compiling. `release` produces the default, optimized (-O3) build for regular use. `debug` produces a slower and larger unoptimized (-O0) build with full debug symbols, which is often needed for obtaining detailed backtraces when reporting bugs. |
|
||||
| `wesnoth` | `ENABLE_GAME=<boolean>` | Whether to build the game client binary. To disable just don't mention the target for SCons. |
|
||||
| `wesnothd` | `ENABLE_SERVER=<boolean>` | Whether to build the MP server binary. To disable just don't mention the target for SCons. |
|
||||
| | `ENABLE_GAME=<boolean>` | Whether to build the game client binary. Use command line target selection selection with SCons instead. |
|
||||
| | `ENABLE_SERVER=<boolean>` | Whether to build the MP server binary. Use command line target selection with SCons instead. |
|
||||
| `prefix=<full path>` | `CMAKE_INSTALL_PREFIX=<full path>` | Installation prefix for binaries, resources, and documentation files. |
|
||||
| `nls=<boolean>` | `ENABLE_NLS=<boolean>` | Whether to compile and install translations. |
|
||||
| `strict=<boolean>` | `ENABLE_STRICT_COMPILATION=<boolean>` | Whether to treat compiler warnings as errors or not. Primarily intended for developers. |
|
||||
| `prefsdir=<directory name>` | `PREFERENCES_DIR=<directory name>` | Hardcoded user preferences and user data directory. The default is to leave this unspecified so that Wesnoth will use separate XDG paths such as .config/wesnoth and .local/share/wesnoth/<version> for its user preferences and data, respectively. |
|
||||
| `cxxtool=<program>` | `CMAKE_CXX_COMPILER=<program>` | Specifies which C++ compiler to use. By default, the system's default C++ compiler will be automatically selected during configuration. |
|
||||
| `ccache=<boolean>` | `CMAKE_CXX_COMPILER_LAUNCHER=ccache` | Whether to run the compiler through ccache first. Useful if the compiler executable is not a symbolic link to ccache. Requires ccache to be installed first. If using CMake, use CMAKE_C_COMPILER and CMAKE_CXX_COMPILER instead. |
|
||||
| `ccache=<boolean>` | | Whether to run the compiler through ccache first. Useful if the compiler executable is not a symbolic link to ccache. Requires ccache to be installed first. If using CMake, use CMAKE_C_COMPILER and CMAKE_CXX_COMPILER instead. |
|
||||
| `extra_flags_<buildtype>=<flags>` `extra_flags_config=<flags>` | `CXX_FLAGS_USER=<flags>` | Additional compiler flags to use when compiling a specific build type (SCons-only). To apply the same flags to all builds, use extra_flags_config (SCons) or CXX_FLAGS_USER (CMake) without a build type suffix. Alternatively, you may specify your flags in the CXXFLAGS environment variable. |
|
||||
| `fifodir=<full path>` `server_uid=<UID>` `server_gid=<GID>` | `FIFO_DIR=<full path>` `SERVER_UID=<UID>` `SERVER_GID=<GID>` | Directory and owner id for the wesnothd control FIFO file. This is relevant only if you wish to be able to communicate with a local wesnothd instance through a named pipe. You must run wesnothd with the same UID specified at build time for this to work. |
|
||||
| `enable_lto=<boolean>` | `ENABLE_LTO=<boolean>` | Controls using Link Time Optimization. Enabling will result in a smaller, faster executable at the cost of increased time to compile and link. For cmake, use LTO_JOBS=N tells how many threads to use during linking. |
|
||||
| `--debug=time` | `VERBOSE=1` (make option) | Enables some additional output while building. |
|
||||
| `jobs=N` | `-jN` (make option) | Enables compiling with multiple threads, where N is the number of threads to use. |
|
||||
| `enable_lto=<boolean>` | `ENABLE_LTO=<boolean>` | Controls using Link Time Optimization. Enabling will result in a smaller, faster executable at the cost of increased time to compile and link. For cmake, use LTO_JOBS=N tells how many threads to use during linking.|
|
||||
| `--debug=time` | `VERBOSE=1` (make option) | Enables some additional output while building.|
|
||||
| `strict=true` | `ENABLE_STRICT_COMPILATION=true` | Forces all warnings to be errors (-Werror).|
|
||||
| `jobs=N` | `-jN` (make option) | Enables compiling with multiple threads, where N is the number of threads to use.|
|
||||
|
|
42
README.md
|
@ -1,14 +1,9 @@
|
|||
[](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
|
||||
|
||||
|Branch|CI status|
|
||||
|------|---------|
|
||||
|Master|[](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml?query=branch%3Amaster)|
|
||||
|1.18|[](https://github.com/wesnoth/wesnoth/actions/workflows/ci-main.yml?query=branch%3A1.18)|
|
||||
|
||||
About
|
||||
=====
|
||||
|
||||
**The Battle for Wesnoth** is an Open Source, turn-based tactical strategy game with a high fantasy theme, featuring both singleplayer and online/hotseat multiplayer combat. Fight a desperate battle to reclaim the throne of Wesnoth, search for the key to immortality, or take part in any number of other adventures.
|
||||
**The Battle for Wesnoth** is an Open Source, turn-based tactical strategy game with a high fantasy theme, featuring both singleplayer and online/hotseat multiplayer combat. Fight a desperate battle to reclaim the throne of Wesnoth, or take hand in any number of other adventures.
|
||||
|
||||
Community
|
||||
---------
|
||||
|
@ -22,23 +17,12 @@ Discord:
|
|||
IRC:
|
||||
<https://wiki.wesnoth.org/Support#IRC>
|
||||
|
||||
Mastodon:
|
||||
<https://fosstodon.org/@wesnoth>
|
||||
Twitter:
|
||||
<https://twitter.com/Wesnoth>
|
||||
|
||||
Steam forums:
|
||||
<https://steamcommunity.com/app/599390/discussions/>
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
* A variety of different campaigns, each with their own tactical challenges, emotionally charged story, and multiple difficulty levels.
|
||||
* A detailed world and storytelling with hundreds of sprites, animations, and characters.
|
||||
* Many different unit skills and traits across several factions.
|
||||
* A map editor with multiple tools, hundreds types of terrain, and the ability for you to save and share maps with others. Create your own scenarios/battles for near infinite replayability.
|
||||
* Highly moddable, allowing a wide array of community created map packs, eras, and entire campaigns.
|
||||
* Online and local multiplayer gameplay to play with friends, strangers, or against the AI.
|
||||
* Changeable settings for base gameplay, with nearly limitless options for different hotkey configurations.
|
||||
* Beautifully composed playlist that captures the era and grandiosity of this lore-filled high-fantasy world.
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
@ -50,20 +34,14 @@ Wesnoth can be played on Windows, macOS, and Linux, and can be installed using:
|
|||
* standalone installers on [SourceForge](https://sourceforge.net/projects/wesnoth/files/) (Windows and macOS)
|
||||
* [Flatpak](https://flathub.org/apps/details/org.wesnoth.Wesnoth) (Linux)
|
||||
|
||||
Additionally, Wesnoth is available for [iOS](https://apps.apple.com/us/app/battle-for-wesnoth/id575852062) and [Android](https://sourceforge.net/projects/wesnoth-on-android/files/).
|
||||
Additionally, Wesnoth is available for [iOS](https://apps.apple.com/us/app/battle-for-wesnoth/id575852062) and [Android](https://play.google.com/store/apps/details?id=it.alessandropira.wesnoth114).
|
||||
|
||||
To build the game from source, see [INSTALL](/INSTALL.md) for instructions.
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
Wesnoth is most in need of skilled C++ developers (C++14 and later), however there are things that nearly anyone can help with:
|
||||
* Simple tasks in C++.
|
||||
* The Lua and WML used for content scripting.
|
||||
* Python used by various external tools.
|
||||
* Even play testing and giving feedback on updated campaigns!
|
||||
|
||||
Additionally, Wesnoth lacks art for a variety of unit animations - anyone who would be interested in lending a hand in updating existing unit sprites or creating animations should take a look at the [Art Contributions](https://forums.wesnoth.org/viewforum.php?f=9) forum as well as contact our current art director.
|
||||
Wesnoth is most in need of skilled C++ developers (C++14 and later), however there are things that nearly anyone can help with from simpler tasks in C++, the Lua and WML used for content scripting, Python used by various external tools, and even things like play testing and giving feedback on updated campaigns. Additionally, Wesnoth lacks art for a variety of unit animations - anyone who would be interested in lending a hand updating existing unit sprites or creating animations should take a look at the Art Forum as well as contact our current art director.
|
||||
|
||||
See also: [CONTRIBUTING](/CONTRIBUTING.md)
|
||||
|
||||
|
@ -73,7 +51,7 @@ For any questions, the best place to start is to simply join Wesnoth's forums, D
|
|||
Donations
|
||||
---------
|
||||
|
||||
Donations can be sent via [Software in the Public Interest](https://www.spi-inc.org/projects/wesnoth/), [Liberapay](https://liberapay.com/Wesnoth), as well as when downloading through itch.io. All money donated is used to pay for project expenses such as server rent and art commissions, and is very much appreciated.
|
||||
Donations can be sent via [Liberapay](https://liberapay.com/Wesnoth) as well as when downloading through itch.io. All money donated is used to pay for project expenses such as server rent and art commissions, and is very much appreciated.
|
||||
|
||||
|
||||
License
|
||||
|
@ -99,11 +77,3 @@ A (translated) description of how to play the game can be found in doc/manual/ma
|
|||
For information on creating your own maps, scenarios, and other content, see:
|
||||
|
||||
<https://wiki.wesnoth.org/Create>
|
||||
|
||||
Gallery
|
||||
-------
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
|
89
SConstruct
|
@ -9,8 +9,6 @@
|
|||
|
||||
EnsureSConsVersion(0,98,3)
|
||||
|
||||
lua_ver = "5.4"
|
||||
|
||||
import os, sys, shutil, re, subprocess
|
||||
from glob import glob
|
||||
from subprocess import Popen, PIPE, call, check_output
|
||||
|
@ -59,8 +57,7 @@ opts.AddVariables(
|
|||
('arch', 'What -march option to use for build=release, will default to pentiumpro on Windows', ""),
|
||||
('opt', 'override for the build\'s optimization level', ""),
|
||||
BoolVariable('harden', 'Whether to enable options to harden the executables', True),
|
||||
BoolVariable('glibcxx_assertions', 'Whether to define _GLIBCXX_ASSERTIONS for build=debug', False),
|
||||
BoolVariable('glibcxx_debug', "Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC for build=debug. Requires a version of Boost's program_options that's compiled with __GLIBCXX_DEBUG too.", False),
|
||||
BoolVariable('glibcxx_debug', 'Whether to define _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC for build=debug', False),
|
||||
EnumVariable('profiler', 'profiler to be used', "", ["", "gprof", "gcov", "gperftools", "perf"]),
|
||||
EnumVariable('pgo_data', 'whether to generate profiling data for PGO, or use existing profiling data', "", ["", "generate", "use"]),
|
||||
BoolVariable('use_srcdir', 'Whether to place object files in src/ or not', False),
|
||||
|
@ -103,7 +100,6 @@ opts.AddVariables(
|
|||
('boost_suffix', 'Suffix of boost libraries.'),
|
||||
PathVariable('gettextdir', 'Root directory of Gettext\'s installation.', "", OptionalPath),
|
||||
PathVariable('gtkdir', 'Directory where GTK SDK is installed.', "", OptionalPath),
|
||||
BoolVariable('system_lua', 'Enable use of system Lua ' + lua_ver + ' (compiled as C++, only for non-Windows systems).', False),
|
||||
PathVariable('luadir', 'Directory where Lua binary package is unpacked.', "", OptionalPath),
|
||||
('host', 'Cross-compile host.', ''),
|
||||
EnumVariable('multilib_arch', 'Address model for multilib compiler: 32-bit or 64-bit', "", ["", "32", "64"]),
|
||||
|
@ -118,9 +114,7 @@ opts.AddVariables(
|
|||
BoolVariable("autorevision", 'Use autorevision tool to fetch current git revision that will be embedded in version string', True),
|
||||
BoolVariable("lockfile", "Create a lockfile to prevent multiple instances of scons from being run at the same time on this working copy.", False),
|
||||
BoolVariable("OS_ENV", "Forward the entire OS environment to scons", False),
|
||||
BoolVariable("history", "Clear to disable GNU history support in lua console", True),
|
||||
BoolVariable('force_color', 'Always produce ANSI-colored output (GNU/Clang only).', False),
|
||||
BoolVariable('compile_db', 'Produce a compile_commands.json file.', False),
|
||||
BoolVariable("history", "Clear to disable GNU history support in lua console", True)
|
||||
)
|
||||
|
||||
#
|
||||
|
@ -167,8 +161,7 @@ else:
|
|||
from cross_compile import *
|
||||
setup_cross_compile(env)
|
||||
|
||||
if sys.platform != 'win32':
|
||||
env.Tool("system_include")
|
||||
env.Tool("system_include")
|
||||
|
||||
if 'HOME' in os.environ:
|
||||
env['ENV']['HOME'] = os.environ['HOME']
|
||||
|
@ -190,12 +183,7 @@ if env['distcc']:
|
|||
|
||||
if env['ccache']: env.Tool('ccache')
|
||||
|
||||
if env['compile_db']:
|
||||
env.Tool('compilation_db')
|
||||
cdb = env.CompilationDatabase()
|
||||
Alias('cdb', cdb)
|
||||
|
||||
boost_version = "1.67"
|
||||
boost_version = "1.66"
|
||||
|
||||
def SortHelpText(a, b):
|
||||
return (a > b) - (a < b)
|
||||
|
@ -211,7 +199,9 @@ Important switches include:
|
|||
in build/release and copy resulting binaries
|
||||
into distribution/working copy root.
|
||||
build=debug same for debug build variant
|
||||
binaries will be copied with -debug suffix
|
||||
build=profile build with instrumentation for a supported profiler
|
||||
binaries will be copied with -profile suffix
|
||||
|
||||
With no arguments, the recipe builds wesnoth and wesnothd. Available
|
||||
build targets include the individual binaries:
|
||||
|
@ -232,7 +222,6 @@ You can make the following special build targets:
|
|||
update-po = merge message catalog templates with localized message catalogs for particular lingua
|
||||
update-po4a = update translations of manual and manpages
|
||||
af bg ca ... = linguas for update-po
|
||||
translations = build all translations
|
||||
dist = make distribution tarball as wesnoth.tar.bz2 (*).
|
||||
data-dist = make data tarball as wesnoth-data.tar.bz2 (*).
|
||||
binary-dist = make data tarball as wesnoth-binaries.tar.bz2 (*).
|
||||
|
@ -322,7 +311,7 @@ def Warning(message):
|
|||
|
||||
from metasconf import init_metasconf
|
||||
configure_args = dict(
|
||||
custom_tests = init_metasconf(env, ["cplusplus", "sdl", "boost", "cairo", "pango", "pkgconfig", "gettext_tool", "lua"]),
|
||||
custom_tests = init_metasconf(env, ["cplusplus", "sdl", "boost", "cairo", "pango", "pkgconfig", "gettext_tool", "lua", "gl"]),
|
||||
config_h = "$build_dir/config.h",
|
||||
log_file="$build_dir/config.log", conf_dir="$build_dir/sconf_temp")
|
||||
|
||||
|
@ -340,15 +329,6 @@ if "gcc" in env["TOOLS"]:
|
|||
env.AppendUnique(CCFLAGS = Split("-Wall -Wextra"))
|
||||
env.AppendUnique(CXXFLAGS = Split("-Werror=non-virtual-dtor -std=c++" + env["cxx_std"]))
|
||||
|
||||
# GCC-13 added this new warning, and included it in -Wextra,
|
||||
# however in GCC-13 it has a lot of false positives.
|
||||
#
|
||||
# It's likely to generate false postives with GCC-14 too, but
|
||||
# I'm using a narrow version check as GCC-14 is still in dev.
|
||||
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110075
|
||||
if "CXXVERSION" in env and env["CXXVERSION"].startswith("13."):
|
||||
env.AppendUnique(CXXFLAGS = "-Wno-dangling-reference")
|
||||
|
||||
if env["prereqs"]:
|
||||
conf = env.Configure(**configure_args)
|
||||
|
||||
|
@ -370,22 +350,21 @@ if env["prereqs"]:
|
|||
|
||||
def have_sdl_other():
|
||||
return \
|
||||
conf.CheckSDL2('2.0.18') & \
|
||||
conf.CheckSDL2Mixer() & \
|
||||
conf.CheckSDL2Image()
|
||||
conf.CheckSDL(require_version = '2.0.8') & \
|
||||
conf.CheckSDL("SDL2_mixer", header_file = "SDL_mixer") & \
|
||||
conf.CheckSDL("SDL2_image", header_file = "SDL_image")
|
||||
|
||||
if sys.platform == "msys":
|
||||
env["PKG_CONFIG_FLAGS"] = "--dont-define-prefix"
|
||||
|
||||
have_server_prereqs = (\
|
||||
conf.CheckCPlusPlus(gcc_version = "8") & \
|
||||
conf.CheckCPlusPlus(gcc_version = "7") & \
|
||||
conf.CheckBoost("iostreams", require_version = boost_version) & \
|
||||
conf.CheckBoostIostreamsGZip() & \
|
||||
conf.CheckBoostIostreamsBZip2() & \
|
||||
conf.CheckBoost("program_options", require_version = boost_version) & \
|
||||
conf.CheckBoost("random", require_version = boost_version) & \
|
||||
conf.CheckBoost("smart_ptr", header_only = True) & \
|
||||
conf.CheckBoostCharconv() & \
|
||||
CheckAsio(conf) & \
|
||||
conf.CheckBoost("thread") & \
|
||||
conf.CheckBoost("locale") & \
|
||||
|
@ -411,26 +390,12 @@ if env["prereqs"]:
|
|||
have_client_prereqs = have_client_prereqs & conf.CheckLib("vorbisfile") & conf.CheckOgg()
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckPNG()
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckJPG()
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckWebP()
|
||||
# have_client_prereqs = have_client_prereqs & conf.CheckOpenGL()
|
||||
# have_client_prereqs = have_client_prereqs & conf.CheckGLEW()
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckCairo(min_version = "1.10")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckPango("cairo", require_version = "1.44.0")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckPango("cairo", require_version = "1.22.0")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckPKG("fontconfig")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckBoost("regex")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckLib("curl")
|
||||
have_client_prereqs = have_client_prereqs & conf.CheckBoost("graph")
|
||||
|
||||
if env["system_lua"]:
|
||||
if env["PLATFORM"] == 'win32':
|
||||
Warning("System Lua cannot be used on Windows.")
|
||||
if not conf.CheckLua(lua_ver):
|
||||
have_client_prereqs = False
|
||||
else:
|
||||
if not File("#/src/modules/lua/.git").rfile().exists():
|
||||
have_client_prereqs = False
|
||||
Warning("Lua submodule does not exist. You must run 'git submodule update --init --recursive' to initialize it.")
|
||||
else:
|
||||
print("Lua submodule found.")
|
||||
|
||||
if not have_client_prereqs:
|
||||
Warning("Client prerequisites are not met. wesnoth cannot be built.")
|
||||
|
||||
|
@ -508,8 +473,6 @@ for env in [test_env, client_env, env]:
|
|||
if os.path.isabs(env["build_dir"]):
|
||||
build_root = ""
|
||||
env.Prepend(CPPPATH = [build_root + "$build_dir", "#/src"])
|
||||
if env["system_lua"]:
|
||||
env.Append(CPPDEFINES = ["HAVE_SYSTEM_LUA"])
|
||||
|
||||
env.Append(CPPDEFINES = ["HAVE_CONFIG_H"])
|
||||
|
||||
|
@ -519,8 +482,6 @@ for env in [test_env, client_env, env]:
|
|||
|
||||
if env['pedantic']:
|
||||
env.AppendUnique(CXXFLAGS = Split("-Wdocumentation -Wno-documentation-deprecated-sync"))
|
||||
if env['force_color']:
|
||||
env.AppendUnique(CCFLAGS = ["-fcolor-diagnostics"])
|
||||
|
||||
if "gcc" in env["TOOLS"]:
|
||||
env.AppendUnique(CCFLAGS = Split("-Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wtrampolines"))
|
||||
|
@ -534,9 +495,6 @@ for env in [test_env, client_env, env]:
|
|||
if env['sanitize']:
|
||||
env.AppendUnique(CCFLAGS = ["-fsanitize=" + env["sanitize"]], LINKFLAGS = ["-fsanitize=" + env["sanitize"]])
|
||||
env.AppendUnique(CCFLAGS = Split("-fno-omit-frame-pointer -fno-optimize-sibling-calls"))
|
||||
if env['force_color']:
|
||||
env.AppendUnique(CCFLAGS = ["-fdiagnostics-color=always"])
|
||||
|
||||
|
||||
# #
|
||||
# Determine optimization level
|
||||
|
@ -581,11 +539,10 @@ for env in [test_env, client_env, env]:
|
|||
debug_flags = Split(debug_flags)
|
||||
debug_flags.append("${ '-O3' if TARGET.name == 'gettext.o' else '' }") # workaround for "File too big" errors
|
||||
|
||||
glibcxx_debug_flags = ""
|
||||
if env["glibcxx_assertions"] == True:
|
||||
glibcxx_debug_flags = " ".join([glibcxx_debug_flags, "_GLIBCXX_ASSERTIONS"])
|
||||
if env["glibcxx_debug"] == True:
|
||||
glibcxx_debug_flags = " ".join([glibcxx_debug_flags, "_GLIBCXX_DEBUG", "_GLIBCXX_DEBUG_PEDANTIC"])
|
||||
glibcxx_debug_flags = "_GLIBCXX_DEBUG _GLIBCXX_DEBUG_PEDANTIC"
|
||||
else:
|
||||
glibcxx_debug_flags = ""
|
||||
|
||||
# #
|
||||
# End determining options for debug build
|
||||
|
@ -672,7 +629,7 @@ for env in [test_env, client_env, env]:
|
|||
env[d] = os.path.join(env["prefix"], env[d])
|
||||
|
||||
if env["PLATFORM"] == 'win32':
|
||||
env.Append(LIBS = ["wsock32", "crypt32", "iconv", "z", "shlwapi", "winmm", "ole32", "uuid"], CCFLAGS = ["-mthreads"], LINKFLAGS = ["-mthreads"], CPPDEFINES = ["_WIN32_WINNT=0x0A00"])
|
||||
env.Append(LIBS = ["wsock32", "crypt32", "iconv", "z", "shlwapi", "winmm", "ole32", "uuid"], CCFLAGS = ["-mthreads"], LINKFLAGS = ["-mthreads"], CPPDEFINES = ["_WIN32_WINNT=0x0601"])
|
||||
|
||||
if env["PLATFORM"] == 'darwin': # Mac OS X
|
||||
env.Append(FRAMEWORKS = "Cocoa") # Cocoa GUI
|
||||
|
@ -680,9 +637,6 @@ for env in [test_env, client_env, env]:
|
|||
env.Append(FRAMEWORKS = "IOKit") # IOKit
|
||||
env.Append(FRAMEWORKS = "CoreGraphics") # CoreGraphics
|
||||
|
||||
if env["PLATFORM"] == 'sunos':
|
||||
env.Append(LINKFLAGS = "-lsocket")
|
||||
|
||||
if not env['static_test']:
|
||||
test_env.Append(CPPDEFINES = "BOOST_TEST_DYN_LINK")
|
||||
|
||||
|
@ -715,6 +669,9 @@ if env["use_srcdir"] == True:
|
|||
else:
|
||||
build_dir = os.path.join("$build_dir", build)
|
||||
|
||||
if build == "release" : build_suffix = ""
|
||||
else : build_suffix = "-" + build
|
||||
Export("build_suffix")
|
||||
env.SConscript("src/SConscript", variant_dir = build_dir, duplicate = False)
|
||||
Import(binaries + ["sources"])
|
||||
binary_nodes = [eval(binary) for binary in binaries]
|
||||
|
@ -743,7 +700,7 @@ env.Clean(all, 'TAGS')
|
|||
# Unix installation productions
|
||||
#
|
||||
# These will not be portable to Windows or Mac. They assume a Unix-like
|
||||
# directory structure and FreeDesktop standard locations for icon, app,
|
||||
# directory structure and FreeDesktop standard locations foicon, app,
|
||||
# and doc files.
|
||||
#
|
||||
|
||||
|
@ -820,7 +777,7 @@ env.InstallBinary(campaignd)
|
|||
install = env.Alias('install', [])
|
||||
for installable in ('wesnoth',
|
||||
'wesnothd', 'campaignd'):
|
||||
if os.path.exists(installable) or installable in COMMAND_LINE_TARGETS or "all" in COMMAND_LINE_TARGETS:
|
||||
if os.path.exists(installable + build_suffix) or installable in COMMAND_LINE_TARGETS or "all" in COMMAND_LINE_TARGETS:
|
||||
env.Alias('install', env.Alias('install-'+installable))
|
||||
|
||||
#
|
||||
|
|
332
add_source_file
|
@ -1,332 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# encoding: utf-8
|
||||
|
||||
# known issues:
|
||||
# xcode - if a file already exists in 'wesnoth' target, then it incorrectly thinks it also exists in the 'tests' target even though the tests build will fail
|
||||
|
||||
"""
|
||||
Add files to the specified build targets, supporting
|
||||
CMake, SCons, Xcode and the Code::Blocks projects.
|
||||
|
||||
Valid build targets are:
|
||||
* "wesnoth" - the main game (default if no target is specified)
|
||||
* "wesnothd" - the wesnoth server
|
||||
* "campaignd"
|
||||
* "lua"
|
||||
* "tests" - boost unit tests
|
||||
|
||||
The files will be added to:
|
||||
* the lists used by CMake and SCons in "source_lists"
|
||||
* the Xcode project
|
||||
* The Code::Blocks project
|
||||
|
||||
This only supports files inside the "src" directory.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
import inspect
|
||||
import pathlib
|
||||
|
||||
try:
|
||||
import pbxproj
|
||||
except:
|
||||
print('\n'.join((
|
||||
'This script requires the "pbxproj" module.',
|
||||
'Install it using "pip install pbxproj"',
|
||||
'optionally setting up a python3-venv first.',
|
||||
)))
|
||||
exit(1)
|
||||
|
||||
#=========#
|
||||
# Globals #
|
||||
#=========#
|
||||
|
||||
# Either the executable directory or the current working directory
|
||||
# should be the wesnoth root directory
|
||||
rootdir = pathlib.Path(inspect.getsourcefile(lambda:0))
|
||||
if not rootdir.joinpath("projectfiles").exists():
|
||||
rootdir = pathlib.Path()
|
||||
if not rootdir.joinpath("projectfiles").exists():
|
||||
raise Exception("Could not find project file directory")
|
||||
|
||||
# the names of the targets in the Xcode project
|
||||
xcode_target_translations = {
|
||||
"wesnoth": ["The Battle for Wesnoth", "unit_tests"],
|
||||
"wesnothd": ["wesnothd"],
|
||||
"campaignd": ["campaignd"],
|
||||
"lua": ["liblua"],
|
||||
"tests": ["unit_tests"],
|
||||
}
|
||||
|
||||
# the names of the targets in source_lists
|
||||
source_list_target_translations = {
|
||||
"wesnoth": "wesnoth",
|
||||
"wesnothd": "wesnothd",
|
||||
"campaignd": "campaignd",
|
||||
"lua": "lua",
|
||||
"tests": "boost_unit_tests",
|
||||
}
|
||||
|
||||
# the names of the targets in Code::Blocks
|
||||
code_blocks_target_translations = {
|
||||
"wesnoth": "wesnoth",
|
||||
"wesnothd": "wesnothd",
|
||||
"campaignd": "campaignd",
|
||||
"lua": "liblua",
|
||||
"tests": "tests",
|
||||
}
|
||||
|
||||
#=======#
|
||||
# XCode #
|
||||
#=======#
|
||||
|
||||
def modify_xcode(filename, targets, remove):
|
||||
"""Add the given file to the specified targets.
|
||||
"""
|
||||
projectfile = rootdir.joinpath(
|
||||
"projectfiles",
|
||||
"Xcode",
|
||||
"The Battle for Wesnoth.xcodeproj",
|
||||
"project.pbxproj",
|
||||
)
|
||||
|
||||
project = pbxproj.XcodeProject.load(projectfile)
|
||||
|
||||
translated_targets = [item for t in targets for item in xcode_target_translations[t]]
|
||||
translated_targets = list(set(translated_targets))
|
||||
print(" xcode targets:", translated_targets)
|
||||
|
||||
for tname in translated_targets:
|
||||
if not project.get_target_by_name(tname):
|
||||
raise Exception(
|
||||
f"Could not find target '{tname}' in Xcode project file")
|
||||
|
||||
# groups are organized by directory structure under "src"
|
||||
# except for tests, which have a separate root, "tests"
|
||||
if pathlib.Path("tests") in filename.parents:
|
||||
src_groups = project.get_groups_by_name("tests")
|
||||
else:
|
||||
src_groups = project.get_groups_by_name("src")
|
||||
if len(src_groups) != 1:
|
||||
raise Exception("problem finding 'src' group in xcode project")
|
||||
src_group = src_groups[0]
|
||||
parent_group = src_group
|
||||
for d in filename.parts[:-1]:
|
||||
if d == "tests":
|
||||
continue
|
||||
found_groups = project.get_groups_by_name(d, parent=parent_group)
|
||||
if len(found_groups) != 1:
|
||||
groupname = parent_group.get_name()
|
||||
raise Exception(f"problem finding '{d}' group in '{groupname}'")
|
||||
parent_group = found_groups[0]
|
||||
|
||||
if remove :
|
||||
# Remove from all targets if we want to remove
|
||||
for file in project.get_files_by_name(filename.name, parent=parent_group):
|
||||
project.remove_file_by_id(file.get_id())
|
||||
else:
|
||||
# if the group already has an entry with the same filename, loudly skip.
|
||||
# note: this doesn't allow adding to targets one at a time.
|
||||
# a new file should be added to all targets at once...
|
||||
# or maybe targets could be checked somehow,
|
||||
# or maybe the file could simply be completely removed and readded.
|
||||
if project.get_files_by_name(filename.name, parent=parent_group):
|
||||
print(" '"+filename.name+"' already found in Xcode project '"+",".join(translated_targets)+"', skipping")
|
||||
return
|
||||
|
||||
# force is True here because otherwise a duplicate filename in
|
||||
# a different place will block addition of the new file.
|
||||
# the rest is just to match existing project file structure.
|
||||
project.add_file(filename.name,
|
||||
force=True,
|
||||
tree="<group>",
|
||||
parent=parent_group,
|
||||
target_name=translated_targets,
|
||||
)
|
||||
|
||||
# that's done, save the file
|
||||
project.save()
|
||||
return
|
||||
|
||||
#==============#
|
||||
# source_lists #
|
||||
#==============#
|
||||
|
||||
def modify_source_list(filename, source_list, remove):
|
||||
source_list_file = rootdir.joinpath("source_lists", source_list)
|
||||
sl_lines = open(source_list_file).readlines()
|
||||
file_line = filename.as_posix() + '\n'
|
||||
|
||||
# we only need source files in the source_lists, not header files
|
||||
if filename.suffix != ".cpp":
|
||||
return
|
||||
|
||||
if remove:
|
||||
if file_line in sl_lines: sl_lines.remove(file_line)
|
||||
else:
|
||||
# if the target already has an entry with the same filename, loudly skip
|
||||
if file_line in sl_lines:
|
||||
print(f" '{filename}' already found in '{source_list}', skipping")
|
||||
return
|
||||
|
||||
sl_lines.append(file_line)
|
||||
|
||||
sl_lines.sort()
|
||||
open(source_list_file, 'w').writelines(sl_lines)
|
||||
|
||||
def add_to_source_lists(filename, targets):
|
||||
translated_targets = [source_list_target_translations[t] for t in targets]
|
||||
print(" source_list targets:", translated_targets)
|
||||
for t in translated_targets:
|
||||
modify_source_list(filename, t, False)
|
||||
|
||||
def remove_from_source_lists(filename):
|
||||
# remove from all tagerts if -r was specified.
|
||||
for t in source_list_target_translations.values():
|
||||
modify_source_list(filename, t, True)
|
||||
|
||||
#==============#
|
||||
# Code::Blocks #
|
||||
#==============#
|
||||
|
||||
def modify_code_blocks_target(filename, target, remove):
|
||||
cbp_file = rootdir.joinpath(
|
||||
"projectfiles",
|
||||
"CodeBlocks",
|
||||
f"{target}.cbp",
|
||||
)
|
||||
cbp_lines = open(cbp_file).readlines()
|
||||
|
||||
filename_for_cbp = pathlib.PurePath(
|
||||
"..", "..", "src", filename
|
||||
).as_posix()
|
||||
|
||||
elem = f"\t\t<Unit filename=\"{filename_for_cbp}\" />\n"
|
||||
|
||||
if remove:
|
||||
if elem in cbp_lines: cbp_lines.remove(elem)
|
||||
else:
|
||||
# if the target already has an entry with the same filename, loudly skip
|
||||
if elem in cbp_lines:
|
||||
print(f" '{filename}' already found in '{target}.cbp', skipping")
|
||||
return
|
||||
|
||||
# find an appropriate line to add before/after
|
||||
index = 0
|
||||
for line in cbp_lines:
|
||||
if line.startswith("\t\t<Unit "):
|
||||
if elem < line:
|
||||
break
|
||||
elif line.startswith("\t\t<Extensions>"):
|
||||
# we must be the last entry, as this comes after the Unit section
|
||||
break
|
||||
index += 1
|
||||
cbp_lines.insert(index, elem)
|
||||
|
||||
open(cbp_file, 'w').writelines(cbp_lines)
|
||||
|
||||
def modify_code_blocks(filename, targets, remove):
|
||||
translated_targets = code_blocks_target_translations.values() if remove else [code_blocks_target_translations[t] for t in targets]
|
||||
print(" code::blocks targets:", translated_targets)
|
||||
for t in translated_targets:
|
||||
modify_code_blocks_target(filename, t, remove)
|
||||
|
||||
def sanity_check_existing_cpp_hpp(filenames):
|
||||
"""
|
||||
If we're adding a .cpp file, check whether a .hpp should be added too, etc.
|
||||
Only the files named on the command line are added, this exits if the check fails.
|
||||
"""
|
||||
any_check_failed = False
|
||||
for filename in filenames:
|
||||
if filenames.count(filename) > 1:
|
||||
print(f"ERROR: File '{filename}' given multiple times")
|
||||
any_check_failed = True
|
||||
|
||||
if not rootdir.joinpath("src", filename).exists():
|
||||
print(f"WARN: File '{filename}' does not exist")
|
||||
any_check_failed = True
|
||||
|
||||
spouse = None
|
||||
if filename.suffix == ".cpp":
|
||||
spouse = filename.with_suffix(".hpp")
|
||||
elif filename.suffix == ".hpp":
|
||||
spouse = filename.with_suffix(".cpp")
|
||||
|
||||
if rootdir.joinpath("src", spouse).exists() and not filenames.count(spouse):
|
||||
print(f"WARN: Requested to add '{filename}', should '{spouse}' be added too?")
|
||||
any_check_failed = True
|
||||
|
||||
if any_check_failed:
|
||||
break
|
||||
|
||||
if any_check_failed:
|
||||
print("ERROR: Not making changes, as checks failed and --no-checks option was not used.")
|
||||
exit(1)
|
||||
|
||||
def canonicalise_filenames(original_filenames):
|
||||
"""
|
||||
The script supports giving the filenames with or without the "src/" prefix.
|
||||
|
||||
Strip the "src/" if present, functions that need it will add it again later.
|
||||
"""
|
||||
filenames = []
|
||||
|
||||
# If src/src/ exists, the filenames become ambiguous. No need to support that.
|
||||
if rootdir.joinpath("src", "src").exists():
|
||||
print("Please don't add a file or directory called src/src.")
|
||||
exit(1)
|
||||
|
||||
for filename in options.filename:
|
||||
filename = pathlib.PurePath(filename)
|
||||
parts = filename.parts
|
||||
if parts[0] == "src":
|
||||
filename = pathlib.PurePath(*parts[1:])
|
||||
else:
|
||||
filename = pathlib.PurePath(*parts)
|
||||
filenames.append(filename)
|
||||
|
||||
return filenames
|
||||
|
||||
#======#
|
||||
# main #
|
||||
#======#
|
||||
|
||||
if __name__ == "__main__":
|
||||
ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
# a file argument is mandatory
|
||||
ap.add_argument("filename", action="store", nargs="+",
|
||||
help="the .cpp and .hpp files to add")
|
||||
ap.add_argument("--target", action="store", nargs=1,
|
||||
default=["wesnoth"],
|
||||
help="which build targets to add the file to")
|
||||
ap.add_argument("--no-checks", action="store_true",
|
||||
help="do not check whether the files exist, etc")
|
||||
ap.add_argument("-r", "--remove", action="store_true",
|
||||
help="remove the specified files from projectfiles instead of adding them, --target is then ignored")
|
||||
# By default, recognise --help too
|
||||
options = ap.parse_args()
|
||||
|
||||
# Bail out if someone uses the old syntax of "add_source_file src/foo.cpp campaignd"
|
||||
if not options.no_checks:
|
||||
if len(options.filename) == 2 and not options.filename[1].count('.'):
|
||||
print("The usage has changed, targets now need to be given using --target name")
|
||||
exit(1)
|
||||
|
||||
# Convert the names to pathlib.PurePath objects without leading "src/"
|
||||
filenames = canonicalise_filenames(options.filename)
|
||||
|
||||
if not options.no_checks:
|
||||
sanity_check_existing_cpp_hpp(filenames)
|
||||
|
||||
for filename in filenames:
|
||||
if options.remove:
|
||||
print(f"removing '{filename}' from all targets")
|
||||
modify_xcode(filename, options.target, True)
|
||||
remove_from_source_lists(filename)
|
||||
modify_code_blocks(filename, options.target, True)
|
||||
else:
|
||||
print(f"adding '{filename}' to targets: {options.target}")
|
||||
modify_xcode(filename, options.target, False)
|
||||
add_to_source_lists(filename, options.target)
|
||||
modify_code_blocks(filename, options.target, False)
|
|
@ -2,29 +2,23 @@ This directory contains old art and resources not currently used anywhere in
|
|||
the game. It should not ship with the distribution tarball.
|
||||
Some notes on specific images and image groups follow:
|
||||
|
||||
scepter_of_fire.png:
|
||||
Old story image of the Scepter, quite large.
|
||||
|
||||
units/thain.png,units/thain2.png:
|
||||
Originally from SoF. 1.3-sized.
|
||||
|
||||
desert-elvish-druid-statue.png, desert-elvish-shyde-statue:
|
||||
Used in older versions of UtBS. 1.3-sized.
|
||||
|
||||
keratur.png:
|
||||
The original image for the uncloaked assassin in UtBS. 1.3-sized.
|
||||
|
||||
spider-lich.png:
|
||||
Old unit image from UtBS.
|
||||
|
||||
clasher-attack-mace.png
|
||||
Orphaned when the Drake Clasher lost this attack.
|
||||
|
||||
keratur.png
|
||||
The original image for the uncloaked assassin in UtBS. 1.3-sized.
|
||||
|
||||
perrin.png
|
||||
Originally from THoT. No longer used, removed for GitHub #6602.
|
||||
|
||||
ratheln.png
|
||||
Originally from THoT. No longer used, removed in GitHub #6593.
|
||||
|
||||
righteous-flame-icon.png
|
||||
Originally from THoT. No longer used, removed for GitHub #6602.
|
||||
|
||||
scepter_of_fire.png
|
||||
Old story image of the Scepter, quite large.
|
||||
|
||||
spider-lich.png
|
||||
Old unit image from UtBS.
|
||||
|
||||
thain.png,thain2.png
|
||||
Originally from SoF. 1.3-sized.
|
||||
|
||||
units/fire-dragon-flying-*.png
|
||||
Jetryl plans to finish these. See FR #11041.
|
||||
|
|
Before Width: | Height: | Size: 428 B After Width: | Height: | Size: 292 B |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 799 B After Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
BIN
attic/perrin.png
Before Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 214 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 815 B After Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1,014 B |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 815 B After Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 655 B After Width: | Height: | Size: 517 B |
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 508 B |
Before Width: | Height: | Size: 914 B After Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 953 B After Width: | Height: | Size: 815 B |
Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 973 B After Width: | Height: | Size: 835 B |
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 953 B |
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 250 B |
Before Width: | Height: | Size: 673 B After Width: | Height: | Size: 535 B |
Before Width: | Height: | Size: 882 B After Width: | Height: | Size: 744 B |
Before Width: | Height: | Size: 882 B After Width: | Height: | Size: 744 B |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 752 B |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 587 B After Width: | Height: | Size: 449 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 584 B After Width: | Height: | Size: 446 B |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 990 B After Width: | Height: | Size: 852 B |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 901 B |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 107 B |
Before Width: | Height: | Size: 251 B After Width: | Height: | Size: 113 B |
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 118 B |
Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 208 B |