Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55a16089c2 | ||
|
|
80ac5292b4 | ||
|
|
5fb3a107ae | ||
|
|
a715e33068 | ||
|
|
dbd03d410d | ||
|
|
e6ac9ec513 | ||
|
|
c58ed4a0d4 | ||
|
|
751c0b0ea8 | ||
|
|
526ae7065a | ||
|
|
860903cce8 | ||
|
|
1e1a7c84b5 | ||
|
|
c7d97b23aa | ||
|
|
bf4cb999d7 | ||
|
|
c6a4eb0494 | ||
|
|
f94e7ce981 | ||
|
|
dd415d07af | ||
|
|
06b67b0adc | ||
|
|
bd9a2e8227 | ||
|
|
ccd8299240 | ||
|
|
a288e5a3c6 | ||
|
|
48f7dfde82 | ||
|
|
0ee5fcfb6f | ||
|
|
9345ea05ea | ||
|
|
c15e8932c6 | ||
|
|
10167d2d19 | ||
|
|
c260a63148 | ||
|
|
ea78a367ef | ||
|
|
74c644c933 | ||
|
|
255a9bc2a9 | ||
|
|
968d9fcd5c | ||
|
|
d76ea6668f | ||
|
|
b789f817f9 | ||
|
|
7ca8fe22d7 | ||
|
|
4ea4e1f569 | ||
|
|
e94bf825d3 | ||
|
|
bdc9779df2 | ||
|
|
2291b09b58 | ||
|
|
32df0b7f34 | ||
|
|
5e56af0b5a | ||
|
|
6ec457de3d | ||
|
|
b4c58b1704 | ||
|
|
c3ea3488d2 | ||
|
|
eb6f8a6cac | ||
|
|
e2d0456626 | ||
|
|
c183aa8b12 | ||
|
|
9c5abff8cd | ||
|
|
b794a7702d | ||
|
|
310a77e3a7 | ||
|
|
b37c92d9f9 | ||
|
|
665569ba82 | ||
|
|
4bade27e12 | ||
|
|
b010ab9525 | ||
|
|
199a1864aa | ||
|
|
0272164072 | ||
|
|
e24de27fd3 | ||
|
|
e712897fea | ||
|
|
660aaeb344 | ||
|
|
679a878b49 | ||
|
|
fa57ae5c3b | ||
|
|
a613793d45 | ||
|
|
eaef3dde49 | ||
|
|
545a39c522 | ||
|
|
a1042458b6 | ||
|
|
1415744f9b | ||
|
|
80c2e440db | ||
|
|
2809227838 | ||
|
|
5233f2924d | ||
|
|
a7e5589733 | ||
|
|
3c7fff901a | ||
|
|
821307f699 | ||
|
|
3cf634cb75 | ||
|
|
f7efb5af75 | ||
|
|
aa11d3bd49 | ||
|
|
16a61dc512 | ||
|
|
4090a79450 | ||
|
|
a619671277 | ||
|
|
b92c1a1652 | ||
|
|
e97c74154b | ||
|
|
138191cc22 | ||
|
|
58b214b16c | ||
|
|
911acd7e4d | ||
|
|
b745b575bc | ||
|
|
7a02188ac6 | ||
|
|
f41b340e79 | ||
|
|
901b6e86c7 | ||
|
|
583d43c054 | ||
|
|
1fd2a061b0 | ||
|
|
7c7ee58cd3 | ||
|
|
cfa95fd3f5 | ||
|
|
89c9e78878 | ||
|
|
bc074e446a | ||
|
|
baee06dcdd | ||
|
|
a6a6c8409a | ||
|
|
11baf2bb9d | ||
|
|
071d59c72a | ||
|
|
65ee72bda3 | ||
|
|
7800b65d1a | ||
|
|
56d260a65d | ||
|
|
6d0397a1d7 | ||
|
|
fdebb06059 | ||
|
|
c6ef7bba81 | ||
|
|
86509495f3 | ||
|
|
086e6b7d21 | ||
|
|
f47afbddc8 | ||
|
|
14f545ff45 | ||
|
|
bf09a3d9c6 | ||
|
|
93cadb5a6b | ||
|
|
0dd68201f6 | ||
|
|
ba646c4ac0 | ||
|
|
46c50d2aa7 | ||
|
|
122dbd953c | ||
|
|
a0c7666e4e | ||
|
|
4185b0b19a | ||
|
|
a9478b95cc | ||
|
|
c68933f445 | ||
|
|
e7dd60c036 | ||
|
|
17ca161e55 | ||
|
|
e66f627407 | ||
|
|
c39312356e | ||
|
|
ac8afdd98f | ||
|
|
21e067937a | ||
|
|
12e54ccda9 | ||
|
|
e658a7b293 | ||
|
|
49478e873d | ||
|
|
30efcb2a68 | ||
|
|
7866fde20d | ||
|
|
30e903eec0 | ||
|
|
d9dedd37ee | ||
|
|
61d4ea742f | ||
|
|
02594f4dea | ||
|
|
a61e33cad9 | ||
|
|
347edc4b62 | ||
|
|
728f29152f | ||
|
|
fdde4da323 | ||
|
|
31bcd3609b | ||
|
|
ef4b8cd27b | ||
|
|
dcfc524ad7 | ||
|
|
5c161325bb | ||
|
|
cd02e61710 | ||
|
|
1ee2e7cd9d | ||
|
|
a92edc9fa7 | ||
|
|
3eb03362a4 | ||
|
|
aaf9794491 | ||
|
|
ffe519248f | ||
|
|
ecdc0164ee | ||
|
|
2dd7dccaca | ||
|
|
d5780a018a | ||
|
|
7a8b4413fc | ||
|
|
b598062db6 | ||
|
|
78187f9d6d | ||
|
|
e6c070d469 | ||
|
|
750fd9d500 | ||
|
|
9f5e755037 | ||
|
|
f43e7e3665 | ||
|
|
fc35ae44dd | ||
|
|
805842ae96 | ||
|
|
fc925444d8 | ||
|
|
6163b7f7e3 | ||
|
|
2dcbc0f5e9 | ||
|
|
3c05095538 | ||
|
|
27c2bddc5c | ||
|
|
2303d8a547 | ||
|
|
03a125e02d | ||
|
|
04f4fb4281 | ||
|
|
fd66b3561c | ||
|
|
cb4514e72c | ||
|
|
27a4ec14c7 | ||
|
|
aa3ebd1f7f | ||
|
|
f459a4aacb | ||
|
|
418b47ba3c | ||
|
|
393d09df0d | ||
|
|
115d4b582a | ||
|
|
1c5663dd83 | ||
|
|
8050e638a9 | ||
|
|
eb58b93173 | ||
|
|
99486802ef | ||
|
|
6c52d4df9b | ||
|
|
269e47a249 | ||
|
|
5753989b79 | ||
|
|
466be55df4 | ||
|
|
74f30b87ad | ||
|
|
63d70483aa | ||
|
|
6b0eaecdf1 | ||
|
|
9049457543 | ||
|
|
f6ac157993 | ||
|
|
e7cd0b65d6 | ||
|
|
8b8b0a1b8c | ||
|
|
8dae0b7973 | ||
|
|
d1d54c50d7 | ||
|
|
4f82013a55 | ||
|
|
3a5159b060 | ||
|
|
617f2d5669 | ||
|
|
3d02aa687e | ||
|
|
3bcd0a8509 | ||
|
|
c240ab4e8e | ||
|
|
8e2d47f793 | ||
|
|
3c993deedf | ||
|
|
82d7116664 | ||
|
|
015cea9c07 | ||
|
|
359c5b3c81 | ||
|
|
5c3312179c | ||
|
|
70d5c19a43 | ||
|
|
9f62c44460 | ||
|
|
542fd12343 | ||
|
|
0763be425c | ||
|
|
6b3c983e67 | ||
|
|
638c7b2fbe | ||
|
|
a55b7c8069 | ||
|
|
318fc6d676 | ||
|
|
705a55e49f | ||
|
|
39aba89186 | ||
|
|
f7bbbee464 | ||
|
|
48dbd9f7d9 | ||
|
|
1b8ed947f3 | ||
|
|
cb3ff65d05 | ||
|
|
d32581084d | ||
|
|
950b25236c | ||
|
|
fecdbc8658 | ||
|
|
1e8932b390 | ||
|
|
28ae1d81a8 | ||
|
|
d7ad941d1e | ||
|
|
0ebbf9ab33 | ||
|
|
7c4282688a | ||
|
|
e892601440 | ||
|
|
dbda800374 | ||
|
|
ba0f5edfea | ||
|
|
5953c9cccb | ||
|
|
ba95dddf12 | ||
|
|
10371accfb | ||
|
|
815d6c1286 | ||
|
|
c00c0cb387 | ||
|
|
c8433a884b | ||
|
|
7f2aad3593 | ||
|
|
cfedd020b9 | ||
|
|
116f5b5c54 | ||
|
|
5b3b3fdf84 | ||
|
|
84bc19f71f | ||
|
|
a8ddba48b7 | ||
|
|
fac8d9dcab | ||
|
|
f561dc7191 | ||
|
|
116014918b | ||
|
|
0d9543a0d8 | ||
|
|
f75f210675 | ||
|
|
cbc3c93fae | ||
|
|
f2f91d23a9 | ||
|
|
a976a59ce2 | ||
|
|
87f07c6509 | ||
|
|
04c369cdf8 | ||
|
|
9c1d4ac2fc | ||
|
|
391b45fba1 | ||
|
|
7184e02207 | ||
|
|
96693edb8b | ||
|
|
6eb2f24bb1 | ||
|
|
1dc8f1b30a | ||
|
|
8d20980aa9 | ||
|
|
a01868c49c | ||
|
|
0764d25df4 | ||
|
|
44906870e4 | ||
|
|
6ec34a9936 | ||
|
|
2b72077225 | ||
|
|
0d1627d243 | ||
|
|
63d288d85f | ||
|
|
fb4aaa54ad | ||
|
|
7419c4060e | ||
|
|
be89b5c12a | ||
|
|
e34f24e183 | ||
|
|
0a98ba0487 | ||
|
|
5a70800a31 | ||
|
|
bbc0eb8d6f | ||
|
|
8a1cca4198 | ||
|
|
3f2ef3b8b5 | ||
|
|
2e31e70881 | ||
|
|
8e8d655e66 | ||
|
|
d138308fce | ||
|
|
7ed61ccbb6 | ||
|
|
29a91f4730 | ||
|
|
8f00817927 | ||
|
|
0696b8d073 | ||
|
|
de247b3b5b | ||
|
|
0dfe32f594 | ||
|
|
5d3f2cd6fa | ||
|
|
8c48d6a90f | ||
|
|
a58c15aee3 | ||
|
|
f27efd7af0 | ||
|
|
6882dff4fc | ||
|
|
230eb927a0 | ||
|
|
365a067755 | ||
|
|
b2751af4e3 | ||
|
|
f83772efb9 | ||
|
|
23b23e0e86 | ||
|
|
98d6871300 | ||
|
|
21978735a1 | ||
|
|
d3a3d8b6ef | ||
|
|
97af0e28fc | ||
|
|
7c68547dfa | ||
|
|
7d30c12fb7 | ||
|
|
0f551b6d25 | ||
|
|
198803dee0 | ||
|
|
1d9d6941ec | ||
|
|
3deba89063 | ||
|
|
4d93a94ef6 | ||
|
|
8b34c228e7 | ||
|
|
7d2bfd702c | ||
|
|
09d42500e6 | ||
|
|
51f0f94a37 | ||
|
|
293564be75 | ||
|
|
4917f8df79 | ||
|
|
0def5df6c8 | ||
|
|
83696b3a99 | ||
|
|
7a2c7f83aa | ||
|
|
2547311ef4 | ||
|
|
5eea6e491a | ||
|
|
57984545ab | ||
|
|
d19c51c517 | ||
|
|
94860b6995 | ||
|
|
43c1cea1d2 | ||
|
|
3b188a9970 | ||
|
|
e1066e203f | ||
|
|
e74d67db3a | ||
|
|
e759173e46 | ||
|
|
f1875f09aa | ||
|
|
fbf2506f86 | ||
|
|
315db7e8fa | ||
|
|
75a89b8859 | ||
|
|
6d151f33ad | ||
|
|
bd801281db | ||
|
|
eba49439ac | ||
|
|
bc64d09a8f | ||
|
|
68bfc679df | ||
|
|
82f090f517 | ||
|
|
d58043149b | ||
|
|
690586b655 | ||
|
|
f6d37904d5 | ||
|
|
b50677ac11 | ||
|
|
509062e478 | ||
|
|
fa930c94ed | ||
|
|
545331f8e6 | ||
|
|
15c5868274 | ||
|
|
eca6cc16cc | ||
|
|
2340149f25 | ||
|
|
d9abb535fa | ||
|
|
6682ddce52 | ||
|
|
49207c04ff | ||
|
|
735ca6e1d5 | ||
|
|
071bec0924 | ||
|
|
1ae1466cad | ||
|
|
270d8f7035 | ||
|
|
b162d24b86 | ||
|
|
650277f8f6 | ||
|
|
a1d230ba9c | ||
|
|
8d8169d5b6 | ||
|
|
696aa2d67f | ||
|
|
12c94c9908 | ||
|
|
25c1fdc365 | ||
|
|
cb48b0bfa6 | ||
|
|
27f825527e | ||
|
|
1cec948022 | ||
|
|
7a0fd3f165 | ||
|
|
4071a83ab9 | ||
|
|
8078ccc8db | ||
|
|
47bb0619b6 | ||
|
|
8e06a1e78d | ||
|
|
b296874fc4 | ||
|
|
c7ef849905 | ||
|
|
ec917a651b | ||
|
|
a403b33eae | ||
|
|
359cb93566 | ||
|
|
367cc8dd08 | ||
|
|
6d647c9985 | ||
|
|
15e95777f2 | ||
|
|
5dd5019f57 | ||
|
|
f56ff4f5f2 | ||
|
|
b13951e2a3 | ||
|
|
eb1e895c0c | ||
|
|
9caacc088b | ||
|
|
7543f5ea09 | ||
|
|
2e371d2d12 | ||
|
|
290b73d981 | ||
|
|
92ac5d97e5 | ||
|
|
ac84129ef8 | ||
|
|
3e50a6500c | ||
|
|
c90f3250bf | ||
|
|
e29c577104 | ||
|
|
d08643b0c0 | ||
|
|
94535d7e38 | ||
|
|
3ed6f17f28 | ||
|
|
e593403f2e | ||
|
|
bf94b75960 | ||
|
|
b263bd476a | ||
|
|
1fbbde21be | ||
|
|
e4ed721fd0 | ||
|
|
62d7bda1e2 | ||
|
|
dcd1d96b28 | ||
|
|
229cdc8c4e | ||
|
|
79cbc8784d | ||
|
|
36295161f5 | ||
|
|
1e2987500d | ||
|
|
8bc0b134d2 | ||
|
|
1c64d27da9 | ||
|
|
ceb7e2fbe6 | ||
|
|
657e1bfd54 | ||
|
|
b3c07a05a3 | ||
|
|
44574cd14f | ||
|
|
b48dc0b907 | ||
|
|
8a15ca9a66 | ||
|
|
95d1b3f49a | ||
|
|
67cd8a2a33 | ||
|
|
3d2f8b8fd1 | ||
|
|
2fc8a2a921 | ||
|
|
e77b16d0fe | ||
|
|
c83bd6e1dd | ||
|
|
3c93f1fcaa | ||
|
|
4f425b9604 | ||
|
|
e2bc0ad7b3 | ||
|
|
d399bcc6cd | ||
|
|
5167c65ae3 | ||
|
|
e13d41cabe | ||
|
|
da526f9d8e | ||
|
|
facaec61d9 | ||
|
|
993e6898f3 | ||
|
|
f48cffdb2c | ||
|
|
74ce2ea6f8 | ||
|
|
2d358bfb9e | ||
|
|
a826e5ad2f | ||
|
|
1a75ff2746 | ||
|
|
5b3b3fca48 | ||
|
|
4011f621eb | ||
|
|
35d7cd00cf | ||
|
|
9074e23b18 | ||
|
|
03fbda9043 | ||
|
|
eee5edf45d | ||
|
|
1e7df0abca | ||
|
|
e690a54b06 | ||
|
|
bcf510df3d | ||
|
|
a85a1feba0 | ||
|
|
b8a4da7efc | ||
|
|
02c156e41e | ||
|
|
ea77f76415 | ||
|
|
c93c6b0276 | ||
|
|
36dbc07baf | ||
|
|
ff5d70590b | ||
|
|
388075378f | ||
|
|
82612e5cd4 | ||
|
|
b03527a7ad | ||
|
|
01633ee08e | ||
|
|
b9b454be9c | ||
|
|
2d021c80d3 | ||
|
|
0a1819eec2 | ||
|
|
90f6794e7d | ||
|
|
92d2e9e031 | ||
|
|
c5d88c244d | ||
|
|
0fcc30e22b | ||
|
|
e31414b610 | ||
|
|
744d693d90 | ||
|
|
d62d1f46e4 | ||
|
|
615c370e51 | ||
|
|
bc8bb0b03a | ||
|
|
700967baca | ||
|
|
70ad4a7035 | ||
|
|
4f29fd3790 | ||
|
|
5785ee2bc2 | ||
|
|
0584da0611 | ||
|
|
164fdeeb92 | ||
|
|
5d97f9db15 | ||
|
|
968a4fe04b | ||
|
|
e2c5b44408 | ||
|
|
5bcb75019a | ||
|
|
1733a525e0 | ||
|
|
fba5585f77 | ||
|
|
e1227bf0f8 | ||
|
|
5349d34513 | ||
|
|
465599701c | ||
|
|
e91c13cbf8 | ||
|
|
604d89c2c6 | ||
|
|
19f42ecfd1 | ||
|
|
0d55c20c26 | ||
|
|
26d4b91251 | ||
|
|
6836254234 | ||
|
|
5162291f9d | ||
|
|
44e3e0f3d6 | ||
|
|
5ae9f76629 | ||
|
|
a9ec2c1b6d | ||
|
|
4ccbbced54 | ||
|
|
da62ca474b | ||
|
|
e02696d47d | ||
|
|
6dc29b910c | ||
|
|
7e76d29ddf | ||
|
|
0bad62dfd4 | ||
|
|
98807b0487 | ||
|
|
78deee7ca2 | ||
|
|
a5ccfebff5 | ||
|
|
b39b945a6e | ||
|
|
18951047eb | ||
|
|
1124ec22c6 | ||
|
|
ab367fc890 | ||
|
|
22c632794f | ||
|
|
0fefd6d443 | ||
|
|
89f24ea07c | ||
|
|
d2a11bc0f2 | ||
|
|
575455b10e | ||
|
|
e858c68fa6 | ||
|
|
2df26740c6 | ||
|
|
39209ee2b8 | ||
|
|
3e9cd11aa3 | ||
|
|
f91b2c4a2f | ||
|
|
a2b1a07a4f | ||
|
|
82b5f434f9 | ||
|
|
a55b7398da | ||
|
|
d9b37b2094 | ||
|
|
230c5f37bc | ||
|
|
561bdbf2b4 | ||
|
|
0bafec7ce5 | ||
|
|
34dca72a09 | ||
|
|
428b576acf | ||
|
|
f26a08d9bc | ||
|
|
92ae9affd6 | ||
|
|
d52cd2e0c0 | ||
|
|
e11cbd1a26 | ||
|
|
4e58a6a6b4 | ||
|
|
e01de676fa | ||
|
|
9e43802e2a | ||
|
|
f02f4f6116 | ||
|
|
306689f30d | ||
|
|
43bf28968b | ||
|
|
df6e9a57d8 | ||
|
|
cbcafd28c9 | ||
|
|
4f181ec460 | ||
|
|
a72583df76 | ||
|
|
8f508e5e0f | ||
|
|
536f75fdb4 | ||
|
|
f37a070eda | ||
|
|
51c1267bf4 | ||
|
|
6a0b972aac | ||
|
|
94168f02ca | ||
|
|
88c8dfa26e | ||
|
|
c8050f0edd | ||
|
|
e3d90e63e8 | ||
|
|
ec20a3e4c9 | ||
|
|
83bac6b8aa | ||
|
|
34025743a1 | ||
|
|
ff02a303c7 | ||
|
|
4552576fa3 | ||
|
|
cc2c834359 | ||
|
|
b746aeb729 | ||
|
|
686fc08cef | ||
|
|
9d74aae3f5 | ||
|
|
b3fd99eb1b | ||
|
|
bf111c97f1 | ||
|
|
ac8d4cf899 | ||
|
|
04bd7fbffa | ||
|
|
8167e8d944 | ||
|
|
6c3174599a | ||
|
|
76aca637e8 | ||
|
|
832d843ea1 | ||
|
|
9aa702efcd | ||
|
|
cde6d9eaae | ||
|
|
91db033e3a | ||
|
|
7d6c0af7e7 | ||
|
|
d0c2345044 | ||
|
|
51c4b93bc7 | ||
|
|
242acbcd9d | ||
|
|
3079801e0f | ||
|
|
fdc02400b9 | ||
|
|
499b0da006 | ||
|
|
a7caf02ec6 | ||
|
|
70b819700d | ||
|
|
b1aca90888 | ||
|
|
73ccc5d3ad | ||
|
|
47d3fd7db9 | ||
|
|
56d2d7cb12 | ||
|
|
ac3c078141 | ||
|
|
0110a0df8d | ||
|
|
c1d6b51075 | ||
|
|
bc6c6a36da | ||
|
|
806d76d9a2 | ||
|
|
a0a476b57d | ||
|
|
d5dd24fa51 | ||
|
|
42561be37e | ||
|
|
c2fdee9cf8 | ||
|
|
9972ee4113 | ||
|
|
846b0ce9fd | ||
|
|
fe78fe4416 | ||
|
|
54d03ae788 | ||
|
|
55f895a7f5 | ||
|
|
22b557605b | ||
|
|
16ed6e844a | ||
|
|
d96b3de97a | ||
|
|
bd0436ffa0 | ||
|
|
496f5c256f | ||
|
|
6617d07e1e | ||
|
|
99837f0b8f | ||
|
|
6ed27b7b83 | ||
|
|
3247fd77d6 | ||
|
|
f9b9679b5e | ||
|
|
685d264ab7 | ||
|
|
2355f0cb54 | ||
|
|
68674fb1c2 | ||
|
|
0e1a942ecd | ||
|
|
d01ce11e47 | ||
|
|
eee9e1cbd4 | ||
|
|
54e2da3dc4 | ||
|
|
6887850eae | ||
|
|
ab16885112 | ||
|
|
5f3ff06403 | ||
|
|
81f872fdaf | ||
|
|
0ec739a2b7 | ||
|
|
752bc51452 | ||
|
|
3a23c62070 | ||
|
|
4512b4c998 | ||
|
|
684d2abcdc | ||
|
|
db3eb8872c | ||
|
|
885f388201 | ||
|
|
9431f7f2a8 | ||
|
|
f7752fd2b7 | ||
|
|
e4b2c2262e | ||
|
|
9a31b6259d | ||
|
|
995abe9401 | ||
|
|
a13b39907b | ||
|
|
c64fec22ee | ||
|
|
dd1d835dfe | ||
|
|
5a78becc6f | ||
|
|
f598e62d1c | ||
|
|
b8ae4d0fc5 | ||
|
|
5403c16f48 | ||
|
|
3d162032f4 | ||
|
|
c591a7a91e | ||
|
|
fd2c476ae5 | ||
|
|
42bf58a0b5 | ||
|
|
4d09e1b5a5 | ||
|
|
d825b065f2 | ||
|
|
13428b5ed6 | ||
|
|
521d1789bc | ||
|
|
f64257ae86 | ||
|
|
d228ca1c4b | ||
|
|
690f21e9ae | ||
|
|
743710a9f0 | ||
|
|
ba29971e20 | ||
|
|
f49e492a92 | ||
|
|
1c62abaec0 | ||
|
|
1940a03a61 | ||
|
|
9bee2f443f | ||
|
|
1cf331f83c | ||
|
|
685b835886 | ||
|
|
ab2494a6ba | ||
|
|
3ae0d61bd5 | ||
|
|
f4e11b623f | ||
|
|
938479e43f | ||
|
|
31ec650659 | ||
|
|
87c13ff74a | ||
|
|
2c820daae4 | ||
|
|
3b0cdc0caa | ||
|
|
85570dd61d | ||
|
|
400d3670be | ||
|
|
45c93a7f3e | ||
|
|
6ca3f492fe | ||
|
|
dee3768d34 | ||
|
|
d2570f9c44 | ||
|
|
a630fa9f98 | ||
|
|
875d4248f5 | ||
|
|
9523ff2472 | ||
|
|
cf92bda8db | ||
|
|
c73b5ed7dc | ||
|
|
ceb32f63ad | ||
|
|
4065193dd8 | ||
|
|
b4d7ae2d3e | ||
|
|
140dce8dd2 | ||
|
|
e80fd77299 | ||
|
|
7e552a4db0 | ||
|
|
7d28eec8d0 | ||
|
|
c29f8bf2f4 | ||
|
|
f76433729c | ||
|
|
db630fc549 | ||
|
|
4eb13e84cc | ||
|
|
16b8c8efea | ||
|
|
9b2c72e4a2 | ||
|
|
b3b9c52144 | ||
|
|
4bc319e0bb | ||
|
|
50071a2980 | ||
|
|
2036ce4ba1 | ||
|
|
f2624fea03 | ||
|
|
950bc3daaa | ||
|
|
39b6779a8c | ||
|
|
743486d88b | ||
|
|
50b0e90495 | ||
|
|
a8b049686a | ||
|
|
23f133dbbe | ||
|
|
b033375491 | ||
|
|
ca4060473d | ||
|
|
472b6a8c46 | ||
|
|
0947bac63c | ||
|
|
1a414a2723 | ||
|
|
d7bbf37cbb | ||
|
|
6063ff90eb | ||
|
|
20dd2eb564 | ||
|
|
4a80853be6 | ||
|
|
b6cd30e22d | ||
|
|
ea59ca59d3 | ||
|
|
c67d8a942b | ||
|
|
244d94b17d | ||
|
|
b05b348198 | ||
|
|
38a8595d15 | ||
|
|
f2226c92b3 | ||
|
|
466709df23 | ||
|
|
702459918b | ||
|
|
4efbd8b90a | ||
|
|
655bfcba0a | ||
|
|
041356ebac | ||
|
|
32e9ceb741 | ||
|
|
1aeb0e42dc | ||
|
|
9c419b1f2e | ||
|
|
0786489924 | ||
|
|
2835aa1685 | ||
|
|
9cc34df185 | ||
|
|
d5adcdf988 | ||
|
|
837c0e1a17 | ||
|
|
d458f43b63 | ||
|
|
1cfb1b6287 | ||
|
|
6f5124616a | ||
|
|
3ba2f8ae93 | ||
|
|
b6d87141f2 | ||
|
|
993e9355bb | ||
|
|
be655902b4 | ||
|
|
f9332befb3 | ||
|
|
66728df978 | ||
|
|
60dc85c2fc | ||
|
|
4b4eb623b9 | ||
|
|
d2c98bf559 | ||
|
|
9a31503996 | ||
|
|
cb4622f61f | ||
|
|
1ce1091eca | ||
|
|
4546eef1e3 | ||
|
|
1d8f24ced2 | ||
|
|
19a61ba517 | ||
|
|
2b377e35f1 | ||
|
|
f5011630a3 | ||
|
|
8967a84f12 | ||
|
|
38bed5e4eb | ||
|
|
5370ecedd8 | ||
|
|
0e8cd5cefc | ||
|
|
e3c3649b0f | ||
|
|
19f953fa54 | ||
|
|
ad1b5e35c7 | ||
|
|
ff2eb0fef6 | ||
|
|
d356c14f87 | ||
|
|
829cbf890b | ||
|
|
5ae52d4b4f | ||
|
|
4608c6b7ee | ||
|
|
7c7a818ca0 | ||
|
|
08c6d44185 | ||
|
|
dc8495b147 | ||
|
|
e2f5765a87 | ||
|
|
7ebc059430 | ||
|
|
0d3fda185f | ||
|
|
38df06261b | ||
|
|
0086df54f0 | ||
|
|
ddc0c910c8 | ||
|
|
31f74baef7 | ||
|
|
8cd4f50304 | ||
|
|
48f6abb361 | ||
|
|
27626665a1 | ||
|
|
47039d8685 | ||
|
|
bc9aded3b7 | ||
|
|
f919544d1e | ||
|
|
ea49d0508a | ||
|
|
894f508f6c | ||
|
|
2f2d3d584e | ||
|
|
67ae8a614d | ||
|
|
cbba0e639d | ||
|
|
8f3fdf3d1d | ||
|
|
650fdd60cc | ||
|
|
8b114b5122 | ||
|
|
bc96addce5 | ||
|
|
bac2c9d5ec | ||
|
|
94e0c37cf8 | ||
|
|
42d6181724 | ||
|
|
4c5f2e99cb | ||
|
|
95e2fef4a6 | ||
|
|
4d8e3e61a1 | ||
|
|
c227798a4b | ||
|
|
fc5a6b9ac6 | ||
|
|
b820f17b3c | ||
|
|
079ec51dac | ||
|
|
88dee956f2 | ||
|
|
53945eb095 | ||
|
|
578447ecc3 | ||
|
|
0cecad49b3 | ||
|
|
652df93690 | ||
|
|
efa81c11c5 | ||
|
|
4af070b5b8 | ||
|
|
95faf9332e | ||
|
|
7e87befd3d | ||
|
|
d6155f4c35 | ||
|
|
33c89eac63 | ||
|
|
335adc6bdb | ||
|
|
a107084745 | ||
|
|
67f60b19ea | ||
|
|
734b17d0e7 | ||
|
|
7739c92064 | ||
|
|
0ae5f12024 | ||
|
|
e05dd9d1e9 | ||
|
|
ecbbeaeeca | ||
|
|
ea164e82a7 | ||
|
|
bfa1e68ce0 | ||
|
|
dc010092ab | ||
|
|
82c6bd6452 | ||
|
|
49a1251091 | ||
|
|
97ffad1178 | ||
|
|
592883af29 | ||
|
|
51a38c5607 | ||
|
|
5a645015a2 | ||
|
|
064094489f | ||
|
|
218310c23c | ||
|
|
7c48a9e28d | ||
|
|
8ecffcbddb | ||
|
|
c31f8d8275 | ||
|
|
6db3fe11b9 | ||
|
|
ae7735f6bd | ||
|
|
22dc364f7e | ||
|
|
f11f22f6bb | ||
|
|
2e07f1a9cb | ||
|
|
62bc7e5ff7 | ||
|
|
6b9dd95b26 | ||
|
|
0f3fd3ace1 | ||
|
|
10b9e91c8e | ||
|
|
f813bc42ed | ||
|
|
1c713c0e7e | ||
|
|
6b36671ad7 | ||
|
|
720ee7981b | ||
|
|
dbed9b88a4 | ||
|
|
d5afee08af | ||
|
|
5ae70fcf29 | ||
|
|
16621d9ce1 | ||
|
|
32bfb590a8 | ||
|
|
0e2f9b427f | ||
|
|
1f8abd1be7 | ||
|
|
f7e24ba46c | ||
|
|
d3b993d67e | ||
|
|
eddd6269e7 | ||
|
|
ad14cf6a94 | ||
|
|
53f92d91e7 | ||
|
|
58e8c708c4 | ||
|
|
3b7f1f9cce | ||
|
|
d921975e9f | ||
|
|
9db35b6597 | ||
|
|
c6c5bd179b | ||
|
|
dd1d3ebdc4 | ||
|
|
d5110c4ac8 | ||
|
|
e08775f18a | ||
|
|
a1e273a147 | ||
|
|
79a7d163c4 | ||
|
|
4fd1a633e7 | ||
|
|
ce126b0f1d | ||
|
|
1ccde63c31 | ||
|
|
713972aed0 | ||
|
|
a1abb11ec4 | ||
|
|
2f86b628f9 | ||
|
|
23994758dd | ||
|
|
1c5b6a722a | ||
|
|
a62d826005 | ||
|
|
c98d72f0cd | ||
|
|
55d59c1944 | ||
|
|
064b0b5ee1 | ||
|
|
ebf03afa75 | ||
|
|
116b2efd5f | ||
|
|
dfa66b8113 | ||
|
|
620b0ff59a | ||
|
|
bc01acfef0 | ||
|
|
f8199eaa79 | ||
|
|
bb7408979a | ||
|
|
93a42e752b | ||
|
|
8959bcb912 | ||
|
|
d533e3bf8e | ||
|
|
fbdd73ec58 | ||
|
|
3c5e570e04 | ||
|
|
263c02eaab | ||
|
|
44ad01b3ad | ||
|
|
a37736eed6 | ||
|
|
a3c09047e6 | ||
|
|
dc30c28c02 | ||
|
|
d17f2e6eb9 | ||
|
|
fdabd03924 | ||
|
|
a8a04186ed | ||
|
|
164dd1d7a5 | ||
|
|
4fc487348a | ||
|
|
0bb566869e | ||
|
|
9fb495d785 | ||
|
|
df86e7c8ec | ||
|
|
1e6f4d8052 | ||
|
|
bd470b1330 | ||
|
|
60b3494207 | ||
|
|
475a7fc44c | ||
|
|
f19c5a0dc0 | ||
|
|
3e35f1dea3 | ||
|
|
d8197dd00e | ||
|
|
3205248519 | ||
|
|
224801dcd9 | ||
|
|
e8c0de07de | ||
|
|
cf7e061c7a | ||
|
|
a75becd6c5 | ||
|
|
e411bbe3c4 | ||
|
|
c8ca4bc945 | ||
|
|
ffd9d13d79 | ||
|
|
4addeb5835 | ||
|
|
c086c9ab83 | ||
|
|
44e30e4520 | ||
|
|
8f93cd7dd6 | ||
|
|
a4390d348b | ||
|
|
bd72766414 | ||
|
|
866828c1ba | ||
|
|
8cedcc5d55 | ||
|
|
860cee5f12 | ||
|
|
a75972cf3b | ||
|
|
03e3592443 | ||
|
|
c113244319 | ||
|
|
3a64e1310b | ||
|
|
306b759b74 | ||
|
|
5976884b0f | ||
|
|
ee907c3321 | ||
|
|
86307a724f | ||
|
|
997aa44654 | ||
|
|
feb1d277e9 | ||
|
|
7e1dac26f1 | ||
|
|
a7b95d4caf | ||
|
|
bb042fe70b | ||
|
|
e50ee8fbee | ||
|
|
55d8a6ff76 | ||
|
|
576fc07b5b | ||
|
|
b4978269a5 | ||
|
|
24e9a74a6c | ||
|
|
61e79155b4 | ||
|
|
d23d9a2e7a | ||
|
|
ae13e30494 | ||
|
|
292c664941 | ||
|
|
c78845571e | ||
|
|
a0d5c67e48 | ||
|
|
059a3dcc37 | ||
|
|
d543bb4539 | ||
|
|
3e8f800682 | ||
|
|
368f2abe0d | ||
|
|
1e8af399e7 | ||
|
|
72f669e189 | ||
|
|
c787b54e7c | ||
|
|
3512be30cf | ||
|
|
0bb279eec8 | ||
|
|
75331d9025 | ||
|
|
99a46eafc8 | ||
|
|
ac9300f5be | ||
|
|
4e4e5154f4 | ||
|
|
b54c096762 | ||
|
|
5d409ec1de | ||
|
|
845315eeb5 | ||
|
|
803306eea5 | ||
|
|
94ef0d75d7 | ||
|
|
604d439d57 | ||
|
|
d37f8c7bab | ||
|
|
c7ab94a5a5 | ||
|
|
a6428ce968 | ||
|
|
8dd0cd3050 | ||
|
|
baede8d8bd | ||
|
|
2328ec7b31 | ||
|
|
719df7b241 | ||
|
|
dff7f0539a | ||
|
|
f03cf048d8 | ||
|
|
22ffc2ec15 | ||
|
|
09a0edb39a | ||
|
|
a0a8a7a13e | ||
|
|
8f97c06408 | ||
|
|
af9f8fc6a9 | ||
|
|
ef6feb2377 | ||
|
|
4e5ffae80c | ||
|
|
3597f438cd | ||
|
|
ad9cc86117 | ||
|
|
6656494fda | ||
|
|
06ac7dd8f1 | ||
|
|
76f4d19b42 | ||
|
|
d64a1f704b | ||
|
|
aa27148868 | ||
|
|
58c42df669 | ||
|
|
9c0761826b | ||
|
|
63f90dfeb3 | ||
|
|
10b31ef2a9 | ||
|
|
bb3fd81c4d | ||
|
|
2cd6ed2928 | ||
|
|
fde191f6aa | ||
|
|
1c76852b9c | ||
|
|
2491f417da | ||
|
|
443b8070f2 | ||
|
|
bb51c1395b | ||
|
|
3e03cf3d88 | ||
|
|
d6a6bf9719 | ||
|
|
3a2a9d1b7d | ||
|
|
dda68ff53f | ||
|
|
0ef17c6ad7 | ||
|
|
ac58d23713 | ||
|
|
5971972525 | ||
|
|
4cc6662837 | ||
|
|
226cbf48d8 | ||
|
|
7d9909c247 | ||
|
|
649c096e70 | ||
|
|
ce02d5f5c8 | ||
|
|
90c667011d | ||
|
|
0622e85e27 | ||
|
|
355f01f0a4 | ||
|
|
b0d6cf0842 | ||
|
|
16b15be81b | ||
|
|
2b7a8ca14e | ||
|
|
c338813d1c | ||
|
|
2f38d5b00d | ||
|
|
7c6738e32b | ||
|
|
86bfeba68a | ||
|
|
a94aa81c07 | ||
|
|
080c1ed865 | ||
|
|
c6f13e347c | ||
|
|
3cea361cc9 | ||
|
|
f6546fc336 | ||
|
|
8d12ab45c9 | ||
|
|
7dfd9184b7 | ||
|
|
0977bc00e3 | ||
|
|
2ea847ce0b | ||
|
|
fb2b5e0487 | ||
|
|
cce30bb55b | ||
|
|
98af4fc747 | ||
|
|
2c04edb1b3 | ||
|
|
e4500e0c5c | ||
|
|
820c4a86f0 | ||
|
|
d6253ca194 | ||
|
|
33e27917ee | ||
|
|
cea04368a9 | ||
|
|
fe9eed7322 | ||
|
|
33304e2e7a | ||
|
|
4cd51a7de6 | ||
|
|
5ffd65b1a2 | ||
|
|
82b96f4f63 | ||
|
|
e0ea15adb9 | ||
|
|
209ce0c0a9 | ||
|
|
620488c318 | ||
|
|
a270926397 | ||
|
|
8c830b6f1a | ||
|
|
33d58189c4 | ||
|
|
5d8370a970 | ||
|
|
fb3d37e641 | ||
|
|
b27f747ff2 | ||
|
|
2854783aeb | ||
|
|
4b8aa3deaf | ||
|
|
f5397b7c68 | ||
|
|
047620492c | ||
|
|
bf51f5d6c9 | ||
|
|
d7f27e16fe | ||
|
|
cfb30c69c0 | ||
|
|
8ed0335b7b | ||
|
|
313179dfbe | ||
|
|
97503f2e81 | ||
|
|
156bda2600 | ||
|
|
6a5ad25bde | ||
|
|
6d06a3c83c | ||
|
|
76cb03b523 | ||
|
|
6a2f8c655e | ||
|
|
4f3bf50acd | ||
|
|
84c1679e14 | ||
|
|
5ce457b6f6 | ||
|
|
071d79b7f7 | ||
|
|
c4ccae3ef8 | ||
|
|
3e67fa00d4 | ||
|
|
e34ebdf0de | ||
|
|
c6bdd3a455 | ||
|
|
81f22b68d7 | ||
|
|
888084b19b | ||
|
|
e2ec2a2f0d | ||
|
|
e80245ba15 | ||
|
|
3ef94811eb | ||
|
|
d78ff306e4 | ||
|
|
06285eb556 | ||
|
|
0a4378b9fc | ||
|
|
8472201a36 | ||
|
|
554d3f4950 | ||
|
|
300713d1ad | ||
|
|
0c06122b36 | ||
|
|
08bf485229 | ||
|
|
0b3bc255e6 | ||
|
|
c8f0acf144 | ||
|
|
6152d64d6a | ||
|
|
916daa76c9 | ||
|
|
9636f5f0f5 | ||
|
|
bda503d3c9 | ||
|
|
d39a79b121 | ||
|
|
68cd7ecc70 | ||
|
|
3e82292cfc | ||
|
|
f825309d6e | ||
|
|
852c7041d2 | ||
|
|
a9e24caf67 | ||
|
|
f006547b37 | ||
|
|
fb796ce1c4 | ||
|
|
20301dd0dd | ||
|
|
8178aa91d2 | ||
|
|
47f963f7dc | ||
|
|
dade11a029 | ||
|
|
4225dda194 | ||
|
|
e1fdff1db7 | ||
|
|
369a79b110 | ||
|
|
a692d66106 | ||
|
|
5957ad03ab | ||
|
|
7dbba28a18 | ||
|
|
0c260945b1 | ||
|
|
9aaf94fb06 | ||
|
|
2ffc14a778 | ||
|
|
8910b2f0cb | ||
|
|
e2323967e8 | ||
|
|
d6fdffd59b | ||
|
|
fd08b27857 | ||
|
|
a6babd6e0e | ||
|
|
7f371314ce | ||
|
|
75e82917aa | ||
|
|
1befc7e7c5 | ||
|
|
ce86901784 | ||
|
|
1e40dfa2c0 | ||
|
|
aa12fbe1c2 | ||
|
|
510e699bbe | ||
|
|
5956997e94 | ||
|
|
6cd40d17fe | ||
|
|
e48fae561b | ||
|
|
b814924352 | ||
|
|
dc674d1991 | ||
|
|
f3ecf42f9f | ||
|
|
c5f6f68225 | ||
|
|
7aaaf6abb6 | ||
|
|
63c942bd20 | ||
|
|
ebbef08258 | ||
|
|
1aff489efe | ||
|
|
83e088870e | ||
|
|
173a4e7912 | ||
|
|
9ba567752a | ||
|
|
f0f0d448ae | ||
|
|
63f63c4142 | ||
|
|
0a135a08b0 | ||
|
|
802b15228c | ||
|
|
2459a92a23 | ||
|
|
34fc597cc8 | ||
|
|
13483d3ea2 | ||
|
|
2776da3660 | ||
|
|
d819ab361a | ||
|
|
85cbe8e9cd | ||
|
|
519fea6f66 | ||
|
|
f35aba90ab | ||
|
|
567c2cc2ad | ||
|
|
47576ae8c0 | ||
|
|
b25b33a3a1 | ||
|
|
745bc86275 | ||
|
|
128ef1e6fc | ||
|
|
b550bb287a | ||
|
|
0beb3c886a | ||
|
|
b472e90849 | ||
|
|
16e09e7e82 | ||
|
|
0eafa778b0 | ||
|
|
f8f6f08de9 | ||
|
|
226ebe0c75 | ||
|
|
8c59a8bebb | ||
|
|
08c72911c5 | ||
|
|
71ba8cf9e5 | ||
|
|
81c27fe5dc | ||
|
|
a04773ccf3 | ||
|
|
7273f790d6 | ||
|
|
b69647d881 | ||
|
|
7226577fcb | ||
|
|
f323fa8b88 | ||
|
|
875094a359 | ||
|
|
38e7d29a8f | ||
|
|
c716ea4b30 | ||
|
|
a2c398540b | ||
|
|
4d821f1261 | ||
|
|
baaac575c1 | ||
|
|
ba78c201b8 | ||
|
|
0ec8d76220 | ||
|
|
968a83c380 | ||
|
|
b6a2db169e | ||
|
|
4e615fbce4 | ||
|
|
57251327ae | ||
|
|
9a0becd470 | ||
|
|
974cc4b561 | ||
|
|
165f23753f | ||
|
|
8ac6426d91 | ||
|
|
97c1cf55c8 | ||
|
|
c43ea0e690 | ||
|
|
09d84aedb3 | ||
|
|
40585da9a4 | ||
|
|
5abd6029d5 | ||
|
|
d766cf5c56 | ||
|
|
91246d6c26 | ||
|
|
7f54a7ec2c | ||
|
|
f96ec0a1c2 | ||
|
|
e3af2978e1 | ||
|
|
3298c06577 | ||
|
|
6a06ed57d2 | ||
|
|
1204c5ddca | ||
|
|
28deda2425 | ||
|
|
5446ecf43e | ||
|
|
3170d5dec1 | ||
|
|
092ba3e06d | ||
|
|
deaef6ca2b | ||
|
|
e2678c177d | ||
|
|
9b1e65b95a | ||
|
|
3b5d96f71f | ||
|
|
eb54fbeb68 | ||
|
|
aa2e887a55 | ||
|
|
64711a7056 | ||
|
|
7b3550d474 | ||
|
|
7bfe5b4dbb | ||
|
|
3f82453a64 | ||
|
|
1aefb681f9 | ||
|
|
025295a330 | ||
|
|
d0980f215a | ||
|
|
77e065082d | ||
|
|
c9db235664 | ||
|
|
5ea5adeb55 | ||
|
|
24feab23a0 | ||
|
|
183f1cdeca | ||
|
|
84d76ac775 | ||
|
|
6d2099852b | ||
|
|
c0739cf1ab | ||
|
|
4738ad7f56 | ||
|
|
2d5f01af29 | ||
|
|
aef5cb8a2c | ||
|
|
fd6033e1d4 | ||
|
|
e98e8e90c4 | ||
|
|
5e5a87f0f9 | ||
|
|
0902e0c557 | ||
|
|
64a8244552 | ||
|
|
9394e181c9 | ||
|
|
5c3bd1dc5a | ||
|
|
a6b6c2b57b | ||
|
|
708bc48823 | ||
|
|
4a1a938094 | ||
|
|
3d060d7bdf | ||
|
|
e308b24d2e | ||
|
|
a47343ff0a | ||
|
|
ac76b6411d | ||
|
|
843086634d | ||
|
|
0b2eb2d930 | ||
|
|
ac9d26900b | ||
|
|
a7240d523f | ||
|
|
f6e5e20cdb | ||
|
|
5eeff07d8c | ||
|
|
db7d0f7578 | ||
|
|
f5fad8f51b | ||
|
|
1237693762 | ||
|
|
6be1ad5fdf | ||
|
|
35f7fd9df3 | ||
|
|
83e722a99b | ||
|
|
bd5f8dc5f7 | ||
|
|
6dcd6f1665 | ||
|
|
a7ee61b586 | ||
|
|
fbddb83cc7 | ||
|
|
7d3bd637a9 | ||
|
|
fee5e5d027 | ||
|
|
585fe6afd1 | ||
|
|
183e9cfb09 | ||
|
|
2a32c4b828 | ||
|
|
e89ed86dae | ||
|
|
01581751b1 | ||
|
|
3cd29c0fbc | ||
|
|
1c5382af9e | ||
|
|
33616550e8 | ||
|
|
344d7d0bf2 | ||
|
|
977270bf3c | ||
|
|
0dcd717a1b | ||
|
|
e4a91b2383 | ||
|
|
137b8598e2 | ||
|
|
dee472f026 | ||
|
|
0b2edf612c | ||
|
|
e234418f51 | ||
|
|
abc698d32e | ||
|
|
c2a4cfeefc | ||
|
|
c7995fa2b7 | ||
|
|
cd03cebb91 | ||
|
|
7ccfcce9d7 | ||
|
|
d6bc5d5a88 | ||
|
|
a02218d634 | ||
|
|
86edc64a19 | ||
|
|
8f00ab3dfe | ||
|
|
75a1112986 | ||
|
|
bb3ea494a6 | ||
|
|
8117919fe5 | ||
|
|
9a6b3236af | ||
|
|
e924b1a8ec | ||
|
|
4fbfa1e3e0 | ||
|
|
eea3b74778 | ||
|
|
47582bf729 | ||
|
|
882b2ed721 | ||
|
|
4ab5ae3ad9 | ||
|
|
ffe4491094 | ||
|
|
fa4fa67b87 | ||
|
|
366c3bab10 | ||
|
|
b3f21cbe32 | ||
|
|
50179cc27a | ||
|
|
03c6abca60 | ||
|
|
2a663f658a | ||
|
|
46d4fb576d | ||
|
|
9bc52f594e | ||
|
|
87bf0e121d | ||
|
|
5560f5d721 | ||
|
|
aee1fea979 | ||
|
|
c71dc28c76 | ||
|
|
dfffef1d9c | ||
|
|
6546511d2e | ||
|
|
34cf176e24 | ||
|
|
0a5c086b26 | ||
|
|
44c1cb8e8f | ||
|
|
44f79cb03f | ||
|
|
62ea86c485 | ||
|
|
07eddfe53d | ||
|
|
1f32363f66 | ||
|
|
33fae9f482 | ||
|
|
12a0281283 | ||
|
|
d4f2304c82 | ||
|
|
db80ef4bfb | ||
|
|
0d85ac6a18 | ||
|
|
8e46fcfbb2 | ||
|
|
c813fef558 | ||
|
|
a9d21ddc39 | ||
|
|
d489d9a83c | ||
|
|
ee89cd47f7 | ||
|
|
6822013d5d | ||
|
|
fa26dfe9c7 | ||
|
|
1ac22072a5 | ||
|
|
eaf484b9c7 | ||
|
|
1b7ad2c4f5 | ||
|
|
d936a2b75c | ||
|
|
62160ac662 | ||
|
|
d51481faaa | ||
|
|
0d9a72b058 | ||
|
|
2de96e705f | ||
|
|
5ce6ead32e | ||
|
|
1444197e50 | ||
|
|
169a4ea24d | ||
|
|
c9b0af1cfe | ||
|
|
3a542eb8d0 | ||
|
|
4f83b8954b | ||
|
|
b2bbcc2836 | ||
|
|
9fd7c93ef2 | ||
|
|
2d09dc3763 | ||
|
|
819d6b2dba | ||
|
|
bb988da66a | ||
|
|
2769173b5a | ||
|
|
9373f1b57f | ||
|
|
6f40ca27e3 | ||
|
|
934aa32325 | ||
|
|
fd9d13e486 | ||
|
|
55428b80dc | ||
|
|
029078e44f | ||
|
|
7b6bb1f34a | ||
|
|
9d4957a968 | ||
|
|
ee6e6b84bd | ||
|
|
84ec758cfe | ||
|
|
e3219f3892 | ||
|
|
0ef9b18252 | ||
|
|
6b462147e5 |
+85
-7
@@ -1,6 +1,5 @@
|
||||
# Ignore *.pro.user files
|
||||
*.pro.user
|
||||
*.pro.user.*
|
||||
# Robomongo-specific
|
||||
|
||||
CMakeLists.txt.user*
|
||||
|
||||
.sconsign.dblite
|
||||
@@ -8,15 +7,94 @@ CMakeLists.txt.user*
|
||||
.scons
|
||||
|
||||
*.kate-swp
|
||||
*.swp
|
||||
|
||||
target/
|
||||
target-debug/
|
||||
target-release/
|
||||
libs/
|
||||
*~
|
||||
*.autosave
|
||||
.DS_Store
|
||||
|
||||
/build
|
||||
/build2
|
||||
|
||||
/src/robomongo/robomongo.pro.user.1.3
|
||||
|
||||
/src/third-party/mongodb/src/third_party/js-1.7/jswgen
|
||||
.idea/
|
||||
|
||||
# Created by http://www.gitignore.io
|
||||
|
||||
### C++ ###
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
### Linux ###
|
||||
*~
|
||||
|
||||
# KDE directory preferences
|
||||
.directory
|
||||
|
||||
|
||||
### OSX ###
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
### Qt ###
|
||||
# C++ objects and libs
|
||||
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.a
|
||||
*.la
|
||||
*.lai
|
||||
*.so
|
||||
*.dll
|
||||
*.dylib
|
||||
|
||||
# Qt-es
|
||||
|
||||
/.qmake.cache
|
||||
/.qmake.stash
|
||||
*.pro.user
|
||||
*.pro.user.*
|
||||
*.moc
|
||||
|
||||
# QtCreator
|
||||
|
||||
*.autosave
|
||||
*.creator.user
|
||||
|
||||
|
||||
### Windows ###
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
.vscode/settings.json
|
||||
.vs/
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
os:
|
||||
- linux
|
||||
# - osx
|
||||
# - windows
|
||||
|
||||
dist: xenial
|
||||
sudo: require
|
||||
language: cpp
|
||||
|
||||
script:
|
||||
- bash bin/clean
|
||||
- bash bin/configure
|
||||
# - bash bin/build
|
||||
# - bash bin/run-unit-tests
|
||||
|
||||
# end of file
|
||||
@@ -0,0 +1,664 @@
|
||||
|
||||
Download latest version:
|
||||
https://robomongo.org/download
|
||||
|
||||
Robo 3T 1.4.4 (Aug/2021)
|
||||
New Features:
|
||||
- Support for Standard Connection String Format (Mongo URI)
|
||||
Fixes:
|
||||
- Fix Welcome Tab not loading the new content issue by disable/bypass HTTP cache
|
||||
|
||||
Robo 3T 1.4.3 (Jan/2021)
|
||||
New Features:
|
||||
- macOS Big Sur support
|
||||
- New Welcome Tab - embeds Chromium using QtWebEngine (Windows, macOS only)
|
||||
- Database explorer section has smaller default width (#1556)
|
||||
- Remember size of database explorer section
|
||||
- Import keys from old version: autoExpand, lineNumbers, debugMode and shellTimeoutSec
|
||||
|
||||
Fixes:
|
||||
- Disable unsupported SSH tab for replica set connections (#1285 #1340)
|
||||
- Fix crash when new shell tab executed in server unreachable case
|
||||
- Fix crash when paging used in tabbed result window (#1661)
|
||||
- Fix broken F2, F3, F4 shortcuts for tabbed result view
|
||||
- One time re-order limit per new connections window to prevent data loss (macOS, #1790)
|
||||
- Fix previously broken IPv6 support from command line: robo3t --ipv6
|
||||
|
||||
Robo 3T 1.4.2 (Oct/2020)
|
||||
Fixes:
|
||||
- Fix broken paging in DocumentDB (#1694)
|
||||
|
||||
Robo 3T 1.4.1 (Sep/2020)
|
||||
Fixes:
|
||||
- Force light mode on macOS (#1761, #1768, #1771)
|
||||
- Fix broken macOS native theme/look (#1766)
|
||||
- Fix broken Windows native theme/look
|
||||
|
||||
Robo 3T 1.4.0 (Aug/2020)
|
||||
blog.robomongo.org/robo-3t-1-4/
|
||||
|
||||
New Features:
|
||||
- Mongo shell 4.2 upgrade
|
||||
- Support for Ubuntu 20.04 and macOS 10.15 (Catalina)
|
||||
- SSH: ECDSA and Ed25519 keys support on Windows & macOS (#1719, #1530, #1590)
|
||||
- Manually specify visible databases (#1696, #1368, #389)
|
||||
|
||||
Improvements:
|
||||
- Qt Upgrade (v5.12.8 - Apr/2020, Windows & macOS only)
|
||||
- OpenSSL upgrade (v1.1.1f - Mar/2020, Windows & macOS only)
|
||||
- libssh2 upgrade (v1.9.0 - Jun/2019, Windows & macOS only)
|
||||
|
||||
Fixes:
|
||||
- Authentication database option isn't used properly (#1696)
|
||||
- Add/Edit index ops fixed (re-written) (#1692)
|
||||
- Crash when expanding admin users (#1728)
|
||||
- Unable to run query after shell timeout reached (#1529)
|
||||
|
||||
Robo 3T 1.3.1 (Apr, 2019)
|
||||
http://blog.robomongo.org/robo-3t-1-3
|
||||
|
||||
New Features:
|
||||
- Biggest change in this version is Mongo Shell version upgrade from 3.4 to 4.0.5.
|
||||
- Support for importing from DNS SRV based MongoDB connection strings
|
||||
- Query results windows now supports tabbed output #1591 #1403
|
||||
- Adding support for SCRAM-SHA-256 auth mechanism #1569
|
||||
- Support for Ubuntu 18.04 and Mac 10.14.
|
||||
- Support for creating version 4 UUID #1554
|
||||
|
||||
Improvements:
|
||||
- Encrypted passwords are used in config. file instead of clear text passwords
|
||||
- Showing much better error reason string from Mongo drivers for connection failures
|
||||
|
||||
Fixes:
|
||||
- Broken create/edit/view user features fixed and updated #638 #1041
|
||||
- Attempt to fix #1547: Crash when right click on existing results plus a new long running query
|
||||
- Fix for application crash when adding index with invalid JSON
|
||||
- 'Repair Database' in Robo3T needs a confirm dialog box #1568
|
||||
- Robo 3T the input space causes connection failure #1551
|
||||
- Crash when loading results + right click #1547
|
||||
- Attempt to fix major connection problems seen with the second edit/add/remove document operation after MongoDB 4.0 upgrade #1603
|
||||
- Attempt to fix #1581: For CRUD ops showing progress bar and disabling context menu while waiting for edit op to finish
|
||||
- Fixing UI issue where Functions folder freezing with "Functions..." when fails to refresh
|
||||
- Fix for #1529: Pagination does not work when the aggregation queries have dotted fields
|
||||
|
||||
Robo 3T 1.3.0 Beta (16 Feb, 2019)
|
||||
Details: https://github.com/Studio3T/robomongo/releases/tag/v1.3.0-beta
|
||||
|
||||
Robo 3T 1.2.1 (19 Feb, 2018)
|
||||
http://blog.robomongo.org/robo-3t-1-2
|
||||
|
||||
Fixes:
|
||||
- Aggregate query results are not pagaeble
|
||||
- Big double numbers are showing incorrectly #1447
|
||||
- Editing a document from a projection causes data loss (override) (#881)
|
||||
- Error: Resources temporarily unavailable. Error when starting up SSH session: -8 #1426
|
||||
- robo3t 1.1 failed to start on Ubuntu 17.04 #1385
|
||||
- Robo 3T is not opening on MacOS High Sierra (#1412)
|
||||
- Cannot load list of indexes #1454
|
||||
- Robo 3T is not buildable on latest MacOS High Sierra
|
||||
|
||||
Improvements
|
||||
- Qt version upgraded from Qt 5.7.0 to Qt 5.9.3
|
||||
- Auto switch to HTTP from HTTPS if the program crashes due to HTTPS related operations
|
||||
- Improvements for Robo 3T is crashing constantly on High Sierra #1412
|
||||
- PR: Improved query time formatting (#1358) #1455
|
||||
|
||||
Robo 3T 1.2.0 Beta (18 Dec, 2017)
|
||||
https://github.com/Studio3T/robomongo/releases/tag/v1.2.0-beta
|
||||
|
||||
Improvements & Fixes:
|
||||
- Qt version upgraded from Qt 5.7.0 to Qt 5.9.3
|
||||
- Fix for "Cannot load list of indexes #1454"
|
||||
- Improvements for Robo 3T is crashing constantly on High Sierra #1412
|
||||
- PR: Improved query time formatting (#1358) #1455
|
||||
- Fix for "Robo 3T is not buildable on latest MacOS vesion High Sierra"
|
||||
- Fix attempt for "Error: Resources temporarily unavailable. Error when starting up SSH session: -8 #1426"
|
||||
- Fix for "robo3t 1.1 failed to start on Ubuntu 17.04 #1385"
|
||||
|
||||
Robo 3T 1.1 (13 June, 2017)
|
||||
http://blog.robomongo.org/robomongo-1-1/
|
||||
|
||||
New Features:
|
||||
- MongoDB 3.4 support
|
||||
- New NumberDecimal (Decimal128) data type support
|
||||
- ECMAScript 2015 aka ES6 Support (Modernized JavaScript Implementation)
|
||||
- Re-naming from Robomongo to Robo 3T
|
||||
|
||||
Improvements & Fixes:
|
||||
- Stability Improvements: Fix included to prevent a crash on MACOS Sierra
|
||||
- Shell timeout is configurable on UI now 'Options->Change Shell Timeout'
|
||||
- Fix for Robomongo Shell Timeout Issue (silently, prematurely finishing long lasting scripts)
|
||||
- Security Improvements: OpenSSL version upgrade to openssl-1.0.1u (22-Sep-2016)
|
||||
- Tool chain upgrades: Modern C++14 features are enabled and usable for developers
|
||||
|
||||
Robomongo 1.1 Beta (12 May, 2017)
|
||||
https://github.com/Studio3T/robomongo/releases/tag/v1.1.0-beta
|
||||
|
||||
New Features:
|
||||
- MongoDB 3.4 Support
|
||||
- New NumberDecimal (Decimal128) data type support
|
||||
- ECMAScript 2015 (Modernized JavaScript Implementation aka ES6) Support
|
||||
|
||||
Improvements:
|
||||
- Security Improvements: OpenSSL version upgrade to openssl-1.0.1u (22-Sep-2016)
|
||||
- Tool Chain Improvements: Modern C++14 features are enabled
|
||||
|
||||
Robomongo 1.0 (21 Apr, 2017)
|
||||
http://blog.robomongo.org/robomongo-1-0
|
||||
|
||||
New Features:
|
||||
- Update Notifications Bar
|
||||
- Welcome Tab
|
||||
- Welcome Wizard
|
||||
|
||||
Improvements:
|
||||
- Replica set name configurable on UI
|
||||
- Configuration file system location change
|
||||
- "About Robomongo" dialog changes
|
||||
|
||||
Fixes:
|
||||
- Fix to avoid the same set name problem (https://github.com/Studio3T/robomongo/issues/1302)
|
||||
- Timestamp value is represented incorrectly (https://github.com/Studio3T/robomongo/issues/1159)
|
||||
- Local Timezone shows wrong date (https://github.com/Studio3T/robomongo/issues/501)
|
||||
- Time zone shown as "000:00" when UTC +00:00 is used as local timezone(https://github.com/Studio3T/robomongo/issues/1309)
|
||||
|
||||
Robomongo 1.0-RC1 (1 Feb, 2017)
|
||||
http://blog.robomongo.org/robomongo-1-rc1/
|
||||
|
||||
New Features:
|
||||
- Replica set support.
|
||||
- New 'Attributes' column in connections list window showing connection properties such as 'Replica Set', 'SSL' and 'SSH'.
|
||||
- New operation logging for almost all operations.
|
||||
|
||||
Improvements:
|
||||
- Improved error handling (no double error windows) for all fail and success conditions for the following operations:
|
||||
. Create, Drop Database
|
||||
. Create, Edit User
|
||||
. Create, Drop, Duplicate, Rename Collection
|
||||
. Insert Document
|
||||
. Remove document, Delete document, Remove all documents (triggered both from explorer and from result widget)
|
||||
. Refresh Users
|
||||
. Refresh Functions
|
||||
. Refresh Collections
|
||||
. Connection establish & refresh server fail and success cases.
|
||||
- Windows size is saved and restored for Edit, View and Insert Document dialogs.
|
||||
- Connections are automatically imported from the latest Robomongo version.
|
||||
- Better error reporting/handling and logging have been added for the operations below:
|
||||
. Create, Drop Function
|
||||
. Drop User
|
||||
- More informative and adjusted log level prefix strings haven added for log window. (Error, Warn, Info etc..).
|
||||
- After a new connection is created, now the focus goes to the newly created connection (end of list) instead of the
|
||||
beginning of connections list. And when Robomongo is opened, the focus goes to the end of the connection list instead
|
||||
of beginning.
|
||||
- Error messages added and error handling for 'remove document', 'remove all documents' operations triggered explorer
|
||||
and single or multi 'delete document' from results window have been re-implemented and improved.
|
||||
- Relevant errors are shown for the following cases now:
|
||||
. Drop attempt of non-existing collection.
|
||||
. Duplicating a collection with a collection name which already exists finishes silently.
|
||||
|
||||
Fixes:
|
||||
- Fix for the problem where the connections list comes empty if the Robomongo config file or it's directory do not exist.
|
||||
- Fix for the problem where 'in-progress bar' widget was not centered on main window for "Update Documents/Remove Documents"
|
||||
operations. https://github.com/paralect/robomongo/issues/1256
|
||||
- Fix for two problems where the operations 'insert or update documents' in one tab was causing auto reloading of other
|
||||
unrelated tabs and also multiple error windows to popup. https://github.com/paralect/robomongo/issues/1236
|
||||
- Fix for the problem where the operations 'remove document', 'remove all documents' triggered explorer and single or
|
||||
multi 'delete document' from results window were causing auto reloading of other unrelated tabs.
|
||||
|
||||
|
||||
Robomongo 0.9:
|
||||
Major Features:
|
||||
- Support for MongoDB 3.x and WiredTiger engine. Robomongo now embeds MongoDB 3.2 shell.
|
||||
(Ability to use the latest shell functionality)
|
||||
- SSH tunnel support for connections
|
||||
- SSL support
|
||||
- MongoDB Atlas (Cloud MongoDB) support
|
||||
- Both MONGODB-CR and SCRAM-SHA-1 authentication mechanisms are supported.
|
||||
- Allow direct connections to Replica Set members and support IPv6 protocol.
|
||||
- Loading of huge list of collections is now faster.
|
||||
- Create Collection dialog is now expandable to support all advanced options.
|
||||
(Supporting all major mongoDB versions 3.2, 3.0, 2.6 and all storage engine types (WiredTiger
|
||||
and MMAPV1) is added.)
|
||||
- Windows High DPI support.
|
||||
- Full size editor with dockable output window.
|
||||
|
||||
Fixed:
|
||||
- Incorrect representation of floating-point numbers (fixed since RC3). This bug was a reason of a big number of issues:
|
||||
#910, #748, #697, #699, #760, #815, #870, #892,
|
||||
#894, #905, #945, #974, #978, #990, #831, #842
|
||||
- SSH connection failure to servers on Ubuntu and OS X with the following error:
|
||||
"Resource temporarily unavailable. Error when starting up SSH session: -8" (#1090)
|
||||
|
||||
What's new in 0.9.0 Final (30 Sep, 2016)
|
||||
http://blog.robomongo.org/robomongo-0-9-0-final/
|
||||
|
||||
New Features:
|
||||
- Full size editor with dockable output window.
|
||||
- New JSON object context menu items: "Copy Name" and "Copy Path" are added.
|
||||
- New database context menu items: "Current Operations" and "Kill Operation" are added.
|
||||
- Minimize to Tray Icon for Windows.
|
||||
|
||||
Other Changes
|
||||
- Cloud platforms Compose, mLab and Amazon EC2 were tested and added as supported platforms.
|
||||
- Maximize/Restore result button behavior and icon have been improved.
|
||||
- For better code quality and code reviews, Robomongo Code Quality and Robomongo Code Review pages have been created.
|
||||
https://github.com/paralect/robomongo/wiki/Robomongo-Code-Review
|
||||
https://github.com/paralect/robomongo/wiki/Robomongo-Code-Quality
|
||||
|
||||
What's new in RC10 (Aug 8, 2016)
|
||||
http://blog.robomongo.org/robomongo-rc10/
|
||||
|
||||
New Features:
|
||||
- SSL connections with advanced options are now supported.
|
||||
- MongoDB Atlas (Cloud MongoDB) is supported.
|
||||
- Cross Platform High DPI enhancements.
|
||||
|
||||
Enhancements:
|
||||
- For better security, OpenSSL has been upgraded to OpenSSL 1.0.1p.
|
||||
- Qt has been updated from Qt 5.5 to latest Qt 5.7. With this update there are many
|
||||
enhancements including cross platform High DPI support.
|
||||
|
||||
What's new in RC9 (May 30, 2016)
|
||||
http://blog.robomongo.org/robomongo-rc9/
|
||||
|
||||
New Features:
|
||||
- Create Collection dialog with advanced options.
|
||||
- New feature has been added to save/restore window sizes. (#1102)
|
||||
- Connection settings from previous versions of Robomongo are
|
||||
now automatically imported starting from Robomongo 0.9.0 RC9. (#1086)
|
||||
- Support for querying documents by UUIDs is added, both in legacy and new encoding. (#432)
|
||||
|
||||
Fixed:
|
||||
- SSH connection failure to servers on Ubuntu and OS X with the following error:
|
||||
"Resource temporarily unavailable. Error when starting up SSH session: -8" (#1090)
|
||||
- Correct handling of create/drop of databases and collections. (#1083)
|
||||
|
||||
What's new in RC8 (April 14, 2016)
|
||||
http://blog.robomongo.org/robomongo-rc8/
|
||||
|
||||
What's new in RC7 (March 4, 2016)
|
||||
http://blog.robomongo.org/robomongo-rc7
|
||||
|
||||
What's new in RC6 (February 13, 2016)
|
||||
http://blog.robomongo.org/ipv6-protocol
|
||||
|
||||
What's new in RC5 (February 8, 2016)
|
||||
http://blog.robomongo.org/campaign-is-over-robomongo-is-not/
|
||||
|
||||
What's new in RC4 (February 1, 2016)
|
||||
http://blog.robomongo.org/robomongo-rc4
|
||||
|
||||
What's new in RC3 (January 29, 2016)
|
||||
http://blog.robomongo.org/robomongo-0-9-0-rc3-released
|
||||
|
||||
What's new in RC2 (January 26, 2016)
|
||||
http://blog.robomongo.org/robomongo-rc2-for-windows-mac-os-x-and-linux
|
||||
|
||||
What's new in RC1 (January 17, 2016)
|
||||
http://blog.robomongo.org/robomongo-rc1-with-full-support-for-mongodb-3
|
||||
|
||||
|
||||
0.8.5 / March 10, 2015
|
||||
|
||||
Release 0.8.5 is now deprecated because of a critical bug, that is
|
||||
described here: http://blog.robomongo.org/robomongo-0-9-0-rc3-released
|
||||
|
||||
We recommend to use Robomongo 0.9.0 or newer.
|
||||
|
||||
* [Stephen Steneker]
|
||||
- OS X build fixes for XCode 5 / libc++ (#524)
|
||||
- OS X specific keyboard shortcut tips (#505)
|
||||
- View documents fail if collection name is "group" (#414)
|
||||
- Problem with slash in collection names (#404)
|
||||
- Add shortcut to open JS file (#408)
|
||||
- Fullscreen mode not working on OS X (#519)
|
||||
- Usability request - add initial curly braces to command bar (#506)
|
||||
- TTL index should allow expiry of 0 seconds (#500)
|
||||
- Add line numbers to JSON editing windows on OS X (#449)
|
||||
- Add user preference to have line numbers displayed by default (#564)
|
||||
- Space after document causes validation error (#544)
|
||||
- Expand current server as soon as you connect to it (#405)
|
||||
- Switching tabs using standard keys on OS X (#87)
|
||||
- Cannot make the Edit Document Window smaller (#548)
|
||||
- Consistent numbering for tree/table/text view items (#421)
|
||||
- Reload Query with keyboard shortcut doesn't work (#551)
|
||||
- Rename "Reload" to "Re-execute query" (#447)
|
||||
- Add "Copy Timestamp from ObjectId" to context menu for ObjectId fields (#559)
|
||||
- Bug: Type of Double changed to Int32 on save document (#622)
|
||||
- "Duplicate Query In New Tab": add to Window menu with keyboard shortcut (#631)
|
||||
- No errors logged if settings directory cannot be created or settings file cannot be written to (#636)
|
||||
- Show execution time for operations that don't return results (#455)
|
||||
- Disable broken "Copy Collection to Database" misfeature (#398)
|
||||
* [Vladimir Belozyorov]
|
||||
- View mode reset to default after no results (#509)
|
||||
- Comment / uncomment selected code in the shell (#467)
|
||||
- Passphrase and password should be hidden in authentication tab (#433)
|
||||
- Cursor initialization - place between curly brackets for default find({}) query (#592)
|
||||
- Include full date/time for log entries (#596)
|
||||
- Option to disable selected code autoexecution when opening a new tab (#514)
|
||||
- Tooltip fixes to match current keyboard shortcuts (#598)
|
||||
- Expand/collapse multiple selections (#591)
|
||||
- Changes in toolbars visibility are saved in config file (#457)
|
||||
- Include connection name under shell tabs (#47)
|
||||
* [Sergey Gavruk]
|
||||
- SettingsManager typo (#558)
|
||||
- Ability to disable autocompletion (#512)
|
||||
* [Kanstantsin Kamkou]
|
||||
- Increase display width for limit & offset input fields (#458)
|
||||
* [volans-]
|
||||
- CreateUserDialog.cpp: fixed typo in warning message
|
||||
* [Andres Kievsky]
|
||||
- Added new app icon in a variety of png and iDraw formats (#693)
|
||||
* [Michael Steinacher]
|
||||
- Retina text display support (#724)
|
||||
|
||||
0.8.4 / November 27, 2013
|
||||
|
||||
Read about updates in this version here:
|
||||
http://robomongo.org/whats-new-in/robomongo-0.8.4.html
|
||||
|
||||
RC1:
|
||||
|
||||
* SSH support (#117)
|
||||
* SSL support (first steps) (#100)
|
||||
* Create or edit index problem (#341)
|
||||
* Regexp error (with non-latin symbols) (#351)
|
||||
* Support for latin characters in edit document console (#347)
|
||||
* Robomongo fails to execute shell "comments" if the comment contains a non-latin character! (#334)
|
||||
* Crash when add ISODate field (#350)
|
||||
* Crash at executing several disconnections in a row (#290)
|
||||
* Deleting multiple documents prompts for each document (#386)
|
||||
* Connection context menu appears independently of position of Robomongo instance.
|
||||
* Crash at pressing "Ctrl+T" without any connection.
|
||||
|
||||
RC2:
|
||||
|
||||
* SSH now works on Mac OS X Mavericks (#401)
|
||||
* Fixed crash when parsing date (#356)
|
||||
|
||||
Final:
|
||||
|
||||
* Selected view mode of result panels now preserved between executions. Implemented by Vladimir Belozyorov (github.com/VBelozyorov) (#402)
|
||||
|
||||
|
||||
0.8.3 / October 1, 2013
|
||||
|
||||
Read about updates in this version here:
|
||||
http://robomongo.org/whats-new-in/robomongo-0.8.3.html
|
||||
|
||||
* Enable query logging (#108)
|
||||
* Inserting multiple documents from UI (#173)
|
||||
* Removing multiple documents from UI (#174)
|
||||
* Retain current view mode when running search (#93, #79)
|
||||
* Left panel collections/functions/users navigation doesn't work when authenticating against the DB (#282)
|
||||
* A way to disable Alt + number shortcut (#192)
|
||||
* Support mongodb 2.4.x style users (#139)
|
||||
* Add "Copy JSON" menu item to context menu (#298)
|
||||
* JSON list validation (#246)
|
||||
* Crash creating new Database (#291)
|
||||
* Incorrect handling of TTL Indexes (#313)
|
||||
* Add the document _id in the tree view (#142)
|
||||
* BSON Undefined type doesn't rendered to string correctly (#306)
|
||||
* Entering incorrect symbols as database name isn't handled properly (#262)
|
||||
* Ability to select UI theme
|
||||
* We now show number of fields (inside objects) and number of items (inside arrays) in Tree View.
|
||||
* Support for Mac OS X 10.6 (#287)
|
||||
* Support for Mac OS X 10.9 (#254)
|
||||
|
||||
|
||||
0.8.2 / September 13, 2013
|
||||
|
||||
Read about updates in this version here:
|
||||
http://robomongo.org/whats-new-in/robomongo-0.8.2.html
|
||||
|
||||
|
||||
0.8.1 / September 6, 2013
|
||||
|
||||
Read about updates in this version here:
|
||||
http://robomongo.org/whats-new-in/robomongo-0.8.1.html
|
||||
|
||||
* Table Mode (in this version, only for the first-level fields in documents) (#72)
|
||||
* Paging Widget tweaks (#247, #203, #244, #243)
|
||||
* ~/.robomongorc.js file is loaded automatically when new shell is opened
|
||||
(c:\Users\Name\.robomongorc.js for Windows)
|
||||
* "Load .mongorc.js" menu item in "Options" top-level now allow to enable/disable loading
|
||||
of ~/.mongorc.js file. By default it will not load this file.
|
||||
* Batch Size now configurable (in this version only manually via ~/.config/robomongo.json)
|
||||
* JSON parser doesn't correctly parse numbers when locale isn't en_EN (#246, #253)
|
||||
* "Display Dates In" options doesn't saved/loaded correctly (#261)
|
||||
* [Linux] Support for CentOS
|
||||
* [Linux] Linux packages now takes 2x less space (10mb instead of 20mb)
|
||||
* [Windows] Desktop icon isn't created despite corresponding checkbox was checked at installation. (#260)
|
||||
* [Windows] Invalid symbols in installer for Windows if display language of system isn't English (#259)
|
||||
|
||||
|
||||
0.8.0 / August 23, 2013
|
||||
|
||||
Read about updates in this version here:
|
||||
http://robomongo.org/whats-new-in/robomongo-0.8.0.html
|
||||
|
||||
* Ability to save and load files for currently opened shell (#96)
|
||||
* MongoDB Index management (#74)
|
||||
* Expand all children recursively (#106)
|
||||
* Ability to toggle line numbers (press F11) for any editor in Robomongo (#112)
|
||||
* View Mode settings is persisted now (thanks, Luke Thompson!) (#114)
|
||||
* Search capability for any editor in Robomongo - press (Ctrl + F) (#32)
|
||||
* Timezone support: UTC or Local (#224)
|
||||
* Auto-complete on "Tab" (#95)
|
||||
* Fixed incorrect handling of Dates (#111)
|
||||
* Fixed incorrect handling of collections with leading underscore (_) symbol (#109)
|
||||
* Fixed incorrect rendering of float numbers (#115)
|
||||
* Fixed incorrect handling of Int64 numbers (#157)
|
||||
* Fixed incorrect parsing of DBRef sub-objects (#113)
|
||||
* New build system, based on CMake. Greatly simplified build and package process.
|
||||
* Qt updated to 5.1 version.
|
||||
* QScintilla updated to 2.7.2 version.
|
||||
|
||||
|
||||
0.7.1 / April 13, 2013
|
||||
|
||||
* Fixed crash when right-clicking on non-primitive elements in Tree View (#85)
|
||||
* Alt + Cmd + Arrow for switching tabs on Mac (#82)
|
||||
* Several minor bugs fixed (including #82)
|
||||
|
||||
|
||||
0.7.0 / April 4, 2013
|
||||
|
||||
* Support for UUIDs (read more: http://robomongo.org/articles/uuids.html)
|
||||
|
||||
|
||||
0.6.9 / April 3, 2013
|
||||
|
||||
* Password is hidden by default (#65)
|
||||
* Fixed incorrect rendering of large values for the db.stats() results (#70)
|
||||
* Collection names with invalid (for JS var name) characters now rendered correctly (#71)
|
||||
|
||||
|
||||
0.6.8 / April 1, 2013
|
||||
|
||||
* Support for '~/.mongorc.js'
|
||||
* Various Mac OS X UI fixes
|
||||
* Fixed crash when pressing Ctrl + W (#60)
|
||||
* "Copy Value" context menu item for documents in Tree View
|
||||
|
||||
|
||||
0.6.7 / March 26, 2013
|
||||
|
||||
* Fixed creation of new tabs based on the current one. Before this fix initial
|
||||
database for new tab wasn't identical to the "parent". (#56)
|
||||
* Support for collections that starts from digits (#54)
|
||||
* [Sergey Gavruk] Duplicate Collection feature (Collection -> Duplicate Collection
|
||||
* Collection -> Reindex will not run immediately, as before
|
||||
* Fixed incorrect disposing of tabs resources (connections etc.) (#42)
|
||||
* [Stephen Steneker] Fixed KeepAlive invalid commands, when not authorised (#41)
|
||||
* [Sergey Gavruk] Various Mac OS X UI fixes.
|
||||
|
||||
|
||||
0.6.6 / March 23, 2013
|
||||
|
||||
* Fixed possible crash when viewing results in text mode (#34)
|
||||
* Fixed possible crash when testing connection (Diagnostic window)
|
||||
* Memory leak in explorer's database tree fixed.
|
||||
|
||||
|
||||
0.6.5 / March 17, 2013
|
||||
|
||||
* Fixed "Dropped connection" issue (#28).
|
||||
* Windows Installer now be used to destribute Robomongo.
|
||||
|
||||
|
||||
0.6.4 / March 10, 2013
|
||||
|
||||
* Support for JS functions. Create/Edit/Remove/View.
|
||||
* Loading indicators (three dots for now) for Server, Collections, Functions and Users.
|
||||
* Count indicators for Server (number of databases), Collections, Functions and Users.
|
||||
* No need to type "functionName.toString()". You can output source of function
|
||||
by simply typing its name (like in the shell).
|
||||
* Support for RegEx, Code and CodeWScope bson elements. But you still cannot edit
|
||||
documents which contains Code or CodeWScope bson elements.
|
||||
* About dialog added.
|
||||
|
||||
|
||||
0.6.3 / March 5, 2013
|
||||
|
||||
* Script execution can be stopped (this works only for JS code in SpiderMonkey VM) (#23)
|
||||
* Toolbar buttons shown only if needed (#21, #20)
|
||||
* MongoDB Connections window opens when application starts.
|
||||
* Some changes in menu items locations (#25, #26)
|
||||
* View Mode buttons moved to Options menu.
|
||||
* Full Screen and Logs functionality hidden right now (postponed for versions after Robomongo 1.0)
|
||||
|
||||
|
||||
0.6.2 / March 4, 2013
|
||||
|
||||
* "Users" folder now shows list of users.
|
||||
* User can be added (Database -> Add User)
|
||||
* User can be edited (User -> Edit User)
|
||||
* User can be removed (User -> Remove Users)
|
||||
* Users can be refreshed (Users (folder) -> Refresh Users)
|
||||
* List of users can be viewed in the shell (Users (folder) -> View Users)
|
||||
|
||||
|
||||
0.6.1 / March 2, 2013
|
||||
|
||||
* Minor script editor and viewer tweaks
|
||||
|
||||
|
||||
0.6.0 / Feb 28, 2013
|
||||
|
||||
* Database can be created from UI (Server -> Create Database)
|
||||
* Database can be dropped from UI (Database -> Drop Database)
|
||||
* Collection can be created from UI (Database -> Create Collection)
|
||||
* Collection can be dropped from UI (Collection -> Drop Collection)
|
||||
* Collection can be renamed from UI (Collection -> Rename Collection)
|
||||
* All documents can be removed from UI (Collection -> Remove All Documents)
|
||||
* Minor tweaks in naming of context menu items.
|
||||
|
||||
|
||||
0.5.7 / Feb 27, 2013
|
||||
|
||||
* Support for Custom View Modes. First custom view implemented for "db.printCollectionStats()" query. You
|
||||
still can view multiple output results, even if one of them presented in custom mode.
|
||||
* "Show Log" context menu item for servers in Explorer.
|
||||
|
||||
|
||||
0.5.6 / Feb 26, 2013
|
||||
|
||||
* Support for one-line MongoDB commands ("show dbs", "show collection", "use somedb" etc.). This commands can
|
||||
be repearted (this will result in multiple output results) or they can be used together with ordinary JavaScript.
|
||||
The only rule: this command should be the only text on the line, starting from the very beginning of the line.
|
||||
* Refresh of databases and collections via "Refresh" context menu item.
|
||||
* This version of Robomongo is the first version compiled in release mode. It works much more faster and uses lower
|
||||
amount of memory.
|
||||
|
||||
|
||||
0.5.5 / Feb 22, 2013
|
||||
|
||||
* New document can be added in a more user friendly way. There are two ways to do it:
|
||||
1) Right-click on collection in Explorer and select "Insert Document"
|
||||
2) Right-click at any place of Tree View and select "Insert Document"
|
||||
* Better formatting of JSON with correct indention.
|
||||
* Support for ISODate(...) factory function in JSON parser and builder. Date in JSON mode now always
|
||||
displayed as ISODate(...), like in the shell. Document Editor accepts dates in two forms:
|
||||
as "new Date(<millisecs>)" and "ISODate(<iso_8601_date_string>)" (this behaviour identical to MongoDB shell behaviour)
|
||||
* Document editor implemented. Right-click on document in Tree View and select "Edit".
|
||||
* Document viwer implemented. Right-click on document in Tree View and select "View".
|
||||
* You can delete selected document in Tree View. (Right-click and select "Delete")
|
||||
* Validation of JSON in Document Editor/Viewer with error report, highlighting of errors and
|
||||
cursor positioning just where error is.
|
||||
* Fixed problem with "signed" dates (dates before Unix Epoch) (#5)
|
||||
* Fixed problem with UTF-8 (#17)
|
||||
* Fixed problem with loading indicator in Explorer (#18)
|
||||
|
||||
|
||||
0.5.2 / Jan 26, 2013
|
||||
|
||||
In this version autocompletion in Robomongo becomes mostly usable.
|
||||
|
||||
* AutoCompletion box now placed just near text you typed (in correct line and column)
|
||||
* AutoCompletion now works in the middle of the text (not only at the end of line, as before)
|
||||
* Ctrl + Space will trigger autocompletion for symbols under cursor.
|
||||
* If you select function in autocompletion box, their open parenthesis will overwrite existing in the text, if such available.
|
||||
|
||||
|
||||
0.5.1 / Jan 24, 2013
|
||||
|
||||
* Several autocompletion tweaks.
|
||||
|
||||
|
||||
0.5.0 / Jan 24, 2013
|
||||
|
||||
* AutoCompletion. First version.
|
||||
* Progress indicator for shells.
|
||||
* Shell result panels now have equal size, if this is possible.
|
||||
* Code cleanuped a bit.
|
||||
|
||||
|
||||
0.4.6 / Jan 11, 2013
|
||||
|
||||
* Tooltip for collections with count and size.
|
||||
|
||||
|
||||
0.4.5 / Jan 8, 2013
|
||||
|
||||
* WARNING: configuration file schema changed. Some properties will be
|
||||
empty in Connection Settings Dialog. Please fill them again.
|
||||
|
||||
* Connection test (diagnostic) implemented.
|
||||
* Indicators in the shell: current server, database and collection (if available)
|
||||
This indicators are "real" - they respect your actual query.
|
||||
* Execution time measurement. Displayed for each individual output result.
|
||||
* Paging for each output result with respect to filtering, ordering, fields,
|
||||
limit, skip etc. of actual text query (pilot version).
|
||||
* Connection cloning support in Connections Dialog.
|
||||
* Databases and collections now displayed in sorted order.
|
||||
* Batch size extended to 50 documents.
|
||||
* New shape of Shells.
|
||||
* New shape of Connection Settings Dialog
|
||||
* New shape of Connections Dialog.
|
||||
|
||||
|
||||
0.4.0 / Dec 26, 2012
|
||||
|
||||
* No more "type 'it' for more results" when we have more than 20 objects in collection.
|
||||
* Two global modes added - text and tree modes. Switch between them using F3 and F4.
|
||||
* Two local modes added - text and tree modes. Switch between them using small
|
||||
icons on Output panels for each resultset.
|
||||
* Improved performance of json creation (from list of documents).
|
||||
* Tooltips for tool buttons added.
|
||||
* Maximization of output panel implemented (via small icon at the top right of output panel)
|
||||
Click second time to restore back.
|
||||
* Fix for not working Ctrl-O key shortcut (that opens Connections menu).
|
||||
|
||||
|
||||
0.3.5 / Dec 25, 2012
|
||||
|
||||
* Context menu for server, database and collection.
|
||||
* Tab management (Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+T, Ctrl+F4)
|
||||
* Context menu for tab
|
||||
* Submenu for Connect button with connections.
|
||||
* Hotkeys for first 9 connections (Alt+1, ..., Alt+9)
|
||||
* Connections reordering via drag'n'drop in Connections dialog.
|
||||
* Correct focus placement when opening new connection and switching tabs.
|
||||
* Bonus: F12 - opens connections menu from any place.
|
||||
* Memory leaks fix.
|
||||
+63
-270
@@ -1,278 +1,71 @@
|
||||
cmake_minimum_required(VERSION 2.8.0)
|
||||
cmake_minimum_required(VERSION 3.8.0)
|
||||
project(Robomongo)
|
||||
|
||||
###
|
||||
# Settings
|
||||
#
|
||||
set(PROJECT_NAME "Robomongo" CACHE STRING "Project Name")
|
||||
set(PROJECT_NAME_TITLE ${PROJECT_NAME})
|
||||
set(PROJECT_DOMAIN "www.robomongo.org" CACHE STRING "Internet domain name for ${PROJECT_NAME}")
|
||||
set(PROJECT_COMPANYNAME "Paralect" CACHE STRING "Company name for ${PROJECT_NAME}")
|
||||
set(PROJECT_COPYRIGHT "Copyright (C) 2013 ${PROJECT_COMPANYNAME} All Rights Reserved.")
|
||||
set(PROJECT_COMPANYNAME_DOMAIN "www.paralect.com" CACHE STRING "Internet domain name for ${PROJECT_NAME}")
|
||||
set(PROJECT_GITHUB_FORK "www.github.com/paralect/robomongo" CACHE STRING "Git fork of ${PROJECT_NAME}")
|
||||
set(PROJECT_GITHUB_ISSUES "www.github.com/paralect/robomongo/issues" CACHE STRING "Git issue link for ${PROJECT_NAME}")
|
||||
# Where to look first for CMake modules, before "${CMAKE_ROOT}/Modules" is checked
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
|
||||
|
||||
# Project version
|
||||
set(PROJECT_VERSION_MAJOR "1")
|
||||
set(PROJECT_VERSION_MINOR "4")
|
||||
set(PROJECT_VERSION_PATCH "4")
|
||||
set(PROJECT_VERSION_BUILD "")
|
||||
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${PROJECT_VERSION_BUILD}")
|
||||
|
||||
STRING(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWERCASE)
|
||||
SET(MAJOR "0")
|
||||
SET(MINOR "8")
|
||||
SET(PATCH "4")
|
||||
SET(BUILD "")
|
||||
SET(SHORT_VERSION ${MAJOR}.${MINOR}.${PATCH} CACHE STRING "${PROJECT_NAME} short version")
|
||||
SET(PROJECT_VERSION "${SHORT_VERSION}${BUILD}" CACHE STRING "${PROJECT_NAME} version")
|
||||
IF(APPLE AND CMAKE_OSX_SYSROOT)
|
||||
STRING(REGEX REPLACE ".*MacOSX([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
|
||||
STRING(REGEX REPLACE ".*MacOSX([0-9]+)\\.([0-9]+).*$" "\\2" DARWIN_MINOR_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
|
||||
IF(EXISTS "${CMAKE_OSX_SYSROOT}")
|
||||
SET(MACOSX_DEPLOYMENT_TARGET ${DARWIN_MAJOR_SDK_VERSION}.${DARWIN_MINOR_SDK_VERSION})
|
||||
SET(CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}")
|
||||
MESSAGE("Setting MACOSX_DEPLOYMENT_TARGET to '${MACOSX_DEPLOYMENT_TARGET}'.")
|
||||
ENDIF()
|
||||
ELSEIF(UNIX AND NOT APPLE)
|
||||
SET(PROJECT_NAME ${PROJECT_NAME_LOWERCASE})
|
||||
ENDIF()
|
||||
#############################################################
|
||||
# Configure project
|
||||
PROJECT(${PROJECT_NAME})
|
||||
########################## Options #########################
|
||||
OPTION(GENERATE_TRANSLATIONS "Generate ts-files for ${PROJECT_NAME}" OFF)
|
||||
IF(WIN32)
|
||||
OPTION(MANIFEST_ENABLE "Enable Manifest" ON)
|
||||
ENDIF(WIN32)
|
||||
OPTION(BOOST_ENABLED "Enable boost system support" OFF)
|
||||
OPTION(OPENSSL_ENABLED "Enable openssl support" ON)
|
||||
OPTION(SSH_ENABLED "Enable ssh support" ON)
|
||||
OPTION(BUILD_PCRECPP_LIBRARY "Build pcrecpp library from sources" ON)
|
||||
OPTION(QT_ENABLED "Enable Qt support" ON)
|
||||
OPTION(CPACK_SUPPORT "Enable package support" ON)
|
||||
OPTION(UNICODE_ENABLE "Support unicode" OFF)
|
||||
OPTION(DEVELOPER_DYNAMIC_RUNTIME "Build with dynamic C++ runtime" ON)
|
||||
OPTION(DEVELOPER_FEATURES "Use some debug tricks for developers" OFF)
|
||||
OPTION(DEVELOPER_ENABLE_TESTS "Enable tests for ${PROJECT_NAME_TITLE} project" ON)
|
||||
# Enable C++17 features
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
IF(OPENSSL_ENABLED)
|
||||
#SET(OPENSSL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/OpenSSL CACHE PATH "path to openSSL")
|
||||
ENDIF(OPENSSL_ENABLED)
|
||||
# Modules
|
||||
include(RobomongoPrintUtils)
|
||||
include(RobomongoCMakeDefaults)
|
||||
include(RobomongoDefaults)
|
||||
include(RobomongoCommon)
|
||||
include(RobomongoTrashSymbols)
|
||||
include(RobomongoTargetArch)
|
||||
include(RobomongoInstallQt)
|
||||
include(RobomongoPackage)
|
||||
|
||||
IF(MSVC)
|
||||
IF(CMAKE_CL_64)
|
||||
OPTION(BUILD_64X "Build 64bit project" ON)
|
||||
ELSE()
|
||||
OPTION(BUILD_64X "Build 64bit project" OFF)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
IF("${OS_ARC}" STREQUAL "64")
|
||||
OPTION(BUILD_64X "Build 64bit project" ON)
|
||||
ELSEIF("${OS_ARC}" STREQUAL "32")
|
||||
OPTION(BUILD_64X "Build 64bit project" OFF)
|
||||
ELSE()
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
OPTION(BUILD_64X "Build 64bit project" ON)
|
||||
ELSE(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
OPTION(BUILD_64X "Build 64bit project" OFF)
|
||||
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
# Search for dependencies
|
||||
find_package(Threading REQUIRED) # Wrapper arround CMake "Threads" module
|
||||
find_package(Qt5Core REQUIRED)
|
||||
find_package(Qt5Gui REQUIRED)
|
||||
find_package(Qt5Widgets REQUIRED)
|
||||
find_package(Qt5PrintSupport REQUIRED)
|
||||
find_package(Qt5Network REQUIRED)
|
||||
find_package(Qt5Xml REQUIRED)
|
||||
if(NOT SYSTEM_LINUX)
|
||||
find_package(Qt5WebEngineWidgets REQUIRED)
|
||||
endif()
|
||||
find_package(MongoDB REQUIRED)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
IF (NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE DEBUG)
|
||||
ENDIF()
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX AND NOT MINGW)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
if (SYSTEM_MACOSX)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.14)
|
||||
find_package(Qt5MacExtras REQUIRED)
|
||||
endif()
|
||||
|
||||
INCLUDE(cmake/config.cmake)
|
||||
# Projects
|
||||
set(LIBSSH2_VERSION 1.9.0)
|
||||
if(SYSTEM_LINUX)
|
||||
set(LIBSSH2_VERSION 1.7.0)
|
||||
endif()
|
||||
set(LIBSSH2_DIR src/third-party/libssh2-${LIBSSH2_VERSION})
|
||||
set(QJSON_VERSION 0.8.1)
|
||||
set(QJSON_DIR src/third-party/qjson-${QJSON_VERSION})
|
||||
set(QSCINTILLA_VERSION 2.8.4)
|
||||
set(QSCINTILLA_DIR src/third-party/qscintilla-${QSCINTILLA_VERSION})
|
||||
set(ESPRIMA_VERSION 2.7.3)
|
||||
set(ESPRIMA_DIR src/third-party/esprima-${ESPRIMA_VERSION})
|
||||
# todo: Use equivalent vars from googletest cmake files. Currently they are somehow not working.
|
||||
set(GOOGLE_TEST_VERSION 1.8.1)
|
||||
set(GOOGLE_TEST_DIR src/third-party/googletest-${GOOGLE_TEST_VERSION})
|
||||
add_subdirectory(${LIBSSH2_DIR})
|
||||
add_subdirectory(src/robomongo/ssh)
|
||||
add_subdirectory(${QJSON_DIR})
|
||||
add_subdirectory(${QSCINTILLA_DIR})
|
||||
add_subdirectory(${GOOGLE_TEST_DIR})
|
||||
add_subdirectory(src/robomongo)
|
||||
add_subdirectory(src/robomongo-unit-tests)
|
||||
|
||||
DEFINE_DEFAULT_DEFINITIONS()
|
||||
|
||||
# Search libraries
|
||||
# use Qt
|
||||
DETECT_QT()
|
||||
##################### Libraries search ###################
|
||||
IF(DEVELOPER_QT5)
|
||||
SET(QT_COMPONENTS_TO_USE Qt5Core Qt5Gui Qt5Widgets)
|
||||
IF(UNIX AND NOT APPLE)
|
||||
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} Qt5DBus) #for libqxcb
|
||||
ENDIF(UNIX AND NOT APPLE)
|
||||
ELSE()
|
||||
SET(QT_COMPONENTS_TO_USE QtCore QtGui)
|
||||
ENDIF()
|
||||
INTEGRATE_QT(${QT_COMPONENTS_TO_USE})
|
||||
##########################################################
|
||||
|
||||
IF(BUILD_64X)
|
||||
SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS 1)
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m64")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m64")
|
||||
ELSEIF(MSVC)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /machine:x64")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /machine:x64")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /machine:x64")
|
||||
ENDIF()
|
||||
IF(APPLE)
|
||||
SET(CMAKE_OSX_ARCHITECTURES x86_64)
|
||||
ENDIF()
|
||||
SET(ARCH_TEXT 64)
|
||||
SET(ARCH_TEXT_PACKAGE x86_64)#amd64
|
||||
ELSE()
|
||||
SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS 0)
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m32")
|
||||
ELSEIF(MSVC)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /machine:x86")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /machine:x86")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /machine:x86")
|
||||
ENDIF()
|
||||
IF(APPLE)
|
||||
SET(CMAKE_OSX_ARCHITECTURES i386)
|
||||
#-DCMAKE_OSX_ARCHITECTURES= ;i386
|
||||
ENDIF()
|
||||
SET(ARCH_TEXT 32)
|
||||
SET(ARCH_TEXT_PACKAGE i386)
|
||||
ENDIF()
|
||||
|
||||
##################################DEFAULT VALUES##########################################
|
||||
IF(NOT CMAKE_INSTALL_PREFIX})
|
||||
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")
|
||||
ENDIF()
|
||||
|
||||
IF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
||||
MESSAGE(SEND_ERROR "In-source builds are not allowed.")
|
||||
ENDIF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
||||
|
||||
############################################################################
|
||||
IF(WIN32)
|
||||
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/win.rc")
|
||||
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/windows/winres.rc.in")
|
||||
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/src/robomongo/gui/resources/robo.ico")
|
||||
SET(LIB_INSTALL_DESTINATION .)
|
||||
SET(TARGET_INSTALL_DESTINATION .)
|
||||
ELSEIF(APPLE)
|
||||
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/robomongo.desktop")
|
||||
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/robomongo.desktop.in" )
|
||||
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/install/osx/Robomongo.icns")
|
||||
SET(LIB_INSTALL_DESTINATION .)
|
||||
SET(TARGET_INSTALL_DESTINATION .)
|
||||
ELSEIF(UNIX)
|
||||
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.desktop")
|
||||
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/robomongo.desktop.in")
|
||||
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/install/linux/robomongo.png")
|
||||
SET(LIB_INSTALL_DESTINATION lib)
|
||||
SET(TARGET_INSTALL_DESTINATION bin)
|
||||
ENDIF()
|
||||
# project sources
|
||||
SET_PROPERTY( GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
ADD_SUBDIRECTORY(src)
|
||||
IF(CPACK_SUPPORT)
|
||||
SET(CPACK_PACKAGE_DESCRIPTION "Shell-centric cross-platform MongoDB management tool.")
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME_TITLE} shell-centric cross-platform MongoDB management tool.")#CPACK_DEBIAN_PACKAGE_DESCRIPTION CPACK_RPM_PACKAGE_SUMMARY
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")#CPACK_RPM_PACKAGE_DESCRIPTION
|
||||
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
SET(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
|
||||
SET(CPACK_PACKAGE_VENDOR ${PROJECT_COMPANYNAME})#CPACK_RPM_PACKAGE_VENDOR
|
||||
SET(CPACK_PACKAGE_CONTACT "Dmitry Schetnikovich <dima@paralect.com>")#CPACK_DEBIAN_PACKAGE_MAINTAINER
|
||||
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR})
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR ${MINOR})
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH ${SHORT_VERSION})
|
||||
IF(BUILD)
|
||||
STRING(REGEX REPLACE " " "" BUILD_ESCAPE ${BUILD})
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${BUILD_ESCAPE}")
|
||||
ENDIF(BUILD)
|
||||
SET(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_PATCH})#CPACK_DEBIAN_PACKAGE_VERSION CPACK_RPM_PACKAGE_VERSION
|
||||
SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})#CPACK_DEBIAN_PACKAGE_NAME CPACK_RPM_PACKAGE_NAME
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARCH_TEXT_PACKAGE}")#out package name
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}")
|
||||
SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME})
|
||||
SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME_TITLE};${PROJECT_NAME}")
|
||||
MESSAGE(STATUS "CPACK_PACKAGE_FILE_NAME: ${CPACK_PACKAGE_FILE_NAME}")
|
||||
SET(CPACK_MONOLITHIC_INSTALL ON)
|
||||
|
||||
IF(WIN32)
|
||||
IF(NOT CPACK_GENERATOR)
|
||||
SET(CPACK_GENERATOR NSIS)
|
||||
ENDIF(NOT CPACK_GENERATOR)
|
||||
IF(CPACK_GENERATOR STREQUAL "NSIS")
|
||||
# There is a bug in NSI that does not handle full unix paths properly. Make
|
||||
# sure there is at least one set of four (4) backlasshes.
|
||||
#SET(CPACK_NSIS_MODIFY_PATH ON)
|
||||
SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/install/windows\\\\nsis-top-logo.bmp")
|
||||
SET(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${PROJECT_NAME}.exe")
|
||||
SET(CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}.exe")
|
||||
SET(CPACK_NSIS_CREATE_ICONS "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROJECT_NAME}.lnk\\\" \\\"$INSTDIR\\\\${PROJECT_NAME}.exe\\\"")
|
||||
SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\" \\\"$INSTDIR\\\\${PROJECT_NAME}.exe\\\"")
|
||||
SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\"")
|
||||
SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
|
||||
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\${PROJECT_COMPANYNAME_DOMAIN}")
|
||||
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\${PROJECT_DOMAIN}")
|
||||
SET(SIDEBAR_IMAGE ${CMAKE_SOURCE_DIR}/install/windows\\\\database.bmp)
|
||||
SET(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${SIDEBAR_IMAGE}\\\"")
|
||||
SET(CPACK_NSIS_CONTACT "me@my-personal-home-page.com")
|
||||
SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "..\\\\${PROJECT_NAME}.exe")
|
||||
ENDIF(CPACK_GENERATOR STREQUAL "NSIS")
|
||||
ELSEIF(APPLE)
|
||||
IF(NOT CPACK_GENERATOR)
|
||||
SET(CPACK_GENERATOR DragNDrop)
|
||||
ENDIF(NOT CPACK_GENERATOR)
|
||||
#SET(CPACK_OSX_PACKAGE_VERSION "10.5")
|
||||
ELSEIF(UNIX)
|
||||
SET(CPACK_STRIP_FILES ON)
|
||||
#SET(UBUNTU_LP_BUG 300472)
|
||||
#SET(CPACK_STRIP_FILES "bin/${PROJECT_NAME}")
|
||||
#SET(CPACK_SOURCE_STRIP_FILES "")
|
||||
IF(NOT CPACK_GENERATOR)
|
||||
SET(CPACK_GENERATOR DEB)
|
||||
ENDIF(NOT CPACK_GENERATOR)
|
||||
IF(CPACK_GENERATOR STREQUAL "RPM" OR CPACK_GENERATOR STREQUAL "DEB")
|
||||
SET(CPACK_PACKAGING_INSTALL_PREFIX "/opt/${PROJECT_NAME}")
|
||||
ENDIF(CPACK_GENERATOR STREQUAL "RPM" OR CPACK_GENERATOR STREQUAL "DEB")
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/postinst.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/postinst" @ONLY IMMEDIATE)
|
||||
FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/postinst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
|
||||
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/prerm.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/prerm" @ONLY IMMEDIATE)
|
||||
FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/prerm DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
|
||||
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
IF(CPACK_GENERATOR STREQUAL "RPM")
|
||||
#CPACK_RPM_PACKAGE_ARCHITECTURE CPACK_RPM_PACKAGE_LICENSE CPACK_RPM_PACKAGE_DESCRIPTION CPACK_RPM_SPEC_INSTALL_POST
|
||||
#SET(CPACK_PACKAGE_RELEASE 1)
|
||||
SET(CPACK_RPM_PACKAGE_LICENSE "GPL v3")
|
||||
SET(CPACK_RPM_PACKAGE_AUTOREQPROV "no")
|
||||
SET(CPACK_RPM_PACKAGE_REQUIRES "libc.so.6 >= 2.12, libstdc++.so.6 >= 6.0.13")
|
||||
SET(CPACK_RPM_PACKAGE_RELEASE 1)
|
||||
SET(CPACK_RPM_PACKAGE_GROUP "Development/Libraries/${PROJECT_COMPANYNAME}")
|
||||
SET(CPACK_RPM_PACKAGE_ARCHITECTURE ${ARCH_TEXT_PACKAGE})
|
||||
SET(CPACK_RPM_PACKAGE_VERSION ${SHORT_VERSION})
|
||||
SET(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/postinst")
|
||||
SET(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/prerm")
|
||||
ELSEIF(CPACK_GENERATOR STREQUAL "DEB")
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/fixup_deb.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/fixup_deb.sh" @ONLY IMMEDIATE)
|
||||
IF(ARCH_TEXT_PACKAGE STREQUAL x86_64)
|
||||
SET(ARCH_TEXT_PACKAGE amd64)
|
||||
ENDIF()
|
||||
#SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||
#CPACK_DEBIAN_PACKAGE_HOMEPAGE The URL of the web site for this package
|
||||
SET(CPACK_DEBIAN_PACKAGE_DEBUG ON)
|
||||
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.12), libstdc++6 (>= 4.4.7)")
|
||||
SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
||||
SET(CPACK_DEBIAN_PACKAGE_SECTION "database")#input our section
|
||||
SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS "Unknown")
|
||||
SET(CPACK_DEBIAN_PACKAGE_SUGGESTS "Unknown")
|
||||
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH_TEXT_PACKAGE})#i386
|
||||
SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/postinst;${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/prerm")
|
||||
ENDIF(CPACK_GENERATOR STREQUAL "RPM")
|
||||
ENDIF(WIN32)
|
||||
INCLUDE(CPack)
|
||||
ENDIF(CPACK_SUPPORT)
|
||||
# Show configuration summary
|
||||
include(RobomongoConfigurationSummary)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
Robomongo, shell-centric cross-platform MongoDB management tool.
|
||||
Robo 3T, shell-centric cross-platform MongoDB management tool.
|
||||
|
||||
Copyright 2013, Paralect.
|
||||
Copyright 2014-2017 3T Software Labs Ltd.
|
||||
|
||||
The Robomongo is released under the terms of the GNU General Public
|
||||
The Robo 3T is released under the terms of the GNU General Public
|
||||
License, version 3.
|
||||
|
||||
The Robomongo Project includes files written by third parties
|
||||
The Robo 3T Project includes files written by third parties
|
||||
and used with permission or subject to their respective license
|
||||
agreements.
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
Robo 3T is a shell-centric cross-platform open source MongoDB management
|
||||
tool (i.e. Admin GUI). Robomongo embeds the same JavaScript engine that
|
||||
powers MongoDB's mongo shell.
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
FROM debian
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends --fix-missing\
|
||||
libgl-dev \
|
||||
qt5dxcb-plugin \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/
|
||||
|
||||
ADD https://download-test.robomongo.org/linux/robo3t-1.3.1-linux-x86_64-7419c406.tar.gz /opt/robo3t.tar.gz
|
||||
RUN cd /opt/ \
|
||||
&& mkdir robo3t \
|
||||
&& tar -C /opt/robo3t --strip-components 1 -xzf robo3t.tar.gz && rm robo3t.tar.gz \
|
||||
&& ls /opt/robo3t
|
||||
|
||||
VOLUME /root/.3T
|
||||
VOLUME /root/.config/3T
|
||||
|
||||
CMD /opt/robo3t/bin/robo3t
|
||||
@@ -1,35 +1,138 @@
|
||||
About Robomongo
|
||||
|
||||
About Robo 3T
|
||||
===============
|
||||
|
||||
Robomongo — is a shell-centric crossplatform MongoDB management tool. <br />
|
||||
Visit our site: [www.robomongo.org](http://www.robomongo.org)
|
||||
[Robo 3T](http://www.robomongo.org) (formerly Robomongo *) is a shell-centric cross-platform MongoDB management tool. Unlike most other MongoDB admin UI tools, Robo 3T embeds the actual `mongo` shell in a tabbed interface with access to a shell command line as well as GUI interaction.
|
||||
|
||||
The latest stable release **Robo 3T 1.4** embeds **MongoDB 4.2** shell.
|
||||
|
||||
Blog: http://blog.robomongo.org/robo-3t-1-4/
|
||||
Download: https://robomongo.org/download
|
||||
All Releases: https://github.com/Studio3T/robomongo/releases
|
||||
Watch: [Robo 3T Youtube channel](https://www.youtube.com/channel/UCM_7WAseRWeeiBikExppstA)
|
||||
Follow: https://twitter.com/Robomongo
|
||||
|
||||
**Embedded MongoDB shell history:**
|
||||
Robo 3T 1.4 -> MongoDB 4.2
|
||||
Robo 3T 1.3 -> MongoDB 4.0
|
||||
Robo 3T 1.1 -> MongoDB 3.4
|
||||
Robo 3T 0.9 -> MongoDB 3.2
|
||||
Robo 3T 0.8.x -> MongoDB 2.4.0
|
||||
|
||||
\* [Robomongo has been acquired by 3T](https://studio3t.com/press/3t-software-labs-acquires-robomongo-the-most-widely-used-mongodb-tool/)
|
||||
|
||||
What's new in latest Robo 3T 1.4?
|
||||
====================================
|
||||
|
||||
New Features:
|
||||
- Mongo shell 4.2 upgrade
|
||||
- Support for Ubuntu 20.04, macOS Big Sur and macOS 10.15 (Catalina)
|
||||
- SSH: ECDSA and Ed25519 keys support on Windows & macOS (issues #1719, #1530, #1590)
|
||||
- Manually specify visible databases (issues #1696, #1368, #389)
|
||||
- New Welcome Tab - embeds Chromium using QtWebEngine (Windows, macOS only)
|
||||
- Import keys from old version: autoExpand, lineNumbers, debugMode and shellTimeoutSec
|
||||
|
||||
Improvements:
|
||||
- Qt Upgrade (v5.12.8 - Apr/2020, Windows & macOS only)
|
||||
- OpenSSL upgrade (v1.1.1f - Mar/2020, Windows & macOS only)
|
||||
- libssh2 upgrade (v1.9.0 - Jun/2019, Windows & macOS only)
|
||||
- Database explorer section has smaller default width (#1556)
|
||||
- Remember database explorer section size
|
||||
|
||||
Fixes:
|
||||
- Fix previously broken IPv6 support from command line: robo3t --ipv6
|
||||
- Fix crash when paging used in tabbed result window (#1661)
|
||||
- Fix broken paging in DocumentDB (#1694)
|
||||
- Authentication database option isn't used properly (#1696)
|
||||
- Add/Edit index ops fixed (re-written) (#1692)
|
||||
- Crash when expanding admin users (#1728)
|
||||
- Unable to run query after shell timeout reached (#1529)
|
||||
- Fix broken F2, F3, F4 shortcuts for tabbed result view
|
||||
- One time re-order limit per new connections window to prevent data loss (macOS, #1790)
|
||||
- Fix crash when new shell tab executed in server unreachable case
|
||||
|
||||
Supported Platforms
|
||||
===============
|
||||
|
||||
Note: This sections is for Robo 3T and it directly depends on what MongoDB suppports
|
||||
(See: https://docs.mongodb.com/manual/administration/production-notes/#prod-notes-supported-platforms)
|
||||
|
||||
| MongoDB Versions | MongoDB Cloud Platforms |
|
||||
| :-------------------- | :-------------------- |
|
||||
| 4.2 | Mongo Atlas |
|
||||
| 4.0 |
|
||||
| 3.6 |
|
||||
|
||||
| Windows | Mac | Linux |
|
||||
|:---------------------- | :--------------------------------| :---------------------------|
|
||||
| Windows 64-bit 10 | Mac OS X 11 (Big Sur) | Linux Ubuntu 20.04 64-bit |
|
||||
Windows 64-bit 8.1 | Mac OS X 10.15 (Catalina) | Linux Ubuntu 18.04 64-bit |
|
||||
| Windows 64-bit 7 | Mac OS X 10.14 (Mojave) | |
|
||||
|
||||
|
||||
Contribute!
|
||||
===========
|
||||
|
||||
### Code Contributions
|
||||
|
||||
See all docs here: https://github.com/Studio3T/robomongo/wiki
|
||||
|
||||
**Some important docs:**
|
||||
- [Build Diagram](https://github.com/Studio3T/robomongo/wiki/Robo-3T-Schematics:-Build,-Class-and-UI-Diagrams#1-build-diagram)
|
||||
- [Static Code Analysis](https://github.com/Studio3T/robomongo/wiki/Static-Code-Analysis)
|
||||
- [Robo 3T Feature Specisification](https://github.com/Studio3T/robomongo/wiki/Feature-Spec)
|
||||
- [Debugging](https://github.com/Studio3T/robomongo/blob/master/docs/Debug.md)
|
||||
- [Schematics](https://github.com/Studio3T/robomongo/tree/master/schematics)
|
||||
|
||||
Code contributions are always welcome! Just try to follow our pre-commit checks and coding style:
|
||||
- [Robo 3T Code Quality](https://github.com/paralect/robomongo/wiki/Robomongo-Code-Quality)
|
||||
- [Robo 3T C++11/14 Transition Guide](https://github.com/Studio3T/robomongo/wiki/Robomongo-Cplusplus-11,-14-Transition-Guide)
|
||||
- [Robo 3T Coding Style](https://github.com/paralect/robomongo/wiki/Robomongo-Coding-Style)
|
||||
|
||||
If you plan to contribute, please create a Github issue (or comment on the relevant existing issue) so we can help coordinate with upcoming release plans.
|
||||
|
||||
Pull requests (PRs) should generally be for discrete issues (i.e. one issue per PR please) and be clean to merge against the current master branch. It would also be helpful if you can confirm what testing has been done (specific O/S targets and MongoDB versions if applicable).
|
||||
|
||||
A usual naming approach for feature branches is `issue-###`. Include the issue number in your commit message / pull request description to link the PR to the original issue.
|
||||
|
||||
For example:
|
||||
```#248: updated QScintilla to 2.4.8 for retina display support".```
|
||||
|
||||
### Testing
|
||||
|
||||
- [Unit-Tests](https://github.com/Studio3T/robomongo/wiki/Unit-Tests)
|
||||
- [Manual Tests](wiki/Tests)
|
||||
- See all docs here: https://github.com/Studio3T/robomongo/wiki
|
||||
|
||||
### Suggest Features
|
||||
|
||||
New feature suggestions or UI improvements are always welcome.
|
||||
[Create a new feature request on github](https://github.com/paralect/robomongo/issues/new)
|
||||
|
||||
This project is powered by open source volunteers, so we have a limited amount of development resource to address all requests. We will certainly make best efforts to progress (particularly for those with strong community upvotes).
|
||||
|
||||
|
||||
Download
|
||||
========
|
||||
|
||||
You can download compiled version (for Mac OS X, Windows and Linux) from our site:<br />
|
||||
[www.robomongo.org](http://www.robomongo.org)
|
||||
You can download tested installer packages for macOS, Windows, and Linux from our site: [www.robomongo.org](http://www.robomongo.org).
|
||||
|
||||
<!-- https://www.dropbox.com/sh/u0s0i8e4m0a8i9f/oxtqKHPUZ8 -->
|
||||
Support
|
||||
=======
|
||||
|
||||
Vote for the Feature
|
||||
====================
|
||||
Please view our [Magic Backlog](http://robomongo.org/backlog). Here we are all together
|
||||
building priorities for the next versions of Robomongo.
|
||||
Robo 3T is an open source project driven by volunteers. We'll try to get to your questions as soon as we can, but please be patient :).
|
||||
|
||||
Contribute
|
||||
==========
|
||||
Contributions are always welcome! Just try to follow our coding style: [Robomongo Coding Style](https://github.com/paralect/robomongo/wiki/Robomongo-Coding-Style)
|
||||
You can:
|
||||
|
||||
Build
|
||||
=====
|
||||
- [Create a new issue in the Github issue queue](https://github.com/paralect/robomongo/issues)
|
||||
|
||||
- [Join developer discussion on Gitter](https://gitter.im/paralect/robomongo)
|
||||
|
||||
Build documentation: [Build Robomongo](https://github.com/paralect/robomongo/wiki/Build-Robomongo)
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
Copyright (C) 2013 Paralect, Inc (http://www.paralect.com)
|
||||
Copyright 2014-2021 [3T Software Labs Ltd](https://studio3t.com/). All rights reserved.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 3 as
|
||||
@@ -42,62 +145,3 @@ GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
<!--
|
||||
|
||||
Outdated build documentation:<br />
|
||||
[Building Robomongo and Dependencies (for Linux and Mac OS X)]
|
||||
(https://github.com/paralect/robomongo/wiki/Building-Robomongo-and-Dependencies-(for-Linux-and-Mac-OS-X\))
|
||||
|
||||
|
||||
|
||||
|
||||
You are lucky enough, if prebuild libraries (that are in `libs` folder) are
|
||||
already available and match your OS/Compiler. For most of you it's not —
|
||||
you need to build Robomongo dependencies, before building Robomongo itself.
|
||||
|
||||
Here is a detailed instructions on building Robomongo dependencies for Linux and/or Mac OS X:<br />
|
||||
[Building Robomongo and Dependencies (for Linux and Mac OS X)]
|
||||
(https://github.com/paralect/robomongo/wiki/Building-Robomongo-and-Dependencies-(for-Linux-and-Mac-OS-X\))
|
||||
|
||||
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
The following steps assume that all dependencies already compiled.
|
||||
|
||||
Prerequisites:
|
||||
|
||||
* Qt should be compiled with VC2010. Tested with Qt 4.8
|
||||
* Your PATH variable should have Qt bin folder
|
||||
* Visual Studio 2010 should be installed and VC should be in this location: %ProgramFiles%\Microsoft Visual Studio 10.0\VC. Otherwise you need to modify VISUALC_PATH in build script.
|
||||
|
||||
Compiling:
|
||||
|
||||
> cd build
|
||||
> build.bat
|
||||
|
||||
Executable will be placed to: target/debug/app/out
|
||||
|
||||
|
||||
|
||||
Linux and OS X
|
||||
---------------
|
||||
|
||||
The following steps assume that all dependencies already compiled.
|
||||
|
||||
Prerequisites:
|
||||
|
||||
* Qt should be installed. Tested with Qt 4.8
|
||||
* Your PATH variable should have Qt bin folder
|
||||
|
||||
Compiling:
|
||||
|
||||
$ cd build
|
||||
$ chmod u+x build.sh
|
||||
$ ./build.sh
|
||||
|
||||
Executable will be placed to: target/debug/app/out
|
||||
|
||||
-->
|
||||
|
||||
@@ -1,275 +0,0 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0)
|
||||
#CMAKE_POLICY(SET CMP0020 NEW)
|
||||
#################### Project Settings ####################
|
||||
SET(PROJECT_NAME "Robomongo" CACHE STRING "Project Name")
|
||||
SET(PROJECT_NAME_TITLE ${PROJECT_NAME})
|
||||
SET(PROJECT_DOMAIN "www.robomongo.org" CACHE STRING "Internet domain name for ${PROJECT_NAME}")
|
||||
SET(PROJECT_COMPANYNAME "Paralect" CACHE STRING "Company name for ${PROJECT_NAME}")
|
||||
SET(PROJECT_COPYRIGHT "Copyright (C) 2013 ${PROJECT_COMPANYNAME} All Rights Reserved.")
|
||||
SET(PROJECT_COMPANYNAME_DOMAIN "www.paralect.com" CACHE STRING "Internet domain name for ${PROJECT_NAME}")
|
||||
SET(PROJECT_GITHUB_FORK "www.github.com/paralect/robomongo" CACHE STRING "Git fork of ${PROJECT_NAME}")
|
||||
SET(PROJECT_GITHUB_ISSUES "www.github.com/paralect/robomongo/issues" CACHE STRING "Git issue link for ${PROJECT_NAME}")
|
||||
##########################################################
|
||||
STRING(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWERCASE)
|
||||
SET(MAJOR "0")
|
||||
SET(MINOR "8")
|
||||
SET(PATCH "4")
|
||||
SET(BUILD " RC2")
|
||||
SET(SHORT_VERSION ${MAJOR}.${MINOR}.${PATCH} CACHE STRING "${PROJECT_NAME} short version")
|
||||
SET(PROJECT_VERSION "${SHORT_VERSION}${BUILD}" CACHE STRING "${PROJECT_NAME} version")
|
||||
IF(APPLE AND CMAKE_OSX_SYSROOT)
|
||||
STRING(REGEX REPLACE ".*MacOSX([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
|
||||
STRING(REGEX REPLACE ".*MacOSX([0-9]+)\\.([0-9]+).*$" "\\2" DARWIN_MINOR_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
|
||||
IF(EXISTS "${CMAKE_OSX_SYSROOT}")
|
||||
SET(MACOSX_DEPLOYMENT_TARGET ${DARWIN_MAJOR_SDK_VERSION}.${DARWIN_MINOR_SDK_VERSION})
|
||||
SET(CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}")
|
||||
MESSAGE("Setting MACOSX_DEPLOYMENT_TARGET to '${MACOSX_DEPLOYMENT_TARGET}'.")
|
||||
ENDIF()
|
||||
ELSEIF(UNIX AND NOT APPLE)
|
||||
SET(PROJECT_NAME ${PROJECT_NAME_LOWERCASE})
|
||||
ENDIF()
|
||||
#############################################################
|
||||
# Configure project
|
||||
PROJECT(${PROJECT_NAME})
|
||||
########################## Options #########################
|
||||
OPTION(GENERATE_TRANSLATIONS "Generate ts-files for ${PROJECT_NAME}" OFF)
|
||||
IF(WIN32)
|
||||
OPTION(MANIFEST_ENABLE "Enable Manifest" ON)
|
||||
ENDIF(WIN32)
|
||||
OPTION(BOOST_ENABLED "Enable boost system support" OFF)
|
||||
OPTION(OPENSSL_ENABLED "Enable openssl support" ON)
|
||||
OPTION(SSH_ENABLED "Enable ssh support" ON)
|
||||
OPTION(BUILD_PCRECPP_LIBRARY "Build pcrecpp library from sources" ON)
|
||||
OPTION(QT_ENABLED "Enable Qt support" ON)
|
||||
OPTION(CPACK_SUPPORT "Enable package support" ON)
|
||||
OPTION(UNICODE_ENABLE "Support unicode" OFF)
|
||||
OPTION(DEVELOPER_DYNAMIC_RUNTIME "Build with dynamic C++ runtime" ON)
|
||||
OPTION(DEVELOPER_FEATURES "Use some debug tricks for developers" OFF)
|
||||
OPTION(DEVELOPER_ENABLE_TESTS "Enable tests for ${PROJECT_NAME_TITLE} project" ON)
|
||||
|
||||
IF(OPENSSL_ENABLED)
|
||||
#SET(OPENSSL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/OpenSSL CACHE PATH "path to openSSL")
|
||||
ENDIF(OPENSSL_ENABLED)
|
||||
|
||||
IF(MSVC)
|
||||
IF(CMAKE_CL_64)
|
||||
OPTION(BUILD_64X "Build 64bit project" ON)
|
||||
ELSE()
|
||||
OPTION(BUILD_64X "Build 64bit project" OFF)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
IF("${OS_ARC}" STREQUAL "64")
|
||||
OPTION(BUILD_64X "Build 64bit project" ON)
|
||||
ELSEIF("${OS_ARC}" STREQUAL "32")
|
||||
OPTION(BUILD_64X "Build 64bit project" OFF)
|
||||
ELSE()
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
OPTION(BUILD_64X "Build 64bit project" ON)
|
||||
ELSE(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
OPTION(BUILD_64X "Build 64bit project" OFF)
|
||||
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
IF (NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE DEBUG)
|
||||
ENDIF()
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX AND NOT MINGW)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(cmake/config.cmake)
|
||||
|
||||
DEFINE_DEFAULT_DEFINITIONS()
|
||||
|
||||
# Search libraries
|
||||
# use Qt
|
||||
DETECT_QT()
|
||||
##################### Libraries search ###################
|
||||
IF(DEVELOPER_QT5)
|
||||
SET(QT_COMPONENTS_TO_USE Qt5Core Qt5Gui Qt5Widgets)
|
||||
IF(UNIX AND NOT APPLE)
|
||||
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} Qt5DBus) #for libqxcb
|
||||
ENDIF(UNIX AND NOT APPLE)
|
||||
ELSE()
|
||||
SET(QT_COMPONENTS_TO_USE QtCore QtGui)
|
||||
ENDIF()
|
||||
INTEGRATE_QT(${QT_COMPONENTS_TO_USE})
|
||||
##########################################################
|
||||
|
||||
IF(BUILD_64X)
|
||||
SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS 1)
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m64")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m64")
|
||||
ELSEIF(MSVC)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /machine:x64")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /machine:x64")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /machine:x64")
|
||||
ENDIF()
|
||||
IF(APPLE)
|
||||
SET(CMAKE_OSX_ARCHITECTURES x86_64)
|
||||
ENDIF()
|
||||
SET(ARCH_TEXT 64)
|
||||
SET(ARCH_TEXT_PACKAGE x86_64)#amd64
|
||||
ELSE()
|
||||
SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS 0)
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m32")
|
||||
ELSEIF(MSVC)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /machine:x86")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /machine:x86")
|
||||
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /machine:x86")
|
||||
ENDIF()
|
||||
IF(APPLE)
|
||||
SET(CMAKE_OSX_ARCHITECTURES i386)
|
||||
#-DCMAKE_OSX_ARCHITECTURES= ;i386
|
||||
ENDIF()
|
||||
SET(ARCH_TEXT 32)
|
||||
SET(ARCH_TEXT_PACKAGE i386)
|
||||
ENDIF()
|
||||
|
||||
##################################DEFAULT VALUES##########################################
|
||||
IF(NOT CMAKE_INSTALL_PREFIX})
|
||||
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")
|
||||
ENDIF()
|
||||
|
||||
IF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
||||
MESSAGE(SEND_ERROR "In-source builds are not allowed.")
|
||||
ENDIF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
||||
|
||||
############################################################################
|
||||
IF(WIN32)
|
||||
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/win.rc")
|
||||
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/windows/winres.rc.in")
|
||||
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/src/robomongo/gui/resources/robo.ico")
|
||||
SET(LIB_INSTALL_DESTINATION .)
|
||||
SET(TARGET_INSTALL_DESTINATION .)
|
||||
ELSEIF(APPLE)
|
||||
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/robomongo.desktop")
|
||||
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/robomongo.desktop.in" )
|
||||
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/install/osx/Robomongo.icns")
|
||||
SET(LIB_INSTALL_DESTINATION .)
|
||||
SET(TARGET_INSTALL_DESTINATION .)
|
||||
ELSEIF(UNIX)
|
||||
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.desktop")
|
||||
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/robomongo.desktop.in")
|
||||
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/install/linux/robomongo.png")
|
||||
SET(LIB_INSTALL_DESTINATION lib)
|
||||
SET(TARGET_INSTALL_DESTINATION bin)
|
||||
ENDIF()
|
||||
# project sources
|
||||
SET_PROPERTY( GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
ADD_SUBDIRECTORY(src)
|
||||
IF(CPACK_SUPPORT)
|
||||
SET(CPACK_PACKAGE_DESCRIPTION "Shell-centric cross-platform MongoDB management tool.")
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME_TITLE} shell-centric cross-platform MongoDB management tool.")#CPACK_DEBIAN_PACKAGE_DESCRIPTION CPACK_RPM_PACKAGE_SUMMARY
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")#CPACK_RPM_PACKAGE_DESCRIPTION
|
||||
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
SET(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
|
||||
SET(CPACK_PACKAGE_VENDOR ${PROJECT_COMPANYNAME})#CPACK_RPM_PACKAGE_VENDOR
|
||||
SET(CPACK_PACKAGE_CONTACT "Dmitry Schetnikovich <dima@paralect.com>")#CPACK_DEBIAN_PACKAGE_MAINTAINER
|
||||
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR})
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR ${MINOR})
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH ${SHORT_VERSION})
|
||||
IF(BUILD)
|
||||
STRING(REGEX REPLACE " " "" BUILD_ESCAPE ${BUILD})
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${BUILD_ESCAPE}")
|
||||
ENDIF(BUILD)
|
||||
SET(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_PATCH})#CPACK_DEBIAN_PACKAGE_VERSION CPACK_RPM_PACKAGE_VERSION
|
||||
SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})#CPACK_DEBIAN_PACKAGE_NAME CPACK_RPM_PACKAGE_NAME
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARCH_TEXT_PACKAGE}")#out package name
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}")
|
||||
SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME})
|
||||
SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME_TITLE};${PROJECT_NAME}")
|
||||
MESSAGE(STATUS "CPACK_PACKAGE_FILE_NAME: ${CPACK_PACKAGE_FILE_NAME}")
|
||||
SET(CPACK_MONOLITHIC_INSTALL ON)
|
||||
|
||||
IF(WIN32)
|
||||
IF(NOT CPACK_GENERATOR)
|
||||
SET(CPACK_GENERATOR NSIS)
|
||||
ENDIF(NOT CPACK_GENERATOR)
|
||||
IF(CPACK_GENERATOR STREQUAL "NSIS")
|
||||
# There is a bug in NSI that does not handle full unix paths properly. Make
|
||||
# sure there is at least one set of four (4) backlasshes.
|
||||
#SET(CPACK_NSIS_MODIFY_PATH ON)
|
||||
SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/install/windows\\\\nsis-top-logo.bmp")
|
||||
SET(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${PROJECT_NAME}.exe")
|
||||
SET(CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}.exe")
|
||||
SET(CPACK_NSIS_CREATE_ICONS "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROJECT_NAME}.lnk\\\" \\\"$INSTDIR\\\\${PROJECT_NAME}.exe\\\"")
|
||||
SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\" \\\"$INSTDIR\\\\${PROJECT_NAME}.exe\\\"")
|
||||
SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\"")
|
||||
SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
|
||||
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\${PROJECT_COMPANYNAME_DOMAIN}")
|
||||
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\${PROJECT_DOMAIN}")
|
||||
SET(SIDEBAR_IMAGE ${CMAKE_SOURCE_DIR}/install/windows\\\\database.bmp)
|
||||
SET(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${SIDEBAR_IMAGE}\\\"")
|
||||
SET(CPACK_NSIS_CONTACT "me@my-personal-home-page.com")
|
||||
SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "..\\\\${PROJECT_NAME}.exe")
|
||||
ENDIF(CPACK_GENERATOR STREQUAL "NSIS")
|
||||
ELSEIF(APPLE)
|
||||
IF(NOT CPACK_GENERATOR)
|
||||
SET(CPACK_GENERATOR DragNDrop)
|
||||
ENDIF(NOT CPACK_GENERATOR)
|
||||
#SET(CPACK_OSX_PACKAGE_VERSION "10.5")
|
||||
ELSEIF(UNIX)
|
||||
SET(CPACK_STRIP_FILES ON)
|
||||
#SET(UBUNTU_LP_BUG 300472)
|
||||
#SET(CPACK_STRIP_FILES "bin/${PROJECT_NAME}")
|
||||
#SET(CPACK_SOURCE_STRIP_FILES "")
|
||||
IF(NOT CPACK_GENERATOR)
|
||||
SET(CPACK_GENERATOR DEB)
|
||||
ENDIF(NOT CPACK_GENERATOR)
|
||||
IF(CPACK_GENERATOR STREQUAL "RPM" OR CPACK_GENERATOR STREQUAL "DEB")
|
||||
SET(CPACK_PACKAGING_INSTALL_PREFIX "/opt/${PROJECT_NAME}")
|
||||
ENDIF(CPACK_GENERATOR STREQUAL "RPM" OR CPACK_GENERATOR STREQUAL "DEB")
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/postinst.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/postinst" @ONLY IMMEDIATE)
|
||||
FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/postinst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
|
||||
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/prerm.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/prerm" @ONLY IMMEDIATE)
|
||||
FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/prerm DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
|
||||
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
IF(CPACK_GENERATOR STREQUAL "RPM")
|
||||
#CPACK_RPM_PACKAGE_ARCHITECTURE CPACK_RPM_PACKAGE_LICENSE CPACK_RPM_PACKAGE_DESCRIPTION CPACK_RPM_SPEC_INSTALL_POST
|
||||
#SET(CPACK_PACKAGE_RELEASE 1)
|
||||
SET(CPACK_RPM_PACKAGE_LICENSE "GPL v3")
|
||||
SET(CPACK_RPM_PACKAGE_AUTOREQPROV "no")
|
||||
SET(CPACK_RPM_PACKAGE_REQUIRES "libc.so.6 >= 2.12, libstdc++.so.6 >= 6.0.13")
|
||||
SET(CPACK_RPM_PACKAGE_RELEASE 1)
|
||||
SET(CPACK_RPM_PACKAGE_GROUP "Development/Libraries/${PROJECT_COMPANYNAME}")
|
||||
SET(CPACK_RPM_PACKAGE_ARCHITECTURE ${ARCH_TEXT_PACKAGE})
|
||||
SET(CPACK_RPM_PACKAGE_VERSION ${SHORT_VERSION})
|
||||
SET(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/postinst")
|
||||
SET(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/prerm")
|
||||
ELSEIF(CPACK_GENERATOR STREQUAL "DEB")
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/fixup_deb.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/fixup_deb.sh" @ONLY IMMEDIATE)
|
||||
IF(ARCH_TEXT_PACKAGE STREQUAL x86_64)
|
||||
SET(ARCH_TEXT_PACKAGE amd64)
|
||||
ENDIF()
|
||||
#SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||
#CPACK_DEBIAN_PACKAGE_HOMEPAGE The URL of the web site for this package
|
||||
SET(CPACK_DEBIAN_PACKAGE_DEBUG ON)
|
||||
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.12), libstdc++6 (>= 4.4.7)")
|
||||
SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
||||
SET(CPACK_DEBIAN_PACKAGE_SECTION "database")#input our section
|
||||
SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS "Unknown")
|
||||
SET(CPACK_DEBIAN_PACKAGE_SUGGESTS "Unknown")
|
||||
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH_TEXT_PACKAGE})#i386
|
||||
SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/postinst;${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/prerm")
|
||||
ENDIF(CPACK_GENERATOR STREQUAL "RPM")
|
||||
ENDIF(WIN32)
|
||||
INCLUDE(CPack)
|
||||
ENDIF(CPACK_SUPPORT)
|
||||
@@ -1,362 +0,0 @@
|
||||
# - Try to find the OpenSSL encryption library
|
||||
# Once done this will define
|
||||
#
|
||||
# OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
|
||||
#
|
||||
# Read-Only variables:
|
||||
# OPENSSL_FOUND - system has the OpenSSL library
|
||||
# OPENSSL_INCLUDE_DIR - the OpenSSL include directory
|
||||
# OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
|
||||
# OPENSSL_VERSION - This is set to $major.$minor.$revision$path (eg. 0.9.8s)
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2006-2009 Kitware, Inc.
|
||||
# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
|
||||
# Copyright 2009-2011 Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
if (UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_check_modules(_OPENSSL QUIET openssl)
|
||||
endif ()
|
||||
|
||||
if (WIN32)
|
||||
# http://www.slproweb.com/products/Win32OpenSSL.html
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
|
||||
set(_OPENSSL_ROOT_PATHS
|
||||
"${_programfiles}/OpenSSL"
|
||||
"${_programfiles}/OpenSSL-Win32"
|
||||
"${_programfiles}/OpenSSL-Win64"
|
||||
"C:/OpenSSL/"
|
||||
"C:/OpenSSL-Win32/"
|
||||
"C:/OpenSSL-Win64/"
|
||||
)
|
||||
unset(_programfiles)
|
||||
set(_OPENSSL_ROOT_HINTS_AND_PATHS
|
||||
HINTS ${_OPENSSL_ROOT_HINTS}
|
||||
PATHS ${_OPENSSL_ROOT_PATHS}
|
||||
)
|
||||
else ()
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
endif ()
|
||||
|
||||
find_path(OPENSSL_INCLUDE_DIR
|
||||
NAMES
|
||||
openssl/ssl.h
|
||||
HINTS
|
||||
${_OPENSSL_INCLUDEDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
)
|
||||
|
||||
if(WIN32 AND NOT CYGWIN)
|
||||
if(MSVC)
|
||||
# /MD and /MDd are the standard values - if someone wants to use
|
||||
# others, the libnames have to change here too
|
||||
# use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
|
||||
# TODO: handle /MT and static lib
|
||||
# In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
|
||||
# * MD for dynamic-release
|
||||
# * MDd for dynamic-debug
|
||||
# * MT for static-release
|
||||
# * MTd for static-debug
|
||||
|
||||
# Implementation details:
|
||||
# We are using the libraries located in the VC subdir instead of the parent directory eventhough :
|
||||
# libeay32MD.lib is identical to ../libeay32.lib, and
|
||||
# ssleay32MD.lib is identical to ../ssleay32.lib
|
||||
find_library(LIB_EAY_DEBUG
|
||||
NAMES
|
||||
libeay32MDd
|
||||
libeay32d
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
find_library(LIB_EAY_RELEASE
|
||||
NAMES
|
||||
libeay32MD
|
||||
libeay32
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
find_library(SSL_EAY_DEBUG
|
||||
NAMES
|
||||
ssleay32MDd
|
||||
ssleay32d
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
find_library(SSL_EAY_RELEASE
|
||||
NAMES
|
||||
ssleay32MD
|
||||
ssleay32
|
||||
ssl
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
set(LIB_EAY_LIBRARY_DEBUG "${LIB_EAY_DEBUG}")
|
||||
set(LIB_EAY_LIBRARY_RELEASE "${LIB_EAY_RELEASE}")
|
||||
set(SSL_EAY_LIBRARY_DEBUG "${SSL_EAY_DEBUG}")
|
||||
set(SSL_EAY_LIBRARY_RELEASE "${SSL_EAY_RELEASE}")
|
||||
|
||||
include(SelectLibraryConfigurations)
|
||||
select_library_configurations(LIB_EAY)
|
||||
select_library_configurations(SSL_EAY)
|
||||
|
||||
set( OPENSSL_LIBRARIES ${SSL_EAY_LIBRARY} ${LIB_EAY_LIBRARY} )
|
||||
elseif(MINGW)
|
||||
# same player, for MinGW
|
||||
set(LIB_EAY_NAMES libeay32)
|
||||
set(SSL_EAY_NAMES ssleay32)
|
||||
if(CMAKE_CROSS_COMPILING)
|
||||
list(APPEND LIB_EAY_NAMES crypto)
|
||||
list(APPEND SSL_EAY_NAMES ssl)
|
||||
endif()
|
||||
find_library(LIB_EAY
|
||||
NAMES
|
||||
${LIB_EAY_NAMES}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"lib/MinGW"
|
||||
)
|
||||
|
||||
find_library(SSL_EAY
|
||||
NAMES
|
||||
${SSL_EAY_NAMES}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"lib/MinGW"
|
||||
)
|
||||
|
||||
mark_as_advanced(SSL_EAY LIB_EAY)
|
||||
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
|
||||
unset(LIB_EAY_NAMES)
|
||||
unset(SSL_EAY_NAMES)
|
||||
else()
|
||||
# Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
|
||||
find_library(LIB_EAY
|
||||
NAMES
|
||||
libeay32
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
find_library(SSL_EAY
|
||||
NAMES
|
||||
ssleay32
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
mark_as_advanced(SSL_EAY LIB_EAY)
|
||||
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
|
||||
endif()
|
||||
else()
|
||||
if(OPENSSL_USE_STATIC)
|
||||
find_library(OPENSSL_SSL_LIBRARY
|
||||
NAMES
|
||||
libssl.a
|
||||
libssleay32.a
|
||||
libssleay32MD.a
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
find_library(OPENSSL_CRYPTO_LIBRARY
|
||||
NAMES
|
||||
libcrypto.a
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
#zlib
|
||||
set(STATIC_ZLIB_SEARCHES)
|
||||
|
||||
# Normal search.
|
||||
set(STATIC_ZLIB_SEARCH_NORMAL
|
||||
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
|
||||
"$ENV{PROGRAMFILES}/zlib"
|
||||
)
|
||||
list(APPEND STATIC_ZLIB_SEARCHES STATIC_ZLIB_SEARCH_NORMAL)
|
||||
|
||||
set(STATIC_ZLIB_NAMES libz.a libzlib.a libzdll.a libzlib1.a libzlibd.a libzlibd1.a)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${STATIC_ZLIB_SEARCHES})
|
||||
find_library(STATIC_ZLIB_LIBRARY NAMES ${STATIC_ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
|
||||
if(STATIC_ZLIB_LIBRARY)
|
||||
set(OPENSSL_LIBRARIES ${STATIC_ZLIB_LIBRARY})
|
||||
endif(STATIC_ZLIB_LIBRARY)
|
||||
|
||||
endif(OPENSSL_USE_STATIC)
|
||||
find_library(OPENSSL_SSL_LIBRARY
|
||||
NAMES
|
||||
ssl
|
||||
ssleay32
|
||||
ssleay32MD
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
find_library(OPENSSL_CRYPTO_LIBRARY
|
||||
NAMES
|
||||
crypto
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
|
||||
|
||||
# compat defines
|
||||
set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
|
||||
set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
|
||||
|
||||
set(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
|
||||
endif()
|
||||
|
||||
function(from_hex HEX DEC)
|
||||
string(TOUPPER "${HEX}" HEX)
|
||||
set(_res 0)
|
||||
string(LENGTH "${HEX}" _strlen)
|
||||
|
||||
while (_strlen GREATER 0)
|
||||
math(EXPR _res "${_res} * 16")
|
||||
string(SUBSTRING "${HEX}" 0 1 NIBBLE)
|
||||
string(SUBSTRING "${HEX}" 1 -1 HEX)
|
||||
if (NIBBLE STREQUAL "A")
|
||||
math(EXPR _res "${_res} + 10")
|
||||
elseif (NIBBLE STREQUAL "B")
|
||||
math(EXPR _res "${_res} + 11")
|
||||
elseif (NIBBLE STREQUAL "C")
|
||||
math(EXPR _res "${_res} + 12")
|
||||
elseif (NIBBLE STREQUAL "D")
|
||||
math(EXPR _res "${_res} + 13")
|
||||
elseif (NIBBLE STREQUAL "E")
|
||||
math(EXPR _res "${_res} + 14")
|
||||
elseif (NIBBLE STREQUAL "F")
|
||||
math(EXPR _res "${_res} + 15")
|
||||
else()
|
||||
math(EXPR _res "${_res} + ${NIBBLE}")
|
||||
endif()
|
||||
|
||||
string(LENGTH "${HEX}" _strlen)
|
||||
endwhile()
|
||||
|
||||
set(${DEC} ${_res} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
if (OPENSSL_INCLUDE_DIR)
|
||||
if (_OPENSSL_VERSION)
|
||||
set(OPENSSL_VERSION "${_OPENSSL_VERSION}")
|
||||
elseif(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
|
||||
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
|
||||
REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
|
||||
|
||||
# The version number is encoded as 0xMNNFFPPS: major minor fix patch status
|
||||
# The status gives if this is a developer or prerelease and is ignored here.
|
||||
# Major, minor, and fix directly translate into the version numbers shown in
|
||||
# the string. The patch field translates to the single character suffix that
|
||||
# indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
|
||||
# on.
|
||||
|
||||
string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
|
||||
"\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
|
||||
list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
|
||||
list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
|
||||
from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
|
||||
list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
|
||||
from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
|
||||
list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)
|
||||
|
||||
if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
|
||||
from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
|
||||
# 96 is the ASCII code of 'a' minus 1
|
||||
math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
|
||||
unset(_tmp)
|
||||
# Once anyone knows how OpenSSL would call the patch versions beyond 'z'
|
||||
# this should be updated to handle that, too. This has not happened yet
|
||||
# so it is simply ignored here for now.
|
||||
string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
|
||||
endif ()
|
||||
|
||||
set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
if (OPENSSL_VERSION)
|
||||
find_package_handle_standard_args(OpenSSL
|
||||
REQUIRED_VARS
|
||||
OPENSSL_LIBRARIES
|
||||
OPENSSL_INCLUDE_DIR
|
||||
VERSION_VAR
|
||||
OPENSSL_VERSION
|
||||
FAIL_MESSAGE
|
||||
"Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
|
||||
)
|
||||
else ()
|
||||
find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
|
||||
OPENSSL_LIBRARIES
|
||||
OPENSSL_INCLUDE_DIR
|
||||
)
|
||||
endif ()
|
||||
|
||||
mark_as_advanced(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
|
||||
@@ -1,104 +0,0 @@
|
||||
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
ADD_DEFINITIONS(-DOS_LINUX -DOS_POSIX)
|
||||
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
ADD_DEFINITIONS(-DOS_MAC -DOS_POSIX)
|
||||
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
ADD_DEFINITIONS(-D_WIN32 -DOS_WIN)
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Not supported OS: ${CMAKE_SYSTEM_NAME}")
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM: ${CMAKE_SYSTEM}")
|
||||
|
||||
IF (CMAKE_BUILD_TYPE)
|
||||
STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_STABLE)
|
||||
MESSAGE(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE_STABLE}")
|
||||
ENDIF(CMAKE_BUILD_TYPE)
|
||||
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/")
|
||||
IF(NOT CMAKE_DEBUG_POSTFIX)
|
||||
SET(CMAKE_DEBUG_POSTFIX d)
|
||||
ENDIF()
|
||||
INCLUDE(cmake/projecthelper.cmake)
|
||||
INCLUDE(cmake/utils.cmake)
|
||||
|
||||
IF(OPENSSL_ENABLED)
|
||||
ADD_DEFINITIONS(-DOPENSSL_SUPPORT_ENABLED)
|
||||
FIND_PACKAGE(OpenSSL REQUIRED)
|
||||
|
||||
IF(OPENSSL_FOUND)
|
||||
#SET(OPENSSL_LIBS optimized ${LIB_EAY_RELEASE} debug ${LIB_EAY_DEBUG} optimized ${SSL_EAY_RELEASE} debug ${SSL_EAY_DEBUG})
|
||||
GET_FILENAME_COMPONENT(OPENSSL_ROOT_DIR ${OPENSSL_INCLUDE_DIR} PATH)
|
||||
ELSE(OPENSSL_FOUND)
|
||||
IF(NOT OPENSSL_ROOT_DIR OR NOT EXISTS ${OPENSSL_ROOT_DIR})
|
||||
MESSAGE(FATAL_ERROR "OPENSSL_ENABLED but not founded, please specify OPENSSL_ROOT_DIR variable." )
|
||||
ENDIF()
|
||||
FILE(GLOB OPENSSL_LIBS "${OPENSSL_ROOT_DIR}/*.lib")
|
||||
ENDIF(OPENSSL_FOUND)
|
||||
ENDIF(OPENSSL_ENABLED)
|
||||
|
||||
IF(SSH_ENABLED)
|
||||
ADD_DEFINITIONS(-DSSH_SUPPORT_ENABLED)
|
||||
IF(NOT OPENSSL_FOUND)
|
||||
MESSAGE(FATAL_ERROR "OPENSSH_ENABLED but openssl not founded, please specify OPENSSL_ROOT_DIR variable and check the OPENSSL_ENABLED variable must be ON.")
|
||||
ENDIF(NOT OPENSSL_FOUND)
|
||||
ENDIF(SSH_ENABLED)
|
||||
|
||||
IF(BOOST_ENABLED)
|
||||
ADD_DEFINITIONS(-DBOOST_SUPPORT_ENABLED)
|
||||
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/integrate-boost.cmake)
|
||||
SET(Boost_USE_MULTITHREADED ON)
|
||||
SET(Boost_USE_STATIC_LIBS ON)
|
||||
ENDIF(BOOST_ENABLED)
|
||||
|
||||
IF(UNICODE_ENABLED)
|
||||
IF(MINGW)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode")
|
||||
ENDIF(MINGW)
|
||||
ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
|
||||
ENDIF(UNICODE_ENABLED)
|
||||
|
||||
IF(QT_ENABLED)
|
||||
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/integrate-qt.cmake)
|
||||
ADD_DEFINITIONS(-DQT_SUPPORT_ENABLED)
|
||||
ENDIF(QT_ENABLED)
|
||||
|
||||
IF(DEVELOPER_ENABLE_TESTS)
|
||||
INCLUDE(cmake/testing.cmake)
|
||||
SETUP_TESTING()
|
||||
ENDIF(DEVELOPER_ENABLE_TESTS)
|
||||
|
||||
MACRO(ADD_APP_EXECUTABLE_MSVC PROJECT_NAME SOURCES LIBS)
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${DESKTOP_TARGET} ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIBS})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(ADD_APP_LIBRARY_MSVC PROJECT_NAME SOURCES LIBS)
|
||||
ADD_LIBRARY(${PROJECT_NAME} STATIC ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIBS} )
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(ADD_APP_EXECUTABLE PROJECT_NAME SOURCES LIBS)
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${BUILD_TYPE}/build)
|
||||
SET(TARGET ${PROJECT_NAME})
|
||||
ADD_EXECUTABLE(${TARGET} ${DESKTOP_TARGET} ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${TARGET} ${LIBS})
|
||||
IF ("${CMAKE_BUILD_TYPE_STABLE}" STREQUAL "RELEASE")
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(ADD_APP_LIBRARY PROJECT_NAME SOURCES LIBS)
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${BUILD_TYPE}/build)
|
||||
SET(TARGET ${PROJECT_NAME})
|
||||
ADD_LIBRARY(${TARGET} STATIC ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${TARGET} ${LIBS})
|
||||
IF ("${CMAKE_BUILD_TYPE_STABLE}" STREQUAL "RELEASE")
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
@@ -1,37 +0,0 @@
|
||||
MACRO(INTEGRATE_BOOST)
|
||||
SET(BOOST_COMPONENTS ${ARGV})
|
||||
IF(NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
|
||||
FILE( TO_CMAKE_PATH $ENV{BOOST_ROOT} BOOST_ROOT )
|
||||
IF( NOT EXISTS ${BOOST_ROOT} )
|
||||
MESSAGE( STATUS ${BOOST_ROOT} " does not exist. Checking if BOOST_ROOT was a quoted string.." )
|
||||
STRING( REPLACE "\"" "" BOOST_ROOT ${BOOST_ROOT} )
|
||||
IF( EXISTS ${BOOST_ROOT} )
|
||||
MESSAGE( STATUS "After removing the quotes " ${BOOST_ROOT} " was now found by CMake" )
|
||||
ENDIF( EXISTS ${BOOST_ROOT})
|
||||
ENDIF( NOT EXISTS ${BOOST_ROOT} )
|
||||
# Save the BOOST_ROOT in the cache
|
||||
IF( NOT EXISTS ${BOOST_ROOT} )
|
||||
MESSAGE( WARNING "BOOST_ROOT does not exist." )
|
||||
ELSE(NOT EXISTS ${BOOST_ROOT})
|
||||
SET(BOOST_ROOT ${BOOST_ROOT} CACHE STRING "Set the value of BOOST_ROOT to point to the root folder of your boost install." FORCE)
|
||||
ENDIF( NOT EXISTS ${BOOST_ROOT} )
|
||||
ENDIF(NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
|
||||
|
||||
# if(NOT BOOST_ROOT )
|
||||
# MESSAGE( WARNING "Please set the BOOST_ROOT environment variable." )
|
||||
# endif(NOT BOOST_ROOT )
|
||||
SET(Boost_USE_STATIC_LIBS ON)
|
||||
SET(Boost_USE_MULTITHREADED ON)
|
||||
FIND_PACKAGE(Boost COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
|
||||
|
||||
IF( Boost_FOUND )
|
||||
STRING(COMPARE LESS "${Boost_VERSION}" 1.50.0 VersionIncompatible)
|
||||
IF(VersionIncompatible)
|
||||
MESSAGE(FATAL_ERROR "Boost ${Boost_VERSION} not supported. Only 1.50.0 version and higher is supported.")
|
||||
ELSE(VersionIncompatible)
|
||||
MESSAGE (STATUS "Found Boost ${Boost_VERSION} -- ${Boost_LIBRARIES}")
|
||||
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} )
|
||||
LINK_LIBRARIES(${BOOST_LIBRARYDIR})
|
||||
ENDIF(VersionIncompatible)
|
||||
ENDIF()
|
||||
ENDMACRO(INTEGRATE_BOOST)
|
||||
@@ -1,336 +0,0 @@
|
||||
FUNCTION(QUERY_QMAKE VAR RESULT)
|
||||
GET_TARGET_PROPERTY(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
|
||||
EXEC_PROGRAM(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output )
|
||||
IF(NOT return_code)
|
||||
FILE(TO_CMAKE_PATH "${output}" output)
|
||||
SET(${RESULT} ${output} PARENT_SCOPE)
|
||||
ENDIF(NOT return_code)
|
||||
ENDFUNCTION(QUERY_QMAKE)
|
||||
|
||||
FUNCTION(FIND_LIB PATH_WHERE_SEARCH _NAME RESULT)
|
||||
STRING(REGEX REPLACE "[(0-9)]+$" "" CLEARNAME ${_NAME})
|
||||
STRING(REGEX REPLACE ${CLEARNAME} "" VERSION ${_NAME})
|
||||
SET(name_stable "${CMAKE_SHARED_LIBRARY_PREFIX}${_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
SET(PLUGIN "${PATH_WHERE_SEARCH}/${name_stable}")
|
||||
#trying to search lib with suffix 5
|
||||
IF(NOT EXISTS ${PLUGIN})
|
||||
SET(PLUGIN "${PATH_WHERE_SEARCH}/${CMAKE_SHARED_LIBRARY_PREFIX}${CLEARNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${VERSION}")
|
||||
ENDIF()
|
||||
IF(EXISTS ${PLUGIN})
|
||||
SET(${RESULT} ${PLUGIN} PARENT_SCOPE)
|
||||
ENDIF()
|
||||
ENDFUNCTION(FIND_LIB)
|
||||
|
||||
MACRO(DEPLOY_QT_PLUGIN_HELPER _path PATH_WHERE_SEARCH LIB_DIST TYPE)
|
||||
GET_FILENAME_COMPONENT(dir ${_path} PATH)
|
||||
GET_FILENAME_COMPONENT(name ${_path} NAME_WE)
|
||||
STRING(TOUPPER ${TYPE} _type)
|
||||
IF(${_type} STREQUAL "DEBUG")# try to find debug version of library
|
||||
SET(name_local "${name}${CMAKE_DEBUG_POSTFIX}")
|
||||
FIND_LIB(${PATH_WHERE_SEARCH}/${dir} ${name_local} PLUGIN_${TYPE}_${name})
|
||||
ENDIF()
|
||||
IF(NOT PLUGIN_${TYPE}_${name})
|
||||
FIND_LIB(${PATH_WHERE_SEARCH}/${dir} ${name} PLUGIN_${TYPE}_${name})
|
||||
ENDIF()
|
||||
|
||||
IF(PLUGIN_${TYPE}_${name})
|
||||
GET_FILENAME_COMPONENT(LibWithoutSymLink ${PLUGIN_${TYPE}_${name}} REALPATH)
|
||||
GET_FILENAME_COMPONENT(PLUGIN_NAME ${PLUGIN_${TYPE}_${name}} NAME)
|
||||
IF(NOT ${PLUGIN_${TYPE}_${name}} STREQUAL ${LibWithoutSymLink})
|
||||
MESSAGE(STATUS "Deployng ${PLUGIN} plugin for ${TYPE}, realpath is ${LibWithoutSymLink}, name ${PLUGIN_NAME}")
|
||||
INSTALL(FILES ${LibWithoutSymLink} DESTINATION "${LIB_DIST}/${dir}" CONFIGURATIONS ${TYPE} COMPONENT QTPLUGINS RENAME ${PLUGIN_NAME})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Deployng ${PLUGIN_${TYPE}_${name}} plugin for ${TYPE}")
|
||||
INSTALL(FILES ${PLUGIN_${TYPE}_${name}} DESTINATION "${LIB_DIST}/${dir}" CONFIGURATIONS ${TYPE} COMPONENT QTPLUGINS)
|
||||
ENDIF()
|
||||
#SET(LIBS_TO_FIXUP ${LIB_DIST}/${dir} ${LIBS_TO_FIXUP})
|
||||
#STRING(REPLACE "${QT_IMAGEFORMATS_PLUGINS_DIR}" "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/MacOS/imageformats"
|
||||
# QT_IMAGEFORMATS_PLUGIN_LOCAL ${QT_${PLUGIN}_PLUGIN_DEBUG}
|
||||
# )
|
||||
#LIST(APPEND BUNDLE_LIBRARIES_MOVE ${QT_IMAGEFORMATS_PLUGIN_LOCAL})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Could not deploy ${PLUGIN_${name}}, required path: ${_path}, plugin for ${TYPE}")
|
||||
ENDIF()
|
||||
ENDMACRO(DEPLOY_QT_PLUGIN_HELPER)
|
||||
|
||||
MACRO(DEPLOY_QT_PLUGIN _path PATH_WHERE_SEARCH LIB_DIST)
|
||||
IF(NOT CMAKE_BUILD_TYPE AND CMAKE_CONFIGURATION_TYPES)
|
||||
FOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
DEPLOY_QT_PLUGIN_HELPER(${_path} ${PATH_WHERE_SEARCH} ${LIB_DIST} ${buildconfig})
|
||||
ENDFOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
ELSEIF(CMAKE_BUILD_TYPE)
|
||||
DEPLOY_QT_PLUGIN_HELPER(${_path} ${PATH_WHERE_SEARCH} ${LIB_DIST} ${CMAKE_BUILD_TYPE})
|
||||
ENDIF(NOT CMAKE_BUILD_TYPE AND CMAKE_CONFIGURATION_TYPES)
|
||||
ENDMACRO(DEPLOY_QT_PLUGIN)
|
||||
|
||||
MACRO(DETECT_QT)
|
||||
FIND_PACKAGE( Qt5Core QUIET )
|
||||
IF(Qt5Core_FOUND)
|
||||
SET(DEVELOPER_QT5 1)
|
||||
ELSE(Qt5Core_FOUND)
|
||||
SET(DEVELOPER_QT5 0)
|
||||
ENDIF(Qt5Core_FOUND)
|
||||
ENDMACRO(DETECT_QT)
|
||||
|
||||
MACRO(QTX_WRAP_CPP)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_WRAP_CPP(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_WRAP_CPP(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_WRAP_CPP)
|
||||
|
||||
MACRO(QTX_GENERATE_MOC)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_GENERATE_MOC(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_GENERATE_MOC(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_GENERATE_MOC)
|
||||
|
||||
MACRO(QTX_ADD_TRANSLATION)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_ADD_TRANSLATION(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_ADD_TRANSLATION(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_ADD_TRANSLATION)
|
||||
|
||||
MACRO(QTX_CREATE_TRANSLATION)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_CREATE_TRANSLATION(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_CREATE_TRANSLATION(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_CREATE_TRANSLATION)
|
||||
|
||||
MACRO(QTX_WRAP_UI)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_WRAP_UI(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_WRAP_UI(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_WRAP_UI)
|
||||
|
||||
MACRO(QTX_ADD_RESOURCES)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_ADD_RESOURCES(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_ADD_RESOURCES(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_ADD_RESOURCES)
|
||||
|
||||
MACRO(INTEGRATE_QT)
|
||||
QUERY_QMAKE(QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
|
||||
QUERY_QMAKE(QT_INSTALL_BINS QT_BINS_DIR)
|
||||
QUERY_QMAKE(QT_INSTALL_LIBS QT_LIBS_DIR)
|
||||
IF(DEVELOPER_QT5)
|
||||
SET(USE_QT_DYNAMIC ON)
|
||||
SET(QT_COMPONENTS_TO_USE ${ARGV})
|
||||
|
||||
IF(DEVELOPER_BUILD_TESTS)
|
||||
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} Qt5Test)
|
||||
ENDIF(DEVELOPER_BUILD_TESTS)
|
||||
|
||||
FOREACH(qtComponent ${QT_COMPONENTS_TO_USE})
|
||||
IF(NOT ${qtComponent} STREQUAL "Qt5ScriptTools")
|
||||
FIND_PACKAGE(${qtComponent} REQUIRED)
|
||||
ELSE()
|
||||
FIND_PACKAGE(${qtComponent} QUIET)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES( ${${qtComponent}_INCLUDE_DIRS} )
|
||||
#STRING(REGEX REPLACE "Qt5" "" COMPONENT_SHORT_NAME ${qtComponent})
|
||||
#set(QT_MODULES_TO_USE ${QT_MODULES_TO_USE} ${COMPONENT_SHORT_NAME})
|
||||
IF(${${qtComponent}_FOUND} AND NOT(${qtComponent} STREQUAL "Qt5LinguistTools"))
|
||||
STRING(REGEX REPLACE "Qt5" "" componentShortName ${qtComponent})
|
||||
SET(QT_LIBRARIES ${QT_LIBRARIES} "Qt5::${componentShortName}")
|
||||
ENDIF()
|
||||
ENDFOREACH(qtComponent ${QT_COMPONENTS_TO_USE})
|
||||
|
||||
IF(NOT Qt5ScriptTools_FOUND)
|
||||
ADD_DEFINITIONS(-DQT_NO_SCRIPTTOOLS)
|
||||
ENDIF()
|
||||
|
||||
IF(DEVELOPER_OPENGL)
|
||||
FIND_PACKAGE(Qt5OpenGL REQUIRED)
|
||||
INCLUDE_DIRECTORIES( ${Qt5OpenGL_INCLUDE_DIRS})
|
||||
ENDIF(DEVELOPER_OPENGL)
|
||||
SETUP_COMPILER_SETTINGS(${USE_QT_DYNAMIC})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
SET(QT_COMPONENTS_TO_USE ${ARGV})
|
||||
# repeat this for every debug/optional package
|
||||
LIST(FIND QT_COMPONENTS_TO_USE "QtScriptTools" QT_SCRIPT_TOOLS_INDEX)
|
||||
IF(NOT ${QT_SCRIPT_TOOLS_INDEX} EQUAL -1)
|
||||
LIST(REMOVE_ITEM QT_COMPONENTS_TO_USE "QtScriptTools")
|
||||
SET(QT_DEBUG_COMPONENTS_TO_USE ${QT_DEBUG_COMPONENTS_TO_USE} "QtScriptTools")
|
||||
ENDIF()
|
||||
IF(DEVELOPER_BUILD_TESTS)
|
||||
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} QtTest)
|
||||
ENDIF(DEVELOPER_BUILD_TESTS)
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_COMPONENTS_TO_USE} REQUIRED)
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_DEBUG_COMPONENTS_TO_USE} QUIET)
|
||||
IF(NOT QT_QTSCRIPTTOOLS_FOUND)
|
||||
ADD_DEFINITIONS(-DQT_NO_SCRIPTTOOLS)
|
||||
ENDIF()
|
||||
INCLUDE(${QT_USE_FILE})
|
||||
SET(QT_3RDPARTY_DIR ${QT_BINARY_DIR}/../src/3rdparty)
|
||||
|
||||
#checking is Qt dynamic or statis version will be used
|
||||
GET_FILENAME_COMPONENT(QTCORE_DLL_NAME_WE ${QT_QTCORE_LIBRARY_RELEASE} NAME_WE)
|
||||
GET_FILENAME_COMPONENT(QT_LIB_PATH ${QT_QTCORE_LIBRARY_RELEASE} PATH)
|
||||
|
||||
IF(WIN32)
|
||||
SET(DLL_EXT dll)
|
||||
# message("searching ${QTCORE_DLL_NAME_WE}.${DLL_EXT} in " ${QT_LIB_PATH} ${QT_LIB_PATH}/../bin)
|
||||
FIND_FILE(QTCORE_DLL_FOUND_PATH ${QTCORE_DLL_NAME_WE}.${DLL_EXT} PATHS ${QT_LIB_PATH} ${QT_LIB_PATH}/../bin
|
||||
NO_DEFAULT_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH
|
||||
NO_CMAKE_PATH
|
||||
NO_SYSTEM_ENVIRONMENT_PATH
|
||||
NO_CMAKE_SYSTEM_PATH
|
||||
)
|
||||
MESSAGE("QTCORE_DLL_FOUND_PATH=" ${QTCORE_DLL_FOUND_PATH})
|
||||
IF(EXISTS ${QTCORE_DLL_FOUND_PATH})
|
||||
SET(USE_QT_DYNAMIC ON)
|
||||
ELSE(EXISTS ${QTCORE_DLL_FOUND_PATH})
|
||||
SET(USE_QT_DYNAMIC OFF)
|
||||
ENDIF(EXISTS ${QTCORE_DLL_FOUND_PATH})
|
||||
ELSE()
|
||||
SET(USE_QT_DYNAMIC ON)
|
||||
ENDIF(WIN32)
|
||||
SETUP_COMPILER_SETTINGS(${USE_QT_DYNAMIC})
|
||||
# use jscore
|
||||
IF(MSVC AND NOT USE_QT_DYNAMIC)
|
||||
FIND_LIBRARY(JSCORE_LIB_RELEASE jscore
|
||||
PATHS
|
||||
${QT_3RDPARTY_DIR}/webkit/Source/JavaScriptCore/release
|
||||
${QT_3RDPARTY_DIR}/webkit/JavaScriptCore/release
|
||||
)
|
||||
FIND_LIBRARY(JSCORE_LIB_DEBUG NAMES jscored jscore
|
||||
PATHS
|
||||
${QT_3RDPARTY_DIR}/webkit/Source/JavaScriptCore/debug
|
||||
${QT_3RDPARTY_DIR}/webkit/JavaScriptCore/debug
|
||||
)
|
||||
SET(JSCORE_LIBS optimized ${JSCORE_LIB_RELEASE} debug ${JSCORE_LIB_DEBUG} )
|
||||
ENDIF(MSVC AND NOT USE_QT_DYNAMIC)
|
||||
# end of use jscore
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
|
||||
ENDMACRO(INTEGRATE_QT)
|
||||
|
||||
|
||||
##############################################################################
|
||||
|
||||
MACRO(INSTALL_QT TARGET_NAME LIB_DIST)
|
||||
IF(NOT DEVELOPER_QT5)
|
||||
IF(WIN32 OR APPLE)
|
||||
SET(QT_COMPONENTS_TO_USE ${ARGV})
|
||||
LIST(REMOVE_ITEM QT_COMPONENTS_TO_USE ${TARGET_NAME})
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_COMPONENTS_TO_USE} REQUIRED)
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_DEBUG_COMPONENTS_TO_USE} QUIET)
|
||||
INCLUDE(${QT_USE_FILE})
|
||||
GET_TARGET_PROPERTY(targetLocation ${TARGET_NAME} LOCATION)
|
||||
GET_FILENAME_COMPONENT(targetDir ${targetLocation} PATH)
|
||||
|
||||
IF(WIN32)
|
||||
SET(REPLACE_IN_LIB ".lib" ".dll")
|
||||
SET(REPLACE_IN_LIB2 "/lib/([^/]+)$" "/bin/\\1")
|
||||
ELSEIF(APPLE)
|
||||
SET(REPLACE_IN_LIB ".a" ".dylib")
|
||||
SET(REPLACE_IN_LIB2 "" "")
|
||||
ENDIF()
|
||||
|
||||
FOREACH(qtComponent ${QT_COMPONENTS_TO_USE} ${QT_DEBUG_COMPONENTS_TO_USE})
|
||||
STRING(TOUPPER "${qtComponent}" QtComCap)
|
||||
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${QT_${QtComCap}_LIBRARY})
|
||||
IF(NOT ${qtComponent} STREQUAL "QtMain")
|
||||
STRING(REPLACE ${REPLACE_IN_LIB} dllNameDeb "${QT_${QtComCap}_LIBRARY_DEBUG}")
|
||||
IF(WIN32)
|
||||
STRING(REGEX REPLACE ${REPLACE_IN_LIB2} dllNameDeb ${dllNameDeb})
|
||||
ENDIF()
|
||||
SET(DLIBS_TO_COPY_DEBUG ${DLIBS_TO_COPY_DEBUG} ${dllNameDeb})
|
||||
IF(NOT ${qtComponent} STREQUAL "QtScriptTools")
|
||||
STRING(REPLACE ${REPLACE_IN_LIB} dllNameRel "${QT_${QtComCap}_LIBRARY_RELEASE}")
|
||||
IF(WIN32)
|
||||
STRING(REGEX REPLACE ${REPLACE_IN_LIB2} dllNameRel ${dllNameRel})
|
||||
ENDIF()
|
||||
SET(DLIBS_TO_COPY_RELEASE ${DLIBS_TO_COPY_RELEASE} ${dllNameRel})
|
||||
ENDIF()
|
||||
# TODO: check this code @ MAC and *ux
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD COMMAND
|
||||
${CMAKE_COMMAND} -E copy $<$<CONFIG:Debug>:
|
||||
${dllNameDeb}> $<$<NOT:$<CONFIG:Debug>>:
|
||||
${dllNameRel}> $<TARGET_FILE_DIR:${TARGET_NAME}>
|
||||
)
|
||||
ENDIF(NOT ${qtComponent} STREQUAL "QtMain")
|
||||
ENDFOREACH(qtComponent ${QT_COMPONENTS_TO_USE})
|
||||
ENDIF(WIN32 OR APPLE)
|
||||
ELSE()# Qt5
|
||||
LIST(FIND QT_COMPONENTS_TO_USE "Qt5Xml" QT_XML_INDEX)
|
||||
IF(NOT ${QT_XML_INDEX} EQUAL -1)
|
||||
GET_TARGET_PROPERTY(libLocation ${Qt5Xml_LIBRARIES} LOCATION)
|
||||
STRING(REGEX REPLACE "Xml" "XmlPatterns" libLocation ${libLocation})
|
||||
QT_ADD_TO_INSTALL(${TARGET_NAME} ${libLocation} "")
|
||||
ENDIF()
|
||||
FOREACH(qtComponent ${QT_COMPONENTS_TO_USE} ${QT_DEBUG_COMPONENTS_TO_USE})
|
||||
IF(NOT ${qtComponent} STREQUAL "Qt5LinguistTools")
|
||||
IF(NOT "${${qtComponent}_LIBRARIES}" STREQUAL "")
|
||||
GET_TARGET_PROPERTY(libLocation ${${qtComponent}_LIBRARIES} LOCATION)
|
||||
QT_ADD_TO_INSTALL(${TARGET_NAME} ${libLocation} "")
|
||||
ELSE(NOT "${${qtComponent}_LIBRARIES}" STREQUAL "")
|
||||
MESSAGE("Canont find library ${qtComponent}_LIBRARIES")
|
||||
ENDIF(NOT "${${qtComponent}_LIBRARIES}" STREQUAL "")
|
||||
ENDIF()
|
||||
ENDFOREACH(qtComponent ${QT_COMPONENTS_TO_USE} ${QT_DEBUG_COMPONENTS_TO_USE})
|
||||
ENDIF(NOT DEVELOPER_QT5)
|
||||
|
||||
MESSAGE(STATUS "Qt libs to install ${DLIBS_TO_COPY_RELEASE}")
|
||||
IF(MSVC OR APPLE)
|
||||
# Visual studio install
|
||||
FOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
IF(${buildconfig} STREQUAL "Debug")
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_DEBUG})
|
||||
ELSE()
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_RELEASE})
|
||||
ENDIF()
|
||||
INSTALL(FILES ${DLIBS_TO_COPY} DESTINATION ${LIB_DIST} CONFIGURATIONS ${buildconfig} COMPONENT QTLIBS )
|
||||
ENDFOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
ELSEIF(UNIX)
|
||||
# Make install
|
||||
STRING(TOUPPER ${CMAKE_BUILD_TYPE} TYPE)
|
||||
IF(${TYPE} STREQUAL "DEBUG")
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_DEBUG})
|
||||
ELSE()
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_RELEASE})
|
||||
ENDIF()
|
||||
IF(WIN32 OR APPLE)
|
||||
INSTALL(FILES ${DLIBS_TO_COPY} DESTINATION ${LIB_DIST})
|
||||
ELSE()
|
||||
#eliminate symlinks
|
||||
FOREACH(dllsToCopy ${DLIBS_TO_COPY})
|
||||
GET_FILENAME_COMPONENT(name ${dllsToCopy} NAME)
|
||||
STRING(REGEX REPLACE "[^5]+$" "" lnname ${name})
|
||||
INSTALL(FILES ${dllsToCopy} DESTINATION ${LIB_DIST} CONFIGURATIONS ${TYPE} COMPONENT QTLIBS RENAME ${lnname})
|
||||
ENDFOREACH(dllsToCopy ${DLIBS_TO_COPY})
|
||||
ENDIF()
|
||||
ENDIF(MSVC OR APPLE)
|
||||
|
||||
ENDMACRO(INSTALL_QT)
|
||||
|
||||
MACRO(QT_ADD_TO_INSTALL TARGET_NAME libLocation copyToSubdirectory)
|
||||
SET(libLocation_release ${libLocation})
|
||||
SET(REPLACE_PATTERN "/lib/([^/]+)$" "/bin/\\1") # from lib to bin
|
||||
IF(NOT EXISTS "${libLocation_release}")
|
||||
STRING(REGEX REPLACE ${REPLACE_PATTERN} libLocation_release ${libLocation_release})
|
||||
ENDIF()
|
||||
IF(EXISTS "${libLocation_release}")
|
||||
SET(DLIBS_TO_COPY_RELEASE ${DLIBS_TO_COPY_RELEASE} ${libLocation_release})
|
||||
STRING(REGEX REPLACE ${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DEBUG_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX} libLocation_debug ${libLocation_release})
|
||||
IF(EXISTS "${libLocation_debug}")
|
||||
SET(DLIBS_TO_COPY_DEBUG ${DLIBS_TO_COPY_DEBUG} ${libLocation_debug})
|
||||
ELSE()
|
||||
SET(DLIBS_TO_COPY_DEBUG ${DLIBS_TO_COPY_DEBUG} ${libLocation_release})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO(QT_ADD_TO_INSTALL)
|
||||
@@ -1,244 +0,0 @@
|
||||
MACRO(SET_DESKTOP_TARGET)
|
||||
# Set default target to build (under win32 its allows console debug)
|
||||
IF(WIN32)
|
||||
OPTION(DEVELOPER_WINCONSOLE "Enable windows console windows for debug" OFF)
|
||||
IF(DEVELOPER_FEATURES AND DEVELOPER_WINCONSOLE)
|
||||
SET(DESKTOP_TARGET "")
|
||||
ELSE(DEVELOPER_FEATURES AND DEVELOPER_WINCONSOLE)
|
||||
SET(DESKTOP_TARGET WIN32)
|
||||
ENDIF(DEVELOPER_FEATURES AND DEVELOPER_WINCONSOLE)
|
||||
ELSEIF(APPLE)
|
||||
SET(DESKTOP_TARGET MACOSX_BUNDLE)
|
||||
ENDIF(WIN32)
|
||||
ENDMACRO(SET_DESKTOP_TARGET)
|
||||
|
||||
MACRO(DEFINE_DEFAULT_DEFINITIONS)
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(
|
||||
-DNOMINMAX # do not define min() and max()
|
||||
-D_CRT_SECURE_NO_WARNINGS
|
||||
-D_CRT_NONSTDC_NO_WARNINGS
|
||||
-D_CRT_SECURE_NO_WARNINGS
|
||||
#-D__STDC_CONSTANT_MACROS
|
||||
#-DWIN32_LEAN_AND_MEAN # remove obsolete things from windows headers
|
||||
)
|
||||
ENDIF(WIN32)
|
||||
ADD_DEFINITIONS(
|
||||
-DPROJECT_NAME="${PROJECT_NAME}"
|
||||
-DPROJECT_NAME_TITLE="${PROJECT_NAME_TITLE}"
|
||||
-DPROJECT_COPYRIGHT="${PROJECT_COPYRIGHT}"
|
||||
-DPROJECT_DOMAIN="${PROJECT_DOMAIN}"
|
||||
-DPROJECT_COMPANYNAME="${PROJECT_COMPANYNAME}"
|
||||
-DPROJECT_COMPANYNAME_DOMAIN="${PROJECT_COMPANYNAME_DOMAIN}"
|
||||
-DPROJECT_GITHUB_FORK="${PROJECT_GITHUB_FORK}"
|
||||
-DPROJECT_GITHUB_ISSUES="${PROJECT_GITHUB_ISSUES}"
|
||||
-DPROJECT_VERSION="${PROJECT_VERSION}"
|
||||
-DPROJECT_NAME_LOWERCASE="${PROJECT_NAME_LOWERCASE}"
|
||||
)
|
||||
IF(DEVELOPER_FEATURES)
|
||||
ADD_DEFINITIONS(-DDEVELOPER_FEATURES)
|
||||
IF(WIN32)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG")
|
||||
ENDIF(WIN32)
|
||||
ENDIF(DEVELOPER_FEATURES)
|
||||
IF(WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Zi")
|
||||
ENDIF(WIN32)
|
||||
ENDMACRO(DEFINE_DEFAULT_DEFINITIONS)
|
||||
|
||||
MACRO(SETUP_COMPILER_SETTINGS IS_DYNAMIC)
|
||||
IF(MSVC)
|
||||
SET(ADDITIONAL_CL_OPTIMIZATION_OPTIONS
|
||||
# /Gr # fastcall
|
||||
/Gy # function level linking
|
||||
/GF # string pooling
|
||||
/GL # whole program optimization
|
||||
#/FR # disable browserable info
|
||||
/Oi # intrinsic functions
|
||||
/Ot # fast code
|
||||
/Ob2 # inline expansion
|
||||
/Ox # full optimization
|
||||
#/arch:SSE2
|
||||
/fp:except- /fp:fast
|
||||
)
|
||||
|
||||
SET(ADDITIONAL_CL_OPTIMIZATION_OPTIONS_PROJECTNAME
|
||||
# /Gd # cdecl
|
||||
/Os # small code
|
||||
/Og # Turn on loop, common subexpression and register optimizations
|
||||
/Ob0 # do not inline
|
||||
/O2 # maximize speed
|
||||
/fp:precise
|
||||
)
|
||||
|
||||
SET(ADDITIONAL_LINKER_OPTIMIZATION_OPTIONS
|
||||
/INCREMENTAL:NO
|
||||
/LTCG
|
||||
/DEBUG
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
SET(IS_DYNAMIC ${IS_DYNAMIC})
|
||||
STRING(REPLACE ";" " " cmake_cl_release_init_str "${ADDITIONAL_CL_OPTIMIZATION_OPTIONS} /D NDEBUG")
|
||||
STRING(REPLACE ";" " " cmake_linker_release_init_str "${ADDITIONAL_LINKER_OPTIMIZATION_OPTIONS}")
|
||||
IF(IS_DYNAMIC)
|
||||
SET(makeRulesOwerrideContent "
|
||||
IF(MSVC)
|
||||
SET(CMAKE_C_FLAGS_DEBUG_INIT \"/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1\")
|
||||
SET(CMAKE_C_FLAGS_MINSIZEREL_INIT \"/MD /O1 /Ob1 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELEASE_INIT \"/MD /O2 /Ob2 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT \"/MD /Zi /O2 /Ob1 /D NDEBUG\")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG_INIT \"/D_DEBUG /MDd /Zi /Ob0 /Od /EHsc /RTC1\")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT \"/MD /O1 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE_INIT \"/MD /O2 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT \"/MD /Zi /O2 /Ob1 /D NDEBUG /EHsc\")
|
||||
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT \"${cmake_linker_release_init_str}\")
|
||||
|
||||
ENDIF(MSVC)
|
||||
" )
|
||||
|
||||
IF(MSVC)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd /D_DEBUG /Zi /Ob0 /Od /RTC1")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /O2 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MD /O1 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MD /O2 /Zi ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${cmake_linker_release_init_str}")
|
||||
ENDIF(MSVC)
|
||||
|
||||
MESSAGE("Using setting for DYNAMIC run-time")
|
||||
else(IS_DYNAMIC)
|
||||
SET(makeRulesOwerrideContent "
|
||||
IF(MSVC)
|
||||
SET(CMAKE_C_FLAGS_INIT \"/MT\")
|
||||
SET(CMAKE_CXX_FLAGS_INIT \"/MT /EHsc\")
|
||||
|
||||
SET(CMAKE_C_FLAGS_DEBUG_INIT \"/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1\")
|
||||
SET(CMAKE_C_FLAGS_MINSIZEREL_INIT \"/MT /O1 /Ob1 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELEASE_INIT \"/MT /O2 /Ob2 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT \"/MT /Zi /O2 /Ob1 /D NDEBUG\")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG_INIT \"/D_DEBUG /MTd /Zi /Ob0 /Od /EHsc /RTC1\")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT \"/MT /O1 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE_INIT \"/MT /O2 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT \"/MT /Zi /O2 /Ob1 /D NDEBUG /EHsc\")
|
||||
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT \"${cmake_linker_release_init_str}\")
|
||||
ENDIF(MSVC)
|
||||
" )
|
||||
|
||||
IF(MSVC)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /D_DEBUG /Zi /Ob0 /Od /RTC1")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O1 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /O2 /Zi ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${cmake_linker_release_init_str}")
|
||||
ENDIF(MSVC)
|
||||
|
||||
MESSAGE("Using setting for STATIC run-time")
|
||||
|
||||
ADD_DEFINITIONS(-DQT_STATICPLUGINS)
|
||||
ENDIF(IS_DYNAMIC)
|
||||
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/makeRulesOwerride.cmake" "${makeRulesOwerrideContent}")
|
||||
SET(CMAKE_USER_MAKE_RULES_OVERRIDE ${CMAKE_CURRENT_BINARY_DIR}/makeRulesOwerride.cmake)
|
||||
|
||||
IF(APPLE)
|
||||
#set(LIBCXX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imports/libc++10.7)
|
||||
#set(CMAKE_OSX_ARCHITECTURES i386)
|
||||
#set(CMAKE_OSX_ARCHITECTURES_DEBUG i368)
|
||||
#set(CMAKE_CXX_FLAGS "-arch i386")
|
||||
#set(LINK_FLAGS "-arch i386")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++ -nostdinc++ -I${LIBCXX_DIR}/include -g -Wall")
|
||||
#set(LINK_FLAGS "${LINK_FLAGS} -L${LIBCXX_DIR}/lib -arch i386")
|
||||
|
||||
# Detection target arch automaticly
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
||||
ELSEIF(UNIX)
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
|
||||
ENDIF()
|
||||
ENDMACRO(SETUP_COMPILER_SETTINGS IS_DYNAMIC)
|
||||
|
||||
|
||||
MACRO(INSTALL_RUNTIME_LIBRARIES)
|
||||
# Install CRT
|
||||
IF(WIN32)
|
||||
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
|
||||
include (InstallRequiredSystemLibraries)
|
||||
ENDIF(WIN32)
|
||||
# TODO: add code for other platforms here
|
||||
ENDMACRO(INSTALL_RUNTIME_LIBRARIES)
|
||||
|
||||
MACRO(ADD_DLIB_TO_POSTBUILD_STEP TARGET_NAME DLIB_NAME)
|
||||
IF(MSVC OR APPLE)
|
||||
GET_TARGET_PROPERTY(dlib_location ${DLIB_NAME} LOCATION)
|
||||
GET_FILENAME_COMPONENT(dlib_targetdir ${dlib_location} PATH)
|
||||
SET(DLIB_DEBUG ${dlib_targetdir}/${CMAKE_SHARED_LIBRARY_PREFIX}${DLIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
SET(DLIB_RELEASE ${dlib_targetdir}/${CMAKE_SHARED_LIBRARY_PREFIX}${DLIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD COMMAND
|
||||
${CMAKE_COMMAND} -E copy $<$<CONFIG:Debug>:${DLIB_DEBUG}> $<$<NOT:$<CONFIG:Debug>>:${DLIB_RELEASE}> $<TARGET_FILE_DIR:${TARGET_NAME}>
|
||||
)
|
||||
ENDIF(MSVC OR APPLE)
|
||||
ENDMACRO(ADD_DLIB_TO_POSTBUILD_STEP)
|
||||
|
||||
MACRO(INSTALL_DEBUG_INFO_FILE)
|
||||
IF(WIN32)
|
||||
#install pbd files
|
||||
FOREACH(buildCfg ${CMAKE_CONFIGURATION_TYPES})
|
||||
INSTALL(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${buildCfg}/${PROJECT_NAME}.pdb
|
||||
DESTINATION .
|
||||
CONFIGURATIONS ${buildCfg})
|
||||
ENDFOREACH(buildCfg ${CMAKE_CONFIGURATION_TYPES})
|
||||
ENDIF(WIN32)
|
||||
# TODO: add code for other platforms here
|
||||
ENDMACRO(INSTALL_DEBUG_INFO_FILE)
|
||||
|
||||
|
||||
MACRO(TARGET_BUNDLEFIX TARGET_NAME LIB_DIST)
|
||||
IF(APPLE)
|
||||
INSTALL(CODE "
|
||||
FILE(GLOB_RECURSE QTPLUGINS_FIXUP
|
||||
\"\${CMAKE_INSTALL_PREFIX}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
|
||||
include(BundleUtilities)
|
||||
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}\" \"\${QTPLUGINS_FIXUP}\" \"\${CMAKE_INSTALL_PREFIX}/${LIB_DIST}\")
|
||||
" COMPONENT Runtime)
|
||||
ENDIF(APPLE)
|
||||
ENDMACRO(TARGET_BUNDLEFIX TARGET_NAME)
|
||||
|
||||
if(APPLE)
|
||||
write_file(${CMAKE_CURRENT_BINARY_DIR}/src/bundle_config.cmake "") # Stub for file
|
||||
macro(APPEND_DYNAMIC_LIB LIBRARY)
|
||||
get_filename_component(LIBRARY_PATH ${LIBRARY} PATH)
|
||||
get_filename_component(LIBRARY_NAME ${LIBRARY} NAME)
|
||||
|
||||
get_target_property(projLocation ${PROJECT_NAME} LOCATION)
|
||||
string(REPLACE "/Contents/MacOS/${PROJECT_NAME}" "" MACOSX_BUNDLE_LOCATION ${projLocation})
|
||||
string(REPLACE "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" "$(CONFIGURATION)" APPS ${MACOSX_BUNDLE_LOCATION})
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND cp \"${LIBRARY}\" \"${APPS}/Contents/MacOS/\")
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND install_name_tool -change \"${LIBRARY}\" \"@executable_path/../MacOS/${LIBRARY_NAME}\" \"${projLocation}\")
|
||||
set(BUNDLE_LIBRARIES_MOVE "${BUNDLE_LIBRARIES_MOVE};${APPS}/Contents/MacOS/${LIBRARY_NAME}")
|
||||
set(BUNDLE_DIRECTORY_MOVE "${BUNDLE_DIRECTORY_MOVE};${LIBRARY_PATH}")
|
||||
# override fix_bundle config
|
||||
write_file(${CMAKE_CURRENT_BINARY_DIR}/bundle_config.cmake "
|
||||
set(BUNDLE_LIBRARIES_MOVE \"${BUNDLE_LIBRARIES_MOVE}\")
|
||||
set(BUNDLE_DIRECTORY_MOVE \"${BUNDLE_DIRECTORY_MOVE}\")
|
||||
")
|
||||
endmacro(APPEND_DYNAMIC_LIB)
|
||||
endif(APPLE)
|
||||
@@ -1,4 +0,0 @@
|
||||
MACRO(SETUP_TESTING)
|
||||
enable_testing()
|
||||
include(CTest)
|
||||
ENDMACRO(SETUP_TESTING)
|
||||
@@ -1,31 +0,0 @@
|
||||
macro(VersionConf prjName from_file to_file iconname)
|
||||
SET(COMPANYNAME "\"${PROJECT_COMPANYNAME}\"")
|
||||
SET(filecontent "
|
||||
SET(ICON_FILE ${ICON_FILE})
|
||||
SET(MAJOR_VER ${MAJOR} )
|
||||
SET(MINOR_VER1 ${MINOR})
|
||||
SET(MINOR_VER2 ${PATCH})
|
||||
SET(PRODUCTNAME ${prjName})
|
||||
SET(COMPANYNAME ${COMPANYNAME})
|
||||
SET(PRODUCTDOMAIN ${PROJECT_DOMAIN})
|
||||
SET(SHORTPRODUCTNAME ${prjName})
|
||||
SET(ICONNAME ${iconname})
|
||||
SET(PRODUCTCOPYRIGHT ${PROJECT_COPYRIGHT})
|
||||
CONFIGURE_FILE(${from_file} ${to_file})
|
||||
")
|
||||
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/versionConfFile.cmake" "${filecontent}")
|
||||
|
||||
ADD_CUSTOM_TARGET(VersionConf
|
||||
ALL
|
||||
DEPENDS ${to_file})
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${to_file}
|
||||
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_BINARY_DIR}/versionConfFile.cmake)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(${to_file} PROPERTIES GENERATED TRUE
|
||||
#HEADER_FILE_ONLY TRUE
|
||||
)
|
||||
ADD_DEPENDENCIES(${prjName} VersionConf)
|
||||
endmacro(VersionConf)
|
||||
@@ -1,489 +0,0 @@
|
||||
IF(BOOST_ENABLED)
|
||||
INTEGRATE_BOOST(thread system filesystem)
|
||||
ENDIF()
|
||||
ADD_SUBDIRECTORY(third-party/qjson)
|
||||
ADD_SUBDIRECTORY(third-party/qscintilla/Qt4Qt5)
|
||||
ADD_SUBDIRECTORY(third-party/mongodb/src/third_party/js-1.7)
|
||||
IF(BUILD_PCRECPP_LIBRARY)
|
||||
SET(PCRE_BUILD_TESTS OFF CACHE BOOL "Build the tests pcre tests.")
|
||||
SET(PCRE_BUILD_PCREGREP OFF CACHE BOOL "Build pcregrep")
|
||||
ADD_SUBDIRECTORY(third-party/mongodb/src/third_party/pcre-8.30 pcrecpp)
|
||||
#FIND_LIBRARY(PCRECPP_LIB pcrecpp)
|
||||
ENDIF(BUILD_PCRECPP_LIBRARY)
|
||||
|
||||
SET(HEADERS_GUI_TO_MOC
|
||||
robomongo/gui/dialogs/ConnectionsDialog.h
|
||||
robomongo/gui/dialogs/ConnectionDialog.h
|
||||
robomongo/gui/widgets/LogWidget.h
|
||||
robomongo/gui/widgets/explorer/ExplorerWidget.h
|
||||
robomongo/gui/widgets/explorer/ExplorerTreeWidget.h
|
||||
robomongo/gui/MainWindow.h
|
||||
robomongo/gui/AppStyle.h
|
||||
robomongo/gui/widgets/explorer/ExplorerTreeItem.h
|
||||
robomongo/gui/widgets/explorer/ExplorerDatabaseCategoryTreeItem.h
|
||||
robomongo/gui/widgets/explorer/ExplorerServerTreeItem.h
|
||||
robomongo/gui/widgets/explorer/ExplorerUserTreeItem.h
|
||||
robomongo/gui/widgets/explorer/ExplorerFunctionTreeItem.h
|
||||
robomongo/gui/widgets/explorer/ExplorerDatabaseTreeItem.h
|
||||
robomongo/gui/widgets/explorer/EditIndexDialog.h
|
||||
robomongo/gui/widgets/workarea/QueryWidget.h
|
||||
robomongo/gui/widgets/workarea/WorkAreaTabWidget.h
|
||||
robomongo/gui/widgets/workarea/WorkAreaTabBar.h
|
||||
robomongo/gui/widgets/workarea/JsonPrepareThread.h
|
||||
robomongo/gui/widgets/workarea/BsonTreeView.h
|
||||
robomongo/gui/widgets/workarea/BsonTreeModel.h
|
||||
robomongo/gui/widgets/workarea/BsonTreeItem.h
|
||||
robomongo/gui/widgets/workarea/BsonTableModel.h
|
||||
robomongo/gui/widgets/workarea/BsonTableView.h
|
||||
robomongo/gui/widgets/workarea/OutputWidget.h
|
||||
robomongo/gui/widgets/workarea/OutputItemContentWidget.h
|
||||
robomongo/gui/dialogs/ConnectionAuthTab.h
|
||||
robomongo/gui/dialogs/ConnectionBasicTab.h
|
||||
robomongo/gui/dialogs/ConnectionAdvancedTab.h
|
||||
robomongo/gui/dialogs/ConnectionDiagnosticDialog.h
|
||||
robomongo/gui/widgets/workarea/ScriptWidget.h
|
||||
robomongo/gui/widgets/workarea/PagingWidget.h
|
||||
robomongo/gui/widgets/workarea/OutputItemHeaderWidget.h
|
||||
robomongo/gui/widgets/workarea/IndicatorLabel.h
|
||||
robomongo/gui/widgets/workarea/ProgressBarPopup.h
|
||||
robomongo/gui/dialogs/DocumentTextEditor.h
|
||||
robomongo/gui/widgets/workarea/CollectionStatsTreeWidget.h
|
||||
robomongo/gui/widgets/explorer/ExplorerCollectionTreeItem.h
|
||||
robomongo/gui/dialogs/CreateDatabaseDialog.h
|
||||
robomongo/gui/dialogs/CopyCollectionDialog.h
|
||||
robomongo/gui/dialogs/CreateUserDialog.h
|
||||
robomongo/gui/dialogs/FunctionTextEditor.h
|
||||
robomongo/gui/dialogs/PreferencesDialog.h
|
||||
robomongo/gui/dialogs/AboutDialog.h
|
||||
robomongo/gui/editors/FindFrame.h
|
||||
robomongo/gui/editors/PlainJavaScriptEditor.h
|
||||
)
|
||||
SET(HEADERS_GUI
|
||||
robomongo/gui/utils/DialogUtils.h
|
||||
robomongo/gui/GuiRegistry.h
|
||||
robomongo/gui/editors/JSLexer.h
|
||||
robomongo/gui/widgets/workarea/CollectionStatsTreeItem.h
|
||||
)
|
||||
SET(SOURCES_GUI
|
||||
robomongo/gui/utils/DialogUtils.cpp
|
||||
robomongo/gui/dialogs/ConnectionsDialog.cpp
|
||||
robomongo/gui/dialogs/ConnectionDialog.cpp
|
||||
robomongo/gui/widgets/LogWidget.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerWidget.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerTreeWidget.cpp
|
||||
robomongo/gui/MainWindow.cpp
|
||||
robomongo/gui/AppStyle.cpp
|
||||
robomongo/gui/GuiRegistry.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerTreeItem.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerServerTreeItem.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerDatabaseTreeItem.cpp
|
||||
robomongo/gui/widgets/explorer/EditIndexDialog.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerDatabaseCategoryTreeItem.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerCollectionTreeItem.cpp
|
||||
robomongo/gui/widgets/workarea/QueryWidget.cpp
|
||||
robomongo/gui/widgets/workarea/WorkAreaTabWidget.cpp
|
||||
robomongo/gui/widgets/workarea/WorkAreaTabBar.cpp
|
||||
robomongo/gui/widgets/workarea/JsonPrepareThread.cpp
|
||||
robomongo/gui/widgets/workarea/BsonTreeView.cpp
|
||||
robomongo/gui/widgets/workarea/BsonTreeModel.cpp
|
||||
robomongo/gui/widgets/workarea/BsonTreeItem.cpp
|
||||
robomongo/gui/widgets/workarea/BsonTableModel.cpp
|
||||
robomongo/gui/widgets/workarea/BsonTableView.cpp
|
||||
robomongo/gui/editors/PlainJavaScriptEditor.cpp
|
||||
robomongo/gui/editors/JSLexer.cpp
|
||||
robomongo/gui/editors/FindFrame.cpp
|
||||
robomongo/gui/widgets/workarea/OutputWidget.cpp
|
||||
robomongo/gui/widgets/workarea/OutputItemContentWidget.cpp
|
||||
robomongo/gui/dialogs/ConnectionAuthTab.cpp
|
||||
robomongo/gui/dialogs/ConnectionBasicTab.cpp
|
||||
robomongo/gui/dialogs/ConnectionAdvancedTab.cpp
|
||||
robomongo/gui/dialogs/ConnectionDiagnosticDialog.cpp
|
||||
robomongo/gui/widgets/workarea/ScriptWidget.cpp
|
||||
robomongo/gui/widgets/workarea/PagingWidget.cpp
|
||||
robomongo/gui/widgets/workarea/OutputItemHeaderWidget.cpp
|
||||
robomongo/gui/widgets/workarea/IndicatorLabel.cpp
|
||||
robomongo/gui/widgets/workarea/ProgressBarPopup.cpp
|
||||
robomongo/gui/dialogs/DocumentTextEditor.cpp
|
||||
robomongo/gui/widgets/workarea/CollectionStatsTreeWidget.cpp
|
||||
robomongo/gui/widgets/workarea/CollectionStatsTreeItem.cpp
|
||||
robomongo/gui/dialogs/CreateDatabaseDialog.cpp
|
||||
robomongo/gui/dialogs/CopyCollectionDialog.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerUserTreeItem.cpp
|
||||
robomongo/gui/dialogs/CreateUserDialog.cpp
|
||||
robomongo/gui/widgets/explorer/ExplorerFunctionTreeItem.cpp
|
||||
robomongo/gui/dialogs/FunctionTextEditor.cpp
|
||||
robomongo/gui/dialogs/PreferencesDialog.cpp
|
||||
robomongo/gui/dialogs/AboutDialog.cpp
|
||||
)
|
||||
|
||||
SET(HEADERS_SHELL
|
||||
robomongo/shell/db/json.h
|
||||
robomongo/shell/db/ptimeutil.h)
|
||||
SET(SOURCES_SHELL
|
||||
robomongo/shell/scripting/utils.cpp
|
||||
robomongo/shell/scripting/sm_db.cpp
|
||||
robomongo/shell/scripting/engine_spidermonkey.cpp
|
||||
robomongo/shell/scripting/engine.cpp
|
||||
robomongo/shell/mongo.cpp
|
||||
#robomongo/shell/util/version.cpp
|
||||
robomongo/shell/util/processinfo.cpp
|
||||
robomongo/shell/shell/shell_utils.cpp
|
||||
robomongo/shell/shell/shell_utils_launcher.cpp
|
||||
robomongo/shell/shell/shell_utils_extended.cpp
|
||||
robomongo/shell/util/ramlog.cpp
|
||||
robomongo/shell/mongo-server.cpp
|
||||
robomongo/shell/util/base64.cpp
|
||||
robomongo/shell/util/file.cpp
|
||||
robomongo/shell/scripting/bench.cpp
|
||||
robomongo/shell/scripting/bson_template_evaluator.cpp
|
||||
robomongo/shell/db/json.cpp
|
||||
robomongo/shell/db/ptimeutil.cpp
|
||||
)
|
||||
|
||||
SET(HEADERS_CORE_TO_MOC
|
||||
robomongo/core/settings/ConnectionSettings.h
|
||||
robomongo/core/mongodb/MongoWorker.h
|
||||
robomongo/core/domain/MongoServer.h
|
||||
robomongo/core/domain/MongoDatabase.h
|
||||
robomongo/core/EventBus.h
|
||||
robomongo/core/domain/App.h
|
||||
robomongo/core/domain/MongoShell.h
|
||||
robomongo/core/EventBusDispatcher.h
|
||||
robomongo/core/domain/Notifier.h
|
||||
robomongo/core/utils/Logger.h
|
||||
)
|
||||
SET(HEADERS_CORE
|
||||
robomongo/core/settings/SettingsManager.h
|
||||
robomongo/core/engine/ScriptEngine.h
|
||||
robomongo/core/KeyboardManager.h
|
||||
robomongo/core/domain/MongoDocument.h
|
||||
robomongo/core/EventBusSubscriber.h
|
||||
robomongo/core/EventWrapper.h
|
||||
robomongo/core/EventError.h
|
||||
robomongo/core/Event.h
|
||||
robomongo/core/domain/MongoShellResult.h
|
||||
robomongo/core/events/MongoEvents.h
|
||||
robomongo/core/events/MongoEventsInfo.h
|
||||
robomongo/core/AppRegistry.h
|
||||
robomongo/core/Core.h
|
||||
robomongo/core/settings/CredentialSettings.h
|
||||
robomongo/core/domain/MongoQueryInfo.h
|
||||
robomongo/core/domain/MongoCollection.h
|
||||
robomongo/core/domain/MongoCollectionInfo.h
|
||||
robomongo/core/mongodb/MongoClient.h
|
||||
robomongo/core/domain/MongoUtils.h
|
||||
robomongo/core/domain/MongoNamespace.h
|
||||
robomongo/core/domain/CursorPosition.h
|
||||
robomongo/core/domain/ScriptInfo.h
|
||||
robomongo/core/domain/MongoUser.h
|
||||
robomongo/core/domain/MongoFunction.h
|
||||
robomongo/core/Enums.h
|
||||
robomongo/core/HexUtils.h
|
||||
robomongo/core/utils/BsonUtils.h
|
||||
robomongo/core/utils/QtUtils.h
|
||||
robomongo/core/utils/StdUtils.h
|
||||
robomongo/core/utils/SingletonPattern.hpp
|
||||
)
|
||||
SET(SOURCES_CORE
|
||||
robomongo/core/domain/Notifier.cpp
|
||||
robomongo/core/AppRegistry.cpp
|
||||
robomongo/core/settings/ConnectionSettings.cpp
|
||||
robomongo/core/settings/SettingsManager.cpp
|
||||
robomongo/core/mongodb/MongoWorker.cpp
|
||||
robomongo/core/domain/MongoServer.cpp
|
||||
robomongo/core/domain/MongoDatabase.cpp
|
||||
robomongo/core/domain/MongoCollection.cpp
|
||||
robomongo/core/domain/MongoDocument.cpp
|
||||
robomongo/core/events/MongoEvents.cpp
|
||||
robomongo/core/events/MongoEventsInfo.cpp
|
||||
robomongo/core/EventBus.cpp
|
||||
robomongo/core/domain/App.cpp
|
||||
robomongo/core/domain/MongoShell.cpp
|
||||
robomongo/core/engine/ScriptEngine.cpp
|
||||
robomongo/core/domain/MongoShellResult.cpp
|
||||
robomongo/core/EventError.cpp
|
||||
robomongo/core/Event.cpp
|
||||
robomongo/core/EventBusSubscriber.cpp
|
||||
robomongo/core/EventBusDispatcher.cpp
|
||||
robomongo/core/EventWrapper.cpp
|
||||
robomongo/core/KeyboardManager.cpp
|
||||
robomongo/core/settings/CredentialSettings.cpp
|
||||
robomongo/core/domain/MongoQueryInfo.cpp
|
||||
robomongo/core/domain/MongoCollectionInfo.cpp
|
||||
robomongo/core/mongodb/MongoClient.cpp
|
||||
robomongo/core/domain/MongoUtils.cpp
|
||||
robomongo/core/domain/MongoNamespace.cpp
|
||||
robomongo/core/domain/CursorPosition.cpp
|
||||
robomongo/core/domain/ScriptInfo.cpp
|
||||
robomongo/core/domain/MongoUser.cpp
|
||||
robomongo/core/domain/MongoFunction.cpp
|
||||
robomongo/core/HexUtils.cpp
|
||||
robomongo/core/Enums.cpp
|
||||
robomongo/core/utils/BsonUtils.cpp
|
||||
robomongo/core/utils/QtUtils.cpp
|
||||
robomongo/core/utils/StdUtils.cpp
|
||||
robomongo/core/utils/Logger.cpp
|
||||
)
|
||||
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(-D_WINSOCKAPI_ -DXP_WIN -DUNICODE -D_UNICODE)
|
||||
ELSEIF(UNIX)
|
||||
ADD_DEFINITIONS(-DXP_UNIX)
|
||||
ENDIF()
|
||||
ADD_DEFINITIONS(-DROBOMONGO -DJS_C_STRINGS_ARE_UTF8 -DMONGO_EXPOSE_MACROS)
|
||||
|
||||
SET_DESKTOP_TARGET()
|
||||
|
||||
SET(LIBMONGOCLIENT_RELEASE_FILENAME ${CMAKE_STATIC_LIBRARY_PREFIX}mongoclient${CMAKE_STATIC_LIBRARY_SUFFIX})
|
||||
SET(LIBMONGOCLIENT_DEBUG_FILENAME ${CMAKE_STATIC_LIBRARY_PREFIX}mongoclient_d${CMAKE_STATIC_LIBRARY_SUFFIX})
|
||||
SET(MONGOCLIENT_DEBUG_LIBRARY ${CMAKE_CURRENT_BINARY_DIR}/${LIBMONGOCLIENT_DEBUG_FILENAME})
|
||||
SET(MONGOCLIENT_RELEASE_LIBRARY ${CMAKE_CURRENT_BINARY_DIR}/${LIBMONGOCLIENT_RELEASE_FILENAME})
|
||||
|
||||
IF(WIN32)
|
||||
SET(PLATFORM_HDRS)
|
||||
SET(PLATFORM_SRCS robomongo/shell/util/processinfo_win32.cpp)
|
||||
SET(PLATFORM_LIBRARIES ws2_32 psapi dbghelp user32)
|
||||
ELSEIF(APPLE)
|
||||
SET(PLATFORM_HDRS)
|
||||
SET(PLATFORM_SRCS robomongo/shell/util/processinfo_darwin.cpp)
|
||||
SET(PLATFORM_LIBRARIES)
|
||||
ELSEIF(UNIX)
|
||||
SET(PLATFORM_HDRS)
|
||||
SET(PLATFORM_SRCS robomongo/shell/util/processinfo_linux2.cpp)
|
||||
SET(PLATFORM_LIBRARIES pthread)
|
||||
#SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
|
||||
ENDIF()
|
||||
|
||||
IF(BOOST_ENABLED)
|
||||
SET(ALL_LIBS ${ALL_LIBS} ${Boost_LIBRARIES})
|
||||
SET(MONGODB_EXTRAPATH "${MONGODB_EXTRAPATH} ${BOOST_ROOT}")
|
||||
ELSE()
|
||||
ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB)
|
||||
ADD_SUBDIRECTORY(third-party/mongodb/src/third_party/boost)
|
||||
SET(INCLUDE_DIRS ${INCLUDE_DIRS} third-party/mongodb/src/third_party/boost)
|
||||
SET(ALL_LIBS ${ALL_LIBS} boost_mongo_third_party)
|
||||
ENDIF()
|
||||
|
||||
IF(OPENSSL_ENABLED)
|
||||
SET(MONGODB_COMMAND ${MONGODB_COMMAND} --ssl)
|
||||
SET(HEADERS_GUI_TO_MOC ${HEADERS_GUI_TO_MOC}
|
||||
robomongo/gui/dialogs/ConnectionSslTab.h
|
||||
)
|
||||
SET(SOURCES_GUI ${SOURCES_GUI}
|
||||
robomongo/gui/dialogs/ConnectionSslTab.cpp
|
||||
)
|
||||
SET(MONGODB_EXTRAPATH "${MONGODB_EXTRAPATH} ${OPENSSL_ROOT_DIR}")
|
||||
SET(INCLUDE_DIRS ${INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
|
||||
ADD_DEFINITIONS(-DMONGO_SSL)
|
||||
ENDIF(OPENSSL_ENABLED)
|
||||
|
||||
IF(SSH_ENABLED)
|
||||
SET(MONGODB_COMMAND ${MONGODB_COMMAND} --ssh)
|
||||
SET(HEADERS_GUI_TO_MOC ${HEADERS_GUI_TO_MOC}
|
||||
robomongo/gui/dialogs/SSHTunnelTab.h
|
||||
)
|
||||
SET(SOURCES_GUI ${SOURCES_GUI}
|
||||
robomongo/gui/dialogs/SSHTunnelTab.cpp
|
||||
)
|
||||
ADD_SUBDIRECTORY(third-party/mongodb/src/third_party/libssh2)
|
||||
SET(ALL_LIBS ${ALL_LIBS} libssh2_third_party)
|
||||
ENDIF(SSH_ENABLED)
|
||||
|
||||
IF(NOT MONGODB_EXTRAPATH STREQUAL "")
|
||||
STRING(REGEX REPLACE "[ ]*([a-zA-Z:\\/]+)" "\\1," MONGODB_EXTRAPATH_OUT ${MONGODB_EXTRAPATH})
|
||||
STRING(REGEX REPLACE ",$" "" MONGODB_EXTRAPATH_OUT_CLEAR ${MONGODB_EXTRAPATH_OUT})
|
||||
SET(MONGODB_COMMAND ${MONGODB_COMMAND} --extrapath=${MONGODB_EXTRAPATH_OUT_CLEAR})
|
||||
SET(ALL_LIBS ${ALL_LIBS} ${OPENSSL_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
SET(MONGODB_COMMAND ${MONGODB_COMMAND} --${ARCH_TEXT} mongoclient)
|
||||
|
||||
SET(HEADERS ${HEADERS} ${HEADERS_GUI} ${HEADERS_CORE} ${HEADERS_SHELL})
|
||||
SET(SOURCES ${SOURCES} ${SOURCES_GUI} ${SOURCES_SHELL} ${SOURCES_CORE})
|
||||
SET(HEADERS_TOMOC ${HEADERS_GUI_TO_MOC} ${HEADERS_CORE_TO_MOC})
|
||||
|
||||
QTX_WRAP_CPP(MOC_FILES ${HEADERS_TOMOC})
|
||||
SET(RESOURCES robomongo/gui/resources/gui.qrc)
|
||||
QTX_ADD_RESOURCES(RES_SRC ${RESOURCES})
|
||||
SET(INCLUDE_DIRS ${INCLUDE_DIRS} ${CMAKE_CURRENT_LIST_DIR} third-party/mongodb/src/third_party/pcre-8.30 third-party/qscintilla/Qt4Qt5 third-party/qjson third-party/mongodb/src)
|
||||
INCLUDE_DIRECTORIES(${INCLUDE_DIRS} )
|
||||
SOURCE_GROUP("Header Files" FILES ${HEADERS} ${HEADERS_TOMOC})
|
||||
SOURCE_GROUP("Source Files" FILES ${SOURCES})
|
||||
SOURCE_GROUP("Generated" FILES ${MOC_FILES})
|
||||
SOURCE_GROUP("Platform Files" FILES ${PLATFORM_HDRS} ${PLATFORM_SRCS})
|
||||
SOURCE_GROUP("Resources" FILES ${RES_SRC} ${RESOURCE_OS})
|
||||
|
||||
SET(ALL_SOURCES ${HEADERS} ${HEADERS_TOMOC} ${SOURCES} ${MOC_FILES} ${PLATFORM_HDRS} ${PLATFORM_SRCS} ${BOOST_SOURCES})
|
||||
SET(ALL_LIBS ${ALL_LIBS} ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${Qt5Core_QTMAIN_LIBRARIES} ${PLATFORM_LIBRARIES} qscintilla2 pcrecpp qjson js)
|
||||
|
||||
SET(ROBOMONGO_LIB "${PROJECT_NAME}_lib")
|
||||
SET(ROBOMONGO_EXECUTABLE_SOURCES robomongo/app/main.cpp ${RES_SRC} ${ICON_FILE} ${RESOURCE_OS})
|
||||
|
||||
IF(MINGW OR CMAKE_COMPILER_IS_GNUCXX OR APPLE)
|
||||
IF(BOOST_ENABLED)
|
||||
IF ("${CMAKE_BUILD_TYPE_STABLE}" STREQUAL "RELEASE")
|
||||
ADD_CUSTOM_TARGET(build_mongoclient
|
||||
COMMAND scons --release ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LIBMONGOCLIENT_RELEASE_FILENAME} ${MONGOCLIENT_RELEASE_LIBRARY}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient library")
|
||||
ELSE()
|
||||
ADD_CUSTOM_TARGET(build_mongoclient
|
||||
COMMAND scons -d ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LIBMONGOCLIENT_RELEASE_FILENAME} ${MONGOCLIENT_RELEASE_LIBRARY}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient library")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
IF ("${CMAKE_BUILD_TYPE_STABLE}" STREQUAL "RELEASE")
|
||||
ADD_CUSTOM_TARGET(build_mongoclient
|
||||
COMMAND scons --release ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LIBMONGOCLIENT_RELEASE_FILENAME} ${MONGOCLIENT_RELEASE_LIBRARY}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient library")
|
||||
ELSE()
|
||||
ADD_CUSTOM_TARGET(build_mongoclient
|
||||
COMMAND scons --d ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LIBMONGOCLIENT_RELEASE_FILENAME} ${MONGOCLIENT_RELEASE_LIBRARY}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient library")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(MONGO_LIBRARIES ${MONGOCLIENT_RELEASE_LIBRARY})
|
||||
SET(ALL_LIBS ${MONGO_LIBRARIES} ${ALL_LIBS})
|
||||
|
||||
# Creating lib without main.cpp
|
||||
ADD_APP_LIBRARY(${ROBOMONGO_LIB} "${ALL_SOURCES}" "${ALL_LIBS}")
|
||||
ADD_DEPENDENCIES(${ROBOMONGO_LIB} build_mongoclient)
|
||||
|
||||
# Creating executable
|
||||
ADD_APP_EXECUTABLE(${PROJECT_NAME} "${ROBOMONGO_EXECUTABLE_SOURCES}" "${ALL_LIBS}")
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${ROBOMONGO_LIB})
|
||||
|
||||
ELSEIF(MSVC)
|
||||
IF(BOOST_ENABLED)
|
||||
ADD_CUSTOM_TARGET(mongoclient_release
|
||||
COMMAND call scons --release ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different \"${LIBMONGOCLIENT_RELEASE_FILENAME}\" \"${MONGOCLIENT_RELEASE_LIBRARY}\"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient release library")
|
||||
ADD_CUSTOM_TARGET(mongoclient_debug
|
||||
COMMAND call scons --d ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different \"${LIBMONGOCLIENT_RELEASE_FILENAME}\" \"${MONGOCLIENT_DEBUG_LIBRARY}\"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient debug library")
|
||||
ELSE(BOOST_ENABLED)
|
||||
ADD_CUSTOM_TARGET(mongoclient_release
|
||||
COMMAND call scons --release ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different \"${LIBMONGOCLIENT_RELEASE_FILENAME}\" \"${MONGOCLIENT_RELEASE_LIBRARY}\"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient release library")
|
||||
ADD_CUSTOM_TARGET(mongoclient_debug
|
||||
COMMAND call scons --d ${MONGODB_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different \"${LIBMONGOCLIENT_RELEASE_FILENAME}\" \"${MONGOCLIENT_DEBUG_LIBRARY}\"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/third-party/mongodb
|
||||
COMMENT "Build mongoclient debug library")
|
||||
ENDIF(BOOST_ENABLED)
|
||||
SET(MONGO_LIBRARIES optimized ${MONGOCLIENT_RELEASE_LIBRARY} debug ${MONGOCLIENT_DEBUG_LIBRARY})
|
||||
SET(ALL_LIBS ${MONGO_LIBRARIES} ${ALL_LIBS})
|
||||
|
||||
# Creating lib without main.cpp
|
||||
ADD_APP_LIBRARY_MSVC(${ROBOMONGO_LIB} "${ALL_SOURCES}" "${ALL_LIBS}")
|
||||
ADD_DEPENDENCIES(${ROBOMONGO_LIB} mongoclient_release)
|
||||
ADD_DEPENDENCIES(${ROBOMONGO_LIB} mongoclient_debug)
|
||||
|
||||
# Creating executable
|
||||
ADD_APP_EXECUTABLE_MSVC(${PROJECT_NAME} "${ROBOMONGO_EXECUTABLE_SOURCES}" "${ALL_LIBS}")
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${ROBOMONGO_LIB})
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "NOT SUPPORTED COMPILER!!!")
|
||||
ENDIF(MINGW OR CMAKE_COMPILER_IS_GNUCXX OR APPLE)
|
||||
|
||||
IF(MANIFEST_ENABLE)
|
||||
GET_TARGET_PROPERTY(BINARY_FILE ${PROJECT_NAME} LOCATION)
|
||||
ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME} POST_BUILD COMMAND mt -manifest "${CMAKE_SOURCE_DIR}/install/windows/win7.manifest" -outputresource:"${BINARY_FILE}")
|
||||
ENDIF(MANIFEST_ENABLE)
|
||||
|
||||
IF(WIN32)
|
||||
SET_SOURCE_FILES_PROPERTIES(${RESOURCE_OS} PROPERTIES LANGUAGE RC)
|
||||
ELSEIF(APPLE)
|
||||
SET_SOURCE_FILES_PROPERTIES(${RESOURCE_OS} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
SET_SOURCE_FILES_PROPERTIES(${ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
#SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/install/qt.conf PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
ENDIF(WIN32)
|
||||
|
||||
GET_FILENAME_COMPONENT(ICON_FILE_NAME ${ICON_FILE} NAME)
|
||||
IF(APPLE)
|
||||
SET(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME} )
|
||||
SET(MACOSX_BUNDLE_GUI_IDENTIFIER ${PROJECT_NAME})
|
||||
SET(MACOSX_BUNDLE_INFO_STRING "${PROJECT_VERSION},${PROJECT_COPYRIGHT}" )
|
||||
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${SHORT_VERSION}" )
|
||||
SET(MACOSX_BUNDLE_LONG_VERSION_STRING ${PROJECT_VERSION})
|
||||
SET(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
|
||||
SET(MACOSX_BUNDLE_COPYRIGHT ${PROJECT_COPYRIGHT})
|
||||
SET(MACOSX_BUNDLE_ICON_FILE ${ICON_FILE_NAME})
|
||||
ENDIF(APPLE)
|
||||
|
||||
# Start to install
|
||||
VersionConf(${PROJECT_NAME} ${RESOURCE_OS_IN} ${RESOURCE_OS} ${ICON_FILE_NAME})
|
||||
#IF(WIN32)
|
||||
# SET(CMAKE_EXE_LINKER_FLAGS "/VERSION:\"${MAJOR}.${MINOR}\"" CACHE STRING "Resetting the default linker options." FORCE)
|
||||
# STRING(REPLACE "." "," FILEVERSION ${PROJECT_VERSION})
|
||||
# SET(VERSION_STR ${PROJECT_VERSION})
|
||||
#ENDIF()
|
||||
INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${TARGET_INSTALL_DESTINATION} COMPONENT APPLICATIONS)
|
||||
INSTALL(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION . COMPONENT LICENSE)
|
||||
INSTALL(FILES ${CMAKE_SOURCE_DIR}/COPYRIGHT DESTINATION . COMPONENT LICENSE)
|
||||
INSTALL(FILES ${CMAKE_SOURCE_DIR}/whats-new.txt DESTINATION . COMPONENT LICENSE RENAME CHANGELOG)
|
||||
INSTALL_QT(${PROJECT_NAME} ${LIB_INSTALL_DESTINATION})
|
||||
|
||||
IF(WIN32)
|
||||
DEPLOY_QT_PLUGIN("platforms/qwindows" ${QT_PLUGINS_DIR} ${LIB_INSTALL_DESTINATION})
|
||||
DEPLOY_QT_PLUGIN("imageformats/qgif" ${QT_PLUGINS_DIR} ${LIB_INSTALL_DESTINATION})
|
||||
SET(MISC_LIBS icuuc49 icuin49 icudt49 icuuc51 icuin51 icudt51 D3DCompiler_43 libEGL libGLESv2)
|
||||
SET(PLACE_WHERE_SEARCH ${QT_BINS_DIR})
|
||||
ELSEIF(APPLE)
|
||||
SET(BUNDLE_NAME ${MACOSX_BUNDLE_BUNDLE_NAME}.app)
|
||||
DEPLOY_QT_PLUGIN("platforms/qcocoa" ${QT_PLUGINS_DIR} ${BUNDLE_NAME}/Contents/plugins)
|
||||
DEPLOY_QT_PLUGIN("accessible/qtaccessiblewidgets" ${QT_PLUGINS_DIR} ${BUNDLE_NAME}/Contents/plugins)
|
||||
DEPLOY_QT_PLUGIN("imageformats/qgif" ${QT_PLUGINS_DIR} ${BUNDLE_NAME}/Contents/plugins)
|
||||
INSTALL(FILES ${CMAKE_SOURCE_DIR}/install/qt.conf DESTINATION ${BUNDLE_NAME}/Contents/Resources COMPONENT RESOURCES)
|
||||
ELSEIF(UNIX)
|
||||
INSTALL(FILES ${CMAKE_SOURCE_DIR}/install/linux/README DESTINATION . COMPONENT LICENSE)
|
||||
INSTALL(PROGRAMS ${CMAKE_SOURCE_DIR}/install/linux/${PROJECT_NAME}.sh DESTINATION ${TARGET_INSTALL_DESTINATION})
|
||||
INSTALL(FILES ${RESOURCE_OS} DESTINATION share/applications COMPONENT RESOURCES)
|
||||
INSTALL(FILES ${ICON_FILE} DESTINATION share/icons COMPONENT RESOURCES)
|
||||
DEPLOY_QT_PLUGIN("platforms/qxcb" ${QT_PLUGINS_DIR} ${LIB_INSTALL_DESTINATION})
|
||||
DEPLOY_QT_PLUGIN("platformthemes/qgtk2" ${QT_PLUGINS_DIR} ${LIB_INSTALL_DESTINATION})
|
||||
DEPLOY_QT_PLUGIN("imageformats/qgif" ${QT_PLUGINS_DIR} ${LIB_INSTALL_DESTINATION})
|
||||
SET(MISC_LIBS icuuc49 icudata49 icui18n49 icuuc51 icudata51 icui18n51)
|
||||
SET(PLACE_WHERE_SEARCH ${QT_LIBS_DIR})
|
||||
ENDIF()
|
||||
|
||||
FOREACH(miscLib ${MISC_LIBS})
|
||||
DEPLOY_QT_PLUGIN(${miscLib} ${PLACE_WHERE_SEARCH} ${LIB_INSTALL_DESTINATION})
|
||||
ENDFOREACH(miscLib ${MISC_LIBS})
|
||||
|
||||
INSTALL_RUNTIME_LIBRARIES()
|
||||
TARGET_BUNDLEFIX(${PROJECT_NAME} ${LIB_INSTALL_DESTINATION})
|
||||
|
||||
IF(DEVELOPER_ENABLE_TESTS)
|
||||
########## PREPARE GTEST LIBRARY ##########
|
||||
IF(MSVC)
|
||||
SET(gtest_force_shared_crt ON CACHE BOOL "Build shared gtest library")
|
||||
ADD_DEFINITIONS(-D_VARIADIC_MAX=10)
|
||||
ENDIF(MSVC)
|
||||
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/tests/gtest-1.6.0 gtest)
|
||||
INCLUDE_DIRECTORIES(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
|
||||
########## PREPARE GTEST LIBRARY ##########
|
||||
|
||||
ADD_EXECUTABLE(tests
|
||||
${CMAKE_SOURCE_DIR}/tests/test_parser.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/test_connection_string.cpp
|
||||
${CMAKE_SOURCE_DIR}/tests/test_build_collection_query.cpp)
|
||||
|
||||
TARGET_LINK_LIBRARIES(tests ${ROBOMONGO_LIB} gtest gtest_main)
|
||||
ADD_TEST(NAME tests COMMAND tests)
|
||||
SET_PROPERTY(TARGET tests PROPERTY FOLDER "Tests")
|
||||
|
||||
ENDIF(DEVELOPER_ENABLE_TESTS)
|
||||
@@ -0,0 +1,31 @@
|
||||
Bash fronted for CMake
|
||||
======================
|
||||
|
||||
If you want to use this scripts, you need to set single environment variable:
|
||||
|
||||
E.g.:
|
||||
|
||||
export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5/5.5/gcc_64;/path/to/robomongo-shell"
|
||||
|
||||
Build Robomongo:
|
||||
|
||||
$ bin/configure
|
||||
$ bin/build
|
||||
|
||||
Install Robomongo:
|
||||
|
||||
$ bin/install
|
||||
|
||||
Run Robomongo:
|
||||
|
||||
$ bin/run
|
||||
|
||||
Pack Robomongo:
|
||||
|
||||
$ bin/pack
|
||||
|
||||
More:
|
||||
- [Build Robo 3T - Mac OS X and Linux](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnMacAndLinux.md)
|
||||
- [Build Robo 3T - Windows](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnWindows.md)
|
||||
- [Unit Tests](wiki/Unit-Tests)
|
||||
- [Static Code Analysis](wiki/Static-Code-Analysis)
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1 # $1: release or debug
|
||||
|
||||
cd $BUILD_DIR
|
||||
cmake --build . "${@:2}" -- -j8
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
|
||||
source $BIN_DIR/build || exit $?
|
||||
source $BIN_DIR/run-tests $1
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run build
|
||||
call "%BIN_DIR%\build.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Run tests
|
||||
call "%BIN_DIR%\run-tests.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
@@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run common setup code
|
||||
call "%BIN_DIR%\common\setup.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Run build
|
||||
cd "%BUILD_DIR%"
|
||||
cmake --build . --config %BUILD_TYPE%
|
||||
|
||||
rem Install debug *.dll files
|
||||
if "%BUILD_TYPE%" == "Debug" (
|
||||
call "%BIN_DIR%\install-debug-dlls.bat" %*
|
||||
)
|
||||
@@ -0,0 +1,10 @@
|
||||
bugprone-*
|
||||
cert-*
|
||||
clang-analyzer-*
|
||||
cppcoreguidelines-*
|
||||
concurrency-*
|
||||
hicpp-*
|
||||
llvm-*
|
||||
misc-*
|
||||
performance-*
|
||||
readability-*
|
||||
@@ -0,0 +1,4 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<EnableClangTidyCodeAnalysis>true</EnableClangTidyCodeAnalysis>
|
||||
<ClangTidyChecks></ClangTidyChecks>
|
||||
</PropertyGroup>
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1
|
||||
|
||||
cd $VARIANT_DIR && rm -rf $BUILD_DIR_NAME
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run common setup code
|
||||
call "%BIN_DIR%\common\setup.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Clear build directory
|
||||
cd "%VARIANT_DIR%"
|
||||
rmdir /s /q "%BUILD_DIR_NAME%"
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ "$1" == "debug" ]; then
|
||||
BUILD_TYPE=Debug
|
||||
else
|
||||
BUILD_TYPE=Release
|
||||
|
||||
# Prepend "release" in front of $@
|
||||
set -- release "$@"
|
||||
fi
|
||||
|
||||
# Build dir name is a lowercase of BUILD_TYPE
|
||||
# i.e. debug
|
||||
BUILD_DIR_NAME="$(echo $BUILD_TYPE | tr '[A-Z]' '[a-z]')"
|
||||
|
||||
# i.e. /path/to/robomongo/build
|
||||
VARIANT_DIR=$PROJECT_DIR/build
|
||||
|
||||
# i.e. /path/to/robomongo/build/debug
|
||||
BUILD_DIR=$VARIANT_DIR/$BUILD_DIR_NAME
|
||||
|
||||
# i.e. /path/to/robomongo/build/debug/install
|
||||
INSTALL_PREFIX=$BUILD_DIR/install
|
||||
|
||||
# i.e. /path/to/robomongo/build/debug/package
|
||||
PACK_PREFIX=$BUILD_DIR/package
|
||||
|
||||
PREFIX_PATH=$ROBOMONGO_CMAKE_PREFIX_PATH
|
||||
|
||||
mkdir -p $BUILD_DIR
|
||||
@@ -0,0 +1,48 @@
|
||||
rem Check that ROBOMONGO_CMAKE_PREFIX_PATH is set
|
||||
if not defined ROBOMONGO_CMAKE_PREFIX_PATH (
|
||||
echo Set environment variable ROBOMONGO_CMAKE_PREFIX_PATH in order to use this script
|
||||
echo.
|
||||
echo For example, execute the following command:
|
||||
echo setx ROBOMONGO_CMAKE_PREFIX_PATH "c:\Qt-5\5.5\msvc2013_64;c:\robomongo-shell"
|
||||
echo.
|
||||
echo You also need to reopen your Windows Command Prompt.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
rem Check for debug build type
|
||||
if %1. == debug. (
|
||||
set BUILD_TYPE=Debug
|
||||
) else (
|
||||
rem If build type wasn't specified - Release mode assumed
|
||||
if %1. ==. (
|
||||
set BUILD_TYPE=Release
|
||||
) else (
|
||||
echo Invalid build type "%1". Supported build types: debug or release.
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
rem Build dir name (i.e. Release)
|
||||
set BUILD_DIR_NAME=%BUILD_TYPE%
|
||||
|
||||
rem i.e. /path/to/robomongo/build
|
||||
set VARIANT_DIR=%PROJECT_DIR%\build
|
||||
|
||||
rem i.e. /path/to/robomongo/build/debug
|
||||
set BUILD_DIR=%VARIANT_DIR%\%BUILD_DIR_NAME%
|
||||
|
||||
rem i.e. /path/to/robomongo/build/debug/install
|
||||
set INSTALL_PREFIX=%BUILD_DIR%\install
|
||||
|
||||
rem i.e. /path/to/robomongo/build/debug/package
|
||||
set PACK_PREFIX=%BUILD_DIR%/package
|
||||
|
||||
rem Get value from environment variable
|
||||
set PREFIX_PATH=%ROBOMONGO_CMAKE_PREFIX_PATH%
|
||||
|
||||
rem Create BUILD_DIR if it is not exists already
|
||||
if not exist "%BUILD_DIR%" (
|
||||
md "%BUILD_DIR%"
|
||||
)
|
||||
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1 # $1: release or debug
|
||||
|
||||
cd $BUILD_DIR
|
||||
# $BUILD_TYPE: Release or Debug
|
||||
cmake -D "CMAKE_PREFIX_PATH=$PREFIX_PATH" -D "CMAKE_BUILD_TYPE=$BUILD_TYPE" -D "CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX" "${@:2}" $PROJECT_DIR
|
||||
@@ -0,0 +1,21 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run common setup code
|
||||
call "%BIN_DIR%\common\setup.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Run CMake configuration step
|
||||
rem BUILD_TYPE: Release or Debug
|
||||
cd "%BUILD_DIR%"
|
||||
cmake -G "Visual Studio 15 2017 Win64" -D "CMAKE_PREFIX_PATH=%PREFIX_PATH%" -D "CMAKE_BUILD_TYPE=%BUILD_TYPE%" -D "CMAKE_INSTALL_PREFIX=%INSTALL_PREFIX%" %PROJECT_DIR%
|
||||
|
||||
@REM echo ___________________________________________________________________
|
||||
@REM rem Enable Clang Tidy for Visual Studio 2019 IDE ...
|
||||
@REM set ROBO_PROJ_FILE=%BUILD_DIR%/src/robomongo/robomongo.vcxproj
|
||||
@REM python %BIN_DIR%\enable-visual-studio-clang-tidy.py %ROBO_PROJ_FILE% %BIN_DIR%
|
||||
@@ -0,0 +1,44 @@
|
||||
import sys
|
||||
from lxml import etree
|
||||
|
||||
print('\nEnabling Clang Tidy for Visual Studio 2019')
|
||||
|
||||
robo_proj_xml = sys.argv[1]
|
||||
clang_tidy_xml = sys.argv[2] + '/clang-tidy.xml'
|
||||
clang_checks_txt = sys.argv[2] + '/clang-checks.txt'
|
||||
print(sys.argv[0] + ":\nProcessing: " + sys.argv[1])
|
||||
|
||||
## Read clang checks
|
||||
clang_checks = None
|
||||
with open(clang_checks_txt, "r") as file:
|
||||
clang_checks = file.read().replace('\n', ',')
|
||||
|
||||
##
|
||||
tree = etree.parse(robo_proj_xml)
|
||||
ns = {'ns':'http://schemas.microsoft.com/developer/msbuild/2003'}
|
||||
if(tree.find('//ns:EnableClangTidyCodeAnalysis', namespaces=ns) is not None):
|
||||
tree.find('//ns:ClangTidyChecks', namespaces=ns).text = clang_checks
|
||||
tree.write(robo_proj_xml)
|
||||
print('Finished')
|
||||
sys.exit()
|
||||
|
||||
## Append clang_tidy_xml - Todo: refactor using etree
|
||||
with open(robo_proj_xml, "r") as in_file:
|
||||
buf = in_file.readlines()
|
||||
|
||||
with open(clang_tidy_xml, "r") as in_file:
|
||||
clang_tidy_xml_buf = in_file.read()
|
||||
|
||||
appended = False
|
||||
with open(robo_proj_xml, "w") as out_file:
|
||||
for line in buf:
|
||||
if "</ItemGroup>" in line and appended == False:
|
||||
line = line + clang_tidy_xml_buf
|
||||
appended = True
|
||||
out_file.write(line)
|
||||
|
||||
## Add clang checks
|
||||
tree = etree.parse(robo_proj_xml)
|
||||
tree.find('//ns:ClangTidyChecks', namespaces=ns).text = clang_checks
|
||||
tree.write(robo_proj_xml)
|
||||
print('Finished')
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1
|
||||
|
||||
cd $BUILD_DIR
|
||||
cmake --build . --target install/strip "${@:2}"
|
||||
@@ -0,0 +1,54 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem // This script installs debug *.dll files
|
||||
rem -------------------------------------------
|
||||
|
||||
set INSTALL_DIR=%BUILD_DIR%\src\robomongo\Debug\
|
||||
if not exist %INSTALL_DIR%*.dll (
|
||||
echo ----------------------------------------
|
||||
echo Installing debug *.dll files ...
|
||||
echo INSTALL_DIR: %INSTALL_DIR%
|
||||
echo ----------------------------------------
|
||||
)
|
||||
|
||||
rem // Find OpenSSL and Qt paths
|
||||
for %%i in (%ROBOMONGO_CMAKE_PREFIX_PATH%) do (
|
||||
set xx=%%i
|
||||
if not "!xx!"=="!xx:ssl=!" ( set OPENSSL_DIR=!xx! )
|
||||
if not "!xx!"=="!xx:qt=!" ( set Qt_DIR=!xx! )
|
||||
)
|
||||
set OPENSSL_DIR=%OPENSSL_DIR: =%
|
||||
set Qt_DIR=%Qt_DIR: =%
|
||||
|
||||
rem // Copy dll files
|
||||
for /d %%a in (
|
||||
"%VS140COMNTOOLS%\..\..\VC\redist\debug_nonredist\x64\Microsoft.VC140.DebugCRT\msvcp140d.dll"
|
||||
"%VS140COMNTOOLS%\..\..\VC\redist\debug_nonredist\x64\Microsoft.VC140.DebugCRT\vcruntime140d.dll"
|
||||
"%OPENSSL_DIR%\libssl-1_1-x64.dll"
|
||||
"%OPENSSL_DIR%\libcrypto-1_1-x64.dll"
|
||||
"%Qt_DIR%\bin\Qt5Cored.dll"
|
||||
"%Qt_DIR%\bin\Qt5Guid.dll"
|
||||
"%Qt_DIR%\bin\Qt5Networkd.dll"
|
||||
"%Qt_DIR%\bin\Qt5Widgetsd.dll"
|
||||
"%Qt_DIR%\bin\Qt5Positioningd.dll"
|
||||
"%Qt_DIR%\bin\Qt5Qmld.dll"
|
||||
"%Qt_DIR%\bin\Qt5Quickd.dll"
|
||||
"%Qt_DIR%\bin\Qt5QuickWidgetsd.dll"
|
||||
"%Qt_DIR%\bin\Qt5WebChanneld.dll"
|
||||
"%Qt_DIR%\bin\Qt5WebEngineCored.dll"
|
||||
"%Qt_DIR%\bin\Qt5WebEngineWidgetsd.dll"
|
||||
"%Qt_DIR%\bin\Qt5PrintSupportd.dll"
|
||||
) do (
|
||||
if not exist !INSTALL_DIR!%%~NXa (
|
||||
xcopy %%a !INSTALL_DIR! /d /y
|
||||
)
|
||||
)
|
||||
|
||||
if not exist %INSTALL_DIR%\imageformats\qgifd.dll (
|
||||
xcopy /s "%Qt_DIR%\plugins\imageformats" %INSTALL_DIR%\imageformats\ /d /y
|
||||
)
|
||||
|
||||
if not exist %INSTALL_DIR%\platforms\qminimald.dll (
|
||||
xcopy /s "%Qt_DIR%\plugins\platforms" %INSTALL_DIR%\platforms\ /d /y
|
||||
)
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run common setup code
|
||||
call "%BIN_DIR%\common\setup.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Run install
|
||||
cd "%BUILD_DIR%"
|
||||
cmake --build . --config %BUILD_TYPE% --target install
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1
|
||||
|
||||
cd $BUILD_DIR
|
||||
cmake --build . --target package "${@:2}"
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run common setup code
|
||||
call "%BIN_DIR%\common\setup.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Run install
|
||||
cd "%BUILD_DIR%"
|
||||
cmake --build . --config %BUILD_TYPE% --target package
|
||||
@@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
call "clean.bat" %*
|
||||
call "configure.bat" %*
|
||||
call "build.bat" %*
|
||||
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1
|
||||
|
||||
echo "Note: ./install must be executed before this script."
|
||||
if [ "$(uname -s)" == "Darwin" ]; then
|
||||
echo "Starting $BUILD_DIR/install/Robo 3T.app/Contents/MacOS/Robo 3T"
|
||||
"$BUILD_DIR/install/Robo 3T.app/Contents/MacOS/Robo 3T"
|
||||
else
|
||||
echo "Starting $BUILD_DIR/install/bin/robo3t"
|
||||
"$BUILD_DIR/install/bin/robo3t"
|
||||
fi
|
||||
Executable
+33
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
### Common Setup
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1 # $1: release or debug
|
||||
|
||||
### Setup
|
||||
CLANG_TIDY_BUILD_DIR=$PROJECT_DIR/build/clang-tidy-$BUILD_TYPE
|
||||
rm -rf $CLANG_TIDY_BUILD_DIR
|
||||
mkdir -p $CLANG_TIDY_BUILD_DIR && cd $CLANG_TIDY_BUILD_DIR
|
||||
|
||||
### Configure cmake
|
||||
# Info: $BUILD_TYPE == Release or Debug
|
||||
cmake -D "CMAKE_EXPORT_COMPILE_COMMANDS=ON" -D "CMAKE_PREFIX_PATH=$PREFIX_PATH" -D "CMAKE_BUILD_TYPE=$BUILD_TYPE" -D "CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX" "${@:2}" $PROJECT_DIR
|
||||
echo -e "\n------------------------------------------------"
|
||||
echo "clang-tidy configured. Mode: $BUILD_TYPE"
|
||||
echo -e "------------------------------------------------\n"
|
||||
|
||||
### Run clang-tidy
|
||||
FILE_OR_PATH=/opt/robo/src/robomongo/ # or MainWindow.cpp
|
||||
CHECKS=clang-analyzer-*,readability-implicit-bool-conversion
|
||||
# All Checks: https://clang.llvm.org/extra/clang-tidy/checks/list.html
|
||||
|
||||
# e.g. $BIN_DIR/run-clang-tidy.py -checks=clang-analyzer-*,readability-implicit-bool-conversion /opt/robo/src/robomongo/
|
||||
$BIN_DIR/run-clang-tidy.py -checks=$CHECKS $FILE_OR_PATH
|
||||
|
||||
echo -e "\n------------------------------------------------"
|
||||
echo "clang-tidy finished"
|
||||
echo "Mode : $BUILD_TYPE"
|
||||
echo "CLANG_TIDY_BUILD_DIR: $CLANG_TIDY_BUILD_DIR"
|
||||
echo "Command executed : $BIN_DIR/run-clang-tidy.py -checks=$CHECKS $FILE_OR_PATH"
|
||||
echo -e "------------------------------------------------\n"
|
||||
Executable
+326
@@ -0,0 +1,326 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
#===- run-clang-tidy.py - Parallel clang-tidy runner ---------*- python -*--===#
|
||||
#
|
||||
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
# See https://llvm.org/LICENSE.txt for license information.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
#
|
||||
#===------------------------------------------------------------------------===#
|
||||
# FIXME: Integrate with clang-tidy-diff.py
|
||||
|
||||
"""
|
||||
Parallel clang-tidy runner
|
||||
==========================
|
||||
|
||||
Runs clang-tidy over all files in a compilation database. Requires clang-tidy
|
||||
and clang-apply-replacements in $PATH.
|
||||
|
||||
Example invocations.
|
||||
- Run clang-tidy on all files in the current working directory with a default
|
||||
set of checks and show warnings in the cpp files and all project headers.
|
||||
run-clang-tidy.py $PWD
|
||||
|
||||
- Fix all header guards.
|
||||
run-clang-tidy.py -fix -checks=-*,llvm-header-guard
|
||||
|
||||
- Fix all header guards included from clang-tidy and header guards
|
||||
for clang-tidy headers.
|
||||
run-clang-tidy.py -fix -checks=-*,llvm-header-guard extra/clang-tidy \
|
||||
-header-filter=extra/clang-tidy
|
||||
|
||||
Compilation database setup:
|
||||
http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
import glob
|
||||
import json
|
||||
import multiprocessing
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import threading
|
||||
import traceback
|
||||
|
||||
try:
|
||||
import yaml
|
||||
except ImportError:
|
||||
yaml = None
|
||||
|
||||
is_py2 = sys.version[0] == '2'
|
||||
|
||||
if is_py2:
|
||||
import Queue as queue
|
||||
else:
|
||||
import queue as queue
|
||||
|
||||
def find_compilation_database(path):
|
||||
"""Adjusts the directory until a compilation database is found."""
|
||||
result = './'
|
||||
while not os.path.isfile(os.path.join(result, path)):
|
||||
if os.path.realpath(result) == '/':
|
||||
print('Error: could not find compilation database.')
|
||||
sys.exit(1)
|
||||
result += '../'
|
||||
return os.path.realpath(result)
|
||||
|
||||
|
||||
def make_absolute(f, directory):
|
||||
if os.path.isabs(f):
|
||||
return f
|
||||
return os.path.normpath(os.path.join(directory, f))
|
||||
|
||||
|
||||
def get_tidy_invocation(f, clang_tidy_binary, checks, tmpdir, build_path,
|
||||
header_filter, extra_arg, extra_arg_before, quiet,
|
||||
config):
|
||||
"""Gets a command line for clang-tidy."""
|
||||
start = [clang_tidy_binary]
|
||||
if header_filter is not None:
|
||||
start.append('-header-filter=' + header_filter)
|
||||
if checks:
|
||||
start.append('-checks=' + checks)
|
||||
if tmpdir is not None:
|
||||
start.append('-export-fixes')
|
||||
# Get a temporary file. We immediately close the handle so clang-tidy can
|
||||
# overwrite it.
|
||||
(handle, name) = tempfile.mkstemp(suffix='.yaml', dir=tmpdir)
|
||||
os.close(handle)
|
||||
start.append(name)
|
||||
for arg in extra_arg:
|
||||
start.append('-extra-arg=%s' % arg)
|
||||
for arg in extra_arg_before:
|
||||
start.append('-extra-arg-before=%s' % arg)
|
||||
start.append('-p=' + build_path)
|
||||
if quiet:
|
||||
start.append('-quiet')
|
||||
if config:
|
||||
start.append('-config=' + config)
|
||||
start.append(f)
|
||||
return start
|
||||
|
||||
|
||||
def merge_replacement_files(tmpdir, mergefile):
|
||||
"""Merge all replacement files in a directory into a single file"""
|
||||
# The fixes suggested by clang-tidy >= 4.0.0 are given under
|
||||
# the top level key 'Diagnostics' in the output yaml files
|
||||
mergekey="Diagnostics"
|
||||
merged=[]
|
||||
for replacefile in glob.iglob(os.path.join(tmpdir, '*.yaml')):
|
||||
content = yaml.safe_load(open(replacefile, 'r'))
|
||||
if not content:
|
||||
continue # Skip empty files.
|
||||
merged.extend(content.get(mergekey, []))
|
||||
|
||||
if merged:
|
||||
# MainSourceFile: The key is required by the definition inside
|
||||
# include/clang/Tooling/ReplacementsYaml.h, but the value
|
||||
# is actually never used inside clang-apply-replacements,
|
||||
# so we set it to '' here.
|
||||
output = { 'MainSourceFile': '', mergekey: merged }
|
||||
with open(mergefile, 'w') as out:
|
||||
yaml.safe_dump(output, out)
|
||||
else:
|
||||
# Empty the file:
|
||||
open(mergefile, 'w').close()
|
||||
|
||||
|
||||
def check_clang_apply_replacements_binary(args):
|
||||
"""Checks if invoking supplied clang-apply-replacements binary works."""
|
||||
try:
|
||||
subprocess.check_call([args.clang_apply_replacements_binary, '--version'])
|
||||
except:
|
||||
print('Unable to run clang-apply-replacements. Is clang-apply-replacements '
|
||||
'binary correctly specified?', file=sys.stderr)
|
||||
traceback.print_exc()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def apply_fixes(args, tmpdir):
|
||||
"""Calls clang-apply-fixes on a given directory."""
|
||||
invocation = [args.clang_apply_replacements_binary]
|
||||
if args.format:
|
||||
invocation.append('-format')
|
||||
if args.style:
|
||||
invocation.append('-style=' + args.style)
|
||||
invocation.append(tmpdir)
|
||||
subprocess.call(invocation)
|
||||
|
||||
|
||||
def run_tidy(args, tmpdir, build_path, queue, lock, failed_files):
|
||||
"""Takes filenames out of queue and runs clang-tidy on them."""
|
||||
while True:
|
||||
name = queue.get()
|
||||
invocation = get_tidy_invocation(name, args.clang_tidy_binary, args.checks,
|
||||
tmpdir, build_path, args.header_filter,
|
||||
args.extra_arg, args.extra_arg_before,
|
||||
args.quiet, args.config)
|
||||
|
||||
proc = subprocess.Popen(invocation, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
output, err = proc.communicate()
|
||||
if proc.returncode != 0:
|
||||
failed_files.append(name)
|
||||
with lock:
|
||||
sys.stdout.write(' '.join(invocation) + '\n' + output.decode('utf-8'))
|
||||
if len(err) > 0:
|
||||
sys.stdout.flush()
|
||||
sys.stderr.write(err.decode('utf-8'))
|
||||
queue.task_done()
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Runs clang-tidy over all files '
|
||||
'in a compilation database. Requires '
|
||||
'clang-tidy and clang-apply-replacements in '
|
||||
'$PATH.')
|
||||
parser.add_argument('-clang-tidy-binary', metavar='PATH',
|
||||
default='clang-tidy',
|
||||
help='path to clang-tidy binary')
|
||||
parser.add_argument('-clang-apply-replacements-binary', metavar='PATH',
|
||||
default='clang-apply-replacements',
|
||||
help='path to clang-apply-replacements binary')
|
||||
parser.add_argument('-checks', default=None,
|
||||
help='checks filter, when not specified, use clang-tidy '
|
||||
'default')
|
||||
parser.add_argument('-config', default=None,
|
||||
help='Specifies a configuration in YAML/JSON format: '
|
||||
' -config="{Checks: \'*\', '
|
||||
' CheckOptions: [{key: x, '
|
||||
' value: y}]}" '
|
||||
'When the value is empty, clang-tidy will '
|
||||
'attempt to find a file named .clang-tidy for '
|
||||
'each source file in its parent directories.')
|
||||
parser.add_argument('-header-filter', default=None,
|
||||
help='regular expression matching the names of the '
|
||||
'headers to output diagnostics from. Diagnostics from '
|
||||
'the main file of each translation unit are always '
|
||||
'displayed.')
|
||||
if yaml:
|
||||
parser.add_argument('-export-fixes', metavar='filename', dest='export_fixes',
|
||||
help='Create a yaml file to store suggested fixes in, '
|
||||
'which can be applied with clang-apply-replacements.')
|
||||
parser.add_argument('-j', type=int, default=0,
|
||||
help='number of tidy instances to be run in parallel.')
|
||||
parser.add_argument('files', nargs='*', default=['.*'],
|
||||
help='files to be processed (regex on path)')
|
||||
parser.add_argument('-fix', action='store_true', help='apply fix-its')
|
||||
parser.add_argument('-format', action='store_true', help='Reformat code '
|
||||
'after applying fixes')
|
||||
parser.add_argument('-style', default='file', help='The style of reformat '
|
||||
'code after applying fixes')
|
||||
parser.add_argument('-p', dest='build_path',
|
||||
help='Path used to read a compile command database.')
|
||||
parser.add_argument('-extra-arg', dest='extra_arg',
|
||||
action='append', default=[],
|
||||
help='Additional argument to append to the compiler '
|
||||
'command line.')
|
||||
parser.add_argument('-extra-arg-before', dest='extra_arg_before',
|
||||
action='append', default=[],
|
||||
help='Additional argument to prepend to the compiler '
|
||||
'command line.')
|
||||
parser.add_argument('-quiet', action='store_true',
|
||||
help='Run clang-tidy in quiet mode')
|
||||
args = parser.parse_args()
|
||||
|
||||
db_path = 'compile_commands.json'
|
||||
|
||||
if args.build_path is not None:
|
||||
build_path = args.build_path
|
||||
else:
|
||||
# Find our database
|
||||
build_path = find_compilation_database(db_path)
|
||||
|
||||
try:
|
||||
invocation = [args.clang_tidy_binary, '-list-checks']
|
||||
invocation.append('-p=' + build_path)
|
||||
if args.checks:
|
||||
invocation.append('-checks=' + args.checks)
|
||||
invocation.append('-')
|
||||
if args.quiet:
|
||||
# Even with -quiet we still want to check if we can call clang-tidy.
|
||||
with open(os.devnull, 'w') as dev_null:
|
||||
subprocess.check_call(invocation, stdout=dev_null)
|
||||
else:
|
||||
subprocess.check_call(invocation)
|
||||
except:
|
||||
print("Unable to run clang-tidy.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
# Load the database and extract all files.
|
||||
database = json.load(open(os.path.join(build_path, db_path)))
|
||||
files = [make_absolute(entry['file'], entry['directory'])
|
||||
for entry in database]
|
||||
|
||||
max_task = args.j
|
||||
if max_task == 0:
|
||||
max_task = multiprocessing.cpu_count()
|
||||
|
||||
tmpdir = None
|
||||
if args.fix or (yaml and args.export_fixes):
|
||||
check_clang_apply_replacements_binary(args)
|
||||
tmpdir = tempfile.mkdtemp()
|
||||
|
||||
# Build up a big regexy filter from all command line arguments.
|
||||
file_name_re = re.compile('|'.join(args.files))
|
||||
|
||||
return_code = 0
|
||||
try:
|
||||
# Spin up a bunch of tidy-launching threads.
|
||||
task_queue = queue.Queue(max_task)
|
||||
# List of files with a non-zero return code.
|
||||
failed_files = []
|
||||
lock = threading.Lock()
|
||||
for _ in range(max_task):
|
||||
t = threading.Thread(target=run_tidy,
|
||||
args=(args, tmpdir, build_path, task_queue, lock, failed_files))
|
||||
t.daemon = True
|
||||
t.start()
|
||||
|
||||
# Fill the queue with files.
|
||||
for name in files:
|
||||
if file_name_re.search(name):
|
||||
task_queue.put(name)
|
||||
|
||||
# Wait for all threads to be done.
|
||||
task_queue.join()
|
||||
if len(failed_files):
|
||||
return_code = 1
|
||||
|
||||
except KeyboardInterrupt:
|
||||
# This is a sad hack. Unfortunately subprocess goes
|
||||
# bonkers with ctrl-c and we start forking merrily.
|
||||
print('\nCtrl-C detected, goodbye.')
|
||||
if tmpdir:
|
||||
shutil.rmtree(tmpdir)
|
||||
os.kill(0, 9)
|
||||
|
||||
if yaml and args.export_fixes:
|
||||
print('Writing fixes to ' + args.export_fixes + ' ...')
|
||||
try:
|
||||
merge_replacement_files(tmpdir, args.export_fixes)
|
||||
except:
|
||||
print('Error exporting fixes.\n', file=sys.stderr)
|
||||
traceback.print_exc()
|
||||
return_code=1
|
||||
|
||||
if args.fix:
|
||||
print('Applying fixes ...')
|
||||
try:
|
||||
apply_fixes(args, tmpdir)
|
||||
except:
|
||||
print('Error applying fixes.\n', file=sys.stderr)
|
||||
traceback.print_exc()
|
||||
return_code=1
|
||||
|
||||
if tmpdir:
|
||||
shutil.rmtree(tmpdir)
|
||||
sys.exit(return_code)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,22 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
set CPP_VER=c++17
|
||||
|
||||
set FILE_OR_DIR=..\src\robomongo\
|
||||
set PARAM_1=%1
|
||||
if not "%PARAM_1%" == "" (
|
||||
set FILE_OR_DIR=%PARAM_1%
|
||||
)
|
||||
|
||||
rem Run analysis
|
||||
echo.
|
||||
echo ---------------------- Running cppcheck ----------------------
|
||||
echo.
|
||||
call cppcheck %FILE_OR_DIR% --enable=all --std=%CPP_VER%
|
||||
echo.
|
||||
echo ---------------------- End of cppcheck ----------------------
|
||||
echo.
|
||||
echo ---------------------- Info ----------------------
|
||||
call cppcheck --version
|
||||
echo Command called: cppcheck %FILE_OR_DIR% --enable=all --std=%CPP_VER%
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1 # $1: release or debug
|
||||
|
||||
mkdir -p ../scan-build && cd ../scan-build
|
||||
# $BUILD_TYPE: Release or Debug
|
||||
# Hint: Use "--use-analyzer /usr/local/opt/llvm/bin/clang++" after "-v"
|
||||
scan-build -v cmake -D "CMAKE_PREFIX_PATH=$PREFIX_PATH" -D "CMAKE_BUILD_TYPE=$BUILD_TYPE" -D "CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX" "${@:2}" $PROJECT_DIR
|
||||
echo -e "\n------------------------------------------------"
|
||||
echo "Configured with scan-build in $BUILD_TYPE mode"
|
||||
echo -e "------------------------------------------------\n"
|
||||
scan-build cmake --build . "${@:2}" -- -j8
|
||||
echo -e "\n------------------------------------------------"
|
||||
echo "Built with scan-build in $BUILD_TYPE mode"
|
||||
echo -e "------------------------------------------------\n"
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
source $BIN_DIR/common/setup $1
|
||||
|
||||
echo
|
||||
echo "******************* Running unit tests in $BUILD_TYPE mode *******************"
|
||||
echo
|
||||
|
||||
if [ "$(uname -s)" == "Darwin" ]; then
|
||||
EXE="$BUILD_DIR/src/robomongo-unit-tests/robo_unit_tests"
|
||||
echo "Running file: $EXE"
|
||||
"$EXE"
|
||||
else # Linux
|
||||
echo "Error: Currently unit testing is disabled for Linux due to MongoDB linking problem"
|
||||
exit 0
|
||||
EXE="$BUILD_DIR/src/robomongo-unit-tests/robo_unit_tests"
|
||||
echo "Running file: $EXE"
|
||||
"$EXE"
|
||||
fi
|
||||
@@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run common setup code
|
||||
call "%BIN_DIR%\common\setup.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Run tests
|
||||
echo.
|
||||
echo ******************* Running unit tests *******************
|
||||
echo Mode: %BUILD_TYPE%
|
||||
set TEST_EXE_DIR=%PROJECT_DIR%\\build\%BUILD_TYPE%\src\robomongo-unit-tests\%BUILD_TYPE%
|
||||
echo Run : %TEST_EXE_DIR%\robo_unit_tests.exe
|
||||
echo.
|
||||
call "%TEST_EXE_DIR%\robo_unit_tests.exe" %*
|
||||
@@ -0,0 +1,29 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem Path to bin and project folder
|
||||
set BIN_DIR_WITH_BACKSLASH=%~dp0%
|
||||
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
|
||||
set PROJECT_DIR=%BIN_DIR%\..
|
||||
|
||||
rem Run common setup code
|
||||
call "%BIN_DIR%\common\setup.bat" %*
|
||||
if %ERRORLEVEL% neq 0 (exit /b 1)
|
||||
|
||||
rem Run Visual Studio with RunCodeAnalysis
|
||||
cd "%BUILD_DIR%"
|
||||
set RULE_SET="/p:CodeAnalysisRuleSet=NativeRecommendedRules.ruleset"
|
||||
set OUT_FILE=vs-code-analysis-%BUILD_TYPE%.txt
|
||||
|
||||
echo ------------- Running Visual Studio with RunCodeAnalysis -------------
|
||||
echo Result will be written into file "%OUT_FILE%" in the end.
|
||||
echo ...
|
||||
cmake --build . --config %BUILD_TYPE% -- "/p:RunCodeAnalysis=true" %RULE_SET% > %BIN_DIR%\%OUT_FILE%
|
||||
rem Rules: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets
|
||||
rem https://docs.microsoft.com/en-us/visualstudio/code-quality/rule-set-reference?view=vs-2019
|
||||
|
||||
echo ------------- End of RunCodeAnalysis -------------
|
||||
echo.
|
||||
echo ------------- Info -------------
|
||||
echo Mode : %BUILD_TYPE%
|
||||
echo RULE_SET: %RULE_SET% (see the script comments for more info)
|
||||
@@ -0,0 +1,42 @@
|
||||
import os
|
||||
from os.path import join
|
||||
|
||||
###
|
||||
def force_warning_level_3(file):
|
||||
with open(file, "r") as in_file:
|
||||
buf = in_file.readlines()
|
||||
|
||||
push = '#pragma warning(push, 3)\n'
|
||||
pop = '#pragma warning(pop)\n'
|
||||
|
||||
last_line_has_mongo = False
|
||||
with open(file, "w") as out_file:
|
||||
for line in buf:
|
||||
if line.startswith(('#include <mongo', '#include "mongo')):
|
||||
if last_line_has_mongo:
|
||||
pass # line = line + pop
|
||||
else:
|
||||
line = push + line
|
||||
|
||||
last_line_has_mongo = True
|
||||
else:
|
||||
if last_line_has_mongo:
|
||||
line = pop + line
|
||||
|
||||
last_line_has_mongo = False
|
||||
|
||||
out_file.write(line)
|
||||
|
||||
|
||||
### main
|
||||
root_dir = 'E:\\robo\\src\\robomongo\\'
|
||||
# root_dir = 'E:\\robo\\src\\robomongo\\shell\\bson\\' # for testing
|
||||
print('Processing all source files in root & sub directories...')
|
||||
print('Root Dir:', root_dir)
|
||||
print('---------------------------------------------------------')
|
||||
for path, subdirs, files in os.walk(root_dir):
|
||||
for name in files:
|
||||
if name.endswith(('.h', '.cpp')):
|
||||
file = os.path.join(path, name)
|
||||
print(file)
|
||||
force_warning_level_3(file)
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
|
||||
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
|
||||
|
||||
VERSION="$(echo $1 | tr '[A-Z]' '[a-z]')"
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "Usage: tag <name>"
|
||||
echo "Example: tag 0.9.0-rc9"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then
|
||||
echo "Error: You are not on master branch"
|
||||
exit
|
||||
fi
|
||||
|
||||
cd $PROJECT_DIR
|
||||
git tag -a "v${VERSION}" -m "${VERSION}"
|
||||
git push --tags
|
||||
@@ -1,39 +0,0 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem -----------------------------------
|
||||
rem - Configuration
|
||||
rem -----------------------------------
|
||||
rem arch_bit is a first arg
|
||||
|
||||
call :createPackage build_nsis NSIS
|
||||
call :createPackage build_zip ZIP
|
||||
goto :eof
|
||||
|
||||
:createPackage
|
||||
setlocal
|
||||
set dir_path=%1
|
||||
set cpack_generator=%2
|
||||
if exist %dir_path% rmdir %dir_path% /s /q
|
||||
mkdir %dir_path%
|
||||
cd %dir_path%
|
||||
|
||||
if exist "%programfiles%\Microsoft Visual Studio 11.0" (
|
||||
cmake ../../ -G "Visual Studio 11" -DCPACK_GENERATOR=%cpack_generator%
|
||||
) else (
|
||||
if exist "%programfiles%\Microsoft Visual Studio 10.0" (
|
||||
cmake ../../ -G "Visual Studio 10" -DCPACK_GENERATOR=%cpack_generator%
|
||||
) else (
|
||||
echo Error Visual Studio not founded.
|
||||
cd ../
|
||||
if exist %dir_path% rmdir %dir_path% /s /q
|
||||
goto:eof
|
||||
)
|
||||
)
|
||||
|
||||
cmake --build . --target install --config Release
|
||||
cpack
|
||||
cd ../
|
||||
endlocal
|
||||
goto:eof
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
createPackage() {
|
||||
dir_path="$1"
|
||||
cpack_generator="$2"
|
||||
if [ -d "$dir_path" ]; then
|
||||
rm -rf "$dir_path"
|
||||
fi
|
||||
mkdir "$dir_path"
|
||||
cd "$dir_path"
|
||||
cmake ../../ -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RELEASE -DCPACK_GENERATOR="$cpack_generator" -DOPENSSL_USE_STATIC=1
|
||||
make install
|
||||
cpack -G "$cpack_generator"
|
||||
if [ "$cpack_generator" = 'DEB' ]; then
|
||||
sh ./fixup_deb.sh
|
||||
fi
|
||||
cd ../
|
||||
}
|
||||
|
||||
unamestr=`uname`
|
||||
|
||||
if [ "$unamestr" = 'Linux' ]; then
|
||||
createPackage build_deb DEB
|
||||
createPackage build_rpm RPM
|
||||
createPackage build_tar TGZ
|
||||
elif [ "$unamestr" = 'Darwin' ]; then
|
||||
createPackage build_dmg DragNDrop
|
||||
createPackage build_zip ZIP
|
||||
fi
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem -----------------------------------
|
||||
rem - Configuration
|
||||
rem -----------------------------------
|
||||
rem arch_bit is a first arg
|
||||
|
||||
set dir_path=build_releases
|
||||
if exist %dir_path% rmdir %dir_path% /s /q
|
||||
mkdir %dir_path%
|
||||
cd %dir_path%
|
||||
|
||||
call :createPackage NSIS
|
||||
call :createPackage ZIP
|
||||
goto :eof
|
||||
|
||||
:createPackage
|
||||
setlocal
|
||||
set cpack_generator=%1
|
||||
if exist "%programfiles%\Microsoft Visual Studio 11.0" (
|
||||
cmake ../../ -G "Visual Studio 11" -DCPACK_GENERATOR=%cpack_generator%
|
||||
) else (
|
||||
if exist "%programfiles%\Microsoft Visual Studio 10.0" (
|
||||
cmake ../../ -G "Visual Studio 10" -DCPACK_GENERATOR=%cpack_generator%
|
||||
) else (
|
||||
echo Error Visual Studio not founded.
|
||||
cd ../
|
||||
if exist %dir_path% rmdir %dir_path% /s /q
|
||||
goto:eof
|
||||
)
|
||||
)
|
||||
|
||||
cmake --build . --target install --config Release
|
||||
cpack
|
||||
endlocal
|
||||
goto:eof
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
createPackage() {
|
||||
cpack_generator="$1"
|
||||
cmake ../../ -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RELEASE -DCPACK_GENERATOR="$cpack_generator" -DOPENSSL_USE_STATIC=1
|
||||
# make install
|
||||
cpack -G "$cpack_generator"
|
||||
if [ "$cpack_generator" = 'DEB' ]; then
|
||||
sh ./fixup_deb.sh
|
||||
fi
|
||||
}
|
||||
|
||||
unamestr=`uname`
|
||||
dir_path=build_releases
|
||||
if [ -d "$dir_path" ]; then
|
||||
rm -rf "$dir_path"
|
||||
fi
|
||||
mkdir "$dir_path"
|
||||
cd "$dir_path"
|
||||
|
||||
if [ "$unamestr" = 'Linux' ]; then
|
||||
createPackage DEB
|
||||
createPackage RPM
|
||||
createPackage TGZ
|
||||
elif [ "$unamestr" = 'Darwin' ]; then
|
||||
createPackage DragNDrop
|
||||
createPackage ZIP
|
||||
fi
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem -----------------------------------
|
||||
rem - Configuration
|
||||
rem -----------------------------------
|
||||
rem remove target folder
|
||||
|
||||
call :deleteDir build_nsis
|
||||
call :deleteDir build_zip
|
||||
goto :eof
|
||||
|
||||
:deleteDir
|
||||
setlocal
|
||||
set dir_path=%1
|
||||
if exist %dir_path% rmdir %dir_path% /s /q
|
||||
if %ERRORLEVEL% neq 0 (
|
||||
echo.
|
||||
echo Error when removing !TARGET!.
|
||||
exit /b 1
|
||||
pause
|
||||
)
|
||||
endlocal
|
||||
goto:eof
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
deleteDir() {
|
||||
dir_path="$1"
|
||||
if [ -d "$dir_path" ]; then
|
||||
rm -rf "$dir_path"
|
||||
fi
|
||||
}
|
||||
|
||||
unamestr=`uname`
|
||||
|
||||
if [ "$unamestr"=='Linux' ]; then
|
||||
deleteDir build_deb
|
||||
deleteDir build_rpm
|
||||
deleteDir build_tar
|
||||
elif [ "$unamestr"=='Darwin' ]; then
|
||||
deleteDir build_dmg
|
||||
deleteDir build_zip
|
||||
fi
|
||||
@@ -1,23 +0,0 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem -----------------------------------
|
||||
rem - Configuration
|
||||
rem -----------------------------------
|
||||
rem remove target folder
|
||||
|
||||
call :deleteDir build_releases
|
||||
goto :eof
|
||||
|
||||
:deleteDir
|
||||
setlocal
|
||||
set dir_path=%1
|
||||
if exist %dir_path% rmdir %dir_path% /s /q
|
||||
if %ERRORLEVEL% neq 0 (
|
||||
echo.
|
||||
echo Error when removing !TARGET!.
|
||||
exit /b 1
|
||||
pause
|
||||
)
|
||||
endlocal
|
||||
goto:eof
|
||||
@@ -1,13 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
deleteDir() {
|
||||
dir_path="$1"
|
||||
if [ -d "$dir_path" ]; then
|
||||
rm -rf "$dir_path"
|
||||
fi
|
||||
}
|
||||
|
||||
unamestr=`uname`
|
||||
|
||||
deleteDir build_releases
|
||||
@@ -1,9 +0,0 @@
|
||||
@echo off
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
rem -----------------------------------
|
||||
rem - Configuration
|
||||
rem -----------------------------------
|
||||
|
||||
call clean.bat %arch_bit%
|
||||
call build.bat %arch_bit%
|
||||
@@ -1,8 +0,0 @@
|
||||
# ****************
|
||||
# Configuration
|
||||
# ****************
|
||||
|
||||
|
||||
# clean and build
|
||||
./clean.sh $@
|
||||
./build.sh $@
|
||||
@@ -0,0 +1,169 @@
|
||||
#
|
||||
# Find the MongoDB libraries
|
||||
#
|
||||
# This module defines the following variables:
|
||||
# MongoDB_FOUND
|
||||
# MongoDB_LIBS
|
||||
# MongoDB_INCLUDE_DIRS
|
||||
# MongoDB_DEFINITIONS
|
||||
#
|
||||
# Imported target "mongodb" is created
|
||||
#
|
||||
# We assume, that at least "mongo" target was build by the following command:
|
||||
# $ scons mongo
|
||||
#
|
||||
#
|
||||
|
||||
# Try to find MongoDB directory (uses CMAKE_PREFIX_PATH locations)
|
||||
find_path(
|
||||
MongoDB_DIR src/mongo/config.h.in
|
||||
DOC "Path to MongoDB (github.com/robomongo-shell) root directory"
|
||||
)
|
||||
|
||||
# Find relative path to build directory
|
||||
if(BUILD_RELEASE OR BUILD_RELWITHDEBINFO OR BUILD_MINSIZEREL)
|
||||
set(MongoDB_RELATIVE_BUILD_DIR build/opt)
|
||||
set(MongoDB_OBJECT_LIST_BUILD_TYPE_PART release)
|
||||
elseif(BUILD_DEBUG)
|
||||
set(MongoDB_RELATIVE_BUILD_DIR build/debug)
|
||||
set(MongoDB_OBJECT_LIST_BUILD_TYPE_PART debug)
|
||||
endif()
|
||||
|
||||
# Set absolute path to build directory
|
||||
set(MongoDB_BUILD_DIR ${MongoDB_DIR}/${MongoDB_RELATIVE_BUILD_DIR})
|
||||
|
||||
# Set commong compiler definitons
|
||||
set(MongoDB_DEFINITIONS
|
||||
PCRE_STATIC
|
||||
BOOST_THREAD_VERSION=4
|
||||
BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD
|
||||
BOOST_THREAD_NO_DEPRECATED
|
||||
BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
|
||||
BOOST_THREAD_HAS_BUG
|
||||
MONGO_CONFIG_HAVE_HEADER_UNISTD_H
|
||||
# Suppress "warning C4996: std::allocator..." from third_party\abseil-cpp-master
|
||||
_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING
|
||||
# Suppress "warning C4996: std::iterator..." from third_party\mozjs-60
|
||||
_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING
|
||||
)
|
||||
|
||||
# Set common compiler include directories
|
||||
set(MOZJS_VER mozjs-60)
|
||||
set(MongoDB_INCLUDE_DIRS
|
||||
${MongoDB_DIR}/src
|
||||
${MongoDB_DIR}/src/third_party/abseil-cpp-master/abseil-cpp
|
||||
${MongoDB_DIR}/src/third_party/boost-1.70.0
|
||||
${MongoDB_DIR}/src/third_party/fmt/dist/include
|
||||
${MongoDB_DIR}/src/third_party/${MOZJS_VER}/include
|
||||
${MongoDB_DIR}/src/third_party/${MOZJS_VER}/mongo_sources
|
||||
${MongoDB_DIR}/src/third_party/pcre-8.42
|
||||
${MongoDB_DIR}/src/third_party/SafeInt
|
||||
${MongoDB_BUILD_DIR}
|
||||
)
|
||||
|
||||
if(SYSTEM_LINUX)
|
||||
set(MongoDB_OBJECT_LIST_PLATFORM_PART linux)
|
||||
list(APPEND MongoDB_INCLUDE_DIRS
|
||||
${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/linux/include)
|
||||
elseif(SYSTEM_WINDOWS)
|
||||
set(MongoDB_OBJECT_LIST_PLATFORM_PART windows)
|
||||
list(APPEND MongoDB_INCLUDE_DIRS
|
||||
${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/windows/include)
|
||||
elseif(SYSTEM_MACOSX)
|
||||
set(MongoDB_OBJECT_LIST_PLATFORM_PART macosx)
|
||||
list(APPEND MongoDB_INCLUDE_DIRS
|
||||
${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/macOS/include)
|
||||
elseif(SYSTEM_FREEBSD)
|
||||
set(MongoDB_OBJECT_LIST_PLATFORM_PART freebsd)
|
||||
list(APPEND MongoDB_INCLUDE_DIRS
|
||||
${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/freebsd/include)
|
||||
elseif(SYSTEM_OPENBSD)
|
||||
set(MongoDB_OBJECT_LIST_PLATFORM_PART openbsd)
|
||||
list(APPEND MongoDB_INCLUDE_DIRS
|
||||
${MongoDB_DIR}/src/third_party/${MOZJS_VER}/platform/x86_64/openbsd/include)
|
||||
endif()
|
||||
|
||||
# Read list of object files
|
||||
# See "mongodb/README.md" file (relative to the current folder) for more information.
|
||||
file(READ
|
||||
${CMAKE_CURRENT_LIST_DIR}/mongodb/${MongoDB_OBJECT_LIST_PLATFORM_PART}-${MongoDB_OBJECT_LIST_BUILD_TYPE_PART}.objects
|
||||
MongoDB_RELATIVE_LIBS)
|
||||
|
||||
string(STRIP "${MongoDB_RELATIVE_LIBS}" MongoDB_RELATIVE_LIBS)
|
||||
|
||||
# Convert string to list
|
||||
string(REPLACE " " ";" MongoDB_RELATIVE_LIBS ${MongoDB_RELATIVE_LIBS})
|
||||
|
||||
# todo: Find a better solution
|
||||
# Robo 1.4: Added as workaround fix for build error:
|
||||
# fatal error LNK1170: line in command file contains 131071 or more characters
|
||||
# Happens when the path of robo-shell is a long string (e.g. "E:/user/code/robomongo-shell")
|
||||
set(MongoDB_OBJECTS_DIR_ENV $ENV{MongoDB_OBJECTS})
|
||||
if(MongoDB_OBJECTS_DIR_ENV)
|
||||
set(MongoDB_OBJECTS_DIR ${MongoDB_OBJECTS_DIR_ENV})
|
||||
else()
|
||||
set(MongoDB_OBJECTS_DIR ${MongoDB_DIR})
|
||||
endif()
|
||||
|
||||
# Convert to absolute path
|
||||
foreach(lib ${MongoDB_RELATIVE_LIBS})
|
||||
list(APPEND MongoDB_LIBS ${MongoDB_OBJECTS_DIR}/${lib})
|
||||
endforeach()
|
||||
|
||||
if(SYSTEM_WINDOWS)
|
||||
list(APPEND MongoDB_LIBS Crypt32.lib Secur32.lib Dnsapi.lib winhttp.lib)
|
||||
elseif(SYSTEM_MACOSX)
|
||||
list(APPEND MongoDB_LIBS -lcurl)
|
||||
elseif(SYSTEM_LINUX)
|
||||
list(APPEND MongoDB_LIBS -lresolv -lcurl)
|
||||
endif()
|
||||
|
||||
# Get MongoDB repository recent tag
|
||||
execute_process(
|
||||
COMMAND git describe --abbrev=0 --tags
|
||||
WORKING_DIRECTORY ${MongoDB_DIR}
|
||||
OUTPUT_VARIABLE MongoDB_RECENT_TAG
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# Handle the QUIETLY and REQUIRED arguments and set ALSA_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MongoDB
|
||||
FOUND_VAR MongoDB_FOUND # When using CMake 3.0 MONGODB_FOUND variable will be created.
|
||||
# Make it explicit that variable name is MongoDB_FOUND.
|
||||
REQUIRED_VARS MongoDB_DIR MongoDB_BUILD_DIR
|
||||
VERSION_VAR MongoDB_RECENT_TAG
|
||||
FAIL_MESSAGE "Could not find Robomongo Shell (MongoDB fork). Make sure that CMAKE_PREFIX_PATH points to Robomongo Shell project root.\n")
|
||||
|
||||
if(MongoDB_FOUND)
|
||||
set(MongoDB_VERSION ${MongoDB_RECENT_TAG})
|
||||
|
||||
# Original MongoDB link command has the following in the end: m rt dl
|
||||
set(MongoDB_LIBS
|
||||
${LINK_WHOLE_ARCHIVE_START} # Linux: -Wl,--whole-archive
|
||||
${LINK_LIBGROUP_START} # Linux: -Wl,--start-group
|
||||
${MongoDB_LIBS}
|
||||
${LINK_LIBGROUP_END} # Linux: -Wl,--end-group
|
||||
${LINK_WHOLE_ARCHIVE_END} # Linux: -Wl,--no-whole-archive
|
||||
${CMAKE_DL_LIBS} # Linux: dl
|
||||
)
|
||||
|
||||
# Add imported target
|
||||
add_library(mongodb INTERFACE IMPORTED)
|
||||
|
||||
# Specify INTERFACE properties for this target
|
||||
set_target_properties(mongodb PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "${MongoDB_LIBS}"
|
||||
INTERFACE_COMPILE_DEFINITIONS "${MongoDB_DEFINITIONS}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${MongoDB_INCLUDE_DIRS}"
|
||||
)
|
||||
|
||||
endif()
|
||||
|
||||
# Cleanup
|
||||
unset(MongoDB_OBJECT_LIST_BUILD_TYPE_PART)
|
||||
unset(MongoDB_OBJECT_LIST_PLATFORM_PART)
|
||||
unset(MongoDB_RELATIVE_BUILD_DIR)
|
||||
unset(MongoDB_RELATIVE_LIBS)
|
||||
unset(MongoDB_RECENT_TAG)
|
||||
+55
-288
@@ -1,275 +1,27 @@
|
||||
# - Try to find the OpenSSL encryption library
|
||||
# Once done this will define
|
||||
##################################################
|
||||
# Find and Add OpenSSL shared (dynamic) library
|
||||
#
|
||||
# - This module defines the following variables:
|
||||
# OpenSSL_DIR
|
||||
# OPENSSL_VERSION
|
||||
#
|
||||
# OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
|
||||
# - Imported shared(dynamic) libraries "ssl" and "crypto" are created.
|
||||
#
|
||||
# Read-Only variables:
|
||||
# OPENSSL_FOUND - system has the OpenSSL library
|
||||
# OPENSSL_INCLUDE_DIR - the OpenSSL include directory
|
||||
# OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
|
||||
# OPENSSL_VERSION - This is set to $major.$minor.$revision$path (eg. 0.9.8s)
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2006-2009 Kitware, Inc.
|
||||
# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
|
||||
# Copyright 2009-2011 Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||
# - It is assumed that OpenSSL has been built and path to OpenSSL build directory is
|
||||
# added into system(environment) variable ROBOMONGO_CMAKE_PREFIX_PATH.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
##################################################
|
||||
|
||||
if (UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_check_modules(_OPENSSL QUIET openssl)
|
||||
endif ()
|
||||
|
||||
if (WIN32)
|
||||
# http://www.slproweb.com/products/Win32OpenSSL.html
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
|
||||
set(_OPENSSL_ROOT_PATHS
|
||||
"${_programfiles}/OpenSSL"
|
||||
"${_programfiles}/OpenSSL-Win32"
|
||||
"${_programfiles}/OpenSSL-Win64"
|
||||
"C:/OpenSSL/"
|
||||
"C:/OpenSSL-Win32/"
|
||||
"C:/OpenSSL-Win64/"
|
||||
)
|
||||
unset(_programfiles)
|
||||
set(_OPENSSL_ROOT_HINTS_AND_PATHS
|
||||
HINTS ${_OPENSSL_ROOT_HINTS}
|
||||
PATHS ${_OPENSSL_ROOT_PATHS}
|
||||
)
|
||||
else ()
|
||||
set(_OPENSSL_ROOT_HINTS
|
||||
${OPENSSL_ROOT_DIR}
|
||||
ENV OPENSSL_ROOT_DIR
|
||||
)
|
||||
endif ()
|
||||
|
||||
find_path(OPENSSL_INCLUDE_DIR
|
||||
NAMES
|
||||
openssl/ssl.h
|
||||
HINTS
|
||||
${_OPENSSL_INCLUDEDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
# Try to find OpenSSL directory (uses CMAKE_PREFIX_PATH locations)
|
||||
#-------------------------------------------
|
||||
find_path(
|
||||
OpenSSL_DIR include/openssl/ssl.h
|
||||
DOC "Path to OpenSSL (github.com/openssl/openssl) root directory"
|
||||
)
|
||||
|
||||
if(WIN32 AND NOT CYGWIN)
|
||||
if(MSVC)
|
||||
# /MD and /MDd are the standard values - if someone wants to use
|
||||
# others, the libnames have to change here too
|
||||
# use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
|
||||
# TODO: handle /MT and static lib
|
||||
# In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
|
||||
# * MD for dynamic-release
|
||||
# * MDd for dynamic-debug
|
||||
# * MT for static-release
|
||||
# * MTd for static-debug
|
||||
|
||||
# Implementation details:
|
||||
# We are using the libraries located in the VC subdir instead of the parent directory eventhough :
|
||||
# libeay32MD.lib is identical to ../libeay32.lib, and
|
||||
# ssleay32MD.lib is identical to ../ssleay32.lib
|
||||
find_library(LIB_EAY_DEBUG
|
||||
NAMES
|
||||
libeay32MDd
|
||||
libeay32d
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
find_library(LIB_EAY_RELEASE
|
||||
NAMES
|
||||
libeay32MD
|
||||
libeay32
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
find_library(SSL_EAY_DEBUG
|
||||
NAMES
|
||||
ssleay32MDd
|
||||
ssleay32d
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
find_library(SSL_EAY_RELEASE
|
||||
NAMES
|
||||
ssleay32MD
|
||||
ssleay32
|
||||
ssl
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"VC"
|
||||
"lib/VC"
|
||||
)
|
||||
|
||||
set(LIB_EAY_LIBRARY_DEBUG "${LIB_EAY_DEBUG}")
|
||||
set(LIB_EAY_LIBRARY_RELEASE "${LIB_EAY_RELEASE}")
|
||||
set(SSL_EAY_LIBRARY_DEBUG "${SSL_EAY_DEBUG}")
|
||||
set(SSL_EAY_LIBRARY_RELEASE "${SSL_EAY_RELEASE}")
|
||||
|
||||
include(SelectLibraryConfigurations)
|
||||
select_library_configurations(LIB_EAY)
|
||||
select_library_configurations(SSL_EAY)
|
||||
|
||||
set( OPENSSL_LIBRARIES ${SSL_EAY_LIBRARY} ${LIB_EAY_LIBRARY} )
|
||||
elseif(MINGW)
|
||||
# same player, for MinGW
|
||||
set(LIB_EAY_NAMES libeay32)
|
||||
set(SSL_EAY_NAMES ssleay32)
|
||||
if(CMAKE_CROSS_COMPILING)
|
||||
list(APPEND LIB_EAY_NAMES crypto)
|
||||
list(APPEND SSL_EAY_NAMES ssl)
|
||||
endif()
|
||||
find_library(LIB_EAY
|
||||
NAMES
|
||||
${LIB_EAY_NAMES}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"lib/MinGW"
|
||||
)
|
||||
|
||||
find_library(SSL_EAY
|
||||
NAMES
|
||||
${SSL_EAY_NAMES}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"lib/MinGW"
|
||||
)
|
||||
|
||||
mark_as_advanced(SSL_EAY LIB_EAY)
|
||||
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
|
||||
unset(LIB_EAY_NAMES)
|
||||
unset(SSL_EAY_NAMES)
|
||||
else()
|
||||
# Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
|
||||
find_library(LIB_EAY
|
||||
NAMES
|
||||
libeay32
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
find_library(SSL_EAY
|
||||
NAMES
|
||||
ssleay32
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
mark_as_advanced(SSL_EAY LIB_EAY)
|
||||
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
|
||||
endif()
|
||||
else()
|
||||
if(OPENSSL_USE_STATIC)
|
||||
find_library(OPENSSL_SSL_LIBRARY
|
||||
NAMES
|
||||
libssl.a
|
||||
libssleay32.a
|
||||
libssleay32MD.a
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
find_library(OPENSSL_CRYPTO_LIBRARY
|
||||
NAMES
|
||||
libcrypto.a
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
#zlib
|
||||
set(STATIC_ZLIB_SEARCHES)
|
||||
|
||||
# Normal search.
|
||||
set(STATIC_ZLIB_SEARCH_NORMAL
|
||||
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
|
||||
"$ENV{PROGRAMFILES}/zlib"
|
||||
)
|
||||
list(APPEND STATIC_ZLIB_SEARCHES STATIC_ZLIB_SEARCH_NORMAL)
|
||||
|
||||
set(STATIC_ZLIB_NAMES libz.a libzlib.a libzdll.a libzlib1.a libzlibd.a libzlibd1.a)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${STATIC_ZLIB_SEARCHES})
|
||||
find_library(STATIC_ZLIB_LIBRARY NAMES ${STATIC_ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
|
||||
if(STATIC_ZLIB_LIBRARY)
|
||||
set(OPENSSL_LIBRARIES ${STATIC_ZLIB_LIBRARY})
|
||||
endif(STATIC_ZLIB_LIBRARY)
|
||||
|
||||
endif(OPENSSL_USE_STATIC)
|
||||
find_library(OPENSSL_SSL_LIBRARY
|
||||
NAMES
|
||||
ssl
|
||||
ssleay32
|
||||
ssleay32MD
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
find_library(OPENSSL_CRYPTO_LIBRARY
|
||||
NAMES
|
||||
crypto
|
||||
HINTS
|
||||
${_OPENSSL_LIBDIR}
|
||||
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
|
||||
|
||||
# compat defines
|
||||
set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
|
||||
set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
|
||||
|
||||
set(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
|
||||
endif()
|
||||
# Find OpenSSL version
|
||||
#-------------------------------------------
|
||||
set (OPENSSL_INCLUDE_DIR "${OpenSSL_DIR}/include")
|
||||
|
||||
function(from_hex HEX DEC)
|
||||
string(TOUPPER "${HEX}" HEX)
|
||||
@@ -303,11 +55,9 @@ function(from_hex HEX DEC)
|
||||
endfunction()
|
||||
|
||||
if (OPENSSL_INCLUDE_DIR)
|
||||
if (_OPENSSL_VERSION)
|
||||
set(OPENSSL_VERSION "${_OPENSSL_VERSION}")
|
||||
elseif(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
|
||||
if(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
|
||||
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
|
||||
REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
|
||||
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
|
||||
|
||||
# The version number is encoded as 0xMNNFFPPS: major minor fix patch status
|
||||
# The status gives if this is a developer or prerelease and is ignored here.
|
||||
@@ -340,23 +90,40 @@ if (OPENSSL_INCLUDE_DIR)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
if (OPENSSL_VERSION)
|
||||
find_package_handle_standard_args(OpenSSL
|
||||
REQUIRED_VARS
|
||||
OPENSSL_LIBRARIES
|
||||
OPENSSL_INCLUDE_DIR
|
||||
VERSION_VAR
|
||||
OPENSSL_VERSION
|
||||
FAIL_MESSAGE
|
||||
"Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
|
||||
)
|
||||
else ()
|
||||
find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
|
||||
OPENSSL_LIBRARIES
|
||||
OPENSSL_INCLUDE_DIR
|
||||
)
|
||||
endif ()
|
||||
# Add imported ssl and crypto libraries
|
||||
#-------------------------------------------
|
||||
|
||||
# Add imported target ssl (ssleay32)
|
||||
add_library(ssl SHARED IMPORTED)
|
||||
|
||||
mark_as_advanced(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
|
||||
# Add imported target for crypto (libeay32)
|
||||
add_library(crypto SHARED IMPORTED)
|
||||
|
||||
# todo: refactor
|
||||
if(SYSTEM_WINDOWS)
|
||||
set_target_properties(ssl PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
|
||||
IMPORTED_IMPLIB "${OpenSSL_DIR}/libssl.lib"
|
||||
)
|
||||
set_target_properties(crypto PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
|
||||
IMPORTED_IMPLIB "${OpenSSL_DIR}/libcrypto.lib"
|
||||
)
|
||||
else()
|
||||
if(SYSTEM_MACOSX)
|
||||
SET(EXT "dylib")
|
||||
elseif(SYSTEM_LINUX)
|
||||
SET(EXT "so")
|
||||
endif()
|
||||
set_target_properties(ssl PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
|
||||
IMPORTED_LOCATION "${OpenSSL_DIR}/libssl.${EXT}"
|
||||
)
|
||||
set_target_properties(crypto PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
|
||||
IMPORTED_LOCATION "${OpenSSL_DIR}/libcrypto.${EXT}"
|
||||
)
|
||||
endif()
|
||||
|
||||
# End of file
|
||||
@@ -0,0 +1,21 @@
|
||||
# This wrapper is created in order to support CMake 3.0
|
||||
# Only starting from CMake 3.1 "Threads" module exports
|
||||
# "Threads::Threads" target.
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# Support for CMake 3.0
|
||||
# Export "Threads::Threads" imported target if it wasn't exported.
|
||||
# This lines are taken from the "FindThreads.cmake" of CMake 3.1:
|
||||
# https://github.com/Kitware/CMake/blob/v3.1.0/Modules/FindThreads.cmake
|
||||
if(THREADS_FOUND AND NOT TARGET Threads::Threads)
|
||||
add_library(Threads::Threads INTERFACE IMPORTED)
|
||||
|
||||
if(THREADS_HAVE_PTHREAD_ARG)
|
||||
set_property(TARGET Threads::Threads PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
|
||||
endif()
|
||||
|
||||
if(CMAKE_THREAD_LIBS_INIT)
|
||||
set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,32 @@
|
||||
# Put the include dirs which are in the source or build tree
|
||||
# before all other include dirs, so the headers in the sources
|
||||
# are prefered over the already installed ones
|
||||
# Since cmake 2.4.1
|
||||
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
|
||||
|
||||
# Use colored output
|
||||
# Since cmake 2.4.0
|
||||
set(CMAKE_COLOR_MAKEFILE ON)
|
||||
|
||||
# MongoDB compiled with this option
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# This variable is used by CMake "FindThreads" module
|
||||
# From documentation to FindThreads module:
|
||||
# > Please note that the compiler flag can only be
|
||||
# > used with the imported target. Use of both the imported
|
||||
# > target as well as this switch is highly recommended for new code.
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
|
||||
# Set the default build type to release with debug info
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE RelWithDebInfo
|
||||
CACHE STRING "Choose the type of build, options are: Debug, Release, RelWithDebInfo, MinSizeRel and None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used)"
|
||||
FORCE)
|
||||
endif()
|
||||
|
||||
# Do not use Qt moc, uic and rcc by default
|
||||
# Since CMake 2.8.6
|
||||
set(CMAKE_AUTOMOC OFF)
|
||||
set(CMAKE_AUTORCC OFF)
|
||||
set(CMAKE_AUTOUIC OFF)
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
set(ROBOMONGO_DISPLAY_NAME "Robo 3T")
|
||||
set(ROBOMONGO_DISPLAY_FULL_NAME "Robo 3T ${PROJECT_VERSION}")
|
||||
@@ -0,0 +1,63 @@
|
||||
# Set MONGO_BUILD_FOLDER
|
||||
set(MONGO_BUILD_FOLDER "build/opt") # Release
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(MONGO_BUILD_FOLDER "build/debug")
|
||||
endif()
|
||||
|
||||
# Show configuration summary and build tip
|
||||
message("")
|
||||
message(" _______________[ Robo 3T configuration summary ]________________")
|
||||
message("| ")
|
||||
message("|-- Dependencies:")
|
||||
message("| ")
|
||||
message("| Qt5 Core: ${Qt5Core_VERSION} ${Qt5Core_DIR}")
|
||||
message("| Qt5 Gui: ${Qt5Gui_VERSION} ${Qt5Gui_DIR}")
|
||||
message("| Qt5 Widgets: ${Qt5Widgets_VERSION} ${Qt5Widgets_DIR}")
|
||||
message("| Qt5 PrintSupport: ${Qt5Widgets_VERSION} ${Qt5PrintSupport_DIR}")
|
||||
message("| Qt5 Network: ${Qt5Network_VERSION} ${Qt5Network_DIR}")
|
||||
message("| Qt5 Xml: ${Qt5Xml_VERSION} ${Qt5Xml_DIR}")
|
||||
if(NOT SYSTEM_LINUX)
|
||||
message("| Qt5 WebEng*Widgets: ${Qt5WebEngineWidgets_VERSION} ${Qt5WebEngineWidgets_DIR}")
|
||||
endif()
|
||||
message("| MongoDB: ${MongoDB_VERSION} ${MongoDB_DIR}")
|
||||
message("| MongoDB Objects: ${MongoDB_VERSION} ${MongoDB_OBJECTS_DIR}/${MONGO_BUILD_FOLDER}")
|
||||
message("| OpenSSL: ${OPENSSL_VERSION} ${OpenSSL_DIR}")
|
||||
message("| libssh2: ${LIBSSH2_VERSION} ${LIBSSH2_DIR}")
|
||||
message("| QJson: ${QJSON_VERSION} ${QJSON_DIR}")
|
||||
message("| QScintilla: ${QSCINTILLA_VERSION} ${QSCINTILLA_DIR}")
|
||||
message("| Google Test: ${GOOGLE_TEST_VERSION} ${GOOGLE_TEST_DIR}")
|
||||
message("| ESPRIMA: ${ESPRIMA_VERSION} ${ESPRIMA_DIR}")
|
||||
message("|")
|
||||
message("|-- Summary:")
|
||||
message("|")
|
||||
message("| Version: ${PROJECT_VERSION}")
|
||||
message("| System: ${CMAKE_SYSTEM_NAME}")
|
||||
if (SYSTEM_MACOSX)
|
||||
message("| Target SDK: ${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
endif()
|
||||
message("| Build type: ${CMAKE_BUILD_TYPE}")
|
||||
message("| Commit: ${BUILD_NUMBER}")
|
||||
message("| Install path: ${CMAKE_INSTALL_PREFIX}")
|
||||
message("|")
|
||||
message("|-- Build, Run and Install:")
|
||||
message("| ")
|
||||
message("| $ bin/build")
|
||||
message("| $ bin/run")
|
||||
message("| $ bin/install")
|
||||
message("|")
|
||||
message("|-- Run Unit Tests:")
|
||||
message("| ")
|
||||
message("| $ bin/build-and-run-tests")
|
||||
message("| $ bin/run-tests")
|
||||
message("|")
|
||||
message("|-- Run Static Code Analysis:")
|
||||
message("|")
|
||||
if (SYSTEM_WINDOWS)
|
||||
message("| $ bin/run-cppcheck <FILE_PATH OR DIR> (Default: /src/robomongo/)")
|
||||
message("| $ bin/run-vs-code-analysis")
|
||||
else()
|
||||
message("| $ bin/run-clang-tidy")
|
||||
message("| $ bin/run-scan-build")
|
||||
endif()
|
||||
message("|__________________________________________________________________")
|
||||
message("")
|
||||
@@ -0,0 +1,78 @@
|
||||
# This files defines:
|
||||
#
|
||||
# 1) Platform checks
|
||||
#
|
||||
# SYSTEM_MACOSX
|
||||
# SYSTEM_WINDOWS
|
||||
# SYSTEM_LINUX
|
||||
# SYSTEM_FREEBSD
|
||||
# SYSTEM_OPENBSD
|
||||
# SYSTEM_NETBSD
|
||||
#
|
||||
# 2) Build types checks
|
||||
#
|
||||
# BUILD_DEBUG
|
||||
# BUILD_RELEASE
|
||||
# BUILD_RELWITHDEBINFO
|
||||
# BUILD_MINSIZEREL
|
||||
#
|
||||
# 3) Link "lib groups" and "whole-archive" options
|
||||
#
|
||||
# LINK_LIBGROUP_START
|
||||
# LINK_LIBGROUP_END
|
||||
# LINK_WHOLE_ARCHIVE_START
|
||||
# LINK_WHOLE_ARCHIVE_END
|
||||
|
||||
# Platform checks
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
set(SYSTEM_MACOSX TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
set(SYSTEM_WINDOWS TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(SYSTEM_LINUX TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
set(SYSTEM_FREEBSD TRUE)
|
||||
set(SYSTEM_BSD TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
|
||||
set(SYSTEM_OPENBSD TRUE)
|
||||
set(SYSTEM_BSD TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
|
||||
set(SYSTEM_NETBSD TRUE)
|
||||
set(SYSTEM_BSD TRUE)
|
||||
endif()
|
||||
|
||||
# Build types
|
||||
if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
|
||||
set(BUILD_DEBUG TRUE)
|
||||
elseif("${CMAKE_BUILD_TYPE}" MATCHES "Release")
|
||||
set(BUILD_RELEASE TRUE)
|
||||
elseif("${CMAKE_BUILD_TYPE}" MATCHES "RelWithDebInfo")
|
||||
set(BUILD_RELWITHDEBINFO TRUE)
|
||||
elseif("${CMAKE_BUILD_TYPE}" MATCHES "MinSizeRel")
|
||||
set(BUILD_MINSIZEREL TRUE)
|
||||
endif()
|
||||
|
||||
# Compiler checks
|
||||
# We check Clang using MATCH instead of strict equality, because as of CMake 3.0.0 the
|
||||
# CMAKE_<LANG>_COMPILER_ID value for Apple-provided Clang is AppleClang. To test
|
||||
# for both the Apple-provided Clang and the regular Clang we use MATCH.
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(COMPILER_CLANG TRUE)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "^GNU$")
|
||||
set(COMPILER_GCC TRUE)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "^MSVC$")
|
||||
set(COMPILER_MSVC TRUE)
|
||||
endif()
|
||||
|
||||
# Link "groups" and "whole-archive" options
|
||||
if(SYSTEM_LINUX OR SYSTEM_FREEBSD OR SYSTEM_OPENBSD)
|
||||
set(LINK_LIBGROUP_START -Wl,--start-group)
|
||||
set(LINK_LIBGROUP_END -Wl,--end-group)
|
||||
set(LINK_WHOLE_ARCHIVE_START -Wl,--whole-archive)
|
||||
set(LINK_WHOLE_ARCHIVE_END -Wl,--no-whole-archive)
|
||||
elseif(SYSTEM_MACOSX)
|
||||
set(LINK_LIBGROUP_START "")
|
||||
set(LINK_LIBGROUP_END "")
|
||||
set(LINK_WHOLE_ARCHIVE_START -Wl,-all_load)
|
||||
set(LINK_WHOLE_ARCHIVE_END -Wl,-noall_load)
|
||||
endif()
|
||||
@@ -0,0 +1,159 @@
|
||||
# Note for maintainers
|
||||
# --------------------
|
||||
#
|
||||
# Do not use absolute paths in DESTINATION arguments for install() command.
|
||||
# Because the same install code will be executed again by CPack. And CPack will
|
||||
# change internally CMAKE_INSTALL_PREFIX to point to some temporary folder
|
||||
# for package content.
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
# Temporary change
|
||||
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install"
|
||||
CACHE STRING "Install path prefix, prepended onto install directories"
|
||||
FORCE)
|
||||
|
||||
if(SYSTEM_LINUX)
|
||||
set(bin_dir bin)
|
||||
set(lib_dir lib)
|
||||
set(resources_dir share)
|
||||
set(license_dir .)
|
||||
|
||||
set(qt_plugins_dir ${lib_dir})
|
||||
set(qt_conf_dir ${bin_dir})
|
||||
set(qt_conf_plugins "../lib")
|
||||
elseif(SYSTEM_MACOSX)
|
||||
set(bundle_name "Robo 3T.app")
|
||||
set(contents_path ${bundle_name}/Contents)
|
||||
|
||||
set(bin_dir ${contents_path}/MacOS)
|
||||
set(styles_dir ${contents_path}/MacOS/styles)
|
||||
set(lib_dir ${contents_path}/Frameworks)
|
||||
set(resources_dir ${contents_path}/Resources)
|
||||
set(license_dir ${resources_dir})
|
||||
|
||||
set(qt_plugins_dir ${contents_path}/PlugIns/Qt)
|
||||
set(qt_conf_dir ${resources_dir})
|
||||
set(qt_conf_plugins "PlugIns/Qt")
|
||||
elseif(SYSTEM_WINDOWS)
|
||||
set(bin_dir .)
|
||||
set(styles_dir ${bin_dir}/styles)
|
||||
set(lib_dir .)
|
||||
set(resources_dir ./resources)
|
||||
set(license_dir .)
|
||||
|
||||
set(qt_plugins_dir ${lib_dir})
|
||||
set(qt_conf_dir ${bin_dir})
|
||||
set(qt_conf_plugins .)
|
||||
endif()
|
||||
|
||||
# Generate qt.conf file
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/install/qt.conf.in"
|
||||
"${CMAKE_BINARY_DIR}/qt.conf")
|
||||
|
||||
# Install qt.conf file
|
||||
install(
|
||||
FILES "${CMAKE_BINARY_DIR}/qt.conf"
|
||||
DESTINATION "${qt_conf_dir}")
|
||||
|
||||
# Install OpenSSL dynamic lib files
|
||||
if(SYSTEM_WINDOWS)
|
||||
install(
|
||||
FILES
|
||||
"${OpenSSL_DIR}/libssl-1_1-x64.dll"
|
||||
"${OpenSSL_DIR}/libcrypto-1_1-x64.dll"
|
||||
DESTINATION ${bin_dir})
|
||||
elseif(SYSTEM_MACOSX)
|
||||
install(
|
||||
FILES
|
||||
"${OpenSSL_DIR}/libssl.1.1.dylib"
|
||||
"${OpenSSL_DIR}/libcrypto.1.1.dylib"
|
||||
DESTINATION ${lib_dir}/lib)
|
||||
elseif(SYSTEM_LINUX)
|
||||
install(
|
||||
FILES
|
||||
"${OpenSSL_DIR}/libssl.so"
|
||||
"${OpenSSL_DIR}/libssl.so.1.0.0"
|
||||
"${OpenSSL_DIR}/libcrypto.so"
|
||||
"${OpenSSL_DIR}/libcrypto.so.1.0.0"
|
||||
DESTINATION ${lib_dir})
|
||||
endif()
|
||||
|
||||
# Install binary
|
||||
install(
|
||||
TARGETS robomongo
|
||||
RUNTIME DESTINATION ${bin_dir}
|
||||
BUNDLE DESTINATION .)
|
||||
|
||||
# Install license, copyright and changelogs files
|
||||
install(
|
||||
FILES
|
||||
${CMAKE_SOURCE_DIR}/LICENSE
|
||||
${CMAKE_SOURCE_DIR}/COPYRIGHT
|
||||
${CMAKE_SOURCE_DIR}/CHANGELOG
|
||||
${CMAKE_SOURCE_DIR}/DESCRIPTION
|
||||
DESTINATION ${license_dir})
|
||||
|
||||
# Install common dependencies
|
||||
SET(QT_LIBS Core Gui Widgets PrintSupport Network Xml)
|
||||
if(NOT SYSTEM_LINUX)
|
||||
SET(QT_LIBS ${QT_LIBS} WebEngineWidgets WebEngineCore Quick
|
||||
QuickWidgets WebChannel Qml Positioning)
|
||||
endif()
|
||||
install_qt_lib(${QT_LIBS})
|
||||
install_qt_plugins(QGifPlugin QICOPlugin)
|
||||
install_icu_libs()
|
||||
set(QT_STYLES_DIR ${Qt5Core_DIR}/../../../plugins/styles/)
|
||||
set(QT_BIN_DIR ${Qt5Core_DIR}/../../../bin/)
|
||||
set(QT_RESOURCES_DIR ${Qt5Core_DIR}/../../../resources/)
|
||||
|
||||
if(SYSTEM_LINUX)
|
||||
install_qt_lib(XcbQpa DBus)
|
||||
install_qt_plugins(
|
||||
QXcbIntegrationPlugin)
|
||||
|
||||
install(
|
||||
FILES
|
||||
"/usr/lib/x86_64-linux-gnu/libstdc++.so.6"
|
||||
"/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28"
|
||||
DESTINATION ${lib_dir})
|
||||
elseif(SYSTEM_MACOSX)
|
||||
install_qt_lib(MacExtras DBus)
|
||||
install_qt_plugins(
|
||||
QCocoaIntegrationPlugin
|
||||
QMinimalIntegrationPlugin
|
||||
QOffscreenIntegrationPlugin)
|
||||
|
||||
# Install icon
|
||||
install(
|
||||
FILES "${CMAKE_SOURCE_DIR}/install/macosx/robomongo.icns"
|
||||
DESTINATION "${resources_dir}")
|
||||
|
||||
# Install styles
|
||||
install(FILES "${QT_STYLES_DIR}/libqmacstyle.dylib" DESTINATION ${styles_dir})
|
||||
elseif(SYSTEM_WINDOWS)
|
||||
install_qt_plugins(
|
||||
QWindowsIntegrationPlugin
|
||||
QMinimalIntegrationPlugin
|
||||
QOffscreenIntegrationPlugin)
|
||||
|
||||
# Qt WebEngine dependencies
|
||||
install(DIRECTORY ${QT_RESOURCES_DIR} DESTINATION ${resources_dir})
|
||||
install(FILES
|
||||
"${QT_BIN_DIR}/libEGL.dll"
|
||||
"${QT_BIN_DIR}/libGLESv2.dll"
|
||||
"${QT_BIN_DIR}/opengl32sw.dll"
|
||||
"${QT_BIN_DIR}/QtWebEngineProcess.exe"
|
||||
DESTINATION ${bin_dir})
|
||||
|
||||
# Install Styles
|
||||
install(FILES "${QT_STYLES_DIR}/qwindowsvistastyle.dll" DESTINATION ${styles_dir})
|
||||
|
||||
# Install runtime libraries:
|
||||
# msvcp120.dll
|
||||
# msvcr120.dll
|
||||
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
|
||||
include(InstallRequiredSystemLibraries)
|
||||
endif()
|
||||
@@ -0,0 +1,106 @@
|
||||
function(install_qt_lib)
|
||||
foreach(module ${ARGV})
|
||||
set(target_name Qt5::${module})
|
||||
set(module_name Qt5${module})
|
||||
|
||||
# Get full path to some known Qt library (i.e. /path/to/lib/libQt5Widgets.so.5.5.1)
|
||||
get_target_property(target_path Qt5::Core LOCATION)
|
||||
|
||||
# Get folder path of library (i.e. /path/to/lib)
|
||||
get_filename_component(qt_lib_dir ${target_path} DIRECTORY)
|
||||
|
||||
if (SYSTEM_LINUX)
|
||||
# Not very good solution, but we simply take all files with *Qt5<module>* in names (including symlinks)
|
||||
file(GLOB module_libs ${qt_lib_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}${module_name}*)
|
||||
|
||||
# Install to "lib" folder
|
||||
install(FILES ${module_libs}
|
||||
DESTINATION ${lib_dir})
|
||||
endif()
|
||||
|
||||
if(SYSTEM_MACOSX)
|
||||
set(module_name Qt${module})
|
||||
|
||||
# On Mac OS we are still located in .framework folder,
|
||||
# and we need to go one level up
|
||||
get_filename_component(qt_lib_dir ${qt_lib_dir} DIRECTORY)
|
||||
|
||||
install(
|
||||
DIRECTORY ${qt_lib_dir}/${module_name}.framework
|
||||
DESTINATION ${lib_dir}
|
||||
USE_SOURCE_PERMISSIONS
|
||||
PATTERN "*_debug" EXCLUDE # Exclude debug libraries
|
||||
PATTERN "Headers" EXCLUDE) # Exclude Headers folders
|
||||
endif()
|
||||
|
||||
if (SYSTEM_WINDOWS)
|
||||
# Install single DLL to lib directory
|
||||
install(FILES ${qt_lib_dir}/${module_name}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
DESTINATION ${lib_dir})
|
||||
endif()
|
||||
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
function(install_icu_libs)
|
||||
# We are trying to get 'lib' folder of Qt installation.
|
||||
# For this we take some known target (Qt5::Core in this case)
|
||||
# and taking path to this library.
|
||||
|
||||
# Get full path to known library (i.e. /path/to/lib/libQt5Core.so.5.5.1)
|
||||
get_target_property(target_path Qt5::Core LOCATION)
|
||||
|
||||
# Get absolute path to 'lib' folder (which is a parent folder of 'known' library)
|
||||
get_filename_component(qt_lib_dir ${target_path} DIRECTORY)
|
||||
|
||||
# Not very good solution, but we simply take all files with *icu* in names (including symlinks)
|
||||
file(GLOB icu_libs ${qt_lib_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}icu*)
|
||||
|
||||
# Install to "lib" folder
|
||||
install(FILES ${icu_libs}
|
||||
DESTINATION ${lib_dir})
|
||||
endfunction()
|
||||
|
||||
# Installs Qt5 plugins. Uses value of global variable "qt_plugins_dir" as
|
||||
# absolute path to where install plugins.
|
||||
#
|
||||
# You can find list of plugin names by examing this variable: Qt5<Module>_PLUGINS
|
||||
# For example, Qt5Gui_PLUGINS.
|
||||
#
|
||||
# Debug plugins, running application in this way:
|
||||
# QT_DEBUG_PLUGINS=1 ./yourapp
|
||||
#
|
||||
# Some examples of plugin names:
|
||||
# QGifPlugin, QGtk2ThemePlugin, QIbusPlatformInputContextPlugin
|
||||
#
|
||||
# Sample:
|
||||
# install_qt_plugins(QGifPlugin QGtk2ThemePlugin QIbusPlatformInputContextPlugin)
|
||||
#
|
||||
function(install_qt_plugins)
|
||||
foreach(name ${ARGV})
|
||||
set(target_name Qt5::${name})
|
||||
|
||||
# We are trying to get 'plugins' folder of Qt installation.
|
||||
|
||||
# Get full path to plugin library (i.e. /path/to/plugins/imageformats/libqgif.so)
|
||||
get_target_property(target_path ${target_name} LOCATION)
|
||||
|
||||
# Get absolute path to parent folder (i.e. /path/to/plugins/imageformats for Qt5::QGifPlugin)
|
||||
get_filename_component(plugin_dir ${target_path} DIRECTORY)
|
||||
|
||||
# Get plugin parent directory (i.e. "imageformats" for Qt5::QGifPlugin)
|
||||
get_filename_component(plugin_dir_name ${plugin_dir} NAME)
|
||||
|
||||
# Get plugin file name (i.e. "libqgif.so" for Qt5::QGifPlugin)
|
||||
get_filename_component(plugin_file_name ${target_path} NAME)
|
||||
|
||||
# Get absolute path to plugins folder (i.e. /path/to/plugins)
|
||||
get_filename_component(plugins_dir ${plugin_dir} DIRECTORY)
|
||||
|
||||
# Install to "lib" folder
|
||||
install(
|
||||
FILES ${target_path}
|
||||
DESTINATION ${qt_plugins_dir}/${plugin_dir_name})
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
# Notes for maintainers.
|
||||
#
|
||||
# 1. Make sure that we use only lowercase letters in file name of outputed
|
||||
# package for all platforms and package types.
|
||||
#
|
||||
|
||||
# Get last commit hash
|
||||
execute_process(
|
||||
COMMAND git rev-parse --short HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE git_hash
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
# Timestamp (not used for now)
|
||||
string(TIMESTAMP timestamp "%Y-%m-%d")
|
||||
|
||||
# Package name (as it should appear in UI)
|
||||
set(CPACK_PACKAGE_NAME robo3t)
|
||||
|
||||
# Version of the package
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
||||
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
|
||||
# Where to put generated package
|
||||
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/package)
|
||||
|
||||
# Disables the component-based install process for installers
|
||||
# that support it (NSIS, for instance)
|
||||
set(CPACK_MONOLITHIC_INSTALL ON)
|
||||
|
||||
# Strip debug information on platforms that support it
|
||||
set(CPACK_STRIP_FILES ON)
|
||||
|
||||
# Additional information
|
||||
set(CPACK_PACKAGE_VENDOR "3T Software Labs Ltd")
|
||||
set(CPACK_PACKAGE_CONTACT robo3t@3t.io)
|
||||
set(CPACK_PACKAGE_DESCRIPTION "Shell-centric cross-platform MongoDB management tool.")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Robo 3T is a shell-centric cross-platform MongoDB management tool.")
|
||||
|
||||
# Use lowercase for system name and package file name
|
||||
string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
|
||||
string(TOLOWER ${CPACK_PACKAGE_NAME} package_file_name)
|
||||
string(TOLOWER ${CPACK_PACKAGE_VERSION} package_file_version)
|
||||
|
||||
# We use function from TargetArch.cmake module
|
||||
# Returns string with target architecture value
|
||||
# Output for common architectures is: i386 or x86_64
|
||||
target_architecture(target_arch)
|
||||
|
||||
# Package file name
|
||||
set(CPACK_PACKAGE_FILE_NAME ${package_file_name}-${package_file_version}-${system_name}-${target_arch}-${git_hash})
|
||||
|
||||
if(SYSTEM_LINUX)
|
||||
set(CPACK_GENERATOR TGZ)
|
||||
|
||||
|
||||
elseif(SYSTEM_MACOSX)
|
||||
set(CPACK_GENERATOR DragNDrop)
|
||||
set(CPACK_DMG_DS_STORE ${CMAKE_SOURCE_DIR}/install/macosx/DMG_DS_Store)
|
||||
|
||||
elseif(SYSTEM_WINDOWS)
|
||||
set(files_dir "${CMAKE_SOURCE_DIR}/install/windows")
|
||||
set(exe_name "robo3t.exe")
|
||||
|
||||
set(CPACK_GENERATOR NSIS ZIP)
|
||||
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/DESCRIPTION")
|
||||
|
||||
# License file will be shown in the installation wizard
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
|
||||
|
||||
# Default installation directory (not full path), just the path after
|
||||
# default "c:\Program Files"
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${ROBOMONGO_DISPLAY_FULL_NAME}")
|
||||
|
||||
# A path to the executable inside installed package that contains icon
|
||||
# This icon is used in Windows "Add or remove programs" control panel
|
||||
set(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${exe_name}")
|
||||
|
||||
# Create shortcuts on desktop and start-up menu
|
||||
set(CPACK_NSIS_CREATE_ICONS_EXTRA "
|
||||
CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk' '$INSTDIR\\\\${exe_name}'
|
||||
CreateShortCut '$DESKTOP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk' '$INSTDIR\\\\${exe_name}'
|
||||
")
|
||||
|
||||
# Cleanup during uninstallation. This cleanup is required because shortcuts
|
||||
# will not be deleted automatically.
|
||||
# Without line '!insertmacro...' shortcut in start menu will not be removed
|
||||
# (i.e. it doesn't work when we referece '$STARTMENU_FOLDER' that is used
|
||||
# when creating shortcuts). This solution was found somewhere in internet.
|
||||
set(CPACK_NSIS_DELETE_ICONS_EXTRA "
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
||||
Delete '$DESKTOP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk'
|
||||
Delete '$SMPROGRAMS\\\\$MUI_TEMP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk'
|
||||
")
|
||||
|
||||
# The title displayed at the top of the installer
|
||||
set(CPACK_NSIS_PACKAGE_NAME "${ROBOMONGO_DISPLAY_FULL_NAME}")
|
||||
|
||||
# Installer images (for sidebar and topbar)
|
||||
set(CPACK_PACKAGE_ICON "${files_dir}\\\\nsis-topbar.bmp")
|
||||
set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${files_dir}\\\\nsis-sidebar.bmp\\\"")
|
||||
|
||||
# URL to a web site providing more information about application
|
||||
# This url was noticed at least in "Add or remove programs" control
|
||||
# panel.
|
||||
set(CPACK_NSIS_URL_INFO_ABOUT "www.robomongo.org")
|
||||
|
||||
# Specify an executable to add an option to run on the finish
|
||||
# page of the NSIS installer. Without "..\\\\" it dowsn't work for NSIS 2.5
|
||||
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "..\\\\${exe_name}")
|
||||
|
||||
# Trying to set for installer and uninstaller, but this is
|
||||
# doesn't work and default icons are still used...
|
||||
set(CPACK_NSIS_MUI_ICON "${files_dir}\\\\robomongo.ico")
|
||||
set(CPACK_NSIS_MUI_UNIICON "${files_dir}\\\\robomongo.ico")
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
@@ -0,0 +1,123 @@
|
||||
###
|
||||
# Prints CMake variables.
|
||||
#
|
||||
# Print all variables in the current scope:
|
||||
#
|
||||
# print_vars()
|
||||
# print_vars("") # the same result, as previous line
|
||||
#
|
||||
# Print all variables with names, matching regex, case insensitive:
|
||||
#
|
||||
# print_vars("SOMEVAR")
|
||||
# print_vars("someVar") # the same result, as previous line
|
||||
# print_vars("^CMAKE") # print all variables, that starts from "CMAKE"
|
||||
# print_vars("VAR$") # ends by "VAR"
|
||||
# print_vars("^VAR$") # exact match
|
||||
#
|
||||
function(print_vars)
|
||||
if(ARGV0)
|
||||
set(regex ${ARGV0})
|
||||
endif()
|
||||
get_cmake_property(names VARIABLES)
|
||||
foreach(name ${names})
|
||||
# Make lowercase variants for case-insensitive comparing
|
||||
string(TOLOWER "${name}" lc_name)
|
||||
string(TOLOWER "${regex}" lc_regex)
|
||||
|
||||
if(lc_name MATCHES "${lc_regex}")
|
||||
message("${name}=${${name}}")
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
|
||||
###
|
||||
# Print content of variable.
|
||||
#
|
||||
# print_var(PROJECT_NAME)
|
||||
# print_var("PROJECT_NAME") # the same result as previous line
|
||||
#
|
||||
function(print_var name)
|
||||
|
||||
# Show nice output for not defined or empty variables
|
||||
if(NOT DEFINED ${name})
|
||||
set(value " is not defined.")
|
||||
elseif("${${name}}" STREQUAL "")
|
||||
set(value " is defined but empty.")
|
||||
else()
|
||||
set(value "=${${name}}")
|
||||
endif()
|
||||
|
||||
message("${name}${value}")
|
||||
endfunction()
|
||||
|
||||
###
|
||||
# Prints included directories
|
||||
#
|
||||
function(print_include_dirs)
|
||||
get_property(dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
||||
foreach(dir ${dirs})
|
||||
message("${dir}")
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
###
|
||||
# Prints link directories
|
||||
#
|
||||
function(print_link_dirs)
|
||||
get_property(dirs DIRECTORY PROPERTY LINK_DIRECTORIES)
|
||||
foreach(dir ${dirs})
|
||||
message("${dir}")
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
###
|
||||
# Prints compile definitions
|
||||
#
|
||||
function(print_compile_definitions)
|
||||
get_property(defs DIRECTORY PROPERTY COMPILE_DEFINITIONS)
|
||||
foreach(def ${defs})
|
||||
message("${def}")
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
|
||||
###
|
||||
# Prints target include directories
|
||||
#
|
||||
function(print_target_include_dirs target)
|
||||
get_property(dirs TARGET ${target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
|
||||
foreach(dir ${dirs})
|
||||
message("${dir}")
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
###
|
||||
# Prints target compile definitions
|
||||
#
|
||||
function(print_target_compile_definitions target)
|
||||
get_property(defs TARGET ${target} PROPERTY INTERFACE_COMPILE_DEFINITIONS)
|
||||
foreach(def ${defs})
|
||||
message("${def}")
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
###
|
||||
# Prints target link libraries
|
||||
#
|
||||
function(print_target_link_libraries target)
|
||||
get_property(defs TARGET ${target} PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
foreach(def ${defs})
|
||||
message("${def}")
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
###
|
||||
# Prints Qt5 module plugins
|
||||
#
|
||||
function(print_qt_module_plugins module)
|
||||
foreach(plugin ${Qt5${module}_PLUGINS})
|
||||
get_target_property(loc ${plugin} LOCATION)
|
||||
message("Plugin ${plugin} is at location ${loc}")
|
||||
endforeach()
|
||||
endfunction()
|
||||
@@ -0,0 +1,154 @@
|
||||
# Copyright (c) 2012 Petroules Corporation. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
||||
# following conditions are met:
|
||||
#
|
||||
# Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
||||
# disclaimer.
|
||||
#
|
||||
# Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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.
|
||||
|
||||
# Based on the Qt 5 processor detection code, so should be very accurate
|
||||
# https://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/global/qprocessordetection.h
|
||||
# Currently handles arm (v5, v6, v7), x86 (32/64), ia64, and ppc (32/64)
|
||||
|
||||
# Regarding POWER/PowerPC, just as is noted in the Qt source,
|
||||
# "There are many more known variants/revisions that we do not handle/detect."
|
||||
|
||||
set(archdetect_c_code "
|
||||
#if defined(__arm__) || defined(__TARGET_ARCH_ARM)
|
||||
#if defined(__ARM_ARCH_7__) \\
|
||||
|| defined(__ARM_ARCH_7A__) \\
|
||||
|| defined(__ARM_ARCH_7R__) \\
|
||||
|| defined(__ARM_ARCH_7M__) \\
|
||||
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7)
|
||||
#error cmake_ARCH armv7
|
||||
#elif defined(__ARM_ARCH_6__) \\
|
||||
|| defined(__ARM_ARCH_6J__) \\
|
||||
|| defined(__ARM_ARCH_6T2__) \\
|
||||
|| defined(__ARM_ARCH_6Z__) \\
|
||||
|| defined(__ARM_ARCH_6K__) \\
|
||||
|| defined(__ARM_ARCH_6ZK__) \\
|
||||
|| defined(__ARM_ARCH_6M__) \\
|
||||
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6)
|
||||
#error cmake_ARCH armv6
|
||||
#elif defined(__ARM_ARCH_5TEJ__) \\
|
||||
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5)
|
||||
#error cmake_ARCH armv5
|
||||
#else
|
||||
#error cmake_ARCH arm
|
||||
#endif
|
||||
#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
|
||||
#error cmake_ARCH i386
|
||||
#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
|
||||
#error cmake_ARCH x86_64
|
||||
#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
|
||||
#error cmake_ARCH ia64
|
||||
#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\
|
||||
|| defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \\
|
||||
|| defined(_M_MPPC) || defined(_M_PPC)
|
||||
#if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
|
||||
#error cmake_ARCH ppc64
|
||||
#else
|
||||
#error cmake_ARCH ppc
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#error cmake_ARCH unknown
|
||||
")
|
||||
|
||||
# Set ppc_support to TRUE before including this file or ppc and ppc64
|
||||
# will be treated as invalid architectures since they are no longer supported by Apple
|
||||
|
||||
function(target_architecture output_var)
|
||||
if(APPLE AND CMAKE_OSX_ARCHITECTURES)
|
||||
# On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set
|
||||
# First let's normalize the order of the values
|
||||
|
||||
# Note that it's not possible to compile PowerPC applications if you are using
|
||||
# the OS X SDK version 10.6 or later - you'll need 10.4/10.5 for that, so we
|
||||
# disable it by default
|
||||
# See this page for more information:
|
||||
# http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4
|
||||
|
||||
# Architecture defaults to i386 or ppc on OS X 10.5 and earlier, depending on the CPU type detected at runtime.
|
||||
# On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise.
|
||||
|
||||
foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES})
|
||||
if("${osx_arch}" STREQUAL "ppc" AND ppc_support)
|
||||
set(osx_arch_ppc TRUE)
|
||||
elseif("${osx_arch}" STREQUAL "i386")
|
||||
set(osx_arch_i386 TRUE)
|
||||
elseif("${osx_arch}" STREQUAL "x86_64")
|
||||
set(osx_arch_x86_64 TRUE)
|
||||
elseif("${osx_arch}" STREQUAL "ppc64" AND ppc_support)
|
||||
set(osx_arch_ppc64 TRUE)
|
||||
else()
|
||||
message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Now add all the architectures in our normalized order
|
||||
if(osx_arch_ppc)
|
||||
list(APPEND ARCH ppc)
|
||||
endif()
|
||||
|
||||
if(osx_arch_i386)
|
||||
list(APPEND ARCH i386)
|
||||
endif()
|
||||
|
||||
if(osx_arch_x86_64)
|
||||
list(APPEND ARCH x86_64)
|
||||
endif()
|
||||
|
||||
if(osx_arch_ppc64)
|
||||
list(APPEND ARCH ppc64)
|
||||
endif()
|
||||
else()
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}")
|
||||
|
||||
enable_language(C)
|
||||
|
||||
# Detect the architecture in a rather creative way...
|
||||
# This compiles a small C program which is a series of ifdefs that selects a
|
||||
# particular #error preprocessor directive whose message string contains the
|
||||
# target architecture. The program will always fail to compile (both because
|
||||
# file is not a valid C program, and obviously because of the presence of the
|
||||
# #error preprocessor directives... but by exploiting the preprocessor in this
|
||||
# way, we can detect the correct target architecture even when cross-compiling,
|
||||
# since the program itself never needs to be run (only the compiler/preprocessor)
|
||||
try_run(
|
||||
run_result_unused
|
||||
compile_result_unused
|
||||
"${CMAKE_BINARY_DIR}"
|
||||
"${CMAKE_BINARY_DIR}/arch.c"
|
||||
COMPILE_OUTPUT_VARIABLE ARCH
|
||||
CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
# Parse the architecture name from the compiler output
|
||||
string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}")
|
||||
|
||||
# Get rid of the value marker leaving just the architecture name
|
||||
string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}")
|
||||
|
||||
# If we are compiling with an unknown architecture this variable should
|
||||
# already be set to "unknown" but in the case that it's empty (i.e. due
|
||||
# to a typo in the code), then set it to unknown
|
||||
if (NOT ARCH)
|
||||
set(ARCH unknown)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(${output_var} "${ARCH}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
@@ -0,0 +1,27 @@
|
||||
if(SYSTEM_LINUX OR SYSTEM_MACOSX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
elseif(SYSTEM_WINDOWS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -DBOOST_ALL_NO_LIB")
|
||||
|
||||
# Do not show some warnings. We turned off the same warnings as MongoDB do
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4355 /wd4800 /wd4267 /wd4244 /wd4290 /wd4068 /wd4351")
|
||||
|
||||
# The /MP option can reduce the total time to compile the source files. This option
|
||||
# causes the compiler to create one or more copies of itself, each in a separate process.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} psapi.lib bcrypt.lib Iphlpapi.lib dbghelp.lib ws2_32.lib winmm.lib version.lib")
|
||||
endif()
|
||||
|
||||
set(PROJECT_NAME "Robo 3T")
|
||||
set(PROJECT_NAME_TITLE ${PROJECT_NAME})
|
||||
set(PROJECT_DOMAIN "www.robomongo.org")
|
||||
set(PROJECT_COMPANYNAME "3T Software Labs Ltd")
|
||||
set(PROJECT_COPYRIGHT "Copyright (C) 2014-2017 ${PROJECT_COMPANYNAME} All Rights Reserved.")
|
||||
set(PROJECT_COMPANYNAME_DOMAIN "https://studio3t.com/")
|
||||
set(PROJECT_GITHUB_FORK "www.github.com/Studio3T/robomongo")
|
||||
set(PROJECT_GITHUB_ISSUES "www.github.com/Studio3T/robomongo/issues")
|
||||
|
||||
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWERCASE)
|
||||
@@ -1,104 +0,0 @@
|
||||
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
ADD_DEFINITIONS(-DOS_LINUX -DOS_POSIX)
|
||||
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
ADD_DEFINITIONS(-DOS_MAC -DOS_POSIX)
|
||||
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
ADD_DEFINITIONS(-D_WIN32 -DOS_WIN)
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Not supported OS: ${CMAKE_SYSTEM_NAME}")
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM: ${CMAKE_SYSTEM}")
|
||||
|
||||
IF (CMAKE_BUILD_TYPE)
|
||||
STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_STABLE)
|
||||
MESSAGE(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE_STABLE}")
|
||||
ENDIF(CMAKE_BUILD_TYPE)
|
||||
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/")
|
||||
IF(NOT CMAKE_DEBUG_POSTFIX)
|
||||
SET(CMAKE_DEBUG_POSTFIX d)
|
||||
ENDIF()
|
||||
INCLUDE(cmake/projecthelper.cmake)
|
||||
INCLUDE(cmake/utils.cmake)
|
||||
|
||||
IF(OPENSSL_ENABLED)
|
||||
ADD_DEFINITIONS(-DOPENSSL_SUPPORT_ENABLED)
|
||||
FIND_PACKAGE(OpenSSL REQUIRED)
|
||||
|
||||
IF(OPENSSL_FOUND)
|
||||
#SET(OPENSSL_LIBS optimized ${LIB_EAY_RELEASE} debug ${LIB_EAY_DEBUG} optimized ${SSL_EAY_RELEASE} debug ${SSL_EAY_DEBUG})
|
||||
GET_FILENAME_COMPONENT(OPENSSL_ROOT_DIR ${OPENSSL_INCLUDE_DIR} PATH)
|
||||
ELSE(OPENSSL_FOUND)
|
||||
IF(NOT OPENSSL_ROOT_DIR OR NOT EXISTS ${OPENSSL_ROOT_DIR})
|
||||
MESSAGE(FATAL_ERROR "OPENSSL_ENABLED but not founded, please specify OPENSSL_ROOT_DIR variable." )
|
||||
ENDIF()
|
||||
FILE(GLOB OPENSSL_LIBS "${OPENSSL_ROOT_DIR}/*.lib")
|
||||
ENDIF(OPENSSL_FOUND)
|
||||
ENDIF(OPENSSL_ENABLED)
|
||||
|
||||
IF(SSH_ENABLED)
|
||||
ADD_DEFINITIONS(-DSSH_SUPPORT_ENABLED)
|
||||
IF(NOT OPENSSL_FOUND)
|
||||
MESSAGE(FATAL_ERROR "OPENSSH_ENABLED but openssl not founded, please specify OPENSSL_ROOT_DIR variable and check the OPENSSL_ENABLED variable must be ON.")
|
||||
ENDIF(NOT OPENSSL_FOUND)
|
||||
ENDIF(SSH_ENABLED)
|
||||
|
||||
IF(BOOST_ENABLED)
|
||||
ADD_DEFINITIONS(-DBOOST_SUPPORT_ENABLED)
|
||||
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/integrate-boost.cmake)
|
||||
SET(Boost_USE_MULTITHREADED ON)
|
||||
SET(Boost_USE_STATIC_LIBS ON)
|
||||
ENDIF(BOOST_ENABLED)
|
||||
|
||||
IF(UNICODE_ENABLED)
|
||||
IF(MINGW)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode")
|
||||
ENDIF(MINGW)
|
||||
ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
|
||||
ENDIF(UNICODE_ENABLED)
|
||||
|
||||
IF(QT_ENABLED)
|
||||
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/integrate-qt.cmake)
|
||||
ADD_DEFINITIONS(-DQT_SUPPORT_ENABLED)
|
||||
ENDIF(QT_ENABLED)
|
||||
|
||||
IF(DEVELOPER_ENABLE_TESTS)
|
||||
INCLUDE(cmake/testing.cmake)
|
||||
SETUP_TESTING()
|
||||
ENDIF(DEVELOPER_ENABLE_TESTS)
|
||||
|
||||
MACRO(ADD_APP_EXECUTABLE_MSVC PROJECT_NAME SOURCES LIBS)
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${DESKTOP_TARGET} ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIBS})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(ADD_APP_LIBRARY_MSVC PROJECT_NAME SOURCES LIBS)
|
||||
ADD_LIBRARY(${PROJECT_NAME} STATIC ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIBS} )
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(ADD_APP_EXECUTABLE PROJECT_NAME SOURCES LIBS)
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${BUILD_TYPE}/build)
|
||||
SET(TARGET ${PROJECT_NAME})
|
||||
ADD_EXECUTABLE(${TARGET} ${DESKTOP_TARGET} ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${TARGET} ${LIBS})
|
||||
IF ("${CMAKE_BUILD_TYPE_STABLE}" STREQUAL "RELEASE")
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(ADD_APP_LIBRARY PROJECT_NAME SOURCES LIBS)
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${BUILD_TYPE}/build)
|
||||
SET(TARGET ${PROJECT_NAME})
|
||||
ADD_LIBRARY(${TARGET} STATIC ${SOURCES})
|
||||
TARGET_LINK_LIBRARIES(${TARGET} ${LIBS})
|
||||
IF ("${CMAKE_BUILD_TYPE_STABLE}" STREQUAL "RELEASE")
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
@@ -1,37 +0,0 @@
|
||||
MACRO(INTEGRATE_BOOST)
|
||||
SET(BOOST_COMPONENTS ${ARGV})
|
||||
IF(NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
|
||||
FILE( TO_CMAKE_PATH $ENV{BOOST_ROOT} BOOST_ROOT )
|
||||
IF( NOT EXISTS ${BOOST_ROOT} )
|
||||
MESSAGE( STATUS ${BOOST_ROOT} " does not exist. Checking if BOOST_ROOT was a quoted string.." )
|
||||
STRING( REPLACE "\"" "" BOOST_ROOT ${BOOST_ROOT} )
|
||||
IF( EXISTS ${BOOST_ROOT} )
|
||||
MESSAGE( STATUS "After removing the quotes " ${BOOST_ROOT} " was now found by CMake" )
|
||||
ENDIF( EXISTS ${BOOST_ROOT})
|
||||
ENDIF( NOT EXISTS ${BOOST_ROOT} )
|
||||
# Save the BOOST_ROOT in the cache
|
||||
IF( NOT EXISTS ${BOOST_ROOT} )
|
||||
MESSAGE( WARNING "BOOST_ROOT does not exist." )
|
||||
ELSE(NOT EXISTS ${BOOST_ROOT})
|
||||
SET(BOOST_ROOT ${BOOST_ROOT} CACHE STRING "Set the value of BOOST_ROOT to point to the root folder of your boost install." FORCE)
|
||||
ENDIF( NOT EXISTS ${BOOST_ROOT} )
|
||||
ENDIF(NOT BOOST_ROOT AND NOT $ENV{BOOST_ROOT} STREQUAL "")
|
||||
|
||||
# if(NOT BOOST_ROOT )
|
||||
# MESSAGE( WARNING "Please set the BOOST_ROOT environment variable." )
|
||||
# endif(NOT BOOST_ROOT )
|
||||
SET(Boost_USE_STATIC_LIBS ON)
|
||||
SET(Boost_USE_MULTITHREADED ON)
|
||||
FIND_PACKAGE(Boost COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
|
||||
|
||||
IF( Boost_FOUND )
|
||||
STRING(COMPARE LESS "${Boost_VERSION}" 1.50.0 VersionIncompatible)
|
||||
IF(VersionIncompatible)
|
||||
MESSAGE(FATAL_ERROR "Boost ${Boost_VERSION} not supported. Only 1.50.0 version and higher is supported.")
|
||||
ELSE(VersionIncompatible)
|
||||
MESSAGE (STATUS "Found Boost ${Boost_VERSION} -- ${Boost_LIBRARIES}")
|
||||
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} )
|
||||
LINK_LIBRARIES(${BOOST_LIBRARYDIR})
|
||||
ENDIF(VersionIncompatible)
|
||||
ENDIF()
|
||||
ENDMACRO(INTEGRATE_BOOST)
|
||||
@@ -1,336 +0,0 @@
|
||||
FUNCTION(QUERY_QMAKE VAR RESULT)
|
||||
GET_TARGET_PROPERTY(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
|
||||
EXEC_PROGRAM(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output )
|
||||
IF(NOT return_code)
|
||||
FILE(TO_CMAKE_PATH "${output}" output)
|
||||
SET(${RESULT} ${output} PARENT_SCOPE)
|
||||
ENDIF(NOT return_code)
|
||||
ENDFUNCTION(QUERY_QMAKE)
|
||||
|
||||
FUNCTION(FIND_LIB PATH_WHERE_SEARCH _NAME RESULT)
|
||||
STRING(REGEX REPLACE "[(0-9)]+$" "" CLEARNAME ${_NAME})
|
||||
STRING(REGEX REPLACE ${CLEARNAME} "" VERSION ${_NAME})
|
||||
SET(name_stable "${CMAKE_SHARED_LIBRARY_PREFIX}${_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
SET(PLUGIN "${PATH_WHERE_SEARCH}/${name_stable}")
|
||||
#trying to search lib with suffix 5
|
||||
IF(NOT EXISTS ${PLUGIN})
|
||||
SET(PLUGIN "${PATH_WHERE_SEARCH}/${CMAKE_SHARED_LIBRARY_PREFIX}${CLEARNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${VERSION}")
|
||||
ENDIF()
|
||||
IF(EXISTS ${PLUGIN})
|
||||
SET(${RESULT} ${PLUGIN} PARENT_SCOPE)
|
||||
ENDIF()
|
||||
ENDFUNCTION(FIND_LIB)
|
||||
|
||||
MACRO(DEPLOY_QT_PLUGIN_HELPER _path PATH_WHERE_SEARCH LIB_DIST TYPE)
|
||||
GET_FILENAME_COMPONENT(dir ${_path} PATH)
|
||||
GET_FILENAME_COMPONENT(name ${_path} NAME_WE)
|
||||
STRING(TOUPPER ${TYPE} _type)
|
||||
IF(${_type} STREQUAL "DEBUG")# try to find debug version of library
|
||||
SET(name_local "${name}${CMAKE_DEBUG_POSTFIX}")
|
||||
FIND_LIB(${PATH_WHERE_SEARCH}/${dir} ${name_local} PLUGIN_${TYPE}_${name})
|
||||
ENDIF()
|
||||
IF(NOT PLUGIN_${TYPE}_${name})
|
||||
FIND_LIB(${PATH_WHERE_SEARCH}/${dir} ${name} PLUGIN_${TYPE}_${name})
|
||||
ENDIF()
|
||||
|
||||
IF(PLUGIN_${TYPE}_${name})
|
||||
GET_FILENAME_COMPONENT(LibWithoutSymLink ${PLUGIN_${TYPE}_${name}} REALPATH)
|
||||
GET_FILENAME_COMPONENT(PLUGIN_NAME ${PLUGIN_${TYPE}_${name}} NAME)
|
||||
IF(NOT ${PLUGIN_${TYPE}_${name}} STREQUAL ${LibWithoutSymLink})
|
||||
MESSAGE(STATUS "Deployng ${PLUGIN} plugin for ${TYPE}, realpath is ${LibWithoutSymLink}, name ${PLUGIN_NAME}")
|
||||
INSTALL(FILES ${LibWithoutSymLink} DESTINATION "${LIB_DIST}/${dir}" CONFIGURATIONS ${TYPE} COMPONENT QTPLUGINS RENAME ${PLUGIN_NAME})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Deployng ${PLUGIN_${TYPE}_${name}} plugin for ${TYPE}")
|
||||
INSTALL(FILES ${PLUGIN_${TYPE}_${name}} DESTINATION "${LIB_DIST}/${dir}" CONFIGURATIONS ${TYPE} COMPONENT QTPLUGINS)
|
||||
ENDIF()
|
||||
#SET(LIBS_TO_FIXUP ${LIB_DIST}/${dir} ${LIBS_TO_FIXUP})
|
||||
#STRING(REPLACE "${QT_IMAGEFORMATS_PLUGINS_DIR}" "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/MacOS/imageformats"
|
||||
# QT_IMAGEFORMATS_PLUGIN_LOCAL ${QT_${PLUGIN}_PLUGIN_DEBUG}
|
||||
# )
|
||||
#LIST(APPEND BUNDLE_LIBRARIES_MOVE ${QT_IMAGEFORMATS_PLUGIN_LOCAL})
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Could not deploy ${PLUGIN_${name}}, required path: ${_path}, plugin for ${TYPE}")
|
||||
ENDIF()
|
||||
ENDMACRO(DEPLOY_QT_PLUGIN_HELPER)
|
||||
|
||||
MACRO(DEPLOY_QT_PLUGIN _path PATH_WHERE_SEARCH LIB_DIST)
|
||||
IF(NOT CMAKE_BUILD_TYPE AND CMAKE_CONFIGURATION_TYPES)
|
||||
FOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
DEPLOY_QT_PLUGIN_HELPER(${_path} ${PATH_WHERE_SEARCH} ${LIB_DIST} ${buildconfig})
|
||||
ENDFOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
ELSEIF(CMAKE_BUILD_TYPE)
|
||||
DEPLOY_QT_PLUGIN_HELPER(${_path} ${PATH_WHERE_SEARCH} ${LIB_DIST} ${CMAKE_BUILD_TYPE})
|
||||
ENDIF(NOT CMAKE_BUILD_TYPE AND CMAKE_CONFIGURATION_TYPES)
|
||||
ENDMACRO(DEPLOY_QT_PLUGIN)
|
||||
|
||||
MACRO(DETECT_QT)
|
||||
FIND_PACKAGE( Qt5Core QUIET )
|
||||
IF(Qt5Core_FOUND)
|
||||
SET(DEVELOPER_QT5 1)
|
||||
ELSE(Qt5Core_FOUND)
|
||||
SET(DEVELOPER_QT5 0)
|
||||
ENDIF(Qt5Core_FOUND)
|
||||
ENDMACRO(DETECT_QT)
|
||||
|
||||
MACRO(QTX_WRAP_CPP)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_WRAP_CPP(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_WRAP_CPP(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_WRAP_CPP)
|
||||
|
||||
MACRO(QTX_GENERATE_MOC)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_GENERATE_MOC(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_GENERATE_MOC(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_GENERATE_MOC)
|
||||
|
||||
MACRO(QTX_ADD_TRANSLATION)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_ADD_TRANSLATION(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_ADD_TRANSLATION(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_ADD_TRANSLATION)
|
||||
|
||||
MACRO(QTX_CREATE_TRANSLATION)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_CREATE_TRANSLATION(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_CREATE_TRANSLATION(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_CREATE_TRANSLATION)
|
||||
|
||||
MACRO(QTX_WRAP_UI)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_WRAP_UI(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_WRAP_UI(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_WRAP_UI)
|
||||
|
||||
MACRO(QTX_ADD_RESOURCES)
|
||||
IF(DEVELOPER_QT5)
|
||||
QT5_ADD_RESOURCES(${ARGN})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
QT4_ADD_RESOURCES(${ARGN})
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
ENDMACRO(QTX_ADD_RESOURCES)
|
||||
|
||||
MACRO(INTEGRATE_QT)
|
||||
QUERY_QMAKE(QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
|
||||
QUERY_QMAKE(QT_INSTALL_BINS QT_BINS_DIR)
|
||||
QUERY_QMAKE(QT_INSTALL_LIBS QT_LIBS_DIR)
|
||||
IF(DEVELOPER_QT5)
|
||||
SET(USE_QT_DYNAMIC ON)
|
||||
SET(QT_COMPONENTS_TO_USE ${ARGV})
|
||||
|
||||
IF(DEVELOPER_BUILD_TESTS)
|
||||
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} Qt5Test)
|
||||
ENDIF(DEVELOPER_BUILD_TESTS)
|
||||
|
||||
FOREACH(qtComponent ${QT_COMPONENTS_TO_USE})
|
||||
IF(NOT ${qtComponent} STREQUAL "Qt5ScriptTools")
|
||||
FIND_PACKAGE(${qtComponent} REQUIRED)
|
||||
ELSE()
|
||||
FIND_PACKAGE(${qtComponent} QUIET)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE_DIRECTORIES( ${${qtComponent}_INCLUDE_DIRS} )
|
||||
#STRING(REGEX REPLACE "Qt5" "" COMPONENT_SHORT_NAME ${qtComponent})
|
||||
#set(QT_MODULES_TO_USE ${QT_MODULES_TO_USE} ${COMPONENT_SHORT_NAME})
|
||||
IF(${${qtComponent}_FOUND} AND NOT(${qtComponent} STREQUAL "Qt5LinguistTools"))
|
||||
STRING(REGEX REPLACE "Qt5" "" componentShortName ${qtComponent})
|
||||
SET(QT_LIBRARIES ${QT_LIBRARIES} "Qt5::${componentShortName}")
|
||||
ENDIF()
|
||||
ENDFOREACH(qtComponent ${QT_COMPONENTS_TO_USE})
|
||||
|
||||
IF(NOT Qt5ScriptTools_FOUND)
|
||||
ADD_DEFINITIONS(-DQT_NO_SCRIPTTOOLS)
|
||||
ENDIF()
|
||||
|
||||
IF(DEVELOPER_OPENGL)
|
||||
FIND_PACKAGE(Qt5OpenGL REQUIRED)
|
||||
INCLUDE_DIRECTORIES( ${Qt5OpenGL_INCLUDE_DIRS})
|
||||
ENDIF(DEVELOPER_OPENGL)
|
||||
SETUP_COMPILER_SETTINGS(${USE_QT_DYNAMIC})
|
||||
ELSE(DEVELOPER_QT5)
|
||||
SET(QT_COMPONENTS_TO_USE ${ARGV})
|
||||
# repeat this for every debug/optional package
|
||||
LIST(FIND QT_COMPONENTS_TO_USE "QtScriptTools" QT_SCRIPT_TOOLS_INDEX)
|
||||
IF(NOT ${QT_SCRIPT_TOOLS_INDEX} EQUAL -1)
|
||||
LIST(REMOVE_ITEM QT_COMPONENTS_TO_USE "QtScriptTools")
|
||||
SET(QT_DEBUG_COMPONENTS_TO_USE ${QT_DEBUG_COMPONENTS_TO_USE} "QtScriptTools")
|
||||
ENDIF()
|
||||
IF(DEVELOPER_BUILD_TESTS)
|
||||
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} QtTest)
|
||||
ENDIF(DEVELOPER_BUILD_TESTS)
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_COMPONENTS_TO_USE} REQUIRED)
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_DEBUG_COMPONENTS_TO_USE} QUIET)
|
||||
IF(NOT QT_QTSCRIPTTOOLS_FOUND)
|
||||
ADD_DEFINITIONS(-DQT_NO_SCRIPTTOOLS)
|
||||
ENDIF()
|
||||
INCLUDE(${QT_USE_FILE})
|
||||
SET(QT_3RDPARTY_DIR ${QT_BINARY_DIR}/../src/3rdparty)
|
||||
|
||||
#checking is Qt dynamic or statis version will be used
|
||||
GET_FILENAME_COMPONENT(QTCORE_DLL_NAME_WE ${QT_QTCORE_LIBRARY_RELEASE} NAME_WE)
|
||||
GET_FILENAME_COMPONENT(QT_LIB_PATH ${QT_QTCORE_LIBRARY_RELEASE} PATH)
|
||||
|
||||
IF(WIN32)
|
||||
SET(DLL_EXT dll)
|
||||
# message("searching ${QTCORE_DLL_NAME_WE}.${DLL_EXT} in " ${QT_LIB_PATH} ${QT_LIB_PATH}/../bin)
|
||||
FIND_FILE(QTCORE_DLL_FOUND_PATH ${QTCORE_DLL_NAME_WE}.${DLL_EXT} PATHS ${QT_LIB_PATH} ${QT_LIB_PATH}/../bin
|
||||
NO_DEFAULT_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH
|
||||
NO_CMAKE_PATH
|
||||
NO_SYSTEM_ENVIRONMENT_PATH
|
||||
NO_CMAKE_SYSTEM_PATH
|
||||
)
|
||||
MESSAGE("QTCORE_DLL_FOUND_PATH=" ${QTCORE_DLL_FOUND_PATH})
|
||||
IF(EXISTS ${QTCORE_DLL_FOUND_PATH})
|
||||
SET(USE_QT_DYNAMIC ON)
|
||||
ELSE(EXISTS ${QTCORE_DLL_FOUND_PATH})
|
||||
SET(USE_QT_DYNAMIC OFF)
|
||||
ENDIF(EXISTS ${QTCORE_DLL_FOUND_PATH})
|
||||
ELSE()
|
||||
SET(USE_QT_DYNAMIC ON)
|
||||
ENDIF(WIN32)
|
||||
SETUP_COMPILER_SETTINGS(${USE_QT_DYNAMIC})
|
||||
# use jscore
|
||||
IF(MSVC AND NOT USE_QT_DYNAMIC)
|
||||
FIND_LIBRARY(JSCORE_LIB_RELEASE jscore
|
||||
PATHS
|
||||
${QT_3RDPARTY_DIR}/webkit/Source/JavaScriptCore/release
|
||||
${QT_3RDPARTY_DIR}/webkit/JavaScriptCore/release
|
||||
)
|
||||
FIND_LIBRARY(JSCORE_LIB_DEBUG NAMES jscored jscore
|
||||
PATHS
|
||||
${QT_3RDPARTY_DIR}/webkit/Source/JavaScriptCore/debug
|
||||
${QT_3RDPARTY_DIR}/webkit/JavaScriptCore/debug
|
||||
)
|
||||
SET(JSCORE_LIBS optimized ${JSCORE_LIB_RELEASE} debug ${JSCORE_LIB_DEBUG} )
|
||||
ENDIF(MSVC AND NOT USE_QT_DYNAMIC)
|
||||
# end of use jscore
|
||||
ENDIF(DEVELOPER_QT5)
|
||||
|
||||
ENDMACRO(INTEGRATE_QT)
|
||||
|
||||
|
||||
##############################################################################
|
||||
|
||||
MACRO(INSTALL_QT TARGET_NAME LIB_DIST)
|
||||
IF(NOT DEVELOPER_QT5)
|
||||
IF(WIN32 OR APPLE)
|
||||
SET(QT_COMPONENTS_TO_USE ${ARGV})
|
||||
LIST(REMOVE_ITEM QT_COMPONENTS_TO_USE ${TARGET_NAME})
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_COMPONENTS_TO_USE} REQUIRED)
|
||||
FIND_PACKAGE(Qt4 COMPONENTS ${QT_DEBUG_COMPONENTS_TO_USE} QUIET)
|
||||
INCLUDE(${QT_USE_FILE})
|
||||
GET_TARGET_PROPERTY(targetLocation ${TARGET_NAME} LOCATION)
|
||||
GET_FILENAME_COMPONENT(targetDir ${targetLocation} PATH)
|
||||
|
||||
IF(WIN32)
|
||||
SET(REPLACE_IN_LIB ".lib" ".dll")
|
||||
SET(REPLACE_IN_LIB2 "/lib/([^/]+)$" "/bin/\\1")
|
||||
ELSEIF(APPLE)
|
||||
SET(REPLACE_IN_LIB ".a" ".dylib")
|
||||
SET(REPLACE_IN_LIB2 "" "")
|
||||
ENDIF()
|
||||
|
||||
FOREACH(qtComponent ${QT_COMPONENTS_TO_USE} ${QT_DEBUG_COMPONENTS_TO_USE})
|
||||
STRING(TOUPPER "${qtComponent}" QtComCap)
|
||||
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${QT_${QtComCap}_LIBRARY})
|
||||
IF(NOT ${qtComponent} STREQUAL "QtMain")
|
||||
STRING(REPLACE ${REPLACE_IN_LIB} dllNameDeb "${QT_${QtComCap}_LIBRARY_DEBUG}")
|
||||
IF(WIN32)
|
||||
STRING(REGEX REPLACE ${REPLACE_IN_LIB2} dllNameDeb ${dllNameDeb})
|
||||
ENDIF()
|
||||
SET(DLIBS_TO_COPY_DEBUG ${DLIBS_TO_COPY_DEBUG} ${dllNameDeb})
|
||||
IF(NOT ${qtComponent} STREQUAL "QtScriptTools")
|
||||
STRING(REPLACE ${REPLACE_IN_LIB} dllNameRel "${QT_${QtComCap}_LIBRARY_RELEASE}")
|
||||
IF(WIN32)
|
||||
STRING(REGEX REPLACE ${REPLACE_IN_LIB2} dllNameRel ${dllNameRel})
|
||||
ENDIF()
|
||||
SET(DLIBS_TO_COPY_RELEASE ${DLIBS_TO_COPY_RELEASE} ${dllNameRel})
|
||||
ENDIF()
|
||||
# TODO: check this code @ MAC and *ux
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD COMMAND
|
||||
${CMAKE_COMMAND} -E copy $<$<CONFIG:Debug>:
|
||||
${dllNameDeb}> $<$<NOT:$<CONFIG:Debug>>:
|
||||
${dllNameRel}> $<TARGET_FILE_DIR:${TARGET_NAME}>
|
||||
)
|
||||
ENDIF(NOT ${qtComponent} STREQUAL "QtMain")
|
||||
ENDFOREACH(qtComponent ${QT_COMPONENTS_TO_USE})
|
||||
ENDIF(WIN32 OR APPLE)
|
||||
ELSE()# Qt5
|
||||
LIST(FIND QT_COMPONENTS_TO_USE "Qt5Xml" QT_XML_INDEX)
|
||||
IF(NOT ${QT_XML_INDEX} EQUAL -1)
|
||||
GET_TARGET_PROPERTY(libLocation ${Qt5Xml_LIBRARIES} LOCATION)
|
||||
STRING(REGEX REPLACE "Xml" "XmlPatterns" libLocation ${libLocation})
|
||||
QT_ADD_TO_INSTALL(${TARGET_NAME} ${libLocation} "")
|
||||
ENDIF()
|
||||
FOREACH(qtComponent ${QT_COMPONENTS_TO_USE} ${QT_DEBUG_COMPONENTS_TO_USE})
|
||||
IF(NOT ${qtComponent} STREQUAL "Qt5LinguistTools")
|
||||
IF(NOT "${${qtComponent}_LIBRARIES}" STREQUAL "")
|
||||
GET_TARGET_PROPERTY(libLocation ${${qtComponent}_LIBRARIES} LOCATION)
|
||||
QT_ADD_TO_INSTALL(${TARGET_NAME} ${libLocation} "")
|
||||
ELSE(NOT "${${qtComponent}_LIBRARIES}" STREQUAL "")
|
||||
MESSAGE("Canont find library ${qtComponent}_LIBRARIES")
|
||||
ENDIF(NOT "${${qtComponent}_LIBRARIES}" STREQUAL "")
|
||||
ENDIF()
|
||||
ENDFOREACH(qtComponent ${QT_COMPONENTS_TO_USE} ${QT_DEBUG_COMPONENTS_TO_USE})
|
||||
ENDIF(NOT DEVELOPER_QT5)
|
||||
|
||||
MESSAGE(STATUS "Qt libs to install ${DLIBS_TO_COPY_RELEASE}")
|
||||
IF(MSVC OR APPLE)
|
||||
# Visual studio install
|
||||
FOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
IF(${buildconfig} STREQUAL "Debug")
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_DEBUG})
|
||||
ELSE()
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_RELEASE})
|
||||
ENDIF()
|
||||
INSTALL(FILES ${DLIBS_TO_COPY} DESTINATION ${LIB_DIST} CONFIGURATIONS ${buildconfig} COMPONENT QTLIBS )
|
||||
ENDFOREACH(buildconfig ${CMAKE_CONFIGURATION_TYPES})
|
||||
ELSEIF(UNIX)
|
||||
# Make install
|
||||
STRING(TOUPPER ${CMAKE_BUILD_TYPE} TYPE)
|
||||
IF(${TYPE} STREQUAL "DEBUG")
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_DEBUG})
|
||||
ELSE()
|
||||
SET(DLIBS_TO_COPY ${DLIBS_TO_COPY_ALL} ${DLIBS_TO_COPY_RELEASE})
|
||||
ENDIF()
|
||||
IF(WIN32 OR APPLE)
|
||||
INSTALL(FILES ${DLIBS_TO_COPY} DESTINATION ${LIB_DIST})
|
||||
ELSE()
|
||||
#eliminate symlinks
|
||||
FOREACH(dllsToCopy ${DLIBS_TO_COPY})
|
||||
GET_FILENAME_COMPONENT(name ${dllsToCopy} NAME)
|
||||
STRING(REGEX REPLACE "[^5]+$" "" lnname ${name})
|
||||
INSTALL(FILES ${dllsToCopy} DESTINATION ${LIB_DIST} CONFIGURATIONS ${TYPE} COMPONENT QTLIBS RENAME ${lnname})
|
||||
ENDFOREACH(dllsToCopy ${DLIBS_TO_COPY})
|
||||
ENDIF()
|
||||
ENDIF(MSVC OR APPLE)
|
||||
|
||||
ENDMACRO(INSTALL_QT)
|
||||
|
||||
MACRO(QT_ADD_TO_INSTALL TARGET_NAME libLocation copyToSubdirectory)
|
||||
SET(libLocation_release ${libLocation})
|
||||
SET(REPLACE_PATTERN "/lib/([^/]+)$" "/bin/\\1") # from lib to bin
|
||||
IF(NOT EXISTS "${libLocation_release}")
|
||||
STRING(REGEX REPLACE ${REPLACE_PATTERN} libLocation_release ${libLocation_release})
|
||||
ENDIF()
|
||||
IF(EXISTS "${libLocation_release}")
|
||||
SET(DLIBS_TO_COPY_RELEASE ${DLIBS_TO_COPY_RELEASE} ${libLocation_release})
|
||||
STRING(REGEX REPLACE ${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DEBUG_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX} libLocation_debug ${libLocation_release})
|
||||
IF(EXISTS "${libLocation_debug}")
|
||||
SET(DLIBS_TO_COPY_DEBUG ${DLIBS_TO_COPY_DEBUG} ${libLocation_debug})
|
||||
ELSE()
|
||||
SET(DLIBS_TO_COPY_DEBUG ${DLIBS_TO_COPY_DEBUG} ${libLocation_release})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO(QT_ADD_TO_INSTALL)
|
||||
@@ -0,0 +1,63 @@
|
||||
|
||||
See these docs for the latest info about this topic:
|
||||
-------------
|
||||
- [Build Robo 3T - Mac OS X and Linux](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnMacAndLinux.md)
|
||||
- [Build Robo 3T - Windows](https://github.com/paralect/robomongo/blob/master/docs/BuildRobo3TOnWindows.md)
|
||||
|
||||
------------------------------------
|
||||
|
||||
What is this?
|
||||
-------------
|
||||
|
||||
Files in this folder are read by FindMongoDB.cmake script.
|
||||
|
||||
We link with MongoDB shell using objects instead of static libs, because:
|
||||
|
||||
> We require the use of the 'object' mode for release builds because it is the only linking
|
||||
> model that works across all of our platforms. We would like to ensure that all of our
|
||||
> released artifacts are built with the same known-good-everywhere model.
|
||||
|
||||
This is a quote from root SConstruct file in MongoDB repository.
|
||||
|
||||
It is possible to build MongoDB shell in the following way:
|
||||
|
||||
$ scons mongo --link-model=static
|
||||
|
||||
Than we will have produced static libs that we can link with. But in release mode MongoDB
|
||||
SConstruct file do not support static link mode by default. This command will *not* work:
|
||||
|
||||
$ scons mongo --release --link-model=static
|
||||
|
||||
We decided to use object link mode even for debug builds, in order to use single mode across
|
||||
all platforms and configurations.
|
||||
|
||||
How did you receive content for this files?
|
||||
-------------------------------------------
|
||||
|
||||
First we build MongoDB shell with the following command:
|
||||
|
||||
$ scons mongo -j8 --release
|
||||
|
||||
Than we remove compiled `mongo` and run the same command again to see only final link command:
|
||||
|
||||
$ rm build/opt/mongo/mongo
|
||||
$ scons mongo -j8 --release > release-link-command.txt
|
||||
|
||||
And finally we manually copy/paste list of objects to `<platform>-release.objects` file. Make sure
|
||||
that they are single-line files.
|
||||
|
||||
Almost the same steps we are doing for debug builds:
|
||||
|
||||
$ scons mongo -j8 --dbg
|
||||
$ rm build/debug/mongo/mongo
|
||||
$ scons mongo -j8 --dbg > debug-link-command.txt
|
||||
|
||||
And list of objects is copied to `<platform>-debug.objects` file.
|
||||
|
||||
We found, that on Linux (Ubuntu 14.10), list of debug objects differ from list of release objects only
|
||||
by two files. File `debugallocation.o` is linked in debug mode, but not in release.
|
||||
File `debugallocation.o` is linked in release mode, but not in debug. Both are located
|
||||
in `third_party/gperftools-2.2/src` folder. In any way, we keep separate lists of object files
|
||||
for both configurations. Still we need to test that objects are the same even across different
|
||||
versions of Linux.
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,244 +0,0 @@
|
||||
MACRO(SET_DESKTOP_TARGET)
|
||||
# Set default target to build (under win32 its allows console debug)
|
||||
IF(WIN32)
|
||||
OPTION(DEVELOPER_WINCONSOLE "Enable windows console windows for debug" OFF)
|
||||
IF(DEVELOPER_FEATURES AND DEVELOPER_WINCONSOLE)
|
||||
SET(DESKTOP_TARGET "")
|
||||
ELSE(DEVELOPER_FEATURES AND DEVELOPER_WINCONSOLE)
|
||||
SET(DESKTOP_TARGET WIN32)
|
||||
ENDIF(DEVELOPER_FEATURES AND DEVELOPER_WINCONSOLE)
|
||||
ELSEIF(APPLE)
|
||||
SET(DESKTOP_TARGET MACOSX_BUNDLE)
|
||||
ENDIF(WIN32)
|
||||
ENDMACRO(SET_DESKTOP_TARGET)
|
||||
|
||||
MACRO(DEFINE_DEFAULT_DEFINITIONS)
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS(
|
||||
-DNOMINMAX # do not define min() and max()
|
||||
-D_CRT_SECURE_NO_WARNINGS
|
||||
-D_CRT_NONSTDC_NO_WARNINGS
|
||||
-D_CRT_SECURE_NO_WARNINGS
|
||||
#-D__STDC_CONSTANT_MACROS
|
||||
#-DWIN32_LEAN_AND_MEAN # remove obsolete things from windows headers
|
||||
)
|
||||
ENDIF(WIN32)
|
||||
ADD_DEFINITIONS(
|
||||
-DPROJECT_NAME="${PROJECT_NAME}"
|
||||
-DPROJECT_NAME_TITLE="${PROJECT_NAME_TITLE}"
|
||||
-DPROJECT_COPYRIGHT="${PROJECT_COPYRIGHT}"
|
||||
-DPROJECT_DOMAIN="${PROJECT_DOMAIN}"
|
||||
-DPROJECT_COMPANYNAME="${PROJECT_COMPANYNAME}"
|
||||
-DPROJECT_COMPANYNAME_DOMAIN="${PROJECT_COMPANYNAME_DOMAIN}"
|
||||
-DPROJECT_GITHUB_FORK="${PROJECT_GITHUB_FORK}"
|
||||
-DPROJECT_GITHUB_ISSUES="${PROJECT_GITHUB_ISSUES}"
|
||||
-DPROJECT_VERSION="${PROJECT_VERSION}"
|
||||
-DPROJECT_NAME_LOWERCASE="${PROJECT_NAME_LOWERCASE}"
|
||||
)
|
||||
IF(DEVELOPER_FEATURES)
|
||||
ADD_DEFINITIONS(-DDEVELOPER_FEATURES)
|
||||
IF(WIN32)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG")
|
||||
ENDIF(WIN32)
|
||||
ENDIF(DEVELOPER_FEATURES)
|
||||
IF(WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Zi")
|
||||
ENDIF(WIN32)
|
||||
ENDMACRO(DEFINE_DEFAULT_DEFINITIONS)
|
||||
|
||||
MACRO(SETUP_COMPILER_SETTINGS IS_DYNAMIC)
|
||||
IF(MSVC)
|
||||
SET(ADDITIONAL_CL_OPTIMIZATION_OPTIONS
|
||||
# /Gr # fastcall
|
||||
/Gy # function level linking
|
||||
/GF # string pooling
|
||||
/GL # whole program optimization
|
||||
#/FR # disable browserable info
|
||||
/Oi # intrinsic functions
|
||||
/Ot # fast code
|
||||
/Ob2 # inline expansion
|
||||
/Ox # full optimization
|
||||
#/arch:SSE2
|
||||
/fp:except- /fp:fast
|
||||
)
|
||||
|
||||
SET(ADDITIONAL_CL_OPTIMIZATION_OPTIONS_PROJECTNAME
|
||||
# /Gd # cdecl
|
||||
/Os # small code
|
||||
/Og # Turn on loop, common subexpression and register optimizations
|
||||
/Ob0 # do not inline
|
||||
/O2 # maximize speed
|
||||
/fp:precise
|
||||
)
|
||||
|
||||
SET(ADDITIONAL_LINKER_OPTIMIZATION_OPTIONS
|
||||
/INCREMENTAL:NO
|
||||
/LTCG
|
||||
/DEBUG
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
SET(IS_DYNAMIC ${IS_DYNAMIC})
|
||||
STRING(REPLACE ";" " " cmake_cl_release_init_str "${ADDITIONAL_CL_OPTIMIZATION_OPTIONS} /D NDEBUG")
|
||||
STRING(REPLACE ";" " " cmake_linker_release_init_str "${ADDITIONAL_LINKER_OPTIMIZATION_OPTIONS}")
|
||||
IF(IS_DYNAMIC)
|
||||
SET(makeRulesOwerrideContent "
|
||||
IF(MSVC)
|
||||
SET(CMAKE_C_FLAGS_DEBUG_INIT \"/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1\")
|
||||
SET(CMAKE_C_FLAGS_MINSIZEREL_INIT \"/MD /O1 /Ob1 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELEASE_INIT \"/MD /O2 /Ob2 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT \"/MD /Zi /O2 /Ob1 /D NDEBUG\")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG_INIT \"/D_DEBUG /MDd /Zi /Ob0 /Od /EHsc /RTC1\")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT \"/MD /O1 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE_INIT \"/MD /O2 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT \"/MD /Zi /O2 /Ob1 /D NDEBUG /EHsc\")
|
||||
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT \"${cmake_linker_release_init_str}\")
|
||||
|
||||
ENDIF(MSVC)
|
||||
" )
|
||||
|
||||
IF(MSVC)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd /D_DEBUG /Zi /Ob0 /Od /RTC1")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /O2 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MD /O1 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MD /O2 /Zi ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${cmake_linker_release_init_str}")
|
||||
ENDIF(MSVC)
|
||||
|
||||
MESSAGE("Using setting for DYNAMIC run-time")
|
||||
else(IS_DYNAMIC)
|
||||
SET(makeRulesOwerrideContent "
|
||||
IF(MSVC)
|
||||
SET(CMAKE_C_FLAGS_INIT \"/MT\")
|
||||
SET(CMAKE_CXX_FLAGS_INIT \"/MT /EHsc\")
|
||||
|
||||
SET(CMAKE_C_FLAGS_DEBUG_INIT \"/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1\")
|
||||
SET(CMAKE_C_FLAGS_MINSIZEREL_INIT \"/MT /O1 /Ob1 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELEASE_INIT \"/MT /O2 /Ob2 /D NDEBUG\")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT \"/MT /Zi /O2 /Ob1 /D NDEBUG\")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG_INIT \"/D_DEBUG /MTd /Zi /Ob0 /Od /EHsc /RTC1\")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT \"/MT /O1 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE_INIT \"/MT /O2 ${cmake_cl_release_init_str}\")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT \"/MT /Zi /O2 /Ob1 /D NDEBUG /EHsc\")
|
||||
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT \"${cmake_linker_release_init_str}\")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT \"${cmake_linker_release_init_str}\")
|
||||
ENDIF(MSVC)
|
||||
" )
|
||||
|
||||
IF(MSVC)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /D_DEBUG /Zi /Ob0 /Od /RTC1")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O1 ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /O2 /Zi ${cmake_cl_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${cmake_linker_release_init_str}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${cmake_linker_release_init_str}")
|
||||
ENDIF(MSVC)
|
||||
|
||||
MESSAGE("Using setting for STATIC run-time")
|
||||
|
||||
ADD_DEFINITIONS(-DQT_STATICPLUGINS)
|
||||
ENDIF(IS_DYNAMIC)
|
||||
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/makeRulesOwerride.cmake" "${makeRulesOwerrideContent}")
|
||||
SET(CMAKE_USER_MAKE_RULES_OVERRIDE ${CMAKE_CURRENT_BINARY_DIR}/makeRulesOwerride.cmake)
|
||||
|
||||
IF(APPLE)
|
||||
#set(LIBCXX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imports/libc++10.7)
|
||||
#set(CMAKE_OSX_ARCHITECTURES i386)
|
||||
#set(CMAKE_OSX_ARCHITECTURES_DEBUG i368)
|
||||
#set(CMAKE_CXX_FLAGS "-arch i386")
|
||||
#set(LINK_FLAGS "-arch i386")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++ -nostdinc++ -I${LIBCXX_DIR}/include -g -Wall")
|
||||
#set(LINK_FLAGS "${LINK_FLAGS} -L${LIBCXX_DIR}/lib -arch i386")
|
||||
|
||||
# Detection target arch automaticly
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
|
||||
#set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
||||
ELSEIF(UNIX)
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
|
||||
ENDIF()
|
||||
ENDMACRO(SETUP_COMPILER_SETTINGS IS_DYNAMIC)
|
||||
|
||||
|
||||
MACRO(INSTALL_RUNTIME_LIBRARIES)
|
||||
# Install CRT
|
||||
IF(WIN32)
|
||||
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
|
||||
include (InstallRequiredSystemLibraries)
|
||||
ENDIF(WIN32)
|
||||
# TODO: add code for other platforms here
|
||||
ENDMACRO(INSTALL_RUNTIME_LIBRARIES)
|
||||
|
||||
MACRO(ADD_DLIB_TO_POSTBUILD_STEP TARGET_NAME DLIB_NAME)
|
||||
IF(MSVC OR APPLE)
|
||||
GET_TARGET_PROPERTY(dlib_location ${DLIB_NAME} LOCATION)
|
||||
GET_FILENAME_COMPONENT(dlib_targetdir ${dlib_location} PATH)
|
||||
SET(DLIB_DEBUG ${dlib_targetdir}/${CMAKE_SHARED_LIBRARY_PREFIX}${DLIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
SET(DLIB_RELEASE ${dlib_targetdir}/${CMAKE_SHARED_LIBRARY_PREFIX}${DLIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD COMMAND
|
||||
${CMAKE_COMMAND} -E copy $<$<CONFIG:Debug>:${DLIB_DEBUG}> $<$<NOT:$<CONFIG:Debug>>:${DLIB_RELEASE}> $<TARGET_FILE_DIR:${TARGET_NAME}>
|
||||
)
|
||||
ENDIF(MSVC OR APPLE)
|
||||
ENDMACRO(ADD_DLIB_TO_POSTBUILD_STEP)
|
||||
|
||||
MACRO(INSTALL_DEBUG_INFO_FILE)
|
||||
IF(WIN32)
|
||||
#install pbd files
|
||||
FOREACH(buildCfg ${CMAKE_CONFIGURATION_TYPES})
|
||||
INSTALL(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${buildCfg}/${PROJECT_NAME}.pdb
|
||||
DESTINATION .
|
||||
CONFIGURATIONS ${buildCfg})
|
||||
ENDFOREACH(buildCfg ${CMAKE_CONFIGURATION_TYPES})
|
||||
ENDIF(WIN32)
|
||||
# TODO: add code for other platforms here
|
||||
ENDMACRO(INSTALL_DEBUG_INFO_FILE)
|
||||
|
||||
|
||||
MACRO(TARGET_BUNDLEFIX TARGET_NAME LIB_DIST)
|
||||
IF(APPLE)
|
||||
INSTALL(CODE "
|
||||
FILE(GLOB_RECURSE QTPLUGINS_FIXUP
|
||||
\"\${CMAKE_INSTALL_PREFIX}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
|
||||
include(BundleUtilities)
|
||||
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}\" \"\${QTPLUGINS_FIXUP}\" \"\${CMAKE_INSTALL_PREFIX}/${LIB_DIST}\")
|
||||
" COMPONENT Runtime)
|
||||
ENDIF(APPLE)
|
||||
ENDMACRO(TARGET_BUNDLEFIX TARGET_NAME)
|
||||
|
||||
if(APPLE)
|
||||
write_file(${CMAKE_CURRENT_BINARY_DIR}/src/bundle_config.cmake "") # Stub for file
|
||||
macro(APPEND_DYNAMIC_LIB LIBRARY)
|
||||
get_filename_component(LIBRARY_PATH ${LIBRARY} PATH)
|
||||
get_filename_component(LIBRARY_NAME ${LIBRARY} NAME)
|
||||
|
||||
get_target_property(projLocation ${PROJECT_NAME} LOCATION)
|
||||
string(REPLACE "/Contents/MacOS/${PROJECT_NAME}" "" MACOSX_BUNDLE_LOCATION ${projLocation})
|
||||
string(REPLACE "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" "$(CONFIGURATION)" APPS ${MACOSX_BUNDLE_LOCATION})
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND cp \"${LIBRARY}\" \"${APPS}/Contents/MacOS/\")
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND install_name_tool -change \"${LIBRARY}\" \"@executable_path/../MacOS/${LIBRARY_NAME}\" \"${projLocation}\")
|
||||
set(BUNDLE_LIBRARIES_MOVE "${BUNDLE_LIBRARIES_MOVE};${APPS}/Contents/MacOS/${LIBRARY_NAME}")
|
||||
set(BUNDLE_DIRECTORY_MOVE "${BUNDLE_DIRECTORY_MOVE};${LIBRARY_PATH}")
|
||||
# override fix_bundle config
|
||||
write_file(${CMAKE_CURRENT_BINARY_DIR}/bundle_config.cmake "
|
||||
set(BUNDLE_LIBRARIES_MOVE \"${BUNDLE_LIBRARIES_MOVE}\")
|
||||
set(BUNDLE_DIRECTORY_MOVE \"${BUNDLE_DIRECTORY_MOVE}\")
|
||||
")
|
||||
endmacro(APPEND_DYNAMIC_LIB)
|
||||
endif(APPLE)
|
||||
@@ -0,0 +1,20 @@
|
||||
Quick reference to CMake
|
||||
========================
|
||||
|
||||
if(<constant>)
|
||||
|
||||
True if the constant is `1`, `ON`, `YES`, `TRUE`, `Y`, or a non-zero number.
|
||||
False if the constant is `0`, `OFF`, `NO`, `FALSE`, `N`, `IGNORE`, `NOTFOUND`,
|
||||
the empty string, or ends in the suffix `-NOTFOUND`. Named boolean constants
|
||||
are case-insensitive. If the argument is not one of these constants, it is
|
||||
treated as a variable.
|
||||
|
||||
if(<variable>)
|
||||
|
||||
True if the variable is defined to a value that is not a false constant. False otherwise.
|
||||
(Note macro arguments are not variables.)
|
||||
|
||||
if(DEFINED <variable>)
|
||||
|
||||
True if the given variable is defined. It does not matter if the variable is
|
||||
true or false just if it has been set. (Note macro arguments are not variables.)
|
||||
@@ -1,4 +0,0 @@
|
||||
MACRO(SETUP_TESTING)
|
||||
enable_testing()
|
||||
include(CTest)
|
||||
ENDMACRO(SETUP_TESTING)
|
||||
@@ -1,31 +0,0 @@
|
||||
macro(VersionConf prjName from_file to_file iconname)
|
||||
SET(COMPANYNAME "\"${PROJECT_COMPANYNAME}\"")
|
||||
SET(filecontent "
|
||||
SET(ICON_FILE ${ICON_FILE})
|
||||
SET(MAJOR_VER ${MAJOR} )
|
||||
SET(MINOR_VER1 ${MINOR})
|
||||
SET(MINOR_VER2 ${PATCH})
|
||||
SET(PRODUCTNAME ${prjName})
|
||||
SET(COMPANYNAME ${COMPANYNAME})
|
||||
SET(PRODUCTDOMAIN ${PROJECT_DOMAIN})
|
||||
SET(SHORTPRODUCTNAME ${prjName})
|
||||
SET(ICONNAME ${iconname})
|
||||
SET(PRODUCTCOPYRIGHT ${PROJECT_COPYRIGHT})
|
||||
CONFIGURE_FILE(${from_file} ${to_file})
|
||||
")
|
||||
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/versionConfFile.cmake" "${filecontent}")
|
||||
|
||||
ADD_CUSTOM_TARGET(VersionConf
|
||||
ALL
|
||||
DEPENDS ${to_file})
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${to_file}
|
||||
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_BINARY_DIR}/versionConfFile.cmake)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(${to_file} PROPERTIES GENERATED TRUE
|
||||
#HEADER_FILE_ONLY TRUE
|
||||
)
|
||||
ADD_DEPENDENCIES(${prjName} VersionConf)
|
||||
endmacro(VersionConf)
|
||||
@@ -0,0 +1,11 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
robo3t:
|
||||
image: robo3t
|
||||
restart: unless-stopped
|
||||
build: .
|
||||
network_mode: host
|
||||
environment:
|
||||
- DISPLAY=${DISPLAY}
|
||||
volumes:
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix
|
||||
@@ -0,0 +1,243 @@
|
||||
Building Robo 3T (macOS and Linux)
|
||||
==================
|
||||
|
||||
A. Prerequisites
|
||||
-------------
|
||||
|
||||
1. Modern Compiler
|
||||
A modern and complete C++17 compiler:
|
||||
```
|
||||
GCC 8.0 or newer
|
||||
Clang 7 (or Apple XCode 10 Clang) or newer
|
||||
On Linux and macOS, the libcurl library and header is required. macOS includes libcurl.
|
||||
Fedora/RHEL - dnf install libcurl-devel
|
||||
Ubuntu/Debian - apt-get install libcurl-dev
|
||||
Python 3.7
|
||||
```
|
||||
|
||||
For details see: https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source
|
||||
|
||||
2. Install CMake (3.10.0 or later)
|
||||
|
||||
Example:
|
||||
```
|
||||
sudo apt-get install build-essential
|
||||
// or
|
||||
wget http://www.cmake.org/files/v3.10/cmake-3.10.0.tar.gz
|
||||
tar xf cmake-3.10.0.tar.gz
|
||||
cd cmake-3.10.0
|
||||
./configure // macos: env CC=gcc ./bootstrap
|
||||
make
|
||||
sudo make install
|
||||
(sudo make uninstall)
|
||||
```
|
||||
|
||||
3. Install [Scons](http://scons.org/tag/releases.html) (3.1.2 or later)
|
||||
|
||||
```
|
||||
cd scons-**
|
||||
python setup.py install
|
||||
```
|
||||
|
||||
4. Install Qt
|
||||
|
||||
macOS: Qt 5.12.8
|
||||
Linux: Qt 5.9.3
|
||||
|
||||
```sh
|
||||
Example installation for macOS and Ubuntu:
|
||||
Go to http://download.qt.io/archive/qt/5.x/5.x.y/
|
||||
Download, run and install
|
||||
qt-opensource-mac-x64-clang-5.x.y.dmg (for macOS)
|
||||
qt-opensource-linux-x64-5.x.y.run (for Linux)
|
||||
After successful installation you should have
|
||||
/path/to/qt-5.x.y/5.x/clang_64 (for macOS)
|
||||
/path/to/qt-5.x.y/5.x/gcc_64 (for Linux)
|
||||
|
||||
More information for installing on Ubuntu:
|
||||
https://wiki.qt.io/Install_Qt_5_on_Ubuntu
|
||||
```
|
||||
|
||||
5. Download and Build OpenSSL - (explained below in section B)
|
||||
|
||||
B. Building Robo 3T and Dependencies
|
||||
-------------
|
||||
Ref: https://wiki.openssl.org/index.php/Compilation_and_Installation#OS_X
|
||||
|
||||
#### 1. Build OpenSSL
|
||||
|
||||
(Todo: Can we find pre-built OpenSSL? To check => https://wiki.openssl.org/index.php/Binaries)
|
||||
|
||||
Version 1.1.1f (Mar/2020) on macOS
|
||||
Version 1.0.2o (Mar/2018) on Linux
|
||||
|
||||
**macOS:**
|
||||
```sh
|
||||
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1f.tar.gz
|
||||
tar -xf openssl-1.1.1f.tar.gz
|
||||
cd /opt/openssl-1.1.1f
|
||||
|
||||
(make clean)
|
||||
./Configure darwin64-x86_64-cc shared no-ssl2 no-ssl3 no-comp -mmacosx-version-min=xy.zt
|
||||
// Notes:
|
||||
// 1. Change -mmacosx-version same as CMAKE_OSX_DEPLOYMENT_TARGET in
|
||||
// https://github.com/Studio3T/robomongo/blob/master/CMakeLists.txt
|
||||
// 2. With openssl version 1.1.1, configure command with rpath stopped working
|
||||
// Last working configure command with rpath was:
|
||||
// ./Configure darwin64-x86_64-cc shared --openssldir="@rpath"
|
||||
|
||||
make (or sudo make)
|
||||
|
||||
// Verify libssl.dylib and libcrypto.dylib files are created
|
||||
ll lib*.dylib
|
||||
|
||||
// Due to broken './Configure' command with rpath above, these extra steps are also required:
|
||||
install_name_tool -id "@rpath/lib/libssl.1.1.dylib" libssl.1.1.dylib
|
||||
install_name_tool -change /usr/local/lib/libcrypto.1.1.dylib @rpath/lib/libcrypto.1.1.dylib libssl.1.1.dylib
|
||||
install_name_tool -id "@rpath/lib/libcrypto.1.1.dylib" libcrypto.1.1.dylib
|
||||
// Finally, we should have this output using otool:
|
||||
otool -L libssl.1.1.dylib
|
||||
libssl.dylib:
|
||||
@rpath/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
|
||||
@rpath/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
|
||||
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
|
||||
|
||||
otool -L libcrypto.1.1.dylib
|
||||
libcrypto.dylib:
|
||||
@rpath/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
|
||||
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
|
||||
|
||||
// For robo-unit-test dependency:
|
||||
mkdir lib/
|
||||
cp lib*.dylib/lib/
|
||||
```
|
||||
|
||||
|
||||
**Linux:**
|
||||
|
||||
```sh
|
||||
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2o.tar.gz
|
||||
tar -xf openssl-1.0.2o.tar.gz
|
||||
cd /opt/openssl-1.0.2o
|
||||
(make clean)
|
||||
./config shared
|
||||
make
|
||||
// Verify libssl.so and libcrypto.so are created
|
||||
```
|
||||
|
||||
#### 2. Build Robo 3T Shell (fork of MongoDB)
|
||||
|
||||
Clone Robo 3T Shell and make sure you are on latest branch:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo-shell.git
|
||||
$ cd robomongo-shell
|
||||
$ git branch // "roboshell-v4.2"
|
||||
```
|
||||
|
||||
Set special environment variable `ROBOMONGO_CMAKE_PREFIX_PATH` to point to a set of
|
||||
directories:
|
||||
|
||||
1. Location of Qt 5 SDK
|
||||
2. Location of Robo 3T Shell
|
||||
3. Location of OpenSSL
|
||||
|
||||
Separate directories by semicolon `;` (not colon):
|
||||
|
||||
// macOS example:
|
||||
export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5.x.y/5.x/clang_64;/opt/robo-shell;/opt/openssl-x.y.z"
|
||||
|
||||
// Ubuntu example:
|
||||
export ROBOMONGO_CMAKE_PREFIX_PATH="/home/<user>/Qt5.x.y/5.x.y/gcc_64/;/opt/<user>/robo-shell;/opt/openssl-x.y.z"
|
||||
|
||||
Install pip requirements
|
||||
|
||||
```
|
||||
// macOS / Linux
|
||||
pip3 install --user -r etc/pip/compile-requirements.txt
|
||||
pip3 install --user -r etc/pip/dev-requirements.txt
|
||||
```
|
||||
|
||||
```
|
||||
// For ubuntu, the followings might be needed
|
||||
sudo aptitude install libcurl-dev
|
||||
|
||||
sudo pip3 install Typing
|
||||
sudo pip3 install Cheetah
|
||||
```
|
||||
|
||||
Build Robo 3T Shell (in release mode by default):
|
||||
|
||||
```sh
|
||||
$ bin/build
|
||||
```
|
||||
|
||||
Build Robo 3T Shell in debug mode:
|
||||
|
||||
```sh
|
||||
$ bin/build debug
|
||||
```
|
||||
|
||||
Clean build files for release mode:
|
||||
```sh
|
||||
$ bin/clean
|
||||
```
|
||||
|
||||
Clean build files for debug mode:
|
||||
```sh
|
||||
$ bin/clean debug
|
||||
```
|
||||
|
||||
For more information refer to [Building Robo 3T Shell](BuildRobo3TShell.md)
|
||||
|
||||
#### 3. Build Robo 3T
|
||||
|
||||
Download Robo 3T:
|
||||
|
||||
$ git clone https://github.com/Studio3T/robomongo
|
||||
$ cd robomongo
|
||||
|
||||
Run configuration step:
|
||||
|
||||
$ bin/configure
|
||||
|
||||
And finally, build Robo 3T:
|
||||
|
||||
$ bin/build
|
||||
|
||||
To run robomongo:
|
||||
|
||||
$ bin/run
|
||||
|
||||
|
||||
**Debug mode**
|
||||
|
||||
For debug mode append `debug` for each command
|
||||
e.g. `bin/configure debug` or `bin/build debug` etc..
|
||||
|
||||
**Helper commands**
|
||||
|
||||
Clean build files (in order to start build from scratch):
|
||||
|
||||
$ bin/clean
|
||||
|
||||
Install Robo 3T to `build/release/install` folder:
|
||||
|
||||
$ bin/install
|
||||
|
||||
Create package for your OS in `build/release/package` folder:
|
||||
|
||||
$ bin/pack
|
||||
|
||||
**Important Notes**
|
||||
- For macOS builds, it might be needed to patch QScintilla with `QScintilla-2.9.3-xcode8.patch` found at robomongo repository's root.
|
||||
|
||||
- For Ubuntu 16.04 builds, it has been reported that Robo 3T /bin/configure step might fail and installing `mesa-common-dev` package solves it. Details: https://github.com/paralect/robomongo/issues/1268
|
||||
|
||||
- For Centos builds, Robo 3T /bin/configure step might fail due to error: `failed to find gl/gl.h`. In this case, the following packages must be installed:
|
||||
|
||||
```sh
|
||||
$ sudo yum install mesa-libGL
|
||||
$ sudo yum install mesa-libGL-devel
|
||||
```
|
||||
|
||||
@@ -0,0 +1,229 @@
|
||||
Building Robo 3T (Windows)
|
||||
==============================
|
||||
|
||||
A. Prerequisites
|
||||
-------------
|
||||
|
||||
#### 0. Git
|
||||
|
||||
Download Git installer from http://git-scm.com (we are using Git-2.7.0-64-bit).
|
||||
|
||||
When you'll see "Adjusting your PATH environment" wizard page, select
|
||||
"Use Git from the Windows Command Prompt" option. This will allow to
|
||||
execute Git from both Windows Command Prompt and Bash. This is required,
|
||||
because both MongoDB and Robo 3T uses `git` command during build process
|
||||
which must be perfomed from Windows Command Prompt (not Bash).
|
||||
|
||||
On "Configuring the line ending conversion" wizard page, select "Checkout
|
||||
Windows-style, commit Unix-style line ending" option. This is a common mode
|
||||
for cross-platform projects and required by both MongoDB and Robo 3T.
|
||||
|
||||
All other Git installer options are not important (use defaults).
|
||||
|
||||
If you are using SSH clone url, start SSH agent and add your private key
|
||||
with this commands in Git Bash:
|
||||
|
||||
$ eval `ssh-agent` # starts ssh agent
|
||||
$ ssh-add ~/.ssh/mykey # add your key (which can be in any folder)
|
||||
|
||||
#### 1. Visual Studio 2017 version 15.9 or newer (complete C++17 compiler)
|
||||
|
||||
We use Visual Studio 2017 version 15.9.22, and recommend to use this version to save
|
||||
time for Qt compilation. Currently prebuilt binaries for Qt are available
|
||||
from official Qt site. But you can use any newer version and compile Qt library
|
||||
yourself.
|
||||
|
||||
#### 2. ActivePython 3.7.4
|
||||
|
||||
Download ActivePython from http://www.activestate.com/activepython/downloads
|
||||
|
||||
Download MSI x64 version. Use default settings in installation wizard.
|
||||
This installer will add path to `python.exe` to your `PATH` variable.
|
||||
|
||||
#### 3. SCons 3.1.2 or newer
|
||||
|
||||
We use SCons 3.1.2
|
||||
|
||||
Download Scons from http://scons.org/tag/releases.html
|
||||
|
||||
Use ZIP archive, not MSI
|
||||
|
||||
Open Command Prompt, navigate to Scons directory and run:
|
||||
|
||||
$ setup.py install
|
||||
|
||||
This command will make `scons` command accessible from Command Prompt
|
||||
|
||||
#### 4. CMake
|
||||
We use CMake 3.10.0
|
||||
Download CMake from https://cmake.org/download
|
||||
|
||||
Use installer package, it will allow you to configure your PATH variable and `cmake`
|
||||
command will be available from Command Prompt. For this set "Add CMake to the system
|
||||
PATH for current user" in the installer wizard page.
|
||||
|
||||
#### 5. Qt 5.12.8
|
||||
|
||||
Download and install Qt from http://download.qt.io/archive/qt
|
||||
Run the installer and select only 'msvc2017 64-bit'
|
||||
|
||||
#### 6. OpenSSL (1.1.1f)
|
||||
Download openssl from https://www.openssl.org/source/old/1.1.1/openssl-1.1.1f.tar.gz
|
||||
|
||||
B. Building Robo 3T and Dependencies
|
||||
-------------
|
||||
|
||||
#### 1. Build OpenSSL
|
||||
|
||||
(Todo: Can we find pre-built OpenSSL? To check => https://wiki.openssl.org/index.php/Binaries)
|
||||
|
||||
Steps to build OpenSSL on windows:
|
||||
- Ensure you have perl installed on your machine (e.g. ActiveState or Strawberry), and available on your %PATH%
|
||||
- Ensure you have NASM installed on your machine, and available on your %PATH%
|
||||
|
||||
```sh
|
||||
Open Visual Studio tool x64 Cross Tools Command prompt
|
||||
cd to the directory where you have openssl sources cd c:\myPath\openssl
|
||||
perl Configure VC-WIN64A
|
||||
(nmake clean)
|
||||
nmake
|
||||
// Verify these files are created:
|
||||
libcrypto-1_1x64.dll, libssl-1_1-x64.dll (with all the build additionals such as .pdb .lik or static .lib)
|
||||
```
|
||||
|
||||
Refer to OpenSSL documentation for more information:
|
||||
https://wiki.openssl.org/index.php/Compilation_and_Installation#OpenSSL_1.1.0
|
||||
|
||||
#### 2. Build Robo 3T Shell (fork of MongoDB)
|
||||
|
||||
Clone Robo 3T Shell and make sure to be at `roboshell-v4.2` branch:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo-shell.git
|
||||
$ cd robomongo-shell
|
||||
$ git branch // roboshell-v4.2
|
||||
```
|
||||
|
||||
Set environment variable `ROBOMONGO_CMAKE_PREFIX_PATH`, required by Robo 3T-Shell and Robo 3T build scripts, needs to be set according to the following directories:
|
||||
|
||||
1. Location of Qt SDK
|
||||
2. Location of Robo 3T Shell
|
||||
3. Location of OpenSSL
|
||||
|
||||
**Important:**
|
||||
Make sure to move all your repos (robo, openssl, robo-shell etc..) into root directory of your drives (e.g. e:\robo-shell) and keep short repo names (e.g. robo-shell instead of robomongo-shell) otherwise you might end up with this error `If you see fatal error LNK1170: line in command file contains 131071 or more characters`
|
||||
|
||||
Separate directories by semicolon `;` (not colon). You can do this in Command Prompt:
|
||||
|
||||
> setx ROBOMONGO_CMAKE_PREFIX_PATH "e:\Qt\Qt5.9.3\5.9.3\msvc2015_64;e:\robo-shell;e:\openssl-x.y.z"
|
||||
|
||||
Open '**a new**' VS2017 x64 Native Tools Command Prompt and navigate to `robomongo-shell` folder.
|
||||
|
||||
|
||||
**Note:**
|
||||
|
||||
Run
|
||||
`pip3 install --user -r ../etc/pip/dev-requirements.txt`
|
||||
|
||||
If you have this type of errors:
|
||||
|
||||
```
|
||||
// 1st error
|
||||
ImportError: No module named typing
|
||||
// Solution:
|
||||
pip install Typing
|
||||
pip install Cheetah
|
||||
|
||||
// 2nd error: shell: cheetah module not found
|
||||
// Solution:
|
||||
copy C:\Users\<user>\AppData\Roaming\Python\Python27\site-packages
|
||||
to C:\Python27\Lib\site-packages
|
||||
|
||||
```
|
||||
|
||||
Build shell in release mode:
|
||||
|
||||
> bin\build
|
||||
|
||||
Build shell in debug mode:
|
||||
|
||||
> bin\build debug
|
||||
|
||||
Note that backslash is used (`\`), and not forward slash (`/`).
|
||||
|
||||
Clean build files for release mode:
|
||||
|
||||
> bin\clean
|
||||
|
||||
Clean build files for debug mode:
|
||||
|
||||
> bin\clean debug
|
||||
|
||||
Refer to MongoDB documentation for additional information:
|
||||
https://docs.mongodb.org/manual/contributors/tutorial/build-mongodb-from-source/#windows-specific-instructions
|
||||
|
||||
|
||||
#### 3. Build Robo 3T
|
||||
|
||||
Clone Robo 3T:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo.git
|
||||
```
|
||||
|
||||
Open VS2017 x64 Native Tools Command Prompt and navigate to `robomongo` folder.
|
||||
|
||||
Run configuration step:
|
||||
|
||||
> bin\configure
|
||||
|
||||
And finally, build Robo 3T:
|
||||
|
||||
> bin\build
|
||||
|
||||
```
|
||||
// If you see fatal error LNK1170: line in command file contains 131071 or more characters
|
||||
Solution-1:
|
||||
1. Move all your repos (robo, openssl, robo-shell etc..) into root directory of your drives.
|
||||
2. Use short names e.g. robo-shell instead of robomongo-shell.
|
||||
3. Update ROBOMONGO_CMAKE_PREFIX_PATH env. variable and try a fresh (clean) build.
|
||||
|
||||
Solution-2:
|
||||
1. Create environment variable MongoDB_OBJECTS, set a short path e.g. "C:/"
|
||||
2. Open a new VS2017 x64 Native Tools Command Prompt and build Robo 3T Shell
|
||||
3. Robo 3T Shell build script will copy the object files into MongoDB_OBJECTS directory
|
||||
4. Build Robo 3T again (clean build might be needed)
|
||||
```
|
||||
|
||||
**Run Robo 3T**
|
||||
|
||||
Install Robo 3T to `build\Release\install` folder:
|
||||
|
||||
> bin\install
|
||||
|
||||
And run Robo 3T
|
||||
|
||||
> \robomongo\build\Release\install\robo3t.exe
|
||||
|
||||
**Package Robo 3T**
|
||||
|
||||
Install Robo 3T to `build\Release\install` folder:
|
||||
|
||||
> bin\pack
|
||||
|
||||
Note: nsis-2.46-setup.exe with Full setup must be present.
|
||||
|
||||
|
||||
**Debug mode**
|
||||
|
||||
For debug mode append `debug` for each command
|
||||
e.g. `bin\configure debug` or `bin\build debug` etc..
|
||||
|
||||
**Helper commands**
|
||||
|
||||
Clean build files (in order to start build from scratch):
|
||||
|
||||
> bin\clean
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
Building Robo 3T Shell
|
||||
========================
|
||||
|
||||
Robo 3T uses [modified version](https://github.com/paralect/robomongo-shell/tree/roboshell-v3.4) of MongoDB that we call Robo 3T Shell.
|
||||
Before you can build Robo 3T, you have to build Robo 3T Shell. The following instructions are applicable only for Mac OS X and Linux. For Windows instructions please check [Building Robo 3T on Windows](BuildRobo3TOnWindows.md).
|
||||
|
||||
Build for Mac OS X or Linux
|
||||
---------------------------
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
1. Install [Scons](http://scons.org/tag/releases.html) (2.3.5 or newer)
|
||||
|
||||
|
||||
2. Clone Robo 3T Shell and checkout to `roboshell-v3.4` branch:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo-shell.git
|
||||
$ cd robomongo-shell
|
||||
$ git checkout roboshell-v3.4
|
||||
```
|
||||
|
||||
3. Build Robo 3T Shell:
|
||||
|
||||
```sh
|
||||
$ bin/build
|
||||
```
|
||||
|
||||
Done! Now you can continue with building Robo 3T
|
||||
with embedded MongoDB 3.4 shell (that you've just built).
|
||||
|
||||
|
||||
<br/>
|
||||
#### Advanced helper commands
|
||||
|
||||
The following commands are needed only if you are planning to develop or deeper understand
|
||||
Robo 3T or Robo 3T Shell build processes.
|
||||
|
||||
Clean build files for release mode (folder `build/opt` will be removed):
|
||||
|
||||
$ bin/clean
|
||||
|
||||
Here is a command that is executed by `bin/build` script:
|
||||
|
||||
$ scons mongo -j8 --release --osx-version-min=10.9
|
||||
|
||||
Argument `--osx-version-min` is required only for Mac OS.
|
||||
|
||||
Build MongoDB shell in debug mode:
|
||||
|
||||
$ scons mongo -j8 --dbg
|
||||
|
||||
Clear builds:
|
||||
|
||||
$ scons -c mongo # clears release build
|
||||
$ scons -c --dbg mongo # clears debug build
|
||||
@@ -0,0 +1,59 @@
|
||||
Building Robomongo Shell (Old Document)
|
||||
========================
|
||||
|
||||
**Important Note:**
|
||||
This document is for versions 1.0 and earlier and for MongoDB 3.2.
|
||||
See latest documents here: https://github.com/Studio3T/robomongo/wiki
|
||||
|
||||
Robomongo uses [modified version](https://github.com/paralect/robomongo-shell/tree/roboshell-v3.2) of MongoDB that we call Robomongo Shell. Before you can build Robomongo, you have to build Robomongo Shell. The following instructions are applicable only for Mac OS X and Linux. For Windows instructions please check [Building Robomongo on Windows](BuildingRobomongoOnWindows.md).
|
||||
|
||||
Build for Mac OS X or Linux
|
||||
---------------------------
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
1. Install [Scons](http://scons.org/tag/releases.html) (2.4 or later)
|
||||
|
||||
|
||||
2. Clone Robomongo Shell and checkout to `roboshell-v3.2` branch:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo-shell.git
|
||||
$ cd robomongo-shell
|
||||
$ git checkout roboshell-v3.2
|
||||
```
|
||||
|
||||
3. Build Robomongo Shell:
|
||||
|
||||
```sh
|
||||
$ bin/build
|
||||
```
|
||||
|
||||
Done! Now you can continue with [Step 2](BuildingRobomongo.md#step-2) and build Robomongo
|
||||
with embedded MongoDB 3.2 shell (that you've just built).
|
||||
|
||||
|
||||
<br/>
|
||||
#### Advanced helper commands
|
||||
|
||||
The following commands are needed only if you are planning to develop or deeper understand
|
||||
Robomongo or Robomongo Shell build processes.
|
||||
|
||||
Clean build files for release mode (folder `build/opt` will be removed):
|
||||
|
||||
$ bin/clean
|
||||
|
||||
Here is a command that is executed by `bin/build` script:
|
||||
|
||||
$ scons mongo -j8 --release --osx-version-min=10.9
|
||||
|
||||
Argument `--osx-version-min` is required only for Mac OS.
|
||||
|
||||
Build MongoDB shell in debug mode:
|
||||
|
||||
$ scons mongo -j8 --dbg
|
||||
|
||||
Clear builds:
|
||||
|
||||
$ scons -c mongo # clears release build
|
||||
$ scons -c --dbg mongo # clears debug build
|
||||
@@ -0,0 +1,143 @@
|
||||
Building Robomongo (Mac OS X and Linux)
|
||||
==================
|
||||
|
||||
**Important Note:**
|
||||
This document is for versions 1.0 and earlier and for MongoDB 3.2.
|
||||
See latest documents here: https://github.com/Studio3T/robomongo/wiki
|
||||
|
||||
A. Prerequisites
|
||||
-------------
|
||||
|
||||
1. Install CMake (3.2 or later)
|
||||
2. Install [Scons](http://scons.org/tag/releases.html) (2.4 or later)
|
||||
3. Install Qt 5.7
|
||||
|
||||
```sh
|
||||
Example installation for MAC OSX and Ubuntu:
|
||||
Go to http://download.qt.io/archive/qt/5.7/5.7.0/
|
||||
Download, run and install
|
||||
qt-opensource-mac-x64-clang-5.7.0.dmg (for MAC OSX)
|
||||
qt-opensource-linux-x64-5.7.0.run (for Linux)
|
||||
After successful installation you should have
|
||||
/path/to/qt-5.7.0/5.7/clang_64 (for MAC OSX)
|
||||
/path/to/qt-5.7.0/5.7/gcc_64 (for Linux)
|
||||
|
||||
More information for installing on Ubuntu:
|
||||
https://wiki.qt.io/Install_Qt_5_on_Ubuntu
|
||||
```
|
||||
|
||||
4. Download and Build OpenSSL (1.0.1p) - (explained below in section B)
|
||||
|
||||
B. Building Robomongo and Dependencies
|
||||
-------------
|
||||
|
||||
#### Step 1. Build OpenSSL (1.0.1p)
|
||||
|
||||
Steps to build OpenSSL on MAC:
|
||||
|
||||
```sh
|
||||
Download openssl-1.0.1p (ftp://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1p.tar.gz)
|
||||
tar -xvzf openssl-1.0.1p.tar.gz
|
||||
cd /Users/<user>/Downloads/openssl-1.0.1p
|
||||
./Configure darwin64-x86_64-cc shared --openssldir="@rpath"
|
||||
make (or sudo make)
|
||||
mkdir lib
|
||||
cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib lib/
|
||||
```
|
||||
Helper Commands
|
||||
```sh
|
||||
// to start fresh build
|
||||
make clean
|
||||
```
|
||||
|
||||
|
||||
Steps to build OpenSSL on Linux:
|
||||
|
||||
```sh
|
||||
Download openssl-1.0.1p (ftp://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1p.tar.gz)
|
||||
tar -xvzf openssl-1.0.1p.tar.gz
|
||||
cd /home/<user>/Downloads/openssl-1.0.1p
|
||||
./config shared
|
||||
make
|
||||
mkdir lib
|
||||
cp libssl* libcrypto* lib/
|
||||
```
|
||||
|
||||
#### Step 2. Build Robomongo Shell (fork of MongoDB)
|
||||
|
||||
Clone Robomongo Shell and checkout to `roboshell-v3.2` branch:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo-shell.git
|
||||
$ cd robomongo-shell
|
||||
$ git checkout roboshell-v3.2
|
||||
```
|
||||
|
||||
Set special environment variable `ROBOMONGO_CMAKE_PREFIX_PATH` to point to a set of
|
||||
directories:
|
||||
|
||||
1. Location of Qt 5 SDK
|
||||
2. Location of Robomongo Shell
|
||||
3. Location of OpenSSL
|
||||
|
||||
Separate directories by semicolon `;` (not colon):
|
||||
|
||||
// MAC OSX example:
|
||||
$ export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5.7.0/5.7/clang_64;/path/to/robomongo-shell;/path/to/openssl-1.0.1p"
|
||||
// Ubuntu example:
|
||||
$ export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5.7.0/5.7/gcc_64;/path/to/robomongo-shell;/path/to/openssl-1.0.1p"
|
||||
|
||||
|
||||
Build Robomongo Shell:
|
||||
|
||||
```sh
|
||||
$ bin/build
|
||||
```
|
||||
|
||||
For more information refer to [Building Robomongo Shell](BuildingMongoDB.md)
|
||||
|
||||
#### Step 3. Build Robomongo
|
||||
|
||||
Download Robomongo:
|
||||
|
||||
$ git clone https://github.com/paralect/robomongo
|
||||
$ cd robomongo
|
||||
|
||||
Run configuration step:
|
||||
|
||||
$ bin/configure
|
||||
|
||||
And finally, build Robomongo:
|
||||
|
||||
$ bin/build
|
||||
|
||||
To run robomongo:
|
||||
|
||||
$ bin/run
|
||||
|
||||
|
||||
**Helper commands**
|
||||
|
||||
Clean build files (in order to start build from scratch):
|
||||
|
||||
$ bin/clean
|
||||
|
||||
Install Robomongo to `build/release/install` folder:
|
||||
|
||||
$ bin/install
|
||||
|
||||
Create package for your OS in `build/release/package` folder:
|
||||
|
||||
$ bin/pack
|
||||
|
||||
**Important Notes**
|
||||
- For Ubuntu 16.04 builds, it has been reported that Robomongo /bin/configure step might fail and installing mesa-common-dev package solves it. Details: https://github.com/paralect/robomongo/issues/1268
|
||||
|
||||
- For Centos builds, Robomongo /bin/configure step might fail due to error: `failed to find gl/gl.h`. In this case, the following packages must be installed:
|
||||
|
||||
```sh
|
||||
$ sudo yum install mesa-libGL
|
||||
$ sudo yum install mesa-libGL-devel
|
||||
```
|
||||
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
Building Robomongo (Windows)
|
||||
==============================
|
||||
|
||||
**Important Note:**
|
||||
This document is for versions 1.0 and earlier and for MongoDB 3.2.
|
||||
See latest documents here: https://github.com/Studio3T/robomongo/wiki
|
||||
|
||||
A. Prerequisites
|
||||
-------------
|
||||
|
||||
#### 0. Git
|
||||
|
||||
Download Git installer from http://git-scm.com (we are using Git-2.7.0-64-bit).
|
||||
|
||||
When you'll see "Adjusting your PATH environment" wizard page, select
|
||||
"Use Git from the Windows Command Prompt" option. This will allow to
|
||||
execute Git from both Windows Command Prompt and Bash. This is required,
|
||||
because both MongoDB and Robomongo uses `git` command during build process
|
||||
which must be perfomed from Windows Command Prompt (not Bash).
|
||||
|
||||
On "Configuring the line ending conversion" wizard page, select "Checkout
|
||||
Windows-style, commit Unix-style line ending" option. This is a common mode
|
||||
for cross-platform projects and required by both MongoDB and Robomongo.
|
||||
|
||||
All other Git installer options are not important (use defaults).
|
||||
|
||||
If you are using SSH clone url, start SSH agent and add your private key
|
||||
with this commands in Git Bash:
|
||||
|
||||
$ eval `ssh-agent` # starts ssh agent
|
||||
$ ssh-add ~/.ssh/mykey # add your key (which can be in any folder)
|
||||
|
||||
#### 1. Visual Studio 2013 (i.e. MSVC12) Update 4 or newer
|
||||
|
||||
We use Visual Studio 2013 Update 5, and recommend to use this version to save
|
||||
time for Qt compilation. Currently prebuilt binaries for Qt are available
|
||||
from official Qt site. But you can use any newer version and compile Qt library
|
||||
yourself.
|
||||
|
||||
If you already have VS2013, you can download Update 5 here:
|
||||
https://www.microsoft.com/en-us/download/details.aspx?id=48129
|
||||
|
||||
Update 4 or newer version is required to compile MongoDB.
|
||||
|
||||
#### 2. ActivePython 2.7
|
||||
|
||||
Download ActivePython from http://www.activestate.com/activepython/downloads
|
||||
|
||||
Download MSI x64 version. Use default settings in installation wizard.
|
||||
This installer will add path to `python.exe` to your `PATH` variable.
|
||||
|
||||
#### 3. Scons 2.3.4
|
||||
|
||||
Download Scons from http://scons.org/tag/releases.html
|
||||
|
||||
Use ZIP archive, not MSI (we use scons-2.3.4.zip)
|
||||
|
||||
Open Command Prompt, navigate to Scons directory and run:
|
||||
|
||||
$ setup.py install
|
||||
|
||||
This command will make `scons` command accessible from Command Prompt
|
||||
|
||||
#### 4. CMake
|
||||
Download CMake from https://cmake.org/download (we use cmake-3.3.2-win32-x86.exe)
|
||||
|
||||
Use installer package, it will allow you to configure your PATH variable and `cmake`
|
||||
command will be available from Command Prompt. For this set "Add CMake to the system
|
||||
PATH for current user" in the installer wizard page.
|
||||
|
||||
#### 5. Qt 5.7
|
||||
|
||||
Download Qt from http://www.qt.io/download-open-source/ (we use Qt Online installer)
|
||||
|
||||
When installing Qt, only one component is required by Robomongo:
|
||||
|
||||
Qt 5.7
|
||||
[x] msvc2013 64-bit.
|
||||
|
||||
This components contains prebuilt 64-bit binaries for Visual Studio 2013.
|
||||
|
||||
You may uncheck all other components to download as little as possible.
|
||||
|
||||
#### 6. OpenSSL (1.0.1p)
|
||||
Download openssl-1.0.1p (ftp://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1p.tar.gz)
|
||||
|
||||
|
||||
|
||||
B. Building Robomongo and Dependencies
|
||||
-------------
|
||||
|
||||
#### 1. Build OpenSSL (1.0.1p)
|
||||
|
||||
Steps to build OpenSSL on windows:
|
||||
```sh
|
||||
Open Visual Studio tool x64 Cross Tools Command prompt
|
||||
cd to the directory where you have openssl sources cd c:\myPath\openssl
|
||||
perl Configure VC-WIN64A
|
||||
ms\do_win64a
|
||||
nmake -f ms\ntdll.mak
|
||||
```
|
||||
|
||||
**Check Point:**
|
||||
After successful build, newly created sub directory out32dll should contain dynamic lib files libeay32.lib (and libeay32.dll) and ssleay32.lib (and ssleay32.dll); and associated include files will be in newly created folder "inc32".
|
||||
|
||||
Helper Commands:
|
||||
```sh
|
||||
// clean to start fresh build
|
||||
nmake -f ms\ntdll.mak clean
|
||||
```
|
||||
|
||||
Refer to OpenSSL documentation for more information:
|
||||
https://wiki.openssl.org/index.php/Compilation_and_Installation#W64
|
||||
|
||||
#### 2. Build Robomongo Shell (fork of MongoDB)
|
||||
|
||||
Clone Robomongo Shell and checkout to roboshell-v3.2 branch:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo-shell.git
|
||||
$ cd robomongo-shell
|
||||
$ git checkout roboshell-v3.2
|
||||
```
|
||||
|
||||
Set environment variable `ROBOMONGO_CMAKE_PREFIX_PATH`, required by Robomongo-Shell and Robomongo build scripts, needs to be set according to the following directories:
|
||||
|
||||
1. Location of Qt SDK
|
||||
2. Location of Robomongo Shell
|
||||
3. Location of OpenSSL
|
||||
|
||||
Separate directories by semicolon `;` (not colon). You can do this in Command Prompt:
|
||||
|
||||
> setx ROBOMONGO_CMAKE_PREFIX_PATH "d:\Qt-5\5.7\msvc2013_64;d:\Projects\robomongo-shell;c:\myPath\openssl-1.0.1p"
|
||||
|
||||
|
||||
Open VS2013 x64 Native Tools Command Prompt and navigate to `robomongo-shell` folder.
|
||||
|
||||
Build shell:
|
||||
|
||||
> bin\build
|
||||
|
||||
Note that backslash is used (`\`), and not forward slash (`/`).
|
||||
|
||||
Clean build files:
|
||||
|
||||
> bin\clean
|
||||
|
||||
Refer to MongoDB documentation for additional information:
|
||||
https://docs.mongodb.org/manual/contributors/tutorial/build-mongodb-from-source/#windows-specific-instructions
|
||||
|
||||
|
||||
#### 3. Build Robomongo
|
||||
|
||||
Clone Robomongo:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/paralect/robomongo.git
|
||||
```
|
||||
|
||||
Open VS2013 x64 Native Tools Command Prompt and navigate to `robomongo` folder.
|
||||
|
||||
Run configuration step:
|
||||
|
||||
> bin\configure
|
||||
|
||||
And finally, build Robomongo:
|
||||
|
||||
> bin\build
|
||||
|
||||
|
||||
**Run Robomongo**
|
||||
|
||||
Install Robomongo to `build\Release\install` folder:
|
||||
|
||||
> bin\install
|
||||
|
||||
And run Robomongo
|
||||
|
||||
> \robomongo\build\Release\install\Robomongo.exe
|
||||
|
||||
**Helper commands**
|
||||
|
||||
Clean build files (in order to start build from scratch):
|
||||
|
||||
> bin\clean
|
||||
|
||||
|
||||
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
Runtime Dependencies
|
||||
====================
|
||||
|
||||
This information is for maintainers. If you want to just use Robomongo - download
|
||||
prebuild packages for your platform.
|
||||
|
||||
Runtime dependencies that are not privided by platforms but required by Robomongo are:
|
||||
|
||||
1. Qt libraries
|
||||
2. Qt plugins
|
||||
|
||||
Diagnostic of dependencies
|
||||
--------------------------
|
||||
|
||||
### Windows
|
||||
|
||||
GUI: http://dependencywalker.com/
|
||||
|
||||
### Linux
|
||||
|
||||
#### a. View dependencies of executable or shared library:
|
||||
|
||||
$ ldd robomongo
|
||||
$ readelf -d robomongo
|
||||
|
||||
#### b. View dependency tree of executable or shared library:
|
||||
|
||||
$ lddtree robomongo
|
||||
$ ldd -v robomongo
|
||||
|
||||
#### c. View RPATH or RUNPATH records of executable or shared library:
|
||||
|
||||
$ objdump -x bin/robomongo | grep "RPATH\|RUNPATH"
|
||||
$ readelf -d bin/robomongo | grep RPATH
|
||||
|
||||
For Robomongo binary it should be `$ORIGIN/../lib`
|
||||
|
||||
#### d. Enable extensive logging for run-time shared library search
|
||||
|
||||
$ export LD_DEBUG=files
|
||||
$ bin/robomongo
|
||||
|
||||
Source:
|
||||
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
|
||||
|
||||
#### e. Modify RPATH using `chrpath` and the dynamic linker and RPATH using paths `patchelf`
|
||||
|
||||
$ patchelf --set-rpath '$ORIGIN/../lib' robo
|
||||
|
||||
More: https://nixos.org/patchelf.html
|
||||
|
||||
$ chrpath -r "/somepath/lib/" robomongo
|
||||
|
||||
More:
|
||||
https://linux.die.net/man/1/chrpath
|
||||
http://www.programering.com/a/MTOwcDNwATU.html // examples
|
||||
|
||||
#### f. Show symbols of shared lib file
|
||||
|
||||
Error:
|
||||
```
|
||||
/opt/robo-shell/src/mongo/util/net/ssl_manager_openssl.cpp:667:
|
||||
undefined reference to `SSL_library_init'
|
||||
```
|
||||
|
||||
How to debug:
|
||||
```
|
||||
openssl-1.1.1f: nm -gD libssl.so | grep SSL_library_init
|
||||
// not found, since SSL_library_init() is deprecated in 1.1.1
|
||||
|
||||
openssl-1.0.2o: nm -gD libssl.so | grep SSL_library_init
|
||||
0000000000055520 T SSL_library_init
|
||||
```
|
||||
|
||||
#### g. Update path of a dependency of an executable
|
||||
|
||||
```
|
||||
ldd exec_file | grep libcurlpp
|
||||
libcurlpp.so.1 => not found
|
||||
|
||||
patchelf --replace-needed libcurlpp.so.1 /foo/bar/libcurlpp.so.1 exec_file
|
||||
```
|
||||
|
||||
Another example (libcrypto.so.1.1 => not found):
|
||||
|
||||
```
|
||||
cd /opt/openssl-1.1.1f
|
||||
ldd libssl.so
|
||||
linux-vdso.so.1 => (0x00007ffcaf911000)
|
||||
libcrypto.so.1.1 => not found
|
||||
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd4087b4000)
|
||||
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd4083ea000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007fd408c65000)
|
||||
|
||||
sudo cp libcrypto.so.1.1 /lib/x86_64-linux-gnu/
|
||||
|
||||
ldd libssl.so
|
||||
linux-vdso.so.1 => (0x00007fff0f5d8000)
|
||||
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007fd3dcc1e000)
|
||||
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd3dc854000)
|
||||
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd3dc650000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007fd3dd2d6000)
|
||||
|
||||
```
|
||||
|
||||
### Mac OS X
|
||||
|
||||
#### a. Show dependencies of executable or shared library:
|
||||
|
||||
Show dependencies of executable or shared library:
|
||||
|
||||
$ otool -L robomongo
|
||||
|
||||
View LC_RPATH records of executable or shared library:
|
||||
|
||||
$ otool -l robomongo | grep -C2 RPATH
|
||||
|
||||
(option `-C2` asks grep to output 2 context lines before and after the match)
|
||||
|
||||
For Robomongo binary it should be `$executable_path/../Frameworks`
|
||||
|
||||
More about `otool -l`
|
||||
|
||||
```
|
||||
$ otool -l /opt/robo/build/release/src/robomongo/Robo\ 3T.app/Contents/MacOS/Robo\ 3T
|
||||
....
|
||||
Load command 23
|
||||
cmd LC_LOAD_DYLIB
|
||||
cmdsize 56
|
||||
name @rpath/lib/libssl.1.1.dylib (offset 24)
|
||||
time stamp 2 Thu Jan 1 03:00:02 1970
|
||||
current version 1.1.0
|
||||
compatibility version 1.1.0
|
||||
Load command 24
|
||||
cmd LC_LOAD_DYLIB
|
||||
cmdsize 56
|
||||
name @rpath/lib/libcrypto.1.1.dylib (offset 24)
|
||||
time stamp 2 Thu Jan 1 03:00:02 1970
|
||||
current version 1.1.0
|
||||
compatibility version 1.1.0
|
||||
....
|
||||
Load command 27
|
||||
cmd LC_RPATH
|
||||
cmdsize 48
|
||||
path /opt/Qt5.9.3/5.9.3/clang_64/lib (offset 12)
|
||||
Load command 28
|
||||
cmd LC_RPATH
|
||||
cmdsize 32
|
||||
path /opt/openssl-1.1.1f (offset 12)
|
||||
```
|
||||
|
||||
#### b. Edit dependencies of executable or shared library:
|
||||
```
|
||||
// Before
|
||||
otool -L libssl.dylib
|
||||
libssl.dylib:
|
||||
/usr/local/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
|
||||
/usr/local/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
|
||||
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
|
||||
|
||||
// Edit
|
||||
install_name_tool -id "@rpath/lib/libssl.1.1.dylib" libssl.dylib
|
||||
install_name_tool -change /usr/local/lib/libcrypto.1.1.dylib @rpath/lib/libcrypto.1.1.dylib libssl.dylib
|
||||
|
||||
// After
|
||||
otool -L libssl.dylib
|
||||
libssl.dylib:
|
||||
@rpath/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
|
||||
@rpath/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
|
||||
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
|
||||
```
|
||||
|
||||
|
||||
Diagnostic of Qt plugins
|
||||
------------------------
|
||||
|
||||
Run Robomongo in the following way to see how plugins are resolved:
|
||||
|
||||
$ QT_DEBUG_PLUGINS=1 ./robomongo
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 180 KiB |
@@ -1,11 +0,0 @@
|
||||
--- /home/dmitry/libs/mongo/src/mongo/scripting/bench.cpp 2013-02-17 22:49:18.252603371 +0300
|
||||
+++ /home/dmitry/dev/robomongo/src/robomongo/shell/scripting/bench.cpp 2013-02-18 23:11:46.024268678 +0300
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
|
||||
|
||||
-#include "pch.h"
|
||||
+#include "mongo/pch.h"
|
||||
|
||||
#include "mongo/scripting/bench.h"
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- /home/dmitry/libs/mongo/src/mongo/shell/shell_utils.cpp 2013-02-17 22:49:18.256603371 +0300
|
||||
+++ /home/dmitry/dev/robomongo/src/robomongo/shell/shell/shell_utils.cpp 2013-02-18 18:48:35.200747338 +0300
|
||||
@@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
-#include "pch.h"
|
||||
+#include "mongo/pch.h"
|
||||
|
||||
#include "mongo/shell/shell_utils.h"
|
||||
#include "mongo/shell/shell_utils_extended.h"
|
||||
@@ -1,11 +0,0 @@
|
||||
--- /home/dmitry/libs/mongo/src/mongo/shell/shell_utils_extended.cpp 2013-02-17 22:49:18.260603371 +0300
|
||||
+++ /home/dmitry/dev/robomongo/src/robomongo/shell/shell/shell_utils_extended.cpp 2013-02-17 22:09:31.104675734 +0300
|
||||
@@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
-#include "pch.h"
|
||||
+#include "mongo/pch.h"
|
||||
|
||||
#include <boost/filesystem/convenience.hpp>
|
||||
#include <fstream>
|
||||
@@ -1,13 +0,0 @@
|
||||
--- /home/dmitry/libs/mongo/src/mongo/util/base64.cpp 2013-02-17 22:49:18.260603371 +0300
|
||||
+++ /home/dmitry/dev/robomongo/src/robomongo/shell/util/base64.cpp 2013-02-17 22:09:31.108675734 +0300
|
||||
@@ -16,8 +16,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
-#include "pch.h"
|
||||
-#include "base64.h"
|
||||
+#include "mongo/pch.h"
|
||||
+#include "mongo/util/base64.h"
|
||||
|
||||
namespace mongo {
|
||||
namespace base64 {
|
||||
@@ -1,17 +0,0 @@
|
||||
--- /home/dmitry/libs/mongo/src/mongo/util/processinfo_darwin.cpp 2013-02-17 22:49:18.268603371 +0300
|
||||
+++ /home/dmitry/dev/robomongo/src/robomongo/shell/util/processinfo_darwin.cpp 2013-03-02 17:57:14.389301358 +0300
|
||||
@@ -15,10 +15,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
-#include "../pch.h"
|
||||
-#include "processinfo.h"
|
||||
-#include "log.h"
|
||||
-#include <db/jsobj.h>
|
||||
+#include "mongo/pch.h"
|
||||
+#include "mongo/util/processinfo.h"
|
||||
+#include "mongo/util/log.h"
|
||||
+#include <mongo/db/jsobj.h>
|
||||
|
||||
#include <mach/vm_statistics.h>
|
||||
#include <mach/task_info.h>
|
||||
@@ -1,14 +0,0 @@
|
||||
--- /home/dmitry/libs/mongo/src/mongo/util/processinfo_linux2.cpp 2013-02-17 22:49:18.268603371 +0300
|
||||
+++ /home/dmitry/dev/robomongo/src/robomongo/shell/util/processinfo_linux2.cpp 2013-02-17 22:09:31.108675734 +0300
|
||||
@@ -23,9 +23,9 @@
|
||||
#include <gnu/libc-version.h>
|
||||
#include <sys/utsname.h>
|
||||
|
||||
-#include "processinfo.h"
|
||||
+#include "mongo/util/processinfo.h"
|
||||
#include "boost/filesystem.hpp"
|
||||
-#include <util/file.h>
|
||||
+#include "mongo/util/file.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
--- /home/dmitry/libs/mongo/src/mongo/util/processinfo_win32.cpp 2013-02-17 22:49:18.268603371 +0300
|
||||
+++ /home/dmitry/dev/robomongo/src/robomongo/shell/util/processinfo_win32.cpp 2013-02-17 22:09:31.108675734 +0300
|
||||
@@ -15,8 +15,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
-#include "pch.h"
|
||||
-#include "processinfo.h"
|
||||
+#include "mongo/pch.h"
|
||||
+#include "mongo/util/processinfo.h"
|
||||
#include <iostream>
|
||||
#include <psapi.h>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user