Compare commits
876 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
848eb46867 | ||
![]() |
3cc8ddb5a2 | ||
![]() |
746c060d2d | ||
![]() |
59d29f7628 | ||
![]() |
c096793f08 | ||
![]() |
0876995096 | ||
![]() |
dafc9a5597 | ||
![]() |
746ac09b95 | ||
![]() |
f52d3341cb | ||
![]() |
7fe4536910 | ||
![]() |
7ac9e55a8d | ||
![]() |
441854d2ac | ||
![]() |
4889ca1cca | ||
![]() |
1fe15fe6e9 | ||
![]() |
02c52deef8 | ||
![]() |
28f4682779 | ||
![]() |
8674bd3f8a | ||
![]() |
f5d3846748 | ||
![]() |
0b7c7033e3 | ||
![]() |
1653b9f8c3 | ||
![]() |
fa43e3688b | ||
![]() |
caf6587318 | ||
![]() |
12295c9e90 | ||
![]() |
d51c4b870b | ||
![]() |
230ebdaf44 | ||
![]() |
182da61ef2 | ||
![]() |
e2b087cec7 | ||
![]() |
5e867e21f9 | ||
![]() |
dd1d5064e3 | ||
![]() |
98b9afca18 | ||
![]() |
89fc59cff6 | ||
![]() |
b3cbc45069 | ||
![]() |
5c2fc6d051 | ||
![]() |
4dd7159b5d | ||
![]() |
3a10620fea | ||
![]() |
029a6d1921 | ||
![]() |
14b5bb32ba | ||
![]() |
1a69da5b57 | ||
![]() |
6e07c7deac | ||
![]() |
5209493bc5 | ||
![]() |
f07b02eb6e | ||
![]() |
509bbec686 | ||
![]() |
04aa0b8f58 | ||
![]() |
ac12ab186a | ||
![]() |
405499d2f0 | ||
![]() |
0060d68021 | ||
![]() |
c0850701a3 | ||
![]() |
beb357a62f | ||
![]() |
6866d48897 | ||
![]() |
fb4a390993 | ||
![]() |
7ca4d0078d | ||
![]() |
25c2e6d888 | ||
![]() |
86ca71e379 | ||
![]() |
4e414157d0 | ||
![]() |
a14704ed90 | ||
![]() |
9547e431b3 | ||
![]() |
668d0f8322 | ||
![]() |
3ac1546a7d | ||
![]() |
36bf54d41c | ||
![]() |
c45f937bcf | ||
![]() |
cd3e131192 | ||
![]() |
8c20631388 | ||
![]() |
40216bb964 | ||
![]() |
5cbd9e5b09 | ||
![]() |
eb04e22ced | ||
![]() |
ca4b8ac770 | ||
![]() |
94bfbeee8f | ||
![]() |
3b86870931 | ||
![]() |
acda73e31a | ||
![]() |
48259abb36 | ||
![]() |
ba45177200 | ||
![]() |
7784bcf877 | ||
![]() |
5d28dc51ad | ||
![]() |
383c690af4 | ||
![]() |
d7aaf80f57 | ||
![]() |
44c16313ad | ||
![]() |
4988927e8c | ||
![]() |
4af68d8767 | ||
![]() |
4a2740384e | ||
![]() |
82db069707 | ||
![]() |
6fa1bd0687 | ||
![]() |
4b57e1d8c5 | ||
![]() |
8e98cd3edd | ||
![]() |
cb838c4896 | ||
![]() |
ddfcac15cd | ||
![]() |
c4ee600465 | ||
![]() |
ee68d42529 | ||
![]() |
199c3fcc79 | ||
![]() |
f673644961 | ||
![]() |
63bdc6c69e | ||
![]() |
5ffe15c991 | ||
![]() |
69c46988ee | ||
![]() |
bd4046894c | ||
![]() |
19c0e2f80b | ||
![]() |
09b07c8ce3 | ||
![]() |
da21c52cef | ||
![]() |
199c3fde98 | ||
![]() |
f3d92df757 | ||
![]() |
e48253c780 | ||
![]() |
afc39b880d | ||
![]() |
00e2d8655c | ||
![]() |
3228b59faa | ||
![]() |
9080c19f59 | ||
![]() |
fdff24df4b | ||
![]() |
5917758296 | ||
![]() |
854317a29f | ||
![]() |
ff89c230ba | ||
![]() |
0862043258 | ||
![]() |
cdb32f15ec | ||
![]() |
2cceaf0b5a | ||
![]() |
a323ecdd53 | ||
![]() |
f8af3c190a | ||
![]() |
400507d27f | ||
![]() |
0ab359ffd6 | ||
![]() |
cf5020c87b | ||
![]() |
446dbf63bc | ||
![]() |
980236d7c2 | ||
![]() |
c1cd4c33df | ||
![]() |
1dbb562d01 | ||
![]() |
11de2f6eaa | ||
![]() |
6dd8749ac9 | ||
![]() |
eb072aceb1 | ||
![]() |
cba2d310c7 | ||
![]() |
d2287a11ba | ||
![]() |
1f899f654d | ||
![]() |
8848d142d9 | ||
![]() |
2f3b017d4f | ||
![]() |
a90131bbce | ||
![]() |
d4337bf544 | ||
![]() |
c50fafa5d7 | ||
![]() |
81325d7856 | ||
![]() |
4d34a2b21b | ||
![]() |
165bfb5921 | ||
![]() |
b08e46e6a0 | ||
![]() |
0903427cbf | ||
![]() |
b2ca482166 | ||
![]() |
3aac8b8cd9 | ||
![]() |
d3c3a00432 | ||
![]() |
d8bb129102 | ||
![]() |
89b8bed8ce | ||
![]() |
7b60ff5ed6 | ||
![]() |
e48fe86ee6 | ||
![]() |
83fd82fadb | ||
![]() |
507e16718e | ||
![]() |
aff327124f | ||
![]() |
f64062ef7b | ||
![]() |
c60c921864 | ||
![]() |
81111787a1 | ||
![]() |
1afc66fe7b | ||
![]() |
0d75d02732 | ||
![]() |
345550afc7 | ||
![]() |
c664c8d215 | ||
![]() |
98a59c6240 | ||
![]() |
2841b1d2fd | ||
![]() |
ff856035c0 | ||
![]() |
8388b185be | ||
![]() |
00c8bbe6ad | ||
![]() |
8ec8a30f2e | ||
![]() |
4b54a8b042 | ||
![]() |
7bbbdddfbb | ||
![]() |
361b8f1f2e | ||
![]() |
b75cd1e329 | ||
![]() |
4be1765273 | ||
![]() |
970aae2eda | ||
![]() |
120c646c1f | ||
![]() |
43c63186c1 | ||
![]() |
c98e21818e | ||
![]() |
ee8630eaf9 | ||
![]() |
f8fff0c213 | ||
![]() |
85fc736a22 | ||
![]() |
67ff80767a | ||
![]() |
4168e62d4f | ||
![]() |
9427443283 | ||
![]() |
503b9d772a | ||
![]() |
1ad8c12a69 | ||
![]() |
950cf8defa | ||
![]() |
2a26d66baa | ||
![]() |
bb63e44da4 | ||
![]() |
738c28a479 | ||
![]() |
c5f6abb642 | ||
![]() |
ca04341e82 | ||
![]() |
7f1e95f9fa | ||
![]() |
f54438ce0a | ||
![]() |
073649f7eb | ||
![]() |
6ddca87ec4 | ||
![]() |
f1f491814f | ||
![]() |
d30987023c | ||
![]() |
ac5eeb0ed5 | ||
![]() |
6f2bc32023 | ||
![]() |
fcdaed7aa7 | ||
![]() |
e813240e4b | ||
![]() |
fa2c3aa134 | ||
![]() |
16576d3595 | ||
![]() |
2a9e130dca | ||
![]() |
9fd2e4c203 | ||
![]() |
8fdeb979ad | ||
![]() |
4c7f4f2b83 | ||
![]() |
252e8223ee | ||
![]() |
08e353942f | ||
![]() |
ead3af2bef | ||
![]() |
8e6936eccc | ||
![]() |
ea23d79284 | ||
![]() |
570fc10239 | ||
![]() |
a398376ce7 | ||
![]() |
ee75c96640 | ||
![]() |
9bea72416d | ||
![]() |
4b6c5c6196 | ||
![]() |
09537668d9 | ||
![]() |
8b8b3e3c52 | ||
![]() |
6365ec4411 | ||
![]() |
c182bda3fe | ||
![]() |
f0bc7fd585 | ||
![]() |
acdaa4e9ad | ||
![]() |
edf2ab92dc | ||
![]() |
ed2d47b6c3 | ||
![]() |
e2fbc584c9 | ||
![]() |
1a600bc22a | ||
![]() |
5815377e8e | ||
![]() |
a35dd86479 | ||
![]() |
87962871aa | ||
![]() |
321359dad9 | ||
![]() |
2b2cf70342 | ||
![]() |
6bac46e285 | ||
![]() |
d4c88b577f | ||
![]() |
23eab78c96 | ||
![]() |
743b41b145 | ||
![]() |
bdac100552 | ||
![]() |
a045b273cc | ||
![]() |
2beec3a977 | ||
![]() |
189a1821d7 | ||
![]() |
76fc5ec459 | ||
![]() |
53049b2e0c | ||
![]() |
569e67068b | ||
![]() |
eb7b913141 | ||
![]() |
6d937c5aa2 | ||
![]() |
704d08807d | ||
![]() |
2ebdce72b9 | ||
![]() |
fd7b6be3fe | ||
![]() |
a0c68f1450 | ||
![]() |
2e3d0e4dc0 | ||
![]() |
d9f3dfe94a | ||
![]() |
260fb57307 | ||
![]() |
1aeeade697 | ||
![]() |
cb7efd4011 | ||
![]() |
97db358924 | ||
![]() |
9d77bb8551 | ||
![]() |
0793a64323 | ||
![]() |
cf66ffc73d | ||
![]() |
9cff0de267 | ||
![]() |
26be201c8a | ||
![]() |
987bfb1b49 | ||
![]() |
1f3ec76e0e | ||
![]() |
c1cf44ecfd | ||
![]() |
d34a61d16f | ||
![]() |
c4e8ac32e6 | ||
![]() |
db0f38c27d | ||
![]() |
ab56d1cb94 | ||
![]() |
c3ef7fcb83 | ||
![]() |
7cb5532848 | ||
![]() |
c3360d5e6a | ||
![]() |
7cf6e83461 | ||
![]() |
1a6f3c3aa6 | ||
![]() |
49526da064 | ||
![]() |
bf3757bf4d | ||
![]() |
57a035280e | ||
![]() |
7896b0a7ee | ||
![]() |
3beb49ff30 | ||
![]() |
2ab8c682cd | ||
![]() |
5b48aebd33 | ||
![]() |
f05dcd7322 | ||
![]() |
1f8f9671d2 | ||
![]() |
17b3d72feb | ||
![]() |
d0324cd608 | ||
![]() |
1f4ae99a84 | ||
![]() |
23eda986e5 | ||
![]() |
f34dbf7e08 | ||
![]() |
0046ef789f | ||
![]() |
9a606ef052 | ||
![]() |
a2bb57d1a0 | ||
![]() |
9e9498c52a | ||
![]() |
af2fd33741 | ||
![]() |
1f7b5ad81a | ||
![]() |
3d57a72ace | ||
![]() |
dba7c22395 | ||
![]() |
a005dd1b3d | ||
![]() |
952e4d895b | ||
![]() |
04c8bb08a2 | ||
![]() |
43c69d6711 | ||
![]() |
0af1fd5c3e | ||
![]() |
c00e822051 | ||
![]() |
f173df078b | ||
![]() |
6b77c337d4 | ||
![]() |
73eca4dd34 | ||
![]() |
75aee336b0 | ||
![]() |
c1297f99aa | ||
![]() |
2fc693d1a3 | ||
![]() |
51d5306f45 | ||
![]() |
12b7c1a7a7 | ||
![]() |
6997b59efe | ||
![]() |
ad0fef7054 | ||
![]() |
4aa552622b | ||
![]() |
da94cdfd4c | ||
![]() |
c0bda5f174 | ||
![]() |
aae58de7b7 | ||
![]() |
666e457209 | ||
![]() |
e744f4ea3f | ||
![]() |
f2bfad04b1 | ||
![]() |
92a86a9bf6 | ||
![]() |
4af25f59b9 | ||
![]() |
ba4de2263a | ||
![]() |
a521915170 | ||
![]() |
f10b25c46b | ||
![]() |
dca4c53395 | ||
![]() |
01865fdd2a | ||
![]() |
215ada8748 | ||
![]() |
79fbfab6d0 | ||
![]() |
7f07e71108 | ||
![]() |
469dd1f510 | ||
![]() |
75194c9da3 | ||
![]() |
de45a4506d | ||
![]() |
745971a849 | ||
![]() |
d676208eb7 | ||
![]() |
62aacdce77 | ||
![]() |
f60ed5ab8c | ||
![]() |
82c5d550b5 | ||
![]() |
791e0d33e7 | ||
![]() |
c6c304c8d0 | ||
![]() |
ab7d7d0b3c | ||
![]() |
4942a17f51 | ||
![]() |
c98fae081a | ||
![]() |
9ab7fa12ce | ||
![]() |
8bc4926773 | ||
![]() |
4c82170add | ||
![]() |
ca7755cd10 | ||
![]() |
9b942c5de1 | ||
![]() |
9804410bdd | ||
![]() |
ac9aff4f39 | ||
![]() |
6b6c963ae0 | ||
![]() |
cd16837e40 | ||
![]() |
ac438037cf | ||
![]() |
984ae41105 | ||
![]() |
17e7c131bf | ||
![]() |
368b4718dc | ||
![]() |
e8fa8080c1 | ||
![]() |
a261b49409 | ||
![]() |
cd49b14af2 | ||
![]() |
4aa84be8ec | ||
![]() |
e7a1626afc | ||
![]() |
6452366e47 | ||
![]() |
2f96f7fd89 | ||
![]() |
bea23aab71 | ||
![]() |
a7954e5cf0 | ||
![]() |
0ddc207416 | ||
![]() |
27e9b676d2 | ||
![]() |
7a272b7086 | ||
![]() |
e22f46bab3 | ||
![]() |
3e2e2887c1 | ||
![]() |
f23c94c671 | ||
![]() |
cac47f3e83 | ||
![]() |
89164599b1 | ||
![]() |
3d6b840f3a | ||
![]() |
004bff3eb9 | ||
![]() |
004687e060 | ||
![]() |
783c166b75 | ||
![]() |
e51f4e8bc1 | ||
![]() |
2d82024cbc | ||
![]() |
24275c7ec8 | ||
![]() |
864668c9da | ||
![]() |
7e3098a2f3 | ||
![]() |
285ab943a4 | ||
![]() |
f442475d44 | ||
![]() |
05da05a319 | ||
![]() |
c823025e63 | ||
![]() |
ea0f24bb66 | ||
![]() |
9b94d030af | ||
![]() |
c0eae74405 | ||
![]() |
0a88f08bbf | ||
![]() |
d6fc1ab08d | ||
![]() |
9c0aec08b0 | ||
![]() |
2a88fc6d70 | ||
![]() |
efac40e13c | ||
![]() |
627251b87b | ||
![]() |
316f224417 | ||
![]() |
f1efa6a102 | ||
![]() |
999b5451ba | ||
![]() |
1dddfba779 | ||
![]() |
ce6239df48 | ||
![]() |
8382d1675b | ||
![]() |
7c8e004832 | ||
![]() |
34c61385bd | ||
![]() |
3ced2e4e68 | ||
![]() |
66f9a61017 | ||
![]() |
9bc82f7c04 | ||
![]() |
35c8289c70 | ||
![]() |
9ca31457bf | ||
![]() |
fa093a3805 | ||
![]() |
783d55b1f7 | ||
![]() |
dfc3a508f7 | ||
![]() |
0cb8c91063 | ||
![]() |
128680a9c5 | ||
![]() |
7b381d7714 | ||
![]() |
ae1a81b4e0 | ||
![]() |
bdf8986326 | ||
![]() |
5197204b57 | ||
![]() |
3cf2708e4c | ||
![]() |
3c12e7502e | ||
![]() |
77da0d710d | ||
![]() |
75e1aaae06 | ||
![]() |
2cd6d127cd | ||
![]() |
65ecf8b04b | ||
![]() |
8f5c7dd86d | ||
![]() |
7586ad293d | ||
![]() |
ae58a862e8 | ||
![]() |
1a8f5adb7b | ||
![]() |
75990a2e80 | ||
![]() |
aadeae5484 | ||
![]() |
868460a117 | ||
![]() |
c61cc8fb1d | ||
![]() |
ae289c84de | ||
![]() |
35b2a640f4 | ||
![]() |
852a1ca01d | ||
![]() |
fc42712fef | ||
![]() |
5a87401ed2 | ||
![]() |
b207268648 | ||
![]() |
d9cf2569eb | ||
![]() |
214da25e9d | ||
![]() |
b241b53a5a | ||
![]() |
f477e568d1 | ||
![]() |
fe5545923d | ||
![]() |
2b90abd64d | ||
![]() |
2a9e737c4a | ||
![]() |
85a7d66cb2 | ||
![]() |
6ec54c5f67 | ||
![]() |
4d5162f596 | ||
![]() |
8b528d5753 | ||
![]() |
c1cef5d2a4 | ||
![]() |
d31931f031 | ||
![]() |
c1c8a2c94c | ||
![]() |
ef2b0a21c4 | ||
![]() |
51728e3d2d | ||
![]() |
0f1943ec7d | ||
![]() |
24eda6301d | ||
![]() |
3eb2648abf | ||
![]() |
de7fa767b4 | ||
![]() |
3db5649d77 | ||
![]() |
f5b675e490 | ||
![]() |
44cc304050 | ||
![]() |
3f7ed417b8 | ||
![]() |
23cfad3ff4 | ||
![]() |
cd06e210de | ||
![]() |
9ec13d2a02 | ||
![]() |
fb9d1a5268 | ||
![]() |
a37f0c1c7a | ||
![]() |
66b5d47457 | ||
![]() |
ed9bd501dd | ||
![]() |
95ed2e0752 | ||
![]() |
269e056d82 | ||
![]() |
f54f2f786d | ||
![]() |
5f0ce78901 | ||
![]() |
35d2e2f917 | ||
![]() |
2e6601bcf0 | ||
![]() |
9c2d6a8cfd | ||
![]() |
ad4ecd8493 | ||
![]() |
c246da918d | ||
![]() |
bfc21d213e | ||
![]() |
749d46ef41 | ||
![]() |
8b87c3faf7 | ||
![]() |
fb4ab15735 | ||
![]() |
26eb3d5376 | ||
![]() |
2484372df1 | ||
![]() |
073ce2f284 | ||
![]() |
032e016a43 | ||
![]() |
c345d7b4a0 | ||
![]() |
736cf32e8a | ||
![]() |
bfc34be48e | ||
![]() |
e963f6e7f8 | ||
![]() |
4cb986b0a1 | ||
![]() |
29453c961f | ||
![]() |
d614789fe5 | ||
![]() |
c57f1ac24e | ||
![]() |
69c5a288cf | ||
![]() |
37992fe42c | ||
![]() |
dc73a970e0 | ||
![]() |
b41c77429b | ||
![]() |
a8e341bf41 | ||
![]() |
ddf4922622 | ||
![]() |
bcdebac5c8 | ||
![]() |
918bdbcf53 | ||
![]() |
67c3140fd4 | ||
![]() |
387cfb744d | ||
![]() |
50054426bd | ||
![]() |
2318afafb1 | ||
![]() |
42a703b753 | ||
![]() |
bfe9d176f6 | ||
![]() |
6a2b99e372 | ||
![]() |
7c404ce842 | ||
![]() |
8b290738ce | ||
![]() |
d943a461c9 | ||
![]() |
f2a7cae4d4 | ||
![]() |
c4e2a0f976 | ||
![]() |
ca2e4b06ec | ||
![]() |
c67cdae651 | ||
![]() |
935db4b6f4 | ||
![]() |
66e9d004bc | ||
![]() |
13b0d627c7 | ||
![]() |
2efdc2e324 | ||
![]() |
fa89641aa3 | ||
![]() |
2ab74d8525 | ||
![]() |
c7054115ab | ||
![]() |
a286ab14eb | ||
![]() |
953a610a2e | ||
![]() |
1f610505a7 | ||
![]() |
3f6738a47a | ||
![]() |
094693e542 | ||
![]() |
cdead0bd32 | ||
![]() |
d8e5e9e41e | ||
![]() |
6f5ac25dc9 | ||
![]() |
c37f67de1f | ||
![]() |
72d955122e | ||
![]() |
030fb98ab2 | ||
![]() |
aa73c6c97e | ||
![]() |
114b28055d | ||
![]() |
2d550a28e2 | ||
![]() |
d287c44598 | ||
![]() |
6dd1213376 | ||
![]() |
18dae63294 | ||
![]() |
a041589b24 | ||
![]() |
5aeab60048 | ||
![]() |
66d2cef2fb | ||
![]() |
57966a69ce | ||
![]() |
ee125f07c0 | ||
![]() |
e93abc8750 | ||
![]() |
374fb6d725 | ||
![]() |
b6d132ac7c | ||
![]() |
c545f4df6a | ||
![]() |
101d972638 | ||
![]() |
7ce2521edc | ||
![]() |
afa0f8d90e | ||
![]() |
e7504a677a | ||
![]() |
a595fd15a8 | ||
![]() |
dbe75a13b9 | ||
![]() |
b20e8de388 | ||
![]() |
de208c1a84 | ||
![]() |
90819a39e9 | ||
![]() |
7f7f83fe83 | ||
![]() |
b9c75e3e36 | ||
![]() |
bdc16c67fa | ||
![]() |
3ef12e6eb6 | ||
![]() |
6128cdfa06 | ||
![]() |
a03a50c0dd | ||
![]() |
8d5f684eee | ||
![]() |
944fd72d3a | ||
![]() |
652a7439ae | ||
![]() |
1ad21a30ad | ||
![]() |
966ff218b9 | ||
![]() |
42ddf49284 | ||
![]() |
e3cbfbd132 | ||
![]() |
4f86b223ee | ||
![]() |
61f0976292 | ||
![]() |
b7a256a325 | ||
![]() |
6789ab0145 | ||
![]() |
7f2771fb5e | ||
![]() |
a22261c679 | ||
![]() |
4c94c1ec63 | ||
![]() |
8af88c5acd | ||
![]() |
bb40e5bea8 | ||
![]() |
75a49f7f5a | ||
![]() |
af6c7e7622 | ||
![]() |
8deaa0eaef | ||
![]() |
1392302911 | ||
![]() |
5b50c9ce26 | ||
![]() |
0fb8bf590b | ||
![]() |
1a7851e7a4 | ||
![]() |
f1c04516ca | ||
![]() |
467c48ae10 | ||
![]() |
e9762e3f6a | ||
![]() |
6aec890353 | ||
![]() |
5a7f1b9720 | ||
![]() |
b16b586883 | ||
![]() |
0cbc1dad2a | ||
![]() |
20ad977fd3 | ||
![]() |
1c53a6e391 | ||
![]() |
9de208f405 | ||
![]() |
f86857d976 | ||
![]() |
6c4aa646dc | ||
![]() |
bfe91904b5 | ||
![]() |
efdac0fd74 | ||
![]() |
1e7ec8ac60 | ||
![]() |
c7e9d4d5e1 | ||
![]() |
6790075b5a | ||
![]() |
6623c8b530 | ||
![]() |
c30d246eec | ||
![]() |
9d4ce13d1a | ||
![]() |
aecbd7867e | ||
![]() |
198615549e | ||
![]() |
506c99f657 | ||
![]() |
7ac11353cf | ||
![]() |
58fadc25f6 | ||
![]() |
c7c2644b7c | ||
![]() |
fd350a3ef3 | ||
![]() |
260606b682 | ||
![]() |
9a37a6e033 | ||
![]() |
9782fc090a | ||
![]() |
70b0cad7b7 | ||
![]() |
8e4c6ad88e | ||
![]() |
9a93739673 | ||
![]() |
c4c55b09e9 | ||
![]() |
e5441f3b58 | ||
![]() |
7b08b12f18 | ||
![]() |
53de7ff3ee | ||
![]() |
38e3325e53 | ||
![]() |
9bb10a0f42 | ||
![]() |
aa8874cf46 | ||
![]() |
fe80b55ebe | ||
![]() |
99bc8807a5 | ||
![]() |
d44d1d6f4f | ||
![]() |
5e8e814816 | ||
![]() |
90bce95505 | ||
![]() |
c50a38c44f | ||
![]() |
b1a3a66aae | ||
![]() |
c42dfa40ea | ||
![]() |
29948a445e | ||
![]() |
f2affe61fb | ||
![]() |
04d29aea64 | ||
![]() |
43981c5b20 | ||
![]() |
c1277c5543 | ||
![]() |
b71448f369 | ||
![]() |
e08678ad95 | ||
![]() |
7e7aa00e21 | ||
![]() |
9c849116e8 | ||
![]() |
5342fc0a67 | ||
![]() |
dc3ce43e06 | ||
![]() |
845026232d | ||
![]() |
76e718564f | ||
![]() |
994255a796 | ||
![]() |
3b16029736 | ||
![]() |
ad1f0c1ee8 | ||
![]() |
3ea4e565e0 | ||
![]() |
3b39584dff | ||
![]() |
f5b4100fcd | ||
![]() |
18768ea640 | ||
![]() |
13ca050b36 | ||
![]() |
05a98a8098 | ||
![]() |
f74e49b4a6 | ||
![]() |
993cea72ab | ||
![]() |
3b7fe8dfe3 | ||
![]() |
707ac8e70e | ||
![]() |
d63c5c5f11 | ||
![]() |
00219d0d4c | ||
![]() |
9ccbbb4f87 | ||
![]() |
38ed9f97aa | ||
![]() |
4e6453a4bb | ||
![]() |
5f7c78c1b2 | ||
![]() |
c9d35f3070 | ||
![]() |
f70bcb56fd | ||
![]() |
e382a835de | ||
![]() |
bcaf410036 | ||
![]() |
076a2ed54b | ||
![]() |
789a8dde4c | ||
![]() |
38483e2138 | ||
![]() |
5b116f5963 | ||
![]() |
3b54187067 | ||
![]() |
aac5fc5e74 | ||
![]() |
33bf3f6125 | ||
![]() |
4a86412790 | ||
![]() |
c6308406bf | ||
![]() |
9a3df41478 | ||
![]() |
eb0dd90175 | ||
![]() |
245923d9ae | ||
![]() |
9c88ca3903 | ||
![]() |
d19e5dda80 | ||
![]() |
08fc1c0eaa | ||
![]() |
d69df5d665 | ||
![]() |
ae4d2a3df1 | ||
![]() |
e9b547fed8 | ||
![]() |
c3936dd8b0 | ||
![]() |
5ce79fb85d | ||
![]() |
d5adcbb738 | ||
![]() |
edbd98f940 | ||
![]() |
4662ca591d | ||
![]() |
6f99d061a7 | ||
![]() |
9b0f29f8f4 | ||
![]() |
3a0140536d | ||
![]() |
c32e8a2505 | ||
![]() |
76e9a76d8b | ||
![]() |
60c517a84a | ||
![]() |
11732907dc | ||
![]() |
a79b8422b6 | ||
![]() |
bfc2369273 | ||
![]() |
d78317337d | ||
![]() |
a1c4a69d5b | ||
![]() |
9b30c0dca2 | ||
![]() |
996a0ee3c7 | ||
![]() |
b3ca173596 | ||
![]() |
c7e6ba4d63 | ||
![]() |
11db06c5fd | ||
![]() |
fa78727b6c | ||
![]() |
15d64a824a | ||
![]() |
d60d810baa | ||
![]() |
f343813000 | ||
![]() |
b78dffa4c0 | ||
![]() |
e4db5758a7 | ||
![]() |
7241c85453 | ||
![]() |
28ffba52ee | ||
![]() |
4300added6 | ||
![]() |
e02392d053 | ||
![]() |
f396416485 | ||
![]() |
b01b846ebc | ||
![]() |
bec12e95e7 | ||
![]() |
6c7e2133fe | ||
![]() |
beaf108528 | ||
![]() |
1bb1ec6aa8 | ||
![]() |
a6935061f6 | ||
![]() |
223aaa1c36 | ||
![]() |
f8f8405788 | ||
![]() |
13fc581e78 | ||
![]() |
9b81b174b1 | ||
![]() |
aeac0c5db5 | ||
![]() |
fce001d991 | ||
![]() |
db9ff793fb | ||
![]() |
9d3c91f493 | ||
![]() |
153c37002d | ||
![]() |
4ce043a7aa | ||
![]() |
ec8963ef9a | ||
![]() |
8c28fa66b8 | ||
![]() |
7dc1eeffe1 | ||
![]() |
2b2dc7175b | ||
![]() |
fa40171586 | ||
![]() |
dea04a45ba | ||
![]() |
052036e3b3 | ||
![]() |
2ca04119c8 | ||
![]() |
57e35453df | ||
![]() |
28be7a684d | ||
![]() |
56e0885562 | ||
![]() |
0b7edc8e8e | ||
![]() |
1eb3c6402b | ||
![]() |
6032f5ac94 | ||
![]() |
a09236ea33 | ||
![]() |
3aabdc3420 | ||
![]() |
517d75ce1a | ||
![]() |
2da7fe853b | ||
![]() |
f0906573ae | ||
![]() |
eca16a7c3b | ||
![]() |
6e32bbbd39 | ||
![]() |
2cf7b4e8f9 | ||
![]() |
2be536dc15 | ||
![]() |
7c0a236bde | ||
![]() |
a4adfa5f37 | ||
![]() |
426c6652d1 | ||
![]() |
c07aac61c2 | ||
![]() |
2cdffc383a | ||
![]() |
226e18e878 | ||
![]() |
4a12452bae | ||
![]() |
adc6c74a05 | ||
![]() |
84e9bcbcc5 | ||
![]() |
16d9dbce0b | ||
![]() |
5264f04a1f | ||
![]() |
a938392943 | ||
![]() |
1894d9d83e | ||
![]() |
9701e777c3 | ||
![]() |
913d7c90ee | ||
![]() |
afbb4bcebb | ||
![]() |
84f575bd88 | ||
![]() |
214732cb0e | ||
![]() |
c443450a22 | ||
![]() |
0a44af25df | ||
![]() |
b1c0fa7290 | ||
![]() |
710605a4c8 | ||
![]() |
b6652bdda3 | ||
![]() |
7f0841bbed | ||
![]() |
0a8c9e6f73 | ||
![]() |
e642682033 | ||
![]() |
7714d0c1fa | ||
![]() |
4057412b53 | ||
![]() |
74edd48d0a | ||
![]() |
54ae7592a4 | ||
![]() |
c3ba008154 | ||
![]() |
e8958536f7 | ||
![]() |
5cd572b16a | ||
![]() |
a7432b5df1 | ||
![]() |
e60c7368ba | ||
![]() |
174ee43fb7 | ||
![]() |
566834ea1f | ||
![]() |
81fb2a3a3d | ||
![]() |
cac85fc9f4 | ||
![]() |
5f0edccf1a | ||
![]() |
b6a7604f17 | ||
![]() |
6b9fa3b1bb | ||
![]() |
cd80a3323b | ||
![]() |
ab318d8378 | ||
![]() |
4e1c420b2a | ||
![]() |
d52c338cef | ||
![]() |
01506a8873 | ||
![]() |
0192d84a24 | ||
![]() |
f39c086d40 | ||
![]() |
2ace5a29cb | ||
![]() |
65e5df2c31 | ||
![]() |
2d1de6ce2e | ||
![]() |
fba3dd795c | ||
![]() |
aa856ce8ef | ||
![]() |
e6aa904de3 | ||
![]() |
0792d109ca | ||
![]() |
ea63abd5af | ||
![]() |
05a91b1dc4 | ||
![]() |
5037b65ca0 | ||
![]() |
227f75a92e | ||
![]() |
d4050055d9 | ||
![]() |
4c1ef50b4b | ||
![]() |
ba65d275d2 | ||
![]() |
5b464ef2b6 | ||
![]() |
63eb8eebca | ||
![]() |
ca033029e9 | ||
![]() |
f63be8d61f | ||
![]() |
704a1922d2 | ||
![]() |
4cd3966023 | ||
![]() |
bf1a931b30 | ||
![]() |
582f3d0267 | ||
![]() |
14626e7976 | ||
![]() |
b4275fd22e | ||
![]() |
ca09db3de9 | ||
![]() |
0e23249c85 | ||
![]() |
f411cc7dcd | ||
![]() |
04bde2e73f | ||
![]() |
c5c641a563 | ||
![]() |
9ce03680a4 | ||
![]() |
38957fcadc | ||
![]() |
27948e5096 | ||
![]() |
e0261ac156 | ||
![]() |
861eea521d | ||
![]() |
009c64d55b | ||
![]() |
15154be635 | ||
![]() |
fcd447fa5c | ||
![]() |
9bb72bc9cd | ||
![]() |
0fd5151050 | ||
![]() |
40b5166e23 | ||
![]() |
92b4a20cf9 | ||
![]() |
82cc16857f | ||
![]() |
1c349b7948 | ||
![]() |
14eb48d7be | ||
![]() |
75076d9579 | ||
![]() |
5028630659 | ||
![]() |
37a4ed6ae3 | ||
![]() |
4f9b606e91 | ||
![]() |
cdedcada95 | ||
![]() |
d53f808979 | ||
![]() |
9775869479 | ||
![]() |
a76d4f2e3e | ||
![]() |
946e4e27ab | ||
![]() |
42438d06e5 | ||
![]() |
5bec40f9c2 | ||
![]() |
4fd3215134 | ||
![]() |
9384bf35cd | ||
![]() |
0021fb6918 | ||
![]() |
0b2dd31a22 | ||
![]() |
419e554e98 | ||
![]() |
9effd2768b | ||
![]() |
5124cb3145 | ||
![]() |
8fbe2a37d2 | ||
![]() |
e30deb94c5 | ||
![]() |
6b13a2751a | ||
![]() |
cfa96aaead | ||
![]() |
eed4c46003 | ||
![]() |
8d5043491a | ||
![]() |
58c9472193 | ||
![]() |
cf72d395ae | ||
![]() |
a42c1c7e78 | ||
![]() |
5cbf86d193 | ||
![]() |
cfdbd73a9b | ||
![]() |
613985026b | ||
![]() |
3f787327ae | ||
![]() |
7fd8f9001c | ||
![]() |
9ed8827ff6 | ||
![]() |
c7ed22e5c5 | ||
![]() |
ef8faeacf4 | ||
![]() |
f346d61cd4 | ||
![]() |
fb484d95ff |
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
Checks: '-*,modernize-use-nullptr,performance-unnecessary-value-param'
|
||||
WarningsAsErrors: true
|
||||
...
|
|
@ -1,19 +0,0 @@
|
|||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
charset = utf-8
|
||||
|
||||
[*.cfg]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.{cpp,hpp}]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.lua]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
9
.gitattributes
vendored
|
@ -1,9 +0,0 @@
|
|||
# Exclude project-internal files from releases
|
||||
/attic export-ignore
|
||||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
/.github export-ignore
|
||||
/changelog_entries export-ignore
|
||||
|
||||
# help github's language detection and syntax highlighting
|
||||
*.cfg linguist-language=INI
|
12
.github/FUNDING.yml
vendored
|
@ -1,12 +0,0 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: Wesnoth
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
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.
|
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
|
|
@ -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
|
284
.github/labeler.yml
vendored
|
@ -1,284 +0,0 @@
|
|||
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:
|
||||
- src/server/campaignd/**
|
||||
- src/server/common/**
|
||||
- src/addon/**
|
||||
- src/gui/dialogs/addon/**
|
||||
|
||||
AI:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/ai/**/*
|
||||
- data/campaigns/*/ai/**
|
||||
- src/ai/**/*
|
||||
|
||||
Audio:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/campaigns/*/sounds/**
|
||||
- data/core/music/*
|
||||
- data/core/sounds/**/*
|
||||
- sounds/*
|
||||
|
||||
Building:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- projectfiles/**/*
|
||||
- source_lists/*
|
||||
- CMakeLists.txt
|
||||
- cmake/*
|
||||
- src/CMakeLists.txt
|
||||
- SConstruct
|
||||
- scons/*
|
||||
- src/SConscript
|
||||
- src/SConstruct
|
||||
|
||||
Campaign AToTB:
|
||||
- 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/**
|
||||
|
||||
CMake:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- CMakeLists.txt
|
||||
- cmake/*
|
||||
- src/CMakeLists.txt
|
||||
|
||||
Docker:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .dockerignore
|
||||
- utils/dockerbuilds/travis/*
|
||||
- utils/travis/docker_run.sh
|
||||
|
||||
Docs:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/**/*
|
||||
|
||||
Editor:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/core/editor/*
|
||||
- src/editor/**/*
|
||||
|
||||
Graphics:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- images/**/*
|
||||
- data/campaigns/*/images/**
|
||||
- data/core/images/**/*
|
||||
|
||||
Help:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/tips.cfg
|
||||
- data/core/help.cfg
|
||||
- src/help/*
|
||||
- src/gui/dialogs/help_browser.*
|
||||
|
||||
Input:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/core/hotkeys.cfg
|
||||
|
||||
Lua API:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- src/scripting/**/*
|
||||
- data/lua/**/*
|
||||
|
||||
macOS:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- projectfiles/Xcode/**/*
|
||||
- src/macosx/*
|
||||
|
||||
MP:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/multiplayer/**/*
|
||||
- src/server/wesnothd/**
|
||||
- src/server/common/**
|
||||
|
||||
Packaging:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- packaging/**/*
|
||||
|
||||
Schema:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- utils/travis/schema_validation.sh
|
||||
- data/schema/**/*
|
||||
- src/serialization/schema/*
|
||||
|
||||
SCons:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- SConstruct
|
||||
- scons/*
|
||||
- src/SConscript
|
||||
- src/SConstruct
|
||||
|
||||
Services:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- utils/mp-server/**
|
||||
|
||||
Terrain:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- src/terrain/**/*
|
||||
- data/campaigns/*/images/terrain/**
|
||||
- data/campaigns/**/terrain.cfg
|
||||
- data/campaigns/**/terrain_graphics.cfg
|
||||
- data/core/images/terrain/**
|
||||
- data/core/terrain.cfg
|
||||
- data/core/terrain-graphics.cfg
|
||||
- data/core/terrain-graphics/**
|
||||
|
||||
Translations:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- po/**/*
|
||||
- data/languages/*
|
||||
|
||||
Travis:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- utils/travis/**/*
|
||||
|
||||
UI:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- src/gui/**/*
|
||||
- data/gui/**/*
|
||||
- data/schema/gui.cfg
|
||||
- data/themes/*
|
||||
|
||||
Unit Tests:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/test/**/*
|
||||
|
||||
Units:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- src/units/**/*
|
||||
- data/campaigns/*/units/**
|
||||
- data/core/units/**/*
|
||||
- data/core/images/units/**/*
|
||||
|
||||
WML Tools:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- data/tools/**/*
|
||||
|
||||
WFL:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- src/formula/**
|
||||
- src/ai/formula/**
|
391
.github/workflows/ci-main.yml
vendored
|
@ -1,391 +0,0 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
steam-runtime:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- { 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
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Steam-Linux
|
||||
path: utils/dockerbuilds/steambuild-*.tar
|
||||
|
||||
mingw:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- { 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"
|
||||
|
||||
cd utils/dockerbuilds && ./make_mingw_build
|
||||
mv mingwbuild/wesnoth*-win64.exe "wesnoth-$version-win64.exe"
|
||||
|
||||
- name: Upload Source
|
||||
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
|
||||
|
||||
flatpak:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: wesnoth/wesnoth:flatpak-master
|
||||
options: --tty --cap-add=ALL --privileged # docker create options
|
||||
|
||||
steps:
|
||||
- { uses: actions/checkout@v4, with: { submodules: "recursive", fetch-depth: 500, fetch-tags: true } }
|
||||
|
||||
- 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
|
||||
|
||||
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
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
- 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
|
||||
|
||||
macos-intel:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
cfg: [ Release ]
|
||||
runs-on: macos-13
|
||||
env:
|
||||
CFG: ${{ matrix.cfg }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
- name: Get dependencies
|
||||
run: |
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install scons
|
||||
./projectfiles/Xcode/Fix_Xcode_Dependencies
|
||||
- name: Build translations
|
||||
run: scons translations build=release --debug=time nls=true jobs=2
|
||||
- name: Build wesnoth and unit tests
|
||||
working-directory: projectfiles/Xcode
|
||||
run: |
|
||||
xcodebuild ARCHS=x86_64 -project "The Battle for Wesnoth.xcodeproj" -target "The Battle for Wesnoth" -target "unit_tests" -configuration "$CFG"
|
||||
# xcodebuild or maybe clang do not appear to fail properly when input files cannot be found; double check executables were produced
|
||||
[ -x "build/$CFG/The Battle for Wesnoth.app" ] || { printf 'Failed to build wesnoth executable!\n' >&2; exit 1; }
|
||||
[ -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
|
||||
with:
|
||||
name: MacOS ${{ matrix.cfg }} disk image
|
||||
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"
|
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) }}
|
12
.github/workflows/labeler.yml
vendored
|
@ -1,12 +0,0 @@
|
|||
name: "Pull Request Labeler"
|
||||
on:
|
||||
- pull_request_target
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@main
|
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 }}
|
235
.gitignore
vendored
|
@ -1,228 +1,33 @@
|
|||
# stderr.txt output + copies
|
||||
stderr*.txt
|
||||
stdout*.txt
|
||||
|
||||
# project files
|
||||
.*project
|
||||
Project.*
|
||||
|
||||
# Makefiles
|
||||
*.swp
|
||||
.DS_Store
|
||||
wesnoth
|
||||
wesnothd
|
||||
make_translation
|
||||
merge_translations
|
||||
Makefile
|
||||
Makefile.in
|
||||
|
||||
# cmake
|
||||
CMakeFiles
|
||||
CMakeLists.txt.user*
|
||||
cmake_install.cmake
|
||||
CPack*Config.cmake
|
||||
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
|
||||
*sconsign.dblite
|
||||
.sconf_temp
|
||||
buildlog.txt
|
||||
|
||||
# XCode
|
||||
projectfiles/Xcode/**/build
|
||||
projectfiles/Xcode/**/DerivedData
|
||||
projectfiles/Xcode/**/Headers
|
||||
projectfiles/Xcode/**/temp
|
||||
projectfiles/Xcode/**/Index
|
||||
projectfiles/Xcode/**/Wesnoth.dmgCanvas
|
||||
projectfiles/Xcode/**/*.mode1v3
|
||||
projectfiles/Xcode/**/*.pbxuser
|
||||
projectfiles/Xcode/**/xcuserdata
|
||||
projectfiles/Xcode/**/*.xcworkspace
|
||||
!projectfiles/Xcode/**/project.pbxproj
|
||||
|
||||
# CodeBlocks
|
||||
projectfiles/**/.clang
|
||||
projectfiles/**/cb
|
||||
projectfiles/**/wesnoth.tags
|
||||
projectfiles/**/wesnoth.workspace.*
|
||||
projectfiles/**/*.depend
|
||||
projectfiles/**/*.layout
|
||||
projectfiles/**/*_build_log.html
|
||||
projectfiles/**/*objs*
|
||||
|
||||
# Visual Studio
|
||||
.vscode
|
||||
/.vs
|
||||
vcpkg_installed/
|
||||
*.vcxproj
|
||||
*.vcxproj.filters
|
||||
doc/**/*.vcxproj
|
||||
doc/**/*.vcxproj.filters
|
||||
src/**/*.vcxproj
|
||||
src/**/*.vcxproj.filters
|
||||
vcpkg-manifest-install.log
|
||||
|
||||
# CLion
|
||||
/.idea
|
||||
cmake-build-debug
|
||||
cmake-build-release
|
||||
|
||||
# eclipse
|
||||
.settings
|
||||
!utils/umc_dev/org.wesnoth*/.settings/
|
||||
!utils/umc_dev/org.wesnoth*/.project
|
||||
|
||||
# KDevelop caches (KDevelop 4.3.1, KDE Development Platform 4.8.4).
|
||||
*.kate-swp
|
||||
|
||||
# autotools
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
configure.lineno
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
stamp-h1
|
||||
|
||||
# build directories
|
||||
/wesnoth*
|
||||
/wesnothd*
|
||||
/campaignd*
|
||||
/cutter*
|
||||
cutter/
|
||||
/exploder*
|
||||
/build/
|
||||
Release
|
||||
.libs
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
configure.lineno
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
config.h.in
|
||||
configure
|
||||
translations
|
||||
6not
|
||||
Debug
|
||||
ReleaseDEBUG
|
||||
Test_Debug
|
||||
Test_Release
|
||||
Debug (fast)
|
||||
tags
|
||||
/schema_generator*
|
||||
/schema_validator*
|
||||
/create_images*
|
||||
/wesmage*
|
||||
pgo_data/
|
||||
|
||||
# build results etc.
|
||||
wesnoth_zip
|
||||
wesnoth.exp
|
||||
wesnoth.ilk
|
||||
wesnoth.lib
|
||||
wesnoth.ncb
|
||||
wesnoth.suo
|
||||
wesnoth.opt
|
||||
wesnoth.plg
|
||||
userdata
|
||||
Lib
|
||||
*.exe
|
||||
*.dll
|
||||
*.so
|
||||
compile_commands.json
|
||||
|
||||
# library files
|
||||
.libs
|
||||
[Ll]ib
|
||||
!data/ai/formula/lib/
|
||||
!src/gui/lib/
|
||||
|
||||
# release-only directories
|
||||
translations
|
||||
userdata
|
||||
|
||||
# testing
|
||||
/test*
|
||||
/boost_unit_tests*
|
||||
!/test_wrapper.sh
|
||||
src/test
|
||||
error*.log
|
||||
boost_test_result.xml
|
||||
*build*.sh
|
||||
boost_tests.log
|
||||
|
||||
# translations
|
||||
locales
|
||||
make_translation
|
||||
merge_translations
|
||||
*.gmo
|
||||
po/wesnoth*/POTFILES*
|
||||
po/**/pot-update.sh
|
||||
po/**/stamp-po
|
||||
po/**/remove-potcdate.s*
|
||||
po/**/Makefile*
|
||||
!po/wesnoth-manpages/Makefile
|
||||
!po/wesnoth-manual/Makefile
|
||||
|
||||
# tools
|
||||
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
|
||||
doc/manual/**/*.xml
|
||||
|
||||
# keep src clean from tools
|
||||
src/**/wesnoth/
|
||||
src/**/exploder
|
||||
src/**/wesnoth_addon_manager
|
||||
src/**/wmllint
|
||||
src/**/wmlscope
|
||||
src/**/wmlindent
|
||||
|
||||
# file for loading lua from within test scenario on-the-fly
|
||||
data/lua/**/code.lua
|
||||
|
||||
# previous .gitignore files
|
||||
po/**/.gitignore
|
||||
images/**/.gitignore
|
||||
data/core/images/**/.gitignore
|
||||
data/campaigns/**/images/**/.gitignore
|
||||
|
||||
# OS created files
|
||||
.DS_Store
|
||||
[Tt]humbs.db
|
||||
*Neuer Ordner*
|
||||
.directory
|
||||
fonts/.uuid
|
||||
|
||||
# extensions
|
||||
*.pyc
|
||||
*.sw[po]
|
||||
*.pbl
|
||||
*.xhtml
|
||||
*.[ao]
|
||||
*.out
|
||||
*~
|
||||
.deps
|
||||
.dirstamp
|
||||
*.cfg-bak
|
||||
*.orig
|
||||
|
||||
# might be good to have, but not in data
|
||||
data/**/*.xcf
|
||||
data/**/*.psd
|
||||
|
||||
# uncategorized
|
||||
revision*
|
||||
config.h
|
||||
6not
|
||||
.kdev*
|
||||
callgrind.out.*
|
||||
data/dist
|
||||
clean.sh
|
||||
widgets_tested.log
|
||||
|
||||
# clangd cache
|
||||
.cache/clangd
|
||||
*.txt
|
||||
|
|
7
.gitmodules
vendored
|
@ -1,7 +0,0 @@
|
|||
[submodule "src/modules/mariadbpp"]
|
||||
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"}
|
986
ABOUT-NLS
Normal file
|
@ -0,0 +1,986 @@
|
|||
1 Notes on the Free Translation Project
|
||||
***************************************
|
||||
|
||||
Free software is going international! The Free Translation Project is
|
||||
a way to get maintainers of free software, translators, and users all
|
||||
together, so that free software will gradually become able to speak many
|
||||
languages. A few packages already provide translations for their
|
||||
messages.
|
||||
|
||||
If you found this `ABOUT-NLS' file inside a distribution, you may
|
||||
assume that the distributed package does use GNU `gettext' internally,
|
||||
itself available at your nearest GNU archive site. But you do _not_
|
||||
need to install GNU `gettext' prior to configuring, installing or using
|
||||
this package with messages translated.
|
||||
|
||||
Installers will find here some useful hints. These notes also
|
||||
explain how users should proceed for getting the programs to use the
|
||||
available translations. They tell how people wanting to contribute and
|
||||
work on translations can contact the appropriate team.
|
||||
|
||||
When reporting bugs in the `intl/' directory or bugs which may be
|
||||
related to internationalization, you should tell about the version of
|
||||
`gettext' which is used. The information can be found in the
|
||||
`intl/VERSION' file, in internationalized packages.
|
||||
|
||||
1.1 Quick configuration advice
|
||||
==============================
|
||||
|
||||
If you want to exploit the full power of internationalization, you
|
||||
should configure it using
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to force usage of internationalizing routines provided within this
|
||||
package, despite the existence of internationalizing capabilities in the
|
||||
operating system where this package is being installed. So far, only
|
||||
the `gettext' implementation in the GNU C library version 2 provides as
|
||||
many features (such as locale alias, message inheritance, automatic
|
||||
charset conversion or plural form handling) as the implementation here.
|
||||
It is also not possible to offer this additional functionality on top
|
||||
of a `catgets' implementation. Future versions of GNU `gettext' will
|
||||
very likely convey even more functionality. So it might be a good idea
|
||||
to change to GNU `gettext' as soon as possible.
|
||||
|
||||
So you need _not_ provide this option if you are using GNU libc 2 or
|
||||
you have installed a recent copy of the GNU gettext package with the
|
||||
included `libintl'.
|
||||
|
||||
1.2 INSTALL Matters
|
||||
===================
|
||||
|
||||
Some packages are "localizable" when properly installed; the programs
|
||||
they contain can be made to speak your own native language. Most such
|
||||
packages use GNU `gettext'. Other packages have their own ways to
|
||||
internationalization, predating GNU `gettext'.
|
||||
|
||||
By default, this package will be installed to allow translation of
|
||||
messages. It will automatically detect whether the system already
|
||||
provides the GNU `gettext' functions. If not, the included GNU
|
||||
`gettext' library will be used. This library is wholly contained
|
||||
within this package, usually in the `intl/' subdirectory, so prior
|
||||
installation of the GNU `gettext' package is _not_ required.
|
||||
Installers may use special options at configuration time for changing
|
||||
the default behaviour. The commands:
|
||||
|
||||
./configure --with-included-gettext
|
||||
./configure --disable-nls
|
||||
|
||||
will, respectively, bypass any pre-existing `gettext' to use the
|
||||
internationalizing routines provided within this package, or else,
|
||||
_totally_ disable translation of messages.
|
||||
|
||||
When you already have GNU `gettext' installed on your system and run
|
||||
configure without an option for your new package, `configure' will
|
||||
probably detect the previously built and installed `libintl.a' file and
|
||||
will decide to use this. This might not be desirable. You should use
|
||||
the more recent version of the GNU `gettext' library. I.e. if the file
|
||||
`intl/VERSION' shows that the library which comes with this package is
|
||||
more recent, you should use
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to prevent auto-detection.
|
||||
|
||||
The configuration process will not test for the `catgets' function
|
||||
and therefore it will not be used. The reason is that even an
|
||||
emulation of `gettext' on top of `catgets' could not provide all the
|
||||
extensions of the GNU `gettext' library.
|
||||
|
||||
Internationalized packages usually have many `po/LL.po' files, where
|
||||
LL gives an ISO 639 two-letter code identifying the language. Unless
|
||||
translations have been forbidden at `configure' time by using the
|
||||
`--disable-nls' switch, all available translations are installed
|
||||
together with the package. However, the environment variable `LINGUAS'
|
||||
may be set, prior to configuration, to limit the installed set.
|
||||
`LINGUAS' should then contain a space separated list of two-letter
|
||||
codes, stating which languages are allowed.
|
||||
|
||||
1.3 Using This Package
|
||||
======================
|
||||
|
||||
As a user, if your language has been installed for this package, you
|
||||
only have to set the `LANG' environment variable to the appropriate
|
||||
`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
|
||||
and `CC' is an ISO 3166 two-letter country code. For example, let's
|
||||
suppose that you speak German and live in Germany. At the shell
|
||||
prompt, merely execute `setenv LANG de_DE' (in `csh'),
|
||||
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
|
||||
This can be done from your `.login' or `.profile' file, once and for
|
||||
all.
|
||||
|
||||
You might think that the country code specification is redundant.
|
||||
But in fact, some languages have dialects in different countries. For
|
||||
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
||||
country code serves to distinguish the dialects.
|
||||
|
||||
The locale naming convention of `LL_CC', with `LL' denoting the
|
||||
language and `CC' denoting the country, is the one use on systems based
|
||||
on GNU libc. On other systems, some variations of this scheme are
|
||||
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
||||
locales supported by your system for your country by running the command
|
||||
`locale -a | grep '^LL''.
|
||||
|
||||
Not all programs have translations for all languages. By default, an
|
||||
English message is shown in place of a nonexistent translation. If you
|
||||
understand other languages, you can set up a priority list of languages.
|
||||
This is done through a different environment variable, called
|
||||
`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
|
||||
for the purpose of message handling, but you still need to have `LANG'
|
||||
set to the primary language; this is required by other parts of the
|
||||
system libraries. For example, some Swedish users who would rather
|
||||
read translations in German than English for when Swedish is not
|
||||
available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
|
||||
|
||||
Special advice for Norwegian users: The language code for Norwegian
|
||||
bokma*l changed from `no' to `nb' recently (in 2003). During the
|
||||
transition period, while some message catalogs for this language are
|
||||
installed under `nb' and some older ones under `no', it's recommended
|
||||
for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
|
||||
older translations are used.
|
||||
|
||||
In the `LANGUAGE' environment variable, but not in the `LANG'
|
||||
environment variable, `LL_CC' combinations can be abbreviated as `LL'
|
||||
to denote the language's main dialect. For example, `de' is equivalent
|
||||
to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
|
||||
(Portuguese as spoken in Portugal) in this context.
|
||||
|
||||
1.4 Translating Teams
|
||||
=====================
|
||||
|
||||
For the Free Translation Project to be a success, we need interested
|
||||
people who like their own language and write it well, and who are also
|
||||
able to synergize with other translators speaking the same language.
|
||||
Each translation team has its own mailing list. The up-to-date list of
|
||||
teams can be found at the Free Translation Project's homepage,
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
|
||||
area.
|
||||
|
||||
If you'd like to volunteer to _work_ at translating messages, you
|
||||
should become a member of the translating team for your own language.
|
||||
The subscribing address is _not_ the same as the list itself, it has
|
||||
`-request' appended. For example, speakers of Swedish can send a
|
||||
message to `sv-request@li.org', having this message body:
|
||||
|
||||
subscribe
|
||||
|
||||
Keep in mind that team members are expected to participate
|
||||
_actively_ in translations, or at solving translational difficulties,
|
||||
rather than merely lurking around. If your team does not exist yet and
|
||||
you want to start one, or if you are unsure about what to do or how to
|
||||
get started, please write to `translation@iro.umontreal.ca' to reach the
|
||||
coordinator for all translator teams.
|
||||
|
||||
The English team is special. It works at improving and uniformizing
|
||||
the terminology in use. Proven linguistic skill are praised more than
|
||||
programming skill, here.
|
||||
|
||||
1.5 Available Packages
|
||||
======================
|
||||
|
||||
Languages are not equally supported in all packages. The following
|
||||
matrix shows the current state of internationalization, as of April
|
||||
2005. The matrix shows, in regard of each package, for which languages
|
||||
PO files have been submitted to translation coordination, with a
|
||||
translation percentage of at least 50%.
|
||||
|
||||
Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB
|
||||
+-------------------------------------------------+
|
||||
GNUnet | |
|
||||
a2ps | [] [] [] [] [] |
|
||||
aegis | () |
|
||||
ant-phone | () |
|
||||
anubis | [] |
|
||||
ap-utils | |
|
||||
aspell | [] [] [] [] |
|
||||
bash | [] [] |
|
||||
batchelor | [] |
|
||||
bfd | |
|
||||
bibshelf | [] |
|
||||
binutils | [] |
|
||||
bison | [] [] |
|
||||
bluez-pin | [] [] [] [] |
|
||||
clisp | [] [] |
|
||||
console-tools | [] [] |
|
||||
coreutils | [] [] [] [] |
|
||||
cpio | |
|
||||
cpplib | [] [] [] |
|
||||
darkstat | [] () [] |
|
||||
dialog | [] [] [] [] [] [] |
|
||||
diffutils | [] [] [] [] [] |
|
||||
doodle | [] |
|
||||
e2fsprogs | [] [] |
|
||||
enscript | [] [] [] [] |
|
||||
error | [] [] [] [] |
|
||||
fetchmail | [] () [] [] [] |
|
||||
fileutils | [] [] |
|
||||
findutils | [] [] [] |
|
||||
flex | [] [] [] |
|
||||
fslint | [] |
|
||||
gas | |
|
||||
gawk | [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | [] |
|
||||
gettext-examples | [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] |
|
||||
gettext-tools | [] [] |
|
||||
gimp-print | [] [] [] [] |
|
||||
gip | |
|
||||
gliv | [] |
|
||||
glunarclock | |
|
||||
gmult | [] [] |
|
||||
gnubiff | () |
|
||||
gnucash | [] () () [] |
|
||||
gnucash-glossary | [] () |
|
||||
gpe-aerial | [] [] |
|
||||
gpe-beam | [] [] |
|
||||
gpe-calendar | [] [] |
|
||||
gpe-clock | [] [] |
|
||||
gpe-conf | [] [] |
|
||||
gpe-contacts | |
|
||||
gpe-edit | [] |
|
||||
gpe-go | [] |
|
||||
gpe-login | [] [] |
|
||||
gpe-ownerinfo | [] [] |
|
||||
gpe-sketchbook | [] [] |
|
||||
gpe-su | [] [] |
|
||||
gpe-taskmanager | [] [] |
|
||||
gpe-timesheet | [] |
|
||||
gpe-today | [] [] |
|
||||
gpe-todo | [] [] |
|
||||
gphoto2 | [] [] [] [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () |
|
||||
gramadoir | [] [] |
|
||||
grep | [] [] [] [] [] [] |
|
||||
gretl | |
|
||||
gsasl | [] |
|
||||
gss | |
|
||||
gst-plugins | [] [] [] [] [] [] |
|
||||
gstreamer | [] [] [] [] [] |
|
||||
gtick | [] () |
|
||||
gtkspell | [] [] [] |
|
||||
hello | [] [] [] [] |
|
||||
id-utils | [] [] |
|
||||
impost | |
|
||||
indent | [] [] |
|
||||
iso_3166 | |
|
||||
iso_3166_1 | [] [] [] [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | |
|
||||
iso_639 | |
|
||||
jpilot | [] |
|
||||
jtag | |
|
||||
jwhois | |
|
||||
kbd | [] [] [] [] |
|
||||
latrine | () |
|
||||
ld | [] |
|
||||
libc | [] [] [] [] [] |
|
||||
libextractor | |
|
||||
libgpewidget | [] [] [] |
|
||||
libgsasl | |
|
||||
libiconv | [] [] [] [] [] |
|
||||
libidn | |
|
||||
lifelines | [] () |
|
||||
lilypond | [] |
|
||||
lingoteach | |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
mailutils | [] |
|
||||
make | [] [] |
|
||||
man-db | [] () [] [] |
|
||||
minicom | [] [] |
|
||||
mysecretdiary | [] [] |
|
||||
nano | [] () [] |
|
||||
nano_1_0 | [] () [] [] |
|
||||
opcodes | [] |
|
||||
parted | [] [] [] [] |
|
||||
psmisc | |
|
||||
ptx | [] [] [] |
|
||||
pwdutils | |
|
||||
python | |
|
||||
radius | [] |
|
||||
recode | [] [] [] [] [] |
|
||||
rpm | [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] [] [] [] [] [] [] [] |
|
||||
sed | [] [] |
|
||||
sh-utils | [] [] |
|
||||
shared-mime-info | [] [] |
|
||||
sharutils | [] [] [] [] [] |
|
||||
silky | |
|
||||
skencil | [] () |
|
||||
sketch | [] () |
|
||||
solfege | [] |
|
||||
soundtracker | [] [] |
|
||||
sp | [] |
|
||||
stardict | [] |
|
||||
tar | |
|
||||
texinfo | [] [] |
|
||||
textutils | [] [] [] |
|
||||
tin | () () |
|
||||
tp-robot | [] |
|
||||
tuxpaint | [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | |
|
||||
util-linux | [] [] [] [] |
|
||||
vorbis-tools | [] [] [] [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] |
|
||||
xchat | [] [] [] [] |
|
||||
xkeyboard-config | |
|
||||
xpad | |
|
||||
+-------------------------------------------------+
|
||||
af am ar az be bg bs ca cs cy da de el en en_GB
|
||||
10 0 0 2 7 4 0 41 43 3 52 90 20 1 15
|
||||
|
||||
eo es et eu fa fi fr ga gl he hr hu id is it
|
||||
+-----------------------------------------------+
|
||||
GNUnet | |
|
||||
a2ps | [] [] [] () |
|
||||
aegis | |
|
||||
ant-phone | [] |
|
||||
anubis | [] |
|
||||
ap-utils | [] |
|
||||
aspell | [] [] |
|
||||
bash | [] [] [] [] |
|
||||
batchelor | [] [] |
|
||||
bfd | [] |
|
||||
bibshelf | [] [] [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] [] [] |
|
||||
bluez-pin | [] [] [] [] [] [] |
|
||||
clisp | [] [] |
|
||||
console-tools | |
|
||||
coreutils | [] [] [] [] [] |
|
||||
cpio | [] [] |
|
||||
cpplib | [] [] |
|
||||
darkstat | [] () [] [] [] |
|
||||
dialog | [] [] [] [] [] [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] [] [] [] [] |
|
||||
doodle | [] [] |
|
||||
e2fsprogs | [] [] [] |
|
||||
enscript | [] [] |
|
||||
error | [] [] [] [] [] |
|
||||
fetchmail | [] |
|
||||
fileutils | [] [] [] [] [] [] |
|
||||
findutils | [] [] [] [] [] |
|
||||
flex | [] [] [] |
|
||||
fslint | [] |
|
||||
gas | [] [] |
|
||||
gawk | [] [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] [] |
|
||||
gcc | [] |
|
||||
gettext-examples | [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] [] [] |
|
||||
gettext-tools | [] [] [] |
|
||||
gimp-print | [] [] |
|
||||
gip | [] [] [] |
|
||||
gliv | () |
|
||||
glunarclock | [] [] [] |
|
||||
gmult | [] [] [] |
|
||||
gnubiff | () () |
|
||||
gnucash | [] () [] |
|
||||
gnucash-glossary | [] [] |
|
||||
gpe-aerial | [] [] |
|
||||
gpe-beam | [] [] |
|
||||
gpe-calendar | [] [] [] [] |
|
||||
gpe-clock | [] [] [] |
|
||||
gpe-conf | [] |
|
||||
gpe-contacts | [] |
|
||||
gpe-edit | [] [] |
|
||||
gpe-go | [] [] |
|
||||
gpe-login | [] [] [] |
|
||||
gpe-ownerinfo | [] [] [] [] [] |
|
||||
gpe-sketchbook | [] [] |
|
||||
gpe-su | [] [] [] |
|
||||
gpe-taskmanager | [] [] [] |
|
||||
gpe-timesheet | [] [] [] [] |
|
||||
gpe-today | [] [] [] [] |
|
||||
gpe-todo | [] [] [] |
|
||||
gphoto2 | [] [] [] [] [] |
|
||||
gprof | [] [] [] |
|
||||
gpsdrive | () () [] () |
|
||||
gramadoir | [] [] |
|
||||
grep | [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
gretl | [] [] [] |
|
||||
gsasl | [] [] [] |
|
||||
gss | [] |
|
||||
gst-plugins | [] [] [] |
|
||||
gstreamer | [] |
|
||||
gtick | [] [] [] [] [] |
|
||||
gtkspell | [] [] [] [] [] [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] [] |
|
||||
impost | [] [] |
|
||||
indent | [] [] [] [] [] [] [] [] [] [] [] |
|
||||
iso_3166 | [] [] [] |
|
||||
iso_3166_1 | [] [] [] [] [] [] [] |
|
||||
iso_3166_2 | [] |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | [] [] [] |
|
||||
iso_639 | [] [] [] [] |
|
||||
jpilot | [] [] |
|
||||
jtag | [] |
|
||||
jwhois | [] [] [] [] [] |
|
||||
kbd | [] [] |
|
||||
latrine | [] [] [] |
|
||||
ld | [] [] |
|
||||
libc | [] [] [] [] [] |
|
||||
libextractor | |
|
||||
libgpewidget | [] [] [] [] [] |
|
||||
libgsasl | [] [] |
|
||||
libiconv | [] [] [] [] [] [] [] [] [] [] [] |
|
||||
libidn | [] [] |
|
||||
lifelines | () |
|
||||
lilypond | [] |
|
||||
lingoteach | [] [] [] |
|
||||
lynx | [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
mailutils | [] [] |
|
||||
make | [] [] [] [] [] [] [] |
|
||||
man-db | () |
|
||||
minicom | [] [] [] [] |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] [] () [] [] |
|
||||
nano_1_0 | [] [] [] [] [] |
|
||||
opcodes | [] [] |
|
||||
parted | [] [] [] [] |
|
||||
psmisc | [] [] |
|
||||
ptx | [] [] [] [] [] [] [] [] [] |
|
||||
pwdutils | |
|
||||
python | |
|
||||
radius | [] [] |
|
||||
recode | [] [] [] [] [] [] [] [] |
|
||||
rpm | [] |
|
||||
screem | |
|
||||
scrollkeeper | [] [] [] |
|
||||
sed | [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] [] [] [] |
|
||||
shared-mime-info | [] [] [] [] [] [] |
|
||||
sharutils | [] [] [] [] [] [] [] |
|
||||
silky | [] |
|
||||
skencil | [] [] |
|
||||
sketch | [] [] |
|
||||
solfege | [] |
|
||||
soundtracker | [] [] [] |
|
||||
sp | [] |
|
||||
stardict | [] |
|
||||
tar | [] [] [] [] [] |
|
||||
texinfo | [] [] [] |
|
||||
textutils | [] [] [] [] [] |
|
||||
tin | [] () |
|
||||
tp-robot | [] [] |
|
||||
tuxpaint | [] [] [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | [] [] |
|
||||
util-linux | [] [] [] [] [] [] |
|
||||
vorbis-tools | [] [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] [] [] [] |
|
||||
xchat | [] [] [] [] [] |
|
||||
xkeyboard-config | |
|
||||
xpad | [] [] [] |
|
||||
+-----------------------------------------------+
|
||||
eo es et eu fa fi fr ga gl he hr hu id is it
|
||||
13 85 21 15 2 35 115 45 17 8 6 40 27 1 45
|
||||
|
||||
ja ko ku lg lt lv mk mn ms mt nb nl nn no nso
|
||||
+-----------------------------------------------+
|
||||
GNUnet | |
|
||||
a2ps | () [] [] () |
|
||||
aegis | () |
|
||||
ant-phone | [] |
|
||||
anubis | [] [] [] |
|
||||
ap-utils | |
|
||||
aspell | [] [] |
|
||||
bash | [] |
|
||||
batchelor | [] |
|
||||
bfd | |
|
||||
bibshelf | |
|
||||
binutils | |
|
||||
bison | [] [] [] |
|
||||
bluez-pin | [] |
|
||||
clisp | [] |
|
||||
console-tools | |
|
||||
coreutils | [] [] |
|
||||
cpio | |
|
||||
cpplib | |
|
||||
darkstat | [] [] |
|
||||
dialog | [] |
|
||||
diffutils | [] [] [] |
|
||||
doodle | |
|
||||
e2fsprogs | |
|
||||
enscript | [] |
|
||||
error | [] |
|
||||
fetchmail | [] [] |
|
||||
fileutils | [] [] |
|
||||
findutils | [] |
|
||||
flex | [] [] |
|
||||
fslint | [] |
|
||||
gas | |
|
||||
gawk | [] [] |
|
||||
gbiff | [] |
|
||||
gcal | |
|
||||
gcc | |
|
||||
gettext-examples | [] [] |
|
||||
gettext-runtime | [] [] [] |
|
||||
gettext-tools | [] [] |
|
||||
gimp-print | [] [] |
|
||||
gip | [] |
|
||||
gliv | [] |
|
||||
glunarclock | [] [] |
|
||||
gmult | [] |
|
||||
gnubiff | |
|
||||
gnucash | () () [] |
|
||||
gnucash-glossary | [] |
|
||||
gpe-aerial | [] |
|
||||
gpe-beam | [] |
|
||||
gpe-calendar | [] |
|
||||
gpe-clock | [] |
|
||||
gpe-conf | [] |
|
||||
gpe-contacts | |
|
||||
gpe-edit | [] |
|
||||
gpe-go | [] |
|
||||
gpe-login | [] |
|
||||
gpe-ownerinfo | [] |
|
||||
gpe-sketchbook | [] |
|
||||
gpe-su | [] |
|
||||
gpe-taskmanager | [] [] |
|
||||
gpe-timesheet | [] |
|
||||
gpe-today | [] |
|
||||
gpe-todo | [] |
|
||||
gphoto2 | [] [] |
|
||||
gprof | |
|
||||
gpsdrive | () () () |
|
||||
gramadoir | () |
|
||||
grep | [] [] [] |
|
||||
gretl | |
|
||||
gsasl | [] |
|
||||
gss | |
|
||||
gst-plugins | [] |
|
||||
gstreamer | [] |
|
||||
gtick | [] |
|
||||
gtkspell | [] [] |
|
||||
hello | [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] |
|
||||
impost | |
|
||||
indent | [] [] |
|
||||
iso_3166 | [] |
|
||||
iso_3166_1 | [] [] |
|
||||
iso_3166_2 | [] |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | [] [] [] |
|
||||
iso_639 | [] [] [] |
|
||||
jpilot | () () () |
|
||||
jtag | |
|
||||
jwhois | [] |
|
||||
kbd | [] |
|
||||
latrine | [] |
|
||||
ld | |
|
||||
libc | [] [] [] [] [] |
|
||||
libextractor | |
|
||||
libgpewidget | [] |
|
||||
libgsasl | [] |
|
||||
libiconv | [] |
|
||||
libidn | |
|
||||
lifelines | [] |
|
||||
lilypond | [] |
|
||||
lingoteach | [] |
|
||||
lynx | [] [] |
|
||||
m4 | [] [] |
|
||||
mailutils | |
|
||||
make | [] [] [] |
|
||||
man-db | () |
|
||||
minicom | [] |
|
||||
mysecretdiary | [] |
|
||||
nano | [] [] |
|
||||
nano_1_0 | [] [] [] |
|
||||
opcodes | [] |
|
||||
parted | [] [] |
|
||||
psmisc | [] [] |
|
||||
ptx | [] [] [] |
|
||||
pwdutils | |
|
||||
python | |
|
||||
radius | |
|
||||
recode | [] |
|
||||
rpm | [] [] |
|
||||
screem | [] |
|
||||
scrollkeeper | [] [] [] |
|
||||
sed | [] [] |
|
||||
sh-utils | [] [] |
|
||||
shared-mime-info | [] [] [] [] |
|
||||
sharutils | [] [] |
|
||||
silky | [] |
|
||||
skencil | |
|
||||
sketch | |
|
||||
solfege | [] [] |
|
||||
soundtracker | |
|
||||
sp | () |
|
||||
stardict | [] [] |
|
||||
tar | [] [] |
|
||||
texinfo | [] [] [] |
|
||||
textutils | [] [] [] |
|
||||
tin | |
|
||||
tp-robot | [] |
|
||||
tuxpaint | [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | |
|
||||
util-linux | [] [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | [] |
|
||||
wdiff | [] [] |
|
||||
wget | [] [] |
|
||||
xchat | [] [] [] [] |
|
||||
xkeyboard-config | [] |
|
||||
xpad | [] |
|
||||
+-----------------------------------------------+
|
||||
ja ko ku lg lt lv mk mn ms mt nb nl nn no nso
|
||||
33 11 1 1 1 2 2 3 11 0 15 96 7 5 0
|
||||
|
||||
or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
|
||||
+-------------------------------------------------+
|
||||
GNUnet | |
|
||||
a2ps | () [] [] [] [] [] [] |
|
||||
aegis | () () |
|
||||
ant-phone | [] |
|
||||
anubis | [] [] [] |
|
||||
ap-utils | () |
|
||||
aspell | [] [] |
|
||||
bash | [] [] [] |
|
||||
batchelor | [] |
|
||||
bfd | |
|
||||
bibshelf | |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] [] |
|
||||
bluez-pin | [] [] [] [] [] [] [] [] |
|
||||
clisp | [] |
|
||||
console-tools | [] |
|
||||
coreutils | [] [] [] [] |
|
||||
cpio | [] [] |
|
||||
cpplib | |
|
||||
darkstat | [] [] [] [] [] [] |
|
||||
dialog | [] [] [] [] [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] |
|
||||
doodle | [] |
|
||||
e2fsprogs | [] [] |
|
||||
enscript | [] [] [] [] |
|
||||
error | [] [] [] |
|
||||
fetchmail | [] () [] [] [] |
|
||||
fileutils | [] [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] |
|
||||
flex | [] [] [] [] [] |
|
||||
fslint | [] [] [] |
|
||||
gas | |
|
||||
gawk | [] [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | |
|
||||
gettext-examples | [] [] [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] [] [] [] |
|
||||
gettext-tools | [] [] [] [] [] [] [] |
|
||||
gimp-print | [] [] |
|
||||
gip | [] [] [] |
|
||||
gliv | [] [] [] |
|
||||
glunarclock | [] [] [] [] [] [] |
|
||||
gmult | [] [] [] [] |
|
||||
gnubiff | () [] |
|
||||
gnucash | () [] [] [] [] |
|
||||
gnucash-glossary | [] [] [] |
|
||||
gpe-aerial | [] [] [] [] [] [] |
|
||||
gpe-beam | [] [] [] [] [] [] |
|
||||
gpe-calendar | [] [] [] [] [] [] [] |
|
||||
gpe-clock | [] [] [] [] [] [] [] |
|
||||
gpe-conf | [] [] [] [] [] [] |
|
||||
gpe-contacts | [] [] [] |
|
||||
gpe-edit | [] [] [] [] [] [] [] |
|
||||
gpe-go | [] [] [] [] [] |
|
||||
gpe-login | [] [] [] [] [] [] [] |
|
||||
gpe-ownerinfo | [] [] [] [] [] [] [] |
|
||||
gpe-sketchbook | [] [] [] [] [] [] [] |
|
||||
gpe-su | [] [] [] [] [] [] [] |
|
||||
gpe-taskmanager | [] [] [] [] [] [] [] |
|
||||
gpe-timesheet | [] [] [] [] [] [] [] |
|
||||
gpe-today | [] [] [] [] [] [] [] |
|
||||
gpe-todo | [] [] [] [] [] [] [] |
|
||||
gphoto2 | [] [] [] [] |
|
||||
gprof | [] [] [] |
|
||||
gpsdrive | [] |
|
||||
gramadoir | [] |
|
||||
grep | [] [] [] [] [] [] [] |
|
||||
gretl | [] |
|
||||
gsasl | [] [] [] [] [] |
|
||||
gss | [] [] [] |
|
||||
gst-plugins | [] [] [] [] |
|
||||
gstreamer | [] [] [] [] |
|
||||
gtick | [] [] [] |
|
||||
gtkspell | [] [] [] [] [] [] |
|
||||
hello | [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] [] |
|
||||
impost | |
|
||||
indent | [] [] [] [] [] [] |
|
||||
iso_3166 | [] [] [] [] [] |
|
||||
iso_3166_1 | [] [] [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | [] [] [] |
|
||||
iso_4217 | [] [] |
|
||||
iso_639 | [] [] [] |
|
||||
jpilot | |
|
||||
jtag | [] |
|
||||
jwhois | [] [] [] () () |
|
||||
kbd | [] [] [] |
|
||||
latrine | [] [] |
|
||||
ld | [] |
|
||||
libc | [] [] [] [] [] |
|
||||
libextractor | [] |
|
||||
libgpewidget | [] [] [] [] [] [] |
|
||||
libgsasl | [] [] [] |
|
||||
libiconv | [] [] [] [] [] [] [] [] [] [] |
|
||||
libidn | [] () |
|
||||
lifelines | [] [] |
|
||||
lilypond | [] |
|
||||
lingoteach | [] |
|
||||
lynx | [] [] [] |
|
||||
m4 | [] [] [] [] [] |
|
||||
mailutils | [] [] [] |
|
||||
make | [] [] [] [] |
|
||||
man-db | [] [] |
|
||||
minicom | [] [] [] [] |
|
||||
mysecretdiary | [] [] [] [] |
|
||||
nano | [] [] [] |
|
||||
nano_1_0 | [] [] [] [] |
|
||||
opcodes | [] [] |
|
||||
parted | [] [] [] [] |
|
||||
psmisc | [] [] |
|
||||
ptx | [] [] [] [] [] [] |
|
||||
pwdutils | [] |
|
||||
python | |
|
||||
radius | [] [] |
|
||||
recode | [] [] [] [] [] [] |
|
||||
rpm | [] [] [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] [] [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] |
|
||||
shared-mime-info | [] [] [] [] [] |
|
||||
sharutils | [] [] [] |
|
||||
silky | [] |
|
||||
skencil | [] [] [] |
|
||||
sketch | [] [] [] |
|
||||
solfege | |
|
||||
soundtracker | [] [] |
|
||||
sp | |
|
||||
stardict | [] [] |
|
||||
tar | [] [] [] [] |
|
||||
texinfo | [] [] [] [] |
|
||||
textutils | [] [] [] |
|
||||
tin | |
|
||||
tp-robot | [] |
|
||||
tuxpaint | [] [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | |
|
||||
util-linux | [] [] [] |
|
||||
vorbis-tools | [] [] |
|
||||
wastesedge | |
|
||||
wdiff | [] [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] [] [] |
|
||||
xchat | [] [] [] [] [] [] |
|
||||
xkeyboard-config | |
|
||||
xpad | |
|
||||
+-------------------------------------------------+
|
||||
or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
|
||||
1 0 48 30 58 6 79 71 5 45 13 12 50 86 0
|
||||
|
||||
tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
|
||||
+--------------------------------------------+
|
||||
GNUnet | | 0
|
||||
a2ps | [] [] [] | 19
|
||||
aegis | | 0
|
||||
ant-phone | [] | 4
|
||||
anubis | [] | 9
|
||||
ap-utils | () | 1
|
||||
aspell | [] [] [] | 13
|
||||
bash | | 10
|
||||
batchelor | [] [] | 7
|
||||
bfd | | 1
|
||||
bibshelf | [] | 5
|
||||
binutils | [] | 6
|
||||
bison | [] | 17
|
||||
bluez-pin | [] [] [] [] [] | 24
|
||||
clisp | | 7
|
||||
console-tools | [] | 4
|
||||
coreutils | [] | 16
|
||||
cpio | [] [] | 6
|
||||
cpplib | [] [] | 7
|
||||
darkstat | [] () () | 15
|
||||
dialog | [] [] [] | 25
|
||||
diffutils | [] [] [] [] | 28
|
||||
doodle | [] | 5
|
||||
e2fsprogs | [] | 8
|
||||
enscript | [] | 12
|
||||
error | [] [] [] | 16
|
||||
fetchmail | [] | 12
|
||||
fileutils | [] [] [] | 18
|
||||
findutils | [] [] | 17
|
||||
flex | [] [] | 15
|
||||
fslint | [] | 7
|
||||
gas | [] | 3
|
||||
gawk | [] | 14
|
||||
gbiff | | 4
|
||||
gcal | [] | 5
|
||||
gcc | [] | 3
|
||||
gettext-examples | [] [] [] [] | 20
|
||||
gettext-runtime | [] [] [] [] [] | 25
|
||||
gettext-tools | [] [] [] | 17
|
||||
gimp-print | [] | 11
|
||||
gip | [] | 8
|
||||
gliv | [] | 6
|
||||
glunarclock | [] [] | 13
|
||||
gmult | [] [] [] | 13
|
||||
gnubiff | [] | 3
|
||||
gnucash | () [] | 10
|
||||
gnucash-glossary | [] | 8
|
||||
gpe-aerial | [] [] | 13
|
||||
gpe-beam | [] [] | 13
|
||||
gpe-calendar | [] [] [] [] | 18
|
||||
gpe-clock | [] [] [] [] | 17
|
||||
gpe-conf | [] [] | 12
|
||||
gpe-contacts | [] [] | 6
|
||||
gpe-edit | [] [] [] [] | 15
|
||||
gpe-go | [] [] | 11
|
||||
gpe-login | [] [] [] [] [] | 18
|
||||
gpe-ownerinfo | [] [] [] [] | 19
|
||||
gpe-sketchbook | [] [] | 14
|
||||
gpe-su | [] [] [] | 16
|
||||
gpe-taskmanager | [] [] [] | 17
|
||||
gpe-timesheet | [] [] [] [] | 17
|
||||
gpe-today | [] [] [] [] [] | 19
|
||||
gpe-todo | [] [] [] | 16
|
||||
gphoto2 | [] [] | 17
|
||||
gprof | [] [] | 10
|
||||
gpsdrive | | 2
|
||||
gramadoir | [] | 6
|
||||
grep | [] [] [] [] | 32
|
||||
gretl | | 4
|
||||
gsasl | [] [] | 12
|
||||
gss | [] | 5
|
||||
gst-plugins | [] [] | 16
|
||||
gstreamer | [] [] [] | 14
|
||||
gtick | [] | 11
|
||||
gtkspell | [] [] [] | 20
|
||||
hello | [] [] [] [] | 37
|
||||
id-utils | [] [] | 13
|
||||
impost | [] | 3
|
||||
indent | [] [] [] | 24
|
||||
iso_3166 | [] [] [] | 12
|
||||
iso_3166_1 | [] [] | 20
|
||||
iso_3166_2 | | 2
|
||||
iso_3166_3 | [] [] | 8
|
||||
iso_4217 | [] [] | 10
|
||||
iso_639 | [] [] | 12
|
||||
jpilot | [] [] [] | 6
|
||||
jtag | | 2
|
||||
jwhois | [] [] [] | 12
|
||||
kbd | [] [] | 12
|
||||
latrine | [] [] | 8
|
||||
ld | [] | 5
|
||||
libc | [] [] | 22
|
||||
libextractor | | 1
|
||||
libgpewidget | [] [] | 17
|
||||
libgsasl | [] | 7
|
||||
libiconv | [] [] [] [] [] | 32
|
||||
libidn | [] [] | 5
|
||||
lifelines | | 4
|
||||
lilypond | [] | 5
|
||||
lingoteach | | 5
|
||||
lynx | [] [] | 14
|
||||
m4 | [] [] | 17
|
||||
mailutils | [] | 7
|
||||
make | [] [] | 18
|
||||
man-db | | 5
|
||||
minicom | | 11
|
||||
mysecretdiary | [] [] | 12
|
||||
nano | | 11
|
||||
nano_1_0 | [] [] | 17
|
||||
opcodes | [] | 7
|
||||
parted | [] [] [] | 17
|
||||
psmisc | [] | 7
|
||||
ptx | [] [] | 23
|
||||
pwdutils | | 1
|
||||
python | | 0
|
||||
radius | [] | 6
|
||||
recode | [] [] | 22
|
||||
rpm | [] [] | 11
|
||||
screem | | 1
|
||||
scrollkeeper | [] [] | 23
|
||||
sed | [] [] | 19
|
||||
sh-utils | [] | 15
|
||||
shared-mime-info | [] [] | 19
|
||||
sharutils | [] [] [] | 20
|
||||
silky | | 3
|
||||
skencil | | 6
|
||||
sketch | | 6
|
||||
solfege | | 4
|
||||
soundtracker | [] | 8
|
||||
sp | [] | 3
|
||||
stardict | [] [] [] [] | 10
|
||||
tar | [] [] | 13
|
||||
texinfo | [] [] | 14
|
||||
textutils | [] [] [] | 17
|
||||
tin | | 1
|
||||
tp-robot | [] [] | 7
|
||||
tuxpaint | [] [] [] [] | 34
|
||||
unicode-han-tra... | | 0
|
||||
unicode-transla... | | 2
|
||||
util-linux | [] [] | 17
|
||||
vorbis-tools | [] | 10
|
||||
wastesedge | | 1
|
||||
wdiff | [] [] | 22
|
||||
wget | [] [] [] [] | 31
|
||||
xchat | [] [] [] | 22
|
||||
xkeyboard-config | | 1
|
||||
xpad | [] | 5
|
||||
+--------------------------------------------+
|
||||
72 teams tg th tk tr uk ven vi wa xh zh_CN zh_TW zu
|
||||
147 domains 0 0 1 78 29 0 71 16 0 41 20 0 1711
|
||||
|
||||
Some counters in the preceding matrix are higher than the number of
|
||||
visible blocks let us expect. This is because a few extra PO files are
|
||||
used for implementing regional variants of languages, or language
|
||||
dialects.
|
||||
|
||||
For a PO file in the matrix above to be effective, the package to
|
||||
which it applies should also have been internationalized and
|
||||
distributed as such by its maintainer. There might be an observable
|
||||
lag between the mere existence a PO file and its wide availability in a
|
||||
distribution.
|
||||
|
||||
If April 2005 seems to be old, you may fetch a more recent copy of
|
||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
||||
matrix with full percentage details can be found at
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||
|
||||
1.6 Using `gettext' in new packages
|
||||
===================================
|
||||
|
||||
If you are writing a freely available program and want to
|
||||
internationalize it you are welcome to use GNU `gettext' in your
|
||||
package. Of course you have to respect the GNU Library General Public
|
||||
License which covers the use of the GNU `gettext' library. This means
|
||||
in particular that even non-free programs can use `libintl' as a shared
|
||||
library, whereas only free software can use `libintl' as a static
|
||||
library or use modified versions of `libintl'.
|
||||
|
||||
Once the sources are changed appropriately and the setup can handle
|
||||
the use of `gettext' the only thing missing are the translations. The
|
||||
Free Translation Project is also available for packages which are not
|
||||
developed inside the GNU project. Therefore the information given above
|
||||
applies also for every other Free Software Project. Contact
|
||||
`translation@iro.umontreal.ca' to make the `.pot' files available to
|
||||
the translation teams.
|
||||
|
650
CMakeLists.txt
|
@ -1,650 +0,0 @@
|
|||
# set minimum version
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
|
||||
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")
|
||||
|
||||
# function to remove a flag from a variable
|
||||
function(RemoveFlag VAR SCOPE FLAG DOCSTRING)
|
||||
if(NOT "${${VAR}}" STREQUAL "")
|
||||
MESSAGE("Removing ${FLAG} flag from ${VAR}")
|
||||
separate_arguments(${VAR})
|
||||
list(REMOVE_ITEM ${VAR} ${FLAG})
|
||||
string(REPLACE ";" " " ${VAR} "${${VAR}}")
|
||||
|
||||
if("${SCOPE}" STREQUAL "CACHE")
|
||||
set(${VAR} "${${VAR}}" CACHE STRING "${DOCSTRING}" FORCE)
|
||||
elseif("${SCOPE}" STREQUAL "SCRIPT")
|
||||
set(${VAR} "${${VAR}}" PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# Options
|
||||
#
|
||||
|
||||
# Adhere to GNU filesystem layout conventions
|
||||
include(GNUInstallDirs)
|
||||
|
||||
#Path options
|
||||
set(DATADIRNAME "wesnoth" CACHE STRING "change the name of the directory for the read-only architecture-independent game data")
|
||||
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}" CACHE STRING "change the dir where binaries are placed right at compile time")
|
||||
set(LOCALEDIR "translations" CACHE STRING "change the name of the locale data directory to a non-default name")
|
||||
set(PREFERENCES_DIR "" CACHE STRING "Use a non-default preferences directory (.wesnoth on unix)")
|
||||
set(DEFAULT_PREFS_FILE "" CACHE STRING "Set system wide preferences file")
|
||||
|
||||
#server options
|
||||
set(SERVER_UID "" CACHE STRING "User id of the user who runs wesnothd")
|
||||
set(SERVER_GID "" CACHE STRING "Group id of the user who runs wesnothd")
|
||||
set(FIFO_DIR "/var/run/wesnothd" CACHE STRING "Directory for the wesnothd fifo socket file")
|
||||
|
||||
#build options
|
||||
option(ENABLE_GAME "Enable compilation of the game" ON)
|
||||
option(ENABLE_CAMPAIGN_SERVER "Enable compilation of campaign(add-ons) server")
|
||||
option(ENABLE_SERVER "Enable compilation of MP server" ON)
|
||||
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 what std version to use
|
||||
if(NOT CXX_STD)
|
||||
set(CXX_STD "17")
|
||||
endif()
|
||||
set(CMAKE_CXX_STANDARD ${CXX_STD})
|
||||
# make sure to force using it
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
# forbid defaulting to gnu++NN instead of c++NN
|
||||
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(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)
|
||||
endif()
|
||||
|
||||
#check for some compiler/arch specific things and export defines accordingly...
|
||||
include(SearchForStuff)
|
||||
|
||||
# if no build type is specified, it can happen that the game is built without
|
||||
# optimization (c.f. bug #23445), work around this by enforcing "release" type
|
||||
# if nothing was selected
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
||||
message("No build type specified, defaulting to Release")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED ENABLE_DISPLAY_REVISION)
|
||||
# can't run the shell script on windows
|
||||
if(NOT WIN32)
|
||||
# Test whether the code is used in a repository if not autorevision will
|
||||
# fail and should be disabled by default. If inside a repository enable
|
||||
# the display of revision numbers by default.
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_SOURCE_DIR}/utils/autorevision.sh -t h > ${CMAKE_CURRENT_BINARY_DIR}/revision.dummy
|
||||
WORKING_DIRECTORY
|
||||
${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE
|
||||
ENABLE_DISPLAY_REVISION_TEST_OUTPUT
|
||||
ERROR_VARIABLE
|
||||
ENABLE_DISPLAY_REVISION_TEST_ERRNO
|
||||
)
|
||||
|
||||
if("${ENABLE_DISPLAY_REVISION_TEST_ERRNO}" STREQUAL "")
|
||||
set(DEFAULT_ENABLE_DISPLAY_REVISION true)
|
||||
else()
|
||||
set(DEFAULT_ENABLE_DISPLAY_REVISION false)
|
||||
endif()
|
||||
|
||||
unset(ENABLE_DISPLAY_REVISION_TEST_OUTPUT)
|
||||
unset(ENABLE_DISPLAY_REVISION_TEST_ERRNO)
|
||||
else()
|
||||
set(DEFAULT_ENABLE_DISPLAY_REVISION false)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(
|
||||
ENABLE_DISPLAY_REVISION
|
||||
"Enable the display of the revision number in the game, only enable it when in a checkout"
|
||||
${DEFAULT_ENABLE_DISPLAY_REVISION}
|
||||
)
|
||||
|
||||
if(UNIX AND NOT APPLE AND NOT CYGWIN)
|
||||
option(ENABLE_DESKTOP_ENTRY "enable installation of desktop entry files" ON)
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
option(ENABLE_APPDATA_FILE "enable installation of an appdata file for appstream" ON)
|
||||
endif()
|
||||
|
||||
option(HARDEN "Whether to enable options to harden the executables" ON)
|
||||
option(ENABLE_STRICT_COMPILATION "Sets the strict compilation mode" OFF)
|
||||
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(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)
|
||||
endif()
|
||||
|
||||
set(BINARY_SUFFIX "" CACHE STRING "Suffix behind all binaries")
|
||||
set(BINARY_PREFIX "" CACHE STRING "Prefix in front of all binaries")
|
||||
|
||||
#
|
||||
# Handle options (set paths/definitions/etc...)
|
||||
#
|
||||
|
||||
### Set the environment compiler flags.
|
||||
|
||||
if(NOT MSVC)
|
||||
if(NOT DEFINED CXX_FLAGS_USER)
|
||||
|
||||
MESSAGE(STATUS "Environment compiler flags set to »${CXX_FLAGS_USER}«")
|
||||
set(CXX_FLAGS_USER
|
||||
"$ENV{CXXFLAGS}"
|
||||
CACHE
|
||||
STRING
|
||||
"The CXXFLAGS environment variable used for the initial generation."
|
||||
FORCE
|
||||
)
|
||||
|
||||
endif()
|
||||
|
||||
set(COMPILER_FLAGS "-Wall -Wextra -Werror=non-virtual-dtor -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wold-style-cast -Wtrampolines")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
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)
|
||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -Werror")
|
||||
endif()
|
||||
|
||||
### Set pedantic compiler flags.
|
||||
|
||||
if(ENABLE_PEDANTIC_COMPILATION)
|
||||
|
||||
set(CXX_FLAGS_PEDANTIC_COMPILATION "-Wlogical-op -Wmissing-declarations -Wredundant-decls -Wctor-dtor-privacy -Wdouble-promotion -Wuseless-cast -Wnoexcept")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(CXX_FLAGS_PEDANTIC_COMPILATION "${CXX_FLAGS_PEDANTIC_COMPILATION} -Wdocumentation -Wno-documentation-deprecated-sync")
|
||||
endif()
|
||||
|
||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} ${CXX_FLAGS_PEDANTIC_COMPILATION}")
|
||||
|
||||
endif()
|
||||
|
||||
# check for sanitizer options
|
||||
if(SANITIZE)
|
||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -fsanitize=${SANITIZE}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${SANITIZE}")
|
||||
# manually disable some optimizations to get better stacktraces if sanitizers are used
|
||||
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}")
|
||||
|
||||
if(NOT "${CMAKE_CXX_FLAGS}" STREQUAL "${COMPILER_FLAGS}")
|
||||
MESSAGE(STATUS "CMake compiler flags set to »${COMPILER_FLAGS}«")
|
||||
set(CMAKE_CXX_FLAGS
|
||||
"${COMPILER_FLAGS}"
|
||||
CACHE
|
||||
STRING
|
||||
"Global flags used by the CXX compiler during all builds."
|
||||
FORCE
|
||||
)
|
||||
endif()
|
||||
|
||||
# #
|
||||
# Determine optimization level
|
||||
# #
|
||||
|
||||
if(NOT OPT)
|
||||
if(PROFILER STREQUAL "perf")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-Og")
|
||||
set(CMAKE_C_FLAGS_RELEASE "-Og")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3")
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${OPT}")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${OPT}")
|
||||
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${OPT}")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${OPT}")
|
||||
endif()
|
||||
|
||||
# check for hardening options
|
||||
if(HARDEN)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE -fstack-protector-strong")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE -fstack-protector-strong")
|
||||
|
||||
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()
|
||||
|
||||
if(NOT CMAKE_CXX_FLAGS_DEBUG STREQUAL "-O0")
|
||||
add_definitions(-D_FORTIFY_SOURCE=2)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-lstdc++ -lm ${CMAKE_EXE_LINKER_FLAGS}")
|
||||
endif()
|
||||
|
||||
add_definitions(-DWESNOTH_PATH="${CMAKE_INSTALL_FULL_DATADIR}/${DATADIRNAME}")
|
||||
|
||||
if(X11_FOUND)
|
||||
add_definitions(-D_X11)
|
||||
endif()
|
||||
|
||||
add_definitions(-DLOCALEDIR="${LOCALEDIR}")
|
||||
|
||||
# -rdynamic is automatically added, but we don't need it, and it increases the executable size
|
||||
RemoveFlag(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS SCRIPT "-rdynamic" "")
|
||||
RemoveFlag(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS SCRIPT "-rdynamic" "")
|
||||
|
||||
# -DNDEBUG is automatically added to all release build types, so manually remove this define from the related variables
|
||||
RemoveFlag(CMAKE_CXX_FLAGS_RELWITHDEBINFO CACHE "-DNDEBUG" "Default C++ flags for RelWithDebInfo")
|
||||
RemoveFlag(CMAKE_C_FLAGS_RELWITHDEBINFO CACHE "-DNDEBUG" "Default C flags for RelWithDebInfo")
|
||||
RemoveFlag(CMAKE_CXX_FLAGS_MINSIZEREL CACHE "-DNDEBUG" "Default C++ flags for MinSizeRel")
|
||||
RemoveFlag(CMAKE_C_FLAGS_MINSIZEREL CACHE "-DNDEBUG" "Default C flags for MinSizeRel")
|
||||
|
||||
# #
|
||||
# Start determining options for Release build
|
||||
# #
|
||||
|
||||
# reset the base Release build option
|
||||
MESSAGE("Replacing default flags used for Release build with ${OPT} ${EXTRA_FLAGS_CONFIG} ${EXTRA_FLAGS_RELEASE}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${EXTRA_FLAGS_CONFIG} ${EXTRA_FLAGS_RELEASE}" CACHE STRING "Release build flags" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${EXTRA_FLAGS_CONFIG} ${EXTRA_FLAGS_RELEASE}" CACHE STRING "Release build flags" FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "" FORCE)
|
||||
# set the arch to use for Release build if provided
|
||||
if(ARCH)
|
||||
MESSAGE("adding -march=${ARCH} to Release build")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=${ARCH}" CACHE STRING "Release build flags" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=${ARCH}" CACHE STRING "Release build flags" FORCE)
|
||||
endif()
|
||||
|
||||
# PGO and LTO for GCC
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
if(PGO_DATA STREQUAL "generate")
|
||||
MESSAGE("Generating PGO data")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-generate=${CMAKE_SOURCE_DIR}/pgo_data/" CACHE STRING "Release build flags generating PGO data" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-generate=${CMAKE_SOURCE_DIR}/pgo_data/" CACHE STRING "Release build flags generating PGO data" FORCE)
|
||||
endif()
|
||||
|
||||
if(PGO_DATA STREQUAL "use")
|
||||
MESSAGE("Using PGO data from previous runs")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-correction -fprofile-use=${CMAKE_SOURCE_DIR}/pgo_data/" CACHE STRING "Release build flags for using PGO data" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-correction -fprofile-use=${CMAKE_SOURCE_DIR}/pgo_data/" CACHE STRING "Release build flags for using PGO data" FORCE)
|
||||
endif()
|
||||
|
||||
if(ENABLE_LTO)
|
||||
if(NOT LTO_JOBS)
|
||||
MESSAGE("LTO_JOBS not set, defaulting to 1")
|
||||
set(LTO_JOBS "1" CACHE STRING "Number of threads to use for LTO with gcc" FORCE)
|
||||
endif()
|
||||
|
||||
MESSAGE("added -flto=${LTO_JOBS} to Release build")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto=${LTO_JOBS}" CACHE STRING "Release build flags with LTO" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto=${LTO_JOBS}" CACHE STRING "Release build flags with LTO" FORCE)
|
||||
|
||||
MESSAGE("Using GCC gold linker")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fuse-ld=gold -Wno-stringop-overflow" CACHE STRING "" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# PGO and LTO for Clang
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
if(PGO_DATA STREQUAL "generate")
|
||||
MESSAGE("Generating PGO data")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-instr-generate=${CMAKE_SOURCE_DIR}/pgo_data/wesnoth-%p.profraw" CACHE STRING "Release build flags generating PGO data" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-instr-generate=${CMAKE_SOURCE_DIR}/pgo_data/wesnoth-%p.profraw" CACHE STRING "Release build flags generating PGO data" FORCE)
|
||||
endif()
|
||||
|
||||
if(PGO_DATA STREQUAL "use")
|
||||
MESSAGE("Using PGO data from previous runs")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-instr-use=${CMAKE_SOURCE_DIR}/pgo_data/wesnoth.profdata" CACHE STRING "Release build flags for using PGO data" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-instr-use=${CMAKE_SOURCE_DIR}/pgo_data/wesnoth.profdata" CACHE STRING "Release build flags for using PGO data" FORCE)
|
||||
endif()
|
||||
|
||||
if(ENABLE_LTO)
|
||||
MESSAGE("added -flto=thin to Release build")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto=thin" CACHE STRING "Release build flags with LTO" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto=thin" CACHE STRING "Release build flags with LTO" FORCE)
|
||||
|
||||
MESSAGE("Using Clang LLD linker")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fuse-ld=lld" CACHE STRING "Linker flag for building with LTO and clang" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# set CMAKE_AR and CMAKE_RANLIB to use LTO-enabled variants if LTO is enabled
|
||||
if(ENABLE_LTO)
|
||||
MESSAGE("Using gcc-ar and gcc-ranlib")
|
||||
find_program(LTO_AR NAMES gcc-ar)
|
||||
find_program(LTO_RANLIB NAMES gcc-ranlib)
|
||||
set(CMAKE_AR "${LTO_AR}" CACHE STRING "Supports LTO" FORCE)
|
||||
set(CMAKE_RANLIB "${LTO_RANLIB}" CACHE STRING "Supports LTO" FORCE)
|
||||
endif()
|
||||
MARK_AS_ADVANCED(LTO_AR LTO_RANLIB NON_LTO_AR NON_LTO_RANLIB)
|
||||
|
||||
# add in extra flags
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${LINK_EXTRA_FLAGS_CONFIG} ${LINK_EXTRA_FLAGS_RELEASE}")
|
||||
|
||||
# clean the pgo data
|
||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_SOURCE_DIR}/pgo_data/")
|
||||
|
||||
# #
|
||||
# End determining options for Release build
|
||||
# Start setting options for Debug build
|
||||
# #
|
||||
|
||||
# replace the default Debug flag of -g with -O0 -DDEBUG -ggdb3
|
||||
# this matches the flags of scons' debug build
|
||||
MESSAGE("Replacing flags used for Debug build ${OPT} -DDEBUG -ggdb3 ${EXTRA_FLAGS_CONFIG} ${EXTRA_FLAGS_DEBUG}")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -ggdb3 ${EXTRA_FLAGS_CONFIG} ${EXTRA_FLAGS_DEBUG}" CACHE STRING "change cmake's Debug flags to match scons' flags" FORCE)
|
||||
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).
|
||||
if(GLIBCXX_DEBUG)
|
||||
MESSAGE("Defining _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC")
|
||||
add_definitions(-D_GLIBCXX_DEBUG)
|
||||
add_definitions(-D_GLIBCXX_DEBUG_PEDANTIC)
|
||||
endif()
|
||||
|
||||
# #
|
||||
# Setup profiler build options
|
||||
# #
|
||||
set(PROFILER "" CACHE STRING "Enable performance-measuring tools (and choose which tool to use)")
|
||||
|
||||
if(PROFILER STREQUAL "gprof")
|
||||
MESSAGE("Profiler is gprof")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -pg ${EXTRA_FLAGS_CONFIG}" CACHE STRING "Flags for profiling with gprof" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -pg ${EXTRA_FLAGS_CONFIG}" CACHE STRING "Flags for profiling with gprof" FORCE)
|
||||
endif()
|
||||
|
||||
if(PROFILER STREQUAL "gcov")
|
||||
MESSAGE("Profiler is gcov")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage ${EXTRA_FLAGS_CONFIG}" CACHE STRING "Flags for profiling with gcov" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage ${EXTRA_FLAGS_CONFIG}" CACHE STRING "Flags for profiling with gcov" FORCE)
|
||||
endif()
|
||||
|
||||
if(PROFILER STREQUAL "gperftools")
|
||||
MESSAGE("Profiler is gperftools")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-Wl,--no-as-needed,-lprofiler ${LINK_EXTRA_FLAGS_CONFIG}" CACHE STRING "" FORCE)
|
||||
endif()
|
||||
|
||||
if(PROFILER STREQUAL "perf")
|
||||
MESSAGE("Profiler is perf")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ggdb -fno-omit-frame-pointer ${EXTRA_FLAGS_CONFIG}" CACHE STRING "Flags for profiling with perf" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ggdb -fno-omit-frame-pointer ${EXTRA_FLAGS_CONFIG}" CACHE STRING "Flags for profiling with perf" FORCE)
|
||||
endif()
|
||||
# #
|
||||
# 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_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)
|
||||
|
||||
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")
|
||||
RemoveFlag(CMAKE_CXX_FLAGS_RELWITHDEBINFO CACHE "/DNDEBUG" "Default C++ flags for RelWithDebInfo")
|
||||
RemoveFlag(CMAKE_C_FLAGS_RELWITHDEBINFO CACHE "/DNDEBUG" "Default C flags for RelWithDebInfo")
|
||||
RemoveFlag(CMAKE_CXX_FLAGS_MINSIZEREL CACHE "/DNDEBUG" "Default C++ flags for MinSizeRel")
|
||||
RemoveFlag(CMAKE_C_FLAGS_MINSIZEREL CACHE "/DNDEBUG" "Default C flags for MinSizeRel")
|
||||
endif()
|
||||
|
||||
# When the path starts with a / on a Unix system it's an absolute path.
|
||||
# This means that on Windows the path used is always relative.
|
||||
if(IS_ABSOLUTE "${LOCALEDIR}")
|
||||
add_definitions(-DHAS_RELATIVE_LOCALEDIR=0)
|
||||
set(LOCALE_INSTALL ${LOCALEDIR})
|
||||
else()
|
||||
add_definitions(-DHAS_RELATIVE_LOCALEDIR=1)
|
||||
set(LOCALE_INSTALL ${CMAKE_INSTALL_DATADIR}/${DATADIRNAME}/${LOCALEDIR})
|
||||
endif()
|
||||
|
||||
add_definitions(-DFIFODIR="${FIFO_DIR}")
|
||||
|
||||
if(PREFERENCES_DIR)
|
||||
add_definitions(-DPREFERENCES_DIR="${PREFERENCES_DIR}")
|
||||
endif()
|
||||
|
||||
|
||||
if(DEFAULT_PREFS_FILE)
|
||||
add_definitions(-DDEFAULT_PREFS_PATH="${DEFAULT_PREFS_FILE}")
|
||||
|
||||
if(NOT DEFAULT_PREFS_FILE MATCHES "^/")
|
||||
add_definitions(-DHAS_RELATIVE_DEFPREF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ENABLE_DEBUG_WINDOW_LAYOUT)
|
||||
add_definitions(-DDEBUG_WINDOW_LAYOUT_GRAPHS)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Libraries that are only required by some targets
|
||||
#
|
||||
|
||||
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
|
||||
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
|
||||
# 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_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(LIBREADLINE readline)
|
||||
endif()
|
||||
|
||||
if(ENABLE_TESTS)
|
||||
find_package( Boost ${BOOST_VERSION} REQUIRED COMPONENTS unit_test_framework )
|
||||
endif()
|
||||
|
||||
if(ENABLE_GAME)
|
||||
if(ENABLE_NOTIFICATIONS)
|
||||
pkg_check_modules(LIBDBUS dbus-1)
|
||||
if(LIBDBUS_FOUND)
|
||||
add_definitions(-DHAVE_LIBDBUS)
|
||||
else()
|
||||
message("Could not find dbus-1, Disabling notification support.")
|
||||
endif()
|
||||
else()
|
||||
unset(LIBDBUS_FOUND CACHE)
|
||||
endif()
|
||||
|
||||
find_package(History)
|
||||
if(HISTORY_FOUND)
|
||||
add_definitions(-DHAVE_HISTORY)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ENABLE_POT_UPDATE_TARGET)
|
||||
find_package(TranslationTools REQUIRED)
|
||||
endif()
|
||||
|
||||
# get languages
|
||||
if(ENABLE_NLS)
|
||||
file(READ po/LINGUAS LINGUAS)
|
||||
string(REPLACE "\n" "" LINGUAS ${LINGUAS})
|
||||
separate_arguments(LINGUAS)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Include subdirectories
|
||||
#
|
||||
|
||||
add_subdirectory(doc)
|
||||
|
||||
if(GETTEXT_FOUND AND Python_FOUND AND ENABLE_NLS)
|
||||
add_subdirectory(po)
|
||||
endif()
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
#
|
||||
# Install files
|
||||
#
|
||||
if(ENABLE_GAME)
|
||||
install(DIRECTORY data fonts images sounds DESTINATION ${CMAKE_INSTALL_DATADIR}/${DATADIRNAME} USE_SOURCE_PERMISSIONS PATTERN ".git" EXCLUDE )
|
||||
endif()
|
||||
|
||||
# install file for add-ons server
|
||||
if(ENABLE_CAMPAIGN_SERVER AND NOT ENABLE_GAME)
|
||||
install(FILES data/COPYING.txt DESTINATION ${CMAKE_INSTALL_DATADIR}/${DATADIRNAME}/data)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Install desktop file so wesnoth appears in the application start menu with an icon
|
||||
#
|
||||
if(ENABLE_DESKTOP_ENTRY AND ENABLE_GAME)
|
||||
install(FILES packaging/org.wesnoth.Wesnoth.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications )
|
||||
install(DIRECTORY packaging/icons/hicolor packaging/icons/HighContrast DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons )
|
||||
endif()
|
||||
|
||||
if(ENABLE_APPDATA_FILE AND ENABLE_GAME)
|
||||
install(FILES packaging/org.wesnoth.Wesnoth.appdata.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo )
|
||||
endif()
|
||||
|
||||
if(ENABLE_SERVER AND FIFO_DIR)
|
||||
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory \$ENV{DESTDIR}/${FIFO_DIR})")
|
||||
if(SERVER_UID AND SERVER_GID)
|
||||
install(CODE "execute_process(COMMAND chown ${SERVER_UID}:${SERVER_GID} \$ENV{DESTDIR}/${FIFO_DIR})")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
# uninstall
|
||||
#
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/cmake/uninstall.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"
|
||||
IMMEDIATE @ONLY
|
||||
)
|
||||
|
||||
add_custom_target(uninstall
|
||||
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"
|
||||
)
|
||||
|
||||
#
|
||||
# Packaging stuff
|
||||
#
|
||||
|
||||
include(CPack)
|
||||
set(CPACK_GENERATOR "TGZ")
|
||||
set(CPACK_SOURCE_GENERATOR "TGZ")
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x64-Debug",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": ""
|
||||
},
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Release",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": []
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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
|
144
CONTRIBUTING.md
|
@ -1,144 +0,0 @@
|
|||
# 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.
|
||||
|
||||
## Contacting Us
|
||||
|
||||
The best place to get in touch with the development team is on our [official Discord community server](https://discord.gg/battleforwesnoth) or on the [Wesnoth forums](https://forums.wesnoth.org/).
|
||||
|
||||
The Discord server is mirrored to [Libera.Chat IRC](https://libera.chat), channels: [`#wesnoth`](https://web.libera.chat/#wesnoth) (general discussions), [`#wesnoth-umc-dev`](https://web.libera.chat/#wesnoth-umc-dev) (questions about creating add-ons), [`#wesnoth-dev`](https://web.libera.chat/#wesnoth-dev) (development of wesnoth mainline).
|
||||
|
||||
## Art and Music
|
||||
|
||||
Art and music submissions are accepted usually to fill in missing or outdated assets. If you are interested in contributing, we recommend that you contact us first to determine the best resources for you to work on based on need and interest. We also commission larger projects such as character portraits, story art, and music tracks.
|
||||
|
||||
## Engine
|
||||
|
||||
Wesnoth's engine conforms to the C++17 standard. We encourage the use of standard library APIs over third-party libraries whenever possible. However, third-party libraries are preferred over adding new, custom in-engine APIs, when appropriate.
|
||||
|
||||
### 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).
|
||||
|
||||
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.
|
||||
|
||||
Generally, we follow these conventions in our C++ code:
|
||||
|
||||
```cpp
|
||||
// Use pragma once instead of an include guard. Those are clumsy.
|
||||
#pragma once
|
||||
|
||||
// Includes for files from the src/... directories should use double-quotes.
|
||||
#include "help/help.hpp"
|
||||
#include "gettext.hpp"
|
||||
|
||||
// Use angle brackets for system and external includes.
|
||||
// Includes should also be sorted alphabetically.
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// Classes should have scope specifiers (public, protected, private), but structs can omit them.
|
||||
struct my_struct
|
||||
{
|
||||
// Public members do not need a trailing underscore.
|
||||
// Inline initialization is acceptable over a constructor.
|
||||
bool member = false;
|
||||
};
|
||||
|
||||
// Class names are lower-case with underscores between words.
|
||||
// Put braces on new lines after class and struct declarations.
|
||||
class my_class
|
||||
{
|
||||
public:
|
||||
// Use using directives over typedefs. They're easier to read.
|
||||
using alias_t = std::vector<my_struct>;
|
||||
|
||||
// Use leading commas in the ctor list
|
||||
// Use the T& foo or T* foo reference and pointer styles, not T &foo or T *foo.
|
||||
// Use the "explicit" keyword for single-argument constructors.
|
||||
explicit my_class(alias_t& ref)
|
||||
: the_array_of_doom_()
|
||||
, vec_ptr_(nullptr) // Use nullptr instead of NULL or 0
|
||||
{
|
||||
// Use C++ casts (static_cast and dynamic_cast) instead of C-style casts.
|
||||
// Do try and avoid reinterpret_cast and const_cast if at all possible.
|
||||
const float cast_test = static_cast<float>(how_far_to_destination_);
|
||||
|
||||
// Don't put a space after conditional keywords, and keep their opening brackets on the same line.
|
||||
if(!ref.empty()) {
|
||||
vec_ptr_ = &ref;
|
||||
|
||||
// Use lambdas for short functions like this.
|
||||
// We also encourage the use of auto in lambdas and other places where
|
||||
// type names are long and can be inferred.
|
||||
std::sort(ref.begin(), ref.end(), [](const auto& a, const auto& b) {
|
||||
return a.member && !b.member;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Keep class method brackets on their own line, and always utilize const for methods and
|
||||
* variables when possible.
|
||||
*
|
||||
* For documenting functions, we loosely follow Doxygen conventions. You don't need to document
|
||||
* every single function, but important ones should optimally have at least a one-line comment
|
||||
* explaining what it does.
|
||||
*
|
||||
* This returns a translatable string, using gettext's _ function.
|
||||
*
|
||||
* @param speaker_id The person speaking
|
||||
*/
|
||||
t_string exclaim(const std::string& speaker_id) const
|
||||
{
|
||||
if(how_far_to_destination_ < 100) {
|
||||
if(speaker_id == "signboard") {
|
||||
return _("Oldwood — enter at own risk");
|
||||
} else {
|
||||
// TRANSLATORS: The lake is the small underground one in S06 Temple in the Deep
|
||||
return _("Hmm, someone has written underneath “Fire-carrying trespassers will be thrown in the lake.”");
|
||||
}
|
||||
} else {
|
||||
return _("Clearwater — just keep following the river");
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
// End private class members with an underscore. Additionally, use C++ standard
|
||||
// like std::array as opposed to C equivalents (such as int[])
|
||||
std::array<int, 8> the_array_of_doom_;
|
||||
|
||||
alias_t* vec_ptr_;
|
||||
|
||||
// Use static or constexpr for constants. Don't use macros.
|
||||
static const int how_far_to_destination_ = 1000;
|
||||
};
|
||||
```
|
||||
|
||||
## 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.
|
||||
|
||||
### Bugs in User-Made Content
|
||||
|
||||
If you encounter an engine bug such as a crash, scripting error, etc., report it here. Otherwise, issues with user-made content should be reported to their respective creators on the forums. You can usually find a thread for the add-on in question in the [Scenario & Campaign Development](http://www.wesnoth.org/forum/viewforum.php?f=8), [Faction & Era Development](http://www.wesnoth.org/forum/viewforum.php?f=19) or [Multiplayer Development](http://www.wesnoth.org/forum/viewforum.php?f=15) sections.
|
||||
|
||||
### Feature Requests
|
||||
|
||||
We accept suggestions for campaign improvements, WML or Lua API changes, and other game enhancements here on GitHub. We encourage you to attempt to implement your idea yourself and submit a pull request containing relevant information to your feature.
|
||||
|
||||
### Information to Include
|
||||
|
||||
We have several issue templates to choose from when opening a bug report. Please choose the one that best fits the bug. You do not need to include everything (we don't need screenshots for a compiling issue, for example), but the more information you can provide, the better. We need at least enough information to replicate the bug before we can track down the root cause.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
Pull requests (PRs) can be created by forking the [wesnoth/wesnoth](https://github.com/wesnoth/wesnoth) repository on the github website, making your own changes to your forked repository, and then clicking the "Pull request" button. All pull requests must follow the above guidelines in order to be merged and whenever possible should include additional unit tests in order to both prove the proposed fix or feature works as intended as well as to allow quickly detecting other bugs in that area of code the future. WML and lua tests are run with the `run_wml_tests` python script (the tests themselves can be found [here](https://github.com/wesnoth/wesnoth/tree/master/data/test/test)) and C++ unit tests are run by the `boost_unit_tests` executable (current tests can be found [here](https://github.com/wesnoth/wesnoth/tree/master/src/tests)). Additionally, no new code can contain use of deprecated WML or lua API features.
|
||||
|
||||
It is also highly recommended to use an editor that at least support syntax highlighting (such as VSCode or Notepad++) regardless of what you're changing - just because you *can* edit files through the github website or with plain Notepad does not mean you *should*.
|
99
INSTALL
Normal file
|
@ -0,0 +1,99 @@
|
|||
Prerequisites:
|
||||
|
||||
You'll need to have these libraries (with equivalent devel versions) to build Wesnoth:
|
||||
|
||||
libsdl1.2.7
|
||||
libsdl-image1.2 (with png support)
|
||||
libsdl-mixer1.2 (with Vorbis support)
|
||||
libsdl-net
|
||||
libfreetype2
|
||||
libz
|
||||
boost_iostreams >= 1.33.0
|
||||
|
||||
Recommended (can be deactivated via ./configure --disable-python):
|
||||
python2.4
|
||||
|
||||
SDL* libraries can be found at http://www.libsdl.org . libfreetype can be found
|
||||
at http://www.freetype.org/ . python can be found at http://www.python.org .
|
||||
The boost libraries can be found at http://www.boost.org .
|
||||
|
||||
You will also need to have a working installation of gettext to build the
|
||||
translations.
|
||||
|
||||
|
||||
The .tar.bz2 file is distributed with a working set of configure files. They
|
||||
are not in the SVN repository. Consequently, if you are building from
|
||||
SVN, you will need autoconf (>= 2.60) and automake (>= 1.9). Run './autogen.sh'
|
||||
then to generate the configure files.
|
||||
|
||||
Sourcecode:
|
||||
|
||||
You can get it here:
|
||||
|
||||
http://www.wesnoth.org/downloads
|
||||
|
||||
|
||||
Compiling:
|
||||
|
||||
First untar the package:
|
||||
|
||||
$ tar xfjv wesnoth-x.y.z.tar.bz2
|
||||
|
||||
then
|
||||
|
||||
$ cd wesnoth-x.y.z
|
||||
|
||||
Do this
|
||||
|
||||
$ ./configure
|
||||
$ make
|
||||
$ make install
|
||||
|
||||
to compile the wesnoth binary and install it along with the game
|
||||
data to the default prefix, which is probably /usr/local.
|
||||
|
||||
Note: It has been reported (see https://gna.org/bugs/index.php?10326)
|
||||
that under gcc 3.3.6 you need to turn off optimizations or you will
|
||||
get a build that doesn't work for multiplayer. We recommend building
|
||||
with gcc 4.
|
||||
|
||||
If you want to build wesnoth_editor too add the --enable-editor
|
||||
configure option.
|
||||
|
||||
The --enable-display-revision option enables code that shows the SVN
|
||||
revision number on the main screen -- useful for detecting old builds
|
||||
you might happen to have in your path, but probably not what you want
|
||||
in a production release.
|
||||
|
||||
If you see lots of messages like "Type 'svnversion --help' for usage.",
|
||||
you have a Subversion client installed but it is not implementing the
|
||||
-n option of svnversion. Time to update it.
|
||||
|
||||
In case you want wesnothd to be built you should add:
|
||||
--enable-server --localstatedir=/var --with-server-uid=user
|
||||
--with-server-gid=group
|
||||
|
||||
$localstatedir/run is the location where a wesnothd subdirectory will be
|
||||
created owned by user:group. This is relevant if you want to be able
|
||||
to communicate with wesnothd through a fifo file named socket.
|
||||
You have to run wesnothd with the user specified while configuring in
|
||||
order for it to work.
|
||||
You can also specify the fifodir directly by using --with-fifodir
|
||||
This way localstatedir won't be used.
|
||||
|
||||
If you want to install several versions of wesnoth you should use the
|
||||
--with-preferences-dir= parameter to get distinct preferences directories.
|
||||
The default is '.wesnoth'.
|
||||
|
||||
See './configure --help' for all available options.
|
||||
|
||||
Rebuilding:
|
||||
|
||||
You should clean your existing wesnoth release build first with:
|
||||
|
||||
$ make distclean
|
||||
|
||||
If you want to clean your wesnoth SVN build do:
|
||||
|
||||
$ make maintainer-clean
|
||||
|
182
INSTALL.md
|
@ -1,182 +0,0 @@
|
|||
# Building Wesnoth from Source
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Wesnoth requires a compiler with sufficient C++17 support such as GCC 11 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
|
||||
Most headers plus the following binary libs:
|
||||
* Filesystem
|
||||
* Locale
|
||||
* Iostreams
|
||||
* Random
|
||||
* 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_mixer >= 2.0.0 (with Ogg Vorbis support)
|
||||
* Fontconfig >= 2.4.1
|
||||
* Cairo >= 1.10.0
|
||||
* Pango >= 1.44.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:
|
||||
|
||||
* D-Bus (libdbus-1):
|
||||
Desktop notifications on Linux, *BSD, etc.
|
||||
|
||||
* GNU history (libreadline):
|
||||
Command history and history expansion in the built-in Lua console.
|
||||
|
||||
|
||||
## Build Environment
|
||||
|
||||
You can obtain the source code tarball for the latest version from
|
||||
<https://www.wesnoth.org/downloads>.
|
||||
|
||||
Before building, make sure to untar the package and change into the newly
|
||||
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
|
||||
|
||||
You will also need to have a working installation of GNU gettext to build the
|
||||
translations.
|
||||
|
||||
While Wesnoth may be easily installed system-wide using SCons or CMake, it is
|
||||
also possible to run it directly from the source directory after building. This
|
||||
may be useful in situations where you don't have root access or need to
|
||||
rebuild Wesnoth frequently (i.e. for development and testing).
|
||||
|
||||
### macOS/OS X
|
||||
See [here](https://github.com/wesnoth/wesnoth/blob/master/projectfiles/Xcode/README.md) for instructions on using Xcode.
|
||||
|
||||
### 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.
|
||||
|
||||
## SCons Build
|
||||
|
||||
Unlike CMake or the classic "autotools" build-system (configure && make),
|
||||
configuration and building are done in the same step with SCons.
|
||||
|
||||
Simply type `scons` in the top-level directory to build the game client and
|
||||
MP server:
|
||||
|
||||
$ scons
|
||||
|
||||
It is possible to select individual targets to build by naming them in the
|
||||
command line separated by spaces.
|
||||
|
||||
To build the game client only:
|
||||
|
||||
$ scons wesnoth
|
||||
|
||||
Building the MP server only:
|
||||
|
||||
$ scons wesnothd
|
||||
|
||||
The `install` target will install any binaries that were previously compiled
|
||||
(use su or sudo if necessary to write files into the installation prefix):
|
||||
|
||||
$ scons install
|
||||
|
||||
SCons takes a `prefix=` argument that specifies where to install the game and
|
||||
its resource files. The prefix defaults to `/usr/local`; for production builds,
|
||||
you may wish to use `/usr` instead:
|
||||
|
||||
$ scons prefix=/usr
|
||||
|
||||
|
||||
## CMake Build
|
||||
|
||||
Unlike SCons, CMake has separate configuration and build steps. Configuration
|
||||
is done using CMake itself, and the actual build is done using `make`.
|
||||
|
||||
There are two ways to build Wesnoth with CMake: inside the source tree or
|
||||
outside of it. Out-of-source builds have the advantage that you can have
|
||||
multiple builds with different options from one source directory.
|
||||
|
||||
To build Wesnoth out of source:
|
||||
|
||||
$ mkdir build && cd build
|
||||
$ cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||
$ make
|
||||
|
||||
To build Wesnoth in the source directory:
|
||||
|
||||
$ cmake . -DCMAKE_BUILD_TYPE=Release
|
||||
$ make
|
||||
|
||||
To install Wesnoth after building (as root using su or sudo if necessary):
|
||||
|
||||
# make install
|
||||
|
||||
To change build options, you can either pass the options on the command line:
|
||||
|
||||
$ cmake .. -DOPTION_NAME=option_value
|
||||
|
||||
Or use either the `ccmake` or `cmake-gui` front-ends, which display all options
|
||||
and their cached values on a console and graphical UI, respectively.
|
||||
|
||||
$ ccmake ..
|
||||
$ cmake-gui ..
|
||||
|
||||
|
||||
## Build Options
|
||||
|
||||
A full list of options supported by SCons along with their descriptions and
|
||||
defaults is available by running `scons --help` from the Wesnoth source. For
|
||||
CMake, you may either run the `ccmake` or `cmake-gui` front-ends, or run
|
||||
`cmake` and open the generated CMakeCache.txt from the build directory in a
|
||||
text editor.
|
||||
|
||||
$ scons option_name1=option_value1 [option_name2=option_value2 [...]]
|
||||
$ cmake -DOPTION_NAME1=option_value1 [-DOPTION_NAME2=option_value2 [...]]
|
||||
|
||||
With SCons, boolean options take `yes` or `true` for a true value, and `no` or
|
||||
`false` for a false value. CMake uses `ON` for a true value, and `OFF` for a
|
||||
false value.
|
||||
|
||||
### Some of the most important options follow.
|
||||
|
||||
| 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. |
|
||||
| `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. |
|
||||
| `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. |
|
235
Makefile.am
Normal file
|
@ -0,0 +1,235 @@
|
|||
if USESVN
|
||||
SVNREV = $(shell svnversion -n .)
|
||||
endif
|
||||
|
||||
ISUBDIRS = icons
|
||||
SUBDIRS = po m4 src doc $(ISUBDIRS)
|
||||
pkgdatadir=$(datadir)/@DATADIR@
|
||||
|
||||
bin_SCRIPTS =
|
||||
|
||||
findfilterflags=! \( -name .svn -prune -o -name ".\#*" -o -name "*~" -o -name "*bak" -o -type d \)
|
||||
|
||||
if LITE
|
||||
exclude=| egrep -v '(/sounds|/music)'
|
||||
endif
|
||||
|
||||
# List all datafiles, ignoring junk
|
||||
finddata=(cd $(top_srcdir) && find data fonts icons images sounds $(findfilterflags) -print ) $(exclude)
|
||||
# List all data subdirectories
|
||||
finddatadirs=(cd $(top_srcdir) && find data fonts icons images sounds -type d \! \( -name .svn -prune \) -print ) $(exclude)
|
||||
# List non-installable utility files
|
||||
findnoinst=(cd $(top_srcdir) && find utils $(findfilterflags) -print )
|
||||
# List all Header files
|
||||
findnoinst_headers=(cd $(top_srcdir) && find src -name "*.hpp" -print && find src -name "*.h" -print && find src -name "*.ii" -print && find src -name "*.i" -print )
|
||||
|
||||
# Find files derived from the manual that should go in a distribution
|
||||
finddocdist=(cd $(top_srcdir) && find doc/manual -name "*.html" -o -name "*.css" -o -name "*.jpg" -o -name "*.txt")
|
||||
# Same list as previous, but with doc/ stripped off the front
|
||||
finddoc=($(finddocdist) | sed -e 's:doc/manual:manual:g' )
|
||||
# List all document directories
|
||||
finddocdirs=(cd $(top_srcdir)/doc && find manual -type d \! \( -name .svn -prune \) -print; )
|
||||
|
||||
# This is a workaround to include manpage and manual translation files in the
|
||||
# tarball. Manual and manpages are pre-built, so these files aren't actually
|
||||
# needed to build Wesnoth, but are included because .po files are the
|
||||
# preferred source of modification.
|
||||
findextrapo=(cd $(top_srcdir) && \
|
||||
find po/wesnoth-manpages po/wesnoth-manual \
|
||||
-name "*.pot" -o -name "*.po" -o -name "*.cfg")
|
||||
|
||||
w_preparefileinstall = if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
|
||||
bundle_contents=@PACKAGE_NAME@.app/Contents
|
||||
@PACKAGE@_bundle: src/@PACKAGE@
|
||||
mkdir -p "$(bundle_contents)/MacOS"
|
||||
mkdir -p "$(bundle_contents)/Resources"
|
||||
echo "APPL????" > "$(bundle_contents)/PkgInfo"
|
||||
$(INSTALL_PROGRAM) $< "$(bundle_contents)/MacOS/@PACKAGE_NAME@"
|
||||
|
||||
bundle_editor_contents=@PACKAGE_NAME@ Editor.app/Contents
|
||||
@PACKAGE@_editor_bundle: src/@PACKAGE@_editor
|
||||
mkdir -p "$(bundle_editor_contents)/MacOS"
|
||||
mkdir -p "$(bundle_editor_contents)/Resources"
|
||||
echo "APPL????" > "$(bundle_editor_contents)/PkgInfo"
|
||||
$(INSTALL_PROGRAM) $< "$(bundle_editor_contents)/MacOS/@PACKAGE_NAME@ Editor"
|
||||
|
||||
# Run this before release to check that POTs and data are in good shape
|
||||
sanity-check:
|
||||
cd utils; ./sanity_check
|
||||
cd data/tools; make sanity-check
|
||||
|
||||
install-data-local:
|
||||
@$(NORMAL_INSTALL)
|
||||
if OPTIPNG
|
||||
(cd $(top_srcdir) && find images -name '*.png' -print ) | while read p; do \
|
||||
$(w_preparefileinstall) \
|
||||
optipng -o4 $$d$$p; \
|
||||
done
|
||||
endif
|
||||
if INSTALLDATA
|
||||
test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)"
|
||||
( $(finddatadirs) ) | while read p; do \
|
||||
$(mkdir_p) "$(DESTDIR)$(pkgdatadir)/$$p"; \
|
||||
done; \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
( $(finddata) ) | while read p; do \
|
||||
$(w_preparefileinstall) \
|
||||
echo $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
done
|
||||
test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
|
||||
( $(finddocdirs) ) | while read p; do \
|
||||
$(mkdir_p) "$(DESTDIR)$(docdir)/$$p"; \
|
||||
done; \
|
||||
( $(finddoc) ) | while read p; do \
|
||||
cd doc && $(w_preparefileinstall) \
|
||||
echo $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
|
||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; cd ..; \
|
||||
done
|
||||
if DUMMYLOCALES
|
||||
$(mkdir_p) "$(DESTDIR)$(pkgdatadir)/locales"
|
||||
if test -d "$(DESTDIR)$(pkgdatadir)/locales/C" ; then rm -r "$(DESTDIR)$(pkgdatadir)/locales/C" ; fi
|
||||
echo | localedef --force "$(DESTDIR)$(pkgdatadir)/locales/C" 2> /dev/null; \
|
||||
for loc in `ls data/languages/*.cfg | sed -e's/data\/languages\/\(.*\)\.cfg/\1/'`; do \
|
||||
loclnk="$(DESTDIR)$(pkgdatadir)/locales/$$loc"@wesnoth; \
|
||||
if test -L "$$loclnk" ; then rm "$$loclnk" ; fi; \
|
||||
ln -s C "$$loclnk"; done; \
|
||||
true
|
||||
endif
|
||||
if TINYGUI
|
||||
(cd $(top_srcdir) && find data/core/images data/campaigns images \( $(findfilterflags) -a -name '*.png' -and -not -name 'bar-energy-tinygui.png' -print \) ) | while read p; do \
|
||||
$(w_preparefileinstall) \
|
||||
eval `identify $$d$$p | cut -f 3 -d ' ' | sed s/^/imagewidth=/ | sed s/x/\;imageheight=/` ;\
|
||||
case $${imagewidth}x$$imageheight in \
|
||||
1024x768) dstsize=320x240 ;; \
|
||||
640x480) dstsize=240x180 ;; \
|
||||
205x205) dstsize=80x80 ;; \
|
||||
*) if [ $$imageheight -gt $$imagewidth ]; then max=`expr $$imageheight / 2`; else max=`expr $$imagewidth / 2`; fi ;\
|
||||
dstsize=$${max}x$${max} ;; \
|
||||
esac ; \
|
||||
file=`basename "$$p"`; \
|
||||
file "$$d$$p" | egrep "(RGBA|alpha)" >/dev/null 2>&1 && {\
|
||||
convert "$$d$$p" -filter point -resize $$dstsize "$(DESTDIR)$(pkgdatadir)/$$f";\
|
||||
} || { \
|
||||
convert "$$d$$p" -resize $$dstsize "$(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
} \
|
||||
done
|
||||
endif
|
||||
endif
|
||||
|
||||
zip-install: install
|
||||
$(top_srcdir)/utils/splittree "$(DESTDIR)$(pkgdatadir)" --zip
|
||||
|
||||
uninstall-local:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
if INSTALLDATA
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
( $(finddata) ) | while read p; do \
|
||||
case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac; \
|
||||
echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
|
||||
done
|
||||
( $(finddoc) ) | while read p; do \
|
||||
case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac; \
|
||||
echo " rm -f '$(DESTDIR)$(docadir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(docdir)/$$f"; \
|
||||
done
|
||||
( $(finddocdirs) | sed -e 's/ /\n/g' | sort -r ) | while read p; do \
|
||||
d=$(DESTDIR)$(docdir)/$$p && \
|
||||
if test -d $$d ; then echo "rmdir $$d"; echo `rmdir $$d` ; fi \
|
||||
done
|
||||
endif
|
||||
|
||||
dist-hook:
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
( $(finddata); $(finddocdist); $(findnoinst); $(findnoinst_headers); $(findextrapo) ) | (cd $(top_srcdir) && tar cf - -T -) | (cd $(distdir) && tar xf -)
|
||||
|
||||
dist_noinst_DATA = copyright changelog players_changelog wesnoth.dev editor.dev server.dev wesnoth.kdevelop campaign_server.dsp map_editor.dsp server.dsp wesnoth.dsp wesnoth.dsw
|
||||
|
||||
uninstall-hook:
|
||||
if test -d $(pkgdatadir) ; then rm -r $(pkgdatadir) ; fi
|
||||
if test -d $(bindir) ; then echo `rmdir $(bindir)` ; fi
|
||||
if test -d $(datadir) ; then echo `rmdir $(datadir)` ; fi
|
||||
if test -d $(prefix) ; then echo `rmdir $(prefix)` ; fi
|
||||
if test -d $(docdir) ; then echo `rmdir $(docdir)` ; fi
|
||||
|
||||
clean-local:
|
||||
rm -rf po/stamp* po/*/stamp*
|
||||
|
||||
distclean-local:
|
||||
rm -rf translations
|
||||
|
||||
BINARY_STAGING=/tmp/$(PACKAGE)-$(VERSION)-staging
|
||||
BINARY_DIST=/tmp/$(PACKAGE)-binary-$(VERSION).tar.gz
|
||||
DATA_DIST=/tmp/$(PACKAGE)-data-$(VERSION).tar.gz
|
||||
|
||||
binary-dist:
|
||||
@rm -rf $(BINARY_STAGING) $(BINARY_DIST)
|
||||
@make install-exec DESTDIR=$(BINARY_STAGING)
|
||||
@cd $(BINARY_STAGING) ; tar cf - * | gzip -c >$(BINARY_DIST)
|
||||
@rm -rf $(BINARY_STAGING)
|
||||
@echo "Precompiled binary tarball is in $(BINARY_DIST)"
|
||||
|
||||
data-dist:
|
||||
@rm -rf $(BINARY_STAGING) $(DATA_DIST)
|
||||
@make install-data DESTDIR=$(BINARY_STAGING)
|
||||
@cd $(BINARY_STAGING) ; tar cf - * | gzip -c >$(DATA_DIST)
|
||||
@rm -rf $(BINARY_STAGING)
|
||||
@echo "Precompiled data tarball is in $(DATA_DIST)"
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
EXTRA_DIST = config/config.rpath config/mkinstalldirs config/py-compile
|
||||
|
||||
if PYTHON_INSTALL
|
||||
pkgpython_PYTHON = data/tools/wesnoth/wmltools.py \
|
||||
data/tools/wesnoth/libsvn.py \
|
||||
data/tools/wesnoth/wescamp.py \
|
||||
data/tools/wesnoth/wmldata.py \
|
||||
data/tools/wesnoth/wmliterator.py \
|
||||
data/tools/wesnoth/wmlparser.py \
|
||||
data/tools/wesnoth/campaignserver_client.py \
|
||||
data/tools/wesnoth/__init__.py
|
||||
endif
|
||||
|
||||
update-po:
|
||||
@cd po && make $@ || exit $?
|
||||
if MANUALUPDATE
|
||||
@cd doc/manual && make update-po || exit $?
|
||||
endif
|
||||
|
||||
if PO4AUPDATE
|
||||
update-po4a:
|
||||
@cd po && make update-po4a || exit $?
|
||||
@echo -n "Removing empty man directories... "
|
||||
@find doc/man/ -maxdepth 1 -type d -empty -exec rmdir {} \; && \
|
||||
echo "done." || exit $?
|
||||
if MANUALUPDATE
|
||||
@cd doc/manual && make html || exit $?
|
||||
endif
|
||||
endif
|
||||
|
||||
if MANUALUPDATE
|
||||
manual-en:
|
||||
@cd doc/manual && make manual.en.html || exit $?
|
||||
endif
|
||||
|
||||
# latest graph-includes.pl can be found currently at http://ydirson.free.fr/soft/wesnoth/graphs/
|
||||
wesnoth-deps.dot:
|
||||
PERL5LIB=$(top_srcdir) graph-includes -verbose --class wesnoth --consolidate 1-1 \
|
||||
-sysI /usr/include/c++/4.0 -sysI /usr/include -sysI /usr/include/SDL \
|
||||
--prefixstrip $(top_srcdir)/src/ -I $(top_srcdir)/src $(top_srcdir)/src > $@ || \
|
||||
( rm $@; false )
|
||||
%.ps: %.dot
|
||||
dot -Tps $< > $@
|
19
README
Normal file
|
@ -0,0 +1,19 @@
|
|||
The game's license is described in COPYING.
|
||||
|
||||
See INSTALL for instructions on how to build the game from source code.
|
||||
|
||||
A description of how to play the game can be found in MANUAL.
|
||||
|
||||
To be notified of new releases, go to
|
||||
http://freshmeat.net/projects/wesnoth
|
||||
and 'subscribe to new releases'.
|
||||
|
||||
Wesnoth User and Developer Forums (with over 100,000 posts from more
|
||||
than 2,800 registered members) can be found at
|
||||
http://forum.wesnoth.org/
|
||||
|
||||
For extensive documentation about all aspects of the game, see the
|
||||
official Battle for Wesnoth web site:
|
||||
http://www.wesnoth.org/
|
||||
|
||||
David White <davidnwhite@verizon.net>
|
109
README.md
|
@ -1,109 +0,0 @@
|
|||
[](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.
|
||||
|
||||
Community
|
||||
---------
|
||||
|
||||
The official Battle for Wesnoth Forums:
|
||||
<https://forums.wesnoth.org/>
|
||||
|
||||
Discord:
|
||||
<https://discord.gg/battleforwesnoth>
|
||||
|
||||
IRC:
|
||||
<https://wiki.wesnoth.org/Support#IRC>
|
||||
|
||||
Mastodon:
|
||||
<https://fosstodon.org/@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
|
||||
----------
|
||||
|
||||
Wesnoth can be played on Windows, macOS, and Linux, and can be installed using:
|
||||
* [Steam](https://store.steampowered.com/app/599390/Battle_for_Wesnoth/) (all)
|
||||
* [itch.io](https://wesnoth.itch.io/battle-for-wesnoth) (Windows and macOS)
|
||||
* The [macOS App Store](https://apps.apple.com/us/app/the-battle-for-wesnoth/id1450738104)
|
||||
* 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/).
|
||||
|
||||
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.
|
||||
|
||||
See also: [CONTRIBUTING](/CONTRIBUTING.md)
|
||||
|
||||
For any questions, the best place to start is to simply join Wesnoth's forums, Discord, or IRC and start asking!
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
All source code is licensed under the GNU GPL v2+. Most art and music is also licensed under the GNU GPL v2+, however new contributions are now licensed under the Creative Commons BY-SA v4.0. For more detailed information on Wesnoth's licensing, see the wiki:
|
||||
|
||||
<https://wiki.wesnoth.org/Wesnoth:Copyrights>
|
||||
|
||||
|
||||
More Information
|
||||
----------------
|
||||
|
||||
For extensive documentation about all aspects of the game, see the official Battle for Wesnoth web site:
|
||||
|
||||
<https://www.wesnoth.org/>
|
||||
<https://wiki.wesnoth.org/>
|
||||
|
||||
A (translated) description of how to play the game can be found in doc/manual/manual.*.html, or online at:
|
||||
|
||||
<https://wiki.wesnoth.org/WesnothManual>
|
||||
|
||||
For information on creating your own maps, scenarios, and other content, see:
|
||||
|
||||
<https://wiki.wesnoth.org/Create>
|
||||
|
||||
Gallery
|
||||
-------
|
||||
|
||||

|
||||

|
||||

|
||||

|
33
RELEASE_NOTES
Normal file
|
@ -0,0 +1,33 @@
|
|||
This file is here to allow devs to easily add stuff in the release
|
||||
notes for the next release, it allows easy syncing with the release
|
||||
team, since you don't have to be around when the release takes
|
||||
place...
|
||||
|
||||
Just dump whatever you want to have mentioned in the release notes here. Please
|
||||
take care that it is in a way that allows copy&paste to the release notes. That
|
||||
is making sure that spelling/grammer/whatever is usable and that you are using
|
||||
complete sentences, not just single words.
|
||||
|
||||
The release team should empty this file after each release.
|
||||
|
||||
|
||||
***
|
||||
|
||||
Replays work again for single-player campaign scenarios.
|
||||
|
||||
***
|
||||
|
||||
This release contains an important security update, fixing a
|
||||
vulnerability that could allow third-party content (such as campaigns
|
||||
downloaded from the add-on server) to execute arbitrary code with user
|
||||
account privileges. See bug #31048 for details. All content
|
||||
currently on the official add-on server has been inspected to confirm
|
||||
that none of it exploits this vulnerability, and the add-on server
|
||||
itself has been patched to ensure that exploits can no longer be
|
||||
uploaded. Therefore, users of previous versions of Battle for Wesnoth
|
||||
who have received user-made content through the official add-on server
|
||||
and no other distribution channel need not fear that their system has
|
||||
been compromised.
|
||||
|
||||
CVE-2009-0367 has been assigned to this vulnerability and may provide
|
||||
further information.
|
1056
SConstruct
Executable file → Normal file
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)
|
25
attic/README
Normal file
|
@ -0,0 +1,25 @@
|
|||
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.
|
||||
|
||||
units/fire-dragon-flying-*.png
|
||||
Jetryl plans to finish these. See FR #11041.
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
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:
|
||||
|
||||
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 |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
BIN
attic/desert-elvish-druid-statue.png
Normal file
After Width: | Height: | Size: 775 B |
BIN
attic/desert-elvish-shyde-statue.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 799 B After Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 32 KiB |
|
@ -1,3 +1,6 @@
|
|||
border_size=1
|
||||
usage=map
|
||||
|
||||
Mm ,Mm , Mm , Ha , Ha , Re , Aa , Gg , Gg , Ha , Mm , Ha , Ha , Aa , Aa , Gg , Aa^Fpa , Aa^Fpa , Aa^Fpa , Gg , Aa^Fpa , Aa^Fpa , Aa^Fpa
|
||||
Mm ,Mm , Mm , Ha , Ha , Re , Aa , Gg , Gg , Ha , Mm , Ha , Ha , Aa , Aa , Gg , Aa^Fpa , Aa^Fpa , Aa^Fpa , Gg , Aa^Fpa , Aa^Fpa , Aa^Fpa
|
||||
Ha ,Ha , Ha , Mm , Ha , Re , Aa^Fpa , Aa^Fpa , Aa^Fpa , Ha , Ha , Ha , Mm , Ha , Ha , Gg , Gg , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
|
||||
border_size=1
|
||||
usage=map
|
||||
|
||||
Aa ,Aa , Aa , Aa , Aa , Rr , Aa , Aa , Aa , Aa^Fpa , Aa^Fpa , Ha , Mm , Mm , Mm , Ha , Aa^Fpa , Aa , Wo , Wo , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa , Aa , Aa^Fpa , Aa , Aa , Aa , Aa^Fpa , Ha , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm
|
||||
Aa ,Aa , Aa , Aa , Aa , Rr , Aa , Aa , Aa , Aa^Fpa , Aa^Fpa , Ha , Mm , Mm , Mm , Ha , Aa^Fpa , Aa , Wo , Wo , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa , Aa , Aa^Fpa , Aa , Aa , Aa , Aa^Fpa , Ha , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm
|
||||
Aa ,Aa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Rr , Rr , Aa , Aa , Aa^Fpa , Ha , Ha , Mm , Mm , Ha , Ha , Aa^Fpa , Aa^Fpa , Wo , Ai , Aa , Aa^Fpa , Aa , Aa , Aa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Aa^Fpa , Ha , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
|
||||
border_size=1
|
||||
usage=map
|
||||
|
||||
Gs ,Gs , Gs , Gs , Gs , Gs , Gs , Gs^Ft , Gs^Ft , Gs^Ft , Gs^Ft , Gs^Ft , Dd , Gs^Ft , Gs^Ft , Dd , Dd , Dd , Gs^Ft , Gs^Ft , Gs^Ft , Dd , Ww , Ww , Ww , Gs , Dd , Gs , Gs , Rd , Gs , Gs^Ft , Gs^Ft , Gs , Gs^Ft , Gs^Ft , Gs , Dd , Gs , Gs , Gs^Ft , Gs^Ft
|
||||
Gs ,Gs , Gs , Gs , Gs , Gs , Gs , Gs^Ft , Gs^Ft , Gs^Ft , Gs^Ft , Gs^Ft , Dd , Gs^Ft , Gs^Ft , Dd , Dd , Dd , Gs^Ft , Gs^Ft , Gs^Ft , Dd , Ww , Ww , Ww , Gs , Dd , Gs , Gs , Rd , Gs , Gs^Ft , Gs^Ft , Gs , Gs^Ft , Gs^Ft , Gs , Dd , Gs , Gs , Gs^Ft , Gs^Ft
|
||||
Gs ,Gs , Gs , Dd , Dd , Gs , Dd , Gs , Dd , Gs^Ft , Gs^Ft , Dd , Dd , Gs , Gs^Ft , Gs^Ft , Gs^Ft , Dd , Gs , Dd , Ww , Ww , Ww , Ww , Gs^Ft , Gs , Gs , Dd , Gs , Rd , Gs , Gs^Ft , Gs , Gs^Ft , Gs , Dd , Gs , Dd , Gs , Dd , Gs^Ft , Gs^Ft
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
|
||||
border_size=1
|
||||
usage=map
|
||||
|
||||
Gs^Fp ,Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Ww , Gs^Fp , Gs^Fp , Gs^Fp , Hh , Hh , Mm , Mm , Mm , Hh , Hh , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Rr , Rr
|
||||
Gs^Fp ,Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Ww , Gs^Fp , Gs^Fp , Gs^Fp , Hh , Hh , Mm , Mm , Mm , Hh , Hh , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Rr , Rr
|
||||
Gs^Fp ,Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Ww , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Hh , Hh , Hh , Mm , Hh , Hh , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gg , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gg^Ve , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gs^Fp , Gg^Ve , Rr , Rr , Gg^Ve , Gg
|
||||
|
|
2
attic/maps/README.map
Normal file
|
@ -0,0 +1,2 @@
|
|||
These maps used to live under the campaign directory for The South Guard.
|
||||
They're not used anywhere in it.
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
Before 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: 30 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 815 B |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 815 B |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 655 B |
Before Width: | Height: | Size: 646 B |
Before Width: | Height: | Size: 914 B |
Before Width: | Height: | Size: 953 B |
Before Width: | Height: | Size: 464 B |
Before Width: | Height: | Size: 973 B |
Before Width: | Height: | Size: 544 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 388 B |
Before Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 882 B |
Before Width: | Height: | Size: 882 B |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 890 B |
Before Width: | Height: | Size: 3.4 KiB |