mirror of
https://github.com/monero-project/monero.git
synced 2025-12-16 17:38:05 -08:00
Compare commits
1128 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29073f65e8 | ||
|
|
f985d70f91 | ||
|
|
d6da74ab5b | ||
|
|
b3e053ad18 | ||
|
|
ea723eeffa | ||
|
|
64c8981c1c | ||
|
|
4ad6b66283 | ||
|
|
1504424887 | ||
|
|
3a44fa2582 | ||
|
|
367cf3729b | ||
|
|
510d54edd7 | ||
|
|
37c6636199 | ||
|
|
ca6b6ca0d3 | ||
|
|
6592d51693 | ||
|
|
dc6da786d3 | ||
|
|
effb22cfc4 | ||
|
|
fea60d6ab2 | ||
|
|
14515ef230 | ||
|
|
742dec8d6a | ||
|
|
8d098ad508 | ||
|
|
c28ea6b617 | ||
|
|
d7ff707b52 | ||
|
|
a23c80dfce | ||
|
|
e4ce26c79f | ||
|
|
1e8a9d7dff | ||
|
|
bd48280290 | ||
|
|
5638b07d9f | ||
|
|
d661169c03 | ||
|
|
7ae3ebc7a8 | ||
|
|
ccc7e3afae | ||
|
|
32ba6f3adb | ||
|
|
8e7baeb394 | ||
|
|
e9fde8aa44 | ||
|
|
dae5fcaabc | ||
|
|
5881bec7d6 | ||
|
|
b66c523046 | ||
|
|
5f4e1fcc90 | ||
|
|
5f1e62115c | ||
|
|
6834ce6de2 | ||
|
|
8beb3cd2a1 | ||
|
|
dc24639e64 | ||
|
|
92f42b1e81 | ||
|
|
29d7ef0fe0 | ||
|
|
a9504f7001 | ||
|
|
3c36a6a227 | ||
|
|
e3e1f83694 | ||
|
|
82037f2365 | ||
|
|
26e0cecb95 | ||
|
|
b215ea9f56 | ||
|
|
067e232b19 | ||
|
|
d7f3805d2e | ||
|
|
a04d68f698 | ||
|
|
3b04e2e3d4 | ||
|
|
e25d21a788 | ||
|
|
2509717b11 | ||
|
|
77ef8c1839 | ||
|
|
e0f4606a72 | ||
|
|
d7d6d23867 | ||
|
|
1b9e6861b7 | ||
|
|
cc33d3b2de | ||
|
|
d8f95843c4 | ||
|
|
e16982617b | ||
|
|
eca27122df | ||
|
|
4b609dede3 | ||
|
|
5209bbd0c5 | ||
|
|
161fd13768 | ||
|
|
49c11b2248 | ||
|
|
f5df0e272e | ||
|
|
34da7d852b | ||
|
|
84cc3b916e | ||
|
|
24e519b9b6 | ||
|
|
3512eb5e68 | ||
|
|
42545e9adc | ||
|
|
9d97ffb804 | ||
|
|
71b9dd96ca | ||
|
|
b63f1ea637 | ||
|
|
5f83ec59ca | ||
|
|
b26ab0b580 | ||
|
|
17ab6fdd5a | ||
|
|
a2cd4f2cc7 | ||
|
|
9556ba0d66 | ||
|
|
b8cee6bf9e | ||
|
|
5adbede27f | ||
|
|
735a33e8d8 | ||
|
|
e037534f44 | ||
|
|
9570081ae5 | ||
|
|
e0fa7fa384 | ||
|
|
9c426a30f9 | ||
|
|
ca9b2493ee | ||
|
|
cf436cde1a | ||
|
|
b99e670f84 | ||
|
|
88a0985104 | ||
|
|
4701a78ad1 | ||
|
|
861895e92d | ||
|
|
5fc4d57ee5 | ||
|
|
efbd42f9d9 | ||
|
|
4cbaa6e43d | ||
|
|
f0b3bbf808 | ||
|
|
33aa05678f | ||
|
|
37252f6aec | ||
|
|
67e6c4370b | ||
|
|
a5476f82ca | ||
|
|
50f9472911 | ||
|
|
bf6388e4d4 | ||
|
|
05c942aba8 | ||
|
|
735de189ab | ||
|
|
931e7faa0b | ||
|
|
559a0cfc92 | ||
|
|
52b639bcd0 | ||
|
|
1011142868 | ||
|
|
3d8f54daad | ||
|
|
86a137aff3 | ||
|
|
acc9b32749 | ||
|
|
9d0b177720 | ||
|
|
0d062bacfb | ||
|
|
7340300460 | ||
|
|
83debef99e | ||
|
|
7dd11711b0 | ||
|
|
bcf3f6afdd | ||
|
|
3ebd05d4e5 | ||
|
|
a093092ef7 | ||
|
|
1eebb82bcc | ||
|
|
fb6a363050 | ||
|
|
2e2139ffb7 | ||
|
|
0749a8bd3c | ||
|
|
1b0afeeb1c | ||
|
|
418a993618 | ||
|
|
ea7f954381 | ||
|
|
6e8554221f | ||
|
|
53df2deb36 | ||
|
|
e67016ddb4 | ||
|
|
661439f4e0 | ||
|
|
5fdcda50ee | ||
|
|
921b0fb11b | ||
|
|
7ece1550e1 | ||
|
|
85318e7800 | ||
|
|
a085da3247 | ||
|
|
d8b1ec8b8b | ||
|
|
02563bf4b9 | ||
|
|
c57a65b246 | ||
|
|
06d05c21eb | ||
|
|
b2972927ea | ||
|
|
17142ec9bb | ||
|
|
6a78140863 | ||
|
|
69da14e105 | ||
|
|
fe1256471a | ||
|
|
558da3684c | ||
|
|
6f5360b3c6 | ||
|
|
3882b30076 | ||
|
|
cf470bf3d6 | ||
|
|
174f31bf7d | ||
|
|
8bf5a00564 | ||
|
|
f2eee1eb8c | ||
|
|
e350cc5ad5 | ||
|
|
bf9a0f4c65 | ||
|
|
45683ee02c | ||
|
|
689758d691 | ||
|
|
13d9bdb849 | ||
|
|
5c234cbdcb | ||
|
|
295bae10ba | ||
|
|
e67789d075 | ||
|
|
0d206dccda | ||
|
|
cd8c7f6e78 | ||
|
|
d2f9a4c584 | ||
|
|
c1182e433e | ||
|
|
78fd2599c2 | ||
|
|
c39ad0cd72 | ||
|
|
89288863a4 | ||
|
|
357441a2fa | ||
|
|
936e22a9b5 | ||
|
|
50981c40ce | ||
|
|
59024a9e88 | ||
|
|
bb6e3bbc0f | ||
|
|
b35beaa8d6 | ||
|
|
5c637c7910 | ||
|
|
1dd5c73f62 | ||
|
|
a69271faf7 | ||
|
|
92d1da28ef | ||
|
|
d9f666d78c | ||
|
|
6e270fbd29 | ||
|
|
a21da9058b | ||
|
|
0f4f873bf3 | ||
|
|
6b1b4e83dd | ||
|
|
6f153533e2 | ||
|
|
8a61f669a9 | ||
|
|
c05f98d4c3 | ||
|
|
fb47963e09 | ||
|
|
7964d4f8ea | ||
|
|
83907f8829 | ||
|
|
f3cd51a12b | ||
|
|
bf1e1d979c | ||
|
|
4d0a8db06d | ||
|
|
7aa5112280 | ||
|
|
e03402b0c7 | ||
|
|
b65e236fda | ||
|
|
de5631c6be | ||
|
|
85110b42ab | ||
|
|
fd74815f65 | ||
|
|
93f473e9f8 | ||
|
|
aa1d321e5f | ||
|
|
63eeb9df80 | ||
|
|
37a306370d | ||
|
|
bc208be63d | ||
|
|
14ab2e4db1 | ||
|
|
85d731c66d | ||
|
|
4a652d6b52 | ||
|
|
0645dcdbdb | ||
|
|
b88bbf59c3 | ||
|
|
dc9a69d980 | ||
|
|
629db71593 | ||
|
|
a059bcd74e | ||
|
|
d6893aedf6 | ||
|
|
90d1a00c10 | ||
|
|
bb3ff2bb36 | ||
|
|
7a056f4425 | ||
|
|
43a06350cf | ||
|
|
8db2d8d416 | ||
|
|
bce474be7d | ||
|
|
a2505c2fcc | ||
|
|
bad2c7cf31 | ||
|
|
2371a814cf | ||
|
|
68dcf73de2 | ||
|
|
535bd0eb7e | ||
|
|
08f0c60ffc | ||
|
|
df98bc50a6 | ||
|
|
f9d97f3fec | ||
|
|
9d0565615c | ||
|
|
7781675f22 | ||
|
|
0ff0850545 | ||
|
|
7ab49f96ad | ||
|
|
22a6591a70 | ||
|
|
4a1744e93e | ||
|
|
3cfa45cc7d | ||
|
|
e468d541b4 | ||
|
|
580497d5f9 | ||
|
|
b174527f1d | ||
|
|
b4a9ebad6c | ||
|
|
728a947646 | ||
|
|
9c40bc62fc | ||
|
|
669019010e | ||
|
|
8cd9840859 | ||
|
|
4ed30bab50 | ||
|
|
24f5239693 | ||
|
|
52e19d6955 | ||
|
|
0c77523d61 | ||
|
|
423973596b | ||
|
|
f77ce675cb | ||
|
|
a06d2581c3 | ||
|
|
9bf0105e25 | ||
|
|
a4065bf267 | ||
|
|
ecaf5b3feb | ||
|
|
ba8dd3479d | ||
|
|
b766014933 | ||
|
|
e9bce045a4 | ||
|
|
05edc969c0 | ||
|
|
6e6ffc0650 | ||
|
|
6dbbc69055 | ||
|
|
27af46c930 | ||
|
|
c336d0f217 | ||
|
|
bb30a72367 | ||
|
|
4cb1d879f6 | ||
|
|
ff72200d0a | ||
|
|
9bdc9109fb | ||
|
|
db3db0930e | ||
|
|
b1f05f589e | ||
|
|
f9b22a7b01 | ||
|
|
d743994086 | ||
|
|
44259e560e | ||
|
|
fd194aaa4d | ||
|
|
7850541074 | ||
|
|
b182dc8262 | ||
|
|
dd2fc3afe3 | ||
|
|
1396b65bbc | ||
|
|
7addabce8f | ||
|
|
5f9374c735 | ||
|
|
9f24e57dc2 | ||
|
|
15570f9a8f | ||
|
|
3584a852a3 | ||
|
|
53a99ca112 | ||
|
|
239a7e10ff | ||
|
|
be001326d1 | ||
|
|
1c36fcf886 | ||
|
|
20087b3a9d | ||
|
|
c6f57d9db4 | ||
|
|
c74d9057f8 | ||
|
|
885d3d5a99 | ||
|
|
fa53b76129 | ||
|
|
466f079586 | ||
|
|
438781afc4 | ||
|
|
d794abb8c5 | ||
|
|
e8049be955 | ||
|
|
5fe6aa19f6 | ||
|
|
249feda4e1 | ||
|
|
607301bf6d | ||
|
|
ac9346637a | ||
|
|
4d52ec0ca4 | ||
|
|
2ace509a78 | ||
|
|
b4679f37f4 | ||
|
|
4f81cd3a3c | ||
|
|
1660b0e72c | ||
|
|
cd236aebca | ||
|
|
55c7cd1458 | ||
|
|
b2bb9312a7 | ||
|
|
befdcbf4be | ||
|
|
67a56a9f8b | ||
|
|
56b50faab2 | ||
|
|
07ec748c82 | ||
|
|
11dbfbc5b3 | ||
|
|
157690caaa | ||
|
|
bcda7adcd4 | ||
|
|
e6d36c1701 | ||
|
|
9137ad2c63 | ||
|
|
ac4f71c200 | ||
|
|
8f418a6db0 | ||
|
|
2bf636503f | ||
|
|
044dff5a30 | ||
|
|
c83012c476 | ||
|
|
ce0c743205 | ||
|
|
1224e53b74 | ||
|
|
0e6ed559c6 | ||
|
|
463434d1f7 | ||
|
|
d0a0565f7d | ||
|
|
6526d87f17 | ||
|
|
a129bbd944 | ||
|
|
7ed496cc78 | ||
|
|
d1591853bf | ||
|
|
61632dc166 | ||
|
|
a4317e61b5 | ||
|
|
7434df1cc6 | ||
|
|
0825e97436 | ||
|
|
a1359ad43c | ||
|
|
fe0fa3b9c5 | ||
|
|
5ffb2ff9b7 | ||
|
|
869b3bf824 | ||
|
|
c429176248 | ||
|
|
1569717718 | ||
|
|
0b05a0fa74 | ||
|
|
51eb3bdcd6 | ||
|
|
b17b8db3f5 | ||
|
|
7314d919e7 | ||
|
|
d126a02b5d | ||
|
|
263431c486 | ||
|
|
1ed0ed4de4 | ||
|
|
1b867e7f40 | ||
|
|
ef56529f93 | ||
|
|
3011178021 | ||
|
|
c444b1b229 | ||
|
|
7e67c52fa2 | ||
|
|
2a8fcb421b | ||
|
|
126196b017 | ||
|
|
71d67bda74 | ||
|
|
cb9ecab197 | ||
|
|
bacf0a1e2f | ||
|
|
e895c3def1 | ||
|
|
7f48bf05d7 | ||
|
|
9ce9f8caf6 | ||
|
|
f34e2e20bd | ||
|
|
0793184bd0 | ||
|
|
939bc22332 | ||
|
|
9ff6e6a0a7 | ||
|
|
e9164bb38b | ||
|
|
112f32f068 | ||
|
|
f5d7b9933a | ||
|
|
8f4ce989c2 | ||
|
|
1aa10c4364 | ||
|
|
aacfd6e370 | ||
|
|
cb1cc757ba | ||
|
|
f0ab4dc7b2 | ||
|
|
cbbf4d241b | ||
|
|
db5715468a | ||
|
|
f0ba19fde5 | ||
|
|
ab85b924c9 | ||
|
|
cfb3046222 | ||
|
|
5f7da005a3 | ||
|
|
d6b9bdd322 | ||
|
|
56b6e41ea7 | ||
|
|
46bcd91db4 | ||
|
|
29311fd140 | ||
|
|
8db3d5731b | ||
|
|
0806a23a6e | ||
|
|
36d7b1b67c | ||
|
|
55b9acfce5 | ||
|
|
26971d46fc | ||
|
|
7a76354c8b | ||
|
|
89202ce462 | ||
|
|
e774f2498a | ||
|
|
a54dbaee08 | ||
|
|
44439c3208 | ||
|
|
5fd83c13fb | ||
|
|
8501b8dffb | ||
|
|
03c07b167d | ||
|
|
0664a98421 | ||
|
|
4bce935b40 | ||
|
|
b66ba78306 | ||
|
|
639a3c019c | ||
|
|
eb8a51be68 | ||
|
|
d6d276c604 | ||
|
|
2b2a681b01 | ||
|
|
80e4fef3c6 | ||
|
|
4801d6b514 | ||
|
|
846190fd18 | ||
|
|
daa6cc7d73 | ||
|
|
50cb370d5b | ||
|
|
347bba9dd1 | ||
|
|
7418aa6005 | ||
|
|
4469b0c41e | ||
|
|
df0e7c2feb | ||
|
|
97764bae3a | ||
|
|
cd647612b0 | ||
|
|
6929b52426 | ||
|
|
54b859bea5 | ||
|
|
e611728228 | ||
|
|
fad88e18a9 | ||
|
|
e98e03566a | ||
|
|
ca4e477dc2 | ||
|
|
6cc1ed8dc1 | ||
|
|
7c8f95d3e2 | ||
|
|
39bcb974c4 | ||
|
|
03738fdde1 | ||
|
|
0722287774 | ||
|
|
b2038e24f0 | ||
|
|
77ed11e627 | ||
|
|
59e6fb06f9 | ||
|
|
5f1bbe3bce | ||
|
|
ad5aabc85a | ||
|
|
085b6ba98e | ||
|
|
8bbae77134 | ||
|
|
e4378ed8aa | ||
|
|
59dc37a1b0 | ||
|
|
6d4d4ddb68 | ||
|
|
88e5ed0072 | ||
|
|
46d8bc2a33 | ||
|
|
5f8f56315c | ||
|
|
20171746de | ||
|
|
be6acfd5be | ||
|
|
88fbc4a567 | ||
|
|
93e7627d5a | ||
|
|
45c85c89de | ||
|
|
4e1e9a607e | ||
|
|
9a66d9f48b | ||
|
|
76f95f052e | ||
|
|
f0bc684ccd | ||
|
|
2c636e45f2 | ||
|
|
5083614ffa | ||
|
|
8eab6147f4 | ||
|
|
5019852adc | ||
|
|
2af1ec3af7 | ||
|
|
9d6539923e | ||
|
|
67666b14ba | ||
|
|
91c7d68b2d | ||
|
|
fa7cdd6420 | ||
|
|
ce63d5634e | ||
|
|
c955257c4a | ||
|
|
d2e26c23f3 | ||
|
|
8ca1215f25 | ||
|
|
510dbf3329 | ||
|
|
1db7a29e12 | ||
|
|
04845b1868 | ||
|
|
2e7bfd0de5 | ||
|
|
ec6982f8eb | ||
|
|
e07ace0896 | ||
|
|
1eed62c618 | ||
|
|
b0c00b0752 | ||
|
|
3f662876e6 | ||
|
|
4e6187faf3 | ||
|
|
17eefe7928 | ||
|
|
89645ec86e | ||
|
|
a5d21be843 | ||
|
|
0d415ff638 | ||
|
|
4a4ea78ecd | ||
|
|
6e8e4fb3b7 | ||
|
|
7e4507a048 | ||
|
|
140eb78231 | ||
|
|
1eebb3d8fc | ||
|
|
13a34faeb0 | ||
|
|
68813d2694 | ||
|
|
339a23a85e | ||
|
|
6fcdc9e0b2 | ||
|
|
62511df622 | ||
|
|
b219c24c3a | ||
|
|
5b6bcca32a | ||
|
|
fa814af969 | ||
|
|
620105ecaf | ||
|
|
2bc977bab9 | ||
|
|
2a100fd81f | ||
|
|
48a7bc4280 | ||
|
|
76ac5a8fbe | ||
|
|
dc6c0696fd | ||
|
|
76affd941b | ||
|
|
11c6718865 | ||
|
|
3d5abbe86b | ||
|
|
29dea03091 | ||
|
|
1f2409e9e2 | ||
|
|
82d1b74500 | ||
|
|
ab74dc277a | ||
|
|
70271fa788 | ||
|
|
e9ffa91257 | ||
|
|
ea37614efe | ||
|
|
b780cf4db1 | ||
|
|
a64f57fe42 | ||
|
|
4d66939791 | ||
|
|
41e583b0a2 | ||
|
|
e69e0e9e34 | ||
|
|
1c55a3756b | ||
|
|
05485bd1c5 | ||
|
|
8d2e454929 | ||
|
|
b82bcdea2d | ||
|
|
0415863747 | ||
|
|
7aa2030cee | ||
|
|
b531858c02 | ||
|
|
2102e6c738 | ||
|
|
a68143bc52 | ||
|
|
564e9c3b5f | ||
|
|
8c4b3f3736 | ||
|
|
01475c36c0 | ||
|
|
fd3b71129b | ||
|
|
2530dc6710 | ||
|
|
e7328ed5b7 | ||
|
|
5e795ee7af | ||
|
|
2a44c2defd | ||
|
|
dc7dd56867 | ||
|
|
88369c6685 | ||
|
|
5295e4eb82 | ||
|
|
1d2c08610b | ||
|
|
3b409a3b8a | ||
|
|
ad13b6d25a | ||
|
|
017e07a035 | ||
|
|
dd966c8a3a | ||
|
|
b586ae1310 | ||
|
|
dd8354aa08 | ||
|
|
4745e3be22 | ||
|
|
4cde4cb946 | ||
|
|
4e081001c0 | ||
|
|
0c8d8f6b2e | ||
|
|
5ed6669130 | ||
|
|
c3c14f3083 | ||
|
|
b21fdaa874 | ||
|
|
d6fc870d04 | ||
|
|
de905d4b48 | ||
|
|
10475ab23f | ||
|
|
77655b0a0e | ||
|
|
ac09cfa6be | ||
|
|
4307489147 | ||
|
|
bc8cbdb25d | ||
|
|
b278b83860 | ||
|
|
95766fe878 | ||
|
|
83f5587167 | ||
|
|
361513ac81 | ||
|
|
ce9457a379 | ||
|
|
13a43fcf0b | ||
|
|
a4d2d84209 | ||
|
|
289880d82d | ||
|
|
5dd03846b6 | ||
|
|
bcab579864 | ||
|
|
9e6c7784ea | ||
|
|
3e914ad831 | ||
|
|
96c1de979a | ||
|
|
2fd9be1646 | ||
|
|
c5e2aee961 | ||
|
|
26a42fe54a | ||
|
|
37f0799284 | ||
|
|
b0b6959c1d | ||
|
|
3411326a04 | ||
|
|
4616cf2641 | ||
|
|
8439306212 | ||
|
|
1c6cfd34f4 | ||
|
|
9127a8b79f | ||
|
|
43f71100bc | ||
|
|
628428a0df | ||
|
|
2382484dcd | ||
|
|
888324fa57 | ||
|
|
0f757177fe | ||
|
|
4520cfd978 | ||
|
|
a3fe1c56ee | ||
|
|
f13c7a8263 | ||
|
|
5860611afa | ||
|
|
c8226ad1f7 | ||
|
|
0dddfeacc9 | ||
|
|
21b1fa1c35 | ||
|
|
ff01c3ade4 | ||
|
|
f739a3cbb8 | ||
|
|
dda05f357a | ||
|
|
8eb5b0be36 | ||
|
|
3fde902394 | ||
|
|
92b5d6c204 | ||
|
|
b293c487fb | ||
|
|
262e391fb1 | ||
|
|
e7c0fcd8f3 | ||
|
|
c24a0af9f1 | ||
|
|
ff37bd00bc | ||
|
|
3940e12933 | ||
|
|
3a4c3ac891 | ||
|
|
ed7825dc0c | ||
|
|
68b1197f5d | ||
|
|
5e675de7c2 | ||
|
|
8e24533a7f | ||
|
|
be02eb9389 | ||
|
|
0496c7c91a | ||
|
|
704b60caf0 | ||
|
|
7db7ec8591 | ||
|
|
702a41034d | ||
|
|
5c102c60dc | ||
|
|
61eea83978 | ||
|
|
9474567d76 | ||
|
|
f6d7e87b67 | ||
|
|
326437c5ff | ||
|
|
5fad1c505a | ||
|
|
be81a27fa4 | ||
|
|
173f7b8f42 | ||
|
|
69502c4040 | ||
|
|
007b835daa | ||
|
|
5cade94189 | ||
|
|
94ed562148 | ||
|
|
9315e12d34 | ||
|
|
cff15e4123 | ||
|
|
3235abc184 | ||
|
|
138aefd0e7 | ||
|
|
2e4653c077 | ||
|
|
d14a074055 | ||
|
|
3e026ff6ed | ||
|
|
21afa71ba6 | ||
|
|
d518dae4bf | ||
|
|
025187e6c9 | ||
|
|
33122ab8a6 | ||
|
|
f2e65c6e50 | ||
|
|
fead7ebab0 | ||
|
|
d6440ab319 | ||
|
|
7f8bdeb35c | ||
|
|
63e342be84 | ||
|
|
979105b298 | ||
|
|
45e419bd5c | ||
|
|
2951436704 | ||
|
|
ee31383a52 | ||
|
|
8d578f1f2d | ||
|
|
7d2d8055ac | ||
|
|
2790ebc9f0 | ||
|
|
fc39d3b23c | ||
|
|
8c0523771f | ||
|
|
639ca3b1fa | ||
|
|
20eb192162 | ||
|
|
4e409be887 | ||
|
|
78a6690a6f | ||
|
|
e2311db717 | ||
|
|
ebf2818ab5 | ||
|
|
e647922080 | ||
|
|
61caab8a8c | ||
|
|
96f8c62dc4 | ||
|
|
eed4dba880 | ||
|
|
0a4a7da35c | ||
|
|
42f3b7cbca | ||
|
|
9c211b50de | ||
|
|
2241114965 | ||
|
|
34d4b798d4 | ||
|
|
40f85f478e | ||
|
|
c58758a016 | ||
|
|
d1f102626c | ||
|
|
82c39355ac | ||
|
|
f449dbe8eb | ||
|
|
94803bad01 | ||
|
|
97f5a130d6 | ||
|
|
21807217e2 | ||
|
|
e451c76181 | ||
|
|
27ca6ca594 | ||
|
|
58cceaad71 | ||
|
|
318fb23d7a | ||
|
|
a4272de797 | ||
|
|
d6d78f157b | ||
|
|
909398efc7 | ||
|
|
8c4db68ff7 | ||
|
|
d95bc44c6b | ||
|
|
dead780f8a | ||
|
|
207b66ecc2 | ||
|
|
9e1403e155 | ||
|
|
34cb6b4b70 | ||
|
|
aa0ea0aafc | ||
|
|
438d52deaf | ||
|
|
ef649f998d | ||
|
|
3474154b75 | ||
|
|
a9b83f5a6e | ||
|
|
65c09beaf7 | ||
|
|
8b18401ea0 | ||
|
|
49dc78d99b | ||
|
|
29254fc06e | ||
|
|
ba0a7294d0 | ||
|
|
4c6de54ee2 | ||
|
|
008b9036a3 | ||
|
|
0c76dbdd00 | ||
|
|
4510f417f9 | ||
|
|
3d623a86d1 | ||
|
|
59de6f8d99 | ||
|
|
1d176473e9 | ||
|
|
9a39b7dd7f | ||
|
|
84d9e7faec | ||
|
|
9b38551c3c | ||
|
|
2329d2f4c8 | ||
|
|
8a27caeb22 | ||
|
|
9453573581 | ||
|
|
c28a2b0d7d | ||
|
|
5eb2e01216 | ||
|
|
cbfa0a2a7e | ||
|
|
87d7612311 | ||
|
|
3ad4ecd4ff | ||
|
|
dcbc17e97e | ||
|
|
2d92fa5d69 | ||
|
|
a844844cda | ||
|
|
13851b28c7 | ||
|
|
80d7c6c730 | ||
|
|
e6f4d4acf0 | ||
|
|
0e4c7d0fae | ||
|
|
2771a18e85 | ||
|
|
2704624eae | ||
|
|
5d3e70229e | ||
|
|
dcfd299239 | ||
|
|
ef2cb63287 | ||
|
|
f025ae9760 | ||
|
|
41be339655 | ||
|
|
f7f1917ed4 | ||
|
|
ba8331ce41 | ||
|
|
31a895e876 | ||
|
|
57ea90285c | ||
|
|
a830db2577 | ||
|
|
ed2c81ed95 | ||
|
|
209ec963b5 | ||
|
|
6795bd0d4e | ||
|
|
a2b557fe5c | ||
|
|
50af3579ee | ||
|
|
31f47d72fe | ||
|
|
14372ca95a | ||
|
|
ab7ab29fc0 | ||
|
|
c0c6102260 | ||
|
|
a2b08db9c9 | ||
|
|
b1be364f08 | ||
|
|
3afaedf365 | ||
|
|
89b99ef2d8 | ||
|
|
8fad35f8e2 | ||
|
|
66212837ab | ||
|
|
506be80601 | ||
|
|
741a773025 | ||
|
|
ea1d54aeb7 | ||
|
|
26562e9f3c | ||
|
|
c3ec5373b3 | ||
|
|
473d984d88 | ||
|
|
1eddabf0a4 | ||
|
|
ff7dc087ae | ||
|
|
87e158b5b9 | ||
|
|
41b4bf9d6d | ||
|
|
7cdd147da5 | ||
|
|
34de7bc267 | ||
|
|
41e9cab4e1 | ||
|
|
3b4dec2d12 | ||
|
|
9d7f6e6089 | ||
|
|
df9d50a8a4 | ||
|
|
d45cd37c53 | ||
|
|
3e46db97e5 | ||
|
|
46e90b7780 | ||
|
|
248310de06 | ||
|
|
8fc0cdb96f | ||
|
|
66df13a58b | ||
|
|
e5592c4bab | ||
|
|
ffab67004c | ||
|
|
7bf99a2376 | ||
|
|
9a3712541e | ||
|
|
34c57d071f | ||
|
|
0a24673fef | ||
|
|
3721298cf6 | ||
|
|
306365d4e6 | ||
|
|
7935bc5f6b | ||
|
|
9eb51887b0 | ||
|
|
5a221c0e48 | ||
|
|
81a2ff768b | ||
|
|
c678413a89 | ||
|
|
51cdd76bbd | ||
|
|
034b0c7adb | ||
|
|
17fd575fe4 | ||
|
|
36aeaa7545 | ||
|
|
70f932fe0a | ||
|
|
4aa832e534 | ||
|
|
0c4148845b | ||
|
|
bd9e4e3149 | ||
|
|
2a19697bd4 | ||
|
|
896512b2b6 | ||
|
|
cb130c7590 | ||
|
|
26dd216c67 | ||
|
|
9a3bd88b9f | ||
|
|
61f3916b4a | ||
|
|
1db8cf0db9 | ||
|
|
d841339b09 | ||
|
|
50bc95519e | ||
|
|
f62399b88d | ||
|
|
1a526ed571 | ||
|
|
09f43b9a6b | ||
|
|
5a2864c1fb | ||
|
|
6cb97076ce | ||
|
|
cfd66dae4b | ||
|
|
5b5828fcec | ||
|
|
9226acca4b | ||
|
|
fceb774344 | ||
|
|
4e7897e57c | ||
|
|
e3012444fb | ||
|
|
7af0b7fffc | ||
|
|
fb2b16f10a | ||
|
|
abfff766e5 | ||
|
|
b3363e8e0a | ||
|
|
42e7f31613 | ||
|
|
53b5d03b82 | ||
|
|
6447dc72e9 | ||
|
|
aada0670ba | ||
|
|
26c569d6f6 | ||
|
|
b85acb4cb8 | ||
|
|
bc443494f3 | ||
|
|
149da420e9 | ||
|
|
8db23df581 | ||
|
|
b43b9a1304 | ||
|
|
63d0ab09b5 | ||
|
|
798dfcfe79 | ||
|
|
62f3f0480a | ||
|
|
a915d49307 | ||
|
|
6be2516140 | ||
|
|
41d04a87b2 | ||
|
|
ed139efc5d | ||
|
|
0a5292c339 | ||
|
|
25c15dca5c | ||
|
|
2d10830cfb | ||
|
|
b628503bad | ||
|
|
0cf80baea4 | ||
|
|
08b85a8e00 | ||
|
|
55c7fb87a9 | ||
|
|
362f5e6eb8 | ||
|
|
03096150c6 | ||
|
|
2d5921eefa | ||
|
|
1789b76b5d | ||
|
|
87665281ea | ||
|
|
4ecf71405f | ||
|
|
f4e329583e | ||
|
|
948c48271a | ||
|
|
25e7a7d96f | ||
|
|
9ddb07fcc4 | ||
|
|
f61fe2ef28 | ||
|
|
284fe6438d | ||
|
|
2619d966c6 | ||
|
|
13d73d9ed6 | ||
|
|
6884db7b31 | ||
|
|
00635bd68b | ||
|
|
112f3678bc | ||
|
|
22c8730261 | ||
|
|
5321769b65 | ||
|
|
9e5f2738fd | ||
|
|
03b4cca6c2 | ||
|
|
5bfe03804c | ||
|
|
8a1f0d7d13 | ||
|
|
48fcf76be9 | ||
|
|
e1a940806a | ||
|
|
1af890287b | ||
|
|
e69849e979 | ||
|
|
2bb2c1b9d7 | ||
|
|
d7a6b72c15 | ||
|
|
c367609447 | ||
|
|
8cc46069ac | ||
|
|
bf26920f27 | ||
|
|
f24cbc5245 | ||
|
|
62c8c07c47 | ||
|
|
01cc978722 | ||
|
|
4764929ecb | ||
|
|
d81e042306 | ||
|
|
2b3357ee98 | ||
|
|
941a608d52 | ||
|
|
8962f0032f | ||
|
|
2861289efd | ||
|
|
5f00df3cf9 | ||
|
|
ace2edacb6 | ||
|
|
afed9787cd | ||
|
|
f2cb56a2eb | ||
|
|
9c2a7b4638 | ||
|
|
f0322a083a | ||
|
|
95ccf508cd | ||
|
|
827ca3fd3b | ||
|
|
2b0c632f32 | ||
|
|
4f3a4fb701 | ||
|
|
5db9e3c28e | ||
|
|
f8dd433110 | ||
|
|
ab87e7fdae | ||
|
|
6b8568e9a1 | ||
|
|
8a7b3ff138 | ||
|
|
503d2693fd | ||
|
|
3ee6a1b706 | ||
|
|
b6eb7484d1 | ||
|
|
40dd59fb8e | ||
|
|
737712c0c6 | ||
|
|
c8378933ae | ||
|
|
3a373c3d3a | ||
|
|
64adb566e5 | ||
|
|
9fde7aafe8 | ||
|
|
d3447364d0 | ||
|
|
f80b1571c6 | ||
|
|
f17383afc2 | ||
|
|
1aae39dff2 | ||
|
|
14f0d38cd6 | ||
|
|
0da5d37bf3 | ||
|
|
9bc8f76924 | ||
|
|
882ce8f7b1 | ||
|
|
f0f3157183 | ||
|
|
f03bf36c85 | ||
|
|
d735f9b24a | ||
|
|
daeb3a974c | ||
|
|
a7ea14dc6a | ||
|
|
4267a0bb51 | ||
|
|
b665bab1d6 | ||
|
|
e09710f76e | ||
|
|
66f4700f57 | ||
|
|
b26cd26333 | ||
|
|
0321d1ac79 | ||
|
|
98cf62cc45 | ||
|
|
7e30eadb32 | ||
|
|
a79fc219b7 | ||
|
|
c534fe8d19 | ||
|
|
c4907d24cb | ||
|
|
8e1b322a15 | ||
|
|
ed72f35e9a | ||
|
|
764340d112 | ||
|
|
5b189ce2a8 | ||
|
|
08819705fc | ||
|
|
91663fcc00 | ||
|
|
5a412b7a3f | ||
|
|
e942d34d54 | ||
|
|
740da1ba95 | ||
|
|
a6b8d3fee1 | ||
|
|
dfd36bbebb | ||
|
|
4d15864728 | ||
|
|
885a117ddb | ||
|
|
6a58c88e2d | ||
|
|
a87980f6c2 | ||
|
|
de1ffe07b1 | ||
|
|
8a6c081df7 | ||
|
|
b9389e582e | ||
|
|
45975fd8eb | ||
|
|
6715c90667 | ||
|
|
49f4645f1d | ||
|
|
bdf5a3ad3f | ||
|
|
a2cef8cba4 | ||
|
|
0889d2f85e | ||
|
|
64f82e0481 | ||
|
|
f794d3b3df | ||
|
|
e6d45d2db6 | ||
|
|
709658d166 | ||
|
|
4dae04dde2 | ||
|
|
d6cefbd1b8 | ||
|
|
2a1e23e087 | ||
|
|
5f8ffca34d | ||
|
|
2f5506daf8 | ||
|
|
73a45e98ad | ||
|
|
791da4343c | ||
|
|
2906a24179 | ||
|
|
ed22abb798 | ||
|
|
81db197383 | ||
|
|
ff31611a32 | ||
|
|
18761b372f | ||
|
|
3147468d35 | ||
|
|
ce173cbb5b | ||
|
|
db55263b4c | ||
|
|
cb9c7972b6 | ||
|
|
d44d19ca79 | ||
|
|
29fbaeaae5 | ||
|
|
16e209e08d | ||
|
|
a2566db09e | ||
|
|
558d05b47e | ||
|
|
b88c9a003e | ||
|
|
a5c98609a1 | ||
|
|
89e51ecd38 | ||
|
|
a66f152f75 | ||
|
|
9317bce9ca | ||
|
|
4a72d595a6 | ||
|
|
f357210c00 | ||
|
|
4b728d7dd4 | ||
|
|
a58d9738c9 | ||
|
|
b5cb1bc403 | ||
|
|
ce63ab09db | ||
|
|
261ee5628b | ||
|
|
52f6b33890 | ||
|
|
18cd6837b6 | ||
|
|
9705032618 | ||
|
|
a7ce392eef | ||
|
|
6f859e4328 | ||
|
|
b6a76f76e7 | ||
|
|
eb9f3a3294 | ||
|
|
6f9260e38e | ||
|
|
872cb4efd8 | ||
|
|
4812c062c5 | ||
|
|
7ed94d3122 | ||
|
|
5f19384729 | ||
|
|
b13bddc3c9 | ||
|
|
fa0839f2f5 | ||
|
|
6b9d9f56a1 | ||
|
|
88c78d1683 | ||
|
|
e3c68b9018 | ||
|
|
1590183965 | ||
|
|
07e55b0496 | ||
|
|
d9d002c3c1 | ||
|
|
9cc0d4220f | ||
|
|
c1886155ed | ||
|
|
cd22cb807a | ||
|
|
69b6f5b6a6 | ||
|
|
5bca8c6998 | ||
|
|
66e18cc92f | ||
|
|
26cae8f4f1 | ||
|
|
8c27f127ec | ||
|
|
2ab5b1a21f | ||
|
|
93e76e14a2 | ||
|
|
35299644b2 | ||
|
|
3880bf396a | ||
|
|
da249fd5ba | ||
|
|
82b05d5054 | ||
|
|
18c2f6e21d | ||
|
|
099bb830cf | ||
|
|
f9d0827bba | ||
|
|
b21bc00704 | ||
|
|
3ca267b546 | ||
|
|
efcecb42f3 | ||
|
|
b1a9e97b2d | ||
|
|
7346a59c75 | ||
|
|
6b13976330 | ||
|
|
ffeeefde60 | ||
|
|
2dae0f203a | ||
|
|
dad1077577 | ||
|
|
f36132a837 | ||
|
|
5bd7f760e9 | ||
|
|
8fdf645397 | ||
|
|
a429f06b18 | ||
|
|
a3a617f35f | ||
|
|
6189a775b0 | ||
|
|
bcb71797c8 | ||
|
|
7e98e9d7ce | ||
|
|
e6cf9c06fc | ||
|
|
03ff3be10e | ||
|
|
19e0137805 | ||
|
|
6b85398031 | ||
|
|
875c1cabb9 | ||
|
|
70f2321763 | ||
|
|
8c7363fbef | ||
|
|
859db52fda | ||
|
|
f21df05c77 | ||
|
|
1068564867 | ||
|
|
53a1962da1 | ||
|
|
6f36cf02e7 | ||
|
|
e2b75586fb | ||
|
|
998c1461c3 | ||
|
|
c1bda097c1 | ||
|
|
f914df8494 | ||
|
|
51b511be4c | ||
|
|
35d1269fac | ||
|
|
8787fd899b | ||
|
|
d8584fc8d7 | ||
|
|
6f6521ad7a | ||
|
|
b5d6c723e9 | ||
|
|
1f96755ddc | ||
|
|
3367ed863c | ||
|
|
4c00a4d31e | ||
|
|
079dd5dfef | ||
|
|
94b899db26 | ||
|
|
2c274e05fe | ||
|
|
5e08fd89ea | ||
|
|
a95461e76d | ||
|
|
1e9cc3e43e | ||
|
|
14c870ee5f | ||
|
|
3b8704b0fa | ||
|
|
5d8439e310 | ||
|
|
f6094bb225 | ||
|
|
226de8e928 | ||
|
|
8703f1d80e | ||
|
|
24acb66eac | ||
|
|
3a9290ba6f | ||
|
|
5053f8f40b | ||
|
|
96b2fee721 | ||
|
|
60b18cdd1f | ||
|
|
93047ce762 | ||
|
|
1b4dc46129 | ||
|
|
3d6636e79c | ||
|
|
ebb55f797b | ||
|
|
8902ddb91a | ||
|
|
628946c1f8 | ||
|
|
959f6ed9a5 | ||
|
|
08343abaf4 | ||
|
|
6a61f520e2 | ||
|
|
54d9fffa10 | ||
|
|
a9cc88ee76 | ||
|
|
90a16b119f | ||
|
|
372ffeba21 | ||
|
|
0b88fff3a5 | ||
|
|
73951cbd39 | ||
|
|
25fe67e4cf | ||
|
|
f82c10dc96 | ||
|
|
353e9c0c90 | ||
|
|
0b26c4d57c | ||
|
|
6fc97c97eb | ||
|
|
c77d2bfaa0 | ||
|
|
100b7bc10d | ||
|
|
641dfc991f | ||
|
|
eecfb57df9 | ||
|
|
aa5c2e01e7 | ||
|
|
eb59f7c563 | ||
|
|
66a659bb03 | ||
|
|
52a4b70afd | ||
|
|
1e0958c083 | ||
|
|
5a96056600 | ||
|
|
47fdb74273 | ||
|
|
0beb94f323 | ||
|
|
a0a810ccd4 | ||
|
|
11c933e137 | ||
|
|
c8cb5fca5e | ||
|
|
dac3895ac1 | ||
|
|
8df202ec79 | ||
|
|
3f5fb6fe6d | ||
|
|
eaa8bfe7c0 | ||
|
|
0a619f789b | ||
|
|
5f6647934b | ||
|
|
0098ed338c | ||
|
|
ad19f8679e | ||
|
|
1d79c14dbb | ||
|
|
522be96fe4 | ||
|
|
e520cc06a9 | ||
|
|
5730049178 | ||
|
|
3b941befae | ||
|
|
8361d60aef | ||
|
|
2c145f4a38 | ||
|
|
a6a54fa883 | ||
|
|
b1398fff40 | ||
|
|
b55c14cd1f | ||
|
|
bb07d8d7f7 | ||
|
|
80d2f8007c |
7
.gitmodules
vendored
7
.gitmodules
vendored
@@ -2,3 +2,10 @@
|
|||||||
path = external/unbound
|
path = external/unbound
|
||||||
url = https://github.com/monero-project/unbound
|
url = https://github.com/monero-project/unbound
|
||||||
branch = monero
|
branch = monero
|
||||||
|
[submodule "external/miniupnp"]
|
||||||
|
path = external/miniupnp
|
||||||
|
url = https://github.com/monero-project/miniupnp
|
||||||
|
branch = monero
|
||||||
|
[submodule "external/rapidjson"]
|
||||||
|
path = external/rapidjson
|
||||||
|
url = https://github.com/Tencent/rapidjson
|
||||||
|
|||||||
65
.travis.yml
Normal file
65
.travis.yml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
sudo: required
|
||||||
|
dist: trusty
|
||||||
|
os: linux
|
||||||
|
language: minimal
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- contrib/depends/built
|
||||||
|
- contrib/depends/sdk-sources
|
||||||
|
- $HOME/.ccache
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- MAKEJOBS=-j3
|
||||||
|
- RUN_TESTS=false
|
||||||
|
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
|
||||||
|
- 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
|
||||||
|
- PYTHON_DEBUG=1
|
||||||
|
- WINEDEBUG=fixme-all
|
||||||
|
- DOCKER_PACKAGES="build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
|
||||||
|
matrix:
|
||||||
|
# ARM v7
|
||||||
|
- HOST=arm-linux-gnueabihf PACKAGES="gperf g++-arm-linux-gnueabihf"
|
||||||
|
# ARM v8
|
||||||
|
- HOST=aarch64-linux-gnu PACKAGES="gperf g++-aarch64-linux-gnu"
|
||||||
|
# i686 Win
|
||||||
|
- HOST=i686-w64-mingw32 PACKAGES="python3 nsis g++-mingw-w64-i686"
|
||||||
|
# i686 Linux
|
||||||
|
- HOST=i686-pc-linux-gnu PACKAGES="gperf cmake g++-multilib bc python3-zmq" RUN_TESTS=true
|
||||||
|
# Win64
|
||||||
|
- HOST=x86_64-w64-mingw32 PACKAGES="cmake python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 bc" RUN_TESTS=true
|
||||||
|
# x86_64 Linux
|
||||||
|
- HOST=x86_64-unknown-linux-gnu PACKAGES="gperf cmake python3-zmq protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" RUN_TESTS=true
|
||||||
|
# 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
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
|
||||||
|
install:
|
||||||
|
- env | grep -E '^(CCACHE_|WINEDEBUG|DISPLAY|BOOST_TEST_RANDOM|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 [ -z "$NO_DEPENDS" ]; then $DOCKER_EXEC bash -c "CONFIG_SHELL= 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 -DTRAVIS=true .. && make $MAKEJOBS"
|
||||||
|
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/contrib/depends/$HOST/lib
|
||||||
|
after_script:
|
||||||
|
- echo $TRAVIS_COMMIT_RANGE
|
||||||
|
- echo $TRAVIS_COMMIT_LOG
|
||||||
204
CMakeLists.txt
204
CMakeLists.txt
@@ -40,6 +40,7 @@ if (IOS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.7)
|
cmake_minimum_required(VERSION 2.8.7)
|
||||||
|
message(STATUS "CMake version ${CMAKE_VERSION}")
|
||||||
|
|
||||||
project(monero)
|
project(monero)
|
||||||
|
|
||||||
@@ -137,9 +138,27 @@ endif()
|
|||||||
|
|
||||||
if(ARCH_ID STREQUAL "ppc64le")
|
if(ARCH_ID STREQUAL "ppc64le")
|
||||||
set(PPC64LE 1)
|
set(PPC64LE 1)
|
||||||
|
set(PPC64 0)
|
||||||
|
set(PPC 0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32 OR ARM)
|
if(ARCH_ID STREQUAL "powerpc64" OR ARCH_ID STREQUAL "ppc64")
|
||||||
|
set(PPC64LE 0)
|
||||||
|
set(PPC64 1)
|
||||||
|
set(PPC 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ARCH_ID STREQUAL "powerpc")
|
||||||
|
set(PPC64LE 0)
|
||||||
|
set(PPC64 0)
|
||||||
|
set(PPC 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ARCH_ID STREQUAL "s390x")
|
||||||
|
set(S390X 1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32 OR ARM OR PPC64LE OR PPC64 OR PPC)
|
||||||
set(OPT_FLAGS_RELEASE "-O2")
|
set(OPT_FLAGS_RELEASE "-O2")
|
||||||
else()
|
else()
|
||||||
set(OPT_FLAGS_RELEASE "-Ofast")
|
set(OPT_FLAGS_RELEASE "-Ofast")
|
||||||
@@ -153,6 +172,25 @@ else()
|
|||||||
message(STATUS "Building without build tag")
|
message(STATUS "Building without build tag")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(NOT MANUAL_SUBMODULES)
|
||||||
|
find_package(Git)
|
||||||
|
if(GIT_FOUND)
|
||||||
|
message(STATUS "Checking submodules")
|
||||||
|
execute_process(COMMAND bash -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/external/miniupnp && git rev-parse HEAD" OUTPUT_VARIABLE miniupnpLocalHead WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
execute_process(COMMAND bash -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/external/unbound && git rev-parse HEAD" OUTPUT_VARIABLE unboundLocalHead WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
execute_process(COMMAND bash -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/external/rapidjson && git rev-parse HEAD" OUTPUT_VARIABLE rapidjsonLocalHead WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
execute_process(COMMAND bash -c "git ls-tree HEAD ${CMAKE_CURRENT_SOURCE_DIR}/external/miniupnp | awk '{print $3}'" OUTPUT_VARIABLE miniupnpCheckedHead WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
execute_process(COMMAND bash -c "git ls-tree HEAD ${CMAKE_CURRENT_SOURCE_DIR}/external/unbound | awk '{print $3}'" OUTPUT_VARIABLE unboundCheckedHead WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
execute_process(COMMAND bash -c "git ls-tree HEAD ${CMAKE_CURRENT_SOURCE_DIR}/external/rapidjson | awk '{print $3}'" OUTPUT_VARIABLE rapidjsonCheckedHead WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
string(COMPARE EQUAL "${miniupnpLocalHead}" "${miniupnpCheckedHead}" miniupnpUpToDate)
|
||||||
|
string(COMPARE EQUAL "${unboundLocalHead}" "${unboundCheckedHead}" unboundUpToDate)
|
||||||
|
string(COMPARE EQUAL "${rapidjsonLocalHead}" "${rapidjsonCheckedHead}" rapidjsonUpToDate)
|
||||||
|
if (NOT miniupnpUpToDate OR NOT unboundUpToDate OR NOT rapidjsonUpToDate)
|
||||||
|
message(FATAL_ERROR "Submodules not up to date. Please update with git submodule init && git submodule update, or run cmake with -DMANUAL_SUBMODULES=1")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG ${OPT_FLAGS_RELEASE}")
|
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG ${OPT_FLAGS_RELEASE}")
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${OPT_FLAGS_RELEASE}")
|
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${OPT_FLAGS_RELEASE}")
|
||||||
|
|
||||||
@@ -236,7 +274,7 @@ endif()
|
|||||||
# elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*")
|
# elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*")
|
||||||
# set(BSDI TRUE)
|
# set(BSDI TRUE)
|
||||||
|
|
||||||
include_directories(external/easylogging++ src contrib/epee/include external)
|
include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
include_directories(SYSTEM /usr/include/malloc)
|
include_directories(SYSTEM /usr/include/malloc)
|
||||||
@@ -357,6 +395,9 @@ add_definitions("-DBLOCKCHAIN_DB=${BLOCKCHAIN_DB}")
|
|||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(DEFAULT_STACK_TRACE OFF)
|
set(DEFAULT_STACK_TRACE OFF)
|
||||||
set(LIBUNWIND_LIBRARIES "")
|
set(LIBUNWIND_LIBRARIES "")
|
||||||
|
elseif (DEPENDS AND NOT LINUX)
|
||||||
|
set(DEFAULT_STACK_TRACE OFF)
|
||||||
|
set(LIBUNWIND_LIBRARIES "")
|
||||||
elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT MINGW)
|
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
|
||||||
@@ -395,6 +436,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")
|
||||||
if (NOT OpenSSL_DIR)
|
if (NOT OpenSSL_DIR)
|
||||||
EXECUTE_PROCESS(COMMAND brew --prefix openssl
|
EXECUTE_PROCESS(COMMAND brew --prefix openssl
|
||||||
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
||||||
@@ -412,7 +454,7 @@ if(STATIC AND NOT IOS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(PCSC)
|
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)
|
||||||
add_definition_if_library_exists(c explicit_bzero "strings.h" HAVE_EXPLICIT_BZERO)
|
add_definition_if_library_exists(c explicit_bzero "strings.h" HAVE_EXPLICIT_BZERO)
|
||||||
@@ -421,23 +463,18 @@ add_definition_if_function_found(strptime HAVE_STRPTIME)
|
|||||||
add_definitions(-DAUTO_INITIALIZE_EASYLOGGINGPP)
|
add_definitions(-DAUTO_INITIALIZE_EASYLOGGINGPP)
|
||||||
|
|
||||||
# Generate header for embedded translations
|
# Generate header for embedded translations
|
||||||
|
# Generate header for embedded translations, use target toolchain if depends, otherwise use the
|
||||||
|
# lrelease and lupdate binaries from the host
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
ExternalProject_Add(generate_translations_header
|
ExternalProject_Add(generate_translations_header
|
||||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/translations"
|
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/translations"
|
||||||
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/translations"
|
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/translations"
|
||||||
|
STAMP_DIR ${LRELEASE_PATH}
|
||||||
|
CMAKE_ARGS -DLRELEASE_PATH=${LRELEASE_PATH}
|
||||||
INSTALL_COMMAND cmake -E echo "")
|
INSTALL_COMMAND cmake -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 miniupnpc
|
|
||||||
if(UPNP_STATIC OR IOS)
|
|
||||||
add_definitions("-DUPNP_STATIC")
|
|
||||||
else()
|
|
||||||
add_definitions("-DUPNP_DYNAMIC")
|
|
||||||
include_directories(${UPNP_INCLUDE})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Final setup for libunbound
|
# Final setup for libunbound
|
||||||
include_directories(${UNBOUND_INCLUDE})
|
include_directories(${UNBOUND_INCLUDE})
|
||||||
link_directories(${UNBOUND_LIBRARY_DIRS})
|
link_directories(${UNBOUND_LIBRARY_DIRS})
|
||||||
@@ -458,11 +495,14 @@ endif()
|
|||||||
include_directories(${LIBUNWIND_INCLUDE})
|
include_directories(${LIBUNWIND_INCLUDE})
|
||||||
link_directories(${LIBUNWIND_LIBRARY_DIRS})
|
link_directories(${LIBUNWIND_LIBRARY_DIRS})
|
||||||
|
|
||||||
# Final setup for libpcsc
|
# Final setup for hid
|
||||||
if (PCSC_FOUND)
|
if (HIDAPI_FOUND)
|
||||||
add_definitions(-DHAVE_PCSC)
|
message(STATUS "Using HIDAPI include dir at ${HIDAPI_INCLUDE_DIR}")
|
||||||
include_directories(${PCSC_INCLUDE_DIR})
|
add_definitions(-DHAVE_HIDAPI)
|
||||||
link_directories(${LIBPCSC_LIBRARY_DIRS})
|
include_directories(${HIDAPI_INCLUDE_DIR})
|
||||||
|
link_directories(${LIBHIDAPI_LIBRARY_DIRS})
|
||||||
|
else (HIDAPI_FOUND)
|
||||||
|
message(STATUS "Could not find HIDAPI")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
@@ -477,18 +517,69 @@ 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")
|
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 "")
|
||||||
elseif(PPC64LE)
|
elseif(PPC64LE)
|
||||||
set(ARCH_FLAG "-mcpu=${ARCH}")
|
set(ARCH_FLAG "-mcpu=power8")
|
||||||
|
elseif(PPC64)
|
||||||
|
set(ARCH_FLAG "-mcpu=970")
|
||||||
|
elseif(PPC)
|
||||||
|
set(ARCH_FLAG "-mcpu=7400")
|
||||||
elseif(IOS AND ARCH STREQUAL "arm64")
|
elseif(IOS AND ARCH STREQUAL "arm64")
|
||||||
message(STATUS "IOS: Changing arch from arm64 to armv8")
|
message(STATUS "IOS: Changing arch from arm64 to armv8")
|
||||||
set(ARCH_FLAG "-march=armv8")
|
set(ARCH_FLAG "-march=armv8")
|
||||||
else()
|
else()
|
||||||
set(ARCH_FLAG "-march=${ARCH}")
|
set(ARCH_FLAG "-march=${ARCH}")
|
||||||
|
if(ARCH STREQUAL "native")
|
||||||
|
check_c_compiler_flag(-march=native CC_SUPPORTS_MARCH_NATIVE)
|
||||||
|
if (NOT CC_SUPPORTS_MARCH_NATIVE)
|
||||||
|
check_c_compiler_flag(-mtune=native CC_SUPPORTS_MTUNE_NATIVE)
|
||||||
|
if (CC_SUPPORTS_MTUNE_NATIVE)
|
||||||
|
set(ARCH_FLAG "-mtune=${ARCH}")
|
||||||
|
else()
|
||||||
|
set(ARCH_FLAG "")
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(NO_AES "Explicitly disable AES support" ${NO_AES})
|
||||||
|
|
||||||
|
if(NO_AES)
|
||||||
|
message(STATUS "AES support explicitly disabled")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_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)
|
||||||
|
message(STATUS "AES support enabled")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes")
|
||||||
|
elseif(PPC64LE OR PPC64 OR PPC)
|
||||||
|
message(STATUS "AES support not available on POWER")
|
||||||
|
elseif(S390X)
|
||||||
|
message(STATUS "AES support not available on s390x")
|
||||||
|
elseif(ARM6)
|
||||||
|
message(STATUS "AES support not available on ARMv6")
|
||||||
|
elseif(ARM7)
|
||||||
|
message(STATUS "AES support not available on ARMv7")
|
||||||
|
elseif(ARM8)
|
||||||
|
CHECK_CXX_ACCEPTS_FLAG("-march=${ARCH}+crypto" ARCH_PLUS_CRYPTO)
|
||||||
|
if(ARCH_PLUS_CRYPTO)
|
||||||
|
message(STATUS "Crypto extensions enabled for ARMv8")
|
||||||
|
set(ARCH_FLAG "-march=${ARCH}+crypto")
|
||||||
|
else()
|
||||||
|
message(STATUS "Crypto extensions unavailable on your ARMv8 device")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(STATUS "AES support disabled")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_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 "-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")
|
||||||
if(NOT MINGW)
|
if(NOT MINGW)
|
||||||
set(WARNINGS_AS_ERRORS_FLAG "-Werror")
|
set(WARNINGS_AS_ERRORS_FLAG "-Werror")
|
||||||
@@ -553,10 +644,23 @@ else()
|
|||||||
add_cxx_flag_if_supported(-Wformat-security CXX_SECURITY_FLAGS)
|
add_cxx_flag_if_supported(-Wformat-security CXX_SECURITY_FLAGS)
|
||||||
|
|
||||||
# -fstack-protector
|
# -fstack-protector
|
||||||
|
if (NOT WIN32)
|
||||||
add_c_flag_if_supported(-fstack-protector C_SECURITY_FLAGS)
|
add_c_flag_if_supported(-fstack-protector C_SECURITY_FLAGS)
|
||||||
add_cxx_flag_if_supported(-fstack-protector CXX_SECURITY_FLAGS)
|
add_cxx_flag_if_supported(-fstack-protector CXX_SECURITY_FLAGS)
|
||||||
add_c_flag_if_supported(-fstack-protector-strong C_SECURITY_FLAGS)
|
add_c_flag_if_supported(-fstack-protector-strong C_SECURITY_FLAGS)
|
||||||
add_cxx_flag_if_supported(-fstack-protector-strong CXX_SECURITY_FLAGS)
|
add_cxx_flag_if_supported(-fstack-protector-strong CXX_SECURITY_FLAGS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# New in GCC 8.2
|
||||||
|
if (NOT WIN32)
|
||||||
|
add_c_flag_if_supported(-fcf-protection=full C_SECURITY_FLAGS)
|
||||||
|
add_cxx_flag_if_supported(-fcf-protection=full CXX_SECURITY_FLAGS)
|
||||||
|
add_c_flag_if_supported(-fstack-clash-protection C_SECURITY_FLAGS)
|
||||||
|
add_cxx_flag_if_supported(-fstack-clash-protection CXX_SECURITY_FLAGS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_c_flag_if_supported(-mmitigate-rop C_SECURITY_FLAGS)
|
||||||
|
add_cxx_flag_if_supported(-mmitigate-rop CXX_SECURITY_FLAGS)
|
||||||
|
|
||||||
# linker
|
# linker
|
||||||
if (NOT WIN32)
|
if (NOT WIN32)
|
||||||
@@ -586,36 +690,8 @@ else()
|
|||||||
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}")
|
||||||
|
|
||||||
option(NO_AES "Explicitly disable AES support" ${NO_AES})
|
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_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}")
|
||||||
if(NO_AES)
|
|
||||||
message(STATUS "AES support explicitly disabled")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_AES")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_AES")
|
|
||||||
elseif(NOT ARM AND NOT PPC64LE)
|
|
||||||
message(STATUS "AES support enabled")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes")
|
|
||||||
elseif(PPC64LE)
|
|
||||||
message(STATUS "AES support not available on ppc64le")
|
|
||||||
elseif(ARM6)
|
|
||||||
message(STATUS "AES support not available on ARMv6")
|
|
||||||
elseif(ARM7)
|
|
||||||
message(STATUS "AES support not available on ARMv7")
|
|
||||||
elseif(ARM8)
|
|
||||||
CHECK_CXX_ACCEPTS_FLAG("-march=${ARCH}+crypto" ARCH_PLUS_CRYPTO)
|
|
||||||
if(ARCH_PLUS_CRYPTO)
|
|
||||||
message(STATUS "Crypto extensions enabled for ARMv8")
|
|
||||||
set(ARCH_FLAG "-march=${ARCH}+crypto")
|
|
||||||
else()
|
|
||||||
message(STATUS "Crypto extensions unavailable on your ARMv8 device")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "AES support disabled")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -D_GNU_SOURCE ${MINGW_FLAG} ${STATIC_ASSERT_FLAG} ${WARNINGS} ${C_WARNINGS} ${ARCH_FLAG} ${COVERAGE_FLAGS} ${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} ${ARCH_FLAG} ${COVERAGE_FLAGS} ${PIC_FLAG} ${CXX_SECURITY_FLAGS}")
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS}")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_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
|
||||||
@@ -656,6 +732,10 @@ else()
|
|||||||
message(STATUS "Selecting VFP for ARMv6")
|
message(STATUS "Selecting VFP for ARMv6")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfp")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfp")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfp")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfp")
|
||||||
|
if(DEPENDS)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm")
|
||||||
|
endif()
|
||||||
endif(ARM6)
|
endif(ARM6)
|
||||||
|
|
||||||
if(ARM7)
|
if(ARM7)
|
||||||
@@ -710,7 +790,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_HAS_TR1_TUPLE=0")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default -DGTEST_HAS_TR1_TUPLE=0")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(DEBUG_FLAGS "-g3")
|
set(DEBUG_FLAGS "-g3")
|
||||||
@@ -799,8 +879,13 @@ endif()
|
|||||||
|
|
||||||
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi)
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wa,-mbig-obj")
|
||||||
|
set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi;crypt32)
|
||||||
|
if(DEPENDS)
|
||||||
|
set(ICU_LIBRARIES ${Boost_LOCALE_LIBRARY} sicuio sicuin sicuuc sicudt sicutu iconv)
|
||||||
|
else()
|
||||||
set(ICU_LIBRARIES ${Boost_LOCALE_LIBRARY} icuio icuin icuuc icudt icutu iconv)
|
set(ICU_LIBRARIES ${Boost_LOCALE_LIBRARY} icuio icuin icuuc icudt icutu iconv)
|
||||||
|
endif()
|
||||||
elseif(APPLE OR OPENBSD OR ANDROID)
|
elseif(APPLE OR OPENBSD OR ANDROID)
|
||||||
set(EXTRA_LIBRARIES "")
|
set(EXTRA_LIBRARIES "")
|
||||||
elseif(FREEBSD)
|
elseif(FREEBSD)
|
||||||
@@ -810,13 +895,29 @@ elseif(DRAGONFLY)
|
|||||||
set(EXTRA_LIBRARIES execinfo ${COMPAT})
|
set(EXTRA_LIBRARIES execinfo ${COMPAT})
|
||||||
elseif(CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)")
|
elseif(CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)")
|
||||||
set(EXTRA_LIBRARIES socket nsl resolv)
|
set(EXTRA_LIBRARIES socket nsl resolv)
|
||||||
elseif(NOT MSVC)
|
elseif(NOT MSVC AND NOT DEPENDS)
|
||||||
find_library(RT rt)
|
find_library(RT rt)
|
||||||
set(EXTRA_LIBRARIES ${RT})
|
set(EXTRA_LIBRARIES ${RT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND EXTRA_LIBRARIES ${CMAKE_DL_LIBS})
|
list(APPEND EXTRA_LIBRARIES ${CMAKE_DL_LIBS})
|
||||||
|
|
||||||
|
if (HIDAPI_FOUND)
|
||||||
|
if (APPLE)
|
||||||
|
if(DEPENDS)
|
||||||
|
list(APPEND EXTRA_LIBRARIES "-framework Foundation -framework IOKit")
|
||||||
|
else()
|
||||||
|
find_library(COREFOUNDATION CoreFoundation)
|
||||||
|
find_library(IOKIT IOKit)
|
||||||
|
list(APPEND EXTRA_LIBRARIES ${IOKIT})
|
||||||
|
list(APPEND EXTRA_LIBRARIES ${COREFOUNDATION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if (WIN32)
|
||||||
|
list(APPEND EXTRA_LIBRARIES setupapi)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
option(USE_READLINE "Build with GNU readline support." ON)
|
option(USE_READLINE "Build with GNU readline support." ON)
|
||||||
if(USE_READLINE)
|
if(USE_READLINE)
|
||||||
find_package(Readline)
|
find_package(Readline)
|
||||||
@@ -832,6 +933,7 @@ endif()
|
|||||||
|
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
set(ATOMIC libatomic.a)
|
set(ATOMIC libatomic.a)
|
||||||
|
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 STREQUAL "Clang" AND ARCH_WIDTH EQUAL "32" AND NOT IOS AND NOT FREEBSD)
|
||||||
find_library(ATOMIC atomic)
|
find_library(ATOMIC atomic)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Contributing to Monero
|
# Contributing to Monero
|
||||||
|
|
||||||
A good way to help is to test, and report bugs. See
|
A good way to help is to test, and report bugs. See
|
||||||
[How to Report Bugs Effectively (by Simon Tatham)](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html)
|
[How to Report Bugs Effectively (by Simon Tatham)](https://www.chiark.greenend.org.uk/~sgtatham/bugs.html)
|
||||||
if you want to help that way. Testing is invaluable in making a piece
|
if you want to help that way. Testing is invaluable in making a piece
|
||||||
of software solid and usable.
|
of software solid and usable.
|
||||||
|
|
||||||
|
|||||||
72
Dockerfile
72
Dockerfile
@@ -3,7 +3,8 @@
|
|||||||
# builder stage
|
# builder stage
|
||||||
FROM ubuntu:16.04 as builder
|
FROM ubuntu:16.04 as builder
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN set -ex && \
|
||||||
|
apt-get update && \
|
||||||
apt-get --no-install-recommends --yes install \
|
apt-get --no-install-recommends --yes install \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
cmake \
|
cmake \
|
||||||
@@ -16,15 +17,30 @@ RUN apt-get update && \
|
|||||||
curl \
|
curl \
|
||||||
libtool-bin \
|
libtool-bin \
|
||||||
autoconf \
|
autoconf \
|
||||||
automake
|
automake \
|
||||||
|
bzip2
|
||||||
|
|
||||||
WORKDIR /usr/local
|
WORKDIR /usr/local
|
||||||
|
|
||||||
|
#Cmake
|
||||||
|
ARG CMAKE_VERSION=3.12.1
|
||||||
|
ARG CMAKE_VERSION_DOT=v3.12
|
||||||
|
ARG CMAKE_HASH=c53d5c2ce81d7a957ee83e3e635c8cda5dfe20c9d501a4828ee28e1615e57ab2
|
||||||
|
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
|
## Boost
|
||||||
ARG BOOST_VERSION=1_66_0
|
ARG BOOST_VERSION=1_68_0
|
||||||
ARG BOOST_VERSION_DOT=1.66.0
|
ARG BOOST_VERSION_DOT=1.68.0
|
||||||
ARG BOOST_HASH=5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9
|
ARG BOOST_HASH=7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7
|
||||||
RUN curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \
|
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 \
|
&& echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
|
||||||
&& tar -xvf boost_${BOOST_VERSION}.tar.bz2 \
|
&& tar -xvf boost_${BOOST_VERSION}.tar.bz2 \
|
||||||
&& cd boost_${BOOST_VERSION} \
|
&& cd boost_${BOOST_VERSION} \
|
||||||
@@ -33,21 +49,24 @@ RUN curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostor
|
|||||||
ENV BOOST_ROOT /usr/local/boost_${BOOST_VERSION}
|
ENV BOOST_ROOT /usr/local/boost_${BOOST_VERSION}
|
||||||
|
|
||||||
# OpenSSL
|
# OpenSSL
|
||||||
ARG OPENSSL_VERSION=1.0.2n
|
ARG OPENSSL_VERSION=1.1.0h
|
||||||
ARG OPENSSL_HASH=370babb75f278c39e0c50e8c4e7493bc0f18db6867478341a832a982fd15a8fe
|
ARG OPENSSL_HASH=5835626cde9e99656585fc7aaa2302a73a7e1340bf8c14fd635a62c66802a517
|
||||||
RUN curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
|
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 \
|
&& echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
|
||||||
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
|
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
|
||||||
&& cd openssl-${OPENSSL_VERSION} \
|
&& cd openssl-${OPENSSL_VERSION} \
|
||||||
&& ./Configure linux-x86_64 no-shared --static -fPIC \
|
&& ./Configure linux-x86_64 no-shared --static -fPIC \
|
||||||
&& make build_crypto build_ssl \
|
&& make build_generated \
|
||||||
|
&& make libcrypto.a \
|
||||||
&& make install
|
&& make install
|
||||||
ENV OPENSSL_ROOT_DIR=/usr/local/openssl-${OPENSSL_VERSION}
|
ENV OPENSSL_ROOT_DIR=/usr/local/openssl-${OPENSSL_VERSION}
|
||||||
|
|
||||||
# ZMQ
|
# ZMQ
|
||||||
ARG ZMQ_VERSION=v4.2.3
|
ARG ZMQ_VERSION=v4.2.5
|
||||||
ARG ZMQ_HASH=3226b8ebddd9c6c738ba42986822c26418a49afb
|
ARG ZMQ_HASH=d062edd8c142384792955796329baf1e5a3377cd
|
||||||
RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \
|
RUN set -ex \
|
||||||
|
&& git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \
|
||||||
&& cd libzmq \
|
&& cd libzmq \
|
||||||
&& test `git rev-parse HEAD` = ${ZMQ_HASH} || exit 1 \
|
&& test `git rev-parse HEAD` = ${ZMQ_HASH} || exit 1 \
|
||||||
&& ./autogen.sh \
|
&& ./autogen.sh \
|
||||||
@@ -57,8 +76,10 @@ RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} \
|
|||||||
&& ldconfig
|
&& ldconfig
|
||||||
|
|
||||||
# zmq.hpp
|
# zmq.hpp
|
||||||
|
ARG CPPZMQ_VERSION=v4.2.3
|
||||||
ARG CPPZMQ_HASH=6aa3ab686e916cb0e62df7fa7d12e0b13ae9fae6
|
ARG CPPZMQ_HASH=6aa3ab686e916cb0e62df7fa7d12e0b13ae9fae6
|
||||||
RUN git clone https://github.com/zeromq/cppzmq.git -b ${ZMQ_VERSION} \
|
RUN set -ex \
|
||||||
|
&& git clone https://github.com/zeromq/cppzmq.git -b ${CPPZMQ_VERSION} \
|
||||||
&& cd cppzmq \
|
&& cd cppzmq \
|
||||||
&& test `git rev-parse HEAD` = ${CPPZMQ_HASH} || exit 1 \
|
&& test `git rev-parse HEAD` = ${CPPZMQ_HASH} || exit 1 \
|
||||||
&& mv *.hpp /usr/local/include
|
&& mv *.hpp /usr/local/include
|
||||||
@@ -66,7 +87,8 @@ RUN git clone https://github.com/zeromq/cppzmq.git -b ${ZMQ_VERSION} \
|
|||||||
# Readline
|
# Readline
|
||||||
ARG READLINE_VERSION=7.0
|
ARG READLINE_VERSION=7.0
|
||||||
ARG READLINE_HASH=750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334
|
ARG READLINE_HASH=750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334
|
||||||
RUN curl -s -O https://ftp.gnu.org/gnu/readline/readline-${READLINE_VERSION}.tar.gz \
|
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 \
|
&& echo "${READLINE_HASH} readline-${READLINE_VERSION}.tar.gz" | sha256sum -c \
|
||||||
&& tar -xzf readline-${READLINE_VERSION}.tar.gz \
|
&& tar -xzf readline-${READLINE_VERSION}.tar.gz \
|
||||||
&& cd readline-${READLINE_VERSION} \
|
&& cd readline-${READLINE_VERSION} \
|
||||||
@@ -77,7 +99,8 @@ RUN curl -s -O https://ftp.gnu.org/gnu/readline/readline-${READLINE_VERSION}.tar
|
|||||||
# Sodium
|
# Sodium
|
||||||
ARG SODIUM_VERSION=1.0.16
|
ARG SODIUM_VERSION=1.0.16
|
||||||
ARG SODIUM_HASH=675149b9b8b66ff44152553fb3ebf9858128363d
|
ARG SODIUM_HASH=675149b9b8b66ff44152553fb3ebf9858128363d
|
||||||
RUN git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \
|
RUN set -ex \
|
||||||
|
&& git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \
|
||||||
&& cd libsodium \
|
&& cd libsodium \
|
||||||
&& test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \
|
&& test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \
|
||||||
&& ./autogen.sh \
|
&& ./autogen.sh \
|
||||||
@@ -89,19 +112,25 @@ RUN git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} \
|
|||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
ENV USE_SINGLE_BUILDDIR=1
|
||||||
ARG NPROC
|
ARG NPROC
|
||||||
RUN rm -rf build && \
|
RUN set -ex && \
|
||||||
if [ -z "$NPROC" ];then make -j$(nproc) release-static;else make -j$NPROC release-static;fi
|
git submodule init && git submodule update && \
|
||||||
|
rm -rf build && \
|
||||||
|
if [ -z "$NPROC" ] ; \
|
||||||
|
then make -j$(nproc) release-static ; \
|
||||||
|
else make -j$NPROC release-static ; \
|
||||||
|
fi
|
||||||
|
|
||||||
# runtime stage
|
# runtime stage
|
||||||
FROM ubuntu:16.04
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN set -ex && \
|
||||||
|
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/release/bin/* /usr/local/bin/
|
|
||||||
|
|
||||||
# Contains the blockchain
|
# Contains the blockchain
|
||||||
VOLUME /root/.bitmonero
|
VOLUME /root/.bitmonero
|
||||||
@@ -115,3 +144,4 @@ EXPOSE 18080
|
|||||||
EXPOSE 18081
|
EXPOSE 18081
|
||||||
|
|
||||||
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 ["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"]
|
||||||
|
|
||||||
|
|||||||
50
Doxyfile
50
Doxyfile
@@ -20,7 +20,7 @@
|
|||||||
# This tag specifies the encoding used for all characters in the config file
|
# This tag specifies the encoding used for all characters in the config file
|
||||||
# that follow. The default is UTF-8 which is also the encoding used for all text
|
# that follow. The default is UTF-8 which is also the encoding used for all text
|
||||||
# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
|
# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
|
||||||
# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
|
# built into libc) for the transcoding. See https://www.gnu.org/software/libiconv
|
||||||
# for the list of possible encodings.
|
# for the list of possible encodings.
|
||||||
# The default value is: UTF-8.
|
# The default value is: UTF-8.
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@ EXTENSION_MAPPING =
|
|||||||
|
|
||||||
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
|
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
|
||||||
# according to the Markdown format, which allows for more readable
|
# according to the Markdown format, which allows for more readable
|
||||||
# documentation. See http://daringfireball.net/projects/markdown/ for details.
|
# documentation. See https://daringfireball.net/projects/markdown/ for details.
|
||||||
# The output of markdown processing is further processed by doxygen, so you can
|
# The output of markdown processing is further processed by doxygen, so you can
|
||||||
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
|
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
|
||||||
# case of backward compatibilities issues.
|
# case of backward compatibilities issues.
|
||||||
@@ -318,7 +318,7 @@ BUILTIN_STL_SUPPORT = NO
|
|||||||
CPP_CLI_SUPPORT = NO
|
CPP_CLI_SUPPORT = NO
|
||||||
|
|
||||||
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
|
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
|
||||||
# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
|
# https://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
|
||||||
# will parse them like normal C++ but will assume all classes use public instead
|
# will parse them like normal C++ but will assume all classes use public instead
|
||||||
# of private inheritance when no explicit protection keyword is present.
|
# of private inheritance when no explicit protection keyword is present.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
@@ -677,7 +677,7 @@ LAYOUT_FILE =
|
|||||||
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
||||||
# the reference definitions. This must be a list of .bib files. The .bib
|
# the reference definitions. This must be a list of .bib files. The .bib
|
||||||
# extension is automatically appended if omitted. This requires the bibtex tool
|
# extension is automatically appended if omitted. This requires the bibtex tool
|
||||||
# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
|
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
|
||||||
# For LaTeX the style of the bibliography can be controlled using
|
# For LaTeX the style of the bibliography can be controlled using
|
||||||
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
|
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
|
||||||
# search path. Do not use file names with spaces, bibtex cannot handle them. See
|
# search path. Do not use file names with spaces, bibtex cannot handle them. See
|
||||||
@@ -759,7 +759,7 @@ INPUT = src
|
|||||||
# 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
|
||||||
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
|
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
|
||||||
# documentation (see: http://www.gnu.org/software/libiconv) for the list of
|
# documentation (see: https://www.gnu.org/software/libiconv) for the list of
|
||||||
# possible encodings.
|
# possible encodings.
|
||||||
# The default value is: UTF-8.
|
# The default value is: UTF-8.
|
||||||
|
|
||||||
@@ -951,7 +951,7 @@ SOURCE_TOOLTIPS = YES
|
|||||||
# If the USE_HTAGS tag is set to YES then the references to source code will
|
# If the USE_HTAGS tag is set to YES then the references to source code will
|
||||||
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
|
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
|
||||||
# source browser. The htags tool is part of GNU's global source tagging system
|
# source browser. The htags tool is part of GNU's global source tagging system
|
||||||
# (see http://www.gnu.org/software/global/global.html). You will need version
|
# (see https://www.gnu.org/software/global/global.html). You will need version
|
||||||
# 4.8.6 or higher.
|
# 4.8.6 or higher.
|
||||||
#
|
#
|
||||||
# To use it do the following:
|
# To use it do the following:
|
||||||
@@ -1094,7 +1094,7 @@ HTML_EXTRA_FILES =
|
|||||||
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
|
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
|
||||||
# will adjust the colors in the stylesheet and background images according to
|
# will adjust the colors in the stylesheet and background images according to
|
||||||
# this color. Hue is specified as an angle on a colorwheel, see
|
# this color. Hue is specified as an angle on a colorwheel, see
|
||||||
# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
|
# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
|
||||||
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
|
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
|
||||||
# purple, and 360 is red again.
|
# purple, and 360 is red again.
|
||||||
# Minimum value: 0, maximum value: 359, default value: 220.
|
# Minimum value: 0, maximum value: 359, default value: 220.
|
||||||
@@ -1152,12 +1152,12 @@ HTML_INDEX_NUM_ENTRIES = 100
|
|||||||
|
|
||||||
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
|
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
|
||||||
# generated that can be used as input for Apple's Xcode 3 integrated development
|
# generated that can be used as input for Apple's Xcode 3 integrated development
|
||||||
# environment (see: http://developer.apple.com/tools/xcode/), introduced with
|
# environment (see: https://developer.apple.com/tools/xcode/), introduced with
|
||||||
# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
|
# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
|
||||||
# Makefile in the HTML output directory. Running make will produce the docset in
|
# Makefile in the HTML output directory. Running make will produce the docset in
|
||||||
# that directory and running make install will install the docset in
|
# that directory and running make install will install the docset in
|
||||||
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
|
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
|
||||||
# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
||||||
# for more information.
|
# for more information.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
@@ -1197,7 +1197,7 @@ DOCSET_PUBLISHER_NAME = Publisher
|
|||||||
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
|
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
|
||||||
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
|
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
|
||||||
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
|
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
|
||||||
# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
|
# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on
|
||||||
# Windows.
|
# Windows.
|
||||||
#
|
#
|
||||||
# The HTML Help Workshop contains a compiler that can convert all HTML output
|
# The HTML Help Workshop contains a compiler that can convert all HTML output
|
||||||
@@ -1273,7 +1273,7 @@ QCH_FILE =
|
|||||||
|
|
||||||
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
|
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
|
||||||
# Project output. For more information please see Qt Help Project / Namespace
|
# Project output. For more information please see Qt Help Project / Namespace
|
||||||
# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
|
# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
|
||||||
# The default value is: org.doxygen.Project.
|
# The default value is: org.doxygen.Project.
|
||||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||||
|
|
||||||
@@ -1281,7 +1281,7 @@ QHP_NAMESPACE = org.doxygen.Project
|
|||||||
|
|
||||||
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
|
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
|
||||||
# Help Project output. For more information please see Qt Help Project / Virtual
|
# Help Project output. For more information please see Qt Help Project / Virtual
|
||||||
# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
|
# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-
|
||||||
# folders).
|
# folders).
|
||||||
# The default value is: doc.
|
# The default value is: doc.
|
||||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||||
@@ -1290,7 +1290,7 @@ QHP_VIRTUAL_FOLDER = doc
|
|||||||
|
|
||||||
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
|
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
|
||||||
# filter to add. For more information please see Qt Help Project / Custom
|
# filter to add. For more information please see Qt Help Project / Custom
|
||||||
# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
|
# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
|
||||||
# filters).
|
# filters).
|
||||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||||
|
|
||||||
@@ -1298,7 +1298,7 @@ QHP_CUST_FILTER_NAME =
|
|||||||
|
|
||||||
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
|
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
|
||||||
# custom filter to add. For more information please see Qt Help Project / Custom
|
# custom filter to add. For more information please see Qt Help Project / Custom
|
||||||
# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
|
# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
|
||||||
# filters).
|
# filters).
|
||||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||||
|
|
||||||
@@ -1306,7 +1306,7 @@ QHP_CUST_FILTER_ATTRS =
|
|||||||
|
|
||||||
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
|
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
|
||||||
# project's filter section matches. Qt Help Project / Filter Attributes (see:
|
# project's filter section matches. Qt Help Project / Filter Attributes (see:
|
||||||
# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
|
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
|
||||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||||
|
|
||||||
QHP_SECT_FILTER_ATTRS =
|
QHP_SECT_FILTER_ATTRS =
|
||||||
@@ -1411,7 +1411,7 @@ FORMULA_FONTSIZE = 10
|
|||||||
FORMULA_TRANSPARENT = YES
|
FORMULA_TRANSPARENT = YES
|
||||||
|
|
||||||
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
|
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
|
||||||
# http://www.mathjax.org) which uses client side Javascript for the rendering
|
# https://www.mathjax.org) which uses client side Javascript for the rendering
|
||||||
# instead of using prerendered bitmaps. Use this if you do not have LaTeX
|
# instead of using prerendered bitmaps. Use this if you do not have LaTeX
|
||||||
# installed or if you want to formulas look prettier in the HTML output. When
|
# installed or if you want to formulas look prettier in the HTML output. When
|
||||||
# enabled you may also need to install MathJax separately and configure the path
|
# enabled you may also need to install MathJax separately and configure the path
|
||||||
@@ -1423,7 +1423,7 @@ USE_MATHJAX = NO
|
|||||||
|
|
||||||
# When MathJax is enabled you can set the default output format to be used for
|
# When MathJax is enabled you can set the default output format to be used for
|
||||||
# the MathJax output. See the MathJax site (see:
|
# the MathJax output. See the MathJax site (see:
|
||||||
# http://docs.mathjax.org/en/latest/output.html) for more details.
|
# https://docs.mathjax.org/en/latest/output.html) for more details.
|
||||||
# Possible values are: HTML-CSS (which is slower, but has the best
|
# Possible values are: HTML-CSS (which is slower, but has the best
|
||||||
# compatibility), NativeMML (i.e. MathML) and SVG.
|
# compatibility), NativeMML (i.e. MathML) and SVG.
|
||||||
# The default value is: HTML-CSS.
|
# The default value is: HTML-CSS.
|
||||||
@@ -1438,11 +1438,11 @@ MATHJAX_FORMAT = HTML-CSS
|
|||||||
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
|
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
|
||||||
# Content Delivery Network so you can quickly see the result without installing
|
# Content Delivery Network so you can quickly see the result without installing
|
||||||
# MathJax. However, it is strongly recommended to install a local copy of
|
# MathJax. However, it is strongly recommended to install a local copy of
|
||||||
# MathJax from http://www.mathjax.org before deployment.
|
# MathJax from https://www.mathjax.org before deployment.
|
||||||
# The default value is: http://cdn.mathjax.org/mathjax/latest.
|
# The default value is: https://cdn.mathjax.org/mathjax/latest.
|
||||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||||
|
|
||||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
MATHJAX_RELPATH = https://cdn.mathjax.org/mathjax/latest
|
||||||
|
|
||||||
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
|
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
|
||||||
# extension names that should be enabled during MathJax rendering. For example
|
# extension names that should be enabled during MathJax rendering. For example
|
||||||
@@ -1453,7 +1453,7 @@ MATHJAX_EXTENSIONS =
|
|||||||
|
|
||||||
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
|
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
|
||||||
# of code that will be used on startup of the MathJax code. See the MathJax site
|
# of code that will be used on startup of the MathJax code. See the MathJax site
|
||||||
# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
|
# (see: https://docs.mathjax.org/en/latest/output.html) for more details. For an
|
||||||
# example see the documentation.
|
# example see the documentation.
|
||||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||||
|
|
||||||
@@ -1500,7 +1500,7 @@ SERVER_BASED_SEARCH = NO
|
|||||||
#
|
#
|
||||||
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
||||||
# (doxysearch.cgi) which are based on the open source search engine library
|
# (doxysearch.cgi) which are based on the open source search engine library
|
||||||
# Xapian (see: http://xapian.org/).
|
# Xapian (see: https://xapian.org/).
|
||||||
#
|
#
|
||||||
# See the section "External Indexing and Searching" for details.
|
# See the section "External Indexing and Searching" for details.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
@@ -1513,7 +1513,7 @@ EXTERNAL_SEARCH = NO
|
|||||||
#
|
#
|
||||||
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
# Doxygen ships with an example indexer ( doxyindexer) and search engine
|
||||||
# (doxysearch.cgi) which are based on the open source search engine library
|
# (doxysearch.cgi) which are based on the open source search engine library
|
||||||
# Xapian (see: http://xapian.org/). See the section "External Indexing and
|
# Xapian (see: https://xapian.org/). See the section "External Indexing and
|
||||||
# Searching" for details.
|
# Searching" for details.
|
||||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||||
|
|
||||||
@@ -1684,7 +1684,7 @@ LATEX_SOURCE_CODE = NO
|
|||||||
|
|
||||||
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
||||||
# bibliography, e.g. plainnat, or ieeetr. See
|
# bibliography, e.g. plainnat, or ieeetr. See
|
||||||
# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
||||||
# The default value is: plain.
|
# The default value is: plain.
|
||||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||||
|
|
||||||
@@ -2051,7 +2051,7 @@ HIDE_UNDOC_RELATIONS = YES
|
|||||||
|
|
||||||
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
|
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
|
||||||
# available from the path. This tool is part of Graphviz (see:
|
# available from the path. This tool is part of Graphviz (see:
|
||||||
# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
|
# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
|
||||||
# Bell Labs. The other options in this section have no effect if this option is
|
# Bell Labs. The other options in this section have no effect if this option is
|
||||||
# set to NO
|
# set to NO
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|||||||
123
Makefile
123
Makefile
@@ -26,103 +26,136 @@
|
|||||||
# 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.
|
||||||
|
|
||||||
|
ANDROID_STANDALONE_TOOLCHAIN_PATH ?= /usr/local/toolchain
|
||||||
|
|
||||||
|
subbuilddir:=$(shell echo `uname | sed -e 's|[:/\\ \(\)]|_|g'`/`git branch | grep '\* ' | cut -f2- -d' '| sed -e 's|[:/\\ \(\)]|_|g'`)
|
||||||
|
ifeq ($(USE_SINGLE_BUILDDIR),)
|
||||||
|
builddir := build/"$(subbuilddir)"
|
||||||
|
topdir := ../../../..
|
||||||
|
deldirs := $(builddir)
|
||||||
|
else
|
||||||
|
builddir := build
|
||||||
|
topdir := ../..
|
||||||
|
deldirs := $(builddir)/debug $(builddir)/release $(builddir)/fuzz
|
||||||
|
endif
|
||||||
|
|
||||||
all: release-all
|
all: release-all
|
||||||
|
|
||||||
cmake-debug:
|
cmake-debug:
|
||||||
mkdir -p build/debug
|
mkdir -p $(builddir)/debug
|
||||||
cd build/debug && cmake -D CMAKE_BUILD_TYPE=Debug ../..
|
cd $(builddir)/debug && cmake -D CMAKE_BUILD_TYPE=Debug $(topdir)
|
||||||
|
|
||||||
debug: cmake-debug
|
debug: cmake-debug
|
||||||
cd build/debug && $(MAKE)
|
cd $(builddir)/debug && $(MAKE)
|
||||||
|
|
||||||
# Temporarily disable some tests:
|
# Temporarily disable some tests:
|
||||||
# * libwallet_api_tests fail (Issue #895)
|
# * libwallet_api_tests fail (Issue #895)
|
||||||
debug-test:
|
debug-test:
|
||||||
mkdir -p build/debug
|
mkdir -p $(builddir)/debug
|
||||||
cd build/debug && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Debug ../.. && $(MAKE) && $(MAKE) ARGS="-E libwallet_api_tests" test
|
cd $(builddir)/debug && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Debug $(topdir) && $(MAKE) && $(MAKE) ARGS="-E libwallet_api_tests" test
|
||||||
|
|
||||||
debug-all:
|
debug-all:
|
||||||
mkdir -p build/debug
|
mkdir -p $(builddir)/debug
|
||||||
cd build/debug && cmake -D BUILD_TESTS=ON -D BUILD_SHARED_LIBS=OFF -D CMAKE_BUILD_TYPE=Debug ../.. && $(MAKE)
|
cd $(builddir)/debug && cmake -D BUILD_TESTS=ON -D BUILD_SHARED_LIBS=OFF -D CMAKE_BUILD_TYPE=Debug $(topdir) && $(MAKE)
|
||||||
|
|
||||||
debug-static-all:
|
debug-static-all:
|
||||||
mkdir -p build/debug
|
mkdir -p $(builddir)/debug
|
||||||
cd build/debug && cmake -D BUILD_TESTS=ON -D STATIC=ON -D CMAKE_BUILD_TYPE=Debug ../.. && $(MAKE)
|
cd $(builddir)/debug && cmake -D BUILD_TESTS=ON -D STATIC=ON -D CMAKE_BUILD_TYPE=Debug $(topdir) && $(MAKE)
|
||||||
|
|
||||||
|
debug-static-win64:
|
||||||
|
mkdir -p $(builddir)/debug
|
||||||
|
cd $(builddir)/debug && cmake -G "MSYS Makefiles" -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Debug -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys64 $(topdir) && $(MAKE)
|
||||||
|
|
||||||
|
debug-static-win32:
|
||||||
|
mkdir -p $(builddir)/debug
|
||||||
|
cd $(builddir)/debug && cmake -G "MSYS Makefiles" -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Debug -D BUILD_TAG="win-x32" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/32-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys32 $(topdir) && $(MAKE)
|
||||||
|
|
||||||
cmake-release:
|
cmake-release:
|
||||||
mkdir -p build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D CMAKE_BUILD_TYPE=Release ../..
|
cd $(builddir)/release && cmake -D CMAKE_BUILD_TYPE=Release $(topdir)
|
||||||
|
|
||||||
release: cmake-release
|
release: cmake-release
|
||||||
cd build/release && $(MAKE)
|
cd $(builddir)/release && $(MAKE)
|
||||||
|
|
||||||
release-test:
|
release-test:
|
||||||
mkdir -p build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release ../.. && $(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 build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release ../.. && $(MAKE)
|
cd $(builddir)/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static:
|
release-static:
|
||||||
mkdir -p build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release ../.. && $(MAKE)
|
cd $(builddir)/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release $(topdir) && $(MAKE)
|
||||||
|
|
||||||
coverage:
|
coverage:
|
||||||
mkdir -p build/debug
|
mkdir -p $(builddir)/debug
|
||||||
cd build/debug && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Debug -D COVERAGE=ON ../.. && $(MAKE) && $(MAKE) test
|
cd $(builddir)/debug && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Debug -D COVERAGE=ON $(topdir) && $(MAKE) && $(MAKE) test
|
||||||
|
|
||||||
# Targets for specific prebuilt builds which will be advertised for updates by their build tag
|
# Targets for specific prebuilt builds which will be advertised for updates by their build tag
|
||||||
|
|
||||||
release-static-linux-armv6:
|
release-static-linux-armv6:
|
||||||
mkdir -p build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/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" ../.. && $(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 build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/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" ../.. && $(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:
|
release-static-android-armv7:
|
||||||
mkdir -p build/release
|
mkdir -p $(builddir)/release/translations
|
||||||
cd build/release && 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" ../.. && $(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)
|
||||||
|
|
||||||
|
release-static-android-armv8:
|
||||||
|
mkdir -p $(builddir)/release/translations
|
||||||
|
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)
|
||||||
|
|
||||||
release-static-linux-armv8:
|
release-static-linux-armv8:
|
||||||
mkdir -p build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/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" ../.. && $(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 build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="linux-x64" ../.. && $(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 build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="freebsd-x64" ../.. && $(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 build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="mac-x64" ../.. && $(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 build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="linux-x86" ../.. && $(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 build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -G "MSYS Makefiles" -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=../../cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys64 ../.. && $(MAKE)
|
cd $(builddir)/release && cmake -G "MSYS Makefiles" -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys64 $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-win32:
|
release-static-win32:
|
||||||
mkdir -p build/release
|
mkdir -p $(builddir)/release
|
||||||
cd build/release && cmake -G "MSYS Makefiles" -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x32" -D CMAKE_TOOLCHAIN_FILE=../../cmake/32-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys32 ../.. && $(MAKE)
|
cd $(builddir)/release && cmake -G "MSYS Makefiles" -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x32" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/32-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys32 $(topdir) && $(MAKE)
|
||||||
|
|
||||||
fuzz:
|
fuzz:
|
||||||
mkdir -p build/fuzz
|
mkdir -p $(builddir)/fuzz
|
||||||
cd build/fuzz && cmake -D STATIC=ON -D SANITIZE=ON -D BUILD_TESTS=ON -D USE_LTO=OFF -D CMAKE_C_COMPILER=afl-gcc -D CMAKE_CXX_COMPILER=afl-g++ -D ARCH="x86-64" -D CMAKE_BUILD_TYPE=fuzz -D BUILD_TAG="linux-x64" ../.. && $(MAKE)
|
cd $(builddir)/fuzz && cmake -D STATIC=ON -D SANITIZE=ON -D BUILD_TESTS=ON -D USE_LTO=OFF -D CMAKE_C_COMPILER=afl-gcc -D CMAKE_CXX_COMPILER=afl-g++ -D ARCH="x86-64" -D CMAKE_BUILD_TYPE=fuzz -D BUILD_TAG="linux-x64" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@echo "WARNING: Back-up your wallet if it exists within ./build!" ; \
|
@echo "WARNING: Back-up your wallet if it exists within ./"$(deldirs)"!" ; \
|
||||||
read -r -p "This will destroy the build directory, continue (y/N)?: " CONTINUE; \
|
read -r -p "This will destroy the build directory, continue (y/N)?: " CONTINUE; \
|
||||||
[ $$CONTINUE = "y" ] || [ $$CONTINUE = "Y" ] || (echo "Exiting."; exit 1;)
|
[ $$CONTINUE = "y" ] || [ $$CONTINUE = "Y" ] || (echo "Exiting."; exit 1;)
|
||||||
rm -rf build
|
rm -rf $(deldirs)
|
||||||
|
|
||||||
|
clean-all:
|
||||||
|
@echo "WARNING: Back-up your wallet if it exists within ./build!" ; \
|
||||||
|
read -r -p "This will destroy all build directories, continue (y/N)?: " CONTINUE; \
|
||||||
|
[ $$CONTINUE = "y" ] || [ $$CONTINUE = "Y" ] || (echo "Exiting."; exit 1;)
|
||||||
|
rm -rf ./build
|
||||||
|
|
||||||
tags:
|
tags:
|
||||||
ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ src contrib tests/gtest
|
ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ src contrib tests/gtest
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ In order to use the same translation workflow as the [Monero Core GUI](https://g
|
|||||||
|
|
||||||
### Tools for translators
|
### Tools for translators
|
||||||
|
|
||||||
In order to create, update or build translations files, you need to have Qt tools installed. For translating, you need either the **Qt Linguist GUI** ([part of QT Creator](https://www.qt.io/download-open-source/#allDownloadsDiv-9) or a [3rd-party standalone version](https://github.com/lelegard/qtlinguist-installers/releases)), or another tool that supports Qt ts files, such as Transifex. The files are XML, so they can be edited in any plain text editor if needed.
|
In order to create, update or build translations files, you need to have Qt tools installed. For translating, you need either the **Qt Linguist GUI** ([part of Qt Creator](https://www.qt.io/download) or a [3rd-party standalone version](https://github.com/lelegard/qtlinguist-installers/releases)), or another tool that supports Qt ts files, such as Transifex. The files are XML, so they can be edited in any plain text editor if needed.
|
||||||
|
|
||||||
### Creating / modifying translations
|
### Creating / modifying translations
|
||||||
|
|
||||||
|
|||||||
231
README.md
231
README.md
@@ -9,15 +9,23 @@ Portions Copyright (c) 2012-2013 The Cryptonote developers.
|
|||||||
- Forum: [forum.getmonero.org](https://forum.getmonero.org)
|
- Forum: [forum.getmonero.org](https://forum.getmonero.org)
|
||||||
- Mail: [dev@getmonero.org](mailto:dev@getmonero.org)
|
- Mail: [dev@getmonero.org](mailto:dev@getmonero.org)
|
||||||
- GitHub: [https://github.com/monero-project/monero](https://github.com/monero-project/monero)
|
- GitHub: [https://github.com/monero-project/monero](https://github.com/monero-project/monero)
|
||||||
- IRC: [#monero-dev on Freenode](http://webchat.freenode.net/?randomnick=1&channels=%23monero-dev&prompt=1&uio=d4)
|
- IRC: [#monero-dev on Freenode](https://webchat.freenode.net/?randomnick=1&channels=%23monero-dev&prompt=1&uio=d4)
|
||||||
|
|
||||||
## Vulnerability response
|
## Vulnerability response
|
||||||
|
|
||||||
- Our [Vulnerability Response Process](https://github.com/monero-project/meta/blob/master/VULNERABILITY_RESPONSE_PROCESS.md) encourages responsible disclosure
|
- Our [Vulnerability Response Process](https://github.com/monero-project/meta/blob/master/VULNERABILITY_RESPONSE_PROCESS.md) encourages responsible disclosure
|
||||||
- We are also available via [HackerOne](https://hackerone.com/monero)
|
- We are also available via [HackerOne](https://hackerone.com/monero)
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
|
### IMPORTANT
|
||||||
|
|
||||||
|
These builds are of the master branch, which is used for active development and can be either unstable or incompatible with release software. Please compile release branches.
|
||||||
|
|
||||||
| Operating System | Processor | Status |
|
| Operating System | Processor | Status |
|
||||||
| --------------------- | -------- |--------|
|
| --------------------- | -------- |--------|
|
||||||
| Ubuntu 16.04 | i686 | [](https://build.getmonero.org/builders/monero-static-ubuntu-i686)
|
| Ubuntu 16.04 | i686 | [](https://build.getmonero.org/builders/monero-static-ubuntu-i686)
|
||||||
@@ -69,12 +77,12 @@ The Bitcoin donation address is: `1KTexdemPdxSBcG55heUuTjDRYqbC5ZL8H`
|
|||||||
Core development funding and/or some supporting services are also graciously provided by sponsors:
|
Core development funding and/or some supporting services are also graciously provided by sponsors:
|
||||||
|
|
||||||
[<img width="80" src="https://static.getmonero.org/images/sponsors/mymonero.png"/>](https://mymonero.com)
|
[<img width="80" src="https://static.getmonero.org/images/sponsors/mymonero.png"/>](https://mymonero.com)
|
||||||
[<img width="150" src="https://static.getmonero.org/images/sponsors/kitware.png?1"/>](http://kitware.com)
|
[<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"/>](http://dome9.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"/>](http://araxis.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"/>](http://www.jetbrains.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"/>](http://www.navicat.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"/>](http://www.symas.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).
|
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).
|
||||||
|
|
||||||
@@ -86,9 +94,9 @@ See [LICENSE](LICENSE).
|
|||||||
|
|
||||||
If you want to help out, see [CONTRIBUTING](CONTRIBUTING.md) for a set of guidelines.
|
If you want to help out, see [CONTRIBUTING](CONTRIBUTING.md) for a set of guidelines.
|
||||||
|
|
||||||
## Scheduled mandatory software upgrades
|
## Scheduled software upgrades
|
||||||
|
|
||||||
Monero uses a fixed-schedule mandatory software upgrade (hard fork) mechanism to implement new features. This means that users of Monero (end users and service providers) need to run current versions and upgrade their software on a regular schedule. Mandatory software upgrades occur during the months of March and September. 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.
|
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.
|
||||||
Dates are provided in the format YYYY-MM-DD.
|
Dates are provided in the format YYYY-MM-DD.
|
||||||
|
|
||||||
|
|
||||||
@@ -99,56 +107,16 @@ Dates are provided in the format YYYY-MM-DD.
|
|||||||
| 1220516 | 2017-01-05 | v4 | v0.10.1 | v0.10.2.1 | Allow normal and RingCT transactions |
|
| 1220516 | 2017-01-05 | v4 | v0.10.1 | v0.10.2.1 | Allow normal and RingCT transactions |
|
||||||
| 1288616 | 2017-04-15 | v5 | v0.10.3.0 | v0.10.3.1 | Adjusted minimum blocksize and fee algorithm |
|
| 1288616 | 2017-04-15 | v5 | v0.10.3.0 | v0.10.3.1 | Adjusted minimum blocksize and fee algorithm |
|
||||||
| 1400000 | 2017-09-16 | v6 | v0.11.0.0 | v0.11.0.0 | Allow only RingCT transactions, allow only >= ringsize 5 |
|
| 1400000 | 2017-09-16 | v6 | v0.11.0.0 | v0.11.0.0 | Allow only RingCT transactions, allow only >= ringsize 5 |
|
||||||
| 1546000 | 2018-04-06 | v7 | v0.12.0.0 | v0.12.0.0 | Cryptonight variant 1, ringsize >= 7, sorted inputs
|
| 1546000 | 2018-04-06 | v7 | v0.12.0.0 | v0.12.3.0 | Cryptonight variant 1, ringsize >= 7, sorted inputs
|
||||||
|
| 1685555 | 2018-10-18 | v8 | v0.13.0.0 | v0.13.0.0 | max transaction size at half the penalty free block size, bulletproofs enabled, cryptonight variant 2, fixed ringsize [11](https://youtu.be/KOO5S4vxi0o)
|
||||||
|
| 1686275 | 2018-10-19 | v9 | v0.13.0.0 | v0.13.0.0 | bulletproofs required
|
||||||
|
| XXXXXXX | 2019-04-XX | XX | XXXXXXXXX | XXXXXXXXX | X
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
## Release staging schedule and protocol
|
## Release staging schedule and protocol
|
||||||
|
|
||||||
Approximately three months prior to a scheduled mandatory 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.
|
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.
|
||||||
|
|
||||||
## Installing Monero from a package
|
|
||||||
|
|
||||||
Packages are available for
|
|
||||||
|
|
||||||
* Ubuntu and [snap supported](https://snapcraft.io/docs/core/install) systems, via a community contributed build.
|
|
||||||
|
|
||||||
snap install monero --beta
|
|
||||||
|
|
||||||
Installing a snap is very quick. Snaps are secure. They are isolated with all of their dependencies. Snaps also auto update when a new version is released.
|
|
||||||
|
|
||||||
* Arch Linux (via [AUR](https://aur.archlinux.org/)):
|
|
||||||
- Stable release: [`monero`](https://aur.archlinux.org/packages/monero)
|
|
||||||
- Bleeding edge: [`monero-git`](https://aur.archlinux.org/packages/monero-git)
|
|
||||||
|
|
||||||
* Void Linux:
|
|
||||||
|
|
||||||
xbps-install -S monero
|
|
||||||
|
|
||||||
* GuixSD
|
|
||||||
|
|
||||||
guix package -i monero
|
|
||||||
|
|
||||||
* OS X via [Homebrew](http://brew.sh)
|
|
||||||
|
|
||||||
brew tap sammy007/cryptonight
|
|
||||||
brew install monero --build-from-source
|
|
||||||
|
|
||||||
* Docker
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
Packaging for your favorite distribution would be a welcome contribution!
|
|
||||||
|
|
||||||
## Compiling Monero from source
|
## Compiling Monero from source
|
||||||
|
|
||||||
@@ -166,14 +134,14 @@ library archives (`.a`).
|
|||||||
| Dep | Min. version | Vendored | Debian/Ubuntu pkg | Arch pkg | Fedora | Optional | Purpose |
|
| Dep | Min. version | Vendored | Debian/Ubuntu pkg | Arch pkg | Fedora | Optional | Purpose |
|
||||||
| ------------ | ------------- | -------- | ------------------ | ------------ | ----------------- | -------- | -------------- |
|
| ------------ | ------------- | -------- | ------------------ | ------------ | ----------------- | -------- | -------------- |
|
||||||
| GCC | 4.7.3 | NO | `build-essential` | `base-devel` | `gcc` | NO | |
|
| GCC | 4.7.3 | NO | `build-essential` | `base-devel` | `gcc` | NO | |
|
||||||
| CMake | 3.2.0 | NO | `cmake` | `cmake` | `cmake` | NO | |
|
| CMake | 3.5 | NO | `cmake` | `cmake` | `cmake` | NO | |
|
||||||
| pkg-config | any | NO | `pkg-config` | `base-devel` | `pkgconf` | NO | |
|
| pkg-config | any | NO | `pkg-config` | `base-devel` | `pkgconf` | NO | |
|
||||||
| Boost | 1.58 | NO | `libboost-all-dev` | `boost` | `boost-devel` | NO | C++ libraries |
|
| Boost | 1.58 | NO | `libboost-all-dev` | `boost` | `boost-devel` | NO | C++ libraries |
|
||||||
| OpenSSL | basically any | NO | `libssl-dev` | `openssl` | `openssl-devel` | NO | sha256 sum |
|
| OpenSSL | basically any | NO | `libssl-dev` | `openssl` | `openssl-devel` | NO | sha256 sum |
|
||||||
| libzmq | 3.0.0 | NO | `libzmq3-dev` | `zeromq` | `cppzmq-devel` | NO | ZeroMQ library |
|
| libzmq | 3.0.0 | NO | `libzmq3-dev` | `zeromq` | `cppzmq-devel` | NO | ZeroMQ library |
|
||||||
|
| OpenPGM | ? | NO | `libpgm-dev` | `libpgm` | `openpgm-devel` | NO | For ZeroMQ |
|
||||||
| libunbound | 1.4.16 | YES | `libunbound-dev` | `unbound` | `unbound-devel` | NO | DNS resolver |
|
| libunbound | 1.4.16 | YES | `libunbound-dev` | `unbound` | `unbound-devel` | NO | DNS resolver |
|
||||||
| libsodium | ? | NO | `libsodium-dev` | ? | `libsodium-devel` | NO | libsodium |
|
| libsodium | ? | NO | `libsodium-dev` | `libsodium` | `libsodium-devel` | NO | cryptography |
|
||||||
| libminiupnpc | 2.0 | YES | `libminiupnpc-dev` | `miniupnpc` | `miniupnpc-devel` | YES | NAT punching |
|
|
||||||
| libunwind | any | NO | `libunwind8-dev` | `libunwind` | `libunwind-devel` | YES | Stack traces |
|
| libunwind | any | NO | `libunwind8-dev` | `libunwind` | `libunwind-devel` | YES | Stack traces |
|
||||||
| liblzma | any | NO | `liblzma-dev` | `xz` | `xz-devel` | YES | For libunwind |
|
| liblzma | any | NO | `liblzma-dev` | `xz` | `xz-devel` | YES | For libunwind |
|
||||||
| libreadline | 6.3.0 | NO | `libreadline6-dev` | `readline` | `readline-devel` | YES | Input editing |
|
| libreadline | 6.3.0 | NO | `libreadline6-dev` | `readline` | `readline-devel` | YES | Input editing |
|
||||||
@@ -187,6 +155,19 @@ library archives (`.a`).
|
|||||||
[^] On Debian/Ubuntu `libgtest-dev` only includes sources and headers. You must
|
[^] 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/ ```
|
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/ ```
|
||||||
|
|
||||||
|
Debian / Ubuntu one liner for all dependencies
|
||||||
|
``` 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```
|
||||||
|
|
||||||
|
### 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
|
### Build instructions
|
||||||
|
|
||||||
Monero uses the CMake build system and a top-level [Makefile](Makefile) that
|
Monero uses the CMake build system and a top-level [Makefile](Makefile) that
|
||||||
@@ -195,9 +176,10 @@ invokes cmake commands as needed.
|
|||||||
#### On Linux and OS X
|
#### On Linux and OS X
|
||||||
|
|
||||||
* Install the dependencies
|
* Install the dependencies
|
||||||
* Change to the root of the source code directory and build:
|
* Change to the root of the source code directory, change to the most recent release branch, and build:
|
||||||
|
|
||||||
cd monero
|
cd monero
|
||||||
|
git checkout v0.13.0.4
|
||||||
make
|
make
|
||||||
|
|
||||||
*Optional*: If your machine has several cores and enough memory, enable
|
*Optional*: If your machine has several cores and enough memory, enable
|
||||||
@@ -208,6 +190,12 @@ invokes cmake commands as needed.
|
|||||||
*Note*: If cmake can not find zmq.hpp file on OS X, installing `zmq.hpp` from
|
*Note*: If cmake can not find zmq.hpp file on OS X, installing `zmq.hpp` from
|
||||||
https://github.com/zeromq/cppzmq to `/usr/local/include` should fix that error.
|
https://github.com/zeromq/cppzmq to `/usr/local/include` should fix that error.
|
||||||
|
|
||||||
|
*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`
|
* The resulting executables can be found in `build/release/bin`
|
||||||
|
|
||||||
* Add `PATH="$PATH:$HOME/monero/build/release/bin"` to `.profile`
|
* Add `PATH="$PATH:$HOME/monero/build/release/bin"` to `.profile`
|
||||||
@@ -228,6 +216,8 @@ invokes cmake commands as needed.
|
|||||||
|
|
||||||
make release-static
|
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):
|
* **Optional**: build documentation in `doc/html` (omit `HAVE_DOT=YES` if `graphviz` is not installed):
|
||||||
|
|
||||||
HAVE_DOT=YES doxygen Doxyfile
|
HAVE_DOT=YES doxygen Doxyfile
|
||||||
@@ -251,7 +241,7 @@ Tested on a Raspberry Pi Zero with a clean install of minimal Raspbian Stretch (
|
|||||||
```
|
```
|
||||||
git clone https://github.com/monero-project/monero.git
|
git clone https://github.com/monero-project/monero.git
|
||||||
cd monero
|
cd monero
|
||||||
git checkout tags/v0.11.1.0
|
git checkout tags/v0.13.0.4
|
||||||
```
|
```
|
||||||
* Build:
|
* Build:
|
||||||
```
|
```
|
||||||
@@ -293,7 +283,7 @@ If you are using the older Raspbian Jessie image, compiling Monero is a bit more
|
|||||||
```
|
```
|
||||||
* Wait ~8 hours
|
* Wait ~8 hours
|
||||||
```
|
```
|
||||||
sudo ./bjam install
|
sudo ./bjam cxxflags=-fPIC cflags=-fPIC -a install
|
||||||
```
|
```
|
||||||
* Wait ~4 hours
|
* Wait ~4 hours
|
||||||
|
|
||||||
@@ -302,14 +292,14 @@ If you are using the older Raspbian Jessie image, compiling Monero is a bit more
|
|||||||
#### On Windows:
|
#### On Windows:
|
||||||
|
|
||||||
Binaries for Windows are built on Windows using the MinGW toolchain within
|
Binaries for Windows are built on Windows using the MinGW toolchain within
|
||||||
[MSYS2 environment](http://msys2.github.io). The MSYS2 environment emulates a
|
[MSYS2 environment](https://www.msys2.org). The MSYS2 environment emulates a
|
||||||
POSIX system. The toolchain runs within the environment and *cross-compiles*
|
POSIX system. The toolchain runs within the environment and *cross-compiles*
|
||||||
binaries that can run outside of the environment as a regular Windows
|
binaries that can run outside of the environment as a regular Windows
|
||||||
application.
|
application.
|
||||||
|
|
||||||
**Preparing the build environment**
|
**Preparing the build environment**
|
||||||
|
|
||||||
* Download and install the [MSYS2 installer](http://msys2.github.io), either the 64-bit or the 32-bit package, depending on your system.
|
* 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
|
* Open the MSYS shell via the `MSYS2 Shell` shortcut
|
||||||
* Update packages using pacman:
|
* Update packages using pacman:
|
||||||
|
|
||||||
@@ -326,18 +316,32 @@ application.
|
|||||||
|
|
||||||
To build for 64-bit Windows:
|
To build for 64-bit Windows:
|
||||||
|
|
||||||
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
|
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:
|
To build for 32-bit Windows:
|
||||||
|
|
||||||
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
|
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
|
* 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
|
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.
|
running 64-bit Windows, you will have both 64-bit and 32-bit MinGW shells.
|
||||||
|
|
||||||
|
**Cloning**
|
||||||
|
|
||||||
|
* To git clone, run:
|
||||||
|
|
||||||
|
git clone --recursive https://github.com/monero-project/monero.git
|
||||||
|
|
||||||
**Building**
|
**Building**
|
||||||
|
|
||||||
|
* Change to the cloned directory, run:
|
||||||
|
|
||||||
|
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.13.0.0'. If you dont care about the version and just want binaries from master, skip this step:
|
||||||
|
|
||||||
|
git checkout v0.13.0.4
|
||||||
|
|
||||||
* If you are on a 64-bit system, run:
|
* If you are on a 64-bit system, run:
|
||||||
|
|
||||||
make release-static-win64
|
make release-static-win64
|
||||||
@@ -348,6 +352,16 @@ application.
|
|||||||
|
|
||||||
* The resulting executables can be found in `build/release/bin`
|
* The resulting executables can be found in `build/release/bin`
|
||||||
|
|
||||||
|
* **Optional**: to build Windows binaries suitable for debugging on a 64-bit system, run:
|
||||||
|
|
||||||
|
make debug-static-win64
|
||||||
|
|
||||||
|
* **Optional**: to build Windows binaries suitable for debugging on a 32-bit system, run:
|
||||||
|
|
||||||
|
make debug-static-win32
|
||||||
|
|
||||||
|
* The resulting executables can be found in `build/debug/bin`
|
||||||
|
|
||||||
### On FreeBSD:
|
### On FreeBSD:
|
||||||
|
|
||||||
The project can be built from scratch by following instructions for Linux above. If you are running monero in a jail you need to add the flag: `allow.sysvipc=1` to your jail configuration, otherwise lmdb will throw the error message: `Failed to open lmdb environment: Function not implemented`.
|
The project can be built from scratch by following instructions for Linux above. If you are running monero in a jail you need to add the flag: `allow.sysvipc=1` to your jail configuration, otherwise lmdb will throw the error message: `Failed to open lmdb environment: Function not implemented`.
|
||||||
@@ -360,7 +374,7 @@ We expect to add Monero into the ports tree in the near future, which will aid i
|
|||||||
|
|
||||||
This has been tested on OpenBSD 5.8.
|
This has been tested on OpenBSD 5.8.
|
||||||
|
|
||||||
You will need to add a few packages to your system. `pkg_add db cmake gcc gcc-libs g++ miniupnpc gtest`.
|
You will need to add a few packages to your system. `pkg_add db cmake gcc gcc-libs g++ gtest`.
|
||||||
|
|
||||||
The doxygen and graphviz packages are optional and require the xbase set.
|
The doxygen and graphviz packages are optional and require the xbase set.
|
||||||
|
|
||||||
@@ -373,7 +387,7 @@ To build: `env CC=egcc CXX=eg++ CPP=ecpp DEVELOPER_LOCAL_TOOLS=1 BOOST_ROOT=/pat
|
|||||||
|
|
||||||
#### OpenBSD >= 6.2
|
#### OpenBSD >= 6.2
|
||||||
|
|
||||||
You will need to add a few packages to your system. `pkg_add cmake miniupnpc zeromq libiconv`.
|
You will need to add a few packages to your system. `pkg_add cmake zeromq libiconv`.
|
||||||
|
|
||||||
The doxygen and graphviz packages are optional and require the xbase set.
|
The doxygen and graphviz packages are optional and require the xbase set.
|
||||||
|
|
||||||
@@ -457,14 +471,16 @@ Then you can run make as usual.
|
|||||||
|
|
||||||
### On Linux for Android (using docker):
|
### On Linux for Android (using docker):
|
||||||
|
|
||||||
# Build image (select android64.Dockerfile for aarch64)
|
# Build image (for ARM 32-bit)
|
||||||
cd utils/build_scripts/ && docker build -f android32.Dockerfile -t monero-android .
|
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
|
# Create container
|
||||||
docker create -it --name monero-android monero-android bash
|
docker create -it --name monero-android monero-android bash
|
||||||
# Get binaries
|
# Get binaries
|
||||||
docker cp monero-android:/opt/android/monero/build/release/bin .
|
docker cp monero-android:/src/build/release/bin .
|
||||||
|
|
||||||
### Building portable statically linked binaries
|
### Building portable statically linked binaries (Cross Compiling)
|
||||||
|
|
||||||
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:
|
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:
|
||||||
|
|
||||||
@@ -476,6 +492,65 @@ By default, in either dynamically or statically linked builds, binaries target t
|
|||||||
* ```make release-static-win64``` builds binaries on 64-bit Windows portable across 64-bit Windows systems
|
* ```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
|
* ```make release-static-win32``` builds binaries on 64-bit or 32-bit Windows portable across 32-bit Windows systems
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
* Ubuntu and [snap supported](https://snapcraft.io/docs/core/install) systems, via a community contributed build.
|
||||||
|
|
||||||
|
snap install monero --beta
|
||||||
|
|
||||||
|
Installing a snap is very quick. Snaps are secure. They are isolated with all of their dependencies. Snaps also auto update when a new version is released.
|
||||||
|
|
||||||
|
* Arch Linux (via [AUR](https://aur.archlinux.org/)):
|
||||||
|
- Stable release: [`monero`](https://aur.archlinux.org/packages/monero)
|
||||||
|
- Bleeding edge: [`monero-git`](https://aur.archlinux.org/packages/monero-git)
|
||||||
|
|
||||||
|
* Void Linux:
|
||||||
|
|
||||||
|
xbps-install -S monero
|
||||||
|
|
||||||
|
* GuixSD
|
||||||
|
|
||||||
|
guix package -i monero
|
||||||
|
|
||||||
|
* Docker
|
||||||
|
|
||||||
|
# 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!
|
||||||
|
|
||||||
|
You can also cross-compile binaries on linux for windows and macos with the depends system. Go to contrib/depends and type:
|
||||||
|
|
||||||
|
* ```make HOST=x86_64-linux-gnu``` for 64-bit linux binaries.
|
||||||
|
* ```make HOST=x86_64-w64-mingw32``` for 64-bit windows binaries. Requires: python3 nsis g++-mingw-w64-x86-64 wine1.6 bc
|
||||||
|
* ```make HOST=x86_64-apple-darwin11``` for darwin binaries. Requires: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev
|
||||||
|
* ```make HOST=i686-linux-gnu``` for 32-bit linux binaries. Requires: g++-multilib bc
|
||||||
|
* ```make HOST=i686-w64-mingw32``` for 32-bit windows binaries. Requires: python3 nsis g++-mingw-w64-i686
|
||||||
|
* ```make HOST=arm-linux-gnueabihf``` for armv6 binaries. Requires: g++-arm-linux-gnueabihf
|
||||||
|
|
||||||
|
The required packages are the names for each toolchain on apt. Depending on your distro, they may have different names.
|
||||||
|
Then go back to the source dir and type for example for windows 64bit:
|
||||||
|
|
||||||
|
* ```cmake -DCMAKE_TOOLCHAIN_FILE=`pwd`/contrib/depends/x86_64-w64-mingw32```
|
||||||
|
|
||||||
|
Using depends might also be easier to compile monero on windows than using msys. Activate windows subsystem for linux (for example ubuntu) install the apt build-essentials and follow the depends steps as depicted above.
|
||||||
|
|
||||||
## Running monerod
|
## Running monerod
|
||||||
|
|
||||||
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
|
||||||
@@ -529,6 +604,8 @@ setting the following configuration parameters and environment variables:
|
|||||||
as well.
|
as well.
|
||||||
* Do NOT pass `--detach` when running through torsocks with systemd, (see
|
* Do NOT pass `--detach` when running through torsocks with systemd, (see
|
||||||
[utils/systemd/monerod.service](utils/systemd/monerod.service) for details).
|
[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:
|
Example command line to start monerod through Tor:
|
||||||
|
|
||||||
@@ -590,9 +667,19 @@ Type `run` to run monerod
|
|||||||
|
|
||||||
### Analysing memory corruption
|
### Analysing memory corruption
|
||||||
|
|
||||||
We use the tool `valgrind` for this.
|
There are two tools available:
|
||||||
|
|
||||||
Run with `valgrind /path/to/monerod`. It will be slow.
|
* ASAN
|
||||||
|
|
||||||
|
Configure Monero with the -D SANITIZE=ON cmake flag, eg:
|
||||||
|
|
||||||
|
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
|
### LMDB
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,9 @@
|
|||||||
# 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.
|
||||||
|
|
||||||
|
if (NOT CMAKE_HOST_WIN32)
|
||||||
set (CMAKE_SYSTEM_NAME Windows)
|
set (CMAKE_SYSTEM_NAME Windows)
|
||||||
|
endif()
|
||||||
|
|
||||||
set (GCC_PREFIX i686-w64-mingw32)
|
set (GCC_PREFIX i686-w64-mingw32)
|
||||||
set (CMAKE_C_COMPILER ${GCC_PREFIX}-gcc)
|
set (CMAKE_C_COMPILER ${GCC_PREFIX}-gcc)
|
||||||
|
|||||||
@@ -26,7 +26,9 @@
|
|||||||
# 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.
|
||||||
|
|
||||||
|
if (NOT CMAKE_HOST_WIN32)
|
||||||
set (CMAKE_SYSTEM_NAME Windows)
|
set (CMAKE_SYSTEM_NAME Windows)
|
||||||
|
endif()
|
||||||
|
|
||||||
set (GCC_PREFIX x86_64-w64-mingw32)
|
set (GCC_PREFIX x86_64-w64-mingw32)
|
||||||
set (CMAKE_C_COMPILER ${GCC_PREFIX}-gcc)
|
set (CMAKE_C_COMPILER ${GCC_PREFIX}-gcc)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ macro(CHECK_LINKER_FLAG flag VARIABLE)
|
|||||||
endif()
|
endif()
|
||||||
set(${VARIABLE} "" CACHE INTERNAL "Have linker flag ${flag}")
|
set(${VARIABLE} "" CACHE INTERNAL "Have linker flag ${flag}")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||||
"Determining if the ${flag} linker flag is suppored "
|
"Determining if the ${flag} linker flag is supported "
|
||||||
"failed with the following output:\n"
|
"failed with the following output:\n"
|
||||||
"${OUTPUT}\n\n")
|
"${OUTPUT}\n\n")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
# that follow. The default is UTF-8 which is also the encoding used for all
|
# that follow. The default is UTF-8 which is also the encoding used for all
|
||||||
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
||||||
# iconv built into libc) for the transcoding. See
|
# iconv built into libc) for the transcoding. See
|
||||||
# http://www.gnu.org/software/libiconv for the list of possible encodings.
|
# https://www.gnu.org/software/libiconv for the list of possible encodings.
|
||||||
|
|
||||||
DOXYFILE_ENCODING = UTF-8
|
DOXYFILE_ENCODING = UTF-8
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ EXTENSION_MAPPING =
|
|||||||
|
|
||||||
# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
|
# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
|
||||||
# comments according to the Markdown format, which allows for more readable
|
# comments according to the Markdown format, which allows for more readable
|
||||||
# documentation. See http://daringfireball.net/projects/markdown/ for details.
|
# documentation. See https://daringfireball.net/projects/markdown/ for details.
|
||||||
# The output of markdown processing is further processed by doxygen, so you
|
# The output of markdown processing is further processed by doxygen, so you
|
||||||
# can mix doxygen, HTML, and XML commands with Markdown formatting.
|
# can mix doxygen, HTML, and XML commands with Markdown formatting.
|
||||||
# Disable only in case of backward compatibilities issues.
|
# Disable only in case of backward compatibilities issues.
|
||||||
@@ -589,7 +589,7 @@ LAYOUT_FILE =
|
|||||||
# containing the references data. This must be a list of .bib files. The
|
# containing the references data. This must be a list of .bib files. The
|
||||||
# .bib extension is automatically appended if omitted. Using this command
|
# .bib extension is automatically appended if omitted. Using this command
|
||||||
# requires the bibtex tool to be installed. See also
|
# requires the bibtex tool to be installed. See also
|
||||||
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
|
# https://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
|
||||||
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
|
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
|
||||||
# feature you need bibtex and perl available in the search path.
|
# feature you need bibtex and perl available in the search path.
|
||||||
|
|
||||||
@@ -665,7 +665,7 @@ INPUT = ../README.md \
|
|||||||
# 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, which is
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||||
# also the default input encoding. Doxygen uses libiconv (or the iconv built
|
# also the default input encoding. Doxygen uses libiconv (or the iconv built
|
||||||
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
|
# into libc) for the transcoding. See https://www.gnu.org/software/libiconv for
|
||||||
# the list of possible encodings.
|
# the list of possible encodings.
|
||||||
|
|
||||||
INPUT_ENCODING = UTF-8
|
INPUT_ENCODING = UTF-8
|
||||||
@@ -833,7 +833,7 @@ REFERENCES_LINK_SOURCE = YES
|
|||||||
# If the USE_HTAGS tag is set to YES then the references to source code
|
# If the USE_HTAGS tag is set to YES then the references to source code
|
||||||
# will point to the HTML generated by the htags(1) tool instead of doxygen
|
# will point to the HTML generated by the htags(1) tool instead of doxygen
|
||||||
# built-in source browser. The htags tool is part of GNU's global source
|
# built-in source browser. The htags tool is part of GNU's global source
|
||||||
# tagging system (see http://www.gnu.org/software/global/global.html). You
|
# tagging system (see https://www.gnu.org/software/global/global.html). You
|
||||||
# will need version 4.8.6 or higher.
|
# will need version 4.8.6 or higher.
|
||||||
|
|
||||||
USE_HTAGS = NO
|
USE_HTAGS = NO
|
||||||
@@ -928,7 +928,7 @@ HTML_EXTRA_FILES =
|
|||||||
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
||||||
# Doxygen will adjust the colors in the style sheet and background images
|
# Doxygen will adjust the colors in the style sheet and background images
|
||||||
# according to this color. Hue is specified as an angle on a colorwheel,
|
# according to this color. Hue is specified as an angle on a colorwheel,
|
||||||
# see http://en.wikipedia.org/wiki/Hue for more information.
|
# see https://en.wikipedia.org/wiki/Hue for more information.
|
||||||
# For instance the value 0 represents red, 60 is yellow, 120 is green,
|
# For instance the value 0 represents red, 60 is yellow, 120 is green,
|
||||||
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
|
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
|
||||||
# The allowed range is 0 to 359.
|
# The allowed range is 0 to 359.
|
||||||
@@ -981,7 +981,7 @@ HTML_INDEX_NUM_ENTRIES = 100
|
|||||||
# directory and running "make install" will install the docset in
|
# directory and running "make install" will install the docset in
|
||||||
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
|
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
|
||||||
# it at startup.
|
# it at startup.
|
||||||
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
# See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
||||||
# for more information.
|
# for more information.
|
||||||
|
|
||||||
GENERATE_DOCSET = NO
|
GENERATE_DOCSET = NO
|
||||||
@@ -1179,7 +1179,7 @@ FORMULA_FONTSIZE = 10
|
|||||||
FORMULA_TRANSPARENT = YES
|
FORMULA_TRANSPARENT = YES
|
||||||
|
|
||||||
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
|
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
|
||||||
# (see http://www.mathjax.org) which uses client side Javascript for the
|
# (see https://www.mathjax.org) which uses client side Javascript for the
|
||||||
# rendering instead of using prerendered bitmaps. Use this if you do not
|
# rendering instead of using prerendered bitmaps. Use this if you do not
|
||||||
# have LaTeX installed or if you want to formulas look prettier in the HTML
|
# have LaTeX installed or if you want to formulas look prettier in the HTML
|
||||||
# output. When enabled you may also need to install MathJax separately and
|
# output. When enabled you may also need to install MathJax separately and
|
||||||
@@ -1194,9 +1194,9 @@ USE_MATHJAX = NO
|
|||||||
# MATHJAX_RELPATH should be ../mathjax. The default value points to
|
# MATHJAX_RELPATH should be ../mathjax. The default value points to
|
||||||
# the MathJax Content Delivery Network so you can quickly see the result without
|
# the MathJax Content Delivery Network so you can quickly see the result without
|
||||||
# installing MathJax. However, it is strongly recommended to install a local
|
# installing MathJax. However, it is strongly recommended to install a local
|
||||||
# copy of MathJax from http://www.mathjax.org before deployment.
|
# copy of MathJax from https://www.mathjax.org before deployment.
|
||||||
|
|
||||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
MATHJAX_RELPATH = https://cdn.mathjax.org/mathjax/latest
|
||||||
|
|
||||||
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
|
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
|
||||||
# names that should be enabled during MathJax rendering.
|
# names that should be enabled during MathJax rendering.
|
||||||
@@ -1318,7 +1318,7 @@ LATEX_SOURCE_CODE = NO
|
|||||||
|
|
||||||
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
||||||
# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
|
# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
|
||||||
# http://en.wikipedia.org/wiki/BibTeX for more info.
|
# https://en.wikipedia.org/wiki/BibTeX for more info.
|
||||||
|
|
||||||
LATEX_BIB_STYLE = plain
|
LATEX_BIB_STYLE = plain
|
||||||
|
|
||||||
|
|||||||
60
cmake/FindHIDAPI.cmake
Normal file
60
cmake/FindHIDAPI.cmake
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# - try to find HIDAPI library
|
||||||
|
# from http://www.signal11.us/oss/hidapi/
|
||||||
|
#
|
||||||
|
# Cache Variables: (probably not for direct use in your scripts)
|
||||||
|
# HIDAPI_INCLUDE_DIR
|
||||||
|
# HIDAPI_LIBRARY
|
||||||
|
#
|
||||||
|
# Non-cache variables you might use in your CMakeLists.txt:
|
||||||
|
# HIDAPI_FOUND
|
||||||
|
# HIDAPI_INCLUDE_DIRS
|
||||||
|
# HIDAPI_LIBRARIES
|
||||||
|
#
|
||||||
|
# Requires these CMake modules:
|
||||||
|
# FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
|
||||||
|
#
|
||||||
|
# Original Author:
|
||||||
|
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
||||||
|
# http://academic.cleardefinition.com
|
||||||
|
# Iowa State University HCI Graduate Program/VRAC
|
||||||
|
#
|
||||||
|
# Copyright Iowa State University 2009-2010.
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
find_library(HIDAPI_LIBRARY
|
||||||
|
NAMES hidapi hidapi-libusb)
|
||||||
|
|
||||||
|
find_path(HIDAPI_INCLUDE_DIR
|
||||||
|
NAMES hidapi.h
|
||||||
|
PATH_SUFFIXES
|
||||||
|
hidapi)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(HIDAPI
|
||||||
|
DEFAULT_MSG
|
||||||
|
HIDAPI_LIBRARY
|
||||||
|
HIDAPI_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(HIDAPI_FOUND)
|
||||||
|
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARY}")
|
||||||
|
if((STATIC AND UNIX AND NOT APPLE) OR (DEPENDS AND CMAKE_SYSTEM_NAME STREQUAL "Linux"))
|
||||||
|
find_library(LIBUSB-1.0_LIBRARY usb-1.0)
|
||||||
|
find_library(LIBUDEV_LIBRARY udev)
|
||||||
|
if(LIBUSB-1.0_LIBRARY)
|
||||||
|
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUSB-1.0_LIBRARY}")
|
||||||
|
if(LIBUDEV_LIBRARY)
|
||||||
|
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUDEV_LIBRARY}")
|
||||||
|
else()
|
||||||
|
message(WARNING "libudev library not found, binaries may fail to link.")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(WARNING "libusb-1.0 library not found, binaries may fail to link.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(HIDAPI_INCLUDE_DIRS "${HIDAPI_INCLUDE_DIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(HIDAPI_INCLUDE_DIR HIDAPI_LIBRARY)
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
# - Find PCSC
|
|
||||||
# Find the native PCSC includes and library
|
|
||||||
#
|
|
||||||
# PCSC_INCLUDE_DIR - where to find winscard.h, wintypes.h, etc.
|
|
||||||
# PCSC_LIBRARIES - List of libraries when using PCSC.
|
|
||||||
# PCSC_FOUND - True if PCSC found.
|
|
||||||
|
|
||||||
|
|
||||||
IF (PCSC_INCLUDE_DIR AND PCSC_LIBRARIES)
|
|
||||||
# Already in cache, be silent
|
|
||||||
SET(PCSC_FIND_QUIETLY TRUE)
|
|
||||||
ENDIF (PCSC_INCLUDE_DIR AND PCSC_LIBRARIES)
|
|
||||||
|
|
||||||
IF (NOT WIN32)
|
|
||||||
FIND_PACKAGE(PkgConfig)
|
|
||||||
PKG_CHECK_MODULES(PC_PCSC libpcsclite)
|
|
||||||
ENDIF (NOT WIN32)
|
|
||||||
|
|
||||||
FIND_PATH(PCSC_INCLUDE_DIR winscard.h
|
|
||||||
HINTS
|
|
||||||
/usr/include/PCSC
|
|
||||||
${PC_PCSC_INCLUDEDIR}
|
|
||||||
${PC_PCSC_INCLUDE_DIRS}
|
|
||||||
PATH_SUFFIXES PCSC
|
|
||||||
)
|
|
||||||
|
|
||||||
FIND_LIBRARY(PCSC_LIBRARY NAMES pcsclite libpcsclite WinSCard PCSC
|
|
||||||
HINTS
|
|
||||||
${PC_PCSC_LIBDIR}
|
|
||||||
${PC_PCSC_LIBRARY_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set PCSC_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCSC DEFAULT_MSG PCSC_LIBRARY PCSC_INCLUDE_DIR)
|
|
||||||
|
|
||||||
IF(PCSC_FOUND)
|
|
||||||
SET( PCSC_LIBRARIES ${PCSC_LIBRARY} )
|
|
||||||
ELSE(PCSC_FOUND)
|
|
||||||
SET( PCSC_LIBRARIES )
|
|
||||||
ENDIF(PCSC_FOUND)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED( PCSC_LIBRARY PCSC_INCLUDE_DIR )
|
|
||||||
@@ -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 /opt/local/ /usr/local/ /usr/
|
PATHS /usr/local/opt/readline/ /opt/local/ /usr/local/ /usr/
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
function (write_static_version_header hash)
|
function (write_static_version_header hash)
|
||||||
set(VERSIONTAG "${hash}")
|
set(VERSIONTAG "${hash}")
|
||||||
configure_file("src/version.cpp.in" "version.cpp")
|
configure_file("${CMAKE_SOURCE_DIR}/src/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
find_package(Git QUIET)
|
find_package(Git QUIET)
|
||||||
@@ -37,14 +37,16 @@ if ("$Format:$" STREQUAL "")
|
|||||||
write_static_version_header("release")
|
write_static_version_header("release")
|
||||||
elseif (GIT_FOUND OR Git_FOUND)
|
elseif (GIT_FOUND OR Git_FOUND)
|
||||||
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
||||||
add_custom_target(genversion ALL
|
add_custom_command(
|
||||||
|
OUTPUT "${CMAKE_BINARY_DIR}/version.cpp"
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
"-D" "GIT=${GIT_EXECUTABLE}"
|
"-D" "GIT=${GIT_EXECUTABLE}"
|
||||||
"-D" "TO=${CMAKE_BINARY_DIR}/version.cpp"
|
"-D" "TO=${CMAKE_BINARY_DIR}/version.cpp"
|
||||||
"-P" "cmake/GenVersion.cmake"
|
"-P" "cmake/GenVersion.cmake"
|
||||||
BYPRODUCTS "${CMAKE_BINARY_DIR}/version.cpp"
|
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||||
else()
|
else()
|
||||||
message(STATUS "WARNING: Git was not found!")
|
message(STATUS "WARNING: Git was not found!")
|
||||||
write_static_version_header("unknown")
|
write_static_version_header("unknown")
|
||||||
endif ()
|
endif ()
|
||||||
|
add_custom_target(genversion ALL
|
||||||
|
DEPENDS "${CMAKE_BINARY_DIR}/version.cpp")
|
||||||
|
|||||||
18
contrib/codefresh/codefresh.yml
Normal file
18
contrib/codefresh/codefresh.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
version: '1.0'
|
||||||
|
steps:
|
||||||
|
init_submodules:
|
||||||
|
title: Init Submodules
|
||||||
|
commands:
|
||||||
|
- git submodule update --init --recursive
|
||||||
|
image: codefreshio/git-image:latest
|
||||||
|
working_directory: ${{main_clone}}
|
||||||
|
|
||||||
|
BuildingDockerImage:
|
||||||
|
title: Building Docker Image
|
||||||
|
type: build
|
||||||
|
image_name: monero
|
||||||
|
working_directory: ./
|
||||||
|
tag: '${{CF_BRANCH_TAG_NORMALIZED}}'
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
build_arguments:
|
||||||
|
- NPROC=1
|
||||||
10
contrib/depends/.gitignore
vendored
Normal file
10
contrib/depends/.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
SDKs/
|
||||||
|
work/
|
||||||
|
built/
|
||||||
|
sources/
|
||||||
|
config.site
|
||||||
|
x86_64*
|
||||||
|
i686*
|
||||||
|
mips*
|
||||||
|
arm*
|
||||||
|
aarch64*
|
||||||
227
contrib/depends/Makefile
Normal file
227
contrib/depends/Makefile
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
.NOTPARALLEL :
|
||||||
|
|
||||||
|
SOURCES_PATH ?= $(BASEDIR)/sources
|
||||||
|
BASE_CACHE ?= $(BASEDIR)/built
|
||||||
|
SDK_PATH ?= $(BASEDIR)/SDKs
|
||||||
|
NO_QT ?=
|
||||||
|
NO_WALLET ?=
|
||||||
|
NO_UPNP ?=
|
||||||
|
FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources
|
||||||
|
|
||||||
|
BUILD = $(shell ./config.guess)
|
||||||
|
HOST ?= $(BUILD)
|
||||||
|
PATCHES_PATH = $(BASEDIR)/patches
|
||||||
|
BASEDIR = $(CURDIR)
|
||||||
|
HASH_LENGTH:=11
|
||||||
|
DOWNLOAD_CONNECT_TIMEOUT:=10
|
||||||
|
DOWNLOAD_RETRIES:=3
|
||||||
|
HOST_ID_SALT ?= salt
|
||||||
|
BUILD_ID_SALT ?= salt
|
||||||
|
|
||||||
|
host:=$(BUILD)
|
||||||
|
ifneq ($(HOST),)
|
||||||
|
host:=$(HOST)
|
||||||
|
host_toolchain:=$(HOST)-
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(DEBUG),)
|
||||||
|
release_type=debug
|
||||||
|
else
|
||||||
|
release_type=release
|
||||||
|
endif
|
||||||
|
|
||||||
|
base_build_dir=$(BASEDIR)/work/build
|
||||||
|
base_staging_dir=$(BASEDIR)/work/staging
|
||||||
|
base_download_dir=$(BASEDIR)/work/download
|
||||||
|
canonical_host:=$(shell ./config.sub $(HOST))
|
||||||
|
build:=$(shell ./config.sub $(BUILD))
|
||||||
|
|
||||||
|
build_arch =$(firstword $(subst -, ,$(build)))
|
||||||
|
build_vendor=$(word 2,$(subst -, ,$(build)))
|
||||||
|
full_build_os:=$(subst $(build_arch)-$(build_vendor)-,,$(build))
|
||||||
|
build_os:=$(findstring linux,$(full_build_os))
|
||||||
|
build_os+=$(findstring darwin,$(full_build_os))
|
||||||
|
build_os:=$(strip $(build_os))
|
||||||
|
ifeq ($(build_os),)
|
||||||
|
build_os=$(full_build_os)
|
||||||
|
endif
|
||||||
|
|
||||||
|
host_arch=$(firstword $(subst -, ,$(canonical_host)))
|
||||||
|
host_vendor=$(word 2,$(subst -, ,$(canonical_host)))
|
||||||
|
full_host_os:=$(subst $(host_arch)-$(host_vendor)-,,$(canonical_host))
|
||||||
|
host_os:=$(findstring linux,$(full_host_os))
|
||||||
|
host_os+=$(findstring darwin,$(full_host_os))
|
||||||
|
host_os+=$(findstring mingw32,$(full_host_os))
|
||||||
|
host_os:=$(strip $(host_os))
|
||||||
|
ifeq ($(host_os),)
|
||||||
|
host_os=$(full_host_os)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(host_arch)_$(host_os)_prefix=$(BASEDIR)/$(host)
|
||||||
|
$(host_arch)_$(host_os)_host=$(host)
|
||||||
|
host_prefix=$($(host_arch)_$(host_os)_prefix)
|
||||||
|
build_prefix=$(host_prefix)/native
|
||||||
|
ifeq ($(host_os),mingw32)
|
||||||
|
host_cmake=Windows
|
||||||
|
endif
|
||||||
|
ifeq ($(host_os),linux)
|
||||||
|
host_cmake=Linux
|
||||||
|
endif
|
||||||
|
ifeq ($(host_os),darwin)
|
||||||
|
host_cmake=Darwin
|
||||||
|
endif
|
||||||
|
|
||||||
|
AT_$(V):=
|
||||||
|
AT_:=@
|
||||||
|
AT:=$(AT_$(V))
|
||||||
|
|
||||||
|
all: install
|
||||||
|
|
||||||
|
include hosts/$(host_os).mk
|
||||||
|
include hosts/default.mk
|
||||||
|
include builders/$(build_os).mk
|
||||||
|
include builders/default.mk
|
||||||
|
include packages/packages.mk
|
||||||
|
|
||||||
|
build_id_string:=$(BUILD_ID_SALT)
|
||||||
|
build_id_string+=$(shell $(build_CC) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_AR) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_CXX) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_RANLIB) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_STRIP) --version 2>/dev/null)
|
||||||
|
|
||||||
|
$(host_arch)_$(host_os)_id_string:=$(HOST_ID_SALT)
|
||||||
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_CC) --version 2>/dev/null)
|
||||||
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_AR) --version 2>/dev/null)
|
||||||
|
$(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_STRIP) --version 2>/dev/null)
|
||||||
|
|
||||||
|
qt_packages_$(NO_QT) = $(qt_packages) $(qt_$(host_os)_packages) $(qt_$(host_arch)_$(host_os)_packages)
|
||||||
|
wallet_packages_$(NO_WALLET) = $(wallet_packages)
|
||||||
|
upnp_packages_$(NO_UPNP) = $(upnp_packages)
|
||||||
|
|
||||||
|
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(qt_packages_) $(wallet_packages_) $(upnp_packages_)
|
||||||
|
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages)
|
||||||
|
|
||||||
|
ifneq ($(qt_packages_),)
|
||||||
|
native_packages += $(qt_native_packages)
|
||||||
|
endif
|
||||||
|
|
||||||
|
all_packages = $(packages) $(native_packages)
|
||||||
|
|
||||||
|
meta_depends = Makefile funcs.mk builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk
|
||||||
|
|
||||||
|
$(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain)
|
||||||
|
|
||||||
|
include funcs.mk
|
||||||
|
|
||||||
|
CONF_PKGS := cmake-conf mxe-conf
|
||||||
|
|
||||||
|
build-only-$(1)_$(3): CMAKE_RUNRESULT_FILE = $(PREFIX)/share/cmake/modules/TryRunResults.cmake
|
||||||
|
build-only-$(1)_$(3): CMAKE_TOOLCHAIN_FILE = $(PREFIX)/$(3)/share/cmake/mxe-conf.cmake
|
||||||
|
build-only-$(1)_$(3): CMAKE_TOOLCHAIN_DIR = $(PREFIX)/$(3)/share/cmake/mxe-conf.d
|
||||||
|
build-only-$(1)_$(3): CMAKE_STATIC_BOOL = $(if $(findstring shared,$(3)),OFF,ON)
|
||||||
|
build-only-$(1)_$(3): CMAKE_SHARED_BOOL = $(if $(findstring shared,$(3)),ON,OFF)
|
||||||
|
|
||||||
|
|
||||||
|
toolchain_path=$($($(host_arch)_$(host_os)_native_toolchain)_prefixbin)
|
||||||
|
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
|
||||||
|
final_build_id_long+=$(shell $(build_SHA256SUM) toolchain.cmake.in)
|
||||||
|
final_build_id+=$(shell echo -n "$(final_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
|
||||||
|
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
|
||||||
|
$(AT)rm -rf $(@D)
|
||||||
|
$(AT)mkdir -p $(@D)
|
||||||
|
$(AT)echo copying packages: $^
|
||||||
|
$(AT)echo to: $(@D)
|
||||||
|
$(AT)cd $(@D); $(foreach package,$^, tar xf $($(package)_cached); )
|
||||||
|
$(AT)touch $@
|
||||||
|
|
||||||
|
$(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_build_id)
|
||||||
|
$(AT)@mkdir -p $(@D)
|
||||||
|
$(AT)sed -e 's|@HOST@|$(host)|' \
|
||||||
|
-e 's|@CC@|$(toolchain_path)$(host_CC)|' \
|
||||||
|
-e 's|@CXX@|$(toolchain_path)$(host_CXX)|' \
|
||||||
|
-e 's|@AR@|$(toolchain_path)$(host_AR)|' \
|
||||||
|
-e 's|@RANLIB@|$(toolchain_path)$(host_RANLIB)|' \
|
||||||
|
-e 's|@NM@|$(toolchain_path)$(host_NM)|' \
|
||||||
|
-e 's|@STRIP@|$(toolchain_path)$(host_STRIP)|' \
|
||||||
|
-e 's|@build_os@|$(build_os)|' \
|
||||||
|
-e 's|@host_os@|$(host_os)|' \
|
||||||
|
-e 's|@CFLAGS@|$(strip $(host_CFLAGS) $(host_$(release_type)_CFLAGS))|' \
|
||||||
|
-e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
|
||||||
|
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
|
||||||
|
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
|
||||||
|
-e 's|@allow_host_packages@|$(ALLOW_HOST_PACKAGES)|' \
|
||||||
|
-e 's|@no_qt@|$(NO_QT)|' \
|
||||||
|
-e 's|@no_wallet@|$(NO_WALLET)|' \
|
||||||
|
-e 's|@no_upnp@|$(NO_UPNP)|' \
|
||||||
|
-e 's|@debug@|$(DEBUG)|' \
|
||||||
|
$< > $@
|
||||||
|
$(AT)touch $@
|
||||||
|
|
||||||
|
$(host_prefix)/share/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(final_build_id)
|
||||||
|
$(AT)@mkdir -p $(@D)
|
||||||
|
$(AT)sed -e 's|@HOST@|$(host)|' \
|
||||||
|
-e 's|@CC@|$(toolchain_path)$(host_CC)|' \
|
||||||
|
-e 's|@CXX@|$(toolchain_path)$(host_CXX)|' \
|
||||||
|
-e 's|@AR@|$(toolchain_path)$(host_AR)|' \
|
||||||
|
-e 's|@RANLIB@|$(toolchain_path)$(host_RANLIB)|' \
|
||||||
|
-e 's|@NM@|$(toolchain_path)$(host_NM)|' \
|
||||||
|
-e 's|@STRIP@|$(toolchain_path)$(host_STRIP)|' \
|
||||||
|
-e 's|@build_os@|$(build_os)|' \
|
||||||
|
-e 's|@host_os@|$(host_os)|' \
|
||||||
|
-e 's|@CFLAGS@|$(strip $(host_CFLAGS) $(host_$(release_type)_CFLAGS))|' \
|
||||||
|
-e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
|
||||||
|
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
|
||||||
|
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
|
||||||
|
-e 's|@allow_host_packages@|$(ALLOW_HOST_PACKAGES)|' \
|
||||||
|
-e 's|@no_qt@|$(NO_QT)|' \
|
||||||
|
-e 's|@no_wallet@|$(NO_WALLET)|' \
|
||||||
|
-e 's|@no_upnp@|$(NO_UPNP)|' \
|
||||||
|
-e 's|@debug@|$(DEBUG)|' \
|
||||||
|
-e 's|@depends@|$(host_cmake)|' \
|
||||||
|
-e 's|@prefix@|$($(host_arch)_$(host_os)_prefix)|'\
|
||||||
|
-e 's|@sdk@|$(SDK_PATH)|'\
|
||||||
|
-e 's|@arch@|$(host_arch)|'\
|
||||||
|
$< > $@
|
||||||
|
$(AT)touch $@
|
||||||
|
|
||||||
|
define check_or_remove_cached
|
||||||
|
mkdir -p $(BASE_CACHE)/$(host)/$(package) && cd $(BASE_CACHE)/$(host)/$(package); \
|
||||||
|
$(build_SHA256SUM) -c $($(package)_cached_checksum) >/dev/null 2>/dev/null || \
|
||||||
|
( rm -f $($(package)_cached_checksum); \
|
||||||
|
if test -f "$($(package)_cached)"; then echo "Checksum mismatch for $(package). Forcing rebuild.."; rm -f $($(package)_cached_checksum) $($(package)_cached); fi )
|
||||||
|
endef
|
||||||
|
|
||||||
|
define check_or_remove_sources
|
||||||
|
mkdir -p $($(package)_source_dir); cd $($(package)_source_dir); \
|
||||||
|
test -f $($(package)_fetched) && ( $(build_SHA256SUM) -c $($(package)_fetched) >/dev/null 2>/dev/null || \
|
||||||
|
( echo "Checksum missing or mismatched for $(package) source. Forcing re-download."; \
|
||||||
|
rm -f $($(package)_all_sources) $($(1)_fetched))) || true
|
||||||
|
endef
|
||||||
|
|
||||||
|
check-packages:
|
||||||
|
@$(foreach package,$(all_packages),$(call check_or_remove_cached,$(package));)
|
||||||
|
check-sources:
|
||||||
|
@$(foreach package,$(all_packages),$(call check_or_remove_sources,$(package));)
|
||||||
|
|
||||||
|
$(host_prefix)/share/config.site: check-packages
|
||||||
|
$(host_prefix)/share/toolchain.cmake: check-packages
|
||||||
|
|
||||||
|
check-packages: check-sources
|
||||||
|
|
||||||
|
install: check-packages $(host_prefix)/share/config.site
|
||||||
|
install: check-packages $(host_prefix)/share/toolchain.cmake
|
||||||
|
|
||||||
|
download-one: check-sources $(all_sources)
|
||||||
|
|
||||||
|
download-osx:
|
||||||
|
@$(MAKE) -s HOST=x86_64-apple-darwin11 download-one
|
||||||
|
download-linux:
|
||||||
|
@$(MAKE) -s HOST=x86_64-unknown-linux-gnu download-one
|
||||||
|
download-win:
|
||||||
|
@$(MAKE) -s HOST=x86_64-w64-mingw32 download-one
|
||||||
|
download: download-osx download-linux download-win
|
||||||
|
|
||||||
|
.PHONY: install cached download-one download-osx download-linux download-win download check-packages check-sources
|
||||||
66
contrib/depends/README.md
Normal file
66
contrib/depends/README.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
### Usage
|
||||||
|
|
||||||
|
To build dependencies for the current arch+OS:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
To build for another arch/OS:
|
||||||
|
|
||||||
|
make HOST=host-platform-triplet
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
make HOST=x86_64-w64-mingw32 -j4
|
||||||
|
|
||||||
|
A prefix will be generated that's suitable for plugging into Bitcoin's
|
||||||
|
configure. In the above example, a dir named x86_64-w64-mingw32 will be
|
||||||
|
created. To use it for Bitcoin:
|
||||||
|
|
||||||
|
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
|
||||||
|
|
||||||
|
Common `host-platform-triplets` for cross compilation are:
|
||||||
|
|
||||||
|
- `i686-w64-mingw32` for Win32
|
||||||
|
- `x86_64-w64-mingw32` for Win64
|
||||||
|
- `x86_64-apple-darwin11` for MacOSX
|
||||||
|
- `arm-linux-gnueabihf` for Linux ARM 32 bit
|
||||||
|
- `aarch64-linux-gnu` for Linux ARM 64 bit
|
||||||
|
|
||||||
|
No other options are needed, the paths are automatically configured.
|
||||||
|
|
||||||
|
Dependency Options:
|
||||||
|
The following can be set when running make: make FOO=bar
|
||||||
|
|
||||||
|
SOURCES_PATH: downloaded sources 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
|
||||||
|
NO_QT: Don't download/build/cache qt and its dependencies
|
||||||
|
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
|
||||||
|
NO_UPNP: Don't download/build/cache packages needed for enabling upnp
|
||||||
|
DEBUG: disable some optimizations and enable more runtime checking
|
||||||
|
HOST_ID_SALT: Optional salt to use when generating host package ids
|
||||||
|
BUILD_ID_SALT: Optional salt to use when generating build package ids
|
||||||
|
|
||||||
|
If some packages are not built, for example `make NO_WALLET=1`, the appropriate
|
||||||
|
options will be passed to bitcoin's configure. In this case, `--disable-wallet`.
|
||||||
|
|
||||||
|
Additional targets:
|
||||||
|
|
||||||
|
download: run 'make download' to fetch all sources without building them
|
||||||
|
download-osx: run 'make download-osx' to fetch all sources needed for osx builds
|
||||||
|
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
|
||||||
|
|
||||||
|
#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).
|
||||||
|
|
||||||
|
### Other documentation
|
||||||
|
|
||||||
|
- [description.md](description.md): General description of the depends system
|
||||||
|
- [packages.md](packages.md): Steps for adding packages
|
||||||
|
|
||||||
22
contrib/depends/builders/darwin.mk
Normal file
22
contrib/depends/builders/darwin.mk
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
build_darwin_CC: = $(shell xcrun -f clang)
|
||||||
|
build_darwin_CXX: = $(shell xcrun -f clang++)
|
||||||
|
build_darwin_AR: = $(shell xcrun -f ar)
|
||||||
|
build_darwin_RANLIB: = $(shell xcrun -f ranlib)
|
||||||
|
build_darwin_STRIP: = $(shell xcrun -f strip)
|
||||||
|
build_darwin_OTOOL: = $(shell xcrun -f otool)
|
||||||
|
build_darwin_NM: = $(shell xcrun -f nm)
|
||||||
|
build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
|
||||||
|
build_darwin_SHA256SUM = shasum -a 256
|
||||||
|
build_darwin_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
|
||||||
|
|
||||||
|
#darwin host on darwin builder. overrides darwin host preferences.
|
||||||
|
darwin_CC=$(shell xcrun -f clang) -mmacosx-version-min=$(OSX_MIN_VERSION)
|
||||||
|
darwin_CXX:=$(shell xcrun -f clang++) -mmacosx-version-min=$(OSX_MIN_VERSION) -stdlib=libc++
|
||||||
|
darwin_AR:=$(shell xcrun -f ar)
|
||||||
|
darwin_RANLIB:=$(shell xcrun -f ranlib)
|
||||||
|
darwin_STRIP:=$(shell xcrun -f strip)
|
||||||
|
darwin_LIBTOOL:=$(shell xcrun -f libtool)
|
||||||
|
darwin_OTOOL:=$(shell xcrun -f otool)
|
||||||
|
darwin_NM:=$(shell xcrun -f nm)
|
||||||
|
darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
|
||||||
|
darwin_native_toolchain=
|
||||||
20
contrib/depends/builders/default.mk
Normal file
20
contrib/depends/builders/default.mk
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
default_build_CC = gcc
|
||||||
|
default_build_CXX = g++
|
||||||
|
default_build_AR = ar
|
||||||
|
default_build_RANLIB = ranlib
|
||||||
|
default_build_STRIP = strip
|
||||||
|
default_build_NM = nm
|
||||||
|
default_build_OTOOL = otool
|
||||||
|
default_build_INSTALL_NAME_TOOL = install_name_tool
|
||||||
|
|
||||||
|
define add_build_tool_func
|
||||||
|
build_$(build_os)_$1 ?= $$(default_build_$1)
|
||||||
|
build_$(build_arch)_$(build_os)_$1 ?= $$(build_$(build_os)_$1)
|
||||||
|
build_$1=$$(build_$(build_arch)_$(build_os)_$1)
|
||||||
|
endef
|
||||||
|
$(foreach var,CC CXX AR RANLIB NM STRIP SHA256SUM DOWNLOAD OTOOL INSTALL_NAME_TOOL,$(eval $(call add_build_tool_func,$(var))))
|
||||||
|
define add_build_flags_func
|
||||||
|
build_$(build_arch)_$(build_os)_$1 += $(build_$(build_os)_$1)
|
||||||
|
build_$1=$$(build_$(build_arch)_$(build_os)_$1)
|
||||||
|
endef
|
||||||
|
$(foreach flags, CFLAGS CXXFLAGS LDFLAGS, $(eval $(call add_build_flags_func,$(flags))))
|
||||||
2
contrib/depends/builders/linux.mk
Normal file
2
contrib/depends/builders/linux.mk
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
build_linux_SHA256SUM = sha256sum
|
||||||
|
build_linux_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
|
||||||
1466
contrib/depends/config.guess
vendored
Executable file
1466
contrib/depends/config.guess
vendored
Executable file
File diff suppressed because it is too large
Load Diff
100
contrib/depends/config.site.in
Normal file
100
contrib/depends/config.site.in
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
depends_prefix="`dirname ${ac_site_file}`/.."
|
||||||
|
|
||||||
|
cross_compiling=maybe
|
||||||
|
host_alias=@HOST@
|
||||||
|
ac_tool_prefix=${host_alias}-
|
||||||
|
|
||||||
|
if test -z $with_boost; then
|
||||||
|
with_boost=$depends_prefix
|
||||||
|
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 -z $with_qt_bindir && test -z "@no_qt@"; then
|
||||||
|
with_qt_bindir=$depends_prefix/native/bin
|
||||||
|
fi
|
||||||
|
if test -z $with_protoc_bindir && test -z "@no_qt@"; then
|
||||||
|
with_protoc_bindir=$depends_prefix/native/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test -z $enable_wallet && test -n "@no_wallet@"; then
|
||||||
|
enable_wallet=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z $with_miniupnpc && test -n "@no_upnp@"; then
|
||||||
|
with_miniupnpc=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z $with_gui && test -n "@no_qt@"; then
|
||||||
|
with_gui=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x@host_os@ = xdarwin; then
|
||||||
|
BREW=no
|
||||||
|
PORT=no
|
||||||
|
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
|
||||||
|
PKG_CONFIG="`which pkg-config` --static"
|
||||||
|
|
||||||
|
# These two need to remain exported because pkg-config does not see them
|
||||||
|
# otherwise. That means they must be unexported at the end of configure.ac to
|
||||||
|
# avoid ruining the cache. Sigh.
|
||||||
|
export PKG_CONFIG_PATH=$depends_prefix/share/pkgconfig:$depends_prefix/lib/pkgconfig
|
||||||
|
if test -z "@allow_host_packages@"; then
|
||||||
|
export PKGCONFIG_LIBDIR=
|
||||||
|
fi
|
||||||
|
|
||||||
|
CPPFLAGS="-I$depends_prefix/include/ $CPPFLAGS"
|
||||||
|
LDFLAGS="-L$depends_prefix/lib $LDFLAGS"
|
||||||
|
|
||||||
|
CC="@CC@"
|
||||||
|
CXX="@CXX@"
|
||||||
|
OBJC="${CC}"
|
||||||
|
CCACHE=$depends_prefix/native/bin/ccache
|
||||||
|
PYTHONPATH=$depends_prefix/native/lib/python/dist-packages:$PYTHONPATH
|
||||||
|
|
||||||
|
if test -n "@AR@"; then
|
||||||
|
AR=@AR@
|
||||||
|
ac_cv_path_ac_pt_AR=${AR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "@RANLIB@"; then
|
||||||
|
RANLIB=@RANLIB@
|
||||||
|
ac_cv_path_ac_pt_RANLIB=${RANLIB}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "@NM@"; then
|
||||||
|
NM=@NM@
|
||||||
|
ac_cv_path_ac_pt_NM=${NM}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "@debug@"; then
|
||||||
|
enable_reduce_exports=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "@CFLAGS@"; then
|
||||||
|
CFLAGS="@CFLAGS@ $CFLAGS"
|
||||||
|
fi
|
||||||
|
if test -n "@CXXFLAGS@"; then
|
||||||
|
CXXFLAGS="@CXXFLAGS@ $CXXFLAGS"
|
||||||
|
fi
|
||||||
|
if test -n "@CPPFLAGS@"; then
|
||||||
|
CPPFLAGS="@CPPFLAGS@ $CPPFLAGS"
|
||||||
|
fi
|
||||||
|
if test -n "@LDFLAGS@"; then
|
||||||
|
LDFLAGS="@LDFLAGS@ $LDFLAGS"
|
||||||
|
fi
|
||||||
1836
contrib/depends/config.sub
vendored
Executable file
1836
contrib/depends/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load Diff
53
contrib/depends/description.md
Normal file
53
contrib/depends/description.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
This is a system of building and caching dependencies necessary for building Bitcoin.
|
||||||
|
There are several features that make it different from most similar systems:
|
||||||
|
|
||||||
|
### It is designed to be builder and host agnostic
|
||||||
|
|
||||||
|
In theory, binaries for any target OS/architecture can be created, from a
|
||||||
|
builder running any OS/architecture. In practice, build-side tools must be
|
||||||
|
specified when the defaults don't fit, and packages must be amended to work
|
||||||
|
on new hosts. For now, a build architecture of x86_64 is assumed, either on
|
||||||
|
Linux or OSX.
|
||||||
|
|
||||||
|
### No reliance on timestamps
|
||||||
|
|
||||||
|
File presence is used to determine what needs to be built. This makes the
|
||||||
|
results distributable and easily digestable by automated builders.
|
||||||
|
|
||||||
|
### Each build only has its specified dependencies available at build-time.
|
||||||
|
|
||||||
|
For each build, the sysroot is wiped and the (recursive) dependencies are
|
||||||
|
installed. This makes each build deterministic, since there will never be any
|
||||||
|
unknown files available to cause side-effects.
|
||||||
|
|
||||||
|
### Each package is cached and only rebuilt as needed.
|
||||||
|
|
||||||
|
Before building, a unique build-id is generated for each package. This id
|
||||||
|
consists of a hash of all files used to build the package (Makefiles, packages,
|
||||||
|
etc), and as well as a hash of the same data for each recursive dependency. If
|
||||||
|
any portion of a package's build recipe changes, it will be rebuilt as well as
|
||||||
|
any other package that depends on it. If any of the main makefiles (Makefile,
|
||||||
|
funcs.mk, etc) are changed, all packages will be rebuilt. After building, the
|
||||||
|
results are cached into a tarball that can be re-used and distributed.
|
||||||
|
|
||||||
|
### Package build results are (relatively) deterministic.
|
||||||
|
|
||||||
|
Each package is configured and patched so that it will yield the same
|
||||||
|
build-results with each consequent build, within a reasonable set of
|
||||||
|
constraints. Some things like timestamp insertion are unavoidable, and are
|
||||||
|
beyond the scope of this system. Additionally, the toolchain itself must be
|
||||||
|
capable of deterministic results. When revisions are properly bumped, a cached
|
||||||
|
build should represent an exact single payload.
|
||||||
|
|
||||||
|
### Sources are fetched and verified automatically
|
||||||
|
|
||||||
|
Each package must define its source location and checksum. The build will fail
|
||||||
|
if the fetched source does not match. Sources may be pre-seeded and/or cached
|
||||||
|
as desired.
|
||||||
|
|
||||||
|
### Self-cleaning
|
||||||
|
|
||||||
|
Build and staging dirs are wiped after use, and any previous version of a
|
||||||
|
cached result is removed following a successful build. Automated builders
|
||||||
|
should be able to build each revision and store the results with no further
|
||||||
|
intervention.
|
||||||
245
contrib/depends/funcs.mk
Normal file
245
contrib/depends/funcs.mk
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
define int_vars
|
||||||
|
#Set defaults for vars which may be overridden per-package
|
||||||
|
$(1)_cc=$($($(1)_type)_CC)
|
||||||
|
$(1)_cxx=$($($(1)_type)_CXX)
|
||||||
|
$(1)_objc=$($($(1)_type)_OBJC)
|
||||||
|
$(1)_objcxx=$($($(1)_type)_OBJCXX)
|
||||||
|
$(1)_ar=$($($(1)_type)_AR)
|
||||||
|
$(1)_ranlib=$($($(1)_type)_RANLIB)
|
||||||
|
$(1)_libtool=$($($(1)_type)_LIBTOOL)
|
||||||
|
$(1)_nm=$($($(1)_type)_NM)
|
||||||
|
$(1)_cflags=$($($(1)_type)_CFLAGS) $($($(1)_type)_$(release_type)_CFLAGS)
|
||||||
|
$(1)_cxxflags=$($($(1)_type)_CXXFLAGS) $($($(1)_type)_$(release_type)_CXXFLAGS)
|
||||||
|
$(1)_ldflags=$($($(1)_type)_LDFLAGS) $($($(1)_type)_$(release_type)_LDFLAGS) -L$($($(1)_type)_prefix)/lib
|
||||||
|
$(1)_cppflags=$($($(1)_type)_CPPFLAGS) $($($(1)_type)_$(release_type)_CPPFLAGS) -I$($($(1)_type)_prefix)/include
|
||||||
|
$(1)_recipe_hash:=
|
||||||
|
endef
|
||||||
|
|
||||||
|
define int_get_all_dependencies
|
||||||
|
$(sort $(foreach dep,$(2),$(2) $(call int_get_all_dependencies,$(1),$($(dep)_dependencies))))
|
||||||
|
endef
|
||||||
|
|
||||||
|
define fetch_file_inner
|
||||||
|
( mkdir -p $$($(1)_download_dir) && echo Fetching $(3) from $(2) && \
|
||||||
|
$(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(2)/$(3)" && \
|
||||||
|
echo "$(5) $$($(1)_download_dir)/$(4).temp" > $$($(1)_download_dir)/.$(4).hash && \
|
||||||
|
$(build_SHA256SUM) -c $$($(1)_download_dir)/.$(4).hash && \
|
||||||
|
mv $$($(1)_download_dir)/$(4).temp $$($(1)_source_dir)/$(4) && \
|
||||||
|
rm -rf $$($(1)_download_dir) )
|
||||||
|
endef
|
||||||
|
|
||||||
|
define fetch_file
|
||||||
|
( test -f $$($(1)_source_dir)/$(4) || \
|
||||||
|
( $(call fetch_file_inner,$(1),$(2),$(3),$(4),$(5)) || \
|
||||||
|
$(call fetch_file_inner,$(1),$(FALLBACK_DOWNLOAD_PATH),$(3),$(4),$(5))))
|
||||||
|
endef
|
||||||
|
|
||||||
|
define int_get_build_recipe_hash
|
||||||
|
$(eval $(1)_all_file_checksums:=$(shell $(build_SHA256SUM) $(meta_depends) packages/$(1).mk $(addprefix $(PATCHES_PATH)/$(1)/,$($(1)_patches)) | cut -d" " -f1))
|
||||||
|
$(eval $(1)_recipe_hash:=$(shell echo -n "$($(1)_all_file_checksums)" | $(build_SHA256SUM) | cut -d" " -f1))
|
||||||
|
endef
|
||||||
|
|
||||||
|
define int_get_build_id
|
||||||
|
$(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies))
|
||||||
|
$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($(1)_dependencies)))
|
||||||
|
$(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash)))
|
||||||
|
$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_type) $($(1)_build_id_deps) $($($(1)_type)_id_string))
|
||||||
|
$(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH)))
|
||||||
|
final_build_id_long+=$($(package)_build_id_long)
|
||||||
|
|
||||||
|
#compute package-specific paths
|
||||||
|
$(1)_build_subdir?=.
|
||||||
|
$(1)_download_file?=$($(1)_file_name)
|
||||||
|
$(1)_source_dir:=$(SOURCES_PATH)
|
||||||
|
$(1)_source:=$$($(1)_source_dir)/$($(1)_file_name)
|
||||||
|
$(1)_staging_dir=$(base_staging_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)
|
||||||
|
$(1)_staging_prefix_dir:=$$($(1)_staging_dir)$($($(1)_type)_prefix)
|
||||||
|
$(1)_extract_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)
|
||||||
|
$(1)_download_dir:=$(base_download_dir)/$(1)-$($(1)_version)
|
||||||
|
$(1)_build_dir:=$$($(1)_extract_dir)/$$($(1)_build_subdir)
|
||||||
|
$(1)_cached_checksum:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz.hash
|
||||||
|
$(1)_patch_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)/.patches-$($(1)_build_id)
|
||||||
|
$(1)_prefixbin:=$($($(1)_type)_prefix)/bin/
|
||||||
|
$(1)_cached:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz
|
||||||
|
$(1)_all_sources=$($(1)_file_name) $($(1)_extra_sources)
|
||||||
|
|
||||||
|
#stamps
|
||||||
|
$(1)_fetched=$(SOURCES_PATH)/download-stamps/.stamp_fetched-$(1)-$($(1)_file_name).hash
|
||||||
|
$(1)_extracted=$$($(1)_extract_dir)/.stamp_extracted
|
||||||
|
$(1)_preprocessed=$$($(1)_extract_dir)/.stamp_preprocessed
|
||||||
|
$(1)_cleaned=$$($(1)_extract_dir)/.stamp_cleaned
|
||||||
|
$(1)_built=$$($(1)_build_dir)/.stamp_built
|
||||||
|
$(1)_configured=$$($(1)_build_dir)/.stamp_configured
|
||||||
|
$(1)_staged=$$($(1)_staging_dir)/.stamp_staged
|
||||||
|
$(1)_postprocessed=$$($(1)_staging_prefix_dir)/.stamp_postprocessed
|
||||||
|
$(1)_download_path_fixed=$(subst :,\:,$$($(1)_download_path))
|
||||||
|
|
||||||
|
|
||||||
|
#default commands
|
||||||
|
$(1)_fetch_cmds ?= $(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)),$$($(1)_download_file),$($(1)_file_name),$($(1)_sha256_hash))
|
||||||
|
$(1)_extract_cmds ?= mkdir -p $$($(1)_extract_dir) && echo "$$($(1)_sha256_hash) $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash && $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash && tar --strip-components=1 -xf $$($(1)_source)
|
||||||
|
$(1)_preprocess_cmds ?=
|
||||||
|
$(1)_build_cmds ?=
|
||||||
|
$(1)_config_cmds ?=
|
||||||
|
$(1)_stage_cmds ?=
|
||||||
|
$(1)_set_vars ?=
|
||||||
|
|
||||||
|
|
||||||
|
all_sources+=$$($(1)_fetched)
|
||||||
|
endef
|
||||||
|
#$(foreach dep_target,$($(1)_all_dependencies),$(eval $(1)_dependency_targets=$($(dep_target)_cached)))
|
||||||
|
|
||||||
|
|
||||||
|
define int_config_attach_build_config
|
||||||
|
$(eval $(call $(1)_set_vars,$(1)))
|
||||||
|
$(1)_cflags+=$($(1)_cflags_$(release_type))
|
||||||
|
$(1)_cflags+=$($(1)_cflags_$(host_arch)) $($(1)_cflags_$(host_arch)_$(release_type))
|
||||||
|
$(1)_cflags+=$($(1)_cflags_$(host_os)) $($(1)_cflags_$(host_os)_$(release_type))
|
||||||
|
$(1)_cflags+=$($(1)_cflags_$(host_arch)_$(host_os)) $($(1)_cflags_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
|
$(1)_cxxflags+=$($(1)_cxxflags_$(release_type))
|
||||||
|
$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)) $($(1)_cxxflags_$(host_arch)_$(release_type))
|
||||||
|
$(1)_cxxflags+=$($(1)_cxxflags_$(host_os)) $($(1)_cxxflags_$(host_os)_$(release_type))
|
||||||
|
$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)_$(host_os)) $($(1)_cxxflags_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
|
$(1)_cppflags+=$($(1)_cppflags_$(release_type))
|
||||||
|
$(1)_cppflags+=$($(1)_cppflags_$(host_arch)) $($(1)_cppflags_$(host_arch)_$(release_type))
|
||||||
|
$(1)_cppflags+=$($(1)_cppflags_$(host_os)) $($(1)_cppflags_$(host_os)_$(release_type))
|
||||||
|
$(1)_cppflags+=$($(1)_cppflags_$(host_arch)_$(host_os)) $($(1)_cppflags_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
|
$(1)_ldflags+=$($(1)_ldflags_$(release_type))
|
||||||
|
$(1)_ldflags+=$($(1)_ldflags_$(host_arch)) $($(1)_ldflags_$(host_arch)_$(release_type))
|
||||||
|
$(1)_ldflags+=$($(1)_ldflags_$(host_os)) $($(1)_ldflags_$(host_os)_$(release_type))
|
||||||
|
$(1)_ldflags+=$($(1)_ldflags_$(host_arch)_$(host_os)) $($(1)_ldflags_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
|
$(1)_build_opts+=$$($(1)_build_opts_$(release_type))
|
||||||
|
$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)) $$($(1)_build_opts_$(host_arch)_$(release_type))
|
||||||
|
$(1)_build_opts+=$$($(1)_build_opts_$(host_os)) $$($(1)_build_opts_$(host_os)_$(release_type))
|
||||||
|
$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)_$(host_os)) $$($(1)_build_opts_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
|
$(1)_config_opts+=$$($(1)_config_opts_$(release_type))
|
||||||
|
$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)) $$($(1)_config_opts_$(host_arch)_$(release_type))
|
||||||
|
$(1)_config_opts+=$$($(1)_config_opts_$(host_os)) $$($(1)_config_opts_$(host_os)_$(release_type))
|
||||||
|
$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)_$(host_os)) $$($(1)_config_opts_$(host_arch)_$(host_os)_$(release_type))
|
||||||
|
|
||||||
|
$(1)_config_env+=$$($(1)_config_env_$(release_type))
|
||||||
|
$(1)_config_env+=$($(1)_config_env_$(host_arch)) $($(1)_config_env_$(host_arch)_$(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+=PKG_CONFIG_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig
|
||||||
|
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig
|
||||||
|
$(1)_config_env+=PATH=$(build_prefix)/bin:$(PATH)
|
||||||
|
$(1)_build_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)"
|
||||||
|
|
||||||
|
ifneq ($($(1)_nm),)
|
||||||
|
$(1)_autoconf += NM="$$($(1)_nm)"
|
||||||
|
endif
|
||||||
|
ifneq ($($(1)_ranlib),)
|
||||||
|
$(1)_autoconf += RANLIB="$$($(1)_ranlib)"
|
||||||
|
endif
|
||||||
|
ifneq ($($(1)_ar),)
|
||||||
|
$(1)_autoconf += AR="$$($(1)_ar)"
|
||||||
|
endif
|
||||||
|
ifneq ($($(1)_cflags),)
|
||||||
|
$(1)_autoconf += CFLAGS="$$($(1)_cflags)"
|
||||||
|
endif
|
||||||
|
ifneq ($($(1)_cxxflags),)
|
||||||
|
$(1)_autoconf += CXXFLAGS="$$($(1)_cxxflags)"
|
||||||
|
endif
|
||||||
|
ifneq ($($(1)_cppflags),)
|
||||||
|
$(1)_autoconf += CPPFLAGS="$$($(1)_cppflags)"
|
||||||
|
endif
|
||||||
|
ifneq ($($(1)_ldflags),)
|
||||||
|
$(1)_autoconf += LDFLAGS="$$($(1)_ldflags)"
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define int_add_cmds
|
||||||
|
$($(1)_fetched):
|
||||||
|
$(AT)mkdir -p $$(@D) $(SOURCES_PATH)
|
||||||
|
$(AT)rm -f $$@
|
||||||
|
$(AT)touch $$@
|
||||||
|
$(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1))
|
||||||
|
$(AT)cd $($(1)_source_dir); $(foreach source,$($(1)_all_sources),$(build_SHA256SUM) $(source) >> $$(@);)
|
||||||
|
$(AT)touch $$@
|
||||||
|
$($(1)_extracted): | $($(1)_fetched)
|
||||||
|
$(AT)echo Extracting $(1)...
|
||||||
|
$(AT)mkdir -p $$(@D)
|
||||||
|
$(AT)cd $$(@D); $(call $(1)_extract_cmds,$(1))
|
||||||
|
$(AT)touch $$@
|
||||||
|
$($(1)_preprocessed): | $($(1)_dependencies) $($(1)_extracted)
|
||||||
|
$(AT)echo Preprocessing $(1)...
|
||||||
|
$(AT)mkdir -p $$(@D) $($(1)_patch_dir)
|
||||||
|
$(AT)$(foreach patch,$($(1)_patches),cd $(PATCHES_PATH)/$(1); cp $(patch) $($(1)_patch_dir) ;)
|
||||||
|
$(AT)cd $$(@D); $(call $(1)_preprocess_cmds, $(1))
|
||||||
|
$(AT)touch $$@
|
||||||
|
$($(1)_configured): | $($(1)_preprocessed)
|
||||||
|
$(AT)echo Configuring $(1)...
|
||||||
|
$(AT)rm -rf $(host_prefix); mkdir -p $(host_prefix)/lib; cd $(host_prefix); $(foreach package,$($(1)_all_dependencies), tar xf $($(package)_cached); )
|
||||||
|
$(AT)mkdir -p $$(@D)
|
||||||
|
$(AT)+cd $$(@D); $($(1)_config_env) $(call $(1)_config_cmds, $(1))
|
||||||
|
$(AT)touch $$@
|
||||||
|
$($(1)_built): | $($(1)_configured)
|
||||||
|
$(AT)echo Building $(1)...
|
||||||
|
$(AT)mkdir -p $$(@D)
|
||||||
|
$(AT)+cd $$(@D); $($(1)_build_env) $(call $(1)_build_cmds, $(1))
|
||||||
|
$(AT)touch $$@
|
||||||
|
$($(1)_staged): | $($(1)_built)
|
||||||
|
$(AT)echo Staging $(1)...
|
||||||
|
$(AT)mkdir -p $($(1)_staging_dir)/$(host_prefix)
|
||||||
|
$(AT)cd $($(1)_build_dir); $($(1)_stage_env) $(call $(1)_stage_cmds, $(1))
|
||||||
|
$(AT)rm -rf $($(1)_extract_dir)
|
||||||
|
$(AT)touch $$@
|
||||||
|
$($(1)_postprocessed): | $($(1)_staged)
|
||||||
|
$(AT)echo Postprocessing $(1)...
|
||||||
|
$(AT)cd $($(1)_staging_prefix_dir); $(call $(1)_postprocess_cmds)
|
||||||
|
$(AT)touch $$@
|
||||||
|
$($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed)
|
||||||
|
$(AT)echo Caching $(1)...
|
||||||
|
$(AT)cd $$($(1)_staging_dir)/$(host_prefix); find . | sort | tar --no-recursion -czf $$($(1)_staging_dir)/$$(@F) -T -
|
||||||
|
$(AT)mkdir -p $$(@D)
|
||||||
|
$(AT)rm -rf $$(@D) && mkdir -p $$(@D)
|
||||||
|
$(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@)
|
||||||
|
$(AT)rm -rf $($(1)_staging_dir)
|
||||||
|
$($(1)_cached_checksum): $($(1)_cached)
|
||||||
|
$(AT)cd $$(@D); $(build_SHA256SUM) $$(<F) > $$(@)
|
||||||
|
|
||||||
|
.PHONY: $(1)
|
||||||
|
$(1): | $($(1)_cached_checksum)
|
||||||
|
.SECONDARY: $($(1)_cached) $($(1)_postprocessed) $($(1)_staged) $($(1)_built) $($(1)_configured) $($(1)_preprocessed) $($(1)_extracted) $($(1)_fetched)
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
# These functions create the build targets for each package. They must be
|
||||||
|
# broken down into small steps so that each part is done for all packages
|
||||||
|
# before moving on to the next step. Otherwise, a package's info
|
||||||
|
# (build-id for example) would only be available to another package if it
|
||||||
|
# happened to be computed already.
|
||||||
|
|
||||||
|
#set the type for host/build packages.
|
||||||
|
$(foreach native_package,$(native_packages),$(eval $(native_package)_type=build))
|
||||||
|
$(foreach package,$(packages),$(eval $(package)_type=$(host_arch)_$(host_os)))
|
||||||
|
|
||||||
|
#set overridable defaults
|
||||||
|
$(foreach package,$(all_packages),$(eval $(call int_vars,$(package))))
|
||||||
|
|
||||||
|
#include package files
|
||||||
|
$(foreach package,$(all_packages),$(eval include packages/$(package).mk))
|
||||||
|
|
||||||
|
#compute a hash of all files that comprise this package's build recipe
|
||||||
|
$(foreach package,$(all_packages),$(eval $(call int_get_build_recipe_hash,$(package))))
|
||||||
|
|
||||||
|
#generate a unique id for this package, incorporating its dependencies as well
|
||||||
|
$(foreach package,$(all_packages),$(eval $(call int_get_build_id,$(package))))
|
||||||
|
|
||||||
|
#compute final vars after reading package vars
|
||||||
|
$(foreach package,$(all_packages),$(eval $(call int_config_attach_build_config,$(package))))
|
||||||
|
|
||||||
|
#create build targets
|
||||||
|
$(foreach package,$(all_packages),$(eval $(call int_add_cmds,$(package))))
|
||||||
|
|
||||||
|
#special exception: if a toolchain package exists, all non-native packages depend on it
|
||||||
|
$(foreach package,$(packages),$(eval $($(package)_unpacked): |$($($(host_arch)_$(host_os)_native_toolchain)_cached) ))
|
||||||
17
contrib/depends/hosts/darwin.mk
Normal file
17
contrib/depends/hosts/darwin.mk
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
OSX_MIN_VERSION=10.8
|
||||||
|
OSX_SDK_VERSION=10.11
|
||||||
|
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk
|
||||||
|
LD64_VERSION=253.9
|
||||||
|
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -B $(host_prefix)/native/bin
|
||||||
|
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
|
||||||
|
|
||||||
|
darwin_CFLAGS=-pipe
|
||||||
|
darwin_CXXFLAGS=$(darwin_CFLAGS)
|
||||||
|
|
||||||
|
darwin_release_CFLAGS=-O1
|
||||||
|
darwin_release_CXXFLAGS=$(darwin_release_CFLAGS)
|
||||||
|
|
||||||
|
darwin_debug_CFLAGS=-O1
|
||||||
|
darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS)
|
||||||
|
|
||||||
|
darwin_native_toolchain=native_cctools
|
||||||
26
contrib/depends/hosts/default.mk
Normal file
26
contrib/depends/hosts/default.mk
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
default_host_CC = $(host_toolchain)gcc
|
||||||
|
default_host_CXX = $(host_toolchain)g++
|
||||||
|
default_host_AR = $(host_toolchain)ar
|
||||||
|
default_host_RANLIB = $(host_toolchain)ranlib
|
||||||
|
default_host_STRIP = $(host_toolchain)strip
|
||||||
|
default_host_LIBTOOL = $(host_toolchain)libtool
|
||||||
|
default_host_INSTALL_NAME_TOOL = $(host_toolchain)install_name_tool
|
||||||
|
default_host_OTOOL = $(host_toolchain)otool
|
||||||
|
default_host_NM = $(host_toolchain)nm
|
||||||
|
|
||||||
|
define add_host_tool_func
|
||||||
|
$(host_os)_$1?=$$(default_host_$1)
|
||||||
|
$(host_arch)_$(host_os)_$1?=$$($(host_os)_$1)
|
||||||
|
$(host_arch)_$(host_os)_$(release_type)_$1?=$$($(host_os)_$1)
|
||||||
|
host_$1=$$($(host_arch)_$(host_os)_$1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define add_host_flags_func
|
||||||
|
$(host_arch)_$(host_os)_$1 += $($(host_os)_$1)
|
||||||
|
$(host_arch)_$(host_os)_$(release_type)_$1 += $($(host_os)_$(release_type)_$1)
|
||||||
|
host_$1 = $$($(host_arch)_$(host_os)_$1)
|
||||||
|
host_$(release_type)_$1 = $$($(host_arch)_$(host_os)_$(release_type)_$1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(foreach tool,CC CXX AR RANLIB STRIP NM LIBTOOL OTOOL INSTALL_NAME_TOOL,$(eval $(call add_host_tool_func,$(tool))))
|
||||||
|
$(foreach flags,CFLAGS CXXFLAGS CPPFLAGS LDFLAGS, $(eval $(call add_host_flags_func,$(flags))))
|
||||||
31
contrib/depends/hosts/linux.mk
Normal file
31
contrib/depends/hosts/linux.mk
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
linux_CFLAGS=-pipe
|
||||||
|
linux_CXXFLAGS=$(linux_CFLAGS)
|
||||||
|
|
||||||
|
linux_release_CFLAGS=-O2
|
||||||
|
linux_release_CXXFLAGS=$(linux_release_CFLAGS)
|
||||||
|
|
||||||
|
linux_debug_CFLAGS=-O1
|
||||||
|
linux_debug_CXXFLAGS=$(linux_debug_CFLAGS)
|
||||||
|
|
||||||
|
linux_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC
|
||||||
|
|
||||||
|
ifeq (86,$(findstring 86,$(build_arch)))
|
||||||
|
i686_linux_CC=gcc -m32
|
||||||
|
i686_linux_CXX=g++ -m32
|
||||||
|
i686_linux_AR=ar
|
||||||
|
i686_linux_RANLIB=ranlib
|
||||||
|
i686_linux_NM=nm
|
||||||
|
i686_linux_STRIP=strip
|
||||||
|
|
||||||
|
x86_64_linux_CC=gcc -m64
|
||||||
|
x86_64_linux_CXX=g++ -m64
|
||||||
|
x86_64_linux_AR=ar
|
||||||
|
x86_64_linux_RANLIB=ranlib
|
||||||
|
x86_64_linux_NM=nm
|
||||||
|
x86_64_linux_STRIP=strip
|
||||||
|
else
|
||||||
|
i686_linux_CC=$(default_host_CC) -m32
|
||||||
|
i686_linux_CXX=$(default_host_CXX) -m32
|
||||||
|
x86_64_linux_CC=$(default_host_CC) -m64
|
||||||
|
x86_64_linux_CXX=$(default_host_CXX) -m64
|
||||||
|
endif
|
||||||
10
contrib/depends/hosts/mingw32.mk
Normal file
10
contrib/depends/hosts/mingw32.mk
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
mingw32_CFLAGS=-pipe
|
||||||
|
mingw32_CXXFLAGS=$(mingw32_CFLAGS)
|
||||||
|
|
||||||
|
mingw32_release_CFLAGS=-O2
|
||||||
|
mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS)
|
||||||
|
|
||||||
|
mingw32_debug_CFLAGS=-O1
|
||||||
|
mingw32_debug_CXXFLAGS=$(mingw32_debug_CFLAGS)
|
||||||
|
|
||||||
|
mingw32_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC
|
||||||
147
contrib/depends/packages.md
Normal file
147
contrib/depends/packages.md
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
Each recipe consists of 3 main parts: defining identifiers, setting build
|
||||||
|
variables, and defining build commands.
|
||||||
|
|
||||||
|
The package "mylib" will be used here as an example
|
||||||
|
|
||||||
|
General tips:
|
||||||
|
- mylib_foo is written as $(package)_foo in order to make recipes more similar.
|
||||||
|
|
||||||
|
## Identifiers
|
||||||
|
Each package is required to define at least these variables:
|
||||||
|
|
||||||
|
$(package)_version:
|
||||||
|
Version of the upstream library or program. If there is no version, a
|
||||||
|
placeholder such as 1.0 can be used.
|
||||||
|
|
||||||
|
$(package)_download_path:
|
||||||
|
Location of the upstream source, without the file-name. Usually http or
|
||||||
|
ftp.
|
||||||
|
|
||||||
|
$(package)_file_name:
|
||||||
|
The upstream source filename available at the download path.
|
||||||
|
|
||||||
|
$(package)_sha256_hash:
|
||||||
|
The sha256 hash of the upstream file
|
||||||
|
|
||||||
|
These variables are optional:
|
||||||
|
|
||||||
|
$(package)_build_subdir:
|
||||||
|
cd to this dir before running configure/build/stage commands.
|
||||||
|
|
||||||
|
$(package)_download_file:
|
||||||
|
The file-name of the upstream source if it differs from how it should be
|
||||||
|
stored locally. This can be used to avoid storing file-names with strange
|
||||||
|
characters.
|
||||||
|
|
||||||
|
$(package)_dependencies:
|
||||||
|
Names of any other packages that this one depends on.
|
||||||
|
|
||||||
|
$(package)_patches:
|
||||||
|
Filenames of any patches needed to build the package
|
||||||
|
|
||||||
|
$(package)_extra_sources:
|
||||||
|
Any extra files that will be fetched via $(package)_fetch_cmds. These are
|
||||||
|
specified so that they can be fetched and verified via 'make download'.
|
||||||
|
|
||||||
|
|
||||||
|
## Build Variables:
|
||||||
|
After defining the main identifiers, build variables may be added or customized
|
||||||
|
before running the build commands. They should be added to a function called
|
||||||
|
$(package)_set_vars. For example:
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
...
|
||||||
|
endef
|
||||||
|
|
||||||
|
Most variables can be prefixed with the host, architecture, or both, to make
|
||||||
|
the modifications specific to that case. For example:
|
||||||
|
|
||||||
|
Universal: $(package)_cc=gcc
|
||||||
|
Linux only: $(package)_linux_cc=gcc
|
||||||
|
x86_64 only: $(package)_x86_64_cc = gcc
|
||||||
|
x86_64 linux only: $(package)_x86_64_linux_cc = gcc
|
||||||
|
|
||||||
|
These variables may be set to override or append their default values.
|
||||||
|
|
||||||
|
$(package)_cc
|
||||||
|
$(package)_cxx
|
||||||
|
$(package)_objc
|
||||||
|
$(package)_objcxx
|
||||||
|
$(package)_ar
|
||||||
|
$(package)_ranlib
|
||||||
|
$(package)_libtool
|
||||||
|
$(package)_nm
|
||||||
|
$(package)_cflags
|
||||||
|
$(package)_cxxflags
|
||||||
|
$(package)_ldflags
|
||||||
|
$(package)_cppflags
|
||||||
|
$(package)_config_env
|
||||||
|
$(package)_build_env
|
||||||
|
$(package)_stage_env
|
||||||
|
$(package)_build_opts
|
||||||
|
$(package)_config_opts
|
||||||
|
|
||||||
|
The *_env variables are used to add environment variables to the respective
|
||||||
|
commands.
|
||||||
|
|
||||||
|
Many variables respect a debug/release suffix as well, in order to use them for
|
||||||
|
only the appropriate build config. For example:
|
||||||
|
|
||||||
|
$(package)_cflags_release = -O3
|
||||||
|
$(package)_cflags_i686_debug = -g
|
||||||
|
$(package)_config_opts_release = --disable-debug
|
||||||
|
|
||||||
|
These will be used in addition to the options that do not specify
|
||||||
|
debug/release. All builds are considered to be release unless DEBUG=1 is set by
|
||||||
|
the user. Other variables may be defined as needed.
|
||||||
|
|
||||||
|
## Build commands:
|
||||||
|
|
||||||
|
For each build, a unique build dir and staging dir are created. For example,
|
||||||
|
`work/build/mylib/1.0-1adac830f6e` and `work/staging/mylib/1.0-1adac830f6e`.
|
||||||
|
|
||||||
|
The following build commands are available for each recipe:
|
||||||
|
|
||||||
|
$(package)_fetch_cmds:
|
||||||
|
Runs from: build dir
|
||||||
|
Fetch the source file. If undefined, it will be fetched and verified
|
||||||
|
against its hash.
|
||||||
|
|
||||||
|
$(package)_extract_cmds:
|
||||||
|
Runs from: build dir
|
||||||
|
Verify the source file against its hash and extract it. If undefined, the
|
||||||
|
source is assumed to be a tarball.
|
||||||
|
|
||||||
|
$(package)_preprocess_cmds:
|
||||||
|
Runs from: build dir/$(package)_build_subdir
|
||||||
|
Preprocess the source as necessary. If undefined, does nothing.
|
||||||
|
|
||||||
|
$(package)_config_cmds:
|
||||||
|
Runs from: build dir/$(package)_build_subdir
|
||||||
|
Configure the source. If undefined, does nothing.
|
||||||
|
|
||||||
|
$(package)_build_cmds:
|
||||||
|
Runs from: build dir/$(package)_build_subdir
|
||||||
|
Build the source. If undefined, does nothing.
|
||||||
|
|
||||||
|
$(package)_stage_cmds:
|
||||||
|
Runs from: build dir/$(package)_build_subdir
|
||||||
|
Stage the build results. If undefined, does nothing.
|
||||||
|
|
||||||
|
The following variables are available for each recipe:
|
||||||
|
|
||||||
|
$(1)_staging_dir: package's destination sysroot path
|
||||||
|
$(1)_staging_prefix_dir: prefix path inside of the package's staging dir
|
||||||
|
$(1)_extract_dir: path to the package's extracted sources
|
||||||
|
$(1)_build_dir: path where configure/build/stage commands will be run
|
||||||
|
$(1)_patch_dir: path where the package's patches (if any) are found
|
||||||
|
|
||||||
|
Notes on build commands:
|
||||||
|
|
||||||
|
For packages built with autotools, $($(package)_autoconf) can be used in the
|
||||||
|
configure step to (usually) correctly configure automatically. Any
|
||||||
|
$($(package)_config_opts) will be appended.
|
||||||
|
|
||||||
|
Most autotools projects can be properly staged using:
|
||||||
|
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
31
contrib/depends/packages/bdb.mk
Normal file
31
contrib/depends/packages/bdb.mk
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package=bdb
|
||||||
|
$(package)_version=4.8.30
|
||||||
|
$(package)_download_path=http://download.oracle.com/berkeley-db
|
||||||
|
$(package)_file_name=db-$($(package)_version).NC.tar.gz
|
||||||
|
$(package)_sha256_hash=12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef
|
||||||
|
$(package)_build_subdir=build_unix
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication
|
||||||
|
$(package)_config_opts_mingw32=--enable-mingw
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
$(package)_cxxflags=-std=c++11
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
sed -i.old 's/__atomic_compare_exchange/__atomic_compare_exchange_db/' dbinc/atomic.h && \
|
||||||
|
sed -i.old 's/atomic_init/atomic_init_db/' dbinc/atomic.h mp/mp_region.c mp/mp_mvcc.c mp/mp_fget.c mutex/mut_method.c mutex/mut_tas.c && \
|
||||||
|
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub dist
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
../dist/$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) libdb_cxx-4.8.a libdb-4.8.a
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install_lib install_include
|
||||||
|
endef
|
||||||
41
contrib/depends/packages/boost.mk
Normal file
41
contrib/depends/packages/boost.mk
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
package=boost
|
||||||
|
$(package)_version=1_64_0
|
||||||
|
$(package)_download_path=https://dl.bintray.com/boostorg/release/1.64.0/source/
|
||||||
|
$(package)_file_name=$(package)_$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts_release=variant=release
|
||||||
|
$(package)_config_opts_debug=variant=debug
|
||||||
|
$(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-config.jam
|
||||||
|
$(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_darwin=--toolset=darwin-4.2.1 runtime-link=shared
|
||||||
|
$(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_i686_mingw32=address-model=32
|
||||||
|
$(package)_config_opts_i686_linux=address-model=32 architecture=x86
|
||||||
|
$(package)_toolset_$(host_os)=gcc
|
||||||
|
$(package)_archiver_$(host_os)=$($(package)_ar)
|
||||||
|
$(package)_toolset_darwin=darwin
|
||||||
|
$(package)_archiver_darwin=$($(package)_libtool)
|
||||||
|
$(package)_config_libraries=chrono,filesystem,program_options,system,thread,test,date_time,regex,serialization,locale
|
||||||
|
$(package)_cxxflags=-std=c++11 -fvisibility=hidden
|
||||||
|
$(package)_cxxflags_linux=-fPIC
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : <cxxflags>\"$($(package)_cxxflags) $($(package)_cppflags)\" <linkflags>\"$($(package)_ldflags)\" <archiver>\"$(boost_archiver_$(host_os))\" <striper>\"$(host_STR IP)\" <ranlib>\"$(host_RANLIB)\" <rc>\"$(host_WINDRES)\" : ;" > user-config.jam
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
./bootstrap.sh --without-icu --with-libraries=$(boost_config_libraries)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
./b2 -d2 -j2 -d1 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) stage
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
./b2 -d0 -j4 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) install
|
||||||
|
endef
|
||||||
67
contrib/depends/packages/cmake/conf/mxe-conf.cmake.in
Normal file
67
contrib/depends/packages/cmake/conf/mxe-conf.cmake.in
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# This file is part of MXE. See LICENSE.md for licensing information.
|
||||||
|
|
||||||
|
# https://cmake.org/cmake/help/latest
|
||||||
|
|
||||||
|
# Can't set `cmake_minimum_required` or `cmake_policy` in toolchain
|
||||||
|
# since toolchain is read before CMakeLists.txt
|
||||||
|
# See `target-cmake.in` for CMAKE_POLICY_DEFAULT_CMPNNNN
|
||||||
|
|
||||||
|
# Check if we are using mxe supplied version
|
||||||
|
# - toolchain is included multiple times so set a guard in
|
||||||
|
# environment to suppress duplicate messages
|
||||||
|
if(NOT ${CMAKE_COMMAND} STREQUAL @PREFIX@/@BUILD@/bin/cmake AND NOT DEFINED ENV{_MXE_CMAKE_TOOLCHAIN_INCLUDED})
|
||||||
|
message(WARNING "
|
||||||
|
** Warning: direct use of toolchain file is deprecated
|
||||||
|
** Please use prefixed wrapper script instead:
|
||||||
|
@TARGET@-cmake [options] <path-to-source>
|
||||||
|
- uses mxe supplied cmake version @CMAKE_VERSION@
|
||||||
|
- loads toolchain
|
||||||
|
- loads common run results
|
||||||
|
- sets various policy defaults
|
||||||
|
")
|
||||||
|
set(ENV{_MXE_CMAKE_TOOLCHAIN_INCLUDED} TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
## General configuration
|
||||||
|
set(CMAKE_SYSTEM_NAME Windows)
|
||||||
|
set(MSYS 1)
|
||||||
|
set(CMAKE_EXPORT_NO_PACKAGE_REGISTRY ON)
|
||||||
|
# Workaround for https://www.cmake.org/Bug/view.php?id=14075
|
||||||
|
set(CMAKE_CROSS_COMPILING ON)
|
||||||
|
|
||||||
|
|
||||||
|
## Library config
|
||||||
|
set(BUILD_SHARED_LIBS @CMAKE_SHARED_BOOL@ CACHE BOOL "BUILD_SHARED_LIBS" FORCE)
|
||||||
|
set(BUILD_STATIC_LIBS @CMAKE_STATIC_BOOL@ CACHE BOOL "BUILD_STATIC_LIBS" FORCE)
|
||||||
|
set(BUILD_SHARED @CMAKE_SHARED_BOOL@ CACHE BOOL "BUILD_SHARED" FORCE)
|
||||||
|
set(BUILD_STATIC @CMAKE_STATIC_BOOL@ CACHE BOOL "BUILD_STATIC" FORCE)
|
||||||
|
set(LIBTYPE @LIBTYPE@)
|
||||||
|
|
||||||
|
|
||||||
|
## Paths etc.
|
||||||
|
set(CMAKE_FIND_ROOT_PATH @PREFIX@/@TARGET@)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
set(CMAKE_PREFIX_PATH @PREFIX@/@TARGET@)
|
||||||
|
set(CMAKE_INSTALL_PREFIX @PREFIX@/@TARGET@ CACHE PATH "Installation Prefix")
|
||||||
|
# For custom mxe FindPackage scripts
|
||||||
|
set(CMAKE_MODULE_PATH "@PREFIX@/share/cmake/modules" ${CMAKE_MODULE_PATH})
|
||||||
|
|
||||||
|
|
||||||
|
## Programs
|
||||||
|
set(CMAKE_C_COMPILER @PREFIX@/bin/@TARGET@-gcc)
|
||||||
|
set(CMAKE_CXX_COMPILER @PREFIX@/bin/@TARGET@-g++)
|
||||||
|
set(CMAKE_Fortran_COMPILER @PREFIX@/bin/@TARGET@-gfortran)
|
||||||
|
set(CMAKE_RC_COMPILER @PREFIX@/bin/@TARGET@-windres)
|
||||||
|
# CMAKE_RC_COMPILE_OBJECT is defined in:
|
||||||
|
# <cmake root>/share/cmake-X.Y/Modules/Platform/Windows-windres.cmake
|
||||||
|
set(CPACK_NSIS_EXECUTABLE @TARGET@-makensis)
|
||||||
|
|
||||||
|
## Individual package configuration
|
||||||
|
file(GLOB mxe_cmake_files
|
||||||
|
"@CMAKE_TOOLCHAIN_DIR@/*.cmake"
|
||||||
|
)
|
||||||
|
foreach(mxe_cmake_file ${mxe_cmake_files})
|
||||||
|
include(${mxe_cmake_file})
|
||||||
|
endforeach()
|
||||||
29
contrib/depends/packages/cmake/conf/target-cmake.in
Normal file
29
contrib/depends/packages/cmake/conf/target-cmake.in
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
echo "== Using MXE wrapper: @PREFIX@/bin/@TARGET@-cmake"
|
||||||
|
|
||||||
|
# https://cmake.org/cmake/help/latest/manual/cmake-policies.7.html
|
||||||
|
# https://cmake.org/cmake/help/latest/variable/CMAKE_POLICY_DEFAULT_CMPNNNN.html
|
||||||
|
POLICIES=(0017,0020)
|
||||||
|
|
||||||
|
unset NO_MXE_TOOLCHAIN
|
||||||
|
if echo -- "$@" | grep -Ewq "(--build|-E|--system-information)" ; then
|
||||||
|
NO_MXE_TOOLCHAIN=1
|
||||||
|
fi
|
||||||
|
if [[ "$NO_MXE_TOOLCHAIN" == "1" ]]; then
|
||||||
|
echo "== Skip using MXE toolchain: @CMAKE_TOOLCHAIN_FILE@"
|
||||||
|
# see https://github.com/mxe/mxe/issues/932
|
||||||
|
exec "@PREFIX@/@BUILD@/bin/cmake" "$@"
|
||||||
|
else
|
||||||
|
echo " - cmake version @CMAKE_VERSION@"
|
||||||
|
echo " - warnings for unused CMAKE_POLICY_DEFAULT variables can be ignored"
|
||||||
|
echo "== Using MXE toolchain: @CMAKE_TOOLCHAIN_FILE@"
|
||||||
|
echo "== Using MXE runresult: @CMAKE_RUNRESULT_FILE@"
|
||||||
|
if ! ( echo "$@" | grep --silent "DCMAKE_BUILD_TYPE" ) ; then
|
||||||
|
echo '== Adding "-DCMAKE_BUILD_TYPE=Release"'
|
||||||
|
set -- "-DCMAKE_BUILD_TYPE=Release" "$@"
|
||||||
|
fi
|
||||||
|
exec "@PREFIX@/@BUILD@/bin/cmake" \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="@CMAKE_TOOLCHAIN_FILE@" \
|
||||||
|
`eval echo -DCMAKE_POLICY_DEFAULT_CMP{$POLICIES}=NEW` \
|
||||||
|
-C"@CMAKE_RUNRESULT_FILE@" "$@"
|
||||||
|
fi
|
||||||
18
contrib/depends/packages/cmake/test/CMakeLists.txt
Normal file
18
contrib/depends/packages/cmake/test/CMakeLists.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# This file is part of MXE. See LICENSE.md for licensing information.
|
||||||
|
|
||||||
|
# 2.8.9 is Debian Wheezy version
|
||||||
|
cmake_minimum_required(VERSION 2.8.9)
|
||||||
|
|
||||||
|
# use default C and CXX languages
|
||||||
|
project(mxe)
|
||||||
|
|
||||||
|
# see cmake --help-policy <cmp> for details
|
||||||
|
cmake_policy(SET CMP0017 NEW)
|
||||||
|
if (POLICY CMP0020)
|
||||||
|
cmake_policy(SET CMP0020 NEW)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# so we can find pkg-test.cmake files to include
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/../.. ${CMAKE_MODULE_PATH})
|
||||||
|
|
||||||
|
include(${PKG}-test)
|
||||||
15
contrib/depends/packages/cppzmq.mk
Normal file
15
contrib/depends/packages/cppzmq.mk
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package=cppzmq
|
||||||
|
$(package)_version=4.2.3
|
||||||
|
$(package)_download_path=https://github.com/zeromq/cppzmq/archive/
|
||||||
|
$(package)_file_name=v$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=3e6b57bf49115f4ae893b1ff7848ead7267013087dc7be1ab27636a97144d373
|
||||||
|
$(package)_dependencies=zeromq
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
mkdir $($(package)_staging_prefix_dir)/include &&\
|
||||||
|
cp zmq.hpp $($(package)_staging_prefix_dir)/include
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm -rf bin share
|
||||||
|
endef
|
||||||
25
contrib/depends/packages/eudev.mk
Normal file
25
contrib/depends/packages/eudev.mk
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package=eudev
|
||||||
|
$(package)_version=v3.2.6
|
||||||
|
$(package)_download_path=https://github.com/gentoo/eudev/archive/
|
||||||
|
$(package)_file_name=$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=a96ecb8637667897b8bd4dee4c22c7c5f08b327be45186e912ce6bc768385852
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-gudev --disable-introspection --disable-hwdb --disable-manpages --disable-shared
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmd
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
cd $($(package)_build_subdir); autoreconf -f -i
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
22
contrib/depends/packages/expat.mk
Normal file
22
contrib/depends/packages/expat.mk
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package=expat
|
||||||
|
$(package)_version=2.2.4
|
||||||
|
$(package)_download_path=https://downloads.sourceforge.net/project/expat/expat/$($(package)_version)
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=03ad85db965f8ab2d27328abcf0bc5571af6ec0a414874b2066ee3fdd372019e
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--enable-static
|
||||||
|
$(package)_config_opts+=--prefix=$(host_prefix)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf) $($(package)_config_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
30
contrib/depends/packages/graphviz.mk
Normal file
30
contrib/depends/packages/graphviz.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package=graphviz
|
||||||
|
$(package)_version=2.40.1
|
||||||
|
$(package)_download_path=www.graphviz.org/pub/graphviz/stable/SOURCES/
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=ca5218fade0204d59947126c38439f432853543b0818d9d728c589dfe7f3a421
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
./autogen.sh
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared --enable-multibye --without-purify --without-curses
|
||||||
|
$(package)_config_opts_release=--disable-debug-mode
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
endef
|
||||||
30
contrib/depends/packages/hidapi.mk
Normal file
30
contrib/depends/packages/hidapi.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package=hidapi
|
||||||
|
$(package)_version=0.8.0-rc1
|
||||||
|
$(package)_download_path=https://github.com/signal11/hidapi/archive
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=3c147200bf48a04c1e927cd81589c5ddceff61e6dac137a605f6ac9793f4af61
|
||||||
|
$(package)_linux_dependencies=libusb eudev
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--enable-static --disable-shared
|
||||||
|
$(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_CFLAGS=-I$(host_prefix)/include
|
||||||
|
$(package)_config_opts_linux+=libusb_LIBS="-L$(host_prefix)/lib -lusb-1.0"
|
||||||
|
$(package)_config_opts_linux+=libusb_CFLAGS=-I$(host_prefix)/include/libusb-1.0
|
||||||
|
$(package)_config_opts_linux+=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
./bootstrap &&\
|
||||||
|
$($(package)_autoconf) $($(package)_config_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
32
contrib/depends/packages/icu4c.mk
Normal file
32
contrib/depends/packages/icu4c.mk
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package=icu4c
|
||||||
|
$(package)_version=55.1
|
||||||
|
$(package)_download_path=https://github.com/TheCharlatan/icu4c/archive
|
||||||
|
$(package)_file_name=55.1.tar.gz
|
||||||
|
$(package)_sha256_hash=1f912c54035533fb4268809701d65c7468d00e292efbc31e6444908450cc46ef
|
||||||
|
$(package)_patches=icu-001-dont-build-static-dynamic-twice.patch
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_build_opts=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -DU_USING_ICU_NAMESPACE=0 --std=gnu++0x -DU_STATIC_IMPLEMENTATION -DU_COMBINED_IMPLEMENTATION -fPIC"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/icu-001-dont-build-static-dynamic-twice.patch &&\
|
||||||
|
mkdir builda &&\
|
||||||
|
mkdir buildb &&\
|
||||||
|
cd builda &&\
|
||||||
|
sh ../source/runConfigureICU Linux &&\
|
||||||
|
make &&\
|
||||||
|
cd ../buildb &&\
|
||||||
|
sh ../source/$($(package)_autoconf) --enable-static=yes --enable-shared=yes --disable-layoutex --prefix=$(host_prefix) --with-cross-build=`pwd`/../builda &&\
|
||||||
|
$(MAKE) $($(package)_build_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
#define $(package)_build_cmds
|
||||||
|
# cd source &&\
|
||||||
|
$(MAKE) $($((package)_build_opts) `nproc`
|
||||||
|
#endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
cd buildb &&\
|
||||||
|
$(MAKE) $($(package)_build_opts) DESTDIR=$($(package)_staging_dir) install lib/*
|
||||||
|
endef
|
||||||
28
contrib/depends/packages/ldns.mk
Normal file
28
contrib/depends/packages/ldns.mk
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package=ldns
|
||||||
|
$(package)_version=1.6.17
|
||||||
|
$(package)_download_path=http://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 --disable-dane-ta-usage --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)_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
|
||||||
|
endef
|
||||||
23
contrib/depends/packages/libICE.mk
Normal file
23
contrib/depends/packages/libICE.mk
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package=libICE
|
||||||
|
$(package)_version=1.0.9
|
||||||
|
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=8f7032f2c1c64352b5423f6b48a8ebdc339cc63064af34d66a6c9aa79759e202
|
||||||
|
$(package)_dependencies=xtrans xproto
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-static --disable-docs --disable-specs --without-xsltproc
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
23
contrib/depends/packages/libSM.mk
Normal file
23
contrib/depends/packages/libSM.mk
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package=libSM
|
||||||
|
$(package)_version=1.2.2
|
||||||
|
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=0baca8c9f5d934450a70896c4ad38d06475521255ca63b717a6510fdb6e287bd
|
||||||
|
$(package)_dependencies=xtrans xproto libICE
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--without-libuuid --without-xsltproc --disable-docs --disable-static
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
30
contrib/depends/packages/libevent.mk
Normal file
30
contrib/depends/packages/libevent.mk
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package=libevent
|
||||||
|
$(package)_version=2.1.8-stable
|
||||||
|
$(package)_download_path=https://github.com/libevent/libevent/archive/
|
||||||
|
$(package)_file_name=release-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=316ddb401745ac5d222d7c529ef1eada12f58f6376a66c1118eee803cb70f83d
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
./autogen.sh
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared --disable-openssl --disable-libevent-regress --disable-samples
|
||||||
|
$(package)_config_opts_release=--disable-debug-mode
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
endef
|
||||||
17
contrib/depends/packages/libiconv.mk
Normal file
17
contrib/depends/packages/libiconv.mk
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package=libiconv
|
||||||
|
$(package)_version=1.15
|
||||||
|
$(package)_download_path=https://ftp.gnu.org/gnu/libiconv
|
||||||
|
$(package)_file_name=libiconv-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf) --disable-nls --enable-static --disable-shared
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
31
contrib/depends/packages/libusb.mk
Normal file
31
contrib/depends/packages/libusb.mk
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package=libusb
|
||||||
|
$(package)_version=1.0.9
|
||||||
|
$(package)_download_path=http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=e920eedc2d06b09606611c99ec7304413c6784cba6e33928e78243d323195f9b
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
autoreconf -i
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
cp -f $(BASEDIR)/config.guess config.guess &&\
|
||||||
|
cp -f $(BASEDIR)/config.sub config.sub &&\
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmd
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds cp -f lib/libusb-1.0.a lib/libusb.a
|
||||||
|
endef
|
||||||
28
contrib/depends/packages/miniupnpc.mk
Normal file
28
contrib/depends/packages/miniupnpc.mk
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package=miniupnpc
|
||||||
|
$(package)_version=2.0.20170509
|
||||||
|
$(package)_download_path=http://miniupnp.free.fr/files
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=d3c368627f5cdfb66d3ebd64ca39ba54d6ff14a61966dbecb8dd296b7039f16a
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_build_opts=CC="$($(package)_cc)"
|
||||||
|
$(package)_build_opts_darwin=OS=Darwin LIBTOOL="$($(package)_libtool)"
|
||||||
|
$(package)_build_opts_mingw32=-f Makefile.mingw
|
||||||
|
$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
mkdir dll && \
|
||||||
|
sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \
|
||||||
|
sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) libminiupnpc.a $($(package)_build_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\
|
||||||
|
install *.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\
|
||||||
|
install libminiupnpc.a $($(package)_staging_prefix_dir)/lib
|
||||||
|
endef
|
||||||
20
contrib/depends/packages/native_biplist.mk
Normal file
20
contrib/depends/packages/native_biplist.mk
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package=native_biplist
|
||||||
|
$(package)_version=0.9
|
||||||
|
$(package)_download_path=https://pypi.python.org/packages/source/b/biplist
|
||||||
|
$(package)_file_name=biplist-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=b57cadfd26e4754efdf89e9e37de87885f9b5c847b2615688ca04adfaf6ca604
|
||||||
|
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||||
|
$(package)_patches=sorted_list.patch
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/sorted_list.patch
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
python setup.py build
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
mkdir -p $($(package)_install_libdir) && \
|
||||||
|
python setup.py install --root=$($(package)_staging_dir) --prefix=$(build_prefix) --install-lib=$($(package)_install_libdir)
|
||||||
|
endef
|
||||||
25
contrib/depends/packages/native_ccache.mk
Normal file
25
contrib/depends/packages/native_ccache.mk
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package=native_ccache
|
||||||
|
$(package)_version=3.3.4
|
||||||
|
$(package)_download_path=https://samba.org/ftp/ccache
|
||||||
|
$(package)_file_name=ccache-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=fa9d7f38367431bc86b19ad107d709ca7ecf1574fdacca01698bdf0a47cd8567
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm -rf lib include
|
||||||
|
endef
|
||||||
65
contrib/depends/packages/native_cctools.mk
Normal file
65
contrib/depends/packages/native_cctools.mk
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package=native_cctools
|
||||||
|
$(package)_version=807d6fd1be5d2224872e381870c0a75387fe05e6
|
||||||
|
$(package)_download_path=https://github.com/theuni/cctools-port/archive
|
||||||
|
$(package)_file_name=$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=a09c9ba4684670a0375e42d9d67e7f12c1f62581a27f28f7c825d6d7032ccc6a
|
||||||
|
$(package)_build_subdir=cctools
|
||||||
|
$(package)_clang_version=3.7.1
|
||||||
|
$(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)
|
||||||
|
|
||||||
|
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
|
||||||
|
$(package)_config_opts=--target=$(host) --disable-lto-support
|
||||||
|
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
|
||||||
|
$(package)_cc=$($(package)_extract_dir)/toolchain/bin/clang
|
||||||
|
$(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
cd $($(package)_build_subdir); ./autogen.sh && \
|
||||||
|
sed -i.old "/define HAVE_PTHREADS/d" ld64/src/ld/InputFiles.h
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install && \
|
||||||
|
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
|
||||||
26
contrib/depends/packages/native_cdrkit.mk
Normal file
26
contrib/depends/packages/native_cdrkit.mk
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package=native_cdrkit
|
||||||
|
$(package)_version=1.1.11
|
||||||
|
$(package)_download_path=http://distro.ibiblio.org/fatdog/source/600/c
|
||||||
|
$(package)_file_name=cdrkit-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=b50d64c214a65b1a79afe3a964c691931a4233e2ba605d793eb85d0ac3652564
|
||||||
|
$(package)_patches=cdrkit-deterministic.patch
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/cdrkit-deterministic.patch
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX=$(build_prefix)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) genisoimage
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) -C genisoimage install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm bin/isovfy bin/isoinfo bin/isodump bin/isodebug bin/devdump
|
||||||
|
endef
|
||||||
17
contrib/depends/packages/native_ds_store.mk
Normal file
17
contrib/depends/packages/native_ds_store.mk
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package=native_ds_store
|
||||||
|
$(package)_version=1.1.0
|
||||||
|
$(package)_download_path=https://bitbucket.org/al45tair/ds_store/get
|
||||||
|
$(package)_download_file=v$($(package)_version).tar.bz2
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=921596764d71d1bbd3297a90ef6d286f718794d667e4f81d91d14053525d64c1
|
||||||
|
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||||
|
$(package)_dependencies=native_biplist
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
python setup.py build
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
mkdir -p $($(package)_install_libdir) && \
|
||||||
|
python setup.py install --root=$($(package)_staging_dir) --prefix=$(build_prefix) --install-lib=$($(package)_install_libdir)
|
||||||
|
endef
|
||||||
22
contrib/depends/packages/native_libdmg-hfsplus.mk
Normal file
22
contrib/depends/packages/native_libdmg-hfsplus.mk
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package=native_libdmg-hfsplus
|
||||||
|
$(package)_version=0.1
|
||||||
|
$(package)_download_path=https://github.com/theuni/libdmg-hfsplus/archive
|
||||||
|
$(package)_file_name=libdmg-hfsplus-v$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=6569a02eb31c2827080d7d59001869ea14484c281efab0ae7f2b86af5c3120b3
|
||||||
|
$(package)_build_subdir=build
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
mkdir build
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX:PATH=$(build_prefix)/bin ..
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) -C dmg
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) -C dmg install
|
||||||
|
endef
|
||||||
21
contrib/depends/packages/native_mac_alias.mk
Normal file
21
contrib/depends/packages/native_mac_alias.mk
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package=native_mac_alias
|
||||||
|
$(package)_version=1.1.0
|
||||||
|
$(package)_download_path=https://bitbucket.org/al45tair/mac_alias/get
|
||||||
|
$(package)_download_file=v$($(package)_version).tar.bz2
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=87ad827e66790028361e43fc754f68ed041a9bdb214cca03c853f079b04fb120
|
||||||
|
$(package)_install_libdir=$(build_prefix)/lib/python/dist-packages
|
||||||
|
$(package)_patches=python3.patch
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/python3.patch
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
python setup.py build
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
mkdir -p $($(package)_install_libdir) && \
|
||||||
|
python setup.py install --root=$($(package)_staging_dir) --prefix=$(build_prefix) --install-lib=$($(package)_install_libdir)
|
||||||
|
endef
|
||||||
78
contrib/depends/packages/openssl.mk
Normal file
78
contrib/depends/packages/openssl.mk
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
package=openssl
|
||||||
|
$(package)_version=1.0.1k
|
||||||
|
$(package)_download_path=https://www.openssl.org/source
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=8f9faeaebad088e772f4ef5e38252d472be4d878c6b3a2718c10a4fcebe7a41c
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||||
|
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl
|
||||||
|
$(package)_config_opts+=no-camellia
|
||||||
|
$(package)_config_opts+=no-capieng
|
||||||
|
$(package)_config_opts+=no-cast
|
||||||
|
$(package)_config_opts+=no-comp
|
||||||
|
$(package)_config_opts+=no-dso
|
||||||
|
$(package)_config_opts+=no-dtls1
|
||||||
|
$(package)_config_opts+=no-ec_nistp_64_gcc_128
|
||||||
|
$(package)_config_opts+=no-gost
|
||||||
|
$(package)_config_opts+=no-gmp
|
||||||
|
$(package)_config_opts+=no-heartbeats
|
||||||
|
$(package)_config_opts+=no-idea
|
||||||
|
$(package)_config_opts+=no-jpake
|
||||||
|
$(package)_config_opts+=no-krb5
|
||||||
|
$(package)_config_opts+=no-libunbound
|
||||||
|
$(package)_config_opts+=no-md2
|
||||||
|
$(package)_config_opts+=no-mdc2
|
||||||
|
$(package)_config_opts+=no-rc4
|
||||||
|
$(package)_config_opts+=no-rc5
|
||||||
|
$(package)_config_opts+=no-rdrand
|
||||||
|
$(package)_config_opts+=no-rfc3779
|
||||||
|
$(package)_config_opts+=no-rsax
|
||||||
|
$(package)_config_opts+=no-sctp
|
||||||
|
$(package)_config_opts+=no-seed
|
||||||
|
$(package)_config_opts+=no-sha0
|
||||||
|
$(package)_config_opts+=no-shared
|
||||||
|
$(package)_config_opts+=no-ssl-trace
|
||||||
|
$(package)_config_opts+=no-ssl2
|
||||||
|
$(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-weak-ssl-ciphers
|
||||||
|
$(package)_config_opts+=no-whirlpool
|
||||||
|
$(package)_config_opts+=no-zlib
|
||||||
|
$(package)_config_opts+=no-zlib-dynamic
|
||||||
|
$(package)_config_opts+=$($(package)_cflags) $($(package)_cppflags)
|
||||||
|
$(package)_config_opts_linux=-fPIC -Wa,--noexecstack
|
||||||
|
$(package)_config_opts_x86_64_linux=linux-x86_64
|
||||||
|
$(package)_config_opts_i686_linux=linux-generic32
|
||||||
|
$(package)_config_opts_arm_linux=linux-generic32
|
||||||
|
$(package)_config_opts_aarch64_linux=linux-generic64
|
||||||
|
$(package)_config_opts_mipsel_linux=linux-generic32
|
||||||
|
$(package)_config_opts_mips_linux=linux-generic32
|
||||||
|
$(package)_config_opts_powerpc_linux=linux-generic32
|
||||||
|
$(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc
|
||||||
|
$(package)_config_opts_x86_64_mingw32=mingw64
|
||||||
|
$(package)_config_opts_i686_mingw32=mingw
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
sed -i.old "/define DATE/d" util/mkbuildinf.pl && \
|
||||||
|
sed -i.old "s|engines apps test|engines|" Makefile.org
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
./Configure $($(package)_config_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) -j1 build_libs libcrypto.pc libssl.pc openssl.pc
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) INSTALL_PREFIX=$($(package)_staging_dir) -j1 install_sw
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm -rf share bin etc
|
||||||
|
endef
|
||||||
24
contrib/depends/packages/packages.mk
Normal file
24
contrib/depends/packages/packages.mk
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
packages:=boost openssl libevent zeromq cppzmq zlib expat ldns cppzmq readline libiconv qt hidapi
|
||||||
|
native_packages := native_ccache
|
||||||
|
|
||||||
|
wallet_packages=bdb
|
||||||
|
|
||||||
|
darwin_native_packages = native_biplist native_ds_store native_mac_alias
|
||||||
|
darwin_packages = sodium-darwin
|
||||||
|
|
||||||
|
linux_packages = eudev libusb
|
||||||
|
|
||||||
|
ifeq ($(host_os),linux)
|
||||||
|
packages += unwind
|
||||||
|
packages += sodium
|
||||||
|
endif
|
||||||
|
ifeq ($(host_os),mingw32)
|
||||||
|
packages += icu4c
|
||||||
|
packages += sodium
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(build_os),darwin)
|
||||||
|
darwin_native_packages += native_cctools native_cdrkit native_libdmg-hfsplus
|
||||||
|
packages += readline
|
||||||
|
endif
|
||||||
|
|
||||||
29
contrib/depends/packages/protobuf.mk
Normal file
29
contrib/depends/packages/protobuf.mk
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package=protobuf
|
||||||
|
$(package)_version=$(native_$(package)_version)
|
||||||
|
$(package)_download_path=$(native_$(package)_download_path)
|
||||||
|
$(package)_file_name=$(native_$(package)_file_name)
|
||||||
|
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
||||||
|
$(package)_dependencies=native_$(package)
|
||||||
|
$(package)_cxxflags=-std=c++11
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) -C src libprotobuf.la
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) -C src install-libLTLIBRARIES install-nobase_includeHEADERS &&\
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm lib/libprotoc.a
|
||||||
|
endef
|
||||||
150
contrib/depends/packages/qt.mk
Normal file
150
contrib/depends/packages/qt.mk
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
PACKAGE=qt
|
||||||
|
$(package)_version=5.7.1
|
||||||
|
$(package)_download_path=http://download.qt.io/official_releases/qt/5.7/$($(package)_version)/submodules
|
||||||
|
$(package)_suffix=opensource-src-$($(package)_version).tar.gz
|
||||||
|
$(package)_file_name=qtbase-$($(package)_suffix)
|
||||||
|
$(package)_sha256_hash=95f83e532d23b3ddbde7973f380ecae1bac13230340557276f75f2e37984e410
|
||||||
|
$(package)_dependencies=openssl zlib
|
||||||
|
$(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 += -openssl-linked
|
||||||
|
$(package)_config_opts += -optimized-qmake
|
||||||
|
$(package)_config_opts += -pch
|
||||||
|
$(package)_config_opts += -pkg-config
|
||||||
|
$(package)_config_opts += -qt-libpng
|
||||||
|
$(package)_config_opts += -qt-libjpeg
|
||||||
|
$(package)_config_opts += -qt-pcre
|
||||||
|
$(package)_config_opts += -system-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 "host_build: QT_CONFIG ~= s/system-zlib/zlib" >> mkspecs/qconfig.pri && \
|
||||||
|
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
|
||||||
33
contrib/depends/packages/readline.mk
Normal file
33
contrib/depends/packages/readline.mk
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
package=readline
|
||||||
|
$(package)_version=6.3
|
||||||
|
$(package)_download_path=ftp://ftp.cwru.edu/pub/bash/
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43
|
||||||
|
$(package)_patches=readline-1.patch
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_build_opts=CC="$($(package)_cc)"
|
||||||
|
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||||
|
$(package)_config_opts=--prefix=$(host_prefix)
|
||||||
|
$(package)_config_opts+=--disable-shared --enable-multibye --without-purify --without-curses
|
||||||
|
$(package)_config_opts_release=--disable-debug-mode
|
||||||
|
$(package)_build_opts=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/readline-1.patch &&\
|
||||||
|
export bash_cv_have_mbstate_t=yes &&\
|
||||||
|
export bash_cv_wcwidth_broken=yes &&\
|
||||||
|
./configure $($(package)_config_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) $($(package)_build_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
endef
|
||||||
25
contrib/depends/packages/sodium-darwin.mk
Normal file
25
contrib/depends/packages/sodium-darwin.mk
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package=sodium-darwin
|
||||||
|
$(package)_version=1.0.15
|
||||||
|
$(package)_download_path=https://download.libsodium.org/libsodium/releases/
|
||||||
|
$(package)_file_name=libsodium-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_build_opts_darwin=OS=Darwin LIBTOOL="$($(package)_libtool)"
|
||||||
|
$(package)_config_opts=--enable-static --disable-shared
|
||||||
|
$(package)_config_opts+=--prefix=$(host_prefix)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
./autogen.sh &&\
|
||||||
|
$($(package)_autoconf) $($(package)_config_opts) 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)"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
echo "path is problematic here" &&\
|
||||||
|
make
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
23
contrib/depends/packages/sodium.mk
Normal file
23
contrib/depends/packages/sodium.mk
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package=sodium
|
||||||
|
$(package)_version=1.0.15
|
||||||
|
$(package)_download_path=https://download.libsodium.org/libsodium/releases/
|
||||||
|
$(package)_file_name=libsodium-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--enable-static --disable-shared
|
||||||
|
$(package)_config_opts+=--prefix=$(host_prefix)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
./autogen.sh &&\
|
||||||
|
$($(package)_autoconf) $($(package)_config_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
28
contrib/depends/packages/unbound.mk
Normal file
28
contrib/depends/packages/unbound.mk
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package=unbound
|
||||||
|
$(package)_version=1.6.8
|
||||||
|
$(package)_download_path=http://www.unbound.net/downloads/
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=e3b428e33f56a45417107448418865fe08d58e0e7fea199b855515f60884dd49
|
||||||
|
$(package)_dependencies=openssl expat ldns
|
||||||
|
|
||||||
|
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_linux=--with-pic
|
||||||
|
$(package)_config_opts_w64=--enable-static-exe --sysconfdir=/etc --prefix=$(host_prefix) --target=$(host_prefix)
|
||||||
|
$(package)_build_opts_mingw32=LDFLAGS="$($(package)_ldflags) -lpthread"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf) $($(package)_config_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) $($(package)_build_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
endef
|
||||||
22
contrib/depends/packages/unwind.mk
Normal file
22
contrib/depends/packages/unwind.mk
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package=unwind
|
||||||
|
$(package)_version=1.2
|
||||||
|
$(package)_download_path=http://download.savannah.nongnu.org/releases/libunwind
|
||||||
|
$(package)_file_name=lib$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=1de38ffbdc88bd694d10081865871cd2bfbb02ad8ef9e1606aee18d65532b992
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
cp -f $(BASEDIR)/config.guess config/config.guess &&\
|
||||||
|
cp -f $(BASEDIR)/config.sub config/config.sub &&\
|
||||||
|
$($(package)_autoconf) --disable-shared --enable-static
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
endef
|
||||||
21
contrib/depends/packages/xproto.mk
Normal file
21
contrib/depends/packages/xproto.mk
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package=xproto
|
||||||
|
$(package)_version=7.0.26
|
||||||
|
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/proto
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
||||||
|
$(package)_sha256_hash=636162c1759805a5a0114a369dffdeccb8af8c859ef6e1445f26a4e6e046514f
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||||
|
endef
|
||||||
34
contrib/depends/packages/zeromq.mk
Normal file
34
contrib/depends/packages/zeromq.mk
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
package=zeromq
|
||||||
|
$(package)_version=4.1.5
|
||||||
|
$(package)_download_path=https://github.com/zeromq/zeromq4-1/releases/download/v$($(package)_version)/
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=04aac57f081ffa3a2ee5ed04887be9e205df3a7ddade0027460b8042432bdbcf
|
||||||
|
$(package)_patches=9114d3957725acd34aa8b8d011585812f3369411.patch 9e6745c12e0b100cd38acecc16ce7db02905e27c.patch
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--without-documentation --disable-shared --without-libsodium --disable-curve
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
$(package)_cxxflags=-std=c++11
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_preprocess_cmds
|
||||||
|
patch -p1 < $($(package)_patch_dir)/9114d3957725acd34aa8b8d011585812f3369411.patch && \
|
||||||
|
patch -p1 < $($(package)_patch_dir)/9e6745c12e0b100cd38acecc16ce7db02905e27c.patch && \
|
||||||
|
./autogen.sh
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) libzmq.la
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install-libLTLIBRARIES install-includeHEADERS install-pkgconfigDATA
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm -rf bin share
|
||||||
|
endef
|
||||||
27
contrib/depends/packages/zlib.mk
Normal file
27
contrib/depends/packages/zlib.mk
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package=zlib
|
||||||
|
$(package)_version=1.2.11
|
||||||
|
$(package)_download_path=http://www.zlib.net
|
||||||
|
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||||
|
$(package)_sha256_hash=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_build_opts= CC="$($(package)_cc)"
|
||||||
|
$(package)_build_opts+=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC"
|
||||||
|
$(package)_build_opts+=RANLIB="$($(package)_ranlib)"
|
||||||
|
$(package)_build_opts+=AR="$($(package)_ar)"
|
||||||
|
$(package)_build_opts_darwin+=AR="$($(package)_libtool)"
|
||||||
|
$(package)_build_opts_darwin+=ARFLAGS="-o"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
./configure --static --prefix=$(host_prefix)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) $($(package)_build_opts) libz.a
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install $($(package)_build_opts)
|
||||||
|
endef
|
||||||
|
|
||||||
67
contrib/depends/patches/cmake/cmake-1-fixes.patch
Normal file
67
contrib/depends/patches/cmake/cmake-1-fixes.patch
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
This file is part of MXE. See LICENSE.md for licensing information.
|
||||||
|
|
||||||
|
Contains ad hoc patches for cross building.
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Theodore <tonyt@logyst.com>
|
||||||
|
Date: Fri, 12 Aug 2016 02:01:20 +1000
|
||||||
|
Subject: [PATCH 1/3] fix windres invocation options
|
||||||
|
|
||||||
|
windres doesn't recognise various gcc flags like -mms-bitfields,
|
||||||
|
-fopenmp, -mthreads etc. (basically not `-D` or `-I`)
|
||||||
|
|
||||||
|
diff --git a/Modules/Platform/Windows-windres.cmake b/Modules/Platform/Windows-windres.cmake
|
||||||
|
index 1111111..2222222 100644
|
||||||
|
--- a/Modules/Platform/Windows-windres.cmake
|
||||||
|
+++ b/Modules/Platform/Windows-windres.cmake
|
||||||
|
@@ -1 +1 @@
|
||||||
|
-set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff <DEFINES> <INCLUDES> <FLAGS> <SOURCE> <OBJECT>")
|
||||||
|
+set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff <DEFINES> <INCLUDES> <SOURCE> <OBJECT>")
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Theodore <tonyt@logyst.com>
|
||||||
|
Date: Tue, 25 Jul 2017 20:34:56 +1000
|
||||||
|
Subject: [PATCH 2/3] add option to disable -isystem
|
||||||
|
|
||||||
|
taken from (not accepted):
|
||||||
|
https://gitlab.kitware.com/cmake/cmake/merge_requests/895
|
||||||
|
|
||||||
|
see also:
|
||||||
|
https://gitlab.kitware.com/cmake/cmake/issues/16291
|
||||||
|
https://gitlab.kitware.com/cmake/cmake/issues/16919
|
||||||
|
|
||||||
|
diff --git a/Modules/Compiler/GNU.cmake b/Modules/Compiler/GNU.cmake
|
||||||
|
index 1111111..2222222 100644
|
||||||
|
--- a/Modules/Compiler/GNU.cmake
|
||||||
|
+++ b/Modules/Compiler/GNU.cmake
|
||||||
|
@@ -42,7 +42,7 @@ macro(__compiler_gnu lang)
|
||||||
|
string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
|
||||||
|
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
|
||||||
|
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
|
||||||
|
- if(NOT APPLE OR NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4) # work around #4462
|
||||||
|
+ if(NOT APPLE OR NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4 AND (NOT MXE_DISABLE_INCLUDE_SYSTEM_FLAG)) # work around #4462
|
||||||
|
set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Theodore <tonyt@logyst.com>
|
||||||
|
Date: Tue, 15 Aug 2017 15:25:06 +1000
|
||||||
|
Subject: [PATCH 3/3] add CPACK_NSIS_EXECUTABLE variable
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx
|
||||||
|
index 1111111..2222222 100644
|
||||||
|
--- a/Source/CPack/cmCPackNSISGenerator.cxx
|
||||||
|
+++ b/Source/CPack/cmCPackNSISGenerator.cxx
|
||||||
|
@@ -384,7 +384,9 @@ int cmCPackNSISGenerator::InitializeInternal()
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- nsisPath = cmSystemTools::FindProgram("makensis", path, false);
|
||||||
|
+ this->SetOptionIfNotSet("CPACK_NSIS_EXECUTABLE", "makensis");
|
||||||
|
+ nsisPath = cmSystemTools::FindProgram(
|
||||||
|
+ this->GetOption("CPACK_NSIS_EXECUTABLE"), path, false);
|
||||||
|
|
||||||
|
if (nsisPath.empty()) {
|
||||||
|
cmCPackLogger(
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
Don't build object files twice
|
||||||
|
|
||||||
|
When passed --enable-static and --enable-shared, icu will generate
|
||||||
|
both a shared and a static version of its libraries.
|
||||||
|
|
||||||
|
However, in order to do so, it builds each and every object file
|
||||||
|
twice: once with -fPIC (for the shared library), and once without
|
||||||
|
-fPIC (for the static library). While admittedly building -fPIC for a
|
||||||
|
static library generates a slightly suboptimal code, this is what all
|
||||||
|
the autotools-based project are doing. They build each object file
|
||||||
|
once, and they use it for both the static and shared libraries.
|
||||||
|
|
||||||
|
icu builds the object files for the shared library as .o files, and
|
||||||
|
the object files for static library as .ao files. By simply changing
|
||||||
|
the suffix of object files used for static libraries to ".o", we tell
|
||||||
|
icu to use the ones built for the shared library (i.e, with -fPIC),
|
||||||
|
and avoid the double build of icu.
|
||||||
|
|
||||||
|
On a fast build server, this brings the target icu build from
|
||||||
|
3m41.302s down to 1m43.926s (approximate numbers: some other builds
|
||||||
|
are running on the system at the same time).
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||||
|
|
||||||
|
Index: b/source/config/mh-linux
|
||||||
|
===================================================================
|
||||||
|
--- a/source/config/mh-linux
|
||||||
|
+++ b/source/config/mh-linux
|
||||||
|
@@ -38,7 +38,7 @@
|
||||||
|
## Shared object suffix
|
||||||
|
SO = so
|
||||||
|
## Non-shared intermediate object suffix
|
||||||
|
-STATIC_O = ao
|
||||||
|
+STATIC_O = o
|
||||||
|
|
||||||
|
## Compilation rules
|
||||||
|
%.$(STATIC_O): $(srcdir)/%.c
|
||||||
29
contrib/depends/patches/native_biplist/sorted_list.patch
Normal file
29
contrib/depends/patches/native_biplist/sorted_list.patch
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
--- a/biplist/__init__.py 2014-10-26 19:03:11.000000000 +0000
|
||||||
|
+++ b/biplist/__init__.py 2016-07-19 19:30:17.663521999 +0000
|
||||||
|
@@ -541,7 +541,7 @@
|
||||||
|
return HashableWrapper(n)
|
||||||
|
elif isinstance(root, dict):
|
||||||
|
n = {}
|
||||||
|
- for key, value in iteritems(root):
|
||||||
|
+ for key, value in sorted(iteritems(root)):
|
||||||
|
n[self.wrapRoot(key)] = self.wrapRoot(value)
|
||||||
|
return HashableWrapper(n)
|
||||||
|
elif isinstance(root, list):
|
||||||
|
@@ -616,7 +616,7 @@
|
||||||
|
elif isinstance(obj, dict):
|
||||||
|
size = proc_size(len(obj))
|
||||||
|
self.incrementByteCount('dictBytes', incr=1+size)
|
||||||
|
- for key, value in iteritems(obj):
|
||||||
|
+ for key, value in sorted(iteritems(obj)):
|
||||||
|
check_key(key)
|
||||||
|
self.computeOffsets(key, asReference=True)
|
||||||
|
self.computeOffsets(value, asReference=True)
|
||||||
|
@@ -714,7 +714,7 @@
|
||||||
|
keys = []
|
||||||
|
values = []
|
||||||
|
objectsToWrite = []
|
||||||
|
- for key, value in iteritems(obj):
|
||||||
|
+ for key, value in sorted(iteritems(obj)):
|
||||||
|
keys.append(key)
|
||||||
|
values.append(value)
|
||||||
|
for key in keys:
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
--- cdrkit-1.1.11.old/genisoimage/tree.c 2008-10-21 19:57:47.000000000 -0400
|
||||||
|
+++ cdrkit-1.1.11/genisoimage/tree.c 2013-12-06 00:23:18.489622668 -0500
|
||||||
|
@@ -1139,8 +1139,9 @@
|
||||||
|
scan_directory_tree(struct directory *this_dir, char *path,
|
||||||
|
struct directory_entry *de)
|
||||||
|
{
|
||||||
|
- DIR *current_dir;
|
||||||
|
+ int current_file;
|
||||||
|
char whole_path[PATH_MAX];
|
||||||
|
+ struct dirent **d_list;
|
||||||
|
struct dirent *d_entry;
|
||||||
|
struct directory *parent;
|
||||||
|
int dflag;
|
||||||
|
@@ -1164,7 +1165,8 @@
|
||||||
|
this_dir->dir_flags |= DIR_WAS_SCANNED;
|
||||||
|
|
||||||
|
errno = 0; /* Paranoia */
|
||||||
|
- current_dir = opendir(path);
|
||||||
|
+ //current_dir = opendir(path);
|
||||||
|
+ current_file = scandir(path, &d_list, NULL, alphasort);
|
||||||
|
d_entry = NULL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -1173,12 +1175,12 @@
|
||||||
|
*/
|
||||||
|
old_path = path;
|
||||||
|
|
||||||
|
- if (current_dir) {
|
||||||
|
+ if (current_file >= 0) {
|
||||||
|
errno = 0;
|
||||||
|
- d_entry = readdir(current_dir);
|
||||||
|
+ d_entry = d_list[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!current_dir || !d_entry) {
|
||||||
|
+ if (current_file < 0 || !d_entry) {
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
#ifdef USE_LIBSCHILY
|
||||||
|
@@ -1191,8 +1193,8 @@
|
||||||
|
de->isorec.flags[0] &= ~ISO_DIRECTORY;
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
- if (current_dir)
|
||||||
|
- closedir(current_dir);
|
||||||
|
+ if(d_list)
|
||||||
|
+ free(d_list);
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
#ifdef ABORT_DEEP_ISO_ONLY
|
||||||
|
@@ -1208,7 +1210,7 @@
|
||||||
|
errmsgno(EX_BAD, "use Rock Ridge extensions via -R or -r,\n");
|
||||||
|
errmsgno(EX_BAD, "or allow deep ISO9660 directory nesting via -D.\n");
|
||||||
|
}
|
||||||
|
- closedir(current_dir);
|
||||||
|
+ free(d_list);
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@@ -1250,13 +1252,13 @@
|
||||||
|
* The first time through, skip this, since we already asked
|
||||||
|
* for the first entry when we opened the directory.
|
||||||
|
*/
|
||||||
|
- if (dflag)
|
||||||
|
- d_entry = readdir(current_dir);
|
||||||
|
+ if (dflag && current_file >= 0)
|
||||||
|
+ d_entry = d_list[current_file];
|
||||||
|
dflag++;
|
||||||
|
|
||||||
|
- if (!d_entry)
|
||||||
|
+ if (current_file < 0)
|
||||||
|
break;
|
||||||
|
-
|
||||||
|
+ current_file--;
|
||||||
|
/* OK, got a valid entry */
|
||||||
|
|
||||||
|
/* If we do not want all files, then pitch the backups. */
|
||||||
|
@@ -1348,7 +1350,7 @@
|
||||||
|
insert_file_entry(this_dir, whole_path, d_entry->d_name);
|
||||||
|
#endif /* APPLE_HYB */
|
||||||
|
}
|
||||||
|
- closedir(current_dir);
|
||||||
|
+ free(d_list);
|
||||||
|
|
||||||
|
#ifdef APPLE_HYB
|
||||||
|
/*
|
||||||
72
contrib/depends/patches/native_mac_alias/python3.patch
Normal file
72
contrib/depends/patches/native_mac_alias/python3.patch
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
diff -dur a/mac_alias/alias.py b/mac_alias/alias.py
|
||||||
|
--- a/mac_alias/alias.py 2015-10-19 12:12:48.000000000 +0200
|
||||||
|
+++ b/mac_alias/alias.py 2016-04-03 12:13:12.037159417 +0200
|
||||||
|
@@ -243,10 +243,10 @@
|
||||||
|
alias = Alias()
|
||||||
|
alias.appinfo = appinfo
|
||||||
|
|
||||||
|
- alias.volume = VolumeInfo (volname.replace('/',':'),
|
||||||
|
+ alias.volume = VolumeInfo (volname.decode().replace('/',':'),
|
||||||
|
voldate, fstype, disktype,
|
||||||
|
volattrs, volfsid)
|
||||||
|
- alias.target = TargetInfo (kind, filename.replace('/',':'),
|
||||||
|
+ alias.target = TargetInfo (kind, filename.decode().replace('/',':'),
|
||||||
|
folder_cnid, cnid,
|
||||||
|
crdate, creator_code, type_code)
|
||||||
|
alias.target.levels_from = levels_from
|
||||||
|
@@ -261,9 +261,9 @@
|
||||||
|
b.read(1)
|
||||||
|
|
||||||
|
if tag == TAG_CARBON_FOLDER_NAME:
|
||||||
|
- alias.target.folder_name = value.replace('/',':')
|
||||||
|
+ alias.target.folder_name = value.decode().replace('/',':')
|
||||||
|
elif tag == TAG_CNID_PATH:
|
||||||
|
- alias.target.cnid_path = struct.unpack(b'>%uI' % (length // 4),
|
||||||
|
+ alias.target.cnid_path = struct.unpack('>%uI' % (length // 4),
|
||||||
|
value)
|
||||||
|
elif tag == TAG_CARBON_PATH:
|
||||||
|
alias.target.carbon_path = value
|
||||||
|
@@ -298,9 +298,9 @@
|
||||||
|
alias.target.creation_date \
|
||||||
|
= mac_epoch + datetime.timedelta(seconds=seconds)
|
||||||
|
elif tag == TAG_POSIX_PATH:
|
||||||
|
- alias.target.posix_path = value
|
||||||
|
+ alias.target.posix_path = value.decode()
|
||||||
|
elif tag == TAG_POSIX_PATH_TO_MOUNTPOINT:
|
||||||
|
- alias.volume.posix_path = value
|
||||||
|
+ alias.volume.posix_path = value.decode()
|
||||||
|
elif tag == TAG_RECURSIVE_ALIAS_OF_DISK_IMAGE:
|
||||||
|
alias.volume.disk_image_alias = Alias.from_bytes(value)
|
||||||
|
elif tag == TAG_USER_HOME_LENGTH_PREFIX:
|
||||||
|
@@ -422,13 +422,13 @@
|
||||||
|
# (so doing so is ridiculous, and nothing could rely on it).
|
||||||
|
b.write(struct.pack(b'>h28pI2shI64pII4s4shhI2s10s',
|
||||||
|
self.target.kind,
|
||||||
|
- carbon_volname, voldate,
|
||||||
|
+ carbon_volname, int(voldate),
|
||||||
|
self.volume.fs_type,
|
||||||
|
self.volume.disk_type,
|
||||||
|
self.target.folder_cnid,
|
||||||
|
carbon_filename,
|
||||||
|
self.target.cnid,
|
||||||
|
- crdate,
|
||||||
|
+ int(crdate),
|
||||||
|
self.target.creator_code,
|
||||||
|
self.target.type_code,
|
||||||
|
self.target.levels_from,
|
||||||
|
@@ -449,12 +449,12 @@
|
||||||
|
|
||||||
|
b.write(struct.pack(b'>hhQhhQ',
|
||||||
|
TAG_HIGH_RES_VOLUME_CREATION_DATE,
|
||||||
|
- 8, long(voldate * 65536),
|
||||||
|
+ 8, int(voldate * 65536),
|
||||||
|
TAG_HIGH_RES_CREATION_DATE,
|
||||||
|
- 8, long(crdate * 65536)))
|
||||||
|
+ 8, int(crdate * 65536)))
|
||||||
|
|
||||||
|
if self.target.cnid_path:
|
||||||
|
- cnid_path = struct.pack(b'>%uI' % len(self.target.cnid_path),
|
||||||
|
+ cnid_path = struct.pack('>%uI' % len(self.target.cnid_path),
|
||||||
|
*self.target.cnid_path)
|
||||||
|
b.write(struct.pack(b'>hh', TAG_CNID_PATH,
|
||||||
|
len(cnid_path)))
|
||||||
11
contrib/depends/patches/qt/fix_qt_pkgconfig.patch
Normal file
11
contrib/depends/patches/qt/fix_qt_pkgconfig.patch
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
--- 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: \
|
||||||
37
contrib/depends/patches/qt/pidlist_absolute.patch
Normal file
37
contrib/depends/patches/qt/pidlist_absolute.patch
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
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()));
|
||||||
34
contrib/depends/patches/qt/qfixed-coretext.patch
Normal file
34
contrib/depends/patches/qt/qfixed-coretext.patch
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
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
|
||||||
187
contrib/depends/patches/readline/readline-1.patch
Normal file
187
contrib/depends/patches/readline/readline-1.patch
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
From c0572cecbeadc8fe24c70c5c39d49210a39ac719 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Timothy Gu <timothygu99@gmail.com>
|
||||||
|
Date: Tue, 30 Sep 2014 10:32:33 -0700
|
||||||
|
Subject: [PATCH 1/2] signals: safeguard the remaining usage of frequently
|
||||||
|
missing signals
|
||||||
|
|
||||||
|
diff --git a/input.c b/input.c
|
||||||
|
index 117dfe8..465f0b9 100644
|
||||||
|
--- a/input.c
|
||||||
|
+++ b/input.c
|
||||||
|
@@ -532,9 +532,17 @@ rl_getc (stream)
|
||||||
|
Otherwise (not EINTR), some error occurred, also signifying EOF. */
|
||||||
|
if (errno != EINTR)
|
||||||
|
return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
|
||||||
|
- else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
|
||||||
|
+ else if (_rl_caught_signal == SIGTERM
|
||||||
|
+#if defined(SIGHUP)
|
||||||
|
+ || _rl_caught_signal == SIGHUP
|
||||||
|
+#endif
|
||||||
|
+ )
|
||||||
|
return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
|
||||||
|
- else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
|
||||||
|
+ else if (_rl_caught_signal == SIGINT
|
||||||
|
+#if defined(SIGQUIT)
|
||||||
|
+ || _rl_caught_signal == SIGQUIT
|
||||||
|
+#endif
|
||||||
|
+ )
|
||||||
|
RL_CHECK_SIGNALS ();
|
||||||
|
|
||||||
|
if (rl_signal_event_hook)
|
||||||
|
diff --git a/signals.c b/signals.c
|
||||||
|
index 61f02f9..7c921d6 100644
|
||||||
|
--- a/signals.c
|
||||||
|
+++ b/signals.c
|
||||||
|
@@ -216,7 +216,9 @@ _rl_handle_signal (sig)
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
|
case SIGTERM:
|
||||||
|
+#if defined (SIGHUP)
|
||||||
|
case SIGHUP:
|
||||||
|
+#endif
|
||||||
|
#if defined (SIGTSTP)
|
||||||
|
case SIGTSTP:
|
||||||
|
case SIGTTOU:
|
||||||
|
@@ -426,7 +428,9 @@ rl_set_signals ()
|
||||||
|
|
||||||
|
rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int);
|
||||||
|
rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term);
|
||||||
|
+#if defined (SIGHUP)
|
||||||
|
rl_maybe_set_sighandler (SIGHUP, rl_signal_handler, &old_hup);
|
||||||
|
+#endif
|
||||||
|
#if defined (SIGQUIT)
|
||||||
|
rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit);
|
||||||
|
#endif
|
||||||
|
@@ -491,7 +495,9 @@ rl_clear_signals ()
|
||||||
|
overhead */
|
||||||
|
rl_maybe_restore_sighandler (SIGINT, &old_int);
|
||||||
|
rl_maybe_restore_sighandler (SIGTERM, &old_term);
|
||||||
|
+#if defined (SIGHUP)
|
||||||
|
rl_maybe_restore_sighandler (SIGHUP, &old_hup);
|
||||||
|
+#endif
|
||||||
|
#if defined (SIGQUIT)
|
||||||
|
rl_maybe_restore_sighandler (SIGQUIT, &old_quit);
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
1.8.3.2
|
||||||
|
|
||||||
|
|
||||||
|
From 6896ffa4fc85bf0dfae58e69a860d2076c1d9fd2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Timothy Gu <timothygu99@gmail.com>
|
||||||
|
Date: Tue, 30 Sep 2014 17:16:32 -0700
|
||||||
|
Subject: [PATCH 2/2] Handle missing S_IS* macros more gracefully
|
||||||
|
|
||||||
|
diff --git a/colors.c b/colors.c
|
||||||
|
index 89d9035..ec19844 100644
|
||||||
|
--- a/colors.c
|
||||||
|
+++ b/colors.c
|
||||||
|
@@ -152,14 +152,22 @@ _rl_print_color_indicator (char *f)
|
||||||
|
{
|
||||||
|
colored_filetype = C_FILE;
|
||||||
|
|
||||||
|
+#if defined (S_ISUID)
|
||||||
|
if ((mode & S_ISUID) != 0 && is_colored (C_SETUID))
|
||||||
|
colored_filetype = C_SETUID;
|
||||||
|
- else if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
|
||||||
|
+ else
|
||||||
|
+#endif
|
||||||
|
+#if defined (S_ISGID)
|
||||||
|
+ if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
|
||||||
|
colored_filetype = C_SETGID;
|
||||||
|
- else if (is_colored (C_CAP) && 0) //f->has_capability)
|
||||||
|
+ else
|
||||||
|
+#endif
|
||||||
|
+ if (is_colored (C_CAP) && 0) //f->has_capability)
|
||||||
|
colored_filetype = C_CAP;
|
||||||
|
+#if defined(S_IXUGO)
|
||||||
|
else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC))
|
||||||
|
colored_filetype = C_EXEC;
|
||||||
|
+#endif
|
||||||
|
else if ((1 < astat.st_nlink) && is_colored (C_MULTIHARDLINK))
|
||||||
|
colored_filetype = C_MULTIHARDLINK;
|
||||||
|
}
|
||||||
|
@@ -173,8 +181,10 @@ _rl_print_color_indicator (char *f)
|
||||||
|
colored_filetype = C_STICKY_OTHER_WRITABLE;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
+#if defined (S_IWOTH)
|
||||||
|
if ((mode & S_IWOTH) != 0 && is_colored (C_OTHER_WRITABLE))
|
||||||
|
colored_filetype = C_OTHER_WRITABLE;
|
||||||
|
+#endif
|
||||||
|
#if defined (S_ISVTX)
|
||||||
|
else if ((mode & S_ISVTX) != 0 && is_colored (C_STICKY))
|
||||||
|
colored_filetype = C_STICKY;
|
||||||
|
diff --git a/colors.h b/colors.h
|
||||||
|
index fc926e5..e62edd0 100644
|
||||||
|
--- a/colors.h
|
||||||
|
+++ b/colors.h
|
||||||
|
@@ -96,7 +96,7 @@ enum indicator_no
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
-#if !S_IXUGO
|
||||||
|
+#if !S_IXUGO && defined(S_IXUSR) && defined(S_IXGRP) && defined(S_IXOTH)
|
||||||
|
# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
diff --git a/posixstat.h b/posixstat.h
|
||||||
|
index 3eb7f29..854a2c9 100644
|
||||||
|
--- a/posixstat.h
|
||||||
|
+++ b/posixstat.h
|
||||||
|
@@ -78,30 +78,44 @@
|
||||||
|
|
||||||
|
#if defined (S_IFBLK) && !defined (S_ISBLK)
|
||||||
|
#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */
|
||||||
|
+#elif !defined (S_IFBLK)
|
||||||
|
+#define S_ISBLK(m) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (S_IFCHR) && !defined (S_ISCHR)
|
||||||
|
#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */
|
||||||
|
+#elif !defined (S_IFCHR)
|
||||||
|
+#define S_ISCHR(m) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (S_IFDIR) && !defined (S_ISDIR)
|
||||||
|
#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */
|
||||||
|
+#elif !defined (S_IFDIR)
|
||||||
|
+#define S_ISDIR(m) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (S_IFREG) && !defined (S_ISREG)
|
||||||
|
#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */
|
||||||
|
+#elif !defined (S_IFREG)
|
||||||
|
+#define S_ISREG(m) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (S_IFIFO) && !defined (S_ISFIFO)
|
||||||
|
#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */
|
||||||
|
+#elif !defined (S_IFIFO)
|
||||||
|
+#define S_ISFIFO(m) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (S_IFLNK) && !defined (S_ISLNK)
|
||||||
|
#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */
|
||||||
|
+#elif !defined (S_IFLNK)
|
||||||
|
+#define S_ISLNK(m) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (S_IFSOCK) && !defined (S_ISSOCK)
|
||||||
|
#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */
|
||||||
|
+#elif !defined (S_IFSOCK)
|
||||||
|
+#define S_ISSOCK(m) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -137,6 +151,8 @@
|
||||||
|
/* These are non-standard, but are used in builtins.c$symbolic_umask() */
|
||||||
|
#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)
|
||||||
|
#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH)
|
||||||
|
+#if defined(S_IXUSR) && defined(S_IXGRP) && defined(S_IXOTH)
|
||||||
|
#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#endif /* _POSIXSTAT_H_ */
|
||||||
|
--
|
||||||
|
1.8.3.2
|
||||||
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
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
|
||||||
29
contrib/depends/protobuf.mk
Normal file
29
contrib/depends/protobuf.mk
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package=protobuf
|
||||||
|
$(package)_version=$(native_$(package)_version)
|
||||||
|
$(package)_download_path=$(native_$(package)_download_path)
|
||||||
|
$(package)_file_name=$(native_$(package)_file_name)
|
||||||
|
$(package)_sha256_hash=$(native_$(package)_sha256_hash)
|
||||||
|
$(package)_dependencies=native_$(package)
|
||||||
|
$(package)_cxxflags=-std=c++11
|
||||||
|
|
||||||
|
define $(package)_set_vars
|
||||||
|
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc
|
||||||
|
$(package)_config_opts_linux=--with-pic
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_config_cmds
|
||||||
|
$($(package)_autoconf)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_build_cmds
|
||||||
|
$(MAKE) -C src libprotobuf.la
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_stage_cmds
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) -C src install-libLTLIBRARIES install-nobase_includeHEADERS &&\
|
||||||
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA
|
||||||
|
endef
|
||||||
|
|
||||||
|
define $(package)_postprocess_cmds
|
||||||
|
rm lib/libprotoc.a
|
||||||
|
endef
|
||||||
91
contrib/depends/toolchain.cmake.in
Normal file
91
contrib/depends/toolchain.cmake.in
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# Set the system name, either Darwin, Linux, or Windows
|
||||||
|
SET(CMAKE_SYSTEM_NAME @depends@)
|
||||||
|
SET(CMAKE_BUILD_TYPE release)
|
||||||
|
|
||||||
|
SET(STATIC true)
|
||||||
|
SET(UNBOUND_STATIC true)
|
||||||
|
|
||||||
|
# where is the target environment
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH @prefix@ /usr)
|
||||||
|
|
||||||
|
SET(ENV{PKG_CONFIG_PATH} @prefix@/lib/pkgconfig)
|
||||||
|
|
||||||
|
SET(LRELEASE_PATH @prefix@/native/bin CACHE FILEPATH "path to lrelease" FORCE)
|
||||||
|
|
||||||
|
SET(Readline_ROOT_DIR @prefix@)
|
||||||
|
|
||||||
|
SET(LIBUNWIND_INCLUDE_DIR @prefix@/include)
|
||||||
|
SET(LIBUNWIND_LIBRARIES @prefix@/lib/libunwind.a)
|
||||||
|
SET(LIBUNWIND_LIBRARY_DIRS @prefix@/lib)
|
||||||
|
|
||||||
|
SET(LIBUSB-1.0_LIBRARY @prefix@/lib/libusb-1.0.a)
|
||||||
|
SET(LIBUDEV_LIBRARY @prefix@/lib/libudev.a)
|
||||||
|
|
||||||
|
SET(ZMQ_INCLUDE_PATH @prefix@/include)
|
||||||
|
SET(ZMQ_LIB @prefix@/lib/libzmq.a)
|
||||||
|
|
||||||
|
SET(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT ON)
|
||||||
|
SET(BOOST_IGNORE_SYSTEM_PATH ON)
|
||||||
|
SET(BOOST_ROOT @prefix@)
|
||||||
|
SET(BOOST_LIBRARYDIR @prefix@/lib)
|
||||||
|
SET(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT OFF)
|
||||||
|
SET(BOOST_NO_SYSTEM_PATHS TRUE)
|
||||||
|
SET(BOOST_USE_STATIC_LIBS TRUE)
|
||||||
|
SET(BOOST_USE_STATIC_RUNTIME TRUE)
|
||||||
|
|
||||||
|
SET(OpenSSL_DIR @prefix@/lib)
|
||||||
|
SET(ARCHITECTURE @arch@)
|
||||||
|
|
||||||
|
# for libraries and headers in the target directories
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # Find programs on host
|
||||||
|
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # Find libs in target
|
||||||
|
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.
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
SET(CMAKE_C_COMPILER @prefix@/native/bin/clang)
|
||||||
|
SET(CMAKE_C_COMPILER_TARGET x86_64-apple-darwin11)
|
||||||
|
SET(CMAKE_CXX_COMPILER @prefix@/native/bin/clang++ -stdlib=libc++)
|
||||||
|
SET(CMAKE_CXX_COMPILER_TARGET x86_64-apple-darwin11)
|
||||||
|
SET(_CMAKE_TOOLCHAIN_PREFIX x86_64-apple-darwin11-)
|
||||||
|
SET(APPLE True)
|
||||||
|
SET(BUILD_TAG "mac-x64")
|
||||||
|
SET(BUILD_64 ON)
|
||||||
|
if(NOT TRAVIS)
|
||||||
|
SET(ARCH "x86_64")
|
||||||
|
endif()
|
||||||
|
SET(BREW OFF)
|
||||||
|
SET(PORT OFF)
|
||||||
|
SET(CMAKE_OSX_SYSROOT "@sdk@/MacOSX10.11.sdk/")
|
||||||
|
SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.08")
|
||||||
|
SET(CMAKE_CXX_STANDARD 11)
|
||||||
|
SET(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||||
|
SET(LLVM_ENABLE_PIC OFF)
|
||||||
|
SET(LLVM_ENABLE_PIE OFF)
|
||||||
|
else()
|
||||||
|
SET(CMAKE_C_COMPILER @CC@)
|
||||||
|
SET(CMAKE_CXX_COMPILER @CXX@)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ARCHITECTURE STREQUAL "arm")
|
||||||
|
set(ARCH "armv7-a")
|
||||||
|
set(ARM ON)
|
||||||
|
set(ARM_ID "armv7-a")
|
||||||
|
set(BUILD_64 OFF)
|
||||||
|
set(CMAKE_BUILD_TYPE release)
|
||||||
|
set(BUILD_TAG "linux-armv7")
|
||||||
|
set(ARM7)
|
||||||
|
elseif(ARCHITECTURE STREQUAL "aarch64")
|
||||||
|
set(ARCH "armv8-a")
|
||||||
|
set(ARM ON)
|
||||||
|
set(ARM_ID "armv8-a")
|
||||||
|
set(BUILD_TAG "linux-armv8")
|
||||||
|
set(BUILD_64 ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ARCHITECTURE STREQUAL "i686" AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
SET(LINUX_32 ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#Create a new global cmake flag that indicates building with depends
|
||||||
|
set (DEPENDS true)
|
||||||
@@ -63,7 +63,8 @@ namespace epee
|
|||||||
|
|
||||||
~async_stdin_reader()
|
~async_stdin_reader()
|
||||||
{
|
{
|
||||||
stop();
|
try { stop(); }
|
||||||
|
catch (...) { /* ignore */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_READLINE
|
#ifdef HAVE_READLINE
|
||||||
@@ -351,8 +352,11 @@ eof:
|
|||||||
|
|
||||||
std::string command;
|
std::string command;
|
||||||
bool get_line_ret = m_stdin_reader.get_line(command);
|
bool get_line_ret = m_stdin_reader.get_line(command);
|
||||||
if (!m_running || m_stdin_reader.eos())
|
if (!m_running)
|
||||||
|
break;
|
||||||
|
if (m_stdin_reader.eos())
|
||||||
{
|
{
|
||||||
|
MGINFO("EOF on stdin, exiting");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!get_line_ret)
|
if (!get_line_ret)
|
||||||
@@ -401,13 +405,19 @@ eof:
|
|||||||
|
|
||||||
|
|
||||||
template<class t_server, class t_handler>
|
template<class t_server, class t_handler>
|
||||||
bool start_default_console(t_server* ptsrv, t_handler handlr, const std::string& prompt, const std::string& usage = "")
|
bool start_default_console(t_server* ptsrv, t_handler handlr, std::function<std::string(void)> prompt, const std::string& usage = "")
|
||||||
{
|
{
|
||||||
std::shared_ptr<async_console_handler> console_handler = std::make_shared<async_console_handler>();
|
std::shared_ptr<async_console_handler> console_handler = std::make_shared<async_console_handler>();
|
||||||
boost::thread([=](){console_handler->run<t_server, t_handler>(ptsrv, handlr, prompt, usage);}).detach();
|
boost::thread([=](){console_handler->run<t_server, t_handler>(ptsrv, handlr, prompt, usage);}).detach();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class t_server, class t_handler>
|
||||||
|
bool start_default_console(t_server* ptsrv, t_handler handlr, const std::string& prompt, const std::string& usage = "")
|
||||||
|
{
|
||||||
|
return start_default_console(ptsrv, handlr, [prompt](){ return prompt; }, usage);
|
||||||
|
}
|
||||||
|
|
||||||
template<class t_server>
|
template<class t_server>
|
||||||
bool start_default_console(t_server* ptsrv, const std::string& prompt, const std::string& usage = "")
|
bool start_default_console(t_server* ptsrv, const std::string& prompt, const std::string& usage = "")
|
||||||
{
|
{
|
||||||
@@ -421,19 +431,31 @@ eof:
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class t_server, class t_handler>
|
template<class t_server, class t_handler>
|
||||||
bool run_default_console_handler_no_srv_param(t_server* ptsrv, t_handler handlr, const std::string& prompt, const std::string& usage = "")
|
bool run_default_console_handler_no_srv_param(t_server* ptsrv, t_handler handlr, std::function<std::string(void)> prompt, const std::string& usage = "")
|
||||||
{
|
{
|
||||||
async_console_handler console_handler;
|
async_console_handler console_handler;
|
||||||
return console_handler.run(ptsrv, boost::bind<bool>(no_srv_param_adapter<t_server, t_handler>, _1, _2, handlr), prompt, usage);
|
return console_handler.run(ptsrv, boost::bind<bool>(no_srv_param_adapter<t_server, t_handler>, _1, _2, handlr), prompt, usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class t_server, class t_handler>
|
template<class t_server, class t_handler>
|
||||||
bool start_default_console_handler_no_srv_param(t_server* ptsrv, t_handler handlr, const std::string& prompt, const std::string& usage = "")
|
bool run_default_console_handler_no_srv_param(t_server* ptsrv, t_handler handlr, const std::string& prompt, const std::string& usage = "")
|
||||||
|
{
|
||||||
|
return run_default_console_handler_no_srv_param(ptsrv, handlr, [prompt](){return prompt;},usage);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class t_server, class t_handler>
|
||||||
|
bool start_default_console_handler_no_srv_param(t_server* ptsrv, t_handler handlr, std::function<std::string(void)> prompt, const std::string& usage = "")
|
||||||
{
|
{
|
||||||
boost::thread( boost::bind(run_default_console_handler_no_srv_param<t_server, t_handler>, ptsrv, handlr, prompt, usage) );
|
boost::thread( boost::bind(run_default_console_handler_no_srv_param<t_server, t_handler>, ptsrv, handlr, prompt, usage) );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class t_server, class t_handler>
|
||||||
|
bool start_default_console_handler_no_srv_param(t_server* ptsrv, t_handler handlr, const std::string& prompt, const std::string& usage = "")
|
||||||
|
{
|
||||||
|
return start_default_console_handler_no_srv_param(ptsrv, handlr, [prompt](){return prompt;}, usage);
|
||||||
|
}
|
||||||
|
|
||||||
/*template<class a>
|
/*template<class a>
|
||||||
bool f(int i, a l)
|
bool f(int i, a l)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,11 +28,12 @@
|
|||||||
#ifndef _FILE_IO_UTILS_H_
|
#ifndef _FILE_IO_UTILS_H_
|
||||||
#define _FILE_IO_UTILS_H_
|
#define _FILE_IO_UTILS_H_
|
||||||
|
|
||||||
#include <iostream>
|
#include <fstream>
|
||||||
#include <boost/filesystem/path.hpp>
|
#include <boost/filesystem/path.hpp>
|
||||||
#include <boost/filesystem/operations.hpp>
|
#include <boost/filesystem/operations.hpp>
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include "string_tools.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// On Windows there is a problem with non-ASCII characters in path and file names
|
// On Windows there is a problem with non-ASCII characters in path and file names
|
||||||
@@ -72,11 +73,9 @@ namespace file_io_utils
|
|||||||
bool save_string_to_file(const std::string& path_to_file, const std::string& str)
|
bool save_string_to_file(const std::string& path_to_file, const std::string& str)
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
WCHAR wide_path[1000];
|
std::wstring wide_path;
|
||||||
int chars = MultiByteToWideChar(CP_UTF8, 0, path_to_file.c_str(), path_to_file.size() + 1, wide_path, 1000);
|
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
|
||||||
if (chars == 0)
|
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
return false;
|
|
||||||
HANDLE file_handle = CreateFileW(wide_path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
if (file_handle == INVALID_HANDLE_VALUE)
|
if (file_handle == INVALID_HANDLE_VALUE)
|
||||||
return false;
|
return false;
|
||||||
DWORD bytes_written;
|
DWORD bytes_written;
|
||||||
@@ -128,18 +127,16 @@ namespace file_io_utils
|
|||||||
|
|
||||||
|
|
||||||
inline
|
inline
|
||||||
bool load_file_to_string(const std::string& path_to_file, std::string& target_str)
|
bool load_file_to_string(const std::string& path_to_file, std::string& target_str, size_t max_size = 1000000000)
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
WCHAR wide_path[1000];
|
std::wstring wide_path;
|
||||||
int chars = MultiByteToWideChar(CP_UTF8, 0, path_to_file.c_str(), path_to_file.size() + 1, wide_path, 1000);
|
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
|
||||||
if (chars == 0)
|
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
return false;
|
|
||||||
HANDLE file_handle = CreateFileW(wide_path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
if (file_handle == INVALID_HANDLE_VALUE)
|
if (file_handle == INVALID_HANDLE_VALUE)
|
||||||
return false;
|
return false;
|
||||||
DWORD file_size = GetFileSize(file_handle, NULL);
|
DWORD file_size = GetFileSize(file_handle, NULL);
|
||||||
if ((file_size == INVALID_FILE_SIZE) || (file_size > 1000000000)) {
|
if ((file_size == INVALID_FILE_SIZE) || (uint64_t)file_size > (uint64_t)max_size) {
|
||||||
CloseHandle(file_handle);
|
CloseHandle(file_handle);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -159,7 +156,7 @@ namespace file_io_utils
|
|||||||
|
|
||||||
std::ifstream::pos_type file_size = fstream.tellg();
|
std::ifstream::pos_type file_size = fstream.tellg();
|
||||||
|
|
||||||
if(file_size > 1000000000)
|
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
|
return false;//don't go crazy
|
||||||
size_t file_size_t = static_cast<size_t>(file_size);
|
size_t file_size_t = static_cast<size_t>(file_size);
|
||||||
|
|
||||||
@@ -202,11 +199,9 @@ namespace file_io_utils
|
|||||||
bool get_file_size(const std::string& path_to_file, uint64_t &size)
|
bool get_file_size(const std::string& path_to_file, uint64_t &size)
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
WCHAR wide_path[1000];
|
std::wstring wide_path;
|
||||||
int chars = MultiByteToWideChar(CP_UTF8, 0, path_to_file.c_str(), path_to_file.size() + 1, wide_path, 1000);
|
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
|
||||||
if (chars == 0)
|
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
return false;
|
|
||||||
HANDLE file_handle = CreateFileW(wide_path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
if (file_handle == INVALID_HANDLE_VALUE)
|
if (file_handle == INVALID_HANDLE_VALUE)
|
||||||
return false;
|
return false;
|
||||||
LARGE_INTEGER file_size;
|
LARGE_INTEGER file_size;
|
||||||
|
|||||||
45
contrib/epee/include/fnv1.h
Normal file
45
contrib/epee/include/fnv1.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
// Copyright (c) 2018, 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.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace epee
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace fnv
|
||||||
|
{
|
||||||
|
inline uint64_t FNV1a(const char *ptr, size_t sz)
|
||||||
|
{
|
||||||
|
uint64_t h = 0xcbf29ce484222325;
|
||||||
|
for (size_t i = 0; i < sz; ++i)
|
||||||
|
h = (h ^ *(const uint8_t*)ptr++) * 0x100000001b3;
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "wipeable_string.h"
|
||||||
#include "span.h"
|
#include "span.h"
|
||||||
|
|
||||||
namespace epee
|
namespace epee
|
||||||
@@ -41,6 +42,9 @@ namespace epee
|
|||||||
{
|
{
|
||||||
//! \return A std::string containing hex of `src`.
|
//! \return A std::string containing hex of `src`.
|
||||||
static std::string string(const span<const std::uint8_t> src);
|
static std::string string(const span<const std::uint8_t> src);
|
||||||
|
//! \return A epee::wipeable_string containing hex of `src`.
|
||||||
|
static epee::wipeable_string wipeable_string(const span<const std::uint8_t> src);
|
||||||
|
template<typename T> static epee::wipeable_string wipeable_string(const T &pod) { return wipeable_string(span<const uint8_t>((const uint8_t*)&pod, sizeof(pod))); }
|
||||||
|
|
||||||
//! \return An array containing hex of `src`.
|
//! \return An array containing hex of `src`.
|
||||||
template<std::size_t N>
|
template<std::size_t N>
|
||||||
@@ -59,6 +63,8 @@ namespace epee
|
|||||||
static void formatted(std::ostream& out, const span<const std::uint8_t> src);
|
static void formatted(std::ostream& out, const span<const std::uint8_t> src);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
template<typename T> T static convert(const span<const std::uint8_t> src);
|
||||||
|
|
||||||
//! Write `src` bytes as hex to `out`. `out` must be twice the length
|
//! Write `src` bytes as hex to `out`. `out` must be twice the length
|
||||||
static void buffer_unchecked(char* out, const span<const std::uint8_t> src) noexcept;
|
static void buffer_unchecked(char* out, const span<const std::uint8_t> src) noexcept;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
#define MONERO_DEFAULT_LOG_CATEGORY "default"
|
#define MONERO_DEFAULT_LOG_CATEGORY "default"
|
||||||
#define MAX_LOG_FILE_SIZE 104850000 // 100 MB - 7600 bytes
|
#define MAX_LOG_FILE_SIZE 104850000 // 100 MB - 7600 bytes
|
||||||
|
#define MAX_LOG_FILES 50
|
||||||
|
|
||||||
#define MCFATAL(cat,x) CLOG(FATAL,cat) << x
|
#define MCFATAL(cat,x) CLOG(FATAL,cat) << x
|
||||||
#define MCERROR(cat,x) CLOG(ERROR,cat) << x
|
#define MCERROR(cat,x) CLOG(ERROR,cat) << x
|
||||||
@@ -105,7 +106,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::string mlog_get_default_log_path(const char *default_filename);
|
std::string mlog_get_default_log_path(const char *default_filename);
|
||||||
void mlog_configure(const std::string &filename_base, bool console, const std::size_t max_log_file_size = MAX_LOG_FILE_SIZE);
|
void mlog_configure(const std::string &filename_base, bool console, const std::size_t max_log_file_size = MAX_LOG_FILE_SIZE, const std::size_t max_log_files = MAX_LOG_FILES);
|
||||||
void mlog_set_categories(const char *categories);
|
void mlog_set_categories(const char *categories);
|
||||||
std::string mlog_get_categories();
|
std::string mlog_get_categories();
|
||||||
void mlog_set_log_level(int level);
|
void mlog_set_log_level(int level);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
//
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <Winsock2.h>
|
#include <winsock2.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|||||||
87
contrib/epee/include/mlocker.h
Normal file
87
contrib/epee/include/mlocker.h
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
// Copyright (c) 2018, 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.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <boost/thread/mutex.hpp>
|
||||||
|
|
||||||
|
namespace epee
|
||||||
|
{
|
||||||
|
class mlocker
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mlocker(void *ptr, size_t len);
|
||||||
|
~mlocker();
|
||||||
|
|
||||||
|
static size_t get_page_size();
|
||||||
|
static size_t get_num_locked_pages();
|
||||||
|
static size_t get_num_locked_objects();
|
||||||
|
|
||||||
|
static void lock(void *ptr, size_t len);
|
||||||
|
static void unlock(void *ptr, size_t len);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static size_t page_size;
|
||||||
|
static size_t num_locked_objects;
|
||||||
|
|
||||||
|
static boost::mutex &mutex();
|
||||||
|
static std::map<size_t, unsigned int> &map();
|
||||||
|
static void lock_page(size_t page);
|
||||||
|
static void unlock_page(size_t page);
|
||||||
|
|
||||||
|
void *ptr;
|
||||||
|
size_t len;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Locks memory while in scope
|
||||||
|
///
|
||||||
|
/// Primarily useful for making sure that private keys don't get swapped out
|
||||||
|
// to disk
|
||||||
|
template <class T>
|
||||||
|
struct mlocked : public T {
|
||||||
|
using type = T;
|
||||||
|
|
||||||
|
mlocked(): T() { mlocker::lock(this, sizeof(T)); }
|
||||||
|
mlocked(const T &t): T(t) { mlocker::lock(this, sizeof(T)); }
|
||||||
|
mlocked(const mlocked<T> &mt): T(mt) { mlocker::lock(this, sizeof(T)); }
|
||||||
|
mlocked(const T &&t): T(t) { mlocker::lock(this, sizeof(T)); }
|
||||||
|
mlocked(const mlocked<T> &&mt): T(mt) { mlocker::lock(this, sizeof(T)); }
|
||||||
|
mlocked<T> &operator=(const mlocked<T> &mt) { T::operator=(mt); return *this; }
|
||||||
|
~mlocked() { mlocker::unlock(this, sizeof(T)); }
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
T& unwrap(mlocked<T>& src) { return src; }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
const T& unwrap(mlocked<T> const& src) { return src; }
|
||||||
|
|
||||||
|
template <class T, size_t N>
|
||||||
|
using mlocked_arr = mlocked<std::array<T, N>>;
|
||||||
|
}
|
||||||
@@ -119,6 +119,7 @@ namespace net_utils
|
|||||||
//----------------- i_service_endpoint ---------------------
|
//----------------- i_service_endpoint ---------------------
|
||||||
virtual bool do_send(const void* ptr, size_t cb); ///< (see do_send from i_service_endpoint)
|
virtual bool do_send(const void* ptr, size_t cb); ///< (see do_send from i_service_endpoint)
|
||||||
virtual bool do_send_chunk(const void* ptr, size_t cb); ///< will send (or queue) a part of data
|
virtual bool do_send_chunk(const void* ptr, size_t cb); ///< will send (or queue) a part of data
|
||||||
|
virtual bool send_done();
|
||||||
virtual bool close();
|
virtual bool close();
|
||||||
virtual bool call_run_once_service_io();
|
virtual bool call_run_once_service_io();
|
||||||
virtual bool request_callback();
|
virtual bool request_callback();
|
||||||
@@ -135,6 +136,14 @@ namespace net_utils
|
|||||||
/// Handle completion of a write operation.
|
/// Handle completion of a write operation.
|
||||||
void handle_write(const boost::system::error_code& e, size_t cb);
|
void handle_write(const boost::system::error_code& e, size_t cb);
|
||||||
|
|
||||||
|
/// reset connection timeout timer and callback
|
||||||
|
void reset_timer(boost::posix_time::milliseconds ms, bool add);
|
||||||
|
boost::posix_time::milliseconds get_default_timeout();
|
||||||
|
boost::posix_time::milliseconds get_timeout_from_bytes_read(size_t bytes);
|
||||||
|
|
||||||
|
/// host connection count tracking
|
||||||
|
unsigned int host_count(const std::string &host, int delta = 0);
|
||||||
|
|
||||||
/// Buffer for incoming data.
|
/// Buffer for incoming data.
|
||||||
boost::array<char, 8192> buffer_;
|
boost::array<char, 8192> buffer_;
|
||||||
//boost::array<char, 1024> buffer_;
|
//boost::array<char, 1024> buffer_;
|
||||||
@@ -149,6 +158,7 @@ namespace net_utils
|
|||||||
std::list<boost::shared_ptr<connection<t_protocol_handler> > > m_self_refs; // add_ref/release support
|
std::list<boost::shared_ptr<connection<t_protocol_handler> > > m_self_refs; // add_ref/release support
|
||||||
critical_section m_self_refs_lock;
|
critical_section m_self_refs_lock;
|
||||||
critical_section m_chunking_lock; // held while we add small chunks of the big do_send() to small do_send_chunk()
|
critical_section m_chunking_lock; // held while we add small chunks of the big do_send() to small do_send_chunk()
|
||||||
|
critical_section m_shutdown_lock; // held while shutting down
|
||||||
|
|
||||||
t_connection_type m_connection_type;
|
t_connection_type m_connection_type;
|
||||||
|
|
||||||
@@ -158,6 +168,11 @@ namespace net_utils
|
|||||||
boost::mutex m_throttle_speed_in_mutex;
|
boost::mutex m_throttle_speed_in_mutex;
|
||||||
boost::mutex m_throttle_speed_out_mutex;
|
boost::mutex m_throttle_speed_out_mutex;
|
||||||
|
|
||||||
|
boost::asio::deadline_timer m_timer;
|
||||||
|
bool m_local;
|
||||||
|
bool m_ready_to_close;
|
||||||
|
std::string m_host;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setRpcStation();
|
void setRpcStation();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -41,8 +41,10 @@
|
|||||||
#include <boost/utility/value_init.hpp>
|
#include <boost/utility/value_init.hpp>
|
||||||
#include <boost/asio/deadline_timer.hpp>
|
#include <boost/asio/deadline_timer.hpp>
|
||||||
#include <boost/date_time/posix_time/posix_time.hpp> // TODO
|
#include <boost/date_time/posix_time/posix_time.hpp> // TODO
|
||||||
#include <boost/thread/v2/thread.hpp> // TODO
|
#include <boost/thread/thread.hpp> // TODO
|
||||||
|
#include <boost/thread/condition_variable.hpp> // TODO
|
||||||
#include "misc_language.h"
|
#include "misc_language.h"
|
||||||
|
#include "net/local_ip.h"
|
||||||
#include "pragma_comp_defs.h"
|
#include "pragma_comp_defs.h"
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@@ -54,6 +56,10 @@
|
|||||||
#undef MONERO_DEFAULT_LOG_CATEGORY
|
#undef MONERO_DEFAULT_LOG_CATEGORY
|
||||||
#define MONERO_DEFAULT_LOG_CATEGORY "net"
|
#define MONERO_DEFAULT_LOG_CATEGORY "net"
|
||||||
|
|
||||||
|
#define DEFAULT_TIMEOUT_MS_LOCAL 1800000 // 30 minutes
|
||||||
|
#define DEFAULT_TIMEOUT_MS_REMOTE 300000 // 5 minutes
|
||||||
|
#define TIMEOUT_EXTRA_MS_PER_BYTE 0.2
|
||||||
|
|
||||||
PRAGMA_WARNING_PUSH
|
PRAGMA_WARNING_PUSH
|
||||||
namespace epee
|
namespace epee
|
||||||
{
|
{
|
||||||
@@ -78,7 +84,10 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
m_pfilter( pfilter ),
|
m_pfilter( pfilter ),
|
||||||
m_connection_type( connection_type ),
|
m_connection_type( connection_type ),
|
||||||
m_throttle_speed_in("speed_in", "throttle_speed_in"),
|
m_throttle_speed_in("speed_in", "throttle_speed_in"),
|
||||||
m_throttle_speed_out("speed_out", "throttle_speed_out")
|
m_throttle_speed_out("speed_out", "throttle_speed_out"),
|
||||||
|
m_timer(io_service),
|
||||||
|
m_local(false),
|
||||||
|
m_ready_to_close(false)
|
||||||
{
|
{
|
||||||
MDEBUG("test, connection constructor set m_connection_type="<<m_connection_type);
|
MDEBUG("test, connection constructor set m_connection_type="<<m_connection_type);
|
||||||
}
|
}
|
||||||
@@ -138,6 +147,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
|
|
||||||
context = boost::value_initialized<t_connection_context>();
|
context = boost::value_initialized<t_connection_context>();
|
||||||
const unsigned long ip_{boost::asio::detail::socket_ops::host_to_network_long(remote_ep.address().to_v4().to_ulong())};
|
const unsigned long ip_{boost::asio::detail::socket_ops::host_to_network_long(remote_ep.address().to_v4().to_ulong())};
|
||||||
|
m_local = epee::net_utils::is_ip_loopback(ip_) || epee::net_utils::is_ip_local(ip_);
|
||||||
|
|
||||||
// create a random uuid
|
// create a random uuid
|
||||||
boost::uuids::uuid random_uuid;
|
boost::uuids::uuid random_uuid;
|
||||||
@@ -156,8 +166,13 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_host = context.m_remote_address.host_str();
|
||||||
|
try { host_count(m_host, 1); } catch(...) { /* ignore */ }
|
||||||
|
|
||||||
m_protocol_handler.after_init_connection();
|
m_protocol_handler.after_init_connection();
|
||||||
|
|
||||||
|
reset_timer(get_default_timeout(), false);
|
||||||
|
|
||||||
socket_.async_read_some(boost::asio::buffer(buffer_),
|
socket_.async_read_some(boost::asio::buffer(buffer_),
|
||||||
strand_.wrap(
|
strand_.wrap(
|
||||||
boost::bind(&connection<t_protocol_handler>::handle_read, self,
|
boost::bind(&connection<t_protocol_handler>::handle_read, self,
|
||||||
@@ -303,6 +318,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
delay *= 0.5;
|
delay *= 0.5;
|
||||||
if (delay > 0) {
|
if (delay > 0) {
|
||||||
long int ms = (long int)(delay * 100);
|
long int ms = (long int)(delay * 100);
|
||||||
|
reset_timer(boost::posix_time::milliseconds(ms + 1), true);
|
||||||
boost::this_thread::sleep_for(boost::chrono::milliseconds(ms));
|
boost::this_thread::sleep_for(boost::chrono::milliseconds(ms));
|
||||||
}
|
}
|
||||||
} while(delay > 0);
|
} while(delay > 0);
|
||||||
@@ -312,6 +328,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
logger_handle_net_read(bytes_transferred);
|
logger_handle_net_read(bytes_transferred);
|
||||||
context.m_last_recv = time(NULL);
|
context.m_last_recv = time(NULL);
|
||||||
context.m_recv_cnt += bytes_transferred;
|
context.m_recv_cnt += bytes_transferred;
|
||||||
|
m_ready_to_close = false;
|
||||||
bool recv_res = m_protocol_handler.handle_recv(buffer_.data(), bytes_transferred);
|
bool recv_res = m_protocol_handler.handle_recv(buffer_.data(), bytes_transferred);
|
||||||
if(!recv_res)
|
if(!recv_res)
|
||||||
{
|
{
|
||||||
@@ -328,6 +345,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
shutdown();
|
shutdown();
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
|
reset_timer(get_timeout_from_bytes_read(bytes_transferred), false);
|
||||||
socket_.async_read_some(boost::asio::buffer(buffer_),
|
socket_.async_read_some(boost::asio::buffer(buffer_),
|
||||||
strand_.wrap(
|
strand_.wrap(
|
||||||
boost::bind(&connection<t_protocol_handler>::handle_read, connection<t_protocol_handler>::shared_from_this(),
|
boost::bind(&connection<t_protocol_handler>::handle_read, connection<t_protocol_handler>::shared_from_this(),
|
||||||
@@ -343,6 +361,13 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
_dbg3("[sock " << socket_.native_handle() << "] Some problems at read: " << e.message() << ':' << e.value());
|
_dbg3("[sock " << socket_.native_handle() << "] Some problems at read: " << e.message() << ':' << e.value());
|
||||||
shutdown();
|
shutdown();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_dbg3("[sock " << socket_.native_handle() << "] peer closed connection");
|
||||||
|
if (m_ready_to_close)
|
||||||
|
shutdown();
|
||||||
|
}
|
||||||
|
m_ready_to_close = true;
|
||||||
}
|
}
|
||||||
// If an error occurs then no new asynchronous operations are started. This
|
// If an error occurs then no new asynchronous operations are started. This
|
||||||
// means that all shared_ptr references to the connection object will
|
// means that all shared_ptr references to the connection object will
|
||||||
@@ -518,7 +543,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
if(m_send_que.size() > 1)
|
if(m_send_que.size() > 1)
|
||||||
{ // active operation should be in progress, nothing to do, just wait last operation callback
|
{ // active operation should be in progress, nothing to do, just wait last operation callback
|
||||||
auto size_now = cb;
|
auto size_now = cb;
|
||||||
MDEBUG("do_send() NOW just queues: packet="<<size_now<<" B, is added to queue-size="<<m_send_que.size());
|
MDEBUG("do_send_chunk() NOW just queues: packet="<<size_now<<" B, is added to queue-size="<<m_send_que.size());
|
||||||
//do_send_handler_delayed( ptr , size_now ); // (((H))) // empty function
|
//do_send_handler_delayed( ptr , size_now ); // (((H))) // empty function
|
||||||
|
|
||||||
LOG_TRACE_CC(context, "[sock " << socket_.native_handle() << "] Async send requested " << m_send_que.front().size());
|
LOG_TRACE_CC(context, "[sock " << socket_.native_handle() << "] Async send requested " << m_send_que.front().size());
|
||||||
@@ -533,11 +558,12 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto size_now = m_send_que.front().size();
|
auto size_now = m_send_que.front().size();
|
||||||
MDEBUG("do_send() NOW SENSD: packet="<<size_now<<" B");
|
MDEBUG("do_send_chunk() NOW SENSD: packet="<<size_now<<" B");
|
||||||
if (speed_limit_is_enabled())
|
if (speed_limit_is_enabled())
|
||||||
do_send_handler_write( ptr , size_now ); // (((H)))
|
do_send_handler_write( ptr , size_now ); // (((H)))
|
||||||
|
|
||||||
CHECK_AND_ASSERT_MES( size_now == m_send_que.front().size(), false, "Unexpected queue size");
|
CHECK_AND_ASSERT_MES( size_now == m_send_que.front().size(), false, "Unexpected queue size");
|
||||||
|
reset_timer(get_default_timeout(), false);
|
||||||
boost::asio::async_write(socket_, boost::asio::buffer(m_send_que.front().data(), size_now ) ,
|
boost::asio::async_write(socket_, boost::asio::buffer(m_send_que.front().data(), size_now ) ,
|
||||||
//strand_.wrap(
|
//strand_.wrap(
|
||||||
boost::bind(&connection<t_protocol_handler>::handle_write, self, _1, _2)
|
boost::bind(&connection<t_protocol_handler>::handle_write, self, _1, _2)
|
||||||
@@ -552,16 +578,91 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
CATCH_ENTRY_L0("connection<t_protocol_handler>::do_send", false);
|
CATCH_ENTRY_L0("connection<t_protocol_handler>::do_send_chunk", false);
|
||||||
} // do_send_chunk
|
} // do_send_chunk
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
template<class t_protocol_handler>
|
template<class t_protocol_handler>
|
||||||
|
boost::posix_time::milliseconds connection<t_protocol_handler>::get_default_timeout()
|
||||||
|
{
|
||||||
|
unsigned count;
|
||||||
|
try { count = host_count(m_host); } catch (...) { count = 0; }
|
||||||
|
const unsigned shift = std::min(std::max(count, 1u) - 1, 8u);
|
||||||
|
boost::posix_time::milliseconds timeout(0);
|
||||||
|
if (m_local)
|
||||||
|
timeout = boost::posix_time::milliseconds(DEFAULT_TIMEOUT_MS_LOCAL >> shift);
|
||||||
|
else
|
||||||
|
timeout = boost::posix_time::milliseconds(DEFAULT_TIMEOUT_MS_REMOTE >> shift);
|
||||||
|
return timeout;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
template<class t_protocol_handler>
|
||||||
|
boost::posix_time::milliseconds connection<t_protocol_handler>::get_timeout_from_bytes_read(size_t bytes)
|
||||||
|
{
|
||||||
|
boost::posix_time::milliseconds ms = (boost::posix_time::milliseconds)(unsigned)(bytes * TIMEOUT_EXTRA_MS_PER_BYTE);
|
||||||
|
ms += m_timer.expires_from_now();
|
||||||
|
if (ms > get_default_timeout())
|
||||||
|
ms = get_default_timeout();
|
||||||
|
return ms;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
template<class t_protocol_handler>
|
||||||
|
unsigned int connection<t_protocol_handler>::host_count(const std::string &host, int delta)
|
||||||
|
{
|
||||||
|
static boost::mutex hosts_mutex;
|
||||||
|
CRITICAL_REGION_LOCAL(hosts_mutex);
|
||||||
|
static std::map<std::string, unsigned int> hosts;
|
||||||
|
unsigned int &val = hosts[host];
|
||||||
|
if (delta > 0)
|
||||||
|
MTRACE("New connection from host " << host << ": " << val);
|
||||||
|
else if (delta < 0)
|
||||||
|
MTRACE("Closed connection from host " << host << ": " << val);
|
||||||
|
CHECK_AND_ASSERT_THROW_MES(delta >= 0 || val >= (unsigned)-delta, "Count would go negative");
|
||||||
|
CHECK_AND_ASSERT_THROW_MES(delta <= 0 || val <= std::numeric_limits<unsigned int>::max() - (unsigned)delta, "Count would wrap");
|
||||||
|
val += delta;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
template<class t_protocol_handler>
|
||||||
|
void connection<t_protocol_handler>::reset_timer(boost::posix_time::milliseconds ms, bool add)
|
||||||
|
{
|
||||||
|
if (m_connection_type != e_connection_type_RPC)
|
||||||
|
return;
|
||||||
|
MTRACE("Setting " << ms << " expiry");
|
||||||
|
auto self = safe_shared_from_this();
|
||||||
|
if(!self)
|
||||||
|
{
|
||||||
|
MERROR("Resetting timer on a dead object");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (add)
|
||||||
|
ms += m_timer.expires_from_now();
|
||||||
|
m_timer.expires_from_now(ms);
|
||||||
|
m_timer.async_wait([=](const boost::system::error_code& ec)
|
||||||
|
{
|
||||||
|
if(ec == boost::asio::error::operation_aborted)
|
||||||
|
return;
|
||||||
|
MDEBUG(context << "connection timeout, closing");
|
||||||
|
self->close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
template<class t_protocol_handler>
|
||||||
bool connection<t_protocol_handler>::shutdown()
|
bool connection<t_protocol_handler>::shutdown()
|
||||||
{
|
{
|
||||||
|
CRITICAL_REGION_BEGIN(m_shutdown_lock);
|
||||||
|
if (m_was_shutdown)
|
||||||
|
return true;
|
||||||
|
m_was_shutdown = true;
|
||||||
// Initiate graceful connection closure.
|
// Initiate graceful connection closure.
|
||||||
|
m_timer.cancel();
|
||||||
boost::system::error_code ignored_ec;
|
boost::system::error_code ignored_ec;
|
||||||
socket_.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignored_ec);
|
socket_.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignored_ec);
|
||||||
m_was_shutdown = true;
|
if (!m_host.empty())
|
||||||
|
{
|
||||||
|
try { host_count(m_host, -1); } catch (...) { /* ignore */ }
|
||||||
|
m_host = "";
|
||||||
|
}
|
||||||
|
CRITICAL_REGION_END();
|
||||||
m_protocol_handler.release_protocol();
|
m_protocol_handler.release_protocol();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -570,7 +671,11 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
bool connection<t_protocol_handler>::close()
|
bool connection<t_protocol_handler>::close()
|
||||||
{
|
{
|
||||||
TRY_ENTRY();
|
TRY_ENTRY();
|
||||||
|
auto self = safe_shared_from_this();
|
||||||
|
if(!self)
|
||||||
|
return false;
|
||||||
//_info("[sock " << socket_.native_handle() << "] Que Shutdown called.");
|
//_info("[sock " << socket_.native_handle() << "] Que Shutdown called.");
|
||||||
|
m_timer.cancel();
|
||||||
size_t send_que_size = 0;
|
size_t send_que_size = 0;
|
||||||
CRITICAL_REGION_BEGIN(m_send_que_lock);
|
CRITICAL_REGION_BEGIN(m_send_que_lock);
|
||||||
send_que_size = m_send_que.size();
|
send_que_size = m_send_que.size();
|
||||||
@@ -586,6 +691,15 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
template<class t_protocol_handler>
|
template<class t_protocol_handler>
|
||||||
|
bool connection<t_protocol_handler>::send_done()
|
||||||
|
{
|
||||||
|
if (m_ready_to_close)
|
||||||
|
return close();
|
||||||
|
m_ready_to_close = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
template<class t_protocol_handler>
|
||||||
bool connection<t_protocol_handler>::cancel()
|
bool connection<t_protocol_handler>::cancel()
|
||||||
{
|
{
|
||||||
return close();
|
return close();
|
||||||
@@ -628,6 +742,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
|
|||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
//have more data to send
|
//have more data to send
|
||||||
|
reset_timer(get_default_timeout(), false);
|
||||||
auto size_now = m_send_que.front().size();
|
auto size_now = m_send_que.front().size();
|
||||||
MDEBUG("handle_write() NOW SENDS: packet="<<size_now<<" B" <<", from queue size="<<m_send_que.size());
|
MDEBUG("handle_write() NOW SENDS: packet="<<size_now<<" B" <<", from queue size="<<m_send_que.size());
|
||||||
if (speed_limit_is_enabled())
|
if (speed_limit_is_enabled())
|
||||||
@@ -922,7 +1037,8 @@ POP_WARNINGS
|
|||||||
void boosted_tcp_server<t_protocol_handler>::handle_accept(const boost::system::error_code& e)
|
void boosted_tcp_server<t_protocol_handler>::handle_accept(const boost::system::error_code& e)
|
||||||
{
|
{
|
||||||
MDEBUG("handle_accept");
|
MDEBUG("handle_accept");
|
||||||
TRY_ENTRY();
|
try
|
||||||
|
{
|
||||||
if (!e)
|
if (!e)
|
||||||
{
|
{
|
||||||
if (m_connection_type == e_connection_type_RPC) {
|
if (m_connection_type == e_connection_type_RPC) {
|
||||||
@@ -940,11 +1056,25 @@ POP_WARNINGS
|
|||||||
|
|
||||||
conn->start(true, 1 < m_threads_count);
|
conn->start(true, 1 < m_threads_count);
|
||||||
conn->save_dbg_log();
|
conn->save_dbg_log();
|
||||||
}else
|
return;
|
||||||
{
|
|
||||||
_erro("Some problems at accept: " << e.message() << ", connections_count = " << m_sock_count);
|
|
||||||
}
|
}
|
||||||
CATCH_ENTRY_L0("boosted_tcp_server<t_protocol_handler>::handle_accept", void());
|
else
|
||||||
|
{
|
||||||
|
MERROR("Error in boosted_tcp_server<t_protocol_handler>::handle_accept: " << e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (const std::exception &e)
|
||||||
|
{
|
||||||
|
MERROR("Exception in boosted_tcp_server<t_protocol_handler>::handle_accept: " << e.what());
|
||||||
|
}
|
||||||
|
|
||||||
|
// error path, if e or exception
|
||||||
|
_erro("Some problems at accept: " << e.message() << ", connections_count = " << m_sock_count);
|
||||||
|
misc_utils::sleep_no_w(100);
|
||||||
|
new_connection_.reset(new connection<t_protocol_handler>(io_service_, m_config, m_sock_count, m_sock_number, m_pfilter, m_connection_type));
|
||||||
|
acceptor_.async_accept(new_connection_->socket(),
|
||||||
|
boost::bind(&boosted_tcp_server<t_protocol_handler>::handle_accept, this,
|
||||||
|
boost::asio::placeholders::error));
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
template<class t_protocol_handler>
|
template<class t_protocol_handler>
|
||||||
@@ -979,8 +1109,16 @@ POP_WARNINGS
|
|||||||
sock_.open(remote_endpoint.protocol());
|
sock_.open(remote_endpoint.protocol());
|
||||||
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
||||||
{
|
{
|
||||||
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(adr.c_str()), 0);
|
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(bind_ip.c_str()), 0);
|
||||||
sock_.bind(local_endpoint);
|
boost::system::error_code ec;
|
||||||
|
sock_.bind(local_endpoint, ec);
|
||||||
|
if (ec)
|
||||||
|
{
|
||||||
|
MERROR("Error binding to " << bind_ip << ": " << ec.message());
|
||||||
|
if (sock_.is_open())
|
||||||
|
sock_.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1085,8 +1223,16 @@ POP_WARNINGS
|
|||||||
sock_.open(remote_endpoint.protocol());
|
sock_.open(remote_endpoint.protocol());
|
||||||
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
if(bind_ip != "0.0.0.0" && bind_ip != "0" && bind_ip != "" )
|
||||||
{
|
{
|
||||||
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(adr.c_str()), 0);
|
boost::asio::ip::tcp::endpoint local_endpoint(boost::asio::ip::address::from_string(bind_ip.c_str()), 0);
|
||||||
sock_.bind(local_endpoint);
|
boost::system::error_code ec;
|
||||||
|
sock_.bind(local_endpoint, ec);
|
||||||
|
if (ec)
|
||||||
|
{
|
||||||
|
MERROR("Error binding to " << bind_ip << ": " << ec.message());
|
||||||
|
if (sock_.is_open())
|
||||||
|
sock_.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr<boost::asio::deadline_timer> sh_deadline(new boost::asio::deadline_timer(io_service_));
|
boost::shared_ptr<boost::asio::deadline_timer> sh_deadline(new boost::asio::deadline_timer(io_service_));
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ namespace net_utils
|
|||||||
typedef t_connection_context connection_context;//t_connection_context net_utils::connection_context_base connection_context;
|
typedef t_connection_context connection_context;//t_connection_context net_utils::connection_context_base connection_context;
|
||||||
typedef http_server_config config_type;
|
typedef http_server_config config_type;
|
||||||
|
|
||||||
simple_http_connection_handler(i_service_endpoint* psnd_hndlr, config_type& config);
|
simple_http_connection_handler(i_service_endpoint* psnd_hndlr, config_type& config, t_connection_context& conn_context);
|
||||||
virtual ~simple_http_connection_handler(){}
|
virtual ~simple_http_connection_handler(){}
|
||||||
|
|
||||||
bool release_protocol()
|
bool release_protocol()
|
||||||
@@ -141,8 +141,10 @@ namespace net_utils
|
|||||||
size_t m_len_summary, m_len_remain;
|
size_t m_len_summary, m_len_remain;
|
||||||
config_type& m_config;
|
config_type& m_config;
|
||||||
bool m_want_close;
|
bool m_want_close;
|
||||||
|
size_t m_newlines;
|
||||||
protected:
|
protected:
|
||||||
i_service_endpoint* m_psnd_hndlr;
|
i_service_endpoint* m_psnd_hndlr;
|
||||||
|
t_connection_context& m_conn_context;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class t_connection_context>
|
template<class t_connection_context>
|
||||||
@@ -174,9 +176,8 @@ namespace net_utils
|
|||||||
typedef custum_handler_config<t_connection_context> config_type;
|
typedef custum_handler_config<t_connection_context> config_type;
|
||||||
|
|
||||||
http_custom_handler(i_service_endpoint* psnd_hndlr, config_type& config, t_connection_context& conn_context)
|
http_custom_handler(i_service_endpoint* psnd_hndlr, config_type& config, t_connection_context& conn_context)
|
||||||
: simple_http_connection_handler<t_connection_context>(psnd_hndlr, config),
|
: simple_http_connection_handler<t_connection_context>(psnd_hndlr, config, conn_context),
|
||||||
m_config(config),
|
m_config(config),
|
||||||
m_conn_context(conn_context),
|
|
||||||
m_auth(m_config.m_user ? http_server_auth{*m_config.m_user, config.rng} : http_server_auth{})
|
m_auth(m_config.m_user ? http_server_auth{*m_config.m_user, config.rng} : http_server_auth{})
|
||||||
{}
|
{}
|
||||||
inline bool handle_request(const http_request_info& query_info, http_response_info& response)
|
inline bool handle_request(const http_request_info& query_info, http_response_info& response)
|
||||||
@@ -196,7 +197,7 @@ namespace net_utils
|
|||||||
response.m_response_comment = "OK";
|
response.m_response_comment = "OK";
|
||||||
response.m_body.clear();
|
response.m_body.clear();
|
||||||
|
|
||||||
return m_config.m_phandler->handle_http_request(query_info, response, m_conn_context);
|
return m_config.m_phandler->handle_http_request(query_info, response, this->m_conn_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool thread_init()
|
virtual bool thread_init()
|
||||||
@@ -218,7 +219,6 @@ namespace net_utils
|
|||||||
private:
|
private:
|
||||||
//simple_http_connection_handler::config_type m_stub_config;
|
//simple_http_connection_handler::config_type m_stub_config;
|
||||||
config_type& m_config;
|
config_type& m_config;
|
||||||
t_connection_context& m_conn_context;
|
|
||||||
http_server_auth m_auth;
|
http_server_auth m_auth;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
#define HTTP_MAX_URI_LEN 9000
|
#define HTTP_MAX_URI_LEN 9000
|
||||||
#define HTTP_MAX_HEADER_LEN 100000
|
#define HTTP_MAX_HEADER_LEN 100000
|
||||||
|
#define HTTP_MAX_STARTING_NEWLINES 8
|
||||||
|
|
||||||
namespace epee
|
namespace epee
|
||||||
{
|
{
|
||||||
@@ -195,7 +196,7 @@ namespace net_utils
|
|||||||
|
|
||||||
//--------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------
|
||||||
template<class t_connection_context>
|
template<class t_connection_context>
|
||||||
simple_http_connection_handler<t_connection_context>::simple_http_connection_handler(i_service_endpoint* psnd_hndlr, config_type& config):
|
simple_http_connection_handler<t_connection_context>::simple_http_connection_handler(i_service_endpoint* psnd_hndlr, config_type& config, t_connection_context& conn_context):
|
||||||
m_state(http_state_retriving_comand_line),
|
m_state(http_state_retriving_comand_line),
|
||||||
m_body_transfer_type(http_body_transfer_undefined),
|
m_body_transfer_type(http_body_transfer_undefined),
|
||||||
m_is_stop_handling(false),
|
m_is_stop_handling(false),
|
||||||
@@ -203,7 +204,9 @@ namespace net_utils
|
|||||||
m_len_remain(0),
|
m_len_remain(0),
|
||||||
m_config(config),
|
m_config(config),
|
||||||
m_want_close(false),
|
m_want_close(false),
|
||||||
m_psnd_hndlr(psnd_hndlr)
|
m_newlines(0),
|
||||||
|
m_psnd_hndlr(psnd_hndlr),
|
||||||
|
m_conn_context(conn_context)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -216,6 +219,7 @@ namespace net_utils
|
|||||||
m_body_transfer_type = http_body_transfer_undefined;
|
m_body_transfer_type = http_body_transfer_undefined;
|
||||||
m_query_info.clear();
|
m_query_info.clear();
|
||||||
m_len_summary = 0;
|
m_len_summary = 0;
|
||||||
|
m_newlines = 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------
|
||||||
@@ -236,6 +240,8 @@ namespace net_utils
|
|||||||
bool simple_http_connection_handler<t_connection_context>::handle_buff_in(std::string& buf)
|
bool simple_http_connection_handler<t_connection_context>::handle_buff_in(std::string& buf)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
size_t ndel;
|
||||||
|
|
||||||
if(m_cache.size())
|
if(m_cache.size())
|
||||||
m_cache += buf;
|
m_cache += buf;
|
||||||
else
|
else
|
||||||
@@ -253,11 +259,19 @@ namespace net_utils
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
//check_and_handle_fake_response();
|
//check_and_handle_fake_response();
|
||||||
if((m_cache[0] == '\r' || m_cache[0] == '\n'))
|
ndel = m_cache.find_first_not_of("\r\n");
|
||||||
|
if (ndel != 0)
|
||||||
{
|
{
|
||||||
//some times it could be that before query line cold be few line breaks
|
//some times it could be that before query line cold be few line breaks
|
||||||
//so we have to be calm without panic with assers
|
//so we have to be calm without panic with assers
|
||||||
m_cache.erase(0, 1);
|
m_newlines += std::string::npos == ndel ? m_cache.size() : ndel;
|
||||||
|
if (m_newlines > HTTP_MAX_STARTING_NEWLINES)
|
||||||
|
{
|
||||||
|
LOG_ERROR("simple_http_connection_handler::handle_buff_out: Too many starting newlines");
|
||||||
|
m_state = http_state_error;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
m_cache.erase(0, ndel);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,7 +282,7 @@ namespace net_utils
|
|||||||
m_is_stop_handling = true;
|
m_is_stop_handling = true;
|
||||||
if(m_cache.size() > HTTP_MAX_URI_LEN)
|
if(m_cache.size() > HTTP_MAX_URI_LEN)
|
||||||
{
|
{
|
||||||
LOG_ERROR("simple_http_connection_handler::handle_buff_out: Too long URI line");
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler::handle_buff_out: Too long URI line");
|
||||||
m_state = http_state_error;
|
m_state = http_state_error;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -282,7 +296,7 @@ namespace net_utils
|
|||||||
m_is_stop_handling = true;
|
m_is_stop_handling = true;
|
||||||
if(m_cache.size() > HTTP_MAX_HEADER_LEN)
|
if(m_cache.size() > HTTP_MAX_HEADER_LEN)
|
||||||
{
|
{
|
||||||
LOG_ERROR("simple_http_connection_handler::handle_buff_in: Too long header area");
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler::handle_buff_in: Too long header area");
|
||||||
m_state = http_state_error;
|
m_state = http_state_error;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -297,10 +311,10 @@ namespace net_utils
|
|||||||
case http_state_connection_close:
|
case http_state_connection_close:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR("simple_http_connection_handler::handle_char_out: Wrong state: " << m_state);
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler::handle_char_out: Wrong state: " << m_state);
|
||||||
return false;
|
return false;
|
||||||
case http_state_error:
|
case http_state_error:
|
||||||
LOG_ERROR("simple_http_connection_handler::handle_char_out: Error state!!!");
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler::handle_char_out: Error state!!!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -314,8 +328,10 @@ namespace net_utils
|
|||||||
inline bool analize_http_method(const boost::smatch& result, http::http_method& method, int& http_ver_major, int& http_ver_minor)
|
inline bool analize_http_method(const boost::smatch& result, http::http_method& method, int& http_ver_major, int& http_ver_minor)
|
||||||
{
|
{
|
||||||
CHECK_AND_ASSERT_MES(result[0].matched, false, "simple_http_connection_handler::analize_http_method() assert failed...");
|
CHECK_AND_ASSERT_MES(result[0].matched, false, "simple_http_connection_handler::analize_http_method() assert failed...");
|
||||||
http_ver_major = boost::lexical_cast<int>(result[11]);
|
if (!boost::conversion::try_lexical_convert<int>(result[11], http_ver_major))
|
||||||
http_ver_minor = boost::lexical_cast<int>(result[12]);
|
return false;
|
||||||
|
if (!boost::conversion::try_lexical_convert<int>(result[12], http_ver_minor))
|
||||||
|
return false;
|
||||||
|
|
||||||
if(result[3].matched)
|
if(result[3].matched)
|
||||||
method = http::http_method_options;
|
method = http::http_method_options;
|
||||||
@@ -337,13 +353,18 @@ namespace net_utils
|
|||||||
template<class t_connection_context>
|
template<class t_connection_context>
|
||||||
bool simple_http_connection_handler<t_connection_context>::handle_invoke_query_line()
|
bool simple_http_connection_handler<t_connection_context>::handle_invoke_query_line()
|
||||||
{
|
{
|
||||||
STATIC_REGEXP_EXPR_1(rexp_match_command_line, "^(((OPTIONS)|(GET)|(HEAD)|(POST)|(PUT)|(DELETE)|(TRACE)) (\\S+) HTTP/(\\d+).(\\d+))\r?\n", boost::regex::icase | boost::regex::normal);
|
STATIC_REGEXP_EXPR_1(rexp_match_command_line, "^(((OPTIONS)|(GET)|(HEAD)|(POST)|(PUT)|(DELETE)|(TRACE)) (\\S+) HTTP/(\\d+)\\.(\\d+))\r?\n", boost::regex::icase | boost::regex::normal);
|
||||||
// 123 4 5 6 7 8 9 10 11 12
|
// 123 4 5 6 7 8 9 10 11 12
|
||||||
//size_t match_len = 0;
|
//size_t match_len = 0;
|
||||||
boost::smatch result;
|
boost::smatch result;
|
||||||
if(boost::regex_search(m_cache, result, rexp_match_command_line, boost::match_default) && result[0].matched)
|
if(boost::regex_search(m_cache, result, rexp_match_command_line, boost::match_default) && result[0].matched)
|
||||||
{
|
{
|
||||||
analize_http_method(result, m_query_info.m_http_method, m_query_info.m_http_ver_hi, m_query_info.m_http_ver_hi);
|
if (!analize_http_method(result, m_query_info.m_http_method, m_query_info.m_http_ver_hi, m_query_info.m_http_ver_hi))
|
||||||
|
{
|
||||||
|
m_state = http_state_error;
|
||||||
|
MERROR("Failed to analyze method");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
m_query_info.m_URI = result[10];
|
m_query_info.m_URI = result[10];
|
||||||
if (!parse_uri(m_query_info.m_URI, m_query_info.m_uri_content))
|
if (!parse_uri(m_query_info.m_URI, m_query_info.m_uri_content))
|
||||||
{
|
{
|
||||||
@@ -362,7 +383,7 @@ namespace net_utils
|
|||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
m_state = http_state_error;
|
m_state = http_state_error;
|
||||||
LOG_ERROR("simple_http_connection_handler<t_connection_context>::handle_invoke_query_line(): Failed to match first line: " << m_cache);
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler<t_connection_context>::handle_invoke_query_line(): Failed to match first line: " << m_cache);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -386,14 +407,14 @@ namespace net_utils
|
|||||||
template<class t_connection_context>
|
template<class t_connection_context>
|
||||||
bool simple_http_connection_handler<t_connection_context>::analize_cached_request_header_and_invoke_state(size_t pos)
|
bool simple_http_connection_handler<t_connection_context>::analize_cached_request_header_and_invoke_state(size_t pos)
|
||||||
{
|
{
|
||||||
//LOG_PRINT_L4("HTTP HEAD:\r\n" << m_cache.substr(0, pos));
|
LOG_PRINT_L3("HTTP HEAD:\r\n" << m_cache.substr(0, pos));
|
||||||
|
|
||||||
m_query_info.m_full_request_buf_size = pos;
|
m_query_info.m_full_request_buf_size = pos;
|
||||||
m_query_info.m_request_head.assign(m_cache.begin(), m_cache.begin()+pos);
|
m_query_info.m_request_head.assign(m_cache.begin(), m_cache.begin()+pos);
|
||||||
|
|
||||||
if(!parse_cached_header(m_query_info.m_header_info, m_cache, pos))
|
if(!parse_cached_header(m_query_info.m_header_info, m_cache, pos))
|
||||||
{
|
{
|
||||||
LOG_ERROR("simple_http_connection_handler<t_connection_context>::analize_cached_request_header_and_invoke_state(): failed to anilize request header: " << m_cache);
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler<t_connection_context>::analize_cached_request_header_and_invoke_state(): failed to anilize request header: " << m_cache);
|
||||||
m_state = http_state_error;
|
m_state = http_state_error;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -409,7 +430,7 @@ namespace net_utils
|
|||||||
m_body_transfer_type = http_body_transfer_measure;
|
m_body_transfer_type = http_body_transfer_measure;
|
||||||
if(!get_len_from_content_lenght(m_query_info.m_header_info.m_content_length, m_len_summary))
|
if(!get_len_from_content_lenght(m_query_info.m_header_info.m_content_length, m_len_summary))
|
||||||
{
|
{
|
||||||
LOG_ERROR("simple_http_connection_handler<t_connection_context>::analize_cached_request_header_and_invoke_state(): Failed to get_len_from_content_lenght();, m_query_info.m_content_length="<<m_query_info.m_header_info.m_content_length);
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler<t_connection_context>::analize_cached_request_header_and_invoke_state(): Failed to get_len_from_content_lenght();, m_query_info.m_content_length="<<m_query_info.m_header_info.m_content_length);
|
||||||
m_state = http_state_error;
|
m_state = http_state_error;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -442,7 +463,7 @@ namespace net_utils
|
|||||||
case http_body_transfer_multipart:
|
case http_body_transfer_multipart:
|
||||||
case http_body_transfer_undefined:
|
case http_body_transfer_undefined:
|
||||||
default:
|
default:
|
||||||
LOG_ERROR("simple_http_connection_handler<t_connection_context>::handle_retriving_query_body(): Unexpected m_body_query_type state:" << m_body_transfer_type);
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler<t_connection_context>::handle_retriving_query_body(): Unexpected m_body_query_type state:" << m_body_transfer_type);
|
||||||
m_state = http_state_error;
|
m_state = http_state_error;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -523,7 +544,7 @@ namespace net_utils
|
|||||||
body_info.m_etc_fields.push_back(std::pair<std::string, std::string>(result[field_etc_name], result[field_val]));
|
body_info.m_etc_fields.push_back(std::pair<std::string, std::string>(result[field_etc_name], result[field_val]));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_ERROR("simple_http_connection_handler<t_connection_context>::parse_cached_header() not matched last entry in:"<<m_cache_to_process);
|
LOG_ERROR_CC(m_conn_context, "simple_http_connection_handler<t_connection_context>::parse_cached_header() not matched last entry in:" << m_cache_to_process);
|
||||||
}
|
}
|
||||||
|
|
||||||
it_current_bound = result[(int)result.size()-1]. first;
|
it_current_bound = result[(int)result.size()-1]. first;
|
||||||
@@ -540,7 +561,8 @@ namespace net_utils
|
|||||||
if(!(boost::regex_search( str, result, rexp_mach_field, boost::match_default) && result[0].matched))
|
if(!(boost::regex_search( str, result, rexp_mach_field, boost::match_default) && result[0].matched))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
len = boost::lexical_cast<size_t>(result[0]);
|
try { len = boost::lexical_cast<size_t>(result[0]); }
|
||||||
|
catch(...) { return false; }
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------
|
||||||
@@ -569,6 +591,7 @@ namespace net_utils
|
|||||||
m_psnd_hndlr->do_send((void*)response_data.data(), response_data.size());
|
m_psnd_hndlr->do_send((void*)response_data.data(), response_data.size());
|
||||||
if ((response.m_body.size() && (query_info.m_http_method != http::http_method_head)) || (query_info.m_http_method == http::http_method_options))
|
if ((response.m_body.size() && (query_info.m_http_method != http::http_method_head)) || (query_info.m_http_method == http::http_method_options))
|
||||||
m_psnd_hndlr->do_send((void*)response.m_body.data(), response.m_body.size());
|
m_psnd_hndlr->do_send((void*)response.m_body.data(), response.m_body.size());
|
||||||
|
m_psnd_hndlr->send_done();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -122,6 +122,7 @@
|
|||||||
if(!ps.load_from_json(query_info.m_body)) \
|
if(!ps.load_from_json(query_info.m_body)) \
|
||||||
{ \
|
{ \
|
||||||
boost::value_initialized<epee::json_rpc::error_response> rsp; \
|
boost::value_initialized<epee::json_rpc::error_response> rsp; \
|
||||||
|
static_cast<epee::json_rpc::error_response&>(rsp).jsonrpc = "2.0"; \
|
||||||
static_cast<epee::json_rpc::error_response&>(rsp).error.code = -32700; \
|
static_cast<epee::json_rpc::error_response&>(rsp).error.code = -32700; \
|
||||||
static_cast<epee::json_rpc::error_response&>(rsp).error.message = "Parse error"; \
|
static_cast<epee::json_rpc::error_response&>(rsp).error.message = "Parse error"; \
|
||||||
epee::serialization::store_t_to_json(static_cast<epee::json_rpc::error_response&>(rsp), response_info.m_body); \
|
epee::serialization::store_t_to_json(static_cast<epee::json_rpc::error_response&>(rsp), response_info.m_body); \
|
||||||
|
|||||||
@@ -275,6 +275,9 @@ public:
|
|||||||
}
|
}
|
||||||
virtual ~async_protocol_handler()
|
virtual ~async_protocol_handler()
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
m_deletion_initiated = true;
|
m_deletion_initiated = true;
|
||||||
if(m_connection_initialized)
|
if(m_connection_initialized)
|
||||||
{
|
{
|
||||||
@@ -288,6 +291,9 @@ public:
|
|||||||
CHECK_AND_ASSERT_MES_NO_RET(0 == boost::interprocess::ipcdetail::atomic_read32(&m_wait_count), "Failed to wait for operation completion. m_wait_count = " << m_wait_count);
|
CHECK_AND_ASSERT_MES_NO_RET(0 == boost::interprocess::ipcdetail::atomic_read32(&m_wait_count), "Failed to wait for operation completion. m_wait_count = " << m_wait_count);
|
||||||
|
|
||||||
MTRACE(m_connection_context << "~async_protocol_handler()");
|
MTRACE(m_connection_context << "~async_protocol_handler()");
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (...) { /* ignore */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
bool start_outer_call()
|
bool start_outer_call()
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace epee
|
|||||||
|
|
||||||
if( (ip | 0xffffff00) == 0xffffffac)
|
if( (ip | 0xffffff00) == 0xffffffac)
|
||||||
{
|
{
|
||||||
uint32_t second_num = (ip << 8) & 0xff000000;
|
uint32_t second_num = (ip >> 8) & 0xff;
|
||||||
if(second_num >= 16 && second_num <= 31 )
|
if(second_num >= 16 && second_num <= 31 )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,8 @@ namespace net_utils
|
|||||||
~blocked_mode_client()
|
~blocked_mode_client()
|
||||||
{
|
{
|
||||||
//profile_tools::local_coast lc("~blocked_mode_client()", 3);
|
//profile_tools::local_coast lc("~blocked_mode_client()", 3);
|
||||||
shutdown();
|
try { shutdown(); }
|
||||||
|
catch(...) { /* ignore */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ namespace net_utils
|
|||||||
{
|
{
|
||||||
virtual bool do_send(const void* ptr, size_t cb)=0;
|
virtual bool do_send(const void* ptr, size_t cb)=0;
|
||||||
virtual bool close()=0;
|
virtual bool close()=0;
|
||||||
|
virtual bool send_done()=0;
|
||||||
virtual bool call_run_once_service_io()=0;
|
virtual bool call_run_once_service_io()=0;
|
||||||
virtual bool request_callback()=0;
|
virtual bool request_callback()=0;
|
||||||
virtual boost::asio::io_service& get_io_service()=0;
|
virtual boost::asio::io_service& get_io_service()=0;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user