forked from such-gitea/wownero
Compare commits
1346 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b28de1cdc | ||
|
|
e78ef8a3a7 | ||
|
|
7e6109d02a | ||
|
|
6fe4ceaf09 | ||
|
|
bcdc98a8b0 | ||
|
|
6c97d87295 | ||
|
|
d10480a12f | ||
|
|
79a4abdc18 | ||
|
|
864255d783 | ||
|
|
4ac984bc56 | ||
|
|
9be78e756b | ||
|
|
bd011fcae9 | ||
|
|
399593a320 | ||
|
|
d0bacf4f77 | ||
|
|
f25a655cff | ||
|
|
ddfefa5dd5 | ||
|
|
22e71f9449 | ||
|
|
15b7b9d05b | ||
|
|
5022273035 | ||
|
|
c36f266520 | ||
|
|
e9e18bdf56 | ||
|
|
83b5e5ada1 | ||
|
|
2944371b43 | ||
|
|
b06dd76792 | ||
|
|
8695701058 | ||
|
|
99682fb3a7 | ||
|
|
e84d5ba8c0 | ||
|
|
200586592c | ||
|
|
b2d752b298 | ||
|
|
3d25c90053 | ||
|
|
fd18ad1e60 | ||
|
|
d2a170f6e4 | ||
|
|
60ff2f668e | ||
|
|
45a63f10ba | ||
|
|
a21f06b933 | ||
|
|
1080a90d23 | ||
|
|
ccc2396d92 | ||
|
|
136be529d6 | ||
|
|
b5fb9aea88 | ||
|
|
dfa32f3330 | ||
|
|
6aaee726f1 | ||
|
|
a636325df3 | ||
|
|
47f78dc11a | ||
|
|
2d3fa0f1c9 | ||
|
|
7d1b51ebf7 | ||
|
|
dd4556c5e1 | ||
|
|
e52d622592 | ||
|
|
6cbf952315 | ||
|
|
a2013707e2 | ||
|
|
37e2666915 | ||
|
|
5c42087ec3 | ||
|
|
4f53308b8a | ||
|
|
1812ba449b | ||
|
|
930e6e32a0 | ||
|
|
773072bcd7 | ||
|
|
22a97e4192 | ||
|
|
095be4ff65 | ||
|
|
179db40a4a | ||
|
|
540548a0b7 | ||
|
|
4f6d49eff6 | ||
|
|
0c28ca0f4d | ||
|
|
36285ab082 | ||
|
|
327ea9032a | ||
|
|
5c29f2b10c | ||
|
|
84f49bed65 | ||
|
|
970ec88436 | ||
|
|
35b1f07d86 | ||
|
|
b895d04401 | ||
|
|
e082e0bc1a | ||
|
|
250a681db6 | ||
|
|
8635db2b19 | ||
|
|
0992c28663 | ||
|
|
32ea1c1423 | ||
|
|
53df650a78 | ||
|
|
9a4ddf9a1c | ||
|
|
3d7cf87092 | ||
|
|
a9534ceb46 | ||
|
|
d4675d8527 | ||
|
|
9ef26ac926 | ||
|
|
2581457497 | ||
|
|
e64ad1e325 | ||
|
|
3817d559d6 | ||
|
|
365c3b9517 | ||
|
|
d7f76002aa | ||
|
|
6526020b08 | ||
|
|
ddef0b1b8b | ||
|
|
99be9a044f | ||
|
|
75bec6336a | ||
|
|
68a73a2b4d | ||
|
|
dc18efa3d7 | ||
|
|
d8e39bd381 | ||
|
|
0f15707077 | ||
|
|
f38b07335a | ||
|
|
057a77a09f | ||
|
|
573a369a8a | ||
|
|
988056dc09 | ||
|
|
ce4ef6da96 | ||
|
|
15384cc135 | ||
|
|
f456b3f023 | ||
|
|
480b050cc3 | ||
|
|
c48f572e46 | ||
|
|
f73a2b1587 | ||
|
|
1d20b8171d | ||
|
|
b0ea7cb528 | ||
|
|
153819fc4c | ||
|
|
cbc5cf43f2 | ||
|
|
1976c9afa0 | ||
|
|
29208a33cb | ||
|
|
cbc297acfb | ||
|
|
f698f2b708 | ||
|
|
8cb10345d6 | ||
|
|
47b41eabfe | ||
|
|
abd37fcf5b | ||
|
|
cce309512c | ||
|
|
f5d701c550 | ||
|
|
d05298358c | ||
|
|
5973985148 | ||
|
|
2c2432245f | ||
|
|
38d4811c89 | ||
|
|
cbf636c7a9 | ||
|
|
8c53995a88 | ||
|
|
146cac02ca | ||
|
|
02b24cb353 | ||
|
|
e6f9c0013b | ||
|
|
5d4ace8cae | ||
|
|
1bb5d25e31 | ||
|
|
85c9fe515d | ||
|
|
401dda5f10 | ||
|
|
66184f3085 | ||
|
|
853171bbf0 | ||
|
|
1f27fdf6a5 | ||
|
|
0bef4265ac | ||
|
|
a7b0c93c7d | ||
|
|
9885b8b0f2 | ||
|
|
fdb31856dd | ||
|
|
d7445b576f | ||
|
|
802c4bb0e4 | ||
|
|
5ffa31c48e | ||
|
|
1cd21bfba5 | ||
|
|
7d358cdb1f | ||
|
|
09402d0edb | ||
|
|
07f8e9e891 | ||
|
|
6adf03cdc5 | ||
|
|
7cbae6ca98 | ||
|
|
0be63cffa8 | ||
|
|
864a78ee5f | ||
|
|
af4f97bf66 | ||
|
|
89f3d46120 | ||
|
|
3178bbe083 | ||
|
|
4b6a3fbaa0 | ||
|
|
6b9bbadd6b | ||
|
|
12e7c4188e | ||
|
|
e29b2e9997 | ||
|
|
1d3657afb5 | ||
|
|
0cbf5571d3 | ||
|
|
848a0c05b0 | ||
|
|
625147e577 | ||
|
|
b03d7091f7 | ||
|
|
93db74a91e | ||
|
|
4b7eb573b2 | ||
|
|
5b98bebad1 | ||
|
|
0de1571abd | ||
|
|
09ee78197c | ||
|
|
401f5d967b | ||
|
|
3679925331 | ||
|
|
fc8a5d68f1 | ||
|
|
57e57c239b | ||
|
|
876c08db53 | ||
|
|
727bc5b687 | ||
|
|
b9e8504cfb | ||
|
|
68537fa27a | ||
|
|
dc2f548a68 | ||
|
|
5c33f40cd8 | ||
|
|
72490ca04f | ||
|
|
a50cceb8d0 | ||
|
|
3b6eb11a88 | ||
|
|
90125931ad | ||
|
|
2b83d00a9b | ||
|
|
6075be9cc8 | ||
|
|
309f6ba3f5 | ||
|
|
fac7c43644 | ||
|
|
265d6ca7aa | ||
|
|
1287074d0f | ||
|
|
099fc1f8a9 | ||
|
|
c0f3c5b577 | ||
|
|
8cc3c9af4d | ||
|
|
b6a029f222 | ||
|
|
9df069f4ce | ||
|
|
f982163fc9 | ||
|
|
4792ceefb1 | ||
|
|
070c3d6b0f | ||
|
|
02cbccc529 | ||
|
|
d912444a4a | ||
|
|
cf3be9926f | ||
|
|
fe5d1bef56 | ||
|
|
edcc094558 | ||
|
|
cfdee9ba69 | ||
|
|
6fed8c2d9f | ||
|
|
a82fba4b7b | ||
|
|
3be1dbd096 | ||
|
|
724ff21447 | ||
|
|
8f48f46495 | ||
|
|
e32b7a5598 | ||
|
|
4476c35fc8 | ||
|
|
cea2498e95 | ||
|
|
0f91416ab6 | ||
|
|
7a118f08f4 | ||
|
|
5a3c77be18 | ||
|
|
6e89d35541 | ||
|
|
45a44aa45f | ||
|
|
969316685b | ||
|
|
bd1e7c5635 | ||
|
|
b54d5ae383 | ||
|
|
aa0b4fc7cc | ||
|
|
e2e5fbf6a6 | ||
|
|
82cde936c3 | ||
|
|
622f251fa1 | ||
|
|
30a9183091 | ||
|
|
2ba391f02c | ||
|
|
d486c0322f | ||
|
|
c7b2944f89 | ||
|
|
8e9c60a682 | ||
|
|
83aa817b63 | ||
|
|
09a597ba28 | ||
|
|
04c0da2986 | ||
|
|
db8181adf8 | ||
|
|
50ccc7e726 | ||
|
|
6f3abbead5 | ||
|
|
4278a3a7e3 | ||
|
|
41b1a6b0dd | ||
|
|
8460fcc32b | ||
|
|
61d0712ed5 | ||
|
|
ade464a5a0 | ||
|
|
033a32a20b | ||
|
|
b096e16699 | ||
|
|
493577a6cd | ||
|
|
b46a60e390 | ||
|
|
4e7586c9e4 | ||
|
|
747f5d3594 | ||
|
|
16f8e042b5 | ||
|
|
da0715e503 | ||
|
|
fb3f7cebbf | ||
|
|
9750e1fa10 | ||
|
|
72cba50458 | ||
|
|
e8252ef99b | ||
|
|
1ff2b02064 | ||
|
|
f9d789d68c | ||
|
|
f96cf86532 | ||
|
|
d52b7d0e99 | ||
|
|
7b0b06af84 | ||
|
|
7f2f7ce404 | ||
|
|
6d0df2f041 | ||
|
|
bc05d2dfa8 | ||
|
|
de2f0d0102 | ||
|
|
97271b7d20 | ||
|
|
026dbc89bf | ||
|
|
2dab31f62f | ||
|
|
08080df2d9 | ||
|
|
a66a52d144 | ||
|
|
2979474221 | ||
|
|
5858f05f9b | ||
|
|
1164874afc | ||
|
|
6e60919e6d | ||
|
|
44c0470e1e | ||
|
|
5b9724b03d | ||
|
|
3d1e5db44d | ||
|
|
f555e3855b | ||
|
|
f4669bfa2b | ||
|
|
fde7c96b5c | ||
|
|
df2e680825 | ||
|
|
38cdf01c64 | ||
|
|
353cd5355e | ||
|
|
2b95178897 | ||
|
|
c9cf0b78f8 | ||
|
|
62914e7e3d | ||
|
|
b9d2c788bc | ||
|
|
bae4a1ad8f | ||
|
|
8349cfe4a6 | ||
|
|
c76e33bc44 | ||
|
|
d58ea37a8d | ||
|
|
9e71901346 | ||
|
|
8480575cec | ||
|
|
fbd1f1e476 | ||
|
|
ae377a7b23 | ||
|
|
638b325202 | ||
|
|
7cdbd25042 | ||
|
|
3f58b8938a | ||
|
|
436ca13722 | ||
|
|
156151396e | ||
|
|
7bdda14b8d | ||
|
|
5e46ab53e7 | ||
|
|
c1625a8928 | ||
|
|
5c27fd853f | ||
|
|
c1d47eb476 | ||
|
|
7d6c7489a7 | ||
|
|
02e6af2fda | ||
|
|
7ea1e214c5 | ||
|
|
e81ab9bc2c | ||
|
|
af08c83e25 | ||
|
|
ca5921d75b | ||
|
|
fe5c2aec35 | ||
|
|
fb68465c61 | ||
|
|
617f9082fe | ||
|
|
83ae3ad178 | ||
|
|
1008318715 | ||
|
|
1ddb1ee819 | ||
|
|
a86c4cb75f | ||
|
|
fc9b77d855 | ||
|
|
f63f7dc7e2 | ||
|
|
b7978cfd4e | ||
|
|
0226df9fae | ||
|
|
0d6ecb1136 | ||
|
|
41da2fe6f3 | ||
|
|
6ef945d9a5 | ||
|
|
070e41d88b | ||
|
|
4f08bcd800 | ||
|
|
67e5ca9ad6 | ||
|
|
92b3b34464 | ||
|
|
a092b943d5 | ||
|
|
4541384075 | ||
|
|
e13244ea9c | ||
|
|
34941ac3e1 | ||
|
|
f7d50cbaa8 | ||
|
|
63c7f8ba6e | ||
|
|
baee2c06ec | ||
|
|
9209880e9c | ||
|
|
9f814edbd7 | ||
|
|
d8f73133b1 | ||
|
|
17dad03870 | ||
|
|
4abbf442b4 | ||
|
|
5c471005eb | ||
|
|
8ddbe18277 | ||
|
|
96758a7d05 | ||
|
|
b99242f310 | ||
|
|
ab9766ef17 | ||
|
|
5d388eb74d | ||
|
|
53bf62d114 | ||
|
|
11371425f5 | ||
|
|
175b4117a9 | ||
|
|
b49ed59166 | ||
|
|
1f25aa27c5 | ||
|
|
7764d69782 | ||
|
|
801568d0c6 | ||
|
|
87ec36cacf | ||
|
|
441c860738 | ||
|
|
40f02f9d73 | ||
|
|
12b1b74d32 | ||
|
|
690ce560b0 | ||
|
|
268a0393e9 | ||
|
|
ea87b30f89 | ||
|
|
6694597974 | ||
|
|
2b999f5398 | ||
|
|
50ae6bafe9 | ||
|
|
9df7179aaf | ||
|
|
9c42b728ba | ||
|
|
b030f20751 | ||
|
|
9f786f0550 | ||
|
|
a14fdf8d5a | ||
|
|
d1cb9c393e | ||
|
|
649170053f | ||
|
|
3593a986d8 | ||
|
|
f49fc9b487 | ||
|
|
6abe3fee19 | ||
|
|
4db6aed98c | ||
|
|
c68d78dde0 | ||
|
|
c11385591e | ||
|
|
bb093ec9a8 | ||
|
|
f096ac1349 | ||
|
|
9a124f6811 | ||
|
|
627f04c19a | ||
|
|
04e490c8da | ||
|
|
0eb1b570b6 | ||
|
|
88a5606795 | ||
|
|
ffe439d38a | ||
|
|
0285c07d7d | ||
|
|
922acb05fd | ||
|
|
50410d1f7d | ||
|
|
d054def63f | ||
|
|
fb2f822c52 | ||
|
|
83bb02745a | ||
|
|
5acdd0e2cb | ||
|
|
4c94cfecfc | ||
|
|
a345060ace | ||
|
|
75bd004f4e | ||
|
|
a0d80b1f95 | ||
|
|
b535d662b9 | ||
|
|
b7713cce26 | ||
|
|
bd27debb2d | ||
|
|
0f7b20a1ce | ||
|
|
1ce9e9cda4 | ||
|
|
17772ef53e | ||
|
|
ae0a840fda | ||
|
|
002bf9c4fd | ||
|
|
70ceab6c10 | ||
|
|
427bd85893 | ||
|
|
6a0d973dc9 | ||
|
|
4cb3b422e1 | ||
|
|
0ea8519895 | ||
|
|
d9e6baac42 | ||
|
|
f4d99dcca7 | ||
|
|
d1f1947995 | ||
|
|
f22051d382 | ||
|
|
7dcfccbaaf | ||
|
|
591c174235 | ||
|
|
354e1d9c65 | ||
|
|
0d6fce8995 | ||
|
|
da9aa1f7f8 | ||
|
|
d562deaaa9 | ||
|
|
27f1d43547 | ||
|
|
abae63c37d | ||
|
|
5eaa4434e8 | ||
|
|
5a1c060632 | ||
|
|
3c829586be | ||
|
|
3f88fddbfa | ||
|
|
e08abaa43f | ||
|
|
9bde2dbfed | ||
|
|
06e6c8bf4a | ||
|
|
f68f92776b | ||
|
|
14eb42d12d | ||
|
|
5e201fedc5 | ||
|
|
e5000a9f0c | ||
|
|
b8beac3ecc | ||
|
|
c36ea26e5c | ||
|
|
9aab19f349 | ||
|
|
357dbd2032 | ||
|
|
459a48352d | ||
|
|
d94715fd71 | ||
|
|
c1e7e97cea | ||
|
|
cb24b85bde | ||
|
|
0f9fae5a96 | ||
|
|
166c278057 | ||
|
|
5283cf51ef | ||
|
|
e9d90de9e1 | ||
|
|
fb5b2b352a | ||
|
|
2d0a5189d2 | ||
|
|
1051276425 | ||
|
|
e73e1e7e6f | ||
|
|
4446cc88c3 | ||
|
|
505b38260c | ||
|
|
6366187cf3 | ||
|
|
319b831e65 | ||
|
|
e9156d78a3 | ||
|
|
fef02800c7 | ||
|
|
6a46f8c40a | ||
|
|
52612e7a12 | ||
|
|
03a256e076 | ||
|
|
cd76011e6c | ||
|
|
9d02531f0d | ||
|
|
eeb0be4905 | ||
|
|
cc9ca953a9 | ||
|
|
3ed0cc6e20 | ||
|
|
e6e333adc9 | ||
|
|
c0cf5bb339 | ||
|
|
a723f25041 | ||
|
|
155c5ecb8e | ||
|
|
55fc2335a4 | ||
|
|
53be72c08a | ||
|
|
6e6ad80dc4 | ||
|
|
aeae337c0b | ||
|
|
105e2304a2 | ||
|
|
7fc93a12d4 | ||
|
|
9a17f53489 | ||
|
|
9c4c28e4f6 | ||
|
|
41d6db105d | ||
|
|
a4ebec9afb | ||
|
|
0221b01519 | ||
|
|
22b891c80e | ||
|
|
7bc261b506 | ||
|
|
82828bfcb6 | ||
|
|
1efe624e30 | ||
|
|
6d94953be2 | ||
|
|
97ff1938a3 | ||
|
|
2844b5b8db | ||
|
|
c3b1b94453 | ||
|
|
a30928fe1a | ||
|
|
a491175f7d | ||
|
|
cf44349a86 | ||
|
|
e0a5dce14f | ||
|
|
a02b342347 | ||
|
|
eec3a6014c | ||
|
|
361f621c3c | ||
|
|
fbe8358c9f | ||
|
|
bbe3b276b8 | ||
|
|
e22ec26be4 | ||
|
|
d573b3d76c | ||
|
|
ff4ede9356 | ||
|
|
14e94c6918 | ||
|
|
f405bf3d58 | ||
|
|
187633c0ca | ||
|
|
548cfc8d68 | ||
|
|
94dc19a8b3 | ||
|
|
b328fbecc2 | ||
|
|
ff96482e38 | ||
|
|
919e06bbfd | ||
|
|
0bd892788d | ||
|
|
e5710b1898 | ||
|
|
e7d571c526 | ||
|
|
e161b75201 | ||
|
|
00ac048958 | ||
|
|
e8e507f36f | ||
|
|
8f210011be | ||
|
|
797ca974ab | ||
|
|
47e7a43270 | ||
|
|
e106bdc1fc | ||
|
|
1f81f5f5c1 | ||
|
|
a15466d850 | ||
|
|
b0ec9f85a1 | ||
|
|
2cad563060 | ||
|
|
9c6111017b | ||
|
|
753dc901a1 | ||
|
|
99507da993 | ||
|
|
7f1a44679c | ||
|
|
adb2542a6c | ||
|
|
ebc655c6ad | ||
|
|
19a6cc26fc | ||
|
|
e165fdb27c | ||
|
|
e7974926d5 | ||
|
|
f8abf3dd61 | ||
|
|
308e601966 | ||
|
|
69c09ad204 | ||
|
|
4881154e69 | ||
|
|
c458d5fe40 | ||
|
|
3d9c805e23 | ||
|
|
260f1d39f2 | ||
|
|
a6367693c7 | ||
|
|
872d6f86bc | ||
|
|
d0a3eb1e7e | ||
|
|
8fa21beba1 | ||
|
|
45920c36f1 | ||
|
|
7f477c1902 | ||
|
|
48a0997d8c | ||
|
|
ace4669543 | ||
|
|
75d05b9448 | ||
|
|
9973edd4c3 | ||
|
|
49441d4a2a | ||
|
|
5e63f6c292 | ||
|
|
b58a9fb12e | ||
|
|
84c52571ed | ||
|
|
9cd7aa60f0 | ||
|
|
5770265a16 | ||
|
|
1346516d09 | ||
|
|
ae41178c8b | ||
|
|
4ea7832ea7 | ||
|
|
bc167a1738 | ||
|
|
b00e21dccc | ||
|
|
6b824c9ed0 | ||
|
|
4120098e09 | ||
|
|
df0408bd37 | ||
|
|
415e290675 | ||
|
|
4f5e8ccace | ||
|
|
9b5268a27d | ||
|
|
fd48e0af61 | ||
|
|
e7a1a095ac | ||
|
|
60eddc566e | ||
|
|
29e3d0aa87 | ||
|
|
298c9a357f | ||
|
|
237acd120e | ||
|
|
75ee729a3a | ||
|
|
807cbcdbf8 | ||
|
|
5f54dea4ec | ||
|
|
2e8936f614 | ||
|
|
9154883f3e | ||
|
|
8922f96e61 | ||
|
|
313edb2504 | ||
|
|
4afd9a7a9e | ||
|
|
e7e28bcd68 | ||
|
|
3a90be4bd6 | ||
|
|
5617a292ee | ||
|
|
1b7a708fa3 | ||
|
|
76542ea709 | ||
|
|
a95e6e0d43 | ||
|
|
43a72790ab | ||
|
|
dfee15eee1 | ||
|
|
a39b1d56c8 | ||
|
|
9273530bff | ||
|
|
c278c97f1f | ||
|
|
e72eedd1ce | ||
|
|
e48e909911 | ||
|
|
be94a2fb06 | ||
|
|
aa8320671c | ||
|
|
b13110b7b8 | ||
|
|
acfe3f8ded | ||
|
|
dfa6b58d4d | ||
|
|
2a02cd0a5f | ||
|
|
7848a467c5 | ||
|
|
b7315efc1c | ||
|
|
ce38f2399d | ||
|
|
ad9fde46a3 | ||
|
|
514f8fab14 | ||
|
|
5eaedb51b9 | ||
|
|
eed7e79c04 | ||
|
|
4571d3686d | ||
|
|
ae85ec0285 | ||
|
|
167cbdf870 | ||
|
|
acef6c955b | ||
|
|
cd76eb7b8c | ||
|
|
8fde011dbe | ||
|
|
3673a679e4 | ||
|
|
4ada08ad9a | ||
|
|
f353c295f9 | ||
|
|
e52802baef | ||
|
|
2d3ce2d64a | ||
|
|
0061da9e63 | ||
|
|
8b9eea92f1 | ||
|
|
1b079e5195 | ||
|
|
294d58c58d | ||
|
|
5812b757e0 | ||
|
|
a8dc9490b5 | ||
|
|
4ced092aae | ||
|
|
ec6b4cf9e1 | ||
|
|
24d3d65d42 | ||
|
|
e1af8dc02c | ||
|
|
da2955feae | ||
|
|
d749e0d97c | ||
|
|
15936bfa0f | ||
|
|
301355f88d | ||
|
|
573a0255a8 | ||
|
|
a9aaa47abb | ||
|
|
426dbf434b | ||
|
|
ce0a2ce479 | ||
|
|
82149bfe44 | ||
|
|
460fd4c80a | ||
|
|
0b4e922159 | ||
|
|
89664fcee5 | ||
|
|
521b4d9ded | ||
|
|
cb08466394 | ||
|
|
5cebb8edc0 | ||
|
|
1bb8ec1b97 | ||
|
|
62844a776d | ||
|
|
0a021c3bd1 | ||
|
|
0ac9a04b4c | ||
|
|
6f15a0c8d3 | ||
|
|
7354ffb8a7 | ||
|
|
d8e71c8dbe | ||
|
|
b2c59af84d | ||
|
|
13a8a576ed | ||
|
|
ed506006d2 | ||
|
|
e3b3fb577a | ||
|
|
eeda76570c | ||
|
|
8c41d14ad5 | ||
|
|
a32da4bc3e | ||
|
|
0878207e8d | ||
|
|
894e5b2794 | ||
|
|
0cdb8d02e8 | ||
|
|
9aa2d4c16e | ||
|
|
5fa1c90102 | ||
|
|
0b72f46bf2 | ||
|
|
90d6bed804 | ||
|
|
1b80347513 | ||
|
|
2a8a51129f | ||
|
|
56f7609643 | ||
|
|
a89c78528a | ||
|
|
9c8e3e832e | ||
|
|
29296d5d52 | ||
|
|
055657241d | ||
|
|
979d121ed7 | ||
|
|
960376b960 | ||
|
|
0073513a05 | ||
|
|
d9c9a11c54 | ||
|
|
2f6d5fa8c2 | ||
|
|
ef659f8b52 | ||
|
|
11cc473d97 | ||
|
|
e91e2c4a2b | ||
|
|
69e714c749 | ||
|
|
62bcdc1d3c | ||
|
|
2d5b8a6ff7 | ||
|
|
8a845f5dc8 | ||
|
|
ca4de5f96d | ||
|
|
a9cb4c082f | ||
|
|
bf96055211 | ||
|
|
3d3a67142c | ||
|
|
7caab8dd74 | ||
|
|
852f319d86 | ||
|
|
a3d2b71ee9 | ||
|
|
b48074fb8d | ||
|
|
0c6e1d343e | ||
|
|
4414ed401d | ||
|
|
87a092811d | ||
|
|
f5eb2ce968 | ||
|
|
bc8d7644d2 | ||
|
|
9c6e0941cb | ||
|
|
df40d1dc73 | ||
|
|
fe76d7dee7 | ||
|
|
14be80f992 | ||
|
|
9a24e464ba | ||
|
|
a48db50b1c | ||
|
|
de3456e127 | ||
|
|
1e8cbc995f | ||
|
|
3c8c8e5a5b | ||
|
|
9903b35345 | ||
|
|
6043c85afe | ||
|
|
c53e22c40a | ||
|
|
bb633d3a8e | ||
|
|
30c15a6ca8 | ||
|
|
c26e3ee029 | ||
|
|
eda5c303cd | ||
|
|
5e6762d459 | ||
|
|
bbeb555f00 | ||
|
|
09779631f3 | ||
|
|
8ae6c85efd | ||
|
|
9c18f2767b | ||
|
|
8a67724218 | ||
|
|
e24875e572 | ||
|
|
14a1b89122 | ||
|
|
4f08d52dfa | ||
|
|
0a9d218044 | ||
|
|
99aa45fd34 | ||
|
|
7c3629a5ee | ||
|
|
ce129599d0 | ||
|
|
48e59b8064 | ||
|
|
ad9956d987 | ||
|
|
f8abb225fc | ||
|
|
3366bd81eb | ||
|
|
1796b44c67 | ||
|
|
e028591336 | ||
|
|
8ef51dc546 | ||
|
|
42b74a37d3 | ||
|
|
d689b946f9 | ||
|
|
de4413b076 | ||
|
|
8ff21e1e84 | ||
|
|
f0df72688f | ||
|
|
282e2ef058 | ||
|
|
4e07c8cbbc | ||
|
|
b63442da21 | ||
|
|
ab0bb31518 | ||
|
|
f8f1c78984 | ||
|
|
e7615772fa | ||
|
|
c19f0cbdea | ||
|
|
41297c10f0 | ||
|
|
ab7df49331 | ||
|
|
4251cc0b4d | ||
|
|
67b97a5f16 | ||
|
|
7b6d959596 | ||
|
|
b8b054c0f1 | ||
|
|
7499837a6f | ||
|
|
ca73284951 | ||
|
|
667d3dd4c2 | ||
|
|
a1a3e970f7 | ||
|
|
f85cab6750 | ||
|
|
25bbb26f63 | ||
|
|
8e0b8ddb96 | ||
|
|
e63c1107c0 | ||
|
|
8cf95c8f29 | ||
|
|
1aa1850ba5 | ||
|
|
d52d21bd46 | ||
|
|
f174a8f05f | ||
|
|
ce40c33a33 | ||
|
|
8cea9d8605 | ||
|
|
6914d5b914 | ||
|
|
1c8e598172 | ||
|
|
e8bf9003dd | ||
|
|
51171d2ca3 | ||
|
|
e31182918c | ||
|
|
08726ff0f3 | ||
|
|
97436399eb | ||
|
|
21c6376f33 | ||
|
|
fcb347820d | ||
|
|
d51e0c38f9 | ||
|
|
126ff6b0ee | ||
|
|
39cd392ac3 | ||
|
|
381f8f5e24 | ||
|
|
d845a5a0c3 | ||
|
|
45007f35cf | ||
|
|
a24045340c | ||
|
|
44cc6d6762 | ||
|
|
cd8901cc01 | ||
|
|
b2e1558bde | ||
|
|
0f45211c6b | ||
|
|
44e8395d2a | ||
|
|
a4a154b0e2 | ||
|
|
3450f4bc04 | ||
|
|
da45d3f5b3 | ||
|
|
b1873af519 | ||
|
|
fadc112aee | ||
|
|
4fcbc584f0 | ||
|
|
b7ee587ddb | ||
|
|
342f8c8b97 | ||
|
|
c1a1f2a6ea | ||
|
|
8da33d2e46 | ||
|
|
e505ffef5f | ||
|
|
c91bd17f90 | ||
|
|
ea5c99f142 | ||
|
|
628c04499b | ||
|
|
7d0927f8ad | ||
|
|
a88e115c09 | ||
|
|
9c0e681dc9 | ||
|
|
661c8f93cf | ||
|
|
cf69419316 | ||
|
|
ac87ac19b2 | ||
|
|
0c13623411 | ||
|
|
066309cddb | ||
|
|
41b4c4991f | ||
|
|
b40129e253 | ||
|
|
4969f39c09 | ||
|
|
d772f1378b | ||
|
|
9165344d8e | ||
|
|
a1c4307128 | ||
|
|
581c3af03a | ||
|
|
881d81cce4 | ||
|
|
7359d51d56 | ||
|
|
0794811b40 | ||
|
|
3cc4428d45 | ||
|
|
004b167095 | ||
|
|
cbd54ea524 | ||
|
|
8c3c7b8109 | ||
|
|
f93db0d46a | ||
|
|
6799e212cc | ||
|
|
451b5a510e | ||
|
|
ed6f05357c | ||
|
|
bbdb612b51 | ||
|
|
b4fe7c2401 | ||
|
|
c57ef7f807 | ||
|
|
0a1ddc2eff | ||
|
|
b6a8cfc41b | ||
|
|
215976beba | ||
|
|
9bba3f4767 | ||
|
|
6d7bb2b8ba | ||
|
|
3c1ea110d9 | ||
|
|
445a9d8ba3 | ||
|
|
5bf91fc894 | ||
|
|
2dfb111a92 | ||
|
|
2b918068cc | ||
|
|
eb272b12a3 | ||
|
|
bd74c6b8ba | ||
|
|
dc81e23e60 | ||
|
|
e45619e61e | ||
|
|
d544fd0f52 | ||
|
|
257e7432cb | ||
|
|
13418dbb98 | ||
|
|
fa6a6c5cca | ||
|
|
4ca80bd312 | ||
|
|
288e5ec350 | ||
|
|
7cf47d754c | ||
|
|
63c7ca07fb | ||
|
|
2218e23e84 | ||
|
|
15e627569b | ||
|
|
5871e7ab19 | ||
|
|
8953f19489 | ||
|
|
4da1112967 | ||
|
|
834e23bfcf | ||
|
|
5fe22ac766 | ||
|
|
73d3b00b35 | ||
|
|
02f4954229 | ||
|
|
c8ff1d4d23 | ||
|
|
f6279a633d | ||
|
|
4834bd8aa0 | ||
|
|
1475236810 | ||
|
|
2098941ca0 | ||
|
|
8dcb37f190 | ||
|
|
e7c1f8eacd | ||
|
|
3c69596bc9 | ||
|
|
353028d8e9 | ||
|
|
e7301ef54a | ||
|
|
25e82545f3 | ||
|
|
176cea0ec6 | ||
|
|
19ed7abdf9 | ||
|
|
82de000ffe | ||
|
|
9a5579fc4f | ||
|
|
39ce27b5d5 | ||
|
|
57edfd78fd | ||
|
|
e8554e8c49 | ||
|
|
45f01f577c | ||
|
|
a7663f4ba1 | ||
|
|
08f6d0e185 | ||
|
|
0f2eea0a08 | ||
|
|
e1d987aa66 | ||
|
|
07dc1a8db3 | ||
|
|
a5e122bebd | ||
|
|
0b0bcbad95 | ||
|
|
b12e195fba | ||
|
|
570e9b9a07 | ||
|
|
1a8b6ba8c0 | ||
|
|
0607a10696 | ||
|
|
adcd7b05ac | ||
|
|
a2b046dafc | ||
|
|
247db4e304 | ||
|
|
2cb31c42a8 | ||
|
|
aa8c156e1d | ||
|
|
ac091fb539 | ||
|
|
c2bc829cca | ||
|
|
8c8197463f | ||
|
|
1cd1206332 | ||
|
|
cf1a95b67d | ||
|
|
a16328e853 | ||
|
|
673c6d2d11 | ||
|
|
53683d7f90 | ||
|
|
18c7f9c446 | ||
|
|
447bfae2a4 | ||
|
|
5a2edea16b | ||
|
|
2d1fa5e0ba | ||
|
|
f6e2636493 | ||
|
|
ab5f0ec37a | ||
|
|
dcba757dd2 | ||
|
|
8e139db454 | ||
|
|
fe632560f4 | ||
|
|
ded2f3aa85 | ||
|
|
3bd3a44aac | ||
|
|
c836dc11c9 | ||
|
|
5b8d714a4b | ||
|
|
42987f93f4 | ||
|
|
23e281716f | ||
|
|
53f3961259 | ||
|
|
e04e208141 | ||
|
|
f2f33f6230 | ||
|
|
1707cab1a4 | ||
|
|
43402e167a | ||
|
|
6776b70140 | ||
|
|
4a7b729025 | ||
|
|
e2a3f5cadd | ||
|
|
602926fe9d | ||
|
|
6e1b3d1e0b | ||
|
|
7bf89dcbd3 | ||
|
|
8d7c1135b8 | ||
|
|
71741a1ed6 | ||
|
|
254a1338ad | ||
|
|
1fbb33c18b | ||
|
|
fa54d25fb2 | ||
|
|
7c4e4c7603 | ||
|
|
1851f2645a | ||
|
|
2935a0c479 | ||
|
|
c877705a53 | ||
|
|
c24f185196 | ||
|
|
430b7586f6 | ||
|
|
81a4de1883 | ||
|
|
1ac7134832 | ||
|
|
064eeb2861 | ||
|
|
f9b5b521e8 | ||
|
|
0b6bfb1fd8 | ||
|
|
c20e44df4e | ||
|
|
e01894672b | ||
|
|
1cac8e92fa | ||
|
|
d46d90c436 | ||
|
|
bf86e9527f | ||
|
|
b3238a884d | ||
|
|
68f1ca65e6 | ||
|
|
cf9661509e | ||
|
|
6477b47ac7 | ||
|
|
240d382db4 | ||
|
|
b5209a09d2 | ||
|
|
035e474912 | ||
|
|
556af11d3b | ||
|
|
5984277fe3 | ||
|
|
b900fa03c1 | ||
|
|
f346e3ec0e | ||
|
|
7b51547815 | ||
|
|
80125a2f77 | ||
|
|
1b51d398fb | ||
|
|
b8f3e44a3f | ||
|
|
1614be4a41 | ||
|
|
1b11820187 | ||
|
|
6556c33f13 | ||
|
|
906a62c6b2 | ||
|
|
8cb63658f0 | ||
|
|
ce5800a225 | ||
|
|
33004ded62 | ||
|
|
0e35d46f5e | ||
|
|
98cb68e5a7 | ||
|
|
3f55f7df31 | ||
|
|
22460b6898 | ||
|
|
186271e5d1 | ||
|
|
21566fef9b | ||
|
|
c3d2e21269 | ||
|
|
b731f7dca2 | ||
|
|
233f368e46 | ||
|
|
ff5da7111c | ||
|
|
3328938d4e | ||
|
|
466e245f26 | ||
|
|
8889f490ce | ||
|
|
f47651578f | ||
|
|
9f6dcbd568 | ||
|
|
2222d90491 | ||
|
|
bf53f55366 | ||
|
|
0bbaa9df81 | ||
|
|
080358ebef | ||
|
|
f11e434ae6 | ||
|
|
7c6db2fed1 | ||
|
|
7439d891bf | ||
|
|
ba76a4d26e | ||
|
|
4c410a1e3a | ||
|
|
4ee301c687 | ||
|
|
90df2d7962 | ||
|
|
c5785c33f0 | ||
|
|
d643a865f3 | ||
|
|
494f2e1c21 | ||
|
|
c41e087d46 | ||
|
|
9867a913dc | ||
|
|
86263b386c | ||
|
|
1aecdcf536 | ||
|
|
dc661152c1 | ||
|
|
19b228393f | ||
|
|
85db1734e7 | ||
|
|
dc48de74e8 | ||
|
|
935bfaa913 | ||
|
|
bd129849f0 | ||
|
|
1572df9e26 | ||
|
|
2a20434705 | ||
|
|
a60d3d8ff7 | ||
|
|
1957b5a8ef | ||
|
|
520ce1ca81 | ||
|
|
b587ffa1fd | ||
|
|
08e4497c6e | ||
|
|
ccd0f2bdc2 | ||
|
|
45981af10f | ||
|
|
cf266d66dd | ||
|
|
8d03bb688e | ||
|
|
34f942867f | ||
|
|
740c369ba6 | ||
|
|
df2f00f44d | ||
|
|
3833624ab1 | ||
|
|
545b9825d6 | ||
|
|
679d05567d | ||
|
|
c26cca6f14 | ||
|
|
0f2b5af0dd | ||
|
|
23aae5571b | ||
|
|
c66e8d92e4 | ||
|
|
cb70ae9450 | ||
|
|
7908f848a3 | ||
|
|
8cb9f3cd80 | ||
|
|
1f3f07d0e7 | ||
|
|
cc297da0ee | ||
|
|
cb21ec30a4 | ||
|
|
218981eba1 | ||
|
|
d259ed0740 | ||
|
|
d01f31460e | ||
|
|
5c497ed22f | ||
|
|
01613bd07e | ||
|
|
55b006ff9b | ||
|
|
993e9be669 | ||
|
|
576bb88628 | ||
|
|
76fe73b8bd | ||
|
|
f10c9a16c4 | ||
|
|
964ad0e51a | ||
|
|
747699541e | ||
|
|
372754a66e | ||
|
|
700d4e9388 | ||
|
|
015da03a6f | ||
|
|
e144dd5b15 | ||
|
|
e3acd3e6ba | ||
|
|
69e4a2c62d | ||
|
|
b9092ddb5c | ||
|
|
f815740403 | ||
|
|
dbaf95ac77 | ||
|
|
71f7d4e71e | ||
|
|
7264d64856 | ||
|
|
03cdcd3909 | ||
|
|
daf023de6e | ||
|
|
b652d598d1 | ||
|
|
4e74385a1a | ||
|
|
e7f5845ce8 | ||
|
|
e767561ab8 | ||
|
|
1e27f7101e | ||
|
|
38a6e6eb26 | ||
|
|
bdabcd01b7 | ||
|
|
5cd6fda1ee | ||
|
|
16c780d568 | ||
|
|
3bf0721ae6 | ||
|
|
175aa2497a | ||
|
|
2d60232355 | ||
|
|
de8b27d8c2 | ||
|
|
5917aec4a1 | ||
|
|
c5c278c339 | ||
|
|
1d1c430b1f | ||
|
|
f208d98492 | ||
|
|
41dfa96e5a | ||
|
|
46cc4a253b | ||
|
|
0aa541b361 | ||
|
|
8e2caf3fb4 | ||
|
|
021a28137d | ||
|
|
aa3e89a2ba | ||
|
|
656b2f7ce1 | ||
|
|
ab5e185140 | ||
|
|
31c69923ba | ||
|
|
a1eca8ca7e | ||
|
|
88b7bc394e | ||
|
|
d4636a9258 | ||
|
|
1eb14af1a3 | ||
|
|
20bdbd7aab | ||
|
|
353f93ee1a | ||
|
|
2bccbeecb3 | ||
|
|
b880860378 | ||
|
|
faaec08fa4 | ||
|
|
f7ab8bc6d4 | ||
|
|
a2bd6deb12 | ||
|
|
bcdc6c62b7 | ||
|
|
10448eba37 | ||
|
|
bc97eb8a33 | ||
|
|
b2221881a1 | ||
|
|
025db3d2b4 | ||
|
|
4310780c08 | ||
|
|
7438617bbf | ||
|
|
bc9fce0d32 | ||
|
|
fe282b1b3a | ||
|
|
d61fdebaac | ||
|
|
5402121323 | ||
|
|
d06bae56b3 | ||
|
|
635ea3df2e | ||
|
|
609dbe6b92 | ||
|
|
cb712bf4f8 | ||
|
|
69ed0e0001 | ||
|
|
f191e0a00d | ||
|
|
b9e444da5e | ||
|
|
133056f625 | ||
|
|
d365f2409a | ||
|
|
fbb03ef2a0 | ||
|
|
95575cda6e | ||
|
|
7f407c0274 | ||
|
|
efe83982d3 | ||
|
|
50ff1066f5 | ||
|
|
d2fda6c25f | ||
|
|
927141bcc4 | ||
|
|
5ef43355f0 | ||
|
|
56748e1d74 | ||
|
|
e80f8d7ad8 | ||
|
|
187b4d7521 | ||
|
|
e9abfea165 | ||
|
|
3bd6ed94d7 | ||
|
|
0dac64afb3 | ||
|
|
e0d8af253e | ||
|
|
7ee37e4b38 | ||
|
|
b8e4b69915 | ||
|
|
eee0452aa8 | ||
|
|
5a1ac9c0ef | ||
|
|
cf7e1571d3 | ||
|
|
61b6e4cc67 | ||
|
|
af0a25544e | ||
|
|
f3c0d4f9df | ||
|
|
8e62362cd3 | ||
|
|
4978f69d7a | ||
|
|
0660db3e7a | ||
|
|
9de3787c47 | ||
|
|
68637bca3f | ||
|
|
58651d16c0 | ||
|
|
f2ad539f5f | ||
|
|
e5decd0cde | ||
|
|
a57c95b2f1 | ||
|
|
66c427e863 | ||
|
|
f5a8a8bfaa | ||
|
|
543733d42c | ||
|
|
5d1849a9eb | ||
|
|
12a422c093 | ||
|
|
62e8ca5eaf | ||
|
|
ebdc617408 | ||
|
|
0f67569279 | ||
|
|
bdaadf85dc | ||
|
|
bb6d2d4b05 | ||
|
|
28e5e42986 | ||
|
|
5b62a6f316 | ||
|
|
3b08836397 | ||
|
|
6dafeead33 | ||
|
|
72e4805d42 | ||
|
|
25b596ce21 | ||
|
|
1e9483a2d5 | ||
|
|
6bddd54f9d | ||
|
|
e9c053eac6 | ||
|
|
ddf59289d6 | ||
|
|
49f7e961c0 | ||
|
|
cd7e9769d8 | ||
|
|
d660f22ed1 | ||
|
|
316dcaa399 | ||
|
|
dd5e689533 | ||
|
|
34267f419e | ||
|
|
5dee031b25 | ||
|
|
eb77790dfb | ||
|
|
7f30c49731 | ||
|
|
0f34cabb98 | ||
|
|
47590fc80b | ||
|
|
19f77578e0 | ||
|
|
178ca29065 | ||
|
|
7248420c72 | ||
|
|
ed884c20d3 | ||
|
|
8ee3ec7296 | ||
|
|
5b30203fe9 | ||
|
|
9d2bb586ad | ||
|
|
c0c75ac19d | ||
|
|
9f502108bf | ||
|
|
b7425c14c8 | ||
|
|
fb73f2b2be | ||
|
|
3d2a50a5c0 | ||
|
|
ff7fdf6db2 | ||
|
|
281b42a281 | ||
|
|
14bc5c095c | ||
|
|
a4e42b2d4c | ||
|
|
bc7cd78870 | ||
|
|
7ca4ef0d74 | ||
|
|
42aa1a6aca | ||
|
|
6b8db83149 | ||
|
|
ce564e7ebf | ||
|
|
1eae7574b5 | ||
|
|
90246223c9 | ||
|
|
89e984d93b | ||
|
|
c74d8ffd63 | ||
|
|
61f5001c3f | ||
|
|
5ed604fe5b | ||
|
|
2395e0e678 | ||
|
|
f83203ecef | ||
|
|
e78669257e | ||
|
|
84bae315f8 | ||
|
|
89bbb802c0 | ||
|
|
c64b94bd14 | ||
|
|
67f2bec2df | ||
|
|
ffdf1fb1de | ||
|
|
e591341237 | ||
|
|
4f401f6fca | ||
|
|
976fcb5985 | ||
|
|
f41dce49ac | ||
|
|
7cd0c64210 | ||
|
|
431ec528bc | ||
|
|
003a06f030 | ||
|
|
d8f9472356 | ||
|
|
438442ace0 | ||
|
|
6c9980a55b | ||
|
|
7a5e11645f | ||
|
|
850edfe419 | ||
|
|
cf816e51ad | ||
|
|
36d31ba0be | ||
|
|
ad843541d5 | ||
|
|
cda966078d | ||
|
|
a15d781707 | ||
|
|
c041550ffa | ||
|
|
a92b968e35 | ||
|
|
9945ca7a62 | ||
|
|
bb56248acd | ||
|
|
9a4d813136 | ||
|
|
7a0334742a | ||
|
|
2be7a4c04f | ||
|
|
4d298d4f11 | ||
|
|
999e797cea | ||
|
|
bab4495cfb | ||
|
|
c5b3fd1fec | ||
|
|
84cdb5d914 | ||
|
|
4c2e77854d | ||
|
|
c3592a5595 | ||
|
|
eebd86dc3e | ||
|
|
52006df9bb | ||
|
|
7539d4ac74 | ||
|
|
678237835f | ||
|
|
8401d12cf2 | ||
|
|
2eb56f9ef6 | ||
|
|
450f1325ab | ||
|
|
d45a4ba106 | ||
|
|
7778384071 | ||
|
|
9b743e7c36 | ||
|
|
d157196416 | ||
|
|
b37d6fe368 | ||
|
|
55a39f8e67 | ||
|
|
a9cd5d914e | ||
|
|
17c5370398 | ||
|
|
9c1562c038 | ||
|
|
5f5f6ae705 | ||
|
|
0363476ee3 | ||
|
|
b10878f108 | ||
|
|
aaf837cf5f | ||
|
|
91fd634768 | ||
|
|
d73cb95dfa | ||
|
|
5569a8e426 | ||
|
|
2c668940cd | ||
|
|
3247f11638 | ||
|
|
c5f6629f4a | ||
|
|
60bc676c14 | ||
|
|
ee58f4f766 | ||
|
|
9f83fe3940 | ||
|
|
be84f678b9 | ||
|
|
83f1d863bd | ||
|
|
011b8ebe18 | ||
|
|
f9527e608e | ||
|
|
1f04a3186b | ||
|
|
4e23107f83 | ||
|
|
aad780bcfa | ||
|
|
65903d2cfc | ||
|
|
19d1b35905 | ||
|
|
8a282f64c9 | ||
|
|
cb069d0a42 | ||
|
|
8b3b106ad1 | ||
|
|
bd08387165 | ||
|
|
e79c88e610 | ||
|
|
aad2f87a53 | ||
|
|
874487fed8 | ||
|
|
cc034fe0c3 | ||
|
|
a25bc71f3f | ||
|
|
f1836ac28a | ||
|
|
2abdbf63cf | ||
|
|
2014a8410a | ||
|
|
faedcded39 | ||
|
|
8e3f46dd0a | ||
|
|
142489bd60 | ||
|
|
543d600042 | ||
|
|
9bbf66504e | ||
|
|
27a576ba34 | ||
|
|
49192a626f | ||
|
|
fc2f97177b | ||
|
|
c67fa32496 | ||
|
|
b7dd8349f4 | ||
|
|
519740a1d3 | ||
|
|
88fde0309a | ||
|
|
453b8e267c | ||
|
|
70eb0d1844 | ||
|
|
13350f79df | ||
|
|
aaa3289e22 | ||
|
|
bf65b07718 | ||
|
|
abd6aa6ab8 | ||
|
|
593ae2e9f9 | ||
|
|
819f9e1d9f | ||
|
|
2a093ace37 | ||
|
|
e503688a6b | ||
|
|
8286f07b26 | ||
|
|
6ca2032fd7 | ||
|
|
ec14e4b8cd | ||
|
|
08eb0949f3 | ||
|
|
249eae5f4a | ||
|
|
b49f48962b | ||
|
|
ad7ea2c60c | ||
|
|
c01d1c1747 | ||
|
|
fcbfb0a00a | ||
|
|
11b20229c9 | ||
|
|
a12a8174e0 | ||
|
|
7414e2bac1 | ||
|
|
3be170d778 | ||
|
|
335ba120c9 | ||
|
|
826a84478d | ||
|
|
386ef03be3 | ||
|
|
5f228e4b7d | ||
|
|
dff1d8067c | ||
|
|
b4c775663a | ||
|
|
49a279bdfa | ||
|
|
d00ca885bc | ||
|
|
db70af1bbc | ||
|
|
346381f917 | ||
|
|
3cbb44a2fd | ||
|
|
2e83628d02 | ||
|
|
e6108b93d7 | ||
|
|
687f2b3c8d | ||
|
|
5eb38d2533 | ||
|
|
82631c0884 | ||
|
|
f4b2382713 | ||
|
|
163f83720f | ||
|
|
b6c4f8cd54 | ||
|
|
6ee9f12607 | ||
|
|
7fca814a67 | ||
|
|
4846743fdc | ||
|
|
64e9526509 | ||
|
|
1b3f220251 | ||
|
|
83da867474 | ||
|
|
0b26d380cd | ||
|
|
2e3caa2011 | ||
|
|
d3e7c5a8ba | ||
|
|
12a78e5e74 |
155
.github/workflows/build.yml
vendored
155
.github/workflows/build.yml
vendored
@@ -1,21 +1,52 @@
|
|||||||
name: continuous-integration/gh-actions/cli
|
name: ci/gh-actions/cli
|
||||||
|
|
||||||
on: [push, pull_request]
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- 'docs/**'
|
||||||
|
- '**/README.md'
|
||||||
|
|
||||||
|
# The below variables reduce repetitions across similar targets
|
||||||
|
env:
|
||||||
|
REMOVE_BUNDLED_BOOST : rm -rf /usr/local/share/boost
|
||||||
|
BUILD_DEFAULT_LINUX: |
|
||||||
|
cmake -S . -B build -D ARCH="default" -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Release && cmake --build build -j3
|
||||||
|
APT_INSTALL_LINUX: 'sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler ccache'
|
||||||
|
APT_SET_CONF: |
|
||||||
|
echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
||||||
|
echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
||||||
|
echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
||||||
|
CCACHE_SETTINGS: |
|
||||||
|
ccache --max-size=150M
|
||||||
|
ccache --set-config=compression=true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-macos:
|
build-macos:
|
||||||
runs-on: macOS-latest
|
runs-on: macOS-latest
|
||||||
|
env:
|
||||||
|
CCACHE_TEMPDIR: /tmp/.ccache-temp
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- name: update brew and install dependencies
|
- uses: actions/cache@v2
|
||||||
run: brew update && brew install boost hidapi zmq libpgm miniupnpc ldns expat libunwind-headers protobuf
|
with:
|
||||||
|
path: /Users/runner/Library/Caches/ccache
|
||||||
|
key: ccache-${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
restore-keys: ccache-${{ runner.os }}-build-
|
||||||
|
- name: install dependencies
|
||||||
|
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi openssl zmq libpgm miniupnpc expat libunwind-headers protobuf ccache
|
||||||
- name: build
|
- name: build
|
||||||
run: make -j3
|
run: |
|
||||||
|
${{env.CCACHE_SETTINGS}}
|
||||||
|
make -j3
|
||||||
|
|
||||||
build-windows:
|
build-windows:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
env:
|
||||||
|
CCACHE_TEMPDIR: C:\Users\runneradmin\.ccache-temp
|
||||||
|
CCACHE_DIR: C:\Users\runneradmin\.ccache
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: msys2 {0}
|
shell: msys2 {0}
|
||||||
@@ -23,74 +54,130 @@ jobs:
|
|||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- uses: eine/setup-msys2@v1
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: C:\Users\runneradmin\.ccache
|
||||||
|
key: ccache-${{ runner.os }}-build-${{ github.sha }}
|
||||||
|
restore-keys: ccache-${{ runner.os }}-build-
|
||||||
|
- uses: eine/setup-msys2@v2
|
||||||
with:
|
with:
|
||||||
update: true
|
update: true
|
||||||
install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb git
|
install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-ccache mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-unbound git
|
||||||
- name: build
|
- name: build
|
||||||
run: make release-static-win64 -j2
|
run: |
|
||||||
|
${{env.CCACHE_SETTINGS}}
|
||||||
|
make release-static-win64 -j2
|
||||||
|
|
||||||
|
# See the OS labels and monitor deprecations here:
|
||||||
|
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
|
||||||
|
|
||||||
build-ubuntu:
|
build-ubuntu:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ${{ matrix.os }}
|
||||||
|
env:
|
||||||
|
CCACHE_TEMPDIR: /tmp/.ccache-temp
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-22.04, ubuntu-20.04]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ccache-${{ runner.os }}-build-${{ matrix.os }}-${{ github.sha }}
|
||||||
|
restore-keys: ccache-${{ runner.os }}-build-${{ matrix.os }}
|
||||||
- name: remove bundled boost
|
- name: remove bundled boost
|
||||||
run: sudo rm -rf /usr/local/share/boost
|
run: ${{env.REMOVE_BUNDLED_BOOST}}
|
||||||
- name: set apt conf
|
- name: set apt conf
|
||||||
run: |
|
run: ${{env.APT_SET_CONF}}
|
||||||
echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
- name: update apt
|
- name: update apt
|
||||||
run: sudo apt update
|
run: sudo apt update
|
||||||
- name: install monero dependencies
|
- name: install monero dependencies
|
||||||
run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler
|
run: ${{env.APT_INSTALL_LINUX}}
|
||||||
- name: build
|
- name: build
|
||||||
run: make -j3
|
run: |
|
||||||
|
${{env.CCACHE_SETTINGS}}
|
||||||
|
${{env.BUILD_DEFAULT_LINUX}}
|
||||||
|
|
||||||
libwallet-ubuntu:
|
libwallet-ubuntu:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
|
env:
|
||||||
|
CCACHE_TEMPDIR: /tmp/.ccache-temp
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ccache-${{ runner.os }}-libwallet-${{ github.sha }}
|
||||||
|
restore-keys: ccache-${{ runner.os }}-libwallet-
|
||||||
- name: remove bundled boost
|
- name: remove bundled boost
|
||||||
run: sudo rm -rf /usr/local/share/boost
|
run: ${{env.REMOVE_BUNDLED_BOOST}}
|
||||||
- name: set apt conf
|
- name: set apt conf
|
||||||
run: |
|
run: ${{env.APT_SET_CONF}}
|
||||||
echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
- name: update apt
|
- name: update apt
|
||||||
run: sudo apt update
|
run: sudo apt update
|
||||||
- name: install monero dependencies
|
- name: install monero dependencies
|
||||||
run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler
|
run: ${{env.APT_INSTALL_LINUX}}
|
||||||
- name: build
|
- name: build
|
||||||
run: cmake -DBUILD_GUI_DEPS=ON && make -j3
|
run: |
|
||||||
|
${{env.CCACHE_SETTINGS}}
|
||||||
|
cmake .
|
||||||
|
make wallet_api -j3
|
||||||
|
|
||||||
test-ubuntu:
|
test-ubuntu:
|
||||||
needs: build-ubuntu
|
needs: build-ubuntu
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
|
env:
|
||||||
|
CCACHE_TEMPDIR: /tmp/.ccache-temp
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
- name: ccache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ccache-${{ runner.os }}-build-ubuntu-latest-${{ github.sha }}
|
||||||
|
restore-keys: ccache-${{ runner.os }}-build-ubuntu-latest
|
||||||
- name: remove bundled boost
|
- name: remove bundled boost
|
||||||
run: sudo rm -rf /usr/local/share/boost
|
run: ${{env.REMOVE_BUNDLED_BOOST}}
|
||||||
- name: set apt conf
|
- name: set apt conf
|
||||||
run: |
|
run: ${{env.APT_SET_CONF}}
|
||||||
echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
|
||||||
- name: update apt
|
- name: update apt
|
||||||
run: sudo apt update
|
run: sudo apt update
|
||||||
- name: install monero dependencies
|
- name: install monero dependencies
|
||||||
run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler
|
run: ${{env.APT_INSTALL_LINUX}}
|
||||||
- name: install requests
|
- name: install Python dependencies
|
||||||
run: pip install requests
|
run: pip install requests psutil monotonic zmq
|
||||||
- name: tests
|
- name: tests
|
||||||
env:
|
env:
|
||||||
CTEST_OUTPUT_ON_FAILURE: ON
|
CTEST_OUTPUT_ON_FAILURE: ON
|
||||||
run: make release-test -j3
|
DNS_PUBLIC: tcp://9.9.9.9
|
||||||
|
run: |
|
||||||
|
${{env.CCACHE_SETTINGS}}
|
||||||
|
${{env.BUILD_DEFAULT_LINUX}}
|
||||||
|
cmake --build build --target test
|
||||||
|
|
||||||
|
# ARCH="default" (not "native") ensures, that a different execution host can execute binaries compiled elsewhere.
|
||||||
|
# BUILD_SHARED_LIBS=ON speeds up the linkage part a bit, reduces size, and is the only place where the dynamic linkage is tested.
|
||||||
|
|
||||||
|
source-archive:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: archive
|
||||||
|
run: |
|
||||||
|
pip install git-archive-all
|
||||||
|
export VERSION="monero-$(git describe)"
|
||||||
|
export OUTPUT="$VERSION.tar"
|
||||||
|
echo "OUTPUT=$OUTPUT" >> $GITHUB_ENV
|
||||||
|
/home/runner/.local/bin/git-archive-all --prefix "$VERSION/" --force-submodules "$OUTPUT"
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: ${{ env.OUTPUT }}
|
||||||
|
path: /home/runner/work/monero/monero/${{ env.OUTPUT }}
|
||||||
|
|||||||
105
.github/workflows/depends.yml
vendored
Normal file
105
.github/workflows/depends.yml
vendored
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
name: ci/gh-actions/depends
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- 'docs/**'
|
||||||
|
- '**/README.md'
|
||||||
|
|
||||||
|
env:
|
||||||
|
APT_SET_CONF: |
|
||||||
|
echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
||||||
|
echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
||||||
|
echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
|
||||||
|
CCACHE_SETTINGS: |
|
||||||
|
ccache --max-size=150M
|
||||||
|
ccache --set-config=compression=true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-cross:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
env:
|
||||||
|
CCACHE_TEMPDIR: /tmp/.ccache-temp
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
toolchain:
|
||||||
|
- name: "RISCV 64bit"
|
||||||
|
host: "riscv64-linux-gnu"
|
||||||
|
packages: "python3 gperf g++-riscv64-linux-gnu"
|
||||||
|
- name: "ARM v7"
|
||||||
|
host: "arm-linux-gnueabihf"
|
||||||
|
packages: "python3 gperf g++-arm-linux-gnueabihf"
|
||||||
|
- name: "ARM v8"
|
||||||
|
host: "aarch64-linux-gnu"
|
||||||
|
packages: "python3 gperf g++-aarch64-linux-gnu"
|
||||||
|
- name: "i686 Win"
|
||||||
|
host: "i686-w64-mingw32"
|
||||||
|
packages: "python3 g++-mingw-w64-i686"
|
||||||
|
- name: "i686 Linux"
|
||||||
|
host: "i686-pc-linux-gnu"
|
||||||
|
packages: "gperf cmake g++-multilib python3-zmq"
|
||||||
|
- name: "Win64"
|
||||||
|
host: "x86_64-w64-mingw32"
|
||||||
|
packages: "cmake python3 g++-mingw-w64-x86-64"
|
||||||
|
- name: "x86_64 Linux"
|
||||||
|
host: "x86_64-unknown-linux-gnu"
|
||||||
|
packages: "gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev"
|
||||||
|
- name: "Cross-Mac x86_64"
|
||||||
|
host: "x86_64-apple-darwin11"
|
||||||
|
packages: "cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git"
|
||||||
|
- name: "Cross-Mac aarch64"
|
||||||
|
host: "aarch64-apple-darwin11"
|
||||||
|
packages: "cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git"
|
||||||
|
- name: "x86_64 Freebsd"
|
||||||
|
host: "x86_64-unknown-freebsd"
|
||||||
|
packages: "clang-8 gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev"
|
||||||
|
name: ${{ matrix.toolchain.name }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
# Most volatile cache
|
||||||
|
- name: ccache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ccache-${{ matrix.toolchain.host }}-${{ github.sha }}
|
||||||
|
restore-keys: ccache-${{ matrix.toolchain.host }}-
|
||||||
|
# Less volatile cache
|
||||||
|
- name: depends cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: contrib/depends/built
|
||||||
|
key: depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }}
|
||||||
|
restore-keys: |
|
||||||
|
depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }}
|
||||||
|
depends-${{ matrix.toolchain.host }}-
|
||||||
|
# Static cache
|
||||||
|
- name: OSX SDK cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: contrib/depends/sdk-sources
|
||||||
|
key: sdk-${{ matrix.toolchain.host }}-${{ matrix.toolchain.osx_sdk }}
|
||||||
|
restore-keys: sdk-${{ matrix.toolchain.host }}-${{ matrix.toolchain.osx_sdk }}
|
||||||
|
- name: set apt conf
|
||||||
|
run: ${{env.APT_SET_CONF}}
|
||||||
|
- name: install dependencies
|
||||||
|
run: sudo apt update; sudo apt -y install build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache ${{ matrix.toolchain.packages }}
|
||||||
|
- name: prepare w64-mingw32
|
||||||
|
if: ${{ matrix.toolchain.host == 'x86_64-w64-mingw32' || matrix.toolchain.host == 'i686-w64-mingw32' }}
|
||||||
|
run: |
|
||||||
|
sudo update-alternatives --set ${{ matrix.toolchain.host }}-g++ $(which ${{ matrix.toolchain.host }}-g++-posix)
|
||||||
|
sudo update-alternatives --set ${{ matrix.toolchain.host }}-gcc $(which ${{ matrix.toolchain.host }}-gcc-posix)
|
||||||
|
- name: build
|
||||||
|
run: |
|
||||||
|
${{env.CCACHE_SETTINGS}}
|
||||||
|
make depends target=${{ matrix.toolchain.host }} -j2
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
if: ${{ matrix.toolchain.host == 'x86_64-w64-mingw32' || matrix.toolchain.host == 'x86_64-apple-darwin11' || matrix.toolchain.host == 'x86_64-unknown-linux-gnu' }}
|
||||||
|
with:
|
||||||
|
name: ${{ matrix.toolchain.name }}
|
||||||
|
path: |
|
||||||
|
/home/runner/work/monero/monero/build/${{ matrix.toolchain.host }}/release/bin/monero-wallet-cli*
|
||||||
|
/home/runner/work/monero/monero/build/${{ matrix.toolchain.host }}/release/bin/monerod*
|
||||||
49
.github/workflows/gitian.yml
vendored
Normal file
49
.github/workflows/gitian.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: ci/gh-actions/gitian
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-gitian:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
operating-system:
|
||||||
|
- name: "Linux"
|
||||||
|
option: "l"
|
||||||
|
- name: "Windows"
|
||||||
|
option: "w"
|
||||||
|
- name: "Android"
|
||||||
|
option: "a"
|
||||||
|
- name: "FreeBSD"
|
||||||
|
option: "f"
|
||||||
|
- name: "macOS"
|
||||||
|
option: "m"
|
||||||
|
name: ${{ matrix.operating-system.name }}
|
||||||
|
steps:
|
||||||
|
- name: prepare
|
||||||
|
run: |
|
||||||
|
sudo apt update
|
||||||
|
curl -O https://raw.githubusercontent.com/monero-project/monero/${{ github.ref_name }}/contrib/gitian/gitian-build.py
|
||||||
|
chmod +x gitian-build.py
|
||||||
|
- name: setup
|
||||||
|
run: |
|
||||||
|
./gitian-build.py --setup --docker github-actions ${{ github.ref_name }}
|
||||||
|
- name: build
|
||||||
|
run: |
|
||||||
|
./gitian-build.py --docker --detach-sign --no-commit --build -j 3 -o ${{ matrix.operating-system.option }} github-actions ${{ github.ref_name }}
|
||||||
|
- name: post build
|
||||||
|
run: |
|
||||||
|
cd out/${{ github.ref_name }}
|
||||||
|
shasum -a256 *
|
||||||
|
echo \`\`\` >> $GITHUB_STEP_SUMMARY
|
||||||
|
shasum -a256 * >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo \`\`\` >> $GITHUB_STEP_SUMMARY
|
||||||
|
- uses: actions/upload-artifact@v3.1.0
|
||||||
|
with:
|
||||||
|
name: ${{ matrix.operating-system.name }}
|
||||||
|
path: |
|
||||||
|
out/${{ github.ref_name }}/*
|
||||||
11
.gitignore
vendored
11
.gitignore
vendored
@@ -23,6 +23,13 @@ cscope.po.out
|
|||||||
external/miniupnpc/Makefile
|
external/miniupnpc/Makefile
|
||||||
miniupnpcstrings.h
|
miniupnpcstrings.h
|
||||||
version/
|
version/
|
||||||
|
ClangBuildAnalyzerSession.txt
|
||||||
|
|
||||||
|
# gitian
|
||||||
|
contrib/gitian/builder/
|
||||||
|
contrib/gitian/docker/
|
||||||
|
contrib/gitian/sigs/
|
||||||
|
|
||||||
# Created by https://www.gitignore.io
|
# Created by https://www.gitignore.io
|
||||||
|
|
||||||
### C++ ###
|
### C++ ###
|
||||||
@@ -69,6 +76,8 @@ cmake-build-debug/
|
|||||||
# KDE directory preferences
|
# KDE directory preferences
|
||||||
.directory
|
.directory
|
||||||
|
|
||||||
|
### VSCode ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
### Eclipse ###
|
### Eclipse ###
|
||||||
*.pydevproject
|
*.pydevproject
|
||||||
@@ -109,3 +118,5 @@ nbproject
|
|||||||
/testnet
|
/testnet
|
||||||
|
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*.log
|
||||||
|
|||||||
16
.gitmodules
vendored
16
.gitmodules
vendored
@@ -1,21 +1,19 @@
|
|||||||
[submodule "external/unbound"]
|
|
||||||
path = external/unbound
|
|
||||||
url = https://github.com/monero-project/unbound
|
|
||||||
branch = monero
|
|
||||||
[submodule "external/miniupnp"]
|
[submodule "external/miniupnp"]
|
||||||
path = external/miniupnp
|
path = external/miniupnp
|
||||||
url = https://github.com/monero-project/miniupnp
|
url = https://github.com/miniupnp/miniupnp
|
||||||
branch = monero
|
|
||||||
[submodule "external/rapidjson"]
|
[submodule "external/rapidjson"]
|
||||||
path = external/rapidjson
|
path = external/rapidjson
|
||||||
url = https://github.com/Tencent/rapidjson
|
url = https://github.com/Tencent/rapidjson
|
||||||
[submodule "external/trezor-common"]
|
[submodule "external/trezor-common"]
|
||||||
|
active = false
|
||||||
path = external/trezor-common
|
path = external/trezor-common
|
||||||
url = https://github.com/trezor/trezor-common.git
|
url = https://github.com/trezor/trezor-common.git
|
||||||
[submodule "external/randomx"]
|
|
||||||
path = external/randomx
|
|
||||||
url = https://github.com/tevador/RandomX
|
|
||||||
[submodule "external/supercop"]
|
[submodule "external/supercop"]
|
||||||
path = external/supercop
|
path = external/supercop
|
||||||
url = https://github.com/monero-project/supercop
|
url = https://github.com/monero-project/supercop
|
||||||
branch = monero
|
branch = monero
|
||||||
|
[submodule "external/randomwow"]
|
||||||
|
path = external/randomwow
|
||||||
|
url = https://git.wownero.com/wownero/RandomWOW
|
||||||
|
branch = 1.1.10-wow
|
||||||
|
|
||||||
|
|||||||
66
.travis.yml
66
.travis.yml
@@ -1,66 +0,0 @@
|
|||||||
sudo: required
|
|
||||||
dist: trusty
|
|
||||||
os: linux
|
|
||||||
language: minimal
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- contrib/depends/built
|
|
||||||
- contrib/depends/sdk-sources
|
|
||||||
- $HOME/.ccache
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- MAKEJOBS=-j3
|
|
||||||
- CCACHE_SIZE=100M
|
|
||||||
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
|
||||||
- CCACHE_COMPRESS=1
|
|
||||||
- CCACHE_DIR=$HOME/.ccache
|
|
||||||
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
|
|
||||||
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
|
|
||||||
- DOCKER_PACKAGES="build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
|
|
||||||
matrix:
|
|
||||||
# RISCV 64bit
|
|
||||||
- HOST=riscv64-linux-gnu PACKAGES="python3 gperf g++-riscv64-linux-gnu"
|
|
||||||
# ARM v7
|
|
||||||
- HOST=arm-linux-gnueabihf PACKAGES="python3 gperf g++-arm-linux-gnueabihf"
|
|
||||||
# ARM v8
|
|
||||||
- HOST=aarch64-linux-gnu PACKAGES="python3 gperf g++-aarch64-linux-gnu"
|
|
||||||
# i686 Win
|
|
||||||
- HOST=i686-w64-mingw32 DEP_OPTS="NO_QT=1" PACKAGES="python3 g++-mingw-w64-i686 qttools5-dev-tools" MAKEJOBS=-j2
|
|
||||||
# i686 Linux
|
|
||||||
- HOST=i686-pc-linux-gnu PACKAGES="gperf cmake g++-multilib python3-zmq"
|
|
||||||
# Win64
|
|
||||||
- HOST=x86_64-w64-mingw32 DEP_OPTS="NO_QT=1" PACKAGES="cmake python3 g++-mingw-w64-x86-64 qttools5-dev-tools"
|
|
||||||
# x86_64 Linux
|
|
||||||
- HOST=x86_64-unknown-linux-gnu PACKAGES="gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev"
|
|
||||||
# Cross-Mac
|
|
||||||
- HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" OSX_SDK=10.11
|
|
||||||
# x86_64 Freebsd
|
|
||||||
- HOST=x86_64-unknown-freebsd PACKAGES="clang-8 gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev"
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
|
|
||||||
install:
|
|
||||||
- env | grep -E '^(CCACHE_|DISPLAY|CONFIG_SHELL)' | tee /tmp/env
|
|
||||||
- if [[ $HOST = *-mingw32 ]]; then DOCKER_ADMIN="--cap-add SYS_ADMIN"; fi
|
|
||||||
- DOCKER_ID=$(docker run $DOCKER_ADMIN -idt --mount type=bind,src=$TRAVIS_BUILD_DIR,dst=$TRAVIS_BUILD_DIR --mount type=bind,src=$CCACHE_DIR,dst=$CCACHE_DIR -w $TRAVIS_BUILD_DIR --env-file /tmp/env ubuntu:18.04)
|
|
||||||
- DOCKER_EXEC="docker exec $DOCKER_ID"
|
|
||||||
- if [ -n "$DPKG_ADD_ARCH" ]; then $DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
|
|
||||||
- travis_retry $DOCKER_EXEC apt-get update
|
|
||||||
- travis_retry $DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES $DOCKER_PACKAGES
|
|
||||||
before_script:
|
|
||||||
- mkdir -p contrib/depends/SDKs contrib/depends/sdk-sources
|
|
||||||
- if [ -n "$OSX_SDK" -a ! -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
|
||||||
- if [ -n "$OSX_SDK" -a -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C contrib/depends/SDKs -xf contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
|
||||||
- if [[ $HOST = *-mingw32 ]]; then $DOCKER_EXEC bash -c "update-alternatives --set $HOST-g++ \$(which $HOST-g++-posix)"; fi
|
|
||||||
- if [[ $HOST = *-mingw32 ]]; then $DOCKER_EXEC bash -c "update-alternatives --set $HOST-gcc \$(which $HOST-gcc-posix)"; fi
|
|
||||||
- if [ -z "$NO_DEPENDS" ]; then $DOCKER_EXEC bash -c "make $MAKEJOBS -C contrib/depends HOST=$HOST $DEP_OPTS"; fi
|
|
||||||
script:
|
|
||||||
- git submodule init && git submodule update
|
|
||||||
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
|
|
||||||
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
|
|
||||||
- if [ -z "$NO_DEPENDS" ]; then $DOCKER_EXEC ccache --max-size=$CCACHE_SIZE; fi
|
|
||||||
- $DOCKER_EXEC bash -c "mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/contrib/depends/$HOST/share/toolchain.cmake .. && make $MAKEJOBS"
|
|
||||||
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/contrib/depends/$HOST/lib
|
|
||||||
after_script:
|
|
||||||
- echo $TRAVIS_COMMIT_RANGE
|
|
||||||
- echo $TRAVIS_COMMIT_LOG
|
|
||||||
360
CMakeLists.txt
360
CMakeLists.txt
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@@ -43,7 +43,7 @@ if (IOS)
|
|||||||
INCLUDE(CmakeLists_IOS.txt)
|
INCLUDE(CmakeLists_IOS.txt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.7)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
message(STATUS "CMake version ${CMAKE_VERSION}")
|
message(STATUS "CMake version ${CMAKE_VERSION}")
|
||||||
|
|
||||||
project(monero)
|
project(monero)
|
||||||
@@ -54,9 +54,52 @@ if (USE_CCACHE)
|
|||||||
else()
|
else()
|
||||||
message(STATUS "ccache deselected")
|
message(STATUS "ccache deselected")
|
||||||
endif()
|
endif()
|
||||||
|
option (USE_COMPILATION_TIME_PROFILER "Use compilation time profiler (for CLang >= 9 only)" OFF)
|
||||||
|
if (USE_COMPILATION_TIME_PROFILER)
|
||||||
|
if (NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
||||||
|
message(FATAL_ERROR "The flag USE_COMPILATION_TIME_PROFILER is meant to be set only for CLang compiler!")
|
||||||
|
endif()
|
||||||
|
add_compile_options("-ftime-trace")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (${CMAKE_VERSION} VERSION_GREATER "3.0.0" AND CMAKE_MAKE_PROGRAM MATCHES "ninja")
|
||||||
|
set(MONERO_PARALLEL_COMPILE_JOBS "" CACHE STRING "The maximum number of concurrent compilation jobs.")
|
||||||
|
if (MONERO_PARALLEL_COMPILE_JOBS)
|
||||||
|
set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${MONERO_PARALLEL_COMPILE_JOBS})
|
||||||
|
set(CMAKE_JOB_POOL_COMPILE compile_job_pool)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(MONERO_PARALLEL_LINK_JOBS "" CACHE STRING "The maximum number of concurrent link jobs.")
|
||||||
|
if (MONERO_PARALLEL_LINK_JOBS)
|
||||||
|
set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${MONERO_PARALLEL_LINK_JOBS})
|
||||||
|
set(CMAKE_JOB_POOL_LINK link_job_pool)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
option (USE_CLANG_TIDY_C "Lint the code with clang-tidy - variant C" OFF)
|
||||||
|
option (USE_CLANG_TIDY_CXX "Lint the code with clang-tidy - variant C++" OFF)
|
||||||
|
if (USE_CLANG_TIDY_C AND USE_CLANG_TIDY_CXX)
|
||||||
|
message(FATAL_ERROR "Enabling both USE_CLANG_TIDY_C and USE_CLANG_TIDY_CXX simultaneously crashes clang-tidy.")
|
||||||
|
endif()
|
||||||
|
if (USE_CLANG_TIDY_C OR USE_CLANG_TIDY_CXX)
|
||||||
|
include(SetClangTidy)
|
||||||
|
endif()
|
||||||
|
if (USE_CLANG_TIDY_C)
|
||||||
|
monero_clang_tidy("C")
|
||||||
|
elseif (USE_CLANG_TIDY_CXX)
|
||||||
|
monero_clang_tidy("CXX")
|
||||||
|
endif()
|
||||||
|
|
||||||
enable_language(C ASM)
|
enable_language(C ASM)
|
||||||
|
|
||||||
|
# Require C11/C++11 and disable extensions for all targets
|
||||||
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_C_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
function (die msg)
|
function (die msg)
|
||||||
if (NOT WIN32)
|
if (NOT WIN32)
|
||||||
string(ASCII 27 Esc)
|
string(ASCII 27 Esc)
|
||||||
@@ -71,16 +114,20 @@ function (die msg)
|
|||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
function (add_c_flag_if_supported flag var)
|
function (add_c_flag_if_supported flag var)
|
||||||
string(REPLACE "-" "_" supported ${flag}_c)
|
# Prepending the flag with -Werror will only add the flag,
|
||||||
check_c_compiler_flag(${flag} ${supported})
|
# if it doesn't result in generation of a warning of using a flag unknown to the compiler.
|
||||||
|
set(TMP "-Werror ${flag}")
|
||||||
|
string(REGEX REPLACE "[- ]" "_" supported ${TMP}_c)
|
||||||
|
check_c_compiler_flag(${TMP} ${supported})
|
||||||
if(${${supported}})
|
if(${${supported}})
|
||||||
set(${var} "${${var}} ${flag}" PARENT_SCOPE)
|
set(${var} "${${var}} ${flag}" PARENT_SCOPE)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function (add_cxx_flag_if_supported flag var)
|
function (add_cxx_flag_if_supported flag var)
|
||||||
string(REPLACE "-" "_" supported ${flag}_cxx)
|
set(TMP "-Werror ${flag}")
|
||||||
check_cxx_compiler_flag(${flag} ${supported})
|
string(REGEX REPLACE "[- ]" "_" supported ${TMP}_cxx)
|
||||||
|
check_cxx_compiler_flag(${TMP} ${supported})
|
||||||
if(${${supported}})
|
if(${${supported}})
|
||||||
set(${var} "${${var}} ${flag}" PARENT_SCOPE)
|
set(${var} "${${var}} ${flag}" PARENT_SCOPE)
|
||||||
endif()
|
endif()
|
||||||
@@ -111,6 +158,108 @@ function (add_definition_if_library_exists library function header var)
|
|||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
option(RELINK_TARGETS "Relink targets, when just a dependant .so changed, but not its header?" OFF)
|
||||||
|
function (monero_set_target_no_relink target)
|
||||||
|
if (RELINK_TARGETS MATCHES OFF)
|
||||||
|
# Will not relink the target, when just its dependant .so has changed, but not it's interface
|
||||||
|
set_target_properties("${target}" PROPERTIES LINK_DEPENDS_NO_SHARED true)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
option(STRIP_TARGETS "Strip symbols from targets?" OFF)
|
||||||
|
function (monero_set_target_strip target)
|
||||||
|
if (STRIP_TARGETS)
|
||||||
|
set_target_properties("${target}" PROPERTIES LINK_FLAGS_RELEASE -s)
|
||||||
|
set_target_properties("${target}" PROPERTIES LINK_FLAGS_DEBUG -s)
|
||||||
|
# Stripping from Debug might make sense if you're low on disk space, but want to test if debug version builds properly.
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function (monero_add_minimal_executable name)
|
||||||
|
source_group("${name}"
|
||||||
|
FILES
|
||||||
|
${ARGN})
|
||||||
|
|
||||||
|
add_executable("${name}"
|
||||||
|
${ARGN})
|
||||||
|
monero_set_target_no_relink("${name}")
|
||||||
|
monero_set_target_strip ("${name}")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Finds all headers in a directory and its subdirs, to be able to search for them and autosave in IDEs.
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# - headers_found: Output variable, which will hold the found headers
|
||||||
|
# - module_root_dir: The search path for the headers. Typically it will be the module's root dir, so "${CMAKE_CURRENT_SOURCE_DIR}" or a derivative of it.
|
||||||
|
macro (monero_find_all_headers headers_found module_root_dir)
|
||||||
|
file(GLOB ${headers_found}
|
||||||
|
"${module_root_dir}/*.h*" # h* will include hpps as well.
|
||||||
|
"${module_root_dir}/**/*.h*" # Any number of subdirs will be included.
|
||||||
|
"${module_root_dir}/*.inl" # .inl is typically template code and is being treated as headers (it's being included).
|
||||||
|
"${module_root_dir}/**/*.inl"
|
||||||
|
)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# Function to forbid undefined symbols and also verify
|
||||||
|
# 1) Test project with all types of libraries and without undefined symbols can compile successfully
|
||||||
|
# 2) Test project with all types of libraries and undefined symbols can not compile successfully
|
||||||
|
function(forbid_undefined_symbols)
|
||||||
|
unset(TMP)
|
||||||
|
# https://www.unix.com/man-page/linux/1/ld, --no-undefined, Report unresolved symbol references from regular object files.
|
||||||
|
add_linker_flag_if_supported(-Wl,--no-undefined TMP)
|
||||||
|
# https://www.unix.com/man-page/osx/1/ld/, -undefined, Specifies how undefined symbols are to be treated.
|
||||||
|
add_linker_flag_if_supported(-Wl,-undefined,error TMP)
|
||||||
|
string(APPEND CMAKE_SHARED_LINKER_FLAGS ${TMP})
|
||||||
|
string(APPEND CMAKE_MODULE_LINKER_FLAGS ${TMP})
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} PARENT_SCOPE)
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS} PARENT_SCOPE)
|
||||||
|
set(TEST_PROJECT "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_project")
|
||||||
|
foreach(EXPECT IN ITEMS TRUE FALSE)
|
||||||
|
file(REMOVE_RECURSE "${TEST_PROJECT}")
|
||||||
|
file(MAKE_DIRECTORY "${TEST_PROJECT}")
|
||||||
|
file(WRITE "${TEST_PROJECT}/CMakeLists.txt"
|
||||||
|
[=[
|
||||||
|
cmake_minimum_required(VERSION 3.1)
|
||||||
|
project(test)
|
||||||
|
option(EXPECT_SUCCESS "" ON)
|
||||||
|
file(WRITE "${CMAKE_SOURCE_DIR}/incorrect_source.cpp" "void undefined_symbol(); void symbol() { undefined_symbol(); }")
|
||||||
|
if (EXPECT_SUCCESS)
|
||||||
|
file(APPEND "${CMAKE_SOURCE_DIR}/incorrect_source.cpp" " void undefined_symbol() {}; ")
|
||||||
|
endif()
|
||||||
|
add_library(l0 SHARED incorrect_source.cpp)
|
||||||
|
add_library(l1 MODULE incorrect_source.cpp)
|
||||||
|
add_library(l2 STATIC incorrect_source.cpp)
|
||||||
|
add_library(l3 OBJECT incorrect_source.cpp)
|
||||||
|
]=]
|
||||||
|
)
|
||||||
|
try_compile(SUCCESS "${TEST_PROJECT}/build" "${TEST_PROJECT}" test
|
||||||
|
CMAKE_FLAGS
|
||||||
|
"-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}"
|
||||||
|
"-DCMAKE_MODULE_LINKER_FLAGS=${CMAKE_MODULE_LINKER_FLAGS}"
|
||||||
|
"-DEXPECT_SUCCESS=${EXPECT}"
|
||||||
|
)
|
||||||
|
if (NOT ${SUCCESS} STREQUAL ${EXPECT})
|
||||||
|
message(FATAL_ERROR "Undefined symbols test failure: expect(${EXPECT}), success(${SUCCESS})")
|
||||||
|
endif()
|
||||||
|
file(REMOVE_RECURSE "${TEST_PROJECT}")
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
if (NOT (CMAKE_SYSTEM_NAME MATCHES "kOpenBSD.*|OpenBSD.*") AND NOT OSSFUZZ)
|
||||||
|
forbid_undefined_symbols()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (MINGW)
|
||||||
|
function(export_all_symbols)
|
||||||
|
unset(TMP)
|
||||||
|
add_linker_flag_if_supported(-Wl,--export-all-symbols TMP)
|
||||||
|
string(APPEND CMAKE_SHARED_LINKER_FLAGS ${TMP})
|
||||||
|
string(APPEND CMAKE_MODULE_LINKER_FLAGS ${TMP})
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} PARENT_SCOPE)
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
export_all_symbols()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
||||||
message(STATUS "Setting default build type: ${CMAKE_BUILD_TYPE}")
|
message(STATUS "Setting default build type: ${CMAKE_BUILD_TYPE}")
|
||||||
@@ -176,6 +325,16 @@ if(ARCH_ID STREQUAL "s390x")
|
|||||||
set(S390X 1)
|
set(S390X 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(ARCH_ID STREQUAL "riscv64")
|
||||||
|
set(RISCV 1)
|
||||||
|
set(RISCV64 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ARCH_ID STREQUAL "riscv32")
|
||||||
|
set(RISCV 1)
|
||||||
|
set(RISCV32 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32 OR ARM OR PPC64LE OR PPC64 OR PPC)
|
if(WIN32 OR ARM OR PPC64LE OR PPC64 OR PPC)
|
||||||
set(OPT_FLAGS_RELEASE "-O2")
|
set(OPT_FLAGS_RELEASE "-O2")
|
||||||
else()
|
else()
|
||||||
@@ -200,16 +359,16 @@ if(NOT MANUAL_SUBMODULES)
|
|||||||
if (upToDate)
|
if (upToDate)
|
||||||
message(STATUS "Submodule '${relative_path}' is up-to-date")
|
message(STATUS "Submodule '${relative_path}' is up-to-date")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Submodule '${relative_path}' is not up-to-date. Please update all submodules with\ngit submodule update --init --force\nor run cmake with -DMANUAL_SUBMODULES=1\n")
|
message(STATUS "Initializing submodules")
|
||||||
|
execute_process(COMMAND git "submodule" "update" "--init" "--recursive" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
endif()
|
endif()
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
message(STATUS "Checking submodules")
|
message(STATUS "Checking submodules")
|
||||||
check_submodule(external/miniupnp)
|
check_submodule(external/miniupnp)
|
||||||
check_submodule(external/unbound)
|
|
||||||
check_submodule(external/rapidjson)
|
check_submodule(external/rapidjson)
|
||||||
check_submodule(external/trezor-common)
|
#check_submodule(external/trezor-common)
|
||||||
check_submodule(external/randomx)
|
check_submodule(external/randomwow)
|
||||||
check_submodule(external/supercop)
|
check_submodule(external/supercop)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@@ -244,22 +403,10 @@ endif()
|
|||||||
message(STATUS "BOOST_IGNORE_SYSTEM_PATHS defaults to ${BOOST_IGNORE_SYSTEM_PATHS_DEFAULT}")
|
message(STATUS "BOOST_IGNORE_SYSTEM_PATHS defaults to ${BOOST_IGNORE_SYSTEM_PATHS_DEFAULT}")
|
||||||
option(BOOST_IGNORE_SYSTEM_PATHS "Ignore boost system paths for local boost installation" ${BOOST_IGNORE_SYSTEM_PATHS_DEFAULT})
|
option(BOOST_IGNORE_SYSTEM_PATHS "Ignore boost system paths for local boost installation" ${BOOST_IGNORE_SYSTEM_PATHS_DEFAULT})
|
||||||
|
|
||||||
|
|
||||||
if (NOT DEFINED ENV{DEVELOPER_LIBUNBOUND_OLD})
|
|
||||||
message(STATUS "Could not find DEVELOPER_LIBUNBOUND_OLD in env (not required)")
|
|
||||||
elseif ("$ENV{DEVELOPER_LIBUNBOUND_OLD}" EQUAL 1)
|
|
||||||
message(STATUS "Found: env DEVELOPER_LIBUNBOUND_OLD = 1, will use the work around")
|
|
||||||
add_definitions(-DDEVELOPER_LIBUNBOUND_OLD)
|
|
||||||
elseif ("$ENV{DEVELOPER_LIBUNBOUND_OLD}" EQUAL 0)
|
|
||||||
message(STATUS "Found: env DEVELOPER_LIBUNBOUND_OLD = 0")
|
|
||||||
else()
|
|
||||||
message(STATUS "Found: env DEVELOPER_LIBUNBOUND_OLD with bad value. Will NOT use the work around")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
option(BUILD_DOCUMENTATION "Build the Doxygen documentation." ON)
|
option(BUILD_DOCUMENTATION "Build the Doxygen documentation." OFF)
|
||||||
option(BUILD_TESTS "Build tests." OFF)
|
option(BUILD_TESTS "Build tests." OFF)
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set(DEFAULT_BUILD_DEBUG_UTILITIES ON)
|
set(DEFAULT_BUILD_DEBUG_UTILITIES ON)
|
||||||
@@ -315,10 +462,7 @@ endif()
|
|||||||
include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include)
|
include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
include_directories(SYSTEM /usr/include/malloc)
|
cmake_policy(SET CMP0042 NEW)
|
||||||
if(POLICY CMP0042)
|
|
||||||
cmake_policy(SET CMP0042 NEW)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC OR MINGW)
|
if(MSVC OR MINGW)
|
||||||
@@ -329,9 +473,11 @@ endif()
|
|||||||
option(STATIC "Link libraries statically" ${DEFAULT_STATIC})
|
option(STATIC "Link libraries statically" ${DEFAULT_STATIC})
|
||||||
|
|
||||||
# This is a CMake built-in switch that concerns internal libraries
|
# This is a CMake built-in switch that concerns internal libraries
|
||||||
if (NOT DEFINED BUILD_SHARED_LIBS AND NOT STATIC AND CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
set(BUILD_SHARED_LIBS_DEFAULT OFF)
|
||||||
set(BUILD_SHARED_LIBS ON)
|
if (NOT STATIC AND CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
||||||
|
set(BUILD_SHARED_LIBS_DEFAULT ON)
|
||||||
endif()
|
endif()
|
||||||
|
option(BUILD_SHARED_LIBS "Build internal libraries as shared" ${BUILD_SHARED_LIBS_DEFAULT})
|
||||||
|
|
||||||
if (BUILD_SHARED_LIBS)
|
if (BUILD_SHARED_LIBS)
|
||||||
message(STATUS "Building internal libraries with position independent code")
|
message(STATUS "Building internal libraries with position independent code")
|
||||||
@@ -363,6 +509,7 @@ if(STATIC)
|
|||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZMQ_STATIC")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZMQ_STATIC")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
option(SANITIZE "Use ASAN memory sanitizer" OFF)
|
||||||
if(SANITIZE)
|
if(SANITIZE)
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
message(FATAL_ERROR "Cannot sanitize with MSVC")
|
message(FATAL_ERROR "Cannot sanitize with MSVC")
|
||||||
@@ -395,7 +542,7 @@ elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT MINGW)
|
|||||||
set(DEFAULT_STACK_TRACE ON)
|
set(DEFAULT_STACK_TRACE ON)
|
||||||
set(STACK_TRACE_LIB "easylogging++") # for diag output only
|
set(STACK_TRACE_LIB "easylogging++") # for diag output only
|
||||||
set(LIBUNWIND_LIBRARIES "")
|
set(LIBUNWIND_LIBRARIES "")
|
||||||
elseif (ARM AND STATIC)
|
elseif (ARM)
|
||||||
set(DEFAULT_STACK_TRACE OFF)
|
set(DEFAULT_STACK_TRACE OFF)
|
||||||
set(LIBUNWIND_LIBRARIES "")
|
set(LIBUNWIND_LIBRARIES "")
|
||||||
else()
|
else()
|
||||||
@@ -431,7 +578,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)")
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (APPLE AND NOT IOS)
|
if (APPLE AND NOT IOS)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -fvisibility=default -std=c++11")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default")
|
||||||
if (NOT OPENSSL_ROOT_DIR)
|
if (NOT OPENSSL_ROOT_DIR)
|
||||||
EXECUTE_PROCESS(COMMAND brew --prefix openssl
|
EXECUTE_PROCESS(COMMAND brew --prefix openssl
|
||||||
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
||||||
@@ -449,6 +596,10 @@ if(STATIC AND NOT IOS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
list(APPEND OPENSSL_LIBRARIES ws2_32 crypt32)
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(HIDAPI)
|
find_package(HIDAPI)
|
||||||
|
|
||||||
add_definition_if_library_exists(c memset_s "string.h" HAVE_MEMSET_S)
|
add_definition_if_library_exists(c memset_s "string.h" HAVE_MEMSET_S)
|
||||||
@@ -460,6 +611,59 @@ add_definitions(-DAUTO_INITIALIZE_EASYLOGGINGPP)
|
|||||||
set(MONERO_GENERATED_HEADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated_include")
|
set(MONERO_GENERATED_HEADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated_include")
|
||||||
include_directories(${MONERO_GENERATED_HEADERS_DIR})
|
include_directories(${MONERO_GENERATED_HEADERS_DIR})
|
||||||
|
|
||||||
|
# As of OpenBSD 6.8, -march=<anything> breaks the build
|
||||||
|
function(set_default_arch)
|
||||||
|
if (OPENBSD)
|
||||||
|
set(ARCH default)
|
||||||
|
else()
|
||||||
|
set(ARCH native)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(ARCH ${ARCH} CACHE STRING "CPU to build for: -march value or 'default' to not pass -march at all")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
if (NOT (MSVC OR ARCH))
|
||||||
|
set_default_arch()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(COVERAGE "Enable profiling for test coverage report" OFF)
|
||||||
|
if(COVERAGE)
|
||||||
|
message(STATUS "Building with profiling for test coverage report")
|
||||||
|
endif()
|
||||||
|
macro (monero_enable_coverage)
|
||||||
|
if(COVERAGE)
|
||||||
|
foreach(COV_FLAG -fprofile-arcs -ftest-coverage --coverage)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COV_FLAG}")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COV_FLAG}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
function (monero_add_library name)
|
||||||
|
monero_add_library_with_deps(NAME "${name}" SOURCES ${ARGN})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function (monero_add_library_with_deps)
|
||||||
|
cmake_parse_arguments(MONERO_ADD_LIBRARY "" "NAME" "DEPENDS;SOURCES" ${ARGN})
|
||||||
|
source_group("${MONERO_ADD_LIBRARY_NAME}" FILES ${MONERO_ADD_LIBRARY_SOURCES})
|
||||||
|
|
||||||
|
# Define a ("virtual") object library and an actual library that links those
|
||||||
|
# objects together. The virtual libraries can be arbitrarily combined to link
|
||||||
|
# any subset of objects into one library archive. This is used for releasing
|
||||||
|
# libwallet, which combines multiple components.
|
||||||
|
set(objlib obj_${MONERO_ADD_LIBRARY_NAME})
|
||||||
|
add_library(${objlib} OBJECT ${MONERO_ADD_LIBRARY_SOURCES})
|
||||||
|
add_library("${MONERO_ADD_LIBRARY_NAME}" $<TARGET_OBJECTS:${objlib}>)
|
||||||
|
monero_set_target_no_relink("${MONERO_ADD_LIBRARY_NAME}")
|
||||||
|
monero_set_target_strip ("${MONERO_ADD_LIBRARY_NAME}")
|
||||||
|
if (MONERO_ADD_LIBRARY_DEPENDS)
|
||||||
|
add_dependencies(${objlib} ${MONERO_ADD_LIBRARY_DEPENDS})
|
||||||
|
endif()
|
||||||
|
set_property(TARGET "${MONERO_ADD_LIBRARY_NAME}" PROPERTY FOLDER "libs")
|
||||||
|
target_compile_definitions(${objlib}
|
||||||
|
PRIVATE $<TARGET_PROPERTY:${MONERO_ADD_LIBRARY_NAME},INTERFACE_COMPILE_DEFINITIONS>)
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
# Generate header for embedded translations
|
# Generate header for embedded translations
|
||||||
# Generate header for embedded translations, use target toolchain if depends, otherwise use the
|
# Generate header for embedded translations, use target toolchain if depends, otherwise use the
|
||||||
# lrelease and lupdate binaries from the host
|
# lrelease and lupdate binaries from the host
|
||||||
@@ -469,13 +673,12 @@ ExternalProject_Add(generate_translations_header
|
|||||||
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/translations"
|
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/translations"
|
||||||
STAMP_DIR ${LRELEASE_PATH}
|
STAMP_DIR ${LRELEASE_PATH}
|
||||||
CMAKE_ARGS -DLRELEASE_PATH=${LRELEASE_PATH}
|
CMAKE_ARGS -DLRELEASE_PATH=${LRELEASE_PATH}
|
||||||
INSTALL_COMMAND cmake -E echo "")
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "")
|
||||||
include_directories("${CMAKE_CURRENT_BINARY_DIR}/translations")
|
include_directories("${CMAKE_CURRENT_BINARY_DIR}/translations")
|
||||||
add_subdirectory(external)
|
add_subdirectory(external)
|
||||||
|
|
||||||
# Final setup for libunbound
|
# Final setup for libunbound
|
||||||
include_directories(${UNBOUND_INCLUDE})
|
include_directories(${UNBOUND_INCLUDE_DIR})
|
||||||
link_directories(${UNBOUND_LIBRARY_DIRS})
|
|
||||||
|
|
||||||
# Final setup for easylogging++
|
# Final setup for easylogging++
|
||||||
include_directories(${EASYLOGGING_INCLUDE})
|
include_directories(${EASYLOGGING_INCLUDE})
|
||||||
@@ -494,7 +697,7 @@ if (HIDAPI_FOUND)
|
|||||||
add_definitions(-DHAVE_HIDAPI)
|
add_definitions(-DHAVE_HIDAPI)
|
||||||
include_directories(${HIDAPI_INCLUDE_DIR})
|
include_directories(${HIDAPI_INCLUDE_DIR})
|
||||||
link_directories(${LIBHIDAPI_LIBRARY_DIRS})
|
link_directories(${LIBHIDAPI_LIBRARY_DIRS})
|
||||||
else (HIDAPI_FOUND)
|
else()
|
||||||
message(STATUS "Could not find HIDAPI")
|
message(STATUS "Could not find HIDAPI")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -513,9 +716,6 @@ if(MSVC)
|
|||||||
include_directories(SYSTEM src/platform/msc)
|
include_directories(SYSTEM src/platform/msc)
|
||||||
else()
|
else()
|
||||||
include(TestCXXAcceptsFlag)
|
include(TestCXXAcceptsFlag)
|
||||||
if (NOT ARCH)
|
|
||||||
set(ARCH native CACHE STRING "CPU to build for: -march value or 'default' to not pass -march at all")
|
|
||||||
endif()
|
|
||||||
message(STATUS "Building on ${CMAKE_SYSTEM_PROCESSOR} for ${ARCH}")
|
message(STATUS "Building on ${CMAKE_SYSTEM_PROCESSOR} for ${ARCH}")
|
||||||
if(ARCH STREQUAL "default")
|
if(ARCH STREQUAL "default")
|
||||||
set(ARCH_FLAG "")
|
set(ARCH_FLAG "")
|
||||||
@@ -549,7 +749,7 @@ else()
|
|||||||
message(STATUS "AES support explicitly disabled")
|
message(STATUS "AES support explicitly disabled")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_AES")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_AES")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_AES")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_AES")
|
||||||
elseif(NOT ARM AND NOT PPC64LE AND NOT PPC64 AND NOT PPC AND NOT S390X)
|
elseif(NOT ARM AND NOT PPC64LE AND NOT PPC64 AND NOT PPC AND NOT S390X AND NOT RISCV)
|
||||||
message(STATUS "AES support enabled")
|
message(STATUS "AES support enabled")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes")
|
||||||
@@ -557,6 +757,8 @@ else()
|
|||||||
message(STATUS "AES support not available on POWER")
|
message(STATUS "AES support not available on POWER")
|
||||||
elseif(S390X)
|
elseif(S390X)
|
||||||
message(STATUS "AES support not available on s390x")
|
message(STATUS "AES support not available on s390x")
|
||||||
|
elseif(RISCV)
|
||||||
|
message(STATUS "AES support not available on RISC-V")
|
||||||
elseif(ARM6)
|
elseif(ARM6)
|
||||||
message(STATUS "AES support not available on ARMv6")
|
message(STATUS "AES support not available on ARMv6")
|
||||||
elseif(ARM7)
|
elseif(ARM7)
|
||||||
@@ -576,8 +778,8 @@ else()
|
|||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_FLAG}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_FLAG}")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_FLAG}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_FLAG}")
|
||||||
|
|
||||||
set(WARNINGS "-Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized")
|
set(WARNINGS "-Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-deprecated-declarations -Wno-unused-parameter -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized")
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
if(CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
if(ARM)
|
if(ARM)
|
||||||
set(WARNINGS "${WARNINGS} -Wno-error=inline-asm")
|
set(WARNINGS "${WARNINGS} -Wno-error=inline-asm")
|
||||||
endif()
|
endif()
|
||||||
@@ -593,32 +795,26 @@ else()
|
|||||||
set(USE_LTO_DEFAULT false)
|
set(USE_LTO_DEFAULT false)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,10485760")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,10485760")
|
||||||
if(NOT BUILD_64)
|
if(NOT BUILD_64)
|
||||||
add_definitions(-DWINVER=0x0501 -D_WIN32_WINNT=0x0501)
|
add_definitions(-DWINVER=0x0600 -D_WIN32_WINNT=0x0600)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes")
|
set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes")
|
||||||
set(CXX_WARNINGS "-Wno-reorder -Wno-missing-field-initializers")
|
set(CXX_WARNINGS "-Wno-reorder -Wno-missing-field-initializers")
|
||||||
try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-static-assert.c" COMPILE_DEFINITIONS "-std=c11")
|
try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-static-assert.c" CMAKE_FLAGS -DCMAKE_C_STANDARD=11)
|
||||||
if(STATIC_ASSERT_RES)
|
if(STATIC_ASSERT_RES)
|
||||||
set(STATIC_ASSERT_FLAG "")
|
set(STATIC_ASSERT_FLAG "")
|
||||||
else()
|
else()
|
||||||
set(STATIC_ASSERT_FLAG "-Dstatic_assert=_Static_assert")
|
set(STATIC_ASSERT_FLAG "-Dstatic_assert=_Static_assert")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
try_compile(STATIC_ASSERT_CPP_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-static-assert.cpp" COMPILE_DEFINITIONS "-std=c++11")
|
try_compile(STATIC_ASSERT_CPP_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-static-assert.cpp" CMAKE_FLAGS -DCMAKE_CXX_STANDARD=11)
|
||||||
if(STATIC_ASSERT_CPP_RES)
|
if(STATIC_ASSERT_CPP_RES)
|
||||||
set(STATIC_ASSERT_CPP_FLAG "")
|
set(STATIC_ASSERT_CPP_FLAG "")
|
||||||
else()
|
else()
|
||||||
set(STATIC_ASSERT_CPP_FLAG "-Dstatic_assert=_Static_assert")
|
set(STATIC_ASSERT_CPP_FLAG "-Dstatic_assert=_Static_assert")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(COVERAGE "Enable profiling for test coverage report" 0)
|
monero_enable_coverage()
|
||||||
|
|
||||||
if(COVERAGE)
|
|
||||||
message(STATUS "Building with profiling for test coverage report")
|
|
||||||
set(COVERAGE_FLAGS "-fprofile-arcs -ftest-coverage --coverage")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# With GCC 6.1.1 the compiled binary malfunctions due to aliasing. Until that
|
# With GCC 6.1.1 the compiled binary malfunctions due to aliasing. Until that
|
||||||
# is fixed in the code (Issue #847), force compiler to be conservative.
|
# is fixed in the code (Issue #847), force compiler to be conservative.
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing")
|
||||||
@@ -661,10 +857,16 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# linker
|
# linker
|
||||||
if (NOT SANITIZE AND NOT OSSFUZZ AND NOT (WIN32 AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS 9.1)))
|
if (NOT SANITIZE AND NOT OSSFUZZ AND NOT (WIN32 AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND (CMAKE_C_COMPILER_VERSION VERSION_LESS 9.1 OR NOT STATIC))))
|
||||||
# PIE executables randomly crash at startup with ASAN
|
# PIE executables randomly crash at startup with ASAN
|
||||||
# Windows binaries die on startup with PIE when compiled with GCC <9.x
|
# Windows binaries die on startup with PIE when compiled with GCC <9.x
|
||||||
add_linker_flag_if_supported(-pie LD_SECURITY_FLAGS)
|
# Windows dynamically-linked binaries die on startup with PIE regardless of GCC version
|
||||||
|
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
||||||
|
# Clang does not support -pie flag
|
||||||
|
add_linker_flag_if_supported("-Wl,-pie" LD_SECURITY_FLAGS)
|
||||||
|
else()
|
||||||
|
add_linker_flag_if_supported("-pie" LD_SECURITY_FLAGS)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
add_linker_flag_if_supported(-Wl,-z,relro LD_SECURITY_FLAGS)
|
add_linker_flag_if_supported(-Wl,-z,relro LD_SECURITY_FLAGS)
|
||||||
add_linker_flag_if_supported(-Wl,-z,now LD_SECURITY_FLAGS)
|
add_linker_flag_if_supported(-Wl,-z,now LD_SECURITY_FLAGS)
|
||||||
@@ -690,12 +892,19 @@ else()
|
|||||||
add_linker_flag_if_supported(-Wl,--high-entropy-va LD_SECURITY_FLAGS)
|
add_linker_flag_if_supported(-Wl,--high-entropy-va LD_SECURITY_FLAGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Warnings, that when ignored are so severe, that they can segfault or even UB any application.
|
||||||
|
# Treat them as errors.
|
||||||
|
add_c_flag_if_supported( -Werror=switch C_SECURITY_FLAGS)
|
||||||
|
add_cxx_flag_if_supported(-Werror=switch CXX_SECURITY_FLAGS)
|
||||||
|
add_c_flag_if_supported( -Werror=return-type C_SECURITY_FLAGS)
|
||||||
|
add_cxx_flag_if_supported(-Werror=return-type CXX_SECURITY_FLAGS)
|
||||||
|
|
||||||
message(STATUS "Using C security hardening flags: ${C_SECURITY_FLAGS}")
|
message(STATUS "Using C security hardening flags: ${C_SECURITY_FLAGS}")
|
||||||
message(STATUS "Using C++ security hardening flags: ${CXX_SECURITY_FLAGS}")
|
message(STATUS "Using C++ security hardening flags: ${CXX_SECURITY_FLAGS}")
|
||||||
message(STATUS "Using linker security hardening flags: ${LD_SECURITY_FLAGS}")
|
message(STATUS "Using linker security hardening flags: ${LD_SECURITY_FLAGS}")
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${COVERAGE_FLAGS} ${PIC_FLAG} ${C_SECURITY_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${PIC_FLAG} ${C_SECURITY_FLAGS}")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_CPP_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${COVERAGE_FLAGS} ${PIC_FLAG} ${CXX_SECURITY_FLAGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_CPP_FLAG} ${WARNINGS} ${CXX_WARNINGS} ${PIC_FLAG} ${CXX_SECURITY_FLAGS}")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS} ${LD_BACKCOMPAT_FLAGS}")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS} ${LD_BACKCOMPAT_FLAGS}")
|
||||||
|
|
||||||
# With GCC 6.1.1 the compiled binary malfunctions due to aliasing. Until that
|
# With GCC 6.1.1 the compiled binary malfunctions due to aliasing. Until that
|
||||||
@@ -799,11 +1008,6 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(DEBUG_FLAGS "-g3")
|
set(DEBUG_FLAGS "-g3")
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8))
|
|
||||||
set(DEBUG_FLAGS "${DEBUG_FLAGS} -Og ")
|
|
||||||
else()
|
|
||||||
set(DEBUG_FLAGS "${DEBUG_FLAGS} -O0 ")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# At least some CLANGs default to not enough for monero
|
# At least some CLANGs default to not enough for monero
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=900")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=900")
|
||||||
@@ -813,7 +1017,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
set(USE_LTO ${USE_LTO_DEFAULT} CACHE BOOL "Use Link-Time Optimization (Release mode only)")
|
set(USE_LTO ${USE_LTO_DEFAULT} CACHE BOOL "Use Link-Time Optimization (Release mode only)")
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
# There is a clang bug that does not allow to compile code that uses AES-NI intrinsics if -flto is enabled, so explicitly disable
|
# There is a clang bug that does not allow to compile code that uses AES-NI intrinsics if -flto is enabled, so explicitly disable
|
||||||
set(USE_LTO false)
|
set(USE_LTO false)
|
||||||
endif()
|
endif()
|
||||||
@@ -873,6 +1077,7 @@ if(STATIC)
|
|||||||
set(Boost_USE_STATIC_RUNTIME ON)
|
set(Boost_USE_STATIC_RUNTIME ON)
|
||||||
endif()
|
endif()
|
||||||
find_package(Boost 1.58 QUIET REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options locale)
|
find_package(Boost 1.58 QUIET REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options locale)
|
||||||
|
add_definitions(-DBOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
|
||||||
|
|
||||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ${OLD_LIB_SUFFIXES})
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ${OLD_LIB_SUFFIXES})
|
||||||
if(NOT Boost_FOUND)
|
if(NOT Boost_FOUND)
|
||||||
@@ -920,10 +1125,12 @@ list(APPEND EXTRA_LIBRARIES ${CMAKE_DL_LIBS})
|
|||||||
if (HIDAPI_FOUND OR LibUSB_COMPILE_TEST_PASSED)
|
if (HIDAPI_FOUND OR LibUSB_COMPILE_TEST_PASSED)
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
if(DEPENDS)
|
if(DEPENDS)
|
||||||
list(APPEND EXTRA_LIBRARIES "-framework Foundation -framework IOKit")
|
list(APPEND EXTRA_LIBRARIES "-framework Foundation -framework AppKit -framework IOKit")
|
||||||
else()
|
else()
|
||||||
find_library(COREFOUNDATION CoreFoundation)
|
find_library(COREFOUNDATION CoreFoundation)
|
||||||
|
find_library(APPKIT AppKit)
|
||||||
find_library(IOKIT IOKit)
|
find_library(IOKIT IOKit)
|
||||||
|
list(APPEND EXTRA_LIBRARIES ${APPKIT})
|
||||||
list(APPEND EXTRA_LIBRARIES ${IOKIT})
|
list(APPEND EXTRA_LIBRARIES ${IOKIT})
|
||||||
list(APPEND EXTRA_LIBRARIES ${COREFOUNDATION})
|
list(APPEND EXTRA_LIBRARIES ${COREFOUNDATION})
|
||||||
endif()
|
endif()
|
||||||
@@ -933,7 +1140,9 @@ if (HIDAPI_FOUND OR LibUSB_COMPILE_TEST_PASSED)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_READLINE "Build with GNU readline support." ON)
|
if(NOT OPENBSD)
|
||||||
|
option(USE_READLINE "Build with GNU readline support." ON)
|
||||||
|
endif()
|
||||||
if(USE_READLINE AND NOT DEPENDS)
|
if(USE_READLINE AND NOT DEPENDS)
|
||||||
find_package(Readline)
|
find_package(Readline)
|
||||||
if(READLINE_FOUND AND GNU_READLINE_FOUND)
|
if(READLINE_FOUND AND GNU_READLINE_FOUND)
|
||||||
@@ -958,7 +1167,7 @@ if(ANDROID)
|
|||||||
set(ATOMIC libatomic.a)
|
set(ATOMIC libatomic.a)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=user-defined-warnings")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=user-defined-warnings")
|
||||||
endif()
|
endif()
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND ARCH_WIDTH EQUAL "32" AND NOT IOS AND NOT FREEBSD)
|
if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND ARCH_WIDTH EQUAL "32" AND NOT IOS AND NOT FREEBSD)
|
||||||
find_library(ATOMIC atomic)
|
find_library(ATOMIC atomic)
|
||||||
if (ATOMIC_FOUND)
|
if (ATOMIC_FOUND)
|
||||||
list(APPEND EXTRA_LIBRARIES ${ATOMIC})
|
list(APPEND EXTRA_LIBRARIES ${ATOMIC})
|
||||||
@@ -969,8 +1178,12 @@ find_path(ZMQ_INCLUDE_PATH zmq.h)
|
|||||||
find_library(ZMQ_LIB zmq)
|
find_library(ZMQ_LIB zmq)
|
||||||
find_library(PGM_LIBRARY pgm)
|
find_library(PGM_LIBRARY pgm)
|
||||||
find_library(NORM_LIBRARY norm)
|
find_library(NORM_LIBRARY norm)
|
||||||
|
find_library(GSSAPI_LIBRARY gssapi_krb5)
|
||||||
find_library(PROTOLIB_LIBRARY protolib)
|
find_library(PROTOLIB_LIBRARY protolib)
|
||||||
find_library(SODIUM_LIBRARY sodium)
|
find_library(SODIUM_LIBRARY sodium)
|
||||||
|
find_library(BSD_LIBRARY bsd)
|
||||||
|
find_library(MD_LIBRARY md)
|
||||||
|
find_library(PROTOKIT_LIBRARY protokit)
|
||||||
|
|
||||||
if(NOT ZMQ_INCLUDE_PATH)
|
if(NOT ZMQ_INCLUDE_PATH)
|
||||||
message(FATAL_ERROR "Could not find required header zmq.h")
|
message(FATAL_ERROR "Could not find required header zmq.h")
|
||||||
@@ -984,12 +1197,24 @@ endif()
|
|||||||
if(NORM_LIBRARY)
|
if(NORM_LIBRARY)
|
||||||
set(ZMQ_LIB "${ZMQ_LIB};${NORM_LIBRARY}")
|
set(ZMQ_LIB "${ZMQ_LIB};${NORM_LIBRARY}")
|
||||||
endif()
|
endif()
|
||||||
|
if(GSSAPI_LIBRARY)
|
||||||
|
set(ZMQ_LIB "${ZMQ_LIB};${GSSAPI_LIBRARY}")
|
||||||
|
endif()
|
||||||
if(PROTOLIB_LIBRARY)
|
if(PROTOLIB_LIBRARY)
|
||||||
set(ZMQ_LIB "${ZMQ_LIB};${PROTOLIB_LIBRARY}")
|
set(ZMQ_LIB "${ZMQ_LIB};${PROTOLIB_LIBRARY}")
|
||||||
endif()
|
endif()
|
||||||
if(SODIUM_LIBRARY)
|
if(SODIUM_LIBRARY)
|
||||||
set(ZMQ_LIB "${ZMQ_LIB};${SODIUM_LIBRARY}")
|
set(ZMQ_LIB "${ZMQ_LIB};${SODIUM_LIBRARY}")
|
||||||
endif()
|
endif()
|
||||||
|
if(BSD_LIBRARY)
|
||||||
|
set(ZMQ_LIB "${ZMQ_LIB};${BSD_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
if(MD_LIBRARY)
|
||||||
|
set(ZMQ_LIB "${ZMQ_LIB};${MD_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
if(PROTOKIT_LIBRARY)
|
||||||
|
set(ZMQ_LIB "${ZMQ_LIB};${PROTOKIT_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
include(external/supercop/functions.cmake) # place after setting flags and before src directory inclusion
|
include(external/supercop/functions.cmake) # place after setting flags and before src directory inclusion
|
||||||
add_subdirectory(contrib)
|
add_subdirectory(contrib)
|
||||||
@@ -1034,13 +1259,6 @@ endif()
|
|||||||
# when ON - will install libwallet_merged into "lib"
|
# when ON - will install libwallet_merged into "lib"
|
||||||
option(BUILD_GUI_DEPS "Build GUI dependencies." OFF)
|
option(BUILD_GUI_DEPS "Build GUI dependencies." OFF)
|
||||||
|
|
||||||
# This is not nice, distribution packagers should not enable this, but depend
|
|
||||||
# on libunbound shipped with their distribution instead
|
|
||||||
option(INSTALL_VENDORED_LIBUNBOUND "Install libunbound binary built from source vendored with this repo." OFF)
|
|
||||||
|
|
||||||
|
|
||||||
CHECK_C_COMPILER_FLAG(-std=c11 HAVE_C11)
|
|
||||||
|
|
||||||
find_package(PythonInterp)
|
find_package(PythonInterp)
|
||||||
find_program(iwyu_tool_path NAMES iwyu_tool.py iwyu_tool)
|
find_program(iwyu_tool_path NAMES iwyu_tool.py iwyu_tool)
|
||||||
if (iwyu_tool_path AND PYTHONINTERP_FOUND)
|
if (iwyu_tool_path AND PYTHONINTERP_FOUND)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Portions Copyright (c) 2017-2020, The Monero Project
|
# Portions Copyright (c) 2017-2022, The Monero Project
|
||||||
# This file is based off of the https://code.google.com/archive/p/ios-cmake/
|
# This file is based off of the https://code.google.com/archive/p/ios-cmake/
|
||||||
# It has been altered for Monero iOS development
|
# It has been altered for Monero iOS development
|
||||||
#
|
#
|
||||||
|
|||||||
206
Dockerfile
206
Dockerfile
@@ -1,212 +1,66 @@
|
|||||||
# Multistage docker build, requires docker 17.05
|
# Multistage docker build, requires docker 17.05
|
||||||
|
|
||||||
# builder stage
|
# builder stage
|
||||||
FROM ubuntu:16.04 as builder
|
FROM ubuntu:20.04 as builder
|
||||||
|
|
||||||
RUN set -ex && \
|
RUN set -ex && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get --no-install-recommends --yes install \
|
DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends --yes install \
|
||||||
ca-certificates \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
make \
|
|
||||||
pkg-config \
|
|
||||||
graphviz \
|
|
||||||
doxygen \
|
|
||||||
git \
|
|
||||||
curl \
|
|
||||||
libtool-bin \
|
|
||||||
autoconf \
|
|
||||||
automake \
|
automake \
|
||||||
bzip2 \
|
autotools-dev \
|
||||||
xsltproc \
|
bsdmainutils \
|
||||||
gperf \
|
build-essential \
|
||||||
unzip
|
ca-certificates \
|
||||||
|
ccache \
|
||||||
WORKDIR /usr/local
|
cmake \
|
||||||
|
curl \
|
||||||
ENV CFLAGS='-fPIC'
|
git \
|
||||||
ENV CXXFLAGS='-fPIC'
|
libtool \
|
||||||
|
pkg-config \
|
||||||
#Cmake
|
gperf
|
||||||
ARG CMAKE_VERSION=3.14.6
|
|
||||||
ARG CMAKE_VERSION_DOT=v3.14
|
|
||||||
ARG CMAKE_HASH=4e8ea11cabe459308671b476469eace1622e770317a15951d7b55a82ccaaccb9
|
|
||||||
RUN set -ex \
|
|
||||||
&& curl -s -O https://cmake.org/files/${CMAKE_VERSION_DOT}/cmake-${CMAKE_VERSION}.tar.gz \
|
|
||||||
&& echo "${CMAKE_HASH} cmake-${CMAKE_VERSION}.tar.gz" | sha256sum -c \
|
|
||||||
&& tar -xzf cmake-${CMAKE_VERSION}.tar.gz \
|
|
||||||
&& cd cmake-${CMAKE_VERSION} \
|
|
||||||
&& ./configure \
|
|
||||||
&& make \
|
|
||||||
&& make install
|
|
||||||
|
|
||||||
## Boost
|
|
||||||
ARG BOOST_VERSION=1_70_0
|
|
||||||
ARG BOOST_VERSION_DOT=1.70.0
|
|
||||||
ARG BOOST_HASH=430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778
|
|
||||||
RUN set -ex \
|
|
||||||
&& curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \
|
|
||||||
&& echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
|
|
||||||
&& tar -xvf boost_${BOOST_VERSION}.tar.bz2 \
|
|
||||||
&& cd boost_${BOOST_VERSION} \
|
|
||||||
&& ./bootstrap.sh \
|
|
||||||
&& ./b2 --build-type=minimal link=static runtime-link=static --with-chrono --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization --with-system --with-thread --with-locale threading=multi threadapi=pthread cflags="$CFLAGS" cxxflags="$CXXFLAGS" stage
|
|
||||||
ENV BOOST_ROOT /usr/local/boost_${BOOST_VERSION}
|
|
||||||
|
|
||||||
# OpenSSL
|
|
||||||
ARG OPENSSL_VERSION=1.1.1g
|
|
||||||
ARG OPENSSL_HASH=ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46
|
|
||||||
RUN set -ex \
|
|
||||||
&& curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
|
|
||||||
&& echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
|
|
||||||
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
|
|
||||||
&& cd openssl-${OPENSSL_VERSION} \
|
|
||||||
&& ./Configure linux-x86_64 no-shared --static "$CFLAGS" \
|
|
||||||
&& make build_generated \
|
|
||||||
&& make libcrypto.a \
|
|
||||||
&& make install
|
|
||||||
ENV OPENSSL_ROOT_DIR=/usr/local/openssl-${OPENSSL_VERSION}
|
|
||||||
|
|
||||||
# ZMQ
|
|
||||||
ARG ZMQ_VERSION=v4.3.2
|
|
||||||
ARG ZMQ_HASH=a84ffa12b2eb3569ced199660bac5ad128bff1f0
|
|
||||||
RUN set -ex \
|
|
||||||
&& git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \
|
|
||||||
&& cd libzmq \
|
|
||||||
&& test `git rev-parse HEAD` = ${ZMQ_HASH} || exit 1 \
|
|
||||||
&& ./autogen.sh \
|
|
||||||
&& ./configure --enable-static --disable-shared \
|
|
||||||
&& make \
|
|
||||||
&& make install \
|
|
||||||
&& ldconfig
|
|
||||||
|
|
||||||
# zmq.hpp
|
|
||||||
ARG CPPZMQ_VERSION=v4.4.1
|
|
||||||
ARG CPPZMQ_HASH=f5b36e563598d48fcc0d82e589d3596afef945ae
|
|
||||||
RUN set -ex \
|
|
||||||
&& git clone https://github.com/zeromq/cppzmq.git -b ${CPPZMQ_VERSION} \
|
|
||||||
&& cd cppzmq \
|
|
||||||
&& test `git rev-parse HEAD` = ${CPPZMQ_HASH} || exit 1 \
|
|
||||||
&& mv *.hpp /usr/local/include
|
|
||||||
|
|
||||||
# Readline
|
|
||||||
ARG READLINE_VERSION=8.0
|
|
||||||
ARG READLINE_HASH=e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461
|
|
||||||
RUN set -ex \
|
|
||||||
&& curl -s -O https://ftp.gnu.org/gnu/readline/readline-${READLINE_VERSION}.tar.gz \
|
|
||||||
&& echo "${READLINE_HASH} readline-${READLINE_VERSION}.tar.gz" | sha256sum -c \
|
|
||||||
&& tar -xzf readline-${READLINE_VERSION}.tar.gz \
|
|
||||||
&& cd readline-${READLINE_VERSION} \
|
|
||||||
&& ./configure \
|
|
||||||
&& make \
|
|
||||||
&& make install
|
|
||||||
|
|
||||||
# Sodium
|
|
||||||
ARG SODIUM_VERSION=1.0.18
|
|
||||||
ARG SODIUM_HASH=4f5e89fa84ce1d178a6765b8b46f2b6f91216677
|
|
||||||
RUN set -ex \
|
|
||||||
&& git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \
|
|
||||||
&& cd libsodium \
|
|
||||||
&& test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \
|
|
||||||
&& ./autogen.sh \
|
|
||||||
&& ./configure \
|
|
||||||
&& make \
|
|
||||||
&& make check \
|
|
||||||
&& make install
|
|
||||||
|
|
||||||
# Udev
|
|
||||||
ARG UDEV_VERSION=v3.2.8
|
|
||||||
ARG UDEV_HASH=d69f3f28348123ab7fa0ebac63ec2fd16800c5e0
|
|
||||||
RUN set -ex \
|
|
||||||
&& git clone https://github.com/gentoo/eudev -b ${UDEV_VERSION} \
|
|
||||||
&& cd eudev \
|
|
||||||
&& test `git rev-parse HEAD` = ${UDEV_HASH} || exit 1 \
|
|
||||||
&& ./autogen.sh \
|
|
||||||
&& ./configure --disable-gudev --disable-introspection --disable-hwdb --disable-manpages --disable-shared \
|
|
||||||
&& make \
|
|
||||||
&& make install
|
|
||||||
|
|
||||||
# Libusb
|
|
||||||
ARG USB_VERSION=v1.0.22
|
|
||||||
ARG USB_HASH=0034b2afdcdb1614e78edaa2a9e22d5936aeae5d
|
|
||||||
RUN set -ex \
|
|
||||||
&& git clone https://github.com/libusb/libusb.git -b ${USB_VERSION} \
|
|
||||||
&& cd libusb \
|
|
||||||
&& test `git rev-parse HEAD` = ${USB_HASH} || exit 1 \
|
|
||||||
&& ./autogen.sh \
|
|
||||||
&& ./configure --disable-shared \
|
|
||||||
&& make \
|
|
||||||
&& make install
|
|
||||||
|
|
||||||
# Hidapi
|
|
||||||
ARG HIDAPI_VERSION=hidapi-0.8.0-rc1
|
|
||||||
ARG HIDAPI_HASH=40cf516139b5b61e30d9403a48db23d8f915f52c
|
|
||||||
RUN set -ex \
|
|
||||||
&& git clone https://github.com/signal11/hidapi -b ${HIDAPI_VERSION} \
|
|
||||||
&& cd hidapi \
|
|
||||||
&& test `git rev-parse HEAD` = ${HIDAPI_HASH} || exit 1 \
|
|
||||||
&& ./bootstrap \
|
|
||||||
&& ./configure --enable-static --disable-shared \
|
|
||||||
&& make \
|
|
||||||
&& make install
|
|
||||||
|
|
||||||
# Protobuf
|
|
||||||
ARG PROTOBUF_VERSION=v3.7.1
|
|
||||||
ARG PROTOBUF_HASH=6973c3a5041636c1d8dc5f7f6c8c1f3c15bc63d6
|
|
||||||
RUN set -ex \
|
|
||||||
&& git clone https://github.com/protocolbuffers/protobuf -b ${PROTOBUF_VERSION} \
|
|
||||||
&& cd protobuf \
|
|
||||||
&& test `git rev-parse HEAD` = ${PROTOBUF_HASH} || exit 1 \
|
|
||||||
&& git submodule update --init --recursive \
|
|
||||||
&& ./autogen.sh \
|
|
||||||
&& ./configure --enable-static --disable-shared \
|
|
||||||
&& make \
|
|
||||||
&& make install \
|
|
||||||
&& ldconfig
|
|
||||||
|
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
ENV USE_SINGLE_BUILDDIR=1
|
|
||||||
ARG NPROC
|
ARG NPROC
|
||||||
RUN set -ex && \
|
RUN set -ex && \
|
||||||
git submodule init && git submodule update && \
|
git submodule init && git submodule update && \
|
||||||
rm -rf build && \
|
rm -rf build && \
|
||||||
if [ -z "$NPROC" ] ; \
|
if [ -z "$NPROC" ] ; \
|
||||||
then make -j$(nproc) release-static ; \
|
then make -j$(nproc) depends target=x86_64-linux-gnu ; \
|
||||||
else make -j$NPROC release-static ; \
|
else make -j$NPROC depends target=x86_64-linux-gnu ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# runtime stage
|
# runtime stage
|
||||||
FROM ubuntu:16.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
RUN set -ex && \
|
RUN set -ex && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get --no-install-recommends --yes install ca-certificates && \
|
apt-get --no-install-recommends --yes install ca-certificates && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf /var/lib/apt
|
rm -rf /var/lib/apt
|
||||||
COPY --from=builder /src/build/release/bin /usr/local/bin/
|
COPY --from=builder /src/build/x86_64-linux-gnu/release/bin /usr/local/bin/
|
||||||
|
|
||||||
# Create monero user
|
# Create wownero user
|
||||||
RUN adduser --system --group --disabled-password monero && \
|
RUN adduser --system --group --disabled-password wownero && \
|
||||||
mkdir -p /wallet /home/monero/.bitmonero && \
|
mkdir -p /wallet /home/wownero/.wownero && \
|
||||||
chown -R monero:monero /home/monero/.bitmonero && \
|
chown -R wownero:wownero /home/wownero/.wownero && \
|
||||||
chown -R monero:monero /wallet
|
chown -R wownero:wownero /wallet
|
||||||
|
|
||||||
# Contains the blockchain
|
# Contains the blockchain
|
||||||
VOLUME /home/monero/.bitmonero
|
VOLUME /home/wownero/.wownero
|
||||||
|
|
||||||
# Generate your wallet via accessing the container and run:
|
# Generate your wallet via accessing the container and run:
|
||||||
# cd /wallet
|
# cd /wallet
|
||||||
# monero-wallet-cli
|
# wownero-wallet-cli
|
||||||
VOLUME /wallet
|
VOLUME /wallet
|
||||||
|
|
||||||
EXPOSE 18080
|
EXPOSE 34567
|
||||||
EXPOSE 18081
|
EXPOSE 34568
|
||||||
|
|
||||||
# switch to user monero
|
# switch to user wownero
|
||||||
USER monero
|
USER wownero
|
||||||
|
|
||||||
ENTRYPOINT ["monerod", "--p2p-bind-ip=0.0.0.0", "--p2p-bind-port=18080", "--rpc-bind-ip=0.0.0.0", "--rpc-bind-port=18081", "--non-interactive", "--confirm-external-bind"]
|
ENTRYPOINT ["wownerod"]
|
||||||
|
CMD ["--p2p-bind-ip=0.0.0.0", "--p2p-bind-port=34567", "--rpc-bind-ip=0.0.0.0", "--rpc-bind-port=34568", "--non-interactive", "--confirm-external-bind"]
|
||||||
|
|
||||||
|
|||||||
10
Doxyfile
10
Doxyfile
@@ -68,7 +68,7 @@ OUTPUT_DIRECTORY = doc
|
|||||||
# performance problems for the file system.
|
# performance problems for the file system.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
CREATE_SUBDIRS = NO
|
CREATE_SUBDIRS = YES
|
||||||
|
|
||||||
# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
|
# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
|
||||||
# characters to appear in the names of generated files. If set to NO, non-ASCII
|
# characters to appear in the names of generated files. If set to NO, non-ASCII
|
||||||
@@ -452,7 +452,7 @@ EXTRACT_LOCAL_METHODS = NO
|
|||||||
# are hidden.
|
# are hidden.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
EXTRACT_ANON_NSPACES = YES
|
EXTRACT_ANON_NSPACES = NO
|
||||||
|
|
||||||
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
|
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
|
||||||
# undocumented members inside documented classes or files. If set to NO these
|
# undocumented members inside documented classes or files. If set to NO these
|
||||||
@@ -754,7 +754,7 @@ WARN_LOGFILE =
|
|||||||
# spaces.
|
# spaces.
|
||||||
# Note: If this tag is empty the current directory is searched.
|
# Note: If this tag is empty the current directory is searched.
|
||||||
|
|
||||||
INPUT = src
|
INPUT = .
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||||
@@ -805,7 +805,7 @@ EXCLUDE_SYMLINKS = NO
|
|||||||
# Note that the wildcards are matched against the file with absolute path, so to
|
# Note that the wildcards are matched against the file with absolute path, so to
|
||||||
# exclude all test directories for example use the pattern */test/*
|
# exclude all test directories for example use the pattern */test/*
|
||||||
|
|
||||||
EXCLUDE_PATTERNS =
|
EXCLUDE_PATTERNS = */build/* */contrib/depends/*
|
||||||
|
|
||||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||||
# (namespaces, classes, functions, etc.) that should be excluded from the
|
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||||
@@ -1552,7 +1552,7 @@ EXTRA_SEARCH_MAPPINGS =
|
|||||||
# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
|
# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
|
||||||
# The default value is: YES.
|
# The default value is: YES.
|
||||||
|
|
||||||
GENERATE_LATEX = YES
|
GENERATE_LATEX = NO
|
||||||
|
|
||||||
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
|
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
|
||||||
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2014-2020, The Monero Project
|
Copyright (c) 2014-2022, The Monero Project
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
|
|||||||
26
Makefile
26
Makefile
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@@ -96,15 +96,15 @@ release: cmake-release
|
|||||||
|
|
||||||
release-test:
|
release-test:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release $(topdir) && $(MAKE) && $(MAKE) test
|
cd $(builddir)/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE) && $(MAKE) test
|
||||||
|
|
||||||
release-all:
|
release-all:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D USE_DEVICE_TREZOR=OFF -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static:
|
release-static:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D USE_DEVICE_TREZOR=OFF -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)
|
||||||
|
|
||||||
coverage:
|
coverage:
|
||||||
mkdir -p $(builddir)/debug
|
mkdir -p $(builddir)/debug
|
||||||
@@ -114,41 +114,41 @@ coverage:
|
|||||||
|
|
||||||
release-static-linux-armv6:
|
release-static-linux-armv6:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv6zk" -D STATIC=ON -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="linux-armv6" $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv6zk" -D STATIC=ON -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="linux-armv6" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-linux-armv7:
|
release-static-linux-armv7:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D STATIC=ON -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="linux-armv7" $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D STATIC=ON -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="linux-armv7" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-android-armv7:
|
release-static-android-armv7:
|
||||||
mkdir -p $(builddir)/release/translations
|
mkdir -p $(builddir)/release/translations
|
||||||
cd $(builddir)/release/translations && cmake ../../../translations && $(MAKE)
|
cd $(builddir)/release/translations && cmake ../../../translations && $(MAKE)
|
||||||
cd $(builddir)/release && CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ cmake -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D STATIC=ON -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D INSTALL_VENDORED_LIBUNBOUND=ON -D BUILD_TAG="android-armv7" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${ANDROID_STANDALONE_TOOLCHAIN_PATH}" -D CMAKE_ANDROID_ARM_MODE=ON -D CMAKE_ANDROID_ARCH_ABI="armeabi-v7a" ../.. && $(MAKE)
|
cd $(builddir)/release && CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ cmake -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D STATIC=ON -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Release -D ANDROID=true -D BUILD_TAG="android-armv7" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${ANDROID_STANDALONE_TOOLCHAIN_PATH}" -D CMAKE_ANDROID_ARM_MODE=ON -D CMAKE_ANDROID_ARCH_ABI="armeabi-v7a" ../.. && $(MAKE)
|
||||||
|
|
||||||
release-static-android-armv8:
|
release-static-android-armv8:
|
||||||
mkdir -p $(builddir)/release/translations
|
mkdir -p $(builddir)/release/translations
|
||||||
cd $(builddir)/release/translations && cmake ../../../translations && $(MAKE)
|
cd $(builddir)/release/translations && cmake ../../../translations && $(MAKE)
|
||||||
cd $(builddir)/release && CC=aarch64-linux-android-clang CXX=aarch64-linux-android-clang++ cmake -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D INSTALL_VENDORED_LIBUNBOUND=ON -D BUILD_TAG="android-armv8" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${ANDROID_STANDALONE_TOOLCHAIN_PATH}" -D CMAKE_ANDROID_ARCH_ABI="arm64-v8a" ../.. && $(MAKE)
|
cd $(builddir)/release && CC=aarch64-linux-android-clang CXX=aarch64-linux-android-clang++ cmake -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D ANDROID=true -D BUILD_TAG="android-armv8" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${ANDROID_STANDALONE_TOOLCHAIN_PATH}" -D CMAKE_ANDROID_ARCH_ABI="arm64-v8a" ../.. && $(MAKE)
|
||||||
|
|
||||||
release-static-linux-armv8:
|
release-static-linux-armv8:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="linux-armv8" $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="linux-armv8" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-linux-x86_64:
|
release-static-linux-x86_64:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="linux-x64" $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="linux-x64" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-freebsd-x86_64:
|
release-static-freebsd-x86_64:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="freebsd-x64" $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="freebsd-x64" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-mac-x86_64:
|
release-static-mac-x86_64:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="mac-x64" $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="mac-x64" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-linux-i686:
|
release-static-linux-i686:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="linux-x86" $(topdir) && $(MAKE)
|
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="linux-x86" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-win64:
|
release-static-win64:
|
||||||
mkdir -p $(builddir)/release
|
mkdir -p $(builddir)/release
|
||||||
|
|||||||
881
README.md
881
README.md
@@ -1,632 +1,162 @@
|
|||||||
# Monero
|
# ~~Mo~~Wownero - Such privacy! Many coins! Wow! 🐕
|
||||||
|
|
||||||
Copyright (c) 2014-2020 The Monero Project.
|
Copyright (c) 2014-2023 The Monero Project.
|
||||||
Portions Copyright (c) 2012-2013 The Cryptonote developers.
|
Portions Copyright (c) 2012-2013 The Cryptonote developers.
|
||||||
|
|
||||||
## Table of Contents
|
## Resources
|
||||||
|
|
||||||
- [Development resources](#development-resources)
|
- IRC: [OFTC #wownero](https://webchat.oftc.net/?channels=wownero)
|
||||||
- [Vulnerability response](#vulnerability-response)
|
- Web: [wownero.org](https://wownero.org)
|
||||||
- [Research](#research)
|
- Twitter: [@w0wn3r0](https://twitter.com/w0wn3r0)
|
||||||
- [Announcements](#announcements)
|
- Reddit: [/r/wownero](https://www.reddit.com/r/wownero)
|
||||||
- [Translations](#translations)
|
- Mail: [wownero@wownero.org](mailto:wownero@wownero.org)
|
||||||
- [Coverage](#coverage)
|
- Git: [git.wownero.com/wownero/wownero](https://git.wownero.com/wownero/wownero)
|
||||||
- [Introduction](#introduction)
|
- Wownero Funding System: [funding.wownero.com](https://funding.wownero.com)
|
||||||
- [About this project](#about-this-project)
|
- Wownero Forum: [forum.wownero.com](https://forum.wownero.com)
|
||||||
- [Supporting the project](#supporting-the-project)
|
- Discord: [discord.gg/ykZyAzJhDK](https://discord.com/invite/ykZyAzJhDK)
|
||||||
- [License](#license)
|
- Telegram: [t.me/wownero](https://t.me/wownero)
|
||||||
- [Contributing](#contributing)
|
- Wowlet Desktop Wallet: [git.wownero.com/wowlet/wowlet](https://git.wownero.com/wowlet/wowlet/releases)
|
||||||
- [Scheduled software upgrades](#scheduled-software-upgrades)
|
- Stack Wallet iOS & Android Mobile Wallet: [stackwallet.com](https://stackwallet.com)
|
||||||
- [Release staging schedule and protocol](#release-staging-schedule-and-protocol)
|
- Wonerujo Android Mobile Wallet: [google store](https://play.google.com/store/apps/details?id=com.m2049r.wowwallet)
|
||||||
- [Compiling Monero from source](#compiling-monero-from-source)
|
- Elite Wallet Android Mobile Wallet: [github](https://github.com/Elite-Labs/EliteWallet)
|
||||||
- [Dependencies](#dependencies)
|
- Public Node Status: [monero.fail](https://monero.fail/?crypto=wownero)
|
||||||
- [Internationalization](#Internationalization)
|
- Wownero Memes: [suchwow.xyz](https://suchwow.xyz/posts/top)
|
||||||
- [Using Tor](#using-tor)
|
- Market Info: [coinmarketcap.com](https://coinmarketcap.com/currencies/wownero), [coingecko.com](https://www.coingecko.com/en/coins/wownero/usd)
|
||||||
- [Pruning](#Pruning)
|
|
||||||
- [Debugging](#Debugging)
|
|
||||||
- [Known issues](#known-issues)
|
|
||||||
|
|
||||||
## Development resources
|
## Exchanges
|
||||||
|
|
||||||
- Web: [getmonero.org](https://getmonero.org)
|
- [AltQuick](https://altquick.com/market/Wownero)
|
||||||
- Forum: [forum.getmonero.org](https://forum.getmonero.org)
|
- [Majestic Bank](https://majesticbank.sc)
|
||||||
- Mail: [dev@getmonero.org](mailto:dev@getmonero.org)
|
- [TradeOgre](https://tradeogre.com/exchange/BTC-WOW)
|
||||||
- GitHub: [https://github.com/monero-project/monero](https://github.com/monero-project/monero)
|
|
||||||
- IRC: [#monero-dev on Freenode](https://webchat.freenode.net/?randomnick=1&channels=%23monero-dev&prompt=1&uio=d4)
|
|
||||||
- It is HIGHLY recommended that you join the #monero-dev IRC channel if you are developing software that uses Monero. Due to the nature of this open source software project, joining this channel and idling is the best way to stay updated on best practices and new developments in the Monero ecosystem. All you need to do is join the IRC channel and idle to stay updated with the latest in Monero development. If you do not, you risk wasting resources on developing integrations that are not compatible with the Monero network. The Monero core team and community continuously make efforts to communicate updates, developments, and documentation via other platforms – but for the best information, you need to talk to other Monero developers, and they are on IRC. #monero-dev is about Monero development, not getting help about using Monero, or help about development of other software, including yours, unless it also pertains to Monero code itself. For these cases, checkout #monero.
|
|
||||||
|
|
||||||
## Vulnerability response
|
### Blockchain Explorers
|
||||||
|
|
||||||
- Our [Vulnerability Response Process](https://github.com/monero-project/meta/blob/master/VULNERABILITY_RESPONSE_PROCESS.md) encourages responsible disclosure
|
- https://explore.wownero.com
|
||||||
- We are also available via [HackerOne](https://hackerone.com/monero)
|
- https://muchwow.lol
|
||||||
|
|
||||||
## Research
|
|
||||||
|
|
||||||
The [Monero Research Lab](https://src.getmonero.org/resources/research-lab/) is an open forum where the community coordinates research into Monero cryptography, protocols, fungibility, analysis, and more. We welcome collaboration and contributions from outside researchers! Because not all Lab work and publications are distributed as traditional preprints or articles, they may be easy to miss if you are conducting literature reviews for your own Monero research. You are encouraged to get in touch with our researchers if you have questions, wish to collaborate, or would like guidance to help avoid unnecessarily duplicating earlier or known work.
|
|
||||||
|
|
||||||
Our researchers are available on IRC in [#monero-research-lab on Freenode](https://webchat.freenode.net/?randomnick=1&channels=%23monero-research-lab&prompt=1&uio=d4) or by email:
|
|
||||||
|
|
||||||
- Sarang Noether, Ph.D.: [sarang@getmonero.org](mailto:sarang@getmonero.org) or [sarang.noether@protonmail.com](mailto:sarang.noether@protonmail.com); [research repository](https://github.com/SarangNoether/research-lab)
|
|
||||||
- Surae Noether (Brandon Goodell), Ph.D.: [surae@getmonero.org](mailto:surae@getmonero.org) or [surae.noether@protonmail.com](mailto:surae.noether@protonmail.com); [research repository](https://github.com/b-g-goodell/research-lab)
|
|
||||||
|
|
||||||
## Announcements
|
|
||||||
|
|
||||||
- You can subscribe to an [announcement listserv](https://lists.getmonero.org) to get critical announcements from the Monero core team. The announcement list can be very helpful for knowing when software updates are needed.
|
|
||||||
|
|
||||||
## Translations
|
|
||||||
The CLI wallet is available in different languages. If you want to help translate it, see our self-hosted localization platform, Weblate, on [translate.getmonero.org]( https://translate.getmonero.org/projects/monero/cli-wallet/). Every translation *must* be uploaded on the platform, pull requests directly editing the code in this repository will be closed. If you need help with Weblate, you can find a guide with screenshots [here](https://github.com/monero-ecosystem/monero-translations/blob/master/weblate.md).
|
|
||||||
|
|
||||||
|
|
||||||
If you need help/support/info about translations, contact the localization workgroup. You can find the complete list of contacts on the repository of the workgroup: [monero-translations](https://github.com/monero-ecosystem/monero-translations#contacts).
|
|
||||||
|
|
||||||
## Coverage
|
|
||||||
|
|
||||||
| Type | Status |
|
|
||||||
|-----------|--------|
|
|
||||||
| Coverity | [](https://scan.coverity.com/projects/9657/)
|
|
||||||
| Coveralls | [](https://coveralls.io/github/monero-project/monero?branch=master)
|
|
||||||
| License | [](https://opensource.org/licenses/BSD-3-Clause)
|
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
Monero is a private, secure, untraceable, decentralised digital currency. You are your bank, you control your funds, and nobody can trace your transfers unless you allow them to do so.
|
Wownero is a privacy-centric memecoin that was fairly launched on April 1, 2018 with no pre-mine, stealth-mine or ICO. Wownero has a maximum supply of around 184 million WOW with a slow and steady emission over 50 years. It is a fork of Monero, but with its own genesis block, so there is no degradation of privacy due to ring signatures using different participants for the same tx outputs on opposing forks.
|
||||||
|
|
||||||
**Privacy:** Monero uses a cryptographically sound system to allow you to send and receive funds without your transactions being easily revealed on the blockchain (the ledger of transactions that everyone has). This ensures that your purchases, receipts, and all transfers remain absolutely private by default.
|
|
||||||
|
|
||||||
**Security:** Using the power of a distributed peer-to-peer consensus network, every transaction on the network is cryptographically secured. Individual wallets have a 25-word mnemonic seed that is only displayed once and can be written down to backup the wallet. Wallet files are encrypted with a passphrase to ensure they are useless if stolen.
|
|
||||||
|
|
||||||
**Untraceability:** By taking advantage of ring signatures, a special property of a certain type of cryptography, Monero is able to ensure that transactions are not only untraceable but have an optional measure of ambiguity that ensures that transactions cannot easily be tied back to an individual user or computer.
|
|
||||||
|
|
||||||
**Decentralization:** The utility of Monero depends on its decentralised peer-to-peer consensus network - anyone should be able to run the monero software, validate the integrity of the blockchain, and participate in all aspects of the monero network using consumer-grade commodity hardware. Decentralization of the monero network is maintained by software development that minimizes the costs of running the monero software and inhibits the proliferation of specialized, non-commodity hardware.
|
|
||||||
|
|
||||||
## About this project
|
|
||||||
|
|
||||||
This is the core implementation of Monero. It is open source and completely free to use without restrictions, except for those specified in the license agreement below. There are no restrictions on anyone creating an alternative implementation of Monero that uses the protocol and network in a compatible manner.
|
|
||||||
|
|
||||||
As with many development projects, the repository on Github is considered to be the "staging" area for the latest changes. Before changes are merged into that branch on the main repository, they are tested by individual developers in their own branches, submitted as a pull request, and then subsequently tested by contributors who focus on testing and code reviews. That having been said, the repository should be carefully considered before using it in a production environment, unless there is a patch in the repository for a particular show-stopping issue you are experiencing. It is generally a better idea to use a tagged release for stability.
|
|
||||||
|
|
||||||
**Anyone is welcome to contribute to Monero's codebase!** If you have a fix or code change, feel free to submit it as a pull request directly to the "master" branch. In cases where the change is relatively small or does not affect other parts of the codebase, it may be merged in immediately by any one of the collaborators. On the other hand, if the change is particularly large or complex, it is expected that it will be discussed at length either well in advance of the pull request being submitted, or even directly on the pull request.
|
|
||||||
|
|
||||||
## Supporting the project
|
## Supporting the project
|
||||||
|
|
||||||
Monero is a 100% community-sponsored endeavor. If you want to join our efforts, the easiest thing you can do is support the project financially. Both Monero and Bitcoin donations can be made to **donate.getmonero.org** if using a client that supports the [OpenAlias](https://openalias.org) standard. Alternatively, you can send XMR to the Monero donation address via the `donate` command (type `help` in the command-line wallet for details).
|
Wownero is a 100% community-sponsored endeavor. Supporting services are also graciously provided by sponsors:
|
||||||
|
|
||||||
The Monero donation address is: `888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H` (viewkey: `f359631075708155cc3d92a32b75a7d02a5dcf27756707b47a2b31b21c389501`)
|
[<img src="https://git.wownero.com/wownero/meta/raw/branch/master/images/macstadium.png"
|
||||||
|
alt="MacStadium"
|
||||||
|
height="100">](https://www.macstadium.com)
|
||||||
|
[<img src="https://git.wownero.com/wownero/meta/raw/branch/master/images/jetbrains.png"
|
||||||
|
alt="JetBrains"
|
||||||
|
height="100">](https://www.jetbrains.com)
|
||||||
|
|
||||||
The Bitcoin donation address is: `1KTexdemPdxSBcG55heUuTjDRYqbC5ZL8H`
|
Developers are volunteers doing this mostly for shits and giggles. If you would like to support our shenanigans and stimulant addictions, please consider donating to [WFS proposals](https://funding.wownero.com/proposals) or the dev slush fund.
|
||||||
|
|
||||||
Core development funding and/or some supporting services are also graciously provided by sponsors:
|
### Donation Addresses
|
||||||
|
|
||||||
[<img width="80" src="https://static.getmonero.org/images/sponsors/mymonero.png"/>](https://mymonero.com)
|
WOW: `Wo3MWeKwtA918DU4c69hVSNgejdWFCRCuWjShRY66mJkU2Hv58eygJWDJS1MNa2Ge5M1WjUkGHuLqHkweDxwZZU42d16v94mP`
|
||||||
[<img width="150" src="https://static.getmonero.org/images/sponsors/kitware.png?1"/>](https://kitware.com)
|
|
||||||
[<img width="100" src="https://static.getmonero.org/images/sponsors/dome9.png"/>](https://dome9.com)
|
|
||||||
[<img width="150" src="https://static.getmonero.org/images/sponsors/araxis.png"/>](https://araxis.com)
|
|
||||||
[<img width="150" src="https://static.getmonero.org/images/sponsors/jetbrains.png"/>](https://www.jetbrains.com/)
|
|
||||||
[<img width="150" src="https://static.getmonero.org/images/sponsors/navicat.png"/>](https://www.navicat.com/)
|
|
||||||
[<img width="150" src="https://static.getmonero.org/images/sponsors/symas.png"/>](https://www.symas.com/)
|
|
||||||
|
|
||||||
There are also several mining pools that kindly donate a portion of their fees, [a list of them can be found on our Bitcointalk post](https://bitcointalk.org/index.php?topic=583449.0).
|
- view key: `e62e40bfd5ca7e3a7f199602a3c97df511780489e1c1861884b00c28abaea406`
|
||||||
|
|
||||||
## License
|
XMR: `44SQVPGLufPasUcuUQSZiF5c9BFzjcP8ucDxzzFDgLf1VkCEFaidJ3u2AhSKMhPLKA3jc2iS8wQHFcaigM6fXmo6AnFRn5B`
|
||||||
|
|
||||||
See [LICENSE](LICENSE).
|
- view key: `cb83681c31db0c79adf18f25b2a6d05f86db1109385b4928930e2acf49a3ed0b`
|
||||||
|
|
||||||
## Contributing
|
BTC: `bc1qcw9zglp3fxyl25zswemw7jczlqryms2lsmu464`
|
||||||
|
|
||||||
If you want to help out, see [CONTRIBUTING](CONTRIBUTING.md) for a set of guidelines.
|
### Open Collective
|
||||||
|
|
||||||
|
Open Collective is an online funding platform for open source software and collaborative communities. The platform brings together legal entities that act as a “Fiscal Host”, “Collectives” (unincorporated, community-based projects), and individuals interested in supporting projects with donations. Fiscal hosts hold donations for collectives in trust and handle all the taxes and legal stuff.
|
||||||
|
|
||||||
|
Wownero is hosted by Open Collective Europe, a Brussels-based non-profit that hosts many other collectives, such as Manjaro, EndeavourOS, Xfce, and peertube.social. If you would like donate to the Wownero Project using this method, you can check out our [Wownero - Open Collective](https://opencollective.com/wownero) page.
|
||||||
|
|
||||||
|
## Release staging and Contributing
|
||||||
|
|
||||||
|
**Anyone is welcome to contribute to Wownero's codebase!**
|
||||||
|
|
||||||
|
If you have a fix or code change, feel free to submit it as a pull request. Ahead of a scheduled software upgrade, a development branch will be created with the new release version tag. Pull requests that address bugs should be made to Master. Pull requests that require review and testing (generally, optimizations and new features) should be made to the development branch. All pull requests will be considered safe until the US dollar valuation of 1 Wownero equals $1000. After this valuation has been reached, more research will be needed to introduce experimental cryptography and/or code into the codebase.
|
||||||
|
|
||||||
|
Things to Do, Work in Progress, and Help Wanted tasks are tracked in the [Meta](https://git.wownero.com/wownero/meta/issues) repo.
|
||||||
|
|
||||||
|
Join `#wownero` on IRC OFTC to participate in development conversation.
|
||||||
|
|
||||||
## Scheduled software upgrades
|
## Scheduled software upgrades
|
||||||
|
|
||||||
Monero uses a fixed-schedule software upgrade (hard fork) mechanism to implement new features. This means that users of Monero (end users and service providers) should run current versions and upgrade their software on a regular schedule. Software upgrades occur during the months of April and October. The required software for these upgrades will be available prior to the scheduled date. Please check the repository prior to this date for the proper Monero software version. Below is the historical schedule and the projected schedule for the next upgrade.
|
Wownero uses a fixed-schedule software upgrade (hard fork) mechanism to implement new features. This means that users of Wownero (end users and service providers) should run current versions and upgrade their software on a regular schedule. The required software for these upgrades will be available prior to the scheduled date. Please check the repository prior to this date for the proper Wownero software version. Below is the historical schedule and the projected schedule for the next upgrade.
|
||||||
Dates are provided in the format YYYY-MM-DD.
|
Dates are provided in the format YYYY-MM-DD.
|
||||||
|
|
||||||
|
| Software upgrade block height | Date | Release Name | Minimum Wownero version | Recommended Wownero version | Details |
|
||||||
| Software upgrade block height | Date | Fork version | Minimum Monero version | Recommended Monero version | Details |
|
|-------------------------------|------------| ----------------- |-------------------------|-----------------------------| ---------------------------------------------------------------------------------- |
|
||||||
| ------------------------------ | -----------| ----------------- | ---------------------- | -------------------------- | ---------------------------------------------------------------------------------- |
|
| 1 | 2018-04-01 | Awesome Akita | v0.1.0.0 | v0.1.0.0 | Cryptonight variant 1, ringsize >= 8, sorted inputs
|
||||||
| 1009827 | 2016-03-22 | v2 | v0.9.4 | v0.9.4 | Allow only >= ringsize 3, blocktime = 120 seconds, fee-free blocksize 60 kb |
|
| 69,69 | 2018-04-24 | Busty Brazzers | v0.2.0.0 | v0.2.0.0 | Bulletproofs, LWMA difficulty algorithm, ringsize >= 10, reduce unlock to 4
|
||||||
| 1141317 | 2016-09-21 | v3 | v0.9.4 | v0.10.0 | Splits coinbase into denominations |
|
| 53,666 | 2018-10-06 | Cool Cage | v0.3.0.0 | v0.3.1.3 | Cryptonight variant 2, LWMA v2, ringsize = 22, MMS
|
||||||
| 1220516 | 2017-01-05 | v4 | v0.10.1 | v0.10.2.1 | Allow normal and RingCT transactions |
|
| 63,469 | 2018-11-11 | Dank Doge | v0.4.0.0 | v0.4.0.0 | LWMA v4
|
||||||
| 1288616 | 2017-04-15 | v5 | v0.10.3.0 | v0.10.3.1 | Adjusted minimum blocksize and fee algorithm |
|
| 81,769 | 2019-02-19 | Erotic EggplantEmoji | v0.5.0.0 | v0.5.0.2 | Cryptonight/wow, LWMA v1 with N=144, Updated Bulletproofs, Fee Per Byte, Auto-churn
|
||||||
| 1400000 | 2017-09-16 | v6 | v0.11.0.0 | v0.11.0.0 | Allow only RingCT transactions, allow only >= ringsize 5 |
|
| 114,969 | 2019-06-14 | F For Fappening | v0.6.1.0 | v0.6.1.2 | RandomWOW, new block weight algorithm, slightly more efficient RingCT format
|
||||||
| 1546000 | 2018-04-06 | v7 | v0.12.0.0 | v0.12.3.0 | Cryptonight variant 1, ringsize >= 7, sorted inputs
|
| 160,777 | 2019-11-20 | Gaping Goatse | v0.7.0.0 | v0.7.1.0 | Only allow >= 2 outputs, change to the block median used to calculate penalty, rct sigs in coinbase forbidden, 4 unlock time as protocol rule
|
||||||
| 1685555 | 2018-10-18 | v8 | v0.13.0.0 | v0.13.0.4 | max transaction size at half the penalty free block size, bulletproofs enabled, cryptonight variant 2, fixed ringsize [11](https://youtu.be/KOO5S4vxi0o)
|
| - | 2020-06-28 | Hallucinogenic Hypnotoad | v0.8.0.0 | v0.8.0.2 | Dandelion++ support
|
||||||
| 1686275 | 2018-10-19 | v9 | v0.13.0.0 | v0.13.0.4 | bulletproofs required
|
| 253,999 | 2020-10-09 | Illiterate Illuminati | v0.9.0.0 | v0.9.3.3 | Dynamic coinbase unlock (up to 1 mo.), Deterministic unlock times, Enforce maximum coinbase amount, show_qr_code wallet command, CLSAG
|
||||||
| 1788000 | 2019-03-09 | v10 | v0.14.0.0 | v0.14.1.2 | New PoW based on Cryptonight-R, new block weight algorithm, slightly more efficient RingCT format
|
| 331,170 | 2021-07-04 | Junkie Jeff | v0.10.0.0 | v0.10.2.0 | Bulletproofs+, Miner Block Header Signing, Vote by Block, Change coinbase unlock time to 1 day, Reset difficulty and switch back to Monero's difficulty algorithm
|
||||||
| 1788720 | 2019-03-10 | v11 | v0.14.0.0 | v0.14.1.2 | forbid old RingCT transaction format
|
| 514,000 | 2023-04-01 | Kunty Karen | v0.11.0.0 | v0.11.0.0 | View tags, fee changes, adjusted dynamic block weight algorithm, multisig security fixes, RPC broadcast node donation sub-address, Limit tx_extra max size to ~1kb, 12-hour difficulty adjustment window
|
||||||
| 1978433 | 2019-11-30* | v12 | v0.15.0.0 | v0.16.0.0 | New PoW based on RandomX, only allow >= 2 outputs, change to the block median used to calculate penalty, v1 coinbases are forbidden, rct sigs in coinbase forbidden, 10 block lock time for incoming outputs
|
|
||||||
| 2210000 | 2020-10-17 | v13 | v0.17.0.0 | v0.17.0.0 | New CLSAG transaction format
|
|
||||||
| 2210720 | 2020-10-18 | v14 | v0.17.0.0 | v0.17.0.0 | forbid old MLSAG transaction format
|
|
||||||
| XXXXXXX | XXX-XX-XX | XXX | vX.XX.X.X | vX.XX.X.X | XXX |
|
|
||||||
|
|
||||||
X's indicate that these details have not been determined as of commit date.
|
X's indicate that these details have not been determined as of commit date.
|
||||||
|
|
||||||
\* indicates estimate as of commit date
|
\* indicates estimate as of commit date
|
||||||
|
|
||||||
## Release staging schedule and protocol
|
## Installing from a package
|
||||||
|
|
||||||
Approximately three months prior to a scheduled software upgrade, a branch from master will be created with the new release version tag. Pull requests that address bugs should then be made to both master and the new release branch. Pull requests that require extensive review and testing (generally, optimizations and new features) should *not* be made to the release branch.
|
|
||||||
|
|
||||||
## Compiling Monero from source
|
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
|
|
||||||
The following table summarizes the tools and libraries required to build. A
|
|
||||||
few of the libraries are also included in this repository (marked as
|
|
||||||
"Vendored"). By default, the build uses the library installed on the system
|
|
||||||
and ignores the vendored sources. However, if no library is found installed on
|
|
||||||
the system, then the vendored source will be built and used. The vendored
|
|
||||||
sources are also used for statically-linked builds because distribution
|
|
||||||
packages often include only shared library binaries (`.so`) but not static
|
|
||||||
library archives (`.a`).
|
|
||||||
|
|
||||||
| Dep | Min. version | Vendored | Debian/Ubuntu pkg | Arch pkg | Void pkg | Fedora pkg | Optional | Purpose |
|
|
||||||
| ------------ | ------------- | -------- | -------------------- | ------------ | ------------------ | ------------------- | -------- | --------------- |
|
|
||||||
| GCC | 4.7.3 | NO | `build-essential` | `base-devel` | `base-devel` | `gcc` | NO | |
|
|
||||||
| CMake | 3.5 | NO | `cmake` | `cmake` | `cmake` | `cmake` | NO | |
|
|
||||||
| pkg-config | any | NO | `pkg-config` | `base-devel` | `base-devel` | `pkgconf` | NO | |
|
|
||||||
| Boost | 1.58 | NO | `libboost-all-dev` | `boost` | `boost-devel` | `boost-devel` | NO | C++ libraries |
|
|
||||||
| OpenSSL | basically any | NO | `libssl-dev` | `openssl` | `libressl-devel` | `openssl-devel` | NO | sha256 sum |
|
|
||||||
| libzmq | 3.0.0 | NO | `libzmq3-dev` | `zeromq` | `zeromq-devel` | `zeromq-devel` | NO | ZeroMQ library |
|
|
||||||
| OpenPGM | ? | NO | `libpgm-dev` | `libpgm` | | `openpgm-devel` | NO | For ZeroMQ |
|
|
||||||
| libnorm[2] | ? | NO | `libnorm-dev` | | | | YES | For ZeroMQ |
|
|
||||||
| libunbound | 1.4.16 | YES | `libunbound-dev` | `unbound` | `unbound-devel` | `unbound-devel` | NO | DNS resolver |
|
|
||||||
| libsodium | ? | NO | `libsodium-dev` | `libsodium` | `libsodium-devel` | `libsodium-devel` | NO | cryptography |
|
|
||||||
| libunwind | any | NO | `libunwind8-dev` | `libunwind` | `libunwind-devel` | `libunwind-devel` | YES | Stack traces |
|
|
||||||
| liblzma | any | NO | `liblzma-dev` | `xz` | `liblzma-devel` | `xz-devel` | YES | For libunwind |
|
|
||||||
| libreadline | 6.3.0 | NO | `libreadline6-dev` | `readline` | `readline-devel` | `readline-devel` | YES | Input editing |
|
|
||||||
| ldns | 1.6.17 | NO | `libldns-dev` | `ldns` | `libldns-devel` | `ldns-devel` | YES | SSL toolkit |
|
|
||||||
| expat | 1.1 | NO | `libexpat1-dev` | `expat` | `expat-devel` | `expat-devel` | YES | XML parsing |
|
|
||||||
| GTest | 1.5 | YES | `libgtest-dev`[1] | `gtest` | `gtest-devel` | `gtest-devel` | YES | Test suite |
|
|
||||||
| Doxygen | any | NO | `doxygen` | `doxygen` | `doxygen` | `doxygen` | YES | Documentation |
|
|
||||||
| Graphviz | any | NO | `graphviz` | `graphviz` | `graphviz` | `graphviz` | YES | Documentation |
|
|
||||||
| lrelease | ? | NO | `qttools5-dev-tools` | `qt5-tools` | `qt5-tools` | `qt5-linguist` | YES | Translations |
|
|
||||||
| libhidapi | ? | NO | `libhidapi-dev` | `hidapi` | `hidapi-devel` | `hidapi-devel` | YES | Hardware wallet |
|
|
||||||
| libusb | ? | NO | `libusb-1.0-0-dev` | `libusb` | `libusb-devel` | `libusbx-devel` | YES | Hardware wallet |
|
|
||||||
| libprotobuf | ? | NO | `libprotobuf-dev` | `protobuf` | `protobuf-devel` | `protobuf-devel` | YES | Hardware wallet |
|
|
||||||
| protoc | ? | NO | `protobuf-compiler` | `protobuf` | `protobuf` | `protobuf-compiler` | YES | Hardware wallet |
|
|
||||||
| libudev | ? | No | `libudev-dev` | `systemd` | `eudev-libudev-devel` | `systemd-devel` | YES | Hardware wallet |
|
|
||||||
|
|
||||||
[1] On Debian/Ubuntu `libgtest-dev` only includes sources and headers. You must
|
|
||||||
build the library binary manually. This can be done with the following command ```sudo apt-get install libgtest-dev && cd /usr/src/gtest && sudo cmake . && sudo make && sudo mv libg* /usr/lib/ ```
|
|
||||||
[2] libnorm-dev is needed if your zmq library was built with libnorm, and not needed otherwise
|
|
||||||
|
|
||||||
Install all dependencies at once on Debian/Ubuntu:
|
|
||||||
|
|
||||||
``` sudo apt update && sudo apt install build-essential cmake pkg-config libboost-all-dev libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libldns-dev libexpat1-dev doxygen graphviz libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev```
|
|
||||||
|
|
||||||
Install all dependencies at once on macOS with the provided Brewfile:
|
|
||||||
``` brew update && brew bundle --file=contrib/brew/Brewfile ```
|
|
||||||
|
|
||||||
FreeBSD 12.1 one-liner required to build dependencies:
|
|
||||||
```pkg install git gmake cmake pkgconf boost-libs libzmq4 libsodium```
|
|
||||||
|
|
||||||
### Cloning the repository
|
|
||||||
|
|
||||||
Clone recursively to pull-in needed submodule(s):
|
|
||||||
|
|
||||||
`$ git clone --recursive https://github.com/monero-project/monero`
|
|
||||||
|
|
||||||
If you already have a repo cloned, initialize and update:
|
|
||||||
|
|
||||||
`$ cd monero && git submodule init && git submodule update`
|
|
||||||
|
|
||||||
### Build instructions
|
|
||||||
|
|
||||||
Monero uses the CMake build system and a top-level [Makefile](Makefile) that
|
|
||||||
invokes cmake commands as needed.
|
|
||||||
|
|
||||||
#### On Linux and macOS
|
|
||||||
|
|
||||||
* Install the dependencies
|
|
||||||
* Change to the root of the source code directory, change to the most recent release branch, and build:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd monero
|
|
||||||
git checkout release-v0.17
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
*Optional*: If your machine has several cores and enough memory, enable
|
|
||||||
parallel build by running `make -j<number of threads>` instead of `make`. For
|
|
||||||
this to be worthwhile, the machine should have one core and about 2GB of RAM
|
|
||||||
available per thread.
|
|
||||||
|
|
||||||
*Note*: The instructions above will compile the most stable release of the
|
|
||||||
Monero software. If you would like to use and test the most recent software,
|
|
||||||
use ```git checkout master```. The master branch may contain updates that are
|
|
||||||
both unstable and incompatible with release software, though testing is always
|
|
||||||
encouraged.
|
|
||||||
|
|
||||||
* The resulting executables can be found in `build/release/bin`
|
|
||||||
|
|
||||||
* Add `PATH="$PATH:$HOME/monero/build/release/bin"` to `.profile`
|
|
||||||
|
|
||||||
* Run Monero with `monerod --detach`
|
|
||||||
|
|
||||||
* **Optional**: build and run the test suite to verify the binaries:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make release-test
|
|
||||||
```
|
|
||||||
|
|
||||||
*NOTE*: `core_tests` test may take a few hours to complete.
|
|
||||||
|
|
||||||
* **Optional**: to build binaries suitable for debugging:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make debug
|
|
||||||
```
|
|
||||||
|
|
||||||
* **Optional**: to build statically-linked binaries:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make release-static
|
|
||||||
```
|
|
||||||
|
|
||||||
Dependencies need to be built with -fPIC. Static libraries usually aren't, so you may have to build them yourself with -fPIC. Refer to their documentation for how to build them.
|
|
||||||
|
|
||||||
* **Optional**: build documentation in `doc/html` (omit `HAVE_DOT=YES` if `graphviz` is not installed):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
HAVE_DOT=YES doxygen Doxyfile
|
|
||||||
```
|
|
||||||
|
|
||||||
#### On the Raspberry Pi
|
|
||||||
|
|
||||||
Tested on a Raspberry Pi Zero with a clean install of minimal Raspbian Stretch (2017-09-07 or later) from https://www.raspberrypi.org/downloads/raspbian/. If you are using Raspian Jessie, [please see note in the following section](#note-for-raspbian-jessie-users).
|
|
||||||
|
|
||||||
* `apt-get update && apt-get upgrade` to install all of the latest software
|
|
||||||
|
|
||||||
* Install the dependencies for Monero from the 'Debian' column in the table above.
|
|
||||||
|
|
||||||
* Increase the system swap size:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo /etc/init.d/dphys-swapfile stop
|
|
||||||
sudo nano /etc/dphys-swapfile
|
|
||||||
CONF_SWAPSIZE=2048
|
|
||||||
sudo /etc/init.d/dphys-swapfile start
|
|
||||||
```
|
|
||||||
|
|
||||||
* If using an external hard disk without an external power supply, ensure it gets enough power to avoid hardware issues when syncing, by adding the line "max_usb_current=1" to /boot/config.txt
|
|
||||||
|
|
||||||
* Clone Monero and checkout the most recent release version:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/monero-project/monero.git
|
|
||||||
cd monero
|
|
||||||
git checkout tags/v0.17.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
* Build:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make release
|
|
||||||
```
|
|
||||||
|
|
||||||
* Wait 4-6 hours
|
|
||||||
|
|
||||||
* The resulting executables can be found in `build/release/bin`
|
|
||||||
|
|
||||||
* Add `PATH="$PATH:$HOME/monero/build/release/bin"` to `.profile`
|
|
||||||
|
|
||||||
* Run Monero with `monerod --detach`
|
|
||||||
|
|
||||||
* You may wish to reduce the size of the swap file after the build has finished, and delete the boost directory from your home directory
|
|
||||||
|
|
||||||
#### *Note for Raspbian Jessie users:*
|
|
||||||
|
|
||||||
If you are using the older Raspbian Jessie image, compiling Monero is a bit more complicated. The version of Boost available in the Debian Jessie repositories is too old to use with Monero, and thus you must compile a newer version yourself. The following explains the extra steps and has been tested on a Raspberry Pi 2 with a clean install of minimal Raspbian Jessie.
|
|
||||||
|
|
||||||
* As before, `apt-get update && apt-get upgrade` to install all of the latest software, and increase the system swap size
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo /etc/init.d/dphys-swapfile stop
|
|
||||||
sudo nano /etc/dphys-swapfile
|
|
||||||
CONF_SWAPSIZE=2048
|
|
||||||
sudo /etc/init.d/dphys-swapfile start
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
* Then, install the dependencies for Monero except for `libunwind` and `libboost-all-dev`
|
|
||||||
|
|
||||||
* Install the latest version of boost (this may first require invoking `apt-get remove --purge libboost*-dev` to remove a previous version if you're not using a clean install):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd
|
|
||||||
wget https://sourceforge.net/projects/boost/files/boost/1.72.0/boost_1_72_0.tar.bz2
|
|
||||||
tar xvfo boost_1_72_0.tar.bz2
|
|
||||||
cd boost_1_72_0
|
|
||||||
./bootstrap.sh
|
|
||||||
sudo ./b2
|
|
||||||
```
|
|
||||||
|
|
||||||
* Wait ~8 hours
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo ./bjam cxxflags=-fPIC cflags=-fPIC -a install
|
|
||||||
```
|
|
||||||
|
|
||||||
* Wait ~4 hours
|
|
||||||
|
|
||||||
* From here, follow the [general Raspberry Pi instructions](#on-the-raspberry-pi) from the "Clone Monero and checkout most recent release version" step.
|
|
||||||
|
|
||||||
#### On Windows:
|
|
||||||
|
|
||||||
Binaries for Windows are built on Windows using the MinGW toolchain within
|
|
||||||
[MSYS2 environment](https://www.msys2.org). The MSYS2 environment emulates a
|
|
||||||
POSIX system. The toolchain runs within the environment and *cross-compiles*
|
|
||||||
binaries that can run outside of the environment as a regular Windows
|
|
||||||
application.
|
|
||||||
|
|
||||||
**Preparing the build environment**
|
|
||||||
|
|
||||||
* Download and install the [MSYS2 installer](https://www.msys2.org), either the 64-bit or the 32-bit package, depending on your system.
|
|
||||||
* Open the MSYS shell via the `MSYS2 Shell` shortcut
|
|
||||||
* Update packages using pacman:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pacman -Syu
|
|
||||||
```
|
|
||||||
|
|
||||||
* Exit the MSYS shell using Alt+F4
|
|
||||||
* Edit the properties for the `MSYS2 Shell` shortcut changing "msys2_shell.bat" to "msys2_shell.cmd -mingw64" for 64-bit builds or "msys2_shell.cmd -mingw32" for 32-bit builds
|
|
||||||
* Restart MSYS shell via modified shortcut and update packages again using pacman:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pacman -Syu
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
* Install dependencies:
|
|
||||||
|
|
||||||
To build for 64-bit Windows:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi
|
|
||||||
```
|
|
||||||
|
|
||||||
To build for 32-bit Windows:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pacman -S mingw-w64-i686-toolchain make mingw-w64-i686-cmake mingw-w64-i686-boost mingw-w64-i686-openssl mingw-w64-i686-zeromq mingw-w64-i686-libsodium mingw-w64-i686-hidapi
|
|
||||||
```
|
|
||||||
|
|
||||||
* Open the MingW shell via `MinGW-w64-Win64 Shell` shortcut on 64-bit Windows
|
|
||||||
or `MinGW-w64-Win64 Shell` shortcut on 32-bit Windows. Note that if you are
|
|
||||||
running 64-bit Windows, you will have both 64-bit and 32-bit MinGW shells.
|
|
||||||
|
|
||||||
**Cloning**
|
|
||||||
|
|
||||||
* To git clone, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone --recursive https://github.com/monero-project/monero.git
|
|
||||||
```
|
|
||||||
|
|
||||||
**Building**
|
|
||||||
|
|
||||||
* Change to the cloned directory, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd monero
|
|
||||||
```
|
|
||||||
|
|
||||||
* If you would like a specific [version/tag](https://github.com/monero-project/monero/tags), do a git checkout for that version. eg. 'v0.17.0.0'. If you don't care about the version and just want binaries from master, skip this step:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git checkout v0.17.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
* If you are on a 64-bit system, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make release-static-win64
|
|
||||||
```
|
|
||||||
|
|
||||||
* If you are on a 32-bit system, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make release-static-win32
|
|
||||||
```
|
|
||||||
|
|
||||||
* The resulting executables can be found in `build/release/bin`
|
|
||||||
|
|
||||||
* **Optional**: to build Windows binaries suitable for debugging on a 64-bit system, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make debug-static-win64
|
|
||||||
```
|
|
||||||
|
|
||||||
* **Optional**: to build Windows binaries suitable for debugging on a 32-bit system, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make debug-static-win32
|
|
||||||
```
|
|
||||||
|
|
||||||
* The resulting executables can be found in `build/debug/bin`
|
|
||||||
|
|
||||||
### On FreeBSD:
|
|
||||||
|
|
||||||
The project can be built from scratch by following instructions for Linux above(but use `gmake` instead of `make`).
|
|
||||||
If you are running Monero in a jail, you need to add `sysvsem="new"` to your jail configuration, otherwise lmdb will throw the error message: `Failed to open lmdb environment: Function not implemented`.
|
|
||||||
|
|
||||||
Monero is also available as a port or package as 'monero-cli`.
|
|
||||||
|
|
||||||
### On OpenBSD:
|
|
||||||
|
|
||||||
You will need to add a few packages to your system. `pkg_add cmake gmake zeromq libiconv boost`.
|
|
||||||
|
|
||||||
The `doxygen` and `graphviz` packages are optional and require the xbase set.
|
|
||||||
Running the test suite also requires `py-requests` package.
|
|
||||||
|
|
||||||
Build monero: `env DEVELOPER_LOCAL_TOOLS=1 BOOST_ROOT=/usr/local gmake release-static`
|
|
||||||
|
|
||||||
Note: you may encounter the following error when compiling the latest version of Monero as a normal user:
|
|
||||||
|
|
||||||
```
|
|
||||||
LLVM ERROR: out of memory
|
|
||||||
c++: error: unable to execute command: Abort trap (core dumped)
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you need to increase the data ulimit size to 2GB and try again: `ulimit -d 2000000`
|
|
||||||
|
|
||||||
### On NetBSD:
|
|
||||||
|
|
||||||
Check that the dependencies are present: `pkg_info -c libexecinfo boost-headers boost-libs protobuf readline libusb1 zeromq git-base pkgconf gmake cmake | more`, and install any that are reported missing, using `pkg_add` or from your pkgsrc tree. Readline is optional but worth having.
|
|
||||||
|
|
||||||
Third-party dependencies are usually under `/usr/pkg/`, but if you have a custom setup, adjust the "/usr/pkg" (below) accordingly.
|
|
||||||
|
|
||||||
Clone the monero repository recursively and checkout the most recent release as described above. Then build monero: `gmake BOOST_ROOT=/usr/pkg LDFLAGS="-Wl,-R/usr/pkg/lib" release`. The resulting executables can be found in `build/NetBSD/[Release version]/Release/bin/`.
|
|
||||||
|
|
||||||
### On Solaris:
|
|
||||||
|
|
||||||
The default Solaris linker can't be used, you have to install GNU ld, then run cmake manually with the path to your copy of GNU ld:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir -p build/release
|
|
||||||
cd build/release
|
|
||||||
cmake -DCMAKE_LINKER=/path/to/ld -D CMAKE_BUILD_TYPE=Release ../..
|
|
||||||
cd ../..
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you can run make as usual.
|
|
||||||
|
|
||||||
### On Linux for Android (using docker):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Build image (for ARM 32-bit)
|
|
||||||
docker build -f utils/build_scripts/android32.Dockerfile -t monero-android .
|
|
||||||
# Build image (for ARM 64-bit)
|
|
||||||
docker build -f utils/build_scripts/android64.Dockerfile -t monero-android .
|
|
||||||
# Create container
|
|
||||||
docker create -it --name monero-android monero-android bash
|
|
||||||
# Get binaries
|
|
||||||
docker cp monero-android:/src/build/release/bin .
|
|
||||||
```
|
|
||||||
|
|
||||||
### Building portable statically linked binaries
|
|
||||||
|
|
||||||
By default, in either dynamically or statically linked builds, binaries target the specific host processor on which the build happens and are not portable to other processors. Portable binaries can be built using the following targets:
|
|
||||||
|
|
||||||
* ```make release-static-linux-x86_64``` builds binaries on Linux on x86_64 portable across POSIX systems on x86_64 processors
|
|
||||||
* ```make release-static-linux-i686``` builds binaries on Linux on x86_64 or i686 portable across POSIX systems on i686 processors
|
|
||||||
* ```make release-static-linux-armv8``` builds binaries on Linux portable across POSIX systems on armv8 processors
|
|
||||||
* ```make release-static-linux-armv7``` builds binaries on Linux portable across POSIX systems on armv7 processors
|
|
||||||
* ```make release-static-linux-armv6``` builds binaries on Linux portable across POSIX systems on armv6 processors
|
|
||||||
* ```make release-static-win64``` builds binaries on 64-bit Windows portable across 64-bit Windows systems
|
|
||||||
* ```make release-static-win32``` builds binaries on 64-bit or 32-bit Windows portable across 32-bit Windows systems
|
|
||||||
|
|
||||||
### Cross Compiling
|
|
||||||
|
|
||||||
You can also cross-compile static binaries on Linux for Windows and macOS with the `depends` system.
|
|
||||||
|
|
||||||
* ```make depends target=x86_64-linux-gnu``` for 64-bit linux binaries.
|
|
||||||
* ```make depends target=x86_64-w64-mingw32``` for 64-bit windows binaries.
|
|
||||||
* Requires: `python3 g++-mingw-w64-x86-64 wine1.6 bc`
|
|
||||||
* ```make depends target=x86_64-apple-darwin11``` for macOS binaries.
|
|
||||||
* Requires: `cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev`
|
|
||||||
* ```make depends target=i686-linux-gnu``` for 32-bit linux binaries.
|
|
||||||
* Requires: `g++-multilib bc`
|
|
||||||
* ```make depends target=i686-w64-mingw32``` for 32-bit windows binaries.
|
|
||||||
* Requires: `python3 g++-mingw-w64-i686`
|
|
||||||
* ```make depends target=arm-linux-gnueabihf``` for armv7 binaries.
|
|
||||||
* Requires: `g++-arm-linux-gnueabihf`
|
|
||||||
* ```make depends target=aarch64-linux-gnu``` for armv8 binaries.
|
|
||||||
* Requires: `g++-aarch64-linux-gnu`
|
|
||||||
* ```make depends target=riscv64-linux-gnu``` for RISC V 64 bit binaries.
|
|
||||||
* Requires: `g++-riscv64-linux-gnu`
|
|
||||||
* ```make depends target=x86_64-unknown-freebsd``` for freebsd binaries.
|
|
||||||
* Requires: `clang-8`
|
|
||||||
* ```make depends target=arm-linux-android``` for 32bit android binaries
|
|
||||||
* ```make depends target=aarch64-linux-android``` for 64bit android binaries
|
|
||||||
|
|
||||||
|
|
||||||
The required packages are the names for each toolchain on apt. Depending on your distro, they may have different names.
|
|
||||||
|
|
||||||
Using `depends` might also be easier to compile Monero on Windows than using MSYS. Activate Windows Subsystem for Linux (WSL) with a distro (for example Ubuntu), install the apt build-essentials and follow the `depends` steps as depicted above.
|
|
||||||
|
|
||||||
The produced binaries still link libc dynamically. If the binary is compiled on a current distribution, it might not run on an older distribution with an older installation of libc. Passing `-DBACKCOMPAT=ON` to cmake will make sure that the binary will run on systems having at least libc version 2.17.
|
|
||||||
|
|
||||||
## Installing Monero from a package
|
|
||||||
|
|
||||||
**DISCLAIMER: These packages are not part of this repository or maintained by this project's contributors, and as such, do not go through the same review process to ensure their trustworthiness and security.**
|
|
||||||
|
|
||||||
Packages are available for
|
Packages are available for
|
||||||
|
|
||||||
* Debian Buster
|
* Arch Linux/Manjaro
|
||||||
|
|
||||||
See the [instructions in the whonix/monero-gui repository](https://gitlab.com/whonix/monero-gui#how-to-install-monero-using-apt-get)
|
yay -S wownero-git
|
||||||
|
|
||||||
* Debian Bullseye and Sid
|
* Gentoo - Russian hacking tool
|
||||||
|
|
||||||
```bash
|
emerge --noreplace eselect-repository
|
||||||
sudo apt install monero
|
eselect repository enable monero
|
||||||
```
|
emaint sync -r monero
|
||||||
More info and versions in the [Debian package tracker](https://tracker.debian.org/pkg/monero).
|
echo '*/*::monero ~amd64' >> /etc/portage/package.accept_keywords
|
||||||
|
emerge net-p2p/wownero
|
||||||
|
|
||||||
* Arch Linux (via Community packages):
|
* NixOS
|
||||||
[`monero`](https://www.archlinux.org/packages/community/x86_64/monero/)
|
|
||||||
|
|
||||||
* Void Linux:
|
nix-shell -p wownero
|
||||||
|
|
||||||
```bash
|
|
||||||
xbps-install -S monero
|
|
||||||
```
|
|
||||||
|
|
||||||
* GuixSD
|
|
||||||
|
|
||||||
```bash
|
|
||||||
guix package -i monero
|
|
||||||
```
|
|
||||||
|
|
||||||
* Gentoo [Monero overlay](https://github.com/gentoo-monero/gentoo-monero)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
emerge --noreplace eselect-repository
|
|
||||||
eselect repository enable monero
|
|
||||||
emaint sync -r monero
|
|
||||||
echo '*/*::monero ~amd64' >> /etc/portage/package.accept_keywords
|
|
||||||
emerge net-p2p/monero
|
|
||||||
```
|
|
||||||
|
|
||||||
* macOS (homebrew)
|
|
||||||
```bash
|
|
||||||
brew install monero
|
|
||||||
```
|
|
||||||
|
|
||||||
* Docker
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Build using all available cores
|
|
||||||
docker build -t monero .
|
|
||||||
|
|
||||||
# or build using a specific number of cores (reduce RAM requirement)
|
|
||||||
docker build --build-arg NPROC=1 -t monero .
|
|
||||||
|
|
||||||
# either run in foreground
|
|
||||||
docker run -it -v /monero/chain:/root/.bitmonero -v /monero/wallet:/wallet -p 18080:18080 monero
|
|
||||||
|
|
||||||
# or in background
|
|
||||||
docker run -it -d -v /monero/chain:/root/.bitmonero -v /monero/wallet:/wallet -p 18080:18080 monero
|
|
||||||
```
|
|
||||||
|
|
||||||
* The build needs 3 GB space.
|
|
||||||
* Wait one hour or more
|
|
||||||
|
|
||||||
Packaging for your favorite distribution would be a welcome contribution!
|
Packaging for your favorite distribution would be a welcome contribution!
|
||||||
|
|
||||||
## Running monerod
|
**DISCLAIMER: These packages are not part of this repository, and as such, do not go through the same review process to ensure their trustworthiness and security.**
|
||||||
|
|
||||||
|
|
||||||
|
## Building from Source
|
||||||
|
|
||||||
|
* Docker
|
||||||
|
|
||||||
|
git clone https://git.wownero.com/wownero/wownero && cd wownero
|
||||||
|
docker build -t git-wow:master -m 4g .
|
||||||
|
docker run -it -p 34567:34567 -p 34568:34568 -w /home/wownero/build/release/bin git-wow:master bash
|
||||||
|
|
||||||
|
* Arch Linux/Manjaro
|
||||||
|
|
||||||
|
sudo pacman -Syu && sudo pacman -S base-devel cmake boost openssl zeromq libpgm unbound libsodium git libusb systemd
|
||||||
|
git clone https://git.wownero.com/wownero/wownero && cd wownero
|
||||||
|
make -j2
|
||||||
|
|
||||||
|
* Debian/Ubuntu
|
||||||
|
|
||||||
|
sudo apt update && sudo apt install build-essential cmake pkg-config libboost-all-dev libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libldns-dev libexpat1-dev libpgm-dev libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev git -y
|
||||||
|
git clone https://git.wownero.com/wownero/wownero && cd wownero
|
||||||
|
make -j2
|
||||||
|
|
||||||
|
|
||||||
|
## Running Binaries
|
||||||
|
|
||||||
The build places the binary in `bin/` sub-directory within the build directory
|
The build places the binary in `bin/` sub-directory within the build directory
|
||||||
from which cmake was invoked (repository root by default). To run in the
|
from which cmake was invoked (repository root by default). To run in the
|
||||||
foreground:
|
foreground:
|
||||||
|
|
||||||
```bash
|
./bin/wownerod
|
||||||
./bin/monerod
|
|
||||||
```
|
|
||||||
|
|
||||||
To list all available options, run `./bin/monerod --help`. Options can be
|
To list all available options, run `./bin/wownerod --help`. Options can be
|
||||||
specified either on the command line or in a configuration file passed by the
|
specified either on the command line or in a configuration file passed by the
|
||||||
`--config-file` argument. To specify an option in the configuration file, add
|
`--config-file` argument. To specify an option in the configuration file, add
|
||||||
a line with the syntax `argumentname=value`, where `argumentname` is the name
|
a line with the syntax `argumentname=value`, where `argumentname` is the name
|
||||||
@@ -634,181 +164,54 @@ of the argument without the leading dashes, for example, `log-level=1`.
|
|||||||
|
|
||||||
To run in background:
|
To run in background:
|
||||||
|
|
||||||
```bash
|
./bin/wownerod --log-file wownerod.log --detach
|
||||||
./bin/monerod --log-file monerod.log --detach
|
|
||||||
```
|
|
||||||
|
|
||||||
To run as a systemd service, copy
|
To run as a systemd service, copy
|
||||||
[monerod.service](utils/systemd/monerod.service) to `/etc/systemd/system/` and
|
[wownerod.service](utils/systemd/wownerod.service) to `/etc/systemd/system/` and
|
||||||
[monerod.conf](utils/conf/monerod.conf) to `/etc/`. The [example
|
[wow.conf](wow.conf) to `/etc/`. The [example
|
||||||
service](utils/systemd/monerod.service) assumes that the user `monero` exists
|
service](utils/systemd/wownerod.service) assumes that the user `wownero` exists
|
||||||
and its home is the data directory specified in the [example
|
and its home is the data directory specified in the [example
|
||||||
config](utils/conf/monerod.conf).
|
config](wow.conf).
|
||||||
|
|
||||||
If you're on Mac, you may need to add the `--max-concurrency 1` option to
|
Once node is synced to network, run the CLI wallet by entering:
|
||||||
monero-wallet-cli, and possibly monerod, if you get crashes refreshing.
|
|
||||||
|
|
||||||
## Internationalization
|
./bin/wownero-wallet-cli
|
||||||
|
|
||||||
See [README.i18n.md](README.i18n.md).
|
Type `help` in CLI wallet to see standard commands (for advanced options, type `help_advanced`).
|
||||||
|
|
||||||
## Using Tor
|
## Tor Anonymity Network
|
||||||
|
|
||||||
> There is a new, still experimental, [integration with Tor](ANONYMITY_NETWORKS.md). The
|
### Ubuntu
|
||||||
> feature allows connecting over IPv4 and Tor simultaneously - IPv4 is used for
|
|
||||||
> relaying blocks and relaying transactions received by peers whereas Tor is
|
|
||||||
> used solely for relaying transactions received over local RPC. This provides
|
|
||||||
> privacy and better protection against surrounding node (sybil) attacks.
|
|
||||||
|
|
||||||
While Monero isn't made to integrate with Tor, it can be used wrapped with torsocks, by
|
* `sudo apt-get update && sudo apt-get install tor -y`
|
||||||
setting the following configuration parameters and environment variables:
|
* `sudo nano /etc/tor/torrc`
|
||||||
|
|
||||||
* `--p2p-bind-ip 127.0.0.1` on the command line or `p2p-bind-ip=127.0.0.1` in
|
add the following:
|
||||||
monerod.conf to disable listening for connections on external interfaces.
|
```
|
||||||
* `--no-igd` on the command line or `no-igd=1` in monerod.conf to disable IGD
|
HiddenServiceDir /var/lib/tor/wownero/
|
||||||
(UPnP port forwarding negotiation), which is pointless with Tor.
|
HiddenServicePort 34569 127.0.0.1:34569
|
||||||
* `DNS_PUBLIC=tcp` or `DNS_PUBLIC=tcp://x.x.x.x` where x.x.x.x is the IP of the
|
HiddenServicePort 34566 127.0.0.1:34566
|
||||||
desired DNS server, for DNS requests to go over TCP, so that they are routed
|
HiddenServiceVersion 3
|
||||||
through Tor. When IP is not specified, monerod uses the default list of
|
```
|
||||||
servers defined in [src/common/dns_utils.cpp](src/common/dns_utils.cpp).
|
save and close nano
|
||||||
* `TORSOCKS_ALLOW_INBOUND=1` to tell torsocks to allow monerod to bind to interfaces
|
|
||||||
to accept connections from the wallet. On some Linux systems, torsocks
|
|
||||||
allows binding to localhost by default, so setting this variable is only
|
|
||||||
necessary to allow binding to local LAN/VPN interfaces to allow wallets to
|
|
||||||
connect from remote hosts. On other systems, it may be needed for local wallets
|
|
||||||
as well.
|
|
||||||
* Do NOT pass `--detach` when running through torsocks with systemd, (see
|
|
||||||
[utils/systemd/monerod.service](utils/systemd/monerod.service) for details).
|
|
||||||
* If you use the wallet with a Tor daemon via the loopback IP (eg, 127.0.0.1:9050),
|
|
||||||
then use `--untrusted-daemon` unless it is your own hidden service.
|
|
||||||
|
|
||||||
Example command line to start monerod through Tor:
|
* `sudo /etc/init.d/tor restart && sudo systemctl enable tor`
|
||||||
|
* copy [wow.conf](https://git.wownero.com/wownero/wownero/raw/branch/master/wow.conf) file and save it in same directory as `wownerod`.
|
||||||
|
* start wownerod like this:
|
||||||
|
|
||||||
```bash
|
```
|
||||||
DNS_PUBLIC=tcp torsocks monerod --p2p-bind-ip 127.0.0.1 --no-igd
|
./wownerod --config-file=wow.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
### Using Tor on Tails
|
* `sudo cat /var/lib/tor/wownero/hostname`
|
||||||
|
copy your onion address and share node with others [here](https://monero.fail/?crypto=wownero) and [here](https://forum.wownero.com/t/wownero-tor-onion-sites/623)
|
||||||
|
|
||||||
TAILS ships with a very restrictive set of firewall rules. Therefore, you need
|
To share your node over p2p, uncomment first line of wownerod.conf and add your onion address.
|
||||||
to add a rule to allow this connection too, in addition to telling torsocks to
|
|
||||||
allow inbound connections. Full example:
|
More information on running Tor and i2p nodes is available [here](https://forum.wownero.com/t/how-to-setup-a-full-node-with-tor-i2p/588)
|
||||||
|
|
||||||
|
### Access remote Tor node from CLI wallet
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo iptables -I OUTPUT 2 -p tcp -d 127.0.0.1 -m tcp --dport 18081 -j ACCEPT
|
|
||||||
DNS_PUBLIC=tcp torsocks ./monerod --p2p-bind-ip 127.0.0.1 --no-igd --rpc-bind-ip 127.0.0.1 \
|
|
||||||
--data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain
|
|
||||||
```
|
```
|
||||||
|
./wownero-wallet-cli --proxy 127.0.0.1:9050 --daemon-address iy6ry6uudpzvbd72zsipepukp6nsazjdu72n52vg3isfnxqn342flzad.onion:34568
|
||||||
## Pruning
|
|
||||||
|
|
||||||
As of May 2020, the full Monero blockchain file is about 80 GB. One can store a pruned blockchain, which is about 28 GB.
|
|
||||||
A pruned blockchain can only serve part of the historical chain data to other peers, but is otherwise identical in
|
|
||||||
functionality to the full blockchain.
|
|
||||||
To use a pruned blockchain, it is best to start the initial sync with --prune-blockchain. However, it is also possible
|
|
||||||
to prune an existing blockchain using the monero-blockchain-prune tool or using the --prune-blockchain monerod option
|
|
||||||
with an existing chain. If an existing chain exists, pruning will temporarily require disk space to store both the full
|
|
||||||
and pruned blockchains.
|
|
||||||
|
|
||||||
## Debugging
|
|
||||||
|
|
||||||
This section contains general instructions for debugging failed installs or problems encountered with Monero. First, ensure you are running the latest version built from the Github repo.
|
|
||||||
|
|
||||||
### Obtaining stack traces and core dumps on Unix systems
|
|
||||||
|
|
||||||
We generally use the tool `gdb` (GNU debugger) to provide stack trace functionality, and `ulimit` to provide core dumps in builds which crash or segfault.
|
|
||||||
|
|
||||||
* To use `gdb` in order to obtain a stack trace for a build that has stalled:
|
|
||||||
|
|
||||||
Run the build.
|
|
||||||
|
|
||||||
Once it stalls, enter the following command:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gdb /path/to/monerod `pidof monerod`
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Type `thread apply all bt` within gdb in order to obtain the stack trace
|
|
||||||
|
|
||||||
* If however the core dumps or segfaults:
|
|
||||||
|
|
||||||
Enter `ulimit -c unlimited` on the command line to enable unlimited filesizes for core dumps
|
|
||||||
|
|
||||||
Enter `echo core | sudo tee /proc/sys/kernel/core_pattern` to stop cores from being hijacked by other tools
|
|
||||||
|
|
||||||
Run the build.
|
|
||||||
|
|
||||||
When it terminates with an output along the lines of "Segmentation fault (core dumped)", there should be a core dump file in the same directory as monerod. It may be named just `core`, or `core.xxxx` with numbers appended.
|
|
||||||
|
|
||||||
You can now analyse this core dump with `gdb` as follows:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gdb /path/to/monerod /path/to/dumpfile`
|
|
||||||
```
|
|
||||||
|
|
||||||
Print the stack trace with `bt`
|
|
||||||
|
|
||||||
* If a program crashed and cores are managed by systemd, the following can also get a stack trace for that crash:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
coredumpctl -1 gdb
|
|
||||||
```
|
|
||||||
|
|
||||||
#### To run Monero within gdb:
|
|
||||||
|
|
||||||
Type `gdb /path/to/monerod`
|
|
||||||
|
|
||||||
Pass command-line options with `--args` followed by the relevant arguments
|
|
||||||
|
|
||||||
Type `run` to run monerod
|
|
||||||
|
|
||||||
### Analysing memory corruption
|
|
||||||
|
|
||||||
There are two tools available:
|
|
||||||
|
|
||||||
#### ASAN
|
|
||||||
|
|
||||||
Configure Monero with the -D SANITIZE=ON cmake flag, eg:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd build/debug && cmake -D SANITIZE=ON -D CMAKE_BUILD_TYPE=Debug ../..
|
|
||||||
```
|
|
||||||
|
|
||||||
You can then run the monero tools normally. Performance will typically halve.
|
|
||||||
|
|
||||||
#### valgrind
|
|
||||||
|
|
||||||
Install valgrind and run as `valgrind /path/to/monerod`. It will be very slow.
|
|
||||||
|
|
||||||
### LMDB
|
|
||||||
|
|
||||||
Instructions for debugging suspected blockchain corruption as per @HYC
|
|
||||||
|
|
||||||
There is an `mdb_stat` command in the LMDB source that can print statistics about the database but it's not routinely built. This can be built with the following command:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd ~/monero/external/db_drivers/liblmdb && make
|
|
||||||
```
|
|
||||||
|
|
||||||
The output of `mdb_stat -ea <path to blockchain dir>` will indicate inconsistencies in the blocks, block_heights and block_info table.
|
|
||||||
|
|
||||||
The output of `mdb_dump -s blocks <path to blockchain dir>` and `mdb_dump -s block_info <path to blockchain dir>` is useful for indicating whether blocks and block_info contain the same keys.
|
|
||||||
|
|
||||||
These records are dumped as hex data, where the first line is the key and the second line is the data.
|
|
||||||
|
|
||||||
# Known Issues
|
|
||||||
|
|
||||||
## Protocols
|
|
||||||
|
|
||||||
### Socket-based
|
|
||||||
|
|
||||||
Because of the nature of the socket-based protocols that drive monero, certain protocol weaknesses are somewhat unavoidable at this time. While these weaknesses can theoretically be fully mitigated, the effort required (the means) may not justify the ends. As such, please consider taking the following precautions if you are a monero node operator:
|
|
||||||
|
|
||||||
- Run `monerod` on a "secured" machine. If operational security is not your forte, at a very minimum, have a dedicated a computer running `monerod` and **do not** browse the web, use email clients, or use any other potentially harmful apps on your `monerod` machine. **Do not click links or load URL/MUA content on the same machine**. Doing so may potentially exploit weaknesses in commands which accept "localhost" and "127.0.0.1".
|
|
||||||
- If you plan on hosting a public "remote" node, start `monerod` with `--restricted-rpc`. This is a must.
|
|
||||||
|
|
||||||
### Blockchain-based
|
|
||||||
|
|
||||||
Certain blockchain "features" can be considered "bugs" if misused correctly. Consequently, please consider the following:
|
|
||||||
|
|
||||||
- When receiving monero, be aware that it may be locked for an arbitrary time if the sender elected to, preventing you from spending that monero until the lock time expires. You may want to hold off acting upon such a transaction until the unlock time lapses. To get a sense of that time, you can consider the remaining blocktime until unlock as seen in the `show_transfers` command.
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ macro(CHECK_LINKER_FLAG flag VARIABLE)
|
|||||||
${_cle_source}
|
${_cle_source}
|
||||||
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${flag}
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${flag}
|
||||||
CMAKE_FLAGS
|
CMAKE_FLAGS
|
||||||
|
"-DCMAKE_EXE_LINKER_FLAGS=${flag}"
|
||||||
OUTPUT_VARIABLE OUTPUT)
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
unset(_cle_source)
|
unset(_cle_source)
|
||||||
set(CMAKE_C_FLAGS ${saved_CMAKE_C_FLAGS})
|
set(CMAKE_C_FLAGS ${saved_CMAKE_C_FLAGS})
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ endif()
|
|||||||
|
|
||||||
# Protobuf compilation test
|
# Protobuf compilation test
|
||||||
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
||||||
execute_process(COMMAND ${Protobuf_PROTOC_EXECUTABLE} -I "${CMAKE_SOURCE_DIR}/cmake" -I "${Protobuf_INCLUDE_DIR}" "${CMAKE_SOURCE_DIR}/cmake/test-protobuf.proto" --cpp_out ${CMAKE_BINARY_DIR} RESULT_VARIABLE RET OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR)
|
execute_process(COMMAND ${Protobuf_PROTOC_EXECUTABLE} -I "${CMAKE_CURRENT_LIST_DIR}" -I "${Protobuf_INCLUDE_DIR}" "${CMAKE_CURRENT_LIST_DIR}/test-protobuf.proto" --cpp_out ${CMAKE_BINARY_DIR} RESULT_VARIABLE RET OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR)
|
||||||
if(RET)
|
if(RET)
|
||||||
message(STATUS "Protobuf test generation failed: ${OUT} ${ERR}")
|
message(STATUS "Protobuf test generation failed: ${OUT} ${ERR}")
|
||||||
endif()
|
endif()
|
||||||
@@ -100,7 +100,7 @@ if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
|
|||||||
"${CMAKE_BINARY_DIR}"
|
"${CMAKE_BINARY_DIR}"
|
||||||
SOURCES
|
SOURCES
|
||||||
"${CMAKE_BINARY_DIR}/test-protobuf.pb.cc"
|
"${CMAKE_BINARY_DIR}/test-protobuf.pb.cc"
|
||||||
"${CMAKE_SOURCE_DIR}/cmake/test-protobuf.cpp"
|
"${CMAKE_CURRENT_LIST_DIR}/test-protobuf.cpp"
|
||||||
CMAKE_FLAGS
|
CMAKE_FLAGS
|
||||||
"-DINCLUDE_DIRECTORIES=${Protobuf_INCLUDE_DIR};${CMAKE_BINARY_DIR}"
|
"-DINCLUDE_DIRECTORIES=${Protobuf_INCLUDE_DIR};${CMAKE_BINARY_DIR}"
|
||||||
"-DCMAKE_CXX_STANDARD=11"
|
"-DCMAKE_CXX_STANDARD=11"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@@ -42,12 +42,19 @@
|
|||||||
find_program(CCACHE_FOUND ccache)
|
find_program(CCACHE_FOUND ccache)
|
||||||
if (CCACHE_FOUND)
|
if (CCACHE_FOUND)
|
||||||
# Try to compile a test program with ccache, in order to verify if it really works. (needed on exotic setups)
|
# Try to compile a test program with ccache, in order to verify if it really works. (needed on exotic setups)
|
||||||
# Create a temporary file with a simple program.
|
set(TEST_PROJECT "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp")
|
||||||
set(TEMP_CPP_FILE "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/test-program.cpp")
|
file(WRITE "${TEST_PROJECT}/CMakeLists.txt" [=[
|
||||||
file(WRITE "${TEMP_CPP_FILE}" "int main() { return 0; }")
|
cmake_minimum_required(VERSION 3.5)
|
||||||
# And run the found ccache on it.
|
project(test)
|
||||||
execute_process(COMMAND "${CCACHE_FOUND}" "${CMAKE_CXX_COMPILER}" "${TEMP_CPP_FILE}" RESULT_VARIABLE RET)
|
option (CCACHE "")
|
||||||
if (${RET} EQUAL 0)
|
file(WRITE "${CMAKE_SOURCE_DIR}/test.cpp" "int main() { return 0; }")
|
||||||
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE}")
|
||||||
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE}")
|
||||||
|
add_executable(main test.cpp)
|
||||||
|
]=])
|
||||||
|
try_compile(RET "${TEST_PROJECT}/build" "${TEST_PROJECT}" "test" CMAKE_FLAGS -DCCACHE="${CCACHE_FOUND}")
|
||||||
|
unset(TEST_PROJECT)
|
||||||
|
if (${RET})
|
||||||
# Success
|
# Success
|
||||||
message(STATUS "Found usable ccache: ${CCACHE_FOUND}")
|
message(STATUS "Found usable ccache: ${CCACHE_FOUND}")
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}")
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}")
|
||||||
|
|||||||
@@ -39,19 +39,28 @@ find_package_handle_standard_args(HIDAPI
|
|||||||
|
|
||||||
if(HIDAPI_FOUND)
|
if(HIDAPI_FOUND)
|
||||||
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARY}")
|
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARY}")
|
||||||
if((STATIC AND UNIX AND NOT APPLE) OR (DEPENDS AND CMAKE_SYSTEM_NAME STREQUAL "Linux"))
|
if((STATIC AND UNIX AND NOT APPLE) OR (DEPENDS AND CMAKE_SYSTEM_NAME STREQUAL "Linux") OR ANDROID)
|
||||||
find_library(LIBUSB-1.0_LIBRARY usb-1.0)
|
find_library(LIBUSB-1.0_LIBRARY usb-1.0)
|
||||||
find_library(LIBUDEV_LIBRARY udev)
|
find_library(LIBUDEV_LIBRARY udev)
|
||||||
if(LIBUSB-1.0_LIBRARY)
|
if(LIBUSB-1.0_LIBRARY)
|
||||||
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUSB-1.0_LIBRARY}")
|
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUSB-1.0_LIBRARY}")
|
||||||
if(LIBUDEV_LIBRARY)
|
if(LIBUDEV_LIBRARY)
|
||||||
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUDEV_LIBRARY}")
|
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUDEV_LIBRARY}")
|
||||||
else()
|
elseif(NOT ANDROID)
|
||||||
message(WARNING "libudev library not found, binaries may fail to link.")
|
message(WARNING "libudev library not found, binaries may fail to link.")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(WARNING "libusb-1.0 library not found, binaries may fail to link.")
|
message(WARNING "libusb-1.0 library not found, binaries may fail to link.")
|
||||||
endif()
|
endif()
|
||||||
|
if(ANDROID)
|
||||||
|
# libusb uses android log library
|
||||||
|
find_library(ANDROID_LOG_LIBRARY log)
|
||||||
|
if(ANDROID_LOG_LIBRARY)
|
||||||
|
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${ANDROID_LOG_LIBRARY}")
|
||||||
|
else()
|
||||||
|
message(WARNING "Android log library not found, binaries may fail to link.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(HIDAPI_INCLUDE_DIRS "${HIDAPI_INCLUDE_DIR}")
|
set(HIDAPI_INCLUDE_DIRS "${HIDAPI_INCLUDE_DIR}")
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ if ( LibUSB_FOUND )
|
|||||||
check_library_exists ( "${LibUSB_LIBRARIES}" libusb_get_device_list "" LibUSB_VERSION_1.0 )
|
check_library_exists ( "${LibUSB_LIBRARIES}" libusb_get_device_list "" LibUSB_VERSION_1.0 )
|
||||||
check_library_exists ( "${LibUSB_LIBRARIES}" libusb_get_port_numbers "" LibUSB_VERSION_1.0.16 )
|
check_library_exists ( "${LibUSB_LIBRARIES}" libusb_get_port_numbers "" LibUSB_VERSION_1.0.16 )
|
||||||
|
|
||||||
if((STATIC AND UNIX AND NOT APPLE) OR (DEPENDS AND CMAKE_SYSTEM_NAME STREQUAL "Linux"))
|
if((STATIC AND UNIX AND NOT APPLE) OR (DEPENDS AND CMAKE_SYSTEM_NAME STREQUAL "Linux") OR ANDROID)
|
||||||
find_library(LIBUDEV_LIBRARY udev)
|
find_library(LIBUDEV_LIBRARY udev)
|
||||||
if(LIBUDEV_LIBRARY)
|
if(LIBUDEV_LIBRARY)
|
||||||
set(LibUSB_LIBRARIES "${LibUSB_LIBRARIES};${LIBUDEV_LIBRARY}")
|
set(LibUSB_LIBRARIES "${LibUSB_LIBRARIES};${LIBUDEV_LIBRARY}")
|
||||||
@@ -113,7 +113,7 @@ if ( LibUSB_FOUND )
|
|||||||
if (APPLE OR LibUSB_VERSION_1.0.16 OR STATIC)
|
if (APPLE OR LibUSB_VERSION_1.0.16 OR STATIC)
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
if(DEPENDS)
|
if(DEPENDS)
|
||||||
list(APPEND TEST_COMPILE_EXTRA_LIBRARIES "-framework Foundation -framework IOKit")
|
list(APPEND TEST_COMPILE_EXTRA_LIBRARIES "-framework Foundation -framework IOKit -framework Security")
|
||||||
else()
|
else()
|
||||||
find_library(COREFOUNDATION CoreFoundation)
|
find_library(COREFOUNDATION CoreFoundation)
|
||||||
find_library(IOKIT IOKit)
|
find_library(IOKIT IOKit)
|
||||||
@@ -134,7 +134,7 @@ if ( LibUSB_FOUND )
|
|||||||
|
|
||||||
try_compile(LibUSB_COMPILE_TEST_PASSED
|
try_compile(LibUSB_COMPILE_TEST_PASSED
|
||||||
${CMAKE_BINARY_DIR}
|
${CMAKE_BINARY_DIR}
|
||||||
"${CMAKE_SOURCE_DIR}/cmake/test-libusb-version.c"
|
"${CMAKE_CURRENT_LIST_DIR}/test-libusb-version.c"
|
||||||
CMAKE_FLAGS
|
CMAKE_FLAGS
|
||||||
"-DINCLUDE_DIRECTORIES=${LibUSB_INCLUDE_DIRS}"
|
"-DINCLUDE_DIRECTORIES=${LibUSB_INCLUDE_DIRS}"
|
||||||
"-DLINK_DIRECTORIES=${LibUSB_LIBRARIES}"
|
"-DLINK_DIRECTORIES=${LibUSB_LIBRARIES}"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
find_path(Readline_ROOT_DIR
|
find_path(Readline_ROOT_DIR
|
||||||
NAMES include/readline/readline.h
|
NAMES include/readline/readline.h
|
||||||
PATHS /usr/local/opt/readline/ /opt/local/ /usr/local/ /usr/
|
PATHS /usr/local/opt/readline/ /opt/homebrew/opt/readline/ /opt/local/ /usr/local/ /usr/
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without modification, are
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
function (get_version_tag_from_git GIT)
|
function (get_version_tag_from_git GIT)
|
||||||
execute_process(COMMAND "${GIT}" rev-parse --short=9 HEAD
|
execute_process(COMMAND "${GIT}" rev-parse --short=9 HEAD
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||||
RESULT_VARIABLE RET
|
RESULT_VARIABLE RET
|
||||||
OUTPUT_VARIABLE COMMIT
|
OUTPUT_VARIABLE COMMIT
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
@@ -48,29 +48,21 @@ function (get_version_tag_from_git GIT)
|
|||||||
message(STATUS "You are currently on commit ${COMMIT}")
|
message(STATUS "You are currently on commit ${COMMIT}")
|
||||||
|
|
||||||
# Get all the tags
|
# Get all the tags
|
||||||
execute_process(COMMAND "${GIT}" rev-list --tags --max-count=1 --abbrev-commit
|
execute_process(COMMAND "${GIT}" tag -l --points-at HEAD
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||||
RESULT_VARIABLE RET
|
RESULT_VARIABLE RET
|
||||||
OUTPUT_VARIABLE TAGGEDCOMMIT
|
OUTPUT_VARIABLE TAG
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
if(NOT TAGGEDCOMMIT)
|
# Check if we're building that tagged commit or a different one
|
||||||
message(WARNING "Cannot determine most recent tag. Make sure that you are building either from a Git working tree or from a source archive.")
|
if(TAG)
|
||||||
|
message(STATUS "You are building a tagged release")
|
||||||
|
set(VERSIONTAG "release")
|
||||||
|
set(VERSION_IS_RELEASE "true")
|
||||||
|
else()
|
||||||
|
message(STATUS "You are ahead of or behind a tagged release")
|
||||||
set(VERSIONTAG "${COMMIT}")
|
set(VERSIONTAG "${COMMIT}")
|
||||||
set(VERSION_IS_RELEASE "false")
|
set(VERSION_IS_RELEASE "false")
|
||||||
else()
|
|
||||||
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
|
|
||||||
|
|
||||||
# Check if we're building that tagged commit or a different one
|
|
||||||
if(COMMIT STREQUAL TAGGEDCOMMIT)
|
|
||||||
message(STATUS "You are building a tagged release")
|
|
||||||
set(VERSIONTAG "release")
|
|
||||||
set(VERSION_IS_RELEASE "true")
|
|
||||||
else()
|
|
||||||
message(STATUS "You are ahead of or behind a tagged release")
|
|
||||||
set(VERSIONTAG "${COMMIT}")
|
|
||||||
set(VERSION_IS_RELEASE "false")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
72
cmake/SetClangTidy.cmake
Normal file
72
cmake/SetClangTidy.cmake
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
# https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_CLANG_TIDY.html
|
||||||
|
# This module sets the following variables:
|
||||||
|
# CMAKE_C_CLANG_TIDY
|
||||||
|
# CMAKE_CXX_CLANG_TIDY
|
||||||
|
# when clang-tidy is found in PATH. Afterwards, the code is being linted by the tool.
|
||||||
|
# The checks to be enabled can be manipulated with the variable MONERO_CLANG_TIDY_CHECKS
|
||||||
|
|
||||||
|
macro (monero_clang_tidy LANGUAGE)
|
||||||
|
set(TOOL_NAME "clang-tidy")
|
||||||
|
set(MONERO_CLANG_TIDY_MIN_VERSION "3.6")
|
||||||
|
if(${CMAKE_VERSION} VERSION_LESS "${MONERO_CLANG_TIDY_MIN_VERSION}")
|
||||||
|
message(FATAL_ERROR "Sorry, ${TOOL_NAME} is available for CMake from version ${MONERO_CLANG_TIDY_MIN_VERSION}")
|
||||||
|
else()
|
||||||
|
message(STATUS "Trying to enable ${TOOL_NAME}")
|
||||||
|
find_program(MONERO_CLANG_BIN ${TOOL_NAME})
|
||||||
|
if(NOT MONERO_CLANG_BIN)
|
||||||
|
message(FATAL_ERROR "${TOOL_NAME} not found! Try running: sudo apt install ${TOOL_NAME}")
|
||||||
|
else()
|
||||||
|
message(STATUS "Found ${MONERO_CLANG_BIN}")
|
||||||
|
set(MONERO_CLANG_TIDY_CHECKS
|
||||||
|
-header-filter=.; # By default the headers are excluded. This line enables them.
|
||||||
|
-checks=*; # Currently enabling all checks
|
||||||
|
# An example of selectively enabling checks:
|
||||||
|
#-checks=bugprone-*,cppcoreguidelines-avoid-goto # Have to be in one line :(
|
||||||
|
)
|
||||||
|
# Current list of checks is avaibale under:
|
||||||
|
# https://clang.llvm.org/extra/clang-tidy/
|
||||||
|
if (${LANGUAGE} STREQUAL "C")
|
||||||
|
set(CMAKE_C_CLANG_TIDY
|
||||||
|
${MONERO_CLANG_BIN}; # Mind the semicolon
|
||||||
|
${MONERO_CLANG_TIDY_CHECKS}
|
||||||
|
)
|
||||||
|
elseif (${LANGUAGE} STREQUAL "CXX")
|
||||||
|
set(CMAKE_CXX_CLANG_TIDY
|
||||||
|
${MONERO_CLANG_BIN}; # Mind the semicolon
|
||||||
|
${MONERO_CLANG_TIDY_CHECKS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "${TOOL_NAME}: Unsupported language: ${LANGUAGE}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
function (write_version tag)
|
function (write_version tag)
|
||||||
set(VERSIONTAG "${tag}" CACHE STRING "The tag portion of the Monero software version" FORCE)
|
set(VERSIONTAG "${tag}" CACHE STRING "The tag portion of the Monero software version" FORCE)
|
||||||
configure_file("${CMAKE_SOURCE_DIR}/src/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
|
configure_file("${CMAKE_CURRENT_LIST_DIR}/../src/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
find_package(Git QUIET)
|
find_package(Git QUIET)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2022, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2022, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2022, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2022, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@@ -26,5 +26,6 @@
|
|||||||
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
# 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.
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
monero_enable_coverage()
|
||||||
add_subdirectory(epee)
|
add_subdirectory(epee)
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ brew "unbound"
|
|||||||
brew "libsodium"
|
brew "libsodium"
|
||||||
brew "miniupnpc"
|
brew "miniupnpc"
|
||||||
brew "readline"
|
brew "readline"
|
||||||
brew "ldns"
|
|
||||||
brew "expat"
|
brew "expat"
|
||||||
|
brew "ccache"
|
||||||
brew "doxygen"
|
brew "doxygen"
|
||||||
brew "graphviz"
|
brew "graphviz"
|
||||||
brew "libunwind-headers"
|
brew "libunwind-headers"
|
||||||
|
|||||||
@@ -2,16 +2,15 @@
|
|||||||
|
|
||||||
SOURCES_PATH ?= $(BASEDIR)/sources
|
SOURCES_PATH ?= $(BASEDIR)/sources
|
||||||
BASE_CACHE ?= $(BASEDIR)/built
|
BASE_CACHE ?= $(BASEDIR)/built
|
||||||
SDK_PATH ?= $(BASEDIR)/SDKs
|
FALLBACK_DOWNLOAD_PATH ?= https://downloads.getmonero.org/depends-sources
|
||||||
FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources
|
|
||||||
|
|
||||||
BUILD = $(shell ./config.guess)
|
BUILD = $(shell ./config.guess)
|
||||||
HOST ?= $(BUILD)
|
HOST ?= $(BUILD)
|
||||||
PATCHES_PATH = $(BASEDIR)/patches
|
PATCHES_PATH = $(BASEDIR)/patches
|
||||||
BASEDIR = $(CURDIR)
|
BASEDIR = $(CURDIR)
|
||||||
HASH_LENGTH:=11
|
HASH_LENGTH:=11
|
||||||
DOWNLOAD_CONNECT_TIMEOUT:=10
|
DOWNLOAD_CONNECT_TIMEOUT:=30
|
||||||
DOWNLOAD_RETRIES:=3
|
DOWNLOAD_RETRIES:=5
|
||||||
HOST_ID_SALT ?= salt
|
HOST_ID_SALT ?= salt
|
||||||
BUILD_ID_SALT ?= salt
|
BUILD_ID_SALT ?= salt
|
||||||
|
|
||||||
@@ -111,8 +110,7 @@ $(host_arch)_$(host_os)_id_string+=$(shell $(host_CXX) --version 2>/dev/null)
|
|||||||
$(host_arch)_$(host_os)_id_string+=$(shell $(host_RANLIB) --version 2>/dev/null)
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_RANLIB) --version 2>/dev/null)
|
||||||
$(host_arch)_$(host_os)_id_string+=$(shell $(host_STRIP) --version 2>/dev/null)
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_STRIP) --version 2>/dev/null)
|
||||||
|
|
||||||
qt_packages_$(NO_QT) = $(qt_packages)
|
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages)
|
||||||
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(qt_packages_)
|
|
||||||
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages)
|
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages)
|
||||||
|
|
||||||
all_packages = $(packages) $(native_packages)
|
all_packages = $(packages) $(native_packages)
|
||||||
@@ -185,7 +183,6 @@ $(host_prefix)/share/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_
|
|||||||
-e 's|@build_tests@|$(build_tests)|' \
|
-e 's|@build_tests@|$(build_tests)|' \
|
||||||
-e 's|@depends@|$(host_cmake)|' \
|
-e 's|@depends@|$(host_cmake)|' \
|
||||||
-e 's|@prefix@|$($(host_arch)_$(host_os)_prefix)|'\
|
-e 's|@prefix@|$($(host_arch)_$(host_os)_prefix)|'\
|
||||||
-e 's|@sdk@|$(SDK_PATH)|'\
|
|
||||||
-e 's|@arch@|$(host_arch)|'\
|
-e 's|@arch@|$(host_arch)|'\
|
||||||
$< > $@
|
$< > $@
|
||||||
$(AT)touch $@
|
$(AT)touch $@
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ Common `host-platform-triplets` for cross compilation are:
|
|||||||
|
|
||||||
- `i686-w64-mingw32` for Win32
|
- `i686-w64-mingw32` for Win32
|
||||||
- `x86_64-w64-mingw32` for Win64
|
- `x86_64-w64-mingw32` for Win64
|
||||||
- `x86_64-apple-darwin11` for MacOSX
|
- `x86_64-apple-darwin11` for MacOSX x86_64
|
||||||
- `arm-linux-gnueabihf` for Linux ARM 32 bit
|
- `arm-linux-gnueabihf` for Linux ARM 32 bit
|
||||||
- `aarch64-linux-gnu` for Linux ARM 64 bit
|
- `aarch64-linux-gnu` for Linux ARM 64 bit
|
||||||
- `riscv64-linux-gnu` for Linux RISCV 64 bit
|
- `riscv64-linux-gnu` for Linux RISCV 64 bit
|
||||||
@@ -43,7 +43,6 @@ The following can be set when running make: make FOO=bar
|
|||||||
```
|
```
|
||||||
SOURCES_PATH: downloaded sources will be placed here
|
SOURCES_PATH: downloaded sources will be placed here
|
||||||
BASE_CACHE: built packages will be placed here
|
BASE_CACHE: built packages will be placed here
|
||||||
SDK_PATH: Path where sdk's can be found (used by OSX)
|
|
||||||
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
|
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
|
||||||
DEBUG: disable some optimizations and enable more runtime checking
|
DEBUG: disable some optimizations and enable more runtime checking
|
||||||
HOST_ID_SALT: Optional salt to use when generating host package ids
|
HOST_ID_SALT: Optional salt to use when generating host package ids
|
||||||
@@ -59,14 +58,6 @@ download-win: run 'make download-win' to fetch all sources needed for win builds
|
|||||||
download-linux: run 'make download-linux' to fetch all sources needed for linux builds
|
download-linux: run 'make download-linux' to fetch all sources needed for linux builds
|
||||||
```
|
```
|
||||||
|
|
||||||
#Darwin (macos) builds:
|
|
||||||
|
|
||||||
To build with the x86_64-apple-darwin11 you require the mac os developer tools in MacOSX10.11.sdk.
|
|
||||||
Download it from apple, or search for it on github. Create a new directoty called SDKs in this
|
|
||||||
directory and place the entire MacOSX10.11.sdk folder in it. The depends build will then pick it up automatically
|
|
||||||
(without requiring SDK_PATH).
|
|
||||||
|
|
||||||
|
|
||||||
#Mingw builds
|
#Mingw builds
|
||||||
|
|
||||||
Building for 32/64bit mingw requires switching alternatives to a posix mode
|
Building for 32/64bit mingw requires switching alternatives to a posix mode
|
||||||
|
|||||||
@@ -7,27 +7,12 @@ ac_tool_prefix=${host_alias}-
|
|||||||
if test -z $with_boost; then
|
if test -z $with_boost; then
|
||||||
with_boost=$depends_prefix
|
with_boost=$depends_prefix
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_plugindir; then
|
|
||||||
with_qt_plugindir=$depends_prefix/plugins
|
|
||||||
fi
|
|
||||||
if test -z $with_qt_translationdir; then
|
|
||||||
with_qt_translationdir=$depends_prefix/translations
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x@host_os@ = xdarwin; then
|
if test x@host_os@ = xdarwin; then
|
||||||
BREW=no
|
BREW=no
|
||||||
PORT=no
|
PORT=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x@host_os@ = xmingw32; then
|
|
||||||
if test -z $with_qt_incdir; then
|
|
||||||
with_qt_incdir=$depends_prefix/include
|
|
||||||
fi
|
|
||||||
if test -z $with_qt_libdir; then
|
|
||||||
with_qt_libdir=$depends_prefix/lib
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
PATH=$depends_prefix/native/bin:$PATH
|
PATH=$depends_prefix/native/bin:$PATH
|
||||||
PKG_CONFIG="`which pkg-config` --static"
|
PKG_CONFIG="`which pkg-config` --static"
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ endef
|
|||||||
define fetch_file
|
define fetch_file
|
||||||
( test -f $$($(1)_source_dir)/$(4) || \
|
( test -f $$($(1)_source_dir)/$(4) || \
|
||||||
( $(call fetch_file_inner,$(1),$(2),$(3),$(4),$(5)) || \
|
( $(call fetch_file_inner,$(1),$(2),$(3),$(4),$(5)) || \
|
||||||
$(call fetch_file_inner,$(1),$(FALLBACK_DOWNLOAD_PATH),$(3),$(4),$(5))))
|
$(call fetch_file_inner,$(1),$(FALLBACK_DOWNLOAD_PATH),$(4),$(4),$(5))))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define int_get_build_recipe_hash
|
define int_get_build_recipe_hash
|
||||||
@@ -133,13 +133,21 @@ $(1)_config_env+=$($(1)_config_env_$(host_arch)) $($(1)_config_env_$(host_arch)_
|
|||||||
$(1)_config_env+=$($(1)_config_env_$(host_os)) $($(1)_config_env_$(host_os)_$(release_type))
|
$(1)_config_env+=$($(1)_config_env_$(host_os)) $($(1)_config_env_$(host_os)_$(release_type))
|
||||||
$(1)_config_env+=$($(1)_config_env_$(host_arch)_$(host_os)) $($(1)_config_env_$(host_arch)_$(host_os)_$(release_type))
|
$(1)_config_env+=$($(1)_config_env_$(host_arch)_$(host_os)) $($(1)_config_env_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
|
$(1)_build_env+=$$($(1)_build_env_$(release_type))
|
||||||
|
$(1)_build_env+=$($(1)_build_env_$(host_arch)) $($(1)_build_env_$(host_arch)_$(release_type))
|
||||||
|
$(1)_build_env+=$($(1)_build_env_$(host_os)) $($(1)_build_env_$(host_os)_$(release_type))
|
||||||
|
$(1)_build_env+=$($(1)_build_env_$(host_arch)_$(host_os)) $($(1)_build_env_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
$(1)_config_env+=PKG_CONFIG_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig
|
$(1)_config_env+=PKG_CONFIG_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig
|
||||||
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig
|
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig
|
||||||
$(1)_config_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
$(1)_config_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||||
$(1)_build_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
$(1)_build_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||||
$(1)_stage_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
$(1)_stage_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||||
$(1)_autoconf=./configure --host=$($($(1)_type)_host) --disable-dependency-tracking --prefix=$($($(1)_type)_prefix) $$($(1)_config_opts) CC="$$($(1)_cc)" CXX="$$($(1)_cxx)"
|
$(1)_autoconf=./configure --host=$($($(1)_type)_host) --prefix=$($($(1)_type)_prefix) $$($(1)_config_opts) CC="$$($(1)_cc)" CXX="$$($(1)_cxx)"
|
||||||
|
|
||||||
|
ifneq ($(1),libusb)
|
||||||
|
$(1)_autoconf += --disable-dependency-tracking
|
||||||
|
endif
|
||||||
ifneq ($($(1)_nm),)
|
ifneq ($($(1)_nm),)
|
||||||
$(1)_autoconf += NM="$$($(1)_nm)"
|
$(1)_autoconf += NM="$$($(1)_nm)"
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
OSX_MIN_VERSION=10.8
|
OSX_MIN_VERSION=10.8
|
||||||
OSX_SDK_VERSION=10.11
|
LD64_VERSION=609
|
||||||
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
ifeq (aarch64, $(host_arch))
|
||||||
LD64_VERSION=253.9
|
CC_target=arm64-apple-$(host_os)
|
||||||
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -B $(host_prefix)/native/bin
|
else
|
||||||
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++ -B $(host_prefix)/native/bin
|
CC_target=$(host)
|
||||||
|
endif
|
||||||
|
darwin_CC=clang -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(host_prefix)/native/SDK/ -mlinker-version=$(LD64_VERSION) -B$(host_prefix)/native/bin/$(host)-
|
||||||
|
darwin_CXX=clang++ -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(host_prefix)/native/SDK/ -mlinker-version=$(LD64_VERSION) -stdlib=libc++ -B$(host_prefix)/native/bin/$(host)-
|
||||||
|
|
||||||
darwin_CFLAGS=-pipe
|
darwin_CFLAGS=-pipe
|
||||||
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
||||||
@@ -15,4 +18,4 @@ darwin_release_CXXFLAGS=$(darwin_release_CFLAGS)
|
|||||||
darwin_debug_CFLAGS=-O1
|
darwin_debug_CFLAGS=-O1
|
||||||
darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS)
|
darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS)
|
||||||
|
|
||||||
darwin_native_toolchain=native_cctools
|
darwin_native_toolchain=native_cctools darwin_sdk
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package=boost
|
package=boost
|
||||||
$(package)_version=1_64_0
|
$(package)_version=1_64_0
|
||||||
$(package)_download_path=https://dl.bintray.com/boostorg/release/1.64.0/source/
|
$(package)_download_path=https://downloads.sourceforge.net/project/boost/boost/1.64.0/
|
||||||
$(package)_file_name=$(package)_$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)_$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332
|
$(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332
|
||||||
$(package)_dependencies=libiconv
|
$(package)_dependencies=libiconv
|
||||||
$(package)_patches=fix_aroptions.patch
|
$(package)_patches=fix_aroptions.patch fix_arm_arch.patch
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts_release=variant=release
|
$(package)_config_opts_release=variant=release
|
||||||
@@ -13,7 +13,7 @@ $(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-
|
|||||||
$(package)_config_opts+=threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1
|
$(package)_config_opts+=threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1
|
||||||
$(package)_config_opts_linux=threadapi=pthread runtime-link=shared
|
$(package)_config_opts_linux=threadapi=pthread runtime-link=shared
|
||||||
$(package)_config_opts_android=threadapi=pthread runtime-link=static target-os=android
|
$(package)_config_opts_android=threadapi=pthread runtime-link=static target-os=android
|
||||||
$(package)_config_opts_darwin=--toolset=darwin-4.2.1 runtime-link=shared
|
$(package)_config_opts_darwin=--toolset=darwin runtime-link=shared
|
||||||
$(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static
|
$(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static
|
||||||
$(package)_config_opts_x86_64_mingw32=address-model=64
|
$(package)_config_opts_x86_64_mingw32=address-model=64
|
||||||
$(package)_config_opts_i686_mingw32=address-model=32
|
$(package)_config_opts_i686_mingw32=address-model=32
|
||||||
@@ -30,6 +30,7 @@ endef
|
|||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
patch -p1 < $($(package)_patch_dir)/fix_aroptions.patch &&\
|
patch -p1 < $($(package)_patch_dir)/fix_aroptions.patch &&\
|
||||||
|
patch -p1 < $($(package)_patch_dir)/fix_arm_arch.patch &&\
|
||||||
echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : <cxxflags>\"$($(package)_cxxflags) $($(package)_cppflags)\" <linkflags>\"$($(package)_ldflags)\" <archiver>\"$(boost_archiver_$(host_os))\" <arflags>\"$($(package)_arflags)\" <striper>\"$(host_STRIP)\" <ranlib>\"$(host_RANLIB)\" <rc>\"$(host_WINDRES)\" : ;" > user-config.jam
|
echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : <cxxflags>\"$($(package)_cxxflags) $($(package)_cppflags)\" <linkflags>\"$($(package)_ldflags)\" <archiver>\"$(boost_archiver_$(host_os))\" <arflags>\"$($(package)_arflags)\" <striper>\"$(host_STRIP)\" <ranlib>\"$(host_RANLIB)\" <rc>\"$(host_WINDRES)\" : ;" > user-config.jam
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
10
contrib/depends/packages/darwin_sdk.mk
Normal file
10
contrib/depends/packages/darwin_sdk.mk
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package=darwin_sdk
|
||||||
|
$(package)_version=11.1
|
||||||
|
$(package)_download_path=https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/
|
||||||
|
$(package)_file_name=MacOSX$($(package)_version).sdk.tar.xz
|
||||||
|
$(package)_sha256_hash=68797baaacb52f56f713400de306a58a7ca00b05c3dc6d58f0a8283bcac721f8
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
mkdir -p $($(package)_staging_dir)/$(host_prefix)/native/SDK &&\
|
||||||
|
mv * $($(package)_staging_dir)/$(host_prefix)/native/SDK
|
||||||
|
endef
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
package=eudev
|
package=eudev
|
||||||
$(package)_version=v3.2.6
|
$(package)_version=v3.2.6
|
||||||
$(package)_download_path=https://github.com/gentoo/eudev/archive/
|
$(package)_download_path=https://github.com/gentoo/eudev/archive/
|
||||||
$(package)_file_name=$($(package)_version).tar.gz
|
$(package)_download_file=$($(package)_version).tar.gz
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=a96ecb8637667897b8bd4dee4c22c7c5f08b327be45186e912ce6bc768385852
|
$(package)_sha256_hash=a96ecb8637667897b8bd4dee4c22c7c5f08b327be45186e912ce6bc768385852
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package=expat
|
package=expat
|
||||||
$(package)_version=2.2.4
|
$(package)_version=2.4.1
|
||||||
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_2_4
|
$(package)_download_path=https://github.com/libexpat/libexpat/releases/download/R_2_4_1
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=03ad85db965f8ab2d27328abcf0bc5571af6ec0a414874b2066ee3fdd372019e
|
$(package)_sha256_hash=2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--enable-static
|
$(package)_config_opts=--enable-static
|
||||||
@@ -11,7 +11,7 @@ $(package)_config_opts+=--prefix=$(host_prefix)
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
$($(package)_autoconf) $($(package)_config_opts)
|
$($(package)_autoconf)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ endef
|
|||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
mkdir bin &&\
|
mkdir bin &&\
|
||||||
echo "exec /usr/bin/clang-8 -target x86_64-unknown-freebsd$($(package)_version) --sysroot=$(host_prefix)/native $$$$""@" > bin/clang-8 &&\
|
echo "#!/bin/sh\n\nexec /usr/bin/clang-8 -target x86_64-unknown-freebsd$($(package)_version) --sysroot=$(host_prefix)/native $$$$""@" > bin/clang-8 &&\
|
||||||
echo "exec /usr/bin/clang++-8 -target x86_64-unknown-freebsd$($(package)_version) --sysroot=$(host_prefix)/native $$$$""@" > bin/clang++-8 &&\
|
echo "#!/bin/sh\n\nexec /usr/bin/clang++-8 -target x86_64-unknown-freebsd$($(package)_version) --sysroot=$(host_prefix)/native $$$$""@" > bin/clang++-8 &&\
|
||||||
chmod 755 bin/*
|
chmod 755 bin/*
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package=gtest
|
package=gtest
|
||||||
$(package)_version=1.8.1
|
$(package)_version=1.8.1
|
||||||
$(package)_download_path=https://github.com/google/googletest/archive/
|
$(package)_download_path=https://github.com/google/googletest/archive/
|
||||||
$(package)_file_name=release-$($(package)_version).tar.gz
|
$(package)_download_file=release-$($(package)_version).tar.gz
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
|
$(package)_sha256_hash=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
|
||||||
$(package)_cxxflags=-std=c++11
|
$(package)_cxxflags=-std=c++11
|
||||||
$(package)_cxxflags_linux=-fPIC
|
$(package)_cxxflags_linux=-fPIC
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
package=hidapi
|
package=hidapi
|
||||||
$(package)_version=0.9.0
|
$(package)_version=0.13.1
|
||||||
$(package)_download_path=https://github.com/libusb/hidapi/archive
|
$(package)_download_path=https://github.com/libusb/hidapi/archive/refs/tags
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=630ee1834bdd5c5761ab079fd04f463a89585df8fcae51a7bfe4229b1e02a652
|
$(package)_sha256_hash=476a2c9a4dc7d1fc97dd223b84338dbea3809a84caea2dcd887d9778725490e3
|
||||||
$(package)_linux_dependencies=libusb eudev
|
$(package)_linux_dependencies=libusb eudev
|
||||||
|
$(package)_patches=missing_win_include.patch
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--enable-static --disable-shared
|
$(package)_config_opts=--enable-static --disable-shared
|
||||||
$(package)_config_opts+=--prefix=$(host_prefix)
|
$(package)_config_opts+=--prefix=$(host_prefix)
|
||||||
$(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)"
|
|
||||||
$(package)_config_opts_linux+=libudev_LIBS="-L$(host_prefix)/lib -ludev"
|
$(package)_config_opts_linux+=libudev_LIBS="-L$(host_prefix)/lib -ludev"
|
||||||
$(package)_config_opts_linux+=libudev_CFLAGS=-I$(host_prefix)/include
|
$(package)_config_opts_linux+=libudev_CFLAGS=-I$(host_prefix)/include
|
||||||
$(package)_config_opts_linux+=libusb_LIBS="-L$(host_prefix)/lib -lusb-1.0"
|
$(package)_config_opts_linux+=libusb_LIBS="-L$(host_prefix)/lib -lusb-1.0"
|
||||||
@@ -16,9 +16,12 @@ $(package)_config_opts_linux+=libusb_CFLAGS=-I$(host_prefix)/include/libusb-1.0
|
|||||||
$(package)_config_opts_linux+=--with-pic
|
$(package)_config_opts_linux+=--with-pic
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/missing_win_include.patch && ./bootstrap
|
||||||
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
./bootstrap &&\
|
$($(package)_autoconf) AR_FLAGS=$($(package)_arflags)
|
||||||
$($(package)_autoconf) $($(package)_config_opts) AR_FLAGS=$($(package)_arflags)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
package=ldns
|
|
||||||
$(package)_version=1.6.17
|
|
||||||
$(package)_download_path=https://www.nlnetlabs.nl/downloads/ldns/
|
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
|
||||||
$(package)_sha256_hash=8b88e059452118e8949a2752a55ce59bc71fa5bc414103e17f5b6b06f9bcc8cd
|
|
||||||
$(package)_dependencies=openssl
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
|
||||||
$(package)_config_opts=--disable-shared --enable-static --with-drill
|
|
||||||
$(package)_config_opts+=--with-ssl=$(host_prefix)
|
|
||||||
$(package)_config_opts_release=--disable-debug-mode
|
|
||||||
$(package)_config_opts_linux=--with-pic
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
|
||||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub .
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_config_cmds
|
|
||||||
$($(package)_autoconf)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_build_cmds
|
|
||||||
$(MAKE)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install-h install-lib
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_postprocess_cmds
|
|
||||||
rm lib/*.la
|
|
||||||
endef
|
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
package=libusb
|
package=libusb
|
||||||
$(package)_version=1.0.22
|
$(package)_version=1.0.26
|
||||||
$(package)_download_path=https://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-$($(package)_version)/
|
$(package)_download_path=https://github.com/libusb/libusb/releases/download/v$($(package)_version)
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
$(package)_sha256_hash=75aeb9d59a4fdb800d329a545c2e6799f732362193b465ea198f2aa275518157
|
$(package)_sha256_hash=12ce7a61fc9854d1d2a1ffe095f7b5fac19ddba095c259e6067a46500381b5a5
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
autoreconf -i
|
autoreconf -i
|
||||||
|
|||||||
@@ -1,49 +1,17 @@
|
|||||||
package=native_cctools
|
package=native_cctools
|
||||||
$(package)_version=807d6fd1be5d2224872e381870c0a75387fe05e6
|
$(package)_version=04663295d0425abfac90a42440a7ec02d7155fea
|
||||||
$(package)_download_path=https://github.com/theuni/cctools-port/archive
|
$(package)_download_path=https://github.com/tpoechtrager/cctools-port/archive
|
||||||
$(package)_file_name=$($(package)_version).tar.gz
|
$(package)_download_file=$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=a09c9ba4684670a0375e42d9d67e7f12c1f62581a27f28f7c825d6d7032ccc6a
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=70a7189418c2086d20c299c5d59250cf5940782c778892ccc899c66516ed240e
|
||||||
$(package)_build_subdir=cctools
|
$(package)_build_subdir=cctools
|
||||||
$(package)_clang_version=3.7.1
|
$(package)_dependencies=native_clang native_libtapi
|
||||||
$(package)_clang_download_path=http://llvm.org/releases/$($(package)_clang_version)
|
|
||||||
$(package)_clang_download_file=clang+llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz
|
|
||||||
$(package)_clang_file_name=clang-llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz
|
|
||||||
$(package)_clang_sha256_hash=99b28a6b48e793705228a390471991386daa33a9717cd9ca007fcdde69608fd9
|
|
||||||
$(package)_extra_sources=$($(package)_clang_file_name)
|
|
||||||
$(package)_patches=skip_otool.patch
|
|
||||||
|
|
||||||
define $(package)_fetch_cmds
|
|
||||||
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
|
|
||||||
$(call fetch_file,$(package),$($(package)_clang_download_path),$($(package)_clang_download_file),$($(package)_clang_file_name),$($(package)_clang_sha256_hash))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_extract_cmds
|
|
||||||
mkdir -p $($(package)_extract_dir) && \
|
|
||||||
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
||||||
echo "$($(package)_clang_sha256_hash) $($(package)_source_dir)/$($(package)_clang_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
||||||
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
||||||
mkdir -p toolchain/bin toolchain/lib/clang/3.5/include && \
|
|
||||||
tar --strip-components=1 -C toolchain -xf $($(package)_source_dir)/$($(package)_clang_file_name) && \
|
|
||||||
rm -f toolchain/lib/libc++abi.so* && \
|
|
||||||
echo "#!/bin/sh" > toolchain/bin/$(host)-dsymutil && \
|
|
||||||
echo "exit 0" >> toolchain/bin/$(host)-dsymutil && \
|
|
||||||
chmod +x toolchain/bin/$(host)-dsymutil && \
|
|
||||||
tar --strip-components=1 -xf $($(package)_source)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--target=$(host) --disable-lto-support
|
$(package)_config_opts=--target=$(host) --disable-lto-support --with-libtapi=$(host_prefix)
|
||||||
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
|
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
|
||||||
$(package)_cc=$($(package)_extract_dir)/toolchain/bin/clang
|
$(package)_cc=$(host_prefix)/native/bin/clang
|
||||||
$(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++
|
$(package)_cxx=$(host_prefix)/native/bin/clang++
|
||||||
endef
|
|
||||||
|
|
||||||
# If clang gets updated to a version with a fix for https://reviews.llvm.org/D50559
|
|
||||||
# then the patch that skips otool can be removed.
|
|
||||||
define $(package)_preprocess_cmds
|
|
||||||
patch -p0 < $($(package)_patch_dir)/skip_otool.patch && \
|
|
||||||
cd $($(package)_build_subdir); ./autogen.sh && \
|
|
||||||
sed -i.old "/define HAVE_PTHREADS/d" ld64/src/ld/InputFiles.h
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
@@ -56,15 +24,5 @@ endef
|
|||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install && \
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install && \
|
||||||
cp $($(package)_extract_dir)/cctools/misc/install_name_tool $($(package)_staging_prefix_dir)/bin/ &&\
|
cp $($(package)_extract_dir)/cctools/misc/install_name_tool $($(package)_staging_prefix_dir)/bin/
|
||||||
cd $($(package)_extract_dir)/toolchain && \
|
|
||||||
mkdir -p $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include && \
|
|
||||||
mkdir -p $($(package)_staging_prefix_dir)/bin $($(package)_staging_prefix_dir)/include && \
|
|
||||||
cp bin/clang $($(package)_staging_prefix_dir)/bin/ &&\
|
|
||||||
cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\
|
|
||||||
cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \
|
|
||||||
cp -rf lib/clang/$($(package)_clang_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include/ && \
|
|
||||||
cp bin/llvm-dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \
|
|
||||||
if `test -d include/c++/`; then cp -rf include/c++/ $($(package)_staging_prefix_dir)/include/; fi && \
|
|
||||||
if `test -d lib/c++/`; then cp -rf lib/c++/ $($(package)_staging_prefix_dir)/lib/; fi
|
|
||||||
endef
|
endef
|
||||||
|
|||||||
29
contrib/depends/packages/native_clang.mk
Normal file
29
contrib/depends/packages/native_clang.mk
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package=native_clang
|
||||||
|
$(package)_version=9.0.0
|
||||||
|
$(package)_download_path=https://releases.llvm.org/$($(package)_version)
|
||||||
|
$(package)_download_file=clang+llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz
|
||||||
|
$(package)_file_name=clang-llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz
|
||||||
|
$(package)_sha256_hash=a23b082b30c128c9831dbdd96edad26b43f56624d0ad0ea9edec506f5385038d
|
||||||
|
|
||||||
|
define $(package)_extract_cmds
|
||||||
|
echo $($(package)_sha256_hash) $($(package)_source) | sha256sum -c &&\
|
||||||
|
mkdir -p toolchain/bin toolchain/lib/clang/3.5/include && \
|
||||||
|
tar --strip-components=1 -C toolchain -xf $($(package)_source) && \
|
||||||
|
rm -f toolchain/lib/libc++abi.so* && \
|
||||||
|
echo "#!/bin/sh" > toolchain/bin/$(host)-dsymutil && \
|
||||||
|
echo "exit 0" >> toolchain/bin/$(host)-dsymutil && \
|
||||||
|
chmod +x toolchain/bin/$(host)-dsymutil
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
cd $($(package)_extract_dir)/toolchain && \
|
||||||
|
mkdir -p $($(package)_staging_prefix_dir)/lib/clang/$($(package)_version)/include && \
|
||||||
|
mkdir -p $($(package)_staging_prefix_dir)/bin $($(package)_staging_prefix_dir)/include && \
|
||||||
|
cp bin/clang $($(package)_staging_prefix_dir)/bin/ &&\
|
||||||
|
cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\
|
||||||
|
cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \
|
||||||
|
cp -rf lib/clang/$($(package)_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_version)/include/ && \
|
||||||
|
cp bin/dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \
|
||||||
|
if `test -d include/c++/`; then cp -rf include/c++/ $($(package)_staging_prefix_dir)/include/; fi && \
|
||||||
|
if `test -d lib/c++/`; then cp -rf lib/c++/ $($(package)_staging_prefix_dir)/lib/; fi
|
||||||
|
endef
|
||||||
28
contrib/depends/packages/native_libtapi.mk
Normal file
28
contrib/depends/packages/native_libtapi.mk
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package=native_libtapi
|
||||||
|
$(package)_version=664b8414f89612f2dfd35a9b679c345aa5389026
|
||||||
|
$(package)_download_path=https://github.com/tpoechtrager/apple-libtapi/archive
|
||||||
|
$(package)_download_file=$($(package)_version).tar.gz
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=62e419c12d1c9fad67cc1cd523132bc00db050998337c734c15bc8d73cc02b61
|
||||||
|
$(package)_build_subdir=build
|
||||||
|
$(package)_dependencies=native_clang
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
echo -n $(build_prefix) > INSTALLPREFIX; \
|
||||||
|
CC=$(host_prefix)/native/bin/clang CXX=$(host_prefix)/native/bin/clang++ \
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX=$(build_prefix) \
|
||||||
|
-DLLVM_INCLUDE_TESTS=OFF \
|
||||||
|
-DCMAKE_BUILD_TYPE=RELEASE \
|
||||||
|
-DTAPI_REPOSITORY_STRING="1100.0.11" \
|
||||||
|
-DTAPI_FULL_VERSION="11.0.0" \
|
||||||
|
-DCMAKE_CXX_FLAGS="-I $($(package)_extract_dir)/src/llvm/projects/clang/include -I $($(package)_build_dir)/projects/clang/include" \
|
||||||
|
$($(package)_extract_dir)/src/llvm
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) clangBasic && $(MAKE) libtapi
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install-libtapi install-tapi-headers
|
||||||
|
endef
|
||||||
@@ -7,8 +7,7 @@ $(package)_patches=fallback.c
|
|||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_build_opts=CC="$($(package)_cc)"
|
$(package)_build_opts=CC="$($(package)_cc)"
|
||||||
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" ARFLAGS=$($(package)_arflags) cf_cv_ar_flags=""
|
$(package)_config_env=cf_cv_ar_flags=""
|
||||||
$(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)"
|
|
||||||
$(package)_config_opts=--prefix=$(host_prefix)
|
$(package)_config_opts=--prefix=$(host_prefix)
|
||||||
$(package)_config_opts+=--disable-shared
|
$(package)_config_opts+=--disable-shared
|
||||||
$(package)_config_opts+=--with-build-cc=gcc
|
$(package)_config_opts+=--with-build-cc=gcc
|
||||||
@@ -51,7 +50,7 @@ define $(package)_preprocess_cmds
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
./configure $($(package)_config_opts)
|
$($(package)_autoconf)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|||||||
@@ -1,36 +1,29 @@
|
|||||||
package=openssl
|
package=openssl
|
||||||
$(package)_version=1.0.2r
|
$(package)_version=1.1.1t
|
||||||
$(package)_download_path=https://ftp.openssl.org/source/old/1.0.2
|
$(package)_download_path=https://www.openssl.org/source
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=ae51d08bba8a83958e894946f15303ff894d75c2b8bbd44a852b64e3fe11d0d6
|
$(package)_sha256_hash=8dee9b24bdb1dcbf0c3d1e9b02fb8f6bf22165e807f45adeb7c9677536859d3b
|
||||||
$(package)_patches=fix_arflags.patch
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_env=AR="$($(package)_ar)" ARFLAGS=$($(package)_arflags) RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
$(package)_config_env=AR="$($(package)_ar)" ARFLAGS=$($(package)_arflags) RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||||
|
$(package)_config_env_android=ANDROID_NDK_HOME="$(host_prefix)/native" PATH="$(host_prefix)/native/bin" CC=clang AR=ar RANLIB=ranlib
|
||||||
|
$(package)_build_env_android=ANDROID_NDK_HOME="$(host_prefix)/native"
|
||||||
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl
|
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl
|
||||||
$(package)_config_opts+=no-capieng
|
$(package)_config_opts+=no-capieng
|
||||||
$(package)_config_opts+=no-dso
|
$(package)_config_opts+=no-dso
|
||||||
$(package)_config_opts+=no-dtls1
|
$(package)_config_opts+=no-dtls1
|
||||||
$(package)_config_opts+=no-ec_nistp_64_gcc_128
|
$(package)_config_opts+=no-ec_nistp_64_gcc_128
|
||||||
$(package)_config_opts+=no-gost
|
$(package)_config_opts+=no-gost
|
||||||
$(package)_config_opts+=no-gmp
|
|
||||||
$(package)_config_opts+=no-heartbeats
|
$(package)_config_opts+=no-heartbeats
|
||||||
$(package)_config_opts+=no-jpake
|
|
||||||
$(package)_config_opts+=no-krb5
|
|
||||||
$(package)_config_opts+=no-libunbound
|
|
||||||
$(package)_config_opts+=no-md2
|
$(package)_config_opts+=no-md2
|
||||||
$(package)_config_opts+=no-rc5
|
$(package)_config_opts+=no-rc5
|
||||||
$(package)_config_opts+=no-rdrand
|
$(package)_config_opts+=no-rdrand
|
||||||
$(package)_config_opts+=no-rfc3779
|
$(package)_config_opts+=no-rfc3779
|
||||||
$(package)_config_opts+=no-rsax
|
|
||||||
$(package)_config_opts+=no-sctp
|
$(package)_config_opts+=no-sctp
|
||||||
$(package)_config_opts+=no-sha0
|
|
||||||
$(package)_config_opts+=no-shared
|
$(package)_config_opts+=no-shared
|
||||||
$(package)_config_opts+=no-ssl-trace
|
$(package)_config_opts+=no-ssl-trace
|
||||||
$(package)_config_opts+=no-ssl2
|
$(package)_config_opts+=no-ssl2
|
||||||
$(package)_config_opts+=no-ssl3
|
$(package)_config_opts+=no-ssl3
|
||||||
$(package)_config_opts+=no-static_engine
|
|
||||||
$(package)_config_opts+=no-store
|
|
||||||
$(package)_config_opts+=no-unit-test
|
$(package)_config_opts+=no-unit-test
|
||||||
$(package)_config_opts+=no-weak-ssl-ciphers
|
$(package)_config_opts+=no-weak-ssl-ciphers
|
||||||
$(package)_config_opts+=no-zlib
|
$(package)_config_opts+=no-zlib
|
||||||
@@ -42,8 +35,9 @@ $(package)_config_opts_x86_64_linux=linux-x86_64
|
|||||||
$(package)_config_opts_i686_linux=linux-generic32
|
$(package)_config_opts_i686_linux=linux-generic32
|
||||||
$(package)_config_opts_arm_linux=linux-generic32
|
$(package)_config_opts_arm_linux=linux-generic32
|
||||||
$(package)_config_opts_aarch64_linux=linux-generic64
|
$(package)_config_opts_aarch64_linux=linux-generic64
|
||||||
$(package)_config_opts_arm_android=--static android-armv7 no-asm
|
$(package)_config_opts_arm_android=--static android-arm
|
||||||
$(package)_config_opts_aarch64_android=--static android no-asm
|
$(package)_config_opts_aarch64_android=--static android-arm64
|
||||||
|
$(package)_config_opts_aarch64_darwin=darwin64-arm64-cc
|
||||||
$(package)_config_opts_riscv64_linux=linux-generic64
|
$(package)_config_opts_riscv64_linux=linux-generic64
|
||||||
$(package)_config_opts_mipsel_linux=linux-generic32
|
$(package)_config_opts_mipsel_linux=linux-generic32
|
||||||
$(package)_config_opts_mips_linux=linux-generic32
|
$(package)_config_opts_mips_linux=linux-generic32
|
||||||
@@ -55,10 +49,7 @@ $(package)_config_opts_x86_64_freebsd=BSD-x86_64
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
sed -i.old "/define DATE/d" util/mkbuildinf.pl && \
|
sed -i.old 's|"engines", "apps", "test", "util", "tools", "fuzz"|"engines", "tools"|' Configure
|
||||||
sed -i.old "s|engines apps test|engines|" Makefile.org && \
|
|
||||||
sed -i -e "s/-mandroid //" Configure && \
|
|
||||||
patch < $($(package)_patch_dir)/fix_arflags.patch
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
@@ -66,11 +57,11 @@ define $(package)_config_cmds
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
$(MAKE) -j1 build_libs libcrypto.pc libssl.pc openssl.pc
|
$(MAKE) build_libs
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
$(MAKE) INSTALL_PREFIX=$($(package)_staging_dir) -j1 install_sw
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install_sw
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_postprocess_cmds
|
define $(package)_postprocess_cmds
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
packages:=boost openssl zeromq libiconv
|
packages:=boost openssl zeromq libiconv expat unbound
|
||||||
|
|
||||||
|
# ccache is useless in gitian builds
|
||||||
|
ifneq ($(GITIAN),1)
|
||||||
native_packages := native_ccache
|
native_packages := native_ccache
|
||||||
|
endif
|
||||||
|
|
||||||
hardware_packages := hidapi protobuf libusb
|
hardware_packages := hidapi protobuf libusb
|
||||||
hardware_native_packages := native_protobuf
|
hardware_native_packages := native_protobuf
|
||||||
@@ -8,8 +11,8 @@ hardware_native_packages := native_protobuf
|
|||||||
android_native_packages = android_ndk
|
android_native_packages = android_ndk
|
||||||
android_packages = ncurses readline sodium
|
android_packages = ncurses readline sodium
|
||||||
|
|
||||||
darwin_native_packages = native_biplist native_ds_store native_mac_alias $(hardware_native_packages)
|
darwin_native_packages = $(hardware_native_packages)
|
||||||
darwin_packages = sodium ncurses readline $(hardware_packages)
|
darwin_packages = ncurses readline sodium $(hardware_packages)
|
||||||
|
|
||||||
# not really native...
|
# not really native...
|
||||||
freebsd_native_packages = freebsd_base
|
freebsd_native_packages = freebsd_base
|
||||||
@@ -17,7 +20,6 @@ freebsd_packages = ncurses readline sodium
|
|||||||
|
|
||||||
linux_packages = eudev ncurses readline sodium $(hardware_packages)
|
linux_packages = eudev ncurses readline sodium $(hardware_packages)
|
||||||
linux_native_packages = $(hardware_native_packages)
|
linux_native_packages = $(hardware_native_packages)
|
||||||
qt_packages = qt
|
|
||||||
|
|
||||||
ifeq ($(build_tests),ON)
|
ifeq ($(build_tests),ON)
|
||||||
packages += gtest
|
packages += gtest
|
||||||
@@ -31,6 +33,6 @@ mingw32_packages = icu4c sodium $(hardware_packages)
|
|||||||
mingw32_native_packages = $(hardware_native_packages)
|
mingw32_native_packages = $(hardware_native_packages)
|
||||||
|
|
||||||
ifneq ($(build_os),darwin)
|
ifneq ($(build_os),darwin)
|
||||||
darwin_native_packages += native_cctools native_cdrkit native_libdmg-hfsplus
|
darwin_native_packages += darwin_sdk native_clang native_cctools native_libtapi
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,17 @@ $(package)_file_name=$(native_$(package)_file_name)
|
|||||||
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
||||||
$(package)_dependencies=native_$(package)
|
$(package)_dependencies=native_$(package)
|
||||||
$(package)_cxxflags=-std=c++11
|
$(package)_cxxflags=-std=c++11
|
||||||
|
$(package)_patches=visibility.patch
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
||||||
$(package)_config_opts_linux=--with-pic
|
$(package)_config_opts_linux=--with-pic
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p0 < $($(package)_patch_dir)/visibility.patch
|
||||||
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
$($(package)_autoconf) AR_FLAGS=$($(package)_arflags)
|
$($(package)_autoconf) AR_FLAGS=$($(package)_arflags)
|
||||||
endef
|
endef
|
||||||
|
|||||||
@@ -1,148 +0,0 @@
|
|||||||
PACKAGE=qt
|
|
||||||
$(package)_version=5.7.1
|
|
||||||
$(package)_download_path=http://linorg.usp.br/Qt/archive/qt/5.7/5.7.1/submodules
|
|
||||||
$(package)_suffix=opensource-src-$($(package)_version).tar.gz
|
|
||||||
$(package)_file_name=qtbase-$($(package)_suffix)
|
|
||||||
$(package)_sha256_hash=95f83e532d23b3ddbde7973f380ecae1bac13230340557276f75f2e37984e410
|
|
||||||
$(package)_build_subdir=qtbase
|
|
||||||
$(package)_qt_libs=corelib
|
|
||||||
$(package)_patches=pidlist_absolute.patch fix_qt_pkgconfig.patch qfixed-coretext.patch
|
|
||||||
|
|
||||||
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
|
|
||||||
$(package)_qttranslations_sha256_hash=3a15aebd523c6d89fb97b2d3df866c94149653a26d27a00aac9b6d3020bc5a1d
|
|
||||||
|
|
||||||
$(package)_qttools_file_name=qttools-$($(package)_suffix)
|
|
||||||
$(package)_qttools_sha256_hash=22d67de915cb8cd93e16fdd38fa006224ad9170bd217c2be1e53045a8dd02f0f
|
|
||||||
|
|
||||||
$(package)_extra_sources = $($(package)_qttranslations_file_name)
|
|
||||||
$(package)_extra_sources += $($(package)_qttools_file_name)
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
|
||||||
$(package)_config_opts_release = -release
|
|
||||||
$(package)_config_opts_debug = -debug
|
|
||||||
$(package)_config_opts += -bindir $(build_prefix)/bin
|
|
||||||
$(package)_config_opts += -c++std c++11
|
|
||||||
$(package)_config_opts += -confirm-license
|
|
||||||
$(package)_config_opts += -dbus-runtime
|
|
||||||
$(package)_config_opts += -no-alsa
|
|
||||||
$(package)_config_opts += -no-audio-backend
|
|
||||||
$(package)_config_opts += -no-cups
|
|
||||||
$(package)_config_opts += -no-egl
|
|
||||||
$(package)_config_opts += -no-eglfs
|
|
||||||
$(package)_config_opts += -no-feature-style-windowsmobile
|
|
||||||
$(package)_config_opts += -no-feature-style-windowsce
|
|
||||||
$(package)_config_opts += -no-freetype
|
|
||||||
$(package)_config_opts += -no-gif
|
|
||||||
$(package)_config_opts += -no-glib
|
|
||||||
$(package)_config_opts += -no-gstreamer
|
|
||||||
$(package)_config_opts += -no-icu
|
|
||||||
$(package)_config_opts += -no-iconv
|
|
||||||
$(package)_config_opts += -no-kms
|
|
||||||
$(package)_config_opts += -no-linuxfb
|
|
||||||
$(package)_config_opts += -no-libudev
|
|
||||||
$(package)_config_opts += -no-mitshm
|
|
||||||
$(package)_config_opts += -no-mtdev
|
|
||||||
$(package)_config_opts += -no-pulseaudio
|
|
||||||
$(package)_config_opts += -no-openvg
|
|
||||||
$(package)_config_opts += -no-reduce-relocations
|
|
||||||
$(package)_config_opts += -no-qml-debug
|
|
||||||
$(package)_config_opts += -no-sql-db2
|
|
||||||
$(package)_config_opts += -no-sql-ibase
|
|
||||||
$(package)_config_opts += -no-sql-oci
|
|
||||||
$(package)_config_opts += -no-sql-tds
|
|
||||||
$(package)_config_opts += -no-sql-mysql
|
|
||||||
$(package)_config_opts += -no-sql-odbc
|
|
||||||
$(package)_config_opts += -no-sql-psql
|
|
||||||
$(package)_config_opts += -no-sql-sqlite
|
|
||||||
$(package)_config_opts += -no-sql-sqlite2
|
|
||||||
$(package)_config_opts += -no-use-gold-linker
|
|
||||||
$(package)_config_opts += -no-xinput2
|
|
||||||
$(package)_config_opts += -no-xrender
|
|
||||||
$(package)_config_opts += -nomake examples
|
|
||||||
$(package)_config_opts += -nomake tests
|
|
||||||
$(package)_config_opts += -opensource
|
|
||||||
$(package)_config_opts += -no-openssl
|
|
||||||
$(package)_config_opts += -optimized-qmake
|
|
||||||
$(package)_config_opts += -pch
|
|
||||||
$(package)_config_opts += -pkg-config
|
|
||||||
$(package)_config_opts += -no-libpng
|
|
||||||
$(package)_config_opts += -no-libjpeg
|
|
||||||
$(package)_config_opts += -qt-pcre
|
|
||||||
$(package)_config_opts += -no-zlib
|
|
||||||
$(package)_config_opts += -reduce-exports
|
|
||||||
$(package)_config_opts += -static
|
|
||||||
$(package)_config_opts += -silent
|
|
||||||
$(package)_config_opts += -v
|
|
||||||
$(package)_config_opts += -no-feature-printer
|
|
||||||
$(package)_config_opts += -no-feature-printdialog
|
|
||||||
$(package)_config_opts += -no-gui
|
|
||||||
$(package)_config_opts += -no-freetype
|
|
||||||
$(package)_config_opts += -no-sm
|
|
||||||
$(package)_config_opts += -no-fontconfig
|
|
||||||
$(package)_config_opts += -no-opengl
|
|
||||||
$(package)_config_opts += -no-xkb
|
|
||||||
$(package)_config_opts += -no-xcb
|
|
||||||
$(package)_config_opts += -no-xshape
|
|
||||||
$(package)_build_env = QT_RCC_TEST=1
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_fetch_cmds
|
|
||||||
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
|
|
||||||
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttranslations_file_name),$($(package)_qttranslations_file_name),$($(package)_qttranslations_sha256_hash)) && \
|
|
||||||
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_file_name),$($(package)_qttools_file_name),$($(package)_qttools_sha256_hash))
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_extract_cmds
|
|
||||||
mkdir -p $($(package)_extract_dir) && \
|
|
||||||
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
||||||
echo "$($(package)_qttranslations_sha256_hash) $($(package)_source_dir)/$($(package)_qttranslations_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
||||||
echo "$($(package)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
||||||
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
|
|
||||||
mkdir qtbase && \
|
|
||||||
tar --strip-components=1 -xf $($(package)_source) -C qtbase && \
|
|
||||||
mkdir qttranslations && \
|
|
||||||
tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttranslations_file_name) -C qttranslations && \
|
|
||||||
mkdir qttools && \
|
|
||||||
tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttools_file_name) -C qttools
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
|
||||||
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
|
|
||||||
sed -i.old "/updateqm.depends =/d" qttranslations/translations/translations.pro && \
|
|
||||||
patch -p1 < $($(package)_patch_dir)/pidlist_absolute.patch && \
|
|
||||||
patch -p1 < $($(package)_patch_dir)/fix_qt_pkgconfig.patch && \
|
|
||||||
patch -p1 < $($(package)_patch_dir)/qfixed-coretext.patch && \
|
|
||||||
echo "!host_build: QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
|
||||||
echo "!host_build: QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
|
||||||
echo "!host_build: QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_config_cmds
|
|
||||||
export PKG_CONFIG_SYSROOT_DIR=/ && \
|
|
||||||
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \
|
|
||||||
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \
|
|
||||||
./configure $($(package)_config_opts) && \
|
|
||||||
echo "CONFIG += force_bootstrap" >> mkspecs/qconfig.pri && \
|
|
||||||
$(MAKE) sub-src-clean && \
|
|
||||||
cd ../qttranslations && ../qtbase/bin/qmake qttranslations.pro -o Makefile && \
|
|
||||||
cd translations && ../../qtbase/bin/qmake translations.pro -o Makefile && cd ../.. &&\
|
|
||||||
cd qttools/src/linguist/lrelease/ && ../../../../qtbase/bin/qmake lrelease.pro -o Makefile
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_build_cmds
|
|
||||||
$(MAKE) -C src $(addprefix sub-,$($(package)_qt_libs)) && \
|
|
||||||
$(MAKE) -C ../qttools/src/linguist/lrelease && \
|
|
||||||
$(MAKE) -C ../qttranslations
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
|
||||||
$(MAKE) -C src INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_qt_libs))) && cd .. &&\
|
|
||||||
$(MAKE) -C qttools/src/linguist/lrelease INSTALL_ROOT=$($(package)_staging_dir) install_target && \
|
|
||||||
$(MAKE) -C qttranslations INSTALL_ROOT=$($(package)_staging_dir) install_subtargets
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_postprocess_cmds
|
|
||||||
rm -rf native/mkspecs/ native/lib/ lib/cmake/ && \
|
|
||||||
rm -f lib/lib*.la lib/*.prl plugins/*/*.prl
|
|
||||||
endef
|
|
||||||
@@ -7,19 +7,16 @@ $(package)_dependencies=ncurses
|
|||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_build_opts=CC="$($(package)_cc)"
|
$(package)_build_opts=CC="$($(package)_cc)"
|
||||||
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" LDFLAGS="-L$(host_prefix)/lib" ARFLAGS=$($(package)_arflags)
|
|
||||||
$(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)"
|
|
||||||
$(package)_config_opts+=--prefix=$(host_prefix)
|
$(package)_config_opts+=--prefix=$(host_prefix)
|
||||||
$(package)_config_opts+=--exec-prefix=$(host_prefix)
|
$(package)_config_opts+=--exec-prefix=$(host_prefix)
|
||||||
$(package)_config_opts+=--host=$(HOST)
|
$(package)_config_opts+=--host=$(HOST)
|
||||||
$(package)_config_opts+=--disable-shared --with-curses
|
$(package)_config_opts+=--disable-shared --with-curses
|
||||||
$(package)_config_opts_release=--disable-debug-mode
|
$(package)_config_opts_release=--disable-debug-mode
|
||||||
$(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)"
|
|
||||||
$(package)_build_opts=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC"
|
$(package)_build_opts=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
./configure $($(package)_config_opts)
|
$($(package)_autoconf)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|||||||
@@ -8,15 +8,16 @@ $(package)_patches=disable-glibc-getrandom-getentropy.patch fix-whitespace.patch
|
|||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--enable-static --disable-shared
|
$(package)_config_opts=--enable-static --disable-shared
|
||||||
$(package)_config_opts+=--prefix=$(host_prefix)
|
$(package)_config_opts+=--prefix=$(host_prefix)
|
||||||
$(package)_config_opts_android=RANLIB=$($(package)_ranlib) AR=$($(package)_ar) CC=$($(package)_cc)
|
endef
|
||||||
$(package)_config_opts_darwin=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)"
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/disable-glibc-getrandom-getentropy.patch &&\
|
||||||
|
autoconf &&\
|
||||||
|
patch -p1 < $($(package)_patch_dir)/fix-whitespace.patch
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
patch -p1 < $($(package)_patch_dir)/disable-glibc-getrandom-getentropy.patch &&\
|
$($(package)_autoconf) AR_FLAGS=$($(package)_arflags)
|
||||||
./autogen.sh &&\
|
|
||||||
patch -p1 < $($(package)_patch_dir)/fix-whitespace.patch &&\
|
|
||||||
$($(package)_autoconf) $($(package)_config_opts) AR_FLAGS=$($(package)_arflags)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|||||||
@@ -1,19 +1,26 @@
|
|||||||
package=unbound
|
package=unbound
|
||||||
$(package)_version=1.6.8
|
$(package)_version=1.15.0
|
||||||
$(package)_download_path=https://www.unbound.net/downloads/
|
$(package)_download_path=https://www.nlnetlabs.nl/downloads/$(package)/
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=e3b428e33f56a45417107448418865fe08d58e0e7fea199b855515f60884dd49
|
$(package)_sha256_hash=a480dc6c8937447b98d161fe911ffc76cfaffa2da18788781314e81339f1126f
|
||||||
$(package)_dependencies=openssl expat ldns
|
$(package)_dependencies=openssl expat
|
||||||
|
$(package)_patches=disable-glibc-reallocarray.patch
|
||||||
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--disable-shared --enable-static --without-pyunbound --prefix=$(host_prefix) --with-libexpat=$(host_prefix) --with-ssl=$(host_prefix) --with-libevent=no --without-pythonmodule --disable-flto --with-pthreads
|
$(package)_config_opts=--disable-shared --enable-static --without-pyunbound --prefix=$(host_prefix) --with-libexpat=$(host_prefix) --with-ssl=$(host_prefix) --with-libevent=no --without-pythonmodule --disable-flto --with-pthreads --with-libunbound-only
|
||||||
$(package)_config_opts_linux=--with-pic
|
$(package)_config_opts_linux=--with-pic
|
||||||
$(package)_config_opts_w64=--enable-static-exe --sysconfdir=/etc --prefix=$(host_prefix) --target=$(host_prefix)
|
$(package)_config_opts_w64=--enable-static-exe --sysconfdir=/etc --prefix=$(host_prefix) --target=$(host_prefix)
|
||||||
$(package)_build_opts_mingw32=LDFLAGS="$($(package)_ldflags) -lpthread"
|
$(package)_build_opts_mingw32=LDFLAGS="$($(package)_ldflags) -lpthread"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/disable-glibc-reallocarray.patch &&\
|
||||||
|
autoconf
|
||||||
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
$($(package)_autoconf) $($(package)_config_opts)
|
$($(package)_autoconf) ac_cv_func_getentropy=no
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package=unwind
|
package=unwind
|
||||||
$(package)_version=1.2
|
$(package)_version=1.5.0
|
||||||
$(package)_download_path=https://download.savannah.nongnu.org/releases/libunwind
|
$(package)_download_path=https://download.savannah.nongnu.org/releases/libunwind
|
||||||
$(package)_file_name=lib$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=lib$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=1de38ffbdc88bd694d10081865871cd2bfbb02ad8ef9e1606aee18d65532b992
|
$(package)_sha256_hash=90337653d92d4a13de590781371c604f9031cdb50520366aa1e3a91e1efb1017
|
||||||
$(package)_patches=fix_obj_order.patch
|
$(package)_patches=fix_obj_order.patch
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
@@ -12,7 +12,7 @@ endef
|
|||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
cp -f $(BASEDIR)/config.guess config/config.guess &&\
|
cp -f $(BASEDIR)/config.guess config/config.guess &&\
|
||||||
cp -f $(BASEDIR)/config.sub config/config.sub &&\
|
cp -f $(BASEDIR)/config.sub config/config.sub &&\
|
||||||
$($(package)_autoconf) --disable-shared --enable-static AR_FLAGS=$($(package)_arflags)
|
$($(package)_autoconf) --disable-shared --enable-static --disable-tests --disable-documentation AR_FLAGS=$($(package)_arflags)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package=zeromq
|
package=zeromq
|
||||||
$(package)_version=4.1.7
|
$(package)_version=4.3.4
|
||||||
$(package)_download_path=https://github.com/zeromq/zeromq4-1/releases/download/v$($(package)_version)/
|
$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/
|
||||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
$(package)_sha256_hash=31c383cfcd3be1dc8a66e448c403029e793687e70473b89c4cc0bd626e7da299
|
$(package)_sha256_hash=c593001a89f5a85dd2ddf564805deb860e02471171b3f204944857336295c3e5
|
||||||
$(package)_patches=9114d3957725acd34aa8b8d011585812f3369411.patch 9e6745c12e0b100cd38acecc16ce7db02905e27c.patch ffe62d3398d5e0191f554f61049aa7ec9fc892ae.patch
|
$(package)_patches=06aba27b04c5822cb88a69677382a0f053367143.patch
|
||||||
|
|
||||||
define $(package)_set_vars
|
define $(package)_set_vars
|
||||||
$(package)_config_opts=--without-documentation --disable-shared --without-libsodium --disable-curve
|
$(package)_config_opts=--without-documentation --disable-shared --without-libsodium --disable-curve
|
||||||
@@ -13,10 +13,7 @@ define $(package)_set_vars
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
define $(package)_preprocess_cmds
|
||||||
patch -p1 < $($(package)_patch_dir)/9114d3957725acd34aa8b8d011585812f3369411.patch && \
|
patch -p1 < $($(package)_patch_dir)/06aba27b04c5822cb88a69677382a0f053367143.patch
|
||||||
patch -p1 < $($(package)_patch_dir)/9e6745c12e0b100cd38acecc16ce7db02905e27c.patch && \
|
|
||||||
patch -p1 < $($(package)_patch_dir)/ffe62d3398d5e0191f554f61049aa7ec9fc892ae.patch && \
|
|
||||||
./autogen.sh
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_config_cmds
|
define $(package)_config_cmds
|
||||||
@@ -24,7 +21,7 @@ define $(package)_config_cmds
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_build_cmds
|
define $(package)_build_cmds
|
||||||
$(MAKE) libzmq.la
|
$(MAKE) src/libzmq.la
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
define $(package)_stage_cmds
|
||||||
|
|||||||
11
contrib/depends/patches/boost/fix_arm_arch.patch
Normal file
11
contrib/depends/patches/boost/fix_arm_arch.patch
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
--- boost_1_64_0/tools/build/src/tools/darwin.jam.O 2017-04-17 03:22:26.000000000 +0100
|
||||||
|
+++ boost_1_64_0/tools/build/src/tools/darwin.jam 2022-05-04 17:26:29.984464447 +0000
|
||||||
|
@@ -505,7 +505,7 @@
|
||||||
|
if $(instruction-set) {
|
||||||
|
options = -arch$(_)$(instruction-set) ;
|
||||||
|
} else {
|
||||||
|
- options = -arch arm ;
|
||||||
|
+# options = -arch arm ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
contrib/depends/patches/hidapi/missing_win_include.patch
Normal file
21
contrib/depends/patches/hidapi/missing_win_include.patch
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
From a77b066311da42ed7654e39c0356a3b951b2e296 Mon Sep 17 00:00:00 2001
|
||||||
|
From: selsta <selsta@sent.at>
|
||||||
|
Date: Wed, 10 Nov 2021 02:28:54 +0100
|
||||||
|
Subject: [PATCH] windows: add missing include for mingw32
|
||||||
|
|
||||||
|
---
|
||||||
|
windows/hid.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/windows/hid.c b/windows/hid.c
|
||||||
|
index 24756a4..6d8394c 100644
|
||||||
|
--- a/windows/hid.c
|
||||||
|
+++ b/windows/hid.c
|
||||||
|
@@ -33,6 +33,7 @@ typedef LONG NTSTATUS;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
+#include <devpropdef.h>
|
||||||
|
#include <ntdef.h>
|
||||||
|
#include <winbase.h>
|
||||||
|
#endif
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
--- cctools/Makefile.am.O 2016-06-09 15:06:16.000000000 +0100
|
|
||||||
+++ cctools/Makefile.am 2019-11-18 08:59:20.078663220 +0000
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
if ISDARWIN
|
|
||||||
-SUBDIRS=libstuff ar as misc otool ld64 $(LD_CLASSIC)
|
|
||||||
+SUBDIRS=libstuff ar as misc ld64 $(LD_CLASSIC)
|
|
||||||
else
|
|
||||||
-SUBDIRS=libstuff ar as misc libobjc2 otool ld64 $(LD_CLASSIC)
|
|
||||||
+SUBDIRS=libstuff ar as misc ld64 $(LD_CLASSIC)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
--- Makefile.org.O 2019-02-26 14:20:20.000000000 +0000
|
|
||||||
+++ Makefile.org 2019-11-15 13:05:54.370086856 +0000
|
|
||||||
@@ -63,8 +63,8 @@
|
|
||||||
PEX_LIBS=
|
|
||||||
EX_LIBS=
|
|
||||||
EXE_EXT=
|
|
||||||
-ARFLAGS=
|
|
||||||
-AR=ar $(ARFLAGS) r
|
|
||||||
+ARFLAGS= r
|
|
||||||
+AR=ar $(ARFLAGS)
|
|
||||||
RANLIB= ranlib
|
|
||||||
RC= windres
|
|
||||||
NM= nm
|
|
||||||
--- Configure.O 2019-02-26 14:20:20.000000000 +0000
|
|
||||||
+++ Configure 2019-11-16 07:43:14.933990774 +0000
|
|
||||||
@@ -1251,7 +1251,7 @@
|
|
||||||
my $shared_extension = $fields[$idx_shared_extension];
|
|
||||||
my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib];
|
|
||||||
my $ar = $ENV{'AR'} || "ar";
|
|
||||||
-my $arflags = $fields[$idx_arflags];
|
|
||||||
+my $arflags = $ENV{'ARFLAGS'} || $fields[$idx_arflags];
|
|
||||||
my $windres = $ENV{'RC'} || $ENV{'WINDRES'} || "windres";
|
|
||||||
my $multilib = $fields[$idx_multilib];
|
|
||||||
|
|
||||||
159
contrib/depends/patches/protobuf/visibility.patch
Normal file
159
contrib/depends/patches/protobuf/visibility.patch
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
--- src/google/protobuf/descriptor.cc.O 2018-07-30 22:16:10.000000000 +0000
|
||||||
|
+++ src/google/protobuf/descriptor.cc 2022-05-06 13:38:14.827309092 +0000
|
||||||
|
@@ -32,6 +32,9 @@
|
||||||
|
// Based on original Protocol Buffers design by
|
||||||
|
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||||
|
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
#include <algorithm>
|
||||||
|
#include <functional>
|
||||||
|
#include <google/protobuf/stubs/hash.h>
|
||||||
|
@@ -7274,3 +7277,6 @@
|
||||||
|
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
|
--- src/google/protobuf/extension_set.cc.O 2018-07-23 20:56:42.000000000 +0000
|
||||||
|
+++ src/google/protobuf/extension_set.cc 2022-05-06 14:48:55.369877050 +0000
|
||||||
|
@@ -32,6 +32,9 @@
|
||||||
|
// Based on original Protocol Buffers design by
|
||||||
|
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||||
|
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
#include <google/protobuf/stubs/hash.h>
|
||||||
|
#include <tuple>
|
||||||
|
#include <utility>
|
||||||
|
@@ -1914,3 +1917,6 @@
|
||||||
|
} // namespace internal
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
|
--- src/google/protobuf/extension_set_heavy.cc.O 2018-07-30 22:16:10.000000000 +0000
|
||||||
|
+++ src/google/protobuf/extension_set_heavy.cc 2022-05-06 14:14:27.847320946 +0000
|
||||||
|
@@ -35,6 +35,10 @@
|
||||||
|
// Contains methods defined in extension_set.h which cannot be part of the
|
||||||
|
// lite library because they use descriptors or reflection.
|
||||||
|
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <google/protobuf/stubs/casts.h>
|
||||||
|
#include <google/protobuf/descriptor.pb.h>
|
||||||
|
#include <google/protobuf/io/coded_stream.h>
|
||||||
|
@@ -814,3 +818,6 @@
|
||||||
|
} // namespace internal
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
|
--- src/google/protobuf/generated_message_reflection.cc.O 2018-07-23 20:56:42.000000000 +0000
|
||||||
|
+++ src/google/protobuf/generated_message_reflection.cc 2022-05-06 13:38:49.655540772 +0000
|
||||||
|
@@ -32,6 +32,9 @@
|
||||||
|
// Based on original Protocol Buffers design by
|
||||||
|
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||||
|
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
#include <algorithm>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
|
@@ -2420,3 +2423,6 @@
|
||||||
|
} // namespace internal
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
|
--- src/google/protobuf/map_field.cc.O 2018-07-23 20:56:42.000000000 +0000
|
||||||
|
+++ src/google/protobuf/map_field.cc 2022-05-06 13:34:44.913905697 +0000
|
||||||
|
@@ -28,6 +28,10 @@
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <google/protobuf/map_field.h>
|
||||||
|
#include <google/protobuf/map_field_inl.h>
|
||||||
|
|
||||||
|
@@ -462,3 +466,6 @@
|
||||||
|
} // namespace internal
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
|
--- src/google/protobuf/text_format.cc.O 2018-07-30 22:16:11.000000000 +0000
|
||||||
|
+++ src/google/protobuf/text_format.cc 2022-05-06 13:34:58.881999517 +0000
|
||||||
|
@@ -32,6 +32,10 @@
|
||||||
|
// Based on original Protocol Buffers design by
|
||||||
|
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||||
|
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <algorithm>
|
||||||
|
#include <float.h>
|
||||||
|
#include <math.h>
|
||||||
|
@@ -2258,3 +2262,6 @@
|
||||||
|
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
|
--- src/google/protobuf/wire_format.cc.O 2018-07-23 20:56:42.000000000 +0000
|
||||||
|
+++ src/google/protobuf/wire_format.cc 2022-05-06 13:06:23.294219228 +0000
|
||||||
|
@@ -32,6 +32,10 @@
|
||||||
|
// Based on original Protocol Buffers design by
|
||||||
|
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||||
|
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <stack>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
@@ -1445,3 +1449,7 @@
|
||||||
|
} // namespace internal
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
|
--- src/google/protobuf/stubs/status.cc.O 2018-07-23 20:56:42.000000000 +0000
|
||||||
|
+++ src/google/protobuf/stubs/status.cc 2022-05-06 15:18:53.393208814 +0000
|
||||||
|
@@ -27,6 +27,11 @@
|
||||||
|
// 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.
|
||||||
|
+
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility push(hidden)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <google/protobuf/stubs/status.h>
|
||||||
|
|
||||||
|
#include <ostream>
|
||||||
|
@@ -132,3 +137,6 @@
|
||||||
|
} // namespace util
|
||||||
|
} // namespace protobuf
|
||||||
|
} // namespace google
|
||||||
|
+#if defined(__APPLE__) && defined(__arm64__)
|
||||||
|
+#pragma GCC visibility pop
|
||||||
|
+#endif
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
--- old/qtbase/mkspecs/features/qt_module.prf
|
|
||||||
+++ new/qtbase/mkspecs/features/qt_module.prf
|
|
||||||
@@ -245,7 +245,7 @@
|
|
||||||
load(qt_targets)
|
|
||||||
|
|
||||||
# this builds on top of qt_common
|
|
||||||
-!internal_module:!lib_bundle:if(unix|mingw) {
|
|
||||||
+unix|mingw {
|
|
||||||
CONFIG += create_pc
|
|
||||||
QMAKE_PKGCONFIG_DESTDIR = pkgconfig
|
|
||||||
host_build: \
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
diff -dur old/qtbase/src/plugins/platforms/windows/qwindowscontext.h new/qtbase/src/plugins/platforms/windows/qwindowscontext.h
|
|
||||||
--- old/qtbase/src/plugins/platforms/windows/qwindowscontext.h
|
|
||||||
+++ new/qtbase/src/plugins/platforms/windows/qwindowscontext.h
|
|
||||||
@@ -136,10 +136,18 @@
|
|
||||||
inline void init();
|
|
||||||
|
|
||||||
typedef HRESULT (WINAPI *SHCreateItemFromParsingName)(PCWSTR, IBindCtx *, const GUID&, void **);
|
|
||||||
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 3)
|
|
||||||
+ typedef HRESULT (WINAPI *SHGetKnownFolderIDList)(const GUID &, DWORD, HANDLE, ITEMIDLIST **);
|
|
||||||
+#else
|
|
||||||
typedef HRESULT (WINAPI *SHGetKnownFolderIDList)(const GUID &, DWORD, HANDLE, PIDLIST_ABSOLUTE *);
|
|
||||||
+#endif
|
|
||||||
typedef HRESULT (WINAPI *SHGetStockIconInfo)(int , int , _SHSTOCKICONINFO *);
|
|
||||||
typedef HRESULT (WINAPI *SHGetImageList)(int, REFIID , void **);
|
|
||||||
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 3)
|
|
||||||
+ typedef HRESULT (WINAPI *SHCreateItemFromIDList)(const ITEMIDLIST *, REFIID, void **);
|
|
||||||
+#else
|
|
||||||
typedef HRESULT (WINAPI *SHCreateItemFromIDList)(PCIDLIST_ABSOLUTE, REFIID, void **);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
SHCreateItemFromParsingName sHCreateItemFromParsingName;
|
|
||||||
SHGetKnownFolderIDList sHGetKnownFolderIDList;
|
|
||||||
diff -dur old/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp new/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
|
|
||||||
--- old/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
|
|
||||||
+++ new/qtbase/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
|
|
||||||
@@ -1016,7 +1016,11 @@
|
|
||||||
qWarning() << __FUNCTION__ << ": Invalid CLSID: " << url.path();
|
|
||||||
return Q_NULLPTR;
|
|
||||||
}
|
|
||||||
+#if defined(Q_CC_MINGW) && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 3)
|
|
||||||
+ ITEMIDLIST *idList;
|
|
||||||
+#else
|
|
||||||
PIDLIST_ABSOLUTE idList;
|
|
||||||
+#endif
|
|
||||||
HRESULT hr = QWindowsContext::shell32dll.sHGetKnownFolderIDList(uuid, 0, 0, &idList);
|
|
||||||
if (FAILED(hr)) {
|
|
||||||
qErrnoWarning("%s: SHGetKnownFolderIDList(%s)) failed", __FUNCTION__, qPrintable(url.toString()));
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
From dbdd5f0ffbce52c8b789ed09f1aa3f1da6c02e23 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
|
|
||||||
Date: Fri, 30 Mar 2018 11:58:16 -0700
|
|
||||||
Subject: [PATCH] QCoreTextFontEngine: Fix build with Xcode 9.3
|
|
||||||
|
|
||||||
Apple LLVM version 9.1.0 (clang-902.0.39.1)
|
|
||||||
|
|
||||||
Error message:
|
|
||||||
|
|
||||||
.../qfontengine_coretext.mm:827:20: error: qualified reference to
|
|
||||||
'QFixed' is a constructor name rather than a type in this context
|
|
||||||
return QFixed::QFixed(int(CTFontGetUnitsPerEm(ctfont)));
|
|
||||||
|
|
||||||
Change-Id: Iebe26b3b087a16b10664208fc8851cbddb47f043
|
|
||||||
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
|
|
||||||
---
|
|
||||||
src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git old/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm new/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
|
|
||||||
index 25ff69d877d..98b753eff96 100644
|
|
||||||
--- old/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
|
|
||||||
+++ new/qtbase/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
|
|
||||||
@@ -824,7 +824,7 @@ void QCoreTextFontEngine::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, gl
|
|
||||||
|
|
||||||
QFixed QCoreTextFontEngine::emSquareSize() const
|
|
||||||
{
|
|
||||||
- return QFixed::QFixed(int(CTFontGetUnitsPerEm(ctfont)));
|
|
||||||
+ return QFixed(int(CTFontGetUnitsPerEm(ctfont)));
|
|
||||||
}
|
|
||||||
|
|
||||||
QFontEngine *QCoreTextFontEngine::cloneWithSize(qreal pixelSize) const
|
|
||||||
--
|
|
||||||
2.16.3
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 5c7da197..e2b25288 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -1702,6 +1702,9 @@ AC_LINK_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT
|
||||||
|
#ifndef _OPENBSD_SOURCE
|
||||||
|
#define _OPENBSD_SOURCE 1
|
||||||
|
#endif
|
||||||
|
+#ifdef __linux__
|
||||||
|
+# error reallocarray() is currently disabled on Linux to support glibc < 2.26
|
||||||
|
+#endif
|
||||||
|
#include <stdlib.h>
|
||||||
|
int main(void) {
|
||||||
|
void* p = reallocarray(NULL, 10, 100);
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
--- config/ltmain.sh.O 2017-01-13 16:00:54.000000000 +0000
|
--- config/ltmain.sh.0 2020-11-10 17:25:26.000000000 +0100
|
||||||
+++ config/ltmain.sh 2019-11-17 06:46:51.994402494 +0000
|
+++ config/ltmain.sh 2021-09-11 19:39:36.000000000 +0200
|
||||||
@@ -7957,6 +7957,8 @@
|
@@ -10768,6 +10768,8 @@
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
|
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
|
||||||
|
tool_oldlib=$func_to_tool_file_result
|
||||||
+ oldobjs=`for obj in $oldobjs; do echo $obj; done | sort`
|
+ oldobjs=`for obj in $oldobjs; do echo $obj; done | sort`
|
||||||
+ oldobjs=" `echo $oldobjs`"
|
+ oldobjs=" `echo $oldobjs`"
|
||||||
eval cmds=\"$old_archive_cmds\"
|
eval cmds=\"$old_archive_cmds\"
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
From 06aba27b04c5822cb88a69677382a0f053367143 Mon Sep 17 00:00:00 2001
|
||||||
|
From: sabotagebeats <27985126+sabotagebeats@users.noreply.github.com>
|
||||||
|
Date: Thu, 22 Jul 2021 21:53:19 -0700
|
||||||
|
Subject: [PATCH] fix: building libzmq fails with error src/clock.cpp:131:16:
|
||||||
|
error: unused variable 'nsecs_per_usec'
|
||||||
|
|
||||||
|
---
|
||||||
|
src/clock.cpp | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/clock.cpp b/src/clock.cpp
|
||||||
|
index 93da90a8e..63c0100a5 100644
|
||||||
|
--- a/src/clock.cpp
|
||||||
|
+++ b/src/clock.cpp
|
||||||
|
@@ -195,6 +195,7 @@ uint64_t zmq::clock_t::now_us ()
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
+ LIBZMQ_UNUSED (nsecs_per_usec);
|
||||||
|
// Use POSIX gettimeofday function to get precise time.
|
||||||
|
struct timeval tv;
|
||||||
|
int rc = gettimeofday (&tv, NULL);
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
From 9114d3957725acd34aa8b8d011585812f3369411 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jeroen Ooms <jeroenooms@gmail.com>
|
|
||||||
Date: Tue, 20 Oct 2015 13:10:38 +0200
|
|
||||||
Subject: [PATCH] enable static libraries on mingw
|
|
||||||
|
|
||||||
---
|
|
||||||
configure.ac | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 393505b..e92131a 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -265,7 +265,7 @@ case "${host_os}" in
|
|
||||||
libzmq_dso_visibility="no"
|
|
||||||
|
|
||||||
if test "x$enable_static" = "xyes"; then
|
|
||||||
- AC_MSG_ERROR([Building static libraries is not supported under MinGW32])
|
|
||||||
+ CPPFLAGS="-DZMQ_STATIC"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set FD_SETSIZE to 1024
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
From 9e6745c12e0b100cd38acecc16ce7db02905e27c Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Millard <dmillard10@gmail.com>
|
|
||||||
Date: Tue, 10 May 2016 13:53:53 -0700
|
|
||||||
Subject: [PATCH] Fix autotools for static MinGW builds
|
|
||||||
|
|
||||||
---
|
|
||||||
configure.ac | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 5a0fa14..def6ea7 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -259,7 +259,7 @@ case "${host_os}" in
|
|
||||||
libzmq_dso_visibility="no"
|
|
||||||
|
|
||||||
if test "x$enable_static" = "xyes"; then
|
|
||||||
- CPPFLAGS="-DZMQ_STATIC"
|
|
||||||
+ CPPFLAGS="-DZMQ_STATIC $CPPFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set FD_SETSIZE to 1024
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
From ffe62d3398d5e0191f554f61049aa7ec9fc892ae Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gregory Lemercier <greglemercier@free.fr>
|
|
||||||
Date: Sun, 7 Oct 2018 18:06:54 +0200
|
|
||||||
Subject: [PATCH] Fix build on arm64 architectures with some strict compilers
|
|
||||||
|
|
||||||
This patch fixes an issue that occurs on 64-bit architetures under
|
|
||||||
strict compiler rules. The code initially checked that the received
|
|
||||||
size stored in 'uint64_t' was not bigger than the max value of a
|
|
||||||
'size_t' variable, which is legitimate on 32-bit architectures where
|
|
||||||
'size_t' variables are stored on 32 bits. On 64-bit architectures,
|
|
||||||
this test no longer makes sense since 'uint64_t' and 'size_t' types
|
|
||||||
have the same size. The issue is fixed by ignoring this portion
|
|
||||||
of code when built for arm64.
|
|
||||||
---
|
|
||||||
src/v1_decoder.cpp | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/v1_decoder.cpp b/src/v1_decoder.cpp
|
|
||||||
index b002dc9d..2c8c97a7 100644
|
|
||||||
--- a/src/v1_decoder.cpp
|
|
||||||
+++ b/src/v1_decoder.cpp
|
|
||||||
@@ -114,11 +114,13 @@ int zmq::v1_decoder_t::eight_byte_size_ready ()
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifndef __aarch64__
|
|
||||||
// Message size must fit within range of size_t data type.
|
|
||||||
if (payload_length - 1 > std::numeric_limits <size_t>::max ()) {
|
|
||||||
errno = EMSGSIZE;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
const size_t msg_size = static_cast <size_t> (payload_length - 1);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
||||||
@@ -24,7 +24,8 @@ SET(Readline_INCLUDE_DIR @prefix@/include)
|
|||||||
SET(Readline_LIBRARY @prefix@/lib/libreadline.a)
|
SET(Readline_LIBRARY @prefix@/lib/libreadline.a)
|
||||||
SET(Terminfo_LIBRARY @prefix@/lib/libtinfo.a)
|
SET(Terminfo_LIBRARY @prefix@/lib/libtinfo.a)
|
||||||
|
|
||||||
SET(LRELEASE_PATH @prefix@/native/bin CACHE FILEPATH "path to lrelease" FORCE)
|
SET(UNBOUND_INCLUDE_DIR @prefix@/include)
|
||||||
|
SET(UNBOUND_LIBRARIES @prefix@/lib/libunbound.a)
|
||||||
|
|
||||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
|
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||||
SET(LIBUNWIND_INCLUDE_DIR @prefix@/include)
|
SET(LIBUNWIND_INCLUDE_DIR @prefix@/include)
|
||||||
@@ -66,22 +67,35 @@ set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Find includes in target
|
|||||||
|
|
||||||
# specify the cross compiler to be used. Darwin uses clang provided by the SDK.
|
# specify the cross compiler to be used. Darwin uses clang provided by the SDK.
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
if(ARCHITECTURE STREQUAL "aarch64")
|
||||||
|
SET(CLANG_TARGET "arm64-apple-darwin11")
|
||||||
|
SET(CONF_TRIPLE "aarch64-apple-darwin11")
|
||||||
|
SET(BUILD_TAG "mac-armv8")
|
||||||
|
SET(CMAKE_OSX_ARCHITECTURES "arm64")
|
||||||
|
set(ARM ON)
|
||||||
|
set(ARM_ID "armv8-a")
|
||||||
|
else()
|
||||||
|
SET(CLANG_TARGET "x86_64-apple-darwin11")
|
||||||
|
SET(CONF_TRIPLE "x86_64-apple-darwin11")
|
||||||
|
SET(BUILD_TAG "mac-x64")
|
||||||
|
SET(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||||
|
endif()
|
||||||
|
SET(_CMAKE_TOOLCHAIN_PREFIX @prefix@/native/bin/${CONF_TRIPLE}-)
|
||||||
SET(CMAKE_C_COMPILER @prefix@/native/bin/clang)
|
SET(CMAKE_C_COMPILER @prefix@/native/bin/clang)
|
||||||
SET(CMAKE_C_COMPILER_TARGET x86_64-apple-darwin11)
|
SET(CMAKE_C_COMPILER_TARGET ${CLANG_TARGET})
|
||||||
|
SET(CMAKE_C_FLAGS_INIT -B${_CMAKE_TOOLCHAIN_PREFIX})
|
||||||
SET(CMAKE_CXX_COMPILER @prefix@/native/bin/clang++ -stdlib=libc++)
|
SET(CMAKE_CXX_COMPILER @prefix@/native/bin/clang++ -stdlib=libc++)
|
||||||
SET(CMAKE_CXX_COMPILER_TARGET x86_64-apple-darwin11)
|
SET(CMAKE_CXX_COMPILER_TARGET ${CLANG_TARGET})
|
||||||
SET(CMAKE_ASM_COMPILER_TARGET x86_64-apple-darwin11)
|
SET(CMAKE_CXX_FLAGS_INIT -B${_CMAKE_TOOLCHAIN_PREFIX})
|
||||||
SET(CMAKE_ASM-ATT_COMPILER_TARGET x86_64-apple-darwin11)
|
SET(CMAKE_ASM_COMPILER_TARGET ${CLANG_TARGET})
|
||||||
SET(_CMAKE_TOOLCHAIN_PREFIX x86_64-apple-darwin11-)
|
SET(CMAKE_ASM-ATT_COMPILER_TARGET ${CLANG_TARGET})
|
||||||
SET(APPLE True)
|
SET(APPLE True)
|
||||||
SET(BUILD_TAG "mac-x64")
|
|
||||||
SET(BUILD_64 ON)
|
SET(BUILD_64 ON)
|
||||||
SET(BREW OFF)
|
SET(BREW OFF)
|
||||||
SET(PORT OFF)
|
SET(PORT OFF)
|
||||||
SET(CMAKE_OSX_SYSROOT "@sdk@/MacOSX10.11.sdk/")
|
SET(CMAKE_OSX_SYSROOT "@prefix@/native/SDK/")
|
||||||
SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.08")
|
SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.08")
|
||||||
SET(CMAKE_CXX_STANDARD 11)
|
SET(CMAKE_CXX_STANDARD 14)
|
||||||
SET(CMAKE_OSX_ARCHITECTURES "x86_64")
|
|
||||||
SET(LLVM_ENABLE_PIC OFF)
|
SET(LLVM_ENABLE_PIC OFF)
|
||||||
SET(LLVM_ENABLE_PIE OFF)
|
SET(LLVM_ENABLE_PIE OFF)
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||||
@@ -123,7 +137,7 @@ elseif(ARCHITECTURE STREQUAL "aarch64")
|
|||||||
set(ARM_ID "armv8-a")
|
set(ARM_ID "armv8-a")
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
set(BUILD_TAG "android-armv8")
|
set(BUILD_TAG "android-armv8")
|
||||||
else()
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
set(BUILD_TAG "linux-armv8")
|
set(BUILD_TAG "linux-armv8")
|
||||||
endif()
|
endif()
|
||||||
set(BUILD_64 ON)
|
set(BUILD_64 ON)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2020, The Monero Project
|
# Copyright (c) 2014-2022, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
|
|||||||
1
contrib/epee/demo/.gitignore
vendored
1
contrib/epee/demo/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
/build/*
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
|
||||||
set(Boost_USE_MULTITHREADED ON)
|
|
||||||
#set(Boost_DEBUG 1)
|
|
||||||
find_package(Boost COMPONENTS system filesystem thread date_time chrono regex )
|
|
||||||
|
|
||||||
include_directories( ${Boost_INCLUDE_DIRS} )
|
|
||||||
|
|
||||||
|
|
||||||
IF (MSVC)
|
|
||||||
add_definitions( "/W3 /D_CRT_SECURE_NO_WARNINGS /wd4996 /wd4345 /nologo /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /bigobj" )
|
|
||||||
ELSE()
|
|
||||||
# set stuff for other systems
|
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-reorder -D_GNU_SOURCE")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
|
||||||
include_directories(.)
|
|
||||||
include_directories(../include)
|
|
||||||
include_directories(iface)
|
|
||||||
|
|
||||||
|
|
||||||
# Add folders to filters
|
|
||||||
file(GLOB_RECURSE LEVIN_GENERAL_SECTION RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/demo_levin_server/*.h
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/demo_levin_server/*.inl
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/demo_levin_server/*.cpp)
|
|
||||||
|
|
||||||
file(GLOB_RECURSE HTTP_GENERAL_SECTION RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/demo_http_server/*.h
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/demo_http_server/*.inl
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/demo_http_server/*.cpp)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
source_group(general FILES ${LEVIN_GENERAL_SECTION} FILES ${HTTP_GENERAL_SECTION})
|
|
||||||
#source_group(general FILES ${HTTP_GENERAL_SECTION})
|
|
||||||
|
|
||||||
add_executable(demo_http_server ${HTTP_GENERAL_SECTION} )
|
|
||||||
add_executable(demo_levin_server ${LEVIN_GENERAL_SECTION} )
|
|
||||||
|
|
||||||
target_link_libraries( demo_http_server ${Boost_LIBRARIES} )
|
|
||||||
target_link_libraries( demo_levin_server ${Boost_LIBRARIES} )
|
|
||||||
|
|
||||||
IF (NOT WIN32)
|
|
||||||
target_link_libraries (demo_http_server rt)
|
|
||||||
target_link_libraries (demo_levin_server rt)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
// stdafx.cpp : source file that includes just the standard includes
|
|
||||||
// demo_http_server.pch will be the pre-compiled header
|
|
||||||
// stdafx.obj will contain the pre-compiled type information
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
|
|
||||||
// TODO: reference any additional headers you need in STDAFX.H
|
|
||||||
// and not in this file
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * 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.
|
|
||||||
// * Neither the name of the Andrey N. Sabelnikov nor the
|
|
||||||
// names of its contributors may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "targetver.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define BOOST_FILESYSTEM_VERSION 3
|
|
||||||
#define ENABLE_RELEASE_LOGGING
|
|
||||||
#include "misc_log_ex.h"
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
// The following macros define the minimum required platform. The minimum required platform
|
|
||||||
// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
|
|
||||||
// your application. The macros work by enabling all features available on platform versions up to and
|
|
||||||
// including the version specified.
|
|
||||||
|
|
||||||
// Modify the following defines if you have to target a platform prior to the ones specified below.
|
|
||||||
// Refer to MSDN for the latest info on corresponding values for different platforms.
|
|
||||||
#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista.
|
|
||||||
#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * 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.
|
|
||||||
// * Neither the name of the Andrey N. Sabelnikov nor the
|
|
||||||
// names of its contributors may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * 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.
|
|
||||||
// * Neither the name of the Andrey N. Sabelnikov nor the
|
|
||||||
// names of its contributors may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "targetver.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define BOOST_FILESYSTEM_VERSION 3
|
|
||||||
#define ENABLE_RELEASE_LOGGING
|
|
||||||
#include "log_opt_defs.h"
|
|
||||||
#include "misc_log_ex.h"
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
// The following macros define the minimum required platform. The minimum required platform
|
|
||||||
// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
|
|
||||||
// your application. The macros work by enabling all features available on platform versions up to and
|
|
||||||
// including the version specified.
|
|
||||||
|
|
||||||
// Modify the following defines if you have to target a platform prior to the ones specified below.
|
|
||||||
// Refer to MSDN for the latest info on corresponding values for different platforms.
|
|
||||||
#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista.
|
|
||||||
#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
cmake ..
|
|
||||||
#cmake -DBOOST_ROOT=/usr/local/proj/boost_1_49_0 -DBOOST_LIBRARYDIR=/usr/local/proj/boost_1_49_0/stage/lib ..
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
mkdir build
|
|
||||||
|
|
||||||
cd build
|
|
||||||
|
|
||||||
cmake "-DBoost_USE_STATIC_LIBS=TRUE" -G "Visual Studio 11 Win64" ..
|
|
||||||
cd ..
|
|
||||||
pause
|
|
||||||
@@ -1,225 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "serialization/keyvalue_serialization.h"
|
|
||||||
#include "storages/portable_storage_base.h"
|
|
||||||
|
|
||||||
namespace demo
|
|
||||||
{
|
|
||||||
|
|
||||||
struct some_test_subdata
|
|
||||||
{
|
|
||||||
std::string m_str;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(m_str)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
|
|
||||||
struct some_test_data
|
|
||||||
{
|
|
||||||
std::string m_str;
|
|
||||||
uint64_t m_uint64;
|
|
||||||
uint32_t m_uint32;
|
|
||||||
uint16_t m_uint16;
|
|
||||||
uint8_t m_uint8;
|
|
||||||
int64_t m_int64;
|
|
||||||
int32_t m_int32;
|
|
||||||
int16_t m_int16;
|
|
||||||
int8_t m_int8;
|
|
||||||
double m_double;
|
|
||||||
bool m_bool;
|
|
||||||
std::list<std::string> m_list_of_str;
|
|
||||||
std::list<uint64_t> m_list_of_uint64_t;
|
|
||||||
std::list<uint32_t> m_list_of_uint32_t;
|
|
||||||
std::list<uint16_t> m_list_of_uint16_t;
|
|
||||||
std::list<uint8_t> m_list_of_uint8_t;
|
|
||||||
std::list<int64_t> m_list_of_int64_t;
|
|
||||||
std::list<int32_t> m_list_of_int32_t;
|
|
||||||
std::list<int16_t> m_list_of_int16_t;
|
|
||||||
std::list<int8_t> m_list_of_int8_t;
|
|
||||||
std::list<double> m_list_of_double;
|
|
||||||
std::list<bool> m_list_of_bool;
|
|
||||||
some_test_subdata m_subobj;
|
|
||||||
std::list<some_test_data> m_list_of_self;
|
|
||||||
epee::serialization::storage_entry m_storage_entry_int;
|
|
||||||
epee::serialization::storage_entry m_storage_entry_string;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(m_str)
|
|
||||||
KV_SERIALIZE(m_uint64)
|
|
||||||
KV_SERIALIZE(m_uint32)
|
|
||||||
KV_SERIALIZE(m_uint16)
|
|
||||||
KV_SERIALIZE(m_uint8)
|
|
||||||
KV_SERIALIZE(m_int64)
|
|
||||||
KV_SERIALIZE(m_int32)
|
|
||||||
KV_SERIALIZE(m_int16)
|
|
||||||
KV_SERIALIZE(m_int8)
|
|
||||||
KV_SERIALIZE(m_double)
|
|
||||||
KV_SERIALIZE(m_bool)
|
|
||||||
KV_SERIALIZE(m_subobj)
|
|
||||||
KV_SERIALIZE(m_list_of_str)
|
|
||||||
KV_SERIALIZE(m_list_of_uint64_t)
|
|
||||||
KV_SERIALIZE(m_list_of_uint32_t)
|
|
||||||
KV_SERIALIZE(m_list_of_uint16_t)
|
|
||||||
KV_SERIALIZE(m_list_of_uint8_t)
|
|
||||||
KV_SERIALIZE(m_list_of_int64_t)
|
|
||||||
KV_SERIALIZE(m_list_of_int32_t)
|
|
||||||
KV_SERIALIZE(m_list_of_int16_t)
|
|
||||||
KV_SERIALIZE(m_list_of_int8_t)
|
|
||||||
KV_SERIALIZE(m_list_of_double)
|
|
||||||
KV_SERIALIZE(m_list_of_bool)
|
|
||||||
KV_SERIALIZE(m_list_of_self)
|
|
||||||
KV_SERIALIZE(m_storage_entry_int)
|
|
||||||
KV_SERIALIZE(m_storage_entry_string)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
/* */
|
|
||||||
/************************************************************************/
|
|
||||||
struct COMMAND_EXAMPLE_1
|
|
||||||
{
|
|
||||||
const static int ID = 1000;
|
|
||||||
|
|
||||||
struct request_t
|
|
||||||
{
|
|
||||||
std::string example_string_data;
|
|
||||||
some_test_data sub;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(example_string_data)
|
|
||||||
KV_SERIALIZE(sub)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<request_t> request;
|
|
||||||
|
|
||||||
|
|
||||||
struct response_t
|
|
||||||
{
|
|
||||||
bool m_success;
|
|
||||||
std::list<some_test_data> subs;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(m_success)
|
|
||||||
KV_SERIALIZE(subs)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<response_t> response;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct COMMAND_EXAMPLE_2
|
|
||||||
{
|
|
||||||
const static int ID = 1001;
|
|
||||||
|
|
||||||
struct request_t
|
|
||||||
{
|
|
||||||
std::string example_string_data2;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(example_string_data2)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<request_t> request;
|
|
||||||
|
|
||||||
struct response_t
|
|
||||||
{
|
|
||||||
bool m_success;
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(m_success)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<response_t> response;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------
|
|
||||||
//-------------------------------------------------------------------------------------
|
|
||||||
//in debug purpose
|
|
||||||
bool operator != (const some_test_subdata& a, const some_test_subdata& b)
|
|
||||||
{
|
|
||||||
return b.m_str != a.m_str;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator == (const some_test_data& a, const some_test_data& b)
|
|
||||||
{
|
|
||||||
if( b.m_str != a.m_str
|
|
||||||
|| b.m_uint64 != a.m_uint64
|
|
||||||
|| b.m_uint32 != a.m_uint32
|
|
||||||
|| b.m_uint16 != a.m_uint16
|
|
||||||
|| b.m_uint8 != a.m_uint8
|
|
||||||
|| b.m_int64 != a.m_int64
|
|
||||||
|| b.m_int32 != a.m_int32
|
|
||||||
|| b.m_int16 != a.m_int16
|
|
||||||
|| b.m_int8 != a.m_int8
|
|
||||||
|| b.m_double != a.m_double
|
|
||||||
|| b.m_bool != a.m_bool
|
|
||||||
|| b.m_list_of_str != a.m_list_of_str
|
|
||||||
|| b.m_list_of_uint64_t != a.m_list_of_uint64_t
|
|
||||||
|| b.m_list_of_uint32_t != a.m_list_of_uint32_t
|
|
||||||
|| b.m_list_of_uint16_t != a.m_list_of_uint16_t
|
|
||||||
|| b.m_list_of_uint8_t != a.m_list_of_uint8_t
|
|
||||||
|| b.m_list_of_int64_t != a.m_list_of_int64_t
|
|
||||||
|| b.m_list_of_int32_t != a.m_list_of_int32_t
|
|
||||||
|| b.m_list_of_int16_t != a.m_list_of_int16_t
|
|
||||||
|| b.m_list_of_int8_t != a.m_list_of_int8_t
|
|
||||||
|| b.m_list_of_double != a.m_list_of_double
|
|
||||||
|| b.m_list_of_bool != a.m_list_of_bool
|
|
||||||
|| b.m_subobj != a.m_subobj
|
|
||||||
|| b.m_list_of_self != a.m_list_of_self
|
|
||||||
|| b.m_storage_entry_int.which() != a.m_storage_entry_int.which()
|
|
||||||
|| b.m_storage_entry_string.which() != a.m_storage_entry_string.which()
|
|
||||||
)
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline some_test_data get_test_data()
|
|
||||||
{
|
|
||||||
some_test_data s;
|
|
||||||
s.m_str = "zuzuzuzuzuz";
|
|
||||||
s.m_uint64 = 111111111111111;
|
|
||||||
s.m_uint32 = 2222222;
|
|
||||||
s.m_uint16 = 2222;
|
|
||||||
s.m_uint8 = 22;
|
|
||||||
s.m_int64 = -111111111111111;
|
|
||||||
s.m_int32 = -2222222;
|
|
||||||
s.m_int16 = -2222;
|
|
||||||
s.m_int8 = -24;
|
|
||||||
s.m_double = 0.11111;
|
|
||||||
s.m_bool = true;
|
|
||||||
s.m_list_of_str.push_back("1112121");
|
|
||||||
s.m_list_of_uint64_t.push_back(1111111111);
|
|
||||||
s.m_list_of_uint64_t.push_back(2222222222);
|
|
||||||
s.m_list_of_uint32_t.push_back(1111111);
|
|
||||||
s.m_list_of_uint32_t.push_back(2222222);
|
|
||||||
s.m_list_of_uint16_t.push_back(1111);
|
|
||||||
s.m_list_of_uint16_t.push_back(2222);
|
|
||||||
s.m_list_of_uint8_t.push_back(11);
|
|
||||||
s.m_list_of_uint8_t.push_back(22);
|
|
||||||
|
|
||||||
|
|
||||||
s.m_list_of_int64_t.push_back(-1111111111);
|
|
||||||
s.m_list_of_int64_t.push_back(-222222222);
|
|
||||||
s.m_list_of_int32_t.push_back(-1111111);
|
|
||||||
s.m_list_of_int32_t.push_back(-2222222);
|
|
||||||
s.m_list_of_int16_t.push_back(-1111);
|
|
||||||
s.m_list_of_int16_t.push_back(-2222);
|
|
||||||
s.m_list_of_int8_t.push_back(-11);
|
|
||||||
s.m_list_of_int8_t.push_back(-22);
|
|
||||||
|
|
||||||
s.m_list_of_double.push_back(0.11111);
|
|
||||||
s.m_list_of_double.push_back(0.22222);
|
|
||||||
s.m_list_of_bool.push_back(true);
|
|
||||||
s.m_list_of_bool.push_back(false);
|
|
||||||
|
|
||||||
s.m_subobj.m_str = "subszzzzzzzz";
|
|
||||||
s.m_list_of_self.push_back(s);
|
|
||||||
s.m_storage_entry_int = epee::serialization::storage_entry(uint64_t(22222));
|
|
||||||
s.m_storage_entry_string = epee::serialization::storage_entry(std::string("sdsvsdvs"));
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2019-2020, The Monero Project
|
// Copyright (c) 2019-2022, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -112,7 +112,7 @@ namespace epee
|
|||||||
explicit byte_slice(std::string&& buffer);
|
explicit byte_slice(std::string&& buffer);
|
||||||
|
|
||||||
//! Convert `stream` into a slice with zero allocations.
|
//! Convert `stream` into a slice with zero allocations.
|
||||||
explicit byte_slice(byte_stream&& stream) noexcept;
|
explicit byte_slice(byte_stream&& stream, bool shrink = true);
|
||||||
|
|
||||||
byte_slice(byte_slice&& source) noexcept;
|
byte_slice(byte_slice&& source) noexcept;
|
||||||
~byte_slice() noexcept = default;
|
~byte_slice() noexcept = default;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// Copyright (c) 2020, The Monero Project
|
// Copyright (c) 2020-2022, The Monero Project
|
||||||
|
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -58,7 +59,6 @@ namespace epee
|
|||||||
byte_buffer buffer_; //! Beginning of buffer
|
byte_buffer buffer_; //! Beginning of buffer
|
||||||
std::uint8_t* next_write_; //! Current write position
|
std::uint8_t* next_write_; //! Current write position
|
||||||
const std::uint8_t* end_; //! End of buffer
|
const std::uint8_t* end_; //! End of buffer
|
||||||
std::size_t increase_size_; //! Minimum buffer size increase
|
|
||||||
|
|
||||||
//! \post `requested <= available()`
|
//! \post `requested <= available()`
|
||||||
void overflow(const std::size_t requested);
|
void overflow(const std::size_t requested);
|
||||||
@@ -75,29 +75,17 @@ namespace epee
|
|||||||
using char_type = std::uint8_t;
|
using char_type = std::uint8_t;
|
||||||
using Ch = char_type;
|
using Ch = char_type;
|
||||||
|
|
||||||
//! \return Default minimum size increase on buffer overflow
|
|
||||||
static constexpr std::size_t default_increase() noexcept { return 4096; }
|
|
||||||
|
|
||||||
//! Increase internal buffer by at least `byte_stream_increase` bytes.
|
//! Increase internal buffer by at least `byte_stream_increase` bytes.
|
||||||
byte_stream() noexcept
|
byte_stream() noexcept
|
||||||
: byte_stream(default_increase())
|
|
||||||
{}
|
|
||||||
|
|
||||||
//! Increase internal buffer by at least `increase` bytes.
|
|
||||||
explicit byte_stream(const std::size_t increase) noexcept
|
|
||||||
: buffer_(nullptr),
|
: buffer_(nullptr),
|
||||||
next_write_(nullptr),
|
next_write_(nullptr),
|
||||||
end_(nullptr),
|
end_(nullptr)
|
||||||
increase_size_(increase)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
byte_stream(byte_stream&& rhs) noexcept;
|
byte_stream(byte_stream&& rhs) noexcept;
|
||||||
~byte_stream() noexcept = default;
|
~byte_stream() noexcept = default;
|
||||||
byte_stream& operator=(byte_stream&& rhs) noexcept;
|
byte_stream& operator=(byte_stream&& rhs) noexcept;
|
||||||
|
|
||||||
//! \return The minimum increase size on buffer overflow
|
|
||||||
std::size_t increase_size() const noexcept { return increase_size_; }
|
|
||||||
|
|
||||||
const std::uint8_t* data() const noexcept { return buffer_.get(); }
|
const std::uint8_t* data() const noexcept { return buffer_.get(); }
|
||||||
std::uint8_t* tellp() const noexcept { return next_write_; }
|
std::uint8_t* tellp() const noexcept { return next_write_; }
|
||||||
std::size_t available() const noexcept { return end_ - next_write_; }
|
std::size_t available() const noexcept { return end_ - next_write_; }
|
||||||
@@ -188,7 +176,7 @@ namespace epee
|
|||||||
void put_n(const std::uint8_t ch, const std::size_t count)
|
void put_n(const std::uint8_t ch, const std::size_t count)
|
||||||
{
|
{
|
||||||
check(count);
|
check(count);
|
||||||
std::memset(tellp(), count, ch);
|
std::memset(tellp(), ch, count);
|
||||||
next_write_ += count;
|
next_write_ += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ namespace epee
|
|||||||
if (m_read_status == state_cancelled)
|
if (m_read_status == state_cancelled)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int retval = ::WaitForSingleObject(::GetStdHandle(STD_INPUT_HANDLE), 100);
|
DWORD retval = ::WaitForSingleObject(::GetStdHandle(STD_INPUT_HANDLE), 100);
|
||||||
switch (retval)
|
switch (retval)
|
||||||
{
|
{
|
||||||
case WAIT_FAILED:
|
case WAIT_FAILED:
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * 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.
|
|
||||||
// * Neither the name of the Andrey N. Sabelnikov nor the
|
|
||||||
// names of its contributors may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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.
|
|
||||||
//
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <atomic>
|
|
||||||
|
|
||||||
namespace epee
|
|
||||||
{
|
|
||||||
class copyable_atomic: public std::atomic<uint32_t>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
copyable_atomic()
|
|
||||||
{};
|
|
||||||
copyable_atomic(uint32_t value)
|
|
||||||
{ store(value); }
|
|
||||||
copyable_atomic(const copyable_atomic& a):std::atomic<uint32_t>(a.load())
|
|
||||||
{}
|
|
||||||
copyable_atomic& operator= (const copyable_atomic& a)
|
|
||||||
{
|
|
||||||
store(a.load());
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
uint32_t operator++()
|
|
||||||
{
|
|
||||||
return std::atomic<uint32_t>::operator++();
|
|
||||||
}
|
|
||||||
uint32_t operator++(int fake)
|
|
||||||
{
|
|
||||||
return std::atomic<uint32_t>::operator++(fake);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -24,211 +24,20 @@
|
|||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
#ifndef _FILE_IO_UTILS_H_
|
#ifndef _FILE_IO_UTILS_H_
|
||||||
#define _FILE_IO_UTILS_H_
|
#define _FILE_IO_UTILS_H_
|
||||||
|
|
||||||
#include <fstream>
|
#include <string>
|
||||||
#include <boost/filesystem/path.hpp>
|
#include <ctime>
|
||||||
#include <boost/filesystem/operations.hpp>
|
|
||||||
#ifdef WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#include "string_tools.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// On Windows there is a problem with non-ASCII characters in path and file names
|
|
||||||
// as far as support by the standard components used is concerned:
|
|
||||||
|
|
||||||
// The various file stream classes, e.g. std::ifstream and std::ofstream, are
|
|
||||||
// part of the GNU C++ Library / libstdc++. On the most basic level they use the
|
|
||||||
// fopen() call as defined / made accessible to programs compiled within MSYS2
|
|
||||||
// by the stdio.h header file maintained by the MinGW project.
|
|
||||||
|
|
||||||
// The critical point: The implementation of fopen() is part of MSVCRT, the
|
|
||||||
// Microsoft Visual C/C++ Runtime Library, and this method does NOT offer any
|
|
||||||
// Unicode support.
|
|
||||||
|
|
||||||
// Monero code that would want to continue to use the normal file stream classes
|
|
||||||
// but WITH Unicode support could therefore not solve this problem on its own,
|
|
||||||
// but 2 different projects from 2 different maintaining groups would need changes
|
|
||||||
// in this particular direction - something probably difficult to achieve and
|
|
||||||
// with a long time to wait until all new versions / releases arrive.
|
|
||||||
|
|
||||||
// Implemented solution approach: Circumvent the problem by stopping to use std
|
|
||||||
// file stream classes on Windows and directly use Unicode-capable WIN32 API
|
|
||||||
// calls. Most of the code doing so is concentrated in this header file here.
|
|
||||||
|
|
||||||
namespace epee
|
namespace epee
|
||||||
{
|
{
|
||||||
namespace file_io_utils
|
namespace file_io_utils
|
||||||
{
|
{
|
||||||
inline
|
bool is_file_exist(const std::string& path);
|
||||||
bool is_file_exist(const std::string& path)
|
bool save_string_to_file(const std::string& path_to_file, const std::string& str);
|
||||||
{
|
bool load_file_to_string(const std::string& path_to_file, std::string& target_str, size_t max_size = 1000000000);
|
||||||
boost::filesystem::path p(path);
|
bool get_file_size(const std::string& path_to_file, uint64_t &size);
|
||||||
return boost::filesystem::exists(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
bool save_string_to_file(const std::string& path_to_file, const std::string& str)
|
|
||||||
{
|
|
||||||
#ifdef WIN32
|
|
||||||
std::wstring wide_path;
|
|
||||||
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
|
|
||||||
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
if (file_handle == INVALID_HANDLE_VALUE)
|
|
||||||
return false;
|
|
||||||
DWORD bytes_written;
|
|
||||||
DWORD bytes_to_write = (DWORD)str.size();
|
|
||||||
BOOL result = WriteFile(file_handle, str.data(), bytes_to_write, &bytes_written, NULL);
|
|
||||||
CloseHandle(file_handle);
|
|
||||||
if (bytes_written != bytes_to_write)
|
|
||||||
result = FALSE;
|
|
||||||
return result;
|
|
||||||
#else
|
|
||||||
try
|
|
||||||
{
|
|
||||||
std::ofstream fstream;
|
|
||||||
fstream.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
fstream.open(path_to_file, std::ios_base::binary | std::ios_base::out | std::ios_base::trunc);
|
|
||||||
fstream << str;
|
|
||||||
fstream.close();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
bool get_file_time(const std::string& path_to_file, time_t& ft)
|
|
||||||
{
|
|
||||||
boost::system::error_code ec;
|
|
||||||
ft = boost::filesystem::last_write_time(boost::filesystem::path(path_to_file), ec);
|
|
||||||
if(!ec)
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
bool set_file_time(const std::string& path_to_file, const time_t& ft)
|
|
||||||
{
|
|
||||||
boost::system::error_code ec;
|
|
||||||
boost::filesystem::last_write_time(boost::filesystem::path(path_to_file), ft, ec);
|
|
||||||
if(!ec)
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline
|
|
||||||
bool load_file_to_string(const std::string& path_to_file, std::string& target_str, size_t max_size = 1000000000)
|
|
||||||
{
|
|
||||||
#ifdef WIN32
|
|
||||||
std::wstring wide_path;
|
|
||||||
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
|
|
||||||
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
if (file_handle == INVALID_HANDLE_VALUE)
|
|
||||||
return false;
|
|
||||||
DWORD file_size = GetFileSize(file_handle, NULL);
|
|
||||||
if ((file_size == INVALID_FILE_SIZE) || (uint64_t)file_size > (uint64_t)max_size) {
|
|
||||||
CloseHandle(file_handle);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
target_str.resize(file_size);
|
|
||||||
DWORD bytes_read;
|
|
||||||
BOOL result = ReadFile(file_handle, &target_str[0], file_size, &bytes_read, NULL);
|
|
||||||
CloseHandle(file_handle);
|
|
||||||
if (bytes_read != file_size)
|
|
||||||
result = FALSE;
|
|
||||||
return result;
|
|
||||||
#else
|
|
||||||
try
|
|
||||||
{
|
|
||||||
std::ifstream fstream;
|
|
||||||
fstream.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
fstream.open(path_to_file, std::ios_base::binary | std::ios_base::in | std::ios::ate);
|
|
||||||
|
|
||||||
std::ifstream::pos_type file_size = fstream.tellg();
|
|
||||||
|
|
||||||
if((uint64_t)file_size > (uint64_t)max_size) // ensure a large domain for comparison, and negative -> too large
|
|
||||||
return false;//don't go crazy
|
|
||||||
size_t file_size_t = static_cast<size_t>(file_size);
|
|
||||||
|
|
||||||
target_str.resize(file_size_t);
|
|
||||||
|
|
||||||
fstream.seekg (0, std::ios::beg);
|
|
||||||
fstream.read((char*)target_str.data(), target_str.size());
|
|
||||||
fstream.close();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
bool append_string_to_file(const std::string& path_to_file, const std::string& str)
|
|
||||||
{
|
|
||||||
// No special Windows implementation because so far not used in Monero code
|
|
||||||
try
|
|
||||||
{
|
|
||||||
std::ofstream fstream;
|
|
||||||
fstream.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
fstream.open(path_to_file.c_str(), std::ios_base::binary | std::ios_base::out | std::ios_base::app);
|
|
||||||
fstream << str;
|
|
||||||
fstream.close();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
bool get_file_size(const std::string& path_to_file, uint64_t &size)
|
|
||||||
{
|
|
||||||
#ifdef WIN32
|
|
||||||
std::wstring wide_path;
|
|
||||||
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
|
|
||||||
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
if (file_handle == INVALID_HANDLE_VALUE)
|
|
||||||
return false;
|
|
||||||
LARGE_INTEGER file_size;
|
|
||||||
BOOL result = GetFileSizeEx(file_handle, &file_size);
|
|
||||||
CloseHandle(file_handle);
|
|
||||||
if (result) {
|
|
||||||
size = file_size.QuadPart;
|
|
||||||
}
|
|
||||||
return size;
|
|
||||||
#else
|
|
||||||
try
|
|
||||||
{
|
|
||||||
std::ifstream fstream;
|
|
||||||
fstream.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
fstream.open(path_to_file, std::ios_base::binary | std::ios_base::in | std::ios::ate);
|
|
||||||
size = fstream.tellg();
|
|
||||||
fstream.close();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// Copyright (c) 2018, The Monero Project
|
// Copyright (c) 2018-2022, The Monero Project
|
||||||
|
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * 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.
|
|
||||||
// * Neither the name of the Andrey N. Sabelnikov nor the
|
|
||||||
// names of its contributors may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
std::stringstream& operator<<(std::stringstream& out, const std::wstring& ws)
|
|
||||||
{
|
|
||||||
std::string as = string_encoding::convert_to_ansii(ws);
|
|
||||||
out << as;
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
@@ -1,227 +0,0 @@
|
|||||||
// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * 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.
|
|
||||||
// * Neither the name of the Andrey N. Sabelnikov nor the
|
|
||||||
// names of its contributors may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _GZIP_ENCODING_H_
|
|
||||||
#define _GZIP_ENCODING_H_
|
|
||||||
#include "net/http_client_base.h"
|
|
||||||
#include "zlib/zlib.h"
|
|
||||||
//#include "http.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace epee
|
|
||||||
{
|
|
||||||
namespace net_utils
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class content_encoding_gzip: public i_sub_handler
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/*! \brief
|
|
||||||
* Function content_encoding_gzip : Constructor
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
inline
|
|
||||||
content_encoding_gzip(i_target_handler* powner_filter, bool is_deflate_mode = false):m_powner_filter(powner_filter),
|
|
||||||
m_is_stream_ended(false),
|
|
||||||
m_is_deflate_mode(is_deflate_mode),
|
|
||||||
m_is_first_update_in(true)
|
|
||||||
{
|
|
||||||
memset(&m_zstream_in, 0, sizeof(m_zstream_in));
|
|
||||||
memset(&m_zstream_out, 0, sizeof(m_zstream_out));
|
|
||||||
int ret = 0;
|
|
||||||
if(is_deflate_mode)
|
|
||||||
{
|
|
||||||
ret = inflateInit(&m_zstream_in);
|
|
||||||
ret = deflateInit(&m_zstream_out, Z_DEFAULT_COMPRESSION);
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
ret = inflateInit2(&m_zstream_in, 0x1F);
|
|
||||||
ret = deflateInit2(&m_zstream_out, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 0x1F, 8, Z_DEFAULT_STRATEGY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*! \brief
|
|
||||||
* Function content_encoding_gzip : Destructor
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
inline
|
|
||||||
~content_encoding_gzip()
|
|
||||||
{
|
|
||||||
inflateEnd(& m_zstream_in );
|
|
||||||
deflateEnd(& m_zstream_out );
|
|
||||||
}
|
|
||||||
/*! \brief
|
|
||||||
* Function update_in : Entry point for income data
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
inline
|
|
||||||
virtual bool update_in( std::string& piece_of_transfer)
|
|
||||||
{
|
|
||||||
|
|
||||||
bool is_first_time_here = m_is_first_update_in;
|
|
||||||
m_is_first_update_in = false;
|
|
||||||
|
|
||||||
if(m_pre_decode.size())
|
|
||||||
m_pre_decode += piece_of_transfer;
|
|
||||||
else
|
|
||||||
m_pre_decode.swap(piece_of_transfer);
|
|
||||||
piece_of_transfer.clear();
|
|
||||||
|
|
||||||
std::string decode_summary_buff;
|
|
||||||
|
|
||||||
size_t ungzip_size = m_pre_decode.size() * 0x30;
|
|
||||||
std::string current_decode_buff(ungzip_size, 'X');
|
|
||||||
|
|
||||||
//Here the cycle is introduced where we unpack the buffer, the cycle is required
|
|
||||||
//because of the case where if after unpacking the data will exceed the awaited size, we will not halt with error
|
|
||||||
bool continue_unpacking = true;
|
|
||||||
bool first_step = true;
|
|
||||||
while(m_pre_decode.size() && continue_unpacking)
|
|
||||||
{
|
|
||||||
|
|
||||||
//fill buffers
|
|
||||||
m_zstream_in.next_in = (Bytef*)m_pre_decode.data();
|
|
||||||
m_zstream_in.avail_in = (uInt)m_pre_decode.size();
|
|
||||||
m_zstream_in.next_out = (Bytef*)current_decode_buff.data();
|
|
||||||
m_zstream_in.avail_out = (uInt)ungzip_size;
|
|
||||||
|
|
||||||
int flag = Z_SYNC_FLUSH;
|
|
||||||
int ret = inflate(&m_zstream_in, flag);
|
|
||||||
CHECK_AND_ASSERT_MES(ret>=0 || m_zstream_in.avail_out ||m_is_deflate_mode, false, "content_encoding_gzip::update_in() Failed to inflate. err = " << ret);
|
|
||||||
|
|
||||||
if(Z_STREAM_END == ret)
|
|
||||||
m_is_stream_ended = true;
|
|
||||||
else if(Z_DATA_ERROR == ret && is_first_time_here && m_is_deflate_mode&& first_step)
|
|
||||||
{
|
|
||||||
// some servers (notably Apache with mod_deflate) don't generate zlib headers
|
|
||||||
// insert a dummy header and try again
|
|
||||||
static char dummy_head[2] =
|
|
||||||
{
|
|
||||||
0x8 + 0x7 * 0x10,
|
|
||||||
(((0x8 + 0x7 * 0x10) * 0x100 + 30) / 31 * 31) & 0xFF,
|
|
||||||
};
|
|
||||||
inflateReset(&m_zstream_in);
|
|
||||||
m_zstream_in.next_in = (Bytef*) dummy_head;
|
|
||||||
m_zstream_in.avail_in = sizeof(dummy_head);
|
|
||||||
|
|
||||||
ret = inflate(&m_zstream_in, Z_NO_FLUSH);
|
|
||||||
if (ret != Z_OK)
|
|
||||||
{
|
|
||||||
LOCAL_ASSERT(0);
|
|
||||||
m_pre_decode.swap(piece_of_transfer);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
m_zstream_in.next_in = (Bytef*)m_pre_decode.data();
|
|
||||||
m_zstream_in.avail_in = (uInt)m_pre_decode.size();
|
|
||||||
|
|
||||||
ret = inflate(&m_zstream_in, Z_NO_FLUSH);
|
|
||||||
if (ret != Z_OK)
|
|
||||||
{
|
|
||||||
LOCAL_ASSERT(0);
|
|
||||||
m_pre_decode.swap(piece_of_transfer);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//leave only unpacked part in the output buffer to start with it the next time
|
|
||||||
m_pre_decode.erase(0, m_pre_decode.size()-m_zstream_in.avail_in);
|
|
||||||
//if decoder gave nothing to return, then everything is ahead, now simply break
|
|
||||||
if(ungzip_size == m_zstream_in.avail_out)
|
|
||||||
break;
|
|
||||||
|
|
||||||
//decode_buff currently stores data parts that were unpacked, fix this size
|
|
||||||
current_decode_buff.resize(ungzip_size - m_zstream_in.avail_out);
|
|
||||||
if(decode_summary_buff.size())
|
|
||||||
decode_summary_buff += current_decode_buff;
|
|
||||||
else
|
|
||||||
current_decode_buff.swap(decode_summary_buff);
|
|
||||||
|
|
||||||
current_decode_buff.resize(ungzip_size);
|
|
||||||
first_step = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Process these data if required
|
|
||||||
bool res = true;
|
|
||||||
|
|
||||||
res = m_powner_filter->handle_target_data(decode_summary_buff);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
|
||||||
/*! \brief
|
|
||||||
* Function stop : Entry point for stop signal and flushing cached data buffer.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
inline
|
|
||||||
virtual void stop(std::string& OUT collect_remains)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
protected:
|
|
||||||
private:
|
|
||||||
/*! \brief
|
|
||||||
* Pointer to parent HTTP-parser
|
|
||||||
*/
|
|
||||||
i_target_handler* m_powner_filter;
|
|
||||||
/*! \brief
|
|
||||||
* ZLIB object for income stream
|
|
||||||
*/
|
|
||||||
z_stream m_zstream_in;
|
|
||||||
/*! \brief
|
|
||||||
* ZLIB object for outcome stream
|
|
||||||
*/
|
|
||||||
z_stream m_zstream_out;
|
|
||||||
/*! \brief
|
|
||||||
* Data that could not be unpacked immediately, left to wait for the next packet of data
|
|
||||||
*/
|
|
||||||
std::string m_pre_decode;
|
|
||||||
/*! \brief
|
|
||||||
* The data are accumulated for a package in the buffer to send the web client
|
|
||||||
*/
|
|
||||||
std::string m_pre_encode;
|
|
||||||
/*! \brief
|
|
||||||
* Signals that stream looks like ended
|
|
||||||
*/
|
|
||||||
bool m_is_stream_ended;
|
|
||||||
/*! \brief
|
|
||||||
* If this flag is set, income data is in HTTP-deflate mode
|
|
||||||
*/
|
|
||||||
bool m_is_deflate_mode;
|
|
||||||
/*! \brief
|
|
||||||
* Marks that it is a first data packet
|
|
||||||
*/
|
|
||||||
bool m_is_first_update_in;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //_GZIP_ENCODING_H_
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2017-2020, The Monero Project
|
// Copyright (c) 2017-2022, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
/*
|
|
||||||
* libEtPan! -- a mail stuff library
|
|
||||||
*
|
|
||||||
* Copyright (C) 2001, 2005 - DINH Viet Hoa
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of the libEtPan! project nor the names of its
|
|
||||||
* contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS 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 AUTHORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* hmac-md5.h -- HMAC_MD5 functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* $Id: hmac-md5.h,v 1.1.1.1 2005/03/18 20:17:28 zautrix Exp $
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef HMAC_MD5_H
|
|
||||||
#define HMAC_MD5_H 1
|
|
||||||
|
|
||||||
namespace md5
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define HMAC_MD5_SIZE 16
|
|
||||||
|
|
||||||
/* intermediate MD5 context */
|
|
||||||
typedef struct HMAC_MD5_CTX_s {
|
|
||||||
MD5_CTX ictx, octx;
|
|
||||||
} HMAC_MD5_CTX;
|
|
||||||
|
|
||||||
/* intermediate HMAC state
|
|
||||||
* values stored in network byte order (Big Endian)
|
|
||||||
*/
|
|
||||||
typedef struct HMAC_MD5_STATE_s {
|
|
||||||
UINT4 istate[4];
|
|
||||||
UINT4 ostate[4];
|
|
||||||
} HMAC_MD5_STATE;
|
|
||||||
|
|
||||||
/* One step hmac computation
|
|
||||||
*
|
|
||||||
* digest may be same as text or key
|
|
||||||
*/
|
|
||||||
void hmac_md5(const unsigned char *text, int text_len,
|
|
||||||
const unsigned char *key, int key_len,
|
|
||||||
unsigned char digest[HMAC_MD5_SIZE]);
|
|
||||||
|
|
||||||
/* create context from key
|
|
||||||
*/
|
|
||||||
void hmac_md5_init(HMAC_MD5_CTX *hmac,
|
|
||||||
const unsigned char *key, int key_len);
|
|
||||||
|
|
||||||
/* precalculate intermediate state from key
|
|
||||||
*/
|
|
||||||
void hmac_md5_precalc(HMAC_MD5_STATE *hmac,
|
|
||||||
const unsigned char *key, int key_len);
|
|
||||||
|
|
||||||
/* initialize context from intermediate state
|
|
||||||
*/
|
|
||||||
void hmac_md5_import(HMAC_MD5_CTX *hmac, HMAC_MD5_STATE *state);
|
|
||||||
|
|
||||||
#define hmac_md5_update(hmac, text, text_len) MD5Update(&(hmac)->ictx, (text), (text_len))
|
|
||||||
|
|
||||||
/* finish hmac from intermediate result. Intermediate result is zeroed.
|
|
||||||
*/
|
|
||||||
void hmac_md5_final(unsigned char digest[HMAC_MD5_SIZE],
|
|
||||||
HMAC_MD5_CTX *hmac);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HMAC_MD5_H */
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2022, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -37,8 +37,8 @@
|
|||||||
#include <boost/uuid/uuid.hpp>
|
#include <boost/uuid/uuid.hpp>
|
||||||
#include <boost/uuid/random_generator.hpp>
|
#include <boost/uuid/random_generator.hpp>
|
||||||
|
|
||||||
#include "misc_os_dependent.h"
|
|
||||||
#include "syncobj.h"
|
#include "syncobj.h"
|
||||||
|
#include "time_helper.h"
|
||||||
|
|
||||||
namespace epee
|
namespace epee
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ namespace md5
|
|||||||
static void MD5Init(MD5_CTX * context);
|
static void MD5Init(MD5_CTX * context);
|
||||||
static void MD5Update( MD5_CTX *context, const unsigned char *input, unsigned int inputLen );
|
static void MD5Update( MD5_CTX *context, const unsigned char *input, unsigned int inputLen );
|
||||||
static void MD5Final ( unsigned char digest[16], MD5_CTX *context );
|
static void MD5Final ( unsigned char digest[16], MD5_CTX *context );
|
||||||
static inline void hmac_md5(const unsigned char* text, int text_len, const unsigned char* key, int key_len, unsigned char *digest);
|
|
||||||
|
|
||||||
|
|
||||||
inline bool md5( unsigned char *input, int ilen, unsigned char output[16] )
|
inline bool md5( unsigned char *input, int ilen, unsigned char output[16] )
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ documentation and/or software.
|
|||||||
#endif
|
#endif
|
||||||
#include "md5global.h"
|
#include "md5global.h"
|
||||||
#include "md5_l.h"
|
#include "md5_l.h"
|
||||||
#include "hmac-md5.h"
|
|
||||||
|
|
||||||
namespace md5
|
namespace md5
|
||||||
{
|
{
|
||||||
@@ -89,16 +88,6 @@ namespace md5
|
|||||||
#define S43 15
|
#define S43 15
|
||||||
#define S44 21
|
#define S44 21
|
||||||
|
|
||||||
/*
|
|
||||||
static void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
|
|
||||||
static void Encode PROTO_LIST
|
|
||||||
((unsigned char *, UINT4 *, unsigned int));
|
|
||||||
static void Decode PROTO_LIST
|
|
||||||
((UINT4 *, unsigned char *, unsigned int));
|
|
||||||
static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
|
|
||||||
static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int));
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void MD5_memcpy (POINTER output, POINTER input, unsigned int len)
|
static void MD5_memcpy (POINTER output, POINTER input, unsigned int len)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@@ -107,17 +96,6 @@ namespace md5
|
|||||||
output[i] = input[i];
|
output[i] = input[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note: Replace "for loop" with standard memset if possible.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void MD5_memset (POINTER output, int value, unsigned int len)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
((char *)output)[i] = (char)value;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MD5Transform (UINT4 state[4], unsigned char block[64]);
|
static void MD5Transform (UINT4 state[4], unsigned char block[64]);
|
||||||
|
|
||||||
static unsigned char* PADDING()
|
static unsigned char* PADDING()
|
||||||
@@ -371,190 +349,4 @@ namespace md5
|
|||||||
*/
|
*/
|
||||||
memwipe ((POINTER)x, sizeof (x));
|
memwipe ((POINTER)x, sizeof (x));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note: Replace "for loop" with standard memcpy if possible.
|
|
||||||
|
|
||||||
*/
|
|
||||||
inline
|
|
||||||
void hmac_md5_init(HMAC_MD5_CTX *hmac,
|
|
||||||
const unsigned char *key,
|
|
||||||
int key_len)
|
|
||||||
{
|
|
||||||
unsigned char k_ipad[65]; /* inner padding -
|
|
||||||
* key XORd with ipad
|
|
||||||
*/
|
|
||||||
unsigned char k_opad[65]; /* outer padding -
|
|
||||||
* key XORd with opad
|
|
||||||
*/
|
|
||||||
unsigned char tk[16];
|
|
||||||
int i;
|
|
||||||
/* if key is longer than 64 bytes reset it to key=MD5(key) */
|
|
||||||
if (key_len > 64) {
|
|
||||||
|
|
||||||
MD5_CTX tctx;
|
|
||||||
|
|
||||||
MD5Init(&tctx);
|
|
||||||
MD5Update(&tctx, key, key_len);
|
|
||||||
MD5Final(tk, &tctx);
|
|
||||||
|
|
||||||
key = tk;
|
|
||||||
key_len = 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* the HMAC_MD5 transform looks like:
|
|
||||||
*
|
|
||||||
* MD5(K XOR opad, MD5(K XOR ipad, text))
|
|
||||||
*
|
|
||||||
* where K is an n byte key
|
|
||||||
* ipad is the byte 0x36 repeated 64 times
|
|
||||||
* opad is the byte 0x5c repeated 64 times
|
|
||||||
* and text is the data being protected
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* start out by storing key in pads */
|
|
||||||
MD5_memset(k_ipad, '\0', sizeof k_ipad);
|
|
||||||
MD5_memset(k_opad, '\0', sizeof k_opad);
|
|
||||||
MD5_memcpy( k_ipad, (POINTER)key, key_len);
|
|
||||||
MD5_memcpy( k_opad, (POINTER)key, key_len);
|
|
||||||
|
|
||||||
/* XOR key with ipad and opad values */
|
|
||||||
for (i=0; i<64; i++) {
|
|
||||||
k_ipad[i] ^= 0x36;
|
|
||||||
k_opad[i] ^= 0x5c;
|
|
||||||
}
|
|
||||||
|
|
||||||
MD5Init(&hmac->ictx); /* init inner context */
|
|
||||||
MD5Update(&hmac->ictx, k_ipad, 64); /* apply inner pad */
|
|
||||||
|
|
||||||
MD5Init(&hmac->octx); /* init outer context */
|
|
||||||
MD5Update(&hmac->octx, k_opad, 64); /* apply outer pad */
|
|
||||||
|
|
||||||
/* scrub the pads and key context (if used) */
|
|
||||||
memwipe( (POINTER)&k_ipad, sizeof(k_ipad));
|
|
||||||
memwipe( (POINTER)&k_opad, sizeof(k_opad));
|
|
||||||
memwipe( (POINTER)&tk, sizeof(tk));
|
|
||||||
|
|
||||||
/* and we're done. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The precalc and import routines here rely on the fact that we pad
|
|
||||||
* the key out to 64 bytes and use that to initialize the md5
|
|
||||||
* contexts, and that updating an md5 context with 64 bytes of data
|
|
||||||
* leaves nothing left over; all of the interesting state is contained
|
|
||||||
* in the state field, and none of it is left over in the count and
|
|
||||||
* buffer fields. So all we have to do is save the state field; we
|
|
||||||
* can zero the others when we reload it. Which is why the decision
|
|
||||||
* was made to pad the key out to 64 bytes in the first place. */
|
|
||||||
inline
|
|
||||||
void hmac_md5_precalc(HMAC_MD5_STATE *state,
|
|
||||||
const unsigned char *key,
|
|
||||||
int key_len)
|
|
||||||
{
|
|
||||||
HMAC_MD5_CTX hmac;
|
|
||||||
unsigned lupe;
|
|
||||||
|
|
||||||
hmac_md5_init(&hmac, key, key_len);
|
|
||||||
for (lupe = 0; lupe < 4; lupe++) {
|
|
||||||
state->istate[lupe] = htonl(hmac.ictx.state[lupe]);
|
|
||||||
state->ostate[lupe] = htonl(hmac.octx.state[lupe]);
|
|
||||||
}
|
|
||||||
memwipe( (POINTER)&hmac, sizeof(hmac));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline
|
|
||||||
void hmac_md5_import(HMAC_MD5_CTX *hmac,
|
|
||||||
HMAC_MD5_STATE *state)
|
|
||||||
{
|
|
||||||
unsigned lupe;
|
|
||||||
MD5_memset( (POINTER)hmac, 0, sizeof(HMAC_MD5_CTX));
|
|
||||||
for (lupe = 0; lupe < 4; lupe++) {
|
|
||||||
hmac->ictx.state[lupe] = ntohl(state->istate[lupe]);
|
|
||||||
hmac->octx.state[lupe] = ntohl(state->ostate[lupe]);
|
|
||||||
}
|
|
||||||
/* Init the counts to account for our having applied
|
|
||||||
* 64 bytes of key; this works out to 0x200 (64 << 3; see
|
|
||||||
* MD5Update above...) */
|
|
||||||
hmac->ictx.count[0] = hmac->octx.count[0] = 0x200;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline
|
|
||||||
void hmac_md5_final(unsigned char digest[HMAC_MD5_SIZE],
|
|
||||||
HMAC_MD5_CTX *hmac)
|
|
||||||
{
|
|
||||||
MD5Final(digest, &hmac->ictx); /* Finalize inner md5 */
|
|
||||||
MD5Update(&hmac->octx, digest, 16); /* Update outer ctx */
|
|
||||||
MD5Final(digest, &hmac->octx); /* Finalize outer md5 */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void hmac_md5(const unsigned char* text, int text_len, const unsigned char* key, int key_len, unsigned char *digest)
|
|
||||||
{
|
|
||||||
MD5_CTX context;
|
|
||||||
|
|
||||||
unsigned char k_ipad[65]; /* inner padding -
|
|
||||||
* key XORd with ipad
|
|
||||||
*/
|
|
||||||
unsigned char k_opad[65]; /* outer padding -
|
|
||||||
* key XORd with opad
|
|
||||||
*/
|
|
||||||
unsigned char tk[16];
|
|
||||||
int i;
|
|
||||||
/* if key is longer than 64 bytes reset it to key=MD5(key) */
|
|
||||||
if (key_len > 64) {
|
|
||||||
|
|
||||||
MD5_CTX tctx;
|
|
||||||
|
|
||||||
MD5Init(&tctx);
|
|
||||||
MD5Update(&tctx, key, key_len);
|
|
||||||
MD5Final(tk, &tctx);
|
|
||||||
|
|
||||||
key = tk;
|
|
||||||
key_len = 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* the HMAC_MD5 transform looks like:
|
|
||||||
*
|
|
||||||
* MD5(K XOR opad, MD5(K XOR ipad, text))
|
|
||||||
*
|
|
||||||
* where K is an n byte key
|
|
||||||
* ipad is the byte 0x36 repeated 64 times
|
|
||||||
* opad is the byte 0x5c repeated 64 times
|
|
||||||
* and text is the data being protected
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* start out by storing key in pads */
|
|
||||||
MD5_memset(k_ipad, '\0', sizeof k_ipad);
|
|
||||||
MD5_memset(k_opad, '\0', sizeof k_opad);
|
|
||||||
MD5_memcpy( k_ipad, (POINTER)key, key_len);
|
|
||||||
MD5_memcpy( k_opad, (POINTER)key, key_len);
|
|
||||||
|
|
||||||
/* XOR key with ipad and opad values */
|
|
||||||
for (i=0; i<64; i++) {
|
|
||||||
k_ipad[i] ^= 0x36;
|
|
||||||
k_opad[i] ^= 0x5c;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* perform inner MD5
|
|
||||||
*/
|
|
||||||
|
|
||||||
MD5Init(&context); /* init context for 1st
|
|
||||||
* pass */
|
|
||||||
MD5Update(&context, k_ipad, 64); /* start with inner pad */
|
|
||||||
MD5Update(&context, text, text_len); /* then text of datagram */
|
|
||||||
MD5Final(digest, &context); /* finish up 1st pass */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* perform outer MD5
|
|
||||||
*/
|
|
||||||
MD5Init(&context); /* init context for 2nd
|
|
||||||
* pass */
|
|
||||||
MD5Update(&context, k_opad, 64); /* start with outer pad */
|
|
||||||
MD5Update(&context, digest, 16); /* then results of 1st
|
|
||||||
* hash */
|
|
||||||
MD5Final(digest, &context); /* finish up 2nd pass */
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user