Compare commits
2526 Commits
2.0-alpha1
...
2.3.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a155d89a3 | ||
|
|
27b08725fc | ||
|
|
34ed6fdd1c | ||
|
|
4f304aa384 | ||
|
|
3d3bc7a062 | ||
|
|
2bb72eba02 | ||
|
|
902584855b | ||
|
|
3b7e63a773 | ||
|
|
9d7e7c1ca8 | ||
|
|
13a313ff66 | ||
|
|
9ed2a74421 | ||
|
|
48295efe0d | ||
|
|
963ac75389 | ||
|
|
635d6fe82c | ||
|
|
658298bc31 | ||
|
|
a910821506 | ||
|
|
062503a903 | ||
|
|
056bbaa921 | ||
|
|
c21f4b5ec2 | ||
|
|
d1c5a1a5f8 | ||
|
|
3a92e4aab9 | ||
|
|
0650b3084e | ||
|
|
4a207f079b | ||
|
|
123701080d | ||
|
|
3353b329fc | ||
|
|
970cedf972 | ||
|
|
f305517724 | ||
|
|
8646586c1a | ||
|
|
bf9c1b3205 | ||
|
|
467867016d | ||
|
|
319c8201be | ||
|
|
f620ad979f | ||
|
|
64f5ee6399 | ||
|
|
46099fdd71 | ||
|
|
dc1aead2a2 | ||
|
|
d156457405 | ||
|
|
2b91e4d27c | ||
|
|
f164847f9b | ||
|
|
082ecc3f37 | ||
|
|
2fcaeeaec8 | ||
|
|
d68d41a878 | ||
|
|
642daa641b | ||
|
|
323c271d01 | ||
|
|
2f821af0a0 | ||
|
|
63a17f697c | ||
|
|
386b78b896 | ||
|
|
4c9dcf5c98 | ||
|
|
084758908a | ||
|
|
4ce0005711 | ||
|
|
63d34ac348 | ||
|
|
10170a555e | ||
|
|
18628612b2 | ||
|
|
5f9f27604b | ||
|
|
d3a80513a7 | ||
|
|
02b923b0e5 | ||
|
|
2fd2085bb5 | ||
|
|
df185b4343 | ||
|
|
d1d97bed73 | ||
|
|
da00a6c687 | ||
|
|
8cd4d839aa | ||
|
|
b0a61f437a | ||
|
|
97a890e8a0 | ||
|
|
a5dc1964a9 | ||
|
|
ea5c6c1eb5 | ||
|
|
ee8499f65c | ||
|
|
199f0932bf | ||
|
|
e6c19fdcb1 | ||
|
|
6f6a63f5e9 | ||
|
|
0d4aff55bc | ||
|
|
2e8846ef8d | ||
|
|
923d24b448 | ||
|
|
fae8979463 | ||
|
|
8be53e68ee | ||
|
|
81e2db7170 | ||
|
|
4c0ed74341 | ||
|
|
1db064425a | ||
|
|
d8866c64d2 | ||
|
|
3cde0d988e | ||
|
|
59f17ab8f3 | ||
|
|
4c8d426f23 | ||
|
|
395afe59eb | ||
|
|
6531f94f86 | ||
|
|
e231774b05 | ||
|
|
e1558d6300 | ||
|
|
c13c6ade29 | ||
|
|
114f87c6b4 | ||
|
|
c1a397e624 | ||
|
|
cc3cc35565 | ||
|
|
7fbdcd3fed | ||
|
|
f1cf697547 | ||
|
|
0668c2be94 | ||
|
|
2e9f247e29 | ||
|
|
09d3896304 | ||
|
|
ad92b11f12 | ||
|
|
a06a1f84e0 | ||
|
|
686adbe65a | ||
|
|
77e345570d | ||
|
|
fd71b4a22e | ||
|
|
8c4df37062 | ||
|
|
5e2e12977d | ||
|
|
8dad78194f | ||
|
|
daaa3c5b41 | ||
|
|
32a4078240 | ||
|
|
3089894d20 | ||
|
|
69283e83d8 | ||
|
|
ea33caa1a8 | ||
|
|
9f5b5bb424 | ||
|
|
10bd73cd4a | ||
|
|
7c6eddeae7 | ||
|
|
f15088f496 | ||
|
|
da52da37b3 | ||
|
|
5410d78bbb | ||
|
|
114f00e1e8 | ||
|
|
0b54710734 | ||
|
|
698b44f71c | ||
|
|
cd3e1fc27e | ||
|
|
397d804cdd | ||
|
|
ca30d1832d | ||
|
|
6a85556b33 | ||
|
|
7dfcad6f8f | ||
|
|
5c51d11651 | ||
|
|
924d472de5 | ||
|
|
d36e9875c5 | ||
|
|
7713a7b750 | ||
|
|
4c52aa9c88 | ||
|
|
c5dd64d18a | ||
|
|
536db062f4 | ||
|
|
b143e93e5a | ||
|
|
d58e3ca34d | ||
|
|
d2359df2b0 | ||
|
|
80d85965e9 | ||
|
|
828dbf76eb | ||
|
|
ab3775d4c5 | ||
|
|
13dc1e02ab | ||
|
|
1bfbb9242c | ||
|
|
6723f4215a | ||
|
|
33b95836b9 | ||
|
|
4782b20d61 | ||
|
|
e57a2e0fa9 | ||
|
|
e9612ee9e6 | ||
|
|
27f8aa095a | ||
|
|
490e92167d | ||
|
|
61a3d5ffda | ||
|
|
b33259b1f2 | ||
|
|
4206fd94e3 | ||
|
|
aa54c7b6b3 | ||
|
|
16fad1aba1 | ||
|
|
b4cf98998e | ||
|
|
a76c92ed9a | ||
|
|
ba4ef52e9e | ||
|
|
12a4b9aaa3 | ||
|
|
a9479fd662 | ||
|
|
b5cabbeb43 | ||
|
|
065a85e05c | ||
|
|
92e42b581f | ||
|
|
a8471f1617 | ||
|
|
e0809a2ffe | ||
|
|
78e962e30a | ||
|
|
a5993afb60 | ||
|
|
cbb70cdc7c | ||
|
|
90eea14b8c | ||
|
|
b264614b9d | ||
|
|
6007e0de71 | ||
|
|
3ba42ee32e | ||
|
|
3443c36087 | ||
|
|
7cc3d911ba | ||
|
|
527868a6b3 | ||
|
|
af9e1e79cd | ||
|
|
e987479d04 | ||
|
|
ba04ad8603 | ||
|
|
d911987787 | ||
|
|
8218c728a8 | ||
|
|
17e3f1c21f | ||
|
|
9c51e1af18 | ||
|
|
a326d72be9 | ||
|
|
fc556d15f8 | ||
|
|
053d998103 | ||
|
|
d8649f7a60 | ||
|
|
5b72407746 | ||
|
|
3e2443a861 | ||
|
|
bed921c593 | ||
|
|
8c8a61ddfe | ||
|
|
6a4b275d40 | ||
|
|
3db9a86a4c | ||
|
|
d7f408e455 | ||
|
|
490f77137d | ||
|
|
07a2077c1e | ||
|
|
2849e19d49 | ||
|
|
98a89e4f2c | ||
|
|
e560650bf3 | ||
|
|
46c58b3202 | ||
|
|
b7c5283a66 | ||
|
|
998fc9890e | ||
|
|
6a97a6dafc | ||
|
|
c18d6b5ae5 | ||
|
|
ee03d44053 | ||
|
|
7a6850d5fe | ||
|
|
6e2500385c | ||
|
|
aabf5f09ab | ||
|
|
75d2895db6 | ||
|
|
50beac2baf | ||
|
|
8dd6cdeb69 | ||
|
|
258438f01f | ||
|
|
943dc6cdd6 | ||
|
|
045f157a63 | ||
|
|
83f1a53d32 | ||
|
|
0f5307437c | ||
|
|
28ebdb72a0 | ||
|
|
745d255808 | ||
|
|
e4088d5e6c | ||
|
|
9c641ddf6b | ||
|
|
c824b0694e | ||
|
|
36b4d5a120 | ||
|
|
bbc5ff5103 | ||
|
|
3c98ce43c6 | ||
|
|
8da3efa2c2 | ||
|
|
3605bec8e0 | ||
|
|
0c0c558ff7 | ||
|
|
7a4e74950c | ||
|
|
0a876c8af9 | ||
|
|
8c78aca69e | ||
|
|
9ff648177c | ||
|
|
161d0ea50f | ||
|
|
e3a5a22b84 | ||
|
|
18be1a0254 | ||
|
|
66291ecc38 | ||
|
|
31d73626e5 | ||
|
|
268035ff9e | ||
|
|
34a7ba4477 | ||
|
|
5e30214e4c | ||
|
|
5231d07fdf | ||
|
|
cfe8ca9836 | ||
|
|
6667b79ac0 | ||
|
|
8ac909b0eb | ||
|
|
ee3ccf151a | ||
|
|
a6fd52d1f9 | ||
|
|
30f77b07bb | ||
|
|
f520a0f272 | ||
|
|
f2b3181735 | ||
|
|
780608894e | ||
|
|
e20cecf7aa | ||
|
|
679a7b6ec2 | ||
|
|
a595239624 | ||
|
|
cdefc7ea9b | ||
|
|
92dd4c0d99 | ||
|
|
00ce60ef20 | ||
|
|
edb7b56f1a | ||
|
|
ef8751a795 | ||
|
|
243edda7f2 | ||
|
|
7665bc6c63 | ||
|
|
48ac3790c2 | ||
|
|
28a67f9957 | ||
|
|
98591c3bc0 | ||
|
|
871332ecf0 | ||
|
|
21a6c0fd89 | ||
|
|
002d374f0c | ||
|
|
ed46f9ac7e | ||
|
|
8d5dbd74b6 | ||
|
|
c2ead0e265 | ||
|
|
43a620b9ff | ||
|
|
7a55ab64d8 | ||
|
|
1575088585 | ||
|
|
96e271e8be | ||
|
|
90380adc90 | ||
|
|
824607080a | ||
|
|
337a21f6d6 | ||
|
|
6df54cfe8d | ||
|
|
b04c8c2b6e | ||
|
|
d327c16904 | ||
|
|
c51585c279 | ||
|
|
df728083cc | ||
|
|
a6ddc22fb8 | ||
|
|
72a1c65d00 | ||
|
|
ccfd7a065c | ||
|
|
54fb0d9bd3 | ||
|
|
995d6646be | ||
|
|
f7d3c90218 | ||
|
|
564188b0d3 | ||
|
|
bef7ba2cfe | ||
|
|
7dba788d09 | ||
|
|
738f870e70 | ||
|
|
542ee42313 | ||
|
|
9140893cd3 | ||
|
|
2866bc626a | ||
|
|
61c4fe8992 | ||
|
|
4592de8fb6 | ||
|
|
15648991fc | ||
|
|
d00ccd2eb5 | ||
|
|
0d6ca0945b | ||
|
|
d1a19a1009 | ||
|
|
3461cbfb06 | ||
|
|
e5ec585f98 | ||
|
|
6a0d05e1ef | ||
|
|
4532108678 | ||
|
|
33974d710a | ||
|
|
a5ec7fc704 | ||
|
|
663b8dcb08 | ||
|
|
656836950e | ||
|
|
23347b392f | ||
|
|
2e19af5032 | ||
|
|
6aaa89a23c | ||
|
|
acceb8efc9 | ||
|
|
92ab7bece2 | ||
|
|
540bcd8d70 | ||
|
|
6476b6b1f0 | ||
|
|
4316999254 | ||
|
|
5fe18400c5 | ||
|
|
9b5ed176cd | ||
|
|
5e38faa09d | ||
|
|
6a75fd84ab | ||
|
|
8f99764f24 | ||
|
|
1a7b874c60 | ||
|
|
36e5377e6a | ||
|
|
a80d1bbd2b | ||
|
|
c2d04499ab | ||
|
|
a5a5c6723e | ||
|
|
d80c6b4b7d | ||
|
|
06518c5736 | ||
|
|
a7e6e4ef45 | ||
|
|
506057d202 | ||
|
|
ffddcb5060 | ||
|
|
3720c5ef79 | ||
|
|
165d664524 | ||
|
|
7b9b23b143 | ||
|
|
cdaf25cb3e | ||
|
|
6d046f251e | ||
|
|
e803076063 | ||
|
|
203960b4b5 | ||
|
|
3d5ff723e9 | ||
|
|
a02a49a184 | ||
|
|
8ca444aee0 | ||
|
|
7ceac05395 | ||
|
|
4893d99774 | ||
|
|
393017cf3b | ||
|
|
6057c9f27d | ||
|
|
a4bdc9a71d | ||
|
|
fbfc2e4d07 | ||
|
|
7bb9ea201c | ||
|
|
70127bad4b | ||
|
|
2bf68b7970 | ||
|
|
d524aea779 | ||
|
|
4fcedc2187 | ||
|
|
45cb97ec85 | ||
|
|
f5070dfa26 | ||
|
|
a89f57a2df | ||
|
|
ad8fca259f | ||
|
|
0bea8a881d | ||
|
|
f4be4c594a | ||
|
|
716a5d1543 | ||
|
|
c7eb466e63 | ||
|
|
71f38f17cd | ||
|
|
e29d3497eb | ||
|
|
8f4c2f5c58 | ||
|
|
528e93004f | ||
|
|
23f8d58859 | ||
|
|
4fa00b74ad | ||
|
|
55271311c4 | ||
|
|
f80b5af432 | ||
|
|
60b3037e4a | ||
|
|
901bf62213 | ||
|
|
ac6a9e7696 | ||
|
|
d2555db952 | ||
|
|
3e37cfa8ed | ||
|
|
f8b7ffcf8c | ||
|
|
d571f22ec0 | ||
|
|
910c630f8e | ||
|
|
cc1ab94a4f | ||
|
|
497eb3c587 | ||
|
|
d217da421f | ||
|
|
d7a83f1b83 | ||
|
|
80636ab083 | ||
|
|
c490c21cd5 | ||
|
|
ed0bda98a6 | ||
|
|
0c200d360b | ||
|
|
90a64dbde2 | ||
|
|
bf5b96362f | ||
|
|
0a9b250d73 | ||
|
|
6c2ccada13 | ||
|
|
a4cf32dce0 | ||
|
|
c579736158 | ||
|
|
5b525eb9ca | ||
|
|
b807215aec | ||
|
|
fc39e8f27d | ||
|
|
fd27e6f928 | ||
|
|
470ddb4704 | ||
|
|
8037a79673 | ||
|
|
0c5ccba9be | ||
|
|
f6a48f2672 | ||
|
|
959103a416 | ||
|
|
b268671afd | ||
|
|
9f8943c89b | ||
|
|
8e231dfa95 | ||
|
|
d8f408ee83 | ||
|
|
76e6d498cf | ||
|
|
d2a59c556e | ||
|
|
9b632eaaca | ||
|
|
b457c8c1fa | ||
|
|
f257145ee0 | ||
|
|
8b1c8f69f7 | ||
|
|
57845851c0 | ||
|
|
4723f66d23 | ||
|
|
6f68d05545 | ||
|
|
8c682c80ce | ||
|
|
525e66d566 | ||
|
|
3cde0a5b96 | ||
|
|
882f0ab8a5 | ||
|
|
4cfa687a3f | ||
|
|
0141fa2f1c | ||
|
|
24b1ec2592 | ||
|
|
28ad6ed552 | ||
|
|
cf94610f46 | ||
|
|
c7836f1157 | ||
|
|
228843b010 | ||
|
|
ab31619745 | ||
|
|
1bc2d58ae1 | ||
|
|
89c59498d1 | ||
|
|
74dac174db | ||
|
|
fef8f5c453 | ||
|
|
8f48ede957 | ||
|
|
8a71c680ac | ||
|
|
5584481bef | ||
|
|
f2a464f626 | ||
|
|
44399991f4 | ||
|
|
afe2967473 | ||
|
|
471e684151 | ||
|
|
1ce77e6f15 | ||
|
|
938cf8fce2 | ||
|
|
18c4df98ff | ||
|
|
c4bbb76da4 | ||
|
|
d99dee9c40 | ||
|
|
5c7d34677d | ||
|
|
4c4d8a5e84 | ||
|
|
b44092ac43 | ||
|
|
806dd5d783 | ||
|
|
d4d0f4c131 | ||
|
|
8c7ef64fab | ||
|
|
fb6636d182 | ||
|
|
58faae95af | ||
|
|
468519cd46 | ||
|
|
0ff75e7a88 | ||
|
|
d2063cc357 | ||
|
|
d35f3fc573 | ||
|
|
d1c26e4535 | ||
|
|
5fa76dfd66 | ||
|
|
525d5de30c | ||
|
|
54d500737a | ||
|
|
8651736e61 | ||
|
|
b20918b60e | ||
|
|
8905fe5a54 | ||
|
|
a519ec6220 | ||
|
|
a0bfa710be | ||
|
|
bff80dfc70 | ||
|
|
e17b3d24bf | ||
|
|
135e8419ae | ||
|
|
cd1e0571a5 | ||
|
|
b0e6bcfaa0 | ||
|
|
f25c23c051 | ||
|
|
2cd5006260 | ||
|
|
94ea323836 | ||
|
|
2ff56fe86c | ||
|
|
9603c91877 | ||
|
|
feba525e7c | ||
|
|
236846baa7 | ||
|
|
a4d1293eaf | ||
|
|
42abc858a4 | ||
|
|
19ac36b965 | ||
|
|
0eb79368ea | ||
|
|
8ca52ba8f9 | ||
|
|
1cb91fabb6 | ||
|
|
afe48da4b1 | ||
|
|
806248ebd4 | ||
|
|
dc7322cc4a | ||
|
|
415e6a46f8 | ||
|
|
f0a34de3c0 | ||
|
|
a953db6d9c | ||
|
|
3b8d49104c | ||
|
|
ac73e25d88 | ||
|
|
4840c2c64f | ||
|
|
248ae9d4ba | ||
|
|
a81a5fa31b | ||
|
|
8625e2c051 | ||
|
|
cc6be754f7 | ||
|
|
c9895dd5c7 | ||
|
|
b28333ea0d | ||
|
|
f34b090b42 | ||
|
|
2987895370 | ||
|
|
f141325258 | ||
|
|
3427a1aff4 | ||
|
|
35136090cb | ||
|
|
4853014a61 | ||
|
|
7ef61b47e3 | ||
|
|
c280eac309 | ||
|
|
78408cf54b | ||
|
|
2106be6a04 | ||
|
|
d6e8e1be6e | ||
|
|
c3c67f18b8 | ||
|
|
c8911c0dfd | ||
|
|
afaa0a3493 | ||
|
|
8b00d0580b | ||
|
|
6bbd42bfd1 | ||
|
|
4e6a171a42 | ||
|
|
3e9067fe8e | ||
|
|
ffe344ce90 | ||
|
|
e100ba8362 | ||
|
|
7e54bd4956 | ||
|
|
4e7f2c6a4f | ||
|
|
5718f3dca2 | ||
|
|
2027429d87 | ||
|
|
cfe4299301 | ||
|
|
9840470df8 | ||
|
|
ff01a7da1e | ||
|
|
fdceeb368e | ||
|
|
0c2d71c2ce | ||
|
|
5bc000cc31 | ||
|
|
3b9ffa194d | ||
|
|
f3d85ae219 | ||
|
|
b9fd609bb2 | ||
|
|
8416d69f1e | ||
|
|
71ae2a3458 | ||
|
|
9279bf7628 | ||
|
|
d0f8d43739 | ||
|
|
eb65822665 | ||
|
|
4a5fc2104f | ||
|
|
0e6fedc056 | ||
|
|
1a87e30b95 | ||
|
|
03eda06a38 | ||
|
|
263bee3c09 | ||
|
|
0c3f352c63 | ||
|
|
055ba4f14e | ||
|
|
ecfbad0443 | ||
|
|
8f0e717404 | ||
|
|
4076b37378 | ||
|
|
ca59ae4f4f | ||
|
|
be88e93820 | ||
|
|
83fd387f2f | ||
|
|
cd6aac9acf | ||
|
|
05d02b702a | ||
|
|
f6933a8868 | ||
|
|
51b42bc7b8 | ||
|
|
e95f36c725 | ||
|
|
b6387f7709 | ||
|
|
1f5a0c0130 | ||
|
|
7f2bd47849 | ||
|
|
4c2bc56d2e | ||
|
|
010690a9c7 | ||
|
|
1a4303bbce | ||
|
|
d4343a5e42 | ||
|
|
6d46717cfc | ||
|
|
3088371631 | ||
|
|
880a8da68a | ||
|
|
067da8223d | ||
|
|
b510243dd8 | ||
|
|
e2c6f50108 | ||
|
|
51ed7a59da | ||
|
|
94ea91ec63 | ||
|
|
76ac8dda54 | ||
|
|
fe77360874 | ||
|
|
a895729b9e | ||
|
|
fdc7471a7b | ||
|
|
7198f20d69 | ||
|
|
de065c728f | ||
|
|
2fa3f5072d | ||
|
|
aba2acb062 | ||
|
|
a1aad5d165 | ||
|
|
0fe06b3fbb | ||
|
|
7cc6f6f2a3 | ||
|
|
a298d2976f | ||
|
|
09e94397aa | ||
|
|
86cd2c09a4 | ||
|
|
f1d99dd0ed | ||
|
|
c731f8e5c0 | ||
|
|
24f560aaa2 | ||
|
|
905e104ba2 | ||
|
|
d21ae0f94a | ||
|
|
95b0ad15ef | ||
|
|
19eb6a8a60 | ||
|
|
85f652290b | ||
|
|
f634f20ccc | ||
|
|
feb6baad05 | ||
|
|
37aa4f0257 | ||
|
|
190d3a1da9 | ||
|
|
8592f7e672 | ||
|
|
f0fcc19915 | ||
|
|
e81d8beb19 | ||
|
|
5e0df62d7a | ||
|
|
d3208bddb0 | ||
|
|
eb977b8021 | ||
|
|
b30eb59791 | ||
|
|
72a6c34450 | ||
|
|
f38fe5a9dd | ||
|
|
75cfe1c5dd | ||
|
|
ec8c99c3b2 | ||
|
|
6d433fecef | ||
|
|
bae9dbc407 | ||
|
|
1cbbcc0d87 | ||
|
|
c0182df05e | ||
|
|
7d6baf53fa | ||
|
|
c6f83b9ca6 | ||
|
|
1374c68274 | ||
|
|
6c3d6b7c28 | ||
|
|
0fc8c37f23 | ||
|
|
ab21f718ba | ||
|
|
42c7256a55 | ||
|
|
24333d0a19 | ||
|
|
60215cf2cf | ||
|
|
3bc8a79b9b | ||
|
|
6d569a86f9 | ||
|
|
84508e91da | ||
|
|
38cbb42b58 | ||
|
|
549fef8eb5 | ||
|
|
e9dd6e6c90 | ||
|
|
2e81751131 | ||
|
|
242faa138b | ||
|
|
157f1134bf | ||
|
|
4277364e91 | ||
|
|
0d5fec6dfc | ||
|
|
8a8eecbe8b | ||
|
|
4e903e4c50 | ||
|
|
2481367ab4 | ||
|
|
5098866413 | ||
|
|
91d746c5c0 | ||
|
|
e53754d202 | ||
|
|
eb21eeb214 | ||
|
|
14e3d9d576 | ||
|
|
2bce9c8add | ||
|
|
c8f5824554 | ||
|
|
7d3c18e1fb | ||
|
|
dce691157e | ||
|
|
611a74d74d | ||
|
|
de5f8082de | ||
|
|
59786d7bd7 | ||
|
|
cb0b948603 | ||
|
|
2e4f1a21b4 | ||
|
|
649a14db84 | ||
|
|
9ebe0b61eb | ||
|
|
be312bbe4f | ||
|
|
852e89c0df | ||
|
|
522e132200 | ||
|
|
0c62d8454d | ||
|
|
5a18b8de77 | ||
|
|
4b6dbcaec4 | ||
|
|
8e7fa3d3d6 | ||
|
|
df3051038e | ||
|
|
8e8d9f39cb | ||
|
|
f73150c998 | ||
|
|
daef0a358c | ||
|
|
422bc4da30 | ||
|
|
faf36190bd | ||
|
|
6e1fd0694f | ||
|
|
1220b7d501 | ||
|
|
321d4e9c87 | ||
|
|
6608de6cfe | ||
|
|
e217774678 | ||
|
|
091a35293a | ||
|
|
b95eaa5843 | ||
|
|
5e309feaeb | ||
|
|
e72c56520e | ||
|
|
12b5cf0331 | ||
|
|
0987521cd3 | ||
|
|
8b46feb085 | ||
|
|
03bd346432 | ||
|
|
cd46a08f4a | ||
|
|
09d6d3c545 | ||
|
|
d59ca0a9cc | ||
|
|
ea1554915b | ||
|
|
b2107b5e27 | ||
|
|
ca2e448684 | ||
|
|
b4dcfd650a | ||
|
|
23b818f9e6 | ||
|
|
839a61ef59 | ||
|
|
6f9224784e | ||
|
|
fe877486ff | ||
|
|
ece6969edf | ||
|
|
4c76c97762 | ||
|
|
1d30283514 | ||
|
|
34886dc7e0 | ||
|
|
1edabc4b3c | ||
|
|
90468e8095 | ||
|
|
f71d0c0da8 | ||
|
|
c0f668c4bb | ||
|
|
cdad46377b | ||
|
|
8ed8e57012 | ||
|
|
691e60d72b | ||
|
|
a888de19cd | ||
|
|
9ceadac299 | ||
|
|
bb50db40d2 | ||
|
|
35c6df2535 | ||
|
|
98c812a297 | ||
|
|
32100be47a | ||
|
|
3b23e68540 | ||
|
|
99e3af8ff7 | ||
|
|
e4c78f92d4 | ||
|
|
4fed655621 | ||
|
|
1030cce4c7 | ||
|
|
8a0085f0f8 | ||
|
|
fab9f2a9fb | ||
|
|
e4ae2f9176 | ||
|
|
5e891c2caa | ||
|
|
7580c385da | ||
|
|
0d8a3fb389 | ||
|
|
55d863adb8 | ||
|
|
6e44eed9fe | ||
|
|
2d127b8942 | ||
|
|
7ab6af00bc | ||
|
|
e53ac65518 | ||
|
|
1158294323 | ||
|
|
4ecd9e7e23 | ||
|
|
13c678344e | ||
|
|
8a7de4408d | ||
|
|
138e3fb9f4 | ||
|
|
8fa875a542 | ||
|
|
ceeeee3d76 | ||
|
|
a763b3d140 | ||
|
|
ea8f9c3d0d | ||
|
|
9a22ac6ee6 | ||
|
|
8a36322e28 | ||
|
|
a766052243 | ||
|
|
31ec840a8d | ||
|
|
e555937214 | ||
|
|
3799833cfa | ||
|
|
231f90a8e5 | ||
|
|
4a6fddf280 | ||
|
|
2822f5fd0a | ||
|
|
0359c1845a | ||
|
|
34ff6d5f6b | ||
|
|
640b09c6b2 | ||
|
|
079e383319 | ||
|
|
a42ac00d3c | ||
|
|
701f3d6054 | ||
|
|
45c2a98b5b | ||
|
|
6b9137ac6c | ||
|
|
35e86efbce | ||
|
|
549eaefdb8 | ||
|
|
b553af8fd0 | ||
|
|
9d1c58a218 | ||
|
|
13cc117caa | ||
|
|
2727f75919 | ||
|
|
0f2f6621b5 | ||
|
|
caa49a8ef3 | ||
|
|
9a6a787191 | ||
|
|
836c996544 | ||
|
|
3a5f19f7fd | ||
|
|
e708ef96d1 | ||
|
|
b8028ff318 | ||
|
|
9a7e6850d6 | ||
|
|
fdbed324f7 | ||
|
|
95baf25648 | ||
|
|
48ea024d7e | ||
|
|
6dfeea1980 | ||
|
|
9d6cf95cf0 | ||
|
|
97c8603478 | ||
|
|
7654983d3d | ||
|
|
3c2b4b1560 | ||
|
|
cb63df2bac | ||
|
|
400073c7cc | ||
|
|
7438d6db18 | ||
|
|
719323e9c3 | ||
|
|
a3020b6787 | ||
|
|
702a68307a | ||
|
|
344235b1e1 | ||
|
|
8d70167acf | ||
|
|
b75b9fb7d6 | ||
|
|
f817eaa5c8 | ||
|
|
574c5cf1b2 | ||
|
|
e0e8521eb9 | ||
|
|
46f7d97176 | ||
|
|
f3f6f6a493 | ||
|
|
139658b5c3 | ||
|
|
11607b108c | ||
|
|
62748f6d4c | ||
|
|
a53b111182 | ||
|
|
6ffca842e6 | ||
|
|
107684e393 | ||
|
|
08930ddffb | ||
|
|
458c76d3b7 | ||
|
|
1847312c7a | ||
|
|
3015baf6e6 | ||
|
|
3c51455fa3 | ||
|
|
1028172dfc | ||
|
|
2b6059dee3 | ||
|
|
79ba3a28e6 | ||
|
|
398201f592 | ||
|
|
6f4b5fc71a | ||
|
|
9fc83c7cd5 | ||
|
|
e6cddf797a | ||
|
|
8a1b83048f | ||
|
|
ac5c0c5efa | ||
|
|
bfee734669 | ||
|
|
22d533c451 | ||
|
|
adf61d9878 | ||
|
|
dcc8094ce4 | ||
|
|
c3bd5d21aa | ||
|
|
a75746c7c1 | ||
|
|
eeafe77614 | ||
|
|
54ad927044 | ||
|
|
a2e82dc883 | ||
|
|
6c050c55d9 | ||
|
|
379e17c3bc | ||
|
|
c0640e49ee | ||
|
|
07d4668670 | ||
|
|
1c54d24962 | ||
|
|
aa64b2ee69 | ||
|
|
00dc4b9ace | ||
|
|
c69a978589 | ||
|
|
b69b50c6c6 | ||
|
|
970525cfd4 | ||
|
|
533136fb0e | ||
|
|
3218cb9ace | ||
|
|
147c000ef1 | ||
|
|
8ddd0b2f6f | ||
|
|
1b7b2ff456 | ||
|
|
289e98ed5b | ||
|
|
d1acd75068 | ||
|
|
44085df592 | ||
|
|
a3af8fc0ea | ||
|
|
c6ecf48ccd | ||
|
|
2de5a9d281 | ||
|
|
a6bc3e9790 | ||
|
|
c53f5baceb | ||
|
|
3822625e77 | ||
|
|
00ae123736 | ||
|
|
c167693ae4 | ||
|
|
9a59a124aa | ||
|
|
03f00c5526 | ||
|
|
bdb6153b3e | ||
|
|
70357be029 | ||
|
|
8d6db27b34 | ||
|
|
c06e55df81 | ||
|
|
58463bc3dc | ||
|
|
d1310b3337 | ||
|
|
b3160a17ea | ||
|
|
9f819061cd | ||
|
|
e4e2e886e8 | ||
|
|
278baaac80 | ||
|
|
5c8809e55d | ||
|
|
af4f56abfd | ||
|
|
1870b957f5 | ||
|
|
3640053415 | ||
|
|
d3ed14ebb7 | ||
|
|
4c9b8c7794 | ||
|
|
bf57a28654 | ||
|
|
7040bef27e | ||
|
|
40b4dc3b61 | ||
|
|
b474d34cf0 | ||
|
|
fa7c945363 | ||
|
|
c40a7a5265 | ||
|
|
a94efddfe6 | ||
|
|
99d97acb1d | ||
|
|
eb7f4d2eaa | ||
|
|
2e2e37098f | ||
|
|
ad79162061 | ||
|
|
c613f44991 | ||
|
|
583f60a3f3 | ||
|
|
5792bf1a85 | ||
|
|
75c16d1cbb | ||
|
|
dea65b637c | ||
|
|
b01953a5a3 | ||
|
|
47aec87a56 | ||
|
|
b706e8f1fd | ||
|
|
1f469a7acc | ||
|
|
07050f6e9c | ||
|
|
ab3e009d76 | ||
|
|
5fbf4af596 | ||
|
|
943c3155af | ||
|
|
9477437256 | ||
|
|
c7b4b8d3c3 | ||
|
|
52a264cc2b | ||
|
|
dc3e223875 | ||
|
|
70bd598ead | ||
|
|
f03aec1709 | ||
|
|
3c85d29ece | ||
|
|
2099f977fb | ||
|
|
6f25c4750d | ||
|
|
4e40b6cf3e | ||
|
|
7620baee80 | ||
|
|
4c491d850d | ||
|
|
e2c088a5c9 | ||
|
|
82b3013b0f | ||
|
|
73b0188126 | ||
|
|
82abdeb15f | ||
|
|
4cd461f57a | ||
|
|
5696178de4 | ||
|
|
5f5f7ec3dd | ||
|
|
c9498868e9 | ||
|
|
f95e33cf7b | ||
|
|
c0f62e5633 | ||
|
|
3de4395d5e | ||
|
|
cb283bb95a | ||
|
|
b81d8bf97a | ||
|
|
918db68c52 | ||
|
|
047fe9a422 | ||
|
|
8a78616351 | ||
|
|
89382f6306 | ||
|
|
beba23ea2e | ||
|
|
aba0633a78 | ||
|
|
0aa20f931d | ||
|
|
eefea5444e | ||
|
|
a6e142dd02 | ||
|
|
6c1f023768 | ||
|
|
ea1ffe7fb5 | ||
|
|
36250f5180 | ||
|
|
268f09160d | ||
|
|
7620395f92 | ||
|
|
28678f4e06 | ||
|
|
720ae949aa | ||
|
|
32fe0493c4 | ||
|
|
86e88c18b0 | ||
|
|
e684e230a6 | ||
|
|
a8b647e886 | ||
|
|
bce747e7f9 | ||
|
|
b7546b45b3 | ||
|
|
f183260ad6 | ||
|
|
0f057a8351 | ||
|
|
7ca13b3d51 | ||
|
|
1418712b4c | ||
|
|
e5021ffa01 | ||
|
|
572212c374 | ||
|
|
e0c6981b40 | ||
|
|
0d60cadffc | ||
|
|
26bc2a8c3e | ||
|
|
07dafd697e | ||
|
|
e48f86b289 | ||
|
|
e5c2b44572 | ||
|
|
9307834ef0 | ||
|
|
99036ec151 | ||
|
|
5776f43b98 | ||
|
|
0c755846fe | ||
|
|
19d1fa8e7d | ||
|
|
8937647d5f | ||
|
|
7541f57aeb | ||
|
|
b6a7771a23 | ||
|
|
1d32695f10 | ||
|
|
044feea23a | ||
|
|
0ba19cce4d | ||
|
|
67c6e10f5f | ||
|
|
98e2c311c3 | ||
|
|
be9bd16b4c | ||
|
|
d9ccde94c9 | ||
|
|
93dcf8231f | ||
|
|
b6cfc82b4e | ||
|
|
d50fe46f0e | ||
|
|
18b5b76a80 | ||
|
|
a87fab8d18 | ||
|
|
7608405a1f | ||
|
|
d8ad360b38 | ||
|
|
a3840963e1 | ||
|
|
e6b4528028 | ||
|
|
55a32c58a9 | ||
|
|
da85252347 | ||
|
|
15a288aa5b | ||
|
|
c4d6fa855c | ||
|
|
80fc1e5309 | ||
|
|
506a2b99c5 | ||
|
|
06bbd6e066 | ||
|
|
3fcf342fbc | ||
|
|
7e515d9d5b | ||
|
|
a045594b57 | ||
|
|
0e5a1cc8e4 | ||
|
|
e3602e3c75 | ||
|
|
4cccf28b4d | ||
|
|
558c75a452 | ||
|
|
a661c17eca | ||
|
|
fd9d372e6a | ||
|
|
cf23343911 | ||
|
|
780e23301b | ||
|
|
993f90cb2c | ||
|
|
db1bf88934 | ||
|
|
15c2727a1d | ||
|
|
e01e9715b9 | ||
|
|
98911af396 | ||
|
|
f579345059 | ||
|
|
64dfada038 | ||
|
|
7ca475f968 | ||
|
|
7636a559f9 | ||
|
|
b85941531d | ||
|
|
782d1f17d1 | ||
|
|
e1e8f33f67 | ||
|
|
805600ad44 | ||
|
|
342d49d050 | ||
|
|
992d8a90c7 | ||
|
|
9b92e7f8e8 | ||
|
|
bf9b23539e | ||
|
|
9cfc862b07 | ||
|
|
52991f3d66 | ||
|
|
37441e3fac | ||
|
|
8b04040d7e | ||
|
|
9608464ed1 | ||
|
|
2587bac300 | ||
|
|
504bd40263 | ||
|
|
28ec015ef4 | ||
|
|
65d4a0a8cd | ||
|
|
30847570bc | ||
|
|
51b7ec2b26 | ||
|
|
f12c6bf748 | ||
|
|
1b10aae74c | ||
|
|
3e84c0a91a | ||
|
|
2ff57c2eb7 | ||
|
|
bb04144fe8 | ||
|
|
2f2f3e26c3 | ||
|
|
34f037be92 | ||
|
|
429bef6830 | ||
|
|
15dd783d2c | ||
|
|
7851d3d987 | ||
|
|
8a942422da | ||
|
|
914b848e58 | ||
|
|
1984595d0d | ||
|
|
a58f84a1ff | ||
|
|
8d487d31a4 | ||
|
|
4c0e2af6e3 | ||
|
|
cb51ec61f7 | ||
|
|
2872f1706c | ||
|
|
da0afd3939 | ||
|
|
984602b7a0 | ||
|
|
705b74b3ba | ||
|
|
31494ec327 | ||
|
|
a1e1a33308 | ||
|
|
78acdf9095 | ||
|
|
40851409fb | ||
|
|
a03e354504 | ||
|
|
e91a41401c | ||
|
|
f4791c19e1 | ||
|
|
2ec500f926 | ||
|
|
3c1271b1c4 | ||
|
|
39057a6aa0 | ||
|
|
41f9c3d2a1 | ||
|
|
a7e358c27d | ||
|
|
afdf02b4be | ||
|
|
1e1428c73d | ||
|
|
4b8a2450bd | ||
|
|
b6b2e812c1 | ||
|
|
97150034bc | ||
|
|
1fe75f9420 | ||
|
|
6bd342f63a | ||
|
|
b2fa6fca82 | ||
|
|
5df7b9aa85 | ||
|
|
37c9ad8e8d | ||
|
|
7ec8d4c3f6 | ||
|
|
e81564387c | ||
|
|
3139ae1528 | ||
|
|
cdce9e27fb | ||
|
|
9049d01a5e | ||
|
|
76dcfb5ed0 | ||
|
|
8a69421dc9 | ||
|
|
e2d098dd9b | ||
|
|
cdf54b07c5 | ||
|
|
4e9bf53035 | ||
|
|
d45c2cf0f2 | ||
|
|
3e76f7af0f | ||
|
|
ac0178d2c7 | ||
|
|
7eb7dbe0be | ||
|
|
93c212f28d | ||
|
|
52ab7b8865 | ||
|
|
4061fc7cf8 | ||
|
|
8f15ad06f3 | ||
|
|
5654dc9907 | ||
|
|
a31c423d9e | ||
|
|
6d69f0b547 | ||
|
|
04b3b3dbc5 | ||
|
|
6125988f35 | ||
|
|
0a85279bcb | ||
|
|
3715286eba | ||
|
|
3230206b69 | ||
|
|
0f1c518592 | ||
|
|
9ba88838ba | ||
|
|
48366d245c | ||
|
|
44206cf088 | ||
|
|
84f2520924 | ||
|
|
6e2254c13d | ||
|
|
1f6f7b614c | ||
|
|
4ec2fe556a | ||
|
|
311e7802e5 | ||
|
|
153dc620c8 | ||
|
|
d0ebaff7b4 | ||
|
|
e25e7ff4a2 | ||
|
|
0b48e68a3c | ||
|
|
c248944dc1 | ||
|
|
204bf81dd1 | ||
|
|
f25ad83a02 | ||
|
|
a001553c5e | ||
|
|
9a94c6d85e | ||
|
|
46942413db | ||
|
|
434d0fb1c0 | ||
|
|
2721317fc3 | ||
|
|
18844d096a | ||
|
|
b10cb1c83c | ||
|
|
ed085776c7 | ||
|
|
492e320628 | ||
|
|
d6c48a5cf1 | ||
|
|
44ac7d152b | ||
|
|
70816f90b2 | ||
|
|
093fe5c7ef | ||
|
|
5e664e3a06 | ||
|
|
0f8c12aaf4 | ||
|
|
8a75acb985 | ||
|
|
1cef08e92b | ||
|
|
1d79d342c0 | ||
|
|
a58700c78f | ||
|
|
79ab7a1062 | ||
|
|
fcadee550e | ||
|
|
852d194b39 | ||
|
|
08e50ac72b | ||
|
|
d98249814d | ||
|
|
9715ba0c8a | ||
|
|
7abebabf4f | ||
|
|
0892d1c744 | ||
|
|
a938b7aadb | ||
|
|
d24c9322cc | ||
|
|
ad2ccae5db | ||
|
|
74afd8e819 | ||
|
|
cee297b218 | ||
|
|
873871a42c | ||
|
|
851c7b891e | ||
|
|
0064f5dcfd | ||
|
|
e93e4a9931 | ||
|
|
91761a2bea | ||
|
|
8e91a89a37 | ||
|
|
b2650c5a96 | ||
|
|
8d3e0687a0 | ||
|
|
2d4e08e060 | ||
|
|
5d068dfb23 | ||
|
|
c49aa6beef | ||
|
|
c7defdc06f | ||
|
|
eb23dda99b | ||
|
|
7174549441 | ||
|
|
a27147a75e | ||
|
|
070ad695ec | ||
|
|
a37a90c8c7 | ||
|
|
22f161d178 | ||
|
|
a56bcc8903 | ||
|
|
7613f1b726 | ||
|
|
cc44a833d5 | ||
|
|
f5e75b5933 | ||
|
|
0c47c2016d | ||
|
|
5adc1a12dd | ||
|
|
2ad5e6f06a | ||
|
|
03ab20a4b8 | ||
|
|
b9279f73fa | ||
|
|
d8923123fa | ||
|
|
9d55369c57 | ||
|
|
217e95e425 | ||
|
|
d44b811b0d | ||
|
|
b61ecabed3 | ||
|
|
e0e6f2b8e9 | ||
|
|
ebdb10e7f9 | ||
|
|
c2f3396753 | ||
|
|
1b8366f040 | ||
|
|
7df6d27900 | ||
|
|
e9e92d0892 | ||
|
|
86f2c9d350 | ||
|
|
a0ebbf997d | ||
|
|
9d5d3081dc | ||
|
|
5274826e5c | ||
|
|
79bd1f8121 | ||
|
|
b10b713e48 | ||
|
|
6dcb83f913 | ||
|
|
daf0b72eed | ||
|
|
ac52f73af2 | ||
|
|
832465a2a3 | ||
|
|
3768145c9b | ||
|
|
337161be02 | ||
|
|
510904ebea | ||
|
|
a37b98d95d | ||
|
|
35788f8654 | ||
|
|
ec17199feb | ||
|
|
fa63b3ee01 | ||
|
|
68f033fbbe | ||
|
|
37c7318097 | ||
|
|
012d0ee885 | ||
|
|
9b211928a9 | ||
|
|
fed210dc38 | ||
|
|
b73549fd35 | ||
|
|
5bb6c4d9e4 | ||
|
|
7a344930ec | ||
|
|
b2702efc93 | ||
|
|
d530c21cd7 | ||
|
|
7f51160879 | ||
|
|
5c80c31a70 | ||
|
|
ef53600d74 | ||
|
|
81cdcb4b62 | ||
|
|
ee981c4c19 | ||
|
|
589f76afca | ||
|
|
c33ce8e0e4 | ||
|
|
12f62df49a | ||
|
|
b367e105fa | ||
|
|
7ffbcebe4e | ||
|
|
415b114dac | ||
|
|
606a1f48c8 | ||
|
|
91ce14a410 | ||
|
|
aef17b414c | ||
|
|
a70bf1ffb1 | ||
|
|
7e8679b6c3 | ||
|
|
f1e7167c65 | ||
|
|
145f64bdfc | ||
|
|
3821ea2c74 | ||
|
|
ef082c2e1f | ||
|
|
8a26cfad79 | ||
|
|
38d64a34a1 | ||
|
|
586e6f1e1b | ||
|
|
bf419d18a9 | ||
|
|
94f8650ca4 | ||
|
|
41d5111684 | ||
|
|
b6ea06ba24 | ||
|
|
84222e8078 | ||
|
|
6e7f826e19 | ||
|
|
13c85cdfcb | ||
|
|
c2826bb1af | ||
|
|
8fa070f01c | ||
|
|
3c4af1a194 | ||
|
|
a710181388 | ||
|
|
c6ad476cb7 | ||
|
|
d1b403333c | ||
|
|
425427c96c | ||
|
|
ac4346719b | ||
|
|
e2c9fe8d12 | ||
|
|
423de39ad0 | ||
|
|
6c45fcbfc7 | ||
|
|
51c668a0fd | ||
|
|
8408e7fdb4 | ||
|
|
2975eb315f | ||
|
|
0ac05dbb0f | ||
|
|
7db7747cb0 | ||
|
|
343a1e2a76 | ||
|
|
44c58a66d1 | ||
|
|
8fc11c0791 | ||
|
|
db75d94961 | ||
|
|
26ff528a85 | ||
|
|
f7e9f85668 | ||
|
|
75eb0c6951 | ||
|
|
26fdb19344 | ||
|
|
e31638d3dd | ||
|
|
e12cd83b80 | ||
|
|
040b476359 | ||
|
|
d7633f40ba | ||
|
|
80fc8d4da9 | ||
|
|
9a92d20001 | ||
|
|
2b18089641 | ||
|
|
1da87d1d19 | ||
|
|
0c54276fe2 | ||
|
|
dda9a95163 | ||
|
|
34fa456106 | ||
|
|
0091cb3f23 | ||
|
|
9fe4504623 | ||
|
|
08d68300bd | ||
|
|
e326e2c6b3 | ||
|
|
e94dc226b5 | ||
|
|
2afd21c7ba | ||
|
|
bd2edea1c9 | ||
|
|
00cd0e1ae3 | ||
|
|
05aefc6489 | ||
|
|
5652018cde | ||
|
|
a63ba6bc4f | ||
|
|
c043be3aa4 | ||
|
|
b7180893c6 | ||
|
|
96ca7a8cbc | ||
|
|
c87c811719 | ||
|
|
4dab30ce6f | ||
|
|
75dc21c66d | ||
|
|
b0a4d7278a | ||
|
|
a01607e869 | ||
|
|
a3fd3205a9 | ||
|
|
55084499ac | ||
|
|
3e6f76826b | ||
|
|
01e9d39b63 | ||
|
|
0116d4176a | ||
|
|
7ea306a61a | ||
|
|
cdaab550e9 | ||
|
|
aa6f617715 | ||
|
|
7e4592c1e7 | ||
|
|
b97024c8f6 | ||
|
|
0f44f6752e | ||
|
|
3c9054c36f | ||
|
|
61379d4e05 | ||
|
|
fd2b779bb8 | ||
|
|
202e8ac3a1 | ||
|
|
6796f20683 | ||
|
|
cdc9fddc44 | ||
|
|
6409661a9f | ||
|
|
4ed03c2db2 | ||
|
|
7b2a9f7ea8 | ||
|
|
0d222e138f | ||
|
|
a80c415fc0 | ||
|
|
3f1a75f40a | ||
|
|
ad4bf1ac84 | ||
|
|
11dec27dd1 | ||
|
|
66253e142b | ||
|
|
b22b67c7d9 | ||
|
|
d8662b709a | ||
|
|
e826309d59 | ||
|
|
1554722a83 | ||
|
|
16ed89c471 | ||
|
|
6ccae6cc37 | ||
|
|
292ed892c1 | ||
|
|
bb8b91a100 | ||
|
|
1310b34e9c | ||
|
|
86cdb64b1d | ||
|
|
0456815bd5 | ||
|
|
1c12cd6b9e | ||
|
|
3c687d29d8 | ||
|
|
bb70edfdb3 | ||
|
|
a3f189f452 | ||
|
|
70727895f7 | ||
|
|
cdbf58b2c1 | ||
|
|
fe9bcc254a | ||
|
|
b0270550c5 | ||
|
|
597faee248 | ||
|
|
42c0815cda | ||
|
|
a5f12db6ba | ||
|
|
62808f8342 | ||
|
|
c6e89f938d | ||
|
|
1edc116532 | ||
|
|
40aa92c5f7 | ||
|
|
4eb39dc5ff | ||
|
|
b5cf6c7161 | ||
|
|
198691182b | ||
|
|
72b81bf403 | ||
|
|
8a3ac7a26e | ||
|
|
8878d7c5dc | ||
|
|
9a7b8da279 | ||
|
|
1f9ab7ca5d | ||
|
|
2c00cb555c | ||
|
|
dcbc7ff217 | ||
|
|
20f42aa2cc | ||
|
|
19fef019ed | ||
|
|
ea02de0cc9 | ||
|
|
1525ffc225 | ||
|
|
5458d77980 | ||
|
|
a545dc9264 | ||
|
|
b7c658e8f8 | ||
|
|
de69ecc35f | ||
|
|
b6f754c29a | ||
|
|
39e0708b3b | ||
|
|
5a3ed27fed | ||
|
|
a7cf39c7cd | ||
|
|
01464a7860 | ||
|
|
e17576a6f7 | ||
|
|
f33cd15419 | ||
|
|
fd3fefd6f1 | ||
|
|
36df21d823 | ||
|
|
05774854ef | ||
|
|
9dadafe20a | ||
|
|
6fd7427cae | ||
|
|
9065588a76 | ||
|
|
b4b47ec8fd | ||
|
|
ea9f313416 | ||
|
|
af8e770106 | ||
|
|
10f03795f9 | ||
|
|
2ad7c5c675 | ||
|
|
084a1dd7d2 | ||
|
|
d1793d9bcf | ||
|
|
d7ed33809f | ||
|
|
798041fe11 | ||
|
|
995420ee87 | ||
|
|
341ff3de37 | ||
|
|
ce06fcdbe0 | ||
|
|
b8c93b3572 | ||
|
|
4ea6faae81 | ||
|
|
ca8ddd5f39 | ||
|
|
3924f628b4 | ||
|
|
53e0893b51 | ||
|
|
d988b9e6d2 | ||
|
|
6060f41458 | ||
|
|
569ea3ebdd | ||
|
|
40eafa8adc | ||
|
|
1ca5b72073 | ||
|
|
d7c308c688 | ||
|
|
1e0191a37c | ||
|
|
a8d9e8ba7c | ||
|
|
1a5c18c9bd | ||
|
|
421e6303ae | ||
|
|
a79366f105 | ||
|
|
f85198c60f | ||
|
|
2afa1f0dc8 | ||
|
|
ef06165ea2 | ||
|
|
d398d367c1 | ||
|
|
951fa96848 | ||
|
|
77cc99acd3 | ||
|
|
62190d79be | ||
|
|
f7ee528d41 | ||
|
|
faa055010f | ||
|
|
ba8fd25604 | ||
|
|
9556d8e6da | ||
|
|
5b8b4c8c7b | ||
|
|
82aed2caab | ||
|
|
add4846d79 | ||
|
|
e354a0ee0e | ||
|
|
ccd6704b8f | ||
|
|
9bdb41a727 | ||
|
|
a40f84d519 | ||
|
|
bdb49a36bf | ||
|
|
1458ba6f6f | ||
|
|
007073354f | ||
|
|
be827211d2 | ||
|
|
5bc3924756 | ||
|
|
ff6d78244b | ||
|
|
5f1b9a17ca | ||
|
|
534364454d | ||
|
|
0e65b9b9f8 | ||
|
|
07a41f58d7 | ||
|
|
5b04e195b0 | ||
|
|
9fa2dae68c | ||
|
|
9000bc138f | ||
|
|
9660510cc7 | ||
|
|
298665e32a | ||
|
|
d0a3c08840 | ||
|
|
63a1b49745 | ||
|
|
9547ac0afd | ||
|
|
fa891edb7c | ||
|
|
65992ba6ae | ||
|
|
791a749c2f | ||
|
|
9261d8ae9d | ||
|
|
405b82588b | ||
|
|
0dfd2003f9 | ||
|
|
3d249365c2 | ||
|
|
7fb33653ad | ||
|
|
3cccfd97d2 | ||
|
|
0c40cdc990 | ||
|
|
81392a71dd | ||
|
|
b2f3cc6903 | ||
|
|
19a960856c | ||
|
|
02d2ac904d | ||
|
|
29f93597f2 | ||
|
|
20c3ca7d37 | ||
|
|
9bb2cfcd51 | ||
|
|
6927158daa | ||
|
|
0657d343bf | ||
|
|
37aedc8b03 | ||
|
|
3c89ce97c2 | ||
|
|
753b9c9e67 | ||
|
|
06b1baa454 | ||
|
|
e25cd9ba48 | ||
|
|
e00c6f9c77 | ||
|
|
68cc06dc1f | ||
|
|
1901655669 | ||
|
|
753d1d50d0 | ||
|
|
ac108cd708 | ||
|
|
29be837b97 | ||
|
|
682eac3dbc | ||
|
|
ccec84aef2 | ||
|
|
13983d0e51 | ||
|
|
3f80134f07 | ||
|
|
ad36ec4dfd | ||
|
|
82ace81974 | ||
|
|
13c3743ff5 | ||
|
|
46904fb110 | ||
|
|
8f3ffdcc2a | ||
|
|
6c3c0087dd | ||
|
|
2e9b42688f | ||
|
|
589b6465f8 | ||
|
|
6c7c5443d4 | ||
|
|
fdad028e73 | ||
|
|
3ec29d3b52 | ||
|
|
e97add0c46 | ||
|
|
0138209004 | ||
|
|
f7fd78d715 | ||
|
|
bbd8447afa | ||
|
|
cf2bbbfef1 | ||
|
|
7000e80465 | ||
|
|
24a17c05ab | ||
|
|
7c4129033a | ||
|
|
83e3267f0e | ||
|
|
62cfbf73e1 | ||
|
|
f539d69984 | ||
|
|
ba86c1e1da | ||
|
|
cfb7de0fe9 | ||
|
|
334859726c | ||
|
|
119af3d760 | ||
|
|
3bbf11e26f | ||
|
|
5bb27b2989 | ||
|
|
c4b3f08618 | ||
|
|
6ac773d5ae | ||
|
|
e19559fe81 | ||
|
|
7dd30d4db1 | ||
|
|
9b8b7b490a | ||
|
|
5ec9d0685d | ||
|
|
004c412501 | ||
|
|
f05caf7623 | ||
|
|
7d165f133a | ||
|
|
fff9e7ac46 | ||
|
|
ad834f0f58 | ||
|
|
8a50ee8b22 | ||
|
|
cf8186312a | ||
|
|
8f87b5cfd4 | ||
|
|
61ce733c6f | ||
|
|
c78822f6e6 | ||
|
|
a10a30f390 | ||
|
|
7c7014d951 | ||
|
|
dee331d52d | ||
|
|
2146392a2f | ||
|
|
e011a6eb25 | ||
|
|
5eadd10612 | ||
|
|
c2a80ce570 | ||
|
|
3415073051 | ||
|
|
ba68e0a4a1 | ||
|
|
8a7e98820a | ||
|
|
d61e4d69b5 | ||
|
|
9b8912c483 | ||
|
|
878995366a | ||
|
|
1635a5211f | ||
|
|
595b1011dd | ||
|
|
9bb291235d | ||
|
|
7d4ef0b8d0 | ||
|
|
8d16522d39 | ||
|
|
cd1192b409 | ||
|
|
bf2fd63131 | ||
|
|
029da87346 | ||
|
|
9532bedd7d | ||
|
|
e9c8363b70 | ||
|
|
fb57ed2bcd | ||
|
|
57ec558396 | ||
|
|
6e2de1cd79 | ||
|
|
8ace3ab7f2 | ||
|
|
18e4dca6c9 | ||
|
|
99bb5d33f2 | ||
|
|
d4ed4f9325 | ||
|
|
bb2e1ee8da | ||
|
|
51bfbc964e | ||
|
|
48eca3e11f | ||
|
|
57c1a0f4b6 | ||
|
|
bde4d63fdb | ||
|
|
cbb1269b39 | ||
|
|
175167b311 | ||
|
|
029052fa18 | ||
|
|
a454469949 | ||
|
|
0562ed720b | ||
|
|
cbe8a9649c | ||
|
|
f48fdc1d71 | ||
|
|
7f7753a004 | ||
|
|
aba4fa94be | ||
|
|
4eea7c8297 | ||
|
|
4867d26f7d | ||
|
|
9bd3ab717e | ||
|
|
d6d92ce90a | ||
|
|
3679b21701 | ||
|
|
49f58b4ed8 | ||
|
|
235361faf4 | ||
|
|
208b803fbe | ||
|
|
8a92cec03f | ||
|
|
00f068b93e | ||
|
|
654353e26b | ||
|
|
d670ef2638 | ||
|
|
aff935b3c7 | ||
|
|
107c0673c7 | ||
|
|
c14d04b3e8 | ||
|
|
7a017041bf | ||
|
|
bfae81ec70 | ||
|
|
71d4cb781d | ||
|
|
eb56bd8973 | ||
|
|
93585aded7 | ||
|
|
38245aa2a9 | ||
|
|
1f33e6f044 | ||
|
|
4752adf9d3 | ||
|
|
2d741afe3e | ||
|
|
5e6b17aba4 | ||
|
|
c51098e2cf | ||
|
|
ecfbf72a57 | ||
|
|
24275d8dc4 | ||
|
|
94d82948f6 | ||
|
|
54fb1abb96 | ||
|
|
a3b936fcd0 | ||
|
|
efc4cd5969 | ||
|
|
17ab438c5a | ||
|
|
77b4bfb14e | ||
|
|
7839280cb3 | ||
|
|
9e1ea264e2 | ||
|
|
b02ec98ec6 | ||
|
|
2fa531745f | ||
|
|
0c36c40a5d | ||
|
|
6337e673f9 | ||
|
|
e800892cc1 | ||
|
|
a21e893749 | ||
|
|
dff3fc0572 | ||
|
|
5de0ec94e0 | ||
|
|
a408b01111 | ||
|
|
6e45cf0dab | ||
|
|
dc7b6623a9 | ||
|
|
820941fd40 | ||
|
|
862941abf6 | ||
|
|
e98c30f633 | ||
|
|
316a7e6fb7 | ||
|
|
58ed99d562 | ||
|
|
840642394f | ||
|
|
9484af5329 | ||
|
|
3cf1a16398 | ||
|
|
0f0af12353 | ||
|
|
7cb9a4ee4a | ||
|
|
28a1eb86da | ||
|
|
86f12d9e83 | ||
|
|
539f86fd0b | ||
|
|
c93b12ff05 | ||
|
|
319edca870 | ||
|
|
ebeedba072 | ||
|
|
568dfde074 | ||
|
|
5a59287927 | ||
|
|
b8c1829857 | ||
|
|
4f2d56a55f | ||
|
|
6b49f8f26b | ||
|
|
fc8cb7cd14 | ||
|
|
727094abc6 | ||
|
|
20726ae75c | ||
|
|
3b2a39fd38 | ||
|
|
bcb54bc38a | ||
|
|
14aac09318 | ||
|
|
9d42db9849 | ||
|
|
ee81c7c00e | ||
|
|
2edf414aa4 | ||
|
|
54f44f5267 | ||
|
|
6ab54bc95a | ||
|
|
c8ae31a248 | ||
|
|
66a01e4fef | ||
|
|
d559db4fb1 | ||
|
|
673dff2268 | ||
|
|
6f5871434d | ||
|
|
685f249fd0 | ||
|
|
26ccd577b5 | ||
|
|
bb38be40f6 | ||
|
|
f236c32063 | ||
|
|
236edae60b | ||
|
|
5a13402b51 | ||
|
|
82aa02a980 | ||
|
|
3dd98deecc | ||
|
|
2e23fb203a | ||
|
|
625e9a2547 | ||
|
|
aab2b7df1c | ||
|
|
31bd44bec5 | ||
|
|
11532b603a | ||
|
|
523c88b80d | ||
|
|
7cf1bb7e38 | ||
|
|
eb9fdb43c1 | ||
|
|
0362f45547 | ||
|
|
31f55fdb26 | ||
|
|
26928a63e8 | ||
|
|
abacec5787 | ||
|
|
d84af2def0 | ||
|
|
7fa0eddc5f | ||
|
|
0e85c98d02 | ||
|
|
ae2b27d400 | ||
|
|
7c424e1b85 | ||
|
|
ba1ca4ec08 | ||
|
|
20b13a4a2e | ||
|
|
460b23b1eb | ||
|
|
9882f16614 | ||
|
|
60daa2b41b | ||
|
|
d81565df55 | ||
|
|
e2ac176d3c | ||
|
|
ec8c0bb3e7 | ||
|
|
b904fe5acd | ||
|
|
3b07098731 | ||
|
|
03a330a4dd | ||
|
|
6502da549b | ||
|
|
a71e25a8ba | ||
|
|
9e05f41747 | ||
|
|
208b0f39e6 | ||
|
|
5ad9edc3fd | ||
|
|
c714fc89f1 | ||
|
|
e3cde7b55e | ||
|
|
5a745da07b | ||
|
|
531018e58d | ||
|
|
813c64a055 | ||
|
|
a954e9a4d8 | ||
|
|
95c449481e | ||
|
|
0b43607aa1 | ||
|
|
e75efb8bfb | ||
|
|
d83fee89bd | ||
|
|
b773dbe645 | ||
|
|
5c7c7f54fa | ||
|
|
98417d6465 | ||
|
|
0ea64afe92 | ||
|
|
a862f62fe8 | ||
|
|
5bd525a6dd | ||
|
|
af3d896bdf | ||
|
|
ceeb72a277 | ||
|
|
2c17fdcff0 | ||
|
|
41a7c96968 | ||
|
|
98d9dae087 | ||
|
|
2033174d95 | ||
|
|
606e36acf3 | ||
|
|
0422943d52 | ||
|
|
0024f2e30f | ||
|
|
abe5e8ecea | ||
|
|
61503a8047 | ||
|
|
fcb5deff0a | ||
|
|
fdec16c3a0 | ||
|
|
84ee8b993f | ||
|
|
3d1c27ceb7 | ||
|
|
7d3fb58cf5 | ||
|
|
df5da2fcef | ||
|
|
1226d1dbd5 | ||
|
|
607007f94f | ||
|
|
6327eaf587 | ||
|
|
b1fd99f4c4 | ||
|
|
d1331053c8 | ||
|
|
c6fe0da569 | ||
|
|
b9fe2c1bf9 | ||
|
|
3efc8f457a | ||
|
|
65e8732eeb | ||
|
|
e82015d419 | ||
|
|
fa0fe6d33d | ||
|
|
8be135adf9 | ||
|
|
d04927ce7f | ||
|
|
6889cc2f20 | ||
|
|
8325b20d36 | ||
|
|
826cd472c8 | ||
|
|
8ecab15c33 | ||
|
|
c9520214e2 | ||
|
|
6d1ca363af | ||
|
|
2170794d9c | ||
|
|
719ac64851 | ||
|
|
d3a7e0dee9 | ||
|
|
240919335f | ||
|
|
ceb6a0383e | ||
|
|
0185b112e1 | ||
|
|
af84261eb6 | ||
|
|
274f86fd04 | ||
|
|
bcc3108c3d | ||
|
|
5f1b286630 | ||
|
|
8ad48d6774 | ||
|
|
721bec9794 | ||
|
|
c6105a08ab | ||
|
|
154f1673e9 | ||
|
|
577609b3e3 | ||
|
|
f22069bb11 | ||
|
|
280a1aceb9 | ||
|
|
0390c67c4d | ||
|
|
1f6161132e | ||
|
|
fc74e16097 | ||
|
|
b03f54ffcd | ||
|
|
26f33a1c12 | ||
|
|
6e8aeea76d | ||
|
|
c736ba7059 | ||
|
|
3eb4b3b208 | ||
|
|
5982763bed | ||
|
|
6b7f7bb777 | ||
|
|
5b9338e40e | ||
|
|
eab4861383 | ||
|
|
bcd3de1180 | ||
|
|
f4361dd4d5 | ||
|
|
4008e6ab58 | ||
|
|
a115bbdc6f | ||
|
|
fc43aa1717 | ||
|
|
d553698b20 | ||
|
|
7db9c78855 | ||
|
|
7a2c02f0df | ||
|
|
c535736853 | ||
|
|
a8bf6a9782 | ||
|
|
0458dad6dc | ||
|
|
68373730bf | ||
|
|
5d9039ea89 | ||
|
|
7e1faadd11 | ||
|
|
fceb93061d | ||
|
|
c9d007fcdf | ||
|
|
eeb940c0dc | ||
|
|
05b5446e94 | ||
|
|
b45437d502 | ||
|
|
a599787a25 | ||
|
|
58061af959 | ||
|
|
33ed4fd7cf | ||
|
|
8bf1bb0517 | ||
|
|
d26cff520f | ||
|
|
04aa10cee7 | ||
|
|
ade684d501 | ||
|
|
4362c3ea38 | ||
|
|
e0d4b4b625 | ||
|
|
cfffdae573 | ||
|
|
f6243675c9 | ||
|
|
a762cef0a9 | ||
|
|
a7f4e2d0cd | ||
|
|
ae013c2196 | ||
|
|
eefe844dcd | ||
|
|
94111c3662 | ||
|
|
3fca61dc24 | ||
|
|
e41bf008e9 | ||
|
|
6c9c0fd5c5 | ||
|
|
f3d956ceed | ||
|
|
b9c9c56059 | ||
|
|
bed58cde84 | ||
|
|
855d79e28f | ||
|
|
a044467d10 | ||
|
|
ecb2e337ef | ||
|
|
2dde18b179 | ||
|
|
6411b9bd66 | ||
|
|
d70ee509b4 | ||
|
|
cf0bc32b27 | ||
|
|
93ab7eb058 | ||
|
|
bd3ae05fcf | ||
|
|
b055d524e8 | ||
|
|
9e051e835b | ||
|
|
e20968bdfe | ||
|
|
3ab1072e9e | ||
|
|
00df73ced0 | ||
|
|
940a5026c1 | ||
|
|
2631277184 | ||
|
|
b86b640860 | ||
|
|
2dfc740782 | ||
|
|
e4985f4ff7 | ||
|
|
22f579a59e | ||
|
|
c9d12e93c2 | ||
|
|
778f01bcf1 | ||
|
|
ccb7a4c96d | ||
|
|
9e124e4a75 | ||
|
|
db37b7b933 | ||
|
|
2e94066e50 | ||
|
|
61c6962bf2 | ||
|
|
9cbdd58af5 | ||
|
|
eea9d7db97 | ||
|
|
235baa3dcc | ||
|
|
f04f4302a2 | ||
|
|
33650c4a04 | ||
|
|
019cf9684c | ||
|
|
835c411d12 | ||
|
|
e4758c1984 | ||
|
|
eb22f0a2d8 | ||
|
|
3ea0592b53 | ||
|
|
876a75b572 | ||
|
|
c39898dad9 | ||
|
|
07a3d7a696 | ||
|
|
7f412fbd7f | ||
|
|
2adc64939f | ||
|
|
71d39865b3 | ||
|
|
226c061c01 | ||
|
|
dd2fbebb81 | ||
|
|
889c742a33 | ||
|
|
5cc3334325 | ||
|
|
e58be44523 | ||
|
|
34a7321786 | ||
|
|
07e4fbacd4 | ||
|
|
8fd69e084e | ||
|
|
dd79105baa | ||
|
|
b1c3814972 | ||
|
|
57107ea560 | ||
|
|
4b3a82592c | ||
|
|
6ecb8690f2 | ||
|
|
1c365b8417 | ||
|
|
315df0b8a8 | ||
|
|
87468b648b | ||
|
|
4cdb9a645d | ||
|
|
870d7355ca | ||
|
|
f1aa6aca26 | ||
|
|
72b59d541a | ||
|
|
0e8aa0bc6c | ||
|
|
3a0648cf25 | ||
|
|
2e76385cae | ||
|
|
867d14f7aa | ||
|
|
0d6117bf4c | ||
|
|
b417bf9187 | ||
|
|
06e08557ac | ||
|
|
95fdefdcc7 | ||
|
|
7137990a21 | ||
|
|
916ab99d62 | ||
|
|
5a31e055cf | ||
|
|
28694ae687 | ||
|
|
becd3a0019 | ||
|
|
8cc1e6008e | ||
|
|
910788c038 | ||
|
|
9391de74c7 | ||
|
|
c806f9ebf4 | ||
|
|
e776de8eeb | ||
|
|
a25b28ffee | ||
|
|
0e75e6ff03 | ||
|
|
76da4a6cd4 | ||
|
|
8a4100adbd | ||
|
|
584f4b50bf | ||
|
|
9ac01c930d | ||
|
|
d874f58a39 | ||
|
|
05de45dadb | ||
|
|
4ab887c773 | ||
|
|
552ca7bf71 | ||
|
|
2d8ba2b394 | ||
|
|
a6d44034a4 | ||
|
|
77af79498c | ||
|
|
ea3375490c | ||
|
|
204cd8d971 | ||
|
|
c2940a8f18 | ||
|
|
4f60df029d | ||
|
|
819cfd459a | ||
|
|
c90ac914bb | ||
|
|
8bf4826003 | ||
|
|
e361b0dd81 | ||
|
|
ce7e01a1b1 | ||
|
|
cda5e990ac | ||
|
|
50cbd80925 | ||
|
|
75d3e6261b | ||
|
|
bf39d0b1be | ||
|
|
147cd4ed7b | ||
|
|
9363d23e09 | ||
|
|
7a8d4577f1 | ||
|
|
b718e9d8f2 | ||
|
|
65eb71e645 | ||
|
|
d6c30b0886 | ||
|
|
7c7f0b93ae | ||
|
|
e263c475c9 | ||
|
|
c917096d3c | ||
|
|
5de62a5ef4 | ||
|
|
7893a2e84d | ||
|
|
47e885ddbf | ||
|
|
65626f0da2 | ||
|
|
8584901f9e | ||
|
|
ad26d962dc | ||
|
|
967a9f0195 | ||
|
|
6c663a19bf | ||
|
|
b194c29166 | ||
|
|
0b9167c78b | ||
|
|
63ae460a80 | ||
|
|
43a1d54bba | ||
|
|
2963752585 | ||
|
|
e2d446e446 | ||
|
|
1decdc6c11 | ||
|
|
6659745e2b | ||
|
|
1e2d1a1b17 | ||
|
|
f300ca5b7b | ||
|
|
54306473f3 | ||
|
|
c7158234dc | ||
|
|
b28cb19ae3 | ||
|
|
86a01b6984 | ||
|
|
b432103b82 | ||
|
|
75564c8fb5 | ||
|
|
b87097a7ab | ||
|
|
6ef5f34070 | ||
|
|
b953ea9042 | ||
|
|
61ada66e3a | ||
|
|
a9a724714f | ||
|
|
612ef0ef9b | ||
|
|
a627870bbb | ||
|
|
fae4f69b8c | ||
|
|
b27ba03d42 | ||
|
|
2cd6787141 | ||
|
|
21204971ff | ||
|
|
c570a13a1f | ||
|
|
5c71260c12 | ||
|
|
e105970945 | ||
|
|
0c33019f93 | ||
|
|
16598a8386 | ||
|
|
f52f6e2d44 | ||
|
|
304cebefe4 | ||
|
|
d7a8a43024 | ||
|
|
73f91db939 | ||
|
|
b9370c6e79 | ||
|
|
54bb7462f6 | ||
|
|
4a08101a60 | ||
|
|
809be5f89e | ||
|
|
bf9a755bea | ||
|
|
34b82da9aa | ||
|
|
e0c59395da | ||
|
|
b07de47e35 | ||
|
|
586de64293 | ||
|
|
9321943e64 | ||
|
|
c00550078c | ||
|
|
2190260a68 | ||
|
|
678c4a8ece | ||
|
|
c2781274a0 | ||
|
|
bc14898b13 | ||
|
|
b6497d9245 | ||
|
|
79d827ffa4 | ||
|
|
811eb2714f | ||
|
|
a914b837a1 | ||
|
|
04c9332a99 | ||
|
|
97f374a189 | ||
|
|
6f3648d63e | ||
|
|
350cf4b00a | ||
|
|
3af2307468 | ||
|
|
29c997e1bc | ||
|
|
223c5a1651 | ||
|
|
8b437821a2 | ||
|
|
4ded95a060 | ||
|
|
0b6b149351 | ||
|
|
eee909e948 | ||
|
|
8c7e655274 | ||
|
|
8e86437e89 | ||
|
|
a8edad1e27 | ||
|
|
41162ea2e8 | ||
|
|
0cbf59209b | ||
|
|
0f91e0d141 | ||
|
|
6a50a76466 | ||
|
|
1fce1ac905 | ||
|
|
b9a955c048 | ||
|
|
5a577e5e4c | ||
|
|
f648172625 | ||
|
|
4b41dd30e6 | ||
|
|
2a416d1f1d | ||
|
|
23f338b0c3 | ||
|
|
cdcea91b50 | ||
|
|
4549c97e51 | ||
|
|
fc3cc12038 | ||
|
|
62ea117f45 | ||
|
|
3d8ff5b585 | ||
|
|
a3b95c1c38 | ||
|
|
2308099260 | ||
|
|
4a3da3abe7 | ||
|
|
3e4811791a | ||
|
|
34f12ac39c | ||
|
|
af98c2636c | ||
|
|
f21b331844 | ||
|
|
ea628af580 | ||
|
|
9cae8a412a | ||
|
|
47b7befd2f | ||
|
|
2fcc369c41 | ||
|
|
66b3d22041 | ||
|
|
03e4b2d13c | ||
|
|
c83579ecdb | ||
|
|
a26119ea20 | ||
|
|
98c821df05 | ||
|
|
a992c76d6a | ||
|
|
f2dfef8c41 | ||
|
|
cb804eb143 | ||
|
|
74e912ccd3 | ||
|
|
1f47033835 | ||
|
|
3fcfc348ed | ||
|
|
6b33298a6e | ||
|
|
68e1fc0cd0 | ||
|
|
31796d33fb | ||
|
|
755241df5c | ||
|
|
9080864167 | ||
|
|
d25e883983 | ||
|
|
091e87aeb3 | ||
|
|
4a870f61f1 | ||
|
|
5daf0853c9 | ||
|
|
ef3d7b7772 | ||
|
|
7dde8a771f | ||
|
|
3dd4681e69 | ||
|
|
98d888063b | ||
|
|
9c788a6e84 | ||
|
|
e087baeb48 | ||
|
|
b64276c4e8 | ||
|
|
f7dd63a126 | ||
|
|
a68a86f19b | ||
|
|
984b23de70 | ||
|
|
d5b70b1bef | ||
|
|
551637f0c2 | ||
|
|
8778df5789 | ||
|
|
67338aac7b | ||
|
|
626351c5da | ||
|
|
6504b6f2bd | ||
|
|
035271d469 | ||
|
|
5c84aa308d | ||
|
|
e1c82a4453 | ||
|
|
41be9e8178 | ||
|
|
be24872bba | ||
|
|
db56546871 | ||
|
|
53b30e267c | ||
|
|
8f33c5235b | ||
|
|
d8857bf42d | ||
|
|
a85ac07576 | ||
|
|
db6ac26794 | ||
|
|
a505d85792 | ||
|
|
d2ab008aa0 | ||
|
|
6df30df992 | ||
|
|
0ec29b2354 | ||
|
|
f1bebe904a | ||
|
|
e16720d06d | ||
|
|
3be7fa6b3b | ||
|
|
e99e3ae6ca | ||
|
|
d182586557 | ||
|
|
1f5564760f | ||
|
|
2be045eb8f | ||
|
|
7a89510916 | ||
|
|
5588792344 | ||
|
|
3acb33e05a | ||
|
|
61ee763515 | ||
|
|
3658a65380 | ||
|
|
fd18bc0330 | ||
|
|
f4ff8b17f7 | ||
|
|
d5c8787451 | ||
|
|
b499a6df77 | ||
|
|
cabec57631 | ||
|
|
63f7a0685f | ||
|
|
94e6d3f89b | ||
|
|
94ac9c9ea1 | ||
|
|
850c7c7ecf | ||
|
|
7ff475977e | ||
|
|
478d30b529 | ||
|
|
d6597400de | ||
|
|
af394ff65c | ||
|
|
f6fa6d6563 | ||
|
|
bbf183bef7 | ||
|
|
6f92188323 | ||
|
|
f0985ff9d9 | ||
|
|
fd7a49f4a6 | ||
|
|
47d7598e99 | ||
|
|
e2ba754f91 | ||
|
|
c98aad698a | ||
|
|
75f0d132e5 | ||
|
|
f82725139a | ||
|
|
ba3baf3595 | ||
|
|
b9e58c77af | ||
|
|
ad67eac257 | ||
|
|
eef51f26f0 | ||
|
|
ea992bc3e6 | ||
|
|
20f3f23576 | ||
|
|
34c6b416b0 | ||
|
|
bf906a7867 | ||
|
|
5786e2620a | ||
|
|
fe42861bed | ||
|
|
5a96e19ce9 | ||
|
|
8ed0379136 | ||
|
|
4e2f5b1a5b | ||
|
|
317f603262 | ||
|
|
701013baab | ||
|
|
4b3bee6400 | ||
|
|
91868969ca | ||
|
|
ef46b3e8ad | ||
|
|
9e87230102 | ||
|
|
2558e6db79 | ||
|
|
bee570c3cf | ||
|
|
be288d26ca | ||
|
|
b055780984 | ||
|
|
e805a6ff82 | ||
|
|
60335452a4 | ||
|
|
3a822c24e2 | ||
|
|
98372f9df8 | ||
|
|
5550d7af0d | ||
|
|
98e59215b8 | ||
|
|
1c7e8f6921 | ||
|
|
57b0c17733 | ||
|
|
6ee781a608 | ||
|
|
97b488b2ba | ||
|
|
13393ed2d3 | ||
|
|
26d3acb9d8 | ||
|
|
82eca1a5bf | ||
|
|
095bf158b6 | ||
|
|
21a80101ba | ||
|
|
c7593a3047 | ||
|
|
72d17c045f | ||
|
|
7be87051ab | ||
|
|
db08058c4e | ||
|
|
83a2f4c610 | ||
|
|
b1b602678e | ||
|
|
fcb1ab2688 | ||
|
|
3847944c44 | ||
|
|
cf2327f5aa | ||
|
|
248fd12abd | ||
|
|
eb6612b787 | ||
|
|
c6edeaddb7 | ||
|
|
5dadedbf70 | ||
|
|
2ed3201b14 | ||
|
|
006eadfb9e | ||
|
|
870417d9c4 | ||
|
|
f9dc314e72 | ||
|
|
36ad91b447 | ||
|
|
4daac65cc5 | ||
|
|
23c787c4dd | ||
|
|
8b0409b228 | ||
|
|
54641a2304 | ||
|
|
50148e9640 | ||
|
|
e85dbda62a | ||
|
|
107a2e4a5c | ||
|
|
41973d0e92 | ||
|
|
363396037d | ||
|
|
e9b704d21f | ||
|
|
bd90ba9326 | ||
|
|
9144765d56 | ||
|
|
6b3fed1ce5 | ||
|
|
8347fd36ba | ||
|
|
848abfc1a7 | ||
|
|
64394c0b15 | ||
|
|
8748c76de2 | ||
|
|
a77c426b2d | ||
|
|
b0280e9d93 | ||
|
|
25f15073cc | ||
|
|
34a1eef252 | ||
|
|
771a041750 | ||
|
|
ff0d53d945 | ||
|
|
afe2c00841 | ||
|
|
9a7a88eea2 | ||
|
|
0b328a7ee0 | ||
|
|
e92981b476 | ||
|
|
ac56ac98f7 | ||
|
|
d7cbec1a02 | ||
|
|
58b6fb36f8 | ||
|
|
606dbc6eb4 | ||
|
|
f1719cfc5f | ||
|
|
4ff9681667 | ||
|
|
f5eafe6522 | ||
|
|
00908856c3 | ||
|
|
22655e67ff | ||
|
|
16094be4a3 | ||
|
|
8d9b209014 | ||
|
|
f7d10707e7 | ||
|
|
0399feff4d | ||
|
|
deabb54828 | ||
|
|
c1a45d6258 | ||
|
|
5d46ecdbe6 | ||
|
|
ddd5e8a209 | ||
|
|
18337927f5 | ||
|
|
21f1eb2d14 | ||
|
|
34f595cc78 | ||
|
|
7d57d08b32 | ||
|
|
8b8e55aa17 | ||
|
|
9eac5f35d8 | ||
|
|
47d3c7e05a | ||
|
|
59847f4f30 | ||
|
|
caec47b1e5 | ||
|
|
08415bd824 | ||
|
|
92bf7c94d0 | ||
|
|
4d263a09db | ||
|
|
59da03d660 | ||
|
|
b17cb60b5c | ||
|
|
788cc02685 | ||
|
|
169e6327ea | ||
|
|
807924c0bc | ||
|
|
1558dd8309 | ||
|
|
dd82c9f8f9 | ||
|
|
e166722026 | ||
|
|
8117809901 | ||
|
|
7286b1847d | ||
|
|
b8b4d35763 | ||
|
|
78c125af4e | ||
|
|
18d3fe55f8 | ||
|
|
40ccd219f4 | ||
|
|
ba7b787dd3 | ||
|
|
de1a94ff61 | ||
|
|
6c695e3fd0 | ||
|
|
0bac9752ba | ||
|
|
138ca8d3a3 | ||
|
|
6e206704f9 | ||
|
|
013a924e43 | ||
|
|
54433637eb | ||
|
|
8fb2f9db7c | ||
|
|
9c378216f6 | ||
|
|
668103a00f | ||
|
|
15c18dd899 | ||
|
|
886187baee | ||
|
|
3a2f387892 | ||
|
|
e9a96ff80a | ||
|
|
6b13d18137 | ||
|
|
2185afefed | ||
|
|
5786d0c279 | ||
|
|
c0e91e4f16 | ||
|
|
53ce522c08 | ||
|
|
9f21b54c4e | ||
|
|
8bff332be0 | ||
|
|
0755702fe3 | ||
|
|
a16f7e7cca | ||
|
|
92efb3d20b | ||
|
|
4f0600421c | ||
|
|
ad0d120ae6 | ||
|
|
ecea101962 | ||
|
|
fcc936ceff | ||
|
|
7820bf2510 | ||
|
|
4a357e791e | ||
|
|
cf15d1741f | ||
|
|
9ad4cc8783 | ||
|
|
edb644baef | ||
|
|
7bd080760e | ||
|
|
4f78c32461 | ||
|
|
9a2aba56fc | ||
|
|
20e4643560 | ||
|
|
34ad5d61f6 | ||
|
|
39b9260719 | ||
|
|
33b4cd8636 | ||
|
|
f6e1af30b3 | ||
|
|
a50d2709e7 | ||
|
|
c7107de2a7 | ||
|
|
b5c3873cfd | ||
|
|
ef579cbe3c | ||
|
|
0c1fecfb2b | ||
|
|
b6d9c2e486 | ||
|
|
8cf6289d9c | ||
|
|
8619682da3 | ||
|
|
308d3ad84b | ||
|
|
4152e93bb7 | ||
|
|
f01076856b | ||
|
|
3100c202e8 | ||
|
|
2a45f57386 | ||
|
|
7fef3bd701 | ||
|
|
4781fc19fe | ||
|
|
490414716d | ||
|
|
7e9343c697 | ||
|
|
f767a098d6 | ||
|
|
66422437d3 | ||
|
|
2b694bab16 | ||
|
|
965dba63d7 | ||
|
|
676be9da16 | ||
|
|
237d954b65 | ||
|
|
af166a66b3 | ||
|
|
3c913f196f | ||
|
|
7db6850528 | ||
|
|
7abaf0e215 | ||
|
|
0b8f07f58e | ||
|
|
85d532953f | ||
|
|
f98d834edb | ||
|
|
f4a4930f42 | ||
|
|
6d5b31f527 | ||
|
|
288fa732ca | ||
|
|
d3af39a7ae | ||
|
|
fa51f7e10e | ||
|
|
651c00239a | ||
|
|
bc207714da | ||
|
|
073f3f9dfc | ||
|
|
549c3ce598 | ||
|
|
9de4cbbbd6 | ||
|
|
13eb1f6330 | ||
|
|
4b6cae0fcd | ||
|
|
98df309d28 | ||
|
|
fb4367f9ef | ||
|
|
ce633b54be | ||
|
|
2e38b01d80 | ||
|
|
b579eb954e | ||
|
|
78849c43f1 | ||
|
|
2f98d95b66 | ||
|
|
d826ae5daf | ||
|
|
40f194fe4b | ||
|
|
9b66eae12c | ||
|
|
853d9eaa4a | ||
|
|
a4121f8b5a | ||
|
|
e050385e27 | ||
|
|
6ca3b8aa81 | ||
|
|
1bb646fb91 | ||
|
|
a9724ad894 | ||
|
|
909e01bde5 | ||
|
|
d0fd9af5e6 | ||
|
|
61984a5748 | ||
|
|
1b9c2bb16b | ||
|
|
782223a643 | ||
|
|
c844c6b712 | ||
|
|
fd6546c5df | ||
|
|
85031658d1 | ||
|
|
6ce53b142d | ||
|
|
ee3bc89a54 | ||
|
|
ca13ad8d25 | ||
|
|
9ae6d2cd05 | ||
|
|
d2fc4e8abd | ||
|
|
dedce07530 | ||
|
|
baa5a74ba0 | ||
|
|
e144f7c85a | ||
|
|
4e6cf15a09 | ||
|
|
2287250a07 | ||
|
|
68155e8f89 | ||
|
|
af142fc433 | ||
|
|
92af92ccbe | ||
|
|
900beae046 | ||
|
|
dad4376030 | ||
|
|
204822b66f | ||
|
|
b0ad864fe0 | ||
|
|
d0016bf6c4 | ||
|
|
f690522725 | ||
|
|
38d2b124d8 | ||
|
|
513ba6d19d | ||
|
|
e578ca9a82 | ||
|
|
a720903083 | ||
|
|
056447fad9 | ||
|
|
27794021d9 | ||
|
|
2c88810459 | ||
|
|
bd5dd130e5 | ||
|
|
e439e057a0 | ||
|
|
17f4e23215 | ||
|
|
871cdc5bb8 | ||
|
|
a5f7d0277f | ||
|
|
5217199d0a | ||
|
|
01706483fb | ||
|
|
21e257e64d | ||
|
|
21302782e1 | ||
|
|
8e8efc67e6 | ||
|
|
d3fcf2e0c4 | ||
|
|
8d6b200dd7 | ||
|
|
9f1ab080ee | ||
|
|
2448976643 | ||
|
|
cf5f56af6f | ||
|
|
5003499700 | ||
|
|
8aefb1ed82 | ||
|
|
5201001f3a | ||
|
|
f145cb69de | ||
|
|
a8ab3a5ca1 | ||
|
|
1342a66881 | ||
|
|
a22308b13b | ||
|
|
f18db06471 | ||
|
|
6f48983efe | ||
|
|
20c95737cb | ||
|
|
6cd65ae9a7 | ||
|
|
f53768fc84 | ||
|
|
d707fb4760 | ||
|
|
7194a3d7a8 | ||
|
|
4a2ca8c7c8 | ||
|
|
b00a8350a6 | ||
|
|
3f4f9abb36 | ||
|
|
adbce87ccd | ||
|
|
6fb6e1dc82 | ||
|
|
56509eab5f | ||
|
|
3e72cd11a3 | ||
|
|
089bcba89f | ||
|
|
92e4055f85 | ||
|
|
b5797503a8 | ||
|
|
182258761f | ||
|
|
57aef7f1ec | ||
|
|
3fdcbfe002 | ||
|
|
a92ddc6d0b | ||
|
|
10321adc0b | ||
|
|
264c69d046 | ||
|
|
de95b6c347 | ||
|
|
fb499154bd | ||
|
|
82d697b657 | ||
|
|
21a2e9583b | ||
|
|
9fc62a1d81 | ||
|
|
4751f40c2b | ||
|
|
267e88001b | ||
|
|
50391e144d | ||
|
|
c6253fc025 | ||
|
|
f43ad8d062 | ||
|
|
bbd039e487 | ||
|
|
3834531488 | ||
|
|
28bfd39bca | ||
|
|
5c0a83eae5 | ||
|
|
e323fd169e | ||
|
|
842eb22e1e | ||
|
|
a1a71a88bb | ||
|
|
76eb935024 | ||
|
|
b5249d196d | ||
|
|
d445bf1ecd | ||
|
|
679398be00 | ||
|
|
3bc3bfb15e | ||
|
|
fa79da37b6 | ||
|
|
ca7c59d313 | ||
|
|
bde397503e | ||
|
|
5297722ede | ||
|
|
d8d288fca2 | ||
|
|
04edcf39f7 | ||
|
|
9faf550fa1 | ||
|
|
e5e7e5e406 | ||
|
|
3be90b02d6 | ||
|
|
8904869350 | ||
|
|
4797926be6 | ||
|
|
e4a5cd214f | ||
|
|
4a1423da88 | ||
|
|
f8bea82ce8 | ||
|
|
f1ad94b472 | ||
|
|
fef931392f | ||
|
|
7425771c78 | ||
|
|
f032f001f3 | ||
|
|
12a8662ae9 | ||
|
|
4ec9df76cd | ||
|
|
d218924b4f | ||
|
|
810a6e4b39 | ||
|
|
d0557677c7 | ||
|
|
b61c47d42f | ||
|
|
eb82df5994 | ||
|
|
7ebee78c75 | ||
|
|
b08d2d45b7 | ||
|
|
ea6f2477ef | ||
|
|
00ae8aabf1 | ||
|
|
ee1a7b6e62 | ||
|
|
5ef3cdb428 | ||
|
|
fb5a5041d5 | ||
|
|
a5eb93255b | ||
|
|
ce268260b1 | ||
|
|
e5062cb745 | ||
|
|
da713b0993 | ||
|
|
621ec80bbe | ||
|
|
62073fa74d | ||
|
|
1415829eaf | ||
|
|
6a1d6e8dd3 | ||
|
|
1cb64f0c9f | ||
|
|
6f4e855b02 | ||
|
|
7e1f7a8729 | ||
|
|
56ac80f475 | ||
|
|
b90807c4d3 | ||
|
|
0c7e1f1a6b | ||
|
|
eb3a0be809 | ||
|
|
f596cc4eec | ||
|
|
7986fd3e31 | ||
|
|
a407e0082b | ||
|
|
924130e0fe | ||
|
|
cd41727583 | ||
|
|
10e24e7343 | ||
|
|
120be979e9 | ||
|
|
53fb28624e | ||
|
|
b88a0d8de3 | ||
|
|
89361b3bea | ||
|
|
a197cdcce5 | ||
|
|
a57e8f9864 | ||
|
|
459cf051bf | ||
|
|
8cd5b1f582 | ||
|
|
60e65bec35 | ||
|
|
0e19b47755 | ||
|
|
6b6c109903 | ||
|
|
f836629dda | ||
|
|
746a535c7d | ||
|
|
078fe3ccf1 | ||
|
|
af726d465d | ||
|
|
23792eb069 | ||
|
|
0387da48a4 | ||
|
|
efb40a6567 | ||
|
|
05c41c083e | ||
|
|
4807ec3368 | ||
|
|
e4b6289c0b | ||
|
|
15fa09167b | ||
|
|
a1dec7594d | ||
|
|
1c24b2c5c4 | ||
|
|
1a74feb253 | ||
|
|
8c87a87da6 | ||
|
|
860a2131b3 | ||
|
|
0b592c69b0 | ||
|
|
587a647c11 | ||
|
|
8faac078fd | ||
|
|
44489bf6f8 | ||
|
|
887e4067ec | ||
|
|
3738115b6d | ||
|
|
65bdc207b7 | ||
|
|
366d8a0f0e | ||
|
|
9d8e276950 | ||
|
|
2ecd11eb35 | ||
|
|
cf4e574c50 | ||
|
|
225e5dac66 | ||
|
|
c02b5abc6e | ||
|
|
7fd8154ea8 | ||
|
|
cc6f524168 | ||
|
|
6eebd95de1 | ||
|
|
ce0007acd2 | ||
|
|
5a08e4619c | ||
|
|
8204f2007a | ||
|
|
0d2ce4c038 | ||
|
|
65f2790170 | ||
|
|
79b15e2ac6 | ||
|
|
6234065898 | ||
|
|
7568582b05 | ||
|
|
93a868a571 | ||
|
|
f20d892573 | ||
|
|
07aa46c2d6 | ||
|
|
09248fdb14 | ||
|
|
8122ab2b2c | ||
|
|
ebce183925 | ||
|
|
38e421d9c1 | ||
|
|
7790f2e7ba | ||
|
|
d5fc1bf0b4 | ||
|
|
7649c781dc | ||
|
|
35cb4343e6 | ||
|
|
f753728e97 | ||
|
|
18c7fae463 | ||
|
|
539ea5bd44 |
88
.clang-format
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
---
|
||||||
|
Language: Cpp
|
||||||
|
AccessModifierOffset: -4
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignEscapedNewlinesLeft: false
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: false
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: None
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: false
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackParameters: false
|
||||||
|
BraceWrapping:
|
||||||
|
AfterClass: true
|
||||||
|
AfterFunction: true
|
||||||
|
AfterControlStatement: false
|
||||||
|
AfterEnum: true
|
||||||
|
AfterNamespace: true
|
||||||
|
AfterStruct: true
|
||||||
|
AfterUnion: true
|
||||||
|
BeforeCatch: false
|
||||||
|
BeforeElse: false
|
||||||
|
IndentBraces: false
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeBraces: Custom
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: true
|
||||||
|
ColumnLimit: 120
|
||||||
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
ConstructorInitializerIndentWidth: 4
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
ExperimentalAutoDetectBinPacking: false
|
||||||
|
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||||
|
Priority: 2
|
||||||
|
- Regex: '^(<|"(gtest|isl|json)/)'
|
||||||
|
Priority: 3
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentWidth: 4
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: All
|
||||||
|
ObjCBlockIndentWidth: 4
|
||||||
|
ObjCSpaceAfterProperty: false
|
||||||
|
ObjCSpaceBeforeProtocolList: true
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 19
|
||||||
|
PenaltyBreakComment: 300
|
||||||
|
PenaltyBreakFirstLessLess: 120
|
||||||
|
PenaltyBreakString: 1000
|
||||||
|
PenaltyExcessCharacter: 1000000
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
PointerAlignment: Left
|
||||||
|
ReflowComments: true
|
||||||
|
SortIncludes: true
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: true
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: Cpp11
|
||||||
|
TabWidth: 4
|
||||||
|
UseTab: Never
|
||||||
|
...
|
||||||
|
|
||||||
13
.gitattributes
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
src/version.h.cmake export-subst
|
||||||
|
.gitattributes export-ignore
|
||||||
|
.gitignore export-ignore
|
||||||
|
.github export-ignore
|
||||||
|
.travis.yml export-ignore
|
||||||
|
.tx export-ignore
|
||||||
|
snapcraft.yaml export-ignore
|
||||||
|
make_release.sh export-ignore
|
||||||
|
AppImage-Recipe.sh export-ignore
|
||||||
|
|
||||||
|
# github-linguist language hints
|
||||||
|
*.h linguist-language=C++
|
||||||
|
*.cpp linguist-language=C++
|
||||||
169
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
# Contributing to KeePassXC
|
||||||
|
|
||||||
|
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
|
||||||
|
|
||||||
|
The following is a set of guidelines for contributing to KeePassXC on GitHub.
|
||||||
|
These are just guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
|
||||||
|
|
||||||
|
#### Table of contents
|
||||||
|
|
||||||
|
[What should I know before I get started?](#what-should-i-know-before-i-get-started)
|
||||||
|
* [Open Source Contribution Policy](#open-source-contribution-policy)
|
||||||
|
|
||||||
|
[How can I contribute?](#how-can-i-contribute)
|
||||||
|
* [Feature requests](#feature-requests)
|
||||||
|
* [Bug reports](#bug-reports)
|
||||||
|
* [Discuss with the team](#discuss-with-the-team)
|
||||||
|
* [Your first code contribution](#your-first-code-contribution)
|
||||||
|
* [Pull requests](#pull-requests)
|
||||||
|
* [Translations](#translations)
|
||||||
|
|
||||||
|
[Styleguides](#styleguides)
|
||||||
|
* [Git branch strategy](#git-branch-strategy)
|
||||||
|
* [Git commit messages](#git-commit-messages)
|
||||||
|
* [Coding styleguide](#coding-styleguide)
|
||||||
|
|
||||||
|
|
||||||
|
## What should I know before I get started?
|
||||||
|
### Open Source Contribution Policy
|
||||||
|
**Source**: [Version 0.3, 2015–11–18](https://medium.com/@jmaynard/a-contribution-policy-for-open-source-that-works-bfc4600c9d83#.i9ntbhmad)
|
||||||
|
|
||||||
|
#### Policy
|
||||||
|
|
||||||
|
We will accept contributions of good code that we can use from anyone.
|
||||||
|
|
||||||
|
#### What this means
|
||||||
|
|
||||||
|
- “We will accept”: This means that we will incorporate your contribution into the project’s codebase, adapt it as needed, and give you full credit for your work.
|
||||||
|
- “contributions”: This means just about anything you wish to contribute to the project, as long as it is good code we can use. The easier you make it for us to accept your contribution, the happier we are, but if it’s good enough, we will do a reasonable amount of work to use it.
|
||||||
|
- “of good code”: This means that we will accept contributions that work well and efficiently, that fit in with the goals of the project, that match the project’s coding style, and that do not impose an undue maintenance workload on us going forward. This does not mean just program code, either, but documentation and artistic works as appropriate to the project.
|
||||||
|
- “that we can use”: This means that your contribution must be given freely and irrevocably, that you must have the right to contribute it for our unrestricted use, and that your contribution is made under a license that is compatible with the license the project has chosen and that permits us to include, distribute, and modify your work without restriction.
|
||||||
|
- “from anyone”: This means exactly that. We don’t care about anything but your code. We don’t care about your race, religion, national origin, biological gender, perceived gender, sexual orientation, lifestyle, political viewpoint, or anything extraneous like that. We will neither reject your contribution nor grant it preferential treatment on any basis except the code itself. We do, however, reserve the right to tell you to go away if you behave too obnoxiously toward us.
|
||||||
|
|
||||||
|
#### If Your Contribution Is Rejected
|
||||||
|
|
||||||
|
If we reject your contribution, it means only that we do not consider it suitable for our project in the form it was submitted. It is not personal. If you ask civilly, we will be happy to discuss it with you and help you understand why it was rejected, and if possible improve it so we can accept it.
|
||||||
|
|
||||||
|
#### Revision History
|
||||||
|
* 0.1, 2011–11–18: Initial draft.
|
||||||
|
* 0.2, 2011–11–18: Added “If Your Contribution Is Rejected” section.
|
||||||
|
* 0.3, 2011–11–19: Added “irrevocably” to “we can use” and changed “it” to “your contribution” in the “if rejected” section. Thanks to Patrick Maupin.
|
||||||
|
|
||||||
|
|
||||||
|
## How can I contribute?
|
||||||
|
### Feature requests
|
||||||
|
|
||||||
|
We're always looking for suggestions to improve our application. If you have a suggestion to improve an existing feature, or would like to suggest a completely new feature for KeePassXC, please use the [issue tracker on GitHub][issues-section].
|
||||||
|
|
||||||
|
### Bug reports
|
||||||
|
|
||||||
|
Our software isn't always perfect, but we strive to always improve our work. You may file bug reports in the issue tracker.
|
||||||
|
|
||||||
|
Before submitting a bug report, check if the problem has already been reported. Please refrain from opening a duplicate issue. If you want to add further information to an existing issue, simply add a comment on that issue.
|
||||||
|
|
||||||
|
### Discuss with the team
|
||||||
|
|
||||||
|
As with feature requests, you can talk to the KeePassXC team about bugs, new features, other issues and pull requests on the dedicated issue tracker, or in the IRC channel on Freenode (`#keepassxc-dev` on `irc.freenode.net`, or use a [webchat link](https://webchat.freenode.net/?channels=%23keepassxc-dev)).
|
||||||
|
|
||||||
|
### Your first code contribution
|
||||||
|
|
||||||
|
Unsure where to begin contributing to KeePassXC? You can start by looking through these `beginner` and `help-wanted` issues:
|
||||||
|
|
||||||
|
* [Beginner issues][beginner] – issues which should only require a few lines of code, and a test or two.
|
||||||
|
* ['Help wanted' issues][help-wanted] – issues which should be a bit more involved than `beginner` issues.
|
||||||
|
|
||||||
|
Both issue lists are sorted by total number of comments. While not perfect, looking at the number of comments on an issue can give a general idea of how much an impact a given change will have.
|
||||||
|
|
||||||
|
### Pull requests
|
||||||
|
|
||||||
|
Along with our desire to hear your feedback and suggestions, we're also interested in accepting direct assistance in the form of code.
|
||||||
|
|
||||||
|
All pull requests must comply with the above requirements and with the [styleguides](#styleguides).
|
||||||
|
|
||||||
|
### Translations
|
||||||
|
|
||||||
|
Translations are managed on [Transifex](https://www.transifex.com/keepassxc/keepassxc/) which offers a web interface.
|
||||||
|
Please join an existing language team or request a new one if there is none.
|
||||||
|
|
||||||
|
## Styleguides
|
||||||
|
|
||||||
|
### Git branch strategy
|
||||||
|
|
||||||
|
The Branch Strategy is based on [git-flow-lite](http://nvie.com/posts/a-successful-git-branching-model/).
|
||||||
|
|
||||||
|
* **master** – points to the latest public release
|
||||||
|
* **develop** – points to the development of the next release, contains tested and reviewed code
|
||||||
|
* **feature/**[name] – points to a branch with a new feature, one which is candidate for merge into develop (subject to rebase)
|
||||||
|
* **hotfix/**[id]-[description] – points to a branch with a fix for a particular issue ID
|
||||||
|
|
||||||
|
|
||||||
|
### Git commit messages
|
||||||
|
|
||||||
|
* Use the present tense ("Add feature" not "Added feature")
|
||||||
|
* Use the imperative mood ("Move cursor to…" not "Moves cursor to…")
|
||||||
|
* Limit the first line to 72 characters or less
|
||||||
|
* Reference issues and pull requests liberally
|
||||||
|
* If your pull request fixes an existing issue, add "…, resolves #ISSUENUMBER" to your main commit
|
||||||
|
* When only changing documentation, include `[ci skip]` in the commit description
|
||||||
|
|
||||||
|
### Coding styleguide
|
||||||
|
|
||||||
|
This project follows the [Qt Coding Style](https://wiki.qt.io/Qt_Coding_Style). All submissions are expected to follow this style.
|
||||||
|
|
||||||
|
In particular, code must stick to the following rules:
|
||||||
|
|
||||||
|
#### Naming convention
|
||||||
|
`lowerCamelCase`
|
||||||
|
|
||||||
|
For names made of only one word, the first letter should be lowercase.
|
||||||
|
For names made of multiple concatenated words, the first letter of the whole is lowercase, and the first letter of each subsequent word is capitalized.
|
||||||
|
|
||||||
|
#### Indention
|
||||||
|
For **C++ files** (*.cpp .h*): 4 spaces
|
||||||
|
For **Qt-UI files** (*.ui*): 2 spaces
|
||||||
|
|
||||||
|
#### Pointers
|
||||||
|
```c
|
||||||
|
int* count;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Braces
|
||||||
|
```c
|
||||||
|
if (condition) {
|
||||||
|
doSomething();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExampleClass::exampleFunction()
|
||||||
|
{
|
||||||
|
doSomething();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Switch statement
|
||||||
|
```c
|
||||||
|
switch (a) {
|
||||||
|
case 1:
|
||||||
|
doSomething();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
doSomethingElse();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Member variables
|
||||||
|
Use prefix: `m_*`
|
||||||
|
|
||||||
|
Example: `m_variable`
|
||||||
|
|
||||||
|
#### GUI widget names
|
||||||
|
Widget names must be related to the desired program behavior, and preferably end with the widget's classname.
|
||||||
|
|
||||||
|
Example: `<widget class="QCheckBox" name="rememberCheckBox">`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[beginner]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner+label%3A%22help+wanted%22+sort%3Acomments-desc
|
||||||
|
[help-wanted]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+sort%3Acomments-desc
|
||||||
|
[issues-section]:https://github.com/keepassxreboot/keepassxc/issues
|
||||||
40
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<!--- Provide a general summary of the issue in the title above -->
|
||||||
|
|
||||||
|
## Expected Behavior
|
||||||
|
<!--- If you're describing a bug, tell us what should happen -->
|
||||||
|
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||||
|
|
||||||
|
## Current Behavior
|
||||||
|
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
|
||||||
|
<!--- If suggesting a change/improvement, explain the difference from the current behavior -->
|
||||||
|
|
||||||
|
## Possible Solution
|
||||||
|
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
||||||
|
<!--- or ideas how to implement the addition or change -->
|
||||||
|
|
||||||
|
## Steps to Reproduce (for bugs)
|
||||||
|
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||||
|
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
4.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
<!--- How has this issue affected you? What are you trying to accomplish? -->
|
||||||
|
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
||||||
|
|
||||||
|
## Debug Info
|
||||||
|
<!--- Paste debug info from Help → About here -->
|
||||||
|
KeePassXC - VERSION
|
||||||
|
Revision: REVISION
|
||||||
|
|
||||||
|
Libraries:
|
||||||
|
- LIBS
|
||||||
|
|
||||||
|
Operating system: OS
|
||||||
|
CPU architecture: ARCH
|
||||||
|
Kernel: KERNEL
|
||||||
|
|
||||||
|
Enabled extensions:
|
||||||
|
- EXTENSIONS
|
||||||
34
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<!--- Provide a general summary of your changes in the title above -->
|
||||||
|
|
||||||
|
## Description
|
||||||
|
<!--- Describe your changes in detail -->
|
||||||
|
|
||||||
|
## Motivation and context
|
||||||
|
<!--- Why is this change required? What problem does it solve? -->
|
||||||
|
<!--- If it fixes an open issue, please link to the issue here. -->
|
||||||
|
|
||||||
|
## How has this been tested?
|
||||||
|
<!--- Please describe in detail how you tested your changes. -->
|
||||||
|
<!--- Include details of your testing environment, and the tests you ran to -->
|
||||||
|
<!--- see how your change affects other areas of the code, etc. -->
|
||||||
|
|
||||||
|
## Screenshots (if appropriate):
|
||||||
|
|
||||||
|
## Types of changes
|
||||||
|
<!--- What types of changes does your code introduce? -->
|
||||||
|
<!--- Please remove all lines which don't apply. -->
|
||||||
|
- ✅ Bug fix (non-breaking change which fixes an issue)
|
||||||
|
- ✅ New feature (non-breaking change which adds functionality)
|
||||||
|
- ✅ Breaking change (fix or feature that would cause existing functionality to change)
|
||||||
|
|
||||||
|
## Checklist:
|
||||||
|
<!--- Please go over all the following points. -->
|
||||||
|
<!--- Again, remove any lines which don't apply. -->
|
||||||
|
<!--- Pull Requests that don't fulfill all [REQUIRED] requisites are likely -->
|
||||||
|
<!--- to be sent back to you for correction or will be rejected. -->
|
||||||
|
- ✅ I have read the **CONTRIBUTING** document. **[REQUIRED]**
|
||||||
|
- ✅ My code follows the code style of this project. **[REQUIRED]**
|
||||||
|
- ✅ All new and existing tests passed. **[REQUIRED]**
|
||||||
|
- ✅ I have compiled and verified my code with `-DWITH_ASAN=ON`. **[REQUIRED]**
|
||||||
|
- ✅ My change requires a change to the documentation and I have updated it accordingly.
|
||||||
|
- ✅ I have added tests to cover my changes.
|
||||||
12
.gitignore
vendored
@@ -1 +1,13 @@
|
|||||||
CMakeLists.txt.*
|
CMakeLists.txt.*
|
||||||
|
build*/
|
||||||
|
cmake-build-*/
|
||||||
|
release*/
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
*.kdev4
|
||||||
|
|
||||||
|
\.vscode/
|
||||||
|
*.swp
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
.version
|
||||||
8
.tx/config
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[main]
|
||||||
|
host = https://www.transifex.com
|
||||||
|
|
||||||
|
[keepassxc.keepassx_ents]
|
||||||
|
source_file = share/translations/keepassx_en.ts
|
||||||
|
file_filter = share/translations/keepassx_<lang>.ts
|
||||||
|
source_lang = en
|
||||||
|
type = QT
|
||||||
114
AppImage-Recipe.sh
Executable file
@@ -0,0 +1,114 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# KeePassXC AppImage Recipe
|
||||||
|
# Copyright (C) 2017-2018 KeePassXC team <https://keepassxc.org/>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
# version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
if [ "$1" == "" ] || [ "$2" == "" ]; then
|
||||||
|
echo "Usage: $(basename $0) APP_NAME RELEASE_VERSION" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f CHANGELOG ]; then
|
||||||
|
echo "This recipe must not be run from the sources root." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d ../bin-release ]; then
|
||||||
|
echo "../bin-release does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
APP="$1"
|
||||||
|
LOWERAPP="$(echo "$APP" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
VERSION="$2"
|
||||||
|
export ARCH=x86_64
|
||||||
|
|
||||||
|
mkdir -p $APP.AppDir
|
||||||
|
wget -q https://github.com/AppImage/AppImages/raw/master/functions.sh -O ./functions.sh
|
||||||
|
. ./functions.sh
|
||||||
|
|
||||||
|
LIB_DIR=./usr/lib
|
||||||
|
if [ -d ./usr/lib/x86_64-linux-gnu ]; then
|
||||||
|
LIB_DIR=./usr/lib/x86_64-linux-gnu
|
||||||
|
elif [ -d ./usr/lib/i386-linux-gnu ]; then
|
||||||
|
LIB_DIR=./usr/lib/i386-linux-gnu
|
||||||
|
elif [ -d ./usr/lib64 ]; then
|
||||||
|
LIB_DIR=./usr/lib64
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $APP.AppDir
|
||||||
|
cp -a ../../bin-release/* .
|
||||||
|
cp -a ./usr/local/* ./usr
|
||||||
|
rm -R ./usr/local
|
||||||
|
rmdir ./opt 2> /dev/null
|
||||||
|
|
||||||
|
# bundle Qt platform plugins and themes
|
||||||
|
QXCB_PLUGIN="$(find /usr/lib* -name 'libqxcb.so' 2> /dev/null)"
|
||||||
|
if [ "$QXCB_PLUGIN" == "" ]; then
|
||||||
|
QXCB_PLUGIN="$(find /opt/qt*/plugins -name 'libqxcb.so' 2> /dev/null)"
|
||||||
|
fi
|
||||||
|
QT_PLUGIN_PATH="$(dirname $(dirname $QXCB_PLUGIN))"
|
||||||
|
mkdir -p ".${QT_PLUGIN_PATH}/platforms"
|
||||||
|
cp -a "$QXCB_PLUGIN" ".${QT_PLUGIN_PATH}/platforms/"
|
||||||
|
cp -a "${QT_PLUGIN_PATH}/platforminputcontexts/" ".${QT_PLUGIN_PATH}/platforminputcontexts/"
|
||||||
|
cp -a "${QT_PLUGIN_PATH}/imageformats/" ".${QT_PLUGIN_PATH}/imageformats/"
|
||||||
|
|
||||||
|
get_apprun
|
||||||
|
copy_deps
|
||||||
|
|
||||||
|
# protect our libgpg-error from being deleted
|
||||||
|
mv ./opt/keepassxc-libs/lib/x86_64-linux-gnu/libgpg-error.so.0 ./protected.so
|
||||||
|
delete_blacklisted
|
||||||
|
mv ./protected.so ./opt/keepassxc-libs/lib/x86_64-linux-gnu/libgpg-error.so.0
|
||||||
|
|
||||||
|
get_desktop
|
||||||
|
get_icon
|
||||||
|
cat << EOF > ./usr/bin/keepassxc_env
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
export LD_LIBRARY_PATH="..$(dirname ${QT_PLUGIN_PATH})/lib:\${LD_LIBRARY_PATH}"
|
||||||
|
export LD_LIBRARY_PATH="../opt/keepassxc-libs/lib/x86_64-linux-gnu:\${LD_LIBRARY_PATH}"
|
||||||
|
|
||||||
|
export QT_PLUGIN_PATH="..${QT_PLUGIN_PATH}:\${KPXC_QT_PLUGIN_PATH}"
|
||||||
|
|
||||||
|
# unset XDG_DATA_DIRS to make tray icon work in Ubuntu Unity
|
||||||
|
# see https://github.com/AppImage/AppImageKit/issues/351
|
||||||
|
unset XDG_DATA_DIRS
|
||||||
|
|
||||||
|
if [ "\${1}" == "cli" ]; then
|
||||||
|
shift
|
||||||
|
exec keepassxc-cli "\$@"
|
||||||
|
elif [ "\${1}" == "proxy" ]; then
|
||||||
|
shift
|
||||||
|
exec keepassxc-proxy "\$@"
|
||||||
|
elif [ -v CHROME_WRAPPER ] || [ -v MOZ_LAUNCHED_CHILD ]; then
|
||||||
|
exec keepassxc-proxy "\$@"
|
||||||
|
else
|
||||||
|
exec keepassxc "\$@"
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
chmod +x ./usr/bin/keepassxc_env
|
||||||
|
sed -i 's/Exec=keepassxc/Exec=keepassxc_env/' org.${LOWERAPP}.${APP}.desktop
|
||||||
|
get_desktopintegration "org.${LOWERAPP}.${APP}"
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
GLIBC_NEEDED=$(glibc_needed)
|
||||||
|
NO_GLIBC_VERSION=true
|
||||||
|
|
||||||
|
generate_type2_appimage -u "gh-releases-zsync|keepassxreboot|keepassxc|latest|KeePassXC-*-${ARCH}.AppImage.zsync"
|
||||||
|
|
||||||
|
mv ../out/*.AppImage* ../
|
||||||
|
rm -rf ../out
|
||||||
367
CHANGELOG
Normal file
@@ -0,0 +1,367 @@
|
|||||||
|
2.3.3 (2018-05-09)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Fix crash when browser integration is enabled [#1923]
|
||||||
|
|
||||||
|
2.3.2 (2018-05-07)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Enable high entropy ASLR on Windows [#1747]
|
||||||
|
- Enhance favicon fetching [#1786]
|
||||||
|
- Fix crash on Windows due to autotype [#1691]
|
||||||
|
- Fix dark tray icon changing all icons [#1680]
|
||||||
|
- Fix --pw-stdin not using getPassword function [#1686]
|
||||||
|
- Fix placeholders being resolved in notes [#1907]
|
||||||
|
- Enable auto-type start delay to be configurable [#1908]
|
||||||
|
- Browser: Fix native messaging reply size [#1719]
|
||||||
|
- Browser: Increase maximum buffer size [#1720]
|
||||||
|
- Browser: Enhance usability and functionality [#1810, #1822, #1830, #1884, #1906]
|
||||||
|
- SSH Agent: Parse aes-256-cbc/ctr keys [#1682]
|
||||||
|
- SSH Agent: Enhance usability and functionality [#1677, #1679, #1681, #1787]
|
||||||
|
|
||||||
|
2.3.1 (2018-03-06)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Fix unnecessary automatic upgrade to KDBX 4.0 and prevent challenge-response key being stripped [#1568]
|
||||||
|
- Abort saving and show an error message when challenge-response fails [#1659]
|
||||||
|
- Support inner stream protection on all string attributes [#1646]
|
||||||
|
- Fix favicon downloads not finishing on some websites [#1657]
|
||||||
|
- Fix freeze due to invalid STDIN data [#1628]
|
||||||
|
- Correct issue with encrypted RSA SSH keys [#1587]
|
||||||
|
- Fix crash on macOS due to QTBUG-54832 [#1607]
|
||||||
|
- Show error message if ssh-agent communication fails [#1614]
|
||||||
|
- Fix --pw-stdin and filename parameters being ignored [#1608]
|
||||||
|
- Fix Auto-Type syntax check not allowing spaces and special characters [#1626]
|
||||||
|
- Fix reference placeholders in combination with Auto-Type [#1649]
|
||||||
|
- Fix qtbase translations not being loaded [#1611]
|
||||||
|
- Fix startup crash on Windows due to missing SVG libraries [#1662]
|
||||||
|
- Correct database tab order regression [#1610]
|
||||||
|
- Fix GCC 8 compilation error [#1612]
|
||||||
|
- Fix copying of advanced attributes on KDE [#1640]
|
||||||
|
- Fix member initialization of CategoryListWidgetDelegate [#1613]
|
||||||
|
- Fix inconsistent toolbar icon sizes and provide higher-quality icons [#1616]
|
||||||
|
- Improve preview panel geometry [#1609]
|
||||||
|
|
||||||
|
2.3.0 (2018-02-27)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Add support for KDBX 4.0, Argon2 and ChaCha20 [#148, #1179, #1230, #1494]
|
||||||
|
- Add SSH Agent feature [#1098, #1450, #1463]
|
||||||
|
- Add preview panel with details of the selected entry [#879, #1338]
|
||||||
|
- Add more and configurable columns to entry table and allow copying of values by double click [#1305]
|
||||||
|
- Add KeePassXC-Browser API as a replacement for KeePassHTTP [#608]
|
||||||
|
- Deprecate KeePassHTTP [#1392]
|
||||||
|
- Add support for Steam one-time passwords [#1206]
|
||||||
|
- Add support for multiple Auto-Type sequences for a single entry [#1390]
|
||||||
|
- Adjust YubiKey HMAC-SHA1 challenge-response key generation for KDBX 4.0 [#1060]
|
||||||
|
- Replace qHttp with cURL for website icon downloads [#1460]
|
||||||
|
- Remove lock file [#1231]
|
||||||
|
- Add option to create backup file before saving [#1385]
|
||||||
|
- Ask to save a generated password before closing the entry password generator [#1499]
|
||||||
|
- Resolve placeholders recursively [#1078]
|
||||||
|
- Add Auto-Type button to the toolbar [#1056]
|
||||||
|
- Improve window focus handling for Auto-Type dialogs [#1204, #1490]
|
||||||
|
- Auto-Type dialog and password generator can now be exited with ESC [#1252, #1412]
|
||||||
|
- Add optional dark tray icon [#1154]
|
||||||
|
- Add new "Unsafe saving" option to work around saving problems with file sync services [#1385]
|
||||||
|
- Add IBus support to AppImage and additional image formats to Windows builds [#1534, #1537]
|
||||||
|
- Add diceware password generator to CLI [#1406]
|
||||||
|
- Add --key-file option to CLI [#816, #824]
|
||||||
|
- Add DBus interface for opening and closing KeePassXC databases [#283]
|
||||||
|
- Add KDBX compression options to database settings [#1419]
|
||||||
|
- Discourage use of old fixed-length key files in favor of arbitrary files [#1326, #1327]
|
||||||
|
- Correct reference resolution in entry fields [#1486]
|
||||||
|
- Fix window state and recent databases not being remembered on exit [#1453]
|
||||||
|
- Correct history item generation when configuring TOTP for an entry [#1446]
|
||||||
|
- Correct multiple TOTP bugs [#1414]
|
||||||
|
- Automatic saving after every change is now a default [#279]
|
||||||
|
- Allow creation of new entries during search [#1398]
|
||||||
|
- Correct menu issues on macOS [#1335]
|
||||||
|
- Allow compilation on OpenBSD [#1328]
|
||||||
|
- Improve entry attachments view [#1139, #1298]
|
||||||
|
- Fix auto lock for Gnome and Xfce [#910, #1249]
|
||||||
|
- Don't remember key files in file dialogs when the setting is disabled [#1188]
|
||||||
|
- Improve database merging and conflict resolution [#807, #1165]
|
||||||
|
- Fix macOS pasteboard issues [#1202]
|
||||||
|
- Improve startup times on some platforms [#1205]
|
||||||
|
- Hide the notes field by default [#1124]
|
||||||
|
- Toggle main window by clicking tray icon with the middle mouse button [#992]
|
||||||
|
- Fix custom icons not copied over when databases are merged [#1008]
|
||||||
|
- Allow use of DEL key to delete entries [#914]
|
||||||
|
- Correct intermittent crash due to stale history items [#1527]
|
||||||
|
- Sanitize newline characters in title, username and URL fields [#1502]
|
||||||
|
- Reopen previously opened databases in correct order [#774]
|
||||||
|
- Use system's zxcvbn library if available [#701]
|
||||||
|
- Implement various i18n improvements [#690, #875, #1436]
|
||||||
|
|
||||||
|
2.2.4 (2017-12-13)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Prevent database corruption when locked [#1219]
|
||||||
|
- Fixes apply button not saving new entries [#1141]
|
||||||
|
- Switch to Consolas font on Windows for password edit [#1229]
|
||||||
|
- Multiple fixes to AppImage deployment [#1115, #1228]
|
||||||
|
- Fixes multiple memory leaks [#1213]
|
||||||
|
- Resize message close to 16x16 pixels [#1253]
|
||||||
|
|
||||||
|
2.2.2 (2017-10-22)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Fixed entries with empty URLs being reported to KeePassHTTP clients [#1031]
|
||||||
|
- Fixed YubiKey detection and enabled CLI tool for AppImage binary [#1100]
|
||||||
|
- Added AppStream description [#1082]
|
||||||
|
- Improved TOTP compatibility and added new Base32 implementation [#1069]
|
||||||
|
- Fixed error handling when processing invalid cipher stream [#1099]
|
||||||
|
- Fixed double warning display when opening a database [#1037]
|
||||||
|
- Fixed unlocking databases with --pw-stdin [#1087]
|
||||||
|
- Added ability to override QT_PLUGIN_PATH environment variable for AppImages [#1079]
|
||||||
|
- Fixed transform seed not being regenerated when saving the database [#1068]
|
||||||
|
- Fixed only one YubiKey slot being polled [#1048]
|
||||||
|
- Corrected an issue with entry icons while merging [#1008]
|
||||||
|
- Corrected desktop and tray icons in Snap package [#1030]
|
||||||
|
- Fixed screen lock and Google fallback settings [#1029]
|
||||||
|
|
||||||
|
2.2.1 (2017-10-01)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Corrected multiple snap issues [#934, #1011]
|
||||||
|
- Corrected multiple custom icon issues [#708, #719, #994]
|
||||||
|
- Corrected multiple Yubikey issues [#880]
|
||||||
|
- Fixed single instance preventing load on occasion [#997]
|
||||||
|
- Keep entry history when merging databases [#970]
|
||||||
|
- Prevent data loss if passwords were mismatched [#1007]
|
||||||
|
- Fixed crash after merge [#941]
|
||||||
|
- Added configurable auto-type default delay [#703]
|
||||||
|
- Unlock database dialog window comes to front [#663]
|
||||||
|
- Translation and compiling fixes
|
||||||
|
|
||||||
|
2.2.0 (2017-06-23)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Added YubiKey 2FA integration for unlocking databases [#127]
|
||||||
|
- Added TOTP support [#519]
|
||||||
|
- Added CSV import tool [#146, #490]
|
||||||
|
- Added KeePassXC CLI tool [#254]
|
||||||
|
- Added diceware password generator [#373]
|
||||||
|
- Added support for entry references [#370, #378]
|
||||||
|
- Added support for Twofish encryption [#167]
|
||||||
|
- Enabled DEP and ASLR for in-memory protection [#371]
|
||||||
|
- Enabled single instance mode [#510]
|
||||||
|
- Enabled portable mode [#645]
|
||||||
|
- Enabled database lock on screensaver and session lock [#545]
|
||||||
|
- Redesigned welcome screen with common features and recent databases [#292]
|
||||||
|
- Multiple updates to search behavior [#168, #213, #374, #471, #603, #654]
|
||||||
|
- Added auto-type fields {CLEARFIELD}, {SPACE}, {{}, {}} [#267, #427, #480]
|
||||||
|
- Fixed auto-type errors on Linux [#550]
|
||||||
|
- Prompt user prior to executing a cmd:// URL [#235]
|
||||||
|
- Entry attributes can be protected (hidden) [#220]
|
||||||
|
- Added extended ascii to password generator [#538]
|
||||||
|
- Added new database icon to toolbar [#289]
|
||||||
|
- Added context menu entry to empty recycle bin in databases [#520]
|
||||||
|
- Added "apply" button to entry and group edit windows [#624]
|
||||||
|
- Added macOS tray icon and enabled minimize on close [#583]
|
||||||
|
- Fixed issues with unclean shutdowns [#170, #580]
|
||||||
|
- Changed keyboard shortcut to create new database to CTRL+SHIFT+N [#515]
|
||||||
|
- Compare window title to entry URLs [#556]
|
||||||
|
- Implemented inline error messages [#162]
|
||||||
|
- Ignore group expansion and other minor changes when making database "dirty" [#464]
|
||||||
|
- Updated license and copyright information on souce files [#632]
|
||||||
|
- Added contributors list to about dialog [#629]
|
||||||
|
|
||||||
|
2.1.4 (2017-04-09)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Bumped KeePassHTTP version to 1.8.4.2
|
||||||
|
- KeePassHTTP confirmation window comes to foreground [#466]
|
||||||
|
|
||||||
|
2.1.3 (2017-03-03)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Fix possible overflow in zxcvbn library [#363]
|
||||||
|
- Revert HiDPI setting to avoid problems on laptop screens [#332]
|
||||||
|
- Set file meta properties in Windows executable [#330]
|
||||||
|
- Suppress error message when auto-reloading a locked database [#345]
|
||||||
|
- Improve usability of question dialog when database is already locked by a different instance [#346]
|
||||||
|
- Fix compiler warnings in QHttp library [#351]
|
||||||
|
- Use unified toolbar on Mac OS X [#361]
|
||||||
|
- Fix an issue on X11 where the main window would be raised instead of closed on Alt+F4 [#362]
|
||||||
|
|
||||||
|
2.1.2 (2017-02-17)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Ask for save location when creating a new database [#302]
|
||||||
|
- Remove Libmicrohttpd dependency to clean up the code and ensure better OS X compatibility [#317, #265]
|
||||||
|
- Prevent Qt from degrading Wifi network performance on certain platforms [#318]
|
||||||
|
- Visually refine user interface on OS X and other platforms [#299]
|
||||||
|
- Remove unusable tray icon setting on OS X [#293]
|
||||||
|
- Fix compositing glitches on Ubuntu and prevent flashing when minimizing to the tray at startup [#307]
|
||||||
|
- Fix AppImage tray icon on Ubuntu [#277, #273]
|
||||||
|
- Fix global menu disappearing after restoring KeePassXC from the tray on Ubuntu [#276]
|
||||||
|
- Fix result order in entry search [#320]
|
||||||
|
- Enable HiDPI scaling on supported platforms [#315]
|
||||||
|
- Remove empty directories from installation target [#282]
|
||||||
|
|
||||||
|
2.1.1 (2017-02-06)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Enabled HTTP plugin build; plugin is disabled by default and limited to localhost [#147]
|
||||||
|
- Escape HTML in dialog boxes [#247]
|
||||||
|
- Corrected crashes in favicon download and password generator [#233, #226]
|
||||||
|
- Increase font size of password meter [#228]
|
||||||
|
- Fixed compatibility with Qt 5.8 [#211]
|
||||||
|
- Use consistent button heights in password generator [#229]
|
||||||
|
|
||||||
|
2.1.0 (2017-01-22)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Show unlock dialog when using autotype on a closed database [#10, #89]
|
||||||
|
- Show different tray icon when database is locked [#37, #46]
|
||||||
|
- Support autotype on Windows and OS X [#42, #60, #63]
|
||||||
|
- Add delay feature to autotype [#76, #77]
|
||||||
|
- Add password strength meter [#84, #92]
|
||||||
|
- Add option for automatically locking the database when minimizing
|
||||||
|
the window [#57]
|
||||||
|
- Add feature to download favicons and use them as entry icons [#30]
|
||||||
|
- Automatically reload and merge database when the file changed on
|
||||||
|
disk [#22, #33, #93]
|
||||||
|
- Add tool for merging two databases [#22, #47, #143]
|
||||||
|
- Add --pw-stdin commandline option to unlock the database by providing
|
||||||
|
a password on STDIN [#54]
|
||||||
|
- Add utility script for reading the database password from KWallet [#55]
|
||||||
|
- Fix some KeePassHTTP settings not being remembered [#34, #65]
|
||||||
|
- Make search box persistent [#15, #67, #157]
|
||||||
|
- Enhance search feature by scoping the search to selected group [#16, #118]
|
||||||
|
- Improve interaction between search field and entry list [#131, #141]
|
||||||
|
- Add stand-alone password-generator [#18, #92]
|
||||||
|
- Don't require password repetition when password is visible [#27, #92]
|
||||||
|
- Add support for entry attributes in autotype sequences [#107]
|
||||||
|
- Always focus password field when opening the database unlock widget [#116, #117]
|
||||||
|
- Fix compilation errors on various platforms [#53, #126, #130]
|
||||||
|
- Restructure and improve kdbx-extract utility [#160]
|
||||||
|
|
||||||
|
2.0.3 (2016-09-04)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Improved error reporting when reading / writing databases fails. [#450, #462]
|
||||||
|
- Display an error message when opening a custom icon fails.
|
||||||
|
- Detect custom icon format based on contents instead of the filename. [#512]
|
||||||
|
- Keep symlink intact when saving databases. [#442].
|
||||||
|
- Fix a crash when deleting parent group of recycle bin. [#520]
|
||||||
|
- Display a confirm dialog before moving an entry to the recycle bin. [#447]
|
||||||
|
- Repair UUIDs of inconsistent history items. [#130]
|
||||||
|
- Only include top-level windows in auto-type window list when using gnome-shell.
|
||||||
|
- Update translations.
|
||||||
|
|
||||||
|
2.0.2 (2016-02-02)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Fix regression in database writer that caused it to strip certain special
|
||||||
|
characters (characters from Unicode plane > 0).
|
||||||
|
- Fix bug in repair function that caused it to strip non-ASCII characters.
|
||||||
|
|
||||||
|
2.0.1 (2016-01-31)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Flush temporary file before opening attachment. [#390]
|
||||||
|
- Disable password generator when showing entry in history mode. [#422]
|
||||||
|
- Strip invalid XML chars when writing databases. [#392]
|
||||||
|
- Add repair function to fix databases with invalid XML chars. [#392]
|
||||||
|
- Display custom icons scaled. [#322]
|
||||||
|
- Allow opening databases that have no password and keyfile. [#391]
|
||||||
|
- Fix crash when importing .kdb files with invalid icon ids. [#425]
|
||||||
|
- Update translations.
|
||||||
|
|
||||||
|
2.0 (2015-12-06)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Improve UI of the search edit.
|
||||||
|
- Clear clipboard when locking databases. [#342]
|
||||||
|
- Enable Ctrl+M shortcut to minimize the window on all platforms. [#329]
|
||||||
|
- Show a better message when trying to open an old database format. [#338]
|
||||||
|
- Fix global auto-type behavior with some window managers.
|
||||||
|
- Show global auto-type window on the active desktop. [#359]
|
||||||
|
- Disable systray on OS X. [#326]
|
||||||
|
- Restore main window when clicking on the OS X docker icon. [#326]
|
||||||
|
|
||||||
|
2.0 Beta 2 (2015-09-06)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Fix crash when locking with search UI open [#309]
|
||||||
|
- Fix file locking on Mac OS X [#327]
|
||||||
|
- Set default extension when saving a database [#79, #308]
|
||||||
|
|
||||||
|
2.0 Beta 1 (2015-07-18)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Remember entry column sizes [#159]
|
||||||
|
- Add translations
|
||||||
|
- Support opening attachments directly
|
||||||
|
- Support cmd:// URLs [#244]
|
||||||
|
- Protect opened databases with a file lock [#18]
|
||||||
|
- Export to csv files [#57]
|
||||||
|
- Add optional tray icon [#153]
|
||||||
|
- Allow setting the default auto-type sequence for groups [#175]
|
||||||
|
- Make the kdbx parser more lenient
|
||||||
|
- Remove --password command line option [#285]
|
||||||
|
|
||||||
|
2.0 Alpha 6 (2014-04-12)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Add option to lock databases after user inactivity [#62]
|
||||||
|
- Add compatibility with libgcrypt 1.6 [#129]
|
||||||
|
- Display passwords in monospace font [#51]
|
||||||
|
- Use an icon for the button that shows/masks passwords [#38]
|
||||||
|
- Add an option to show passwords by default [#93]
|
||||||
|
- Improve password generator design [#122]
|
||||||
|
- On Linux link .kdbx files with KeePassX
|
||||||
|
- Remember window size [#154]
|
||||||
|
- Disallow global auto-typing when the database is locked
|
||||||
|
|
||||||
|
2.0 Alpha 5 (2013-12-20)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Support copying entries and groups using drag'n'drop [#74]
|
||||||
|
- Open last used databases on startup [#36]
|
||||||
|
- Made the kdbx file parser more robust
|
||||||
|
- Only edit entries on doubleclick (not single) or with enter key
|
||||||
|
- Allow removing multiple entries
|
||||||
|
- Added option to minimize window when copying data to clipboard
|
||||||
|
- Save password generator settings
|
||||||
|
- Fixed auto-type producing wrong chars in some keyboard configurations [#116]
|
||||||
|
- Added some more actions to the toolbar
|
||||||
|
|
||||||
|
2.0 Alpha 4 (2013-03-29)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Add random password generator [#52]
|
||||||
|
- Merge the 'Description' tab into the 'Entry' tab [#59]
|
||||||
|
- Fix crash when deleting history items [#56]
|
||||||
|
- Fix crash on Mac OS X Mountain Lion during startup [#50]
|
||||||
|
- Improved KeePassX application icon [#58]
|
||||||
|
|
||||||
|
2.0 Alpha 3 (2012-10-27)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Auto-Type on Linux / X11
|
||||||
|
- Database locking
|
||||||
|
- Fix database corruption when changing key transformation rounds [#34]
|
||||||
|
- Verify header data of kdbx files
|
||||||
|
- Add menu entry to open URLs in the browser
|
||||||
|
- Add menu entry to copy an entry attribute to clipboard
|
||||||
|
|
||||||
|
2.0 Alpha 2 (2012-07-02)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Import kdb (KeePass 1) files [#2]
|
||||||
|
- Display history items [#23]
|
||||||
|
- Implement history item limits [#16]
|
||||||
|
- Group and entry icons can be set [#22]
|
||||||
|
- Add keyboard shortcuts
|
||||||
|
- Search in databases [#24]
|
||||||
|
- Sortable entry view
|
||||||
|
- Support building Mac OS X bundles
|
||||||
|
|
||||||
|
2.0 Alpha 1 (2012-05-07)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- First release.
|
||||||
412
CMakeLists.txt
@@ -1,3 +1,4 @@
|
|||||||
|
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
|
||||||
# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
|
# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
@@ -13,37 +14,139 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
project(KeePassX)
|
cmake_minimum_required(VERSION 3.1.0)
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.0)
|
project(KeePassXC)
|
||||||
|
|
||||||
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake )
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
|
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||||
|
"Choose the type of build, options are: None Debug Release RelWithDebInfo Debug DebugFull Profile MinSizeRel."
|
||||||
|
FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
|
|
||||||
|
# Support Visual Studio Code
|
||||||
|
include(CMakeToolsHelpers OPTIONAL)
|
||||||
|
|
||||||
|
include(CheckCCompilerFlag)
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
include(CheckCXXSourceCompiles)
|
||||||
|
|
||||||
option(WITH_TESTS "Enable building of unit tests" ON)
|
option(WITH_TESTS "Enable building of unit tests" ON)
|
||||||
option(WITH_GUI_TESTS "Enable building of GUI tests" OFF)
|
option(WITH_GUI_TESTS "Enable building of GUI tests" OFF)
|
||||||
option(WITH_LTO "Enable Link Time Optimization (LTO)" OFF)
|
option(WITH_DEV_BUILD "Use only for development. Disables/warns about deprecated methods." OFF)
|
||||||
option(WITH_PIE "Build as Position-independent executable (PIE)" OFF)
|
option(WITH_ASAN "Enable address sanitizer checks (Linux / macOS only)" OFF)
|
||||||
|
option(WITH_COVERAGE "Use to build with coverage tests (GCC only)." OFF)
|
||||||
|
option(WITH_APP_BUNDLE "Enable Application Bundle for macOS" ON)
|
||||||
|
|
||||||
set( KEEPASSX_VERSION "2.0 alpha 1" )
|
set(WITH_XC_ALL OFF CACHE BOOLEAN "Build in all available plugins")
|
||||||
|
|
||||||
|
option(WITH_XC_AUTOTYPE "Include Auto-Type." ON)
|
||||||
|
option(WITH_XC_NETWORKING "Include networking code (e.g. for downlading website icons)." OFF)
|
||||||
|
option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF)
|
||||||
|
option(WITH_XC_HTTP "Include KeePassHTTP-compatible browser integration (deprecated, implies WITH_NETWORKING)." OFF)
|
||||||
|
option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
|
||||||
|
option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
|
||||||
|
|
||||||
|
if(WITH_XC_HTTP)
|
||||||
|
message(WARNING "KeePassHTTP support has been deprecated and will be removed in a future version. Please use WITH_XC_BROWSER instead!\n"
|
||||||
|
"For enabling / disabling network access code, WITH_XC_HTTP has been replaced by WITH_XC_NETWORKING.")
|
||||||
|
set(WITH_XC_NETWORKING ON CACHE BOOL "Include networking code (e.g. for downlading website icons)." FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WITH_XC_ALL)
|
||||||
|
# Enable all options
|
||||||
|
set(WITH_XC_AUTOTYPE ON)
|
||||||
|
set(WITH_XC_NETWORKING ON)
|
||||||
|
set(WITH_XC_BROWSER ON)
|
||||||
|
set(WITH_XC_HTTP ON) # Deprecated
|
||||||
|
set(WITH_XC_YUBIKEY ON)
|
||||||
|
set(WITH_XC_SSHAGENT ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Process ui files automatically from source files
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
set(KEEPASSXC_VERSION_MAJOR "2")
|
||||||
|
set(KEEPASSXC_VERSION_MINOR "3")
|
||||||
|
set(KEEPASSXC_VERSION_PATCH "3")
|
||||||
|
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
||||||
|
|
||||||
|
set(KEEPASSXC_BUILD_TYPE "Snapshot" CACHE STRING "Set KeePassXC build type to distinguish between stable releases and snapshots")
|
||||||
|
set_property(CACHE KEEPASSXC_BUILD_TYPE PROPERTY STRINGS Snapshot Release PreRelease)
|
||||||
|
|
||||||
|
# Check if on a tag, if so build as a release
|
||||||
|
execute_process(COMMAND git tag --points-at HEAD
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_TAG)
|
||||||
|
if(GIT_TAG)
|
||||||
|
set(OVERRIDE_VERSION ${GIT_TAG})
|
||||||
|
elseif(EXISTS ${CMAKE_SOURCE_DIR}/.version)
|
||||||
|
file(READ ${CMAKE_SOURCE_DIR}/.version OVERRIDE_VERSION)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}")
|
||||||
|
if(OVERRIDE_VERSION)
|
||||||
|
if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$")
|
||||||
|
set(KEEPASSXC_BUILD_TYPE PreRelease)
|
||||||
|
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||||
|
elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
|
||||||
|
set(KEEPASSXC_BUILD_TYPE Release)
|
||||||
|
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease" AND NOT OVERRIDE_VERSION)
|
||||||
|
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview")
|
||||||
|
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot")
|
||||||
|
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(KEEPASSXC_BUILD_TYPE STREQUAL "Release")
|
||||||
|
set(KEEPASSXC_BUILD_TYPE_RELEASE ON)
|
||||||
|
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease")
|
||||||
|
set(KEEPASSXC_BUILD_TYPE_PRE_RELEASE ON)
|
||||||
|
else()
|
||||||
|
set(KEEPASSXC_BUILD_TYPE_SNAPSHOT ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Setting up build for KeePassXC v${KEEPASSXC_VERSION}\n")
|
||||||
|
|
||||||
|
# Distribution info
|
||||||
|
set(KEEPASSXC_DIST ON)
|
||||||
|
set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution Type")
|
||||||
|
set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Other)
|
||||||
|
if(KEEPASSXC_DIST_TYPE STREQUAL "Snap")
|
||||||
|
set(KEEPASSXC_DIST_SNAP ON)
|
||||||
|
elseif(KEEPASSXC_DIST_TYPE STREQUAL "AppImage")
|
||||||
|
set(KEEPASSXC_DIST_APPIMAGE ON)
|
||||||
|
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Other")
|
||||||
|
unset(KEEPASSXC_DIST)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||||
|
set(IS_32BIT TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||||
set(CMAKE_COMPILER_IS_CLANG 1)
|
set(CMAKE_COMPILER_IS_CLANG 1)
|
||||||
endif("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
endif()
|
||||||
|
|
||||||
if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
set(CMAKE_COMPILER_IS_CLANGXX 1)
|
set(CMAKE_COMPILER_IS_CLANGXX 1)
|
||||||
endif("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
endif()
|
||||||
|
|
||||||
macro(add_gcc_compiler_cxxflags FLAGS)
|
macro(add_gcc_compiler_cxxflags FLAGS)
|
||||||
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAGS}")
|
||||||
endif(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
|
endif()
|
||||||
endmacro(add_gcc_compiler_cxxflags)
|
endmacro(add_gcc_compiler_cxxflags)
|
||||||
|
|
||||||
macro(add_gcc_compiler_cflags FLAGS)
|
macro(add_gcc_compiler_cflags FLAGS)
|
||||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}")
|
||||||
endif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
endif()
|
||||||
endmacro(add_gcc_compiler_cflags)
|
endmacro(add_gcc_compiler_cflags)
|
||||||
|
|
||||||
macro(add_gcc_compiler_flags FLAGS)
|
macro(add_gcc_compiler_flags FLAGS)
|
||||||
@@ -51,112 +154,241 @@ macro(add_gcc_compiler_flags FLAGS)
|
|||||||
add_gcc_compiler_cflags("${FLAGS}")
|
add_gcc_compiler_cflags("${FLAGS}")
|
||||||
endmacro(add_gcc_compiler_flags)
|
endmacro(add_gcc_compiler_flags)
|
||||||
|
|
||||||
add_definitions(-DQT_NO_KEYWORDS -DQT_NO_EXCEPTIONS -DQT_NO_STL -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
||||||
|
|
||||||
add_gcc_compiler_flags("-ansi -fno-common -fstack-protector -D_FORTIFY_SOURCE=2")
|
if(WITH_APP_BUNDLE)
|
||||||
|
add_definitions(-DWITH_APP_BUNDLE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_gcc_compiler_flags("-fno-common")
|
||||||
add_gcc_compiler_flags("-Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long")
|
add_gcc_compiler_flags("-Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long")
|
||||||
add_gcc_compiler_flags("-Wformat=2 -Werror=format-security -Wmissing-format-attribute")
|
add_gcc_compiler_flags("-Wformat=2 -Wmissing-format-attribute")
|
||||||
|
add_gcc_compiler_flags("-fvisibility=hidden")
|
||||||
|
add_gcc_compiler_cxxflags("-fvisibility-inlines-hidden")
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
add_gcc_compiler_flags("-Werror")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if((CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8.999) OR CMAKE_COMPILER_IS_CLANGXX)
|
||||||
|
add_gcc_compiler_flags("-fstack-protector-strong")
|
||||||
|
else()
|
||||||
|
add_gcc_compiler_flags("-fstack-protector --param=ssp-buffer-size=4")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_gcc_compiler_cxxflags("-fno-exceptions -fno-rtti")
|
add_gcc_compiler_cxxflags("-fno-exceptions -fno-rtti")
|
||||||
add_gcc_compiler_cxxflags("-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual")
|
add_gcc_compiler_cxxflags("-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual")
|
||||||
add_gcc_compiler_cflags("-Wchar-subscripts -Wwrite-strings -Werror=implicit-function-declaration")
|
add_gcc_compiler_cflags("-Wchar-subscripts -Wwrite-strings")
|
||||||
|
|
||||||
if(CMAKE_COMPILER_IS_CLANGXX)
|
if(WITH_ASAN)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mllvm -stack-protector-buffer-size=4")
|
if(NOT (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR APPLE))
|
||||||
elseif(CMAKE_COMPILER_IS_GNUCXX)
|
message(FATAL_ERROR "WITH_ASAN is only supported on Linux / macOS at the moment.")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align --param=ssp-buffer-size=4")
|
endif()
|
||||||
endif(CMAKE_COMPILER_IS_CLANGXX)
|
|
||||||
|
|
||||||
if(CMAKE_COMPILER_IS_CLANG)
|
add_gcc_compiler_flags("-fsanitize=address -DWITH_ASAN")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mllvm -stack-protector-buffer-size=4")
|
|
||||||
elseif(CMAKE_COMPILER_IS_GNUCC)
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-align --param=ssp-buffer-size=4")
|
if(NOT (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9))
|
||||||
endif(CMAKE_COMPILER_IS_CLANG)
|
add_gcc_compiler_flags("-fsanitize=leak -DWITH_LSAN")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
||||||
|
if (CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)")
|
||||||
|
add_gcc_compiler_flags("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_c_compiler_flag("-Werror=format-security -Werror=implicit-function-declaration" WERROR_C_AVAILABLE)
|
||||||
|
check_cxx_compiler_flag("-Werror=format-security" WERROR_CXX_AVAILABLE)
|
||||||
|
if(WERROR_C_AVAILABLE AND WERROR_CXX_AVAILABLE)
|
||||||
|
add_gcc_compiler_flags("-Werror=format-security")
|
||||||
|
add_gcc_compiler_cflags("-Werror=implicit-function-declaration")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align")
|
||||||
|
|
||||||
|
if(WITH_COVERAGE)
|
||||||
|
# Include code coverage, use with -DCMAKE_BUILD_TYPE=Coverage
|
||||||
|
include(CodeCoverage)
|
||||||
|
setup_target_for_coverage(kp_coverage "make test" coverage)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCC)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-align")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
if (CMAKE_COMPILER_IS_CLANGXX)
|
||||||
|
add_gcc_compiler_flags("-Qunused-arguments")
|
||||||
|
endif()
|
||||||
|
add_gcc_compiler_flags("-pie -fPIE")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed -Wl,--no-undefined")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed -Wl,--no-undefined")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
||||||
endif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WITH_LTO)
|
add_gcc_compiler_cflags("-std=c99")
|
||||||
include(CheckCXXCompilerFlag)
|
add_gcc_compiler_cxxflags("-std=c++11")
|
||||||
|
|
||||||
if(CMAKE_COMPILER_IS_GNUCC and CMAKE_COMPILER_IS_GNUCXX)
|
if(APPLE)
|
||||||
check_cxx_compiler_flag("-flto -fuse-linker-plugin" LTO_AVAILABLE)
|
add_gcc_compiler_cxxflags("-stdlib=libc++")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(LTO_AVAILABLE)
|
if(WITH_DEV_BUILD)
|
||||||
add_gcc_compiler_flags("-flto -fuse-linker-plugin")
|
add_definitions(-DQT_DEPRECATED_WARNINGS -DGCRYPT_NO_DEPRECATED)
|
||||||
else()
|
endif()
|
||||||
message(FATAL_ERROR "This version of gcc doesn't support LTO")
|
|
||||||
endif(LTO_AVAILABLE)
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "LTO is only supported with gcc")
|
|
||||||
endif(CMAKE_COMPILER_IS_GNUCC and CMAKE_COMPILER_IS_GNUCXX)
|
|
||||||
endif(WITH_LTO)
|
|
||||||
|
|
||||||
if(WITH_PIE)
|
|
||||||
if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) AND (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX))
|
|
||||||
add_gcc_compiler_flags("-fPIE")
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "PIE is only supported with gcc and clang")
|
|
||||||
endif((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) AND (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX))
|
|
||||||
endif(WITH_PIE)
|
|
||||||
|
|
||||||
if( APPLE OR MINGW )
|
|
||||||
set( PROGNAME KeePassX )
|
|
||||||
else( APPLE OR MINGW )
|
|
||||||
set( PROGNAME keepassx )
|
|
||||||
endif( APPLE OR MINGW )
|
|
||||||
|
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
set(BIN_INSTALL_DIR "")
|
set(CMAKE_RC_COMPILER_INIT windres)
|
||||||
set(DATA_INSTALL_DIR "share")
|
enable_language(RC)
|
||||||
|
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
|
||||||
|
if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
||||||
|
# Enable DEP and ASLR
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||||
|
# Enable high entropy ASLR for 64-bit builds
|
||||||
|
if(NOT IS_32BIT)
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--high-entropy-va")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(APPLE AND WITH_APP_BUNDLE OR MINGW)
|
||||||
|
set(PROGNAME KeePassXC)
|
||||||
|
else()
|
||||||
|
set(PROGNAME keepassxc)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(APPLE AND WITH_APP_BUNDLE AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
|
||||||
|
set(CMAKE_INSTALL_PREFIX "/Applications")
|
||||||
|
set(CMAKE_INSTALL_MANDIR "/usr/local/share/man")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MINGW)
|
||||||
|
set(CLI_INSTALL_DIR ".")
|
||||||
|
set(PROXY_INSTALL_DIR ".")
|
||||||
|
set(BIN_INSTALL_DIR ".")
|
||||||
|
set(PLUGIN_INSTALL_DIR ".")
|
||||||
|
set(DATA_INSTALL_DIR "share")
|
||||||
|
elseif(APPLE AND WITH_APP_BUNDLE)
|
||||||
|
set(CLI_INSTALL_DIR "/usr/local/bin")
|
||||||
|
set(PROXY_INSTALL_DIR "/usr/local/bin")
|
||||||
|
set(BIN_INSTALL_DIR ".")
|
||||||
|
set(PLUGIN_INSTALL_DIR "${PROGNAME}.app/Contents/PlugIns")
|
||||||
|
set(DATA_INSTALL_DIR "${PROGNAME}.app/Contents/Resources")
|
||||||
|
else()
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
set(CLI_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
|
||||||
|
set(PROXY_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
|
||||||
|
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
|
||||||
|
set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/keepassxc")
|
||||||
|
set(DATA_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/keepassxc")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WITH_TESTS)
|
||||||
|
enable_testing()
|
||||||
|
endif(WITH_TESTS)
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
find_package(Qt5 COMPONENTS Core Network Concurrent Widgets Test LinguistTools DBus REQUIRED)
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
set(BIN_INSTALL_DIR "")
|
find_package(Qt5 COMPONENTS Core Network Concurrent Widgets Test LinguistTools REQUIRED
|
||||||
set(DATA_INSTALL_DIR "Contents/Resources")
|
HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH
|
||||||
else(MINGW)
|
)
|
||||||
set(BIN_INSTALL_DIR "bin")
|
find_package(Qt5 COMPONENTS MacExtras
|
||||||
set(DATA_INSTALL_DIR "share/keepassx")
|
HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH
|
||||||
endif( MINGW )
|
)
|
||||||
|
else()
|
||||||
|
find_package(Qt5 COMPONENTS Core Network Concurrent Widgets Test LinguistTools REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
if( WITH_TESTS )
|
if(Qt5Core_VERSION VERSION_LESS "5.2.0")
|
||||||
enable_testing()
|
message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
|
||||||
endif( WITH_TESTS )
|
endif()
|
||||||
|
|
||||||
find_package(Qt4 4.6.0 REQUIRED QtCore QtGui QtTest)
|
get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH)
|
||||||
add_definitions(${QT_DEFINITIONS} -DQT_CORE_LIB -DQT_GUI_LIB)
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG QT_DEBUG)
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG)
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO QT_NO_DEBUG)
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL QT_NO_DEBUG)
|
|
||||||
IF(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS QT_NO_DEBUG)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
find_package(Gcrypt REQUIRED)
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
set(CMAKE_MACOSX_RPATH TRUE)
|
||||||
|
find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
|
||||||
|
if(NOT MACDEPLOYQT_EXE)
|
||||||
|
message(FATAL_ERROR "macdeployqt is required to build in macOS")
|
||||||
|
else()
|
||||||
|
message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Debian sets the the build type to None for package builds.
|
||||||
|
# Make sure we don't enable asserts there.
|
||||||
|
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_NONE QT_NO_DEBUG)
|
||||||
|
|
||||||
|
find_package(LibGPGError REQUIRED)
|
||||||
|
find_package(Gcrypt 1.7.0 REQUIRED)
|
||||||
|
find_package(Argon2 REQUIRED)
|
||||||
|
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
|
|
||||||
include(CheckCXXSourceCompiles)
|
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
|
||||||
check_cxx_source_compiles("
|
|
||||||
#include <zlib.h>
|
|
||||||
|
|
||||||
#if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1200)
|
if(ZLIB_VERSION_STRING VERSION_LESS "1.2.0")
|
||||||
#error zlib 1.2.x or higher is required to use the gzip format
|
message(FATAL_ERROR "zlib 1.2.0 or higher is required to use the gzip format")
|
||||||
#endif
|
endif()
|
||||||
|
|
||||||
int main() { return 0; }" ZLIB_SUPPORTS_GZIP)
|
# Optional
|
||||||
|
if(WITH_XC_YUBIKEY)
|
||||||
|
find_package(YubiKey REQUIRED)
|
||||||
|
|
||||||
if(NOT ZLIB_SUPPORTS_GZIP)
|
include_directories(SYSTEM ${YUBIKEY_INCLUDE_DIRS})
|
||||||
message(FATAL_ERROR "zlib 1.2.x or higher is required to use the gzip format")
|
endif()
|
||||||
endif(NOT ZLIB_SUPPORTS_GZIP)
|
|
||||||
|
|
||||||
include_directories(SYSTEM ${QT_INCLUDE_DIR} ${GCRYPT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
|
if(UNIX)
|
||||||
|
check_cxx_source_compiles("#include <sys/prctl.h>
|
||||||
|
int main() { prctl(PR_SET_DUMPABLE, 0); return 0; }"
|
||||||
|
HAVE_PR_SET_DUMPABLE)
|
||||||
|
|
||||||
|
check_cxx_source_compiles("#include <sys/resource.h>
|
||||||
|
int main() {
|
||||||
|
struct rlimit limit;
|
||||||
|
limit.rlim_cur = 0;
|
||||||
|
limit.rlim_max = 0;
|
||||||
|
setrlimit(RLIMIT_CORE, &limit);
|
||||||
|
return 0;
|
||||||
|
}" HAVE_RLIMIT_CORE)
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
check_cxx_source_compiles("#include <sys/types.h>
|
||||||
|
#include <sys/ptrace.h>
|
||||||
|
int main() { ptrace(PT_DENY_ATTACH, 0, 0, 0); return 0; }"
|
||||||
|
HAVE_PT_DENY_ATTACH)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include_directories(SYSTEM ${GCRYPT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
add_subdirectory(share)
|
add_subdirectory(share)
|
||||||
add_subdirectory(utils)
|
if(WITH_TESTS)
|
||||||
if( WITH_TESTS )
|
add_subdirectory(tests)
|
||||||
add_subdirectory(tests)
|
endif(WITH_TESTS)
|
||||||
endif( WITH_TESTS )
|
|
||||||
|
if(PRINT_SUMMARY)
|
||||||
|
# This will print ENABLED, REQUIRED and DISABLED
|
||||||
|
feature_summary(WHAT ALL)
|
||||||
|
else()
|
||||||
|
# This will only print ENABLED and DISABLED feature
|
||||||
|
feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
|
||||||
|
feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
|
||||||
|
endif()
|
||||||
|
|||||||
230
COPYING
@@ -1,5 +1,5 @@
|
|||||||
KeePassX - http://www.keepassx.org/
|
KeePassXC - http://www.keepassxc.org/
|
||||||
Copyright (C) 2010-2012 Felix Geyer <debfx@fobos.de>
|
Copyright (C) 2016-2017 KeePassXC Team <team@keepassxc.org>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -14,28 +14,228 @@ GNU General Public License for more details.
|
|||||||
--------------------------------------------------------------------
|
--------------------------------------------------------------------
|
||||||
|
|
||||||
Format-Specification: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
Format-Specification: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Upstream-Name: KeePassX
|
Upstream-Name: KeePassXC
|
||||||
Upstream-Contact: Felix Geyer <debfx@fobos.de>
|
Upstream-Contact: KeePassXC Team <team@keepassxc.org>
|
||||||
Source: http://www.keepassx.org/
|
Source: http://www.keepassxc.org/
|
||||||
|
|
||||||
Copyright: 2010-2012, Felix Geyer <debfx@fobos.de>
|
Copyright: 2010-2012, Felix Geyer <debfx@fobos.de>
|
||||||
2011-2012, Florian Geyer <blueice@fobos.de>
|
2011-2012, Florian Geyer <blueice@fobos.de>
|
||||||
|
2012, Tobias Tangemann
|
||||||
|
2007, Trolltech ASA <info@trolltech.com>
|
||||||
|
2012, Intel Corporation
|
||||||
|
2012, Nokia Corporation and/or its subsidiary(-ies)
|
||||||
|
2000-2008, Tom Sato <VEF00200@nifty.ne.jp>
|
||||||
|
2013, Laszlo Papp <lpapp@kde.org>
|
||||||
|
2013, David Faure <faure@kde.org>
|
||||||
|
2016-2018, KeePassXC Team <team@keepassxc.org>
|
||||||
License: GPL-2 or GPL-3
|
License: GPL-2 or GPL-3
|
||||||
|
|
||||||
Files: share/icons/database/*.png
|
Comment: The "KeePassXC Team" in every copyright notice is formed by the following people:
|
||||||
|
- droidmonkey
|
||||||
|
- phoerious
|
||||||
|
- TheZ3ro <io@thezero.org>
|
||||||
|
- louib
|
||||||
|
- weslly
|
||||||
|
Every other contributor is listed on https://github.com/keepassxreboot/keepassxc/graphs/contributors
|
||||||
|
|
||||||
|
Files: cmake/GNUInstallDirs.cmake
|
||||||
|
Copyright: 2011 Nikita Krupen'ko <krnekit@gmail.com>
|
||||||
|
2011 Kitware, Inc.
|
||||||
|
License: BSD-3-clause
|
||||||
|
|
||||||
|
Files: cmake/CodeCoverage.cmake
|
||||||
|
Copyright: 2012 - 2015, Lars Bilke
|
||||||
|
License: BSD-3-clause
|
||||||
|
|
||||||
|
Files: cmake/FindYubiKey.cmake
|
||||||
|
Copyright: 2014 Kyle Manna <kyle@kylemanna.com>
|
||||||
|
License: GPL-2 or GPL-3
|
||||||
|
|
||||||
|
Files: cmake/GenerateProductVersion.cmake
|
||||||
|
Copyright: 2015 halex2005 <akharlov@gmail.com>
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: share/icons/application/*/apps/keepassxc.png
|
||||||
|
share/icons/application/scalable/apps/keepassxc.svgz
|
||||||
|
share/icons/application/*/apps/keepassxc-dark.png
|
||||||
|
share/icons/application/scalable/apps/keepassxc-dark.svgz
|
||||||
|
share/icons/application/*/apps/keepassxc-locked.png
|
||||||
|
share/icons/application/scalable/apps/keepassxc-locked.svgz
|
||||||
|
share/icons/application/*/apps/keepassxc-unlocked.png
|
||||||
|
share/icons/application/scalable/apps/keepassxc-unlocked.svgz
|
||||||
|
share/icons/application/*/mimetypes/application-x-keepassxc.png
|
||||||
|
share/icons/application/scalable/mimetypes/application-x-keepassxc.svgz
|
||||||
|
Copyright: 2016, Lorenzo Stella <lorenzo.stl@gmail.com>
|
||||||
|
License: LGPL-2
|
||||||
|
|
||||||
|
Files: share/icons/application/*/actions/auto-type.png
|
||||||
|
share/icons/application/*/actions/database-change-key.png
|
||||||
|
share/icons/application/*/actions/entry-clone.png
|
||||||
|
share/icons/application/*/actions/entry-edit.png
|
||||||
|
share/icons/application/*/actions/entry-new.png
|
||||||
|
share/icons/application/*/actions/group-empty-trash.png
|
||||||
|
share/icons/application/*/actions/help-about.png
|
||||||
|
share/icons/application/*/actions/password-generate.png
|
||||||
|
share/icons/database/C00_Password.png
|
||||||
|
share/icons/database/C01_Package_Network.png
|
||||||
|
share/icons/database/C02_MessageBox_Warning.png
|
||||||
|
share/icons/database/C03_Server.png
|
||||||
|
share/icons/database/C04_Klipper.png
|
||||||
|
share/icons/database/C05_Edu_Languages.png
|
||||||
|
share/icons/database/C06_KCMDF.png
|
||||||
|
share/icons/database/C07_Kate.png
|
||||||
|
share/icons/database/C08_Socket.png
|
||||||
|
share/icons/database/C09_Identity.png
|
||||||
|
share/icons/database/C10_Kontact.png
|
||||||
|
share/icons/database/C11_Camera.png
|
||||||
|
share/icons/database/C12_IRKickFlash.png
|
||||||
|
share/icons/database/C13_KGPG_Key3.png
|
||||||
|
share/icons/database/C14_Laptop_Power.png
|
||||||
|
share/icons/database/C15_Scanner.png
|
||||||
|
share/icons/database/C16_Mozilla_Firebird.png
|
||||||
|
share/icons/database/C17_CDROM_Unmount.png
|
||||||
|
share/icons/database/C18_Display.png
|
||||||
|
share/icons/database/C19_Mail_Generic.png
|
||||||
|
share/icons/database/C20_Misc.png
|
||||||
|
share/icons/database/C21_KOrganizer.png
|
||||||
|
share/icons/database/C22_ASCII.png
|
||||||
|
share/icons/database/C23_Icons.png
|
||||||
|
share/icons/database/C24_Connect_Established.png
|
||||||
|
share/icons/database/C25_Folder_Mail.png
|
||||||
|
share/icons/database/C26_FileSave.png
|
||||||
|
share/icons/database/C27_NFS_Unmount.png
|
||||||
|
share/icons/database/C28_QuickTime.png
|
||||||
|
share/icons/database/C29_KGPG_Term.png
|
||||||
|
share/icons/database/C30_Konsole.png
|
||||||
|
share/icons/database/C31_FilePrint.png
|
||||||
|
share/icons/database/C32_FSView.png
|
||||||
|
share/icons/database/C33_Run.png
|
||||||
|
share/icons/database/C34_Configure.png
|
||||||
|
share/icons/database/C35_KRFB.png
|
||||||
|
share/icons/database/C36_Ark.png
|
||||||
|
share/icons/database/C37_KPercentage.png
|
||||||
|
share/icons/database/C38_Samba_Unmount.png
|
||||||
|
share/icons/database/C39_History.png
|
||||||
|
share/icons/database/C40_Mail_Find.png
|
||||||
|
share/icons/database/C41_VectorGfx.png
|
||||||
|
share/icons/database/C42_KCMMemory.png
|
||||||
|
share/icons/database/C43_EditTrash.png
|
||||||
|
share/icons/database/C44_KNotes.png
|
||||||
|
share/icons/database/C45_Cancel.png
|
||||||
|
share/icons/database/C46_Help.png
|
||||||
|
share/icons/database/C47_KPackage.png
|
||||||
|
share/icons/database/C48_Folder.png
|
||||||
|
share/icons/database/C49_Folder_Blue_Open.png
|
||||||
|
share/icons/database/C50_Folder_Tar.png
|
||||||
|
share/icons/database/C51_Decrypted.png
|
||||||
|
share/icons/database/C52_Encrypted.png
|
||||||
|
share/icons/database/C53_Apply.png
|
||||||
|
share/icons/database/C54_Signature.png
|
||||||
|
share/icons/database/C55_Thumbnail.png
|
||||||
|
share/icons/database/C56_KAddressBook.png
|
||||||
|
share/icons/database/C57_View_Text.png
|
||||||
|
share/icons/database/C58_KGPG.png
|
||||||
|
share/icons/database/C59_Package_Development.png
|
||||||
|
share/icons/database/C60_KFM_Home.png
|
||||||
|
share/icons/database/C61_Services.png
|
||||||
Copyright: 2003-2004, David Vignoni <david@icon-king.com>
|
Copyright: 2003-2004, David Vignoni <david@icon-king.com>
|
||||||
License: LGPL-2.1
|
License: LGPL-2.1
|
||||||
|
Comment: from Nuvola icon theme
|
||||||
|
|
||||||
Files: share/icons/application/*/apps/keepassx.png, share/icons/application/scalable/apps/keepassx.svgz
|
Files: share/icons/application/*/actions/entry-delete.png
|
||||||
Copyright: 2006, Otto Salminen
|
share/icons/application/*/actions/group-delete.png
|
||||||
2009, Miguelito Vieira
|
share/icons/application/*/actions/group-edit.png
|
||||||
2011, Felix Geyer <debfx@fobos.de>
|
share/icons/application/*/actions/group-new.png
|
||||||
License: GPL-2
|
Copyright: 2003-2004, David Vignoni <david@icon-king.com>
|
||||||
|
2012, Felix Geyer <debfx@fobos.de>
|
||||||
|
License: LGPL-2.1
|
||||||
|
Comment: based on Nuvola icon theme
|
||||||
|
|
||||||
Files: src/crypto/salsa20/*
|
Files: share/icons/application/*/actions/application-exit.png
|
||||||
Copyright: is in public domain
|
share/icons/application/*/actions/chronometer.png
|
||||||
License: -
|
share/icons/application/*/actions/configure.png
|
||||||
|
share/icons/application/*/actions/dialog-close.png
|
||||||
|
share/icons/application/*/actions/dialog-ok.png
|
||||||
|
share/icons/application/*/actions/document-close.png
|
||||||
|
share/icons/application/*/actions/document-edit.png
|
||||||
|
share/icons/application/*/actions/document-encrypt.png
|
||||||
|
share/icons/application/*/actions/document-new.png
|
||||||
|
share/icons/application/*/actions/document-open.png
|
||||||
|
share/icons/application/*/actions/document-properties.png
|
||||||
|
share/icons/application/*/actions/document-save.png
|
||||||
|
share/icons/application/*/actions/document-save-as.png
|
||||||
|
share/icons/application/*/actions/edit-clear-locationbar-ltr.png
|
||||||
|
share/icons/application/*/actions/edit-clear-locationbar-rtl.png
|
||||||
|
share/icons/application/*/actions/key-enter.png
|
||||||
|
share/icons/application/*/actions/password-generator.png
|
||||||
|
share/icons/application/*/actions/password-copy.png
|
||||||
|
share/icons/application/*/actions/password-show-*.png
|
||||||
|
share/icons/application/*/actions/system-search.png
|
||||||
|
share/icons/application/*/actions/username-copy.png
|
||||||
|
share/icons/application/*/actions/view-history.png
|
||||||
|
share/icons/application/*/apps/internet-web-browser.png
|
||||||
|
share/icons/application/*/apps/preferences-desktop-icons.png
|
||||||
|
share/icons/application/*/apps/utilities-terminal.png
|
||||||
|
share/icons/application/*/categories/preferences-other.png
|
||||||
|
share/icons/application/*/status/dialog-error.png
|
||||||
|
share/icons/application/*/status/dialog-information.png
|
||||||
|
share/icons/application/*/status/dialog-warning.png
|
||||||
|
share/icons/application/*/status/security-high.png
|
||||||
|
share/icons/svg/*.svgz
|
||||||
|
Copyright: 2007, Nuno Pinheiro <nuno@oxygen-icons.org>
|
||||||
|
2007, David Vignoni <david@icon-king.com>
|
||||||
|
2007, David Miller <miller@oxygen-icons.org>
|
||||||
|
2007, Johann Ollivier Lapeyre <johann@oxygen-icons.org>
|
||||||
|
2007, Kenneth Wimer <kwwii@bootsplash.org>
|
||||||
|
2007, Riccardo Iaconelli <riccardo@oxygen-icons.org>
|
||||||
|
License: LGPL-3+
|
||||||
|
Comment: from Oxygen icon theme (http://www.oxygen-icons.org/)
|
||||||
|
|
||||||
Files: src/streams/qtiocompressor.*, src/streams/QtIOCompressor, tests/modeltest.*
|
Files: share/icons/database/C62_Tux.png
|
||||||
|
share/icons/database/C63_Feather.png
|
||||||
|
share/icons/database/C64_Apple.png
|
||||||
|
share/icons/database/C67_Certificate.png
|
||||||
|
share/icons/database/C68_BlackBerry.png
|
||||||
|
Copyright: Mairin Duffy
|
||||||
|
Sarah Owens
|
||||||
|
James Birkett
|
||||||
|
Dominik Reichl
|
||||||
|
License: CC0
|
||||||
|
Comment: C62_Tux.png from https://openclipart.org/detail/103855
|
||||||
|
C63_Feather.png from http://openclipart.org/detail/122017
|
||||||
|
C64_Apple.png based on http://openclipart.org/detail/24319
|
||||||
|
C67_Certificate.png based on https://openclipart.org/detail/16729
|
||||||
|
C68_BlackBerry.png from https://openclipart.org/detail/4465
|
||||||
|
|
||||||
|
Files: share/icons/database/C65_W.png
|
||||||
|
share/icons/database/C66_Money.png
|
||||||
|
Copyright: none
|
||||||
|
License: public-domain
|
||||||
|
|
||||||
|
Files: src/streams/qtiocompressor.*
|
||||||
|
src/streams/QtIOCompressor
|
||||||
|
tests/modeltest.*
|
||||||
Copyright: 2009-2012, Nokia Corporation and/or its subsidiary(-ies)
|
Copyright: 2009-2012, Nokia Corporation and/or its subsidiary(-ies)
|
||||||
License: LGPL-2.1 or GPL-3
|
License: LGPL-2.1 or GPL-3
|
||||||
|
|
||||||
|
Files: cmake/GetGitRevisionDescription.cmake*
|
||||||
|
Copyright: 2009-2010, Iowa State University
|
||||||
|
License: Boost-1.0
|
||||||
|
|
||||||
|
Files: src/zxcvbn/zxcvbn.*
|
||||||
|
Copyright: 2015-2017, Tony Evans
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: src/http/qhttp/*
|
||||||
|
Copyright: 2014, Amir Zamani
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: src/gui/KMessageWidget.h
|
||||||
|
src/gui/KMessageWidget.cpp
|
||||||
|
Copyright: 2011 Aurélien Gâteau <agateau@kde.org>
|
||||||
|
2014 Dominik Haumann <dhaumann@kde.org>
|
||||||
|
License: LGPL-2.1
|
||||||
|
|
||||||
|
Files: share/macosx/dmg-background.tiff
|
||||||
|
Copyright: 2008-2014, Andrey Tarantsov
|
||||||
|
License: MIT
|
||||||
|
|||||||
80
Dockerfile
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# KeePassXC Linux Release Build Dockerfile
|
||||||
|
# Copyright (C) 2017-2018 KeePassXC team <https://keepassxc.org/>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
# version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
FROM ubuntu:14.04
|
||||||
|
|
||||||
|
ENV REBUILD_COUNTER=8
|
||||||
|
|
||||||
|
ENV QT5_VERSION=59
|
||||||
|
ENV QT5_PPA_VERSION=${QT5_VERSION}4
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get update -y \
|
||||||
|
&& apt-get -y install software-properties-common
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& add-apt-repository ppa:beineri/opt-qt${QT5_PPA_VERSION}-trusty \
|
||||||
|
&& add-apt-repository ppa:phoerious/keepassxc
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get update -y \
|
||||||
|
&& apt-get upgrade -y
|
||||||
|
|
||||||
|
# build and runtime dependencies
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get install -y \
|
||||||
|
cmake3 \
|
||||||
|
g++ \
|
||||||
|
git \
|
||||||
|
libgcrypt20-18-dev \
|
||||||
|
libargon2-0-dev \
|
||||||
|
libsodium-dev \
|
||||||
|
libcurl-no-gcrypt-dev \
|
||||||
|
qt${QT5_VERSION}base \
|
||||||
|
qt${QT5_VERSION}tools \
|
||||||
|
qt${QT5_VERSION}x11extras \
|
||||||
|
qt${QT5_VERSION}translations \
|
||||||
|
qt${QT5_VERSION}imageformats \
|
||||||
|
zlib1g-dev \
|
||||||
|
libxi-dev \
|
||||||
|
libxtst-dev \
|
||||||
|
mesa-common-dev \
|
||||||
|
libyubikey-dev \
|
||||||
|
libykpers-1-dev
|
||||||
|
|
||||||
|
ENV CMAKE_PREFIX_PATH="/opt/qt${QT5_VERSION}/lib/cmake"
|
||||||
|
ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
|
||||||
|
ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
|
||||||
|
ENV CPATH="${CMAKE_INCLUDE_PATH}"
|
||||||
|
ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/qt${QT5_VERSION}/lib"
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& echo "/opt/qt${QT5_VERSION}/lib" > /etc/ld.so.conf.d/qt${QT5_VERSION}.conf \
|
||||||
|
&& echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
|
||||||
|
|
||||||
|
# AppImage dependencies
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get install -y \
|
||||||
|
libfuse2 \
|
||||||
|
wget
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get autoremove --purge \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
VOLUME /keepassxc/src
|
||||||
|
VOLUME /keepassxc/out
|
||||||
|
WORKDIR /keepassxc
|
||||||
21
INSTALL
@@ -1,21 +0,0 @@
|
|||||||
Building:
|
|
||||||
=========
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
cmake .. [CMAKE PARAMETERS]
|
|
||||||
make [-jX]
|
|
||||||
|
|
||||||
Common cmake parameters:
|
|
||||||
========================
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr/local
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
|
||||||
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
|
||||||
-DWITH_GUI_TESTS=ON
|
|
||||||
|
|
||||||
Installing:
|
|
||||||
===========
|
|
||||||
make install [DESTDIR=X]
|
|
||||||
|
|
||||||
Run tests:
|
|
||||||
==========
|
|
||||||
make test [CTEST_OUTPUT_ON_FAILURE=1] [ARGS+=-jX] [ARGS+="-E testgui"]
|
|
||||||
141
INSTALL.md
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
Build and Install KeePassXC
|
||||||
|
=================
|
||||||
|
|
||||||
|
This document will guide you through the steps to build and install KeePassXC from source.
|
||||||
|
You can visit the online version of this document at the following link:
|
||||||
|
|
||||||
|
https://github.com/keepassxreboot/keepassx/wiki/Install-Instruction-from-Source
|
||||||
|
|
||||||
|
The [KeePassXC QuickStart](./docs/QUICKSTART.md) gets you started using KeePassXC on your
|
||||||
|
Windows, Mac, or Linux computer using the pre-built binaries.
|
||||||
|
|
||||||
|
Build Dependencies
|
||||||
|
==================
|
||||||
|
|
||||||
|
The following tools must exist within your PATH:
|
||||||
|
|
||||||
|
* make
|
||||||
|
* cmake (>= 2.8.12)
|
||||||
|
* g++ (>= 4.7) or clang++ (>= 3.0)
|
||||||
|
|
||||||
|
The following libraries are required:
|
||||||
|
|
||||||
|
* Qt 5 (>= 5.2): qtbase and qttools5
|
||||||
|
* libgcrypt (>= 1.6)
|
||||||
|
* zlib
|
||||||
|
* libmicrohttpd
|
||||||
|
* libxi, libxtst, qtx11extras (optional for auto-type on X11)
|
||||||
|
* libsodium (>= 1.0.12, optional for KeePassXC-Browser support)
|
||||||
|
* libargon2
|
||||||
|
|
||||||
|
|
||||||
|
Prepare the Building Environment
|
||||||
|
================================
|
||||||
|
|
||||||
|
* [Building Environment on Linux](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux)
|
||||||
|
* [Building Environment on Windows](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Windows)
|
||||||
|
* [Building Environment on MacOS](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-OS-X)
|
||||||
|
|
||||||
|
Build Steps
|
||||||
|
===========
|
||||||
|
|
||||||
|
To compile from source, open a **Terminal (on Linux/MacOS)** or a **MSYS2-MinGW shell (on Windows)**<br/>
|
||||||
|
**Note:** on Windows make sure you are using a **MINGW shell** by checking the label before the current path
|
||||||
|
|
||||||
|
First, download the KeePassXC [source tarball](https://keepassxc.org/download#source)
|
||||||
|
or check out the latest version from our [Git repository](https://github.com/keepassxreboot/keepassxc).
|
||||||
|
|
||||||
|
To clone the project from Git, `cd` to a suitable location and run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/keepassxreboot/keepassxc.git
|
||||||
|
```
|
||||||
|
|
||||||
|
This will clone the entire contents of the repository and check out the current `develop` branch.
|
||||||
|
|
||||||
|
To update the project from within the project's folder, you can run the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
Navigate to the directory where you have downloaded KeePassXC and type these commands:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd directory-where-sources-live
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DWITH_TESTS=OFF ...and other options - see below...
|
||||||
|
make
|
||||||
|
```
|
||||||
|
These steps place the compiled KeePassXC binary inside the `./build/src/` directory.
|
||||||
|
(Note the cmake notes/options below.)
|
||||||
|
|
||||||
|
**Cmake Notes:**
|
||||||
|
|
||||||
|
* Common cmake parameters
|
||||||
|
|
||||||
|
```
|
||||||
|
-DCMAKE_INSTALL_PREFIX=/usr/local
|
||||||
|
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||||
|
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
||||||
|
-DWITH_GUI_TESTS=ON
|
||||||
|
```
|
||||||
|
|
||||||
|
* cmake accepts the following options:
|
||||||
|
|
||||||
|
```
|
||||||
|
-DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
|
||||||
|
-DWITH_XC_HTTP=[ON|OFF] Enable/Disable KeePassHTTP and custom icon downloads (default: OFF)
|
||||||
|
-DWITH_XC_YUBIKEY=[ON|OFF] Enable/Disable YubiKey HMAC-SHA1 authentication support (default: OFF)
|
||||||
|
-DWITH_XC_BROWSER=[ON|OFF] Enable/Disable KeePassXC-Browser extension support (default: OFF)
|
||||||
|
|
||||||
|
-DWITH_TESTS=[ON|OFF] Enable/Disable building of unit tests (default: ON)
|
||||||
|
-DWITH_GUI_TESTS=[ON|OFF] Enable/Disable building of GUI tests (default: OFF)
|
||||||
|
-DWITH_DEV_BUILD=[ON|OFF] Enable/Disable deprecated method warnings (default: OFF)
|
||||||
|
-DWITH_ASAN=[ON|OFF] Enable/Disable address sanitizer checks (Linux / macOS only) (default: OFF)
|
||||||
|
-DWITH_COVERAGE=[ON|OFF] Enable/Disable coverage tests (GCC only) (default: OFF)
|
||||||
|
```
|
||||||
|
|
||||||
|
* If you are on MacOS you must add this parameter to **Cmake**, with the Qt version you have installed<br/> `-DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.6.2/lib/cmake/`
|
||||||
|
|
||||||
|
:exclamation: When building with ASan support on macOS, you need to use `export ASAN_OPTIONS=detect_leaks=0` before running the tests (no LSan support in macOS).
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
After you have successfully built KeePassXC, install the binary by executing the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
You can specify the destination dir with
|
||||||
|
```
|
||||||
|
DESTDIR=X
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Packaging
|
||||||
|
=========
|
||||||
|
|
||||||
|
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..)
|
||||||
|
```
|
||||||
|
make package
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
You can perform test on the executable
|
||||||
|
```
|
||||||
|
make test
|
||||||
|
```
|
||||||
|
|
||||||
|
Common parameters:
|
||||||
|
```
|
||||||
|
CTEST_OUTPUT_ON_FAILURE=1
|
||||||
|
ARGS+=-jX
|
||||||
|
ARGS+="-E testgui"
|
||||||
|
```
|
||||||
23
LICENSE.BOOST-1.0
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Boost Software License - Version 1.0 - August 17th, 2003
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person or organization
|
||||||
|
obtaining a copy of the software and accompanying documentation covered by
|
||||||
|
this license (the "Software") to use, reproduce, display, distribute,
|
||||||
|
execute, and transmit the Software, and to prepare derivative works of the
|
||||||
|
Software, and to permit third-parties to whom the Software is furnished to
|
||||||
|
do so, all subject to the following:
|
||||||
|
|
||||||
|
The copyright notices in the Software and this entire statement, including
|
||||||
|
the above license grant, this restriction and the following disclaimer,
|
||||||
|
must be included in all copies of the Software, in whole or in part, and
|
||||||
|
all derivative works of the Software, unless such copies or derivative
|
||||||
|
works are solely in the form of machine-executable object code generated by
|
||||||
|
a source language processor.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||||
|
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||||
|
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||||
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
128
LICENSE.CC0
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
Creative Commons CC0 1.0 Universal
|
||||||
|
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||||
|
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||||
|
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
|
||||||
|
ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE
|
||||||
|
USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND
|
||||||
|
DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT
|
||||||
|
OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||||
|
and subsequent owner(s) (each and all, an "owner") of an original work
|
||||||
|
of authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for
|
||||||
|
the purpose of contributing to a commons of creative, cultural and
|
||||||
|
scientific works ("Commons") that the public can reliably and without
|
||||||
|
fear of later claims of infringement build upon, modify, incorporate in
|
||||||
|
other works, reuse and redistribute as freely as possible in any form
|
||||||
|
whatsoever and for any purposes, including without limitation commercial
|
||||||
|
purposes. These owners may contribute to the Commons to promote the
|
||||||
|
ideal of a free culture and the further production of creative, cultural
|
||||||
|
and scientific works, or to gain reputation or greater distribution for
|
||||||
|
their Work in part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any
|
||||||
|
expectation of additional consideration or compensation, the person
|
||||||
|
associating CC0 with a Work (the "Affirmer"), to the extent that he or
|
||||||
|
she is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||||
|
elects to apply CC0 to the Work and publicly distribute the Work under
|
||||||
|
its terms, with knowledge of his or her Copyright and Related Rights in
|
||||||
|
the Work and the meaning and intended legal effect of CC0 on those
|
||||||
|
rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not
|
||||||
|
limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display,
|
||||||
|
communicate, and translate a Work;
|
||||||
|
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or
|
||||||
|
likeness depicted in a Work;
|
||||||
|
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of
|
||||||
|
data in a Work;
|
||||||
|
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of
|
||||||
|
the European Parliament and of the Council of 11 March 1996 on the legal
|
||||||
|
protection of databases, and under any national implementation thereof,
|
||||||
|
including any amended or successor version of such directive); and
|
||||||
|
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the
|
||||||
|
world based on applicable law or treaty, and any national
|
||||||
|
implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||||
|
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||||
|
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||||
|
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||||
|
of action, whether now known or unknown (including existing as well as
|
||||||
|
future claims and causes of action), in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or
|
||||||
|
future medium and for any number of copies, and (iv) for any purpose
|
||||||
|
whatsoever, including without limitation commercial, advertising or
|
||||||
|
promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
|
||||||
|
benefit of each member of the public at large and to the detriment of
|
||||||
|
Affirmer's heirs and successors, fully intending that such Waiver shall
|
||||||
|
not be subject to revocation, rescission, cancellation, termination, or
|
||||||
|
any other legal or equitable action to disrupt the quiet enjoyment of
|
||||||
|
the Work by the public as contemplated by Affirmer's express Statement
|
||||||
|
of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||||
|
be judged legally invalid or ineffective under applicable law, then the
|
||||||
|
Waiver shall be preserved to the maximum extent permitted taking into
|
||||||
|
account Affirmer's express Statement of Purpose. In addition, to the
|
||||||
|
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||||
|
person a royalty-free, non transferable, non sublicensable, non
|
||||||
|
exclusive, irrevocable and unconditional license to exercise Affirmer's
|
||||||
|
Copyright and Related Rights in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or
|
||||||
|
future medium and for any number of copies, and (iv) for any purpose
|
||||||
|
whatsoever, including without limitation commercial, advertising or
|
||||||
|
promotional purposes (the "License"). The License shall be deemed
|
||||||
|
effective as of the date CC0 was applied by Affirmer to the Work. Should
|
||||||
|
any part of the License for any reason be judged legally invalid or
|
||||||
|
ineffective under applicable law, such partial invalidity or
|
||||||
|
ineffectiveness shall not invalidate the remainder of the License, and
|
||||||
|
in such case Affirmer hereby affirms that he or she will not (i)
|
||||||
|
exercise any of his or her remaining Copyright and Related Rights in the
|
||||||
|
Work or (ii) assert any associated claims and causes of action with
|
||||||
|
respect to the Work, in either case contrary to Affirmer's express
|
||||||
|
Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||||
|
surrendered, licensed or otherwise affected by this document.
|
||||||
|
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or
|
||||||
|
warranties of any kind concerning the Work, express, implied, statutory
|
||||||
|
or otherwise, including without limitation warranties of title,
|
||||||
|
merchantability, fitness for a particular purpose, non infringement, or
|
||||||
|
the absence of latent or other defects, accuracy, or the present or
|
||||||
|
absence of errors, whether or not discoverable, all to the greatest
|
||||||
|
extent permissible under applicable law.
|
||||||
|
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other
|
||||||
|
persons that may apply to the Work or any use thereof, including without
|
||||||
|
limitation any person's Copyright and Related Rights in the Work.
|
||||||
|
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||||
|
consents, permissions or other rights required for any use of the Work.
|
||||||
|
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||||
|
party to this document and has no duty or obligation with respect to
|
||||||
|
this CC0 or use of the Work.
|
||||||
165
LICENSE.LGPL-3
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
||||||
19
LICENSE.MIT
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
68
README.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# <img src="https://keepassxc.org/logo.png" width="40" height="40"/> KeePassXC
|
||||||
|
[/statusIcon?guest=1)](https://ci.keepassxc.org/viewType.html?buildTypeId=KeepassXC_TeamCityCi&guest=1) [](https://coveralls.io/github/keepassxreboot/keepassxc)
|
||||||
|
|
||||||
|
## About KeePassXC
|
||||||
|
[KeePassXC](https://keepassxc.org) is a cross-platform community fork of
|
||||||
|
[KeePassX](https://www.keepassx.org/).
|
||||||
|
Our goal is to extend and improve it with new features and bugfixes
|
||||||
|
to provide a feature-rich, fully cross-platform and modern
|
||||||
|
open-source password manager.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
The [KeePassXC QuickStart](./docs/QUICKSTART.md) gets you started using
|
||||||
|
KeePassXC on your Windows, Mac, or Linux computer using pre-compiled binaries
|
||||||
|
from the [downloads page](https://keepassxc.org/download).
|
||||||
|
|
||||||
|
Additionally, individual Linux distributions may ship their own versions,
|
||||||
|
so please check out your distribution's package list to see if KeePassXC is available.
|
||||||
|
|
||||||
|
## Additional features compared to KeePassX
|
||||||
|
- Auto-Type on all three major platforms (Linux, Windows, macOS)
|
||||||
|
- Twofish encryption
|
||||||
|
- YubiKey challenge-response support
|
||||||
|
- TOTP generation
|
||||||
|
- CSV import
|
||||||
|
- Command line interface
|
||||||
|
- DEP and ASLR hardening
|
||||||
|
- Stand-alone password and passphrase generator
|
||||||
|
- Password strength meter
|
||||||
|
- Using website favicons as entry icons
|
||||||
|
- Merging of databases
|
||||||
|
- Automatic reload when the database changed on disk
|
||||||
|
- Browser integration with KeePassHTTP-Connector for
|
||||||
|
[Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepasshttp-connector/) and
|
||||||
|
[Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepasshttp-connector/dafgdjggglmmknipkhngniifhplpcldb), and
|
||||||
|
[passafari](https://github.com/mmichaa/passafari.safariextension/) in Safari. [[See note about KeePassHTTP]](#Note_about_KeePassHTTP)
|
||||||
|
- Browser integration with KeePassXC-Browser using [native messaging](https://developer.chrome.com/extensions/nativeMessaging) for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) and [Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk)
|
||||||
|
- Many bug fixes
|
||||||
|
|
||||||
|
For a full list of features and changes, read the [CHANGELOG](CHANGELOG) document.
|
||||||
|
|
||||||
|
## Building KeePassXC
|
||||||
|
|
||||||
|
Detailed instructions are available in the [Build and Install](./INSTALL.md)
|
||||||
|
page or on the [Wiki page](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC).
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
We are always looking for suggestions how to improve our application.
|
||||||
|
If you find any bugs or have an idea for a new feature, please let us know by
|
||||||
|
opening a report in our [issue tracker](https://github.com/keepassxreboot/keepassxc/issues)
|
||||||
|
on GitHub or join us on IRC on freenode channels #keepassxc or #keepassxc-dev.
|
||||||
|
|
||||||
|
You can of course also directly contribute your own code. We are happy to accept your pull requests.
|
||||||
|
|
||||||
|
Please read the [CONTRIBUTING document](.github/CONTRIBUTING.md) for further information.
|
||||||
|
|
||||||
|
### Note about KeePassHTTP
|
||||||
|
The KeePassHTTP protocol is not a highly secure protocol.
|
||||||
|
It has a certain flaw which could allow an attacker to decrypt your passwords
|
||||||
|
should they manage to impersonate the web browser extension from a remote address.
|
||||||
|
<!--intercept communication between a KeePassHTTP server
|
||||||
|
and PassIFox/chromeIPass over a network connection -->
|
||||||
|
(See [here](https://github.com/pfn/keepasshttp/issues/258) and [here](https://github.com/keepassxreboot/keepassxc/issues/147)).
|
||||||
|
|
||||||
|
To minimize the risk, KeePassXC strictly limits communication between itself
|
||||||
|
and the browser plugin to your local computer (localhost).
|
||||||
|
This makes your passwords quite safe,
|
||||||
|
but as with all open source software, use it at your own risk!
|
||||||
73
ci/trusty/Dockerfile
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# KeePassXC Linux Release Build Dockerfile
|
||||||
|
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
# version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# TIP: check this Dockerfile using this online tool: https://www.fromlatest.io
|
||||||
|
|
||||||
|
FROM ubuntu:14.04
|
||||||
|
|
||||||
|
ENV REBUILD_COUNTER=4
|
||||||
|
|
||||||
|
ENV QT5_VERSION=53
|
||||||
|
ENV QT5_PPA_VERSION=${QT5_VERSION}2
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get update -y \
|
||||||
|
&& apt-get -y install software-properties-common
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& add-apt-repository ppa:beineri/opt-qt${QT5_PPA_VERSION}-trusty \
|
||||||
|
&& add-apt-repository ppa:phoerious/keepassxc
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get -y update \
|
||||||
|
&& apt-get -y --no-install-recommends install \
|
||||||
|
build-essential \
|
||||||
|
clang-3.6 \
|
||||||
|
libclang-common-3.6-dev \
|
||||||
|
clang-format-3.6 \
|
||||||
|
cmake3 \
|
||||||
|
make \
|
||||||
|
libgcrypt20-18-dev \
|
||||||
|
libargon2-0-dev \
|
||||||
|
libsodium-dev \
|
||||||
|
libcurl-no-gcrypt-dev \
|
||||||
|
qt${QT5_VERSION}base \
|
||||||
|
qt${QT5_VERSION}tools \
|
||||||
|
qt${QT5_VERSION}x11extras \
|
||||||
|
qt${QT5_VERSION}translations \
|
||||||
|
zlib1g-dev \
|
||||||
|
libyubikey-dev \
|
||||||
|
libykpers-1-dev \
|
||||||
|
libxi-dev \
|
||||||
|
libxtst-dev \
|
||||||
|
xvfb
|
||||||
|
|
||||||
|
ENV CMAKE_PREFIX_PATH="/opt/qt${QT5_VERSION}/lib/cmake"
|
||||||
|
ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
|
||||||
|
ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
|
||||||
|
ENV CPATH="${CMAKE_INCLUDE_PATH}"
|
||||||
|
ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/qt${QT5_VERSION}/lib"
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& echo "/opt/qt${QT5_VERSION}/lib" > /etc/ld.so.conf.d/qt${QT5_VERSION}.conf \
|
||||||
|
&& echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& apt-get autoremove --purge \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
VOLUME ["/keepassxc"]
|
||||||
|
WORKDIR /keepassxc
|
||||||
197
cmake/CodeCoverage.cmake
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
# Copyright (c) 2012 - 2015, Lars Bilke
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
# are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
# list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer in the documentation
|
||||||
|
# and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors
|
||||||
|
# may be used to endorse or promote products derived from this software without
|
||||||
|
# specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# 2012-01-31, Lars Bilke
|
||||||
|
# - Enable Code Coverage
|
||||||
|
#
|
||||||
|
# 2013-09-17, Joakim Söderberg
|
||||||
|
# - Added support for Clang.
|
||||||
|
# - Some additional usage instructions.
|
||||||
|
#
|
||||||
|
# USAGE:
|
||||||
|
|
||||||
|
# 0. (Mac only) If you use Xcode 5.1 make sure to patch geninfo as described here:
|
||||||
|
# http://stackoverflow.com/a/22404544/80480
|
||||||
|
#
|
||||||
|
# 1. Copy this file into your cmake modules path.
|
||||||
|
#
|
||||||
|
# 2. Add the following line to your CMakeLists.txt:
|
||||||
|
# INCLUDE(CodeCoverage)
|
||||||
|
#
|
||||||
|
# 3. Set compiler flags to turn off optimization and enable coverage:
|
||||||
|
# SET(CMAKE_CXX_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
|
||||||
|
# SET(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
|
||||||
|
#
|
||||||
|
# 3. Use the function SETUP_TARGET_FOR_COVERAGE to create a custom make target
|
||||||
|
# which runs your test executable and produces a lcov code coverage report:
|
||||||
|
# Example:
|
||||||
|
# SETUP_TARGET_FOR_COVERAGE(
|
||||||
|
# my_coverage_target # Name for custom target.
|
||||||
|
# test_driver # Name of the test driver executable that runs the tests.
|
||||||
|
# # NOTE! This should always have a ZERO as exit code
|
||||||
|
# # otherwise the coverage generation will not complete.
|
||||||
|
# coverage # Name of output directory.
|
||||||
|
# )
|
||||||
|
#
|
||||||
|
# 4. Build a Debug build:
|
||||||
|
# cmake -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
|
# make
|
||||||
|
# make my_coverage_target
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
# Check prereqs
|
||||||
|
FIND_PROGRAM( GCOV_PATH gcov )
|
||||||
|
FIND_PROGRAM( LCOV_PATH lcov )
|
||||||
|
FIND_PROGRAM( GENHTML_PATH genhtml )
|
||||||
|
FIND_PROGRAM( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/tests)
|
||||||
|
|
||||||
|
IF(NOT GCOV_PATH)
|
||||||
|
MESSAGE(FATAL_ERROR "gcov not found! Aborting...")
|
||||||
|
ENDIF() # NOT GCOV_PATH
|
||||||
|
|
||||||
|
IF("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
|
||||||
|
IF("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 3)
|
||||||
|
MESSAGE(FATAL_ERROR "Clang version must be 3.0.0 or greater! Aborting...")
|
||||||
|
ENDIF()
|
||||||
|
ELSEIF(NOT CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
MESSAGE(FATAL_ERROR "Compiler is not GNU gcc! Aborting...")
|
||||||
|
ENDIF() # CHECK VALID COMPILER
|
||||||
|
|
||||||
|
SET(CMAKE_CXX_FLAGS_COVERAGE
|
||||||
|
"-g -O0 --coverage -fprofile-arcs -ftest-coverage"
|
||||||
|
CACHE STRING "Flags used by the C++ compiler during coverage builds."
|
||||||
|
FORCE )
|
||||||
|
SET(CMAKE_C_FLAGS_COVERAGE
|
||||||
|
"-g -O0 --coverage -fprofile-arcs -ftest-coverage"
|
||||||
|
CACHE STRING "Flags used by the C compiler during coverage builds."
|
||||||
|
FORCE )
|
||||||
|
SET(CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||||
|
""
|
||||||
|
CACHE STRING "Flags used for linking binaries during coverage builds."
|
||||||
|
FORCE )
|
||||||
|
SET(CMAKE_SHARED_LINKER_FLAGS_COVERAGE
|
||||||
|
""
|
||||||
|
CACHE STRING "Flags used by the shared libraries linker during coverage builds."
|
||||||
|
FORCE )
|
||||||
|
MARK_AS_ADVANCED(
|
||||||
|
CMAKE_CXX_FLAGS_COVERAGE
|
||||||
|
CMAKE_C_FLAGS_COVERAGE
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_COVERAGE )
|
||||||
|
|
||||||
|
IF ( NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "Coverage"))
|
||||||
|
MESSAGE( WARNING "Code coverage results with an optimized (non-Debug) build may be misleading" )
|
||||||
|
ENDIF() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug"
|
||||||
|
|
||||||
|
|
||||||
|
# Param _targetname The name of new the custom make target
|
||||||
|
# Param _testrunner The name of the target which runs the tests.
|
||||||
|
# MUST return ZERO always, even on errors.
|
||||||
|
# If not, no coverage report will be created!
|
||||||
|
# Param _outputname lcov output is generated as _outputname.info
|
||||||
|
# HTML report is generated in _outputname/index.html
|
||||||
|
# Optional fourth parameter is passed as arguments to _testrunner
|
||||||
|
# Pass them in list form, e.g.: "-j;2" for -j 2
|
||||||
|
FUNCTION(SETUP_TARGET_FOR_COVERAGE _targetname _testrunner _outputname)
|
||||||
|
|
||||||
|
IF(NOT LCOV_PATH)
|
||||||
|
MESSAGE(FATAL_ERROR "lcov not found! Aborting...")
|
||||||
|
ENDIF() # NOT LCOV_PATH
|
||||||
|
|
||||||
|
IF(NOT GENHTML_PATH)
|
||||||
|
MESSAGE(FATAL_ERROR "genhtml not found! Aborting...")
|
||||||
|
ENDIF() # NOT GENHTML_PATH
|
||||||
|
|
||||||
|
SET(coverage_info "${CMAKE_BINARY_DIR}/${_outputname}.info")
|
||||||
|
SET(coverage_cleaned "${coverage_info}.cleaned")
|
||||||
|
|
||||||
|
SEPARATE_ARGUMENTS(test_command UNIX_COMMAND "${_testrunner}")
|
||||||
|
|
||||||
|
# Setup target
|
||||||
|
ADD_CUSTOM_TARGET(${_targetname}
|
||||||
|
|
||||||
|
# Cleanup lcov
|
||||||
|
${LCOV_PATH} --directory . --zerocounters
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
COMMAND ${test_command} ${ARGV3}
|
||||||
|
|
||||||
|
# Capturing lcov counters and generating report
|
||||||
|
COMMAND ${LCOV_PATH} --directory . --capture --output-file ${coverage_info}
|
||||||
|
COMMAND ${LCOV_PATH} --remove ${coverage_info} 'tests/*' '/usr/*' --output-file ${coverage_cleaned}
|
||||||
|
COMMAND ${GENHTML_PATH} -o ${_outputname} ${coverage_cleaned}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E remove ${coverage_info} ${coverage_cleaned}
|
||||||
|
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report."
|
||||||
|
)
|
||||||
|
|
||||||
|
# Show info where to find the report
|
||||||
|
ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD
|
||||||
|
COMMAND ;
|
||||||
|
COMMENT "Open ./${_outputname}/index.html in your browser to view the coverage report."
|
||||||
|
)
|
||||||
|
|
||||||
|
ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE
|
||||||
|
|
||||||
|
# Param _targetname The name of new the custom make target
|
||||||
|
# Param _testrunner The name of the target which runs the tests
|
||||||
|
# Param _outputname cobertura output is generated as _outputname.xml
|
||||||
|
# Optional fourth parameter is passed as arguments to _testrunner
|
||||||
|
# Pass them in list form, e.g.: "-j;2" for -j 2
|
||||||
|
FUNCTION(SETUP_TARGET_FOR_COVERAGE_COBERTURA _targetname _testrunner _outputname)
|
||||||
|
|
||||||
|
IF(NOT PYTHON_EXECUTABLE)
|
||||||
|
MESSAGE(FATAL_ERROR "Python not found! Aborting...")
|
||||||
|
ENDIF() # NOT PYTHON_EXECUTABLE
|
||||||
|
|
||||||
|
IF(NOT GCOVR_PATH)
|
||||||
|
MESSAGE(FATAL_ERROR "gcovr not found! Aborting...")
|
||||||
|
ENDIF() # NOT GCOVR_PATH
|
||||||
|
|
||||||
|
ADD_CUSTOM_TARGET(${_targetname}
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
${_testrunner} ${ARGV3}
|
||||||
|
|
||||||
|
# Running gcovr
|
||||||
|
COMMAND ${GCOVR_PATH} -x -r ${CMAKE_SOURCE_DIR} -e '${CMAKE_SOURCE_DIR}/tests/' -o ${_outputname}.xml
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Running gcovr to produce Cobertura code coverage report."
|
||||||
|
)
|
||||||
|
|
||||||
|
# Show info where to find the report
|
||||||
|
ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD
|
||||||
|
COMMAND ;
|
||||||
|
COMMENT "Cobertura code coverage report saved in ${_outputname}.xml."
|
||||||
|
)
|
||||||
|
|
||||||
|
ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE_COBERTURA
|
||||||
36
cmake/FindArgon2.cmake
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Copyright (C) 2017 KeePassXC Team
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
# version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
find_path(ARGON2_INCLUDE_DIR argon2.h)
|
||||||
|
if (MINGW)
|
||||||
|
# find static library on Windows, and redefine used symbols to
|
||||||
|
# avoid definition name conflicts with libsodium
|
||||||
|
find_library(ARGON2_SYS_LIBRARIES libargon2.a)
|
||||||
|
message(STATUS "Patching libargon2...\n")
|
||||||
|
execute_process(COMMAND objcopy
|
||||||
|
--redefine-sym argon2_hash=libargon2_argon2_hash
|
||||||
|
--redefine-sym _argon2_hash=_libargon2_argon2_hash
|
||||||
|
--redefine-sym argon2_error_message=libargon2_argon2_error_message
|
||||||
|
--redefine-sym _argon2_error_message=_libargon2_argon2_error_message
|
||||||
|
${ARGON2_SYS_LIBRARIES} ${CMAKE_BINARY_DIR}/libargon2_patched.a
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
find_library(ARGON2_LIBRARIES libargon2_patched.a PATHS ${CMAKE_BINARY_DIR} NO_DEFAULT_PATH)
|
||||||
|
else()
|
||||||
|
find_library(ARGON2_LIBRARIES argon2)
|
||||||
|
endif()
|
||||||
|
mark_as_advanced(ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(Argon2 DEFAULT_MSG ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
|
||||||
@@ -17,7 +17,15 @@ find_path(GCRYPT_INCLUDE_DIR gcrypt.h)
|
|||||||
|
|
||||||
find_library(GCRYPT_LIBRARIES gcrypt)
|
find_library(GCRYPT_LIBRARIES gcrypt)
|
||||||
|
|
||||||
|
mark_as_advanced(GCRYPT_LIBRARIES GCRYPT_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(GCRYPT_INCLUDE_DIR AND EXISTS "${GCRYPT_INCLUDE_DIR}/gcrypt.h")
|
||||||
|
file(STRINGS "${GCRYPT_INCLUDE_DIR}/gcrypt.h" GCRYPT_H REGEX "^#define GCRYPT_VERSION \"[^\"]*\"$")
|
||||||
|
string(REGEX REPLACE "^.*GCRYPT_VERSION \"([0-9]+).*$" "\\1" GCRYPT_VERSION_MAJOR "${GCRYPT_H}")
|
||||||
|
string(REGEX REPLACE "^.*GCRYPT_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" GCRYPT_VERSION_MINOR "${GCRYPT_H}")
|
||||||
|
string(REGEX REPLACE "^.*GCRYPT_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" GCRYPT_VERSION_PATCH "${GCRYPT_H}")
|
||||||
|
set(GCRYPT_VERSION_STRING "${GCRYPT_VERSION_MAJOR}.${GCRYPT_VERSION_MINOR}.${GCRYPT_VERSION_PATCH}")
|
||||||
|
endif()
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(Gcrypt DEFAULT_MSG GCRYPT_LIBRARIES GCRYPT_INCLUDE_DIR)
|
find_package_handle_standard_args(Gcrypt DEFAULT_MSG GCRYPT_LIBRARIES GCRYPT_INCLUDE_DIR)
|
||||||
|
|
||||||
mark_as_advanced(GCRYPT_LIBRARIES GCRYPT_INCLUDE_DIR)
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
|
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -13,7 +13,11 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
include_directories(../src)
|
find_path(GPGERROR_INCLUDE_DIR gpg-error.h)
|
||||||
|
find_library(GPGERROR_LIBRARIES gpg-error)
|
||||||
|
|
||||||
add_executable( kdbx-extract kdbx-extract.cpp )
|
mark_as_advanced(GPGERROR_LIBRARIES GPGERROR_INCLUDE_DIR)
|
||||||
target_link_libraries( kdbx-extract keepassx_core ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${GCRYPT_LIBRARIES} ${ZLIB_LIBRARIES} )
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
include_directories(${GPGERROR_INCLUDE_DIR})
|
||||||
|
find_package_handle_standard_args(LibGPGError DEFAULT_MSG GPGERROR_LIBRARIES GPGERROR_INCLUDE_DIR)
|
||||||
27
cmake/FindYubiKey.cmake
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
# version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
find_path(YUBIKEY_CORE_INCLUDE_DIR yubikey.h)
|
||||||
|
find_path(YUBIKEY_PERS_INCLUDE_DIR ykcore.h PATH_SUFFIXES ykpers-1)
|
||||||
|
set(YUBIKEY_INCLUDE_DIRS ${YUBIKEY_CORE_INCLUDE_DIR} ${YUBIKEY_PERS_INCLUDE_DIR})
|
||||||
|
|
||||||
|
find_library(YUBIKEY_CORE_LIBRARY NAMES yubikey.dll libyubikey.so yubikey)
|
||||||
|
find_library(YUBIKEY_PERS_LIBRARY NAMES ykpers-1.dll libykpers-1.so ykpers-1)
|
||||||
|
set(YUBIKEY_LIBRARIES ${YUBIKEY_CORE_LIBRARY} ${YUBIKEY_PERS_LIBRARY})
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(YubiKey DEFAULT_MSG YUBIKEY_LIBRARIES YUBIKEY_INCLUDE_DIRS)
|
||||||
|
|
||||||
|
mark_as_advanced(YUBIKEY_LIBRARIES YUBIKEY_INCLUDE_DIRS)
|
||||||
267
cmake/Findsodium.cmake
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
# Written in 2016 by Henrik Steffen Gaßmann <henrik@gassmann.onl>
|
||||||
|
#
|
||||||
|
# To the extent possible under law, the author(s) have dedicated all
|
||||||
|
# copyright and related and neighboring rights to this software to the
|
||||||
|
# public domain worldwide. This software is distributed without any warranty.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the CC0 Public Domain Dedication
|
||||||
|
# along with this software. If not, see
|
||||||
|
#
|
||||||
|
# http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
#
|
||||||
|
########################################################################
|
||||||
|
# Tries to find the local libsodium installation.
|
||||||
|
#
|
||||||
|
# On Windows the sodium_DIR environment variable is used as a default
|
||||||
|
# hint which can be overridden by setting the corresponding cmake variable.
|
||||||
|
#
|
||||||
|
# Once done the following variables will be defined:
|
||||||
|
#
|
||||||
|
# sodium_FOUND
|
||||||
|
# sodium_INCLUDE_DIR
|
||||||
|
# sodium_LIBRARY_DEBUG
|
||||||
|
# sodium_LIBRARY_RELEASE
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Furthermore an imported "sodium" target is created.
|
||||||
|
#
|
||||||
|
|
||||||
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU"
|
||||||
|
OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||||
|
set(_GCC_COMPATIBLE 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# static library option
|
||||||
|
option(sodium_USE_STATIC_LIBS "enable to statically link against sodium")
|
||||||
|
if(NOT (sodium_USE_STATIC_LIBS EQUAL sodium_USE_STATIC_LIBS_LAST))
|
||||||
|
unset(sodium_LIBRARY CACHE)
|
||||||
|
unset(sodium_LIBRARY_DEBUG CACHE)
|
||||||
|
unset(sodium_LIBRARY_RELEASE CACHE)
|
||||||
|
unset(sodium_DLL_DEBUG CACHE)
|
||||||
|
unset(sodium_DLL_RELEASE CACHE)
|
||||||
|
set(sodium_USE_STATIC_LIBS_LAST ${sodium_USE_STATIC_LIBS} CACHE INTERNAL "internal change tracking variable")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# UNIX
|
||||||
|
if (UNIX)
|
||||||
|
# import pkg-config
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if (PKG_CONFIG_FOUND)
|
||||||
|
pkg_check_modules(sodium_PKG QUIET libsodium)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(sodium_USE_STATIC_LIBS)
|
||||||
|
set(XPREFIX sodium_PKG_STATIC)
|
||||||
|
else()
|
||||||
|
set(XPREFIX sodium_PKG)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(sodium_INCLUDE_DIR sodium.h
|
||||||
|
HINTS ${${XPREFIX}_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
find_library(sodium_LIBRARY_DEBUG NAMES ${${XPREFIX}_LIBRARIES} sodium
|
||||||
|
HINTS ${${XPREFIX}_LIBRARY_DIRS}
|
||||||
|
)
|
||||||
|
find_library(sodium_LIBRARY_RELEASE NAMES ${${XPREFIX}_LIBRARIES} sodium
|
||||||
|
HINTS ${${XPREFIX}_LIBRARY_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Windows
|
||||||
|
elseif (WIN32)
|
||||||
|
set(sodium_DIR "$ENV{sodium_DIR}" CACHE FILEPATH "sodium install directory")
|
||||||
|
mark_as_advanced(sodium_DIR)
|
||||||
|
|
||||||
|
find_path(sodium_INCLUDE_DIR sodium.h
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES include
|
||||||
|
)
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
# detect target architecture
|
||||||
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arch.c" [=[
|
||||||
|
#if defined _M_IX86
|
||||||
|
#error ARCH_VALUE x86_32
|
||||||
|
#elif defined _M_X64
|
||||||
|
#error ARCH_VALUE x86_64
|
||||||
|
#endif
|
||||||
|
#error ARCH_VALUE unknown
|
||||||
|
]=])
|
||||||
|
try_compile(_UNUSED_VAR "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/arch.c"
|
||||||
|
OUTPUT_VARIABLE _COMPILATION_LOG
|
||||||
|
)
|
||||||
|
string(REGEX REPLACE ".*ARCH_VALUE ([a-zA-Z0-9_]+).*" "\\1" _TARGET_ARCH "${_COMPILATION_LOG}")
|
||||||
|
|
||||||
|
# construct library path
|
||||||
|
if (_TARGET_ARCH STREQUAL "x86_32")
|
||||||
|
string(APPEND _PLATFORM_PATH "Win32")
|
||||||
|
elseif(_TARGET_ARCH STREQUAL "x86_64")
|
||||||
|
string(APPEND _PLATFORM_PATH "x64")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "the ${_TARGET_ARCH} architecture is not supported by Findsodium.cmake.")
|
||||||
|
endif()
|
||||||
|
string(APPEND _PLATFORM_PATH "/$$CONFIG$$")
|
||||||
|
|
||||||
|
if (MSVC_VERSION LESS 1900)
|
||||||
|
math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 60")
|
||||||
|
else()
|
||||||
|
math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 50")
|
||||||
|
endif()
|
||||||
|
string(APPEND _PLATFORM_PATH "/v${_VS_VERSION}")
|
||||||
|
|
||||||
|
if (sodium_USE_STATIC_LIBS)
|
||||||
|
string(APPEND _PLATFORM_PATH "/static")
|
||||||
|
else()
|
||||||
|
string(APPEND _PLATFORM_PATH "/dynamic")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REPLACE "$$CONFIG$$" "Debug" _DEBUG_PATH_SUFFIX "${_PLATFORM_PATH}")
|
||||||
|
string(REPLACE "$$CONFIG$$" "Release" _RELEASE_PATH_SUFFIX "${_PLATFORM_PATH}")
|
||||||
|
|
||||||
|
find_library(sodium_LIBRARY_DEBUG libsodium.lib
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}
|
||||||
|
)
|
||||||
|
find_library(sodium_LIBRARY_RELEASE libsodium.lib
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}
|
||||||
|
)
|
||||||
|
if (NOT sodium_USE_STATIC_LIBS)
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
|
||||||
|
find_library(sodium_DLL_DEBUG libsodium
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}
|
||||||
|
)
|
||||||
|
find_library(sodium_DLL_RELEASE libsodium
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
elseif(_GCC_COMPATIBLE)
|
||||||
|
if (sodium_USE_STATIC_LIBS)
|
||||||
|
find_library(sodium_LIBRARY_DEBUG libsodium.a
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES lib
|
||||||
|
)
|
||||||
|
find_library(sodium_LIBRARY_RELEASE libsodium.a
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES lib
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_library(sodium_LIBRARY_DEBUG libsodium.dll.a
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES lib
|
||||||
|
)
|
||||||
|
find_library(sodium_LIBRARY_RELEASE libsodium.dll.a
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES lib
|
||||||
|
)
|
||||||
|
|
||||||
|
file(GLOB _DLL
|
||||||
|
LIST_DIRECTORIES false
|
||||||
|
RELATIVE "${sodium_DIR}/bin"
|
||||||
|
"${sodium_DIR}/bin/libsodium*.dll"
|
||||||
|
)
|
||||||
|
find_library(sodium_DLL_DEBUG ${_DLL} libsodium
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES bin
|
||||||
|
)
|
||||||
|
find_library(sodium_DLL_RELEASE ${_DLL} libsodium
|
||||||
|
HINTS ${sodium_DIR}
|
||||||
|
PATH_SUFFIXES bin
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "this platform is not supported by FindSodium.cmake")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# unsupported
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "this platform is not supported by FindSodium.cmake")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# common stuff
|
||||||
|
|
||||||
|
# extract sodium version
|
||||||
|
if (sodium_INCLUDE_DIR)
|
||||||
|
set(_VERSION_HEADER "${_INCLUDE_DIR}/sodium/version.h")
|
||||||
|
if (EXISTS _VERSION_HEADER)
|
||||||
|
file(READ "${_VERSION_HEADER}" _VERSION_HEADER_CONTENT)
|
||||||
|
string(REGEX REPLACE ".*#[ \t]*define[ \t]*SODIUM_VERSION_STRING[ \t]*\"([^\n]*)\".*" "\\1"
|
||||||
|
sodium_VERSION "${_VERSION_HEADER_CONTENT}")
|
||||||
|
set(sodium_VERSION "${sodium_VERSION}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# communicate results
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(sodium
|
||||||
|
REQUIRED_VARS
|
||||||
|
sodium_LIBRARY_RELEASE
|
||||||
|
sodium_LIBRARY_DEBUG
|
||||||
|
sodium_INCLUDE_DIR
|
||||||
|
VERSION_VAR
|
||||||
|
sodium_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
|
# mark file paths as advanced
|
||||||
|
mark_as_advanced(sodium_INCLUDE_DIR)
|
||||||
|
mark_as_advanced(sodium_LIBRARY_DEBUG)
|
||||||
|
mark_as_advanced(sodium_LIBRARY_RELEASE)
|
||||||
|
if (WIN32)
|
||||||
|
mark_as_advanced(sodium_DLL_DEBUG)
|
||||||
|
mark_as_advanced(sodium_DLL_RELEASE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# create imported target
|
||||||
|
if(sodium_USE_STATIC_LIBS)
|
||||||
|
set(_LIB_TYPE STATIC)
|
||||||
|
else()
|
||||||
|
set(_LIB_TYPE SHARED)
|
||||||
|
endif()
|
||||||
|
add_library(sodium ${_LIB_TYPE} IMPORTED)
|
||||||
|
|
||||||
|
set_target_properties(sodium PROPERTIES
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${sodium_INCLUDE_DIR}"
|
||||||
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||||
|
)
|
||||||
|
|
||||||
|
if (sodium_USE_STATIC_LIBS)
|
||||||
|
set_target_properties(sodium PROPERTIES
|
||||||
|
INTERFACE_COMPILE_DEFINITIONS "SODIUM_STATIC"
|
||||||
|
IMPORTED_LOCATION "${sodium_LIBRARY_RELEASE}"
|
||||||
|
IMPORTED_LOCATION_DEBUG "${sodium_LIBRARY_DEBUG}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
if (UNIX)
|
||||||
|
set_target_properties(sodium PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${sodium_LIBRARY_RELEASE}"
|
||||||
|
IMPORTED_LOCATION_DEBUG "${sodium_LIBRARY_DEBUG}"
|
||||||
|
)
|
||||||
|
elseif (WIN32)
|
||||||
|
set_target_properties(sodium PROPERTIES
|
||||||
|
IMPORTED_IMPLIB "${sodium_LIBRARY_RELEASE}"
|
||||||
|
IMPORTED_IMPLIB_DEBUG "${sodium_LIBRARY_DEBUG}"
|
||||||
|
)
|
||||||
|
if (NOT (sodium_DLL_DEBUG MATCHES ".*-NOTFOUND"))
|
||||||
|
set_target_properties(sodium PROPERTIES
|
||||||
|
IMPORTED_LOCATION_DEBUG "${sodium_DLL_DEBUG}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
if (NOT (sodium_DLL_RELEASE MATCHES ".*-NOTFOUND"))
|
||||||
|
set_target_properties(sodium PROPERTIES
|
||||||
|
IMPORTED_LOCATION_RELWITHDEBINFO "${sodium_DLL_RELEASE}"
|
||||||
|
IMPORTED_LOCATION_MINSIZEREL "${sodium_DLL_RELEASE}"
|
||||||
|
IMPORTED_LOCATION_RELEASE "${sodium_DLL_RELEASE}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
188
cmake/GNUInstallDirs.cmake
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
# - Define GNU standard installation directories
|
||||||
|
# Provides install directory variables as defined for GNU software:
|
||||||
|
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
|
||||||
|
# Inclusion of this module defines the following variables:
|
||||||
|
# CMAKE_INSTALL_<dir> - destination for files of a given type
|
||||||
|
# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
|
||||||
|
# where <dir> is one of:
|
||||||
|
# BINDIR - user executables (bin)
|
||||||
|
# SBINDIR - system admin executables (sbin)
|
||||||
|
# LIBEXECDIR - program executables (libexec)
|
||||||
|
# SYSCONFDIR - read-only single-machine data (etc)
|
||||||
|
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
|
||||||
|
# LOCALSTATEDIR - modifiable single-machine data (var)
|
||||||
|
# LIBDIR - object code libraries (lib or lib64 or lib/<multiarch-tuple> on Debian)
|
||||||
|
# INCLUDEDIR - C header files (include)
|
||||||
|
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
|
||||||
|
# DATAROOTDIR - read-only architecture-independent data root (share)
|
||||||
|
# DATADIR - read-only architecture-independent data (DATAROOTDIR)
|
||||||
|
# INFODIR - info documentation (DATAROOTDIR/info)
|
||||||
|
# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
|
||||||
|
# MANDIR - man documentation (DATAROOTDIR/man)
|
||||||
|
# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
|
||||||
|
# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
|
||||||
|
# install() commands for the corresponding file type. If the includer does
|
||||||
|
# not define a value the above-shown default will be used and the value will
|
||||||
|
# appear in the cache for editing by the user.
|
||||||
|
# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
|
||||||
|
# from the corresponding destination by prepending (if necessary) the value
|
||||||
|
# of CMAKE_INSTALL_PREFIX.
|
||||||
|
|
||||||
|
#=============================================================================
|
||||||
|
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
|
||||||
|
# Copyright 2011 Kitware, Inc.
|
||||||
|
#
|
||||||
|
# Distributed under the OSI-approved BSD License (the "License");
|
||||||
|
# see accompanying file Copyright.txt for details.
|
||||||
|
#
|
||||||
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||||
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
# See the License for more information.
|
||||||
|
#=============================================================================
|
||||||
|
# (To distribute this file outside of CMake, substitute the full
|
||||||
|
# License text for the above reference.)
|
||||||
|
|
||||||
|
# Installation directories
|
||||||
|
#
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
|
||||||
|
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
|
||||||
|
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
|
||||||
|
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
|
||||||
|
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
|
||||||
|
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
|
||||||
|
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
|
||||||
|
set(_LIBDIR_DEFAULT "lib")
|
||||||
|
# Override this default 'lib' with 'lib64' iff:
|
||||||
|
# - we are on Linux system but NOT cross-compiling
|
||||||
|
# - we are NOT on debian
|
||||||
|
# - we are on a 64 bits system
|
||||||
|
# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
|
||||||
|
# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
|
||||||
|
# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
|
||||||
|
# See http://wiki.debian.org/Multiarch
|
||||||
|
if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
|
||||||
|
AND NOT CMAKE_CROSSCOMPILING)
|
||||||
|
if (EXISTS "/etc/debian_version") # is this a debian system ?
|
||||||
|
if(CMAKE_LIBRARY_ARCHITECTURE)
|
||||||
|
set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
|
||||||
|
endif()
|
||||||
|
else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
|
||||||
|
if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
|
||||||
|
message(AUTHOR_WARNING
|
||||||
|
"Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
|
||||||
|
"Please enable at least one language before including GNUInstallDirs.")
|
||||||
|
else()
|
||||||
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
|
||||||
|
set(_LIBDIR_DEFAULT "lib64")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
|
||||||
|
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
|
||||||
|
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
|
||||||
|
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Values whose defaults are relative to DATAROOTDIR. Store empty values in
|
||||||
|
# the cache and store the defaults in local variables if the cache values are
|
||||||
|
# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_DATADIR)
|
||||||
|
set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
|
||||||
|
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_INFODIR)
|
||||||
|
set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
|
||||||
|
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_LOCALEDIR)
|
||||||
|
set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
|
||||||
|
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_MANDIR)
|
||||||
|
set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
|
||||||
|
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_DOCDIR)
|
||||||
|
set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
|
||||||
|
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
CMAKE_INSTALL_BINDIR
|
||||||
|
CMAKE_INSTALL_SBINDIR
|
||||||
|
CMAKE_INSTALL_LIBEXECDIR
|
||||||
|
CMAKE_INSTALL_SYSCONFDIR
|
||||||
|
CMAKE_INSTALL_SHAREDSTATEDIR
|
||||||
|
CMAKE_INSTALL_LOCALSTATEDIR
|
||||||
|
CMAKE_INSTALL_LIBDIR
|
||||||
|
CMAKE_INSTALL_INCLUDEDIR
|
||||||
|
CMAKE_INSTALL_OLDINCLUDEDIR
|
||||||
|
CMAKE_INSTALL_DATAROOTDIR
|
||||||
|
CMAKE_INSTALL_DATADIR
|
||||||
|
CMAKE_INSTALL_INFODIR
|
||||||
|
CMAKE_INSTALL_LOCALEDIR
|
||||||
|
CMAKE_INSTALL_MANDIR
|
||||||
|
CMAKE_INSTALL_DOCDIR
|
||||||
|
)
|
||||||
|
|
||||||
|
# Result directories
|
||||||
|
#
|
||||||
|
foreach(dir
|
||||||
|
BINDIR
|
||||||
|
SBINDIR
|
||||||
|
LIBEXECDIR
|
||||||
|
SYSCONFDIR
|
||||||
|
SHAREDSTATEDIR
|
||||||
|
LOCALSTATEDIR
|
||||||
|
LIBDIR
|
||||||
|
INCLUDEDIR
|
||||||
|
OLDINCLUDEDIR
|
||||||
|
DATAROOTDIR
|
||||||
|
DATADIR
|
||||||
|
INFODIR
|
||||||
|
LOCALEDIR
|
||||||
|
MANDIR
|
||||||
|
DOCDIR
|
||||||
|
)
|
||||||
|
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
|
||||||
|
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
118
cmake/GenerateProductVersion.cmake
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
# The MIT License (MIT)
|
||||||
|
#
|
||||||
|
# Copyright (c) 2015, by [halex2005](mailto:akharlov@gmail.com)
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
# the Software without restriction, including without limitation the rights to
|
||||||
|
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
# the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
# subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
include (CMakeParseArguments)
|
||||||
|
|
||||||
|
set (GenerateProductVersionCurrentDir ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
|
# generate_product_version() function
|
||||||
|
#
|
||||||
|
# This function uses VersionInfo.in template file and VersionResource.rc file
|
||||||
|
# to generate WIN32 resource with version information and general resource strings.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# generate_product_version(
|
||||||
|
# SomeOutputResourceVariable
|
||||||
|
# NAME MyGreatProject
|
||||||
|
# ICON ${PATH_TO_APP_ICON}
|
||||||
|
# VERSION_MAJOR 2
|
||||||
|
# VERSION_MINOR 3
|
||||||
|
# VERSION_PATH ${BUILD_COUNTER}
|
||||||
|
# VERSION_REVISION ${BUILD_REVISION}
|
||||||
|
# )
|
||||||
|
# where BUILD_COUNTER and BUILD_REVISION could be values from your CI server.
|
||||||
|
#
|
||||||
|
# You can use generated resource for your executable targets:
|
||||||
|
# add_executable(target-name ${target-files} ${SomeOutputResourceVariable})
|
||||||
|
#
|
||||||
|
# You can specify resource strings in arguments:
|
||||||
|
# NAME - name of executable (no defaults, ex: Microsoft Word)
|
||||||
|
# BUNDLE - bundle (${NAME} is default, ex: Microsoft Office)
|
||||||
|
# VERSION_MAJOR - 1 is default
|
||||||
|
# VERSION_MINOR - 0 is default
|
||||||
|
# VERSION_PATCH - 0 is default
|
||||||
|
# COMPANY_NAME - your company name (no defaults)
|
||||||
|
# COMPANY_COPYRIGHT - ${COMPANY_NAME} (C) Copyright ${CURRENT_YEAR} is default
|
||||||
|
# COMMENTS - ${NAME} v${VERSION_MAJOR}.${VERSION_MINOR} is default
|
||||||
|
# ORIGINAL_FILENAME - ${NAME} is default
|
||||||
|
# INTERNAL_NAME - ${NAME} is default
|
||||||
|
# FILE_DESCRIPTION - ${NAME} is default
|
||||||
|
function(generate_product_version outfiles)
|
||||||
|
set (options)
|
||||||
|
set (oneValueArgs
|
||||||
|
NAME
|
||||||
|
BUNDLE
|
||||||
|
VERSION_MAJOR
|
||||||
|
VERSION_MINOR
|
||||||
|
VERSION_PATCH
|
||||||
|
COMPANY_NAME
|
||||||
|
COMPANY_COPYRIGHT
|
||||||
|
COMMENTS
|
||||||
|
ORIGINAL_FILENAME
|
||||||
|
INTERNAL_NAME
|
||||||
|
FILE_DESCRIPTION)
|
||||||
|
set (multiValueArgs)
|
||||||
|
cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
|
if (NOT PRODUCT_BUNDLE OR "${PRODUCT_BUNDLE}" STREQUAL "")
|
||||||
|
set(PRODUCT_BUNDLE "${PRODUCT_NAME}")
|
||||||
|
endif()
|
||||||
|
if (NOT PRODUCT_VERSION_MAJOR OR "${PRODUCT_VERSION_MAJOR}" STREQUAL "")
|
||||||
|
set(PRODUCT_VERSION_MAJOR 1)
|
||||||
|
endif()
|
||||||
|
if (NOT PRODUCT_VERSION_MINOR OR "${PRODUCT_VERSION_MINOR}" STREQUAL "")
|
||||||
|
set(PRODUCT_VERSION_MINOR 0)
|
||||||
|
endif()
|
||||||
|
if (NOT PRODUCT_VERSION_PATCH OR "${PRODUCT_VERSION_PATCH}" STREQUAL "")
|
||||||
|
set(PRODUCT_VERSION_PATCH 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT PRODUCT_COMPANY_COPYRIGHT OR "${PRODUCT_COMPANY_COPYRIGHT}" STREQUAL "")
|
||||||
|
string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y")
|
||||||
|
set(PRODUCT_COMPANY_COPYRIGHT "Copyright (C) ${PRODUCT_CURRENT_YEAR} ${PRODUCT_COMPANY_NAME}")
|
||||||
|
endif()
|
||||||
|
if (NOT PRODUCT_COMMENTS OR "${PRODUCT_COMMENTS}" STREQUAL "")
|
||||||
|
set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}")
|
||||||
|
endif()
|
||||||
|
if (NOT PRODUCT_ORIGINAL_FILENAME OR "${PRODUCT_ORIGINAL_FILENAME}" STREQUAL "")
|
||||||
|
set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}")
|
||||||
|
endif()
|
||||||
|
if (NOT PRODUCT_INTERNAL_NAME OR "${PRODUCT_INTERNAL_NAME}" STREQUAL "")
|
||||||
|
set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}")
|
||||||
|
endif()
|
||||||
|
if (NOT PRODUCT_FILE_DESCRIPTION OR "${PRODUCT_FILE_DESCRIPTION}" STREQUAL "")
|
||||||
|
set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_NAME}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set (_VersionInfoFile ${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.h)
|
||||||
|
set (_VersionResourceFile ${CMAKE_CURRENT_BINARY_DIR}/VersionResource.rc)
|
||||||
|
configure_file(
|
||||||
|
${GenerateProductVersionCurrentDir}/VersionInfo.in
|
||||||
|
${_VersionInfoFile}
|
||||||
|
@ONLY)
|
||||||
|
configure_file(
|
||||||
|
${GenerateProductVersionCurrentDir}/VersionResource.rc
|
||||||
|
${_VersionResourceFile}
|
||||||
|
COPYONLY)
|
||||||
|
list(APPEND ${outfiles} ${_VersionInfoFile} ${_VersionResourceFile})
|
||||||
|
set (${outfiles} ${${outfiles}} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
130
cmake/GetGitRevisionDescription.cmake
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
# - Returns a version string from Git
|
||||||
|
#
|
||||||
|
# These functions force a re-configure on each git commit so that you can
|
||||||
|
# trust the values of the variables in your build system.
|
||||||
|
#
|
||||||
|
# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
|
||||||
|
#
|
||||||
|
# Returns the refspec and sha hash of the current head revision
|
||||||
|
#
|
||||||
|
# git_describe(<var> [<additional arguments to git describe> ...])
|
||||||
|
#
|
||||||
|
# Returns the results of git describe on the source tree, and adjusting
|
||||||
|
# the output so that it tests false if an error occurs.
|
||||||
|
#
|
||||||
|
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
|
||||||
|
#
|
||||||
|
# Returns the results of git describe --exact-match on the source tree,
|
||||||
|
# and adjusting the output so that it tests false if there was no exact
|
||||||
|
# matching tag.
|
||||||
|
#
|
||||||
|
# Requires CMake 2.6 or newer (uses the 'function' command)
|
||||||
|
#
|
||||||
|
# Original Author:
|
||||||
|
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
||||||
|
# http://academic.cleardefinition.com
|
||||||
|
# Iowa State University HCI Graduate Program/VRAC
|
||||||
|
#
|
||||||
|
# Copyright Iowa State University 2009-2010.
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE.BOOST-1.0 or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
if(__get_git_revision_description)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(__get_git_revision_description YES)
|
||||||
|
|
||||||
|
# We must run the following at "include" time, not at function call time,
|
||||||
|
# to find the path to this module rather than the path to a calling list file
|
||||||
|
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
|
||||||
|
|
||||||
|
function(get_git_head_revision _refspecvar _hashvar)
|
||||||
|
set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
|
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
|
||||||
|
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
|
||||||
|
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
|
||||||
|
get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
|
||||||
|
if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
|
||||||
|
# We have reached the root directory, we are not in git
|
||||||
|
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
|
||||||
|
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
|
||||||
|
endwhile()
|
||||||
|
# check if this is a submodule
|
||||||
|
if(NOT IS_DIRECTORY ${GIT_DIR})
|
||||||
|
file(READ ${GIT_DIR} submodule)
|
||||||
|
string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
|
||||||
|
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
|
||||||
|
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
|
||||||
|
endif()
|
||||||
|
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
|
||||||
|
if(NOT EXISTS "${GIT_DATA}")
|
||||||
|
file(MAKE_DIRECTORY "${GIT_DATA}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT EXISTS "${GIT_DIR}/HEAD")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
set(HEAD_FILE "${GIT_DATA}/HEAD")
|
||||||
|
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
|
||||||
|
|
||||||
|
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
|
||||||
|
"${GIT_DATA}/grabRef.cmake"
|
||||||
|
@ONLY)
|
||||||
|
include("${GIT_DATA}/grabRef.cmake")
|
||||||
|
|
||||||
|
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
|
||||||
|
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(git_describe _var)
|
||||||
|
if(NOT GIT_FOUND)
|
||||||
|
find_package(Git QUIET)
|
||||||
|
endif()
|
||||||
|
get_git_head_revision(refspec hash)
|
||||||
|
if(NOT GIT_FOUND)
|
||||||
|
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
if(NOT hash)
|
||||||
|
set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO sanitize
|
||||||
|
#if((${ARGN}" MATCHES "&&") OR
|
||||||
|
# (ARGN MATCHES "||") OR
|
||||||
|
# (ARGN MATCHES "\\;"))
|
||||||
|
# message("Please report the following error to the project!")
|
||||||
|
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
|
||||||
|
#endif()
|
||||||
|
|
||||||
|
#message(STATUS "Arguments to execute_process: ${ARGN}")
|
||||||
|
|
||||||
|
execute_process(COMMAND
|
||||||
|
"${GIT_EXECUTABLE}"
|
||||||
|
describe
|
||||||
|
${hash}
|
||||||
|
${ARGN}
|
||||||
|
WORKING_DIRECTORY
|
||||||
|
"${CMAKE_SOURCE_DIR}"
|
||||||
|
RESULT_VARIABLE
|
||||||
|
res
|
||||||
|
OUTPUT_VARIABLE
|
||||||
|
out
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
if(NOT res EQUAL 0)
|
||||||
|
set(out "${out}-${res}-NOTFOUND")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${_var} "${out}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(git_get_exact_tag _var)
|
||||||
|
git_describe(out --exact-match ${ARGN})
|
||||||
|
set(${_var} "${out}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
41
cmake/GetGitRevisionDescription.cmake.in
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# Internal file for GetGitRevisionDescription.cmake
|
||||||
|
#
|
||||||
|
# Requires CMake 2.6 or newer (uses the 'function' command)
|
||||||
|
#
|
||||||
|
# Original Author:
|
||||||
|
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
||||||
|
# http://academic.cleardefinition.com
|
||||||
|
# Iowa State University HCI Graduate Program/VRAC
|
||||||
|
#
|
||||||
|
# Copyright Iowa State University 2009-2010.
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE.BOOST-1.0 or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
set(HEAD_HASH)
|
||||||
|
|
||||||
|
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
|
||||||
|
|
||||||
|
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
|
||||||
|
if(HEAD_CONTENTS MATCHES "ref")
|
||||||
|
# named branch
|
||||||
|
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
|
||||||
|
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
|
||||||
|
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
|
||||||
|
else()
|
||||||
|
configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
|
||||||
|
file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
|
||||||
|
if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
|
||||||
|
set(HEAD_HASH "${CMAKE_MATCH_1}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
# detached HEAD
|
||||||
|
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT HEAD_HASH)
|
||||||
|
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
|
||||||
|
string(STRIP "${HEAD_HASH}" HEAD_HASH)
|
||||||
|
endif()
|
||||||
68
cmake/VersionInfo.in
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef PRODUCT_VERSION_MAJOR
|
||||||
|
#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_VERSION_MINOR
|
||||||
|
#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_VERSION_PATCH
|
||||||
|
#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FILE_VERSION_MAJOR
|
||||||
|
#define FILE_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FILE_VERSION_MINOR
|
||||||
|
#define FILE_VERSION_MINOR @PRODUCT_VERSION_MINOR@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FILE_VERSION_PATCH
|
||||||
|
#define FILE_VERSION_PATCH @PRODUCT_VERSION_PATCH@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __TO_STRING
|
||||||
|
#define __TO_STRING_IMPL(x) #x
|
||||||
|
#define __TO_STRING(x) __TO_STRING_IMPL(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR)
|
||||||
|
#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH)
|
||||||
|
#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,0
|
||||||
|
#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "\0"
|
||||||
|
|
||||||
|
#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR)
|
||||||
|
#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH)
|
||||||
|
#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,0
|
||||||
|
#define FILE_VERSION_RESOURCE_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "\0"
|
||||||
|
|
||||||
|
#ifndef PRODUCT_COMMENTS
|
||||||
|
#define PRODUCT_COMMENTS "@PRODUCT_COMMENTS@\0"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_COMPANY_NAME
|
||||||
|
#define PRODUCT_COMPANY_NAME "@PRODUCT_COMPANY_NAME@\0"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_COMPANY_COPYRIGHT
|
||||||
|
#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_FILE_DESCRIPTION
|
||||||
|
#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_INTERNAL_NAME
|
||||||
|
#define PRODUCT_INTERNAL_NAME "@PRODUCT_NAME@\0"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_ORIGINAL_FILENAME
|
||||||
|
#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PRODUCT_BUNDLE
|
||||||
|
#define PRODUCT_BUNDLE "@PRODUCT_BUNDLE@\0"
|
||||||
|
#endif
|
||||||
36
cmake/VersionResource.rc
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#include "VersionInfo.h"
|
||||||
|
#include "winresrc.h"
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION FILE_VERSION_RESOURCE
|
||||||
|
PRODUCTVERSION PRODUCT_VERSION_RESOURCE
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x4L
|
||||||
|
FILETYPE 0x1L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Comments", PRODUCT_COMMENTS
|
||||||
|
VALUE "CompanyName", PRODUCT_COMPANY_NAME
|
||||||
|
VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION
|
||||||
|
VALUE "FileVersion", FILE_VERSION_RESOURCE_STR
|
||||||
|
VALUE "InternalName", PRODUCT_INTERNAL_NAME
|
||||||
|
VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT
|
||||||
|
VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME
|
||||||
|
VALUE "ProductName", PRODUCT_BUNDLE
|
||||||
|
VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
BIN
docs/KeePassXC-Accept-Button.png
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
docs/KeePassXC-Confirm.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
docs/KeePassXC-Connect.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
47
docs/QUICKSTART.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Quick Start for KeePassXC
|
||||||
|
|
||||||
|
This procedure gets KeePassXC running on your computer with browser integration,
|
||||||
|
using the pre-built binaries available for [download](https://keepassxc.org/download)
|
||||||
|
from [KeePassXC site](https://keepassxc.org).
|
||||||
|
|
||||||
|
**TL;DR** KeePassXC saves your passwords securely.
|
||||||
|
When you double-click a URL in KeePassXC, it launches your default browser to that URL.
|
||||||
|
With browser integration configured, KeePassXC automatically enters
|
||||||
|
username/password credentials into web page fields.
|
||||||
|
|
||||||
|
## Installing and Starting KeePassXC
|
||||||
|
|
||||||
|
* [Download the native installer](https://keepassxc.org/download) and install
|
||||||
|
KeePassXC for your Windows, macOS, or Linux computer in the usual way for your platform.
|
||||||
|
* Open the KeePassXC application.
|
||||||
|
* Create a new database and give it a master key that's used to unlock the database file.
|
||||||
|
This database holds entries (usernames, passwords, account numbers, notes)
|
||||||
|
for all your websites, programs, etc.
|
||||||
|
* Create a few entries - enter the username, password, URL, and optionally notes about the entry.
|
||||||
|
* KeePassXC securely stores those entries in the database.
|
||||||
|
|
||||||
|
|
||||||
|
## Setting up Browser Integration with KeePassXC
|
||||||
|
|
||||||
|
* *Within KeePassXC*, go to **Tools->Settings** (on macOS, go to **KeePassXC->Preferences**.)
|
||||||
|
* In **Browser Integration**, check **Enable KeePassHTTP server**
|
||||||
|
Leave the other options at their defaults.
|
||||||
|
* *In your default web browser,* install the KeePassHTTP-Connector extension/add-on. Instructions for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepasshttp-connector/?src=api) or [Chrome](https://chrome.google.com/webstore/detail/keepasshttp-connector/dafgdjggglmmknipkhngniifhplpcldb?utm_source=chrome-app-launcher-info-dialog)
|
||||||
|
* Click the KeePassXC icon in the upper-right corner. You'll see the dialog below.
|
||||||
|
* Click the blue Connect button to make the browser extension connect to the KeePassXC application.
|
||||||
|
<img src="./KeePassXC-Connect.png" height="200" alt="KeePassXC Connect dialog">
|
||||||
|
|
||||||
|
* *Switch back to KeePassXC.* You'll see a dialog (below) indicating that a request to connect has arrived.
|
||||||
|
* Give the connection a name (perhaps *Keepass-Browsername*, any unique name will suffice) and click OK to accept it.
|
||||||
|
* This one-time operation connects KeePassXC and your browser.
|
||||||
|
<img src="./KeePassXC-Accept-Button.png" height="200" alt="KeePassXC accept connection dialog">
|
||||||
|
|
||||||
|
## Using Browser Integration
|
||||||
|
|
||||||
|
* *Within KeePassXC,* double-click the URL of an entry,
|
||||||
|
or select it and type Ctrl+U (Cmd+U on macOS).
|
||||||
|
* Your browser opens to that URL.
|
||||||
|
* If there are username/password fields on that page, you will see the dialog below.
|
||||||
|
Click *Allow* to confirm that KeePassXC may access the credentials to auto-fill the fields.
|
||||||
|
* Check *Remember this decision* to allow this each time you visit the page.
|
||||||
|
<img src="./KeePassXC-Confirm.png" height="200" alt="KeePassCX Confirm Access dialog">
|
||||||
966
release-tool
Executable file
@@ -0,0 +1,966 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# KeePassXC Release Preparation Helper
|
||||||
|
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 2 or (at your option)
|
||||||
|
# version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
printf "\e[1m\e[32mKeePassXC\e[0m Release Preparation Helper\n"
|
||||||
|
printf "Copyright (C) 2017 KeePassXC Team <https://keepassxc.org/>\n\n"
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# global default values
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
RELEASE_NAME=""
|
||||||
|
APP_NAME="KeePassXC"
|
||||||
|
SRC_DIR="."
|
||||||
|
GPG_KEY="CFB4C2166397D0D2"
|
||||||
|
GPG_GIT_KEY=""
|
||||||
|
OUTPUT_DIR="release"
|
||||||
|
SOURCE_BRANCH=""
|
||||||
|
TARGET_BRANCH="master"
|
||||||
|
TAG_NAME=""
|
||||||
|
DOCKER_IMAGE=""
|
||||||
|
DOCKER_CONTAINER_NAME="keepassxc-build-container"
|
||||||
|
CMAKE_OPTIONS=""
|
||||||
|
COMPILER="g++"
|
||||||
|
MAKE_OPTIONS="-j8"
|
||||||
|
BUILD_PLUGINS="all"
|
||||||
|
INSTALL_PREFIX="/usr/local"
|
||||||
|
BUILD_SOURCE_TARBALL=true
|
||||||
|
BUILD_SNAPSHOT=false
|
||||||
|
ORIG_BRANCH=""
|
||||||
|
ORIG_CWD="$(pwd)"
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# helper functions
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
printUsage() {
|
||||||
|
local cmd
|
||||||
|
if [ "" == "$1" ] || [ "help" == "$1" ]; then
|
||||||
|
cmd="COMMAND"
|
||||||
|
elif [ "check" == "$1" ] || [ "merge" == "$1" ] || [ "build" == "$1" ] || [ "gpgsign" == "$1" ] || [ "appsign" == "$1" ]; then
|
||||||
|
cmd="$1"
|
||||||
|
else
|
||||||
|
logError "Unknown command: '$1'\n"
|
||||||
|
cmd="COMMAND"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\e[1mUsage:\e[0m $(basename $0) $cmd [options]\n"
|
||||||
|
|
||||||
|
if [ "COMMAND" == "$cmd" ]; then
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
check Perform a dry-run check, nothing is changed
|
||||||
|
merge Merge release branch into main branch and create release tags
|
||||||
|
build Build and package binary release from sources
|
||||||
|
gpgsign Sign previously compiled release packages with GPG
|
||||||
|
appsign Sign binaries with code signing certificates on Windows and macOS
|
||||||
|
help Show help for the given command
|
||||||
|
EOF
|
||||||
|
elif [ "merge" == "$cmd" ]; then
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Merge release branch into main branch and create release tags
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-v, --version Release version number or name (required)
|
||||||
|
-a, --app-name Application name (default: '${APP_NAME}')
|
||||||
|
-s, --source-dir Source directory (default: '${SRC_DIR}')
|
||||||
|
-g, --gpg-key GPG key used to sign the merge commit and release tag,
|
||||||
|
leave empty to let Git choose your default key
|
||||||
|
(default: '${GPG_GIT_KEY}')
|
||||||
|
-r, --release-branch Source release branch to merge from (default: 'release/VERSION')
|
||||||
|
--target-branch Target branch to merge to (default: '${TARGET_BRANCH}')
|
||||||
|
-t, --tag-name Override release tag name (defaults to version number)
|
||||||
|
-h, --help Show this help
|
||||||
|
EOF
|
||||||
|
elif [ "build" == "$cmd" ]; then
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Build and package binary release from sources
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-v, --version Release version number or name (required)
|
||||||
|
-a, --app-name Application name (default: '${APP_NAME}')
|
||||||
|
-s, --source-dir Source directory (default: '${SRC_DIR}')
|
||||||
|
-o, --output-dir Output directory where to build the release
|
||||||
|
(default: '${OUTPUT_DIR}')
|
||||||
|
-t, --tag-name Release tag to check out (defaults to version number)
|
||||||
|
-b, --build Build sources after exporting release
|
||||||
|
-d, --docker-image Use the specified Docker image to compile the application.
|
||||||
|
The image must have all required build dependencies installed.
|
||||||
|
This option has no effect if --build is not set.
|
||||||
|
--container-name Docker container name (default: '${DOCKER_CONTAINER_NAME}')
|
||||||
|
The container must not exist already
|
||||||
|
-c, --cmake-options Additional CMake options for compiling the sources
|
||||||
|
--compiler Compiler to use (default: '${COMPILER}')
|
||||||
|
-m, --make-options Make options for compiling sources (default: '${MAKE_OPTIONS}')
|
||||||
|
-i, --install-prefix Install prefix (default: '${INSTALL_PREFIX}')
|
||||||
|
-p, --plugins Space-separated list of plugins to build
|
||||||
|
(default: ${BUILD_PLUGINS})
|
||||||
|
--snapshot Don't checkout the release tag
|
||||||
|
-n, --no-source-tarball Don't build source tarball
|
||||||
|
-h, --help Show this help
|
||||||
|
EOF
|
||||||
|
elif [ "gpgsign" == "$cmd" ]; then
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Sign previously compiled release packages with GPG
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-f, --files Files to sign (required)
|
||||||
|
-g, --gpg-key GPG key used to sign the files (default: '${GPG_KEY}')
|
||||||
|
-h, --help Show this help
|
||||||
|
EOF
|
||||||
|
elif [ "appsign" == "$cmd" ]; then
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Sign binaries with code signing certificates on Windows and macOS
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-f, --files Files to sign (required)
|
||||||
|
-k, --signtool-key Key to be used with signtool (required for Windows EXE)
|
||||||
|
-i, --identity Apple Developer ID to be used with codesign (required for macOS APP and DMG)
|
||||||
|
-h, --help Show this help
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
logInfo() {
|
||||||
|
printf "\e[1m[ \e[34mINFO\e[39m ]\e[0m $1\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
logError() {
|
||||||
|
printf "\e[1m[ \e[31mERROR\e[39m ]\e[0m $1\n" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
init() {
|
||||||
|
if [ "" == "$RELEASE_NAME" ]; then
|
||||||
|
logError "Missing arguments, --version is required!\n"
|
||||||
|
printUsage "check"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "" == "$TAG_NAME" ]; then
|
||||||
|
TAG_NAME="$RELEASE_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "" == "$SOURCE_BRANCH" ]; then
|
||||||
|
SOURCE_BRANCH="release/${RELEASE_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ORIG_CWD="$(pwd)"
|
||||||
|
SRC_DIR="$(realpath "$SRC_DIR")"
|
||||||
|
cd "$SRC_DIR" > /dev/null 2>&1
|
||||||
|
ORIG_BRANCH="$(git rev-parse --abbrev-ref HEAD 2> /dev/null)"
|
||||||
|
cd "$ORIG_CWD"
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
logInfo "Checking out original branch..."
|
||||||
|
if [ "" != "$ORIG_BRANCH" ]; then
|
||||||
|
git checkout "$ORIG_BRANCH" > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
logInfo "Leaving source directory..."
|
||||||
|
cd "$ORIG_CWD"
|
||||||
|
}
|
||||||
|
|
||||||
|
exitError() {
|
||||||
|
logError "$1"
|
||||||
|
cleanup
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
exitTrap() {
|
||||||
|
exitError "Existing upon user request..."
|
||||||
|
}
|
||||||
|
|
||||||
|
checkSourceDirExists() {
|
||||||
|
if [ ! -d "$SRC_DIR" ]; then
|
||||||
|
exitError "Source directory '${SRC_DIR}' does not exist!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkOutputDirDoesNotExist() {
|
||||||
|
if [ -e "$OUTPUT_DIR" ]; then
|
||||||
|
exitError "Output directory '$OUTPUT_DIR' already exists. Please choose a different location!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkGitRepository() {
|
||||||
|
if [ ! -d .git ] || [ ! -f CHANGELOG ]; then
|
||||||
|
exitError "Source directory is not a valid Git repository!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkTagExists() {
|
||||||
|
git tag | grep -q "$TAG_NAME"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "Tag '${TAG_NAME}' does not exist!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkReleaseDoesNotExist() {
|
||||||
|
git tag | grep -q "$TAG_NAME"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
exitError "Release '$RELEASE_NAME' (tag: '$TAG_NAME') already exists!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkWorkingTreeClean() {
|
||||||
|
git diff-index --quiet HEAD --
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "Current working tree is not clean! Please commit or unstage any changes."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkSourceBranchExists() {
|
||||||
|
git rev-parse "$SOURCE_BRANCH" > /dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "Source branch '$SOURCE_BRANCH' does not exist!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkTargetBranchExists() {
|
||||||
|
git rev-parse "$TARGET_BRANCH" > /dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "Target branch '$TARGET_BRANCH' does not exist!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkVersionInCMake() {
|
||||||
|
local app_name_upper="$(echo "$APP_NAME" | tr '[:lower:]' '[:upper:]')"
|
||||||
|
local major_num="$(echo ${RELEASE_NAME} | cut -f1 -d.)"
|
||||||
|
local minor_num="$(echo ${RELEASE_NAME} | cut -f2 -d.)"
|
||||||
|
local patch_num="$(echo ${RELEASE_NAME} | cut -f3 -d. | cut -f1 -d-)"
|
||||||
|
|
||||||
|
grep -q "${app_name_upper}_VERSION_MAJOR \"${major_num}\"" CMakeLists.txt
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "${app_name_upper}_VERSION_MAJOR not updated to '${major_num}' in CMakeLists.txt!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
grep -q "${app_name_upper}_VERSION_MINOR \"${minor_num}\"" CMakeLists.txt
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "${app_name_upper}_VERSION_MINOR not updated to '${minor_num}' in CMakeLists.txt!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
grep -q "${app_name_upper}_VERSION_PATCH \"${patch_num}\"" CMakeLists.txt
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "${app_name_upper}_VERSION_PATCH not updated to '${patch_num}' in CMakeLists.txt!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkChangeLog() {
|
||||||
|
if [ ! -f CHANGELOG ]; then
|
||||||
|
exitError "No CHANGELOG file found!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
grep -qPzo "${RELEASE_NAME} \(\d{4}-\d{2}-\d{2}\)\n=+\n" CHANGELOG
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "'CHANGELOG' has not been updated to the '${RELEASE_NAME}' release!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkAppStreamInfo() {
|
||||||
|
if [ ! -f share/linux/org.keepassxc.KeePassXC.appdata.xml ]; then
|
||||||
|
exitError "No AppStream info file found!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
grep -qPzo "<release version=\"${RELEASE_NAME}\" date=\"\d{4}-\d{2}-\d{2}\">" share/linux/org.keepassxc.KeePassXC.appdata.xml
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "'share/linux/org.keepassxc.KeePassXC.appdata.xml' has not been updated to the '${RELEASE_NAME}' release!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkSnapcraft() {
|
||||||
|
if [ ! -f snapcraft.yaml ]; then
|
||||||
|
echo "No snapcraft file found!"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
grep -qPzo "version: ${RELEASE_NAME}" snapcraft.yaml
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "'snapcraft.yaml' has not been updated to the '${RELEASE_NAME}' release!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkTransifexCommandExists() {
|
||||||
|
command -v tx > /dev/null
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "Transifex tool 'tx' not installed! Please install it using 'pip install transifex-client'."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkOsslsigncodeCommandExists() {
|
||||||
|
command -v osslsigncode > /dev/null
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "osslsigncode command not found on the PATH! Please install it using 'pacman -S mingw-w64-osslsigncode'."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkSigntoolCommandExists() {
|
||||||
|
command -v signtool > /dev/null
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "signtool command not found on the PATH! Add the Windows SDK binary folder to your PATH."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkCodesignCommandExists() {
|
||||||
|
command -v codesign > /dev/null
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "codesign command not found on the PATH! Please check that you have correctly installed Xcode."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkQt5LUpdateExists() {
|
||||||
|
command -v lupdate > /dev/null
|
||||||
|
if [ 0 -eq $? ] && ! $(lupdate -version | grep -q "lupdate version 5\."); then
|
||||||
|
command -v lupdate-qt5 > /dev/null
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "Qt Linguist tool (lupdate-qt5) is not installed! Please install using 'apt install qttools5-dev-tools'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
performChecks() {
|
||||||
|
logInfo "Performing basic checks..."
|
||||||
|
|
||||||
|
checkSourceDirExists
|
||||||
|
|
||||||
|
logInfo "Changing to source directory..."
|
||||||
|
cd "${SRC_DIR}"
|
||||||
|
|
||||||
|
logInfo "Validating toolset and repository..."
|
||||||
|
|
||||||
|
checkTransifexCommandExists
|
||||||
|
checkQt5LUpdateExists
|
||||||
|
checkGitRepository
|
||||||
|
checkReleaseDoesNotExist
|
||||||
|
checkWorkingTreeClean
|
||||||
|
checkSourceBranchExists
|
||||||
|
checkTargetBranchExists
|
||||||
|
|
||||||
|
logInfo "Checking out '${SOURCE_BRANCH}'..."
|
||||||
|
git checkout "$SOURCE_BRANCH"
|
||||||
|
|
||||||
|
logInfo "Attempting to find '${RELEASE_NAME}' in various files..."
|
||||||
|
|
||||||
|
checkVersionInCMake
|
||||||
|
checkChangeLog
|
||||||
|
checkAppStreamInfo
|
||||||
|
checkSnapcraft
|
||||||
|
|
||||||
|
logInfo "\e[1m\e[32mAll checks passed!\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# re-implement realpath for OS X (thanks mschrag)
|
||||||
|
# https://superuser.com/questions/205127/
|
||||||
|
if ! $(command -v realpath > /dev/null); then
|
||||||
|
realpath() {
|
||||||
|
pushd . > /dev/null
|
||||||
|
if [ -d "$1" ]; then
|
||||||
|
cd "$1"
|
||||||
|
dirs -l +0
|
||||||
|
else
|
||||||
|
cd "$(dirname "$1")"
|
||||||
|
cur_dir=$(dirs -l +0)
|
||||||
|
|
||||||
|
if [ "$cur_dir" == "/" ]; then
|
||||||
|
echo "$cur_dir$(basename "$1")"
|
||||||
|
else
|
||||||
|
echo "$cur_dir/$(basename "$1")"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
popd > /dev/null
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
trap exitTrap SIGINT SIGTERM
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# check command
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
check() {
|
||||||
|
while [ $# -ge 1 ]; do
|
||||||
|
local arg="$1"
|
||||||
|
case "$arg" in
|
||||||
|
-v|--version)
|
||||||
|
RELEASE_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
init
|
||||||
|
|
||||||
|
performChecks
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
logInfo "Congrats! You can successfully merge, build, and sign KeepassXC."
|
||||||
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# merge command
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
merge() {
|
||||||
|
while [ $# -ge 1 ]; do
|
||||||
|
local arg="$1"
|
||||||
|
case "$arg" in
|
||||||
|
-v|--version)
|
||||||
|
RELEASE_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-a|--app-name)
|
||||||
|
APP_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-s|--source-dir)
|
||||||
|
SRC_DIR="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-g|--gpg-key)
|
||||||
|
GPG_GIT_KEY="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-r|--release-branch)
|
||||||
|
SOURCE_BRANCH="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
--target-branch)
|
||||||
|
TARGET_BRANCH="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-t|--tag-name)
|
||||||
|
TAG_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-h|--help)
|
||||||
|
printUsage "merge"
|
||||||
|
exit ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
logError "Unknown option '$arg'\n"
|
||||||
|
printUsage "merge"
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
init
|
||||||
|
|
||||||
|
performChecks
|
||||||
|
|
||||||
|
logInfo "Updating language files..."
|
||||||
|
./share/translations/update.sh update
|
||||||
|
./share/translations/update.sh pull
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "Updating translations failed!"
|
||||||
|
fi
|
||||||
|
git diff-index --quiet HEAD --
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
git add ./share/translations/*
|
||||||
|
logInfo "Committing changes..."
|
||||||
|
if [ "" == "$GPG_GIT_KEY" ]; then
|
||||||
|
git commit -m "Update translations"
|
||||||
|
else
|
||||||
|
git commit -m "Update translations" -S"$GPG_GIT_KEY"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
CHANGELOG=$(grep -Pzo "(?<=${RELEASE_NAME} \(\d{4}-\d{2}-\d{2}\)\n)=+\n\n?(?:.|\n)+?\n(?=\n)" \
|
||||||
|
CHANGELOG | grep -Pzo '(?<=\n\n)(.|\n)+' | tr -d \\0)
|
||||||
|
COMMIT_MSG="Release ${RELEASE_NAME}"
|
||||||
|
|
||||||
|
logInfo "Checking out target branch '${TARGET_BRANCH}'..."
|
||||||
|
git checkout "$TARGET_BRANCH"
|
||||||
|
|
||||||
|
logInfo "Merging '${SOURCE_BRANCH}' into '${TARGET_BRANCH}'..."
|
||||||
|
|
||||||
|
git merge "$SOURCE_BRANCH" --no-ff -m "$COMMIT_MSG" -m "${CHANGELOG}" "$SOURCE_BRANCH" -S"$GPG_GIT_KEY"
|
||||||
|
|
||||||
|
logInfo "Creating tag '${TAG_NAME}'..."
|
||||||
|
if [ "" == "$GPG_GIT_KEY" ]; then
|
||||||
|
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s
|
||||||
|
else
|
||||||
|
git tag -a "$TAG_NAME" -m "$COMMIT_MSG" -m "${CHANGELOG}" -s -u "$GPG_GIT_KEY"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
logInfo "All done!"
|
||||||
|
logInfo "Please merge the release branch back into the develop branch now and then push your changes."
|
||||||
|
logInfo "Don't forget to also push the tags using \e[1mgit push --tags\e[0m."
|
||||||
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# build command
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
build() {
|
||||||
|
while [ $# -ge 1 ]; do
|
||||||
|
local arg="$1"
|
||||||
|
case "$arg" in
|
||||||
|
-v|--version)
|
||||||
|
RELEASE_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-a|--app-name)
|
||||||
|
APP_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-s|--source-dir)
|
||||||
|
SRC_DIR="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-o|--output-dir)
|
||||||
|
OUTPUT_DIR="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-t|--tag-name)
|
||||||
|
TAG_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-d|--docker-image)
|
||||||
|
DOCKER_IMAGE="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
--container-name)
|
||||||
|
DOCKER_CONTAINER_NAME="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-c|--cmake-options)
|
||||||
|
CMAKE_OPTIONS="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
--compiler)
|
||||||
|
COMPILER="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-m|--make-options)
|
||||||
|
MAKE_OPTIONS="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-i|--install-prefix)
|
||||||
|
INSTALL_PREFIX="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-p|--plugins)
|
||||||
|
BUILD_PLUGINS="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-n|--no-source-tarball)
|
||||||
|
BUILD_SOURCE_TARBALL=false ;;
|
||||||
|
|
||||||
|
--snapshot)
|
||||||
|
BUILD_SNAPSHOT=true ;;
|
||||||
|
|
||||||
|
-h|--help)
|
||||||
|
printUsage "build"
|
||||||
|
exit ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
logError "Unknown option '$arg'\n"
|
||||||
|
printUsage "build"
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
init
|
||||||
|
|
||||||
|
OUTPUT_DIR="$(realpath "$OUTPUT_DIR")"
|
||||||
|
|
||||||
|
if ${BUILD_SNAPSHOT}; then
|
||||||
|
TAG_NAME="HEAD"
|
||||||
|
local branch=`git rev-parse --abbrev-ref HEAD`
|
||||||
|
logInfo "Using current branch ${branch} to build..."
|
||||||
|
RELEASE_NAME="${RELEASE_NAME}-snapshot"
|
||||||
|
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DKEEPASSXC_BUILD_TYPE=Snapshot"
|
||||||
|
else
|
||||||
|
checkWorkingTreeClean
|
||||||
|
|
||||||
|
if $(echo "$TAG_NAME" | grep -qP "\-(alpha|beta)\\d+\$"); then
|
||||||
|
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DKEEPASSXC_BUILD_TYPE=PreRelease"
|
||||||
|
logInfo "Checking out pre-release tag '${TAG_NAME}'..."
|
||||||
|
else
|
||||||
|
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DKEEPASSXC_BUILD_TYPE=Release"
|
||||||
|
logInfo "Checking out release tag '${TAG_NAME}'..."
|
||||||
|
fi
|
||||||
|
git checkout "$TAG_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "Creating output directory..."
|
||||||
|
mkdir -p "$OUTPUT_DIR"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "Failed to create output directory!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ${BUILD_SOURCE_TARBALL}; then
|
||||||
|
logInfo "Creating source tarball..."
|
||||||
|
local app_name_lower="$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
local prefix="${app_name_lower}-${RELEASE_NAME}"
|
||||||
|
local tarball_name="${prefix}-src.tar"
|
||||||
|
|
||||||
|
git archive --format=tar "$TAG_NAME" --prefix="${prefix}/" --output="${OUTPUT_DIR}/${tarball_name}"
|
||||||
|
|
||||||
|
if ! ${BUILD_SNAPSHOT}; then
|
||||||
|
# add .version file to tar
|
||||||
|
mkdir "${prefix}"
|
||||||
|
echo -n ${RELEASE_NAME} > "${prefix}/.version"
|
||||||
|
tar --append --file="${OUTPUT_DIR}/${tarball_name}" "${prefix}/.version"
|
||||||
|
rm "${prefix}/.version"
|
||||||
|
rmdir "${prefix}" 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
xz -6 "${OUTPUT_DIR}/${tarball_name}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ${BUILD_SNAPSHOT} && [ -e "${OUTPUT_DIR}/build-release" ]; then
|
||||||
|
logInfo "Cleaning existing build directory..."
|
||||||
|
rm -r "${OUTPUT_DIR}/build-release" 2> /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
exitError "Failed to clean existing build directory, please do it manually."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "Creating build directory..."
|
||||||
|
mkdir -p "${OUTPUT_DIR}/build-release"
|
||||||
|
cd "${OUTPUT_DIR}/build-release"
|
||||||
|
|
||||||
|
logInfo "Configuring sources..."
|
||||||
|
for p in ${BUILD_PLUGINS}; do
|
||||||
|
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DWITH_XC_$(echo $p | tr '[:lower:]' '[:upper:]')=On"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$COMPILER" == "g++" ]; then
|
||||||
|
export CC=gcc
|
||||||
|
elif [ "$COMPILER" == "clang++" ]; then
|
||||||
|
export CC=clang
|
||||||
|
fi
|
||||||
|
export CXX="$COMPILER"
|
||||||
|
|
||||||
|
if [ "" == "$DOCKER_IMAGE" ]; then
|
||||||
|
if [ "$(uname -s)" == "Darwin" ]; then
|
||||||
|
# Building on macOS
|
||||||
|
export MACOSX_DEPLOYMENT_TARGET=10.10
|
||||||
|
|
||||||
|
logInfo "Configuring build..."
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
|
||||||
|
-DCMAKE_PREFIX_PATH="/usr/local/opt/qt/lib/cmake" \
|
||||||
|
${CMAKE_OPTIONS} "$SRC_DIR"
|
||||||
|
|
||||||
|
logInfo "Compiling and packaging sources..."
|
||||||
|
make ${MAKE_OPTIONS} package
|
||||||
|
|
||||||
|
mv "./${APP_NAME}-${RELEASE_NAME}.dmg" ../
|
||||||
|
elif [ "$(uname -o)" == "Msys" ]; then
|
||||||
|
# Building on Windows with Msys2
|
||||||
|
logInfo "Configuring build..."
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off -G"MSYS Makefiles" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" $CMAKE_OPTIONS "$SRC_DIR"
|
||||||
|
|
||||||
|
logInfo "Compiling and packaging sources..."
|
||||||
|
mingw32-make ${MAKE_OPTIONS} preinstall
|
||||||
|
# Call cpack directly instead of calling make package.
|
||||||
|
# This is important because we want to build the MSI when making a
|
||||||
|
# release.
|
||||||
|
cpack -G "NSIS;ZIP;${CPACK_GENERATORS}"
|
||||||
|
|
||||||
|
mv "./${APP_NAME}-"*.* ../
|
||||||
|
else
|
||||||
|
mkdir -p "${OUTPUT_DIR}/bin-release"
|
||||||
|
|
||||||
|
# Building on Linux without Docker container
|
||||||
|
logInfo "Configuring build..."
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off $CMAKE_OPTIONS \
|
||||||
|
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
|
||||||
|
-DKEEPASSXC_DIST_TYPE=AppImage "$SRC_DIR"
|
||||||
|
|
||||||
|
logInfo "Compiling sources..."
|
||||||
|
make $MAKE_OPTIONS
|
||||||
|
|
||||||
|
logInfo "Installing to bin dir..."
|
||||||
|
make DESTDIR="${OUTPUT_DIR}/bin-release" install/strip
|
||||||
|
|
||||||
|
logInfo "Creating AppImage..."
|
||||||
|
${SRC_DIR}/AppImage-Recipe.sh "$APP_NAME" "$RELEASE_NAME"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
mkdir -p "${OUTPUT_DIR}/bin-release"
|
||||||
|
|
||||||
|
logInfo "Launching Docker container to compile sources..."
|
||||||
|
|
||||||
|
docker run --name "$DOCKER_CONTAINER_NAME" --rm \
|
||||||
|
--cap-add SYS_ADMIN --security-opt apparmor:unconfined --device /dev/fuse \
|
||||||
|
-e "CC=${CC}" -e "CXX=${CXX}" \
|
||||||
|
-v "$(realpath "$SRC_DIR"):/keepassxc/src:ro" \
|
||||||
|
-v "$(realpath "$OUTPUT_DIR"):/keepassxc/out:rw" \
|
||||||
|
"$DOCKER_IMAGE" \
|
||||||
|
bash -c "cd /keepassxc/out/build-release && \
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=Off $CMAKE_OPTIONS \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=\"${INSTALL_PREFIX}\" \
|
||||||
|
-DKEEPASSXC_DIST_TYPE=AppImage /keepassxc/src && \
|
||||||
|
make $MAKE_OPTIONS && make DESTDIR=/keepassxc/out/bin-release install/strip && \
|
||||||
|
/keepassxc/src/AppImage-Recipe.sh "$APP_NAME" "$RELEASE_NAME""
|
||||||
|
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "Docker build failed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "Build finished, Docker container terminated."
|
||||||
|
fi
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
logInfo "All done!"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# gpgsign command
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
gpgsign() {
|
||||||
|
local sign_files=()
|
||||||
|
|
||||||
|
while [ $# -ge 1 ]; do
|
||||||
|
local arg="$1"
|
||||||
|
case "$arg" in
|
||||||
|
-f|--files)
|
||||||
|
while [ "${2:0:1}" != "-" ] && [ $# -ge 2 ]; do
|
||||||
|
sign_files+=("$2")
|
||||||
|
shift
|
||||||
|
done ;;
|
||||||
|
|
||||||
|
-g|--gpg-key)
|
||||||
|
GPG_KEY="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-h|--help)
|
||||||
|
printUsage "gpgsign"
|
||||||
|
exit ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
logError "Unknown option '$arg'\n"
|
||||||
|
printUsage "gpgsign"
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${sign_files}" ]; then
|
||||||
|
logError "Missing arguments, --files is required!\n"
|
||||||
|
printUsage "gpgsign"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for f in "${sign_files[@]}"; do
|
||||||
|
if [ ! -f "$f" ]; then
|
||||||
|
exitError "File '${f}' does not exist or is not a file!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "Signing file '${f}' using release key..."
|
||||||
|
gpg --output "${f}.sig" --armor --local-user "$GPG_KEY" --detach-sig "$f"
|
||||||
|
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "Signing failed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "Creating digest for file '${f}'..."
|
||||||
|
local rp="$(realpath "$f")"
|
||||||
|
local bname="$(basename "$f")"
|
||||||
|
(cd "$(dirname "$rp")"; sha256sum "$bname" > "${bname}.DIGEST")
|
||||||
|
done
|
||||||
|
|
||||||
|
logInfo "All done!"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# appsign command
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
appsign() {
|
||||||
|
local sign_files=()
|
||||||
|
local signtool_key
|
||||||
|
local codesign_identity
|
||||||
|
|
||||||
|
while [ $# -ge 1 ]; do
|
||||||
|
local arg="$1"
|
||||||
|
case "$arg" in
|
||||||
|
-f|--files)
|
||||||
|
while [ "${2:0:1}" != "-" ] && [ $# -ge 2 ]; do
|
||||||
|
sign_files+=("$2")
|
||||||
|
shift
|
||||||
|
done ;;
|
||||||
|
|
||||||
|
-k|--signtool-key)
|
||||||
|
signtool_key="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-i|--identity)
|
||||||
|
codesign_identity="$2"
|
||||||
|
shift ;;
|
||||||
|
|
||||||
|
-h|--help)
|
||||||
|
printUsage "appsign"
|
||||||
|
exit ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
logError "Unknown option '$arg'\n"
|
||||||
|
printUsage "appsign"
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${sign_files}" ]; then
|
||||||
|
logError "Missing arguments, --files is required!\n"
|
||||||
|
printUsage "appsign"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for f in "${sign_files[@]}"; do
|
||||||
|
if [ ! -f "${f}" ]; then
|
||||||
|
exitError "File '${f}' does not exist or is not a file!"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$(uname -s)" == "Darwin" ]; then
|
||||||
|
if [ -z "${codesign_identity}" ]; then
|
||||||
|
logError "Missing arguments, --identity is required on macOS!\n"
|
||||||
|
printUsage "appsign"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
checkCodesignCommandExists
|
||||||
|
|
||||||
|
local orig_dir="$(pwd)"
|
||||||
|
for f in "${sign_files[@]}"; do
|
||||||
|
if [[ ${f: -4} == '.dmg' ]]; then
|
||||||
|
logInfo "Unpacking disk image '${f}'..."
|
||||||
|
local tmp_dir="/tmp/KeePassXC_${RANDOM}"
|
||||||
|
mkdir -p ${tmp_dir}/mnt
|
||||||
|
hdiutil attach -quiet -noautoopen -mountpoint ${tmp_dir}/mnt "${f}"
|
||||||
|
cd ${tmp_dir}
|
||||||
|
cp -a ./mnt ./app
|
||||||
|
hdiutil detach -quiet ${tmp_dir}/mnt
|
||||||
|
|
||||||
|
if [ ! -d ./app/KeePassXC.app ]; then
|
||||||
|
cd "${orig_dir}"
|
||||||
|
exitError "Unpacking failed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "Signing app using codesign..."
|
||||||
|
codesign --sign "${codesign_identity}" --verbose --deep ./app/KeePassXC.app
|
||||||
|
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
cd "${orig_dir}"
|
||||||
|
exitError "Signing failed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "Repacking disk image..."
|
||||||
|
hdiutil create \
|
||||||
|
-volname "KeePassXC" \
|
||||||
|
-size $((1000 * ($(du -sk ./app | cut -f1) + 5000))) \
|
||||||
|
-srcfolder ./app \
|
||||||
|
-fs HFS+ \
|
||||||
|
-fsargs "-c c=64,a=16,e=16" \
|
||||||
|
-format UDBZ \
|
||||||
|
"${tmp_dir}/$(basename "${f}")"
|
||||||
|
cd "${orig_dir}"
|
||||||
|
cp -f "${tmp_dir}/$(basename "${f}")" "${f}"
|
||||||
|
rm -Rf ${tmp_dir}
|
||||||
|
else
|
||||||
|
logInfo "Skipping non-DMG file '${f}'..."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
elif [ "$(uname -o)" == "Msys" ]; then
|
||||||
|
if [ -z "${signtool_key}" ]; then
|
||||||
|
logError "Missing arguments, --signtool-key is required on Windows!\n"
|
||||||
|
printUsage "appsign"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
checkOsslsigncodeCommandExists
|
||||||
|
|
||||||
|
if [[ ! -f "${signtool_key}" ]]; then
|
||||||
|
exitError "Key file was not found!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -s -p "Key password: " password
|
||||||
|
echo
|
||||||
|
|
||||||
|
for f in "${sign_files[@]}"; do
|
||||||
|
if [[ ${f: -4} == ".exe" ]]; then
|
||||||
|
logInfo "Signing file '${f}' using osslsigncode..."
|
||||||
|
# output a signed exe; we have to use a different name due to osslsigntool limitations
|
||||||
|
osslsigncode sign -pkcs12 "${signtool_key}" -pass "${password}" -n "KeePassXC" \
|
||||||
|
-t "http://timestamp.comodoca.com/authenticode" -in "${f}" -out "${f}.signed"
|
||||||
|
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
rm -f "${f}.signed"
|
||||||
|
exitError "Signing failed!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# overwrite the original exe with the signed exe
|
||||||
|
mv -f "${f}.signed" "${f}"
|
||||||
|
elif [[ ${f: -4} == ".msi" ]]; then
|
||||||
|
# Make sure we can find the signtool
|
||||||
|
checkSigntoolCommandExists
|
||||||
|
|
||||||
|
# osslsigncode does not succeed at signing MSI files at this time...
|
||||||
|
logInfo "Signing file '${f}' using Microsoft signtool..."
|
||||||
|
signtool sign -f "${signtool_key}" -p "${password}" -d "KeePassXC" \
|
||||||
|
-t "http://timestamp.comodoca.com/authenticode" "${f}"
|
||||||
|
|
||||||
|
if [ 0 -ne $? ]; then
|
||||||
|
exitError "Signing failed!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
logInfo "Skipping non-executable file '${f}'..."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
else
|
||||||
|
exitError "Unsupported platform for code signing!\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logInfo "All done!"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# parse global command line
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
MODE="$1"
|
||||||
|
shift
|
||||||
|
if [ "" == "$MODE" ]; then
|
||||||
|
logError "Missing arguments!\n"
|
||||||
|
printUsage
|
||||||
|
exit 1
|
||||||
|
elif [ "help" == "$MODE" ]; then
|
||||||
|
printUsage "$1"
|
||||||
|
exit
|
||||||
|
elif [ "check" == "$MODE" ] || [ "merge" == "$MODE" ] || [ "build" == "$MODE" ] || [ "gpgsign" == "$MODE" ] || [ "appsign" == "$MODE" ]; then
|
||||||
|
${MODE} "$@"
|
||||||
|
else
|
||||||
|
printUsage "$MODE"
|
||||||
|
fi
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
# Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
|
# Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
|
||||||
|
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -13,14 +14,127 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
add_subdirectory(translations)
|
||||||
|
|
||||||
|
file(GLOB wordlists_files "wordlists/*.wordlist")
|
||||||
|
install(FILES ${wordlists_files} DESTINATION ${DATA_INSTALL_DIR}/wordlists)
|
||||||
|
|
||||||
file(GLOB DATABASE_ICONS icons/database/*.png)
|
file(GLOB DATABASE_ICONS icons/database/*.png)
|
||||||
|
|
||||||
install(FILES ${DATABASE_ICONS} DESTINATION ${DATA_INSTALL_DIR}/icons/database)
|
install(FILES ${DATABASE_ICONS} DESTINATION ${DATA_INSTALL_DIR}/icons/database)
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
install(DIRECTORY icons/application/ DESTINATION share/icons/hicolor
|
install(DIRECTORY icons/application/ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor
|
||||||
FILES_MATCHING PATTERN "*.png" PATTERN "*.svgz")
|
FILES_MATCHING PATTERN "keepassx*.png" PATTERN "keepassx*.svgz"
|
||||||
else(UNIX AND NOT APPLE)
|
PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE PATTERN "categories" EXCLUDE)
|
||||||
install(DIRECTORY icons/application/ DESTINATION ${DATA_INSTALL_DIR}/icons/application
|
install(DIRECTORY icons/application/ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor
|
||||||
FILES_MATCHING PATTERN "*.png" PATTERN "*.svgz")
|
FILES_MATCHING PATTERN "application-x-keepassxc.png" PATTERN "application-x-keepassxc.svgz"
|
||||||
|
PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE PATTERN "categories" EXCLUDE)
|
||||||
|
install(FILES linux/org.keepassxc.KeePassXC.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||||
|
install(FILES linux/org.keepassxc.KeePassXC.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
||||||
|
install(FILES linux/keepassxc.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages)
|
||||||
endif(UNIX AND NOT APPLE)
|
endif(UNIX AND NOT APPLE)
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
install(FILES macosx/keepassxc.icns DESTINATION ${DATA_INSTALL_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(DIRECTORY icons/application/ DESTINATION ${DATA_INSTALL_DIR}/icons/application
|
||||||
|
FILES_MATCHING PATTERN "*.png" PATTERN "*.svgz")
|
||||||
|
|
||||||
|
add_custom_target(icons
|
||||||
|
# SVGZ to PNGs for KeePassXC
|
||||||
|
COMMAND inkscape -z -w 16 -h 16
|
||||||
|
icons/application/scalable/apps/keepassxc.svgz -e icons/application/16x16/apps/keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 24 -h 24
|
||||||
|
icons/application/scalable/apps/keepassxc.svgz -e icons/application/24x24/apps/keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 32 -h 32
|
||||||
|
icons/application/scalable/apps/keepassxc.svgz -e icons/application/32x32/apps/keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 48 -h 48
|
||||||
|
icons/application/scalable/apps/keepassxc.svgz -e icons/application/48x48/apps/keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 64 -h 64
|
||||||
|
icons/application/scalable/apps/keepassxc.svgz -e icons/application/64x64/apps/keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 128 -h 128
|
||||||
|
icons/application/scalable/apps/keepassxc.svgz -e icons/application/128x128/apps/keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 256 -h 256
|
||||||
|
icons/application/scalable/apps/keepassxc.svgz -e icons/application/256x256/apps/keepassxc.png
|
||||||
|
|
||||||
|
# SVGZ to PNGs for KeePassXC
|
||||||
|
COMMAND inkscape -z -w 16 -h 16
|
||||||
|
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/16x16/apps/keepassxc-dark.png
|
||||||
|
COMMAND inkscape -z -w 24 -h 24
|
||||||
|
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/24x24/apps/keepassxc-dark.png
|
||||||
|
COMMAND inkscape -z -w 32 -h 32
|
||||||
|
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/32x32/apps/keepassxc-dark.png
|
||||||
|
COMMAND inkscape -z -w 48 -h 48
|
||||||
|
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/48x48/apps/keepassxc-dark.png
|
||||||
|
COMMAND inkscape -z -w 64 -h 64
|
||||||
|
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/64x64/apps/keepassxc-dark.png
|
||||||
|
COMMAND inkscape -z -w 128 -h 128
|
||||||
|
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/128x128/apps/keepassxc-dark.png
|
||||||
|
COMMAND inkscape -z -w 256 -h 256
|
||||||
|
icons/application/scalable/apps/keepassxc-dark.svgz -e icons/application/256x256/apps/keepassxc-dark.png
|
||||||
|
|
||||||
|
# SVGZ to PNGs for KeePassXC
|
||||||
|
COMMAND inkscape -z -w 16 -h 16
|
||||||
|
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/16x16/apps/keepassxc-locked.png
|
||||||
|
COMMAND inkscape -z -w 24 -h 24
|
||||||
|
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/24x24/apps/keepassxc-locked.png
|
||||||
|
COMMAND inkscape -z -w 32 -h 32
|
||||||
|
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/32x32/apps/keepassxc-locked.png
|
||||||
|
COMMAND inkscape -z -w 48 -h 48
|
||||||
|
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/48x48/apps/keepassxc-locked.png
|
||||||
|
COMMAND inkscape -z -w 64 -h 64
|
||||||
|
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/64x64/apps/keepassxc-locked.png
|
||||||
|
COMMAND inkscape -z -w 128 -h 128
|
||||||
|
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/128x128/apps/keepassxc-locked.png
|
||||||
|
COMMAND inkscape -z -w 256 -h 256
|
||||||
|
icons/application/scalable/apps/keepassxc-locked.svgz -e icons/application/256x256/apps/keepassxc-locked.png
|
||||||
|
|
||||||
|
# SVGZ to PNGs for KeePassXC
|
||||||
|
COMMAND inkscape -z -w 16 -h 16
|
||||||
|
icons/application/scalable/apps/keepassxc-unlocked.svgz -e icons/application/16x16/apps/keepassxc-unlocked.png
|
||||||
|
COMMAND inkscape -z -w 24 -h 24
|
||||||
|
icons/application/scalable/apps/keepassxc-unlocked.svgz -e icons/application/24x24/apps/keepassxc-unlocked.png
|
||||||
|
COMMAND inkscape -z -w 32 -h 32
|
||||||
|
icons/application/scalable/apps/keepassxc-unlocked.svgz -e icons/application/32x32/apps/keepassxc-unlocked.png
|
||||||
|
COMMAND inkscape -z -w 48 -h 48
|
||||||
|
icons/application/scalable/apps/keepassxc-unlocked.svgz -e icons/application/48x48/apps/keepassxc-unlocked.png
|
||||||
|
COMMAND inkscape -z -w 64 -h 64
|
||||||
|
icons/application/scalable/apps/keepassxc-unlocked.svgz -e icons/application/64x64/apps/keepassxc-unlocked.png
|
||||||
|
COMMAND inkscape -z -w 128 -h 128
|
||||||
|
icons/application/scalable/apps/keepassxc-unlocked.svgz -e icons/application/128x128/apps/keepassxc-unlocked.png
|
||||||
|
COMMAND inkscape -z -w 256 -h 256
|
||||||
|
icons/application/scalable/apps/keepassxc-unlocked.svgz -e icons/application/256x256/apps/keepassxc-unlocked.png
|
||||||
|
|
||||||
|
# SVGZ to PNGs for KeePassXC MIME-Type
|
||||||
|
COMMAND inkscape -z -w 16 -h 16
|
||||||
|
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/16x16/mimetypes/application-x-keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 22 -h 22
|
||||||
|
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/22x22/mimetypes/application-x-keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 32 -h 32
|
||||||
|
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/32x32/mimetypes/application-x-keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 64 -h 64
|
||||||
|
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/64x64/mimetypes/application-x-keepassxc.png
|
||||||
|
COMMAND inkscape -z -w 128 -h 128
|
||||||
|
icons/application/scalable/mimetypes/application-x-keepassxc.svgz -e icons/application/128x128/mimetypes/application-x-keepassxc.png
|
||||||
|
|
||||||
|
# ICNS for MacOS
|
||||||
|
COMMAND png2icns macosx/keepassxc.icns
|
||||||
|
icons/application/16x16/apps/keepassxc.png
|
||||||
|
icons/application/32x32/apps/keepassxc.png
|
||||||
|
icons/application/48x48/apps/keepassxc.png
|
||||||
|
icons/application/128x128/apps/keepassxc.png
|
||||||
|
icons/application/256x256/apps/keepassxc.png
|
||||||
|
|
||||||
|
# ICO for Windows
|
||||||
|
COMMAND icotool -c -o windows/keepassxc.ico
|
||||||
|
icons/application/16x16/apps/keepassxc.png
|
||||||
|
icons/application/24x24/apps/keepassxc.png
|
||||||
|
icons/application/32x32/apps/keepassxc.png
|
||||||
|
icons/application/48x48/apps/keepassxc.png
|
||||||
|
icons/application/64x64/apps/keepassxc.png
|
||||||
|
icons/application/128x128/apps/keepassxc.png
|
||||||
|
icons/application/256x256/apps/keepassxc.png
|
||||||
|
VERBATIM
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 13 KiB |
BIN
share/icons/application/128x128/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
share/icons/application/128x128/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
share/icons/application/128x128/apps/keepassxc-unlocked.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
share/icons/application/128x128/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
BIN
share/icons/application/16x16/actions/application-exit.png
Normal file
|
After Width: | Height: | Size: 842 B |
BIN
share/icons/application/16x16/actions/auto-type.png
Normal file
|
After Width: | Height: | Size: 864 B |
BIN
share/icons/application/16x16/actions/configure.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
share/icons/application/16x16/actions/database-change-key.png
Normal file
|
After Width: | Height: | Size: 774 B |
BIN
share/icons/application/16x16/actions/document-close.png
Normal file
|
After Width: | Height: | Size: 605 B |
BIN
share/icons/application/16x16/actions/document-edit.png
Normal file
|
After Width: | Height: | Size: 672 B |
BIN
share/icons/application/16x16/actions/document-encrypt.png
Normal file
|
After Width: | Height: | Size: 452 B |
BIN
share/icons/application/16x16/actions/document-new.png
Normal file
|
After Width: | Height: | Size: 517 B |
BIN
share/icons/application/16x16/actions/document-open.png
Normal file
|
After Width: | Height: | Size: 702 B |
BIN
share/icons/application/16x16/actions/document-save-as.png
Normal file
|
After Width: | Height: | Size: 771 B |
BIN
share/icons/application/16x16/actions/document-save.png
Normal file
|
After Width: | Height: | Size: 559 B |
|
After Width: | Height: | Size: 793 B |
|
After Width: | Height: | Size: 579 B |
BIN
share/icons/application/16x16/actions/entry-clone.png
Normal file
|
After Width: | Height: | Size: 850 B |
BIN
share/icons/application/16x16/actions/entry-delete.png
Normal file
|
After Width: | Height: | Size: 808 B |
BIN
share/icons/application/16x16/actions/entry-edit.png
Normal file
|
After Width: | Height: | Size: 944 B |
BIN
share/icons/application/16x16/actions/entry-new.png
Normal file
|
After Width: | Height: | Size: 986 B |
BIN
share/icons/application/16x16/actions/group-delete.png
Normal file
|
After Width: | Height: | Size: 627 B |
BIN
share/icons/application/16x16/actions/group-edit.png
Normal file
|
After Width: | Height: | Size: 608 B |
BIN
share/icons/application/16x16/actions/group-empty-trash.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
share/icons/application/16x16/actions/group-new.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
share/icons/application/16x16/actions/help-about.png
Normal file
|
After Width: | Height: | Size: 699 B |
BIN
share/icons/application/16x16/actions/message-close.png
Normal file
|
After Width: | Height: | Size: 360 B |
BIN
share/icons/application/16x16/actions/paperclip.png
Normal file
|
After Width: | Height: | Size: 478 B |
BIN
share/icons/application/16x16/actions/password-copy.png
Normal file
|
After Width: | Height: | Size: 677 B |
BIN
share/icons/application/16x16/actions/password-generate.png
Normal file
|
After Width: | Height: | Size: 1015 B |
BIN
share/icons/application/16x16/actions/password-generator.png
Normal file
|
After Width: | Height: | Size: 733 B |
BIN
share/icons/application/16x16/actions/password-show-off.png
Normal file
|
After Width: | Height: | Size: 783 B |
BIN
share/icons/application/16x16/actions/password-show-on.png
Normal file
|
After Width: | Height: | Size: 838 B |
BIN
share/icons/application/16x16/actions/system-search.png
Normal file
|
After Width: | Height: | Size: 755 B |
BIN
share/icons/application/16x16/actions/url-copy.png
Normal file
|
After Width: | Height: | Size: 821 B |
BIN
share/icons/application/16x16/actions/username-copy.png
Normal file
|
After Width: | Height: | Size: 787 B |
|
Before Width: | Height: | Size: 814 B |
BIN
share/icons/application/16x16/apps/keepassxc-dark.png
Normal file
|
After Width: | Height: | Size: 838 B |
BIN
share/icons/application/16x16/apps/keepassxc-locked.png
Normal file
|
After Width: | Height: | Size: 863 B |
BIN
share/icons/application/16x16/apps/keepassxc-unlocked.png
Normal file
|
After Width: | Height: | Size: 880 B |
BIN
share/icons/application/16x16/apps/keepassxc.png
Normal file
|
After Width: | Height: | Size: 880 B |
|
After Width: | Height: | Size: 715 B |
BIN
share/icons/application/22x22/actions/auto-type.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
share/icons/application/22x22/actions/chronometer.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
share/icons/application/22x22/actions/database-change-key.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
share/icons/application/22x22/actions/dialog-close.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
share/icons/application/22x22/actions/dialog-ok.png
Normal file
|
After Width: | Height: | Size: 723 B |
BIN
share/icons/application/22x22/actions/document-encrypt.png
Normal file
|
After Width: | Height: | Size: 604 B |
BIN
share/icons/application/22x22/actions/document-new.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
share/icons/application/22x22/actions/document-open.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
share/icons/application/22x22/actions/document-save.png
Normal file
|
After Width: | Height: | Size: 798 B |
BIN
share/icons/application/22x22/actions/entry-clone.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
share/icons/application/22x22/actions/entry-delete.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
share/icons/application/22x22/actions/entry-edit.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
share/icons/application/22x22/actions/entry-new.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
share/icons/application/22x22/actions/group-empty-trash.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
share/icons/application/22x22/actions/help-about.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
share/icons/application/22x22/actions/message-close.png
Normal file
|
After Width: | Height: | Size: 457 B |
BIN
share/icons/application/22x22/actions/paperclip.png
Normal file
|
After Width: | Height: | Size: 574 B |