mirror of
https://github.com/neovim/neovim.git
synced 2025-09-05 19:08:15 +00:00
Compare commits
2202 Commits
v0.7.1
...
release-0.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b1ae775de6 | ||
![]() |
70fb40a229 | ||
![]() |
129264dbb4 | ||
![]() |
b49f5c7882 | ||
![]() |
42cdb79949 | ||
![]() |
c00f42cc21 | ||
![]() |
54f4fb512a | ||
![]() |
b61431e97f | ||
![]() |
25b189a58b | ||
![]() |
00d105f802 | ||
![]() |
1789ce1195 | ||
![]() |
7dcf0a0e6a | ||
![]() |
1e600d3b0a | ||
![]() |
dd086292c7 | ||
![]() |
2ecbd7f598 | ||
![]() |
bb1ba8d62b | ||
![]() |
cf656e0316 | ||
![]() |
09f2293a99 | ||
![]() |
fec5b0f164 | ||
![]() |
9aacf9bf66 | ||
![]() |
08b375d750 | ||
![]() |
f1bf7a5fda | ||
![]() |
80bbba94d6 | ||
![]() |
de66d54e05 | ||
![]() |
383cddd784 | ||
![]() |
9cd7e6d845 | ||
![]() |
2572288279 | ||
![]() |
4ac67e8a60 | ||
![]() |
08ebdeca37 | ||
![]() |
047eeb67ba | ||
![]() |
c5d688c54e | ||
![]() |
31a19c1894 | ||
![]() |
5d5a155685 | ||
![]() |
2b512a1d25 | ||
![]() |
4a52467f77 | ||
![]() |
f427fc780d | ||
![]() |
384caf8c1c | ||
![]() |
8bbed45e10 | ||
![]() |
056b24445f | ||
![]() |
2a4a532f6c | ||
![]() |
1fa917f9a1 | ||
![]() |
73298d1cd6 | ||
![]() |
0eb155cd26 | ||
![]() |
da68023d98 | ||
![]() |
3892ba2405 | ||
![]() |
9c109a46d3 | ||
![]() |
d5bdcb2bd7 | ||
![]() |
e951181d84 | ||
![]() |
2542aa0b75 | ||
![]() |
172202b49a | ||
![]() |
68ef157cc2 | ||
![]() |
460c1b7888 | ||
![]() |
cc02cfee2f | ||
![]() |
342312b8ad | ||
![]() |
b840eb6945 | ||
![]() |
799e5fb92b | ||
![]() |
9a6a7ad469 | ||
![]() |
76987e8f04 | ||
![]() |
d0f71270cc | ||
![]() |
d849640613 | ||
![]() |
d2582350b2 | ||
![]() |
bd3634d7a4 | ||
![]() |
1860792ed6 | ||
![]() |
48f0545594 | ||
![]() |
9bda3b3e04 | ||
![]() |
23202944ec | ||
![]() |
bc6ff78fad | ||
![]() |
3510298930 | ||
![]() |
5b718e8c12 | ||
![]() |
a9e78dd2f6 | ||
![]() |
ad82f59f59 | ||
![]() |
da47f6e56a | ||
![]() |
faa5ecce93 | ||
![]() |
ec2d6dc955 | ||
![]() |
ca4a600e43 | ||
![]() |
b8b2101540 | ||
![]() |
45d593e1c8 | ||
![]() |
6f386c75c4 | ||
![]() |
21ea794690 | ||
![]() |
0bc56cebe7 | ||
![]() |
cf7ae5f2f9 | ||
![]() |
eacc8230ed | ||
![]() |
927074c97a | ||
![]() |
e5fda53f5d | ||
![]() |
a853becfea | ||
![]() |
015d3ddcfe | ||
![]() |
8d41ffcb5b | ||
![]() |
17f636cf23 | ||
![]() |
ccb718a23d | ||
![]() |
9bd5ba83ab | ||
![]() |
78caeae92f | ||
![]() |
65c8851098 | ||
![]() |
e2afca9c76 | ||
![]() |
ebfe54617f | ||
![]() |
bc4d11cd9d | ||
![]() |
9f5c5abd42 | ||
![]() |
922a3c33f1 | ||
![]() |
4d0fabfe4b | ||
![]() |
4bef100e47 | ||
![]() |
346f77c5a6 | ||
![]() |
4152151c94 | ||
![]() |
742bd4c181 | ||
![]() |
41192dae78 | ||
![]() |
9c32331904 | ||
![]() |
b994deb0aa | ||
![]() |
935615ffed | ||
![]() |
3e0783db43 | ||
![]() |
32b0b13cc5 | ||
![]() |
3d0ddd2d1f | ||
![]() |
7a49cf4da9 | ||
![]() |
1b359d4034 | ||
![]() |
81781810e6 | ||
![]() |
8e28d8a370 | ||
![]() |
a35efe1e4f | ||
![]() |
ca9b5687f6 | ||
![]() |
b0cb9a8ad0 | ||
![]() |
95e1978959 | ||
![]() |
2255d0fb63 | ||
![]() |
eefa7fbbc2 | ||
![]() |
bd4269c6a6 | ||
![]() |
2c374e626a | ||
![]() |
6a2dcaf6ab | ||
![]() |
747b8dac73 | ||
![]() |
f70feadb17 | ||
![]() |
06144afb71 | ||
![]() |
5eab16fa24 | ||
![]() |
ddc0b75d53 | ||
![]() |
7aaa0f4888 | ||
![]() |
c34ebe60be | ||
![]() |
06c63f50fc | ||
![]() |
32ccb9770b | ||
![]() |
f73bc880f4 | ||
![]() |
f76473898d | ||
![]() |
5a14c820a9 | ||
![]() |
e7ed53286e | ||
![]() |
7e8662676a | ||
![]() |
cb086f1886 | ||
![]() |
9234e5acd6 | ||
![]() |
24769cf1b5 | ||
![]() |
6fe00190f0 | ||
![]() |
50f756ceb2 | ||
![]() |
47454d0012 | ||
![]() |
c52d256e91 | ||
![]() |
59087b615d | ||
![]() |
89fbffff13 | ||
![]() |
7ba968ef3b | ||
![]() |
8595f0298a | ||
![]() |
7a011cb58d | ||
![]() |
5b1bda14ae | ||
![]() |
1cd5361c39 | ||
![]() |
719afa2988 | ||
![]() |
60ccada4cb | ||
![]() |
6b49a20137 | ||
![]() |
5f54cfcc05 | ||
![]() |
bca9b1ecdf | ||
![]() |
5e88506508 | ||
![]() |
f294712d8c | ||
![]() |
acb8033bca | ||
![]() |
a6b62821de | ||
![]() |
deda165155 | ||
![]() |
2853284434 | ||
![]() |
62e3ca3e2b | ||
![]() |
0f669b7b70 | ||
![]() |
29aa6e715b | ||
![]() |
d92e6acc46 | ||
![]() |
00761ad1e6 | ||
![]() |
47cd3cf852 | ||
![]() |
00ce3d6e7a | ||
![]() |
aaee148392 | ||
![]() |
9ad6f0da83 | ||
![]() |
bca4588e17 | ||
![]() |
126e434fec | ||
![]() |
2ad8d36b89 | ||
![]() |
e49dcbcc4b | ||
![]() |
a6f19d39a4 | ||
![]() |
68eb063416 | ||
![]() |
cafc2ebc91 | ||
![]() |
8fc775e3a4 | ||
![]() |
7773fed570 | ||
![]() |
d66e7a13c9 | ||
![]() |
49dd143abc | ||
![]() |
9857cc1dbf | ||
![]() |
947ec159ae | ||
![]() |
0c3054b033 | ||
![]() |
ce422ba763 | ||
![]() |
bb9c5c3f60 | ||
![]() |
9e784a53b4 | ||
![]() |
4db8c25bda | ||
![]() |
d367ed9b23 | ||
![]() |
892da763bb | ||
![]() |
ad6af3c1a9 | ||
![]() |
1839848808 | ||
![]() |
37a1c0914d | ||
![]() |
5399513fd0 | ||
![]() |
b414e9fdbb | ||
![]() |
df646572c5 | ||
![]() |
9cf252e121 | ||
![]() |
cb62592bcb | ||
![]() |
33dd917d7f | ||
![]() |
94718e479d | ||
![]() |
e46eef75ac | ||
![]() |
f9228577e8 | ||
![]() |
d9f5940997 | ||
![]() |
563bc39aac | ||
![]() |
561c99c86a | ||
![]() |
c7cc6591c1 | ||
![]() |
0f04c14c0d | ||
![]() |
45707c1eae | ||
![]() |
1cf44d6f57 | ||
![]() |
a80ab395aa | ||
![]() |
e8ff432922 | ||
![]() |
268bad4798 | ||
![]() |
16336c486e | ||
![]() |
7b4c49888a | ||
![]() |
d9ed8d1110 | ||
![]() |
cd96fe06e1 | ||
![]() |
a5effcedd2 | ||
![]() |
47b821eccf | ||
![]() |
bafeb32b95 | ||
![]() |
3965210055 | ||
![]() |
9ca313fb96 | ||
![]() |
35e2c4a2ed | ||
![]() |
eb4844b5ed | ||
![]() |
d7358118aa | ||
![]() |
6917a2e569 | ||
![]() |
6427dc8ab6 | ||
![]() |
4b7904d16b | ||
![]() |
e6c214033a | ||
![]() |
d84abfeb1d | ||
![]() |
f46060c4cb | ||
![]() |
6afe5cce79 | ||
![]() |
c7d30c152d | ||
![]() |
4278a2d359 | ||
![]() |
fe0727a1bf | ||
![]() |
e176f9dacf | ||
![]() |
760a8754c0 | ||
![]() |
1d337d4e2f | ||
![]() |
7e98821e56 | ||
![]() |
9a5ac06509 | ||
![]() |
be693462d5 | ||
![]() |
c7e74f7889 | ||
![]() |
be72af2f9b | ||
![]() |
c815aadfcc | ||
![]() |
fe045bfd5f | ||
![]() |
db0ea1ab44 | ||
![]() |
6596f7e136 | ||
![]() |
4bb1d1df79 | ||
![]() |
63be765182 | ||
![]() |
9ffa041a9a | ||
![]() |
ac66f5af06 | ||
![]() |
a6c9764eda | ||
![]() |
f8a1cadccf | ||
![]() |
fded344f38 | ||
![]() |
91e912f8d4 | ||
![]() |
4686bda06c | ||
![]() |
1b60b5ec94 | ||
![]() |
2a5692c646 | ||
![]() |
3169fc54a1 | ||
![]() |
2a3cb0893b | ||
![]() |
c7cf1232a7 | ||
![]() |
b0fcdf9f09 | ||
![]() |
8317b9199e | ||
![]() |
dfc6c973a3 | ||
![]() |
0c77dba9a4 | ||
![]() |
57b731818d | ||
![]() |
291a649632 | ||
![]() |
db056de29a | ||
![]() |
f8b656c582 | ||
![]() |
caf5738fa9 | ||
![]() |
24b5449b3d | ||
![]() |
14610332b2 | ||
![]() |
f3c842058e | ||
![]() |
ede66a0b85 | ||
![]() |
3fe43917cb | ||
![]() |
600136cfb6 | ||
![]() |
fcd3e53720 | ||
![]() |
7a70e9587c | ||
![]() |
9aead1f670 | ||
![]() |
d7052e8e1f | ||
![]() |
c28f00b101 | ||
![]() |
0760379b41 | ||
![]() |
a867aa45f7 | ||
![]() |
09b64d75bd | ||
![]() |
40f0851bd8 | ||
![]() |
bde6176c91 | ||
![]() |
11f91ac304 | ||
![]() |
5c1b8d7bf8 | ||
![]() |
4371886293 | ||
![]() |
33f1471472 | ||
![]() |
679f3072f6 | ||
![]() |
2083c1771a | ||
![]() |
a7f6f0e2dd | ||
![]() |
7fc5f6605f | ||
![]() |
02f8ca59a8 | ||
![]() |
93b30582db | ||
![]() |
00cfc1dceb | ||
![]() |
8d13b08a03 | ||
![]() |
477cf2a6b1 | ||
![]() |
1bced9bf94 | ||
![]() |
a636e24280 | ||
![]() |
320e56a4e0 | ||
![]() |
3f4030e171 | ||
![]() |
d76017c613 | ||
![]() |
800cda2164 | ||
![]() |
88099c1122 | ||
![]() |
dd2b7586f3 | ||
![]() |
5d1cb73e7f | ||
![]() |
71e70d0c99 | ||
![]() |
b4b05f160d | ||
![]() |
37a71d1f28 | ||
![]() |
ad1f353fe1 | ||
![]() |
585ab2564a | ||
![]() |
ec94014cd1 | ||
![]() |
62db91f06c | ||
![]() |
cfdc93e8ac | ||
![]() |
86c5d761c4 | ||
![]() |
b5a21ad8ff | ||
![]() |
2e4532bea5 | ||
![]() |
9413f7544b | ||
![]() |
ae30e388de | ||
![]() |
054c27075b | ||
![]() |
abe2d90693 | ||
![]() |
e762158305 | ||
![]() |
10196f1b46 | ||
![]() |
a0e6e767a6 | ||
![]() |
875b58e094 | ||
![]() |
7a091fdfaf | ||
![]() |
7bd4c8e8ee | ||
![]() |
647da34bbd | ||
![]() |
67df3347fd | ||
![]() |
8dc61713d9 | ||
![]() |
e63538f21c | ||
![]() |
6d557e324f | ||
![]() |
644a3f48b1 | ||
![]() |
3c3f3e7353 | ||
![]() |
18139a69bc | ||
![]() |
72e1041429 | ||
![]() |
26b54d5c16 | ||
![]() |
c126c1f73a | ||
![]() |
6cc03b9c90 | ||
![]() |
e512d3ecf2 | ||
![]() |
6b2f0f43b5 | ||
![]() |
a0642ec75e | ||
![]() |
622968d7b3 | ||
![]() |
3dda52d860 | ||
![]() |
754822a066 | ||
![]() |
0c0071548b | ||
![]() |
b98de0e0e5 | ||
![]() |
b616458af9 | ||
![]() |
0b7a3c173c | ||
![]() |
279c7b11fb | ||
![]() |
0f93aa12fd | ||
![]() |
9ec4b20be6 | ||
![]() |
982fef6018 | ||
![]() |
708bd68651 | ||
![]() |
89b9eab638 | ||
![]() |
bf6de51f55 | ||
![]() |
ddb762f401 | ||
![]() |
8b0b0a5c32 | ||
![]() |
bd4eca1146 | ||
![]() |
1e5daed676 | ||
![]() |
25e4af439f | ||
![]() |
a8c9e721d9 | ||
![]() |
1970d2ac43 | ||
![]() |
f19e91acd8 | ||
![]() |
ec1f153ddc | ||
![]() |
37e9688802 | ||
![]() |
8eabbacf22 | ||
![]() |
907fc8ac37 | ||
![]() |
91a150d0a9 | ||
![]() |
f6232e160b | ||
![]() |
fd70e2bff2 | ||
![]() |
a3272cf452 | ||
![]() |
5bc0964b97 | ||
![]() |
afe01842ef | ||
![]() |
add27f2898 | ||
![]() |
a48e42a29d | ||
![]() |
2ea6584a1b | ||
![]() |
245ac6f263 | ||
![]() |
4448fa88ec | ||
![]() |
738c204523 | ||
![]() |
49aa9e17fa | ||
![]() |
38059b4f31 | ||
![]() |
f98cff9575 | ||
![]() |
3ff46544c9 | ||
![]() |
1939518eba | ||
![]() |
9b4cab0126 | ||
![]() |
91a2e7a571 | ||
![]() |
2a1c65b330 | ||
![]() |
4638fcf4fb | ||
![]() |
40f9f479b7 | ||
![]() |
684bc749ef | ||
![]() |
82d93429e7 | ||
![]() |
48e060f648 | ||
![]() |
4c6bf386c5 | ||
![]() |
2f385d17a0 | ||
![]() |
c5322e752e | ||
![]() |
9b0e1256e2 | ||
![]() |
ad2d6a624b | ||
![]() |
038c711539 | ||
![]() |
9272d20ea4 | ||
![]() |
ad972990ad | ||
![]() |
b364bc2c34 | ||
![]() |
925a811990 | ||
![]() |
7533ceec13 | ||
![]() |
22a88c425e | ||
![]() |
2d6735d8ce | ||
![]() |
d6233cbcdc | ||
![]() |
79a9b00671 | ||
![]() |
19a3b2c26e | ||
![]() |
164752b380 | ||
![]() |
30ca6d23a9 | ||
![]() |
514a1679dc | ||
![]() |
b8de5ada80 | ||
![]() |
f21e2a51ba | ||
![]() |
bc88691dbd | ||
![]() |
08602ec1ab | ||
![]() |
bb35422659 | ||
![]() |
7ae74998f0 | ||
![]() |
b9aafb85e6 | ||
![]() |
42aeb5c5b1 | ||
![]() |
b635f7ed41 | ||
![]() |
11167ab6d5 | ||
![]() |
8c59d7e6a7 | ||
![]() |
893b659e88 | ||
![]() |
0405594399 | ||
![]() |
36faac6241 | ||
![]() |
4af04df844 | ||
![]() |
79afdae2f3 | ||
![]() |
99e6e0f221 | ||
![]() |
078e49b96a | ||
![]() |
06f9da547c | ||
![]() |
80a566b55f | ||
![]() |
e93f22f28a | ||
![]() |
4a67f9d386 | ||
![]() |
93a0c2dd63 | ||
![]() |
ead524656d | ||
![]() |
4dc4cf3467 | ||
![]() |
9d1d3a6707 | ||
![]() |
ff9d2b17fb | ||
![]() |
fd1595514b | ||
![]() |
f32fd19f1e | ||
![]() |
db9b8b08e7 | ||
![]() |
b17c5c3d9c | ||
![]() |
c77bb5a528 | ||
![]() |
694ac26946 | ||
![]() |
b76e33b598 | ||
![]() |
9ecaa35f55 | ||
![]() |
2aeb8d976f | ||
![]() |
74a8b5982a | ||
![]() |
707edfc9e6 | ||
![]() |
aaa54a8b3e | ||
![]() |
d01cadd82f | ||
![]() |
6e3a69b4cf | ||
![]() |
73207cae61 | ||
![]() |
87e037e26c | ||
![]() |
12afc344de | ||
![]() |
74db632c97 | ||
![]() |
84d1094958 | ||
![]() |
75adfefc85 | ||
![]() |
05893aea39 | ||
![]() |
95fd1ad83e | ||
![]() |
ffe98531b9 | ||
![]() |
5b8d6e0b32 | ||
![]() |
4bf005e9fd | ||
![]() |
5b7213ad7f | ||
![]() |
0822896efc | ||
![]() |
97f38f0a9b | ||
![]() |
64cc78c9f3 | ||
![]() |
e85b8aa768 | ||
![]() |
6254b0fd3b | ||
![]() |
905dd49fec | ||
![]() |
da34833fdf | ||
![]() |
93f32bb0aa | ||
![]() |
fb39bba5a6 | ||
![]() |
f6a8d395a7 | ||
![]() |
fc7a64291a | ||
![]() |
8570a700cc | ||
![]() |
29cd072351 | ||
![]() |
a220650fd6 | ||
![]() |
5ac6654334 | ||
![]() |
82d128405a | ||
![]() |
ceb09701f2 | ||
![]() |
04bd700ac3 | ||
![]() |
a5fe7940c8 | ||
![]() |
00b49dd8dd | ||
![]() |
900a774182 | ||
![]() |
21dad0dcf3 | ||
![]() |
6f7d55d3d9 | ||
![]() |
24fbda04b9 | ||
![]() |
ea10e0c104 | ||
![]() |
927d4d2a15 | ||
![]() |
c50460cf3b | ||
![]() |
ea611c7122 | ||
![]() |
5296e9407d | ||
![]() |
1e3073bc35 | ||
![]() |
042d5df956 | ||
![]() |
c62e5b5079 | ||
![]() |
7243b1cbde | ||
![]() |
05b49ef975 | ||
![]() |
1ffd527c83 | ||
![]() |
69456f3414 | ||
![]() |
1ef7720567 | ||
![]() |
2afcdbd63a | ||
![]() |
e085d0be31 | ||
![]() |
2dd55f81f7 | ||
![]() |
ce80b8f50d | ||
![]() |
12fe197cff | ||
![]() |
689f5d604e | ||
![]() |
56bf026dea | ||
![]() |
c65b1f3e15 | ||
![]() |
49e893f296 | ||
![]() |
db2e5f46f5 | ||
![]() |
48ca1d4ce8 | ||
![]() |
d9a873f278 | ||
![]() |
5f92d9b345 | ||
![]() |
dd8489c399 | ||
![]() |
a62cb406b1 | ||
![]() |
8740e0bd58 | ||
![]() |
0c6b39894f | ||
![]() |
c0050b71e5 | ||
![]() |
bd51ac2a34 | ||
![]() |
ba8be7446d | ||
![]() |
f078a3453a | ||
![]() |
f31db30975 | ||
![]() |
933c80e8f9 | ||
![]() |
fb1edb2f57 | ||
![]() |
fa747d004a | ||
![]() |
0903702634 | ||
![]() |
f4274d0f62 | ||
![]() |
5ff2ea6687 | ||
![]() |
518b5c65b0 | ||
![]() |
94a2bc5940 | ||
![]() |
813476bf72 | ||
![]() |
6b7eed1884 | ||
![]() |
2828aae7b4 | ||
![]() |
9397e70b9e | ||
![]() |
981ae83fad | ||
![]() |
0368ca70c4 | ||
![]() |
f9c183c0ca | ||
![]() |
6ab2bf6819 | ||
![]() |
568737d5b3 | ||
![]() |
7f20d61e00 | ||
![]() |
e6e9879cb3 | ||
![]() |
2c83d7b2dd | ||
![]() |
f58a979599 | ||
![]() |
e78e369a9d | ||
![]() |
8fd66ff5c5 | ||
![]() |
efacb6e974 | ||
![]() |
68efac3683 | ||
![]() |
126fe7fbc9 | ||
![]() |
58f30a326f | ||
![]() |
92bc11a891 | ||
![]() |
e6af1cf250 | ||
![]() |
5fe6bde296 | ||
![]() |
f05cc672e3 | ||
![]() |
ea4e9c71cc | ||
![]() |
253f0ffd8d | ||
![]() |
1dcaa75a65 | ||
![]() |
b21980bd60 | ||
![]() |
60ec6e34d5 | ||
![]() |
46bb34e26b | ||
![]() |
7d3e4aee6a | ||
![]() |
f9641d1ac6 | ||
![]() |
88c32b5eba | ||
![]() |
7a9b593796 | ||
![]() |
691f4715c0 | ||
![]() |
20305494f8 | ||
![]() |
09c6ce8c4e | ||
![]() |
523600ea6c | ||
![]() |
814c173b9d | ||
![]() |
58b29e344c | ||
![]() |
608134794d | ||
![]() |
2676555b22 | ||
![]() |
cc2c8be481 | ||
![]() |
e70ef80f77 | ||
![]() |
d5e0883712 | ||
![]() |
d813ef0097 | ||
![]() |
45c23a757c | ||
![]() |
52f00a6c4d | ||
![]() |
900a151bf5 | ||
![]() |
b0e052a8b3 | ||
![]() |
3952770360 | ||
![]() |
6a13b8fa54 | ||
![]() |
0b72e23bf1 | ||
![]() |
2ecb4076df | ||
![]() |
b04ef7f6b9 | ||
![]() |
064ecb9ec5 | ||
![]() |
030b422d1e | ||
![]() |
914ba18a49 | ||
![]() |
6547f4397f | ||
![]() |
06d5c6332d | ||
![]() |
2498e9feb0 | ||
![]() |
946c0aa66f | ||
![]() |
36fdad5575 | ||
![]() |
db28c2ca2b | ||
![]() |
752d397cae | ||
![]() |
fa1c761d62 | ||
![]() |
1ba3d5c712 | ||
![]() |
c12f6002a1 | ||
![]() |
207fe4810e | ||
![]() |
4dd34989cd | ||
![]() |
6e9980fc3b | ||
![]() |
bfd1adc62c | ||
![]() |
73ee2b35d1 | ||
![]() |
40855b0143 | ||
![]() |
e5fe41198c | ||
![]() |
8554164b1e | ||
![]() |
244a115e49 | ||
![]() |
133ff6e11e | ||
![]() |
f57341a4b6 | ||
![]() |
baba43681e | ||
![]() |
a577fb778a | ||
![]() |
6b2d42eb03 | ||
![]() |
733b2e12b8 | ||
![]() |
3aba4ba378 | ||
![]() |
22f9200302 | ||
![]() |
22536eb527 | ||
![]() |
4ecea0e001 | ||
![]() |
99f8d34c8a | ||
![]() |
cd2d3aa48f | ||
![]() |
93f24403f8 | ||
![]() |
1b29288709 | ||
![]() |
274e1122ad | ||
![]() |
f0658fd552 | ||
![]() |
5c9baa6f35 | ||
![]() |
170617c7a2 | ||
![]() |
6584f3a2b6 | ||
![]() |
e7dd65eea3 | ||
![]() |
7656cd527b | ||
![]() |
88738bd28f | ||
![]() |
711635872d | ||
![]() |
e4e0e8ce6f | ||
![]() |
ee02141c7b | ||
![]() |
b1833bb33b | ||
![]() |
45d09b46ce | ||
![]() |
674d3b2d5f | ||
![]() |
3290e472c0 | ||
![]() |
cabc1861c4 | ||
![]() |
6c9a91bebe | ||
![]() |
6d8b64fffc | ||
![]() |
dd77a00621 | ||
![]() |
6680002169 | ||
![]() |
5d1f0c3eca | ||
![]() |
c366a63e4c | ||
![]() |
d3cd79709b | ||
![]() |
6b9ff5491d | ||
![]() |
c545d514df | ||
![]() |
3b2121cedf | ||
![]() |
61be343ec8 | ||
![]() |
26ebf67c39 | ||
![]() |
b1eaa2b9a3 | ||
![]() |
9be4bfc5f4 | ||
![]() |
f1ea126a6e | ||
![]() |
f91b1885dd | ||
![]() |
b0fdce55d0 | ||
![]() |
7784dc9e0d | ||
![]() |
bcf5ee328e | ||
![]() |
b0569f5813 | ||
![]() |
79f32c20f0 | ||
![]() |
9ac44c7f5d | ||
![]() |
ef748af01d | ||
![]() |
a4e4609d62 | ||
![]() |
9a100ee169 | ||
![]() |
64d147b471 | ||
![]() |
c0d6052654 | ||
![]() |
6cc6e11929 | ||
![]() |
779a25f040 | ||
![]() |
0c0a426e40 | ||
![]() |
e892b7b383 | ||
![]() |
df4709ddf6 | ||
![]() |
d459b66877 | ||
![]() |
f1b8683b8c | ||
![]() |
d0b9fe2d5a | ||
![]() |
7afc17dec1 | ||
![]() |
a9e6cf0e64 | ||
![]() |
ffa1335047 | ||
![]() |
42e9fe7d95 | ||
![]() |
63df91c10a | ||
![]() |
d5328ea408 | ||
![]() |
48a4657aee | ||
![]() |
2fd25fb909 | ||
![]() |
baaaa1f2b3 | ||
![]() |
3c1d70f20b | ||
![]() |
15a768eeb0 | ||
![]() |
2bed0d1d97 | ||
![]() |
d4d27c41b3 | ||
![]() |
4f6d0d6da9 | ||
![]() |
d5cc161dea | ||
![]() |
b94cfaf080 | ||
![]() |
af2b078258 | ||
![]() |
72b03792b6 | ||
![]() |
06a53ab2cb | ||
![]() |
99bd895956 | ||
![]() |
c086bf6079 | ||
![]() |
2379699b1e | ||
![]() |
e3eb6967bc | ||
![]() |
dde90f0ca4 | ||
![]() |
5928d5c2f1 | ||
![]() |
6b9852cc41 | ||
![]() |
506a3ec913 | ||
![]() |
61ff37952a | ||
![]() |
741ef87876 | ||
![]() |
76d35a5a36 | ||
![]() |
0d0a336c53 | ||
![]() |
5e15452043 | ||
![]() |
ff5cfcdeab | ||
![]() |
1cc4706e94 | ||
![]() |
bffaf1e27e | ||
![]() |
1a57cd3836 | ||
![]() |
15ca01b649 | ||
![]() |
6d6e9c5d51 | ||
![]() |
f342194396 | ||
![]() |
e8618df7f8 | ||
![]() |
ebd5720901 | ||
![]() |
6adc2ae7e0 | ||
![]() |
b2f979b30b | ||
![]() |
7e980a4df4 | ||
![]() |
7d815eb4d9 | ||
![]() |
3c545b9c62 | ||
![]() |
dc32cc5acf | ||
![]() |
b7c86e24f7 | ||
![]() |
efebf30784 | ||
![]() |
7ff283b1b7 | ||
![]() |
4edf967050 | ||
![]() |
aa96a80d5d | ||
![]() |
2af9be3db5 | ||
![]() |
5dc43265b1 | ||
![]() |
51063a90df | ||
![]() |
c2f7a2a18d | ||
![]() |
a5ed89c972 | ||
![]() |
36f0b508c5 | ||
![]() |
700a6fb9d4 | ||
![]() |
39494be2a4 | ||
![]() |
7a2be8cc17 | ||
![]() |
fbcce2b2ca | ||
![]() |
e29156356b | ||
![]() |
341ef46d00 | ||
![]() |
21b2906c9c | ||
![]() |
02e9b5a8ee | ||
![]() |
068a998e60 | ||
![]() |
35653e6bcd | ||
![]() |
d879331b0d | ||
![]() |
f7cfca49d6 | ||
![]() |
f5588ee896 | ||
![]() |
7a076306e4 | ||
![]() |
5d8278591a | ||
![]() |
bccb5de89d | ||
![]() |
5c1eb02b05 | ||
![]() |
9a6d3bd76e | ||
![]() |
5977a96b3f | ||
![]() |
d74f9c3b94 | ||
![]() |
dd15fa7096 | ||
![]() |
65bcec9e9b | ||
![]() |
542fa8a9cc | ||
![]() |
9a4b8dc603 | ||
![]() |
4f0a0a2933 | ||
![]() |
03fddfd928 | ||
![]() |
dee96f4725 | ||
![]() |
e8caaab6bf | ||
![]() |
da13ed43cb | ||
![]() |
cf3b871fa9 | ||
![]() |
a63eea3d23 | ||
![]() |
5e98a41872 | ||
![]() |
d5d6ed311b | ||
![]() |
63e4436d8e | ||
![]() |
d1464d16d6 | ||
![]() |
1d28bbf1e5 | ||
![]() |
e954d62527 | ||
![]() |
6b686e7e1e | ||
![]() |
747dec7925 | ||
![]() |
e73517e34e | ||
![]() |
535e423a6a | ||
![]() |
cbb2e634c9 | ||
![]() |
18b457ebbb | ||
![]() |
76b4b1977b | ||
![]() |
37586eac42 | ||
![]() |
d334249833 | ||
![]() |
55da52963b | ||
![]() |
93ba821831 | ||
![]() |
53b0688ac0 | ||
![]() |
b47f313151 | ||
![]() |
95b8e2c55f | ||
![]() |
9a3877ff9d | ||
![]() |
6264aa521e | ||
![]() |
93ae183810 | ||
![]() |
a6f0e32d23 | ||
![]() |
9ab9eb1220 | ||
![]() |
d6a6adf708 | ||
![]() |
ed65724e57 | ||
![]() |
98ab0bb5f7 | ||
![]() |
1c164689a4 | ||
![]() |
36acb803c6 | ||
![]() |
d3569e8337 | ||
![]() |
41d6b8a6d0 | ||
![]() |
f38c05bece | ||
![]() |
47aba12593 | ||
![]() |
0cd39c2f50 | ||
![]() |
27c3919a48 | ||
![]() |
49e691f58f | ||
![]() |
0fcc32b707 | ||
![]() |
1dc984eaab | ||
![]() |
b1faf5f0b9 | ||
![]() |
c77cce615b | ||
![]() |
c96020b2bf | ||
![]() |
5854103dad | ||
![]() |
fa8fde99e6 | ||
![]() |
8cd116729f | ||
![]() |
1ca2247639 | ||
![]() |
a10a23aae9 | ||
![]() |
3a8b859147 | ||
![]() |
de72f9098a | ||
![]() |
ded2925b40 | ||
![]() |
f52c236c5b | ||
![]() |
11837e9b29 | ||
![]() |
2dde701115 | ||
![]() |
d56ddf9583 | ||
![]() |
bf0d7ed1f6 | ||
![]() |
c1cbe3fb3d | ||
![]() |
3cf629022b | ||
![]() |
f9a9956837 | ||
![]() |
02a4974418 | ||
![]() |
33b49d5f55 | ||
![]() |
9dec3815d2 | ||
![]() |
33f4ba7379 | ||
![]() |
a850b15e19 | ||
![]() |
1de62b9ea1 | ||
![]() |
754892e59d | ||
![]() |
6f14c5d2dd | ||
![]() |
e23c5fda0a | ||
![]() |
b6a963bded | ||
![]() |
342d18b91e | ||
![]() |
5b80d20271 | ||
![]() |
ac78639de8 | ||
![]() |
54a165d9a6 | ||
![]() |
094cdf2d69 | ||
![]() |
f79773a3b4 | ||
![]() |
1cf3a4b409 | ||
![]() |
02289ab898 | ||
![]() |
103f10d901 | ||
![]() |
d4f5e0db3c | ||
![]() |
a93d29589a | ||
![]() |
c7ca94ba7f | ||
![]() |
0d9e09bf67 | ||
![]() |
33b77eb728 | ||
![]() |
a27756cc24 | ||
![]() |
996fc2256b | ||
![]() |
8b67f37798 | ||
![]() |
6669fc94ae | ||
![]() |
d1fb0dd8b9 | ||
![]() |
ea333badd2 | ||
![]() |
d2975d58cb | ||
![]() |
94c3176478 | ||
![]() |
252dea5927 | ||
![]() |
b4b22318a1 | ||
![]() |
faccae47fc | ||
![]() |
ff1266aaaa | ||
![]() |
78658ef383 | ||
![]() |
3ee6c05b4b | ||
![]() |
512e0441f1 | ||
![]() |
bebfbfab3b | ||
![]() |
d212dfd676 | ||
![]() |
48241c3b23 | ||
![]() |
3030b4d653 | ||
![]() |
24bf0490ea | ||
![]() |
33ddca6fa0 | ||
![]() |
cd14efd281 | ||
![]() |
a5e846b996 | ||
![]() |
e6680ea7c3 | ||
![]() |
68c674af0f | ||
![]() |
d31ee6664d | ||
![]() |
d36c2fa713 | ||
![]() |
603f7bd253 | ||
![]() |
9fedb6fd78 | ||
![]() |
01a7009af9 | ||
![]() |
967415d527 | ||
![]() |
53c9500c1d | ||
![]() |
bc8fbb7c1d | ||
![]() |
a46e6afb8b | ||
![]() |
2d5fce2cdb | ||
![]() |
18766e742b | ||
![]() |
629169462a | ||
![]() |
fa8b2b4c50 | ||
![]() |
fea15adad3 | ||
![]() |
48051ed62c | ||
![]() |
d0686540f5 | ||
![]() |
3b7fc5f793 | ||
![]() |
0fdf59ac9d | ||
![]() |
0df1418ffa | ||
![]() |
5eb8119dce | ||
![]() |
ad7064bd83 | ||
![]() |
5f0fbe7c2f | ||
![]() |
a308f53525 | ||
![]() |
85ad0e6b43 | ||
![]() |
58e1c6fbff | ||
![]() |
21f5aee777 | ||
![]() |
7ebcb9b333 | ||
![]() |
a78606ec53 | ||
![]() |
37ab823e6e | ||
![]() |
3aef2b8bdf | ||
![]() |
57fbcc6929 | ||
![]() |
d985323c55 | ||
![]() |
c1e1d16fca | ||
![]() |
5170a4a369 | ||
![]() |
93649cefab | ||
![]() |
77926b6493 | ||
![]() |
69299380ca | ||
![]() |
27ce21ac85 | ||
![]() |
7c997dbc5d | ||
![]() |
43cd91a4f4 | ||
![]() |
0a29267514 | ||
![]() |
3df8d9b8c5 | ||
![]() |
c57e133e50 | ||
![]() |
5ee56f95c7 | ||
![]() |
d3bfc03c5d | ||
![]() |
ba3742ed0d | ||
![]() |
6e2c6114f9 | ||
![]() |
b8dcbcc732 | ||
![]() |
cc1ceebf8f | ||
![]() |
0806c882cd | ||
![]() |
def0ced4c7 | ||
![]() |
9092540315 | ||
![]() |
8ce7e7409f | ||
![]() |
c223875a65 | ||
![]() |
dc2745e9ea | ||
![]() |
dc24cb668c | ||
![]() |
1f847edc63 | ||
![]() |
0a049c322f | ||
![]() |
9c91d5c613 | ||
![]() |
50672e3850 | ||
![]() |
4f576be881 | ||
![]() |
c57c25649b | ||
![]() |
d4b9f8186d | ||
![]() |
e99de3f12f | ||
![]() |
711ef4eac9 | ||
![]() |
c6181a672a | ||
![]() |
8d1c55e422 | ||
![]() |
d954e8da62 | ||
![]() |
cabb23ea4d | ||
![]() |
8a032a6866 | ||
![]() |
9cebfbe6ab | ||
![]() |
34e7dc5d05 | ||
![]() |
7d45f1a5e8 | ||
![]() |
6963c2bdcd | ||
![]() |
5c72640bc2 | ||
![]() |
083865071b | ||
![]() |
db6e93c48d | ||
![]() |
9f5d5aa3da | ||
![]() |
ece0850b73 | ||
![]() |
bcb4186cf6 | ||
![]() |
8952def50a | ||
![]() |
975a273125 | ||
![]() |
c9ca90229b | ||
![]() |
68ec497d52 | ||
![]() |
86110ec933 | ||
![]() |
380417c1dd | ||
![]() |
2c522854c7 | ||
![]() |
63244f68e7 | ||
![]() |
81a1d26c3e | ||
![]() |
abc087f4c6 | ||
![]() |
c1652bdcb5 | ||
![]() |
7f4c50f8c4 | ||
![]() |
0ae94a128f | ||
![]() |
824a729628 | ||
![]() |
29d5ca7d66 | ||
![]() |
9511faa819 | ||
![]() |
fc5ed5b672 | ||
![]() |
aa9ba05d70 | ||
![]() |
6237ac8402 | ||
![]() |
d36d9be8ff | ||
![]() |
c34d72bf7c | ||
![]() |
e59bc078de | ||
![]() |
02efdb4d58 | ||
![]() |
0b8bade493 | ||
![]() |
1ebe7cd160 | ||
![]() |
88ed33230a | ||
![]() |
352a177dae | ||
![]() |
b25abbf4b8 | ||
![]() |
98915f88b2 | ||
![]() |
468b1a689a | ||
![]() |
161efc9ea4 | ||
![]() |
f254fc67a5 | ||
![]() |
9cb8b5f8db | ||
![]() |
b4e12bfa00 | ||
![]() |
7304b7eee3 | ||
![]() |
b971547c54 | ||
![]() |
fe254fb7e7 | ||
![]() |
0134a2cb3e | ||
![]() |
394d65494a | ||
![]() |
8e67af1b20 | ||
![]() |
bdbf843031 | ||
![]() |
f1c01e5f94 | ||
![]() |
721ea8fab2 | ||
![]() |
e6b7f70294 | ||
![]() |
e0eebe3087 | ||
![]() |
dadb0d6f01 | ||
![]() |
d27e4d657b | ||
![]() |
48608a1f46 | ||
![]() |
e0c433833f | ||
![]() |
7d9e68669c | ||
![]() |
b6b9f46041 | ||
![]() |
18755c6b89 | ||
![]() |
f5d558c8ea | ||
![]() |
888f12858a | ||
![]() |
4c3104819b | ||
![]() |
9b447c7ce5 | ||
![]() |
3a40d4b759 | ||
![]() |
f57432af4d | ||
![]() |
335b49e129 | ||
![]() |
e0f32abb1c | ||
![]() |
57ce6c2b8f | ||
![]() |
bbad7371db | ||
![]() |
f586131e57 | ||
![]() |
79872f3770 | ||
![]() |
890d4023cd | ||
![]() |
2fdb0de197 | ||
![]() |
fc55f8263c | ||
![]() |
0c0a2e4e52 | ||
![]() |
9f1dc1466e | ||
![]() |
45e2bbae83 | ||
![]() |
49d2256ae5 | ||
![]() |
289256337a | ||
![]() |
7e939ddb87 | ||
![]() |
4225e6ee46 | ||
![]() |
d61a5a08ac | ||
![]() |
2a9c9371bc | ||
![]() |
1a4753f25a | ||
![]() |
27116a0159 | ||
![]() |
ee8606d31f | ||
![]() |
cbfae548e8 | ||
![]() |
4cbeedf57b | ||
![]() |
46bf1ec791 | ||
![]() |
1a07044c1c | ||
![]() |
147cce29a6 | ||
![]() |
88c6e02c12 | ||
![]() |
ba662efb17 | ||
![]() |
fe159d23fd | ||
![]() |
3ded2ab55a | ||
![]() |
7961f79904 | ||
![]() |
e12035fc0c | ||
![]() |
e4079f3b5a | ||
![]() |
771564b00e | ||
![]() |
8543de3a86 | ||
![]() |
611b43369e | ||
![]() |
e12c62c1f7 | ||
![]() |
ad57610ac7 | ||
![]() |
56ed5a0403 | ||
![]() |
6e9a7e7db8 | ||
![]() |
6c26d0b068 | ||
![]() |
aba3147cb6 | ||
![]() |
d8df9afad6 | ||
![]() |
963ea726da | ||
![]() |
8921035fc7 | ||
![]() |
2241fd3211 | ||
![]() |
3ea45a2caf | ||
![]() |
e9b58a619e | ||
![]() |
0cc41a61d1 | ||
![]() |
eb77122823 | ||
![]() |
46e3e1c728 | ||
![]() |
d529523027 | ||
![]() |
2a56cc5230 | ||
![]() |
ea13dce3bf | ||
![]() |
1849cf0e4c | ||
![]() |
6cee15da72 | ||
![]() |
264791925a | ||
![]() |
d0ced2a127 | ||
![]() |
9d556fc81f | ||
![]() |
91c99eed54 | ||
![]() |
ed6bbc03af | ||
![]() |
232cdbb880 | ||
![]() |
271739c830 | ||
![]() |
790f8b0e16 | ||
![]() |
3f2e1c1db9 | ||
![]() |
a7b9920930 | ||
![]() |
ac690f457e | ||
![]() |
9d4a4f49ef | ||
![]() |
bb7853a62d | ||
![]() |
8af3d641da | ||
![]() |
946c8fd288 | ||
![]() |
77b9f1eac5 | ||
![]() |
c15e9d3746 | ||
![]() |
6a7d00469b | ||
![]() |
1f1863ed54 | ||
![]() |
598cbcae4a | ||
![]() |
9879fd5d08 | ||
![]() |
1a2560c2dc | ||
![]() |
559ef3e903 | ||
![]() |
243038188b | ||
![]() |
c65e73f2d6 | ||
![]() |
1ef84547a8 | ||
![]() |
420bb2eb8a | ||
![]() |
f357c9bca5 | ||
![]() |
8620dfc5bd | ||
![]() |
61302fb391 | ||
![]() |
b154d951e6 | ||
![]() |
9e15bdde3b | ||
![]() |
358f9b776b | ||
![]() |
2e790e9ad1 | ||
![]() |
871ff8d62f | ||
![]() |
078e446181 | ||
![]() |
72dfd57e5f | ||
![]() |
366e90cdc8 | ||
![]() |
101fd04ee2 | ||
![]() |
0a716fc776 | ||
![]() |
f87c824513 | ||
![]() |
0b63f5afad | ||
![]() |
93bd6fb2c8 | ||
![]() |
4e3699d13a | ||
![]() |
7b835ba796 | ||
![]() |
1a655b71a8 | ||
![]() |
a80d447b47 | ||
![]() |
3340728c72 | ||
![]() |
d73c31a41f | ||
![]() |
e8c94697bc | ||
![]() |
d15a66d803 | ||
![]() |
be3d2f5125 | ||
![]() |
45bee1dafd | ||
![]() |
67a04fe6cb | ||
![]() |
1b462705d0 | ||
![]() |
776913e32e | ||
![]() |
9169fb8f07 | ||
![]() |
9f4b19b6d0 | ||
![]() |
13abe20b5f | ||
![]() |
ff35d7a4b9 | ||
![]() |
5ccdf6a88d | ||
![]() |
eb9b93b5e0 | ||
![]() |
aae11865e1 | ||
![]() |
9e7f92e59a | ||
![]() |
006334f3a7 | ||
![]() |
f72ec95958 | ||
![]() |
b0bbcfa239 | ||
![]() |
656a1889ee | ||
![]() |
7e79cb56c5 | ||
![]() |
95b1191505 | ||
![]() |
53c398d8f4 | ||
![]() |
7c3a87182d | ||
![]() |
e53330a603 | ||
![]() |
9f837a5dcf | ||
![]() |
08a50f6690 | ||
![]() |
4f59bc8013 | ||
![]() |
bcb5b7b3f6 | ||
![]() |
0cfd4fa8f3 | ||
![]() |
780edfc0eb | ||
![]() |
bc73795a58 | ||
![]() |
f7c6676199 | ||
![]() |
711a6a9157 | ||
![]() |
fa29bc94b5 | ||
![]() |
591765c915 | ||
![]() |
73526abbbd | ||
![]() |
33da7d83e8 | ||
![]() |
86f0da922f | ||
![]() |
f59c96903a | ||
![]() |
6645f59832 | ||
![]() |
8bccefcb87 | ||
![]() |
5c49129c5e | ||
![]() |
8a5c7e91f2 | ||
![]() |
9370e1c511 | ||
![]() |
1c9f487f0e | ||
![]() |
c0ae3df052 | ||
![]() |
8bfcff6c4a | ||
![]() |
ba5ff6e5f0 | ||
![]() |
827906136d | ||
![]() |
b9f15caf5c | ||
![]() |
0cf5cd1ac9 | ||
![]() |
4a64cdafd6 | ||
![]() |
564d99c89a | ||
![]() |
a649af4dba | ||
![]() |
7b5b7b3cc6 | ||
![]() |
9777907467 | ||
![]() |
465b73c3a5 | ||
![]() |
c821b5c695 | ||
![]() |
73f96ce4c6 | ||
![]() |
8730643326 | ||
![]() |
072fb55cb0 | ||
![]() |
75ad050919 | ||
![]() |
001f19de28 | ||
![]() |
8d67358d49 | ||
![]() |
08235b6f2a | ||
![]() |
b41f2bcae7 | ||
![]() |
ddaef0618d | ||
![]() |
c6f0be116e | ||
![]() |
314f1a7c21 | ||
![]() |
bf96b9f11d | ||
![]() |
c467df997e | ||
![]() |
b81d1eb265 | ||
![]() |
685d6ab6ca | ||
![]() |
912dbbdd77 | ||
![]() |
b93cb481a2 | ||
![]() |
778541067a | ||
![]() |
c01690b1ea | ||
![]() |
39d51c833a | ||
![]() |
b1e0197a14 | ||
![]() |
d8360e9033 | ||
![]() |
aa373e3abb | ||
![]() |
4aa4675fbf | ||
![]() |
01afd43bc9 | ||
![]() |
0f1b17788e | ||
![]() |
8b75ca7345 | ||
![]() |
1abdb3224b | ||
![]() |
d079995fb8 | ||
![]() |
6a670a00b3 | ||
![]() |
540d1af90e | ||
![]() |
53392f48b1 | ||
![]() |
189db2b759 | ||
![]() |
034d28c705 | ||
![]() |
195d8496a0 | ||
![]() |
cea96ca39d | ||
![]() |
d8f6426714 | ||
![]() |
5119d10d41 | ||
![]() |
061e573e7e | ||
![]() |
9bea841925 | ||
![]() |
daa49b525e | ||
![]() |
27fd17a79c | ||
![]() |
eea6a4f2a0 | ||
![]() |
e71cc4a8dc | ||
![]() |
d77ec8a5c6 | ||
![]() |
bb1a464467 | ||
![]() |
5c3bbb67e7 | ||
![]() |
ac10c0f418 | ||
![]() |
95c65a6b22 | ||
![]() |
67b26a39f0 | ||
![]() |
5e53740350 | ||
![]() |
5105f713bd | ||
![]() |
63f6ecd419 | ||
![]() |
63f63dd2b7 | ||
![]() |
99e8298711 | ||
![]() |
f7d6f472f7 | ||
![]() |
2966cfe21f | ||
![]() |
3d77ea2762 | ||
![]() |
fe2b281292 | ||
![]() |
59355653f6 | ||
![]() |
8f36e538cc | ||
![]() |
b3b85186ed | ||
![]() |
45d2644205 | ||
![]() |
d606c39a9c | ||
![]() |
eb9155e557 | ||
![]() |
880de9a489 | ||
![]() |
797007997c | ||
![]() |
d6a1e71881 | ||
![]() |
2c739431e8 | ||
![]() |
782f726136 | ||
![]() |
6b1a8f23d7 | ||
![]() |
7dbe6b1a46 | ||
![]() |
7b72e61cf8 | ||
![]() |
eb60a9be97 | ||
![]() |
022e994ab8 | ||
![]() |
65359e5657 | ||
![]() |
12f0ef669d | ||
![]() |
798acbca1b | ||
![]() |
cf4aa6095f | ||
![]() |
0d0a6aff6b | ||
![]() |
45ba2e147f | ||
![]() |
b999de2eb0 | ||
![]() |
a6803f3adf | ||
![]() |
159a0b651f | ||
![]() |
eafa09de7d | ||
![]() |
a890c019a3 | ||
![]() |
ca64b589cd | ||
![]() |
72877bb17d | ||
![]() |
0950275b8c | ||
![]() |
aa4f9c5341 | ||
![]() |
34d41baf8a | ||
![]() |
55e81b0fe8 | ||
![]() |
6b72ee1f15 | ||
![]() |
8ce60ddd07 | ||
![]() |
4bb01262ca | ||
![]() |
4cded8cec1 | ||
![]() |
5e84db5c90 | ||
![]() |
d4db87f493 | ||
![]() |
0612101c92 | ||
![]() |
df4c634d06 | ||
![]() |
4ffe5d0189 | ||
![]() |
664efa497e | ||
![]() |
1e03255646 | ||
![]() |
f9683f2823 | ||
![]() |
f3c78a4465 | ||
![]() |
c84ae5706f | ||
![]() |
1a490a5bc5 | ||
![]() |
8e03d42ec8 | ||
![]() |
ff111b615a | ||
![]() |
1b5f53ca95 | ||
![]() |
93c8fe77cb | ||
![]() |
9ced054134 | ||
![]() |
c68f1d7263 | ||
![]() |
606af7887b | ||
![]() |
78300a1587 | ||
![]() |
8b7399782e | ||
![]() |
41785b1b0c | ||
![]() |
a4801b8034 | ||
![]() |
2536bde6c9 | ||
![]() |
785422ad54 | ||
![]() |
5fcf701ba1 | ||
![]() |
dd5fce2f5d | ||
![]() |
f42657cbcf | ||
![]() |
d0835617fa | ||
![]() |
eb814bdca0 | ||
![]() |
d9e5737fdc | ||
![]() |
04ba37773e | ||
![]() |
42863634dd | ||
![]() |
6e2d23ac43 | ||
![]() |
24db6c1e57 | ||
![]() |
a01905eb35 | ||
![]() |
936c11f9c8 | ||
![]() |
d07a39c54b | ||
![]() |
826fe56f5c | ||
![]() |
1803b0ffd7 | ||
![]() |
03c9cf3feb | ||
![]() |
5b609bbefb | ||
![]() |
33ed85a2f6 | ||
![]() |
ab5929e1b0 | ||
![]() |
a4160dd105 | ||
![]() |
08aba02ad7 | ||
![]() |
d9c63507f8 | ||
![]() |
436747752b | ||
![]() |
f075feee32 | ||
![]() |
6b474d0237 | ||
![]() |
a4215a0a21 | ||
![]() |
1ff86aa634 | ||
![]() |
7648a8524c | ||
![]() |
a2d8d5e1f5 | ||
![]() |
ed64c8f683 | ||
![]() |
acb6512f2e | ||
![]() |
acb7a90281 | ||
![]() |
0313aba77a | ||
![]() |
e837f29ce6 | ||
![]() |
357d63f5d7 | ||
![]() |
312f1b65c8 | ||
![]() |
2b04aaad94 | ||
![]() |
c6c89391b7 | ||
![]() |
8d37901f1c | ||
![]() |
7a907c3314 | ||
![]() |
f93eb169f6 | ||
![]() |
0160ff6aa0 | ||
![]() |
108368bdd5 | ||
![]() |
e11f3655fb | ||
![]() |
c1b591dc8f | ||
![]() |
3b8804571c | ||
![]() |
ed429c00d7 | ||
![]() |
662681694b | ||
![]() |
a9de89894a | ||
![]() |
7277543772 | ||
![]() |
d197e77a55 | ||
![]() |
f71d518c90 | ||
![]() |
5bd1bdee14 | ||
![]() |
d358856a0c | ||
![]() |
998a96803b | ||
![]() |
0b15c01912 | ||
![]() |
9b4d0137b8 | ||
![]() |
2b1abe3c9d | ||
![]() |
6486b0345a | ||
![]() |
60604d6a99 | ||
![]() |
8f5bcfb0e4 | ||
![]() |
b22f7dd908 | ||
![]() |
300490f2e8 | ||
![]() |
2268a4147e | ||
![]() |
5a62ad605e | ||
![]() |
236947ab20 | ||
![]() |
d81d8d454a | ||
![]() |
015778a381 | ||
![]() |
5551a29d06 | ||
![]() |
e4c2ff2da4 | ||
![]() |
610cf9f950 | ||
![]() |
cf8df141f3 | ||
![]() |
5a490d838e | ||
![]() |
3b1423bfa7 | ||
![]() |
565f72b968 | ||
![]() |
3fe6b99abc | ||
![]() |
cb84f5ee53 | ||
![]() |
69cd0ba27b | ||
![]() |
37af46bb4c | ||
![]() |
f50135a32e | ||
![]() |
514e76e4b2 | ||
![]() |
ba5be650a7 | ||
![]() |
995e487915 | ||
![]() |
593f2f753f | ||
![]() |
6f6286e4f9 | ||
![]() |
1eb9624666 | ||
![]() |
ba583f8206 | ||
![]() |
8ea09fc908 | ||
![]() |
bab32bba7a | ||
![]() |
21a1f1f552 | ||
![]() |
01fc5097d3 | ||
![]() |
998dc07288 | ||
![]() |
3cc8559963 | ||
![]() |
7ab2e12ebc | ||
![]() |
83170a4986 | ||
![]() |
674787feae | ||
![]() |
be40ba68a8 | ||
![]() |
e0f605bfd8 | ||
![]() |
606ec8b708 | ||
![]() |
9e14744099 | ||
![]() |
4c0c6f8428 | ||
![]() |
f05a2891d3 | ||
![]() |
9ddb481d88 | ||
![]() |
094086a713 | ||
![]() |
ee6b21e843 | ||
![]() |
014a88799a | ||
![]() |
7e1cf6b764 | ||
![]() |
274609a109 | ||
![]() |
f2fa11708c | ||
![]() |
0c363d1a70 | ||
![]() |
2dd01e3e21 | ||
![]() |
f3c8f3e5d4 | ||
![]() |
f10489d9c2 | ||
![]() |
6f3508f8ed | ||
![]() |
eab8b998e9 | ||
![]() |
8c2b870544 | ||
![]() |
cf23695dd7 | ||
![]() |
e2f9d0332b | ||
![]() |
89f75dcd1f | ||
![]() |
a0a815ec57 | ||
![]() |
6711d001c5 | ||
![]() |
f0d4007f62 | ||
![]() |
80af2c6055 | ||
![]() |
bafb53604a | ||
![]() |
516d6318b7 | ||
![]() |
f3ce06cfa1 | ||
![]() |
5c8025967e | ||
![]() |
ae3e371303 | ||
![]() |
da358d4521 | ||
![]() |
3d45706478 | ||
![]() |
7dd73625dc | ||
![]() |
42e8774317 | ||
![]() |
69e7b664d8 | ||
![]() |
cb58b673e5 | ||
![]() |
9f592780b5 | ||
![]() |
f977f9445f | ||
![]() |
0b9664f524 | ||
![]() |
2217ab42c5 | ||
![]() |
b7084fef4c | ||
![]() |
a5175fe489 | ||
![]() |
5c2c88717a | ||
![]() |
ece2960f1b | ||
![]() |
88a5941598 | ||
![]() |
35e89bf903 | ||
![]() |
d0644fa9bf | ||
![]() |
b70f160414 | ||
![]() |
adcaf24f42 | ||
![]() |
12c62ddea6 | ||
![]() |
823d9e0af1 | ||
![]() |
777faa29b3 | ||
![]() |
f3ee62a743 | ||
![]() |
a8ecc1ae6d | ||
![]() |
614fd3a883 | ||
![]() |
fd3008a6ae | ||
![]() |
7add9ea0e7 | ||
![]() |
3a4fa22bad | ||
![]() |
affeb5c6dd | ||
![]() |
589f418fce | ||
![]() |
0cf0be302b | ||
![]() |
764dc7c383 | ||
![]() |
a9cb0b8a5a | ||
![]() |
c00a3f45d4 | ||
![]() |
3c85fd817e | ||
![]() |
7718b75846 | ||
![]() |
05ca14a881 | ||
![]() |
84de4d8655 | ||
![]() |
a3ce03bef1 | ||
![]() |
9690f8c57b | ||
![]() |
9f28eddfab | ||
![]() |
e694e56422 | ||
![]() |
1b75094e3e | ||
![]() |
a4d7394bc8 | ||
![]() |
f088915495 | ||
![]() |
801faeaae2 | ||
![]() |
c94325288a | ||
![]() |
b20b28249b | ||
![]() |
d23465534a | ||
![]() |
dd591adf8a | ||
![]() |
f17d88c47a | ||
![]() |
34ae896b82 | ||
![]() |
04592759fa | ||
![]() |
230cb00cc5 | ||
![]() |
e3b51d5842 | ||
![]() |
8cd94e3bc0 | ||
![]() |
a9442c532e | ||
![]() |
1dad288432 | ||
![]() |
ce7d18f86a | ||
![]() |
374e0b6678 | ||
![]() |
5ad97fcc0e | ||
![]() |
f479dd0bbe | ||
![]() |
6d52a29c3b | ||
![]() |
bc6a5943de | ||
![]() |
7a309311a2 | ||
![]() |
87a68b6a3a | ||
![]() |
58d028f64b | ||
![]() |
99ef06d846 | ||
![]() |
e3bfc1293e | ||
![]() |
9aaff18489 | ||
![]() |
5d69872105 | ||
![]() |
b2ed439bd5 | ||
![]() |
a195dc7c83 | ||
![]() |
ae7a4ad3d7 | ||
![]() |
636a309981 | ||
![]() |
cd1b2998d3 | ||
![]() |
668591ae04 | ||
![]() |
8a6f728315 | ||
![]() |
837ea6da9f | ||
![]() |
c5c5d980a1 | ||
![]() |
7b2b44bce4 | ||
![]() |
605631ac29 | ||
![]() |
ff6b8f5435 | ||
![]() |
9c0f2253a5 | ||
![]() |
1ad6423f02 | ||
![]() |
901fde60c6 | ||
![]() |
dc56b442d8 | ||
![]() |
aab05cd5ff | ||
![]() |
966d55effe | ||
![]() |
e651ae5864 | ||
![]() |
98e2da7d50 | ||
![]() |
e0aa1d87e8 | ||
![]() |
1fe94cb008 | ||
![]() |
c57f6b28d7 | ||
![]() |
279bc71f3c | ||
![]() |
8780076a78 | ||
![]() |
35c9fe9895 | ||
![]() |
179faa3edd | ||
![]() |
0e8186bdd8 | ||
![]() |
1f2c2a35ad | ||
![]() |
b6467dfc23 | ||
![]() |
8f06520594 | ||
![]() |
fa4b0c3ba5 | ||
![]() |
4cc05a75ea | ||
![]() |
0c6ad03c3f | ||
![]() |
504d7decbd | ||
![]() |
1493efdc14 | ||
![]() |
6de7f32d52 | ||
![]() |
8ba64dd3ad | ||
![]() |
2a2fb8be74 | ||
![]() |
0a0cda9528 | ||
![]() |
6130b4a84b | ||
![]() |
dad898b665 | ||
![]() |
da41ca299f | ||
![]() |
cd9e08cb94 | ||
![]() |
3f5c647de9 | ||
![]() |
2f2022773f | ||
![]() |
619eb32c75 | ||
![]() |
7f8f8d6cb7 | ||
![]() |
e13c36e312 | ||
![]() |
837360868b | ||
![]() |
663cbe2620 | ||
![]() |
2f71d4708e | ||
![]() |
a68f5fccb3 | ||
![]() |
e3281d992e | ||
![]() |
e95f32a717 | ||
![]() |
1c16e5bb11 | ||
![]() |
254454d0c5 | ||
![]() |
dd8b6094c0 | ||
![]() |
e420cd6c67 | ||
![]() |
c665773897 | ||
![]() |
3c7b91da10 | ||
![]() |
f90174c98c | ||
![]() |
429c40cce3 | ||
![]() |
feba56af7d | ||
![]() |
2de0d67144 | ||
![]() |
f4967828f9 | ||
![]() |
612944c586 | ||
![]() |
0d63fafcda | ||
![]() |
a907d6f517 | ||
![]() |
4a275e3291 | ||
![]() |
8bc48273eb | ||
![]() |
41bb81a2df | ||
![]() |
502f03fc06 | ||
![]() |
f4121c52b9 | ||
![]() |
c87a5ebbc3 | ||
![]() |
e92fcdbab2 | ||
![]() |
2b539d6fdf | ||
![]() |
2b252430aa | ||
![]() |
673b3a780e | ||
![]() |
a732c253b7 | ||
![]() |
e15d31b530 | ||
![]() |
6eaf10502c | ||
![]() |
58323b1fe2 | ||
![]() |
28e43881b7 | ||
![]() |
6d57bb89c1 | ||
![]() |
9662cd7f48 | ||
![]() |
bf327368d8 | ||
![]() |
11e0fea8ba | ||
![]() |
d189bfaeb2 | ||
![]() |
b8742afb6f | ||
![]() |
d6247a575c | ||
![]() |
3da3cfc864 | ||
![]() |
c5720c7221 | ||
![]() |
a4e1b76f55 | ||
![]() |
950ab00c2b | ||
![]() |
8a70c53dad | ||
![]() |
916d848049 | ||
![]() |
10291bb854 | ||
![]() |
6b0595d7cc | ||
![]() |
94181ad7dc | ||
![]() |
4d9e2247c9 | ||
![]() |
f48aa68e08 | ||
![]() |
c84bd9e21f | ||
![]() |
3cd22a3485 | ||
![]() |
057a280867 | ||
![]() |
1324e7f79e | ||
![]() |
df70a3abcd | ||
![]() |
9e442c17ee | ||
![]() |
ab1f96e1d5 | ||
![]() |
41a49dd9c8 | ||
![]() |
cf2738109a | ||
![]() |
ae02c02f1f | ||
![]() |
e4df1c9b9e | ||
![]() |
214f866fe5 | ||
![]() |
e13dcdf162 | ||
![]() |
545dc82c1b | ||
![]() |
9ce720a601 | ||
![]() |
79a194a278 | ||
![]() |
aad20de5ab | ||
![]() |
df4ffce543 | ||
![]() |
9961a9702e | ||
![]() |
e6fa4cca24 | ||
![]() |
ff20d40321 | ||
![]() |
86cc33a464 | ||
![]() |
c6d747e6a5 | ||
![]() |
9aba204335 | ||
![]() |
84d8cc3ae5 | ||
![]() |
64e946c50f | ||
![]() |
8c86feb930 | ||
![]() |
dd0e9910da | ||
![]() |
69774e3179 | ||
![]() |
61e33f312e | ||
![]() |
7264444873 | ||
![]() |
640c695a7b | ||
![]() |
9745941ef6 | ||
![]() |
26966688aa | ||
![]() |
d5f047bee0 | ||
![]() |
d93ba03c71 | ||
![]() |
d5651a4183 | ||
![]() |
285f6518e6 | ||
![]() |
79bf507449 | ||
![]() |
57a296d899 | ||
![]() |
209824ce2c | ||
![]() |
19e80738e0 | ||
![]() |
9f1ec825cd | ||
![]() |
d837b6d50c | ||
![]() |
96c494dec3 | ||
![]() |
f40adf770d | ||
![]() |
c632f64e24 | ||
![]() |
046b4ed461 | ||
![]() |
f271d70661 | ||
![]() |
2a62bec37c | ||
![]() |
b740709431 | ||
![]() |
c5526a27c3 | ||
![]() |
67cbaf58c4 | ||
![]() |
e6652821bd | ||
![]() |
7380ebfc17 | ||
![]() |
46536f53e8 | ||
![]() |
5d840fa7e6 | ||
![]() |
0c95028688 | ||
![]() |
1a20aed3fb | ||
![]() |
bfc85eab12 | ||
![]() |
b7d70de345 | ||
![]() |
b66e9e0baa | ||
![]() |
d092e377c4 | ||
![]() |
d404d68c92 | ||
![]() |
b5dd562e08 | ||
![]() |
f6e19e7334 | ||
![]() |
8427da9299 | ||
![]() |
e86901eb68 | ||
![]() |
1f63052b68 | ||
![]() |
e9803e1de6 | ||
![]() |
ebad151a2a | ||
![]() |
d4bb15af52 | ||
![]() |
015656abd7 | ||
![]() |
6d30efddb7 | ||
![]() |
9988d2f214 | ||
![]() |
f31a10204c | ||
![]() |
772ae3e656 | ||
![]() |
39613b6a2d | ||
![]() |
d353d5f002 | ||
![]() |
840b7576e9 | ||
![]() |
a3df012845 | ||
![]() |
f914b4e7a8 | ||
![]() |
c43e2874c0 | ||
![]() |
eab4d03a32 | ||
![]() |
081eb72a80 | ||
![]() |
0dd3798dbb | ||
![]() |
9cf1ac0377 | ||
![]() |
1b235fe6ca | ||
![]() |
77d9c672f8 | ||
![]() |
285e738942 | ||
![]() |
826462a8f0 | ||
![]() |
e2940d3c79 | ||
![]() |
30915cc8b0 | ||
![]() |
497046466e | ||
![]() |
e8ada41b63 | ||
![]() |
ec1bd06e10 | ||
![]() |
7b952793d5 | ||
![]() |
f246a929e7 | ||
![]() |
068fb748e1 | ||
![]() |
ec48c6f236 | ||
![]() |
eb623a1c45 | ||
![]() |
6db3f3f624 | ||
![]() |
cbf57fa353 | ||
![]() |
e21899ac4f | ||
![]() |
9fec6dc9a2 | ||
![]() |
8c4e62351f | ||
![]() |
fa3492c5f7 | ||
![]() |
c6d6b8c7eb | ||
![]() |
24352cba01 | ||
![]() |
802a23926d | ||
![]() |
af2899aee0 | ||
![]() |
2f974736ac | ||
![]() |
e5490b38b7 | ||
![]() |
eebd682221 | ||
![]() |
d7e45ee4b9 | ||
![]() |
4fab52908b | ||
![]() |
db059ed1f1 | ||
![]() |
e9f8a478fc | ||
![]() |
307c5c63e1 | ||
![]() |
5eaf9ef811 | ||
![]() |
a20892c4bc | ||
![]() |
37ee800b51 | ||
![]() |
c2f4920d3b | ||
![]() |
353553f913 | ||
![]() |
4b4643be07 | ||
![]() |
4c6626f03d | ||
![]() |
9e1ee9fb1d | ||
![]() |
a7e0a02031 | ||
![]() |
39fb97b2a5 | ||
![]() |
bcfc97e8d8 | ||
![]() |
eae4eddc54 | ||
![]() |
378615b8ee | ||
![]() |
52623ce935 | ||
![]() |
8c2fd65bb1 | ||
![]() |
5250d5c1b1 | ||
![]() |
47d9a393de | ||
![]() |
7f6d2984a8 | ||
![]() |
060ef52d8b | ||
![]() |
3fe6bf3a1e | ||
![]() |
b863c150c9 | ||
![]() |
63741176ce | ||
![]() |
9b34723bcc | ||
![]() |
e01c197eab | ||
![]() |
566ee48f05 | ||
![]() |
70e3caec4a | ||
![]() |
e7b3fd8ad6 | ||
![]() |
58b9b7e7c4 | ||
![]() |
2cab6bea09 | ||
![]() |
5193b17839 | ||
![]() |
0c4086faa1 | ||
![]() |
f0717ffade | ||
![]() |
c3568b31f4 | ||
![]() |
a1df7c5771 | ||
![]() |
cbf0360179 | ||
![]() |
646e1c3a3a | ||
![]() |
3c1bc75447 | ||
![]() |
1f1a65a9e4 | ||
![]() |
55246d44f9 | ||
![]() |
976f32aa7a | ||
![]() |
12f45fd697 | ||
![]() |
79469e61d5 | ||
![]() |
045aacc384 | ||
![]() |
4c97e17d38 | ||
![]() |
afa99f42b3 | ||
![]() |
b3453ea4a6 | ||
![]() |
c847a0eeb7 | ||
![]() |
cda0ef23cf | ||
![]() |
e884e460bc | ||
![]() |
ffb55261a8 | ||
![]() |
76691bea04 | ||
![]() |
1a0de90068 | ||
![]() |
02fd4ec83f | ||
![]() |
1d160a76ec | ||
![]() |
3e627f9e55 | ||
![]() |
83f42e086a | ||
![]() |
501ee06d3a | ||
![]() |
d31e68d5d0 | ||
![]() |
f15122e8a2 | ||
![]() |
6954c0ba0d | ||
![]() |
1da7e2b8ca | ||
![]() |
a4862cbb5f | ||
![]() |
eb0aa8bb0e | ||
![]() |
69853a622a | ||
![]() |
bb8d05f932 | ||
![]() |
fb8fa004d8 | ||
![]() |
643cc94e7e | ||
![]() |
f971536f46 | ||
![]() |
0997884ae2 | ||
![]() |
d200ba654a | ||
![]() |
95580f31b3 | ||
![]() |
341d0ec3b3 | ||
![]() |
6a2883c171 | ||
![]() |
18fbdaeeab | ||
![]() |
97fc68850f | ||
![]() |
11957f51cc | ||
![]() |
86db222469 | ||
![]() |
6f0baa0bb7 | ||
![]() |
3eea66d65a | ||
![]() |
503d8b0892 | ||
![]() |
17758fe7ad | ||
![]() |
c28192e6f9 | ||
![]() |
03a8269e3a | ||
![]() |
b840b5b6a9 | ||
![]() |
fec944142b | ||
![]() |
f66a60805d | ||
![]() |
ed93186ee2 | ||
![]() |
2ffafc7aa9 | ||
![]() |
8a9ab88945 | ||
![]() |
288819c9cc | ||
![]() |
d7dd600716 | ||
![]() |
028329850e | ||
![]() |
2d27732029 | ||
![]() |
93d24a63b2 | ||
![]() |
6e414b698c | ||
![]() |
e1bdb2a258 | ||
![]() |
b70856009d | ||
![]() |
7ded303d68 | ||
![]() |
10868dbf89 | ||
![]() |
5084b6fb92 | ||
![]() |
65f585ce9b | ||
![]() |
e75ccc3b3a | ||
![]() |
38cbca3eea | ||
![]() |
7ffa9073a3 | ||
![]() |
8a39032fdd | ||
![]() |
a4c0c07043 | ||
![]() |
6219331c4d | ||
![]() |
8a73e60eb9 | ||
![]() |
f49699737c | ||
![]() |
bbfc4567df | ||
![]() |
b239db3cb5 | ||
![]() |
54b5222fbb | ||
![]() |
5c41165c8e | ||
![]() |
6613f58ceb | ||
![]() |
527e861cbb | ||
![]() |
26c906f54d | ||
![]() |
b8c0eeaa30 | ||
![]() |
07ade91f21 | ||
![]() |
b9b5577d6d | ||
![]() |
14d653b421 | ||
![]() |
f0148de790 | ||
![]() |
7adecbcd29 | ||
![]() |
cd998f8804 | ||
![]() |
e501e4ed4b | ||
![]() |
b2799518c7 | ||
![]() |
f8af81445b | ||
![]() |
59ba66d1ab | ||
![]() |
5e3b16836a | ||
![]() |
0a3d615b1c | ||
![]() |
19da1071dc | ||
![]() |
717560d221 | ||
![]() |
bbf58e6bbc | ||
![]() |
a098e304b0 | ||
![]() |
793496aecc | ||
![]() |
4c7462fdb3 | ||
![]() |
b1b5802009 | ||
![]() |
0a66c4a72a | ||
![]() |
bc45b5be1c | ||
![]() |
0adc66171a | ||
![]() |
83da441d16 | ||
![]() |
3bd7246f5a | ||
![]() |
adf967331f | ||
![]() |
d547e21f9e | ||
![]() |
dca0412d37 | ||
![]() |
24eb1af475 | ||
![]() |
99f3e74fc2 | ||
![]() |
566f8f80d6 | ||
![]() |
9e4286294f | ||
![]() |
f6ba7d69be | ||
![]() |
eb4b337d9e | ||
![]() |
c196119acb | ||
![]() |
2875d45e79 | ||
![]() |
a33caf9b45 | ||
![]() |
030417d80b | ||
![]() |
233c41cb8c | ||
![]() |
b96037e42d | ||
![]() |
0d5d9e90ab | ||
![]() |
aaeffba684 | ||
![]() |
af9c1e572d | ||
![]() |
e2d3e73748 | ||
![]() |
36613b888b | ||
![]() |
a9d25e9472 | ||
![]() |
de5ccf2348 | ||
![]() |
0c8e48c78d | ||
![]() |
a200ce0d85 | ||
![]() |
8c0510af71 | ||
![]() |
274f260806 | ||
![]() |
8fba428bc6 | ||
![]() |
78a1e6bc00 | ||
![]() |
a1b663cce8 | ||
![]() |
2bbd588e73 | ||
![]() |
963cfa7020 | ||
![]() |
3a91adabda | ||
![]() |
a2d4b862f1 | ||
![]() |
c24b442e31 | ||
![]() |
60b1e314ed | ||
![]() |
7900a8b713 | ||
![]() |
85aae12a6d | ||
![]() |
cf68f0a512 | ||
![]() |
a6f4cfdefa | ||
![]() |
e36e0f7b2f | ||
![]() |
b13089c956 | ||
![]() |
6f52bc5dee | ||
![]() |
0019886a84 | ||
![]() |
96a125b207 | ||
![]() |
3a5abcd649 | ||
![]() |
dfcc584665 | ||
![]() |
39afa64eed | ||
![]() |
cb7ab98925 | ||
![]() |
e50b1fe60d | ||
![]() |
5359be7893 | ||
![]() |
65df08aade | ||
![]() |
406c2e35b3 | ||
![]() |
9aa5647e68 | ||
![]() |
c55867b46d | ||
![]() |
aefdc6783c | ||
![]() |
676e9e9334 | ||
![]() |
77863b8e96 | ||
![]() |
8658e82357 | ||
![]() |
f0135d9cd9 | ||
![]() |
db506d991d | ||
![]() |
41ce7b07e2 | ||
![]() |
79929cf44d | ||
![]() |
a56a43614c | ||
![]() |
5382ed8028 | ||
![]() |
84c031fade | ||
![]() |
a501127899 | ||
![]() |
dfeb5b47bc | ||
![]() |
e31b32a293 | ||
![]() |
dbdd58e548 | ||
![]() |
f6be28c61a | ||
![]() |
6cfb1d4c28 | ||
![]() |
df41d884a7 | ||
![]() |
0d3f17a6c3 | ||
![]() |
1b1cc4d864 | ||
![]() |
0a00792332 | ||
![]() |
03471e292d | ||
![]() |
eccb989689 | ||
![]() |
2a378e6e82 | ||
![]() |
add3ad6a48 | ||
![]() |
5e2346178c | ||
![]() |
d306210641 | ||
![]() |
6c39f9d427 | ||
![]() |
14f3383c0d | ||
![]() |
cd8edb551b | ||
![]() |
f1bc321b56 | ||
![]() |
f5ed1b3908 | ||
![]() |
b2a8ed0855 | ||
![]() |
11631354cb | ||
![]() |
44a4af0ed0 | ||
![]() |
d0897243f6 | ||
![]() |
d9ec57e16a | ||
![]() |
7978660efb | ||
![]() |
21a31ea929 | ||
![]() |
8bbeab9989 | ||
![]() |
e3edcd06e3 | ||
![]() |
21abb24bd0 | ||
![]() |
544ef994df | ||
![]() |
eb0cc2a62e | ||
![]() |
55187de115 | ||
![]() |
d14d308ce8 | ||
![]() |
96289f2416 | ||
![]() |
511f06a56e | ||
![]() |
94eb72cc44 | ||
![]() |
b2fb3614b0 | ||
![]() |
d4f47fe17d | ||
![]() |
3e3e9c3125 | ||
![]() |
7fa8109881 | ||
![]() |
9a671e6a24 | ||
![]() |
1eecea8449 | ||
![]() |
7aedcd8feb | ||
![]() |
82c7a82c35 | ||
![]() |
beb8f48489 | ||
![]() |
6798f1fab0 | ||
![]() |
b5957c3c32 | ||
![]() |
e6c71574a0 | ||
![]() |
f98149d87a | ||
![]() |
f08477789f | ||
![]() |
4f17e7e1c3 | ||
![]() |
5576d30e89 | ||
![]() |
3ec93ca92c | ||
![]() |
95b7851f62 | ||
![]() |
c051ea83dd | ||
![]() |
815b65d777 | ||
![]() |
9005ffbe77 | ||
![]() |
8ef03188e6 | ||
![]() |
1924883796 | ||
![]() |
a0f17fd4d8 | ||
![]() |
e453b6391e | ||
![]() |
4df11463b2 | ||
![]() |
70e2c5d10d | ||
![]() |
29a6cda3ff | ||
![]() |
73741e9486 | ||
![]() |
4fb48c5654 | ||
![]() |
b5c15ba7e5 | ||
![]() |
20aaa59fb3 | ||
![]() |
b2c92f36e1 | ||
![]() |
8ea84eee57 | ||
![]() |
b9bdd0f61e | ||
![]() |
46734cf7c1 | ||
![]() |
13520aae16 | ||
![]() |
cf474021ed | ||
![]() |
15602a7ce4 | ||
![]() |
27149e0071 | ||
![]() |
ddf7bb24f9 | ||
![]() |
ad63b94b03 | ||
![]() |
a1542b091d | ||
![]() |
619c8f4b91 | ||
![]() |
88595fbb21 | ||
![]() |
af53fa0663 | ||
![]() |
e6d62d5a3d | ||
![]() |
d23ce6ef76 | ||
![]() |
e5f6f20968 | ||
![]() |
40864126d5 | ||
![]() |
59162584b1 | ||
![]() |
327a6d885c | ||
![]() |
649cdc14ba | ||
![]() |
1e970c003f | ||
![]() |
a23440bf7c | ||
![]() |
bfb72f637b | ||
![]() |
371dfb1746 | ||
![]() |
c04b979331 | ||
![]() |
069da468d5 | ||
![]() |
5fc251daeb | ||
![]() |
651b595271 | ||
![]() |
65b4bf055f | ||
![]() |
d9dcfd0219 | ||
![]() |
07660193a3 | ||
![]() |
7502f1cae0 | ||
![]() |
7e10b0dae6 | ||
![]() |
af782a6306 | ||
![]() |
039d60bd9c | ||
![]() |
0344736aa6 | ||
![]() |
cc27540560 | ||
![]() |
872622bcdb | ||
![]() |
88411613e2 | ||
![]() |
338b903219 | ||
![]() |
8dbb11ebf6 | ||
![]() |
3c23100130 | ||
![]() |
0b12f6d7be | ||
![]() |
db355ca4e5 | ||
![]() |
fcdf24d8be | ||
![]() |
5b04e46d23 | ||
![]() |
eecc6535eb | ||
![]() |
c618b314c6 | ||
![]() |
df09e03cf7 | ||
![]() |
de2232878f | ||
![]() |
2ba539f449 | ||
![]() |
7df25a1372 | ||
![]() |
1f72e31550 | ||
![]() |
02e9a402ca | ||
![]() |
9a1920e223 | ||
![]() |
6d4180a0d2 | ||
![]() |
d5dc3dad80 | ||
![]() |
7ac5359143 | ||
![]() |
98f62a2cfa | ||
![]() |
eef8de4df0 | ||
![]() |
0b3ae64480 | ||
![]() |
995c186368 | ||
![]() |
8c548c9e54 | ||
![]() |
c8e45366b9 | ||
![]() |
35a7b0f9b9 | ||
![]() |
c671822d4d | ||
![]() |
3601cef137 | ||
![]() |
4adf2123dd | ||
![]() |
1d97781dc5 | ||
![]() |
bf065d9bb6 | ||
![]() |
f2b512ad75 | ||
![]() |
11b5a376bc | ||
![]() |
e38cddc989 | ||
![]() |
c14d89f306 | ||
![]() |
04a437b280 | ||
![]() |
096923e990 | ||
![]() |
4531ddaa62 | ||
![]() |
78a7e2d55c | ||
![]() |
3090648584 | ||
![]() |
9660ddd512 | ||
![]() |
32da3e56cd | ||
![]() |
f6afc7c324 | ||
![]() |
d531ef6813 | ||
![]() |
abe91e1efe | ||
![]() |
6832b626ea | ||
![]() |
66747f18de | ||
![]() |
82a13a78bb | ||
![]() |
212349c100 | ||
![]() |
44269c73a3 | ||
![]() |
b5837e55e6 | ||
![]() |
c3634a0261 | ||
![]() |
7029b4b44a | ||
![]() |
68ddbdd03b | ||
![]() |
dde4f09f51 | ||
![]() |
e038625b87 | ||
![]() |
188537efb3 | ||
![]() |
521e91e1c4 | ||
![]() |
ee85d8d756 | ||
![]() |
8e20c04fa0 | ||
![]() |
0d41c4dee1 | ||
![]() |
5f3018fa1a | ||
![]() |
3933592338 | ||
![]() |
d98e5357af | ||
![]() |
39d149752f | ||
![]() |
f3e99e691d | ||
![]() |
55135cea61 | ||
![]() |
909dbbbd4b | ||
![]() |
a75efc237d | ||
![]() |
519e4c4472 | ||
![]() |
5d159a7faa | ||
![]() |
d7a7315957 | ||
![]() |
13e54f7130 | ||
![]() |
e6974114fb | ||
![]() |
af82eab946 | ||
![]() |
35aa072647 | ||
![]() |
4d092af32d | ||
![]() |
f765c30b38 | ||
![]() |
2dddc86a42 | ||
![]() |
10693a9e8a | ||
![]() |
4aae0eebb2 | ||
![]() |
440b65c338 | ||
![]() |
89df042a89 | ||
![]() |
0648100fed | ||
![]() |
7813fa2f8c | ||
![]() |
cf2d77763f | ||
![]() |
c582194135 | ||
![]() |
38ee2a41df | ||
![]() |
933274c438 | ||
![]() |
68d27e156c | ||
![]() |
b7717ed450 | ||
![]() |
ac3794c351 | ||
![]() |
aede28ab3b | ||
![]() |
4cf1bcf183 | ||
![]() |
48a35106ef | ||
![]() |
c8fe8c5ea4 | ||
![]() |
2caf5bbbc5 | ||
![]() |
2511f3e76d | ||
![]() |
3e41e7d9c1 | ||
![]() |
321db867d5 | ||
![]() |
843d9223a1 | ||
![]() |
92f7286377 | ||
![]() |
cfaf7440fc | ||
![]() |
d3df415228 | ||
![]() |
5c53e29ca9 | ||
![]() |
a98cf154ed | ||
![]() |
79ab277011 | ||
![]() |
8db55aedb5 | ||
![]() |
4e4914ab2e | ||
![]() |
116a3f4683 | ||
![]() |
f4f593b333 | ||
![]() |
6c8a3013ac | ||
![]() |
64784dccb5 | ||
![]() |
28fb40b16f | ||
![]() |
af5a7a0582 | ||
![]() |
4b19f94c28 | ||
![]() |
e6dec30332 | ||
![]() |
5e9afca1c1 | ||
![]() |
e69cb86750 | ||
![]() |
f531fb97ff | ||
![]() |
69fc23ed98 | ||
![]() |
1664e3d4bc | ||
![]() |
407be5975d | ||
![]() |
69ac382a28 | ||
![]() |
fa15f2f938 | ||
![]() |
9b10b4cc64 | ||
![]() |
5c4ec25478 | ||
![]() |
5ecbbba6ee | ||
![]() |
db851cb105 | ||
![]() |
a4b75010ba | ||
![]() |
f9c8ba0b85 | ||
![]() |
f8b832b171 | ||
![]() |
c72857d396 | ||
![]() |
87e1693ba6 | ||
![]() |
c6dcc6acd8 | ||
![]() |
61eca90f65 | ||
![]() |
8145357974 | ||
![]() |
94f12e8a59 | ||
![]() |
4c5a2e8ebf | ||
![]() |
5600766b41 | ||
![]() |
92844b4499 | ||
![]() |
df48b355d2 | ||
![]() |
bfd6eb4404 | ||
![]() |
85b13f6db4 | ||
![]() |
a48a0a4f7b | ||
![]() |
7e7fdca163 | ||
![]() |
6b0d3ae6a8 | ||
![]() |
81f1e33d15 | ||
![]() |
63eb7e865b | ||
![]() |
d40b2afda8 | ||
![]() |
a391cd517b | ||
![]() |
245858460f | ||
![]() |
1e3d9c7dbc | ||
![]() |
dbc4af7186 | ||
![]() |
0124a7bfa9 | ||
![]() |
147cc60d24 | ||
![]() |
d3121f1e63 | ||
![]() |
e73ef5c092 | ||
![]() |
1facad2347 | ||
![]() |
b16afe4d55 | ||
![]() |
8973768a4e | ||
![]() |
d63ad42e49 | ||
![]() |
6e6f5a7833 | ||
![]() |
670ecfc0cd | ||
![]() |
ae325e6274 | ||
![]() |
f823dce100 | ||
![]() |
2116ff47ea | ||
![]() |
813ecdac79 | ||
![]() |
dcf7bc4140 | ||
![]() |
88270a5735 | ||
![]() |
7a2fcbbbec | ||
![]() |
3f2e9298bd | ||
![]() |
08a144912c | ||
![]() |
a8d5a9e819 | ||
![]() |
0fb571e3b5 |
@@ -1,40 +0,0 @@
|
||||
image: freebsd/latest
|
||||
|
||||
packages:
|
||||
- cmake
|
||||
- gmake
|
||||
- ninja
|
||||
- libtool
|
||||
- automake
|
||||
- pkgconf
|
||||
- unzip
|
||||
- wget
|
||||
- gettext
|
||||
- python
|
||||
- libffi
|
||||
- gdb
|
||||
|
||||
sources:
|
||||
- https://github.com/neovim/neovim
|
||||
|
||||
environment:
|
||||
SOURCEHUT: 1
|
||||
LANG: en_US.UTF-8
|
||||
CMAKE_EXTRA_FLAGS: -DCI_BUILD=ON -DMIN_LOG_LEVEL=3
|
||||
|
||||
tasks:
|
||||
- build-deps: |
|
||||
cd neovim
|
||||
gmake deps
|
||||
- build: |
|
||||
cd neovim
|
||||
gmake CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_EXTRA_FLAGS="${CMAKE_EXTRA_FLAGS}" nvim
|
||||
- functionaltest: |
|
||||
cd neovim
|
||||
gmake functionaltest
|
||||
- unittest: |
|
||||
cd neovim
|
||||
gmake unittest
|
||||
- oldtest: |
|
||||
cd neovim
|
||||
gmake oldtest
|
@@ -1,44 +0,0 @@
|
||||
# sourcehut CI: https://builds.sr.ht/~jmk/neovim
|
||||
|
||||
image: openbsd/latest
|
||||
|
||||
packages:
|
||||
- autoconf-2.71
|
||||
- automake-1.16.3
|
||||
- cmake
|
||||
- gettext-runtime-0.21p1
|
||||
- gettext-tools-0.21p1
|
||||
- gmake
|
||||
- libtool
|
||||
- ninja-1.10.2p0
|
||||
- unzip-6.0p14
|
||||
- gdb
|
||||
|
||||
sources:
|
||||
- https://github.com/neovim/neovim
|
||||
|
||||
environment:
|
||||
SOURCEHUT: 1
|
||||
LC_CTYPE: en_US.UTF-8
|
||||
CMAKE_EXTRA_FLAGS: -DCI_BUILD=ON -DMIN_LOG_LEVEL=3
|
||||
|
||||
tasks:
|
||||
- build-deps: |
|
||||
export AUTOCONF_VERSION=2.71
|
||||
export AUTOMAKE_VERSION=1.16
|
||||
mkdir neovim/.deps
|
||||
cd neovim/.deps
|
||||
cmake -G Ninja ../third-party/
|
||||
cmake --build . --config RelWithDebInfo
|
||||
- build: |
|
||||
mkdir neovim/build
|
||||
cd neovim/build
|
||||
cmake -G Ninja $CMAKE_EXTRA_FLAGS ..
|
||||
cmake --build . --config RelWithDebInfo
|
||||
./bin/nvim --version
|
||||
- functionaltest: |
|
||||
cd neovim/build
|
||||
cmake --build . --config RelWithDebInfo --target functionaltest
|
||||
- oldtest: |
|
||||
cd neovim
|
||||
gmake oldtest
|
29
.cirrus.yml
Normal file
29
.cirrus.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
env:
|
||||
CIRRUS_CLONE_DEPTH: '2'
|
||||
LANG: en_US.UTF-8
|
||||
CMAKE_EXTRA_FLAGS: -DCI_BUILD=ON -DMIN_LOG_LEVEL=3
|
||||
|
||||
freebsd_task:
|
||||
name: FreeBSD
|
||||
only_if: $BRANCH != "master"
|
||||
freebsd_instance:
|
||||
image_family: freebsd-13-1
|
||||
timeout_in: 30m
|
||||
install_script:
|
||||
- pkg update -f
|
||||
- pkg install -y cmake gmake ninja libtool automake pkgconf unzip wget gettext python libffi git
|
||||
build_deps_script:
|
||||
- gmake deps
|
||||
build_script:
|
||||
- gmake CMAKE_EXTRA_FLAGS="${CMAKE_EXTRA_FLAGS}" nvim
|
||||
workaround_script:
|
||||
# Run tests as user "cirrus" instead of root. This is required for the
|
||||
# permission-related tests to work correctly.
|
||||
- pw useradd cirrus -m
|
||||
- chown -R cirrus:cirrus .
|
||||
functionaltest_script:
|
||||
- sudo -u cirrus gmake functionaltest
|
||||
unittest_script:
|
||||
- sudo -u cirrus gmake unittest
|
||||
oldtest_script:
|
||||
- sudo -u cirrus gmake oldtest
|
@@ -36,5 +36,32 @@ BraceWrapping:
|
||||
BeforeElse: false
|
||||
IndentBraces: false
|
||||
PointerAlignment: Right
|
||||
SortIncludes: false
|
||||
SortIncludes: true
|
||||
Cpp11BracedListStyle: false
|
||||
IncludeCategories:
|
||||
- Regex: '<[/[:alnum:].]+>'
|
||||
Priority: 0
|
||||
- Regex: '^"(nvim|vim)/'
|
||||
Priority: 1
|
||||
SortPriority: 1
|
||||
CaseSensitive: false
|
||||
AlignConsecutiveMacros: AcrossEmptyLines
|
||||
IndentPPDirectives: AfterHash
|
||||
SpaceBeforeParens: ControlStatementsExceptControlMacros
|
||||
PPIndentWidth: 1
|
||||
ForEachMacros:
|
||||
- FOR_ALL_AUEVENTS
|
||||
- FOR_ALL_AUPATS_IN_EVENT
|
||||
- FOR_ALL_BUFFERS
|
||||
- FOR_ALL_BUFFERS_BACKWARDS
|
||||
- FOR_ALL_FRAMES
|
||||
- FOR_ALL_QFL_ITEMS
|
||||
- FOR_ALL_SIGNS_IN_BUF
|
||||
- FOR_ALL_TABS
|
||||
- FOR_ALL_TAB_WINDOWS
|
||||
- FOR_ALL_WINDOWS_IN_TAB
|
||||
- RBUFFER_EACH
|
||||
- RBUFFER_EACH_REVERSE
|
||||
- RBUFFER_UNTIL_EMPTY
|
||||
- RBUFFER_UNTIL_FULL
|
||||
- kl_iter
|
||||
|
@@ -6,7 +6,6 @@ indent_size = 2
|
||||
tab_width = 8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
charset = utf-8
|
||||
|
||||
[*.{c,h,in,lua}]
|
||||
max_line_length = 100
|
||||
|
@@ -47,7 +47,16 @@ a68faed02dc8e37b8f10da14dc02e33e6ed93947
|
||||
ee031eb5256bb83e0d6add2bae6fd943a4186ffe
|
||||
69e11b58b4db0952f11a5ff85aa7150b5f5b8db8
|
||||
271bb32855853b011fceaf0ad2f829bce66b2a19
|
||||
aefdc6783cb77f09786542c90901a9e7120bea42
|
||||
aa4f9c5341f5280f16cce0630ea54b84eef717b3
|
||||
0adc66171a355a12494d87ebb767d509540c7ef9
|
||||
93f24403f8cc760ff47979c596976b53a8b16358
|
||||
1ffd527c837fb2465c9659273bbe5447a1352db2
|
||||
2498e9feb025361576603a0101c86393d211e31e
|
||||
|
||||
# typos
|
||||
d238b8f6003d34cae7f65ff7585b48a2cd9449fb
|
||||
4547137aaff32b20172870a549d3a28a3c7adf1c
|
||||
|
||||
# generated docs
|
||||
ea333badd24f691c753d8048f911d1db349bc2cd
|
||||
|
16
.gitattributes
vendored
16
.gitattributes
vendored
@@ -1,6 +1,16 @@
|
||||
*.h linguist-language=C
|
||||
*.h.in linguist-language=C
|
||||
*.c.in linguist-language=C
|
||||
*CMakeLists.txt linguist-language=CMake
|
||||
|
||||
runtime/doc/* linguist-documentation
|
||||
|
||||
src/xdiff/** linguist-vendored
|
||||
src/cjson/** linguist-vendored
|
||||
src/unicode/** linguist-vendored
|
||||
|
||||
src/nvim/testdir/test42.in diff
|
||||
.github/ export-ignore
|
||||
|
||||
.github/ export-ignore
|
||||
.travis.yml export-ignore
|
||||
codecov.yml export-ignore
|
||||
.builds/ export-ignore
|
||||
.builds/ export-ignore
|
||||
|
6
.github/labeler.yml
vendored
6
.github/labeler.yml
vendored
@@ -13,12 +13,13 @@
|
||||
- src/nvim/lua/treesitter.*
|
||||
- runtime/lua/vim/treesitter.lua
|
||||
- runtime/lua/vim/treesitter/*
|
||||
- runtime/queries/**/*
|
||||
|
||||
"diagnostic":
|
||||
- runtime/lua/vim/diagnostic.lua
|
||||
|
||||
"dependencies":
|
||||
- third-party/**/*
|
||||
- cmake.deps/**/*
|
||||
|
||||
"spell":
|
||||
- src/nvim/spell*
|
||||
@@ -27,8 +28,6 @@
|
||||
- src/nvim/terminal.*
|
||||
|
||||
"column":
|
||||
- src/nvim/mark.h
|
||||
- src/nvim/mark.c
|
||||
- src/nvim/sign*
|
||||
|
||||
"folds":
|
||||
@@ -39,6 +38,7 @@
|
||||
|
||||
"documentation":
|
||||
- all: ["runtime/doc/*"]
|
||||
- all: ["**/*.md"]
|
||||
|
||||
"clipboard":
|
||||
- runtime/autoload/provider/clipboard.vim
|
||||
|
11
.github/scripts/reviews.js
vendored
11
.github/scripts/reviews.js
vendored
@@ -9,15 +9,16 @@ module.exports = async ({github, context}) => {
|
||||
const reviewers = new Set()
|
||||
if (labels.includes('api')) {
|
||||
reviewers.add("bfredl")
|
||||
reviewers.add("gpanders")
|
||||
reviewers.add("muniter")
|
||||
}
|
||||
|
||||
if (labels.includes('build')) {
|
||||
reviewers.add("jamessan")
|
||||
reviewers.add("justinmk")
|
||||
}
|
||||
|
||||
if (labels.includes('ci')) {
|
||||
reviewers.add("dundargoc")
|
||||
reviewers.add("jamessan")
|
||||
}
|
||||
|
||||
@@ -54,18 +55,14 @@ module.exports = async ({github, context}) => {
|
||||
reviewers.add("gpanders")
|
||||
}
|
||||
|
||||
if (labels.includes('gui')) {
|
||||
reviewers.add("glacambre")
|
||||
reviewers.add("smolck")
|
||||
}
|
||||
|
||||
if (labels.includes('lsp')) {
|
||||
reviewers.add("mfussenegger")
|
||||
reviewers.add("mjlbach")
|
||||
reviewers.add("glepnir")
|
||||
}
|
||||
|
||||
if (labels.includes('treesitter')) {
|
||||
reviewers.add("bfredl")
|
||||
reviewers.add("clason")
|
||||
reviewers.add("vigoux")
|
||||
}
|
||||
|
||||
|
2
.github/workflows/api-docs-check.yml
vendored
2
.github/workflows/api-docs-check.yml
vendored
@@ -1,7 +1,6 @@
|
||||
name: Missing API docs
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
branches-ignore:
|
||||
- 'marvim/api-doc-update**'
|
||||
paths:
|
||||
@@ -11,7 +10,6 @@ on:
|
||||
|
||||
jobs:
|
||||
call-regen-api-docs:
|
||||
if: github.event.pull_request.draft == false
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
16
.github/workflows/api-docs.yml
vendored
16
.github/workflows/api-docs.yml
vendored
@@ -21,23 +21,24 @@ on:
|
||||
|
||||
jobs:
|
||||
regen-api-docs:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# Fetch depth 0 is required if called through workflow_call. In order
|
||||
# to create a PR we need to access other branches, which requires a
|
||||
# full clone.
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y python3 luajit
|
||||
conda install -c conda-forge doxygen=1.9.2 msgpack-python
|
||||
echo "$CONDA/bin" >> $GITHUB_PATH
|
||||
sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y doxygen python3 python3-msgpack luajit
|
||||
|
||||
- name: Setup git config
|
||||
run: |
|
||||
@@ -51,15 +52,14 @@ jobs:
|
||||
run: |
|
||||
git checkout -b ${DOC_BRANCH}
|
||||
python3 scripts/gen_vimdoc.py
|
||||
printf '::set-output name=UPDATED_DOCS::%s\n' $([ -z "$(git diff)" ]; echo $?)
|
||||
printf 'UPDATED_DOCS=%s\n' $([ -z "$(git diff)" ]; echo $?) >> $GITHUB_OUTPUT
|
||||
|
||||
- name: FAIL, PR has not committed doc changes
|
||||
if: ${{ steps.docs.outputs.UPDATED_DOCS != 0 && inputs.check_only }}
|
||||
run: |
|
||||
echo "Job failed, run ./scripts/gen_vimdoc.py and commit your doc changes"
|
||||
echo "The doc generation produces the following changes:"
|
||||
git --no-pager diff
|
||||
exit 1
|
||||
git diff --color --exit-code
|
||||
|
||||
- name: Automatic PR
|
||||
if: ${{ steps.docs.outputs.UPDATED_DOCS != 0 && !inputs.check_only }}
|
||||
|
10
.github/workflows/backport.yml
vendored
10
.github/workflows/backport.yml
vendored
@@ -2,8 +2,6 @@ name: Backport
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [closed, labeled]
|
||||
issue_comment:
|
||||
types: [created]
|
||||
jobs:
|
||||
backport:
|
||||
permissions:
|
||||
@@ -14,20 +12,16 @@ jobs:
|
||||
github.repository_owner == 'neovim' && (
|
||||
github.event_name == 'pull_request_target' &&
|
||||
github.event.pull_request.merged
|
||||
) || (
|
||||
github.event_name == 'issue_comment' &&
|
||||
github.event.issue.pull_request &&
|
||||
contains(github.event.comment.body, '/backport')
|
||||
)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
# required to find all branches
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
- name: Create backport PRs
|
||||
uses: zeebe-io/backport-action@v0.0.7
|
||||
uses: zeebe-io/backport-action@v0.0.8
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
github_workspace: ${{ github.workspace }}
|
||||
|
221
.github/workflows/ci.yml
vendored
221
.github/workflows/ci.yml
vendored
@@ -5,7 +5,6 @@ on:
|
||||
- 'master'
|
||||
- 'release-[0-9]+.[0-9]+'
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
branches:
|
||||
- 'master'
|
||||
- 'release-[0-9]+.[0-9]+'
|
||||
@@ -19,18 +18,13 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
# This job tests two things: it lints the code but also builds neovim using
|
||||
# system dependencies instead of bundled dependencies. This is to make sure
|
||||
# we are able to build neovim without pigeonholing ourselves into specifics
|
||||
# of the bundled dependencies.
|
||||
|
||||
if: (github.event_name == 'pull_request' && github.base_ref == 'master' && !github.event.pull_request.draft) || (github.event_name == 'push' && github.ref == 'refs/heads/master')
|
||||
if: (github.event_name == 'pull_request' && github.base_ref == 'master') || (github.event_name == 'push' && github.ref == 'refs/heads/master')
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
CC: gcc
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup common environment variables
|
||||
run: ./.github/workflows/env.sh lint
|
||||
@@ -43,11 +37,131 @@ jobs:
|
||||
autoconf \
|
||||
automake \
|
||||
build-essential \
|
||||
ccache \
|
||||
cmake \
|
||||
flake8 \
|
||||
gettext \
|
||||
gperf \
|
||||
libluajit-5.1-dev \
|
||||
libmsgpack-dev \
|
||||
libtermkey-dev \
|
||||
libtool-bin \
|
||||
libtree-sitter-dev \
|
||||
libunibilium-dev \
|
||||
libuv1-dev \
|
||||
libvterm-dev \
|
||||
locales \
|
||||
lua-busted \
|
||||
lua-check \
|
||||
lua-filesystem \
|
||||
lua-inspect \
|
||||
lua-lpeg \
|
||||
lua-luv-dev \
|
||||
lua-nvim \
|
||||
luajit \
|
||||
ninja-build \
|
||||
pkg-config
|
||||
|
||||
- name: Cache uncrustify
|
||||
id: cache-uncrustify
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ env.CACHE_UNCRUSTIFY }}
|
||||
key: ${{ env.UNCRUSTIFY_VERSION }}
|
||||
|
||||
- name: Clone uncrustify
|
||||
if: steps.cache-uncrustify.outputs.cache-hit != 'true'
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: uncrustify/uncrustify
|
||||
ref: ${{ env.UNCRUSTIFY_VERSION }}
|
||||
path: uncrustify
|
||||
|
||||
- name: Install uncrustify
|
||||
if: steps.cache-uncrustify.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
source_dir=uncrustify
|
||||
build_dir=uncrustify/build
|
||||
cmake -S $source_dir -B $build_dir -G Ninja -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build $build_dir
|
||||
mkdir -p $HOME/.cache
|
||||
cp $build_dir/uncrustify ${{ env.CACHE_UNCRUSTIFY }}
|
||||
|
||||
- name: Cache artifacts
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
${{ env.CACHE_NVIM_DEPS_DIR }}
|
||||
key: lint-${{ hashFiles('cmake/*', '**/CMakeLists.txt', '!cmake.deps/**CMakeLists.txt') }}-${{ github.base_ref }}
|
||||
|
||||
- name: Build third-party deps
|
||||
run: ./ci/before_script.sh
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: lintstylua
|
||||
uses: JohnnyMorganz/stylua-action@v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
args: --check runtime/
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: lintlua
|
||||
run: make lintlua
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: lintpy
|
||||
run: make lintpy
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: lintsh
|
||||
run: make lintsh
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: uncrustify
|
||||
run: |
|
||||
${{ env.CACHE_UNCRUSTIFY }} -c ./src/uncrustify.cfg -q --replace --no-backup $(find ./src/nvim -name "*.[ch]")
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: suggester / uncrustify
|
||||
uses: reviewdog/action-suggester@v1
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tool_name: uncrustify
|
||||
cleanup: false
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: check uncrustify
|
||||
run: |
|
||||
git diff --color --exit-code
|
||||
|
||||
- name: Cache dependencies
|
||||
run: ./ci/before_cache.sh
|
||||
|
||||
lintc:
|
||||
# This job tests two things: it lints the code but also builds neovim using
|
||||
# system dependencies instead of bundled dependencies. This is to make sure
|
||||
# we are able to build neovim without pigeonholing ourselves into specifics
|
||||
# of the bundled dependencies.
|
||||
|
||||
if: (github.event_name == 'pull_request' && github.base_ref == 'master') || (github.event_name == 'push' && github.ref == 'refs/heads/master')
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
CC: gcc
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup common environment variables
|
||||
run: ./.github/workflows/env.sh lint
|
||||
|
||||
- name: Install apt packages
|
||||
run: |
|
||||
sudo add-apt-repository ppa:neovim-ppa/stable
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
autoconf \
|
||||
automake \
|
||||
build-essential \
|
||||
cmake \
|
||||
gettext \
|
||||
libluajit-5.1-dev \
|
||||
libmsgpack-dev \
|
||||
libtermkey-dev \
|
||||
@@ -69,38 +183,25 @@ jobs:
|
||||
pkg-config
|
||||
|
||||
- name: Cache artifacts
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
${{ env.CACHE_NVIM_DEPS_DIR }}
|
||||
~/.ccache
|
||||
key: lint-${{ hashFiles('cmake/*', '**/CMakeLists.txt', '!third-party/**CMakeLists.txt') }}-${{ github.base_ref }}
|
||||
key: lint-${{ hashFiles('cmake/*', '**/CMakeLists.txt', '!cmake.deps/**CMakeLists.txt') }}-${{ github.base_ref }}
|
||||
|
||||
- name: Build third-party
|
||||
- name: Build third-party deps
|
||||
run: ./ci/before_script.sh
|
||||
|
||||
- name: Build nvim
|
||||
run: ./ci/run_tests.sh build_nvim
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: clint-full
|
||||
run: ./ci/run_lint.sh clint-full
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: lualint
|
||||
run: ./ci/run_lint.sh lualint
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: pylint
|
||||
run: ./ci/run_lint.sh pylint
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: shlint
|
||||
run: ./ci/run_lint.sh shlint
|
||||
name: lintc
|
||||
run: make lintc
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: check-single-includes
|
||||
run: ./ci/run_lint.sh check-single-includes
|
||||
run: make check-single-includes
|
||||
|
||||
- name: Cache dependencies
|
||||
run: ./ci/before_cache.sh
|
||||
@@ -119,18 +220,20 @@ jobs:
|
||||
cc: clang-13
|
||||
runner: ubuntu-20.04
|
||||
os: linux
|
||||
- flavor: uchar
|
||||
cc: gcc
|
||||
runner: ubuntu-20.04
|
||||
os: linux
|
||||
- cc: clang
|
||||
runner: macos-10.15
|
||||
os: osx
|
||||
- cc: clang
|
||||
runner: macos-11.0
|
||||
runner: macos-11
|
||||
os: osx
|
||||
|
||||
# The functionaltest-lua test two things simultaneously:
|
||||
# functionaltest-lua is our dumping ground for non-mainline configurations.
|
||||
# 1. Check that the tests pass with PUC Lua instead of LuaJIT.
|
||||
# 2. Use as oldest/minimum versions of dependencies/build tools we
|
||||
# still explicitly support so we don't accidentally rely on
|
||||
# features that is only available on later versions.
|
||||
# 3. No treesitter parsers installed.
|
||||
- flavor: functionaltest-lua
|
||||
cc: gcc
|
||||
runner: ubuntu-20.04
|
||||
@@ -138,12 +241,11 @@ jobs:
|
||||
cmake: minimum_required
|
||||
runs-on: ${{ matrix.runner }}
|
||||
timeout-minutes: 45
|
||||
if: github.event.pull_request.draft == false
|
||||
env:
|
||||
CC: ${{ matrix.cc }}
|
||||
CI_OS_NAME: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup common environment variables
|
||||
run: ./.github/workflows/env.sh ${{ matrix.flavor }}
|
||||
@@ -152,7 +254,7 @@ jobs:
|
||||
if: matrix.os == 'linux'
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y autoconf automake build-essential ccache cmake cpanminus cscope gcc-multilib gdb gettext gperf language-pack-tr libtool-bin locales ninja-build pkg-config python3 python3-pip python3-setuptools unzip valgrind xclip
|
||||
sudo apt-get install -y autoconf automake build-essential cmake cpanminus cscope gcc-multilib gdb gettext language-pack-tr libtool-bin locales ninja-build pkg-config python3 python3-pip python3-setuptools unzip valgrind xclip
|
||||
|
||||
- name: Install minimum required version of cmake
|
||||
if: matrix.cmake == 'minimum_required'
|
||||
@@ -184,20 +286,19 @@ jobs:
|
||||
if: matrix.os == 'osx'
|
||||
run: |
|
||||
brew update --quiet
|
||||
brew install automake ccache cpanminus ninja
|
||||
brew install automake cpanminus ninja
|
||||
|
||||
- name: Setup interpreter packages
|
||||
run: ./ci/install.sh
|
||||
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
${{ env.CACHE_NVIM_DEPS_DIR }}
|
||||
~/.ccache
|
||||
key: ${{ matrix.runner }}-${{ matrix.flavor }}-${{ matrix.cc }}-${{ hashFiles('cmake/*', 'third-party/**', '**/CMakeLists.txt') }}-${{ github.base_ref }}
|
||||
key: ${{ matrix.runner }}-${{ matrix.flavor }}-${{ matrix.cc }}-${{ hashFiles('cmake/*', 'cmake.deps/**', '**/CMakeLists.txt') }}-${{ github.base_ref }}
|
||||
|
||||
- name: Build third-party
|
||||
- name: Build third-party deps
|
||||
run: ./ci/before_script.sh
|
||||
|
||||
- name: Build
|
||||
@@ -225,25 +326,33 @@ jobs:
|
||||
windows:
|
||||
runs-on: windows-2019
|
||||
timeout-minutes: 45
|
||||
if: github.event.pull_request.draft == false
|
||||
env:
|
||||
DEPS_BUILD_DIR: ${{ format('{0}/nvim-deps', github.workspace) }}
|
||||
DEPS_PREFIX: ${{ format('{0}/nvim-deps/usr', github.workspace) }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config: [ MINGW_64-gcov, MSVC_64 ]
|
||||
name: windows (${{ matrix.config }})
|
||||
CMAKE_BUILD_TYPE: "RelWithDebInfo"
|
||||
name: windows (MSVC_64)
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/cache@v2
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ env.DEPS_BUILD_DIR }}
|
||||
key: ${{ matrix.config }}-${{ hashFiles('third-party\**') }}
|
||||
key: ${{ hashFiles('cmake.deps\**') }}
|
||||
|
||||
- name: Run CI
|
||||
run: powershell ci\build.ps1
|
||||
env:
|
||||
CONFIGURATION: ${{ matrix.config }}
|
||||
- name: Build deps
|
||||
run: .\ci\build.ps1 -BuildDeps
|
||||
|
||||
- name: Build nvim
|
||||
run: .\ci\build.ps1 -Build
|
||||
|
||||
- name: Install test deps
|
||||
continue-on-error: false
|
||||
run: .\ci\build.ps1 -EnsureTestDeps
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: Run tests
|
||||
run: .\ci\build.ps1 -Test
|
||||
|
||||
- if: "!cancelled()"
|
||||
name: Run old tests
|
||||
run: .\ci\build.ps1 -TestOld
|
||||
|
42
.github/workflows/codeql-analysis.yml
vendored
Normal file
42
.github/workflows/codeql-analysis.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '42 0 * * 0'
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'cpp', 'python' ]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup common environment variables
|
||||
run: ./.github/workflows/env.sh
|
||||
|
||||
- name: Install apt packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y autoconf automake build-essential cmake cpanminus cscope gcc-multilib gdb gettext language-pack-tr libtool-bin locales ninja-build pkg-config python3 python3-pip python3-setuptools unzip valgrind xclip
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
- if: matrix.language == 'cpp'
|
||||
run: make
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
4
.github/workflows/commitlint.yml
vendored
4
.github/workflows/commitlint.yml
vendored
@@ -4,12 +4,14 @@ on:
|
||||
# to merge a PR, it can't be skipped, so use pull_request_target
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
branches:
|
||||
- 'master'
|
||||
jobs:
|
||||
lint-commits:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.draft == false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
8
.github/workflows/coverity-scan.yml
vendored
8
.github/workflows/coverity-scan.yml
vendored
@@ -1,19 +1,19 @@
|
||||
name: Coverity
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 10 * * 1' # Run every Monday at 00:10
|
||||
- cron: '10 0 * * *' # Run every day at 00:10
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
scan:
|
||||
runs-on: ubuntu-18.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y autoconf automake build-essential cmake gettext gperf libtool-bin locales ninja-build pkg-config unzip
|
||||
sudo apt-get install -y autoconf automake build-essential cmake gettext libtool-bin locales ninja-build pkg-config unzip
|
||||
|
||||
- name: Download Coverity
|
||||
run: |
|
||||
|
16
.github/workflows/env.sh
vendored
16
.github/workflows/env.sh
vendored
@@ -8,8 +8,6 @@ $HOME/.local/bin
|
||||
EOF
|
||||
|
||||
cat <<EOF >> "$GITHUB_ENV"
|
||||
CACHE_ENABLE=true
|
||||
CI_TARGET=tests
|
||||
CI_BUILD_DIR=$GITHUB_WORKSPACE
|
||||
BUILD_DIR=$GITHUB_WORKSPACE/build
|
||||
DEPS_BUILD_DIR=$HOME/nvim-deps
|
||||
@@ -19,13 +17,11 @@ NVIM_LOG_FILE=$GITHUB_WORKSPACE/build/.nvimlog
|
||||
VALGRIND_LOG=$GITHUB_WORKSPACE/build/log/valgrind-%p.log
|
||||
CACHE_NVIM_DEPS_DIR=$HOME/.cache/nvim-deps
|
||||
CACHE_MARKER=$HOME/.cache/nvim-deps/.ci_cache_marker
|
||||
CCACHE_BASEDIR=$GITHUB_WORKSPACE
|
||||
CCACHE_COMPRESS=1
|
||||
CCACHE_SLOPPINESS=time_macros,file_macro
|
||||
CCACHE_DIR=$HOME/.ccache
|
||||
CACHE_UNCRUSTIFY=$HOME/.cache/uncrustify
|
||||
UNCRUSTIFY_VERSION=uncrustify-0.75.0
|
||||
EOF
|
||||
|
||||
DEPS_CMAKE_FLAGS=-DUSE_BUNDLED_GPERF=OFF
|
||||
DEPS_CMAKE_FLAGS=
|
||||
FUNCTIONALTEST=functionaltest
|
||||
BUILD_FLAGS="CMAKE_FLAGS=-DCI_BUILD=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=$HOME/nvim-install -DBUSTED_OUTPUT_TYPE=nvim -DDEPS_PREFIX=$HOME/nvim-deps/usr -DMIN_LOG_LEVEL=3"
|
||||
|
||||
@@ -43,6 +39,11 @@ EOF
|
||||
cat <<EOF >> "$GITHUB_ENV"
|
||||
TSAN_OPTIONS=log_path=$GITHUB_WORKSPACE/build/log/tsan
|
||||
CLANG_SANITIZER=TSAN
|
||||
EOF
|
||||
;;
|
||||
uchar)
|
||||
cat <<EOF >> "$GITHUB_ENV"
|
||||
BUILD_UCHAR=1
|
||||
EOF
|
||||
;;
|
||||
lint)
|
||||
@@ -51,7 +52,6 @@ EOF
|
||||
DEPS_CMAKE_FLAGS="$DEPS_CMAKE_FLAGS -DUSE_BUNDLED_LUV=ON"
|
||||
cat <<EOF >> "$GITHUB_ENV"
|
||||
USE_BUNDLED=OFF
|
||||
CI_TARGET=lint
|
||||
EOF
|
||||
;;
|
||||
functionaltest-lua)
|
||||
|
4
.github/workflows/labeler.yml
vendored
4
.github/workflows/labeler.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/labeler@main
|
||||
- uses: actions/labeler@v4
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
sync-labels: ""
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: 'Request reviewers'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
|
5
.github/workflows/notes.md
vendored
5
.github/workflows/notes.md
vendored
@@ -21,8 +21,9 @@ ${NVIM_VERSION}
|
||||
### macOS
|
||||
|
||||
1. Download **nvim-macos.tar.gz**
|
||||
2. Extract: `tar xzvf nvim-macos.tar.gz`
|
||||
3. Run `./nvim-osx64/bin/nvim`
|
||||
2. Run `xattr -c ./nvim-macos.tar.gz` (to avoid "unknown developer" warning)
|
||||
3. Extract: `tar xzvf nvim-macos.tar.gz`
|
||||
4. Run `./nvim-macos/bin/nvim`
|
||||
|
||||
### Linux (x64)
|
||||
|
||||
|
186
.github/workflows/release.yml
vendored
186
.github/workflows/release.yml
vendored
@@ -13,21 +13,21 @@ on:
|
||||
- v[0-9]+.[0-9]+.[0-9]+
|
||||
|
||||
# Build on the oldest supported images, so we have broader compatibility
|
||||
# Upgrade to gcc-11 to prevent it from using its builtins (#14150)
|
||||
# Build with gcc-10 to prevent triggering #14150 (default is still gcc-9 on 20.04)
|
||||
jobs:
|
||||
linux:
|
||||
runs-on: ubuntu-18.04
|
||||
runs-on: ubuntu-20.04
|
||||
outputs:
|
||||
version: ${{ steps.build.outputs.version }}
|
||||
release: ${{ steps.build.outputs.release }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y autoconf automake build-essential cmake gcc-11 gettext gperf libtool-bin locales ninja-build pkg-config unzip
|
||||
sudo apt-get install -y autoconf automake build-essential cmake gettext libtool-bin locales ninja-build pkg-config unzip
|
||||
- if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly')
|
||||
run: printf 'NVIM_BUILD_TYPE=Release\n' >> $GITHUB_ENV
|
||||
- if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly')
|
||||
@@ -35,52 +35,62 @@ jobs:
|
||||
- name: Build release
|
||||
id: build
|
||||
run: |
|
||||
CC=gcc-11 make CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH="
|
||||
printf '::set-output name=version::%s\n' "$(./build/bin/nvim --version | head -n 3 | sed -z 's/\n/%0A/g')"
|
||||
printf '::set-output name=release::%s\n' "$(./build/bin/nvim --version | head -n 1)"
|
||||
CC=gcc-10 make CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH="
|
||||
printf 'version<<END\n' >> $GITHUB_OUTPUT
|
||||
./build/bin/nvim --version | head -n 3 >> $GITHUB_OUTPUT
|
||||
printf 'END\n' >> $GITHUB_OUTPUT
|
||||
printf 'release=%s\n' "$(./build/bin/nvim --version | head -n 1)" >> $GITHUB_OUTPUT
|
||||
make DESTDIR="$GITHUB_WORKSPACE/build/release/nvim-linux64" install
|
||||
cd "$GITHUB_WORKSPACE/build/"
|
||||
cpack -C $NVIM_BUILD_TYPE
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: nvim-linux64
|
||||
path: build/nvim-linux64.tar.gz
|
||||
retention-days: 1
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: nvim-linux64
|
||||
path: build/nvim-linux64.deb
|
||||
path: |
|
||||
build/nvim-linux64.tar.gz
|
||||
build/nvim-linux64.deb
|
||||
retention-days: 1
|
||||
|
||||
appimage:
|
||||
runs-on: ubuntu-18.04
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: ubuntu:18.04
|
||||
options: --privileged # Privileged mode is needed to load fuse module.
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Prepare container
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y software-properties-common
|
||||
add-apt-repository -y ppa:ubuntu-toolchain-r/test # For gcc-10.
|
||||
add-apt-repository -y ppa:git-core/ppa # For git>=2.18.
|
||||
apt-get update
|
||||
apt-get install -y git gcc-10
|
||||
apt-get install -y fuse libfuse2 # For linuxdeploy.
|
||||
# Workaround for https://github.com/actions/checkout/issues/766.
|
||||
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y autoconf automake build-essential cmake gcc-11 gettext gperf libtool-bin locales ninja-build pkg-config unzip
|
||||
apt-get update
|
||||
apt-get install -y autoconf automake build-essential cmake gettext libtool-bin locales ninja-build pkg-config unzip
|
||||
- if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly')
|
||||
run: CC=gcc-11 make appimage-latest
|
||||
run: CC=gcc-10 make appimage-latest
|
||||
- if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly')
|
||||
run: CC=gcc-11 make appimage-nightly
|
||||
- uses: actions/upload-artifact@v2
|
||||
run: CC=gcc-10 make appimage-nightly
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: appimage
|
||||
path: build/bin/nvim.appimage
|
||||
retention-days: 1
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: appimage
|
||||
path: build/bin/nvim.appimage.zsync
|
||||
path: |
|
||||
build/bin/nvim.appimage
|
||||
build/bin/nvim.appimage.zsync
|
||||
retention-days: 1
|
||||
|
||||
macOS:
|
||||
runs-on: macos-10.15
|
||||
runs-on: macos-11
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install brew packages
|
||||
@@ -91,31 +101,44 @@ jobs:
|
||||
run: printf 'NVIM_BUILD_TYPE=Release\n' >> $GITHUB_ENV
|
||||
- if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly')
|
||||
run: printf 'NVIM_BUILD_TYPE=RelWithDebInfo\n' >> $GITHUB_ENV
|
||||
- name: Provision universal `libintl`
|
||||
run: |
|
||||
GETTEXT_PREFIX="$(brew --prefix gettext)"
|
||||
printf 'GETTEXT_PREFIX=%s\n' "$GETTEXT_PREFIX" >> $GITHUB_ENV
|
||||
bottle_tag="arm64_big_sur"
|
||||
brew fetch --bottle-tag="$bottle_tag" gettext
|
||||
cd "$(mktemp -d)"
|
||||
tar xf "$(brew --cache)"/**/*gettext*${bottle_tag}*.tar.gz
|
||||
lipo gettext/*/lib/libintl.a "${GETTEXT_PREFIX}/lib/libintl.a" -create -output libintl.a
|
||||
mv -f libintl.a /usr/local/lib/
|
||||
- name: Ensure static linkage to `libintl`
|
||||
run: |
|
||||
# We're about to mangle `gettext`, so let's remove any potentially broken
|
||||
# installs (e.g. curl, git) as those could interfere with our build.
|
||||
brew uninstall $(brew uses --installed --recursive gettext)
|
||||
brew unlink gettext
|
||||
ln -sf "$(brew --prefix)/opt/$(readlink "${GETTEXT_PREFIX}")/bin"/* /usr/local/bin/
|
||||
ln -sf "$(brew --prefix)/opt/$(readlink "${GETTEXT_PREFIX}")/include"/* /usr/local/include/
|
||||
rm -f "$GETTEXT_PREFIX"
|
||||
- name: Build release
|
||||
run: |
|
||||
make CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11"
|
||||
make DESTDIR="$GITHUB_WORKSPACE/build/release/nvim-osx64" install
|
||||
- name: Create package
|
||||
run: |
|
||||
cd "$GITHUB_WORKSPACE/build/release"
|
||||
mkdir -p nvim-osx64/libs
|
||||
libs=($(otool -L nvim-osx64/bin/nvim | sed 1d | sed -E -e 's|^[[:space:]]*||' -e 's| .*||'))
|
||||
echo "libs:"
|
||||
for lib in "${libs[@]}"; do
|
||||
if echo "$lib" | grep -q -E 'libSystem|CoreFoundation' 2>/dev/null; then
|
||||
echo " [skipped] $lib"
|
||||
else
|
||||
echo " $lib"
|
||||
relname="libs/${lib##*/}"
|
||||
cp -L "$lib" "nvim-osx64/$relname"
|
||||
install_name_tool -change "$lib" "@executable_path/../$relname" nvim-osx64/bin/nvim
|
||||
fi
|
||||
export MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | cut -f1 -d.)"
|
||||
OSX_FLAGS="-DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} -DCMAKE_OSX_ARCHITECTURES=arm64\;x86_64"
|
||||
make CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} \
|
||||
CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX:PATH= $OSX_FLAGS" \
|
||||
DEPS_CMAKE_FLAGS="$OSX_FLAGS"
|
||||
make DESTDIR="$GITHUB_WORKSPACE/build/release/nvim-macos" install
|
||||
cd "$GITHUB_WORKSPACE/build/"
|
||||
# Make sure we build everything for M1 as well
|
||||
for macho in bin/* lib/nvim/parser/*.so
|
||||
do
|
||||
lipo -info "$macho" | grep -q arm64 || exit 1
|
||||
done
|
||||
tar cfz nvim-macos.tar.gz nvim-osx64
|
||||
- uses: actions/upload-artifact@v2
|
||||
cpack -C "$NVIM_BUILD_TYPE"
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: nvim-macos
|
||||
path: build/release/nvim-macos.tar.gz
|
||||
path: build/nvim-macos.tar.gz
|
||||
retention-days: 1
|
||||
|
||||
windows:
|
||||
@@ -123,6 +146,7 @@ jobs:
|
||||
env:
|
||||
DEPS_BUILD_DIR: ${{ format('{0}/nvim-deps', github.workspace) }}
|
||||
DEPS_PREFIX: ${{ format('{0}/nvim-deps/usr', github.workspace) }}
|
||||
CMAKE_BUILD_TYPE: "RelWithDebInfo"
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
@@ -130,41 +154,38 @@ jobs:
|
||||
archive: nvim-win64
|
||||
name: windows (${{ matrix.config }})
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- run: powershell ci\build.ps1 -NoTests
|
||||
env:
|
||||
CONFIGURATION: ${{ matrix.config }}
|
||||
- uses: actions/upload-artifact@v2
|
||||
- name: Build deps
|
||||
run: .\ci\build.ps1 -BuildDeps
|
||||
- name: build package
|
||||
run: .\ci\build.ps1 -Package
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ matrix.archive }}
|
||||
path: build/${{ matrix.archive }}.zip
|
||||
retention-days: 1
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: ${{ matrix.archive }}
|
||||
path: build/${{ matrix.archive }}.msi
|
||||
path: |
|
||||
build/${{ matrix.archive }}.msi
|
||||
build/${{ matrix.archive }}.zip
|
||||
retention-days: 1
|
||||
|
||||
publish:
|
||||
needs: [linux, appimage, macOS, windows]
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_REPO: ${{ github.repository }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
# Must perform checkout first, since it deletes the target directory
|
||||
# before running, and would therefore delete the downloaded artifacts
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/download-artifact@v2
|
||||
- uses: actions/download-artifact@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y gettext-base
|
||||
run: sudo apt-get update && sudo apt-get install -y gettext-base
|
||||
|
||||
- if: github.event_name == 'workflow_dispatch'
|
||||
run: echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV
|
||||
@@ -175,16 +196,12 @@ jobs:
|
||||
TAG_NAME=${{ github.ref }}
|
||||
echo "TAG_NAME=${TAG_NAME#refs/tags/}" >> $GITHUB_ENV
|
||||
- if: env.TAG_NAME == 'nightly'
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
(echo 'SUBJECT=Nvim development (prerelease) build';
|
||||
echo 'PRERELEASE=--prerelease') >> $GITHUB_ENV
|
||||
gh release delete nightly --yes || true
|
||||
git push origin :nightly || true
|
||||
- if: env.TAG_NAME != 'nightly'
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
(echo 'SUBJECT=Nvim release build';
|
||||
echo 'PRERELEASE=') >> $GITHUB_ENV
|
||||
@@ -223,7 +240,6 @@ jobs:
|
||||
echo "SHA_WIN_64_MSI=$(cat nvim-win64.msi.sha256sum)" >> $GITHUB_ENV
|
||||
- name: Publish release
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NVIM_VERSION: ${{ needs.linux.outputs.version }}
|
||||
DEBUG: api
|
||||
run: |
|
||||
@@ -232,3 +248,31 @@ jobs:
|
||||
if [ "$TAG_NAME" != "nightly" ]; then
|
||||
gh release create stable $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos/* nvim-linux64/* appimage/* nvim-win64/*
|
||||
fi
|
||||
|
||||
publish-winget:
|
||||
needs: publish
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly')
|
||||
name: Publish stable
|
||||
uses: vedantmgoyal2009/winget-releaser@v1
|
||||
with:
|
||||
identifier: Neovim.Neovim
|
||||
release-tag: ${{ github.event.inputs.tag_name || github.ref_name }}
|
||||
token: ${{ secrets.WINGET_TOKEN }}
|
||||
- if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly')
|
||||
name: Get nightly version
|
||||
id: get-version
|
||||
run: |
|
||||
Invoke-WebRequest https://github.com/neovim/neovim/releases/download/nightly/nvim-win64.msi -OutFile setup.msi
|
||||
Install-Module -Name 'Carbon.Windows.Installer' -Force
|
||||
$VERSION = (Get-CMsi (Resolve-Path .\setup.msi).Path).ProductVersion
|
||||
"version=$VERSION" >> $env:GITHUB_OUTPUT
|
||||
- if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly')
|
||||
name: Publish nightly
|
||||
uses: vedantmgoyal2009/winget-releaser@v1
|
||||
with:
|
||||
identifier: Neovim.Neovim.Nightly
|
||||
version: ${{ steps.get-version.outputs.version }}
|
||||
release-tag: nightly
|
||||
token: ${{ secrets.WINGET_TOKEN }}
|
||||
|
@@ -8,7 +8,7 @@ jobs:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: 'Remove reviewers'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
|
2
.github/workflows/reviews.yml
vendored
2
.github/workflows/reviews.yml
vendored
@@ -9,7 +9,7 @@ jobs:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: 'Request reviewers'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
|
10
.github/workflows/vim-patches.yml
vendored
10
.github/workflows/vim-patches.yml
vendored
@@ -5,7 +5,7 @@ on:
|
||||
|
||||
jobs:
|
||||
update-vim-patches:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
@@ -14,11 +14,11 @@ jobs:
|
||||
VERSION_BRANCH: marvim/ci-version-update
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
repository: vim/vim
|
||||
path: ${{ env.VIM_SOURCE_DIR }}
|
||||
@@ -40,8 +40,8 @@ jobs:
|
||||
id: update-version
|
||||
run: |
|
||||
git checkout -b ${VERSION_BRANCH}
|
||||
nvim -i NONE -u NONE --headless +'luafile scripts/vimpatch.lua' +q
|
||||
printf '::set-output name=NEW_PATCHES::%s\n' $([ -z "$(git diff)" ]; echo $?)
|
||||
nvim -V1 -es -i NONE +'luafile scripts/vimpatch.lua' +q
|
||||
printf 'NEW_PATCHES=%s\n' $([ -z "$(git diff)" ]; echo $?) >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Automatic PR
|
||||
if: ${{ steps.update-version.outputs.NEW_PATCHES != 0 }}
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -73,3 +73,5 @@ tags
|
||||
|
||||
# vim patches
|
||||
/vim-*.patch
|
||||
|
||||
/CMakeUserPresets.json
|
||||
|
@@ -28,6 +28,13 @@ read_globals = {
|
||||
|
||||
globals = {
|
||||
"vim.g",
|
||||
"vim.b",
|
||||
"vim.w",
|
||||
"vim.o",
|
||||
"vim.bo",
|
||||
"vim.wo",
|
||||
"vim.go",
|
||||
"vim.env"
|
||||
}
|
||||
|
||||
exclude_files = {
|
||||
|
7
.mailmap
7
.mailmap
@@ -8,13 +8,15 @@ Anmol Sethi <hi@nhooyr.io> <nhooyr@users.noreply.github.com>
|
||||
BK1603 <chouhan.shreyansh2702@gmail.com> Shreyansh Chouhan
|
||||
Billy Su <g4691821@gmail.com> Billy SU
|
||||
Billy Vong <billyvg@gmail.com> <billyvg@users.noreply.github.com>
|
||||
Björn Linse <bjorn.linse@gmail.com> bfredl
|
||||
bfredl <bjorn.linse@gmail.com>
|
||||
Carlos Hernandez <carlos@techbyte.ca> <hurricanehrndz@users.noreply.github.com>
|
||||
Chris Kipp <ckipp@pm.me> ckipp01
|
||||
Christian Clason <c.clason@uni-graz.at> <christian.clason@uni-due.de>
|
||||
Cédric Barreteau <> <cbarrete@users.noreply.github.com>
|
||||
Dan Aloni <alonid@gmail.com> <dan@kernelim.com>
|
||||
Daniel Hahler <git@thequod.de> <github@thequod.de>
|
||||
dundargoc <gocdundar@gmail.com> <33953936+dundargoc@users.noreply.github.com>
|
||||
dundargoc <gocdundar@gmail.com> Dundar Goc
|
||||
Eisuke Kawashima <e-kwsm@users.noreply.github.com> E Kawashima
|
||||
ElPiloto <luis.r.piloto@gmail.com> Luis Piloto
|
||||
Eliseo Martínez <eliseomarmol@gmail.com> Eliseo Martínez
|
||||
@@ -52,6 +54,7 @@ Jurica Bradaric <jbradaric@gmail.com> <jbradaric@users.noreply.github.com>
|
||||
Jurica Bradaric <jbradaric@gmail.com> <jurica.bradaric@avl.com>
|
||||
KillTheMule <KillTheMule@users.noreply.github.com> <github@pipsfrank.de>
|
||||
Kwon-Young Choi <kwon-young.choi@hotmail.fr> Kwon-Young
|
||||
Lewis Russell <lewis6991@gmail.com> <me@lewisr.dev>
|
||||
Lucas Hoffmann <l-m-h@web.de> <lucc@posteo.de>
|
||||
Lucas Hoffmann <l-m-h@web.de> <lucc@users.noreply.github.com>
|
||||
Marco Hinz <mh.codebro@gmail.com> <mh.codebro+github@gmail.com>
|
||||
@@ -92,7 +95,7 @@ Steven Sojka <Steven.Sojka@tdameritrade.com> <steelsojka@gmail.com>
|
||||
Steven Sojka <steelsojka@gmail.com> <steelsojka@users.noreply.github.com>
|
||||
TJ DeVries <devries.timothyj@gmail.com> <timothydvrs1234@gmail.com>
|
||||
Thomas Fehér <thomas.feher@yahoo.de> <thomasfeher@web.de>
|
||||
Thomas Vigouroux <tomvig38@gmail.com> <39092278+vigoux@users.noreply.github.com>
|
||||
Thomas Vigouroux <thomas.vigouroux@protonmail.com> <tomvig38@gmail.com> <39092278+vigoux@users.noreply.github.com>
|
||||
Utkarsh Maheshwari <UtkarshME96@gmail.com> UTkarsh Maheshwari
|
||||
Utkarsh Maheshwari <utkarshme96@gmail.com> <UtkarshME96@gmail.com>
|
||||
VVKot <volodymyr.kot.ua@gmail.com> Volodymyr Kot
|
||||
|
6
.stylua.toml
Normal file
6
.stylua.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
column_width = 100
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferSingle"
|
||||
call_parentheses = "Always"
|
3
.styluaignore
Normal file
3
.styluaignore
Normal file
@@ -0,0 +1,3 @@
|
||||
/scripts
|
||||
/src
|
||||
/test
|
220
.travis.yml
220
.travis.yml
@@ -1,220 +0,0 @@
|
||||
dist: bionic
|
||||
|
||||
language: c
|
||||
|
||||
env:
|
||||
global:
|
||||
# Encrypted environment variables, see
|
||||
# http://docs.travis-ci.com/user/encryption-keys/
|
||||
#
|
||||
# SNAP_SECRET_KEY: generated by:
|
||||
# travis encrypt SNAP_SECRET_KEY=xx --add
|
||||
# https://github.com/neovim/neovim/pull/11428
|
||||
# snapcraft key expires after 1 year. Steps to refresh it:
|
||||
# 1. snapcraft enable-ci travis --refresh
|
||||
# 2. mv .snapcraft/travis_snapcraft.cfg ci/snap/travis_snapcraft.cfg
|
||||
# 3. Copy after_success command to ci/snap/deploy.sh from .travis.yml
|
||||
# 4. Undo changes to .travis.yml
|
||||
- secure: hd0qn2u8ABbJg5Bx4pBRcUQbKYFmcSHoecyHIPTCnGJT+NI41Bvm/IkN/N5DhBF+LbD3Q2nmR/dzI5H/dqS7RxMFvEx1DuFLendFHHX3MYf0AuKpXYY3gwgMTmqx8p/v6srlU7RBGWNGzHCWqksAem+EIWCe3I7WvfdKo1/DV/Y=
|
||||
|
||||
- PATH="$HOME/.local/bin:$PATH"
|
||||
# Set "false" to force rebuild of third-party dependencies.
|
||||
- CACHE_ENABLE=true
|
||||
# Build directory for Neovim.
|
||||
- BUILD_DIR="$TRAVIS_BUILD_DIR/build"
|
||||
# Build directory for third-party dependencies.
|
||||
- DEPS_BUILD_DIR="$HOME/nvim-deps"
|
||||
# Install directory for Neovim.
|
||||
- INSTALL_PREFIX="$HOME/nvim-install"
|
||||
# Log directory for Clang sanitizers and Valgrind.
|
||||
- LOG_DIR="$BUILD_DIR/log"
|
||||
# Nvim log file.
|
||||
- NVIM_LOG_FILE="$BUILD_DIR/.nvimlog"
|
||||
# Default CMake flags.
|
||||
- CMAKE_FLAGS="-DCI_BUILD=ON
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX
|
||||
-DBUSTED_OUTPUT_TYPE=nvim
|
||||
-DDEPS_PREFIX=$DEPS_BUILD_DIR/usr
|
||||
-DMIN_LOG_LEVEL=3"
|
||||
- DEPS_CMAKE_FLAGS="-DUSE_BUNDLED_GPERF=OFF"
|
||||
# Environment variables for Clang sanitizers.
|
||||
- ASAN_OPTIONS="detect_leaks=1:check_initialization_order=1:log_path=$LOG_DIR/asan"
|
||||
- TSAN_OPTIONS="log_path=$LOG_DIR/tsan"
|
||||
- UBSAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/ubsan"
|
||||
# Environment variables for Valgrind.
|
||||
- VALGRIND_LOG="$LOG_DIR/valgrind-%p.log"
|
||||
- CACHE_NVIM_DEPS_DIR="$HOME/.cache/nvim-deps"
|
||||
# If this file exists, the cache is valid (compile was successful).
|
||||
- CACHE_MARKER="$CACHE_NVIM_DEPS_DIR/.ci_cache_marker"
|
||||
# default target name for functional tests
|
||||
- FUNCTIONALTEST=functionaltest
|
||||
- CI_TARGET=tests
|
||||
# Environment variables for ccache
|
||||
- CCACHE_COMPRESS=1
|
||||
- CCACHE_SLOPPINESS=time_macros,file_macro
|
||||
- CCACHE_BASEDIR="$TRAVIS_BUILD_DIR"
|
||||
- CI_OS_NAME="$TRAVIS_OS_NAME"
|
||||
|
||||
anchors:
|
||||
envs: &common-job-env
|
||||
# Do not fall back to cache for "master" for PR on "release" branch:
|
||||
# adds the target branch to the cache key.
|
||||
FOR_TRAVIS_CACHE=v1-$TRAVIS_BRANCH
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages: &common-apt-packages
|
||||
- apport
|
||||
- autoconf
|
||||
- automake
|
||||
- build-essential
|
||||
- clang
|
||||
- cmake
|
||||
- cpanminus
|
||||
- cscope
|
||||
- gcc-multilib
|
||||
- gdb
|
||||
- gperf
|
||||
- language-pack-tr
|
||||
- libtool-bin
|
||||
- locales
|
||||
- ninja-build
|
||||
- pkg-config
|
||||
- unzip
|
||||
- valgrind
|
||||
- xclip
|
||||
homebrew:
|
||||
update: true
|
||||
casks:
|
||||
- powershell
|
||||
packages:
|
||||
- ccache
|
||||
- cpanminus
|
||||
- ninja
|
||||
- perl
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- name: gcc-coverage (gcc 9)
|
||||
os: linux
|
||||
compiler: gcc-9
|
||||
env:
|
||||
- GCOV=gcov-9
|
||||
- CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_GCOV=ON"
|
||||
- GCOV_ERROR_FILE="/tmp/libgcov-errors.log"
|
||||
- USE_LUACOV=1
|
||||
- BUSTED_ARGS="--coverage"
|
||||
- *common-job-env
|
||||
addons:
|
||||
snaps:
|
||||
- name: powershell
|
||||
confinement: classic
|
||||
apt:
|
||||
sources:
|
||||
- sourceline: 'ppa:ubuntu-toolchain-r/test'
|
||||
packages:
|
||||
- *common-apt-packages
|
||||
- gcc-9
|
||||
- name: gcc-functionaltest-lua
|
||||
os: linux
|
||||
compiler: gcc
|
||||
env:
|
||||
- FUNCTIONALTEST=functionaltest-lua
|
||||
- CMAKE_FLAGS="$CMAKE_FLAGS -DPREFER_LUA=ON"
|
||||
- DEPS_CMAKE_FLAGS="$DEPS_CMAKE_FLAGS -DUSE_BUNDLED_LUAJIT=OFF"
|
||||
- *common-job-env
|
||||
- name: gcc-32bit
|
||||
os: linux
|
||||
# Travis creates a cache per compiler. Set a different value here to
|
||||
# store 32-bit dependencies in a separate cache.
|
||||
compiler: gcc
|
||||
env:
|
||||
- BUILD_32BIT=ON
|
||||
- CMAKE_FLAGS="$CMAKE_FLAGS -m32 -DCMAKE_TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/cmake/i386-linux-gnu.toolchain.cmake"
|
||||
- DEPS_CMAKE_FLAGS="$DEPS_CMAKE_FLAGS -m32 -DCMAKE_TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/cmake/i386-linux-gnu.toolchain.cmake"
|
||||
- *common-job-env
|
||||
- name: big-endian
|
||||
os: linux
|
||||
arch: s390x
|
||||
compiler: gcc
|
||||
env:
|
||||
- FUNCTIONALTEST=functionaltest-lua
|
||||
- CMAKE_FLAGS="$CMAKE_FLAGS -DPREFER_LUA=ON"
|
||||
- DEPS_CMAKE_FLAGS="$DEPS_CMAKE_FLAGS -DUSE_BUNDLED_LUAJIT=OFF"
|
||||
- *common-job-env
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- *common-apt-packages
|
||||
- gettext
|
||||
- python-pip
|
||||
- python3-pip
|
||||
- python-setuptools
|
||||
- python3-setuptools
|
||||
- python-dev
|
||||
- python3-dev
|
||||
- if: type != pull_request
|
||||
name: snap
|
||||
os: linux
|
||||
env:
|
||||
- LC_ALL: C.UTF-8
|
||||
- LANG: C.UTF-8
|
||||
- SNAPCRAFT_ENABLE_SILENT_REPORT: y
|
||||
- SNAPCRAFT_ENABLE_DEVELOPER_DEBUG: y
|
||||
- SNAPCRAFT_BUILD_ENVIRONMENT: lxd
|
||||
addons:
|
||||
snaps:
|
||||
- name: snapcraft
|
||||
channel: stable
|
||||
classic: true
|
||||
- name: http
|
||||
- name: transfer
|
||||
- name: lxd
|
||||
channel: stable
|
||||
# Override default before_install, before_cache.
|
||||
before_install: /bin/true
|
||||
before_cache: /bin/true
|
||||
install: ci/snap/install.sh
|
||||
before_script: echo "Building snap..."
|
||||
script: ci/snap/script.sh
|
||||
after_success: ci/snap/after_success.sh
|
||||
deploy:
|
||||
skip_cleanup: true
|
||||
provider: script
|
||||
script: ci/snap/deploy.sh
|
||||
on:
|
||||
branch: master
|
||||
allow_failures:
|
||||
- env:
|
||||
- LC_ALL: C.UTF-8
|
||||
- LANG: C.UTF-8
|
||||
- SNAPCRAFT_ENABLE_SILENT_REPORT: y
|
||||
- SNAPCRAFT_ENABLE_DEVELOPER_DEBUG: y
|
||||
- SNAPCRAFT_BUILD_ENVIRONMENT: lxd
|
||||
fast_finish: true
|
||||
|
||||
before_install: ci/before_install.sh
|
||||
install: ci/install.sh
|
||||
before_script: ci/before_script.sh
|
||||
script: ci/script.sh
|
||||
before_cache: ci/before_cache.sh
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- /^release-\d+\.\d+$/
|
||||
|
||||
cache:
|
||||
apt: true
|
||||
ccache: true
|
||||
directories:
|
||||
- "$CACHE_NVIM_DEPS_DIR"
|
||||
|
||||
git:
|
||||
quiet: true
|
||||
|
||||
notifications:
|
||||
webhooks:
|
||||
urls:
|
||||
- https://webhooks.gitter.im/e/b5c38c99f9677aa3d031
|
243
CMakeLists.txt
243
CMakeLists.txt
@@ -1,17 +1,12 @@
|
||||
# CMAKE REFERENCE
|
||||
# intro: https://codingnest.com/basic-cmake/
|
||||
# best practices (3.0+): https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1
|
||||
# pitfalls: https://izzys.casa/2019/02/everything-you-never-wanted-to-know-about-cmake/
|
||||
|
||||
# Version should match the tested CMAKE_URL in .github/workflows/ci.yml.
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(nvim C)
|
||||
|
||||
if(POLICY CMP0065)
|
||||
cmake_policy(SET CMP0065 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0060)
|
||||
cmake_policy(SET CMP0060 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0075)
|
||||
cmake_policy(SET CMP0075 NEW)
|
||||
endif()
|
||||
@@ -21,6 +16,9 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||
|
||||
# We don't support building in-tree.
|
||||
include(PreventInTreeBuilds)
|
||||
include(Util)
|
||||
|
||||
set(TOUCHES_DIR ${PROJECT_BINARY_DIR}/touches)
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
@@ -30,7 +28,7 @@ if(DEFINED ENV{DEPS_BUILD_DIR})
|
||||
# pkg-config 29.2 has a bug on OpenBSD which causes it to drop any paths that
|
||||
# *contain* system include paths. To avoid this, we prefix what would be
|
||||
# "/usr/include" as "/_usr/include".
|
||||
# This check is also performed in the third-party/CMakeLists.txt and in the
|
||||
# This check is also performed in the cmake.deps/CMakeLists.txt and in the
|
||||
# else clause following here.
|
||||
# https://github.com/neovim/neovim/pull/14745#issuecomment-860201794
|
||||
set(DEPS_PREFIX "$ENV{DEPS_BUILD_DIR}/_usr" CACHE PATH "Path prefix for finding dependencies")
|
||||
@@ -62,7 +60,7 @@ else()
|
||||
-DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
|
||||
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
|
||||
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
|
||||
${PROJECT_SOURCE_DIR}/third-party
|
||||
${PROJECT_SOURCE_DIR}/cmake.deps
|
||||
WORKING_DIRECTORY ${DEPS_BUILD_DIR})
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build ${DEPS_BUILD_DIR}
|
||||
@@ -71,13 +69,8 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_CROSSCOMPILING AND NOT UNIX)
|
||||
list(INSERT CMAKE_FIND_ROOT_PATH 0 ${DEPS_PREFIX})
|
||||
list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX}/../host/bin)
|
||||
else()
|
||||
list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX})
|
||||
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${DEPS_PREFIX}/lib/pkgconfig")
|
||||
endif()
|
||||
list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX})
|
||||
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${DEPS_PREFIX}/lib/pkgconfig")
|
||||
|
||||
# used for check_c_compiler_flag
|
||||
include(CheckCCompilerFlag)
|
||||
@@ -91,10 +84,20 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
# them be included as one of the first places to look for dependencies.
|
||||
list(APPEND CMAKE_PREFIX_PATH /sw /opt/local)
|
||||
|
||||
# If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET),
|
||||
# fall back to local system version. Needs to be done both here and in cmake.deps.
|
||||
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||
execute_process(COMMAND sw_vers -productVersion
|
||||
OUTPUT_VARIABLE MACOS_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "${MACOS_VERSION}")
|
||||
endif()
|
||||
message("Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
|
||||
# Work around some old, broken detection by CMake for knowing when to use the
|
||||
# isystem flag. Apple's compilers have supported this for quite some time
|
||||
# now.
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
|
||||
set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
|
||||
endif()
|
||||
endif()
|
||||
@@ -119,32 +122,22 @@ endif()
|
||||
|
||||
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
# Build type.
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "CMAKE_BUILD_TYPE not specified, default is 'Debug'")
|
||||
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build" FORCE)
|
||||
else()
|
||||
message(STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
|
||||
endif()
|
||||
set_default_buildtype()
|
||||
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
set(DEBUG 1)
|
||||
else()
|
||||
set(DEBUG 0)
|
||||
endif()
|
||||
# Set available build types for CMake GUIs.
|
||||
# Other build types can still be set by -DCMAKE_BUILD_TYPE=...
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY
|
||||
STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
||||
|
||||
# If not in a git repo (e.g., a tarball) these tokens define the complete
|
||||
# version string, else they are combined with the result of `git describe`.
|
||||
set(NVIM_VERSION_MAJOR 0)
|
||||
set(NVIM_VERSION_MINOR 7)
|
||||
set(NVIM_VERSION_PATCH 0)
|
||||
set(NVIM_VERSION_PRERELEASE "") # for package maintainers
|
||||
set(NVIM_VERSION_MINOR 8)
|
||||
set(NVIM_VERSION_PATCH 4)
|
||||
set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers
|
||||
|
||||
# API level
|
||||
set(NVIM_API_LEVEL 9) # Bump this after any API change.
|
||||
set(NVIM_API_LEVEL 10) # Bump this after any API change.
|
||||
set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change.
|
||||
set(NVIM_API_PRERELEASE false)
|
||||
|
||||
@@ -178,7 +171,7 @@ if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3")
|
||||
string(REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
||||
endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
|
||||
check_c_compiler_flag(-Og HAS_OG_FLAG)
|
||||
else()
|
||||
set(HAS_OG_FLAG 0)
|
||||
@@ -276,11 +269,12 @@ int main(void)
|
||||
}
|
||||
" HAVE_BUILTIN_ADD_OVERFLOW)
|
||||
|
||||
option(ENABLE_COMPILER_SUGGESTIONS "Enable -Wsuggest compiler warnings" OFF)
|
||||
if(MSVC)
|
||||
# XXX: /W4 gives too many warnings. #3241
|
||||
add_compile_options(/W3)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||
add_definitions(-DWIN32)
|
||||
add_definitions(-DMSWIN)
|
||||
else()
|
||||
add_compile_options(-Wall -Wextra -pedantic -Wno-unused-parameter
|
||||
-Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion
|
||||
@@ -294,25 +288,27 @@ else()
|
||||
add_compile_options(-Wimplicit-fallthrough)
|
||||
endif()
|
||||
|
||||
# Clang doesn't have -Wsuggest-attribute so check for each one.
|
||||
check_c_compiler_flag(-Wsuggest-attribute=pure HAVE_WSUGGEST_ATTRIBUTE_PURE)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_PURE)
|
||||
add_compile_options(-Wsuggest-attribute=pure)
|
||||
endif()
|
||||
if(ENABLE_COMPILER_SUGGESTIONS)
|
||||
# Clang doesn't have -Wsuggest-attribute so check for each one.
|
||||
check_c_compiler_flag(-Wsuggest-attribute=pure HAVE_WSUGGEST_ATTRIBUTE_PURE)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_PURE)
|
||||
add_compile_options(-Wsuggest-attribute=pure)
|
||||
endif()
|
||||
|
||||
check_c_compiler_flag(-Wsuggest-attribute=const HAVE_WSUGGEST_ATTRIBUTE_CONST)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_CONST)
|
||||
add_compile_options(-Wsuggest-attribute=const)
|
||||
endif()
|
||||
check_c_compiler_flag(-Wsuggest-attribute=const HAVE_WSUGGEST_ATTRIBUTE_CONST)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_CONST)
|
||||
add_compile_options(-Wsuggest-attribute=const)
|
||||
endif()
|
||||
|
||||
check_c_compiler_flag(-Wsuggest-attribute=malloc HAVE_WSUGGEST_ATTRIBUTE_MALLOC)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_MALLOC)
|
||||
add_compile_options(-Wsuggest-attribute=malloc)
|
||||
endif()
|
||||
check_c_compiler_flag(-Wsuggest-attribute=malloc HAVE_WSUGGEST_ATTRIBUTE_MALLOC)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_MALLOC)
|
||||
add_compile_options(-Wsuggest-attribute=malloc)
|
||||
endif()
|
||||
|
||||
check_c_compiler_flag(-Wsuggest-attribute=cold HAVE_WSUGGEST_ATTRIBUTE_COLD)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_COLD)
|
||||
add_compile_options(-Wsuggest-attribute=cold)
|
||||
check_c_compiler_flag(-Wsuggest-attribute=cold HAVE_WSUGGEST_ATTRIBUTE_COLD)
|
||||
if(HAVE_WSUGGEST_ATTRIBUTE_COLD)
|
||||
add_compile_options(-Wsuggest-attribute=cold)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# On FreeBSD 64 math.h uses unguarded C11 extension, which taints clang
|
||||
@@ -325,6 +321,7 @@ endif()
|
||||
if(MINGW)
|
||||
# Use POSIX compatible stdio in Mingw
|
||||
add_definitions(-D__USE_MINGW_ANSI_STDIO)
|
||||
add_definitions(-DMSWIN)
|
||||
endif()
|
||||
if(WIN32)
|
||||
# Windows Vista is the minimum supported version
|
||||
@@ -370,7 +367,7 @@ option(CI_BUILD "CI, extra flags will be set" OFF)
|
||||
if(CI_BUILD)
|
||||
message(STATUS "CI build enabled")
|
||||
add_compile_options(-Werror)
|
||||
if(DEFINED ENV{BUILD_32BIT})
|
||||
if(DEFINED ENV{BUILD_UCHAR})
|
||||
# Get some test coverage for unsigned char
|
||||
add_compile_options(-funsigned-char)
|
||||
endif()
|
||||
@@ -405,7 +402,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT P
|
||||
"${CMAKE_MODULE_LINKER_FLAGS} -image_base 100000000")
|
||||
endif()
|
||||
|
||||
include_directories("${PROJECT_BINARY_DIR}/config")
|
||||
include_directories("${PROJECT_BINARY_DIR}/cmake.config")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/src")
|
||||
|
||||
find_package(LibUV 1.28.0 REQUIRED)
|
||||
@@ -449,11 +446,11 @@ if(TS_HAS_SET_ALLOCATOR)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNVIM_TS_HAS_SET_ALLOCATOR")
|
||||
endif()
|
||||
|
||||
# Note: The test lib requires LuaJIT; it will be skipped if LuaJIT is missing.
|
||||
# The unit test lib requires LuaJIT; it will be skipped if LuaJIT is missing.
|
||||
option(PREFER_LUA "Prefer Lua over LuaJIT in the nvim executable." OFF)
|
||||
|
||||
if(PREFER_LUA)
|
||||
find_package(Lua 5.1 REQUIRED)
|
||||
find_package(Lua 5.1 EXACT REQUIRED)
|
||||
set(LUA_PREFERRED_INCLUDE_DIRS ${LUA_INCLUDE_DIR})
|
||||
set(LUA_PREFERRED_LIBRARIES ${LUA_LIBRARIES})
|
||||
# Passive (not REQUIRED): if LUAJIT_FOUND is not set, nvim-test is skipped.
|
||||
@@ -493,6 +490,7 @@ if(FEAT_TUI)
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
unibi_str_from_var(unibi_var_from_str(\"\"));
|
||||
return unibi_num_from_var(unibi_var_from_num(0));
|
||||
}
|
||||
" UNIBI_HAS_VAR_FROM)
|
||||
@@ -502,18 +500,13 @@ if(FEAT_TUI)
|
||||
add_definitions(-DNVIM_UNIBI_HAS_VAR_FROM)
|
||||
endif()
|
||||
|
||||
find_package(LibTermkey 0.18 REQUIRED)
|
||||
find_package(LibTermkey 0.22 REQUIRED)
|
||||
include_directories(SYSTEM ${LIBTERMKEY_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
find_package(LIBVTERM 0.1 REQUIRED)
|
||||
find_package(LIBVTERM 0.3 REQUIRED)
|
||||
include_directories(SYSTEM ${LIBVTERM_INCLUDE_DIRS})
|
||||
|
||||
if(WIN32)
|
||||
find_package(Winpty 0.4.3 REQUIRED)
|
||||
include_directories(SYSTEM ${WINPTY_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
|
||||
option(CLANG_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
|
||||
option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
|
||||
@@ -583,11 +576,7 @@ endif()
|
||||
|
||||
message(STATUS "Using Lua interpreter: ${LUA_PRG}")
|
||||
|
||||
if(DEBUG)
|
||||
option(COMPILE_LUA "Pre-compile Lua sources into bytecode (for sources that are included in the binary)" OFF)
|
||||
else()
|
||||
option(COMPILE_LUA "Pre-compile Lua sources into bytecode (for sources that are included in the binary)" ON)
|
||||
endif()
|
||||
option(COMPILE_LUA "Pre-compile Lua sources into bytecode (for sources that are included in the binary)" ON)
|
||||
|
||||
if(COMPILE_LUA AND NOT WIN32)
|
||||
if(PREFER_LUA)
|
||||
@@ -617,17 +606,78 @@ if(NOT BUSTED_OUTPUT_TYPE)
|
||||
set(BUSTED_OUTPUT_TYPE "nvim")
|
||||
endif()
|
||||
|
||||
#
|
||||
# Lint
|
||||
#
|
||||
find_program(LUACHECK_PRG luacheck)
|
||||
find_program(STYLUA_PRG stylua)
|
||||
find_program(FLAKE8_PRG flake8)
|
||||
find_program(GPERF_PRG gperf)
|
||||
find_program(UNCRUSTIFY_PRG uncrustify)
|
||||
find_program(SHELLCHECK_PRG shellcheck)
|
||||
|
||||
add_glob_targets(
|
||||
REQUIRED
|
||||
TARGET lintlua-luacheck
|
||||
COMMAND ${LUACHECK_PRG}
|
||||
FLAGS -q
|
||||
GLOB_DIRS runtime/ scripts/ src/ test/
|
||||
GLOB_PAT *.lua
|
||||
TOUCH_STRATEGY SINGLE
|
||||
)
|
||||
|
||||
add_glob_targets(
|
||||
TARGET lintlua-stylua
|
||||
COMMAND ${STYLUA_PRG}
|
||||
FLAGS --color=always --check
|
||||
GLOB_DIRS runtime/
|
||||
GLOB_PAT *.lua
|
||||
TOUCH_STRATEGY SINGLE
|
||||
)
|
||||
|
||||
add_custom_target(lintlua)
|
||||
add_dependencies(lintlua lintlua-luacheck lintlua-stylua)
|
||||
|
||||
include(InstallHelpers)
|
||||
add_glob_targets(
|
||||
TARGET lintpy
|
||||
COMMAND ${FLAKE8_PRG}
|
||||
FLAGS --max-line-length 100
|
||||
GLOB_DIRS contrib scripts src test
|
||||
GLOB_PAT *.py
|
||||
TOUCH_STRATEGY SINGLE
|
||||
)
|
||||
|
||||
add_glob_targets(
|
||||
TARGET lintsh
|
||||
COMMAND ${SHELLCHECK_PRG}
|
||||
FILES scripts/vim-patch.sh
|
||||
TOUCH_STRATEGY SINGLE
|
||||
)
|
||||
|
||||
add_custom_target(lintcommit
|
||||
COMMAND ${PROJECT_BINARY_DIR}/bin/nvim -u NONE -es -c [[lua require('scripts.lintcommit').main({trace=false})]]
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
VERBATIM)
|
||||
add_dependencies(lintcommit nvim)
|
||||
|
||||
add_custom_target(lint)
|
||||
add_dependencies(lint check-single-includes lintc lintlua lintpy lintsh lintcommit lintuncrustify)
|
||||
|
||||
#
|
||||
# Format
|
||||
#
|
||||
add_custom_target(formatlua
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-D FORMAT_PRG=${STYLUA_PRG}
|
||||
-D LANG=lua
|
||||
-P ${PROJECT_SOURCE_DIR}/cmake/Format.cmake
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
|
||||
add_custom_target(format)
|
||||
add_dependencies(format formatc formatlua)
|
||||
|
||||
file(GLOB MANPAGES
|
||||
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
man/nvim.1)
|
||||
install_helper(
|
||||
FILES ${MANPAGES}
|
||||
FILES ${CMAKE_SOURCE_DIR}/src/man/nvim.1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||
|
||||
#
|
||||
@@ -637,7 +687,7 @@ install_helper(
|
||||
add_subdirectory(src/nvim)
|
||||
get_directory_property(NVIM_VERSION_CFLAGS DIRECTORY src/nvim DEFINITION NVIM_VERSION_CFLAGS)
|
||||
add_subdirectory(test/includes)
|
||||
add_subdirectory(config)
|
||||
add_subdirectory(cmake.config)
|
||||
add_subdirectory(test/functional/fixtures) # compile test programs
|
||||
add_subdirectory(runtime)
|
||||
get_directory_property(GENERATED_HELP_TAGS DIRECTORY runtime DEFINITION GENERATED_HELP_TAGS)
|
||||
@@ -660,20 +710,9 @@ if(BUSTED_PRG)
|
||||
list(APPEND TEST_TARGET_ARGS "USES_TERMINAL")
|
||||
|
||||
set(UNITTEST_PREREQS nvim-test unittest-headers)
|
||||
set(FUNCTIONALTEST_PREREQS nvim printenv-test printargs-test shell-test streams-test tty-test ${GENERATED_HELP_TAGS})
|
||||
set(FUNCTIONALTEST_PREREQS nvim printenv-test printargs-test shell-test pwsh-test streams-test tty-test ${GENERATED_HELP_TAGS})
|
||||
set(BENCHMARK_PREREQS nvim tty-test)
|
||||
|
||||
# Useful for automated build systems, if they want to manually run the tests.
|
||||
add_custom_target(unittest-prereqs
|
||||
DEPENDS ${UNITTEST_PREREQS})
|
||||
set_target_properties(unittest-prereqs PROPERTIES FOLDER test)
|
||||
|
||||
add_custom_target(functionaltest-prereqs
|
||||
DEPENDS ${FUNCTIONALTEST_PREREQS})
|
||||
|
||||
add_custom_target(benchmark-prereqs
|
||||
DEPENDS ${BENCHMARK_PREREQS})
|
||||
|
||||
check_lua_module(${LUA_PRG} "ffi" LUA_HAS_FFI)
|
||||
if(LUA_HAS_FFI)
|
||||
add_custom_target(unittest
|
||||
@@ -699,11 +738,11 @@ if(BUSTED_PRG)
|
||||
set(TEST_LIBNVIM_PATH "")
|
||||
endif()
|
||||
configure_file(
|
||||
${CMAKE_SOURCE_DIR}/test/config/paths.lua.in
|
||||
${CMAKE_BINARY_DIR}/test/config/paths.lua.gen)
|
||||
${CMAKE_SOURCE_DIR}/test/cmakeconfig/paths.lua.in
|
||||
${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua.gen)
|
||||
file(GENERATE
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/test/config/paths.lua
|
||||
INPUT ${CMAKE_BINARY_DIR}/test/config/paths.lua.gen)
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua
|
||||
INPUT ${CMAKE_BINARY_DIR}/test/cmakeconfig/paths.lua.gen)
|
||||
|
||||
add_custom_target(functionaltest
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
@@ -718,8 +757,7 @@ if(BUSTED_PRG)
|
||||
-P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
|
||||
DEPENDS ${FUNCTIONALTEST_PREREQS}
|
||||
${TEST_TARGET_ARGS})
|
||||
set_target_properties(functionaltest functionaltest-prereqs
|
||||
PROPERTIES FOLDER test)
|
||||
set_target_properties(functionaltest PROPERTIES FOLDER test)
|
||||
|
||||
add_custom_target(benchmark
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
@@ -734,7 +772,7 @@ if(BUSTED_PRG)
|
||||
-P ${PROJECT_SOURCE_DIR}/cmake/RunTests.cmake
|
||||
DEPENDS ${BENCHMARK_PREREQS}
|
||||
${TEST_TARGET_ARGS})
|
||||
set_target_properties(benchmark benchmark-prereqs PROPERTIES FOLDER test)
|
||||
set_target_properties(benchmark PROPERTIES FOLDER test)
|
||||
endif()
|
||||
|
||||
if(BUSTED_LUA_PRG)
|
||||
@@ -754,28 +792,9 @@ if(BUSTED_LUA_PRG)
|
||||
set_target_properties(functionaltest-lua PROPERTIES FOLDER test)
|
||||
endif()
|
||||
|
||||
if(LUACHECK_PRG)
|
||||
add_custom_target(lualint
|
||||
COMMAND ${LUACHECK_PRG} -q runtime/ scripts/ src/ test/
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
else()
|
||||
add_custom_target(lualint false
|
||||
COMMENT "lualint: LUACHECK_PRG not defined")
|
||||
endif()
|
||||
|
||||
|
||||
#add uninstall target
|
||||
if(NOT TARGET uninstall)
|
||||
configure_file(
|
||||
"cmake/UninstallHelper.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/UninstallHelper.cmake"
|
||||
IMMEDIATE @ONLY)
|
||||
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/UninstallHelper.cmake)
|
||||
endif()
|
||||
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/UninstallHelper.cmake)
|
||||
|
||||
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
add_subdirectory(packaging)
|
||||
add_subdirectory(cmake.packaging)
|
||||
endif()
|
||||
|
95
CMakePresets.json
Normal file
95
CMakePresets.json
Normal file
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"version": 3,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "base",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"hidden": true
|
||||
},
|
||||
{
|
||||
"name": "default",
|
||||
"displayName": "RelWithDebInfo",
|
||||
"description": "Enables optimizations (-Og or -O2) with debug information",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
||||
},
|
||||
"inherits": [
|
||||
"base"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "debug",
|
||||
"displayName": "Debug",
|
||||
"description": "Disables optimizations (-O0), enables debug information",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug"
|
||||
},
|
||||
"inherits": [
|
||||
"base"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "release",
|
||||
"displayName": "Release",
|
||||
"description": "Same as RelWithDebInfo, but disables debug information",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
},
|
||||
"inherits": [
|
||||
"base"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "windows-default",
|
||||
"displayName": "Windows x64 RelWithDebInfo",
|
||||
"description": "Sets Ninja generator, enables optimizations with debug information for x64",
|
||||
"generator": "Ninja",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
||||
},
|
||||
"architecture": {
|
||||
"value": "x64",
|
||||
"strategy": "external"
|
||||
},
|
||||
"vendor": {
|
||||
"microsoft.com/VisualStudioSettings/CMake/1.0": {
|
||||
"hostOS": [
|
||||
"Windows"
|
||||
]
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"type": "equals",
|
||||
"lhs": "${hostSystemName}",
|
||||
"rhs": "Windows"
|
||||
},
|
||||
"inherits": [
|
||||
"base"
|
||||
]
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "default",
|
||||
"configurePreset": "default"
|
||||
},
|
||||
{
|
||||
"name": "debug",
|
||||
"configurePreset": "debug"
|
||||
},
|
||||
{
|
||||
"name": "release",
|
||||
"configurePreset": "release"
|
||||
},
|
||||
{
|
||||
"name": "windows-default",
|
||||
"configurePreset": "windows-default",
|
||||
"condition": {
|
||||
"type": "equals",
|
||||
"lhs": "${hostSystemName}",
|
||||
"rhs": "Windows"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
151
CONTRIBUTING.md
151
CONTRIBUTING.md
@@ -10,8 +10,11 @@ low-risk/isolated tasks:
|
||||
- Try a [complexity:low] issue.
|
||||
- Fix bugs found by [Clang](#clang-scan-build), [PVS](#pvs-studio) or
|
||||
[Coverity](#coverity).
|
||||
- [Improve documentation][wiki-contribute-help]
|
||||
- [Merge a Vim patch] (familiarity with Vim is *strongly* recommended)
|
||||
- [Improve documentation](#documenting)
|
||||
- [Merge a Vim patch] (requires strong familiarity with Vim)
|
||||
- NOTE: read the above link before sending improvements to "runtime files" (anything in `runtime/`).
|
||||
- Vimscript and documentation files are (mostly) maintained by [Vim](https://github.com/vim/vim), not Nvim.
|
||||
- Lua files are maintained by Nvim.
|
||||
|
||||
Reporting problems
|
||||
------------------
|
||||
@@ -30,9 +33,9 @@ Reporting problems
|
||||
Developer guidelines
|
||||
--------------------
|
||||
|
||||
- Read `:help dev` if you are working on Nvim core.
|
||||
- Read `:help dev-ui` if you are developing a UI.
|
||||
- Read `:help dev-api-client` if you are developing an API client.
|
||||
- Read [:help dev](https://neovim.io/doc/user/develop.html#dev) if you are working on Nvim core.
|
||||
- Read [:help dev-ui](https://neovim.io/doc/user/develop.html#dev-ui) if you are developing a UI.
|
||||
- Read [:help dev-api-client](https://neovim.io/doc/user/develop.html#dev-api-client) if you are developing an API client.
|
||||
- Install `ninja` for faster builds of Nvim.
|
||||
```
|
||||
sudo apt-get install ninja-build
|
||||
@@ -47,21 +50,19 @@ Pull requests (PRs)
|
||||
- Your PR must include [test coverage][run-tests].
|
||||
- Avoid cosmetic changes to unrelated files in the same commit.
|
||||
- Use a [feature branch][git-feature-branch] instead of the master branch.
|
||||
- Use a **rebase workflow** for small PRs.
|
||||
- After addressing review comments, it's fine to rebase and force-push.
|
||||
- Use a **merge workflow** for big, high-risk PRs.
|
||||
- Use a _rebase workflow_ for small PRs.
|
||||
- After addressing review comments, it's fine to force-push.
|
||||
- Use a _merge workflow_ (as opposed to "rebase") for big, high-risk PRs.
|
||||
- Merge `master` into your PR when there are conflicts or when master
|
||||
introduces breaking changes.
|
||||
- Use the `ri` git alias:
|
||||
```
|
||||
[alias]
|
||||
ri = "!sh -c 't=\"${1:-master}\"; s=\"${2:-HEAD}\"; mb=\"$(git merge-base \"$t\" \"$s\")\"; if test \"x$mb\" = x ; then o=\"$t\"; else lm=\"$(git log -n1 --merges \"$t..$s\" --pretty=%H)\"; if test \"x$lm\" = x ; then o=\"$mb\"; else o=\"$lm\"; fi; fi; test $# -gt 0 && shift; test $# -gt 0 && shift; git rebase --interactive \"$o\" \"$@\"'"
|
||||
```
|
||||
This avoids unnecessary rebases yet still allows you to combine related
|
||||
commits, separate monolithic commits, etc.
|
||||
- Do not edit commits that come before the merge commit.
|
||||
- During a squash/fixup, use `exec make -C build unittest` between each
|
||||
pick/edit/reword.
|
||||
|
||||
### Merging to master
|
||||
|
||||
For maintainers: when a PR is ready to merge to master,
|
||||
|
||||
- prefer _Squash Merge_ for "single-commit PRs" (when the PR has only one meaningful commit).
|
||||
- prefer _Merge_ for "multi-commit PRs" (when the PR has multiple meaningful commits).
|
||||
|
||||
### Stages: Draft and Ready for review
|
||||
|
||||
@@ -92,7 +93,7 @@ the VCS/git logs more valuable. The general structure of a commit message is:
|
||||
```
|
||||
|
||||
- Prefix the commit subject with one of these [_types_](https://github.com/commitizen/conventional-commit-types/blob/master/index.json):
|
||||
- `build`, `ci`, `docs`, `feat`, `fix`, `perf`, `refactor`, `revert`, `test`, `vim-patch`, `chore`
|
||||
- `build`, `ci`, `docs`, `feat`, `fix`, `perf`, `refactor`, `revert`, `test`, `vim-patch`, `dist`
|
||||
- You can **ignore this for "fixup" commits** or any commits you expect to be squashed.
|
||||
- Append optional scope to _type_ such as `(lsp)`, `(treesitter)`, `(float)`, …
|
||||
- _Description_ shouldn't start with a capital letter or end in a period.
|
||||
@@ -111,7 +112,7 @@ the VCS/git logs more valuable. The general structure of a commit message is:
|
||||
|
||||
### Automated builds (CI)
|
||||
|
||||
Each pull request must pass the automated builds on [sourcehut] and [GitHub Actions].
|
||||
Each pull request must pass the automated builds on [Cirrus CI] and [GitHub Actions].
|
||||
|
||||
- CI builds are compiled with [`-Werror`][gcc-warnings], so compiler warnings
|
||||
will fail the build.
|
||||
@@ -125,20 +126,7 @@ Each pull request must pass the automated builds on [sourcehut] and [GitHub Acti
|
||||
- The [lint](#lint) build checks modified lines _and their immediate
|
||||
neighbors_, to encourage incrementally updating the legacy style to meet our
|
||||
[style](#style). (See [#3174][3174] for background.)
|
||||
- CI for freebsd and openbsd runs on [sourcehut].
|
||||
- To get a backtrace on freebsd (after connecting via ssh):
|
||||
```sh
|
||||
sudo pkg install tmux # If you want tmux.
|
||||
lldb build/bin/nvim -c nvim.core
|
||||
|
||||
# To get a full backtrace:
|
||||
# 1. Rebuild with debug info.
|
||||
rm -rf nvim.core build
|
||||
gmake CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_EXTRA_FLAGS="-DCI_BUILD=ON -DMIN_LOG_LEVEL=3" nvim
|
||||
# 2. Run the failing test to generate a new core file.
|
||||
TEST_FILE=test/functional/foo.lua gmake functionaltest
|
||||
lldb build/bin/nvim -c nvim.core
|
||||
```
|
||||
- CI for FreeBSD runs on [Cirrus CI].
|
||||
|
||||
### Clang scan-build
|
||||
|
||||
@@ -218,6 +206,11 @@ You can lint a single file (but this will _not_ exclude legacy errors):
|
||||
|
||||
### Style
|
||||
|
||||
- You can format files by using:
|
||||
```
|
||||
make format
|
||||
```
|
||||
This will format changed Lua and C files with all appropriate flags set.
|
||||
- Style rules are (mostly) defined by `src/uncrustify.cfg` which tries to match
|
||||
the [style-guide]. To use the Nvim `gq` command with `uncrustify`:
|
||||
```
|
||||
@@ -240,15 +233,61 @@ You can lint a single file (but this will _not_ exclude legacy errors):
|
||||
```
|
||||
git config blame.ignoreRevsFile .git-blame-ignore-revs
|
||||
```
|
||||
- Use **[universal-ctags](https://github.com/universal-ctags/ctags).**
|
||||
("Exuberant ctags", the typical `ctags` binary provided by your distro, is
|
||||
unmaintained and won't recognize many function signatures in Neovim source.)
|
||||
|
||||
- Recommendation is to use **[clangd]**.
|
||||
Can use the maintained config in [nvim-lspconfig/clangd].
|
||||
- Explore the source code [on the web](https://sourcegraph.com/github.com/neovim/neovim).
|
||||
- If using [lua-language-server][], symlink `contrib/luarc.json` into the
|
||||
- If using [lua-language-server], symlink `contrib/luarc.json` into the
|
||||
project root:
|
||||
|
||||
$ ln -s contrib/luarc.json .luarc.json
|
||||
|
||||
### Includes
|
||||
|
||||
For managing includes in C files, use [include-what-you-use].
|
||||
|
||||
- [Install include-what-you-use][include-what-you-use-install]
|
||||
- Run with:
|
||||
```
|
||||
make CMAKE_EXTRA_FLAGS=-DCMAKE_C_INCLUDE_WHAT_YOU_USE=include-what-you-use | tee iwyu.txt
|
||||
```
|
||||
|
||||
See [#549][549] for more details.
|
||||
|
||||
Documenting
|
||||
-----------
|
||||
|
||||
Many parts of the `:help` documentation are autogenerated from C or Lua docstrings using the `./scripts/gen_vimdoc.py` script.
|
||||
You can filter the regeneration based on the target (api, lua, or lsp), or the file you changed, that need a doc refresh using `./scripts/gen_vimdoc.py -t <target>`.
|
||||
|
||||
## Lua docstrings
|
||||
|
||||
Lua documentation uses a subset of [EmmyLua] annotations. A rough outline of a function documentation is
|
||||
|
||||
```lua
|
||||
--- {Brief}
|
||||
---
|
||||
--- {Long explanation}
|
||||
---
|
||||
---@param arg1 type {description}
|
||||
---@param arg2 type {description}
|
||||
{...}
|
||||
---
|
||||
---@return type {description}
|
||||
```
|
||||
|
||||
If possible, always add type information (`table`, `string`, `number`, ...). Multiple valid types are separated by a bar (`string|table`). Indicate optional parameters via `type|nil`.
|
||||
|
||||
If a function in your Lua module should not be documented (e.g. internal function or local function), you should set the doc comment to:
|
||||
|
||||
```
|
||||
---@private
|
||||
```
|
||||
|
||||
Mark functions that are deprecated as
|
||||
```
|
||||
---@deprecated
|
||||
```
|
||||
|
||||
Reviewing
|
||||
---------
|
||||
@@ -266,30 +305,36 @@ commits in the feature branch which aren't in the `master` branch; `-p`
|
||||
shows each commit's diff. To show the whole surrounding function of a change
|
||||
as context, use the `-W` argument as well.
|
||||
|
||||
[549]: https://github.com/neovim/neovim/issues/549
|
||||
[1820]: https://github.com/neovim/neovim/pull/1820
|
||||
[3174]: https://github.com/neovim/neovim/issues/3174
|
||||
[ASan]: http://clang.llvm.org/docs/AddressSanitizer.html
|
||||
[Cirrus CI]: https://cirrus-ci.com/github/neovim/neovim
|
||||
[Clang report]: https://neovim.io/doc/reports/clang/
|
||||
[GitHub Actions]: https://github.com/neovim/neovim/actions
|
||||
[clangd]: https://clangd.llvm.org
|
||||
[Merge a Vim patch]: https://github.com/neovim/neovim/wiki/Merging-patches-from-upstream-Vim
|
||||
[complexity:low]: https://github.com/neovim/neovim/issues?q=is%3Aopen+is%3Aissue+label%3Acomplexity%3Alow
|
||||
[conventional_commits]: https://www.conventionalcommits.org
|
||||
[EmmyLua]: https://github.com/sumneko/lua-language-server/wiki/Annotations
|
||||
[gcc-warnings]: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
|
||||
[gh]: https://cli.github.com/
|
||||
[git-bisect]: http://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git
|
||||
[git-feature-branch]: https://www.atlassian.com/git/tutorials/comparing-workflows
|
||||
[git-history-filtering]: https://www.atlassian.com/git/tutorials/git-log/filtering-the-commit-history
|
||||
[git-history-rewriting]: http://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
|
||||
[git-rebasing]: http://git-scm.com/book/en/v2/Git-Branching-Rebasing
|
||||
[github-issues]: https://github.com/neovim/neovim/issues
|
||||
[1820]: https://github.com/neovim/neovim/pull/1820
|
||||
[gh]: https://cli.github.com/
|
||||
[conventional_commits]: https://www.conventionalcommits.org
|
||||
[style-guide]: https://neovim.io/doc/user/dev_style.html#dev-style
|
||||
[ASan]: http://clang.llvm.org/docs/AddressSanitizer.html
|
||||
[run-tests]: https://github.com/neovim/neovim/blob/master/test/README.md#running-tests
|
||||
[wiki-faq]: https://github.com/neovim/neovim/wiki/FAQ
|
||||
[review-checklist]: https://github.com/neovim/neovim/wiki/Code-review-checklist
|
||||
[3174]: https://github.com/neovim/neovim/issues/3174
|
||||
[sourcehut]: https://builds.sr.ht/~jmk
|
||||
[GitHub Actions]: https://github.com/neovim/neovim/actions
|
||||
[Merge a Vim patch]: https://github.com/neovim/neovim/wiki/Merging-patches-from-upstream-Vim
|
||||
[Clang report]: https://neovim.io/doc/reports/clang/
|
||||
[complexity:low]: https://github.com/neovim/neovim/issues?q=is%3Aopen+is%3Aissue+label%3Acomplexity%3Alow
|
||||
[include-what-you-use-install]: https://github.com/include-what-you-use/include-what-you-use#how-to-install
|
||||
[include-what-you-use]: https://github.com/include-what-you-use/include-what-you-use#using-with-cmake
|
||||
[lua-language-server]: https://github.com/sumneko/lua-language-server/
|
||||
[master error list]: https://raw.githubusercontent.com/neovim/doc/gh-pages/reports/clint/errors.json
|
||||
[wiki-contribute-help]: https://github.com/neovim/neovim/wiki/contribute-%3Ahelp
|
||||
[nvim-lspconfig/clangd]: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#clangd
|
||||
[pr-draft]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
|
||||
[pr-ready]: https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request
|
||||
[review-checklist]: https://github.com/neovim/neovim/wiki/Code-review-checklist
|
||||
[run-tests]: https://github.com/neovim/neovim/blob/master/test/README.md#running-tests
|
||||
[style-guide]: https://neovim.io/doc/user/dev_style.html#dev-style
|
||||
[uncrustify]: http://uncrustify.sourceforge.net/
|
||||
[lua-language-server]: https://github.com/sumneko/lua-language-server/
|
||||
[wiki-contribute-help]: https://github.com/neovim/neovim/wiki/contribute-%3Ahelp
|
||||
[wiki-faq]: https://github.com/neovim/neovim/wiki/FAQ
|
||||
|
@@ -8,7 +8,7 @@ Neovim's license follows:
|
||||
====
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
https://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
@@ -196,10 +196,11 @@ The externally maintained libraries used by Neovim are:
|
||||
- libtermkey: MIT license
|
||||
- libuv. Copyright Joyent, Inc. and other Node contributors. Node.js license.
|
||||
- libvterm: MIT license
|
||||
- lua-cjson: MIT license
|
||||
- lua-compat: MIT license
|
||||
- tree-sitter: MIT license
|
||||
- xdiff: LGPL license
|
||||
- lua-cjson: MIT license
|
||||
- unibilium: LGPL v3
|
||||
- xdiff: LGPL v2
|
||||
|
||||
====
|
||||
|
||||
|
91
MAINTAIN.md
91
MAINTAIN.md
@@ -12,23 +12,23 @@ General guidelines
|
||||
* Use automation to solve problems
|
||||
* Never break the API... but sometimes break the UI
|
||||
|
||||
Ticket triage
|
||||
-------------
|
||||
Issue triage
|
||||
------------
|
||||
|
||||
In practice we haven't found a way to forecast more precisely than "next" and
|
||||
"after next". So there are usually one or two (at most) planned milestones:
|
||||
|
||||
- Next bugfix-release (1.0.x)
|
||||
- Next feature-release (1.x.0)
|
||||
* Next bugfix-release (1.0.x)
|
||||
* Next feature-release (1.x.0)
|
||||
|
||||
The forecasting problem might be solved with an explicit priority system (like
|
||||
Bram's todo.txt). Meanwhile the Neovim priority system is defined by:
|
||||
|
||||
- PRs nearing completion.
|
||||
- Issue labels. E.g. the `+plan` label increases the ticket's priority merely
|
||||
* PRs nearing completion.
|
||||
* Issue labels. E.g. the `+plan` label increases the ticket's priority merely
|
||||
for having a plan written down: it is _closer to completion_ than tickets
|
||||
without a plan.
|
||||
- Comment activity or new information.
|
||||
* Comment activity or new information.
|
||||
|
||||
Anything that isn't in the next milestone, and doesn't have a finished PR—is
|
||||
just not something you care very much about, by construction. Post-release you
|
||||
@@ -50,49 +50,56 @@ has a major bug:
|
||||
1. Fix the bug on `master`.
|
||||
2. Cherry-pick the fix to `release-x.y`.
|
||||
3. Cut a release from `release-x.y`.
|
||||
- Run `./scripts/release.sh`
|
||||
- Update (force-push) the remote `stable` tag.
|
||||
- The [nightly job](https://github.com/neovim/neovim/blob/master/.github/workflows/release.yml#L4)
|
||||
will update the release assets based on the `stable` tag.
|
||||
* Run `./scripts/release.sh`
|
||||
* Update (force-push) the remote `stable` tag.
|
||||
* The [CI job](https://github.com/neovim/neovim/blob/3d45706478cd030c3ee05b4f336164bb96138095/.github/workflows/release.yml#L11-L13)
|
||||
will update the release assets and force-push to the `stable` tag.
|
||||
|
||||
The neovim repository includes a backport [github action](https://github.com/zeebe-io/backport-action).
|
||||
In order to trigger the action, a PR must be labeled with a label matching the
|
||||
form `backport release-0.X`. If the label is applied before the PR is merged,
|
||||
the backport will be filed automatically against the target branch. Otherwise,
|
||||
comment `\backport` on the merged PR *after* the label has been applied to trigger
|
||||
a backport. Note, the PR must have a description in the issue body, or the backport
|
||||
will fail.
|
||||
### Release automation
|
||||
|
||||
Neovim automation includes a [backport bot](https://github.com/zeebe-io/backport-action).
|
||||
Trigger the action by labeling a PR with `backport release-X.Y`. See `.github/workflows/backport.yml`.
|
||||
|
||||
Third-party dependencies
|
||||
--------------
|
||||
------------------------
|
||||
|
||||
These "bundled" dependencies can be updated by bumping their versions in `third-party/CMakeLists.txt`:
|
||||
- [Lua](https://www.lua.org/download.html)
|
||||
- [LuaJIT](https://github.com/LuaJIT/LuaJIT)
|
||||
- [Luv](https://github.com/luvit/luv)
|
||||
- [libtermkey](https://github.com/neovim/libtermkey)
|
||||
- [libuv](https://github.com/libuv/libuv)
|
||||
- [libvterm](http://www.leonerd.org.uk/code/libvterm/)
|
||||
- [lua-compat](https://github.com/keplerproject/lua-compat-5.3)
|
||||
- [tree-sitter](https://github.com/tree-sitter/tree-sitter)
|
||||
These "bundled" dependencies can be updated by bumping their versions in `cmake.deps/CMakeLists.txt`.
|
||||
Some can be auto-bumped by `scripts/bump-deps.sh`.
|
||||
|
||||
`scripts/bump-dep.sh` is a script that can automate this process for `LuaJIT`, `Luv`, `libuv` & `tree-sitter`. See usage guide:
|
||||
- Run `./scripts/bump-deps.sh --dep Luv --version 1.43.0-0` to update a dependency.
|
||||
See `./scripts/bump-deps.sh -h` for more detailed usage
|
||||
- Run `./scripts/bump-deps.sh --pr` to create a pr
|
||||
To generate the default PR title and body, the script uses the most recent commit (not in `master`) with prefix `build(deps): `
|
||||
* [LuaJIT](https://github.com/LuaJIT/LuaJIT)
|
||||
* [Lua](https://www.lua.org/download.html)
|
||||
* [Luv](https://github.com/luvit/luv)
|
||||
* [gettext](https://ftp.gnu.org/pub/gnu/gettext/)
|
||||
* [libiconv](https://ftp.gnu.org/pub/gnu/libiconv)
|
||||
* [libtermkey](https://github.com/neovim/libtermkey)
|
||||
* [libuv](https://github.com/libuv/libuv)
|
||||
* [libvterm](http://www.leonerd.org.uk/code/libvterm/)
|
||||
* [lua-compat](https://github.com/keplerproject/lua-compat-5.3)
|
||||
* [msys2](https://github.com/msys2/MINGW-packages) (for mingw Windows build)
|
||||
* Changes to mingw can [break our mingw build](https://github.com/msys2/MINGW-packages/issues/9946).
|
||||
* [tree-sitter](https://github.com/tree-sitter/tree-sitter)
|
||||
* [unibilium](https://github.com/neovim/unibilium)
|
||||
|
||||
These dependencies are "vendored" (inlined), we need to update the sources manually:
|
||||
- [libmpack](https://github.com/libmpack/libmpack)
|
||||
- [xdiff](https://github.com/git/git/tree/master/xdiff)
|
||||
- [lua-cjson](https://github.com/openresty/lua-cjson)
|
||||
- [Klib](https://github.com/attractivechaos/klib)
|
||||
### Vendored dependencies
|
||||
|
||||
We also maintain some forks, particularly for Windows, if we are waiting on upstream changes:
|
||||
https://github.com/neovim/neovim/wiki/Deps
|
||||
These dependencies are "vendored" (inlined), we must update the sources manually:
|
||||
|
||||
* `src/mpack/`: [libmpack](https://github.com/libmpack/libmpack)
|
||||
* send improvements upstream!
|
||||
* `src/xdiff/`: [xdiff](https://github.com/git/git/tree/master/xdiff)
|
||||
* `src/cjson/`: [lua-cjson](https://github.com/openresty/lua-cjson)
|
||||
* `src/nvim/lib/`: [Klib](https://github.com/attractivechaos/klib)
|
||||
* `runtime/lua/vim/inspect.lua`: [inspect.lua](https://github.com/kikito/inspect.lua)
|
||||
* `src/nvim/tui/terminfo_defs.h`: terminfo definitions
|
||||
* Run `scripts/update_terminfo.sh` to update these definitions.
|
||||
* [treesitter parsers](https://github.com/neovim/neovim/blob/fcc24e43e0b5f9d801a01ff2b8f78ce8c16dd551/cmake.deps/CMakeLists.txt#L197-L210)
|
||||
|
||||
### Forks
|
||||
|
||||
We may maintain forks, if we are waiting on upstream changes: https://github.com/neovim/neovim/wiki/Deps
|
||||
|
||||
See also
|
||||
--------
|
||||
|
||||
- https://github.com/neovim/neovim/issues/862
|
||||
- https://github.com/git/git/blob/master/Documentation/howto/maintain-git.txt
|
||||
* https://github.com/neovim/neovim/issues/862
|
||||
* https://github.com/git/git/blob/master/Documentation/howto/maintain-git.txt
|
||||
|
79
Makefile
79
Makefile
@@ -47,13 +47,7 @@ endif
|
||||
|
||||
ifeq (,$(BUILD_TOOL))
|
||||
ifeq (Ninja,$(CMAKE_GENERATOR))
|
||||
ifneq ($(shell $(CMAKE_PRG) --help 2>/dev/null | grep Ninja),)
|
||||
BUILD_TOOL = ninja
|
||||
else
|
||||
# User's version of CMake doesn't support Ninja
|
||||
BUILD_TOOL = $(MAKE)
|
||||
CMAKE_GENERATOR := Unix Makefiles
|
||||
endif
|
||||
BUILD_TOOL = ninja
|
||||
else
|
||||
BUILD_TOOL = $(MAKE)
|
||||
endif
|
||||
@@ -102,7 +96,7 @@ build/.ran-cmake: | deps
|
||||
cd build && $(CMAKE_PRG) -G '$(CMAKE_GENERATOR)' $(CMAKE_FLAGS) $(CMAKE_EXTRA_FLAGS) $(MAKEFILE_DIR)
|
||||
touch $@
|
||||
|
||||
deps: | build/.ran-third-party-cmake
|
||||
deps: | build/.ran-deps-cmake
|
||||
ifeq ($(call filter-true,$(USE_BUNDLED)),)
|
||||
+$(BUILD_TOOL) -C $(DEPS_BUILD_DIR)
|
||||
endif
|
||||
@@ -110,12 +104,12 @@ endif
|
||||
ifeq ($(call filter-true,$(USE_BUNDLED)),)
|
||||
$(DEPS_BUILD_DIR):
|
||||
mkdir -p "$@"
|
||||
build/.ran-third-party-cmake:: $(DEPS_BUILD_DIR)
|
||||
build/.ran-deps-cmake:: $(DEPS_BUILD_DIR)
|
||||
cd $(DEPS_BUILD_DIR) && \
|
||||
$(CMAKE_PRG) -G '$(CMAKE_GENERATOR)' $(BUNDLED_CMAKE_FLAG) $(BUNDLED_LUA_CMAKE_FLAG) \
|
||||
$(DEPS_CMAKE_FLAGS) $(MAKEFILE_DIR)/third-party
|
||||
$(DEPS_CMAKE_FLAGS) $(MAKEFILE_DIR)/cmake.deps
|
||||
endif
|
||||
build/.ran-third-party-cmake::
|
||||
build/.ran-deps-cmake::
|
||||
mkdir -p build
|
||||
touch $@
|
||||
|
||||
@@ -133,50 +127,11 @@ endif
|
||||
src/nvim/testdir/%.vim: phony_force
|
||||
+$(SINGLE_MAKE) -C src/nvim/testdir NVIM_PRG=$(NVIM_PRG) SCRIPTS= $(MAKEOVERRIDES) $(patsubst src/nvim/testdir/%.vim,%,$@)
|
||||
|
||||
build/runtime/doc/tags helptags: | nvim
|
||||
+$(BUILD_TOOL) -C build runtime/doc/tags
|
||||
functionaltest functionaltest-lua unittest benchmark: | nvim
|
||||
$(BUILD_TOOL) -C build $@
|
||||
|
||||
# Builds help HTML _and_ checks for invalid help tags.
|
||||
helphtml: | nvim build/runtime/doc/tags
|
||||
+$(BUILD_TOOL) -C build doc_html
|
||||
|
||||
functionaltest: | nvim
|
||||
+$(BUILD_TOOL) -C build functionaltest
|
||||
|
||||
functionaltest-lua: | nvim
|
||||
+$(BUILD_TOOL) -C build functionaltest-lua
|
||||
|
||||
lualint: | build/.ran-cmake deps
|
||||
$(BUILD_TOOL) -C build lualint
|
||||
|
||||
shlint:
|
||||
@shellcheck --version | head -n 2
|
||||
shellcheck scripts/vim-patch.sh
|
||||
|
||||
_opt_shlint:
|
||||
@command -v shellcheck && { $(MAKE) shlint; exit $$?; } \
|
||||
|| echo "SKIP: shlint (shellcheck not found)"
|
||||
|
||||
pylint:
|
||||
flake8 contrib/ scripts/ src/ test/
|
||||
|
||||
# Run pylint only if flake8 is installed.
|
||||
_opt_pylint:
|
||||
@command -v flake8 && { $(MAKE) pylint; exit $$?; } \
|
||||
|| echo "SKIP: pylint (flake8 not found)"
|
||||
|
||||
commitlint:
|
||||
$(NVIM_PRG) -u NONE -es +"lua require('scripts.lintcommit').main({trace=false})"
|
||||
|
||||
_opt_commitlint:
|
||||
@test -x build/bin/nvim && { $(MAKE) commitlint; exit $$?; } \
|
||||
|| echo "SKIP: commitlint (build/bin/nvim not found)"
|
||||
|
||||
unittest: | nvim
|
||||
+$(BUILD_TOOL) -C build unittest
|
||||
|
||||
benchmark: | nvim
|
||||
+$(BUILD_TOOL) -C build benchmark
|
||||
lintlua lintsh lintpy lintuncrustify lintc lintcfull check-single-includes generated-sources lintcommit lint formatc formatlua format: | build/.ran-cmake
|
||||
$(CMAKE_PRG) --build build --target $@
|
||||
|
||||
test: functionaltest unittest
|
||||
|
||||
@@ -193,18 +148,6 @@ distclean:
|
||||
install: checkprefix nvim
|
||||
+$(BUILD_TOOL) -C build install
|
||||
|
||||
clint: build/.ran-cmake
|
||||
+$(BUILD_TOOL) -C build clint
|
||||
|
||||
clint-full: build/.ran-cmake
|
||||
+$(BUILD_TOOL) -C build clint-full
|
||||
|
||||
check-single-includes: build/.ran-cmake
|
||||
+$(BUILD_TOOL) -C build check-single-includes
|
||||
|
||||
generated-sources: build/.ran-cmake
|
||||
+$(BUILD_TOOL) -C build generated-sources
|
||||
|
||||
appimage:
|
||||
bash scripts/genappimage.sh
|
||||
|
||||
@@ -214,8 +157,6 @@ appimage:
|
||||
appimage-%:
|
||||
bash scripts/genappimage.sh $*
|
||||
|
||||
lint: check-single-includes clint lualint _opt_pylint _opt_shlint _opt_commitlint
|
||||
|
||||
# Generic pattern rules, allowing for `make build/bin/nvim` etc.
|
||||
# Does not work with "Unix Makefiles".
|
||||
ifeq ($(CMAKE_GENERATOR),Ninja)
|
||||
@@ -226,4 +167,4 @@ $(DEPS_BUILD_DIR)/%: phony_force
|
||||
$(BUILD_TOOL) -C $(DEPS_BUILD_DIR) $(patsubst $(DEPS_BUILD_DIR)/%,%,$@)
|
||||
endif
|
||||
|
||||
.PHONY: test lualint pylint shlint functionaltest unittest lint clint clean distclean nvim libnvim cmake deps install appimage checkprefix commitlint
|
||||
.PHONY: test lintlua lintpy lintsh functionaltest unittest lint lintc clean distclean nvim libnvim cmake deps install appimage checkprefix lintcommit formatc formatlua format
|
||||
|
10
README.md
10
README.md
@@ -7,7 +7,6 @@
|
||||
[Twitter](https://twitter.com/Neovim)
|
||||
|
||||
[](https://github.com/neovim/neovim/actions?query=workflow%3ACI+branch%3Amaster+event%3Apush)
|
||||
[](https://codecov.io/gh/neovim/neovim)
|
||||
[](https://scan.coverity.com/projects/2227)
|
||||
[](https://neovim.io/doc/reports/clang)
|
||||
[](https://neovim.io/doc/reports/pvs/PVS-studio.html.d)
|
||||
@@ -63,7 +62,7 @@ After installing the dependencies, run the following command.
|
||||
|
||||
To install to a non-default location:
|
||||
|
||||
make CMAKE_INSTALL_PREFIX=/full/path/
|
||||
make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=/full/path/
|
||||
make install
|
||||
|
||||
CMake hints for inspecting the build:
|
||||
@@ -81,8 +80,10 @@ Project layout
|
||||
--------------
|
||||
|
||||
├─ ci/ build automation
|
||||
├─ cmake/ build scripts
|
||||
├─ runtime/ user plugins/docs
|
||||
├─ cmake/ CMake utils
|
||||
├─ cmake.config/ CMake defines
|
||||
├─ cmake.deps/ subproject to fetch and build dependencies (optional)
|
||||
├─ runtime/ plugins and docs
|
||||
├─ src/nvim/ application source code (see src/nvim/README.md)
|
||||
│ ├─ api/ API subsystem
|
||||
│ ├─ eval/ VimL subsystem
|
||||
@@ -93,7 +94,6 @@ Project layout
|
||||
│ ├─ msgpack_rpc/ RPC subsystem
|
||||
│ ├─ os/ low-level platform code
|
||||
│ └─ tui/ built-in UI
|
||||
├─ third-party/ CMake subproject to build dependencies
|
||||
└─ test/ tests (see test/README.md)
|
||||
|
||||
License
|
||||
|
@@ -12,11 +12,6 @@ mkdir -p "${HOME}/.cache"
|
||||
echo "before_cache.sh: cache size"
|
||||
du -chd 1 "${HOME}/.cache" | sort -rh | head -20
|
||||
|
||||
echo "before_cache.sh: ccache stats"
|
||||
ccache -s 2>/dev/null || true
|
||||
# Do not keep ccache stats (uploaded to cache otherwise; reset initially anyway).
|
||||
find "${HOME}/.ccache" -name stats -delete
|
||||
|
||||
# Update the third-party dependency cache only if the build was successful.
|
||||
if ended_successfully && [ -d "${DEPS_BUILD_DIR}" ]; then
|
||||
# Do not cache downloads. They should not be needed with up-to-date deps.
|
||||
|
@@ -16,11 +16,6 @@ if [[ -n "${LLVM_SYMBOLIZER}" ]] && [[ ! $(type -P "${LLVM_SYMBOLIZER}") ]]; the
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "before_script.sh: ccache stats (will be cleared)"
|
||||
ccache -s
|
||||
# Reset ccache stats for real results in before_cache.
|
||||
ccache --zero-stats
|
||||
|
||||
# Compile dependencies.
|
||||
build_deps
|
||||
|
||||
|
208
ci/build.ps1
208
ci/build.ps1
@@ -1,24 +1,32 @@
|
||||
param([switch]$NoTests)
|
||||
[CmdletBinding(DefaultParameterSetName = "Build")]
|
||||
param(
|
||||
[Parameter(ParameterSetName="Build")][switch]$Build,
|
||||
[Parameter(ParameterSetName="BuildDeps")][switch]$BuildDeps,
|
||||
[Parameter(ParameterSetName="EnsureTestDeps")][switch]$EnsureTestDeps,
|
||||
[Parameter(ParameterSetName="Package")][switch]$Package,
|
||||
[Parameter(ParameterSetName="Test")][switch]$Test,
|
||||
[Parameter(ParameterSetName="TestOld")][switch]$TestOld
|
||||
)
|
||||
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$ProgressPreference = 'SilentlyContinue'
|
||||
|
||||
$env:CONFIGURATION -match '^(?<compiler>\w+)_(?<bits>32|64)(?:-(?<option>\w+))?$'
|
||||
$compiler = $Matches.compiler
|
||||
$compileOption = if ($Matches -contains 'option') {$Matches.option} else {''}
|
||||
$bits = $Matches.bits
|
||||
$cmakeBuildType = $(if ($env:CMAKE_BUILD_TYPE -ne $null) {$env:CMAKE_BUILD_TYPE} else {'RelWithDebInfo'});
|
||||
$buildDir = [System.IO.Path]::GetFullPath("$(pwd)")
|
||||
$projectDir = [System.IO.Path]::GetFullPath("$(Get-Location)")
|
||||
$buildDir = Join-Path -Path $projectDir -ChildPath "build"
|
||||
|
||||
# $env:CMAKE_BUILD_TYPE is ignored by cmake when not using ninja
|
||||
$cmakeBuildType = $(if ($null -ne $env:CMAKE_BUILD_TYPE) {$env:CMAKE_BUILD_TYPE} else {'RelWithDebInfo'});
|
||||
$depsCmakeVars = @{
|
||||
CMAKE_BUILD_TYPE = $cmakeBuildType;
|
||||
CMAKE_BUILD_TYPE=$cmakeBuildType;
|
||||
}
|
||||
$nvimCmakeVars = @{
|
||||
CMAKE_BUILD_TYPE = $cmakeBuildType;
|
||||
CMAKE_BUILD_TYPE=$cmakeBuildType;
|
||||
BUSTED_OUTPUT_TYPE = 'nvim';
|
||||
DEPS_PREFIX=$(if ($env:DEPS_PREFIX -ne $null) {$env:DEPS_PREFIX} else {".deps/usr"});
|
||||
DEPS_PREFIX=$(if ($null -ne $env:DEPS_PREFIX) {$env:DEPS_PREFIX} else {".deps/usr"});
|
||||
}
|
||||
if ($env:DEPS_BUILD_DIR -eq $null) {
|
||||
$env:DEPS_BUILD_DIR = ".deps";
|
||||
if ($null -eq $env:DEPS_BUILD_DIR) {
|
||||
$env:DEPS_BUILD_DIR = Join-Path -Path $projectDir -ChildPath ".deps"
|
||||
}
|
||||
$uploadToCodeCov = $false
|
||||
|
||||
@@ -28,148 +36,97 @@ function exitIfFailed() {
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $NoTests) {
|
||||
node --version
|
||||
npm.cmd --version
|
||||
function convertToCmakeArgs($vars) {
|
||||
return $vars.GetEnumerator() | ForEach-Object { "-D$($_.Key)=$($_.Value)" }
|
||||
}
|
||||
|
||||
if (-Not (Test-Path -PathType container $env:DEPS_BUILD_DIR)) {
|
||||
write-host "cache dir not found: $($env:DEPS_BUILD_DIR)"
|
||||
mkdir $env:DEPS_BUILD_DIR
|
||||
} else {
|
||||
write-host "cache dir $($env:DEPS_BUILD_DIR) size: $(Get-ChildItem $env:DEPS_BUILD_DIR -recurse | Measure-Object -property length -sum | Select -expand sum)"
|
||||
}
|
||||
|
||||
if ($compiler -eq 'MINGW') {
|
||||
if ($bits -eq 32) {
|
||||
$arch = 'i686'
|
||||
$installationPath = vswhere.exe -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
|
||||
if ($installationPath -and (Test-Path "$installationPath\Common7\Tools\vsdevcmd.bat")) {
|
||||
& "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -arch=x64 -no_logo && set" | ForEach-Object {
|
||||
$name, $value = $_ -split '=', 2
|
||||
Set-Content env:\"$name" $value
|
||||
}
|
||||
elseif ($bits -eq 64) {
|
||||
$arch = 'x86_64'
|
||||
}
|
||||
if ($compileOption -eq 'gcov') {
|
||||
$nvimCmakeVars['USE_GCOV'] = 'ON'
|
||||
$uploadToCodecov = $true
|
||||
$env:GCOV = "C:\msys64\mingw$bits\bin\gcov"
|
||||
|
||||
# Setup/build Lua coverage.
|
||||
$env:USE_LUACOV = 1
|
||||
$env:BUSTED_ARGS = "--coverage"
|
||||
}
|
||||
# These are native MinGW builds, but they use the toolchain inside
|
||||
# MSYS2, this allows using all the dependencies and tools available
|
||||
# in MSYS2, but we cannot build inside the MSYS2 shell.
|
||||
$cmakeGenerator = 'Ninja'
|
||||
$cmakeGeneratorArgs = '-v'
|
||||
$mingwPackages = @('ninja', 'cmake', 'diffutils').ForEach({
|
||||
"mingw-w64-$arch-$_"
|
||||
})
|
||||
|
||||
# Add MinGW to the PATH
|
||||
$env:PATH = "C:\msys64\mingw$bits\bin;$env:PATH"
|
||||
|
||||
# Avoid pacman "warning" which causes non-zero return code. https://github.com/open62541/open62541/issues/2068
|
||||
& C:\msys64\usr\bin\mkdir -p /var/cache/pacman/pkg
|
||||
|
||||
# Build third-party dependencies
|
||||
C:\msys64\usr\bin\bash -lc "pacman --verbose --noconfirm -Syu" ; exitIfFailed
|
||||
C:\msys64\usr\bin\bash -lc "pacman --verbose --noconfirm --needed -S $mingwPackages" ; exitIfFailed
|
||||
}
|
||||
elseif ($compiler -eq 'MSVC') {
|
||||
$cmakeGeneratorArgs = '/verbosity:normal'
|
||||
$cmakeGenerator = 'Visual Studio 16 2019'
|
||||
}
|
||||
|
||||
if ($compiler -eq 'MSVC') {
|
||||
$installationPath = vswhere.exe -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
|
||||
if ($installationPath -and (test-path "$installationPath\Common7\Tools\vsdevcmd.bat")) {
|
||||
& "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -arch=x${bits} -no_logo && set" | foreach-object {
|
||||
$name, $value = $_ -split '=', 2
|
||||
set-content env:\"$name" $value
|
||||
function BuildDeps {
|
||||
|
||||
if (Test-Path -PathType container $env:DEPS_BUILD_DIR) {
|
||||
$cachedBuildTypeStr = $(Get-Content $env:DEPS_BUILD_DIR\CMakeCache.txt | Select-String -Pattern "CMAKE_BUILD_TYPE.*=($cmakeBuildType)")
|
||||
if (-not $cachedBuildTypeStr) {
|
||||
Write-Warning " unable to validate build type from cache dir ${env:DEPS_BUILD_DIR}"
|
||||
}
|
||||
}
|
||||
|
||||
# we currently can't use ninja for cmake.deps, see #19405
|
||||
$depsCmakeGenerator = "Visual Studio 16 2019"
|
||||
$depsCmakeGeneratorPlf = "x64"
|
||||
cmake -S "$projectDir\cmake.deps" -B $env:DEPS_BUILD_DIR -G $depsCmakeGenerator -A $depsCmakeGeneratorPlf $(convertToCmakeArgs($depsCmakeVars)); exitIfFailed
|
||||
|
||||
$depsCmakeNativeToolOptions= @('/verbosity:normal', '/m')
|
||||
cmake --build $env:DEPS_BUILD_DIR --config $cmakeBuildType -- $depsCmakeNativeToolOptions; exitIfFailed
|
||||
}
|
||||
|
||||
if (-not $NoTests) {
|
||||
python -m ensurepip
|
||||
python -m pip install pynvim ; exitIfFailed
|
||||
function Build {
|
||||
cmake -S $projectDir -B $buildDir $(convertToCmakeArgs($nvimCmakeVars)) -G Ninja; exitIfFailed
|
||||
cmake --build $buildDir --config $cmakeBuildType; exitIfFailed
|
||||
}
|
||||
|
||||
function EnsureTestDeps {
|
||||
& $buildDir\bin\nvim.exe "--version"; exitIfFailed
|
||||
|
||||
# Ensure that the "win32" feature is set.
|
||||
& $buildDir\bin\nvim -u NONE --headless -c 'exe !has(\"win32\").\"cq\"' ; exitIfFailed
|
||||
|
||||
python -m pip install pynvim
|
||||
# Sanity check
|
||||
python -c "import pynvim; print(str(pynvim))" ; exitIfFailed
|
||||
python -c "import pynvim; print(str(pynvim))"; exitIfFailed
|
||||
|
||||
gem.cmd install --pre neovim
|
||||
Get-Command -CommandType Application neovim-ruby-host.bat
|
||||
Get-Command -CommandType Application neovim-ruby-host.bat; exitIfFailed
|
||||
|
||||
npm.cmd install -g neovim
|
||||
Get-Command -CommandType Application neovim-node-host.cmd
|
||||
node --version
|
||||
npm.cmd --version
|
||||
|
||||
npm.cmd install -g neovim; exitIfFailed
|
||||
Get-Command -CommandType Application neovim-node-host.cmd; exitIfFailed
|
||||
npm.cmd link neovim
|
||||
}
|
||||
|
||||
function convertToCmakeArgs($vars) {
|
||||
return $vars.GetEnumerator() | foreach { "-D$($_.Key)=$($_.Value)" }
|
||||
}
|
||||
|
||||
cd $env:DEPS_BUILD_DIR
|
||||
if ($compiler -eq 'MSVC') {
|
||||
if ($bits -eq 32) {
|
||||
cmake -G $cmakeGenerator -A Win32 $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
|
||||
} else {
|
||||
cmake -G $cmakeGenerator -A x64 $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
|
||||
if ($env:USE_LUACOV -eq 1) {
|
||||
& $env:DEPS_PREFIX\luarocks\luarocks.bat install cluacov
|
||||
}
|
||||
} else {
|
||||
cmake -G $cmakeGenerator $(convertToCmakeArgs($depsCmakeVars)) "$buildDir/third-party/" ; exitIfFailed
|
||||
}
|
||||
cmake --build . --config $cmakeBuildType -- $cmakeGeneratorArgs ; exitIfFailed
|
||||
cd $buildDir
|
||||
|
||||
# Build Neovim
|
||||
mkdir build
|
||||
cd build
|
||||
if ($compiler -eq 'MSVC') {
|
||||
if ($bits -eq 32) {
|
||||
cmake -G $cmakeGenerator -A Win32 $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
|
||||
} else {
|
||||
cmake -G $cmakeGenerator -A x64 $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
|
||||
}
|
||||
} else {
|
||||
cmake -G $cmakeGenerator $(convertToCmakeArgs($nvimCmakeVars)) .. ; exitIfFailed
|
||||
}
|
||||
cmake --build . --config $cmakeBuildType -- $cmakeGeneratorArgs ; exitIfFailed
|
||||
.\bin\nvim --version ; exitIfFailed
|
||||
|
||||
# Ensure that the "win32" feature is set.
|
||||
.\bin\nvim -u NONE --headless -c 'exe !has(\"win32\").\"cq\"' ; exitIfFailed
|
||||
|
||||
if ($env:USE_LUACOV -eq 1) {
|
||||
& $env:DEPS_PREFIX\luarocks\luarocks.bat install cluacov
|
||||
}
|
||||
|
||||
if (-not $NoTests) {
|
||||
function Test {
|
||||
# Functional tests
|
||||
# The $LastExitCode from MSBuild can't be trusted
|
||||
$failed = $false
|
||||
|
||||
# Run only this test file:
|
||||
# $env:TEST_FILE = "test\functional\foo.lua"
|
||||
cmake --build . --config $cmakeBuildType --target functionaltest -- $cmakeGeneratorArgs 2>&1 |
|
||||
foreach { $failed = $failed -or
|
||||
cmake --build $buildDir --target functionaltest 2>&1 |
|
||||
ForEach-Object { $failed = $failed -or
|
||||
$_ -match 'functional tests failed with error'; $_ }
|
||||
|
||||
if ($uploadToCodecov) {
|
||||
if ($env:USE_LUACOV -eq 1) {
|
||||
& $env:DEPS_PREFIX\bin\luacov.bat
|
||||
}
|
||||
bash -l /c/projects/neovim/ci/common/submit_coverage.sh functionaltest
|
||||
}
|
||||
if ($failed) {
|
||||
exit $LastExitCode
|
||||
}
|
||||
|
||||
if (-not $uploadToCodecov) {
|
||||
return
|
||||
}
|
||||
if ($env:USE_LUACOV -eq 1) {
|
||||
& $env:DEPS_PREFIX\bin\luacov.bat
|
||||
}
|
||||
bash -l /c/projects/neovim/ci/common/submit_coverage.sh functionaltest
|
||||
}
|
||||
|
||||
function TestOld {
|
||||
# Old tests
|
||||
# Add MSYS to path, required for e.g. `find` used in test scripts.
|
||||
# But would break functionaltests, where its `more` would be used then.
|
||||
$OldPath = $env:PATH
|
||||
$env:PATH = "C:\msys64\usr\bin;$env:PATH"
|
||||
& "C:\msys64\mingw$bits\bin\mingw32-make.exe" -C $(Convert-Path ..\src\nvim\testdir) VERBOSE=1 ; exitIfFailed
|
||||
& "C:\msys64\mingw64\bin\mingw32-make.exe" -C $(Convert-Path $projectDir\src\nvim\testdir) VERBOSE=1; exitIfFailed
|
||||
$env:PATH = $OldPath
|
||||
|
||||
if ($uploadToCodecov) {
|
||||
@@ -177,10 +134,13 @@ if (-not $NoTests) {
|
||||
}
|
||||
}
|
||||
|
||||
# Ensure choco's cpack is not in PATH otherwise, it conflicts with CMake's
|
||||
if (Test-Path -Path $env:ChocolateyInstall\bin\cpack.exe) {
|
||||
Remove-Item -Path $env:ChocolateyInstall\bin\cpack.exe -Force
|
||||
|
||||
function Package {
|
||||
cmake -S $projectDir -B $buildDir $(convertToCmakeArgs($nvimCmakeVars)) -G Ninja; exitIfFailed
|
||||
cmake --build $buildDir --target package; exitIfFailed
|
||||
}
|
||||
|
||||
# Build artifacts
|
||||
cpack -C $cmakeBuildType
|
||||
if ($PSCmdlet.ParameterSetName) {
|
||||
& (Get-ChildItem "Function:$($PSCmdlet.ParameterSetName)")
|
||||
exit
|
||||
}
|
||||
|
@@ -24,9 +24,7 @@ build_deps() {
|
||||
mkdir -p "${DEPS_BUILD_DIR}"
|
||||
|
||||
# Use cached dependencies if $CACHE_MARKER exists.
|
||||
if test "${CACHE_ENABLE}" = "false" ; then
|
||||
export CCACHE_RECACHE=1
|
||||
elif test -f "${CACHE_MARKER}" ; then
|
||||
if test -f "${CACHE_MARKER}"; then
|
||||
echo "Using third-party dependencies from cache (last update: $(_stat "${CACHE_MARKER}"))."
|
||||
cp -a "${CACHE_NVIM_DEPS_DIR}"/. "${DEPS_BUILD_DIR}"
|
||||
fi
|
||||
@@ -35,7 +33,7 @@ build_deps() {
|
||||
# update CMake configuration and update to newer deps versions.
|
||||
cd "${DEPS_BUILD_DIR}"
|
||||
echo "Configuring with '${DEPS_CMAKE_FLAGS}'."
|
||||
CC= cmake -G Ninja ${DEPS_CMAKE_FLAGS} "${CI_BUILD_DIR}/third-party/"
|
||||
CC= cmake -G Ninja ${DEPS_CMAKE_FLAGS} "${CI_BUILD_DIR}/cmake.deps/"
|
||||
|
||||
if ! top_make; then
|
||||
exit 1
|
||||
|
@@ -5,7 +5,7 @@ set -o pipefail
|
||||
|
||||
# Use default CC to avoid compilation problems when installing Python modules.
|
||||
echo "Install neovim module for Python."
|
||||
CC=cc python -m pip -q install --user --upgrade pynvim
|
||||
CC=cc python3 -m pip -q install --user --upgrade pynvim
|
||||
|
||||
echo "Install neovim RubyGem."
|
||||
gem install --no-document --bindir "$HOME/.local/bin" --user-install --pre neovim
|
||||
@@ -14,5 +14,7 @@ echo "Install neovim npm package"
|
||||
npm install -g neovim
|
||||
npm link neovim
|
||||
|
||||
sudo cpanm -n Neovim::Ext || cat "$HOME/.cpanm/build.log"
|
||||
perl -W -e 'use Neovim::Ext; print $Neovim::Ext::VERSION'
|
||||
if [[ $CI_OS_NAME != osx ]]; then
|
||||
sudo cpanm -n Neovim::Ext || cat "$HOME/.cpanm/build.log"
|
||||
perl -W -e 'use Neovim::Ext; print $Neovim::Ext::VERSION'
|
||||
fi
|
||||
|
@@ -1,24 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
source "${CI_DIR}/common/build.sh"
|
||||
source "${CI_DIR}/common/suite.sh"
|
||||
|
||||
rm -f "$END_MARKER"
|
||||
|
||||
# Run all tests if no input argument is given
|
||||
if (($# == 0)); then
|
||||
tests=('clint-full' 'lualint' 'pylint' 'shlint' 'check-single-includes')
|
||||
else
|
||||
tests=("$@")
|
||||
fi
|
||||
|
||||
for i in "${tests[@]}"; do
|
||||
make "$i" || fail "$i"
|
||||
done
|
||||
|
||||
end_tests
|
@@ -33,3 +33,9 @@ for i in "${tests[@]}"; do
|
||||
done
|
||||
|
||||
end_tests
|
||||
|
||||
if [[ -s "${GCOV_ERROR_FILE}" ]]; then
|
||||
echo '=== Unexpected gcov errors: ==='
|
||||
cat "${GCOV_ERROR_FILE}"
|
||||
exit 1
|
||||
fi
|
||||
|
12
ci/script.sh
12
ci/script.sh
@@ -1,12 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
ci/run_${CI_TARGET}.sh
|
||||
|
||||
if [[ -s "${GCOV_ERROR_FILE}" ]]; then
|
||||
echo '=== Unexpected gcov errors: ==='
|
||||
cat "${GCOV_ERROR_FILE}"
|
||||
exit 1
|
||||
fi
|
@@ -5,12 +5,13 @@ include(CheckIncludeFiles)
|
||||
include(CheckCSourceRuns)
|
||||
include(CheckCSourceCompiles)
|
||||
|
||||
check_type_size("int" SIZEOF_INT)
|
||||
check_type_size("long" SIZEOF_LONG)
|
||||
check_type_size("intmax_t" SIZEOF_INTMAX_T)
|
||||
check_type_size("size_t" SIZEOF_SIZE_T)
|
||||
check_type_size("long long" SIZEOF_LONG_LONG)
|
||||
check_type_size("void *" SIZEOF_VOID_PTR)
|
||||
check_type_size("int" SIZEOF_INT LANGUAGE C)
|
||||
check_type_size("long" SIZEOF_LONG LANGUAGE C)
|
||||
check_type_size("intmax_t" SIZEOF_INTMAX_T LANGUAGE C)
|
||||
check_type_size("int32_t" SIZEOF_INT32_T LANGUAGE C)
|
||||
check_type_size("size_t" SIZEOF_SIZE_T LANGUAGE C)
|
||||
check_type_size("long long" SIZEOF_LONG_LONG LANGUAGE C)
|
||||
check_type_size("void *" SIZEOF_VOID_PTR LANGUAGE C)
|
||||
|
||||
check_symbol_exists(_NSGetEnviron crt_externs.h HAVE__NSGETENVIRON)
|
||||
|
||||
@@ -127,14 +128,14 @@ endif()
|
||||
|
||||
# generate configuration header and update include directories
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/config/config.h.in"
|
||||
"${PROJECT_BINARY_DIR}/config/auto/config.h"
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/config.h.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/config.h"
|
||||
)
|
||||
|
||||
# generate version definitions
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/config/versiondef.h.in"
|
||||
"${PROJECT_BINARY_DIR}/config/auto/versiondef.h"
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/versiondef.h.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/versiondef.h"
|
||||
)
|
||||
|
||||
# generate pathdef.c
|
||||
@@ -157,6 +158,6 @@ elseif (EXISTS ${HOSTNAME_PROG})
|
||||
endif()
|
||||
|
||||
configure_file (
|
||||
"${PROJECT_SOURCE_DIR}/config/pathdef.c.in"
|
||||
"${PROJECT_BINARY_DIR}/config/auto/pathdef.c"
|
||||
"${PROJECT_SOURCE_DIR}/cmake.config/pathdef.c.in"
|
||||
"${PROJECT_BINARY_DIR}/cmake.config/auto/pathdef.c"
|
||||
ESCAPE_QUOTES)
|
@@ -3,8 +3,12 @@
|
||||
|
||||
#cmakedefine DEBUG
|
||||
|
||||
#define SIZEOF_INT @SIZEOF_INT@
|
||||
#define SIZEOF_LONG @SIZEOF_LONG@
|
||||
#cmakedefine SIZEOF_INT @SIZEOF_INT@
|
||||
#cmakedefine SIZEOF_INTMAX_T @SIZEOF_INTMAX_T@
|
||||
#cmakedefine SIZEOF_INT32_T @SIZEOF_INT32_T@
|
||||
#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
|
||||
#cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
|
||||
#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@
|
||||
|
||||
#if @SIZEOF_VOID_PTR@ == 8
|
||||
#define ARCH_64
|
||||
@@ -12,7 +16,7 @@
|
||||
#define ARCH_32
|
||||
#endif
|
||||
|
||||
#define PROJECT_NAME "@PROJECT_NAME@"
|
||||
#cmakedefine PROJECT_NAME "@PROJECT_NAME@"
|
||||
|
||||
#cmakedefine HAVE__NSGETENVIRON
|
||||
#cmakedefine HAVE_FD_CLOEXEC
|
@@ -1,19 +1,20 @@
|
||||
# This is not meant to be included by the top-level.
|
||||
cmake_minimum_required (VERSION 2.8.12)
|
||||
cmake_minimum_required (VERSION 3.10)
|
||||
project(NVIM_DEPS C)
|
||||
|
||||
# Needed for: check_c_compiler_flag()
|
||||
include(CheckCCompilerFlag)
|
||||
|
||||
# Point CMake at any custom modules we may ship
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${PROJECT_SOURCE_DIR}/../cmake")
|
||||
|
||||
# In Windows/MSVC CMAKE_BUILD_TYPE changes the paths/linking of the build
|
||||
# recipes (libuv, msgpack), make sure it is set
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
include(CheckCCompilerFlag)
|
||||
include(Util)
|
||||
|
||||
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(NOT isMultiConfig)
|
||||
set(BUILD_TYPE_STRING -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
|
||||
endif()
|
||||
|
||||
set_default_buildtype()
|
||||
|
||||
set(DEFAULT_MAKE_CFLAGS CFLAGS+=-g)
|
||||
|
||||
check_c_compiler_flag(-Og HAS_OG_FLAG)
|
||||
@@ -39,7 +40,6 @@ set(DEPS_DOWNLOAD_DIR "${DEPS_BUILD_DIR}/downloads" CACHE PATH "Dependencies dow
|
||||
|
||||
option(USE_BUNDLED "Use bundled dependencies." ON)
|
||||
|
||||
option(USE_BUNDLED_GPERF "Use the bundled version of gperf." ${USE_BUNDLED})
|
||||
option(USE_BUNDLED_UNIBILIUM "Use the bundled unibilium." ${USE_BUNDLED})
|
||||
option(USE_BUNDLED_LIBTERMKEY "Use the bundled libtermkey." ${USE_BUNDLED})
|
||||
option(USE_BUNDLED_LIBVTERM "Use the bundled libvterm." ${USE_BUNDLED})
|
||||
@@ -64,11 +64,9 @@ endif()
|
||||
|
||||
option(USE_EXISTING_SRC_DIR "Skip download of deps sources in case of existing source directory." OFF)
|
||||
|
||||
if(WIN32)
|
||||
find_package(Git)
|
||||
if(NOT Git_FOUND)
|
||||
message(FATAL_ERROR "Git is required to apply patches for Windows.")
|
||||
endif()
|
||||
find_package(Git)
|
||||
if(NOT Git_FOUND)
|
||||
message(FATAL_ERROR "Git is required to apply patches.")
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
@@ -109,10 +107,6 @@ else()
|
||||
set(DEPS_C_COMPILER "${CMAKE_C_COMPILER}")
|
||||
endif()
|
||||
|
||||
if(USE_BUNDLED_GPERF)
|
||||
enable_language(CXX)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER)
|
||||
set(DEPS_CXX_COMPILER "${CMAKE_CXX_COMPILER}")
|
||||
endif()
|
||||
@@ -124,35 +118,48 @@ if(CMAKE_OSX_SYSROOT)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Cross compiling: use these for dependencies built for the
|
||||
# HOST system, when not crosscompiling these should be the
|
||||
# same as DEPS_*. Except when targeting Unix in which case
|
||||
# want all the dependencies to use the same compiler.
|
||||
if(CMAKE_CROSSCOMPILING AND NOT UNIX)
|
||||
set(HOSTDEPS_INSTALL_DIR "${CMAKE_BINARY_DIR}/host")
|
||||
set(HOSTDEPS_BIN_DIR "${HOSTDEPS_INSTALL_DIR}/bin")
|
||||
set(HOSTDEPS_LIB_DIR "${HOSTDEPS_INSTALL_DIR}/lib")
|
||||
set(HOSTDEPS_C_COMPILER "${HOST_C_COMPILER}")
|
||||
set(HOSTDEPS_CXX_COMPILER "${HOST_CXX_COMPILER}")
|
||||
else()
|
||||
set(HOSTDEPS_INSTALL_DIR "${DEPS_INSTALL_DIR}")
|
||||
set(HOSTDEPS_BIN_DIR "${DEPS_BIN_DIR}")
|
||||
set(HOSTDEPS_LIB_DIR "${DEPS_LIB_DIR}")
|
||||
set(HOSTDEPS_C_COMPILER "${DEPS_C_COMPILER}")
|
||||
set(HOSTDEPS_CXX_COMPILER "${DEPS_CXX_COMPILER}")
|
||||
if(CMAKE_OSX_ARCHITECTURES)
|
||||
string(REPLACE ";" "|" CMAKE_OSX_ARCHITECTURES_ALT_SEP "${CMAKE_OSX_ARCHITECTURES}")
|
||||
# The LuaJIT build does not like being passed multiple `-arch` flags
|
||||
# so we handle a universal build the old-fashioned way.
|
||||
set(LUAJIT_C_COMPILER "${DEPS_C_COMPILER}")
|
||||
foreach(ARCH IN LISTS CMAKE_OSX_ARCHITECTURES)
|
||||
set(DEPS_C_COMPILER "${DEPS_C_COMPILER} -arch ${ARCH}")
|
||||
if(DEPS_CXX_COMPILER)
|
||||
set(DEPS_CXX_COMPILER "${DEPS_CXX_COMPILER} -arch ${ARCH}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET),
|
||||
# fall back to local system version. Needs to be done here and in top-level CMakeLists.txt.
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||
execute_process(COMMAND sw_vers -productVersion
|
||||
OUTPUT_VARIABLE MACOS_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "${MACOS_VERSION}")
|
||||
endif()
|
||||
message("-- Using deployment target ${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
endif()
|
||||
|
||||
set(HOSTDEPS_INSTALL_DIR "${DEPS_INSTALL_DIR}")
|
||||
set(HOSTDEPS_BIN_DIR "${DEPS_BIN_DIR}")
|
||||
set(HOSTDEPS_LIB_DIR "${DEPS_LIB_DIR}")
|
||||
set(HOSTDEPS_C_COMPILER "${DEPS_C_COMPILER}")
|
||||
set(HOSTDEPS_CXX_COMPILER "${DEPS_CXX_COMPILER}")
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
set(LIBUV_URL https://github.com/libuv/libuv/archive/v1.44.1.tar.gz)
|
||||
set(LIBUV_SHA256 e91614e6dc2dd0bfdd140ceace49438882206b7a6fb00b8750914e67a9ed6d6b)
|
||||
set(LIBUV_URL https://github.com/libuv/libuv/archive/v1.44.2.tar.gz)
|
||||
set(LIBUV_SHA256 e6e2ba8b4c349a4182a33370bb9be5e23c51b32efb9b9e209d0e8556b73a48da)
|
||||
|
||||
set(MSGPACK_URL https://github.com/msgpack/msgpack-c/releases/download/cpp-3.0.0/msgpack-3.0.0.tar.gz)
|
||||
set(MSGPACK_SHA256 bfbb71b7c02f806393bc3cbc491b40523b89e64f83860c58e3e54af47de176e4)
|
||||
set(MSGPACK_URL https://github.com/msgpack/msgpack-c/releases/download/c-4.0.0/msgpack-c-4.0.0.tar.gz)
|
||||
set(MSGPACK_SHA256 420fe35e7572f2a168d17e660ef981a589c9cbe77faa25eb34a520e1fcc032c8)
|
||||
|
||||
# https://github.com/LuaJIT/LuaJIT/tree/v2.1
|
||||
set(LUAJIT_URL https://github.com/LuaJIT/LuaJIT/archive/5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e.tar.gz)
|
||||
set(LUAJIT_SHA256 72294770c73ff2ed03deb9c81a38253c45fd634917583c6ae39f5143c9adc1e1)
|
||||
set(LUAJIT_URL https://github.com/LuaJIT/LuaJIT/archive/633f265f67f322cbe2c5fd11d3e46d968ac220f7.tar.gz)
|
||||
set(LUAJIT_SHA256 2681f0a6f624a64a8dfb70a5a377d494daf38960442c547d9c468674c1afa3c2)
|
||||
|
||||
set(LUA_URL https://www.lua.org/ftp/lua-5.1.5.tar.gz)
|
||||
set(LUA_SHA256 2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333)
|
||||
@@ -166,45 +173,48 @@ set(UNIBILIUM_SHA256 29815283c654277ef77a3adcc8840db79ddbb20a0f0b0c8f648bd8cd49a
|
||||
set(LIBTERMKEY_URL https://www.leonerd.org.uk/code/libtermkey/libtermkey-0.22.tar.gz)
|
||||
set(LIBTERMKEY_SHA256 6945bd3c4aaa83da83d80a045c5563da4edd7d0374c62c0d35aec09eb3014600)
|
||||
|
||||
set(LIBVTERM_URL https://www.leonerd.org.uk/code/libvterm/libvterm-0.1.4.tar.gz)
|
||||
set(LIBVTERM_SHA256 bc70349e95559c667672fc8c55b9527d9db9ada0fb80a3beda533418d782d3dd)
|
||||
set(LIBVTERM_URL https://www.leonerd.org.uk/code/libvterm/libvterm-0.3.1.tar.gz)
|
||||
set(LIBVTERM_SHA256 25a8ad9c15485368dfd0a8a9dca1aec8fea5c27da3fa74ec518d5d3787f0c397)
|
||||
|
||||
set(LUV_VERSION 1.43.0-0)
|
||||
set(LUV_URL https://github.com/luvit/luv/archive/${LUV_VERSION}.tar.gz)
|
||||
set(LUV_SHA256 a36865f34db029e2caa01245a41341a067038c09e94459b50db1346d9fdf82f0)
|
||||
set(LUV_VERSION 1.44.2-1)
|
||||
set(LUV_URL https://github.com/luvit/luv/archive/1.44.2-1.tar.gz)
|
||||
set(LUV_SHA256 f8c69908e17ec8ab370253d1508e23deaecfc0c4752d2efb77e427e579501104)
|
||||
|
||||
set(LUA_COMPAT53_URL https://github.com/keplerproject/lua-compat-5.3/archive/v0.9.tar.gz)
|
||||
set(LUA_COMPAT53_SHA256 ad05540d2d96a48725bb79a1def35cf6652a4e2ec26376e2617c8ce2baa6f416)
|
||||
|
||||
set(GPERF_URL https://github.com/neovim/deps/raw/ff5b4b18a87397a8564016071ae64f64bcd8c635/opt/gperf-3.1.tar.gz)
|
||||
set(GPERF_SHA256 588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2)
|
||||
|
||||
# cat.exe curl.exe curl-ca-bundle.crt diff.exe tee.exe xxd.exe
|
||||
set(WINTOOLS_URL https://github.com/neovim/deps/raw/d66e306abf5b846484b4f2adffd896bce7e065d2/opt/win32tools.zip)
|
||||
set(WINTOOLS_SHA256 2fb2f8d69070b3f16e029913fb95008e6be33893d77fc358012396c275a0fdb7)
|
||||
set(WINTOOLS_URL https://github.com/neovim/deps/raw/c1e7dd8de9e1b18d11dcfa0a192cd029262e5303/opt/win32tools.zip)
|
||||
set(WINTOOLS_SHA256 3c4c490a3d392ceeb1347cb77cc821a31900b688a2189276d3a1131a3f21daf1)
|
||||
|
||||
set(WINGUI_URL https://github.com/equalsraf/neovim-qt/releases/download/v0.2.16.1/neovim-qt.zip)
|
||||
set(WINGUI_SHA256 ddb4492db03da407703fb0ab271c4eb060250d1a7d71200e2b3b981cb0de59de)
|
||||
set(WINGUI_URL https://github.com/equalsraf/neovim-qt/releases/download/v0.2.17/neovim-qt.zip)
|
||||
set(WINGUI_SHA256 502e386eef677c2c2e0c11d8cbb27f3e12b4d96818369417e8da4129c4580c25)
|
||||
|
||||
set(WIN32YANK_X86_URL https://github.com/equalsraf/win32yank/releases/download/v0.0.4/win32yank-x86.zip)
|
||||
set(WIN32YANK_X86_SHA256 62f34e5a46c5d4a7b3f3b512e1ff7b77fedd432f42581cbe825233a996eed62c)
|
||||
set(WIN32YANK_X86_64_URL https://github.com/equalsraf/win32yank/releases/download/v0.0.4/win32yank-x64.zip)
|
||||
set(WIN32YANK_X86_64_SHA256 33a747a92da60fb65e668edbf7661d3d902411a2d545fe9dc08623cecd142a20)
|
||||
|
||||
set(WINPTY_URL https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip)
|
||||
set(WINPTY_SHA256 35a48ece2ff4acdcbc8299d4920de53eb86b1fb41e64d2fe5ae7898931bcee89)
|
||||
|
||||
set(GETTEXT_URL https://ftp.gnu.org/pub/gnu/gettext/gettext-0.20.1.tar.gz)
|
||||
set(GETTEXT_SHA256 66415634c6e8c3fa8b71362879ec7575e27da43da562c798a8a2f223e6e47f5c)
|
||||
|
||||
set(LIBICONV_URL https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz)
|
||||
set(LIBICONV_SHA256 ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178)
|
||||
|
||||
set(TREESITTER_C_URL https://github.com/tree-sitter/tree-sitter-c/archive/v0.20.1.tar.gz)
|
||||
set(TREESITTER_C_SHA256 ffcc2ef0eded59ad1acec9aec4f9b0c7dd209fc1a85d85f8b0e81298e3dddcc2)
|
||||
set(TREESITTER_C_URL https://github.com/tree-sitter/tree-sitter-c/archive/v0.20.2.tar.gz)
|
||||
set(TREESITTER_C_SHA256 af66fde03feb0df4faf03750102a0d265b007e5d957057b6b293c13116a70af2 )
|
||||
|
||||
set(TREESITTER_URL https://github.com/tree-sitter/tree-sitter/archive/v0.20.6.tar.gz)
|
||||
set(TREESITTER_SHA256 4d37eaef8a402a385998ff9aca3e1043b4a3bba899bceeff27a7178e1165b9de)
|
||||
set(TREESITTER_LUA_URL https://github.com/MunifTanjim/tree-sitter-lua/archive/v0.0.13.tar.gz)
|
||||
set(TREESITTER_LUA_SHA256 564594fe0ffd2f2fb3578a15019b723e1bc94ac82cb6a0103a6b3b9ddcc6f315)
|
||||
|
||||
set(TREESITTER_VIM_URL https://github.com/vigoux/tree-sitter-viml/archive/v0.2.0.tar.gz)
|
||||
set(TREESITTER_VIM_SHA256 608dcc31a7948cb66ae7f45494620e2e9face1af75598205541f80d782ec4501)
|
||||
|
||||
set(TREESITTER_HELP_URL https://github.com/neovim/tree-sitter-vimdoc/archive/v1.3.0.tar.gz)
|
||||
set(TREESITTER_HELP_SHA256 f33f6d49c7d71feb2fd68ef2b2684da150f9f8e486ad9726213631d673942331)
|
||||
|
||||
set(TREESITTER_URL https://github.com/tree-sitter/tree-sitter/archive/v0.20.7.tar.gz)
|
||||
set(TREESITTER_SHA256 b355e968ec2d0241bbd96748e00a9038f83968f85d822ecb9940cbe4c42e182e)
|
||||
|
||||
if(USE_BUNDLED_UNIBILIUM)
|
||||
include(BuildUnibilium)
|
||||
@@ -233,7 +243,7 @@ if(USE_BUNDLED_LUAJIT)
|
||||
include(BuildLuajit)
|
||||
endif()
|
||||
|
||||
if(USE_BUNDLED_LUA AND NOT CMAKE_CROSSCOMPILING)
|
||||
if(USE_BUNDLED_LUA)
|
||||
include(BuildLua)
|
||||
endif()
|
||||
|
||||
@@ -245,10 +255,6 @@ if(USE_BUNDLED_LUV)
|
||||
include(BuildLuv)
|
||||
endif()
|
||||
|
||||
if(USE_BUNDLED_GPERF)
|
||||
include(BuildGperf)
|
||||
endif()
|
||||
|
||||
if(USE_BUNDLED_GETTEXT)
|
||||
include(BuildGettext)
|
||||
endif()
|
||||
@@ -284,18 +290,6 @@ if(WIN32)
|
||||
elseif(TARGET_ARCH STREQUAL "X86")
|
||||
set(TARGET_ARCH ia32)
|
||||
endif()
|
||||
|
||||
GetBinaryDep(TARGET winpty
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin
|
||||
COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/winpty/${TARGET_ARCH}/bin/*
|
||||
-DTO=${DEPS_INSTALL_DIR}/bin/
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake
|
||||
COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/winpty/include/*
|
||||
-DTO=${DEPS_INSTALL_DIR}/include/
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake
|
||||
COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/winpty/${TARGET_ARCH}/lib/*
|
||||
-DTO=${DEPS_INSTALL_DIR}/lib/
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake)
|
||||
endif()
|
||||
|
||||
# clean-shared-libraries removes ${DEPS_INSTALL_DIR}/lib/nvim/parser/c.dll,
|
||||
@@ -312,6 +306,7 @@ else()
|
||||
set(ALL_DEPS clean-shared-libraries)
|
||||
endif()
|
||||
|
||||
# TODO(justinmk): does anyone use this target?
|
||||
add_custom_target(third-party ALL
|
||||
COMMAND ${CMAKE_COMMAND} -E touch .third-party
|
||||
DEPENDS ${ALL_DEPS}
|
@@ -1,5 +1,4 @@
|
||||
if(MSVC)
|
||||
|
||||
ExternalProject_Add(gettext
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${GETTEXT_URL}
|
||||
@@ -19,14 +18,13 @@ if(MSVC)
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
# Pass toolchain
|
||||
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
${BUILD_TYPE_STRING}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
-DLIBICONV_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include
|
||||
-DLIBICONV_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}libcharset${CMAKE_STATIC_LIBRARY_SUFFIX}$<SEMICOLON>${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}libiconv${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE})
|
||||
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>)
|
||||
else()
|
||||
message(FATAL_ERROR "Trying to build gettext in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
|
||||
endif()
|
@@ -1,5 +1,4 @@
|
||||
if(MSVC)
|
||||
|
||||
ExternalProject_Add(libiconv
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LIBICONV_URL}
|
||||
@@ -19,12 +18,11 @@ if(MSVC)
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
# Pass toolchain
|
||||
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
${BUILD_TYPE_STRING}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE})
|
||||
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>)
|
||||
else()
|
||||
message(FATAL_ERROR "Trying to build libiconv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
|
||||
endif()
|
43
cmake.deps/cmake/BuildLibtermkey.cmake
Normal file
43
cmake.deps/cmake/BuildLibtermkey.cmake
Normal file
@@ -0,0 +1,43 @@
|
||||
if(WIN32)
|
||||
set(LIBTERMKEY_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/libtermkeyCMakeLists.txt
|
||||
${DEPS_BUILD_DIR}/src/libtermkey/CMakeLists.txt
|
||||
COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/libtermkey
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
# Pass toolchain
|
||||
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
|
||||
${BUILD_TYPE_STRING}
|
||||
# Hack to avoid -rdynamic in Mingw
|
||||
-DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS=""
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
-DUNIBILIUM_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include
|
||||
-DUNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX})
|
||||
set(LIBTERMKEY_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>)
|
||||
set(LIBTERMKEY_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
set(LIBTERMKEY_BUILD_COMMAND "" BUILD_IN_SOURCE 1)
|
||||
set(LIBTERMKEY_INSTALL_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER}
|
||||
PREFIX=${DEPS_INSTALL_DIR} PKG_CONFIG_PATH=${DEPS_LIB_DIR}/pkgconfig
|
||||
CFLAGS=-fPIC LDFLAGS+=-static ${DEFAULT_MAKE_CFLAGS} install)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libtermkey
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LIBTERMKEY_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libtermkey
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libtermkey
|
||||
-DURL=${LIBTERMKEY_URL}
|
||||
-DEXPECTED_SHA256=${LIBTERMKEY_SHA256}
|
||||
-DTARGET=libtermkey
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
CONFIGURE_COMMAND "${LIBTERMKEY_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND "${LIBTERMKEY_BUILD_COMMAND}"
|
||||
INSTALL_COMMAND "${LIBTERMKEY_INSTALL_COMMAND}")
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS libtermkey)
|
26
cmake.deps/cmake/BuildLibuv.cmake
Normal file
26
cmake.deps/cmake/BuildLibuv.cmake
Normal file
@@ -0,0 +1,26 @@
|
||||
ExternalProject_Add(libuv
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LIBUV_URL}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
-DCMAKE_INSTALL_LIBDIR=lib
|
||||
-DBUILD_TESTING=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
-DLIBUV_BUILD_SHARED=OFF
|
||||
CMAKE_CACHE_ARGS
|
||||
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libuv
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libuv
|
||||
-DURL=${LIBUV_URL}
|
||||
-DEXPECTED_SHA256=${LIBUV_SHA256}
|
||||
-DTARGET=libuv
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
PATCH_COMMAND
|
||||
${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libuv init
|
||||
COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libuv apply --ignore-whitespace
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/patches/libuv-disable-shared.patch)
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS libuv)
|
46
cmake.deps/cmake/BuildLibvterm.cmake
Normal file
46
cmake.deps/cmake/BuildLibvterm.cmake
Normal file
@@ -0,0 +1,46 @@
|
||||
if(WIN32)
|
||||
set(LIBVTERM_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibvtermCMakeLists.txt
|
||||
${DEPS_BUILD_DIR}/src/libvterm/CMakeLists.txt
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/Libvterm-tbl2inc_c.cmake
|
||||
${DEPS_BUILD_DIR}/src/libvterm/tbl2inc_c.cmake
|
||||
COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/libvterm
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR})
|
||||
if(MSVC)
|
||||
list(APPEND LIBVTERM_CONFIGURE_COMMAND "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1}")
|
||||
else()
|
||||
list(APPEND LIBVTERM_CONFIGURE_COMMAND "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} -fPIC")
|
||||
endif()
|
||||
set(LIBVTERM_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>)
|
||||
set(LIBVTERM_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>)
|
||||
else()
|
||||
set(LIBVTERM_INSTALL_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER}
|
||||
PREFIX=${DEPS_INSTALL_DIR}
|
||||
CFLAGS=-fPIC
|
||||
LDFLAGS+=-static
|
||||
${DEFAULT_MAKE_CFLAGS}
|
||||
install)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libvterm
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LIBVTERM_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libvterm
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libvterm
|
||||
-DURL=${LIBVTERM_URL}
|
||||
-DEXPECTED_SHA256=${LIBVTERM_SHA256}
|
||||
-DTARGET=libvterm
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND "${LIBVTERM_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND "${LIBVTERM_BUILD_COMMAND}"
|
||||
INSTALL_COMMAND "${LIBVTERM_INSTALL_COMMAND}")
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS libvterm)
|
@@ -1,36 +1,3 @@
|
||||
# BuildLua(CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...)
|
||||
# Reusable function to build lua, wraps ExternalProject_Add.
|
||||
# Failing to pass a command argument will result in no command being run
|
||||
function(BuildLua)
|
||||
cmake_parse_arguments(_lua
|
||||
""
|
||||
""
|
||||
"CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND"
|
||||
${ARGN})
|
||||
|
||||
if(NOT _lua_CONFIGURE_COMMAND AND NOT _lua_BUILD_COMMAND
|
||||
AND NOT _lua_INSTALL_COMMAND)
|
||||
message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND")
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(lua
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LUA_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/lua
|
||||
-DURL=${LUA_URL}
|
||||
-DEXPECTED_SHA256=${LUA_SHA256}
|
||||
-DTARGET=lua
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
CONFIGURE_COMMAND "${_lua_CONFIGURE_COMMAND}"
|
||||
BUILD_IN_SOURCE 1
|
||||
BUILD_COMMAND "${_lua_BUILD_COMMAND}"
|
||||
INSTALL_COMMAND "${_lua_INSTALL_COMMAND}")
|
||||
endfunction()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(LUA_TARGET linux)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
@@ -72,16 +39,26 @@ set(LUA_CONFIGURE_COMMAND
|
||||
-e "s@\\(#define LUA_ROOT[ ]*\"\\)/usr/local@\\1${DEPS_INSTALL_DIR}@"
|
||||
-i ${DEPS_BUILD_DIR}/src/lua/src/luaconf.h)
|
||||
set(LUA_INSTALL_TOP_ARG "INSTALL_TOP=${DEPS_INSTALL_DIR}")
|
||||
set(LUA_BUILD_COMMAND
|
||||
${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} ${LUA_TARGET})
|
||||
set(LUA_INSTALL_COMMAND
|
||||
${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} install)
|
||||
|
||||
message(STATUS "Lua target is ${LUA_TARGET}")
|
||||
|
||||
BuildLua(CONFIGURE_COMMAND ${LUA_CONFIGURE_COMMAND}
|
||||
BUILD_COMMAND ${LUA_BUILD_COMMAND}
|
||||
INSTALL_COMMAND ${LUA_INSTALL_COMMAND})
|
||||
ExternalProject_Add(lua
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LUA_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/lua
|
||||
-DURL=${LUA_URL}
|
||||
-DEXPECTED_SHA256=${LUA_SHA256}
|
||||
-DTARGET=lua
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
CONFIGURE_COMMAND "${LUA_CONFIGURE_COMMAND}"
|
||||
BUILD_IN_SOURCE 1
|
||||
BUILD_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} ${LUA_TARGET}
|
||||
INSTALL_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} install)
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS lua)
|
||||
|
||||
set(BUSTED ${DEPS_INSTALL_DIR}/bin/busted)
|
@@ -5,7 +5,7 @@ function(BuildLuajit)
|
||||
cmake_parse_arguments(_luajit
|
||||
""
|
||||
"TARGET"
|
||||
"CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND"
|
||||
"CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND;DEPENDS"
|
||||
${ARGN})
|
||||
if(NOT _luajit_CONFIGURE_COMMAND AND NOT _luajit_BUILD_COMMAND
|
||||
AND NOT _luajit_INSTALL_COMMAND)
|
||||
@@ -30,13 +30,14 @@ function(BuildLuajit)
|
||||
CONFIGURE_COMMAND "${_luajit_CONFIGURE_COMMAND}"
|
||||
BUILD_IN_SOURCE 1
|
||||
BUILD_COMMAND "${_luajit_BUILD_COMMAND}"
|
||||
INSTALL_COMMAND "${_luajit_INSTALL_COMMAND}")
|
||||
INSTALL_COMMAND "${_luajit_INSTALL_COMMAND}"
|
||||
DEPENDS "${_luajit_DEPENDS}")
|
||||
|
||||
# Create symlink for development version manually.
|
||||
if(UNIX)
|
||||
add_custom_command(
|
||||
TARGET ${_luajit_TARGET}
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink luajit-2.1.0-beta3 ${DEPS_BIN_DIR}/luajit)
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink luajit-2.1.0-beta3 ${DEPS_BIN_DIR}/${_luajit_TARGET})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -51,53 +52,57 @@ if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
|
||||
else()
|
||||
set(AMD64_ABI "")
|
||||
endif()
|
||||
set(INSTALLCMD_UNIX ${MAKE_PRG} CFLAGS=-fPIC
|
||||
CFLAGS+=-DLUA_USE_APICHECK
|
||||
CFLAGS+=-funwind-tables
|
||||
${NO_STACK_CHECK}
|
||||
${AMD64_ABI}
|
||||
CCDEBUG+=-g
|
||||
Q=
|
||||
install)
|
||||
set(BUILDCMD_UNIX ${MAKE_PRG} CFLAGS=-fPIC
|
||||
CFLAGS+=-DLUA_USE_APICHECK
|
||||
CFLAGS+=-funwind-tables
|
||||
${NO_STACK_CHECK}
|
||||
${AMD64_ABI}
|
||||
CCDEBUG+=-g
|
||||
Q=)
|
||||
|
||||
if(UNIX)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||
set(DEPLOYMENT_TARGET "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
else()
|
||||
# Use the same target as our nightly builds
|
||||
set(DEPLOYMENT_TARGET "MACOSX_DEPLOYMENT_TARGET=10.11")
|
||||
endif()
|
||||
else()
|
||||
set(DEPLOYMENT_TARGET "")
|
||||
endif()
|
||||
# Setting MACOSX_DEPLOYMENT_TARGET is mandatory for LuaJIT; use version set by
|
||||
# cmake.deps/CMakeLists.txt (either environment variable or current system version).
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
set(DEPLOYMENT_TARGET "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
endif()
|
||||
|
||||
BuildLuaJit(INSTALL_COMMAND ${INSTALLCMD_UNIX}
|
||||
if((UNIX AND NOT APPLE) OR (APPLE AND NOT CMAKE_OSX_ARCHITECTURES))
|
||||
BuildLuaJit(INSTALL_COMMAND ${BUILDCMD_UNIX}
|
||||
CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR}
|
||||
${DEPLOYMENT_TARGET})
|
||||
${DEPLOYMENT_TARGET} install)
|
||||
|
||||
elseif(MINGW AND CMAKE_CROSSCOMPILING)
|
||||
elseif(CMAKE_OSX_ARCHITECTURES AND APPLE)
|
||||
|
||||
# Build luajit for the host
|
||||
BuildLuaJit(TARGET luajit_host
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ${INSTALLCMD_UNIX}
|
||||
CC=${HOST_C_COMPILER} PREFIX=${HOSTDEPS_INSTALL_DIR})
|
||||
# Passing multiple `-arch` flags to the LuaJIT build will cause it to fail.
|
||||
# To get a working universal build, we build each requested architecture slice
|
||||
# individually then `lipo` them all up.
|
||||
set(LUAJIT_SRC_DIR "${DEPS_BUILD_DIR}/src/luajit")
|
||||
foreach(ARCH IN LISTS CMAKE_OSX_ARCHITECTURES)
|
||||
set(STATIC_CC "${LUAJIT_C_COMPILER} -arch ${ARCH}")
|
||||
set(DYNAMIC_CC "${LUAJIT_C_COMPILER} -arch ${ARCH} -fPIC")
|
||||
set(TARGET_LD "${LUAJIT_C_COMPILER} -arch ${ARCH}")
|
||||
list(APPEND LUAJIT_THIN_EXECUTABLES "${LUAJIT_SRC_DIR}-${ARCH}/src/luajit")
|
||||
list(APPEND LUAJIT_THIN_STATIC_LIBS "${LUAJIT_SRC_DIR}-${ARCH}/src/libluajit.a")
|
||||
list(APPEND LUAJIT_THIN_DYLIBS "${LUAJIT_SRC_DIR}-${ARCH}/src/libluajit.so")
|
||||
list(APPEND LUAJIT_THIN_TARGETS "luajit-${ARCH}")
|
||||
|
||||
# Build luajit for the target
|
||||
# See https://luajit.org/install.html#cross.
|
||||
BuildLuaJit(TARGET "luajit-${ARCH}"
|
||||
BUILD_COMMAND ${BUILDCMD_UNIX}
|
||||
CC=${LUAJIT_C_COMPILER} STATIC_CC=${STATIC_CC}
|
||||
DYNAMIC_CC=${DYNAMIC_CC} TARGET_LD=${TARGET_LD}
|
||||
PREFIX=${DEPS_INSTALL_DIR}
|
||||
${DEPLOYMENT_TARGET})
|
||||
endforeach()
|
||||
BuildLuaJit(
|
||||
# Similar to Unix + cross - fPIC
|
||||
INSTALL_COMMAND
|
||||
${MAKE_PRG} PREFIX=${DEPS_INSTALL_DIR}
|
||||
BUILDMODE=static install
|
||||
TARGET_SYS=${CMAKE_SYSTEM_NAME}
|
||||
CROSS=${CROSS_TARGET}-
|
||||
HOST_CC=${HOST_C_COMPILER} HOST_CFLAGS=${HOST_C_FLAGS}
|
||||
HOST_LDFLAGS=${HOST_EXE_LINKER_FLAGS}
|
||||
FILE_T=luajit.exe
|
||||
Q=
|
||||
INSTALL_TSYMNAME=luajit.exe)
|
||||
CONFIGURE_COMMAND ${BUILDCMD_UNIX} CC=${LUAJIT_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} ${DEPLOYMENT_TARGET}
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${LUAJIT_SRC_DIR}/src/luajit ${LUAJIT_SRC_DIR}/src/libluajit.so ${LUAJIT_SRC_DIR}/src/libluajit.a
|
||||
BUILD_COMMAND lipo ${LUAJIT_THIN_EXECUTABLES} -create -output ${LUAJIT_SRC_DIR}/src/luajit
|
||||
COMMAND lipo ${LUAJIT_THIN_STATIC_LIBS} -create -output ${LUAJIT_SRC_DIR}/src/libluajit.a
|
||||
COMMAND lipo ${LUAJIT_THIN_DYLIBS} -create -output ${LUAJIT_SRC_DIR}/src/libluajit.so
|
||||
INSTALL_COMMAND ${BUILDCMD_UNIX} CC=${LUAJIT_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} ${DEPLOYMENT_TARGET} install
|
||||
DEPENDS ${LUAJIT_THIN_TARGETS}
|
||||
)
|
||||
|
||||
elseif(MINGW)
|
||||
|
@@ -9,39 +9,6 @@
|
||||
|
||||
option(USE_BUNDLED_BUSTED "Use the bundled version of busted to run tests." ON)
|
||||
|
||||
# BuildLuarocks(CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...)
|
||||
# Reusable function to build luarocks, wraps ExternalProject_Add.
|
||||
# Failing to pass a command argument will result in no command being run
|
||||
function(BuildLuarocks)
|
||||
cmake_parse_arguments(_luarocks
|
||||
""
|
||||
""
|
||||
"CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND"
|
||||
${ARGN})
|
||||
|
||||
if(NOT _luarocks_CONFIGURE_COMMAND AND NOT _luarocks_BUILD_COMMAND
|
||||
AND NOT _luarocks_INSTALL_COMMAND)
|
||||
message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND")
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(luarocks
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LUAROCKS_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luarocks
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/luarocks
|
||||
-DURL=${LUAROCKS_URL}
|
||||
-DEXPECTED_SHA256=${LUAROCKS_SHA256}
|
||||
-DTARGET=luarocks
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND "${_luarocks_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND "${_luarocks_BUILD_COMMAND}"
|
||||
INSTALL_COMMAND "${_luarocks_INSTALL_COMMAND}")
|
||||
endfunction()
|
||||
|
||||
# The luarocks binary location
|
||||
set(LUAROCKS_BINARY ${HOSTDEPS_BIN_DIR}/luarocks)
|
||||
|
||||
@@ -56,7 +23,7 @@ endif()
|
||||
# Defaults to 5.1 for bundled LuaJIT/Lua.
|
||||
set(LUA_VERSION "5.1")
|
||||
|
||||
if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING))
|
||||
if(UNIX)
|
||||
|
||||
if(USE_BUNDLED_LUAJIT)
|
||||
list(APPEND LUAROCKS_OPTS
|
||||
@@ -90,10 +57,9 @@ if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING))
|
||||
endif()
|
||||
endif()
|
||||
|
||||
BuildLuarocks(
|
||||
CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/luarocks/configure
|
||||
--prefix=${HOSTDEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS}
|
||||
INSTALL_COMMAND ${MAKE_PRG} -j1 bootstrap)
|
||||
set(LUAROCKS_CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/luarocks/configure
|
||||
--prefix=${HOSTDEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS})
|
||||
set(LUAROCKS_INSTALL_COMMAND ${MAKE_PRG} -j1 bootstrap)
|
||||
elseif(MSVC OR MINGW)
|
||||
|
||||
if(MINGW)
|
||||
@@ -103,7 +69,7 @@ elseif(MSVC OR MINGW)
|
||||
endif()
|
||||
|
||||
# Ignore USE_BUNDLED_LUAJIT - always ON for native Win32
|
||||
BuildLuarocks(INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F
|
||||
set(LUAROCKS_INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F
|
||||
/LUA ${DEPS_INSTALL_DIR}
|
||||
/LIB ${DEPS_LIB_DIR}
|
||||
/BIN ${DEPS_BIN_DIR}
|
||||
@@ -119,13 +85,27 @@ else()
|
||||
message(FATAL_ERROR "Trying to build luarocks in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(luarocks
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LUAROCKS_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luarocks
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/luarocks
|
||||
-DURL=${LUAROCKS_URL}
|
||||
-DEXPECTED_SHA256=${LUAROCKS_SHA256}
|
||||
-DTARGET=luarocks
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND "${LUAROCKS_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "${LUAROCKS_INSTALL_COMMAND}")
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS luarocks)
|
||||
|
||||
if(USE_BUNDLED_LUAJIT)
|
||||
add_dependencies(luarocks luajit)
|
||||
if(MINGW AND CMAKE_CROSSCOMPILING)
|
||||
add_dependencies(luarocks luajit_host)
|
||||
endif()
|
||||
elseif(USE_BUNDLED_LUA)
|
||||
add_dependencies(luarocks lua)
|
||||
endif()
|
||||
@@ -133,16 +113,14 @@ set(ROCKS_DIR ${HOSTDEPS_LIB_DIR}/luarocks/rocks-${LUA_VERSION})
|
||||
|
||||
# mpack
|
||||
add_custom_command(OUTPUT ${ROCKS_DIR}/mpack
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build mpack 1.0.8-0 ${LUAROCKS_BUILDARGS}
|
||||
COMMAND ${LUAROCKS_BINARY} build mpack 1.0.8-0 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS luarocks)
|
||||
add_custom_target(mpack DEPENDS ${ROCKS_DIR}/mpack)
|
||||
list(APPEND THIRD_PARTY_DEPS mpack)
|
||||
|
||||
# lpeg
|
||||
add_custom_command(OUTPUT ${ROCKS_DIR}/lpeg
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build lpeg 1.0.2-1 ${LUAROCKS_BUILDARGS}
|
||||
COMMAND ${LUAROCKS_BINARY} build lpeg 1.0.2-1 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS mpack)
|
||||
add_custom_target(lpeg DEPENDS ${ROCKS_DIR}/lpeg)
|
||||
list(APPEND THIRD_PARTY_DEPS lpeg)
|
||||
@@ -150,8 +128,7 @@ list(APPEND THIRD_PARTY_DEPS lpeg)
|
||||
if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA)
|
||||
# luabitop
|
||||
add_custom_command(OUTPUT ${ROCKS_DIR}/luabitop
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS}
|
||||
COMMAND ${LUAROCKS_BINARY} build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS lpeg)
|
||||
add_custom_target(luabitop DEPENDS ${ROCKS_DIR}/luabitop)
|
||||
list(APPEND THIRD_PARTY_DEPS luabitop)
|
||||
@@ -166,8 +143,7 @@ if(USE_BUNDLED_BUSTED)
|
||||
|
||||
# penlight
|
||||
add_custom_command(OUTPUT ${ROCKS_DIR}/penlight
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build penlight 1.5.4-1 ${LUAROCKS_BUILDARGS}
|
||||
COMMAND ${LUAROCKS_BINARY} build penlight 1.5.4-1 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS ${PENLIGHT_DEPENDS})
|
||||
add_custom_target(penlight DEPENDS ${ROCKS_DIR}/penlight)
|
||||
|
||||
@@ -180,53 +156,32 @@ if(USE_BUNDLED_BUSTED)
|
||||
set(LUACHECK_EXE "${HOSTDEPS_BIN_DIR}/luacheck")
|
||||
endif()
|
||||
add_custom_command(OUTPUT ${BUSTED_EXE}
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build busted 2.0.0 ${LUAROCKS_BUILDARGS}
|
||||
COMMAND ${LUAROCKS_BINARY} build busted 2.0.0 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS penlight)
|
||||
add_custom_target(busted DEPENDS ${BUSTED_EXE})
|
||||
|
||||
# luacheck
|
||||
add_custom_command(OUTPUT ${LUACHECK_EXE}
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build luacheck 0.23.0-1 ${LUAROCKS_BUILDARGS}
|
||||
COMMAND ${LUAROCKS_BINARY} build luacheck 0.23.0-1 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS busted)
|
||||
add_custom_target(luacheck DEPENDS ${LUACHECK_EXE})
|
||||
|
||||
# luv
|
||||
set(LUV_DEPS luacheck)
|
||||
if(USE_BUNDLED_LUV)
|
||||
list(APPEND LUV_DEPS luv-static lua-compat-5.3)
|
||||
if(MINGW AND CMAKE_CROSSCOMPILING)
|
||||
list(APPEND LUV_DEPS libuv_host)
|
||||
endif()
|
||||
set(LUV_ARGS "CFLAGS=-O0 -g3 -fPIC")
|
||||
if(USE_BUNDLED_LIBUV)
|
||||
list(APPEND LUV_ARGS LIBUV_DIR=${HOSTDEPS_INSTALL_DIR})
|
||||
# workaround for bug introduced in
|
||||
# https://github.com/luarocks/luarocks/commit/83126ba324846b754ffc5e0345341f01262b3f86
|
||||
if(MSVC)
|
||||
list(APPEND LUV_ARGS LIBUV_LIBDIR=${HOSTDEPS_INSTALL_DIR}/lib)
|
||||
endif()
|
||||
endif()
|
||||
SET(LUV_PRIVATE_ARGS LUA_COMPAT53_INCDIR=${DEPS_BUILD_DIR}/src/lua-compat-5.3/c-api)
|
||||
add_custom_command(OUTPUT ${ROCKS_DIR}/luv
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS make ${LUAROCKS_BUILDARGS} ${LUV_ARGS} ${LUV_PRIVATE_ARGS}
|
||||
WORKING_DIRECTORY ${DEPS_BUILD_DIR}/src/luv
|
||||
DEPENDS ${LUV_DEPS})
|
||||
set(NVIM_CLIENT_DEPS luacheck luv-static lua-compat-5.3)
|
||||
else()
|
||||
add_custom_command(OUTPUT ${ROCKS_DIR}/luv
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build luv ${LUV_VERSION} ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS ${LUV_DEPS})
|
||||
COMMAND ${LUAROCKS_BINARY} build luv ${LUV_VERSION} ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS luacheck)
|
||||
add_custom_target(luv DEPENDS ${ROCKS_DIR}/luv)
|
||||
set(NVIM_CLIENT_DEPS luv)
|
||||
endif()
|
||||
add_custom_target(luv DEPENDS ${ROCKS_DIR}/luv)
|
||||
|
||||
# nvim-client: https://github.com/neovim/lua-client
|
||||
add_custom_command(OUTPUT ${ROCKS_DIR}/nvim-client
|
||||
COMMAND ${LUAROCKS_BINARY}
|
||||
ARGS build nvim-client 0.2.2-1 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS luv)
|
||||
COMMAND ${LUAROCKS_BINARY} build nvim-client 0.2.4-1 ${LUAROCKS_BUILDARGS}
|
||||
DEPENDS ${NVIM_CLIENT_DEPS})
|
||||
add_custom_target(nvim-client DEPENDS ${ROCKS_DIR}/nvim-client)
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS busted luacheck nvim-client)
|
103
cmake.deps/cmake/BuildLuv.cmake
Normal file
103
cmake.deps/cmake/BuildLuv.cmake
Normal file
@@ -0,0 +1,103 @@
|
||||
set(LUV_SRC_DIR ${DEPS_BUILD_DIR}/src/luv)
|
||||
set(LUV_INCLUDE_FLAGS
|
||||
"-I${DEPS_INSTALL_DIR}/include -I${DEPS_INSTALL_DIR}/include/luajit-2.1")
|
||||
|
||||
set(LUV_CONFIGURE_COMMAND_COMMON
|
||||
${CMAKE_COMMAND} ${LUV_SRC_DIR}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
${BUILD_TYPE_STRING}
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_ALT_SEP}
|
||||
-DLUA_BUILD_TYPE=System
|
||||
-DLUA_COMPAT53_DIR=${DEPS_BUILD_DIR}/src/lua-compat-5.3
|
||||
-DWITH_SHARED_LIBUV=ON
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_MODULE=OFF)
|
||||
|
||||
if(USE_BUNDLED_LUAJIT)
|
||||
list(APPEND LUV_CONFIGURE_COMMAND_COMMON -DWITH_LUA_ENGINE=LuaJit)
|
||||
elseif(USE_BUNDLED_LUA)
|
||||
list(APPEND LUV_CONFIGURE_COMMAND_COMMON -DWITH_LUA_ENGINE=Lua)
|
||||
else()
|
||||
find_package(LuaJit)
|
||||
if(LUAJIT_FOUND)
|
||||
list(APPEND LUV_CONFIGURE_COMMAND_COMMON -DWITH_LUA_ENGINE=LuaJit)
|
||||
else()
|
||||
list(APPEND LUV_CONFIGURE_COMMAND_COMMON -DWITH_LUA_ENGINE=Lua)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(USE_BUNDLED_LIBUV)
|
||||
set(LUV_CONFIGURE_COMMAND_COMMON
|
||||
${LUV_CONFIGURE_COMMAND_COMMON}
|
||||
-DCMAKE_PREFIX_PATH=${DEPS_INSTALL_DIR}
|
||||
-DLIBUV_LIBRARIES=uv_a)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set(LUV_CONFIGURE_COMMAND
|
||||
${LUV_CONFIGURE_COMMAND_COMMON}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
# Same as Unix without fPIC
|
||||
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} ${LUV_INCLUDE_FLAGS}"
|
||||
# Make sure we use the same generator, otherwise we may
|
||||
# accidentally end up using different MSVC runtimes
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR})
|
||||
else()
|
||||
set(LUV_CONFIGURE_COMMAND
|
||||
${LUV_CONFIGURE_COMMAND_COMMON}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} ${LUV_INCLUDE_FLAGS} -fPIC")
|
||||
if(CMAKE_GENERATOR MATCHES "Unix Makefiles" AND
|
||||
(CMAKE_SYSTEM_NAME MATCHES ".*BSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly"))
|
||||
set(LUV_CONFIGURE_COMMAND ${LUV_CONFIGURE_COMMAND} -DCMAKE_MAKE_PROGRAM=gmake)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(lua-compat-5.3
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${LUA_COMPAT53_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-compat-5.3
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/lua-compat-5.3
|
||||
-DURL=${LUA_COMPAT53_URL}
|
||||
-DEXPECTED_SHA256=${LUA_COMPAT53_SHA256}
|
||||
-DTARGET=lua-compat-5.3
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
ExternalProject_Add(luv-static
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
DEPENDS lua-compat-5.3
|
||||
URL ${LUV_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luv
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/luv
|
||||
-DURL=${LUV_URL}
|
||||
-DEXPECTED_SHA256=${LUV_SHA256}
|
||||
-DTARGET=luv-static
|
||||
# The source is shared with BuildLuarocks (with USE_BUNDLED_LUV).
|
||||
-DSRC_DIR=${DEPS_BUILD_DIR}/src/luv
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
CONFIGURE_COMMAND "${LUV_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>
|
||||
LIST_SEPARATOR |)
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS luv-static)
|
||||
if(USE_BUNDLED_LUAJIT)
|
||||
add_dependencies(luv-static luajit)
|
||||
elseif(USE_BUNDLED_LUA)
|
||||
add_dependencies(luv-static lua)
|
||||
endif()
|
||||
if(USE_BUNDLED_LIBUV)
|
||||
add_dependencies(luv-static libuv)
|
||||
endif()
|
42
cmake.deps/cmake/BuildMsgpack.cmake
Normal file
42
cmake.deps/cmake/BuildMsgpack.cmake
Normal file
@@ -0,0 +1,42 @@
|
||||
set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack
|
||||
-DMSGPACK_BUILD_TESTS=OFF
|
||||
-DMSGPACK_BUILD_EXAMPLES=OFF
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_ALT_SEP}
|
||||
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} -fPIC"
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR})
|
||||
|
||||
if(MSVC)
|
||||
# Same as Unix without fPIC
|
||||
set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack
|
||||
-DMSGPACK_BUILD_TESTS=OFF
|
||||
-DMSGPACK_BUILD_EXAMPLES=OFF
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
${BUILD_TYPE_STRING}
|
||||
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1}"
|
||||
# Make sure we use the same generator, otherwise we may
|
||||
# accidentally end up using different MSVC runtimes
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR})
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(msgpack
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${MSGPACK_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/msgpack
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/msgpack
|
||||
-DURL=${MSGPACK_URL}
|
||||
-DEXPECTED_SHA256=${MSGPACK_SHA256}
|
||||
-DTARGET=msgpack
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
CONFIGURE_COMMAND "${MSGPACK_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>
|
||||
LIST_SEPARATOR |)
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS msgpack)
|
38
cmake.deps/cmake/BuildTreesitter.cmake
Normal file
38
cmake.deps/cmake/BuildTreesitter.cmake
Normal file
@@ -0,0 +1,38 @@
|
||||
if(MSVC)
|
||||
set(TREESITTER_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/TreesitterCMakeLists.txt
|
||||
${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt
|
||||
COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
${BUILD_TYPE_STRING}
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR})
|
||||
set(TREESITTER_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>)
|
||||
set(TREESITTER_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>)
|
||||
else()
|
||||
set(TS_CFLAGS "-O3 -Wall -Wextra")
|
||||
set(TREESITTER_BUILD_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} CFLAGS=${TS_CFLAGS})
|
||||
set(TREESITTER_INSTALL_COMMAND
|
||||
${MAKE_PRG} CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} install)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(tree-sitter
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${TREESITTER_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/tree-sitter
|
||||
INSTALL_DIR ${DEPS_INSTALL_DIR}
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/tree-sitter
|
||||
-DURL=${TREESITTER_URL}
|
||||
-DEXPECTED_SHA256=${TREESITTER_SHA256}
|
||||
-DTARGET=tree-sitter
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND "${TREESITTER_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND "${TREESITTER_BUILD_COMMAND}"
|
||||
INSTALL_COMMAND "${TREESITTER_INSTALL_COMMAND}")
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS tree-sitter)
|
28
cmake.deps/cmake/BuildTreesitterParsers.cmake
Normal file
28
cmake.deps/cmake/BuildTreesitterParsers.cmake
Normal file
@@ -0,0 +1,28 @@
|
||||
function(BuildTSParser LANG TS_URL TS_SHA256 TS_CMAKE_FILE)
|
||||
set(NAME treesitter-${LANG})
|
||||
ExternalProject_Add(${NAME}
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${TREESITTER_C_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME}
|
||||
CMAKE_CACHE_ARGS
|
||||
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/${NAME}
|
||||
-DURL=${TS_URL}
|
||||
-DEXPECTED_SHA256=${TS_SHA256}
|
||||
-DTARGET=${NAME}
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE}
|
||||
${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
-DPARSERLANG=${LANG})
|
||||
endfunction()
|
||||
|
||||
BuildTSParser(c ${TREESITTER_C_URL} ${TREESITTER_C_SHA256} TreesitterParserCMakeLists.txt)
|
||||
BuildTSParser(lua ${TREESITTER_LUA_URL} ${TREESITTER_LUA_SHA256} TreesitterParserCMakeLists.txt)
|
||||
BuildTSParser(vim ${TREESITTER_VIM_URL} ${TREESITTER_VIM_SHA256} TreesitterParserCMakeLists.txt)
|
||||
BuildTSParser(help ${TREESITTER_HELP_URL} ${TREESITTER_HELP_SHA256} TreesitterParserCMakeLists.txt)
|
37
cmake.deps/cmake/BuildUnibilium.cmake
Normal file
37
cmake.deps/cmake/BuildUnibilium.cmake
Normal file
@@ -0,0 +1,37 @@
|
||||
if(WIN32)
|
||||
set(UNIBILIUM_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/UnibiliumCMakeLists.txt
|
||||
${DEPS_BUILD_DIR}/src/unibilium/CMakeLists.txt
|
||||
COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/unibilium
|
||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||
# Pass toolchain
|
||||
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
|
||||
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
|
||||
${BUILD_TYPE_STRING}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR})
|
||||
set(UNIBILIUM_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>)
|
||||
set(UNIBILIUM_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>)
|
||||
else()
|
||||
set(UNIBILIUM_BUILD_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER}
|
||||
PREFIX=${DEPS_INSTALL_DIR} CFLAGS=-fPIC LDFLAGS+=-static
|
||||
BUILD_IN_SOURCE 1)
|
||||
set(UNIBILIUM_INSTALL_COMMAND ${MAKE_PRG} PREFIX=${DEPS_INSTALL_DIR} install)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(unibilium
|
||||
PREFIX ${DEPS_BUILD_DIR}
|
||||
URL ${UNIBILIUM_URL}
|
||||
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium
|
||||
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
||||
-DPREFIX=${DEPS_BUILD_DIR}
|
||||
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/unibilium
|
||||
-DURL=${UNIBILIUM_URL}
|
||||
-DEXPECTED_SHA256=${UNIBILIUM_SHA256}
|
||||
-DTARGET=unibilium
|
||||
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
||||
CONFIGURE_COMMAND "${UNIBILIUM_CONFIGURE_COMMAND}"
|
||||
BUILD_COMMAND "${UNIBILIUM_BUILD_COMMAND}"
|
||||
INSTALL_COMMAND "${UNIBILIUM_INSTALL_COMMAND}")
|
||||
|
||||
list(APPEND THIRD_PARTY_DEPS unibilium)
|
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(gettext C)
|
||||
|
||||
# Adds PREFIX to each item in LIST
|
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(libiconv C)
|
||||
|
||||
include_directories(
|
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
set(HEX_ALPHABET "0123456789abcdef")
|
||||
|
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(libvterm LANGUAGES C)
|
||||
|
||||
include(GNUInstallDirs)
|
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(tree-sitter LANGUAGES C)
|
||||
|
||||
file(GLOB SRC_FILES ${PROJECT_SOURCE_DIR}/lib/src/*.c)
|
@@ -1,10 +1,12 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
# some parsers have c++ scanner, problem?
|
||||
project(parser C) # CXX
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(parser C)
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
file(GLOB source_files src/*.c)
|
||||
|
||||
add_library(parser
|
||||
MODULE
|
||||
src/parser.c
|
||||
${source_files}
|
||||
)
|
||||
set_target_properties(
|
||||
parser
|
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(unibilium LANGUAGES C)
|
||||
|
||||
file(GLOB SRC_FILES ${PROJECT_SOURCE_DIR}/*.c)
|
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(libtermkey)
|
||||
|
||||
add_definitions(-D _CRT_SECURE_NO_WARNINGS)
|
117
cmake.deps/patches/libuv-disable-shared.patch
Normal file
117
cmake.deps/patches/libuv-disable-shared.patch
Normal file
@@ -0,0 +1,117 @@
|
||||
From 326a1845f924432332071d03d156b7df4af7c46f Mon Sep 17 00:00:00 2001
|
||||
From: Tim Tavlintsev <ttavlintsev@enttec.com>
|
||||
Date: Thu, 21 Jul 2022 16:42:21 +1000
|
||||
Subject: [PATCH] Add CMake option LIBUV_BUILD_SHARED to enable/disable shared
|
||||
library build Fix #3637
|
||||
|
||||
---
|
||||
CMakeLists.txt | 66 +++++++++++++++++++++++++++++---------------------
|
||||
1 file changed, 38 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 2c42c3ff..a8e19980 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -28,6 +28,8 @@ cmake_dependent_option(LIBUV_BUILD_BENCH
|
||||
"Build the benchmarks when building unit tests and we are the root project" ON
|
||||
"LIBUV_BUILD_TESTS" OFF)
|
||||
|
||||
+option(LIBUV_BUILD_SHARED "Build shared lib" ON)
|
||||
+
|
||||
# Qemu Build
|
||||
option(QEMU "build for qemu" OFF)
|
||||
if(QEMU)
|
||||
@@ -390,25 +392,27 @@ if(APPLE OR CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD|Linux|NetBSD|OpenBSD")
|
||||
list(APPEND uv_test_libraries util)
|
||||
endif()
|
||||
|
||||
-add_library(uv SHARED ${uv_sources})
|
||||
-target_compile_definitions(uv
|
||||
- INTERFACE
|
||||
- USING_UV_SHARED=1
|
||||
- PRIVATE
|
||||
- BUILDING_UV_SHARED=1
|
||||
- ${uv_defines})
|
||||
-target_compile_options(uv PRIVATE ${uv_cflags})
|
||||
-target_include_directories(uv
|
||||
- PUBLIC
|
||||
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
- PRIVATE
|
||||
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>)
|
||||
-if(CMAKE_SYSTEM_NAME STREQUAL "OS390")
|
||||
- target_include_directories(uv PUBLIC $<BUILD_INTERFACE:${ZOSLIB_DIR}/include>)
|
||||
- set_target_properties(uv PROPERTIES LINKER_LANGUAGE CXX)
|
||||
+if(LIBUV_BUILD_SHARED)
|
||||
+ add_library(uv SHARED ${uv_sources})
|
||||
+ target_compile_definitions(uv
|
||||
+ INTERFACE
|
||||
+ USING_UV_SHARED=1
|
||||
+ PRIVATE
|
||||
+ BUILDING_UV_SHARED=1
|
||||
+ ${uv_defines})
|
||||
+ target_compile_options(uv PRIVATE ${uv_cflags})
|
||||
+ target_include_directories(uv
|
||||
+ PUBLIC
|
||||
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
+ PRIVATE
|
||||
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>)
|
||||
+ if(CMAKE_SYSTEM_NAME STREQUAL "OS390")
|
||||
+ target_include_directories(uv PUBLIC $<BUILD_INTERFACE:${ZOSLIB_DIR}/include>)
|
||||
+ set_target_properties(uv PROPERTIES LINKER_LANGUAGE CXX)
|
||||
+ endif()
|
||||
+ target_link_libraries(uv ${uv_libraries})
|
||||
endif()
|
||||
-target_link_libraries(uv ${uv_libraries})
|
||||
|
||||
add_library(uv_a STATIC ${uv_sources})
|
||||
target_compile_definitions(uv_a PRIVATE ${uv_defines})
|
||||
@@ -669,28 +673,34 @@ string(REPLACE ";" " " LIBS "${LIBS}")
|
||||
file(STRINGS configure.ac configure_ac REGEX ^AC_INIT)
|
||||
string(REGEX MATCH "([0-9]+)[.][0-9]+[.][0-9]+" PACKAGE_VERSION "${configure_ac}")
|
||||
set(UV_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||||
-# The version in the filename is mirroring the behaviour of autotools.
|
||||
-set_target_properties(uv PROPERTIES
|
||||
- VERSION ${UV_VERSION_MAJOR}.0.0
|
||||
- SOVERSION ${UV_VERSION_MAJOR})
|
||||
+
|
||||
set(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR})
|
||||
set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
|
||||
set(prefix ${CMAKE_INSTALL_PREFIX})
|
||||
-configure_file(libuv.pc.in libuv.pc @ONLY)
|
||||
configure_file(libuv-static.pc.in libuv-static.pc @ONLY)
|
||||
|
||||
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
-install(FILES ${PROJECT_BINARY_DIR}/libuv.pc ${PROJECT_BINARY_DIR}/libuv-static.pc
|
||||
+install(FILES ${PROJECT_BINARY_DIR}/libuv-static.pc
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
-install(TARGETS uv EXPORT libuvConfig
|
||||
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
install(TARGETS uv_a EXPORT libuvConfig
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
install(EXPORT libuvConfig DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libuv)
|
||||
|
||||
+if(LIBUV_BUILD_SHARED)
|
||||
+ # The version in the filename is mirroring the behaviour of autotools.
|
||||
+ set_target_properties(uv PROPERTIES
|
||||
+ VERSION ${UV_VERSION_MAJOR}.0.0
|
||||
+ SOVERSION ${UV_VERSION_MAJOR})
|
||||
+ configure_file(libuv.pc.in libuv.pc @ONLY)
|
||||
+ install(FILES ${PROJECT_BINARY_DIR}/libuv.pc
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
+ install(TARGETS uv EXPORT libuvConfig
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
+endif()
|
||||
+
|
||||
if(MSVC)
|
||||
set(CMAKE_DEBUG_POSTFIX d)
|
||||
endif()
|
||||
--
|
||||
2.37.0
|
||||
|
@@ -1,8 +1,6 @@
|
||||
<CPackWiXPatch>
|
||||
<!-- Fragment ID is from: <your build dir>/_CPack_Packages/win64/WIX/files.wxs -->
|
||||
<CPackWiXFragment Id="CM_CP_bin.nvim.exe">
|
||||
<!-- Note: if we were to specify Value='[INSTALL_ROOT]\bin' - with a backslash, the installer will still
|
||||
use a forward slash in the path. -->
|
||||
<Environment
|
||||
Id='UpdatePath'
|
||||
Name='PATH'
|
||||
@@ -10,7 +8,7 @@
|
||||
Permanent='no'
|
||||
System='yes'
|
||||
Part='last'
|
||||
Value='[INSTALL_ROOT]/bin'
|
||||
Value='[INSTALL_ROOT]bin'
|
||||
/>
|
||||
</CPackWiXFragment>
|
||||
</CPackWiXPatch>
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
13
cmake/CheckUncrustifyVersion.cmake
Normal file
13
cmake/CheckUncrustifyVersion.cmake
Normal file
@@ -0,0 +1,13 @@
|
||||
if(UNCRUSTIFY_PRG)
|
||||
execute_process(COMMAND uncrustify --version
|
||||
OUTPUT_VARIABLE user_version
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
string(REGEX REPLACE "[A-Za-z_#-]" "" user_version ${user_version})
|
||||
|
||||
file(STRINGS ${CONFIG_FILE} required_version LIMIT_COUNT 1)
|
||||
string(REGEX REPLACE "[A-Za-z_# -]" "" required_version ${required_version})
|
||||
|
||||
if(NOT user_version STREQUAL required_version)
|
||||
message(FATAL_ERROR "Wrong uncrustify version! Required version is ${required_version} but found ${user_version}")
|
||||
endif()
|
||||
endif()
|
@@ -41,6 +41,16 @@ endif()
|
||||
if (MSVC)
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY})
|
||||
endif()
|
||||
|
||||
# On macOS, if libintl is a static library then we also need
|
||||
# to link libiconv and CoreFoundation.
|
||||
get_filename_component(LibIntl_EXT "${LibIntl_LIBRARY}" EXT)
|
||||
if (APPLE AND (LibIntl_EXT STREQUAL ".a"))
|
||||
set(LibIntl_STATIC TRUE)
|
||||
find_library(CoreFoundation_FRAMEWORK CoreFoundation)
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES "${ICONV_LIBRARY}" "${CoreFoundation_FRAMEWORK}")
|
||||
endif()
|
||||
|
||||
check_c_source_compiles("
|
||||
#include <libintl.h>
|
||||
|
||||
@@ -54,6 +64,9 @@ int main(int argc, char** argv) {
|
||||
if (MSVC)
|
||||
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY})
|
||||
endif()
|
||||
if (LibIntl_STATIC)
|
||||
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "${ICONV_LIBRARY}" "${CoreFoundation_FRAMEWORK}")
|
||||
endif()
|
||||
if (LibIntl_INCLUDE_DIR)
|
||||
list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES "${LibIntl_INCLUDE_DIR}")
|
||||
endif()
|
||||
|
@@ -13,7 +13,7 @@ endif()
|
||||
find_path(LIBUV_INCLUDE_DIR uv.h
|
||||
HINTS ${PC_LIBUV_INCLUDEDIR} ${PC_LIBUV_INCLUDE_DIRS})
|
||||
|
||||
list(APPEND LIBUV_NAMES uv)
|
||||
list(APPEND LIBUV_NAMES uv_a uv)
|
||||
|
||||
find_library(LIBUV_LIBRARY NAMES ${LIBUV_NAMES}
|
||||
HINTS ${PC_LIBUV_LIBDIR} ${PC_LIBUV_LIBRARY_DIRS})
|
||||
|
@@ -1,197 +0,0 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#.rst:
|
||||
# FindLua
|
||||
# -------
|
||||
#
|
||||
#
|
||||
#
|
||||
# Locate Lua library This module defines
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# LUA_FOUND - if false, do not try to link to Lua
|
||||
# LUA_LIBRARIES - both lua and lualib
|
||||
# LUA_INCLUDE_DIR - where to find lua.h
|
||||
# LUA_VERSION_STRING - the version of Lua found
|
||||
# LUA_VERSION_MAJOR - the major version of Lua
|
||||
# LUA_VERSION_MINOR - the minor version of Lua
|
||||
# LUA_VERSION_PATCH - the patch version of Lua
|
||||
#
|
||||
#
|
||||
#
|
||||
# Note that the expected include convention is
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# #include "lua.h"
|
||||
#
|
||||
# and not
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# #include <lua/lua.h>
|
||||
#
|
||||
# This is because, the lua location is not standardized and may exist in
|
||||
# locations other than lua/
|
||||
|
||||
unset(_lua_include_subdirs)
|
||||
unset(_lua_library_names)
|
||||
unset(_lua_append_versions)
|
||||
|
||||
# this is a function only to have all the variables inside go away automatically
|
||||
function(_lua_set_version_vars)
|
||||
set(LUA_VERSIONS5 5.4 5.3 5.2 5.1 5.0)
|
||||
|
||||
if (Lua_FIND_VERSION_EXACT)
|
||||
if (Lua_FIND_VERSION_COUNT GREATER 1)
|
||||
set(_lua_append_versions ${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR})
|
||||
endif ()
|
||||
elseif (Lua_FIND_VERSION)
|
||||
# once there is a different major version supported this should become a loop
|
||||
if (NOT Lua_FIND_VERSION_MAJOR GREATER 5)
|
||||
if (Lua_FIND_VERSION_COUNT EQUAL 1)
|
||||
set(_lua_append_versions ${LUA_VERSIONS5})
|
||||
else ()
|
||||
foreach (subver IN LISTS LUA_VERSIONS5)
|
||||
if (NOT subver VERSION_LESS ${Lua_FIND_VERSION})
|
||||
list(APPEND _lua_append_versions ${subver})
|
||||
endif ()
|
||||
endforeach ()
|
||||
endif ()
|
||||
endif ()
|
||||
else ()
|
||||
# once there is a different major version supported this should become a loop
|
||||
set(_lua_append_versions ${LUA_VERSIONS5})
|
||||
endif ()
|
||||
|
||||
list(APPEND _lua_include_subdirs "include/lua" "include")
|
||||
|
||||
foreach (ver IN LISTS _lua_append_versions)
|
||||
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)$" _ver "${ver}")
|
||||
list(APPEND _lua_include_subdirs
|
||||
include/lua${CMAKE_MATCH_1}${CMAKE_MATCH_2}
|
||||
include/lua${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
|
||||
include/lua-${CMAKE_MATCH_1}.${CMAKE_MATCH_2}
|
||||
)
|
||||
endforeach ()
|
||||
|
||||
set(_lua_include_subdirs "${_lua_include_subdirs}" PARENT_SCOPE)
|
||||
set(_lua_append_versions "${_lua_append_versions}" PARENT_SCOPE)
|
||||
endfunction(_lua_set_version_vars)
|
||||
|
||||
function(_lua_check_header_version _hdr_file)
|
||||
# At least 5.[012] have different ways to express the version
|
||||
# so all of them need to be tested. Lua 5.2 defines LUA_VERSION
|
||||
# and LUA_RELEASE as joined by the C preprocessor, so avoid those.
|
||||
file(STRINGS "${_hdr_file}" lua_version_strings
|
||||
REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*")
|
||||
|
||||
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};")
|
||||
if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$")
|
||||
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};")
|
||||
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};")
|
||||
set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}")
|
||||
else ()
|
||||
string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
|
||||
if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$")
|
||||
string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};")
|
||||
endif ()
|
||||
string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}")
|
||||
string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}")
|
||||
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}")
|
||||
endif ()
|
||||
foreach (ver IN LISTS _lua_append_versions)
|
||||
if (ver STREQUAL "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}")
|
||||
set(LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR} PARENT_SCOPE)
|
||||
set(LUA_VERSION_MINOR ${LUA_VERSION_MINOR} PARENT_SCOPE)
|
||||
set(LUA_VERSION_PATCH ${LUA_VERSION_PATCH} PARENT_SCOPE)
|
||||
set(LUA_VERSION_STRING ${LUA_VERSION_STRING} PARENT_SCOPE)
|
||||
return()
|
||||
endif ()
|
||||
endforeach ()
|
||||
endfunction(_lua_check_header_version)
|
||||
|
||||
_lua_set_version_vars()
|
||||
|
||||
if (LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
|
||||
_lua_check_header_version("${LUA_INCLUDE_DIR}/lua.h")
|
||||
endif ()
|
||||
|
||||
if (NOT LUA_VERSION_STRING)
|
||||
foreach (subdir IN LISTS _lua_include_subdirs)
|
||||
unset(LUA_INCLUDE_PREFIX CACHE)
|
||||
find_path(LUA_INCLUDE_PREFIX ${subdir}/lua.h
|
||||
HINTS
|
||||
ENV LUA_DIR
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/csw # Blastwave
|
||||
/opt
|
||||
)
|
||||
if (LUA_INCLUDE_PREFIX)
|
||||
_lua_check_header_version("${LUA_INCLUDE_PREFIX}/${subdir}/lua.h")
|
||||
if (LUA_VERSION_STRING)
|
||||
set(LUA_INCLUDE_DIR "${LUA_INCLUDE_PREFIX}/${subdir}")
|
||||
break()
|
||||
endif ()
|
||||
endif ()
|
||||
endforeach ()
|
||||
endif ()
|
||||
unset(_lua_include_subdirs)
|
||||
unset(_lua_append_versions)
|
||||
|
||||
if (LUA_VERSION_STRING)
|
||||
set(_lua_library_names
|
||||
lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR}
|
||||
lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
|
||||
lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
|
||||
lua.${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}
|
||||
)
|
||||
endif ()
|
||||
|
||||
find_library(LUA_LIBRARY
|
||||
NAMES ${_lua_library_names} lua
|
||||
HINTS
|
||||
ENV LUA_DIR
|
||||
PATH_SUFFIXES lib
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/sw
|
||||
/opt/local
|
||||
/opt/csw
|
||||
/opt
|
||||
)
|
||||
unset(_lua_library_names)
|
||||
|
||||
if (LUA_LIBRARY)
|
||||
# include the math library for Unix
|
||||
if (UNIX AND NOT APPLE AND NOT BEOS)
|
||||
find_library(LUA_MATH_LIBRARY m)
|
||||
set(LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}")
|
||||
|
||||
# include dl library for statically-linked Lua library
|
||||
get_filename_component(LUA_LIB_EXT ${LUA_LIBRARY} EXT)
|
||||
if(LUA_LIB_EXT STREQUAL CMAKE_STATIC_LIBRARY_SUFFIX)
|
||||
list(APPEND LUA_LIBRARIES ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
|
||||
# For Windows and Mac, don't need to explicitly include the math library
|
||||
else ()
|
||||
set(LUA_LIBRARIES "${LUA_LIBRARY}")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua
|
||||
REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
|
||||
VERSION_VAR LUA_VERSION_STRING)
|
||||
|
||||
mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY LUA_MATH_LIBRARY)
|
@@ -1,10 +0,0 @@
|
||||
include(LibFindMacros)
|
||||
|
||||
find_path(WINPTY_INCLUDE_DIR winpty.h)
|
||||
set(WINPTY_INCLUDE_DIRS ${WINPTY_INCLUDE_DIR})
|
||||
|
||||
find_library(WINPTY_LIBRARY winpty)
|
||||
find_program(WINPTY_AGENT_EXE winpty-agent.exe)
|
||||
set(WINPTY_LIBRARIES ${WINPTY_LIBRARY})
|
||||
|
||||
find_package_handle_standard_args(Winpty DEFAULT_MSG WINPTY_LIBRARY WINPTY_INCLUDE_DIR)
|
67
cmake/Format.cmake
Normal file
67
cmake/Format.cmake
Normal file
@@ -0,0 +1,67 @@
|
||||
# Returns a list of all files that has been changed in current branch compared
|
||||
# to master branch. This includes unstaged, staged and committed files.
|
||||
function(get_changed_files outvar)
|
||||
set(default_branch master)
|
||||
|
||||
execute_process(
|
||||
COMMAND git branch --show-current
|
||||
OUTPUT_VARIABLE current_branch
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
execute_process(
|
||||
COMMAND git merge-base ${default_branch} ${current_branch}
|
||||
OUTPUT_VARIABLE ancestor_commit
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
# Changed files that have been committed
|
||||
execute_process(
|
||||
COMMAND git diff --name-only ${ancestor_commit}...${current_branch}
|
||||
OUTPUT_VARIABLE committed_files
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
separate_arguments(committed_files NATIVE_COMMAND ${committed_files})
|
||||
|
||||
# Unstaged files
|
||||
execute_process(
|
||||
COMMAND git diff --name-only
|
||||
OUTPUT_VARIABLE unstaged_files
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
separate_arguments(unstaged_files NATIVE_COMMAND ${unstaged_files})
|
||||
|
||||
# Staged files
|
||||
execute_process(
|
||||
COMMAND git diff --cached --name-only
|
||||
OUTPUT_VARIABLE staged_files
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
separate_arguments(staged_files NATIVE_COMMAND ${staged_files})
|
||||
|
||||
set(files ${committed_files} ${unstaged_files} ${staged_files})
|
||||
list(REMOVE_DUPLICATES files)
|
||||
|
||||
set(${outvar} "${files}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
get_changed_files(changed_files)
|
||||
|
||||
if(LANG STREQUAL c)
|
||||
list(FILTER changed_files INCLUDE REGEX "\\.[ch]$")
|
||||
list(FILTER changed_files INCLUDE REGEX "^src/nvim/")
|
||||
|
||||
if(changed_files)
|
||||
if(FORMAT_PRG)
|
||||
execute_process(COMMAND ${FORMAT_PRG} -c "src/uncrustify.cfg" --replace --no-backup ${changed_files})
|
||||
else()
|
||||
message(STATUS "Uncrustify not found. Skip formatting C files.")
|
||||
endif()
|
||||
endif()
|
||||
elseif(LANG STREQUAL lua)
|
||||
list(FILTER changed_files INCLUDE REGEX "\\.lua$")
|
||||
list(FILTER changed_files INCLUDE REGEX "^runtime/")
|
||||
|
||||
if(changed_files)
|
||||
if(FORMAT_PRG)
|
||||
execute_process(COMMAND ${FORMAT_PRG} ${changed_files})
|
||||
else()
|
||||
message(STATUS "Stylua not found. Skip formatting lua files.")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
34
cmake/GenerateVersion.cmake
Normal file
34
cmake/GenerateVersion.cmake
Normal file
@@ -0,0 +1,34 @@
|
||||
set(NVIM_VERSION
|
||||
"v${NVIM_VERSION_MAJOR}.${NVIM_VERSION_MINOR}.${NVIM_VERSION_PATCH}${NVIM_VERSION_PRERELEASE}")
|
||||
|
||||
execute_process(
|
||||
COMMAND git --git-dir=${NVIM_SOURCE_DIR}/.git --work-tree=${NVIM_SOURCE_DIR} describe --first-parent --dirty --always
|
||||
OUTPUT_VARIABLE GIT_TAG
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
RESULT_VARIABLE RES)
|
||||
|
||||
if(RES AND NOT RES EQUAL 0)
|
||||
message(STATUS "Using NVIM_VERSION: ${NVIM_VERSION}")
|
||||
file(WRITE "${OUTPUT}" "")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# `git describe` annotates the most recent tagged release; for pre-release
|
||||
# builds we append that to the dev version.
|
||||
if(NVIM_VERSION_PRERELEASE)
|
||||
string(REGEX REPLACE "^v[0-9]+.[0-9]+.[0-9]+-" "" NVIM_VERSION_GIT "${GIT_TAG}")
|
||||
string(REGEX REPLACE "^([0-9]+)-([a-z0-9]+)" "\\1+\\2" NVIM_VERSION_GIT "${NVIM_VERSION_GIT}")
|
||||
set(NVIM_VERSION "${NVIM_VERSION}-${NVIM_VERSION_GIT}")
|
||||
endif()
|
||||
|
||||
set(NVIM_VERSION_STRING "#define NVIM_VERSION_MEDIUM \"${NVIM_VERSION}\"\n")
|
||||
|
||||
string(SHA1 CURRENT_VERSION_HASH "${NVIM_VERSION_STRING}")
|
||||
if(EXISTS ${OUTPUT})
|
||||
file(SHA1 "${OUTPUT}" NVIM_VERSION_HASH)
|
||||
endif()
|
||||
|
||||
if(NOT "${NVIM_VERSION_HASH}" STREQUAL "${CURRENT_VERSION_HASH}")
|
||||
message(STATUS "Using NVIM_VERSION: ${NVIM_VERSION}")
|
||||
file(WRITE "${OUTPUT}" "${NVIM_VERSION_STRING}")
|
||||
endif()
|
@@ -1,2 +0,0 @@
|
||||
file(GLOB_RECURSE JSON_FILES *.json)
|
||||
file(COPY ${JSON_FILES} DESTINATION "${TARGET}")
|
@@ -45,7 +45,7 @@ function(create_install_dir_with_perms)
|
||||
while(NOT EXISTS \$ENV{DESTDIR}\${_current_dir} AND NOT \${_prev_dir} STREQUAL \${_current_dir})
|
||||
list(APPEND _parent_dirs \${_current_dir})
|
||||
set(_prev_dir \${_current_dir})
|
||||
get_filename_component(_current_dir \${_current_dir} PATH)
|
||||
get_filename_component(_current_dir \${_current_dir} DIRECTORY)
|
||||
endwhile()
|
||||
|
||||
if(_parent_dirs)
|
||||
|
@@ -2,7 +2,9 @@
|
||||
set(ENV{LC_ALL} "en_US.UTF-8")
|
||||
|
||||
if(POLICY CMP0012)
|
||||
# Handle CI=true, without dev warnings.
|
||||
# Avoid policy warning due to CI=true. This is needed even if the main
|
||||
# project has already set this policy as policy settings are reset when using
|
||||
# the cmake script mode (-P).
|
||||
cmake_policy(SET CMP0012 NEW)
|
||||
endif()
|
||||
|
||||
@@ -11,6 +13,7 @@ set(ENV{NVIM_RPLUGIN_MANIFEST} ${BUILD_DIR}/Xtest_rplugin_manifest)
|
||||
set(ENV{XDG_CONFIG_HOME} ${BUILD_DIR}/Xtest_xdg/config)
|
||||
set(ENV{XDG_DATA_HOME} ${BUILD_DIR}/Xtest_xdg/share)
|
||||
unset(ENV{XDG_DATA_DIRS})
|
||||
unset(ENV{NVIM}) # Clear $NVIM in case tests are running from Nvim. #11009
|
||||
|
||||
if(NOT DEFINED ENV{NVIM_LOG_FILE})
|
||||
set(ENV{NVIM_LOG_FILE} ${BUILD_DIR}/.nvimlog)
|
||||
@@ -50,8 +53,8 @@ if(DEFINED ENV{TEST_FILTER_OUT} AND NOT "$ENV{TEST_FILTER_OUT}" STREQUAL "")
|
||||
list(APPEND BUSTED_ARGS --filter-out $ENV{TEST_FILTER_OUT})
|
||||
endif()
|
||||
|
||||
# TMPDIR: use relative test path (for parallel test runs / isolation).
|
||||
set(ENV{TMPDIR} "${BUILD_DIR}/Xtest_tmpdir/${TEST_PATH}")
|
||||
# TMPDIR: for helpers.tmpname() and Nvim tempname().
|
||||
set(ENV{TMPDIR} "${BUILD_DIR}/Xtest_tmpdir")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory $ENV{TMPDIR})
|
||||
|
||||
# HISTFILE: do not write into user's ~/.bash_history
|
||||
|
13
cmake/UninstallHelper.cmake
Normal file
13
cmake/UninstallHelper.cmake
Normal file
@@ -0,0 +1,13 @@
|
||||
if(NOT EXISTS "${CMAKE_BINARY_DIR}/install_manifest.txt")
|
||||
message(FATAL_ERROR "Cannot find install manifest: ${CMAKE_BINARY_DIR}/install_manifest.txt")
|
||||
endif()
|
||||
|
||||
file(STRINGS "${CMAKE_BINARY_DIR}/install_manifest.txt" files)
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
file(REMOVE $ENV{DESTDIR}${file})
|
||||
else()
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||
endif()
|
||||
endforeach()
|
@@ -1,21 +0,0 @@
|
||||
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
|
||||
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
|
||||
endif()
|
||||
|
||||
file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
exec_program(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
if(NOT "${rm_retval}" STREQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||
endif()
|
||||
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||
endif()
|
||||
endforeach()
|
185
cmake/Util.cmake
Normal file
185
cmake/Util.cmake
Normal file
@@ -0,0 +1,185 @@
|
||||
# Defines a target that depends on FILES and the files found by globbing
|
||||
# when using GLOB_PAT and GLOB_DIRS. The target will rerun if any files it
|
||||
# depends on has changed. Which files the target will run the command on
|
||||
# depends on the value of TOUCH_STRATEGY.
|
||||
#
|
||||
# Options:
|
||||
# REQUIRED - Abort if COMMAND doesn't exist.
|
||||
#
|
||||
# Single value arguments:
|
||||
# TARGET - Name of the target
|
||||
# COMMAND - Path of the command to be run
|
||||
# GLOB_PAT - Glob pattern to use. Only used if GLOB_DIRS is specified
|
||||
# TOUCH_STRATEGY - Specify touch strategy, meaning decide how to group files
|
||||
# and connect them to a specific touch file.
|
||||
#
|
||||
# For example, let us say we have file A and B and that we create a touch file
|
||||
# for each of them, TA and TB. This would essentially make file A and B
|
||||
# independent of each other, meaning that if I change file A and run the
|
||||
# target, then the target will only run its commands for file A and ignore
|
||||
# file B.
|
||||
#
|
||||
# Another example: let's say we have file A and B, but now we create only a
|
||||
# single touch file T for both of them. This would mean that if I change
|
||||
# either file A or B, then the target will run its commands on both A and B.
|
||||
# Meaning that even if I only change file A, the target will still run
|
||||
# commands on both A and B.
|
||||
#
|
||||
# The more touch files we create for a target, the fewer commands we'll need
|
||||
# to rerun, and by extension, the more time we'll save. Unfortunately, the
|
||||
# more touch files we create the more intermediary targets will be created,
|
||||
# one for each touch file. This makes listing all targets with
|
||||
# `cmake --build build --target help` less useful since each touch file will
|
||||
# be listed. The tradeoff that needs to be done here is between performance
|
||||
# and "discoverability". As a general guideline: the more popular a target is
|
||||
# and the more time it takes to run it, the more granular you want your touch
|
||||
# files to be. Conversely, if a target rarely needs to be run or if it's fast,
|
||||
# then you should create fewer targets.
|
||||
#
|
||||
# Possible values for TOUCH_STRATEGY:
|
||||
# "SINGLE": create a single touch file for all files.
|
||||
# "PER_FILE": create a touch file for each file. Defaults to this if
|
||||
# TOUCH_STRATEGY isn't specified.
|
||||
# "PER_DIR": create a touch file for each directory.
|
||||
#
|
||||
# List arguments:
|
||||
# FLAGS - List of flags to use after COMMAND
|
||||
# FILES - List of files to use COMMAND on. It's possible to combine this
|
||||
# with GLOB_PAT and GLOB_DIRS; the files found by globbing will
|
||||
# simple be added to FILES
|
||||
# GLOB_DIRS - The directories to recursively search for files with extension
|
||||
# GLOB_PAT
|
||||
#
|
||||
function(add_glob_targets)
|
||||
cmake_parse_arguments(ARG
|
||||
"REQUIRED"
|
||||
"TARGET;COMMAND;GLOB_PAT;TOUCH_STRATEGY"
|
||||
"FLAGS;FILES;GLOB_DIRS"
|
||||
${ARGN}
|
||||
)
|
||||
|
||||
if(NOT ARG_COMMAND)
|
||||
add_custom_target(${ARG_TARGET})
|
||||
if(ARG_REQUIRED)
|
||||
add_custom_command(TARGET ${ARG_TARGET}
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "${ARG_TARGET}: ${ARG_COMMAND} not found"
|
||||
COMMAND false)
|
||||
else()
|
||||
add_custom_command(TARGET ${ARG_TARGET}
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "${ARG_TARGET} SKIP: ${ARG_COMMAND} not found")
|
||||
endif()
|
||||
return()
|
||||
endif()
|
||||
|
||||
foreach(gd ${ARG_GLOB_DIRS})
|
||||
file(GLOB_RECURSE globfiles ${PROJECT_SOURCE_DIR}/${gd}/${ARG_GLOB_PAT})
|
||||
list(APPEND ARG_FILES ${globfiles})
|
||||
endforeach()
|
||||
|
||||
if(NOT ARG_TOUCH_STRATEGY)
|
||||
set(ARG_TOUCH_STRATEGY PER_FILE)
|
||||
endif()
|
||||
set(POSSIBLE_TOUCH_STRATEGIES SINGLE PER_FILE PER_DIR)
|
||||
if(NOT ARG_TOUCH_STRATEGY IN_LIST POSSIBLE_TOUCH_STRATEGIES)
|
||||
message(FATAL_ERROR "Unrecognized value for TOUCH_STRATEGY: ${ARG_TOUCH_STRATEGY}")
|
||||
endif()
|
||||
|
||||
if(ARG_TOUCH_STRATEGY STREQUAL SINGLE)
|
||||
set(touch_file ${TOUCHES_DIR}/ran-${ARG_TARGET})
|
||||
add_custom_command(
|
||||
OUTPUT ${touch_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${touch_file}
|
||||
COMMAND ${ARG_COMMAND} ${ARG_FLAGS} ${ARG_FILES}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
DEPENDS ${ARG_FILES})
|
||||
list(APPEND touch_list ${touch_file})
|
||||
elseif(ARG_TOUCH_STRATEGY STREQUAL PER_FILE)
|
||||
set(touch_dir ${TOUCHES_DIR}/${ARG_TARGET})
|
||||
file(MAKE_DIRECTORY ${touch_dir})
|
||||
foreach(f ${ARG_FILES})
|
||||
string(REGEX REPLACE "^${PROJECT_SOURCE_DIR}/" "" tf ${f})
|
||||
string(REGEX REPLACE "[/.]" "-" tf ${tf})
|
||||
set(touch_file ${touch_dir}/ran-${tf})
|
||||
add_custom_command(
|
||||
OUTPUT ${touch_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${touch_file}
|
||||
COMMAND ${ARG_COMMAND} ${ARG_FLAGS} ${f}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
DEPENDS ${f})
|
||||
list(APPEND touch_list ${touch_file})
|
||||
endforeach()
|
||||
elseif(ARG_TOUCH_STRATEGY STREQUAL PER_DIR)
|
||||
set(touch_dirs)
|
||||
foreach(f ${ARG_FILES})
|
||||
get_filename_component(out ${f} DIRECTORY)
|
||||
list(APPEND touch_dirs ${out})
|
||||
endforeach()
|
||||
list(REMOVE_DUPLICATES touch_dirs)
|
||||
|
||||
foreach(touch_dir ${touch_dirs})
|
||||
set(relevant_files)
|
||||
foreach(f ${ARG_FILES})
|
||||
get_filename_component(out ${f} DIRECTORY)
|
||||
if(${touch_dir} STREQUAL ${out})
|
||||
list(APPEND relevant_files ${f})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(td ${TOUCHES_DIR}/${ARG_TARGET})
|
||||
file(MAKE_DIRECTORY ${td})
|
||||
string(REGEX REPLACE "^${PROJECT_SOURCE_DIR}/" "" tf ${touch_dir})
|
||||
string(REGEX REPLACE "[/.]" "-" tf ${tf})
|
||||
set(touch_file ${td}/ran-${tf})
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${touch_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${touch_file}
|
||||
COMMAND ${ARG_COMMAND} ${ARG_FLAGS} ${relevant_files}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
DEPENDS ${relevant_files})
|
||||
list(APPEND touch_list ${touch_file})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
add_custom_target(${ARG_TARGET} DEPENDS ${touch_list})
|
||||
endfunction()
|
||||
|
||||
# Set default build type to Debug. Also limit the list of allowable build types
|
||||
# to the ones defined in variable allowableBuildTypes.
|
||||
#
|
||||
# The correct way to specify build type (for example Release) for
|
||||
# single-configuration generators (Make and Ninja) is to run
|
||||
#
|
||||
# cmake -B build -D CMAKE_BUILD_TYPE=Release
|
||||
# cmake --build build
|
||||
#
|
||||
# while for multi-configuration generators (Visual Studio, Xcode and Ninja
|
||||
# Multi-Config) is to run
|
||||
#
|
||||
# cmake -B build
|
||||
# cmake --build build --config Release
|
||||
#
|
||||
# Passing CMAKE_BUILD_TYPE for multi-config generators will now not only
|
||||
# not be used, but also generate a warning for the user.
|
||||
function(set_default_buildtype)
|
||||
set(allowableBuildTypes Debug Release MinSizeRel RelWithDebInfo)
|
||||
|
||||
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(isMultiConfig)
|
||||
set(CMAKE_CONFIGURATION_TYPES ${allowableBuildTypes} PARENT_SCOPE)
|
||||
if(CMAKE_BUILD_TYPE)
|
||||
message(WARNING "CMAKE_BUILD_TYPE specified which is ignored on \
|
||||
multi-configuration generators. Defaulting to Debug build type.")
|
||||
endif()
|
||||
else()
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${allowableBuildTypes}")
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "CMAKE_BUILD_TYPE not specified, default is 'Debug'")
|
||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build" FORCE)
|
||||
elseif(NOT CMAKE_BUILD_TYPE IN_LIST allowableBuildTypes)
|
||||
message(FATAL_ERROR "Invalid build type: ${CMAKE_BUILD_TYPE}")
|
||||
else()
|
||||
message(STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
@@ -1,7 +0,0 @@
|
||||
set(CMAKE_SYSTEM_PROCESSOR i386)
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION gnu)
|
||||
if(NOT ${CMAKE_C_COMPILER})
|
||||
set(CMAKE_C_COMPILER gcc)
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER_ARG1 "-m32")
|
@@ -1,31 +0,0 @@
|
||||
# YouCompleteMe Integration
|
||||
|
||||
## What is this?
|
||||
|
||||
This provides the code necessary to configure vim's YCM plugin to provide C
|
||||
semantic support (completion, go-to-definition, etc) for developers working on
|
||||
the Neovim project.
|
||||
|
||||
## Installation
|
||||
|
||||
### Step 1
|
||||
|
||||
Install [YouCompleteMe](https://github.com/Valloric/YouCompleteMe).
|
||||
|
||||
### Step 2
|
||||
|
||||
```bash
|
||||
cp contrib/YouCompleteMe/ycm_extra_conf.py .ycm_extra_conf.py
|
||||
echo .ycm_extra_conf.py >> .git/info/exclude
|
||||
make
|
||||
```
|
||||
|
||||
Tip: to improve source code navigation, add something like this to your nvim
|
||||
configuration:
|
||||
|
||||
```vim
|
||||
au FileType c,cpp nnoremap <buffer> <c-]> :YcmCompleter GoTo<CR>
|
||||
```
|
||||
|
||||
And use `ctrl+]` when the cursor is positioned in a symbol to quickly jump to a
|
||||
definition or declaration.
|
@@ -1,65 +0,0 @@
|
||||
# .ycm_extra_conf.py for nvim source code.
|
||||
import os
|
||||
import ycm_core
|
||||
|
||||
|
||||
def DirectoryOfThisScript():
|
||||
return os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
def GetDatabase():
|
||||
compilation_database_folder = os.path.join(DirectoryOfThisScript(),
|
||||
'build')
|
||||
if os.path.exists(compilation_database_folder):
|
||||
return ycm_core.CompilationDatabase(compilation_database_folder)
|
||||
return None
|
||||
|
||||
|
||||
def GetCompilationInfoForFile(filename):
|
||||
database = GetDatabase()
|
||||
if not database:
|
||||
return None
|
||||
return database.GetCompilationInfoForFile(filename)
|
||||
|
||||
|
||||
# It seems YCM does not resolve directories correctly. This function will
|
||||
# adjust paths in the compiler flags to be absolute
|
||||
def FixDirectories(args, compiler_working_dir):
|
||||
def adjust_path(path):
|
||||
return os.path.abspath(os.path.join(compiler_working_dir, path))
|
||||
|
||||
adjust_next_arg = False
|
||||
new_args = []
|
||||
for arg in args:
|
||||
if adjust_next_arg:
|
||||
arg = adjust_path(arg)
|
||||
adjust_next_arg = False
|
||||
else:
|
||||
for dir_flag in ['-I', '-isystem', '-o', '-c']:
|
||||
if arg.startswith(dir_flag):
|
||||
if arg != dir_flag:
|
||||
# flag and path are concatenated in same arg
|
||||
path = arg[len(dir_flag):]
|
||||
new_path = adjust_path(path)
|
||||
arg = '{0}{1}'.format(dir_flag, new_path)
|
||||
else:
|
||||
# path is specified in next argument
|
||||
adjust_next_arg = True
|
||||
new_args.append(arg)
|
||||
return new_args
|
||||
|
||||
|
||||
def FlagsForFile(filename):
|
||||
compilation_info = GetCompilationInfoForFile(filename)
|
||||
if not compilation_info:
|
||||
return None
|
||||
# Add flags not needed for clang-the-binary,
|
||||
# but needed for libclang-the-library (YCM uses this last one).
|
||||
flags = FixDirectories((list(compilation_info.compiler_flags_)
|
||||
if compilation_info.compiler_flags_
|
||||
else []), compilation_info.compiler_working_dir_)
|
||||
extra_flags = ['-Wno-newline-eof']
|
||||
return {
|
||||
'flags': flags + extra_flags,
|
||||
'do_cache': True
|
||||
}
|
28
contrib/asan.sh
Executable file
28
contrib/asan.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Helper script to build and run neovim with Address Sanitizer enabled.
|
||||
# You may read more information in src/nvim/README.md in the section "Build
|
||||
# with ASAN".
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
root_path=$(git rev-parse --show-toplevel)
|
||||
log_path=$(mktemp -d)
|
||||
export CC='clang'
|
||||
|
||||
# Change to detect_leaks=1 to detect memory leaks (slower).
|
||||
export ASAN_OPTIONS="detect_leaks=0:log_path=$log_path/asan"
|
||||
|
||||
# Show backtraces in the logs.
|
||||
export UBSAN_OPTIONS="print_stacktrace=1"
|
||||
|
||||
make -C "$root_path" CMAKE_EXTRA_FLAGS="-DCLANG_ASAN_UBSAN=ON"
|
||||
VIMRUNTIME="$root_path"/runtime "$root_path"/build/bin/nvim
|
||||
|
||||
# Need to manually reset terminal to avoid mangled output, nvim does not
|
||||
# properly restore the terminal when it crashes.
|
||||
tput reset
|
||||
|
||||
for i in "$log_path"/*; do
|
||||
cat "$i"
|
||||
done
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user