Compare commits
507 Commits
feature/up
...
2.7.7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68e2dd8d22 | ||
|
|
bbd1604894 | ||
|
|
976c6914a6 | ||
|
|
cde88546f3 | ||
|
|
fff1b49f73 | ||
|
|
18cfbf729c | ||
|
|
6f112b11e4 | ||
|
|
ee1268c518 | ||
|
|
d78a6b6095 | ||
|
|
63b18084ac | ||
|
|
7d0dc67180 | ||
|
|
f20b531430 | ||
|
|
28d096a89a | ||
|
|
350931b707 | ||
|
|
b7a1c620e4 | ||
|
|
067deb9bd7 | ||
|
|
99e42b1fce | ||
|
|
53d06f127d | ||
|
|
3094302bcc | ||
|
|
b504c72563 | ||
|
|
b1168d0233 | ||
|
|
3ca757883f | ||
|
|
c76d9e45e7 | ||
|
|
a23b4f4dc0 | ||
|
|
e6d2e5fe6e | ||
|
|
c9b0cbaa4e | ||
|
|
762fd9462f | ||
|
|
394c0375b7 | ||
|
|
4cf5e83c38 | ||
|
|
cb5d3ed21d | ||
|
|
4bd9fdd7a4 | ||
|
|
fe739578ab | ||
|
|
3f77678b5c | ||
|
|
c477f43c40 | ||
|
|
7371589955 | ||
|
|
1cbbcff259 | ||
|
|
416581b179 | ||
|
|
82c1bf4ddb | ||
|
|
7f33868d14 | ||
|
|
c5312d63f2 | ||
|
|
e401e8f4bc | ||
|
|
159c7cf153 | ||
|
|
5686776e53 | ||
|
|
05ab5b1700 | ||
|
|
be873c83d6 | ||
|
|
87c24222b8 | ||
|
|
dd21defcf3 | ||
|
|
25d46fbc03 | ||
|
|
742a4f8980 | ||
|
|
e84d6c0b06 | ||
|
|
636d013557 | ||
|
|
3e6b118267 | ||
|
|
eee4ca9a26 | ||
|
|
aecd154399 | ||
|
|
f293aad74f | ||
|
|
5804e63559 | ||
|
|
fb2664b54a | ||
|
|
10f4704724 | ||
|
|
ea77ee686d | ||
|
|
09bda6a882 | ||
|
|
6fb498648d | ||
|
|
5b47190fcc | ||
|
|
663d4d99ae | ||
|
|
4ea0a1058c | ||
|
|
55ca5ca34c | ||
|
|
cdf6cd7cd2 | ||
|
|
4c1105f968 | ||
|
|
a81771207f | ||
|
|
2fe647fd7a | ||
|
|
33b740ddd0 | ||
|
|
f30604c6f6 | ||
|
|
e9ea5b43ec | ||
|
|
76a7dc79f4 | ||
|
|
1594e5f4e3 | ||
|
|
13a71ff1c8 | ||
|
|
fa73f100f7 | ||
|
|
b8da5e0577 | ||
|
|
6165975bdc | ||
|
|
10891a403d | ||
|
|
37dabd2561 | ||
|
|
9d0537bdab | ||
|
|
063bf4a58d | ||
|
|
d5d9a4c08c | ||
|
|
eddd97fbab | ||
|
|
53f88b93fb | ||
|
|
59042563b3 | ||
|
|
74d96fc06f | ||
|
|
9c1a01ffe8 | ||
|
|
4b92838b4f | ||
|
|
b225b85644 | ||
|
|
ebc0b3ff5f | ||
|
|
64281b508b | ||
|
|
6c9078c870 | ||
|
|
6b51c66c68 | ||
|
|
d04a6c4eb7 | ||
|
|
28e2806e07 | ||
|
|
6182b605c0 | ||
|
|
8077cd028d | ||
|
|
761e1aed58 | ||
|
|
ee44a7fd70 | ||
|
|
058e6d15c1 | ||
|
|
83720e6960 | ||
|
|
86550f2253 | ||
|
|
881e6b5a8b | ||
|
|
102ce04b2d | ||
|
|
90bbb66409 | ||
|
|
df40742223 | ||
|
|
f7920c12d5 | ||
|
|
51a08fc85e | ||
|
|
655202a35a | ||
|
|
cbbabf477a | ||
|
|
0167ce60bd | ||
|
|
d362b51450 | ||
|
|
95aaa96fb8 | ||
|
|
fa53c79ecf | ||
|
|
27668b81a5 | ||
|
|
f1a5e1c899 | ||
|
|
ae55d88544 | ||
|
|
25fc69dcd4 | ||
|
|
1bb215156e | ||
|
|
758d6f0c8d | ||
|
|
798fee338b | ||
|
|
9253a59f05 | ||
|
|
18857cb60b | ||
|
|
7bdcf05fc3 | ||
|
|
32d115d22e | ||
|
|
2e0d66039d | ||
|
|
acb37db6f1 | ||
|
|
0e1b32adcd | ||
|
|
c20104e67c | ||
|
|
32f2710430 | ||
|
|
605f13ed4a | ||
|
|
a6a4ed6ed4 | ||
|
|
c3bd31c51b | ||
|
|
90c63483c1 | ||
|
|
3383882b95 | ||
|
|
d5adf7592c | ||
|
|
9ba88e2f13 | ||
|
|
772964886e | ||
|
|
70b73524c6 | ||
|
|
a459344078 | ||
|
|
63b2394ed0 | ||
|
|
cdb10dce0c | ||
|
|
9b5b1d6dce | ||
|
|
c231abe13d | ||
|
|
d81f6ea1c0 | ||
|
|
1012d715b2 | ||
|
|
a1a5e21834 | ||
|
|
bc147070b6 | ||
|
|
9176ddc3e1 | ||
|
|
4f07a6592c | ||
|
|
3ad205f733 | ||
|
|
f01608f2bb | ||
|
|
fa4837c67b | ||
|
|
af466b120e | ||
|
|
ce790dcd3a | ||
|
|
e1d9a4fb53 | ||
|
|
d8483d3350 | ||
|
|
2d13588c95 | ||
|
|
acf1d6b1ac | ||
|
|
2ac1e0ed49 | ||
|
|
0a0389ad56 | ||
|
|
9d2f3d53d6 | ||
|
|
9bd4c785e6 | ||
|
|
c203ee7f09 | ||
|
|
047251a07f | ||
|
|
a6db8ba2db | ||
|
|
71b1df39eb | ||
|
|
82f056e5d0 | ||
|
|
edae652d6f | ||
|
|
b1f868cd6c | ||
|
|
08f7c6f863 | ||
|
|
7fa3e6ef90 | ||
|
|
035c99896b | ||
|
|
b56cc62942 | ||
|
|
3e3990934a | ||
|
|
faa4c07095 | ||
|
|
245dccf91c | ||
|
|
c6d4fd6d31 | ||
|
|
14d0732e1d | ||
|
|
dc07f01418 | ||
|
|
3fa513a78d | ||
|
|
0480c45d5c | ||
|
|
44fa40ca72 | ||
|
|
285f8981f8 | ||
|
|
00c019c8c2 | ||
|
|
3746452b88 | ||
|
|
643ab4e95d | ||
|
|
4978184480 | ||
|
|
d80be4c459 | ||
|
|
31924fcd89 | ||
|
|
87cd9c6fb9 | ||
|
|
8654b25e80 | ||
|
|
f95019964e | ||
|
|
59d20cb7ae | ||
|
|
e83c9734e0 | ||
|
|
f4510c64ec | ||
|
|
64dda09565 | ||
|
|
de168959a5 | ||
|
|
ee55143c4a | ||
|
|
5b923aee1a | ||
|
|
f3d448485a | ||
|
|
28328a7080 | ||
|
|
fab76c04cc | ||
|
|
74e1e7c9d1 | ||
|
|
7de9ab25ab | ||
|
|
233be1fc10 | ||
|
|
bad015115d | ||
|
|
e7e75c1277 | ||
|
|
e245701533 | ||
|
|
0cbfbc08f3 | ||
|
|
731c89cc1c | ||
|
|
b75abaad08 | ||
|
|
40316ac7b9 | ||
|
|
c4f625a3d1 | ||
|
|
d954519e10 | ||
|
|
f0a7c636a4 | ||
|
|
bfeb75c900 | ||
|
|
19bd6069d7 | ||
|
|
60d4e06531 | ||
|
|
9150febd02 | ||
|
|
d8d5ddcab6 | ||
|
|
8190b20efe | ||
|
|
989348bbfb | ||
|
|
679b93b601 | ||
|
|
d1d191e2b0 | ||
|
|
6f619271c4 | ||
|
|
3163547096 | ||
|
|
6da7188ecf | ||
|
|
35285d72bb | ||
|
|
07755c324a | ||
|
|
8711d31f24 | ||
|
|
a3c24b4bbc | ||
|
|
4d20cb1654 | ||
|
|
7e8a672de4 | ||
|
|
107dcae26c | ||
|
|
121d54c96a | ||
|
|
6f28b5e2ba | ||
|
|
dca70f809d | ||
|
|
750a3383ca | ||
|
|
dda70e1453 | ||
|
|
5916a8f8dd | ||
|
|
4ffdc98512 | ||
|
|
9f402885d8 | ||
|
|
6b0eeb9722 | ||
|
|
a98bf1eac3 | ||
|
|
7cd824ae1c | ||
|
|
31db3c325d | ||
|
|
656e6161a0 | ||
|
|
44be95cc1b | ||
|
|
48a3fd8e3c | ||
|
|
7d7c635423 | ||
|
|
097be1a5cd | ||
|
|
c5d25ac371 | ||
|
|
dd5217734c | ||
|
|
41061cfde8 | ||
|
|
d8da81d87c | ||
|
|
2b8d670f17 | ||
|
|
aca197a96f | ||
|
|
044fc8d50c | ||
|
|
5c45cf2d76 | ||
|
|
7eb7172635 | ||
|
|
02602da257 | ||
|
|
ad61d71c6e | ||
|
|
fc5a07b46d | ||
|
|
01b15fbeba | ||
|
|
c33995e075 | ||
|
|
4178e72fe0 | ||
|
|
7dc2d236df | ||
|
|
eac60b3228 | ||
|
|
75e857bbfc | ||
|
|
11351613ed | ||
|
|
3d04e2b86e | ||
|
|
7d3c3b09fb | ||
|
|
1e73d549ed | ||
|
|
9e21df2515 | ||
|
|
c5f40a55e7 | ||
|
|
5239ecc780 | ||
|
|
acfad54ae3 | ||
|
|
ab153a24ec | ||
|
|
60f7744ec6 | ||
|
|
1ca358f3fd | ||
|
|
17aefc3cf7 | ||
|
|
cf5429a39b | ||
|
|
4cc5850c86 | ||
|
|
7da9899c48 | ||
|
|
5c772cea1a | ||
|
|
9569438295 | ||
|
|
68113f8f3f | ||
|
|
e488452ef3 | ||
|
|
8a7eb36950 | ||
|
|
392cab2e36 | ||
|
|
747c2ef28f | ||
|
|
c363e4a969 | ||
|
|
ed7acf358a | ||
|
|
e07d143c9b | ||
|
|
e6a6ba7d63 | ||
|
|
4bc32d37ac | ||
|
|
1ae0d772c4 | ||
|
|
8f76ea3106 | ||
|
|
0ad75ccb8f | ||
|
|
a2140d7081 | ||
|
|
e5a2958458 | ||
|
|
93624c3700 | ||
|
|
abfebea4f2 | ||
|
|
046e50882b | ||
|
|
ab007c4815 | ||
|
|
18704f5a19 | ||
|
|
e85425050b | ||
|
|
f3b0fe46b4 | ||
|
|
7284a8062a | ||
|
|
6791024995 | ||
|
|
4f0710350f | ||
|
|
a76daeb4c5 | ||
|
|
acce1bc5ce | ||
|
|
bfbc0e5ec6 | ||
|
|
0701d1d6cd | ||
|
|
d10c5a4e2a | ||
|
|
58615d78bd | ||
|
|
1150b69836 | ||
|
|
5927821896 | ||
|
|
86ba58da06 | ||
|
|
bc55974ff3 | ||
|
|
84f245badb | ||
|
|
07564d533a | ||
|
|
6897787d8f | ||
|
|
3c824cb500 | ||
|
|
064d621846 | ||
|
|
9b7e54947b | ||
|
|
b29e8fb0b5 | ||
|
|
6a12f450e6 | ||
|
|
bce8c84c26 | ||
|
|
c914c116e4 | ||
|
|
98beb0e5a1 | ||
|
|
7f92504a2d | ||
|
|
4a21cee98c | ||
|
|
56a1b465a1 | ||
|
|
7efaca6fbe | ||
|
|
cd642e7fee | ||
|
|
15d1b2f0ab | ||
|
|
12990e59ad | ||
|
|
c88d8c870f | ||
|
|
456726556d | ||
|
|
12d16f67ae | ||
|
|
d16fc2d62a | ||
|
|
6c4a82bd51 | ||
|
|
a0a063b57f | ||
|
|
b3896f2600 | ||
|
|
d8c62f8eba | ||
|
|
606096278b | ||
|
|
d3d7bd7b81 | ||
|
|
2fb1c076d4 | ||
|
|
dc7ad6c1b7 | ||
|
|
61e378077e | ||
|
|
296cbf0df7 | ||
|
|
d3b28f8651 | ||
|
|
a3dc977e58 | ||
|
|
67603ab42e | ||
|
|
c94efe6b5c | ||
|
|
c872e406ed | ||
|
|
835e31ac3c | ||
|
|
390e14b2c6 | ||
|
|
70e62d90db | ||
|
|
e5822974ac | ||
|
|
cd9ef58e98 | ||
|
|
ffaeac130f | ||
|
|
035757e228 | ||
|
|
e5065a01c8 | ||
|
|
c37e2d3d69 | ||
|
|
004f2b6801 | ||
|
|
6f5bbf7ad1 | ||
|
|
84ff6a13f9 | ||
|
|
8d7e491810 | ||
|
|
7d37f65ad0 | ||
|
|
7811f10dba | ||
|
|
bb88ad6e8c | ||
|
|
3b1acd0831 | ||
|
|
20db504c3a | ||
|
|
55f2bd41aa | ||
|
|
dd41f093e6 | ||
|
|
2a9d92faeb | ||
|
|
c8f135aaed | ||
|
|
9fc30265c8 | ||
|
|
9aa30c4e72 | ||
|
|
3ecc0c70e2 | ||
|
|
8b6d0e4b12 | ||
|
|
a31c5ba006 | ||
|
|
b6716bdfe5 | ||
|
|
c7cdce6e33 | ||
|
|
be6835e42f | ||
|
|
3b3bc42e10 | ||
|
|
f2aa32c7b0 | ||
|
|
484bc5dd01 | ||
|
|
bd744d1e32 | ||
|
|
d82abf0be5 | ||
|
|
6c18b10979 | ||
|
|
2514c1d5c5 | ||
|
|
e660802fac | ||
|
|
5ec2686024 | ||
|
|
60cfba8e46 | ||
|
|
860fcfd78d | ||
|
|
c07a57d141 | ||
|
|
6ded326de7 | ||
|
|
17d51b558e | ||
|
|
1dbec40be9 | ||
|
|
405d3ee1ca | ||
|
|
6d1fc31e96 | ||
|
|
cc39f9ec23 | ||
|
|
c90ab2b9cb | ||
|
|
e8a32cc6a8 | ||
|
|
9c2ae81f19 | ||
|
|
10b4854915 | ||
|
|
626a4910ca | ||
|
|
8cbc327f90 | ||
|
|
fd2992913e | ||
|
|
1c529cbd20 | ||
|
|
c766f9c77d | ||
|
|
62ec2e8331 | ||
|
|
9735e43ecb | ||
|
|
3a0ec33c56 | ||
|
|
d375ad14d7 | ||
|
|
c198541b6f | ||
|
|
7ff8720a39 | ||
|
|
e6bf8463d9 | ||
|
|
486779cce7 | ||
|
|
973557a9f9 | ||
|
|
3cb4ac37ba | ||
|
|
6d79d2ffc4 | ||
|
|
2ed2b7118f | ||
|
|
59ebb360e2 | ||
|
|
18183ebac0 | ||
|
|
fac4d4c85c | ||
|
|
b0821c0435 | ||
|
|
2776758f14 | ||
|
|
163fffe8f4 | ||
|
|
8bf0c8f800 | ||
|
|
3fe4ff93e1 | ||
|
|
16bf725dc4 | ||
|
|
afa58b79a9 | ||
|
|
5ba0639f47 | ||
|
|
a8b65741ea | ||
|
|
7c9109d973 | ||
|
|
064893830d | ||
|
|
6760a7f5ca | ||
|
|
da2d86789e | ||
|
|
e2b4900541 | ||
|
|
8bc75c1840 | ||
|
|
2c63f2f8c5 | ||
|
|
9a669cc17f | ||
|
|
2d64592d85 | ||
|
|
a03fa1c9bc | ||
|
|
a59fd43cc0 | ||
|
|
635abaee51 | ||
|
|
c331cbc8ab | ||
|
|
85f70c29bd | ||
|
|
a8da1587b6 | ||
|
|
2b0a1fc63f | ||
|
|
a46231a39a | ||
|
|
eeba485f95 | ||
|
|
4c10e516c3 | ||
|
|
e3c7b570ae | ||
|
|
9aec84dee7 | ||
|
|
34ed63f495 | ||
|
|
0c6587b5b7 | ||
|
|
24a23ce66e | ||
|
|
e6798112be | ||
|
|
470129091a | ||
|
|
b37dbe7dd5 | ||
|
|
6e27dd8db5 | ||
|
|
0450bf3487 | ||
|
|
53dcafaa58 | ||
|
|
37d29b5e8c | ||
|
|
e8f2c9d126 | ||
|
|
ec81d2bc3f | ||
|
|
d2c74340a3 | ||
|
|
250cd1933c | ||
|
|
986fa42ca8 | ||
|
|
3a1560d2f6 | ||
|
|
93f0fef1e1 | ||
|
|
af9eb6d6b1 | ||
|
|
746276edea | ||
|
|
5e68cd2fa2 | ||
|
|
0413662136 | ||
|
|
38a60df40b | ||
|
|
304cb44d0d | ||
|
|
bc5d0df19e | ||
|
|
0921bf2d61 | ||
|
|
4af0c18f33 | ||
|
|
8753347f69 | ||
|
|
089c8df01d | ||
|
|
9b2b861a2a | ||
|
|
6b14b5dc27 | ||
|
|
f770edb6d3 | ||
|
|
724f691e15 | ||
|
|
7cb2991a13 | ||
|
|
6a8b070b0a | ||
|
|
a0912b057e | ||
|
|
25a34a66e1 | ||
|
|
11afd73117 | ||
|
|
33bf6eb892 | ||
|
|
6acd0b25ae | ||
|
|
1f50ac6045 | ||
|
|
44954fc0ac | ||
|
|
3d9877a7c7 | ||
|
|
64cb1553d0 | ||
|
|
81a66c439c | ||
|
|
66c3026cf5 |
@@ -85,4 +85,3 @@ Standard: Cpp11
|
|||||||
TabWidth: 4
|
TabWidth: 4
|
||||||
UseTab: Never
|
UseTab: Never
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|||||||
3
.gitattributes
vendored
@@ -14,3 +14,6 @@ AppImage-Recipe.sh export-ignore
|
|||||||
|
|
||||||
# binary files
|
# binary files
|
||||||
*.ai binary
|
*.ai binary
|
||||||
|
|
||||||
|
# Line endings harmony
|
||||||
|
* text=auto
|
||||||
|
|||||||
13
.github/CONTRIBUTING.md
vendored
@@ -63,7 +63,7 @@ Before submitting a bug report, check if the problem has already been reported.
|
|||||||
|
|
||||||
### Discuss with the team
|
### 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)).
|
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, on the [Matrix development channel](https://matrix.to/#/!RhJPJPGwQIFVQeXqZa:matrix.org?via=matrix.org), or in the IRC channel on Libera.Chat (`#keepassxc-dev` on `irc.libera.chat`, or use a [webchat link](https://web.libera.chat/#keepassxc-dev)).
|
||||||
|
|
||||||
### Your first code contribution
|
### Your first code contribution
|
||||||
|
|
||||||
@@ -85,16 +85,23 @@ All pull requests must comply with the above requirements and with the [stylegui
|
|||||||
Translations are managed on [Transifex](https://www.transifex.com/keepassxc/keepassxc/) which offers a web interface.
|
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.
|
Please join an existing language team or request a new one if there is none.
|
||||||
|
|
||||||
|
If you open a Pull Request with new strings that require translations, you will need to run the following:
|
||||||
|
```
|
||||||
|
./release-tool i18n lupdate
|
||||||
|
```
|
||||||
|
This will make the new strings available for translation in Transifex.
|
||||||
|
|
||||||
## Styleguides
|
## Styleguides
|
||||||
|
|
||||||
### Git branch strategy
|
### Git branch strategy
|
||||||
|
|
||||||
The Branch Strategy is based on [git-flow-lite](http://nvie.com/posts/a-successful-git-branching-model/).
|
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
|
* **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)
|
* **feature/**[name] – points to a branch with a new feature, one which is candidate for merge into develop (subject to rebase)
|
||||||
* **hotfix/**[name] – points to a branch with a fix for a particular issue ID
|
* **fix/**[name] – points to a branch with a fix for a particular issue ID
|
||||||
|
|
||||||
|
Note: The **latest** tag is used to point to the most recent stable release.
|
||||||
|
|
||||||
|
|
||||||
### Git commit messages
|
### Git commit messages
|
||||||
|
|||||||
4
.github/pull.yml
vendored
@@ -3,10 +3,6 @@
|
|||||||
# pull from: https://github.com/keepassxreboot/keepassxc
|
# pull from: https://github.com/keepassxreboot/keepassxc
|
||||||
version: "1"
|
version: "1"
|
||||||
rules:
|
rules:
|
||||||
- base: master
|
|
||||||
upstream: keepassxreboot:master
|
|
||||||
mergeMethod: hardreset
|
|
||||||
|
|
||||||
- base: develop
|
- base: develop
|
||||||
upstream: keepassxreboot:develop
|
upstream: keepassxreboot:develop
|
||||||
mergeMethod: rebase
|
mergeMethod: rebase
|
||||||
|
|||||||
9
.gitignore
vendored
@@ -21,3 +21,12 @@ desktop.ini
|
|||||||
/*.snap
|
/*.snap
|
||||||
/*_source.tar.bz2
|
/*_source.tar.bz2
|
||||||
|
|
||||||
|
# MSVC Files
|
||||||
|
CMakeSettings.json
|
||||||
|
CMakePresets.json
|
||||||
|
.vs/
|
||||||
|
out/
|
||||||
|
|
||||||
|
# vcpkg
|
||||||
|
vcpkg_installed*/
|
||||||
|
|
||||||
|
|||||||
19
.tx/config
@@ -1,8 +1,17 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://app.transifex.com
|
||||||
|
|
||||||
[keepassxc.keepassxc]
|
[o:keepassxc:p:keepassxc:r:share-translations-keepassxc-en-ts--develop]
|
||||||
source_file = share/translations/keepassx_en.ts
|
file_filter = share/translations/keepassxc_<lang>.ts
|
||||||
file_filter = share/translations/keepassx_<lang>.ts
|
source_file = share/translations/keepassxc_en.ts
|
||||||
source_lang = en
|
|
||||||
type = QT
|
type = QT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = keepassxc_en.ts (develop)
|
||||||
|
|
||||||
|
[o:keepassxc:p:keepassxc:r:share-translations-keepassxc-en-ts--master]
|
||||||
|
file_filter = share/translations/keepassxc_<lang>.ts
|
||||||
|
source_file = share/translations/keepassxc_en.ts
|
||||||
|
type = QT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = keepassxc_en.ts (2.7.x stable)
|
||||||
|
|
||||||
|
|||||||
317
CHANGELOG.md
@@ -1,5 +1,322 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2.7.7 (2024-03-09)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Support USB Hotplug for Hardware Key interface [#10092]
|
||||||
|
- Support 1PUX and Bitwarden import [#9815]
|
||||||
|
- Browser: Add support for PassKeys [#8825, #9987, #10318]
|
||||||
|
- Build System: Move to vcpkg manifest mode [#10088]
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix multiple TOTP issues [#9874]
|
||||||
|
- Fix focus loss on save when the editor is not visible anymore [#10075]
|
||||||
|
- Fix visual when removing entry from history [#9947]
|
||||||
|
- Fix first entry is not selected when a search is performed [#9868]
|
||||||
|
- Prevent scrollbars on entry drag/drop [#9747]
|
||||||
|
- Prevent duplicate characters in "Also choose from" field of password generator [#9803]
|
||||||
|
- Security: Prevent byte-by-byte and attachment inference side channel attacks [#10266]
|
||||||
|
- Browser: Fix raising Update Entry messagebox [#9853]
|
||||||
|
- Browser: Fix bugs when returning credentials [#9136]
|
||||||
|
- Browser: Fix crash on database open from browser [#9939]
|
||||||
|
- Browser: Fix support for referenced URL fields [#8788]
|
||||||
|
- MacOS: Fix crash when changing highlight/accent color [#10348]
|
||||||
|
- MacOS: Fix TouchID appearing even though lid is closed [#10092]
|
||||||
|
- Windows: Fix terminating KeePassXC processes with MSI installer [#9822]
|
||||||
|
- FdoSecrets: Fix database merge crash when enabled [#10136]
|
||||||
|
|
||||||
|
## 2.7.6 (2023-08-15)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Significant improvement to visual when drag/drop entries [#9698]
|
||||||
|
- Automatically prompt for Quick Unlock when showing unlock dialog [#9697]
|
||||||
|
- Improve colorful lock icon and fix file MIME icon on KDE [#9632]
|
||||||
|
- Ability to search by entry UUID [#9571]
|
||||||
|
- Add challenge-response support for NitroKey 3 [#9631]
|
||||||
|
- Auto-Type: Disable entry level Auto-Type when disabled at group/entry [#9672]
|
||||||
|
- Browser: Show warning when adding duplicate URL's to entry [#9588][#9635]
|
||||||
|
- Browser: Improve error message when proxy cannot be found [#9385]
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix crash on exit on macOS [#9620]
|
||||||
|
- Fix crash on search if entry doesn't have a group [#9633]
|
||||||
|
- Fix several issues with Quick Unlock [#9697]
|
||||||
|
- Enable save button when not auto-saving non-data changes [#9634]
|
||||||
|
- Several UI/UX fixes [#9647]
|
||||||
|
- Move toolbar back to top of window when disabling movement [#9699]
|
||||||
|
- Browser: Fix closing password generator dialog with X button [#9636]
|
||||||
|
- Browser: Fix handling of expired credentials [#9595]
|
||||||
|
- Windows: Prevent white flicker when launching application [#9637]
|
||||||
|
- Linux: Fix warning message about allow screencapture [#9638]
|
||||||
|
- FdoSecrets: Fix access confirmation dialog showing even when disabled [#9690]
|
||||||
|
|
||||||
|
## 2.7.5 (2023-05-14)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Add menu option to allow screenshots [#8841]
|
||||||
|
- Add support for Botan 3 [#9388]
|
||||||
|
- Increase max TOTP step to 24 hours [#9149]
|
||||||
|
- Improve HTML export layout [#8987]
|
||||||
|
- Turn search reset off by default [#9153]
|
||||||
|
- Use QClipboard::clear() instead of setting blank text [#9148]
|
||||||
|
- Hide group column header choice when not in search [#9171]
|
||||||
|
- Improve look of KeePassXC logo and icons [#9355]
|
||||||
|
- Add keyboard shortcuts for app and database settings [#9007]
|
||||||
|
- Hide rename button from attachments preview panel [#8842]
|
||||||
|
- Linux: Set SingleMainWindow in .desktop file [#7430]
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix crash when search clears while creating new entry [#9230]
|
||||||
|
- Fix crash when using Windows Hello in a Remote Desktop session [#9006]
|
||||||
|
- Fix crash in Group Edit after enabling Browser Integration [#8778]
|
||||||
|
- Fix canceling quick unlock when it is unavailable [#9034]
|
||||||
|
- Set password input field font correctly [#8732]
|
||||||
|
- Greatly improve performance when rendering entry view [#9398]
|
||||||
|
- Fix various accessibility issues [#9138]
|
||||||
|
- Fix arrows size when expand/collapse a group [#9096]
|
||||||
|
- Select the clone instead of the original after cloning an entry [#9070]
|
||||||
|
- Fix bugs with preview widget [#9170]
|
||||||
|
- Fix status bar update when switching to other DB [#9073]
|
||||||
|
- Fix database settings spin box bug [#9101]
|
||||||
|
- Fix Ctrl+Tab shortcut to cycle databases in unlock dialog [#8839]
|
||||||
|
- Fix TOTP QR code maintaining square ratio [#9027]
|
||||||
|
- Fix Auto-Type configuration page on custom sequence selection [#8752]
|
||||||
|
- Fix unexpected behavior of `--lock` when KeePassXC is not running [#8889]
|
||||||
|
- Make open folder icon exempt from "Apply group icon to entry" [#9205]
|
||||||
|
- Allow setting default file open directory with env var [#9192]
|
||||||
|
- SSH Agent: Fix support for AES-256/GCM openssh keys [#8968]
|
||||||
|
- Browser: Fix Native Messaging script path with BSD OS's [#8835]
|
||||||
|
- MacOS: Fix text selection for Auto-Type clear field [#9066]
|
||||||
|
- MacOS: Don't rely on AppleInterfaceStyle for theme switching [#8615]
|
||||||
|
- Windows: Remove registry detection of desktop shortcut [#9380]
|
||||||
|
|
||||||
|
## 2.7.4 (2022-10-29)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Add 2 months expiration preset [#8687]
|
||||||
|
- CLI: Add Unicode support on Windows [#8618]
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix crash on macOS when unlocking database [#8676]
|
||||||
|
- Fix display of passwords in preview panel [#8633]
|
||||||
|
- Fix clicking links in entry preview panel [#8644]
|
||||||
|
- Prevent expired entries search if no results returned [#8643]
|
||||||
|
- Browser: Revert code causing connection problems [#8665]
|
||||||
|
- Browser: Fix socket file symbolic link on Linux [#8656]
|
||||||
|
- Flatpak: Fix launching browser proxy service [#8680]
|
||||||
|
- SSH Agent: Fix paegent support on Windows [#8619]
|
||||||
|
|
||||||
|
## 2.7.3 (2022-10-23)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Enhance Tags Support and Add Saved Searches [#8435, #8607]
|
||||||
|
- Significant improvements to entry preview panel [#7993]
|
||||||
|
- Add password strength indicator to all password fields [#7885]
|
||||||
|
- Limit zxcvbn entropy estimation length to 128 characters [#7748]
|
||||||
|
- Try full URL path when fetching favicon [#8565]
|
||||||
|
- Hide usernames in preview panel when hidden in entry view [#8608]
|
||||||
|
- Enable dark title bar on windows when accent color is not used [#8498]
|
||||||
|
- Add option to display passwords in color in preview panel [#7097]
|
||||||
|
- Add XML Export option to GUI [#8524]
|
||||||
|
- Increase entropy required for a "good" password rating to 75 [#8523]
|
||||||
|
- Add shortcut to copy password with TOTP appended [#8443]
|
||||||
|
- Show entry count in status bar [#8435]
|
||||||
|
- Allow KeePassXC to be built without X11 [#8147]
|
||||||
|
- Enable use of VivoKey Apex and Dangerous Things FlexSecure tokens [#8332]
|
||||||
|
- Add setting for number of recent files [#8239]
|
||||||
|
- Add Ctrl+Tab shortcut to cycle databases in unlock dialog [#8168]
|
||||||
|
- Replace offensive words in eff_large.wordlist [#7968]
|
||||||
|
- Auto-Type: PICKCHARS can specify attribute and ignore BEEP [#8118]
|
||||||
|
- Linux: Add isHardwareKeySupported and refreshHardwareKeys to DBus methods [#8055]
|
||||||
|
- Add config variable to specify default database file name [#8042]
|
||||||
|
- Support numeric aware sorting on Windows and macOS [#8363]
|
||||||
|
- CLI: Add `db-edit` command [#8400]
|
||||||
|
- CLI: Add option to display all attributes with `show` command [#8256]
|
||||||
|
- CLI: Show UUID and tags with `show` and `clip` commands [#8241]
|
||||||
|
- Browser: Move socket into separate directory on Linux [#8030]
|
||||||
|
- Browser: Add group setting to omit WWW subdomain when matching URLs [#7988]
|
||||||
|
- FdoSecrets: Ask to unlock the database when creating items [#8022, #8028]
|
||||||
|
- FdoSecrets: Skip entries in recycle bin when searching [#8021]
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix potential deadlock in UI when saving [#8606]
|
||||||
|
- Fix newlines when copying notes from preview panel [#8542]
|
||||||
|
- Fix dark mode detection on Linux [#8477]
|
||||||
|
- Fix crash when deleting items in recycle bin while searching [#8117]
|
||||||
|
- Fix crash when trying to close database during unlock [#8144]
|
||||||
|
- Fix tabbing around the interface [#8435, #8520]
|
||||||
|
- Fix OPVault import when there are multiple OTP fields [#8436]
|
||||||
|
- Fix various Windows Hello bugs [#8354]
|
||||||
|
- Fix use of Apple Watch for Quick Unlock [#8311]
|
||||||
|
- Better handling of "Lock on Minimize" setting [#8202]
|
||||||
|
- Check for write permission before entering portable mode [#8447]
|
||||||
|
- Correct regex escape logic to prevent parse errors [#7778]
|
||||||
|
- Normalize slashes and file case for last used databases [#7864, #7214]
|
||||||
|
- Link ykcore against pthread [#7807]
|
||||||
|
- Auto-Type: Fix menu entries in selection dialog on Windows [#7987]
|
||||||
|
- Auto-Type: Fix use of modifiers under macOS [#8111]
|
||||||
|
- CLI: Fix output when using clip with the -t flag [#8271]
|
||||||
|
- Browser: Use asynchronous access confirm dialog [#8273]
|
||||||
|
- Browser: Always send database locked/unlocked status [#8114]
|
||||||
|
|
||||||
|
## 2.7.1 (2022-04-05)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Show when tags are changed in entry history [#7638]
|
||||||
|
- Improve tags editing and allow spaces in tags [#7708]
|
||||||
|
- Improve layout of entry preview panel [#7767]
|
||||||
|
- Incorporate patches to support Flatpak distribution [#7728]
|
||||||
|
- Add expiration presets for 12 and 24 hours [#7738]
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix crash when building history change list [#7638]
|
||||||
|
- Fix hiding password on database unlock [#7725]
|
||||||
|
- Fix AES KDF slow transform speed [#7755]
|
||||||
|
- Auto-Type: Correct timing issue on macOS and Linux that prevented typing [#7588]
|
||||||
|
- Auto-Type: Fix use of Ctrl/Alt/Shift/Win modifiers on Windows [#7629]
|
||||||
|
- Auto-Type: Reduce/eliminate delay when searching for entries [#7598]
|
||||||
|
- Auto-Type: Map ASCII dead keys on Linux for international keyboards [#7614]
|
||||||
|
- CLI: Fix detection of hardware keys (YubiKey) [#7593]
|
||||||
|
- CLI: Add missing parameter `-c` to add/edit entries command [#7594]
|
||||||
|
- Secret Service: Fix crash when multiple prompts are shown [#7786]
|
||||||
|
- SSH Agent: Fix default agent selection on Windows [#7764]
|
||||||
|
- Fix database unlock dialog not being the top window on Linux [#7771]
|
||||||
|
- Fix drag/drop entries between tabs on Wayland [#7628]
|
||||||
|
- Fix compiling with minizip-ng [#7638]
|
||||||
|
|
||||||
|
## 2.7.0 (2022-03-21)
|
||||||
|
|
||||||
|
### Major Additions
|
||||||
|
- Implement KDBX 4.1 [#7114]
|
||||||
|
- Add direct write save option for cloud storage and GVFS [#6594]
|
||||||
|
- Prevent screen capture on Windows and macOS [#6030]
|
||||||
|
- Support quick unlock using Windows Hello [#7384]
|
||||||
|
- Support quick unlock using Apple Watch [#5526]
|
||||||
|
- Allow specifying database backup paths [#7035]
|
||||||
|
- Add tag functionality [#6487][#7436][#7446]
|
||||||
|
- Add password rating column to entry view [#4797]
|
||||||
|
- Add group clone action [#6124]
|
||||||
|
- Show modifications between entry history items [#6789]
|
||||||
|
- Ability to bulk-delete and purge unused custom icons [#5970]
|
||||||
|
- Support adding custom passphrase wordlists [#6799]
|
||||||
|
- Support passphrase wordlists in numbered and PGP-signed formats [#6791]
|
||||||
|
- Implement support for hardware keys via wireless NFC [#6895]
|
||||||
|
- SSH Agent: Add support for OpenSSH 8.2 FIDO/U2F keys [#6371]
|
||||||
|
- CLI: Implement attachment handling [#5538]
|
||||||
|
- CLI: Add support for okon in offline HIBP checks [#5478]
|
||||||
|
- CLI: Implement `search` command and remove `locate` [#6805]
|
||||||
|
- CLI: Add db statistic output to `db-info` command [#7032]
|
||||||
|
- CLI: Add -i/--include option to `generate` command. [#7112]
|
||||||
|
- CLI: Add a -n (--notes) option to `add` and `edit` commands [#4646]
|
||||||
|
- CLI: Add keyfile option to `import` command [#5402]
|
||||||
|
- CLI: Adding a best option to clip to copy a password of the best match [#4489]
|
||||||
|
- Browser: Add Microsoft Edge support on Linux [#7100]
|
||||||
|
- Browser: Support native password generator from the extension [#6529]
|
||||||
|
- Browser: Add group settings [#4180]
|
||||||
|
- Browser: Add feature to ignore entries for HTTP-Auth Logins [#5394]
|
||||||
|
- Browser: Support triggering Auto-Type from browser extension [#6272]
|
||||||
|
- Browser: Add delete-entry command to API [#6899]
|
||||||
|
- Browser: Add search 'by-path' url to API [#5535]
|
||||||
|
- Browser: search for entries by UUID to API [#4763]
|
||||||
|
- Browser: Support auto-download of favicon on entry addition [#7179]
|
||||||
|
- Auto-Type: Major improvements to Auto-Type [#5864][#7463][#7435][#7391][#7129][#6400][#6364][#6361][#5283][#7507]
|
||||||
|
- Auto-Type: Fix typing to virtual machines on Windows [#7366]
|
||||||
|
- Auto-Type: Re-implement X11 keysym emulation [#7098]
|
||||||
|
- Auto-Type: Support multiple Xkb layouts [#6247]
|
||||||
|
- Auto-Type: Abort keystroke if modifiers held on X11 [#6351][#6357]
|
||||||
|
- Auto-Type: Add TOTP option to entry level Auto-Type menu [#6675]
|
||||||
|
- FdoSecrets: Major Refactor and Code Consolidation [#5747][#5660][#7043][#6915]
|
||||||
|
- FdoSecrets: Implement unlock before search [#6943]
|
||||||
|
- Reports: Add browser statistics report [#7197]
|
||||||
|
|
||||||
|
### Major Changes
|
||||||
|
- Port crypto backend to [Botan](https://github.com/randombit/botan) [#6209]
|
||||||
|
- Improve attachment handling and security [#6606][#5034][#7083]
|
||||||
|
- Allow selecting any open database in unlock dialog [#5427]
|
||||||
|
- KeeShare: Remove checking signed container and QuaZip dependency [#7223]
|
||||||
|
- Introduce security option to enable copy on double click (default off) [#6433]
|
||||||
|
- Add 'delete entry without confirm' functionality [#5812]
|
||||||
|
- Improve macOS and Windows platform integration [#5851]
|
||||||
|
- Lock only the current database by default [#6652]
|
||||||
|
- Show expired entries on DB unlock [#7290]
|
||||||
|
- Update D-Bus adaptor interface class name to match definition file [#7523]
|
||||||
|
|
||||||
|
### Other Changes and Fixes
|
||||||
|
- Add countdown progress bar to TOTP preview [#6930]
|
||||||
|
- Enter favicon url directly on icons page [#6614]
|
||||||
|
- Set C++17 as standard in the build system [#7180]
|
||||||
|
- Internalize ykcore into code base [#6654]
|
||||||
|
- Transition to Visual Studio builds on Windows [#5874]
|
||||||
|
- Ability to delete entries from health check reports [#6537]
|
||||||
|
- Enhance remembering last-used directories [#6711]
|
||||||
|
- Implement org.freedesktop.appearance.color-scheme support on Linux [#7422]
|
||||||
|
- Support sorting HTML export [#7011]
|
||||||
|
- Add display number of characters in passphrases [#5449]
|
||||||
|
- Use Alt+Tab on macOS to switch between databases [#5407]
|
||||||
|
- Add feature to sort groups using shortcut keys [#6999]
|
||||||
|
- Add CTRL+Enter to apply password generator changes [#6414]
|
||||||
|
- Display `Database created` timestamp on statistics report [#6876]
|
||||||
|
- Browser: Improve best matching credentials setting [#6893]
|
||||||
|
- SSH Agent: Use both Pageant and OpenSSH agent simultaneously on Windows [#6288]
|
||||||
|
- SSH Agent: Allow using database path to resolve keys [#6365]
|
||||||
|
- SSH Agent: Show correct error messages in main window [#7166]
|
||||||
|
- Multiple fixes for MSI installer [#6630]
|
||||||
|
- Fix tab order for CSV import dialog to match screen order [#7315]
|
||||||
|
- Don't mark kdbx:// urls as invalid [#7221]
|
||||||
|
- Make selected text copyable instead of copying password [#7209]
|
||||||
|
- Detect timestamp resolution for CSV files [#7196]
|
||||||
|
- Fix crash while downloading favicon [#7104]
|
||||||
|
- Correct naming of newly generated keyx files [#7010]
|
||||||
|
- Place the 'Recycle Bin' at the bottom of the list when groups are sorted [#7004]
|
||||||
|
- Handle tilde with custom browser paths [#6659]
|
||||||
|
- Don't scroll up when deleting an entry [#6833]
|
||||||
|
- Set the MIME-Type to text/plain when using wl-copy on wayland [#6832]
|
||||||
|
- Fix adaptive icon painting [#5989][#6033]
|
||||||
|
- Fix favicon download from URL with non-standard port [#5509]
|
||||||
|
- Ignore recycle bin on KeePassHTTP migration [#5481]
|
||||||
|
- Fix keepassxc-cr-recovery utility [#7521]
|
||||||
|
- Fix Auto-Type not working when audio recording indicator is active on macOS 12.2+ [#7526]
|
||||||
|
|
||||||
|
## 2.6.6 (2021-06-12)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix focusing search when pressing hotkey [#6603]
|
||||||
|
- Trim whitespace from TOTP key input prior to processing [#6604]
|
||||||
|
- Fix building on macOS [#6598]
|
||||||
|
- Resolve compiler warnings for unused return values [#6607]
|
||||||
|
|
||||||
|
## 2.6.5 (2021-06-08)
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Show search bar when toolbar is hidden or in overflow [#6279]
|
||||||
|
- Show countdown for clipboard clearing in status bar [#6333]
|
||||||
|
- Command line option to lock all open databases [#6511]
|
||||||
|
- Allow CSV import of bare TOTP secrets [#6211]
|
||||||
|
- Retain file creation time when saving database [#6576]
|
||||||
|
- Set permissions of saved attachments to be private to the current user [#6363]
|
||||||
|
- OPVault: Use Text instead of Name for attribute names [#6334]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Reports: Allow resizing of reports columns [#6435]
|
||||||
|
- Reports: Toggle showing expired entries [#6534]
|
||||||
|
- Save Always on Top setting [#6236]
|
||||||
|
- Password generator can exclude additional lookalike characters (6/G, 8/B) [#6196]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Allow setting MSI properties in unattended install [#6196]
|
||||||
|
- Update MainWindow minimum size to enable smaller verticle space [#6196]
|
||||||
|
- Use application font size when setting default or monospace fonts [#6332]
|
||||||
|
- Fix notes not clearing in entry preview panel in some cases [#6481]
|
||||||
|
- macOS: Correct window activation when restoring from tray [#6575]
|
||||||
|
- macOS: Better handling of minimize after unlock when using browser integration [#6338]
|
||||||
|
- Linux: Start after the system tray is available on LXQt [#6216]
|
||||||
|
- Linux: Allow selection of modal dialogs on X11 in Auto-Type [#6204]
|
||||||
|
- KeeShare: prevent crash when file extension is missing [#6174]
|
||||||
|
|
||||||
## 2.6.4 (2021-01-31)
|
## 2.6.4 (2021-01-31)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
254
CMakeLists.txt
@@ -14,9 +14,10 @@
|
|||||||
# 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/>.
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.3.0)
|
cmake_minimum_required(VERSION 3.10.0)
|
||||||
|
|
||||||
project(KeePassXC)
|
project(KeePassXC)
|
||||||
|
set(APP_ID "org.keepassxc.${PROJECT_NAME}")
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||||
@@ -24,12 +25,16 @@ if(NOT CMAKE_BUILD_TYPE)
|
|||||||
FORCE)
|
FORCE)
|
||||||
endif()
|
endif()
|
||||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
||||||
|
if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug" OR CMAKE_BUILD_TYPE_LOWER STREQUAL "relwithdebinfo")
|
||||||
|
set(IS_DEBUG_BUILD TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
|
|
||||||
# Support Visual Studio Code
|
# Support Visual Studio Code
|
||||||
include(CMakeToolsHelpers OPTIONAL)
|
include(CMakeToolsHelpers OPTIONAL)
|
||||||
include(FeatureSummary)
|
include(FeatureSummary)
|
||||||
|
include(KPXCMacDeployHelpers)
|
||||||
|
|
||||||
include(CheckCCompilerFlag)
|
include(CheckCCompilerFlag)
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
@@ -48,18 +53,37 @@ set(WITH_XC_ALL OFF CACHE BOOL "Build in all available plugins")
|
|||||||
option(WITH_XC_AUTOTYPE "Include Auto-Type." ON)
|
option(WITH_XC_AUTOTYPE "Include Auto-Type." ON)
|
||||||
option(WITH_XC_NETWORKING "Include networking code (e.g. for downloading website icons)." OFF)
|
option(WITH_XC_NETWORKING "Include networking code (e.g. for downloading website icons)." OFF)
|
||||||
option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF)
|
option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF)
|
||||||
|
option(WITH_XC_BROWSER_PASSKEYS "Passkeys support for browser integration." OFF)
|
||||||
option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
|
option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
|
||||||
option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
|
option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
|
||||||
option(WITH_XC_KEESHARE "Sharing integration with KeeShare (requires quazip5 for secure containers)" OFF)
|
option(WITH_XC_KEESHARE "Sharing integration with KeeShare" OFF)
|
||||||
option(WITH_XC_UPDATECHECK "Include automatic update checks; disable for controlled distributions" ON)
|
option(WITH_XC_UPDATECHECK "Include automatic update checks; disable for controlled distributions" ON)
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
option(WITH_XC_FDOSECRETS "Implement freedesktop.org Secret Storage Spec server side API." OFF)
|
option(WITH_XC_FDOSECRETS "Implement freedesktop.org Secret Storage Spec server side API." OFF)
|
||||||
endif()
|
endif()
|
||||||
if(APPLE)
|
|
||||||
option(WITH_XC_TOUCHID "Include TouchID support for macOS." OFF)
|
|
||||||
endif()
|
|
||||||
option(WITH_XC_DOCS "Enable building of documentation" ON)
|
option(WITH_XC_DOCS "Enable building of documentation" ON)
|
||||||
|
|
||||||
|
set(WITH_XC_X11 ON CACHE BOOL "Enable building with X11 deps")
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
# Perform the platform checks before applying the stricter compiler flags.
|
||||||
|
# Otherwise the kSecAccessControlTouchIDCurrentSet deprecation warning will result in an error.
|
||||||
|
try_compile(XC_APPLE_COMPILER_SUPPORT_BIOMETRY
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/tiometry_test/
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_biometry_support.mm)
|
||||||
|
message(STATUS "Biometry compiler support: ${XC_APPLE_COMPILER_SUPPORT_BIOMETRY}")
|
||||||
|
|
||||||
|
try_compile(XC_APPLE_COMPILER_SUPPORT_TOUCH_ID
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/touch_id_test/
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_touch_id_support.mm)
|
||||||
|
message(STATUS "Touch ID compiler support: ${XC_APPLE_COMPILER_SUPPORT_TOUCH_ID}")
|
||||||
|
|
||||||
|
try_compile(XC_APPLE_COMPILER_SUPPORT_WATCH
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/tiometry_test/
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_watch_support.mm)
|
||||||
|
message(STATUS "Apple watch compiler support: ${XC_APPLE_COMPILER_SUPPORT_WATCH}")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WITH_CCACHE)
|
if(WITH_CCACHE)
|
||||||
# Use the Compiler Cache (ccache) program
|
# Use the Compiler Cache (ccache) program
|
||||||
# (install with: sudo apt get ccache)
|
# (install with: sudo apt get ccache)
|
||||||
@@ -75,12 +99,10 @@ if(WITH_XC_ALL)
|
|||||||
set(WITH_XC_AUTOTYPE ON)
|
set(WITH_XC_AUTOTYPE ON)
|
||||||
set(WITH_XC_NETWORKING ON)
|
set(WITH_XC_NETWORKING ON)
|
||||||
set(WITH_XC_BROWSER ON)
|
set(WITH_XC_BROWSER ON)
|
||||||
|
set(WITH_XC_BROWSER_PASSKEYS ON)
|
||||||
set(WITH_XC_YUBIKEY ON)
|
set(WITH_XC_YUBIKEY ON)
|
||||||
set(WITH_XC_SSHAGENT ON)
|
set(WITH_XC_SSHAGENT ON)
|
||||||
set(WITH_XC_KEESHARE ON)
|
set(WITH_XC_KEESHARE ON)
|
||||||
if(APPLE)
|
|
||||||
set(WITH_XC_TOUCHID ON)
|
|
||||||
endif()
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
set(WITH_XC_FDOSECRETS ON)
|
set(WITH_XC_FDOSECRETS ON)
|
||||||
endif()
|
endif()
|
||||||
@@ -92,9 +114,14 @@ if(NOT WITH_XC_NETWORKING AND WITH_XC_UPDATECHECK)
|
|||||||
set(WITH_XC_UPDATECHECK OFF)
|
set(WITH_XC_UPDATECHECK OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE AND NOT WITH_XC_X11)
|
||||||
|
message(STATUS "Disabling WITH_XC_AUTOTYPE because WITH_XC_X11 is disabled")
|
||||||
|
set(WITH_XC_AUTOTYPE OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(KEEPASSXC_VERSION_MAJOR "2")
|
set(KEEPASSXC_VERSION_MAJOR "2")
|
||||||
set(KEEPASSXC_VERSION_MINOR "7")
|
set(KEEPASSXC_VERSION_MINOR "7")
|
||||||
set(KEEPASSXC_VERSION_PATCH "0")
|
set(KEEPASSXC_VERSION_PATCH "7")
|
||||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
||||||
set(OVERRIDE_VERSION "" CACHE STRING "Override the KeePassXC Version for Snapshot builds")
|
set(OVERRIDE_VERSION "" CACHE STRING "Override the KeePassXC Version for Snapshot builds")
|
||||||
|
|
||||||
@@ -120,7 +147,8 @@ execute_process(COMMAND git tag --points-at HEAD
|
|||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE GIT_TAG
|
OUTPUT_VARIABLE GIT_TAG
|
||||||
ERROR_QUIET)
|
ERROR_QUIET)
|
||||||
if(GIT_TAG)
|
string(REGEX REPLACE "latest" "" GIT_TAG "${GIT_TAG}")
|
||||||
|
if(GIT_TAG MATCHES "[0-9]+\.[0-9]+\.[0-9]+")
|
||||||
string(STRIP "${GIT_TAG}" GIT_TAG)
|
string(STRIP "${GIT_TAG}" GIT_TAG)
|
||||||
set(OVERRIDE_VERSION ${GIT_TAG})
|
set(OVERRIDE_VERSION ${GIT_TAG})
|
||||||
elseif(EXISTS ${CMAKE_SOURCE_DIR}/.version)
|
elseif(EXISTS ${CMAKE_SOURCE_DIR}/.version)
|
||||||
@@ -129,14 +157,14 @@ endif()
|
|||||||
|
|
||||||
string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}")
|
string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}")
|
||||||
if(OVERRIDE_VERSION)
|
if(OVERRIDE_VERSION)
|
||||||
if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$")
|
if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-beta[0-9]*")
|
||||||
set(KEEPASSXC_BUILD_TYPE PreRelease)
|
set(KEEPASSXC_BUILD_TYPE "PreRelease")
|
||||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||||
elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
|
elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
|
||||||
set(KEEPASSXC_BUILD_TYPE Release)
|
set(KEEPASSXC_BUILD_TYPE "Release")
|
||||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||||
else()
|
else()
|
||||||
set(KEEPASSXC_BUILD_TYPE Snapshot)
|
set(KEEPASSXC_BUILD_TYPE "Snapshot")
|
||||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
@@ -160,15 +188,36 @@ message(STATUS "Setting up build for KeePassXC v${KEEPASSXC_VERSION}\n")
|
|||||||
# Distribution info
|
# Distribution info
|
||||||
set(KEEPASSXC_DIST ON)
|
set(KEEPASSXC_DIST ON)
|
||||||
set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution Type")
|
set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution Type")
|
||||||
set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Other)
|
set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Flatpak Other)
|
||||||
if(KEEPASSXC_DIST_TYPE STREQUAL "Snap")
|
if(KEEPASSXC_DIST_TYPE STREQUAL "Snap")
|
||||||
set(KEEPASSXC_DIST_SNAP ON)
|
set(KEEPASSXC_DIST_SNAP ON)
|
||||||
elseif(KEEPASSXC_DIST_TYPE STREQUAL "AppImage")
|
elseif(KEEPASSXC_DIST_TYPE STREQUAL "AppImage")
|
||||||
set(KEEPASSXC_DIST_APPIMAGE ON)
|
set(KEEPASSXC_DIST_APPIMAGE ON)
|
||||||
|
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Flatpak")
|
||||||
|
set(KEEPASSXC_DIST_FLATPAK ON)
|
||||||
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Other")
|
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Other")
|
||||||
unset(KEEPASSXC_DIST)
|
unset(KEEPASSXC_DIST)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14.0")
|
||||||
|
cmake_policy(SET CMP0083 NEW)
|
||||||
|
include(CheckPIESupported)
|
||||||
|
check_pie_supported()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Find Botan early since the version affects subsequent compiler options
|
||||||
|
find_package(Botan REQUIRED)
|
||||||
|
if(BOTAN_VERSION VERSION_GREATER_EQUAL "3.0.0")
|
||||||
|
set(WITH_XC_BOTAN3 TRUE)
|
||||||
|
elseif(BOTAN_VERSION VERSION_LESS "2.11.0")
|
||||||
|
# Check for minimum Botan version
|
||||||
|
message(FATAL_ERROR "Botan 2.11.0 or higher is required")
|
||||||
|
endif()
|
||||||
|
include_directories(SYSTEM ${BOTAN_INCLUDE_DIR})
|
||||||
|
|
||||||
|
# Create position independent code for shared libraries and executables
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||||
set(IS_32BIT TRUE)
|
set(IS_32BIT TRUE)
|
||||||
endif()
|
endif()
|
||||||
@@ -238,13 +287,20 @@ macro(check_add_gcc_compiler_flag FLAG)
|
|||||||
endmacro(check_add_gcc_compiler_flag)
|
endmacro(check_add_gcc_compiler_flag)
|
||||||
|
|
||||||
add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
||||||
|
if(NOT IS_DEBUG_BUILD)
|
||||||
|
add_definitions(-DQT_NO_DEBUG_OUTPUT)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WITH_APP_BUNDLE)
|
if(WITH_APP_BUNDLE)
|
||||||
add_definitions(-DWITH_APP_BUNDLE)
|
add_definitions(-DWITH_APP_BUNDLE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_gcc_compiler_flags("-fno-common")
|
add_gcc_compiler_flags("-fno-common")
|
||||||
check_add_gcc_compiler_flag("-fopenmp")
|
find_package(OpenMP)
|
||||||
|
if(OpenMP_FOUND)
|
||||||
|
add_gcc_compiler_cflags(${OpenMP_C_FLAGS})
|
||||||
|
add_gcc_compiler_cxxflags(${OpenMP_CXX_FLAGS})
|
||||||
|
endif()
|
||||||
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 -Wmissing-format-attribute")
|
add_gcc_compiler_flags("-Wformat=2 -Wmissing-format-attribute")
|
||||||
add_gcc_compiler_flags("-fvisibility=hidden")
|
add_gcc_compiler_flags("-fvisibility=hidden")
|
||||||
@@ -254,14 +310,18 @@ if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
|||||||
check_add_gcc_compiler_flag("-Wshadow-compatible-local")
|
check_add_gcc_compiler_flag("-Wshadow-compatible-local")
|
||||||
check_add_gcc_compiler_flag("-Wshadow-local")
|
check_add_gcc_compiler_flag("-Wshadow-local")
|
||||||
add_gcc_compiler_flags("-Werror")
|
add_gcc_compiler_flags("-Werror")
|
||||||
|
# This is needed since compiling aginst Botan3 requires compiling against C++20
|
||||||
|
if(WITH_XC_BOTAN3)
|
||||||
|
add_gcc_compiler_cxxflags("-Wno-error=deprecated-enum-enum-conversion -Wno-error=deprecated")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT HAIKU)
|
if (NOT HAIKU)
|
||||||
if((CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8.999) OR CMAKE_COMPILER_IS_CLANGXX)
|
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")
|
add_gcc_compiler_flags("-fstack-protector-strong")
|
||||||
else()
|
else()
|
||||||
add_gcc_compiler_flags("-fstack-protector --param=ssp-buffer-size=4")
|
add_gcc_compiler_flags("-fstack-protector --param=ssp-buffer-size=4")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_gcc_compiler_cxxflags("-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual")
|
add_gcc_compiler_cxxflags("-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual")
|
||||||
@@ -290,28 +350,34 @@ check_add_gcc_compiler_flag("-Werror=format-security")
|
|||||||
check_add_gcc_compiler_flag("-Werror=implicit-function-declaration" C)
|
check_add_gcc_compiler_flag("-Werror=implicit-function-declaration" C)
|
||||||
check_add_gcc_compiler_flag("-Wcast-align")
|
check_add_gcc_compiler_flag("-Wcast-align")
|
||||||
|
|
||||||
if(WITH_COVERAGE AND CMAKE_COMPILER_IS_CLANGXX)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-instr-generate -fcoverage-mapping")
|
|
||||||
# then:
|
|
||||||
# $ llvm-profdata merge -sparse default.profraw -o default.profdata
|
|
||||||
# $ llvm-cov show ./tests/${the_test_binary} \
|
|
||||||
# -format=html -instr-profile=default.profdata -output-dir=./coverages \
|
|
||||||
# `find src -iname '*.h' -or -iname '*.cpp'`
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
check_add_gcc_compiler_flag("-Qunused-arguments")
|
check_add_gcc_compiler_flag("-Qunused-arguments")
|
||||||
check_add_gcc_compiler_flag("-fPIC")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -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,-z,now -pie")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now -pie")
|
||||||
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,--as-needed")
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_gcc_compiler_cflags("-std=c99")
|
set(CMAKE_C_STANDARD 99)
|
||||||
add_gcc_compiler_cxxflags("-std=c++11")
|
if(WITH_XC_BOTAN3)
|
||||||
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
endif()
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
check_add_gcc_compiler_flag("-fsized-deallocation" CXX)
|
check_cxx_compiler_flag("-fsized-deallocation" CXX_HAS_fsized_deallocation)
|
||||||
|
if(CXX_HAS_fsized_deallocation)
|
||||||
|
# Do additional check: the deallocation functions must be there too.
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "-fsized-deallocation")
|
||||||
|
check_cxx_source_compiles("#include <new>
|
||||||
|
int main() { void * ptr = nullptr; std::size_t size = 1; ::operator delete(ptr, size); }"
|
||||||
|
HAVE_DEALLOCATION_FUNCTIONS)
|
||||||
|
if(HAVE_DEALLOCATION_FUNCTIONS)
|
||||||
|
check_add_gcc_compiler_flag("-fsized-deallocation" CXX)
|
||||||
|
endif()
|
||||||
|
unset(CMAKE_REQUIRED_FLAGS)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(APPLE AND CMAKE_COMPILER_IS_CLANGXX)
|
if(APPLE AND CMAKE_COMPILER_IS_CLANGXX)
|
||||||
add_gcc_compiler_cxxflags("-stdlib=libc++")
|
add_gcc_compiler_cxxflags("-stdlib=libc++")
|
||||||
@@ -324,12 +390,32 @@ else()
|
|||||||
add_gcc_compiler_cxxflags("-Wno-deprecated-declarations")
|
add_gcc_compiler_cxxflags("-Wno-deprecated-declarations")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MINGW)
|
# MSVC specific options
|
||||||
|
if (MSVC)
|
||||||
|
if(MSVC_TOOLSET_VERSION LESS 141)
|
||||||
|
message(FATAL_ERROR "Only Microsoft Visual Studio 17 and newer are supported!")
|
||||||
|
endif()
|
||||||
|
add_compile_options(/permissive- /utf-8)
|
||||||
|
if(IS_DEBUG_BUILD)
|
||||||
|
add_compile_options(/Zf)
|
||||||
|
if(MSVC_TOOLSET_VERSION GREATER 141)
|
||||||
|
add_compile_definitions(/fsanitize=address)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
set(CMAKE_RC_COMPILER_INIT windres)
|
set(CMAKE_RC_COMPILER_INIT windres)
|
||||||
enable_language(RC)
|
enable_language(RC)
|
||||||
|
if(MINGW)
|
||||||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
|
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
|
||||||
if(NOT (CMAKE_BUILD_TYPE_LOWER STREQUAL "debug" OR CMAKE_BUILD_TYPE_LOWER STREQUAL "relwithdebinfo"))
|
endif()
|
||||||
# Enable DEP and ASLR
|
if(NOT IS_DEBUG_BUILD)
|
||||||
|
if(MSVC)
|
||||||
|
# By default MSVC enables NXCOMPAT
|
||||||
|
add_compile_options(/guard:cf)
|
||||||
|
add_link_options(/DYNAMICBASE /HIGHENTROPYVA /GUARD:CF)
|
||||||
|
else(MINGW)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
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")
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||||
# Enable high entropy ASLR for 64-bit builds
|
# Enable high entropy ASLR for 64-bit builds
|
||||||
@@ -338,15 +424,16 @@ if(MINGW)
|
|||||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va")
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(APPLE AND WITH_APP_BUNDLE OR MINGW)
|
if(APPLE AND WITH_APP_BUNDLE OR WIN32)
|
||||||
set(PROGNAME KeePassXC)
|
set(PROGNAME KeePassXC)
|
||||||
else()
|
else()
|
||||||
set(PROGNAME keepassxc)
|
set(PROGNAME keepassxc)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MINGW)
|
if(WIN32)
|
||||||
set(CLI_INSTALL_DIR ".")
|
set(CLI_INSTALL_DIR ".")
|
||||||
set(PROXY_INSTALL_DIR ".")
|
set(PROXY_INSTALL_DIR ".")
|
||||||
set(BIN_INSTALL_DIR ".")
|
set(BIN_INSTALL_DIR ".")
|
||||||
@@ -377,33 +464,49 @@ endif(WITH_TESTS)
|
|||||||
if(WITH_COVERAGE)
|
if(WITH_COVERAGE)
|
||||||
# Include code coverage, use with -DCMAKE_BUILD_TYPE=Debug
|
# Include code coverage, use with -DCMAKE_BUILD_TYPE=Debug
|
||||||
include(CodeCoverage)
|
include(CodeCoverage)
|
||||||
set(COVERAGE_GCOVR_EXCLUDES
|
|
||||||
"\\(.+/\\)?tests/.\\*"
|
|
||||||
".\\*/moc_\\[^/\\]+\\.cpp"
|
|
||||||
".\\*/ui_\\[^/\\]+\\.h"
|
|
||||||
"\\(.+/\\)?zxcvbn/.\\*")
|
|
||||||
append_coverage_compiler_flags()
|
append_coverage_compiler_flags()
|
||||||
setup_target_for_coverage_gcovr_html(
|
|
||||||
|
set(COVERAGE_EXCLUDES
|
||||||
|
"'^(.+/)?(thirdparty|zxcvbn)/.*'"
|
||||||
|
"'^(.+/)?main\\.cpp$$'"
|
||||||
|
"'^(.+/)?cli/keepassxc-cli\\.cpp$$'"
|
||||||
|
"'^(.+/)?proxy/keepassxc-proxy\\.cpp$$'")
|
||||||
|
if(WITH_COVERAGE AND CMAKE_COMPILER_IS_CLANGXX)
|
||||||
|
set(MAIN_BINARIES
|
||||||
|
"$<TARGET_FILE:${PROGNAME}>"
|
||||||
|
"$<TARGET_FILE:keepassxc-cli>"
|
||||||
|
"$<TARGET_FILE:keepassxc-proxy>")
|
||||||
|
setup_target_for_coverage_llvm(
|
||||||
NAME coverage
|
NAME coverage
|
||||||
EXECUTABLE $(MAKE) && $(MAKE) test
|
BINARY ${MAIN_BINARIES}
|
||||||
|
SOURCES_ROOT ${CMAKE_SOURCE_DIR}/src
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
setup_target_for_coverage_gcovr(
|
||||||
|
NAME coverage
|
||||||
|
SOURCES_ROOT ${CMAKE_SOURCE_DIR}/src
|
||||||
|
)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CLangFormat)
|
include(CLangFormat)
|
||||||
|
|
||||||
set(QT_COMPONENTS Core Network Concurrent Gui Svg Widgets Test LinguistTools)
|
set(QT_COMPONENTS Core Network Concurrent Gui Svg Widgets Test LinguistTools)
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} DBus X11Extras REQUIRED)
|
if(WITH_XC_X11)
|
||||||
|
list(APPEND QT_COMPONENTS X11Extras)
|
||||||
|
endif()
|
||||||
|
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} DBus REQUIRED)
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED HINTS
|
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED HINTS
|
||||||
/usr/local/opt/qt/lib/cmake
|
/usr/local/opt/qt@5/lib/cmake
|
||||||
/usr/local/Cellar/qt/*/lib/cmake
|
/usr/local/Cellar/qt@5/*/lib/cmake
|
||||||
/opt/homebrew/opt/qt/lib/cmake
|
/opt/homebrew/opt/qt@5/lib/cmake
|
||||||
ENV PATH)
|
ENV PATH)
|
||||||
find_package(Qt5 COMPONENTS MacExtras HINTS
|
find_package(Qt5 COMPONENTS MacExtras HINTS
|
||||||
/usr/local/opt/qt/lib/cmake
|
/usr/local/opt/qt@5/lib/cmake
|
||||||
/usr/local/Cellar/qt/*/lib/cmake
|
/usr/local/Cellar/qt@5/*/lib/cmake
|
||||||
/opt/homebrew/opt/qt/lib/cmake
|
/opt/homebrew/opt/qt@5/lib/cmake
|
||||||
ENV PATH)
|
ENV PATH)
|
||||||
else()
|
else()
|
||||||
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED)
|
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED)
|
||||||
@@ -413,7 +516,17 @@ if(Qt5Core_VERSION VERSION_LESS "5.2.0")
|
|||||||
message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
|
message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# CBOR for Passkeys requires Qt 5.12
|
||||||
|
if(Qt5Core_VERSION VERSION_LESS "5.12.0")
|
||||||
|
message(STATUS "Qt version 5.12.0 or higher is required for Passkeys support")
|
||||||
|
set(WITH_XC_BROWSER_PASSKEYS OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH)
|
get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH)
|
||||||
|
if(APPLE)
|
||||||
|
# Add includes under Qt5 Prefix in case Qt6 is also installed
|
||||||
|
include_directories(SYSTEM ${Qt5_PREFIX}/include)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Process moc automatically
|
# Process moc automatically
|
||||||
set(CMAKE_AUTOMOC ON)
|
set(CMAKE_AUTOMOC ON)
|
||||||
@@ -424,29 +537,28 @@ set(CMAKE_AUTORCC ON)
|
|||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CMAKE_MACOSX_RPATH TRUE)
|
set(CMAKE_MACOSX_RPATH TRUE)
|
||||||
find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
|
find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ${Qt5_PREFIX}/tools/qt5/bin ENV PATH)
|
||||||
if(NOT MACDEPLOYQT_EXE)
|
if(NOT MACDEPLOYQT_EXE)
|
||||||
message(FATAL_ERROR "macdeployqt is required to build on macOS")
|
message(FATAL_ERROR "macdeployqt is required to build on macOS")
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
|
message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
|
||||||
elseif(MINGW)
|
set(MACDEPLOYQT_EXTRA_BINARIES "")
|
||||||
find_program(WINDEPLOYQT_EXE windeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
|
elseif(WIN32)
|
||||||
|
find_program(WINDEPLOYQT_EXE windeployqt HINTS ${Qt5_PREFIX}/bin ${Qt5_PREFIX}/tools/qt5/bin ENV PATH)
|
||||||
if(NOT WINDEPLOYQT_EXE)
|
if(NOT WINDEPLOYQT_EXE)
|
||||||
message(FATAL_ERROR "windeployqt is required to build on Windows")
|
message(FATAL_ERROR "windeployqt is required to build on Windows")
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "Using windeployqt: ${WINDEPLOYQT_EXE}")
|
message(STATUS "Using windeployqt: ${WINDEPLOYQT_EXE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Debian sets the the build type to None for package builds.
|
# Debian sets the build type to None for package builds.
|
||||||
# Make sure we don't enable asserts there.
|
# Make sure we don't enable asserts there.
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_NONE QT_NO_DEBUG)
|
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_NONE QT_NO_DEBUG)
|
||||||
|
|
||||||
# Find Botan2
|
# Find Argon2 -- Botan 2.18 and below does not support threaded Argon2
|
||||||
find_package(Botan2 REQUIRED)
|
find_library(ARGON2_LIBRARIES NAMES argon2)
|
||||||
if(BOTAN2_VERSION VERSION_LESS "2.11.0")
|
find_path(ARGON2_INCLUDE_DIR NAMES argon2.h PATH_SUFFIXES local/include)
|
||||||
message(FATAL_ERROR "Botan2 2.11.0 or higher is required")
|
include_directories(SYSTEM ${ARGON2_INCLUDE_DIR})
|
||||||
endif()
|
|
||||||
include_directories(SYSTEM ${BOTAN2_INCLUDE_DIR})
|
|
||||||
|
|
||||||
# Find zlib
|
# Find zlib
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
@@ -455,14 +567,18 @@ if(ZLIB_VERSION_STRING VERSION_LESS "1.2.0")
|
|||||||
endif()
|
endif()
|
||||||
include_directories(SYSTEM ${ZLIB_INCLUDE_DIR})
|
include_directories(SYSTEM ${ZLIB_INCLUDE_DIR})
|
||||||
|
|
||||||
# QREncode required for TOTP
|
# Find Minizip
|
||||||
find_package(QREncode REQUIRED)
|
find_package(Minizip REQUIRED)
|
||||||
|
|
||||||
# Optional
|
|
||||||
if(WITH_XC_YUBIKEY)
|
if(WITH_XC_YUBIKEY)
|
||||||
find_package(YubiKey REQUIRED)
|
find_package(PCSC REQUIRED)
|
||||||
|
include_directories(SYSTEM ${PCSC_INCLUDE_DIRS})
|
||||||
|
|
||||||
include_directories(SYSTEM ${YUBIKEY_INCLUDE_DIRS})
|
if(UNIX AND NOT APPLE)
|
||||||
|
find_library(LIBUSB_LIBRARIES NAMES usb-1.0 REQUIRED)
|
||||||
|
find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "libusb-1.0" "libusb" REQUIRED)
|
||||||
|
include_directories(SYSTEM ${LIBUSB_INCLUDE_DIR})
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
@@ -475,7 +591,7 @@ if(UNIX)
|
|||||||
HAVE_MALLOC_H)
|
HAVE_MALLOC_H)
|
||||||
|
|
||||||
check_cxx_source_compiles("#include <malloc.h>
|
check_cxx_source_compiles("#include <malloc.h>
|
||||||
int main() { malloc_usable_size(NULL, 0); return 0; }"
|
int main() { malloc_usable_size(NULL); return 0; }"
|
||||||
HAVE_MALLOC_USABLE_SIZE)
|
HAVE_MALLOC_USABLE_SIZE)
|
||||||
|
|
||||||
check_cxx_source_compiles("#include <sys/resource.h>
|
check_cxx_source_compiles("#include <sys/resource.h>
|
||||||
|
|||||||
70
COPYING
@@ -1,5 +1,5 @@
|
|||||||
KeePassXC - http://www.keepassxc.org/
|
KeePassXC - http://www.keepassxc.org/
|
||||||
Copyright (C) 2016-2020 KeePassXC Team <team@keepassxc.org>
|
Copyright (C) 2016-2023 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
|
||||||
@@ -27,28 +27,24 @@ Copyright: 2010-2012, Felix Geyer <debfx@fobos.de>
|
|||||||
2000-2008, Tom Sato <VEF00200@nifty.ne.jp>
|
2000-2008, Tom Sato <VEF00200@nifty.ne.jp>
|
||||||
2013, Laszlo Papp <lpapp@kde.org>
|
2013, Laszlo Papp <lpapp@kde.org>
|
||||||
2013, David Faure <faure@kde.org>
|
2013, David Faure <faure@kde.org>
|
||||||
2016-2020, KeePassXC Team <team@keepassxc.org>
|
2016-2023, KeePassXC Team <team@keepassxc.org>
|
||||||
License: GPL-2 or GPL-3
|
License: GPL-2 or GPL-3
|
||||||
|
|
||||||
Comment: The "KeePassXC Team" in every copyright notice is formed by the following people:
|
Comment: The "KeePassXC Team" in every copyright notice is formed by the following people:
|
||||||
- droidmonkey
|
- droidmonkey
|
||||||
- phoerious
|
- phoerious
|
||||||
- TheZ3ro <io@thezero.org>
|
- varjolintu
|
||||||
|
- hifi
|
||||||
- louib
|
- louib
|
||||||
- weslly
|
|
||||||
Every other contributor is listed on https://github.com/keepassxreboot/keepassxc/graphs/contributors
|
Every other contributor is listed on https://github.com/keepassxreboot/keepassxc/graphs/contributors
|
||||||
|
|
||||||
Files: cmake/CodeCoverage.cmake
|
Files: cmake/CodeCoverage.cmake
|
||||||
Copyright: 2012 - 2015, Lars Bilke
|
Copyright: 2012 - 2015, Lars Bilke
|
||||||
License: BSD-3-clause
|
License: BSD-3-clause
|
||||||
|
|
||||||
Files: cmake/FindYubiKey.cmake
|
Files: cmake/FindBotan.cmake
|
||||||
Copyright: 2014 Kyle Manna <kyle@kylemanna.com>
|
Copyright: none
|
||||||
License: GPL-2 or GPL-3
|
License: LGPL-2.1
|
||||||
|
|
||||||
Files: cmake/FindBotan2.cmake
|
|
||||||
Copyright: 2018 Ribose Inc.
|
|
||||||
License: BSD-2-clause
|
|
||||||
|
|
||||||
Files: cmake/GenerateProductVersion.cmake
|
Files: cmake/GenerateProductVersion.cmake
|
||||||
Copyright: 2015 halex2005 <akharlov@gmail.com>
|
Copyright: 2015 halex2005 <akharlov@gmail.com>
|
||||||
@@ -141,11 +137,26 @@ Files: share/icons/badges/2_Expired.svg
|
|||||||
share/icons/database/C46_Help.svg
|
share/icons/database/C46_Help.svg
|
||||||
share/icons/database/C53_Apply.svg
|
share/icons/database/C53_Apply.svg
|
||||||
share/icons/database/C61_Services.svg
|
share/icons/database/C61_Services.svg
|
||||||
Copyright: 2020 KeePassXC Team <team@keepassxc.org>
|
Copyright: 2022 KeePassXC Team <team@keepassxc.org>
|
||||||
License: MIT
|
License: MIT
|
||||||
|
|
||||||
Files: share/icons/application/scalable/actions/chevron-double-down.svg
|
Files: share/icons/application/scalable/actions/application-exit.svg
|
||||||
|
share/icons/application/scalable/actions/attributes-copy.svg
|
||||||
|
share/icons/application/scalable/actions/auto-type.svg
|
||||||
|
share/icons/application/scalable/actions/bitwarden.svg
|
||||||
|
share/icons/application/scalable/actions/bugreport.svg
|
||||||
|
share/icons/application/scalable/actions/chevron-double-down.svg
|
||||||
share/icons/application/scalable/actions/chevron-double-right.svg
|
share/icons/application/scalable/actions/chevron-double-right.svg
|
||||||
|
share/icons/application/scalable/actions/clipboard-text.svg
|
||||||
|
share/icons/application/scalable/actions/configure.svg
|
||||||
|
share/icons/application/scalable/actions/csv.svg
|
||||||
|
share/icons/application/scalable/actions/database-change-key.svg
|
||||||
|
share/icons/application/scalable/actions/database-lock.svg
|
||||||
|
share/icons/application/scalable/actions/database-lock-all.svg
|
||||||
|
share/icons/application/scalable/actions/database-merge.svg
|
||||||
|
share/icons/application/scalable/actions/database-search.svg
|
||||||
|
share/icons/application/scalable/actions/dialog-close.svg
|
||||||
|
share/icons/application/scalable/actions/dialog-ok.svg
|
||||||
share/icons/application/scalable/actions/document-close.svg
|
share/icons/application/scalable/actions/document-close.svg
|
||||||
share/icons/application/scalable/actions/document-edit.svg
|
share/icons/application/scalable/actions/document-edit.svg
|
||||||
share/icons/application/scalable/actions/document-export.svg
|
share/icons/application/scalable/actions/document-export.svg
|
||||||
@@ -157,40 +168,63 @@ Files: share/icons/application/scalable/actions/chevron-double-down.svg
|
|||||||
share/icons/application/scalable/actions/document-save.svg
|
share/icons/application/scalable/actions/document-save.svg
|
||||||
share/icons/application/scalable/actions/document-save-as.svg
|
share/icons/application/scalable/actions/document-save-as.svg
|
||||||
share/icons/application/scalable/actions/document-save-copy.svg
|
share/icons/application/scalable/actions/document-save-copy.svg
|
||||||
|
share/icons/application/scalable/actions/donate.svg
|
||||||
share/icons/application/scalable/actions/edit-clear-locationbar-ltr.svg
|
share/icons/application/scalable/actions/edit-clear-locationbar-ltr.svg
|
||||||
share/icons/application/scalable/actions/edit-clear-locationbar-rtl.svg
|
share/icons/application/scalable/actions/edit-clear-locationbar-rtl.svg
|
||||||
share/icons/application/scalable/actions/entry-clone.svg
|
share/icons/application/scalable/actions/entry-clone.svg
|
||||||
share/icons/application/scalable/actions/entry-delete.svg
|
share/icons/application/scalable/actions/entry-delete.svg
|
||||||
|
share/icons/application/scalable/actions/entry-restore.svg
|
||||||
share/icons/application/scalable/actions/entry-edit.svg
|
share/icons/application/scalable/actions/entry-edit.svg
|
||||||
share/icons/application/scalable/actions/entry-new.svg
|
share/icons/application/scalable/actions/entry-new.svg
|
||||||
share/icons/application/scalable/actions/favicon-download.svg
|
share/icons/application/scalable/actions/favicon-download.svg
|
||||||
|
share/icons/application/scalable/actions/fingerprint.svg
|
||||||
|
share/icons/application/scalable/actions/getting-started.svg
|
||||||
share/icons/application/scalable/actions/group-delete.svg
|
share/icons/application/scalable/actions/group-delete.svg
|
||||||
share/icons/application/scalable/actions/group-edit.svg
|
share/icons/application/scalable/actions/group-edit.svg
|
||||||
|
share/icons/application/scalable/actions/group-clone.svg
|
||||||
share/icons/application/scalable/actions/group-empty-trash.svg
|
share/icons/application/scalable/actions/group-empty-trash.svg
|
||||||
share/icons/application/scalable/actions/group-new.svg
|
share/icons/application/scalable/actions/group-new.svg
|
||||||
share/icons/application/scalable/actions/hammer-wrench.svg
|
share/icons/application/scalable/actions/hammer-wrench.svg
|
||||||
share/icons/application/scalable/actions/health.svg
|
share/icons/application/scalable/actions/health.svg
|
||||||
share/icons/application/scalable/actions/help-about.svg
|
share/icons/application/scalable/actions/help-about.svg
|
||||||
share/icons/application/scalable/actions/key-enter.svg
|
|
||||||
share/icons/application/scalable/actions/lock-question.svg
|
share/icons/application/scalable/actions/lock-question.svg
|
||||||
|
share/icons/application/scalable/actions/keyboard-shortcuts.svg
|
||||||
share/icons/application/scalable/actions/message-close.svg
|
share/icons/application/scalable/actions/message-close.svg
|
||||||
share/icons/application/scalable/actions/move-down.svg
|
share/icons/application/scalable/actions/move-down.svg
|
||||||
share/icons/application/scalable/actions/move-up.svg
|
share/icons/application/scalable/actions/move-up.svg
|
||||||
|
share/icons/application/scalable/actions/object-locked.svg
|
||||||
|
share/icons/application/scalable/actions/object-unlocked.svg
|
||||||
|
share/icons/application/scalable/actions/onepassword.svg
|
||||||
share/icons/application/scalable/actions/paperclip.svg
|
share/icons/application/scalable/actions/paperclip.svg
|
||||||
share/icons/application/scalable/actions/password-copy.svg
|
share/icons/application/scalable/actions/password-copy.svg
|
||||||
share/icons/application/scalable/actions/password-generate.svg
|
share/icons/application/scalable/actions/passkey.svg
|
||||||
share/icons/application/scalable/actions/password-generator.svg
|
share/icons/application/scalable/actions/password-generator.svg
|
||||||
share/icons/application/scalable/actions/password-show-off.svg
|
share/icons/application/scalable/actions/password-show-off.svg
|
||||||
share/icons/application/scalable/actions/password-show-on.svg
|
share/icons/application/scalable/actions/password-show-on.svg
|
||||||
|
share/icons/application/scalable/actions/qrcode.svg
|
||||||
share/icons/application/scalable/actions/refresh.svg
|
share/icons/application/scalable/actions/refresh.svg
|
||||||
share/icons/application/scalable/actions/reports.svg
|
share/icons/application/scalable/actions/reports.svg
|
||||||
share/icons/application/scalable/actions/reports-exclude.svg
|
share/icons/application/scalable/actions/reports-exclude.svg
|
||||||
|
share/icons/application/scalable/actions/sort-alphabetical-ascending.svg
|
||||||
|
share/icons/application/scalable/actions/sort-alphabetical-descending.svg
|
||||||
share/icons/application/scalable/actions/statistics.svg
|
share/icons/application/scalable/actions/statistics.svg
|
||||||
share/icons/application/scalable/actions/system-help.svg
|
share/icons/application/scalable/actions/system-help.svg
|
||||||
share/icons/application/scalable/actions/system-search.svg
|
share/icons/application/scalable/actions/system-search.svg
|
||||||
|
share/icons/application/scalable/actions/system-software-update.svg
|
||||||
|
share/icons/application/scalable/actions/tag.svg
|
||||||
|
share/icons/application/scalable/actions/tag-multiple.svg
|
||||||
|
share/icons/application/scalable/actions/tag-search.svg
|
||||||
|
share/icons/application/scalable/actions/totp.svg
|
||||||
|
share/icons/application/scalable/actions/totp-copy.svg
|
||||||
|
share/icons/application/scalable/actions/totp-copy-password.svg
|
||||||
|
share/icons/application/scalable/actions/totp-edit.svg
|
||||||
|
share/icons/application/scalable/actions/trash.svg
|
||||||
share/icons/application/scalable/actions/url-copy.svg
|
share/icons/application/scalable/actions/url-copy.svg
|
||||||
|
share/icons/application/scalable/actions/user-guide.svg
|
||||||
share/icons/application/scalable/actions/username-copy.svg
|
share/icons/application/scalable/actions/username-copy.svg
|
||||||
share/icons/application/scalable/actions/view-history.svg
|
share/icons/application/scalable/actions/view-history.svg
|
||||||
|
share/icons/application/scalable/actions/web.svg
|
||||||
|
share/icons/application/scalable/actions/yubikey-refresh.svg
|
||||||
share/icons/application/scalable/apps/internet-web-browser.svg
|
share/icons/application/scalable/apps/internet-web-browser.svg
|
||||||
share/icons/application/scalable/apps/keepassxc.svg
|
share/icons/application/scalable/apps/keepassxc.svg
|
||||||
share/icons/application/scalable/apps/keepassxc-dark.svg
|
share/icons/application/scalable/apps/keepassxc-dark.svg
|
||||||
@@ -237,3 +271,9 @@ Files: share/icons/application/scalable/actions/hibp.svg
|
|||||||
share/icons/database/C64_Apple.svg
|
share/icons/database/C64_Apple.svg
|
||||||
Copyright: GPL-2+
|
Copyright: GPL-2+
|
||||||
Comment: from the Simple Icons repo (https://github.com/simple-icons/simple-icons/)
|
Comment: from the Simple Icons repo (https://github.com/simple-icons/simple-icons/)
|
||||||
|
|
||||||
|
Files: src/thirdparty/ykcore/yk*
|
||||||
|
src/thirdparty/ykcore/yubikey.h
|
||||||
|
Copyright: 2006-2015, Yubico AB
|
||||||
|
License: BSD-2-Clause
|
||||||
|
Comment: from the yubikey-personalization repo (https://github.com/Yubico/yubikey-personalization)
|
||||||
|
|||||||
208
INSTALL.md
@@ -6,143 +6,137 @@ For more information, see also the [_Building KeePassXC_](https://github.com/kee
|
|||||||
|
|
||||||
The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html) gets you started using KeePassXC on your Windows, macOS, or Linux computer using pre-compiled binaries from the [downloads page](https://keepassxc.org/download).
|
The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html) gets you started using KeePassXC on your Windows, macOS, or Linux computer using pre-compiled binaries from the [downloads page](https://keepassxc.org/download).
|
||||||
|
|
||||||
Build Dependencies
|
Toolchain and Build Dependencies
|
||||||
==================
|
|
||||||
|
|
||||||
The following tools must exist within your PATH:
|
|
||||||
|
|
||||||
* make
|
|
||||||
* cmake (>= 2.8.12)
|
|
||||||
* g++ (>= 4.7) or clang++ (>= 3.0)
|
|
||||||
* asciidoctor (on Linux/MacOS)
|
|
||||||
|
|
||||||
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)
|
|
||||||
* libargon2
|
|
||||||
* qrencode
|
|
||||||
* yubikey ykpers (optional to support YubiKey)
|
|
||||||
|
|
||||||
Prepare the Building Environment
|
|
||||||
================================
|
================================
|
||||||
|
|
||||||
* [Building Environment on Linux](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux)
|
The following build tools must exist within your PATH:
|
||||||
* [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-macOS)
|
* cmake (>= 3.10.0)
|
||||||
|
* make (>= 4.2) or ninja (>= 1.10)
|
||||||
|
* g++ (>= 4.9) or clang++ (>= 6.0)
|
||||||
|
* asciidoctor (>= 2.0)
|
||||||
|
|
||||||
|
* Besides a working C++ toolchain, KeePassXC also has a number of direct build and runtime dependencies. For detailed information about how to install them, please refer to the GitHub wiki:
|
||||||
|
|
||||||
|
* [Set up Build Environment on Linux](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux)
|
||||||
|
* [Set up Build Environment on Windows](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Windows)
|
||||||
|
* [Set up Build Environment on macOS](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-macOS)
|
||||||
|
|
||||||
Build Steps
|
Build Steps
|
||||||
===========
|
===========
|
||||||
We recommend using the release tool to perform builds, please read up-to-date instructions [on our wiki](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#building-using-the-release-tool).
|
We recommend using the release tool to perform builds, please read up-to-date instructions [on our wiki](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#building-using-the-release-tool).
|
||||||
|
|
||||||
To compile from source, open a **Terminal (on Linux/MacOS)** or a **MSYS2-MinGW shell (on Windows)**<br/>
|
To compile from source, open a **Terminal (Linux/MacOS)**, the **MSVC Tools Command Prompt (Windows)**, or **MSYS2-MinGW shell (Windows)**. For code development on Windows, you can use Visual Studio 2022, Visual Studio Code, or CLion.
|
||||||
**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)
|
1. 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).
|
||||||
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
|
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
|
|
||||||
```
|
|
||||||
|
|
||||||
For a stable build, it is recommended to checkout the master branch.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git checkout master
|
|
||||||
```
|
|
||||||
|
|
||||||
Navigate to the directory where you have downloaded KeePassXC and type these commands:
|
|
||||||
|
|
||||||
```
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
cmake -DWITH_XC_ALL=ON ..
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are on Windows, you may have to add ```-G "MSYS Makefiles"``` to the beginning of the cmake command. See the [Windows Build Instructions](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#windows) for more information.
|
|
||||||
|
|
||||||
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
|
git clone https://github.com/keepassxreboot/keepassxc.git
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
|
||||||
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
|
||||||
-DWITH_GUI_TESTS=ON
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* cmake accepts the following options:
|
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:
|
||||||
|
|
||||||
```
|
```
|
||||||
-DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
|
git pull
|
||||||
-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_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (e.g., favicon downloading) (default: OFF)
|
|
||||||
-DWITH_XC_SSHAGENT=[ON|OFF] Enable/Disable SSHAgent support (default: OFF)
|
|
||||||
-DWITH_XC_TOUCHID=[ON|OFF] (macOS Only) Enable/Disable Touch ID unlock (default:OFF)
|
|
||||||
-DWITH_XC_FDOSECRETS=[ON|OFF] (Linux Only) Enable/Disable Freedesktop.org Secrets Service support (default:OFF)
|
|
||||||
-DWITH_XC_KEESHARE=[ON|OFF] Enable/Disable KeeShare group synchronization extension (default: OFF)
|
|
||||||
-DWITH_XC_KEESHARE_SECURE=[ON|OFF] Enable/Disable KeeShare signed containers, requires libquazip5 (default: OFF)
|
|
||||||
-DWITH_XC_ALL=[ON|OFF] Enable/Disable compiling all plugins above (default: OFF)
|
|
||||||
|
|
||||||
-DWITH_XC_UPDATECHECK=[ON|OFF] Enable/Disable automatic updating checking (requires WITH_XC_NETWORKING) (default: ON)
|
|
||||||
|
|
||||||
-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)
|
|
||||||
-DWITH_APP_BUNDLE=[ON|OFF] Enable Application Bundle for macOS (default: ON)
|
|
||||||
|
|
||||||
-DKEEPASSXC_BUILD_TYPE=[Snapshot|PreRelease|Release] Set the build type to show/hide stability warnings (default: "Snapshot")
|
|
||||||
-DKEEPASSXC_DIST_TYPE=[Snap|AppImage|Other] Specify the distribution method (default: "Other")
|
|
||||||
-DOVERRIDE_VERSION=[X.X.X] Specify a version number when building. Used with snapshot builds (default: "")
|
|
||||||
-DGIT_HEAD_OVERRIDE=[XXXXXXX] Specify the 7 digit git commit ref for this build. Used with distribution builds (default: "")
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* 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/`
|
For a stable build, it is recommended to check out the `latest` tag.
|
||||||
|
|
||||||
: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).
|
```
|
||||||
|
git checkout latest
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Navigate to the directory where you have downloaded KeePassXC and run:
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DWITH_XC_ALL=ON ..
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
If you have `vcpkg` installed, add `-DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake` to the `cmake` command to automatically download and install all required build and runtime dependencies locally to your build directory before compiling KeePassXC. Using `vcpkg` is the preferred way to install dependencies on macOS and required on Windows if using the MSVC toolchain.
|
||||||
|
|
||||||
|
For more detailed build instructions for each platform, please refer to the [GitHub wiki](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC).
|
||||||
|
|
||||||
|
Note: These steps place the compiled KeePassXC binary inside the `./build/src/` directory (`src/KeePassXC.app/Contents/MacOS` on macOS).
|
||||||
|
|
||||||
|
## MacOS Build Notes
|
||||||
|
|
||||||
|
If you installed Qt5 via Homebrew and CMake fails to find your Qt installation, you can specify it manually by adding the following parameter:
|
||||||
|
|
||||||
|
`-DCMAKE_PREFIX_PATH=$(brew --prefix qt5)/lib/cmake`
|
||||||
|
|
||||||
|
When building with ASAN support on macOS, you need to use `export ASAN_OPTIONS=detect_leaks=0` before running the tests (LSAN is no supported on macOS).
|
||||||
|
|
||||||
|
## Windows Build Notes
|
||||||
|
|
||||||
|
If you are using MSYS2, you have to add ```-G "MSYS Makefiles"``` at the beginning of the cmake command.
|
||||||
|
|
||||||
|
CMake Configuration Options
|
||||||
|
==========================
|
||||||
|
|
||||||
|
## Recommended CMake Build Parameters
|
||||||
|
|
||||||
|
```
|
||||||
|
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||||
|
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
||||||
|
-DWITH_GUI_TESTS=ON
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional CMake Parameters
|
||||||
|
|
||||||
|
KeePassXC comes with a variety of build options that can turn on/off features. Most notably, we allow you to build the application with all TCP/IP networking code disabled. Please note that we still require and link against Qt5's network library in order to use local named pipes on all operating systems. Each of these build options are supplied at the time of calling cmake:
|
||||||
|
|
||||||
|
```
|
||||||
|
-DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
|
||||||
|
-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_XC_BROWSER_PASSKEYS=[ON|OFF] Enable/Disable Passkeys support for browser integration (default: OFF)
|
||||||
|
-DWITH_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (e.g., favicon downloading) (default: OFF)
|
||||||
|
-DWITH_XC_SSHAGENT=[ON|OFF] Enable/Disable SSHAgent support (default: OFF)
|
||||||
|
-DWITH_XC_FDOSECRETS=[ON|OFF] (Linux Only) Enable/Disable Freedesktop.org Secrets Service support (default:OFF)
|
||||||
|
-DWITH_XC_KEESHARE=[ON|OFF] Enable/Disable KeeShare group synchronization extension (default: OFF)
|
||||||
|
-DWITH_XC_ALL=[ON|OFF] Enable/Disable compiling all plugins above (default: OFF)
|
||||||
|
|
||||||
|
-DWITH_XC_UPDATECHECK=[ON|OFF] Enable/Disable automatic updating checking (requires WITH_XC_NETWORKING) (default: ON)
|
||||||
|
|
||||||
|
-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)
|
||||||
|
-DWITH_APP_BUNDLE=[ON|OFF] Enable Application Bundle for macOS (default: ON)
|
||||||
|
|
||||||
|
-DKEEPASSXC_BUILD_TYPE=[Snapshot|PreRelease|Release] Set the build type to show/hide stability warnings (default: "Snapshot")
|
||||||
|
-DKEEPASSXC_DIST_TYPE=[Snap|AppImage|Other] Specify the distribution method (default: "Other")
|
||||||
|
-DOVERRIDE_VERSION=[X.X.X] Specify a version number when building. Used with snapshot builds (default: "")
|
||||||
|
-DGIT_HEAD_OVERRIDE=[XXXXXXX] Specify the 7 digit git commit ref for this build. Used with distribution builds (default: "")
|
||||||
|
```
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
============
|
============
|
||||||
|
|
||||||
After you have successfully built KeePassXC, install the binary by executing the following:
|
After you have successfully built KeePassXC, install the binary by executing the following:
|
||||||
|
|
||||||
```bash
|
```
|
||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
You can specify the destination dir with
|
|
||||||
```
|
|
||||||
DESTDIR=X
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
Packaging
|
Packaging
|
||||||
=========
|
=========
|
||||||
|
|
||||||
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..). Refer to [keepassxc-packaging](https://github.com/keepassxreboot/keepassxc-packaging)
|
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..). Refer to [keepassxc-packaging](https://github.com/keepassxreboot/keepassxc-packaging) for packaging scripts.
|
||||||
|
|
||||||
|
To package using CMake, run the following command using whichever [generators](https://cmake.org/cmake/help/latest/manual/cpack-generators.7.html) you would like to package with.
|
||||||
|
|
||||||
|
```
|
||||||
|
cpack -G "ZIP;WIX"
|
||||||
|
```
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
=======
|
=======
|
||||||
@@ -152,7 +146,7 @@ You can perform tests on the built executables with:
|
|||||||
make test ARGS+="--output-on-failure"
|
make test ARGS+="--output-on-failure"
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are not currently running on an X Server or Wayland, run the tests as follows:
|
On Linux, if you are not currently running on an X Server or Wayland, run the tests as follows:
|
||||||
```
|
```
|
||||||
make test ARGS+="-E test\(cli\|gui\) --output-on-failure"
|
make test ARGS+="-E test\(cli\|gui\) --output-on-failure"
|
||||||
xvfb-run -e errors -a --server-args="-screen 0 1024x768x24" make test ARGS+="-R test\(cli\|gui\) --output-on-failure"
|
xvfb-run -e errors -a --server-args="-screen 0 1024x768x24" make test ARGS+="-R test\(cli\|gui\) --output-on-failure"
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
@@ -646,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
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 <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
@@ -665,12 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
|
|||||||
You should also get your employer (if you work as a programmer) or school,
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
<http://www.gnu.org/licenses/>.
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
The GNU General Public License does not permit incorporating your program
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
may consider it more useful to permit linking proprietary applications with
|
may consider it more useful to permit linking proprietary applications with
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
Public License instead of this License. But first, please read
|
Public License instead of this License. But first, please read
|
||||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
|
|||||||
that what they have is not the original version, so that the original
|
that what they have is not the original version, so that the original
|
||||||
author's reputation will not be affected by problems that might be
|
author's reputation will not be affected by problems that might be
|
||||||
introduced by others.
|
introduced by others.
|
||||||
|
|
||||||
Finally, software patents pose a constant threat to the existence of
|
Finally, software patents pose a constant threat to the existence of
|
||||||
any free program. We wish to make sure that a company cannot
|
any free program. We wish to make sure that a company cannot
|
||||||
effectively restrict the users of a free program by obtaining a
|
effectively restrict the users of a free program by obtaining a
|
||||||
@@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a
|
|||||||
"work based on the library" and a "work that uses the library". The
|
"work based on the library" and a "work that uses the library". The
|
||||||
former contains code derived from the library, whereas the latter must
|
former contains code derived from the library, whereas the latter must
|
||||||
be combined with the library in order to run.
|
be combined with the library in order to run.
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ Library.
|
|||||||
You may charge a fee for the physical act of transferring a copy,
|
You may charge a fee for the physical act of transferring a copy,
|
||||||
and you may at your option offer warranty protection in exchange for a
|
and you may at your option offer warranty protection in exchange for a
|
||||||
fee.
|
fee.
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion
|
2. You may modify your copy or copies of the Library or any portion
|
||||||
of it, thus forming a work based on the Library, and copy and
|
of it, thus forming a work based on the Library, and copy and
|
||||||
distribute such modifications or work under the terms of Section 1
|
distribute such modifications or work under the terms of Section 1
|
||||||
@@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
|
|||||||
ordinary GNU General Public License has appeared, then you can specify
|
ordinary GNU General Public License has appeared, then you can specify
|
||||||
that version instead if you wish.) Do not make any other change in
|
that version instead if you wish.) Do not make any other change in
|
||||||
these notices.
|
these notices.
|
||||||
|
|
||||||
Once this change is made in a given copy, it is irreversible for
|
Once this change is made in a given copy, it is irreversible for
|
||||||
that copy, so the ordinary GNU General Public License applies to all
|
that copy, so the ordinary GNU General Public License applies to all
|
||||||
subsequent copies and derivative works made from that copy.
|
subsequent copies and derivative works made from that copy.
|
||||||
@@ -267,7 +267,7 @@ Library will still fall under Section 6.)
|
|||||||
distribute the object code for the work under the terms of Section 6.
|
distribute the object code for the work under the terms of Section 6.
|
||||||
Any executables containing that work also fall under Section 6,
|
Any executables containing that work also fall under Section 6,
|
||||||
whether or not they are linked directly with the Library itself.
|
whether or not they are linked directly with the Library itself.
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also combine or
|
6. As an exception to the Sections above, you may also combine or
|
||||||
link a "work that uses the Library" with the Library to produce a
|
link a "work that uses the Library" with the Library to produce a
|
||||||
work containing portions of the Library, and distribute that work
|
work containing portions of the Library, and distribute that work
|
||||||
@@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
|
|||||||
accompany the operating system. Such a contradiction means you cannot
|
accompany the operating system. Such a contradiction means you cannot
|
||||||
use both them and the Library together in an executable that you
|
use both them and the Library together in an executable that you
|
||||||
distribute.
|
distribute.
|
||||||
|
|
||||||
7. You may place library facilities that are a work based on the
|
7. You may place library facilities that are a work based on the
|
||||||
Library side-by-side in a single library together with other library
|
Library side-by-side in a single library together with other library
|
||||||
facilities not covered by this License, and distribute such a combined
|
facilities not covered by this License, and distribute such a combined
|
||||||
@@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further
|
|||||||
restrictions on the recipients' exercise of the rights granted herein.
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
You are not responsible for enforcing compliance by third parties with
|
You are not responsible for enforcing compliance by third parties with
|
||||||
this License.
|
this License.
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
11. If, as a consequence of a court judgment or allegation of patent
|
||||||
infringement or for any other reason (not limited to patent issues),
|
infringement or for any other reason (not limited to patent issues),
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
@@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
|
|||||||
the Free Software Foundation. If the Library does not specify a
|
the Free Software Foundation. If the Library does not specify a
|
||||||
license version number, you may choose any version ever published by
|
license version number, you may choose any version ever published by
|
||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
14. If you wish to incorporate parts of the Library into other free
|
14. If you wish to incorporate parts of the Library into other free
|
||||||
programs whose distribution conditions are incompatible with these,
|
programs whose distribution conditions are incompatible with these,
|
||||||
write to the author to ask for permission. For software which is
|
write to the author to ask for permission. For software which is
|
||||||
@@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|||||||
DAMAGES.
|
DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Libraries
|
How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
If you develop a new library, and you want it to be of the greatest
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|||||||
12
README.md
@@ -3,10 +3,10 @@
|
|||||||
[](https://codecov.io/gh/keepassxreboot/keepassxc)
|
[](https://codecov.io/gh/keepassxreboot/keepassxc)
|
||||||
[](https://github.com/keepassxreboot/keepassxc/releases/)
|
[](https://github.com/keepassxreboot/keepassxc/releases/)
|
||||||
|
|
||||||
[](https://matrix.to/#/!zUxwGnFkUyycpxeHeM:matrix.org?via=matrix.org)
|
[](https://app.element.io/#/room/#keepassxc:mozilla.org)
|
||||||
[](https://matrix.to/#/!RhJPJPGwQIFVQeXqZa:matrix.org?via=matrix.org)
|
[](https://app.element.io/#/room/#keepassxc-dev:mozilla.org)
|
||||||
|
|
||||||
[KeePassXC](https://keepassxc.org) is a modern, secure, and open-source password manager that stores and manages your most sensitive information. You can run KeePassXC on Windows, macOS, and Linux systems. KeePassXC is for people with extremely high demands of secure personal data management. It saves many different types of information, such as usernames, passwords, URLs, attachments, and notes in an offline, encrypted file that can be stored in any location, including private and public cloud solutions. For easy identification and management, user-defined titles and icons can be specified for entries. In addition, entries are sorted in customizable groups. An integrated search function allows you to use advanced patterns to easily find any entry in your database. A customizable, fast, and easy-to-use password generator utility allows you to create passwords with any combination of characters or easy to remember passphrases.
|
[KeePassXC](https://keepassxc.org) is a modern, secure, and open-source password manager that stores and manages your most sensitive information. You can run KeePassXC on Windows, macOS, and Linux systems. KeePassXC is for people with extremely high demands of secure personal data management. It saves many different types of information, such as usernames, passwords, URLs, attachments, and notes in an offline, encrypted file that can be stored in any location, including private and public cloud solutions. For easy identification and management, user-defined titles and icons can be specified for entries. In addition, entries are sorted into customizable groups. An integrated search function allows you to use advanced patterns to easily find any entry in your database. A customizable, fast, and easy-to-use password generator utility allows you to create passwords with any combination of characters or easy to remember passphrases.
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html) gets you started using KeePassXC on your Windows, macOS, 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 your distribution's package list to see if KeePassXC is available. Detailed documentation is available in the [User Guide](https://keepassxc.org/docs/KeePassXC_UserGuide.html).
|
The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html) gets you started using KeePassXC on your Windows, macOS, 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 your distribution's package list to see if KeePassXC is available. Detailed documentation is available in the [User Guide](https://keepassxc.org/docs/KeePassXC_UserGuide.html).
|
||||||
@@ -15,7 +15,7 @@ The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html)
|
|||||||
KeePassXC has numerous features for novice and power users alike. Our goal is to create an application that can be used by anyone while still offering advanced features to those that need them.
|
KeePassXC has numerous features for novice and power users alike. Our goal is to create an application that can be used by anyone while still offering advanced features to those that need them.
|
||||||
|
|
||||||
### Basic
|
### Basic
|
||||||
* Create, open, and save databases in the KDBX format (KeePass compatible to KDBX4 and KDBX3)
|
* Create, open, and save databases in the KDBX format (KeePass-compatible with KDBX4 and KDBX3)
|
||||||
* Store sensitive information in entries that are organized by groups
|
* Store sensitive information in entries that are organized by groups
|
||||||
* Search for entries
|
* Search for entries
|
||||||
* Password generator
|
* Password generator
|
||||||
@@ -35,7 +35,7 @@ KeePassXC has numerous features for novice and power users alike. Our goal is to
|
|||||||
* Command line interface (keepassxc-cli)
|
* Command line interface (keepassxc-cli)
|
||||||
* Auto-Open databases
|
* Auto-Open databases
|
||||||
* KeeShare shared databases (import, export, and synchronize)
|
* KeeShare shared databases (import, export, and synchronize)
|
||||||
* SSH Agent
|
* SSH Agent integration
|
||||||
* FreeDesktop.org Secret Service (replace Gnome keyring, etc.)
|
* FreeDesktop.org Secret Service (replace Gnome keyring, etc.)
|
||||||
* Additional encryption choices: Twofish and ChaCha20
|
* Additional encryption choices: Twofish and ChaCha20
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ Detailed instructions are available in the [Build and Install](./INSTALL.md) pag
|
|||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
We are always looking for suggestions on how to improve KeePassXC. If you find any bugs or have an idea for a new feature, please let us know by opening a report in the [issue tracker](https://github.com/keepassxreboot/keepassxc/issues) on GitHub or join us on IRC in [freenode](https://webchat.freenode.net/) channels #keepassxc and #keepassxc-dev.
|
We are always looking for suggestions on how to improve KeePassXC. If you find any bugs or have an idea for a new feature, please let us know by opening a report in the [issue tracker](https://github.com/keepassxreboot/keepassxc/issues) on GitHub, or join us on [Matrix community channel](https://matrix.to/#/!zUxwGnFkUyycpxeHeM:matrix.org?via=matrix.org) or [Matrix development channel](https://matrix.to/#/!RhJPJPGwQIFVQeXqZa:matrix.org?via=matrix.org), or on IRC in [Libera.Chat](https://web.libera.chat/) channels #keepassxc and #keepassxc-dev.
|
||||||
|
|
||||||
You may directly contribute your own code by submitting a pull request. Please read the [CONTRIBUTING](.github/CONTRIBUTING.md) document for further information.
|
You may directly contribute your own code by submitting a pull request. Please read the [CONTRIBUTING](.github/CONTRIBUTING.md) document for further information.
|
||||||
|
|
||||||
|
|||||||
@@ -15,50 +15,46 @@
|
|||||||
|
|
||||||
set(EXCLUDED_DIRS
|
set(EXCLUDED_DIRS
|
||||||
# third-party directories
|
# third-party directories
|
||||||
src/zxcvbn/
|
src/thirdparty
|
||||||
|
src/zxcvbn
|
||||||
# objective-c directories
|
# objective-c directories
|
||||||
src/touchid/
|
src/touchid
|
||||||
src/autotype/mac/
|
src/autotype/mac
|
||||||
src/gui/osutils/macutils/)
|
src/gui/osutils/macutils)
|
||||||
|
|
||||||
set(EXCLUDED_FILES
|
set(EXCLUDED_FILES
|
||||||
# third-party files
|
# third-party files
|
||||||
streams/qtiocompressor.cpp
|
src/streams/qtiocompressor.\\*
|
||||||
streams/qtiocompressor.h
|
src/gui/KMessageWidget.\\*
|
||||||
gui/KMessageWidget.h
|
src/gui/MainWindowAdaptor.\\*
|
||||||
gui/KMessageWidget.cpp
|
src/gui/tag/TagsEdit.\\*
|
||||||
gui/MainWindowAdaptor.h
|
tests/modeltest.\\*
|
||||||
gui/MainWindowAdaptor.cpp
|
|
||||||
crypto/ssh/bcrypt_pbkdf.cpp
|
|
||||||
crypto/ssh/blf.h
|
|
||||||
crypto/ssh/blowfish.c
|
|
||||||
tests/modeltest.cpp
|
|
||||||
tests/modeltest.h
|
|
||||||
# objective-c files
|
# objective-c files
|
||||||
core/ScreenLockListenerMac.h
|
src/core/ScreenLockListenerMac.\\*)
|
||||||
core/ScreenLockListenerMac.cpp)
|
|
||||||
|
|
||||||
file(GLOB_RECURSE ALL_SOURCE_FILES RELATIVE ${CMAKE_SOURCE_DIR} src/*.cpp src/*.h tests/*.cpp tests/*.h)
|
set(FIND_EXCLUDE_DIR_EXPR "")
|
||||||
foreach(SOURCE_FILE ${ALL_SOURCE_FILES})
|
foreach(EXCLUDE ${EXCLUDED_DIRS})
|
||||||
foreach(EXCLUDED_DIR ${EXCLUDED_DIRS})
|
list(APPEND FIND_EXCLUDE_DIR_EXPR -o -path "${EXCLUDE}" -prune)
|
||||||
string(FIND ${SOURCE_FILE} ${EXCLUDED_DIR} SOURCE_FILE_EXCLUDED)
|
|
||||||
if(NOT ${SOURCE_FILE_EXCLUDED} EQUAL -1)
|
|
||||||
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
foreach(EXCLUDED_FILE ${EXCLUDED_FILES})
|
|
||||||
if(${SOURCE_FILE} MATCHES ".*${EXCLUDED_FILE}$")
|
|
||||||
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
set(FIND_EXCLUDE_FILE_EXPR "")
|
||||||
|
foreach(EXCLUDE ${EXCLUDED_FILES})
|
||||||
|
if(FIND_EXCLUDE_FILE_EXPR)
|
||||||
|
list(APPEND FIND_EXCLUDE_FILE_EXPR -o)
|
||||||
|
endif()
|
||||||
|
list(APPEND FIND_EXCLUDE_FILE_EXPR -path "${EXCLUDE}")
|
||||||
|
endforeach()
|
||||||
|
if(FIND_EXCLUDE_FILE_EXPR)
|
||||||
|
set(FIND_EXCLUDE_FILE_EXPR -a -not "\\(" ${FIND_EXCLUDE_FILE_EXPR} "\\)")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_target(format)
|
add_custom_target(format)
|
||||||
foreach(SOURCE_FILE ${ALL_SOURCE_FILES})
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET format
|
TARGET format
|
||||||
PRE_BUILD
|
PRE_BUILD
|
||||||
COMMAND echo Formatting ${SOURCE_FILE}
|
COMMAND find src tests "\\(" -name "\\*.h" -o -name "\\*.cpp" ${FIND_EXCLUDE_DIR_EXPR} "\\)"
|
||||||
COMMAND clang-format -style=file -i \"${SOURCE_FILE}\"
|
${FIND_EXCLUDE_FILE_EXPR} -type f -print0 | xargs -0 -P0 -n10 clang-format -style=file -i
|
||||||
|
|
||||||
|
COMMENT "Formatting source files..."
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
endforeach()
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# Copyright (c) 2012 - 2017, Lars Bilke
|
# Copyright (c) 2012 - 2017, Lars Bilke
|
||||||
|
# Copyright (c) 2021 KeePassXC Team
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without modification,
|
# Redistribution and use in source and binary forms, with or without modification,
|
||||||
@@ -25,279 +26,218 @@
|
|||||||
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# 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
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
|
||||||
# CHANGES:
|
|
||||||
#
|
|
||||||
# 2012-01-31, Lars Bilke
|
|
||||||
# - Enable Code Coverage
|
|
||||||
#
|
|
||||||
# 2013-09-17, Joakim Söderberg
|
|
||||||
# - Added support for Clang.
|
|
||||||
# - Some additional usage instructions.
|
|
||||||
#
|
|
||||||
# 2016-02-03, Lars Bilke
|
|
||||||
# - Refactored functions to use named parameters
|
|
||||||
#
|
|
||||||
# 2017-06-02, Lars Bilke
|
|
||||||
# - Merged with modified version from github.com/ufz/ogs
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# USAGE:
|
|
||||||
#
|
|
||||||
# 1. Copy this file into your cmake modules path.
|
|
||||||
#
|
|
||||||
# 2. Add the following line to your CMakeLists.txt:
|
|
||||||
# include(CodeCoverage)
|
|
||||||
#
|
|
||||||
# 3. Append necessary compiler flags:
|
|
||||||
# APPEND_COVERAGE_COMPILER_FLAGS()
|
|
||||||
#
|
|
||||||
# 4. If you need to exclude additional directories from the report, specify them
|
|
||||||
# using the COVERAGE_LCOV_EXCLUDES variable before calling SETUP_TARGET_FOR_COVERAGE_LCOV.
|
|
||||||
# Example:
|
|
||||||
# set(COVERAGE_LCOV_EXCLUDES 'dir1/*' 'dir2/*')
|
|
||||||
#
|
|
||||||
# 5. Use the functions described below to create a custom make target which
|
|
||||||
# runs your test executable and produces a code coverage report.
|
|
||||||
#
|
|
||||||
# 6. Build a Debug build:
|
|
||||||
# cmake -DCMAKE_BUILD_TYPE=Debug ..
|
|
||||||
# make
|
|
||||||
# make my_coverage_target
|
|
||||||
#
|
|
||||||
|
|
||||||
include(CMakeParseArguments)
|
include(CMakeParseArguments)
|
||||||
|
|
||||||
# Check prereqs
|
# Check prereqs
|
||||||
find_program( GCOV_PATH gcov )
|
find_program(GCOV_PATH gcov)
|
||||||
find_program( LCOV_PATH NAMES lcov lcov.bat lcov.exe lcov.perl)
|
find_program(LLVM_COV_PATH llvm-cov)
|
||||||
find_program( GENHTML_PATH NAMES genhtml genhtml.perl genhtml.bat )
|
find_program(LLVM_PROFDATA_PATH llvm-profdata)
|
||||||
find_program( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/scripts/test)
|
find_program(XCRUN_PATH xcrun)
|
||||||
find_program( SIMPLE_PYTHON_EXECUTABLE python )
|
find_program(GENHTML_PATH NAMES genhtml genhtml.perl genhtml.bat)
|
||||||
|
find_program(GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/scripts/test)
|
||||||
|
|
||||||
if(NOT GCOV_PATH)
|
set(COVERAGE_COMPILER_FLAGS "-g -O0" CACHE INTERNAL "")
|
||||||
message(FATAL_ERROR "gcov not found! Aborting...")
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
endif() # NOT GCOV_PATH
|
set(COVERAGE_COMPILER_FLAGS "${COVERAGE_COMPILER_FLAGS} --coverage -fprofile-arcs -ftest-coverage")
|
||||||
|
elseif(CMAKE_COMPILER_IS_CLANGXX)
|
||||||
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
|
set(COVERAGE_COMPILER_FLAGS "${COVERAGE_COMPILER_FLAGS} -fprofile-instr-generate -fcoverage-mapping")
|
||||||
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()
|
endif()
|
||||||
|
|
||||||
set(COVERAGE_COMPILER_FLAGS "-g -O0 --coverage -fprofile-arcs -ftest-coverage"
|
set(CMAKE_COVERAGE_FORMAT
|
||||||
CACHE INTERNAL "")
|
"html" "xml"
|
||||||
|
CACHE STRING "Coverage report output format.")
|
||||||
|
set_property(CACHE CMAKE_COVERAGE_FORMAT PROPERTY STRINGS "html" "txt")
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS_COVERAGE
|
set(CMAKE_CXX_FLAGS_COVERAGE
|
||||||
${COVERAGE_COMPILER_FLAGS}
|
${COVERAGE_COMPILER_FLAGS}
|
||||||
CACHE STRING "Flags used by the C++ compiler during coverage builds."
|
CACHE STRING "Flags used by the C++ compiler during coverage builds.")
|
||||||
FORCE )
|
|
||||||
set(CMAKE_C_FLAGS_COVERAGE
|
set(CMAKE_C_FLAGS_COVERAGE
|
||||||
${COVERAGE_COMPILER_FLAGS}
|
${COVERAGE_COMPILER_FLAGS}
|
||||||
CACHE STRING "Flags used by the C compiler during coverage builds."
|
CACHE STRING "Flags used by the C compiler during coverage builds.")
|
||||||
FORCE )
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||||
""
|
""
|
||||||
CACHE STRING "Flags used for linking binaries during coverage builds."
|
CACHE STRING "Flags used for linking binaries during coverage builds.")
|
||||||
FORCE )
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE
|
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE
|
||||||
""
|
""
|
||||||
CACHE STRING "Flags used by the shared libraries linker during coverage builds."
|
CACHE STRING "Flags used by the shared libraries linker during coverage builds.")
|
||||||
FORCE )
|
|
||||||
mark_as_advanced(
|
mark_as_advanced(
|
||||||
|
CMAKE_COVERAGE_FORMAT
|
||||||
CMAKE_CXX_FLAGS_COVERAGE
|
CMAKE_CXX_FLAGS_COVERAGE
|
||||||
CMAKE_C_FLAGS_COVERAGE
|
CMAKE_C_FLAGS_COVERAGE
|
||||||
CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||||
CMAKE_SHARED_LINKER_FLAGS_COVERAGE )
|
CMAKE_SHARED_LINKER_FLAGS_COVERAGE)
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
if(NOT CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
||||||
message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading")
|
message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading")
|
||||||
endif() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug"
|
endif() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug"
|
||||||
|
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||||
|
if(NOT GCOV_PATH)
|
||||||
|
message(FATAL_ERROR "gcov not found! Aborting...")
|
||||||
|
endif() # NOT GCOV_PATH
|
||||||
link_libraries(gcov)
|
link_libraries(gcov)
|
||||||
else()
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Defines a target for running and collection code coverage information
|
|
||||||
# Builds dependencies, runs the given executable and outputs reports.
|
|
||||||
# NOTE! The executable should always have a ZERO as exit code otherwise
|
|
||||||
# the coverage generation will not complete.
|
|
||||||
#
|
|
||||||
# SETUP_TARGET_FOR_COVERAGE_LCOV(
|
|
||||||
# NAME testrunner_coverage # New target name
|
|
||||||
# EXECUTABLE testrunner -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
|
|
||||||
# DEPENDENCIES testrunner # Dependencies to build first
|
|
||||||
# )
|
|
||||||
function(SETUP_TARGET_FOR_COVERAGE_LCOV)
|
|
||||||
|
|
||||||
set(options NONE)
|
|
||||||
set(oneValueArgs NAME)
|
|
||||||
set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES)
|
|
||||||
cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
# Setup target
|
|
||||||
add_custom_target(${Coverage_NAME}
|
|
||||||
|
|
||||||
# Cleanup lcov
|
|
||||||
COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} -directory . --zerocounters
|
|
||||||
# Create baseline to make sure untouched files show up in the report
|
|
||||||
COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} -c -i -d . -o ${Coverage_NAME}.base
|
|
||||||
|
|
||||||
# Run tests
|
|
||||||
COMMAND ${Coverage_EXECUTABLE}
|
|
||||||
|
|
||||||
# Capturing lcov counters and generating report
|
|
||||||
COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} --directory . --capture --output-file ${Coverage_NAME}.info
|
|
||||||
# add baseline counters
|
|
||||||
COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} -a ${Coverage_NAME}.base -a ${Coverage_NAME}.info --output-file ${Coverage_NAME}.total
|
|
||||||
COMMAND ${LCOV_PATH} --gcov-tool ${GCOV_PATH} --remove ${Coverage_NAME}.total ${COVERAGE_LCOV_EXCLUDES} --output-file ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned
|
|
||||||
COMMAND ${GENHTML_PATH} -o ${Coverage_NAME} ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E remove ${Coverage_NAME}.base ${Coverage_NAME}.total ${PROJECT_BINARY_DIR}/${Coverage_NAME}.info.cleaned
|
|
||||||
|
|
||||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
|
||||||
DEPENDS ${Coverage_DEPENDENCIES}
|
|
||||||
COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report."
|
|
||||||
)
|
|
||||||
|
|
||||||
# Show where to find the lcov info report
|
|
||||||
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
|
||||||
COMMAND ;
|
|
||||||
COMMENT "Lcov code coverage info report saved in ${Coverage_NAME}.info."
|
|
||||||
)
|
|
||||||
|
|
||||||
# Show info where to find the report
|
|
||||||
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
|
||||||
COMMAND ;
|
|
||||||
COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report."
|
|
||||||
)
|
|
||||||
|
|
||||||
endfunction() # SETUP_TARGET_FOR_COVERAGE_LCOV
|
|
||||||
|
|
||||||
# Defines a target for running and collection code coverage information
|
# Defines a target for running and collection code coverage information
|
||||||
# Builds dependencies, runs the given executable and outputs reports.
|
# Builds dependencies, runs the given executable and outputs reports.
|
||||||
# NOTE! The executable should always have a ZERO as exit code otherwise
|
# NOTE! The executable should always have a ZERO as exit code otherwise
|
||||||
# the coverage generation will not complete.
|
# the coverage generation will not complete.
|
||||||
#
|
#
|
||||||
# SETUP_TARGET_FOR_COVERAGE_GCOVR_XML(
|
# SETUP_TARGET_FOR_COVERAGE_GCOVR(
|
||||||
# NAME ctest_coverage # New target name
|
# NAME ctest_coverage # New target name
|
||||||
# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
|
# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
|
||||||
# DEPENDENCIES executable_target # Dependencies to build first
|
# DEPENDENCIES executable_target # Dependencies to build first
|
||||||
# )
|
# )
|
||||||
function(SETUP_TARGET_FOR_COVERAGE_GCOVR_XML)
|
function(SETUP_TARGET_FOR_COVERAGE_GCOVR)
|
||||||
|
|
||||||
set(options NONE)
|
set(options NONE)
|
||||||
set(oneValueArgs NAME)
|
set(oneValueArgs NAME SOURCES_ROOT)
|
||||||
set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES)
|
set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES)
|
||||||
cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
if(NOT SIMPLE_PYTHON_EXECUTABLE)
|
|
||||||
message(FATAL_ERROR "python not found! Aborting...")
|
|
||||||
endif() # NOT SIMPLE_PYTHON_EXECUTABLE
|
|
||||||
|
|
||||||
if(NOT GCOVR_PATH)
|
if(NOT GCOVR_PATH)
|
||||||
message(FATAL_ERROR "gcovr not found! Aborting...")
|
message(FATAL_ERROR "gcovr not found! Aborting...")
|
||||||
endif() # NOT GCOVR_PATH
|
endif() # NOT GCOVR_PATH
|
||||||
|
|
||||||
# Combine excludes to several -e arguments
|
# Combine excludes to several -e arguments
|
||||||
set(GCOVR_EXCLUDES "")
|
set(GCOVR_EXCLUDES "")
|
||||||
foreach(EXCLUDE ${COVERAGE_GCOVR_EXCLUDES})
|
foreach(EXCLUDE ${COVERAGE_EXCLUDES})
|
||||||
list(APPEND GCOVR_EXCLUDES "-e")
|
list(APPEND GCOVR_EXCLUDES "-e")
|
||||||
list(APPEND GCOVR_EXCLUDES "${EXCLUDE}")
|
list(APPEND GCOVR_EXCLUDES "${EXCLUDE}")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_custom_target(${Coverage_NAME}
|
add_custom_target(${Coverage_NAME}
|
||||||
# Run tests
|
# Run tests
|
||||||
${Coverage_EXECUTABLE}
|
COMMAND ctest -C $<CONFIG> $ENV{ARGS} $$ARGS
|
||||||
|
|
||||||
# Running gcovr
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
COMMAND ${GCOVR_PATH} --xml
|
DEPENDS ${Coverage_DEPENDENCIES}
|
||||||
-r ${PROJECT_SOURCE_DIR} ${GCOVR_EXCLUDES}
|
)
|
||||||
|
|
||||||
|
if("html" IN_LIST CMAKE_COVERAGE_FORMAT)
|
||||||
|
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
||||||
|
# Create folder
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/${Coverage_NAME}-html
|
||||||
|
|
||||||
|
# Running gcovr HTML
|
||||||
|
COMMAND ${GCOVR_PATH} --html --html-details
|
||||||
|
-r ${Coverage_SOURCES_ROOT} ${GCOVR_EXCLUDES}
|
||||||
--object-directory=${PROJECT_BINARY_DIR}
|
--object-directory=${PROJECT_BINARY_DIR}
|
||||||
|
--exclude-unreachable-branches --exclude-throw-branches
|
||||||
|
-o ${Coverage_NAME}-html/index.html
|
||||||
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
|
COMMENT "Running gcovr to produce HTML code coverage report ${Coverage_NAME}-html."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("xml" IN_LIST CMAKE_COVERAGE_FORMAT)
|
||||||
|
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
||||||
|
# Running gcovr TXT
|
||||||
|
COMMAND ${GCOVR_PATH} --xml
|
||||||
|
-r ${Coverage_SOURCES_ROOT} ${GCOVR_EXCLUDES}
|
||||||
|
--object-directory=${PROJECT_BINARY_DIR}
|
||||||
|
--exclude-unreachable-branches --exclude-throw-branches
|
||||||
-o ${Coverage_NAME}.xml
|
-o ${Coverage_NAME}.xml
|
||||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
DEPENDS ${Coverage_DEPENDENCIES}
|
COMMENT "Running gcovr to produce XML code coverage report ${Coverage_NAME}.xml."
|
||||||
COMMENT "Running gcovr to produce Cobertura code coverage report."
|
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Show info where to find the report
|
if("txt" IN_LIST CMAKE_COVERAGE_FORMAT)
|
||||||
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
||||||
COMMAND ;
|
# Running gcovr TXT
|
||||||
COMMENT "Cobertura code coverage report saved in ${Coverage_NAME}.xml."
|
COMMAND ${GCOVR_PATH}
|
||||||
|
-r ${Coverage_SOURCES_ROOT} ${GCOVR_EXCLUDES}
|
||||||
|
--object-directory=${PROJECT_BINARY_DIR}
|
||||||
|
--exclude-unreachable-branches --exclude-throw-branches
|
||||||
|
-o ${Coverage_NAME}.txt
|
||||||
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
|
COMMENT "Running gcovr to produce TXT code coverage report ${Coverage_NAME}.txt."
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
endfunction() # SETUP_TARGET_FOR_COVERAGE_GCOVR_XML
|
endfunction() # SETUP_TARGET_FOR_COVERAGE_GCOVR
|
||||||
|
|
||||||
# Defines a target for running and collection code coverage information
|
# Defines a target for running and collection code coverage information
|
||||||
# Builds dependencies, runs the given executable and outputs reports.
|
# Builds dependencies, runs the given executable and outputs reports.
|
||||||
# NOTE! The executable should always have a ZERO as exit code otherwise
|
# NOTE! The executable should always have a ZERO as exit code otherwise
|
||||||
# the coverage generation will not complete.
|
# the coverage generation will not complete.
|
||||||
#
|
#
|
||||||
# SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML(
|
# SETUP_TARGET_FOR_COVERAGE_LLVM(
|
||||||
# NAME ctest_coverage # New target name
|
# NAME ctest_coverage # New target name
|
||||||
# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
|
# EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
|
||||||
# DEPENDENCIES executable_target # Dependencies to build first
|
# DEPENDENCIES executable_target # Dependencies to build first
|
||||||
# )
|
# )
|
||||||
function(SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML)
|
function(SETUP_TARGET_FOR_COVERAGE_LLVM)
|
||||||
|
|
||||||
set(options NONE)
|
set(options NONE)
|
||||||
set(oneValueArgs NAME)
|
set(oneValueArgs NAME SOURCES_ROOT PROF_FILE)
|
||||||
set(multiValueArgs EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES)
|
set(multiValueArgs EXECUTABLE BINARY EXECUTABLE_ARGS DEPENDENCIES)
|
||||||
cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
if(NOT SIMPLE_PYTHON_EXECUTABLE)
|
if(XCRUN_PATH)
|
||||||
message(FATAL_ERROR "python not found! Aborting...")
|
set(LLVM_COV_PATH ${XCRUN_PATH} llvm-cov)
|
||||||
endif() # NOT SIMPLE_PYTHON_EXECUTABLE
|
set(LLVM_PROFDATA_PATH ${XCRUN_PATH} llvm-profdata)
|
||||||
|
else()
|
||||||
|
if(NOT LLVM_COV_PATH)
|
||||||
|
message(FATAL_ERROR "llvm-cov not found! Aborting...")
|
||||||
|
endif() # NOT LLVM_COV_PATH
|
||||||
|
if(NOT LLVM_PROFDATA_PATH)
|
||||||
|
message(FATAL_ERROR "llvm-profdata not found! Aborting...")
|
||||||
|
endif() # NOT LLVM_PROFDATA_PATH
|
||||||
|
endif() # XCRUN_PATH
|
||||||
|
|
||||||
if(NOT GCOVR_PATH)
|
set(LLVM_PROFILE_DIR ${PROJECT_BINARY_DIR}/llvm_profile)
|
||||||
message(FATAL_ERROR "gcovr not found! Aborting...")
|
file(REMOVE_RECURSE ${LLVM_PROFILE_DIR})
|
||||||
endif() # NOT GCOVR_PATH
|
|
||||||
|
|
||||||
# Combine excludes to several -e arguments
|
set(COV_EXCLUDES "")
|
||||||
set(GCOVR_EXCLUDES "")
|
foreach(EXCLUDE ${COVERAGE_EXCLUDES})
|
||||||
foreach(EXCLUDE ${COVERAGE_GCOVR_EXCLUDES})
|
list(APPEND COV_EXCLUDES "-ignore-filename-regex=${EXCLUDE}")
|
||||||
list(APPEND GCOVR_EXCLUDES "-e")
|
|
||||||
list(APPEND GCOVR_EXCLUDES "${EXCLUDE}")
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
list(GET Coverage_BINARY 0 COV_BINARY)
|
||||||
|
if(Coverage_BINARY)
|
||||||
|
list(REMOVE_AT Coverage_BINARY 0)
|
||||||
|
foreach(BIN ${Coverage_BINARY})
|
||||||
|
list(APPEND COV_BINARY -object ${BIN})
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_target(${Coverage_NAME}
|
add_custom_target(${Coverage_NAME}
|
||||||
# Run tests
|
COMMAND ${CMAKE_COMMAND} -E env LLVM_PROFILE_FILE=${LLVM_PROFILE_DIR}/profile-%p.profraw ctest -C $<CONFIG> $$ARGS
|
||||||
${Coverage_EXECUTABLE}
|
|
||||||
|
|
||||||
# Create folder
|
COMMAND ${LLVM_PROFDATA_PATH} merge -sparse ${LLVM_PROFILE_DIR}/* -o coverage.profdata
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/${Coverage_NAME}
|
|
||||||
|
|
||||||
# Running gcovr
|
|
||||||
COMMAND ${GCOVR_PATH} --html --html-details
|
|
||||||
-r ${PROJECT_SOURCE_DIR} ${GCOVR_EXCLUDES}
|
|
||||||
--object-directory=${PROJECT_BINARY_DIR}
|
|
||||||
-o ${Coverage_NAME}/index.html
|
|
||||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
DEPENDS ${Coverage_DEPENDENCIES}
|
DEPENDS ${Coverage_DEPENDENCIES})
|
||||||
COMMENT "Running gcovr to produce HTML code coverage report."
|
|
||||||
)
|
|
||||||
|
|
||||||
# Show info where to find the report
|
if("html" IN_LIST CMAKE_COVERAGE_FORMAT)
|
||||||
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
||||||
COMMAND ;
|
COMMAND ${LLVM_COV_PATH} show -instr-profile=coverage.profdata ${COV_BINARY}
|
||||||
COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report."
|
--format=html --output-dir=${Coverage_NAME}-html ${COV_EXCLUDES} ${Coverage_SOURCES_ROOT}
|
||||||
)
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
|
COMMENT "Running llvm-cov to produce HTML code coverage report ${Coverage_NAME}-html")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("xml" IN_LIST CMAKE_COVERAGE_FORMAT)
|
||||||
|
message(WARNING "XML coverage report format not supported for llvm-cov")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("txt" IN_LIST CMAKE_COVERAGE_FORMAT)
|
||||||
|
add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
|
||||||
|
COMMAND ${LLVM_COV_PATH} show -instr-profile=coverage.profdata ${COV_BINARY}
|
||||||
|
--format=text ${COV_EXCLUDES} ${Coverage_SOURCES_ROOT} > ${Coverage_NAME}.txt
|
||||||
|
|
||||||
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
|
COMMENT "Running llvm-cov to produce TXT code coverage report ${Coverage_NAME}.txt.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction() # SETUP_TARGET_FOR_COVERAGE_LLVM
|
||||||
|
|
||||||
endfunction() # SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML
|
|
||||||
|
|
||||||
function(APPEND_COVERAGE_COMPILER_FLAGS)
|
function(APPEND_COVERAGE_COMPILER_FLAGS)
|
||||||
|
message(STATUS "Appending code coverage compiler flags: ${COVERAGE_COMPILER_FLAGS}")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE)
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE)
|
||||||
message(STATUS "Appending code coverage compiler flags: ${COVERAGE_COMPILER_FLAGS}")
|
|
||||||
endfunction() # APPEND_COVERAGE_COMPILER_FLAGS
|
endfunction() # APPEND_COVERAGE_COMPILER_FLAGS
|
||||||
65
cmake/FindBotan.cmake
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# - Find botan
|
||||||
|
# Find the botan cryptographic library
|
||||||
|
#
|
||||||
|
# This module defines the following variables:
|
||||||
|
# BOTAN_FOUND - True if library and include directory are found
|
||||||
|
# If set to TRUE, the following are also defined:
|
||||||
|
# BOTAN_INCLUDE_DIRS - The directory where to find the header file
|
||||||
|
# BOTAN_LIBRARIES - Where to find the library files
|
||||||
|
#
|
||||||
|
# This file is in the public domain (https://github.com/vistle/vistle/blob/master/cmake/Modules/FindBOTAN.cmake)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
set(BOTAN_VERSIONS botan-3 botan-2)
|
||||||
|
set(BOTAN_NAMES botan-3 botan-2 botan)
|
||||||
|
set(BOTAN_NAMES_DEBUG botand-3 botand-2 botand botan botan-3)
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
BOTAN_INCLUDE_DIR
|
||||||
|
NAMES botan/build.h
|
||||||
|
PATH_SUFFIXES ${BOTAN_VERSIONS}
|
||||||
|
DOC "The Botan include directory")
|
||||||
|
if(BOTAN_INCLUDE_DIR)
|
||||||
|
file(READ "${BOTAN_INCLUDE_DIR}/botan/build.h" build)
|
||||||
|
string(REGEX MATCH "BOTAN_VERSION_MAJOR ([0-9]*)" _ ${build})
|
||||||
|
set(BOTAN_VERSION_MAJOR ${CMAKE_MATCH_1})
|
||||||
|
string(REGEX MATCH "BOTAN_VERSION_MINOR ([0-9]*)" _ ${build})
|
||||||
|
set(BOTAN_VERSION_MINOR ${CMAKE_MATCH_1})
|
||||||
|
string(REGEX MATCH "BOTAN_VERSION_PATCH ([0-9]*)" _ ${build})
|
||||||
|
set(BOTAN_VERSION_PATCH ${CMAKE_MATCH_1})
|
||||||
|
set(BOTAN_VERSION "${BOTAN_VERSION_MAJOR}.${BOTAN_VERSION_MINOR}.${BOTAN_VERSION_PATCH}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
BOTAN_LIBRARY
|
||||||
|
NAMES ${BOTAN_NAMES}
|
||||||
|
PATH_SUFFIXES release/lib lib
|
||||||
|
DOC "The Botan (release) library")
|
||||||
|
if(MSVC)
|
||||||
|
find_library(
|
||||||
|
BOTAN_LIBRARY_DEBUG
|
||||||
|
NAMES ${BOTAN_NAMES_DEBUG}
|
||||||
|
PATH_SUFFIXES debug/lib lib
|
||||||
|
DOC "The Botan debug library")
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Botan
|
||||||
|
REQUIRED_VARS BOTAN_LIBRARY BOTAN_LIBRARY_DEBUG BOTAN_INCLUDE_DIR
|
||||||
|
VERSION_VAR BOTAN_VERSION)
|
||||||
|
else()
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Botan
|
||||||
|
REQUIRED_VARS BOTAN_LIBRARY BOTAN_INCLUDE_DIR
|
||||||
|
VERSION_VAR BOTAN_VERSION)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BOTAN_FOUND)
|
||||||
|
set(BOTAN_INCLUDE_DIRS ${BOTAN_INCLUDE_DIR})
|
||||||
|
if(MSVC)
|
||||||
|
set(BOTAN_LIBRARIES optimized ${BOTAN_LIBRARY} debug ${BOTAN_LIBRARY_DEBUG})
|
||||||
|
else()
|
||||||
|
set(BOTAN_LIBRARIES ${BOTAN_LIBRARY})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(BOTAN_INCLUDE_DIR BOTAN_LIBRARY BOTAN_LIBRARY_DEBUG)
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
# Copyright (c) 2018 Ribose Inc.
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# 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 HOLDERS 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.
|
|
||||||
|
|
||||||
#.rst:
|
|
||||||
# FindBotan2
|
|
||||||
# -----------
|
|
||||||
#
|
|
||||||
# Find the botan-2 library.
|
|
||||||
#
|
|
||||||
# IMPORTED Targets
|
|
||||||
# ^^^^^^^^^^^^^^^^
|
|
||||||
#
|
|
||||||
# This module defines :prop_tgt:`IMPORTED` targets:
|
|
||||||
#
|
|
||||||
# ``Botan2::Botan2``
|
|
||||||
# The botan-2 library, if found.
|
|
||||||
#
|
|
||||||
# Result variables
|
|
||||||
# ^^^^^^^^^^^^^^^^
|
|
||||||
#
|
|
||||||
# This module defines the following variables:
|
|
||||||
#
|
|
||||||
# ::
|
|
||||||
#
|
|
||||||
# BOTAN2_FOUND - true if the headers and library were found
|
|
||||||
# BOTAN2_INCLUDE_DIRS - where to find headers
|
|
||||||
# BOTAN2_LIBRARIES - list of libraries to link
|
|
||||||
# BOTAN2_VERSION - library version that was found, if any
|
|
||||||
|
|
||||||
# use pkg-config to get the directories and then use these values
|
|
||||||
# in the find_path() and find_library() calls
|
|
||||||
find_package(PkgConfig QUIET)
|
|
||||||
pkg_check_modules(PC_BOTAN2 QUIET botan-2)
|
|
||||||
|
|
||||||
# find the headers
|
|
||||||
find_path(BOTAN2_INCLUDE_DIR
|
|
||||||
NAMES botan/version.h
|
|
||||||
HINTS
|
|
||||||
${PC_BOTAN2_INCLUDEDIR}
|
|
||||||
${PC_BOTAN2_INCLUDE_DIRS}
|
|
||||||
PATH_SUFFIXES botan-2
|
|
||||||
)
|
|
||||||
|
|
||||||
# find the library
|
|
||||||
find_library(BOTAN2_LIBRARY
|
|
||||||
NAMES botan-2 libbotan-2
|
|
||||||
HINTS
|
|
||||||
${PC_BOTAN2_LIBDIR}
|
|
||||||
${PC_BOTAN2_LIBRARY_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# determine the version
|
|
||||||
if(PC_BOTAN2_VERSION)
|
|
||||||
set(BOTAN2_VERSION ${PC_BOTAN2_VERSION})
|
|
||||||
elseif(BOTAN2_INCLUDE_DIR AND EXISTS "${BOTAN2_INCLUDE_DIR}/botan/build.h")
|
|
||||||
file(STRINGS "${BOTAN2_INCLUDE_DIR}/botan/build.h" botan2_version_str
|
|
||||||
REGEX "^#define[\t ]+(BOTAN_VERSION_[A-Z]+)[\t ]+[0-9]+")
|
|
||||||
|
|
||||||
string(REGEX REPLACE ".*#define[\t ]+BOTAN_VERSION_MAJOR[\t ]+([0-9]+).*"
|
|
||||||
"\\1" _botan2_version_major "${botan2_version_str}")
|
|
||||||
string(REGEX REPLACE ".*#define[\t ]+BOTAN_VERSION_MINOR[\t ]+([0-9]+).*"
|
|
||||||
"\\1" _botan2_version_minor "${botan2_version_str}")
|
|
||||||
string(REGEX REPLACE ".*#define[\t ]+BOTAN_VERSION_PATCH[\t ]+([0-9]+).*"
|
|
||||||
"\\1" _botan2_version_patch "${botan2_version_str}")
|
|
||||||
set(BOTAN2_VERSION "${_botan2_version_major}.${_botan2_version_minor}.${_botan2_version_patch}"
|
|
||||||
CACHE INTERNAL "The version of Botan which was detected")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
find_package_handle_standard_args(Botan2
|
|
||||||
REQUIRED_VARS BOTAN2_LIBRARY BOTAN2_INCLUDE_DIR
|
|
||||||
VERSION_VAR BOTAN2_VERSION
|
|
||||||
)
|
|
||||||
|
|
||||||
if (BOTAN2_FOUND)
|
|
||||||
set(BOTAN2_INCLUDE_DIRS ${BOTAN2_INCLUDE_DIR} ${PC_BOTAN2_INCLUDE_DIRS})
|
|
||||||
set(BOTAN2_LIBRARIES ${BOTAN2_LIBRARY})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (BOTAN2_FOUND AND NOT TARGET Botan2::Botan2)
|
|
||||||
# create the new library target
|
|
||||||
add_library(Botan2::Botan2 UNKNOWN IMPORTED)
|
|
||||||
# set the required include dirs for the target
|
|
||||||
if (BOTAN2_INCLUDE_DIRS)
|
|
||||||
set_target_properties(Botan2::Botan2
|
|
||||||
PROPERTIES
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${BOTAN2_INCLUDE_DIRS}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
# set the required libraries for the target
|
|
||||||
if (EXISTS "${BOTAN2_LIBRARY}")
|
|
||||||
set_target_properties(Botan2::Botan2
|
|
||||||
PROPERTIES
|
|
||||||
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
|
||||||
IMPORTED_LOCATION "${BOTAN2_LIBRARY}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
mark_as_advanced(BOTAN2_INCLUDE_DIR BOTAN2_LIBRARY)
|
|
||||||
9
cmake/FindMinizip.cmake
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# MINIZIP_FOUND - Minizip library was found
|
||||||
|
# MINIZIP_INCLUDE_DIR - Path to Minizip include dir
|
||||||
|
# MINIZIP_LIBRARIES - List of Minizip libraries
|
||||||
|
|
||||||
|
find_library(MINIZIP_LIBRARIES NAMES minizip libminizip)
|
||||||
|
find_path(MINIZIP_INCLUDE_DIR zip.h PATH_SUFFIXES minizip)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(Minizip DEFAULT_MSG MINIZIP_LIBRARIES MINIZIP_INCLUDE_DIR)
|
||||||
39
cmake/FindPCSC.cmake
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Copyright (C) 2021 KeePassXC Team <team@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/>.
|
||||||
|
|
||||||
|
# Use pkgconfig on Linux
|
||||||
|
if(NOT WIN32)
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
pkg_check_modules(PCSC libpcsclite)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT PCSC_FOUND)
|
||||||
|
# Search for PC/SC headers on Mac and Windows
|
||||||
|
find_path(PCSC_INCLUDE_DIRS winscard.h
|
||||||
|
HINTS
|
||||||
|
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}
|
||||||
|
/usr/include/PCSC
|
||||||
|
PATH_SUFFIXES PCSC)
|
||||||
|
|
||||||
|
# MAC library is PCSC, Windows library is WinSCard
|
||||||
|
find_library(PCSC_LIBRARIES NAMES pcsclite libpcsclite WinSCard PCSC
|
||||||
|
HINTS
|
||||||
|
${CMAKE_C_IMPLICIT_LINK_DIRECTORIES})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(PCSC DEFAULT_MSG PCSC_LIBRARIES PCSC_INCLUDE_DIRS)
|
||||||
|
|
||||||
|
mark_as_advanced(PCSC_LIBRARIES PCSC_INCLUDE_DIRS)
|
||||||
@@ -13,8 +13,15 @@
|
|||||||
# 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/>.
|
||||||
|
|
||||||
find_path(QRENCODE_INCLUDE_DIR qrencode.h)
|
find_path(QRENCODE_INCLUDE_DIR NAMES qrencode.h)
|
||||||
find_library(QRENCODE_LIBRARY qrencode)
|
|
||||||
|
if(WIN32 AND MSVC)
|
||||||
|
find_library(QRENCODE_LIBRARY_RELEASE qrencode)
|
||||||
|
find_library(QRENCODE_LIBRARY_DEBUG qrencoded)
|
||||||
|
set(QRENCODE_LIBRARY optimized ${QRENCODE_LIBRARY_RELEASE} debug ${QRENCODE_LIBRARY_DEBUG})
|
||||||
|
else()
|
||||||
|
find_library(QRENCODE_LIBRARY qrencode)
|
||||||
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(QRENCODE_LIBRARY QRENCODE_INCLUDE_DIR)
|
mark_as_advanced(QRENCODE_LIBRARY QRENCODE_INCLUDE_DIR)
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
# QUAZIP_FOUND - QuaZip library was found
|
|
||||||
# QUAZIP_INCLUDE_DIR - Path to QuaZip include dir
|
|
||||||
# QUAZIP_INCLUDE_DIRS - Path to QuaZip and zlib include dir (combined from QUAZIP_INCLUDE_DIR + ZLIB_INCLUDE_DIR)
|
|
||||||
# QUAZIP_LIBRARIES - List of QuaZip libraries
|
|
||||||
# QUAZIP_ZLIB_INCLUDE_DIR - The include dir of zlib headers
|
|
||||||
|
|
||||||
if(MINGW)
|
|
||||||
find_library(QUAZIP_LIBRARIES libquazip5)
|
|
||||||
find_path(QUAZIP_INCLUDE_DIR quazip.h PATH_SUFFIXES quazip5)
|
|
||||||
find_path(QUAZIP_ZLIB_INCLUDE_DIR zlib.h)
|
|
||||||
else()
|
|
||||||
find_library(QUAZIP_LIBRARIES
|
|
||||||
NAMES quazip5 quazip
|
|
||||||
PATHS /usr/lib /usr/lib64 /usr/local/lib
|
|
||||||
)
|
|
||||||
find_path(QUAZIP_INCLUDE_DIR quazip.h
|
|
||||||
PATHS /usr/include /usr/local/include
|
|
||||||
PATH_SUFFIXES quazip5 quazip
|
|
||||||
)
|
|
||||||
find_path(QUAZIP_ZLIB_INCLUDE_DIR zlib.h PATHS /usr/include /usr/local/include)
|
|
||||||
endif()
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
set(QUAZIP_INCLUDE_DIRS ${QUAZIP_INCLUDE_DIR} ${QUAZIP_ZLIB_INCLUDE_DIR})
|
|
||||||
find_package_handle_standard_args(QUAZIP DEFAULT_MSG QUAZIP_LIBRARIES QUAZIP_INCLUDE_DIR QUAZIP_ZLIB_INCLUDE_DIR QUAZIP_INCLUDE_DIRS)
|
|
||||||
@@ -47,4 +47,3 @@ mark_as_advanced(
|
|||||||
Readline_INCLUDE_DIR
|
Readline_INCLUDE_DIR
|
||||||
Readline_LIBRARY
|
Readline_LIBRARY
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
# 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)
|
|
||||||
61
cmake/KPXCMacDeployHelpers.cmake
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# Running macdeployqt on a POST_BUILD copied binaries is pointless when using CPack because
|
||||||
|
# the copied binaries will be overriden by the corresponding install(TARGETS) commands.
|
||||||
|
# That's why we run macdeployqt using install(CODE) on the already installed binaries.
|
||||||
|
# The precondition is that all install(TARGETS) calls have to be called before this function is
|
||||||
|
# called.
|
||||||
|
# macdeloyqt is called only once, but it is given all executables that should be processed.
|
||||||
|
function(kpxc_run_macdeployqt_at_install_time)
|
||||||
|
set(NO_VALUE_OPTIONS)
|
||||||
|
set(SINGLE_VALUE_OPTIONS
|
||||||
|
APP_NAME
|
||||||
|
)
|
||||||
|
set(MULTI_VALUE_OPTIONS
|
||||||
|
EXTRA_BINARIES
|
||||||
|
)
|
||||||
|
cmake_parse_arguments(PARSE_ARGV 0 ARG
|
||||||
|
"${NO_VALUE_OPTIONS}" "${SINGLE_VALUE_OPTIONS}" "${MULTI_VALUE_OPTIONS}"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(ESCAPED_PREFIX "\${CMAKE_INSTALL_PREFIX}")
|
||||||
|
set(APP_BUNDLE_NAME "${ARG_APP_NAME}.app")
|
||||||
|
set(APP_BUNDLE_PATH "${ESCAPED_PREFIX}/${APP_BUNDLE_NAME}")
|
||||||
|
|
||||||
|
# Collect extra binaries and plugins that should be handled by macdpeloyqt.
|
||||||
|
set(EXTRA_BINARIES "")
|
||||||
|
foreach(EXTRA_BINARY ${ARG_EXTRA_BINARIES})
|
||||||
|
set(INSTALLED_BINARY_PATH "${ESCAPED_PREFIX}/${EXTRA_BINARY}")
|
||||||
|
list(APPEND EXTRA_BINARIES "-executable=${INSTALLED_BINARY_PATH}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
list(JOIN EXTRA_BINARIES " " EXTRA_BINARIES_STR)
|
||||||
|
|
||||||
|
if(CMAKE_VERSION VERSION_GREATER "3.14")
|
||||||
|
set(COMMAND_ECHO "COMMAND_ECHO STDOUT")
|
||||||
|
else()
|
||||||
|
set(COMMAND_ECHO "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(COMMAND_ARGS
|
||||||
|
${MACDEPLOYQT_EXE}
|
||||||
|
${APP_BUNDLE_PATH}
|
||||||
|
|
||||||
|
# Adjusts dependency rpaths of extra binaries
|
||||||
|
${EXTRA_BINARIES_STR}
|
||||||
|
|
||||||
|
# Silences warnings on subsequent re-installations
|
||||||
|
-always-overwrite
|
||||||
|
)
|
||||||
|
|
||||||
|
install(CODE
|
||||||
|
"
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${COMMAND_ARGS}
|
||||||
|
${COMMAND_ECHO}
|
||||||
|
RESULT_VARIABLE EXIT_CODE
|
||||||
|
)
|
||||||
|
if(NOT EXIT_CODE EQUAL 0)
|
||||||
|
message(FATAL_ERROR
|
||||||
|
\"Running ${COMMAND_ARGS} failed with exit code \${EXIT_CODE}.\")
|
||||||
|
endif()
|
||||||
|
")
|
||||||
|
endfunction()
|
||||||
3
cmake/MakePortableZip.cmake
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
if (CMAKE_INSTALL_PREFIX MATCHES "/ZIP/")
|
||||||
|
file(TOUCH "${CMAKE_INSTALL_PREFIX}/.portable")
|
||||||
|
endif()
|
||||||
5
cmake/compiler-checks/macos/control_biometry_support.mm
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#include <Security/Security.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
return static_cast<int>(kSecAccessControlBiometryCurrentSet);
|
||||||
|
}
|
||||||
5
cmake/compiler-checks/macos/control_touch_id_support.mm
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#include <Security/Security.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
return static_cast<int>(kSecAccessControlTouchIDCurrentSet);
|
||||||
|
}
|
||||||
5
cmake/compiler-checks/macos/control_watch_support.mm
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#include <Security/Security.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
return static_cast<int>(kSecAccessControlWatch);
|
||||||
|
}
|
||||||
8
codecov.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
coverage:
|
||||||
|
range: 60..80
|
||||||
|
round: nearest
|
||||||
|
precision: 2
|
||||||
|
fixes:
|
||||||
|
- "*/src/::"
|
||||||
|
comment:
|
||||||
|
require_changes: true
|
||||||
@@ -24,20 +24,15 @@ set(OUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
|||||||
set(REV -a revnumber=${KEEPASSXC_VERSION})
|
set(REV -a revnumber=${KEEPASSXC_VERSION})
|
||||||
|
|
||||||
# Build html documentation on all platforms
|
# Build html documentation on all platforms
|
||||||
file(GLOB html_depends ${DOC_DIR}/topics/* ${DOC_DIR}/styles/* ${DOC_DIR}/images/*)
|
# NOTE: Combine into one long command to prevent MSVC from failing to build all docs
|
||||||
add_custom_command(OUTPUT KeePassXC_GettingStarted.html
|
file(GLOB doc_depends ${DOC_DIR}/*.adoc ${DOC_DIR}/topics/* ${DOC_DIR}/styles/* ${DOC_DIR}/images/*)
|
||||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_GettingStarted.html ${REV} ${DOC_DIR}/GettingStarted.adoc
|
add_custom_command(
|
||||||
DEPENDS ${html_depends} ${DOC_DIR}/GettingStarted.adoc
|
OUTPUT KeePassXC_GettingStarted.html KeePassXC_UserGuide.html KeePassXC_KeyboardShortcuts.html
|
||||||
VERBATIM)
|
COMMAND
|
||||||
add_custom_command(OUTPUT KeePassXC_UserGuide.html
|
${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_GettingStarted.html ${REV} ${DOC_DIR}/GettingStarted.adoc &&
|
||||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_UserGuide.html ${REV} ${DOC_DIR}/UserGuide.adoc
|
${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_UserGuide.html ${REV} ${DOC_DIR}/UserGuide.adoc &&
|
||||||
DEPENDS ${html_depends} ${DOC_DIR}/UserGuide.adoc
|
${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_KeyboardShortcuts.html ${REV} ${DOC_DIR}/topics/KeyboardShortcuts.adoc
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
DEPENDS ${doc_depends}
|
||||||
VERBATIM)
|
|
||||||
file(GLOB styles_depends ${DOC_DIR}/styles/*)
|
|
||||||
add_custom_command(OUTPUT KeePassXC_KeyboardShortcuts.html
|
|
||||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_KeyboardShortcuts.html ${REV} ${DOC_DIR}/topics/KeyboardShortcuts.adoc
|
|
||||||
DEPENDS ${DOC_DIR}/topics/KeyboardShortcuts.adoc ${styles_depends}
|
|
||||||
VERBATIM)
|
VERBATIM)
|
||||||
|
|
||||||
add_custom_target(docs ALL DEPENDS KeePassXC_GettingStarted.html KeePassXC_UserGuide.html KeePassXC_KeyboardShortcuts.html)
|
add_custom_target(docs ALL DEPENDS KeePassXC_GettingStarted.html KeePassXC_UserGuide.html KeePassXC_KeyboardShortcuts.html)
|
||||||
@@ -50,13 +45,11 @@ install(FILES
|
|||||||
|
|
||||||
# Build Man Pages on Linux and macOS
|
# Build Man Pages on Linux and macOS
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
add_custom_command(OUTPUT keepassxc.1
|
add_custom_command(OUTPUT keepassxc.1 keepassxc-cli.1
|
||||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -b manpage ${REV} ${DOC_DIR}/man/keepassxc.1.adoc
|
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -b manpage ${REV} ./man/keepassxc.1.adoc
|
||||||
DEPENDS ${DOC_DIR}/man/keepassxc.1.adoc
|
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -b manpage ${REV} ./man/keepassxc-cli.1.adoc
|
||||||
VERBATIM)
|
DEPENDS ${DOC_DIR}/man/keepassxc.1.adoc ${DOC_DIR}/man/keepassxc-cli.1.adoc
|
||||||
add_custom_command(OUTPUT keepassxc-cli.1
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -b manpage ${REV} ${DOC_DIR}/man/keepassxc-cli.1.adoc
|
|
||||||
DEPENDS ${DOC_DIR}/man/keepassxc-cli.1.adoc
|
|
||||||
VERBATIM)
|
VERBATIM)
|
||||||
add_custom_target(manpages ALL DEPENDS keepassxc.1 keepassxc-cli.1)
|
add_custom_target(manpages ALL DEPENDS keepassxc.1 keepassxc-cli.1)
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Optionally, build AFL from source:
|
|||||||
|
|
||||||
## Building KeePassXC For Fuzzing
|
## Building KeePassXC For Fuzzing
|
||||||
|
|
||||||
A special "instrumented build" is used that allows the fuzzer to look into the program as it executes. We place it in its own build directory so it doesn't confused with the production build.
|
A special "instrumented build" is used that allows the fuzzer to look into the program as it executes. We place it in its own build directory so it doesn't get confused with the production build.
|
||||||
|
|
||||||
$ cd your_keepassxc_source_directory
|
$ cd your_keepassxc_source_directory
|
||||||
$ mkdir buildafl
|
$ mkdir buildafl
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ include::topics/PasswordGenerator.adoc[tags=*]
|
|||||||
|
|
||||||
include::topics/BrowserPlugin.adoc[tags=*]
|
include::topics/BrowserPlugin.adoc[tags=*]
|
||||||
|
|
||||||
|
include::topics/Passkeys.adoc[tags=*]
|
||||||
|
|
||||||
include::topics/AutoType.adoc[tags=*]
|
include::topics/AutoType.adoc[tags=*]
|
||||||
|
|
||||||
include::topics/KeeShare.adoc[tags=*]
|
include::topics/KeeShare.adoc[tags=*]
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 21 KiB |
BIN
docs/images/browser_group_settings.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 59 KiB |
BIN
docs/images/browser_statistics.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 100 KiB |
BIN
docs/images/database_maintenance.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 90 KiB |
BIN
docs/images/import_wizard.png
Normal file
|
After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 40 KiB |
BIN
docs/images/passkeys_all_passkeys.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
docs/images/passkeys_authentication_dialog.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
docs/images/passkeys_enable_from_extension.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
docs/images/passkeys_export_dialog.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
docs/images/passkeys_github_1.png
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
docs/images/passkeys_github_2.png
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
docs/images/passkeys_github_3.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
docs/images/passkeys_github_4.png
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
docs/images/passkeys_github_5.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
docs/images/passkeys_import_dialog.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
docs/images/passkeys_import_passkey_to_entry.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
BIN
docs/images/passkeys_register_dialog.png
Normal file
|
After Width: | Height: | Size: 54 KiB |