Compare commits
1635 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
12e145a875 | ||
|
04b40129e7 | ||
|
4e482b0552 | ||
|
8ccc334ac6 | ||
|
95e2d6a71a | ||
|
5aebbc81d8 | ||
|
ff6ba98759 | ||
|
5f69c44d75 | ||
|
89d88a23a9 | ||
|
416a2450bd | ||
|
a3839e8b32 | ||
|
d28f3605ff | ||
|
0a1b1424d7 | ||
|
53b8645d6f | ||
|
355d5b85ae | ||
|
ca91db230a | ||
|
f5eb24d5b8 | ||
|
6ae2f33128 | ||
|
ea8537981c | ||
|
aeb33e44ac | ||
|
8c24a03b5e | ||
|
88d4eaf0cb | ||
|
a94a020e77 | ||
|
15b2a2d577 | ||
|
8423de299f | ||
|
09cdda9527 | ||
|
87794df973 | ||
|
92f098e83f | ||
|
c72fc4695e | ||
|
3d4f972d10 | ||
|
ae5dd04b5a | ||
|
b9a9f4deee | ||
|
51fbd97bc6 | ||
|
778805a66f | ||
|
d86dc86a93 | ||
|
3cab80ca3a | ||
|
069004fd38 | ||
|
1cf8f9e657 | ||
|
a179efefcc | ||
|
22bd1b2ba9 | ||
|
8dad81ed5e | ||
|
7097e3c690 | ||
|
3b854dc8d5 | ||
|
e6c5e03d61 | ||
|
80aef94a42 | ||
|
8848d58f29 | ||
|
b62e1c4794 | ||
|
2aae64c041 | ||
|
a72d1c424a | ||
|
6910ca44cd | ||
|
defdceb00c | ||
|
17228c1edb | ||
|
f79a803044 | ||
|
c436e8ec43 | ||
|
3a980cfd94 | ||
|
1fe3a3c059 | ||
|
eb6fd1d74b | ||
|
ff2d641875 | ||
|
3749e01d19 | ||
|
299000fa42 | ||
|
bae157261b | ||
|
4b32de005a | ||
|
7b6fb16c71 | ||
|
1e566146ab | ||
|
93f62bcad3 | ||
|
d49b2a7d46 | ||
|
b630f9fcbf | ||
|
1a29c2b182 | ||
|
e0b196940a | ||
|
c3b8e24a8d | ||
|
a27a118227 | ||
|
7ce45eb4ac | ||
|
ac5ceb289d | ||
|
22d0be510b | ||
|
f30e1e3eeb | ||
|
1583078e45 | ||
|
267b1f2532 | ||
|
8591f4f0d6 | ||
|
1098bb33b3 | ||
|
11f8d52111 | ||
|
2dd3637c80 | ||
|
e39fa57f6b | ||
|
897ebf2d67 | ||
|
0e371a39ea | ||
|
df7d38d7e1 | ||
|
755e6e6a6d | ||
|
e2bfcd58ef | ||
|
adeb6090a0 | ||
|
2c686e47b7 | ||
|
de480b0ed8 | ||
|
fcf8c2c431 | ||
|
f09e396732 | ||
|
f5f66610b3 | ||
|
6e7db8563b | ||
|
3a39afef84 | ||
|
9b85022d56 | ||
|
35f2704d20 | ||
|
fe450e7752 | ||
|
4b36d09aab | ||
|
7de9b172a2 | ||
|
ab961b4523 | ||
|
fc87d35926 | ||
|
777019525e | ||
|
e7216042c4 | ||
|
d5b3018c1b | ||
|
af0dfa4cd7 | ||
|
96f9151e4a | ||
|
9d3390eb5d | ||
|
90c6413d24 | ||
|
9dcc6bf3d1 | ||
|
81bc95704d | ||
|
e54bd7213a | ||
|
cf793190c7 | ||
|
8e3d160e3f | ||
|
1db01fc2d9 | ||
|
2fa78ca313 | ||
|
e92a7fc932 | ||
|
501434a464 | ||
|
6c0c327e68 | ||
|
18552d0c62 | ||
|
8d81da76be | ||
|
8f6a286fff | ||
|
066d99bb2b | ||
|
7872575437 | ||
|
c200352648 | ||
|
1e51b8ac7b | ||
|
4019fca886 | ||
|
c3e0c0099f | ||
|
2a613662a3 | ||
|
3915684fb8 | ||
|
938d5fd6d2 | ||
|
25d1dfcd49 | ||
|
4e785f1da5 | ||
|
1efb21ba00 | ||
|
29d030b246 | ||
|
c76d1a9753 | ||
|
5bfbc3f173 | ||
|
8e9b6f32c0 | ||
|
be9a94cb5e | ||
|
af623abc58 | ||
|
7837ffc57c | ||
|
fe148dc641 | ||
|
2a967f5c99 | ||
|
82c2b7f7ed | ||
|
1d014381f2 | ||
|
3a3c536c31 | ||
|
7674200bdd | ||
|
6391b0b956 | ||
|
1870660268 | ||
|
8fe7265f51 | ||
|
36ddb4d4b2 | ||
|
a4cc41c33b | ||
|
00b28640a2 | ||
|
2ec1667e7a | ||
|
eb3291f32d | ||
|
d27c0bc0a3 | ||
|
b7d710f3d8 | ||
|
3938b87d91 | ||
|
c2915c84c5 | ||
|
ccf61c3480 | ||
|
38c76f704b | ||
|
5cd1ab5f1c | ||
|
1abb43b755 | ||
|
6274df7db5 | ||
|
663464036a | ||
|
97d33501a3 | ||
|
61d14ea267 | ||
|
5fc602c0f5 | ||
|
8151aad650 | ||
|
fb59d0eb75 | ||
|
33cf9c3f95 | ||
|
3b4abd717c | ||
|
b4ac56aa3a | ||
|
771ef80f67 | ||
|
1d4c440053 | ||
|
06a591842e | ||
|
426cd97149 | ||
|
c2edbc1a77 | ||
|
c4f2d63799 | ||
|
52826cc41a | ||
|
f7e4084d6c | ||
|
ebb1216999 | ||
|
afaef97237 | ||
|
4ff2fc9b9d | ||
|
e02af544a8 | ||
|
adfc440fc5 | ||
|
3cf76e81e5 | ||
|
6b4e11e63e | ||
|
9a45fea9d1 | ||
|
d6eb0da1f9 | ||
|
4f0591c807 | ||
|
963a357e88 | ||
|
27803ba23e | ||
|
f5faba54d1 | ||
|
6ef945c728 | ||
|
eceb69e225 | ||
|
f394d47016 | ||
|
07ff65b33d | ||
|
e30e358ce6 | ||
|
19cd476da7 | ||
|
cde02af8f6 | ||
|
9e9c951387 | ||
|
2e72ce2971 | ||
|
6ef8da2c41 | ||
|
845f85c9cb | ||
|
78f9131efe | ||
|
8735188f2c | ||
|
c7c98574d8 | ||
|
d711d9bc60 | ||
|
f8e4bff0a6 | ||
|
075b4d1eb6 | ||
|
ee39a89864 | ||
|
6d179ef831 | ||
|
97043dd206 | ||
|
23d3d83061 | ||
|
da6c715691 | ||
|
013ec80ea8 | ||
|
391f9914c8 | ||
|
3e5cc22e73 | ||
|
de7ffa7d2e | ||
|
4e0d0aa99e | ||
|
d18eff9079 | ||
|
bb703f37ff | ||
|
223e2ecd14 | ||
|
80fdd12957 | ||
|
284878b58b | ||
|
0dddac9add | ||
|
48dae6d4df | ||
|
ffd4b96376 | ||
|
d53eba4d72 | ||
|
a8d72fe9de | ||
|
f71e7ce350 | ||
|
40edcb4157 | ||
|
30e50a9a7c | ||
|
e4c46c2c5f | ||
|
c67ba77d34 | ||
|
968eebdd80 | ||
|
17ee1e6c26 | ||
|
36dc3a2b2b | ||
|
9c63f62767 | ||
|
9de2cc9396 | ||
|
9826bc405a | ||
|
2a464868a0 | ||
|
3664146cf0 | ||
|
fa4e5d5810 | ||
|
1da71e5e7d | ||
|
77a10188a5 | ||
|
500246d988 | ||
|
40d4ea3dcf | ||
|
9911f7c90d | ||
|
d40e353821 | ||
|
f23fd8ddae | ||
|
a3c75cfc52 | ||
|
8bcc3f2ce5 | ||
|
5adb974194 | ||
|
1192a9d81a | ||
|
6a3b653fe6 | ||
|
d8fdcea0d1 | ||
|
9db5beae71 | ||
|
679dc18c43 | ||
|
845aa1e9d1 | ||
|
304089b6da | ||
|
51b75d520f | ||
|
e4e88d9137 | ||
|
09f68238d4 | ||
|
1e486c14d4 | ||
|
a55c9dbabc | ||
|
b9d95d7982 | ||
|
bae42278a0 | ||
|
42dd3bc013 | ||
|
595647cb6c | ||
|
ee9ee08762 | ||
|
a692c8a78d | ||
|
093ab48adf | ||
|
72153bf6ef | ||
|
4630c92cea | ||
|
749bb5240a | ||
|
29688402ce | ||
|
179474de31 | ||
|
0f88982f08 | ||
|
e7247e9acd | ||
|
2dbc92e4ac | ||
|
26e385d881 | ||
|
21cd27b3b9 | ||
|
814587f3cc | ||
|
e9216d9826 | ||
|
8866613373 | ||
|
9842c84f36 | ||
|
fd608b6a6b | ||
|
cca73cecb0 | ||
|
bb8acc8e0e | ||
|
b069dda4da | ||
|
bccbf1be13 | ||
|
12de520677 | ||
|
bc039f3253 | ||
|
233f2340bd | ||
|
b2ad8f05ba | ||
|
518507bcfa | ||
|
d5e902751a | ||
|
7549a5c388 | ||
|
585cdfbd17 | ||
|
4ebb0413f1 | ||
|
c3eaa283c3 | ||
|
b7ad2f3a9f | ||
|
0bd5917b8b | ||
|
2a62697645 | ||
|
b5b172e34f | ||
|
9e1cfb6ad9 | ||
|
662670febd | ||
|
1dc962cbe0 | ||
|
7537bfbadf | ||
|
72e6a5fec0 | ||
|
005e2c7876 | ||
|
942b23f922 | ||
|
c9921d069a | ||
|
111549dca0 | ||
|
eccceef934 | ||
|
8b1b3866ba | ||
|
8e078d8fd2 | ||
|
103c1c3a4c | ||
|
b3a550d976 | ||
|
d6865ad65d | ||
|
f6591e6638 | ||
|
4a8350da23 | ||
|
54d6769456 | ||
|
a223eca4ae | ||
|
4e94132fb0 | ||
|
1e6d93e614 | ||
|
06cec0646c | ||
|
50ef11616d | ||
|
dcd3dee1ac | ||
|
bd288ab255 | ||
|
ae61177c50 | ||
|
2667f57338 | ||
|
d7d2c95eca | ||
|
c4486be6bd | ||
|
b2b48ff26e | ||
|
22dd10e261 | ||
|
df8f7becfc | ||
|
4ea5f55aed | ||
|
4b20e23ed7 | ||
|
f98c49666a | ||
|
da619f9e0b | ||
|
68fb365e82 | ||
|
9909c89677 | ||
|
c78963023a | ||
|
c9ba8760de | ||
|
4f89fbc9a9 | ||
|
bc2f4ace0e | ||
|
cb199ab2aa | ||
|
aa4511af9d | ||
|
62f382f271 | ||
|
df454f51f8 | ||
|
e1d088b1e8 | ||
|
d8fc1a6fa2 | ||
|
aa2e61f325 | ||
|
95f659aeda | ||
|
189d5ebbda | ||
|
3ce44b88e2 | ||
|
14bfa63b48 | ||
|
cb84d80c8a | ||
|
55ea4ebe34 | ||
|
120a987544 | ||
|
d4f4cd2ef2 | ||
|
b50bbd4269 | ||
|
854ef306be | ||
|
a101ffb700 | ||
|
78f4273b97 | ||
|
c971288a04 | ||
|
9520dc55a9 | ||
|
1f2f5ee08c | ||
|
7cd587aff1 | ||
|
304e4e5cc4 | ||
|
95ea70197f | ||
|
f4c1d51cae | ||
|
b7aae99247 | ||
|
7cd1dbce12 | ||
|
f07a3e07d1 | ||
|
dc3659f70f | ||
|
7a8baa2583 | ||
|
5cafb9c760 | ||
|
1ae9914a32 | ||
|
a40fdae4e7 | ||
|
c17f7aed2b | ||
|
cabdf3f94a | ||
|
adbb269eb9 | ||
|
b5582df317 | ||
|
f0dbb0906b | ||
|
ec8f043ec5 | ||
|
a65a730ebf | ||
|
31334da21e | ||
|
79e3416bb0 | ||
|
09747e064e | ||
|
1f2565e96d | ||
|
95fd5fc0d2 | ||
|
c4b7c7b097 | ||
|
4a1de91066 | ||
|
4cd8e96f5f | ||
|
37ba1457f4 | ||
|
6ff7f71c31 | ||
|
9b8655cf0d | ||
|
ab628edbb0 | ||
|
e044a1bf9a | ||
|
d6284de755 | ||
|
72dfe79098 | ||
|
bb46df6a7a | ||
|
c5beecbcc0 | ||
|
a50425de58 | ||
|
a589ec7129 | ||
|
0859415f7d | ||
|
d4cd7bf5ff | ||
|
8e9ef8df5b | ||
|
3e7f2f2048 | ||
|
6a8b3344c0 | ||
|
d4a1448901 | ||
|
2c2135a343 | ||
|
0b08fad61f | ||
|
06a41125b4 | ||
|
62c1f8da1e | ||
|
6d6ee8d6d6 | ||
|
4fe022c408 | ||
|
9a9530fd08 | ||
|
389dab064e | ||
|
f6d8388455 | ||
|
13b833cd1a | ||
|
a6f082df9b | ||
|
adbbd47314 | ||
|
3295e7d52b | ||
|
690243d333 | ||
|
6753ab4723 | ||
|
53692fc9c5 | ||
|
35431fe6e3 | ||
|
a47b7c285d | ||
|
6276f26bda | ||
|
ebb4b0140b | ||
|
13871ee86b | ||
|
b3b836e703 | ||
|
c33044f500 | ||
|
a1b4480c53 | ||
|
53a687e5c3 | ||
|
0c3fa7cd30 | ||
|
227dc87ab1 | ||
|
8dac03db35 | ||
|
d18756589a | ||
|
c46fdbad79 | ||
|
f7ad71f39c | ||
|
541d53f28d | ||
|
08a65966af | ||
|
1432788a12 | ||
|
969fbfb89b | ||
|
40fa39ba83 | ||
|
84841f3bb0 | ||
|
1f354786f1 | ||
|
7d04246b95 | ||
|
56218773ce | ||
|
65768082fe | ||
|
01ff6e19f7 | ||
|
bbe0b18b38 | ||
|
61369b37e1 | ||
|
93933c5761 | ||
|
8121b39921 | ||
|
e6a294a69b | ||
|
c0cee227de | ||
|
fe1863228c | ||
|
0d2fd73c29 | ||
|
a0ed54cb0b | ||
|
ecae579d03 | ||
|
ab6f1ad778 | ||
|
19c4db4201 | ||
|
793a8d9d14 | ||
|
435da40cc0 | ||
|
34e7253d05 | ||
|
09d266af99 | ||
|
76918c1f28 | ||
|
2efeaab1c6 | ||
|
f261357c1a | ||
|
fee3a39fdc | ||
|
73d2a7d29b | ||
|
c818392a59 | ||
|
5e3db40ba3 | ||
|
82cf1c0c16 | ||
|
799237eaae | ||
|
a8f7a100ae | ||
|
414ca19a3f | ||
|
21b219f6b7 | ||
|
5a73a80943 | ||
|
1f5545e6f2 | ||
|
3b175fbecc | ||
|
e98a2b90b9 | ||
|
424de984df | ||
|
caa101c8e0 | ||
|
f234dac1f9 | ||
|
8289d2e889 | ||
|
5ef7bf98a1 | ||
|
3e67c1241a | ||
|
2cafab999d | ||
|
3688d42011 | ||
|
03ac8f8349 | ||
|
f315104924 | ||
|
deebbbba60 | ||
|
cfda487726 | ||
|
5405f6b575 | ||
|
9b9bd00c2b | ||
|
7bf07cc12c | ||
|
8d99d38785 | ||
|
c57d487d9b | ||
|
604a76c8b3 | ||
|
08986f17f6 | ||
|
4a9782f628 | ||
|
6489fc1e52 | ||
|
02fb66f8a5 | ||
|
c1adc5c3ed | ||
|
97bacdaab3 | ||
|
fcf12e50c9 | ||
|
ceefdd6044 | ||
|
a961848c16 | ||
|
c144326b2d | ||
|
d25185fb0d | ||
|
25b71e1fee | ||
|
30fe30550f | ||
|
b15d1ee499 | ||
|
b9fd0b1272 | ||
|
64fd9edb2c | ||
|
013793a783 | ||
|
f2b58861d2 | ||
|
db33112d4d | ||
|
7de18b1467 | ||
|
9e59a924a0 | ||
|
b546ab5af4 | ||
|
75663be3b5 | ||
|
12ea4c92a3 | ||
|
ae0bd2c52d | ||
|
2d6a4293be | ||
|
573c39ff00 | ||
|
af31f1f2c3 | ||
|
13aac36f69 | ||
|
ba9fa54b92 | ||
|
a81f33eff3 | ||
|
4f249a3c89 | ||
|
cd5c10b33b | ||
|
0bdf8cd4f8 | ||
|
00ecdd55c6 | ||
|
d146cfa268 | ||
|
681e3fe5c1 | ||
|
f1bf3cc6ee | ||
|
cf1259a40e | ||
|
4c769f92a8 | ||
|
e014490142 | ||
|
ba9d8cc422 | ||
|
15b3d364ae | ||
|
e215b930e2 | ||
|
81451de0e6 | ||
|
8ebe07a76d | ||
|
c6ae521e5b | ||
|
16755adc05 | ||
|
93047640a2 | ||
|
fc16260be6 | ||
|
3518bb1d28 | ||
|
d05f5a503c | ||
|
7d1903a5d9 | ||
|
1001ff9b94 | ||
|
2c2612d935 | ||
|
0a8737901e | ||
|
ea47e479a2 | ||
|
10d3076a93 | ||
|
0191826f43 | ||
|
18a08d81f4 | ||
|
ae31e6e6ac | ||
|
d94d5bcd61 | ||
|
8f955142ed | ||
|
e1c4af8efd | ||
|
9de65d3d68 | ||
|
75e042173d | ||
|
141f061130 | ||
|
1bf44cc71f | ||
|
0381e77205 | ||
|
137aac07a9 | ||
|
99032b8fa8 | ||
|
9c9146a5cd | ||
|
9747e0a8b1 | ||
|
2c9baee470 | ||
|
2ec89d4908 | ||
|
4a16b18fb4 | ||
|
b3ad704003 | ||
|
988ae2e3a2 | ||
|
cd26d3470a | ||
|
9b67f62950 | ||
|
6a684a53b3 | ||
|
9bde2afb5c | ||
|
00ef067a2d | ||
|
e70fcdfe5b | ||
|
c228b13e76 | ||
|
687c944820 | ||
|
a9418f0ab5 | ||
|
6dc3e49b36 | ||
|
364f01d8f1 | ||
|
56db6d25a4 | ||
|
f39b02ed4b | ||
|
cbc2f2a6ee | ||
|
54e67a13aa | ||
|
db63625c50 | ||
|
ab04b4ba8e | ||
|
b27ba33a66 | ||
|
11721dffdf | ||
|
59905e0678 | ||
|
91fc9fe796 | ||
|
801482208c | ||
|
2eff82ea39 | ||
|
1aed8b0b75 | ||
|
f24dcf7bdb | ||
|
3b8a5859f8 | ||
|
eba728f1a3 | ||
|
081023ec0e | ||
|
b859f192e9 | ||
|
e926cbf218 | ||
|
2cb473b266 | ||
|
5b4e57778a | ||
|
96aa7232c7 | ||
|
c50d67e86f | ||
|
c831210d0b | ||
|
f988f8fc30 | ||
|
8a2ba3b3ac | ||
|
7dbda42554 | ||
|
e495e0ea28 | ||
|
4874a7b13c | ||
|
d3e03d1da0 | ||
|
23a8355991 | ||
|
3383817a2d | ||
|
33eb981101 | ||
|
e2977d2e97 | ||
|
43a4b9c1f2 | ||
|
b630ed4ef8 | ||
|
93e78b87bf | ||
|
1b0b5c3280 | ||
|
f06b8f1779 | ||
|
ce0349b410 | ||
|
504ec42a0f | ||
|
fe7cb24195 | ||
|
842ee4f393 | ||
|
ac67f0dc96 | ||
|
607115f1e2 | ||
|
b10616fe3e | ||
|
4a79ed90f1 | ||
|
bbceab7932 | ||
|
1b119638ac | ||
|
27f59f908d | ||
|
df8ba5c184 | ||
|
af6a417acb | ||
|
4ac20b3e5a | ||
|
01aff4a1c3 | ||
|
3627d0ed2d | ||
|
b758518896 | ||
|
469c071d69 | ||
|
f754cd0ce9 | ||
|
d0665d2628 | ||
|
1f6346df1c | ||
|
657ccdab53 | ||
|
3b8f6bb3d6 | ||
|
70f13cfbb1 | ||
|
b6ab8c113d | ||
|
04cb0a1b55 | ||
|
10e546f015 | ||
|
438516cf34 | ||
|
b3f39fdd55 | ||
|
e0b17563b8 | ||
|
31d64b725d | ||
|
cbce9bbcbf | ||
|
4caff4f064 | ||
|
753e0032dc | ||
|
d027d6d9da | ||
|
dd1349240f | ||
|
4ee61659c3 | ||
|
b15a288f09 | ||
|
25e94ec4b3 | ||
|
a070cb5b91 | ||
|
2d34d2ae9b | ||
|
a833d93f59 | ||
|
8287fb63ef | ||
|
53d8347210 | ||
|
322520ad62 | ||
|
4a296214dd | ||
|
34c5b311fc | ||
|
c6b9d41f78 | ||
|
46c9c90ec4 | ||
|
06b02f003e | ||
|
a6795882d8 | ||
|
3bce1f5946 | ||
|
56976f8f08 | ||
|
89bc556da0 | ||
|
091a54400b | ||
|
ef2731cfc4 | ||
|
5641db1f9f | ||
|
0159e662ee | ||
|
1c708527fb | ||
|
516cce13e2 | ||
|
de02c59757 | ||
|
b4177967dc | ||
|
2054b00216 | ||
|
f92b172757 | ||
|
db36fea295 | ||
|
54cc218f46 | ||
|
6e0d7c4020 | ||
|
23d97f7566 | ||
|
8d0f762177 | ||
|
ef60ea194e | ||
|
5ed1dcd1cc | ||
|
3e2fcff478 | ||
|
2b5e55e161 | ||
|
c376c79b91 | ||
|
49f7778698 | ||
|
275a47b92c | ||
|
e8de198ef7 | ||
|
b82a0cb15f | ||
|
74ef408290 | ||
|
05cab5fdac | ||
|
3d0243711e | ||
|
52b20a1351 | ||
|
cd395a7999 | ||
|
6d2421d812 | ||
|
e02348117c | ||
|
18f0dd9bdf | ||
|
8909279d3e | ||
|
66a10a141e | ||
|
4a352937e3 | ||
|
97b41af2a2 | ||
|
5fb7e0ccbb | ||
|
ed75628c37 | ||
|
a3fb8e9abc | ||
|
e897b68239 | ||
|
72564afb5f | ||
|
b26e30e1b7 | ||
|
598db6f4b1 | ||
|
a069569ea2 | ||
|
55fadd025b | ||
|
ba5e146082 | ||
|
6cdae4ea3e | ||
|
9a8bc72b93 | ||
|
2f3faf7c8e | ||
|
bd2bc4087f | ||
|
cf12826dc4 | ||
|
1921783936 | ||
|
f249a5182f | ||
|
ae145bd28f | ||
|
c90130a72d | ||
|
619af4198e | ||
|
5482f0d0a9 | ||
|
a211cb81ee | ||
|
b330d8e06a | ||
|
5deee1e5ab | ||
|
97567dee25 | ||
|
8af957a950 | ||
|
b6dd07382a | ||
|
45135e303a | ||
|
e1d0213011 | ||
|
431b52d03f | ||
|
9566a199d4 | ||
|
ec386cd2a9 | ||
|
7d8b81a491 | ||
|
fb69590c81 | ||
|
ffc55b734d | ||
|
8dbeacbb5c | ||
|
982483f134 | ||
|
7138834c91 | ||
|
93c37162af | ||
|
477e9216f3 | ||
|
2886996de4 | ||
|
b2feff382d | ||
|
b7ec18cfdb | ||
|
935d1d633c | ||
|
6f4ddfaef3 | ||
|
246c644622 | ||
|
7ee176bcbe | ||
|
b173da88f4 | ||
|
e37e3d9045 | ||
|
8e94b67ba1 | ||
|
8181c4868a | ||
|
d7127c02ff | ||
|
7ad9a2d391 | ||
|
aca60117ee | ||
|
87c790851e | ||
|
e7edc43913 | ||
|
eaff6a7a03 | ||
|
9e18d7ded5 | ||
|
f2cc2c9074 | ||
|
7f01e20c37 | ||
|
a872a3a73c | ||
|
103a636e00 | ||
|
26cda01b29 | ||
|
887c7a4b89 | ||
|
f08721bb39 | ||
|
9c58b6ce1d | ||
|
d4e0f8ee11 | ||
|
8e564bd00f | ||
|
e744561c35 | ||
|
3c1b01ec3e | ||
|
ece3fefdd0 | ||
|
72fddb0935 | ||
|
660a63d739 | ||
|
69cdf3cbbb | ||
|
d7e2d6b22c | ||
|
7394e342f7 | ||
|
6e0139caf7 | ||
|
0c7bea06c4 | ||
|
15ea46495f | ||
|
a6e68f636e | ||
|
07f088d340 | ||
|
c785ab7a62 | ||
|
f45d0214f9 | ||
|
20cca622cc | ||
|
7a7c7322fa | ||
|
01d1a2265c | ||
|
0f4cd43bc2 | ||
|
bf37860a71 | ||
|
3e32c9b55b | ||
|
cb8a6a5ea9 | ||
|
0bdad95d0c | ||
|
8b59467d20 | ||
|
d6802feee0 | ||
|
2125135064 | ||
|
a1a872e2d2 | ||
|
e2129f6548 | ||
|
9a0716b728 | ||
|
2a1a34307d | ||
|
149be782bb | ||
|
4003ca0d32 | ||
|
b338217360 | ||
|
351357c3a0 | ||
|
b172090299 | ||
|
0437f1925b | ||
|
22e66638a6 | ||
|
9cba61e5eb | ||
|
5ad97482a9 | ||
|
de3cf05b77 | ||
|
9433e8b68d | ||
|
bea6b0e944 | ||
|
6deb5098a1 | ||
|
ee8cd91279 | ||
|
192d87010a | ||
|
cdb34e0486 | ||
|
9239e7cdef | ||
|
a234b472d7 | ||
|
8633c8e446 | ||
|
ce7cf1a8b1 | ||
|
bcdd7c260b | ||
|
f87929371a | ||
|
593f69a861 | ||
|
f5de04d9c4 | ||
|
1a4e2e869f | ||
|
0777144b45 | ||
|
cc6074c543 | ||
|
c4618d6020 | ||
|
8e2c6a5904 | ||
|
c653cf1171 | ||
|
dcb72b5315 | ||
|
2769ef7174 | ||
|
35c18eba64 | ||
|
b9169c1210 | ||
|
8159f4626b | ||
|
e71708a6e5 | ||
|
d561d864eb | ||
|
b0e9665e7d | ||
|
37c60080dd | ||
|
5fd8af81ad | ||
|
8a1dcd2bb9 | ||
|
1f8a8da7c2 | ||
|
68856adf1d | ||
|
db7e6d6fed | ||
|
8d8cf0bbfe | ||
|
c276fa45dc | ||
|
21c5970da4 | ||
|
1dc3a9cac2 | ||
|
59745fc798 | ||
|
bccb4c8328 | ||
|
0e7f52c872 | ||
|
18dd4f9479 | ||
|
31e6f4a2ca | ||
|
206a8fec2c | ||
|
54ef8bf929 | ||
|
d47af17a0d | ||
|
d2f48abeb5 | ||
|
79539c50cd | ||
|
926abdce78 | ||
|
143b016277 | ||
|
38835684b3 | ||
|
1fa408f328 | ||
|
0bd6b909ab | ||
|
5f3708e190 | ||
|
dbd149375b | ||
|
34625db91a | ||
|
6f559732cf | ||
|
16639502a7 | ||
|
3fe904e231 | ||
|
ebbf2d298b | ||
|
9593852f24 | ||
|
fab3e958da | ||
|
5518a384b2 | ||
|
e51d03e334 | ||
|
dbfd84ae4c | ||
|
2d51fc3c69 | ||
|
a70a4f65fe | ||
|
b1979646fb | ||
|
1a5499ce5f | ||
|
56c05f47f6 | ||
|
72f41f8756 | ||
|
6cefb8be96 | ||
|
9479f9bbfc | ||
|
646bea85a5 | ||
|
09c093f969 | ||
|
3cd991037d | ||
|
3c178b40e7 | ||
|
81443770ce | ||
|
87e28fc8ec | ||
|
9fbb8e0090 | ||
|
4488dfcbf6 | ||
|
87e53579ea | ||
|
9491249fc6 | ||
|
5581c62922 | ||
|
e7562a50b9 | ||
|
333a08c98f | ||
|
c1bb08ab26 | ||
|
22f33e1bd2 | ||
|
dcf09c0c63 | ||
|
73e9605765 | ||
|
7cab94a4c8 | ||
|
320a3b1328 | ||
|
05b91b1195 | ||
|
4372292136 | ||
|
173eebbd96 | ||
|
aa0e38c607 | ||
|
76783a4487 | ||
|
fd15b2178a | ||
|
4c1aef25ce | ||
|
d83f820ab4 | ||
|
09e4baf5eb | ||
|
af7ca1d159 | ||
|
56993ad559 | ||
|
69f78f3cbe | ||
|
5dddcc3cdc | ||
|
057ef3e1d3 | ||
|
224fc1daaa | ||
|
3009ca730d | ||
|
80b39d24ec | ||
|
770f9e5897 | ||
|
b05f06d5b9 | ||
|
7b0e3fb969 | ||
|
a5bafadf8e | ||
|
0d36941a78 | ||
|
6ad615cd12 | ||
|
e20364d6c9 | ||
|
d61c784273 | ||
|
78dd1c5cd0 | ||
|
3ad691586e | ||
|
f32dbf337d | ||
|
25840bcc32 | ||
|
4ae0667e2b | ||
|
71130a16f8 | ||
|
ac0e10db65 | ||
|
0730c7ea55 | ||
|
a639174daa | ||
|
03fc43b5e9 | ||
|
5adddf6cd9 | ||
|
ea4a6cfdfa | ||
|
c6fdf954e3 | ||
|
ddd0a08490 | ||
|
ff7675817d | ||
|
16b8fc51fe | ||
|
3fd08e19d4 | ||
|
b6d2f86695 | ||
|
5b10a1e8b4 | ||
|
0fef016748 | ||
|
edb8d08e46 | ||
|
b80f632f28 | ||
|
9a634a5c4b | ||
|
6dbb95e69c | ||
|
25107519e5 | ||
|
8014b45a7a | ||
|
80dee1a9f9 | ||
|
afc5747e9b | ||
|
cedaf89b0f | ||
|
7918d0699c | ||
|
1b993a787d | ||
|
4ed56eaafc | ||
|
21a0818903 | ||
|
904023e2de | ||
|
a4d4ef9df5 | ||
|
9fcce29068 | ||
|
a69fdf6410 | ||
|
89ee514a27 | ||
|
3d43223448 | ||
|
6dd6836227 | ||
|
bc533b0fb2 | ||
|
05016926ae | ||
|
7fc08a8a68 | ||
|
b91da6c943 | ||
|
08ef73f94f | ||
|
59a571c75d | ||
|
bbc46bbc7a | ||
|
5b55e8d1f0 | ||
|
90b128e4cc | ||
|
81b3e80840 | ||
|
829b67074e | ||
|
288ef3479e | ||
|
8b2f1b4d1a | ||
|
2a67dcda5e | ||
|
76c50ca167 | ||
|
ee3c82a234 | ||
|
df96b6a707 | ||
|
00caa645ff | ||
|
20646e132c | ||
|
3af7624967 | ||
|
18b56bbae2 | ||
|
f8b100c136 | ||
|
1b245a8a46 | ||
|
6de04b08c4 | ||
|
5985c90d37 | ||
|
260276642e | ||
|
ea55328741 | ||
|
c38718c846 | ||
|
1aef8b9057 | ||
|
a8fe95f0ea | ||
|
33b98002c2 | ||
|
941434e81f | ||
|
6869341dce | ||
|
43eb0dbd38 | ||
|
9f7437fb85 | ||
|
5296136496 | ||
|
055b5a83b4 | ||
|
69738c76b4 | ||
|
5127aef0bb | ||
|
8f837f6e6f | ||
|
0ff3a84bc3 | ||
|
761d516fd4 | ||
|
6a23dfba36 | ||
|
639f5bf5db | ||
|
db1ed43050 | ||
|
ae6b9c0c63 | ||
|
f490b4de05 | ||
|
4be258fd13 | ||
|
775d56f01d | ||
|
1d067db128 | ||
|
6446d865be | ||
|
987ff07a85 | ||
|
01010851cb | ||
|
b2191e4450 | ||
|
df1786d777 | ||
|
e593626788 | ||
|
0e5e850691 | ||
|
267acbc534 | ||
|
56c39a2622 | ||
|
ef42c65ab1 | ||
|
97a1b5ffa4 | ||
|
c0d39fd2ed | ||
|
51bbe63d05 | ||
|
65e9eca63b | ||
|
281c45452b | ||
|
5ca7ad268a | ||
|
624784a729 | ||
|
7328f90e64 | ||
|
711b86fa24 | ||
|
40dc33a9d3 | ||
|
eb13efc4a6 | ||
|
3dff1a3f7b | ||
|
12f39bb2ab | ||
|
0048e8de0e | ||
|
bec66636c8 | ||
|
11599cb379 | ||
|
2ce7e21766 | ||
|
00ddc174b4 | ||
|
67500054d2 | ||
|
09b06a740d | ||
|
2a3c016894 | ||
|
d31a94a70a | ||
|
8c5736e68f | ||
|
86597d2891 | ||
|
d37960b35a | ||
|
d35a1eb1ac | ||
|
d7ff69741b | ||
|
7197992341 | ||
|
69fa60518c | ||
|
f20166d2de | ||
|
d07a849e98 | ||
|
b33813534e | ||
|
7a2b93fc78 | ||
|
c04a7aa2c6 | ||
|
97880102dc | ||
|
4e475b5cc2 | ||
|
ae2502b4ad | ||
|
0ca8024da2 | ||
|
c7f914c68c | ||
|
b6557e4be8 | ||
|
9ffc3b0705 | ||
|
01b90c38e7 | ||
|
9601b5fa5b | ||
|
7e80af2bc2 | ||
|
c965151d4d | ||
|
98065efdfa | ||
|
0ce4cdddb4 | ||
|
7a9f724735 | ||
|
44b706457e | ||
|
6f6c291beb | ||
|
7dca077bb6 | ||
|
d2c4f6df21 | ||
|
605a20b262 | ||
|
dd927a4f3c | ||
|
aefd124efa | ||
|
398c576037 | ||
|
042e713cb7 | ||
|
f3c839ecc4 | ||
|
e48aac4ec6 | ||
|
3f2698ce36 | ||
|
8c93587612 | ||
|
6067b27071 | ||
|
a546662cd8 | ||
|
9120bb9e03 | ||
|
ad014ed702 | ||
|
004c87ced5 | ||
|
fb6b0e5c94 | ||
|
6143ae4012 | ||
|
e4502f3dc1 | ||
|
b5ff268a3b | ||
|
df0d74dca4 | ||
|
6ba8e9875a | ||
|
9df9412335 | ||
|
8146816342 | ||
|
54ed658919 | ||
|
e0529535ca | ||
|
55148eb94d | ||
|
b50f026c55 | ||
|
0479ef1c1c | ||
|
9f1893855b | ||
|
1a6b177ec7 | ||
|
d5c5f9f352 | ||
|
ad867197cf | ||
|
176f9f6ce2 | ||
|
36f091f65d | ||
|
bd1cb1547f | ||
|
4924480944 | ||
|
e00b3bfc86 | ||
|
8ef6d4ede8 | ||
|
8232c837b0 | ||
|
abf6c88a86 | ||
|
779e5faf1d | ||
|
d7736416e8 | ||
|
66ed40dfe4 | ||
|
65a8c2e421 | ||
|
79f96014d1 | ||
|
33d74f3f58 | ||
|
b96994c9eb | ||
|
c4eacb70fd | ||
|
8d791bfb30 | ||
|
0c4b517e6e | ||
|
e50ae83c8c | ||
|
83226ed3d0 | ||
|
bcc0e6124a | ||
|
4bff9e3582 | ||
|
34167f6622 | ||
|
3e0276990d | ||
|
01e5801cec | ||
|
e60b493c2e | ||
|
87dc466e29 | ||
|
cbdd2d7353 | ||
|
0f744e6b2b | ||
|
7782f2ad14 | ||
|
54cb92d58b | ||
|
31c8031847 | ||
|
4661694382 | ||
|
93f52f7980 | ||
|
74c455c8bb | ||
|
d25e08afc2 | ||
|
abbbfa27bd | ||
|
ccbf28a56c | ||
|
2d819c7027 | ||
|
940fc15ec1 | ||
|
fe3b0212ea | ||
|
760688cc75 | ||
|
dcfd35f43b | ||
|
83cd96307f | ||
|
db841d4afe | ||
|
477972b3e0 | ||
|
6a6a1c0fe2 | ||
|
3d4501bea7 | ||
|
69b7c311f3 | ||
|
6e35353c83 | ||
|
7584fe901e | ||
|
a1a77ea7d1 | ||
|
e120fb78c9 | ||
|
49260691b2 | ||
|
10c195b864 | ||
|
7fbc340561 | ||
|
ef2200e327 | ||
|
12f59b27e1 | ||
|
a5f12c1ff9 | ||
|
b579f48790 | ||
|
1c32faa784 | ||
|
bff859c2ed | ||
|
266653fee4 | ||
|
2a734e1971 | ||
|
acbfeca2b3 | ||
|
eac8f36080 | ||
|
1ec2f5df26 | ||
|
a50b3916a2 | ||
|
3f5df82334 | ||
|
98d5581e16 | ||
|
a764da6902 | ||
|
f738fcb1f4 | ||
|
d45687f499 | ||
|
9db4c36a2f | ||
|
430779a287 | ||
|
b8fa115b47 | ||
|
54f5a61fbc | ||
|
9cb8a156fd | ||
|
6fe4ebce70 | ||
|
2f632086e9 | ||
|
1efb618b9a | ||
|
631fa1915e | ||
|
45c9a35d35 | ||
|
e7cc3ccf1d | ||
|
e149129954 | ||
|
1a3efe2249 | ||
|
d135c9ea00 | ||
|
b9c1d1f7a1 | ||
|
faf10af206 | ||
|
94e4f3c532 | ||
|
cd99c6aad5 | ||
|
da4e9b7637 | ||
|
a4dc60e9fc | ||
|
dac4298b72 | ||
|
b0fe7f3479 | ||
|
d10cba961b | ||
|
b93a8dfdfe | ||
|
1ac5e98077 | ||
|
9ed5d93c77 | ||
|
0d4c3c852a | ||
|
133838a7c7 | ||
|
007c0a1854 | ||
|
d1f0e924e9 | ||
|
72c674d253 | ||
|
8e4ca03733 | ||
|
3b5fcd4901 | ||
|
7ab7d88e8a | ||
|
78da1f8d00 | ||
|
2a4604e59e | ||
|
dcac89b5c7 | ||
|
cebb2dd068 | ||
|
c88a8c78bd | ||
|
5dbe3ecde8 | ||
|
1290935fab | ||
|
993c3fc35b | ||
|
2ed35fe889 | ||
|
d07c24d1ba | ||
|
b223437124 | ||
|
858bb5df19 | ||
|
c2e528ef42 | ||
|
84ad506420 | ||
|
82e7d1e56e | ||
|
a97091d699 | ||
|
3bcc785d0c | ||
|
cfe906856b | ||
|
5165a8bacc | ||
|
9521b51eef | ||
|
b51ee7068c | ||
|
ce820174ee | ||
|
e958f05aec | ||
|
10b88f3f20 | ||
|
87330d4bd7 | ||
|
f9bdb80ef1 | ||
|
b69650be3e | ||
|
2db67cb4b6 | ||
|
afc00d2b9b | ||
|
e4d59b698e | ||
|
55f8c072a3 | ||
|
4d34eee362 | ||
|
7920772663 | ||
|
cad8c1e6a7 | ||
|
a2792a934f | ||
|
62b1336c55 | ||
|
2a5d850e48 | ||
|
dc4f7e3ffa | ||
|
09590ee995 | ||
|
ee97f24ef4 | ||
|
8d97598e9c | ||
|
b141854d76 | ||
|
0246c56005 | ||
|
7a579851c2 | ||
|
65e70cec0b | ||
|
423659af18 | ||
|
d5c3460b41 | ||
|
891c1815e8 | ||
|
4f8e1bf151 | ||
|
648dede46c | ||
|
15a1b718e6 | ||
|
fdf4738be3 | ||
|
4ae1b626ef | ||
|
5f98cc3ecd | ||
|
41698bb5c1 | ||
|
5441057cc1 | ||
|
bbcf5a4191 | ||
|
813ea954b3 | ||
|
c804fc386b | ||
|
715ae29080 | ||
|
5dc84d6a21 | ||
|
dc1a5ac3e4 | ||
|
0b0d6b6d36 | ||
|
2bebec177d | ||
|
fbc78ff287 | ||
|
35e027fb62 | ||
|
41047e8b2c | ||
|
e54ece9dbb | ||
|
e26acf0f27 | ||
|
099fcbb56d | ||
|
a46cb99c69 | ||
|
ef2207ae48 | ||
|
37dbdd9b58 | ||
|
b9e8a966ea | ||
|
a256dba802 | ||
|
a2b68996b2 | ||
|
3780e0edc1 | ||
|
ce1a9d8bc9 | ||
|
842f433471 | ||
|
49bf0afdc7 | ||
|
2b2271bea3 | ||
|
562e74e3b4 | ||
|
697b769360 | ||
|
3fda22bd8a | ||
|
1ae6883162 | ||
|
566db56dd3 | ||
|
bead73f2f3 | ||
|
11f94598da | ||
|
1a98e24d0c | ||
|
c465681a86 | ||
|
d968aacde1 | ||
|
ee65d651a4 | ||
|
6d0f277a40 | ||
|
c82464ea75 | ||
|
37c389c779 | ||
|
72d0b8f709 | ||
|
f7efdfac36 | ||
|
92afa1eaf8 | ||
|
99d401220c | ||
|
3fa33cf1f1 | ||
|
25296f86d6 | ||
|
ac7ff59b6a | ||
|
8c8dfce81e | ||
|
b7e0a7bfde | ||
|
936992c404 | ||
|
27f16490fa | ||
|
33b0661cc6 | ||
|
06ab82d945 | ||
|
e50b0337e9 | ||
|
652fe10689 | ||
|
cf9e8434eb | ||
|
aa494a4de7 | ||
|
e09afd3cc0 | ||
|
b7711eb94c | ||
|
2b14b70b43 | ||
|
be31cbfce8 | ||
|
fb1d47b93e | ||
|
840cf0a43a | ||
|
f8adee805b | ||
|
2c4756af80 | ||
|
cddddd753c | ||
|
37a553a3a5 | ||
|
6ce164b3e0 | ||
|
ea6d467c05 | ||
|
2bb83f6b16 | ||
|
197a46313d | ||
|
58221c1955 | ||
|
0cb2413219 | ||
|
65b1756d01 | ||
|
3536eb32bf | ||
|
3660ff9ff8 | ||
|
b2dad9724d | ||
|
ab9021e2d6 | ||
|
3ee0cb32e0 | ||
|
7d0b4be42d | ||
|
b07580da56 | ||
|
b04935ed9f | ||
|
0db648ba3b | ||
|
5e84f22a0a | ||
|
c74f0ccf15 | ||
|
2220e447ca | ||
|
fafb4f11ef | ||
|
21815ae5e5 | ||
|
a32359a101 | ||
|
97775f43a1 | ||
|
5a878ca693 | ||
|
a33ce2a2ca | ||
|
31237ffd5f | ||
|
419979e0dc | ||
|
6ed0b578a8 | ||
|
04c3e5e5a7 | ||
|
6e74281ba3 | ||
|
df5c9259af | ||
|
887601bf0e | ||
|
83cb2ca344 | ||
|
58113ca96e | ||
|
96c5792d5b | ||
|
59420d3a0b | ||
|
30e7ce0fc1 | ||
|
1ed487f1ac | ||
|
a090ecbdd1 | ||
|
087db1d000 | ||
|
b18c3ecdbd | ||
|
85088954de | ||
|
fa8effc7da | ||
|
69277b9ed9 | ||
|
103aa5afb2 | ||
|
37effa5dd3 | ||
|
1426bd170b | ||
|
e342a52613 | ||
|
8b7bf25f7f | ||
|
6a6ce2474e | ||
|
b39b3551b7 | ||
|
96fe113608 | ||
|
875ccc41f4 | ||
|
765aa27aa3 | ||
|
9a1edf52d4 | ||
|
aae66d7518 | ||
|
11abd87046 | ||
|
a892eb50d3 | ||
|
e3feb85abc | ||
|
bded4bd5fc | ||
|
55dc2af21d | ||
|
40608d0a37 | ||
|
b5c3a3fe73 | ||
|
79bd27a82b | ||
|
2a121a9506 | ||
|
1b09c46051 | ||
|
bf535c4c66 | ||
|
5ff8c2eb00 | ||
|
11b9657b08 | ||
|
6dc19b55fc | ||
|
60eaa42a25 | ||
|
7f78908b44 | ||
|
9413c19cc1 | ||
|
2101e91465 | ||
|
a306131977 | ||
|
59861df8ce | ||
|
9db6df1a56 | ||
|
6d8afaac84 | ||
|
64c5043a40 | ||
|
0ce8e1db2b | ||
|
0e14e9042d | ||
|
7b356f0f31 | ||
|
33f37ff637 | ||
|
cffb015be5 | ||
|
8adfacca61 | ||
|
ee432b6431 | ||
|
850ed0222f | ||
|
b72c4988fb | ||
|
cdc8811492 | ||
|
5653829bf8 | ||
|
2378455647 | ||
|
d83081c78e | ||
|
b942110a4a | ||
|
ee533138d8 | ||
|
c35cb5fe9a | ||
|
ffb442db62 | ||
|
5ead2a3d63 | ||
|
ff596bfac8 | ||
|
076a818f74 | ||
|
f13ef41580 | ||
|
7aadf25ccd | ||
|
77de3d45d3 | ||
|
90fab1e4e9 | ||
|
73b8c83ec7 | ||
|
523f711295 | ||
|
c806d2bbbc | ||
|
101fedb17f | ||
|
cc1af8409a | ||
|
88600c3096 | ||
|
02f05bdb5f | ||
|
8dbd0828e9 | ||
|
f2b88b3225 | ||
|
381dca29ff | ||
|
36d260014f | ||
|
01edc916d2 | ||
|
5171b7f488 | ||
|
cc369ad07f | ||
|
11f485ea68 | ||
|
c970909437 | ||
|
5cd16659ff | ||
|
3ea877a844 | ||
|
60a264ed50 | ||
|
884c338355 | ||
|
b06125aa51 | ||
|
bbf78c9636 | ||
|
6790d8d716 | ||
|
d39c493390 | ||
|
b79b2edde8 | ||
|
e23933e868 | ||
|
314c91d94e | ||
|
fba5f806e6 | ||
|
843e2e1309 | ||
|
5e6fa3dbc5 | ||
|
8fdcda4dac | ||
|
09d44fdef3 | ||
|
e6434a71eb | ||
|
353d22756f | ||
|
aff082764a | ||
|
b6108318c2 | ||
|
7b5dbe165d | ||
|
fc29f57a17 | ||
|
4354d7797e | ||
|
6f7b8ada85 | ||
|
4eaaf89db5 | ||
|
4c2f439001 | ||
|
8f1438b1a8 | ||
|
610ee0c504 | ||
|
e266949979 | ||
|
b91edac40d | ||
|
7ce68e59fd | ||
|
651b515074 | ||
|
1319dcf472 | ||
|
9cd2e3ffef | ||
|
ecc31955f1 | ||
|
f349040b39 | ||
|
319b31a5a2 | ||
|
1596b5855c | ||
|
7ab2885594 | ||
|
fc29afbe1a | ||
|
ed1032975e | ||
|
51ed0b024b | ||
|
d1c0eb2291 | ||
|
b2bb9ef0f1 | ||
|
9e22277d28 | ||
|
3b4a7d4881 | ||
|
43ab4d5c7b | ||
|
55a46ec005 | ||
|
f10b13e469 | ||
|
5051e2b97b | ||
|
d5cff9be0e | ||
|
a994bc80fe | ||
|
8c3e5bcd21 | ||
|
9834571282 | ||
|
072f2a2241 | ||
|
da9ff584d1 | ||
|
d328e8eaaf | ||
|
6eb41440cd | ||
|
e63884c593 | ||
|
3c0f08ab70 | ||
|
72f48d0840 | ||
|
ab667d881d | ||
|
5fa520a77c | ||
|
019feea9b1 | ||
|
835475873b | ||
|
abfaf5189c | ||
|
2aaaf7cf12 | ||
|
0a4ff045f1 | ||
|
aac98b795d | ||
|
94928669c1 | ||
|
6cd5ea15ef | ||
|
3339990b4b | ||
|
0dd2561d54 | ||
|
a8b8a6fd6d | ||
|
ad16cd816a | ||
|
c39a944e74 | ||
|
cc2213ab27 | ||
|
e69e53de8e | ||
|
6e3d2ad44f | ||
|
7c332839e0 | ||
|
9610a7cbdc | ||
|
c8ae8244b4 | ||
|
9b2e444811 | ||
|
ee69826054 | ||
|
3c0986a34c | ||
|
9e86f73f82 | ||
|
cdfd686714 | ||
|
78051d03ca | ||
|
eab71ff6b0 | ||
|
07ad8c8444 | ||
|
501f78855e | ||
|
bfb80b7b45 | ||
|
f5e2166bbd | ||
|
9988cd2469 | ||
|
440dcaca27 | ||
|
7ab145a9ef | ||
|
b5ba125fa0 | ||
|
c437c6a4f6 | ||
|
ff303c5cd9 | ||
|
510f8005bc | ||
|
e9509291ae | ||
|
7664b826db | ||
|
8bd0625f54 | ||
|
4d009678ce | ||
|
e2a0ef30da | ||
|
d53feb3da2 | ||
|
7baf9d06b5 | ||
|
9d7fabb6c2 | ||
|
51bfc9da41 | ||
|
1f0dc7635e | ||
|
137da0326a | ||
|
60d28c8c7c | ||
|
e076767bfd | ||
|
c76b845d90 | ||
|
604dcc714a | ||
|
b70e61788f | ||
|
5d2f40a14b | ||
|
eb44663eaa | ||
|
83e18b6540 | ||
|
df2f31b9bf | ||
|
e8605372ba | ||
|
00f6df326f | ||
|
06a209384a | ||
|
b143215c54 | ||
|
31e3012296 | ||
|
bb91219b26 | ||
|
2dfc0cb6f6 | ||
|
2a512fd901 | ||
|
443bdb9620 | ||
|
149150ab47 | ||
|
29e2695676 | ||
|
dbaef86144 | ||
|
9bcbeea2ad | ||
|
7044c32963 | ||
|
8472fc2573 | ||
|
3de6c570fb | ||
|
8b4a8b1e10 | ||
|
609d34d702 | ||
|
49cf61f641 | ||
|
80e581d91b | ||
|
b3c60bd11f | ||
|
8a7ee8d522 | ||
|
d0a3db5d93 | ||
|
67adc2227d | ||
|
0c054f6844 | ||
|
f329dd4e16 | ||
|
75cb14deb8 | ||
|
a77b11c548 | ||
|
43f4706ee8 | ||
|
5c3fd55beb | ||
|
66da88f428 | ||
|
7c3723b2a9 | ||
|
1a737083f1 | ||
|
901731ad78 |
@ -7,7 +7,7 @@ if (NOT DEFINED QT_SUPERBUILD OR DEFINED QT_REPO_MODULE_VERSION)
|
|||||||
set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_LEAN_HEADERS=1")
|
set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_LEAN_HEADERS=1")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(QT_REPO_MODULE_VERSION "6.11.0")
|
set(QT_REPO_MODULE_VERSION "6.9.2")
|
||||||
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
|
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
|
||||||
|
|
||||||
set(QT_COPYRIGHT "Copyright (C) The Qt Company Ltd. and other contributors.")
|
set(QT_COPYRIGHT "Copyright (C) The Qt Company Ltd. and other contributors.")
|
||||||
@ -51,13 +51,13 @@ set(QT_MAX_NEW_POLICY_CMAKE_VERSION_QT_APPLE "3.21")
|
|||||||
set(QT_SUPPORTED_MIN_MACOS_SDK_VERSION "14")
|
set(QT_SUPPORTED_MIN_MACOS_SDK_VERSION "14")
|
||||||
set(QT_SUPPORTED_MAX_MACOS_SDK_VERSION "15")
|
set(QT_SUPPORTED_MAX_MACOS_SDK_VERSION "15")
|
||||||
set(QT_SUPPORTED_MIN_MACOS_XCODE_VERSION "15")
|
set(QT_SUPPORTED_MIN_MACOS_XCODE_VERSION "15")
|
||||||
set(QT_SUPPORTED_MIN_MACOS_VERSION "13")
|
set(QT_SUPPORTED_MIN_MACOS_VERSION "12")
|
||||||
set(QT_SUPPORTED_MAX_MACOS_VERSION_TESTED "15")
|
set(QT_SUPPORTED_MAX_MACOS_VERSION_TESTED "15")
|
||||||
|
|
||||||
set(QT_SUPPORTED_MIN_IOS_SDK_VERSION "17")
|
set(QT_SUPPORTED_MIN_IOS_SDK_VERSION "17")
|
||||||
set(QT_SUPPORTED_MAX_IOS_SDK_VERSION "18")
|
set(QT_SUPPORTED_MAX_IOS_SDK_VERSION "18")
|
||||||
set(QT_SUPPORTED_MIN_IOS_XCODE_VERSION "15")
|
set(QT_SUPPORTED_MIN_IOS_XCODE_VERSION "15")
|
||||||
set(QT_SUPPORTED_MIN_IOS_VERSION "17")
|
set(QT_SUPPORTED_MIN_IOS_VERSION "16")
|
||||||
set(QT_SUPPORTED_MAX_IOS_VERSION_TESTED "18")
|
set(QT_SUPPORTED_MAX_IOS_VERSION_TESTED "18")
|
||||||
|
|
||||||
set(QT_SUPPORTED_MIN_VISIONOS_SDK_VERSION "1")
|
set(QT_SUPPORTED_MIN_VISIONOS_SDK_VERSION "1")
|
||||||
|
33
.lgtm.yml
Normal file
33
.lgtm.yml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
extraction:
|
||||||
|
cpp:
|
||||||
|
prepare:
|
||||||
|
packages:
|
||||||
|
- libgl-dev
|
||||||
|
- libglu-dev
|
||||||
|
- libpcre2-dev
|
||||||
|
- libz-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
- libpng-dev
|
||||||
|
- libjpeg-dev
|
||||||
|
- libsqlite3-dev
|
||||||
|
after_prepare:
|
||||||
|
- mkdir $HOME/cmake-3.17 \
|
||||||
|
\ && wget -qO- "https://cmake.org/files/v3.17/cmake-3.17.3-Linux-x86_64.tar.gz" \
|
||||||
|
\ | tar -xzf - --strip-components=1 -C $HOME/cmake-3.17
|
||||||
|
- export PATH=$HOME/cmake-3.17/bin:$PATH
|
||||||
|
|
||||||
|
# Pre-analysis step.
|
||||||
|
configure:
|
||||||
|
command:
|
||||||
|
- "./configure -cmake -opensource -confirm-license -debug -no-pch \
|
||||||
|
\ -nomake tests -nomake examples -no-harfbuzz \
|
||||||
|
\ -system-pcre -system-zlib -system-freetype -system-libpng \
|
||||||
|
\ -system-libjpeg -system-sqlite"
|
||||||
|
# We skip analyzing the bootstrap library, since the same code is
|
||||||
|
# built with non-standard flags and false-positives are flagged.
|
||||||
|
- ninja bootstrap_tools
|
||||||
|
|
||||||
|
# Actual analysis.
|
||||||
|
index:
|
||||||
|
build_command:
|
||||||
|
- ninja
|
@ -1,468 +0,0 @@
|
|||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
|
|
||||||
Version 2.1, February 1999
|
|
||||||
|
|
||||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
|
||||||
document, but changing it is not allowed.
|
|
||||||
|
|
||||||
[This is the first released version of the Lesser GPL. It also counts as the
|
|
||||||
successor of the GNU Library Public License, version 2, hence the version
|
|
||||||
number 2.1.]
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your freedom to share
|
|
||||||
and change it. By contrast, the GNU General Public Licenses are intended to
|
|
||||||
guarantee your freedom to share and change free software--to make sure the
|
|
||||||
software is free for all its users.
|
|
||||||
|
|
||||||
This license, the Lesser General Public License, applies to some specially
|
|
||||||
designated software packages--typically libraries--of the Free Software Foundation
|
|
||||||
and other authors who decide to use it. You can use it too, but we suggest
|
|
||||||
you first think carefully about whether this license or the ordinary General
|
|
||||||
Public License is the better strategy to use in any particular case, based
|
|
||||||
on the explanations below.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom of use, not price.
|
|
||||||
Our General Public Licenses are designed to make sure that you have the freedom
|
|
||||||
to distribute copies of free software (and charge for this service if you
|
|
||||||
wish); that you receive source code or can get it if you want it; that you
|
|
||||||
can change the software and use pieces of it in new free programs; and that
|
|
||||||
you are informed that you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid distributors
|
|
||||||
to deny you these rights or to ask you to surrender these rights. These restrictions
|
|
||||||
translate to certain responsibilities for you if you distribute copies of
|
|
||||||
the library or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of the library, whether gratis or for
|
|
||||||
a fee, you must give the recipients all the rights that we gave you. You must
|
|
||||||
make sure that they, too, receive or can get the source code. If you link
|
|
||||||
other code with the library, you must provide complete object files to the
|
|
||||||
recipients, so that they can relink them with the library after making changes
|
|
||||||
to the library and recompiling it. And you must show them these terms so they
|
|
||||||
know their rights.
|
|
||||||
|
|
||||||
We protect your rights with a two-step method: (1) we copyright the library,
|
|
||||||
and (2) we offer you this license, which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the library.
|
|
||||||
|
|
||||||
To protect each distributor, we want to make it very clear that there is no
|
|
||||||
warranty for the free library. Also, if the library is modified by someone
|
|
||||||
else and passed on, the recipients should know that what they have is not
|
|
||||||
the original version, so that the original author's reputation will not be
|
|
||||||
affected by problems that might be introduced by others.
|
|
||||||
|
|
||||||
Finally, software patents pose a constant threat to the existence of any free
|
|
||||||
program. We wish to make sure that a company cannot effectively restrict the
|
|
||||||
users of a free program by obtaining a restrictive license from a patent holder.
|
|
||||||
Therefore, we insist that any patent license obtained for a version of the
|
|
||||||
library must be consistent with the full freedom of use specified in this
|
|
||||||
license.
|
|
||||||
|
|
||||||
Most GNU software, including some libraries, is covered by the ordinary GNU
|
|
||||||
General Public License. This license, the GNU Lesser General Public License,
|
|
||||||
applies to certain designated libraries, and is quite different from the ordinary
|
|
||||||
General Public License. We use this license for certain libraries in order
|
|
||||||
to permit linking those libraries into non-free programs.
|
|
||||||
|
|
||||||
When a program is linked with a library, whether statically or using a shared
|
|
||||||
library, the combination of the two is legally speaking a combined work, a
|
|
||||||
derivative of the original library. The ordinary General Public License therefore
|
|
||||||
permits such linking only if the entire combination fits its criteria of freedom.
|
|
||||||
The Lesser General Public License permits more lax criteria for linking other
|
|
||||||
code with the library.
|
|
||||||
|
|
||||||
We call this license the "Lesser" General Public License because it does Less
|
|
||||||
to protect the user's freedom than the ordinary General Public License. It
|
|
||||||
also provides other free software developers Less of an advantage over competing
|
|
||||||
non-free programs. These disadvantages are the reason we use the ordinary
|
|
||||||
General Public License for many libraries. However, the Lesser license provides
|
|
||||||
advantages in certain special circumstances.
|
|
||||||
|
|
||||||
For example, on rare occasions, there may be a special need to encourage the
|
|
||||||
widest possible use of a certain library, so that it becomes a de-facto standard.
|
|
||||||
To achieve this, non-free programs must be allowed to use the library. A more
|
|
||||||
frequent case is that a free library does the same job as widely used non-free
|
|
||||||
libraries. In this case, there is little to gain by limiting the free library
|
|
||||||
to free software only, so we use the Lesser General Public License.
|
|
||||||
|
|
||||||
In other cases, permission to use a particular library in non-free programs
|
|
||||||
enables a greater number of people to use a large body of free software. For
|
|
||||||
example, permission to use the GNU C Library in non-free programs enables
|
|
||||||
many more people to use the whole GNU operating system, as well as its variant,
|
|
||||||
the GNU/Linux operating system.
|
|
||||||
|
|
||||||
Although the Lesser General Public License is Less protective of the users'
|
|
||||||
freedom, it does ensure that the user of a program that is linked with the
|
|
||||||
Library has the freedom and the wherewithal to run that program using a modified
|
|
||||||
version of the Library.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and modification
|
|
||||||
follow. Pay close attention to the difference between a "work based on the
|
|
||||||
library" and a "work that uses the library". The former contains code derived
|
|
||||||
from the library, whereas the latter must be combined with the library in
|
|
||||||
order to run.
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License Agreement applies to any software library or other program
|
|
||||||
which contains a notice placed by the copyright holder or other authorized
|
|
||||||
party saying it may be distributed under the terms of this Lesser General
|
|
||||||
Public License (also called "this License"). Each licensee is addressed as
|
|
||||||
"you".
|
|
||||||
|
|
||||||
A "library" means a collection of software functions and/or data prepared
|
|
||||||
so as to be conveniently linked with application programs (which use some
|
|
||||||
of those functions and data) to form executables.
|
|
||||||
|
|
||||||
The "Library", below, refers to any such software library or work which has
|
|
||||||
been distributed under these terms. A "work based on the Library" means either
|
|
||||||
the Library or any derivative work under copyright law: that is to say, a
|
|
||||||
work containing the Library or a portion of it, either verbatim or with modifications
|
|
||||||
and/or translated straightforwardly into another language. (Hereinafter, translation
|
|
||||||
is included without limitation in the term "modification".)
|
|
||||||
|
|
||||||
"Source code" for a work means the preferred form of the work for making modifications
|
|
||||||
to it. For a library, complete source code means all the source code for all
|
|
||||||
modules it contains, plus any associated interface definition files, plus
|
|
||||||
the scripts used to control compilation and installation of the library.
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not covered
|
|
||||||
by this License; they are outside its scope. The act of running a program
|
|
||||||
using the Library is not restricted, and output from such a program is covered
|
|
||||||
only if its contents constitute a work based on the Library (independent of
|
|
||||||
the use of the Library in a tool for writing it). Whether that is true depends
|
|
||||||
on what the Library does and what the program that uses the Library does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Library's complete source
|
|
||||||
code as you receive it, in any medium, provided that you conspicuously and
|
|
||||||
appropriately publish on each copy an appropriate copyright notice and disclaimer
|
|
||||||
of warranty; keep intact all the notices that refer to this License and to
|
|
||||||
the absence of any warranty; and distribute a copy of this License along with
|
|
||||||
the Library.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy, and you
|
|
||||||
may at your option offer warranty protection in exchange for a fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion of it,
|
|
||||||
thus forming a work based on the Library, and copy and distribute such modifications
|
|
||||||
or work under the terms of Section 1 above, provided that you also meet all
|
|
||||||
of these conditions:
|
|
||||||
|
|
||||||
a) The modified work must itself be a software library.
|
|
||||||
|
|
||||||
b) You must cause the files modified to carry prominent notices stating that
|
|
||||||
you changed the files and the date of any change.
|
|
||||||
|
|
||||||
c) You must cause the whole of the work to be licensed at no charge to all
|
|
||||||
third parties under the terms of this License.
|
|
||||||
|
|
||||||
d) If a facility in the modified Library refers to a function or a table of
|
|
||||||
data to be supplied by an application program that uses the facility, other
|
|
||||||
than as an argument passed when the facility is invoked, then you must make
|
|
||||||
a good faith effort to ensure that, in the event an application does not supply
|
|
||||||
such function or table, the facility still operates, and performs whatever
|
|
||||||
part of its purpose remains meaningful.
|
|
||||||
|
|
||||||
(For example, a function in a library to compute square roots has a purpose
|
|
||||||
that is entirely well-defined independent of the application. Therefore, Subsection
|
|
||||||
2d requires that any application-supplied function or table used by this function
|
|
||||||
must be optional: if the application does not supply it, the square root function
|
|
||||||
must still compute square roots.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If identifiable
|
|
||||||
sections of that work are not derived from the Library, and can be reasonably
|
|
||||||
considered independent and separate works in themselves, then this License,
|
|
||||||
and its terms, do not apply to those sections when you distribute them as
|
|
||||||
separate works. But when you distribute the same sections as part of a whole
|
|
||||||
which is a work based on the Library, the distribution of the whole must be
|
|
||||||
on the terms of this License, whose permissions for other licensees extend
|
|
||||||
to the entire whole, and thus to each and every part regardless of who wrote
|
|
||||||
it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest your
|
|
||||||
rights to work written entirely by you; rather, the intent is to exercise
|
|
||||||
the right to control the distribution of derivative or collective works based
|
|
||||||
on the Library.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Library with
|
|
||||||
the Library (or with a work based on the Library) on a volume of a storage
|
|
||||||
or distribution medium does not bring the other work under the scope of this
|
|
||||||
License.
|
|
||||||
|
|
||||||
3. You may opt to apply the terms of the ordinary GNU General Public License
|
|
||||||
instead of this License to a given copy of the Library. To do this, you must
|
|
||||||
alter all the notices that refer to this License, so that they refer to the
|
|
||||||
ordinary GNU General Public License, version 2, instead of to this License.
|
|
||||||
(If a newer version than version 2 of the ordinary GNU General Public License
|
|
||||||
has appeared, then you can specify that version instead if you wish.) Do not
|
|
||||||
make any other change in these notices.
|
|
||||||
|
|
||||||
Once this change is made in a given copy, it is irreversible for that copy,
|
|
||||||
so the ordinary GNU General Public License applies to all subsequent copies
|
|
||||||
and derivative works made from that copy.
|
|
||||||
|
|
||||||
This option is useful when you wish to copy part of the code of the Library
|
|
||||||
into a program that is not a library.
|
|
||||||
|
|
||||||
4. You may copy and distribute the Library (or a portion or derivative of
|
|
||||||
it, under Section 2) in object code or executable form under the terms of
|
|
||||||
Sections 1 and 2 above provided that you accompany it with the complete corresponding
|
|
||||||
machine-readable source code, which must be distributed under the terms of
|
|
||||||
Sections 1 and 2 above on a medium customarily used for software interchange.
|
|
||||||
|
|
||||||
If distribution of object code is made by offering access to copy from a designated
|
|
||||||
place, then offering equivalent access to copy the source code from the same
|
|
||||||
place satisfies the requirement to distribute the source code, even though
|
|
||||||
third parties are not compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
5. A program that contains no derivative of any portion of the Library, but
|
|
||||||
is designed to work with the Library by being compiled or linked with it,
|
|
||||||
is called a "work that uses the Library". Such a work, in isolation, is not
|
|
||||||
a derivative work of the Library, and therefore falls outside the scope of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
However, linking a "work that uses the Library" with the Library creates an
|
|
||||||
executable that is a derivative of the Library (because it contains portions
|
|
||||||
of the Library), rather than a "work that uses the library". The executable
|
|
||||||
is therefore covered by this License. Section 6 states terms for distribution
|
|
||||||
of such executables.
|
|
||||||
|
|
||||||
When a "work that uses the Library" uses material from a header file that
|
|
||||||
is part of the Library, the object code for the work may be a derivative work
|
|
||||||
of the Library even though the source code is not. Whether this is true is
|
|
||||||
especially significant if the work can be linked without the Library, or if
|
|
||||||
the work is itself a library. The threshold for this to be true is not precisely
|
|
||||||
defined by law.
|
|
||||||
|
|
||||||
If such an object file uses only numerical parameters, data structure layouts
|
|
||||||
and accessors, and small macros and small inline functions (ten lines or less
|
|
||||||
in length), then the use of the object file is unrestricted, regardless of
|
|
||||||
whether it is legally a derivative work. (Executables containing this object
|
|
||||||
code plus portions of the Library will still fall under Section 6.)
|
|
||||||
|
|
||||||
Otherwise, if the work is a derivative of the Library, you may distribute
|
|
||||||
the object code for the work under the terms of Section 6. Any executables
|
|
||||||
containing that work also fall under Section 6, whether or not they are linked
|
|
||||||
directly with the Library itself.
|
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also combine or link a "work
|
|
||||||
that uses the Library" with the Library to produce a work containing portions
|
|
||||||
of the Library, and distribute that work under terms of your choice, provided
|
|
||||||
that the terms permit modification of the work for the customer's own use
|
|
||||||
and reverse engineering for debugging such modifications.
|
|
||||||
|
|
||||||
You must give prominent notice with each copy of the work that the Library
|
|
||||||
is used in it and that the Library and its use are covered by this License.
|
|
||||||
You must supply a copy of this License. If the work during execution displays
|
|
||||||
copyright notices, you must include the copyright notice for the Library among
|
|
||||||
them, as well as a reference directing the user to the copy of this License.
|
|
||||||
Also, you must do one of these things:
|
|
||||||
|
|
||||||
a) Accompany the work with the complete corresponding machine-readable source
|
|
||||||
code for the Library including whatever changes were used in the work (which
|
|
||||||
must be distributed under Sections 1 and 2 above); and, if the work is an
|
|
||||||
executable linked with the Library, with the complete machine-readable "work
|
|
||||||
that uses the Library", as object code and/or source code, so that the user
|
|
||||||
can modify the Library and then relink to produce a modified executable containing
|
|
||||||
the modified Library. (It is understood that the user who changes the contents
|
|
||||||
of definitions files in the Library will not necessarily be able to recompile
|
|
||||||
the application to use the modified definitions.)
|
|
||||||
|
|
||||||
b) Use a suitable shared library mechanism for linking with the Library. A
|
|
||||||
suitable mechanism is one that (1) uses at run time a copy of the library
|
|
||||||
already present on the user's computer system, rather than copying library
|
|
||||||
functions into the executable, and (2) will operate properly with a modified
|
|
||||||
version of the library, if the user installs one, as long as the modified
|
|
||||||
version is interface-compatible with the version that the work was made with.
|
|
||||||
|
|
||||||
c) Accompany the work with a written offer, valid for at least three years,
|
|
||||||
to give the same user the materials specified in Subsection 6a, above, for
|
|
||||||
a charge no more than the cost of performing this distribution.
|
|
||||||
|
|
||||||
d) If distribution of the work is made by offering access to copy from a designated
|
|
||||||
place, offer equivalent access to copy the above specified materials from
|
|
||||||
the same place.
|
|
||||||
|
|
||||||
e) Verify that the user has already received a copy of these materials or
|
|
||||||
that you have already sent this user a copy.
|
|
||||||
|
|
||||||
For an executable, the required form of the "work that uses the Library" must
|
|
||||||
include any data and utility programs needed for reproducing the executable
|
|
||||||
from it. However, as a special exception, the materials to be distributed
|
|
||||||
need not include anything that is normally distributed (in either source or
|
|
||||||
binary form) with the major components (compiler, kernel, and so on) of the
|
|
||||||
operating system on which the executable runs, unless that component itself
|
|
||||||
accompanies the executable.
|
|
||||||
|
|
||||||
It may happen that this requirement contradicts the license restrictions of
|
|
||||||
other proprietary libraries that do not normally accompany the operating system.
|
|
||||||
Such a contradiction means you cannot use both them and the Library together
|
|
||||||
in an executable that you distribute.
|
|
||||||
|
|
||||||
7. You may place library facilities that are a work based on the Library side-by-side
|
|
||||||
in a single library together with other library facilities not covered by
|
|
||||||
this License, and distribute such a combined library, provided that the separate
|
|
||||||
distribution of the work based on the Library and of the other library facilities
|
|
||||||
is otherwise permitted, and provided that you do these two things:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work based on the
|
|
||||||
Library, uncombined with any other library facilities. This must be distributed
|
|
||||||
under the terms of the Sections above.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library of the fact that part of
|
|
||||||
it is a work based on the Library, and explaining where to find the accompanying
|
|
||||||
uncombined form of the same work.
|
|
||||||
|
|
||||||
8. You may not copy, modify, sublicense, link with, or distribute the Library
|
|
||||||
except as expressly provided under this License. Any attempt otherwise to
|
|
||||||
copy, modify, sublicense, link with, or distribute the Library is void, and
|
|
||||||
will automatically terminate your rights under this License. However, parties
|
|
||||||
who have received copies, or rights, from you under this License will not
|
|
||||||
have their licenses terminated so long as such parties remain in full compliance.
|
|
||||||
|
|
||||||
9. You are not required to accept this License, since you have not signed
|
|
||||||
it. However, nothing else grants you permission to modify or distribute the
|
|
||||||
Library or its derivative works. These actions are prohibited by law if you
|
|
||||||
do not accept this License. Therefore, by modifying or distributing the Library
|
|
||||||
(or any work based on the Library), you indicate your acceptance of this License
|
|
||||||
to do so, and all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Library or works based on it.
|
|
||||||
|
|
||||||
10. Each time you redistribute the Library (or any work based on the Library),
|
|
||||||
the recipient automatically receives a license from the original licensor
|
|
||||||
to copy, distribute, link with or modify the Library subject to these terms
|
|
||||||
and conditions. You may not impose any further restrictions on the recipients'
|
|
||||||
exercise of the rights granted herein. You are not responsible for enforcing
|
|
||||||
compliance by third parties with this License.
|
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent infringement
|
|
||||||
or for any other reason (not limited to patent issues), conditions are imposed
|
|
||||||
on you (whether by court order, agreement or otherwise) that contradict the
|
|
||||||
conditions of this License, they do not excuse you from the conditions of
|
|
||||||
this License. If you cannot distribute so as to satisfy simultaneously your
|
|
||||||
obligations under this License and any other pertinent obligations, then as
|
|
||||||
a consequence you may not distribute the Library at all. For example, if a
|
|
||||||
patent license would not permit royalty-free redistribution of the Library
|
|
||||||
by all those who receive copies directly or indirectly through you, then the
|
|
||||||
only way you could satisfy both it and this License would be to refrain entirely
|
|
||||||
from distribution of the Library.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under any
|
|
||||||
particular circumstance, the balance of the section is intended to apply,
|
|
||||||
and the section as a whole is intended to apply in other circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any patents
|
|
||||||
or other property right claims or to contest validity of any such claims;
|
|
||||||
this section has the sole purpose of protecting the integrity of the free
|
|
||||||
software distribution system which is implemented by public license practices.
|
|
||||||
Many people have made generous contributions to the wide range of software
|
|
||||||
distributed through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing to
|
|
||||||
distribute software through any other system and a licensee cannot impose
|
|
||||||
that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to be a
|
|
||||||
consequence of the rest of this License.
|
|
||||||
|
|
||||||
12. If the distribution and/or use of the Library is restricted in certain
|
|
||||||
countries either by patents or by copyrighted interfaces, the original copyright
|
|
||||||
holder who places the Library under this License may add an explicit geographical
|
|
||||||
distribution limitation excluding those countries, so that distribution is
|
|
||||||
permitted only in or among countries not thus excluded. In such case, this
|
|
||||||
License incorporates the limitation as if written in the body of this License.
|
|
||||||
|
|
||||||
13. The Free Software Foundation may publish revised and/or new versions of
|
|
||||||
the Lesser General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to address
|
|
||||||
new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Library specifies
|
|
||||||
a version number of this License which applies to it and "any later version",
|
|
||||||
you have the option of following the terms and conditions either of that version
|
|
||||||
or of any later version published by the Free Software Foundation. If the
|
|
||||||
Library does not specify a license version number, you may choose any version
|
|
||||||
ever published by the Free Software Foundation.
|
|
||||||
|
|
||||||
14. If you wish to incorporate parts of the Library into other free programs
|
|
||||||
whose distribution conditions are incompatible with these, write to the author
|
|
||||||
to ask for permission. For software which is copyrighted by the Free Software
|
|
||||||
Foundation, write to the Free Software Foundation; we sometimes make exceptions
|
|
||||||
for this. Our decision will be guided by the two goals of preserving the free
|
|
||||||
status of all derivatives of our free software and of promoting the sharing
|
|
||||||
and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
|
|
||||||
THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
|
|
||||||
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
|
|
||||||
"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
|
||||||
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
|
|
||||||
OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
|
||||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
|
|
||||||
THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
|
||||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
|
|
||||||
OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
|
|
||||||
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
|
|
||||||
OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
|
|
||||||
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Libraries
|
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest possible
|
|
||||||
use to the public, we recommend making it free software that everyone can
|
|
||||||
redistribute and change. You can do so by permitting redistribution under
|
|
||||||
these terms (or, alternatively, under the terms of the ordinary General Public
|
|
||||||
License).
|
|
||||||
|
|
||||||
To apply these terms, attach the following notices to the library. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively convey
|
|
||||||
the exclusion of warranty; and each file should have at least the "copyright"
|
|
||||||
line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the library's name and an idea of what it does.>
|
|
||||||
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or modify it under
|
|
||||||
the terms of the GNU Lesser General Public License as published by the Free
|
|
||||||
Software Foundation; either version 2.1 of the License, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
|
||||||
details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License along
|
|
||||||
with this library; if not, write to the Free Software Foundation, Inc., 51
|
|
||||||
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your school,
|
|
||||||
if any, to sign a "copyright disclaimer" for the library, if necessary. Here
|
|
||||||
is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in
|
|
||||||
|
|
||||||
the library `Frob' (a library for tweaking knobs) written
|
|
||||||
|
|
||||||
by James Random Hacker.
|
|
||||||
|
|
||||||
< signature of Ty Coon > , 1 April 1990
|
|
||||||
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
That's all there is to it!
|
|
@ -68,12 +68,6 @@ precedence = "closest"
|
|||||||
SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
|
SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
|
||||||
SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only"
|
SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only"
|
||||||
|
|
||||||
[[annotations]]
|
|
||||||
path = ["src/corelib/global/patches/tlexpected/**", "src/corelib/global/qexpected_p.h"]
|
|
||||||
precedence = "closest"
|
|
||||||
SPDX-FileCopyrightText = "To the extent possible under law, Sy Brand has waived all copyright and related or neighboring rights to the expected library. This work is published from: United Kingdom."
|
|
||||||
SPDX-License-Identifier = "CC0-1.0"
|
|
||||||
|
|
||||||
[[annotations]]
|
[[annotations]]
|
||||||
path = ["src/gui/doc/snippets/textdocument-images/images.qrc"]
|
path = ["src/gui/doc/snippets/textdocument-images/images.qrc"]
|
||||||
precedence = "closest"
|
precedence = "closest"
|
||||||
|
@ -145,7 +145,7 @@ endforeach()
|
|||||||
set(XCB_XCB_component_deps)
|
set(XCB_XCB_component_deps)
|
||||||
set(XCB_COMPOSITE_component_deps XCB XFIXES)
|
set(XCB_COMPOSITE_component_deps XCB XFIXES)
|
||||||
set(XCB_DAMAGE_component_deps XCB XFIXES)
|
set(XCB_DAMAGE_component_deps XCB XFIXES)
|
||||||
set(XCB_IMAGE_component_deps XCB SHM AUX)
|
set(XCB_IMAGE_component_deps XCB SHM)
|
||||||
set(XCB_RENDERUTIL_component_deps XCB RENDER)
|
set(XCB_RENDERUTIL_component_deps XCB RENDER)
|
||||||
set(XCB_XFIXES_component_deps XCB RENDER SHAPE)
|
set(XCB_XFIXES_component_deps XCB RENDER SHAPE)
|
||||||
set(XCB_XVMC_component_deps XCB XV)
|
set(XCB_XVMC_component_deps XCB XV)
|
||||||
|
@ -21,31 +21,25 @@
|
|||||||
# ``DB2::DB2``
|
# ``DB2::DB2``
|
||||||
# The db2 client library
|
# The db2 client library
|
||||||
|
|
||||||
if(NOT DEFINED DB2_ROOT)
|
|
||||||
if(DEFINED ENV{DB2_ROOT})
|
|
||||||
set(DB2_ROOT "$ENV{DB2_ROOT}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT DEFINED DB2_INCLUDE_DIR)
|
if (NOT DEFINED DB2_INCLUDE_DIR)
|
||||||
find_path(DB2_INCLUDE_DIR
|
find_path(DB2_INCLUDE_DIR
|
||||||
NAMES sqlcli1.h
|
NAMES sqlcli1.h
|
||||||
HINTS "${DB2_ROOT}" ENV DB2_HOME
|
HINTS ENV DB2_HOME
|
||||||
PATH_SUFFIXES include)
|
PATH_SUFFIXES include)
|
||||||
else()
|
else()
|
||||||
find_path(DB2_INCLUDE_DIR
|
find_path(DB2_INCLUDE_DIR
|
||||||
NAMES sqlcli1.h
|
NAMES sqlcli1.h
|
||||||
HINTS "${DB2_INCLUDE_DIR}")
|
HINTS ${DB2_INCLUDE_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED DB2_LIBRARY_DIR)
|
if (NOT DEFINED DB2_LIBRARY_DIR)
|
||||||
find_library(DB2_LIBRARY
|
find_library(DB2_LIBRARY
|
||||||
NAMES db2 db2cli64
|
NAMES db2
|
||||||
HINTS "${DB2_ROOT}" ENV DB2LIB)
|
HINTS ENV DB2LIB)
|
||||||
else()
|
else()
|
||||||
find_library(DB2_LIBRARY
|
find_library(DB2_LIBRARY
|
||||||
NAMES db2
|
NAMES db2
|
||||||
HINTS "${DB2_LIBRARY_DIR}")
|
HINTS ${DB2_LIBRARY_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
# Copyright (C) 2025 The Qt Company Ltd.
|
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
|
|
||||||
find_package(PkgConfig QUIET)
|
|
||||||
|
|
||||||
pkg_check_modules(JeMalloc IMPORTED_TARGET "jemalloc")
|
|
||||||
|
|
||||||
if (NOT TARGET PkgConfig::JeMalloc)
|
|
||||||
set(JeMalloc_FOUND 0)
|
|
||||||
endif()
|
|
@ -7,6 +7,9 @@ cmake_minimum_required(VERSION @min_new_policy_version@...@max_new_policy_versio
|
|||||||
|
|
||||||
include(CMakeFindDependencyMacro)
|
include(CMakeFindDependencyMacro)
|
||||||
|
|
||||||
|
get_filename_component(_import_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
|
get_filename_component(_import_prefix "${_import_prefix}" REALPATH)
|
||||||
|
|
||||||
# Extra cmake code begin
|
# Extra cmake code begin
|
||||||
@extra_cmake_code@
|
@extra_cmake_code@
|
||||||
# Extra cmake code end
|
# Extra cmake code end
|
||||||
|
@ -105,30 +105,27 @@ function(qt_internal_add_cmake_library target)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
_qt_internal_forward_function_args(
|
|
||||||
FORWARD_PREFIX arg
|
|
||||||
FORWARD_OUT_VAR extend_target_args
|
|
||||||
FORWARD_MULTI
|
|
||||||
SOURCES
|
|
||||||
NO_PCH_SOURCES
|
|
||||||
INCLUDE_DIRECTORIES
|
|
||||||
SYSTEM_INCLUDE_DIRECTORIES
|
|
||||||
PUBLIC_INCLUDE_DIRECTORIES
|
|
||||||
PUBLIC_DEFINES
|
|
||||||
DEFINES
|
|
||||||
PUBLIC_LIBRARIES
|
|
||||||
COMPILE_OPTIONS
|
|
||||||
PUBLIC_COMPILE_OPTIONS
|
|
||||||
LINK_OPTIONS
|
|
||||||
PUBLIC_LINK_OPTIONS
|
|
||||||
MOC_OPTIONS
|
|
||||||
ENABLE_AUTOGEN_TOOLS
|
|
||||||
DISABLE_AUTOGEN_TOOLS
|
|
||||||
)
|
|
||||||
|
|
||||||
qt_internal_extend_target("${target}"
|
qt_internal_extend_target("${target}"
|
||||||
${extend_target_args}
|
SOURCES ${arg_SOURCES}
|
||||||
|
INCLUDE_DIRECTORIES
|
||||||
|
${arg_INCLUDE_DIRECTORIES}
|
||||||
|
SYSTEM_INCLUDE_DIRECTORIES
|
||||||
|
${arg_SYSTEM_INCLUDE_DIRECTORIES}
|
||||||
|
PUBLIC_INCLUDE_DIRECTORIES
|
||||||
|
${arg_PUBLIC_INCLUDE_DIRECTORIES}
|
||||||
|
PUBLIC_DEFINES
|
||||||
|
${arg_PUBLIC_DEFINES}
|
||||||
|
DEFINES
|
||||||
|
${arg_DEFINES}
|
||||||
|
PUBLIC_LIBRARIES ${arg_PUBLIC_LIBRARIES}
|
||||||
LIBRARIES ${arg_LIBRARIES} Qt::PlatformCommonInternal
|
LIBRARIES ${arg_LIBRARIES} Qt::PlatformCommonInternal
|
||||||
|
COMPILE_OPTIONS ${arg_COMPILE_OPTIONS}
|
||||||
|
PUBLIC_COMPILE_OPTIONS ${arg_PUBLIC_COMPILE_OPTIONS}
|
||||||
|
LINK_OPTIONS ${arg_LINK_OPTIONS}
|
||||||
|
PUBLIC_LINK_OPTIONS ${arg_PUBLIC_LINK_OPTIONS}
|
||||||
|
MOC_OPTIONS ${arg_MOC_OPTIONS}
|
||||||
|
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
|
||||||
|
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
|
||||||
NO_UNITY_BUILD # Disabled by default
|
NO_UNITY_BUILD # Disabled by default
|
||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -287,189 +287,3 @@ function(qt_internal_android_dependencies target)
|
|||||||
COMPONENT
|
COMPONENT
|
||||||
Devel)
|
Devel)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qt_internal_set_up_build_host_java_docs)
|
|
||||||
if("${ANDROID_SDK_ROOT}" STREQUAL "")
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"QT_HOST_DOCUMENT_JAVA_SOURCES=ON requires setting ANDROID_SDK_ROOT."
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
_qt_internal_locate_android_jar()
|
|
||||||
set(QT_ANDROID_JAR "${QT_ANDROID_JAR}" PARENT_SCOPE)
|
|
||||||
set(QT_ANDROID_API_USED_FOR_JAVA "${QT_ANDROID_API_USED_FOR_JAVA}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Collect the Java source files that were recorded by qt_internal_add_jar.
|
|
||||||
# If we're not building for Android, qt_internal_add_jar is not called, and we simple collect
|
|
||||||
# all java files under the current directory.
|
|
||||||
function(qt_internal_collect_jar_sources out_var)
|
|
||||||
if(NOT ANDROID)
|
|
||||||
file(GLOB_RECURSE sources LIST_DIRECTORIES FALSE "*.java")
|
|
||||||
set("${out_var}" "${sources}" PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(no_value_options "")
|
|
||||||
set(single_value_options DIRECTORY)
|
|
||||||
set(multi_value_options "")
|
|
||||||
cmake_parse_arguments(PARSE_ARGV 1 arg
|
|
||||||
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
|
||||||
)
|
|
||||||
_qt_internal_validate_all_args_are_parsed(arg)
|
|
||||||
|
|
||||||
set(directory_arg "")
|
|
||||||
if(DEFINED arg_DIRECTORY)
|
|
||||||
set(directory_arg DIRECTORY ${arg_DIRECTORY})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_directory_property(result ${directory_arg} _qt_jar_sources)
|
|
||||||
get_directory_property(subdirs ${directory_arg} SUBDIRECTORIES)
|
|
||||||
foreach(subdir IN LISTS subdirs)
|
|
||||||
qt_internal_collect_jar_sources(subdir_result DIRECTORY ${subdir})
|
|
||||||
if(NOT "${subdir_result}" STREQUAL "")
|
|
||||||
list(APPEND result ${subdir_result})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
set("${out_var}" "${result}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(qt_internal_add_javadoc_target)
|
|
||||||
set(no_value_options "")
|
|
||||||
set(single_value_options
|
|
||||||
MODULE
|
|
||||||
OUTPUT_DIR
|
|
||||||
)
|
|
||||||
set(multi_value_options
|
|
||||||
SOURCES
|
|
||||||
)
|
|
||||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
|
||||||
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
|
||||||
)
|
|
||||||
_qt_internal_validate_all_args_are_parsed(arg)
|
|
||||||
|
|
||||||
if(TARGET ${arg_MODULE})
|
|
||||||
get_target_property(skip ${arg_MODULE} _qt_skip_javadoc)
|
|
||||||
if(skip)
|
|
||||||
message(VERBOSE "Skipping generation of Android HTML docs for ${arg_MODULE}.")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Collect source directories from source file paths.
|
|
||||||
set(source_dirs "")
|
|
||||||
foreach(source_path IN LISTS arg_SOURCES)
|
|
||||||
get_filename_component(dir_path "${source_path}" DIRECTORY)
|
|
||||||
list(APPEND source_dirs "${dir_path}")
|
|
||||||
endforeach()
|
|
||||||
list(REMOVE_DUPLICATES source_dirs)
|
|
||||||
|
|
||||||
# Retrieve package names from source dirs.
|
|
||||||
set(package_names "")
|
|
||||||
foreach(source_dir IN LISTS source_dirs)
|
|
||||||
string(REGEX MATCH "/(org/qtproject/qt/android(/.*|$))" package_dir "${source_dir}")
|
|
||||||
if(package_dir STREQUAL "")
|
|
||||||
message(VERBOSE "Java source dir is not a package directory: ${source_dir}")
|
|
||||||
continue()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Store package_dir without leading slash.
|
|
||||||
set(package_dir "${CMAKE_MATCH_1}")
|
|
||||||
|
|
||||||
# Use dots instead of slashes for the package name.
|
|
||||||
string(REPLACE "/" "." package_name "${package_dir}")
|
|
||||||
|
|
||||||
list(APPEND package_names "${package_name}")
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# Strip package paths from the source dirs.
|
|
||||||
list(TRANSFORM source_dirs REPLACE "/org/qtproject/qt/android.*" "")
|
|
||||||
list(REMOVE_DUPLICATES source_dirs)
|
|
||||||
|
|
||||||
# Use the correct separator for the --source-path argument.
|
|
||||||
if(NOT CMAKE_HOST_WIN32)
|
|
||||||
string(REPLACE ";" ":" source_dirs "${source_dirs}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Use a response file to avoid quoting issues with the space-separated package names.
|
|
||||||
set(javadoc_output_dir "${arg_OUTPUT_DIR}/android")
|
|
||||||
set(response_file "${CMAKE_CURRENT_BINARY_DIR}/doc/.javadocargs")
|
|
||||||
string(REPLACE ";" " " package_names_space_separated "${package_names}")
|
|
||||||
file(CONFIGURE
|
|
||||||
OUTPUT "${response_file}"
|
|
||||||
CONTENT "${package_names_space_separated}
|
|
||||||
--class-path \"${QT_ANDROID_JAR}\"
|
|
||||||
-d \"${javadoc_output_dir}\"
|
|
||||||
--source-path \"${source_dirs}\""
|
|
||||||
)
|
|
||||||
|
|
||||||
set(module ${arg_MODULE})
|
|
||||||
set(javadoc_target android_html_docs_${module})
|
|
||||||
add_custom_target(${javadoc_target} ${command_args}
|
|
||||||
COMMAND ${Java_JAVADOC_EXECUTABLE} "@${response_file}"
|
|
||||||
COMMENT "Generating Java documentation"
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
add_dependencies(docs_android ${javadoc_target})
|
|
||||||
|
|
||||||
if (QT_WILL_INSTALL)
|
|
||||||
install(DIRECTORY "${arg_OUTPUT_DIR}/"
|
|
||||||
DESTINATION "${INSTALL_DOCDIR}/${module}"
|
|
||||||
COMPONENT _install_docs_android_${module}
|
|
||||||
EXCLUDE_FROM_ALL
|
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_target(install_docs_android_${module}
|
|
||||||
COMMAND ${CMAKE_COMMAND}
|
|
||||||
--install "${CMAKE_BINARY_DIR}"
|
|
||||||
--component _install_docs_android_${module}
|
|
||||||
COMMENT "Installing Android html docs for ${module}"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
add_custom_target(install_docs_android_${module})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_dependencies(install_docs_android_${module} ${javadoc_target})
|
|
||||||
add_dependencies(install_docs_android install_docs_android_${module})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(qt_internal_create_source_jar)
|
|
||||||
set(no_value_options "")
|
|
||||||
set(single_value_options MODULE)
|
|
||||||
set(multi_value_options SOURCES)
|
|
||||||
cmake_parse_arguments(PARSE_ARGV 0 arg
|
|
||||||
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
|
||||||
)
|
|
||||||
_qt_internal_validate_all_args_are_parsed(arg)
|
|
||||||
|
|
||||||
set(module ${arg_MODULE})
|
|
||||||
set(jar_target android_source_jar_${module})
|
|
||||||
set(jar_name ${CMAKE_INSTALL_NAMESPACE}AndroidSources${module})
|
|
||||||
add_jar(${jar_target}
|
|
||||||
SOURCES ${arg_SOURCES}
|
|
||||||
VERSION ${PROJECT_VERSION}
|
|
||||||
INCLUDE_JARS "${QT_ANDROID_JAR}"
|
|
||||||
OUTPUT_NAME ${jar_name}
|
|
||||||
)
|
|
||||||
set_target_properties(${jar_target} PROPERTIES EXCLUDE_FROM_ALL ON)
|
|
||||||
add_dependencies(android_source_jars ${jar_target})
|
|
||||||
|
|
||||||
if(QT_WILL_INSTALL)
|
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${jar_name}-${PROJECT_VERSION}.jar"
|
|
||||||
DESTINATION "${INSTALL_DATADIR}/android/${module}"
|
|
||||||
COMPONENT _install_android_source_jar_${module}
|
|
||||||
EXCLUDE_FROM_ALL
|
|
||||||
)
|
|
||||||
add_custom_target(install_android_source_jar_${module}
|
|
||||||
COMMAND ${CMAKE_COMMAND}
|
|
||||||
--install "${CMAKE_BINARY_DIR}"
|
|
||||||
--component _install_android_source_jar_${module}
|
|
||||||
COMMENT "Installing Android source jar for ${module}"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
add_custom_target(install_android_source_jar_${module})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_dependencies(install_android_source_jar_${module} ${jar_target})
|
|
||||||
add_dependencies(install_android_source_jars install_android_source_jar_${module})
|
|
||||||
endfunction()
|
|
||||||
|
@ -65,11 +65,6 @@ function(qt_auto_detect_wasm)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qt_auto_detect_android)
|
function(qt_auto_detect_android)
|
||||||
# Don't assume an Android build if we're requesting to build Java documentation on the host.
|
|
||||||
if(QT_BUILD_HOST_JAVA_DOCS)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# We assume an Android build if any of the ANDROID_* cache variables are set.
|
# We assume an Android build if any of the ANDROID_* cache variables are set.
|
||||||
if(DEFINED ANDROID_SDK_ROOT
|
if(DEFINED ANDROID_SDK_ROOT
|
||||||
OR DEFINED ANDROID_NDK_ROOT
|
OR DEFINED ANDROID_NDK_ROOT
|
||||||
|
@ -166,9 +166,6 @@ function(qt_manual_moc result)
|
|||||||
set(metatypes_byproducts "${outfile}.json")
|
set(metatypes_byproducts "${outfile}.json")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
_qt_internal_get_moc_compiler_flavor_flags(flavor_flags)
|
|
||||||
list(APPEND moc_parameters ${flavor_flags})
|
|
||||||
|
|
||||||
if (TARGET Qt::Platform)
|
if (TARGET Qt::Platform)
|
||||||
get_target_property(_abi_tag Qt::Platform qt_libcpp_abi_tag)
|
get_target_property(_abi_tag Qt::Platform qt_libcpp_abi_tag)
|
||||||
if (_abi_tag)
|
if (_abi_tag)
|
||||||
@ -199,8 +196,8 @@ function(qt_make_output_file infile prefix suffix source_dir binary_dir result)
|
|||||||
get_filename_component(outfilename "${infile}" NAME_WE)
|
get_filename_component(outfilename "${infile}" NAME_WE)
|
||||||
|
|
||||||
set(base_dir "${source_dir}")
|
set(base_dir "${source_dir}")
|
||||||
_qt_internal_path_is_prefix(binary_dir "${infile}" in_binary)
|
string(FIND "${infile}" "${binary_dir}/" in_binary)
|
||||||
if(in_binary)
|
if (in_binary EQUAL 0)
|
||||||
set(base_dir "${binary_dir}")
|
set(base_dir "${binary_dir}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -70,25 +70,8 @@ if(QT_WILL_INSTALL)
|
|||||||
DESTINATION "${__build_internals_install_dir}")
|
DESTINATION "${__build_internals_install_dir}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(__build_internals_extra_files
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/QtBuildInternalsHelpers.cmake"
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/${__build_internals_standalone_test_template_dir}/CMakeLists.txt")
|
||||||
)
|
|
||||||
|
|
||||||
qt_copy_or_install(
|
|
||||||
FILES ${__build_internals_extra_files}
|
|
||||||
DESTINATION "${__build_internals_install_dir}")
|
|
||||||
|
|
||||||
# In prefix builds we also need to copy the files into the build dir.
|
|
||||||
if(QT_WILL_INSTALL)
|
|
||||||
foreach(__build_internals_file ${__build_internals_extra_files})
|
|
||||||
file(COPY "${__build_internals_file}" DESTINATION "${__build_internals_install_dir}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
_qt_internal_append_cmake_configure_depends(
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/${__build_internals_standalone_test_template_dir}/CMakeLists.txt"
|
|
||||||
${__build_internals_extra_files}
|
|
||||||
)
|
|
||||||
|
|
||||||
qt_internal_create_toolchain_file()
|
qt_internal_create_toolchain_file()
|
||||||
|
|
||||||
|
@ -153,62 +153,6 @@ macro(qt_internal_qtbase_install_mkspecs)
|
|||||||
endforeach()
|
endforeach()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
function(qt_internal_qtbase_install_wayland_files)
|
|
||||||
qt_path_join(wlprotocols_build_dir
|
|
||||||
${QT_BUILD_DIR}
|
|
||||||
${INSTALL_QT_SHAREDIR}/wayland/protocols)
|
|
||||||
qt_path_join(wlprotocols_install_dir
|
|
||||||
${QT_INSTALL_DIR}
|
|
||||||
${INSTALL_QT_SHAREDIR}/wayland/protocols)
|
|
||||||
|
|
||||||
file(GLOB wlprotocols_subdirs
|
|
||||||
LIST_DIRECTORIES TRUE
|
|
||||||
"${PROJECT_SOURCE_DIR}/src/3rdparty/wayland/protocols/*")
|
|
||||||
foreach(entry IN LISTS wlprotocols_subdirs)
|
|
||||||
if (IS_DIRECTORY "${entry}")
|
|
||||||
qt_copy_or_install(DIRECTORY "${entry}"
|
|
||||||
DESTINATION "${wlprotocols_install_dir}"
|
|
||||||
USE_SOURCE_PERMISSIONS)
|
|
||||||
if(QT_WILL_INSTALL)
|
|
||||||
file(COPY "${entry}" DESTINATION "${wlprotocols_build_dir}")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
qt_copy_or_install(FILES "${entry}"
|
|
||||||
DESTINATION "${wlprotocols_install_dir}")
|
|
||||||
if(QT_WILL_INSTALL)
|
|
||||||
file(COPY "${entry}" DESTINATION "${wlprotocols_build_dir}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
qt_path_join(wlextensions_build_dir
|
|
||||||
${QT_BUILD_DIR}
|
|
||||||
${INSTALL_QT_SHAREDIR}/wayland/extensions)
|
|
||||||
qt_path_join(wlextensions_install_dir
|
|
||||||
${QT_INSTALL_DIR}
|
|
||||||
${INSTALL_QT_SHAREDIR}/wayland/extensions)
|
|
||||||
|
|
||||||
file(GLOB wlextensions_subdirs
|
|
||||||
LIST_DIRECTORIES TRUE
|
|
||||||
"${PROJECT_SOURCE_DIR}/src/3rdparty/wayland/extensions/*")
|
|
||||||
foreach(entry IN LISTS wlextensions_subdirs)
|
|
||||||
if (IS_DIRECTORY "${entry}")
|
|
||||||
qt_copy_or_install(DIRECTORY "${entry}"
|
|
||||||
DESTINATION "${wlextensions_install_dir}"
|
|
||||||
USE_SOURCE_PERMISSIONS)
|
|
||||||
if(QT_WILL_INSTALL)
|
|
||||||
file(COPY "${entry}" DESTINATION "${wlextensions_build_dir}")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
qt_copy_or_install(FILES "${entry}"
|
|
||||||
DESTINATION "${wlextensions_install_dir}")
|
|
||||||
if(QT_WILL_INSTALL)
|
|
||||||
file(COPY "${entry}" DESTINATION "${wlextensions_build_dir}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
macro(qt_internal_qtbase_build_repo)
|
macro(qt_internal_qtbase_build_repo)
|
||||||
qt_internal_qtbase_pre_project_setup()
|
qt_internal_qtbase_pre_project_setup()
|
||||||
|
|
||||||
@ -245,8 +189,6 @@ macro(qt_internal_qtbase_build_repo)
|
|||||||
include(src/corelib/Qt6WasmMacros.cmake)
|
include(src/corelib/Qt6WasmMacros.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(src/tools/qtwaylandscanner/Qt6WaylandCompositorMacros.cmake)
|
|
||||||
|
|
||||||
## Targets for global features, etc.:
|
## Targets for global features, etc.:
|
||||||
include(QtBaseGlobalTargets)
|
include(QtBaseGlobalTargets)
|
||||||
|
|
||||||
@ -282,7 +224,6 @@ macro(qt_internal_qtbase_build_repo)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
qt_internal_qtbase_install_mkspecs()
|
qt_internal_qtbase_install_mkspecs()
|
||||||
qt_internal_qtbase_install_wayland_files()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
qt_build_repo_post_process()
|
qt_build_repo_post_process()
|
||||||
|
@ -34,23 +34,6 @@ endmacro()
|
|||||||
|
|
||||||
macro(qt_internal_top_level_setup_after_project)
|
macro(qt_internal_top_level_setup_after_project)
|
||||||
qt_internal_top_level_setup_testing()
|
qt_internal_top_level_setup_testing()
|
||||||
qt_internal_top_level_setup_cmake_and_export_namespace()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# Setting QT_CMAKE_EXPORT_NAMESPACE in the top-level scope is needed for any deferred call that is
|
|
||||||
# run on the top-level scope (CMAKE_BINARY_DIR).
|
|
||||||
macro(qt_internal_top_level_setup_cmake_and_export_namespace)
|
|
||||||
# Include the file that defines qt_internal_setup_cmake_and_export_namespace.
|
|
||||||
# We don't try to call find_package(QtBuildInternals) because that has a lot more side
|
|
||||||
# effects.
|
|
||||||
set(__qt6_build_internals_helpers_path
|
|
||||||
"${__qt6_qtbase_src_path}/cmake/QtBuildInternals/QtBuildInternalsHelpers.cmake")
|
|
||||||
if(NOT EXISTS "${__qt6_build_internals_helpers_path}")
|
|
||||||
message(FATAL_ERROR "Required file does not exist: '${__qt6_build_internals_helpers_path}'")
|
|
||||||
endif()
|
|
||||||
include("${__qt6_build_internals_helpers_path}")
|
|
||||||
|
|
||||||
qt_internal_setup_cmake_and_export_namespace()
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(qt_internal_top_level_setup_testing)
|
macro(qt_internal_top_level_setup_testing)
|
||||||
|
@ -227,7 +227,6 @@ function(qt_internal_get_qt_build_private_files_to_install out_var)
|
|||||||
ModuleDescription.json.in
|
ModuleDescription.json.in
|
||||||
PkgConfigLibrary.pc.in
|
PkgConfigLibrary.pc.in
|
||||||
Qt3rdPartyLibraryConfig.cmake.in
|
Qt3rdPartyLibraryConfig.cmake.in
|
||||||
QtTransitiveExtras.cmake.in
|
|
||||||
QtBaseTopLevelHelpers.cmake
|
QtBaseTopLevelHelpers.cmake
|
||||||
QtBuild.cmake
|
QtBuild.cmake
|
||||||
QtBuildHelpers.cmake
|
QtBuildHelpers.cmake
|
||||||
@ -446,10 +445,8 @@ macro(qt_internal_setup_build_and_global_variables)
|
|||||||
qt_internal_setup_build_examples()
|
qt_internal_setup_build_examples()
|
||||||
|
|
||||||
qt_internal_set_qt_host_path()
|
qt_internal_set_qt_host_path()
|
||||||
qt_internal_setup_find_host_info_package()
|
|
||||||
|
|
||||||
qt_internal_setup_build_docs()
|
qt_internal_setup_build_docs()
|
||||||
qt_internal_setup_build_java_docs_on_host()
|
|
||||||
|
|
||||||
qt_internal_include_qt_platform_android()
|
qt_internal_include_qt_platform_android()
|
||||||
|
|
||||||
@ -469,6 +466,7 @@ macro(qt_internal_setup_build_and_global_variables)
|
|||||||
qt_internal_check_msvc_versions()
|
qt_internal_check_msvc_versions()
|
||||||
qt_internal_check_host_path_set_for_cross_compiling()
|
qt_internal_check_host_path_set_for_cross_compiling()
|
||||||
qt_internal_setup_android_platform_specifics()
|
qt_internal_setup_android_platform_specifics()
|
||||||
|
qt_internal_setup_find_host_info_package()
|
||||||
qt_internal_setup_tool_path_command()
|
qt_internal_setup_tool_path_command()
|
||||||
qt_internal_setup_default_target_function_options()
|
qt_internal_setup_default_target_function_options()
|
||||||
qt_internal_set_default_rpath_settings()
|
qt_internal_set_default_rpath_settings()
|
||||||
|
@ -11,7 +11,18 @@ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/QtBuildInternalsExtra.cmake")
|
|||||||
include(${CMAKE_CURRENT_LIST_DIR}/QtBuildInternalsExtra.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/QtBuildInternalsExtra.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/QtBuildInternalsHelpers.cmake)
|
macro(qt_internal_setup_cmake_and_export_namespace)
|
||||||
|
# The variables might have already been set in QtBuildInternalsExtra.cmake if the file is
|
||||||
|
# included while building a new module and not QtBase. In that case, stop overriding the value.
|
||||||
|
if(NOT INSTALL_CMAKE_NAMESPACE)
|
||||||
|
set(INSTALL_CMAKE_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
|
||||||
|
CACHE STRING "CMake namespace [Qt${PROJECT_VERSION_MAJOR}]")
|
||||||
|
endif()
|
||||||
|
if(NOT QT_CMAKE_EXPORT_NAMESPACE)
|
||||||
|
set(QT_CMAKE_EXPORT_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
|
||||||
|
CACHE STRING "CMake namespace used when exporting targets [Qt${PROJECT_VERSION_MAJOR}]")
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
macro(qt_set_up_build_internals_paths)
|
macro(qt_set_up_build_internals_paths)
|
||||||
# Set up the paths for the cmake modules located in the prefix dir. Prepend, so the paths are
|
# Set up the paths for the cmake modules located in the prefix dir. Prepend, so the paths are
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
# Copyright (C) 2025 The Qt Company Ltd.
|
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
|
|
||||||
macro(qt_internal_setup_cmake_and_export_namespace)
|
|
||||||
# The variables might have already been set in QtBuildInternalsExtra.cmake if the file is
|
|
||||||
# included while building a new module and not QtBase. In that case, stop overriding the value.
|
|
||||||
if(NOT INSTALL_CMAKE_NAMESPACE)
|
|
||||||
set(INSTALL_CMAKE_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
|
|
||||||
CACHE STRING "CMake namespace [Qt${PROJECT_VERSION_MAJOR}]")
|
|
||||||
endif()
|
|
||||||
if(NOT QT_CMAKE_EXPORT_NAMESPACE)
|
|
||||||
set(QT_CMAKE_EXPORT_NAMESPACE "Qt${PROJECT_VERSION_MAJOR}"
|
|
||||||
CACHE STRING "CMake namespace used when exporting targets [Qt${PROJECT_VERSION_MAJOR}]")
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
@ -4,9 +4,6 @@
|
|||||||
# Includes QtSetup and friends for private CMake API.
|
# Includes QtSetup and friends for private CMake API.
|
||||||
set(QT_INTERNAL_IS_STANDALONE_TEST TRUE)
|
set(QT_INTERNAL_IS_STANDALONE_TEST TRUE)
|
||||||
|
|
||||||
# Make find_package(Qt6 COMPONENTS Foo) pull in FooPrivate too.
|
|
||||||
set(QT_FIND_PRIVATE_MODULES TRUE)
|
|
||||||
|
|
||||||
# Checks minimum CMake version and upgrades policies.
|
# Checks minimum CMake version and upgrades policies.
|
||||||
qt_internal_project_setup()
|
qt_internal_project_setup()
|
||||||
|
|
||||||
|
@ -403,16 +403,6 @@ macro(qt_internal_setup_build_docs)
|
|||||||
option(QT_BUILD_DOCS "Generate Qt documentation targets" ON)
|
option(QT_BUILD_DOCS "Generate Qt documentation targets" ON)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(qt_internal_setup_build_java_docs_on_host)
|
|
||||||
option(QT_BUILD_HOST_JAVA_DOCS "Generate Java documentation targets on host" OFF)
|
|
||||||
if(QT_BUILD_HOST_JAVA_DOCS)
|
|
||||||
find_package(Java)
|
|
||||||
if(Java_FOUND)
|
|
||||||
include(UseJava)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(qt_internal_set_use_ccache)
|
macro(qt_internal_set_use_ccache)
|
||||||
option(QT_USE_CCACHE "Enable the use of ccache")
|
option(QT_USE_CCACHE "Enable the use of ccache")
|
||||||
if(QT_USE_CCACHE)
|
if(QT_USE_CCACHE)
|
||||||
|
@ -160,9 +160,6 @@ macro(qt_internal_setup_configure_install_paths)
|
|||||||
qt_configure_process_path(INSTALL_INCLUDEDIR "include" "Header files [PREFIX/include]")
|
qt_configure_process_path(INSTALL_INCLUDEDIR "include" "Header files [PREFIX/include]")
|
||||||
qt_configure_process_path(INSTALL_LIBDIR "lib" "Libraries [PREFIX/lib]")
|
qt_configure_process_path(INSTALL_LIBDIR "lib" "Libraries [PREFIX/lib]")
|
||||||
qt_configure_process_path(INSTALL_MKSPECSDIR "mkspecs" "Mkspecs files [PREFIX/mkspecs]")
|
qt_configure_process_path(INSTALL_MKSPECSDIR "mkspecs" "Mkspecs files [PREFIX/mkspecs]")
|
||||||
qt_configure_process_path(INSTALL_SHAREDIR "share" "Share files [PREFIX/share]")
|
|
||||||
qt_configure_process_path(INSTALL_QT_SHAREDIR "${INSTALL_SHAREDIR}/qt6"
|
|
||||||
"Qt namespaced sharedir [SHAREDIR/qt6]")
|
|
||||||
qt_configure_process_path(INSTALL_ARCHDATADIR "." "Arch-dependent data [PREFIX]")
|
qt_configure_process_path(INSTALL_ARCHDATADIR "." "Arch-dependent data [PREFIX]")
|
||||||
qt_configure_process_path(INSTALL_PLUGINSDIR
|
qt_configure_process_path(INSTALL_PLUGINSDIR
|
||||||
"${INSTALL_ARCHDATADIR}/plugins"
|
"${INSTALL_ARCHDATADIR}/plugins"
|
||||||
@ -266,20 +263,3 @@ macro(qt_internal_setup_paths_and_prefixes)
|
|||||||
|
|
||||||
qt_internal_set_qt_apple_support_files_path()
|
qt_internal_set_qt_apple_support_files_path()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# Returns the prefix for the variables defined by HostInfo package. The prefix
|
|
||||||
# is based on version information provided by HostInfo. Falls back to current
|
|
||||||
# project version if ${INSTALL_CMAKE_NAMESPACE}HostInfo_VERSION_MAJOR is not
|
|
||||||
# defined.
|
|
||||||
function(qt_internal_get_host_info_var_prefix out_var)
|
|
||||||
if(${INSTALL_CMAKE_NAMESPACE}HostInfo_VERSION_MAJOR)
|
|
||||||
set(${out_var} "QT${${INSTALL_CMAKE_NAMESPACE}HostInfo_VERSION_MAJOR}_HOST_INFO"
|
|
||||||
PARENT_SCOPE)
|
|
||||||
else()
|
|
||||||
# This is not a valid way to define the host info versioned prefix, but
|
|
||||||
# it's backward compatible with Qt versions older than 6.10.
|
|
||||||
#
|
|
||||||
# TODO: remove once Qt LTS versions older than 6.10 reach end of life.
|
|
||||||
set(${out_var} "QT${PROJECT_VERSION_MAJOR}_HOST_INFO" PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
@ -12,27 +12,12 @@ set(_qt_compiler_warning_flags_off -w)
|
|||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
list(APPEND _qt_compiler_warning_flags_on /W3)
|
list(APPEND _qt_compiler_warning_flags_on /W3)
|
||||||
# MSVC warns about macros expanding to `defined` when using the
|
|
||||||
# new preprocessor (so far, default for C11 code, but not C++).
|
|
||||||
# Suppress the warning, see also the comment below for GCC.
|
|
||||||
list(APPEND _qt_compiler_warning_flags_on /wd5105)
|
|
||||||
else()
|
else()
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GHS") # There is no -Wextra flag for GHS compiler.
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GHS") # There is no -Wextra flag for GHS compiler.
|
||||||
list(APPEND _qt_compiler_warning_flags_on -Wall)
|
list(APPEND _qt_compiler_warning_flags_on -Wall)
|
||||||
else()
|
else()
|
||||||
list(APPEND _qt_compiler_warning_flags_on -Wall -Wextra)
|
list(APPEND _qt_compiler_warning_flags_on -Wall -Wextra)
|
||||||
endif()
|
endif()
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "17.0.0")
|
|
||||||
# GCC warns if a macro is expanded to `defined`, but doesn't
|
|
||||||
# differentiate between object-like and function-like macros.
|
|
||||||
# The latter generally work everywhere. We don't have fine-grained
|
|
||||||
# control, so disable the warning (tst_qglobal tests for this
|
|
||||||
# behavior.)
|
|
||||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118542
|
|
||||||
list(APPEND _qt_compiler_warning_flags_on -Wno-expansion-to-defined)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(_qt_compiler_warning_flags_condition
|
set(_qt_compiler_warning_flags_condition
|
||||||
|
@ -79,7 +79,6 @@ function(qt_internal_add_docs)
|
|||||||
|
|
||||||
set(opt_args
|
set(opt_args
|
||||||
SHOW_INTERNAL
|
SHOW_INTERNAL
|
||||||
SKIP_JAVADOC
|
|
||||||
)
|
)
|
||||||
set(single_args "")
|
set(single_args "")
|
||||||
set(multi_args
|
set(multi_args
|
||||||
@ -132,9 +131,8 @@ function(qt_internal_add_docs)
|
|||||||
set(tool_dependencies_enabled TRUE)
|
set(tool_dependencies_enabled TRUE)
|
||||||
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
set(tool_dependencies_enabled FALSE)
|
set(tool_dependencies_enabled FALSE)
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
set(doc_tools_bin "${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}")
|
||||||
set(doc_tools_bin "${QT_HOST_PATH}/${${host_info_var_prefix}_BINDIR}")
|
set(doc_tools_libexec "${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}")
|
||||||
set(doc_tools_libexec "${QT_HOST_PATH}/${${host_info_var_prefix}_LIBEXECDIR}")
|
|
||||||
elseif(NOT "${QT_OPTIONAL_TOOLS_PATH}" STREQUAL "")
|
elseif(NOT "${QT_OPTIONAL_TOOLS_PATH}" STREQUAL "")
|
||||||
set(tool_dependencies_enabled FALSE)
|
set(tool_dependencies_enabled FALSE)
|
||||||
set(doc_tools_bin "${QT_OPTIONAL_TOOLS_PATH}/${INSTALL_BINDIR}")
|
set(doc_tools_bin "${QT_OPTIONAL_TOOLS_PATH}/${INSTALL_BINDIR}")
|
||||||
@ -210,7 +208,6 @@ function(qt_internal_add_docs)
|
|||||||
--basedir "${PROJECT_SOURCE_DIR}/.."
|
--basedir "${PROJECT_SOURCE_DIR}/.."
|
||||||
--filter "QDocModule=${doc_target}"
|
--filter "QDocModule=${doc_target}"
|
||||||
-o "${target_bin_dir}/codeattributions.qdoc"
|
-o "${target_bin_dir}/codeattributions.qdoc"
|
||||||
COMMENT "Scanning attributions for ${target}..."
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# prepare docs target
|
# prepare docs target
|
||||||
@ -272,7 +269,6 @@ function(qt_internal_add_docs)
|
|||||||
COMMAND ${CMAKE_COMMAND} -E env ${qdoc_env_args}
|
COMMAND ${CMAKE_COMMAND} -E env ${qdoc_env_args}
|
||||||
${qdoc_bin}
|
${qdoc_bin}
|
||||||
${prepare_qdoc_args}
|
${prepare_qdoc_args}
|
||||||
COMMENT "Running qdoc for ${target}..."
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_dependencies(prepare_docs_${target} qattributionsscanner_${target})
|
add_dependencies(prepare_docs_${target} qattributionsscanner_${target})
|
||||||
@ -315,9 +311,7 @@ function(qt_internal_add_docs)
|
|||||||
endif()
|
endif()
|
||||||
add_custom_target(${target_prefix}_${target}
|
add_custom_target(${target_prefix}_${target}
|
||||||
${depends_arg}
|
${depends_arg}
|
||||||
COMMAND ${CMAKE_COMMAND} -E env ${qdoc_env_args} ${qdoc_bin} ${generate_qdoc_args}
|
COMMAND ${CMAKE_COMMAND} -E env ${qdoc_env_args} ${qdoc_bin} ${generate_qdoc_args})
|
||||||
COMMENT "Generating documentation for ${target}..."
|
|
||||||
)
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_dependencies(generate_docs_${target} prepare_docs_${target})
|
add_dependencies(generate_docs_${target} prepare_docs_${target})
|
||||||
@ -343,7 +337,6 @@ function(qt_internal_add_docs)
|
|||||||
COMMAND ${qhelpgenerator_bin}
|
COMMAND ${qhelpgenerator_bin}
|
||||||
"${qdoc_output_dir}/${doc_target}.qhp"
|
"${qdoc_output_dir}/${doc_target}.qhp"
|
||||||
-o "${qch_file_path}"
|
-o "${qch_file_path}"
|
||||||
COMMENT "Building QtHelp files for ${target}..."
|
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
add_dependencies(qch_docs_${target} generate_docs_${target})
|
add_dependencies(qch_docs_${target} generate_docs_${target})
|
||||||
@ -353,9 +346,9 @@ function(qt_internal_add_docs)
|
|||||||
|
|
||||||
if (QT_WILL_INSTALL)
|
if (QT_WILL_INSTALL)
|
||||||
install(DIRECTORY "${qdoc_output_dir}/"
|
install(DIRECTORY "${qdoc_output_dir}/"
|
||||||
DESTINATION "${INSTALL_DOCDIR}/${doc_target}"
|
DESTINATION "${INSTALL_DOCDIR}/${doc_target}"
|
||||||
COMPONENT _install_html_docs_${target}
|
COMPONENT _install_html_docs_${target}
|
||||||
EXCLUDE_FROM_ALL
|
EXCLUDE_FROM_ALL
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(install_html_docs_${target}
|
add_custom_target(install_html_docs_${target}
|
||||||
@ -366,9 +359,9 @@ function(qt_internal_add_docs)
|
|||||||
)
|
)
|
||||||
|
|
||||||
install(FILES "${qch_file_path}"
|
install(FILES "${qch_file_path}"
|
||||||
DESTINATION "${INSTALL_DOCDIR}"
|
DESTINATION "${INSTALL_DOCDIR}"
|
||||||
COMPONENT _install_qch_docs_${target}
|
COMPONENT _install_qch_docs_${target}
|
||||||
EXCLUDE_FROM_ALL
|
EXCLUDE_FROM_ALL
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(install_qch_docs_${target}
|
add_custom_target(install_qch_docs_${target}
|
||||||
@ -404,73 +397,4 @@ function(qt_internal_add_docs)
|
|||||||
qt_internal_add_doc_tool_dependency(prepare_docs_${target} qdoc)
|
qt_internal_add_doc_tool_dependency(prepare_docs_${target} qdoc)
|
||||||
qt_internal_add_doc_tool_dependency(qch_docs_${target} qhelpgenerator)
|
qt_internal_add_doc_tool_dependency(qch_docs_${target} qhelpgenerator)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
_qt_internal_forward_function_args(
|
|
||||||
FORWARD_PREFIX arg
|
|
||||||
FORWARD_OUT_VAR add_java_documentation_args
|
|
||||||
FORWARD_OPTIONS
|
|
||||||
SKIP_JAVADOC
|
|
||||||
)
|
|
||||||
qt_internal_add_java_documentation(${target} ${add_java_documentation_args}
|
|
||||||
OUTPUT_DIR "${qdoc_output_dir}"
|
|
||||||
)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(qt_internal_add_java_documentation target)
|
|
||||||
if(NOT ANDROID AND NOT QT_BUILD_HOST_JAVA_DOCS)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(no_value_options
|
|
||||||
SKIP_JAVADOC
|
|
||||||
)
|
|
||||||
set(single_value_options
|
|
||||||
OUTPUT_DIR
|
|
||||||
)
|
|
||||||
set(multi_value_options "")
|
|
||||||
cmake_parse_arguments(PARSE_ARGV 1 arg
|
|
||||||
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
|
||||||
)
|
|
||||||
_qt_internal_validate_all_args_are_parsed(arg)
|
|
||||||
|
|
||||||
# Use a default output directory based on the project name.
|
|
||||||
if(NOT DEFINED arg_OUTPUT_DIR)
|
|
||||||
if (QT_WILL_INSTALL)
|
|
||||||
set(arg_OUTPUT_DIR "${CMAKE_BINARY_DIR}/${INSTALL_DOCDIR}")
|
|
||||||
else()
|
|
||||||
set(arg_OUTPUT_DIR "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_DOCDIR}")
|
|
||||||
endif()
|
|
||||||
string(APPEND arg_OUTPUT_DIR "/${PROJECT_NAME}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
qt_internal_collect_jar_sources(sources)
|
|
||||||
|
|
||||||
# Bail out if we haven't found relevant sources.
|
|
||||||
if(sources STREQUAL "")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT TARGET docs_android)
|
|
||||||
add_custom_target(docs_android)
|
|
||||||
add_custom_target(install_docs_android)
|
|
||||||
add_dependencies(install_docs_android docs_android)
|
|
||||||
|
|
||||||
add_custom_target(android_source_jars)
|
|
||||||
add_custom_target(install_android_source_jars)
|
|
||||||
add_dependencies(install_android_source_jars android_source_jars)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT ANDROID)
|
|
||||||
qt_internal_set_up_build_host_java_docs()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT arg_SKIP_JAVADOC)
|
|
||||||
qt_internal_add_javadoc_target(
|
|
||||||
MODULE ${target}
|
|
||||||
SOURCES ${sources}
|
|
||||||
OUTPUT_DIR "${arg_OUTPUT_DIR}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
qt_internal_create_source_jar(SOURCES ${sources} MODULE ${target})
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -184,17 +184,10 @@ function(qt_internal_add_executable name)
|
|||||||
set_target_properties("${name}" PROPERTIES
|
set_target_properties("${name}" PROPERTIES
|
||||||
RUNTIME_OUTPUT_DIRECTORY "${arg_OUTPUT_DIRECTORY}"
|
RUNTIME_OUTPUT_DIRECTORY "${arg_OUTPUT_DIRECTORY}"
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${arg_OUTPUT_DIRECTORY}"
|
LIBRARY_OUTPUT_DIRECTORY "${arg_OUTPUT_DIRECTORY}"
|
||||||
|
WIN32_EXECUTABLE "${arg_GUI}"
|
||||||
|
MACOSX_BUNDLE "${arg_GUI}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if(arg_GUI)
|
|
||||||
# Only override if GUI is set. Otherwise leave up to
|
|
||||||
# CMake defaults, which may be set by the user elsewhere.
|
|
||||||
set_target_properties("${name}" PROPERTIES
|
|
||||||
MACOSX_BUNDLE ON
|
|
||||||
WIN32_EXECUTABLE ON
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT arg_EXCEPTIONS)
|
if(NOT arg_EXCEPTIONS)
|
||||||
qt_internal_set_exceptions_flags("${name}" "DEFAULT")
|
qt_internal_set_exceptions_flags("${name}" "DEFAULT")
|
||||||
else()
|
else()
|
||||||
@ -206,9 +199,8 @@ function(qt_internal_add_executable name)
|
|||||||
set(exclude_from_all FALSE)
|
set(exclude_from_all FALSE)
|
||||||
if(__qt_exclude_tool_directories)
|
if(__qt_exclude_tool_directories)
|
||||||
foreach(absolute_dir ${__qt_exclude_tool_directories})
|
foreach(absolute_dir ${__qt_exclude_tool_directories})
|
||||||
_qt_internal_path_is_prefix(absolute_dir "${CMAKE_CURRENT_SOURCE_DIR}"
|
string(FIND "${CMAKE_CURRENT_SOURCE_DIR}" "${absolute_dir}" dir_starting_pos)
|
||||||
in_current_source)
|
if(dir_starting_pos EQUAL 0)
|
||||||
if(in_current_source)
|
|
||||||
set(exclude_from_all TRUE)
|
set(exclude_from_all TRUE)
|
||||||
set_target_properties("${name}" PROPERTIES
|
set_target_properties("${name}" PROPERTIES
|
||||||
EXCLUDE_FROM_ALL TRUE
|
EXCLUDE_FROM_ALL TRUE
|
||||||
|
@ -614,7 +614,7 @@ function(_qt_feature_check_feature_alias feature)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
# Check if all values are consistent
|
# Check if all values are consistent
|
||||||
list(REMOVE_DUPLICATES expected_value)
|
list(TRANSFORM REMOVE_DUPLICATES expected_value)
|
||||||
list(LENGTH expected_value expected_value_length)
|
list(LENGTH expected_value expected_value_length)
|
||||||
if(expected_value_length GREATER 1)
|
if(expected_value_length GREATER 1)
|
||||||
string(CONCAT msg
|
string(CONCAT msg
|
||||||
|
@ -34,12 +34,10 @@ macro(qt_find_apple_system_frameworks)
|
|||||||
qt_internal_find_apple_system_framework(FWGameController GameController)
|
qt_internal_find_apple_system_framework(FWGameController GameController)
|
||||||
qt_internal_find_apple_system_framework(FWCoreBluetooth CoreBluetooth)
|
qt_internal_find_apple_system_framework(FWCoreBluetooth CoreBluetooth)
|
||||||
qt_internal_find_apple_system_framework(FWAVFoundation AVFoundation)
|
qt_internal_find_apple_system_framework(FWAVFoundation AVFoundation)
|
||||||
qt_internal_find_apple_system_framework(FWPhotos Photos)
|
|
||||||
qt_internal_find_apple_system_framework(FWContacts Contacts)
|
qt_internal_find_apple_system_framework(FWContacts Contacts)
|
||||||
qt_internal_find_apple_system_framework(FWEventKit EventKit)
|
qt_internal_find_apple_system_framework(FWEventKit EventKit)
|
||||||
qt_internal_find_apple_system_framework(FWHealthKit HealthKit)
|
qt_internal_find_apple_system_framework(FWHealthKit HealthKit)
|
||||||
qt_internal_find_apple_system_framework(FWUniformTypeIdentifiers UniformTypeIdentifiers)
|
qt_internal_find_apple_system_framework(FWUniformTypeIdentifiers UniformTypeIdentifiers)
|
||||||
qt_internal_find_apple_system_framework(FWNetwork Network)
|
|
||||||
qt_internal_find_apple_system_framework(FWOpenGL OpenGL)
|
qt_internal_find_apple_system_framework(FWOpenGL OpenGL)
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@ -239,8 +239,8 @@ function(qt_internal_add_headersclean_target module_target module_headers)
|
|||||||
|
|
||||||
set(possible_base_dirs "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}")
|
set(possible_base_dirs "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}")
|
||||||
foreach(dir IN LISTS possible_base_dirs)
|
foreach(dir IN LISTS possible_base_dirs)
|
||||||
_qt_internal_path_is_prefix(dir "${input_path}" dir_is_prefix)
|
string(FIND "${input_path}" "${dir}" idx)
|
||||||
if(dir_is_prefix)
|
if(idx EQUAL "0")
|
||||||
set(input_base_dir "${dir}")
|
set(input_base_dir "${dir}")
|
||||||
break()
|
break()
|
||||||
endif()
|
endif()
|
||||||
|
@ -18,8 +18,6 @@ set(@var_prefix@SYSCONFDIR "@INSTALL_SYSCONFDIR@")
|
|||||||
set(@var_prefix@EXAMPLESDIR "@INSTALL_EXAMPLESDIR@")
|
set(@var_prefix@EXAMPLESDIR "@INSTALL_EXAMPLESDIR@")
|
||||||
set(@var_prefix@TESTSDIR "@INSTALL_TESTSDIR@")
|
set(@var_prefix@TESTSDIR "@INSTALL_TESTSDIR@")
|
||||||
set(@var_prefix@DESCRIPTIONSDIR "@INSTALL_DESCRIPTIONSDIR@")
|
set(@var_prefix@DESCRIPTIONSDIR "@INSTALL_DESCRIPTIONSDIR@")
|
||||||
set(@var_prefix@SHAREDIR "@INSTALL_SHAREDIR@")
|
|
||||||
set(@var_prefix@QT_SHAREDIR "@INSTALL_QT_SHAREDIR@")
|
|
||||||
set(@var_prefix@QMAKE_MKSPEC "@QT_QMAKE_TARGET_MKSPEC@")
|
set(@var_prefix@QMAKE_MKSPEC "@QT_QMAKE_TARGET_MKSPEC@")
|
||||||
set(@var_prefix@ARCH "@TEST_architecture_arch@")
|
set(@var_prefix@ARCH "@TEST_architecture_arch@")
|
||||||
set(@var_prefix@SUBARCHS "@TEST_subarch_result@")
|
set(@var_prefix@SUBARCHS "@TEST_subarch_result@")
|
||||||
|
@ -15,5 +15,3 @@ set(QT@PROJECT_VERSION_MAJOR@_INSTALL_QML "@INSTALL_QMLDIR@")
|
|||||||
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_TESTS "@INSTALL_TESTSDIR@")
|
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_TESTS "@INSTALL_TESTSDIR@")
|
||||||
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_TRANSLATIONS "@INSTALL_TRANSLATIONSDIR@")
|
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_TRANSLATIONS "@INSTALL_TRANSLATIONSDIR@")
|
||||||
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_DESCRIPTIONSDIR "@INSTALL_DESCRIPTIONSDIR@")
|
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_DESCRIPTIONSDIR "@INSTALL_DESCRIPTIONSDIR@")
|
||||||
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_SHAREDIR "@INSTALL_SHAREDIR@")
|
|
||||||
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_QT_SHAREDIR "@INSTALL_QT_SHAREDIR@")
|
|
||||||
|
@ -287,13 +287,6 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
|
|||||||
"$<$<AND:${not_disabled},${is_xcode15}>:LINKER:-no_warn_duplicate_libraries>")
|
"$<$<AND:${not_disabled},${is_xcode15}>:LINKER:-no_warn_duplicate_libraries>")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CYGWIN)
|
|
||||||
# CYGWIN doesn't define _GNU_SOURCE by default for better support with W32API
|
|
||||||
target_compile_definitions(PlatformCommonInternal INTERFACE
|
|
||||||
"_GNU_SOURCE"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_compile_definitions(PlatformCommonInternal INTERFACE
|
target_compile_definitions(PlatformCommonInternal INTERFACE
|
||||||
"_CRT_SECURE_NO_WARNINGS"
|
"_CRT_SECURE_NO_WARNINGS"
|
||||||
@ -374,22 +367,6 @@ if (GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.2")
|
|||||||
target_compile_options(PlatformCommonInternal INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-override>)
|
target_compile_options(PlatformCommonInternal INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-override>)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(QT_FEATURE_stdlib_libcpp)
|
|
||||||
# Disable transitive C++ inclusions when using libc++, on all
|
|
||||||
# language versions. See
|
|
||||||
# https://libcxx.llvm.org/DesignDocs/HeaderRemovalPolicy.html
|
|
||||||
target_compile_definitions(PlatformCommonInternal INTERFACE _LIBCPP_REMOVE_TRANSITIVE_INCLUDES)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(QT_USE_CCACHE AND CLANG AND BUILD_WITH_PCH)
|
|
||||||
# The ccache man page says we must compile with -fno-pch-timestamp when using clang and pch.
|
|
||||||
foreach(language IN ITEMS C CXX OBJC OBJCXX)
|
|
||||||
target_compile_options(PlatformCommonInternal INTERFACE
|
|
||||||
"$<$<COMPILE_LANGUAGE:${language}>:SHELL:-Xclang -fno-pch-timestamp>"
|
|
||||||
)
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Hardening options
|
# Hardening options
|
||||||
|
|
||||||
qt_internal_apply_intel_cet_harderning(PlatformCommonInternal)
|
qt_internal_apply_intel_cet_harderning(PlatformCommonInternal)
|
||||||
|
@ -28,7 +28,6 @@ function(qt_internal_add_jar target)
|
|||||||
get_filename_component(absolute_path "${path}" ABSOLUTE)
|
get_filename_component(absolute_path "${path}" ABSOLUTE)
|
||||||
list(APPEND absolute_sources "${absolute_path}")
|
list(APPEND absolute_sources "${absolute_path}")
|
||||||
endforeach()
|
endforeach()
|
||||||
set_property(DIRECTORY APPEND PROPERTY _qt_jar_sources "${absolute_sources}")
|
|
||||||
|
|
||||||
add_jar(${target} SOURCES ${absolute_sources} ${ARGV})
|
add_jar(${target} SOURCES ${absolute_sources} ${ARGV})
|
||||||
|
|
||||||
|
@ -114,8 +114,7 @@ macro(qt_internal_setup_platform_definitions_and_mkspec)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_CROSSCOMPILING)
|
if(CMAKE_CROSSCOMPILING)
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
set(QT_QMAKE_HOST_MKSPEC "${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_QMAKE_MKSPEC}")
|
||||||
set(QT_QMAKE_HOST_MKSPEC "${${host_info_var_prefix}_QMAKE_MKSPEC}")
|
|
||||||
else()
|
else()
|
||||||
set(QT_QMAKE_HOST_MKSPEC "${QT_QMAKE_TARGET_MKSPEC}")
|
set(QT_QMAKE_HOST_MKSPEC "${QT_QMAKE_TARGET_MKSPEC}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -7,6 +7,9 @@ cmake_minimum_required(VERSION @min_new_policy_version@...@max_new_policy_versio
|
|||||||
|
|
||||||
include(CMakeFindDependencyMacro)
|
include(CMakeFindDependencyMacro)
|
||||||
|
|
||||||
|
get_filename_component(_import_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
|
get_filename_component(_import_prefix "${_import_prefix}" REALPATH)
|
||||||
|
|
||||||
# Extra cmake code begin
|
# Extra cmake code begin
|
||||||
@extra_cmake_code@
|
@extra_cmake_code@
|
||||||
# Extra cmake code end
|
# Extra cmake code end
|
||||||
@ -33,7 +36,11 @@ if (NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Find the private module counterpart.
|
# Find the private module counterpart.
|
||||||
set(__qt_@target@_always_load_private_module @always_load_private_module@)
|
# For now, always load the private module. In a future Qt version we plan to require users to
|
||||||
|
# find_package the private module explicitly.
|
||||||
|
set(__qt_@target@_always_load_private_module ON)
|
||||||
|
set(__qt_@target@_save_QT_NO_PRIVATE_MODULE_WARNING ${QT_NO_PRIVATE_MODULE_WARNING})
|
||||||
|
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@-build.cmake" OPTIONAL)
|
include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@-build.cmake" OPTIONAL)
|
||||||
if (@INSTALL_CMAKE_NAMESPACE@@target@_FOUND
|
if (@INSTALL_CMAKE_NAMESPACE@@target@_FOUND
|
||||||
AND NOT @INSTALL_CMAKE_NAMESPACE@@target_private@_FOUND
|
AND NOT @INSTALL_CMAKE_NAMESPACE@@target_private@_FOUND
|
||||||
@ -78,6 +85,8 @@ if (@INSTALL_CMAKE_NAMESPACE@@target@_FOUND
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
set(QT_NO_PRIVATE_MODULE_WARNING ${__qt_@target@_save_QT_NO_PRIVATE_MODULE_WARNING})
|
||||||
|
unset(__qt_@target@_save_QT_NO_PRIVATE_MODULE_WARNING)
|
||||||
unset(__qt_@target@_always_load_private_module)
|
unset(__qt_@target@_always_load_private_module)
|
||||||
|
|
||||||
if (NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
|
if (NOT QT_NO_CREATE_TARGETS AND @INSTALL_CMAKE_NAMESPACE@@target@_FOUND)
|
||||||
|
@ -5,7 +5,6 @@ macro(qt_internal_get_internal_add_module_keywords option_args single_args multi
|
|||||||
set(${option_args}
|
set(${option_args}
|
||||||
STATIC
|
STATIC
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
FIND_PRIVATE_MODULE
|
|
||||||
INTERNAL_MODULE
|
INTERNAL_MODULE
|
||||||
HEADER_MODULE
|
HEADER_MODULE
|
||||||
DISABLE_TOOLS_EXPORT
|
DISABLE_TOOLS_EXPORT
|
||||||
@ -131,9 +130,6 @@ endfunction()
|
|||||||
# ignored by syncqt. The specifying this directory allows to skip the parsing of the whole
|
# ignored by syncqt. The specifying this directory allows to skip the parsing of the whole
|
||||||
# CMAKE_CURRENT_SOURCE_DIR for the header files that needs to be synced and only parse the
|
# CMAKE_CURRENT_SOURCE_DIR for the header files that needs to be synced and only parse the
|
||||||
# single subdirectory, that meanwhile can be outside the CMAKE_CURRENT_SOURCE_DIR tree.
|
# single subdirectory, that meanwhile can be outside the CMAKE_CURRENT_SOURCE_DIR tree.
|
||||||
#
|
|
||||||
# FIND_PRIVATE_MODULE
|
|
||||||
# A call to find_package(Qt6Foo) will imply a call to find_package(Qt6FooPrivate).
|
|
||||||
function(qt_internal_add_module target)
|
function(qt_internal_add_module target)
|
||||||
qt_internal_get_internal_add_module_keywords(
|
qt_internal_get_internal_add_module_keywords(
|
||||||
module_option_args
|
module_option_args
|
||||||
@ -216,17 +212,6 @@ function(qt_internal_add_module target)
|
|||||||
"_qt_package_version"
|
"_qt_package_version"
|
||||||
"_qt_package_name"
|
"_qt_package_name"
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_LESS 3.30)
|
|
||||||
# For the CMake versions higher than 3.30 the corresponding INTERFACE_
|
|
||||||
# properties will be in Qt<Module>Targets.cmake without extra code
|
|
||||||
# needed.
|
|
||||||
list(APPEND export_properties
|
|
||||||
"_qt_transitive_compile_properties"
|
|
||||||
"_qt_transitive_link_properties"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT is_internal_module)
|
if(NOT is_internal_module)
|
||||||
set_target_properties(${target} PROPERTIES
|
set_target_properties(${target} PROPERTIES
|
||||||
_qt_is_public_module TRUE
|
_qt_is_public_module TRUE
|
||||||
@ -465,24 +450,6 @@ function(qt_internal_add_module target)
|
|||||||
set(module_header "${module_build_interface_include_dir}/${module_include_name}")
|
set(module_header "${module_build_interface_include_dir}/${module_include_name}")
|
||||||
set_property(TARGET "${target}" PROPERTY MODULE_HEADER
|
set_property(TARGET "${target}" PROPERTY MODULE_HEADER
|
||||||
"${module_header}")
|
"${module_header}")
|
||||||
|
|
||||||
if(QT_FEATURE_no_prefix)
|
|
||||||
file(RELATIVE_PATH relative_include_dir
|
|
||||||
"/${QT_CONFIG_INSTALL_DIR}/${module_include_name}"
|
|
||||||
"/${module_build_interface_include_dir}"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
file(RELATIVE_PATH relative_include_dir
|
|
||||||
"/${QT_CONFIG_INSTALL_DIR}/${module_include_name}"
|
|
||||||
"/${module_install_interface_include_dir}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
set_property(TARGET "${target}" PROPERTY
|
|
||||||
_qt_module_relative_include_dir "${relative_include_dir}"
|
|
||||||
)
|
|
||||||
set_property(TARGET ${target} APPEND PROPERTY
|
|
||||||
EXPORT_PROPERTIES _qt_module_relative_include_dir
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(qpa_filter_regex "")
|
set(qpa_filter_regex "")
|
||||||
@ -739,21 +706,6 @@ function(qt_internal_add_module target)
|
|||||||
list(APPEND extra_cmake_includes "${INSTALL_CMAKE_NAMESPACE}${target}Macros.cmake")
|
list(APPEND extra_cmake_includes "${INSTALL_CMAKE_NAMESPACE}${target}Macros.cmake")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_LESS 3.30)
|
|
||||||
# For the CMake versions higher than 3.30 the corresponding INTERFACE_
|
|
||||||
# properties will be in Qt<Module>Targets.cmake without extra code
|
|
||||||
# needed.
|
|
||||||
configure_file(
|
|
||||||
"${QT_CMAKE_DIR}/QtTransitiveExtras.cmake.in"
|
|
||||||
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TransitiveExtras.cmake"
|
|
||||||
@ONLY
|
|
||||||
)
|
|
||||||
list(APPEND extra_cmake_files
|
|
||||||
"${config_build_dir}/${INSTALL_CMAKE_NAMESPACE}${target}TransitiveExtras.cmake")
|
|
||||||
list(APPEND extra_cmake_includes
|
|
||||||
"${INSTALL_CMAKE_NAMESPACE}${target}TransitiveExtras.cmake")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigExtras.cmake.in")
|
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/${INSTALL_CMAKE_NAMESPACE}${target}ConfigExtras.cmake.in")
|
||||||
if(target STREQUAL Core)
|
if(target STREQUAL Core)
|
||||||
if(NOT "${QT_NAMESPACE}" STREQUAL "")
|
if(NOT "${QT_NAMESPACE}" STREQUAL "")
|
||||||
@ -807,7 +759,7 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)")
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Make sure touched extra cmake files cause a reconfigure, so they get re-copied.
|
# Make sure touched extra cmake files cause a reconfigure, so they get re-copied.
|
||||||
_qt_internal_append_cmake_configure_depends("${cmake_file}")
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${cmake_file}")
|
||||||
endforeach()
|
endforeach()
|
||||||
list(APPEND extra_cmake_includes ${arg_EXTRA_CMAKE_INCLUDES})
|
list(APPEND extra_cmake_includes ${arg_EXTRA_CMAKE_INCLUDES})
|
||||||
|
|
||||||
@ -850,16 +802,8 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)")
|
|||||||
else()
|
else()
|
||||||
set(write_basic_module_package_args "")
|
set(write_basic_module_package_args "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(arg_FIND_PRIVATE_MODULE)
|
|
||||||
set(write_basic_public_module_package_args FIND_PRIVATE_MODULE)
|
|
||||||
else()
|
|
||||||
set(write_basic_public_module_package_args "")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
qt_internal_write_basic_module_package("${target}" "${target_private}"
|
qt_internal_write_basic_module_package("${target}" "${target_private}"
|
||||||
${write_basic_module_package_args}
|
${write_basic_module_package_args}
|
||||||
${write_basic_public_module_package_args}
|
|
||||||
CONFIG_BUILD_DIR ${config_build_dir}
|
CONFIG_BUILD_DIR ${config_build_dir}
|
||||||
CONFIG_INSTALL_DIR ${config_install_dir}
|
CONFIG_INSTALL_DIR ${config_install_dir}
|
||||||
)
|
)
|
||||||
@ -888,6 +832,11 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)")
|
|||||||
|
|
||||||
file(COPY ${extra_cmake_files} DESTINATION "${config_build_dir}")
|
file(COPY ${extra_cmake_files} DESTINATION "${config_build_dir}")
|
||||||
|
|
||||||
|
set(targets_to_export ${target})
|
||||||
|
if(NOT ${arg_NO_PRIVATE_MODULE})
|
||||||
|
list(APPEND targets_to_export ${target_private})
|
||||||
|
endif()
|
||||||
|
|
||||||
_qt_internal_forward_function_args(
|
_qt_internal_forward_function_args(
|
||||||
FORWARD_PREFIX arg
|
FORWARD_PREFIX arg
|
||||||
FORWARD_OUT_VAR export_module_args
|
FORWARD_OUT_VAR export_module_args
|
||||||
@ -1048,7 +997,6 @@ endfunction()
|
|||||||
# Otherwise write its public counterpart.
|
# Otherwise write its public counterpart.
|
||||||
function(qt_internal_write_basic_module_package target target_private)
|
function(qt_internal_write_basic_module_package target target_private)
|
||||||
set(no_value_options
|
set(no_value_options
|
||||||
FIND_PRIVATE_MODULE
|
|
||||||
IS_STATIC_LIB
|
IS_STATIC_LIB
|
||||||
PRIVATE
|
PRIVATE
|
||||||
)
|
)
|
||||||
@ -1061,27 +1009,20 @@ function(qt_internal_write_basic_module_package target target_private)
|
|||||||
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
||||||
)
|
)
|
||||||
|
|
||||||
set(always_load_private_module OFF)
|
|
||||||
if(arg_PRIVATE)
|
if(arg_PRIVATE)
|
||||||
set(package_name "${INSTALL_CMAKE_NAMESPACE}${target_private}")
|
set(package_name "${INSTALL_CMAKE_NAMESPACE}${target_private}")
|
||||||
set(module_config_input_file "QtModuleConfigPrivate.cmake.in")
|
set(module_config_input_file "QtModuleConfigPrivate.cmake.in")
|
||||||
else()
|
else()
|
||||||
set(package_name "${INSTALL_CMAKE_NAMESPACE}${target}")
|
set(package_name "${INSTALL_CMAKE_NAMESPACE}${target}")
|
||||||
set(module_config_input_file "QtModuleConfig.cmake.in")
|
set(module_config_input_file "QtModuleConfig.cmake.in")
|
||||||
if(arg_FIND_PRIVATE_MODULE)
|
|
||||||
set(always_load_private_module ON)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if((QT_FEATURE_no_prefix OR arg_IS_STATIC_LIB)
|
if(arg_IS_STATIC_LIB AND NOT arg_PRIVATE AND CMAKE_VERSION VERSION_LESS "3.26")
|
||||||
AND NOT arg_PRIVATE
|
# We auto-load the private module package from the public module package if we have a static
|
||||||
AND CMAKE_VERSION VERSION_LESS "3.26")
|
# Qt module and CMake's version is < 3.26. This is needed for the case "Qt6Foo links against
|
||||||
# We auto-load the private module package from the public module package if we have a
|
# Qt6BarPrivate", because CMake generates a check for the target Qt6::BarPrivate in
|
||||||
# statically built module or a non-prefix build and CMake's version is < 3.26. This is
|
# Qt6FooTargets.cmake. Once we can require CMake 3.26, we can simply link against
|
||||||
# needed for the case "Qt6Foo links against Qt6BarPrivate", because CMake generates a check
|
# $<BUILD_LOCAL_INTERFACE:Qt6BarPrivate> in qt_internal_extend_target.
|
||||||
# for the target Qt6::BarPrivate in Qt6FooTargets.cmake. Once we can require CMake 3.26, we
|
|
||||||
# can simply link against $<BUILD_LOCAL_INTERFACE:Qt6BarPrivate> in
|
|
||||||
# qt_internal_extend_target.
|
|
||||||
#
|
#
|
||||||
# For older CMake versions, we create an additional CMake file that's optionally included by
|
# For older CMake versions, we create an additional CMake file that's optionally included by
|
||||||
# Qt6FooConfig.cmake to work around the lack of BUILD_LOCAL_INTERFACE.
|
# Qt6FooConfig.cmake to work around the lack of BUILD_LOCAL_INTERFACE.
|
||||||
@ -1186,37 +1127,8 @@ function(qt_internal_apply_apple_privacy_manifest target)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qt_finalize_module target)
|
function(qt_finalize_module target)
|
||||||
set(no_value_options
|
|
||||||
INTERNAL_MODULE
|
|
||||||
NO_PRIVATE_MODULE
|
|
||||||
)
|
|
||||||
set(single_value_options "")
|
|
||||||
set(multi_value_options "")
|
|
||||||
cmake_parse_arguments(PARSE_ARGV 1 arg
|
|
||||||
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
|
||||||
)
|
|
||||||
_qt_internal_validate_all_args_are_parsed(arg)
|
|
||||||
|
|
||||||
qt_internal_collect_module_headers(module_headers ${target})
|
qt_internal_collect_module_headers(module_headers ${target})
|
||||||
|
|
||||||
# Issue a warning if we
|
|
||||||
# - suppressed creation of the private module but have private headers
|
|
||||||
# - created a private module but don't have any private headers
|
|
||||||
if(NOT arg_INTERNAL_MODULE)
|
|
||||||
get_target_property(has_private_headers ${target} _qt_module_has_private_headers)
|
|
||||||
if(arg_NO_PRIVATE_MODULE AND has_private_headers)
|
|
||||||
message(AUTHOR_WARNING
|
|
||||||
"Module ${target} has private headers. "
|
|
||||||
"Please remove NO_PRIVATE_MODULE from its creation flags."
|
|
||||||
)
|
|
||||||
elseif(NOT arg_NO_PRIVATE_MODULE AND NOT has_private_headers)
|
|
||||||
message(AUTHOR_WARNING
|
|
||||||
"Module ${target} does not have private headers. "
|
|
||||||
"Please add NO_PRIVATE_MODULE to its creation flags."
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# qt_internal_install_module_headers needs to be called before
|
# qt_internal_install_module_headers needs to be called before
|
||||||
# qt_finalize_framework_headers_copy, because the last uses the QT_COPIED_FRAMEWORK_HEADERS
|
# qt_finalize_framework_headers_copy, because the last uses the QT_COPIED_FRAMEWORK_HEADERS
|
||||||
# property which supposed to be updated inside every qt_internal_install_module_headers
|
# property which supposed to be updated inside every qt_internal_install_module_headers
|
||||||
@ -1597,8 +1509,8 @@ function(qt_internal_generate_cpp_global_exports target module_define_infix)
|
|||||||
SOURCES "${generated_header_path}"
|
SOURCES "${generated_header_path}"
|
||||||
CONFIGURE_GENERATED
|
CONFIGURE_GENERATED
|
||||||
)
|
)
|
||||||
# Make sure the file is installed when processed by `qt_internal_collect_module_headers`
|
# `GENERATED` property is set in order to be processed by `qt_internal_collect_module_headers`
|
||||||
set_source_files_properties("${generated_header_path}" PROPERTIES _qt_syncqt_force_include TRUE)
|
set_source_files_properties("${generated_header_path}" PROPERTIES GENERATED TRUE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qt_internal_install_module_headers target)
|
function(qt_internal_install_module_headers target)
|
||||||
@ -1697,13 +1609,16 @@ function(qt_internal_collect_module_headers out_var target)
|
|||||||
|
|
||||||
get_filename_component(file_path "${file_path}" ABSOLUTE)
|
get_filename_component(file_path "${file_path}" ABSOLUTE)
|
||||||
|
|
||||||
_qt_internal_path_is_prefix(source_dir "${file_path}" is_inside_module_source_dir)
|
string(FIND "${file_path}" "${source_dir}" source_dir_pos)
|
||||||
|
if(source_dir_pos EQUAL 0)
|
||||||
|
set(is_outside_module_source_dir FALSE)
|
||||||
|
else()
|
||||||
|
set(is_outside_module_source_dir TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
get_source_file_property(forced_include "${file_path}" _qt_syncqt_force_include)
|
|
||||||
get_source_file_property(is_generated "${file_path}" GENERATED)
|
get_source_file_property(is_generated "${file_path}" GENERATED)
|
||||||
# Skip all header files outside the module source directory, except the generated files,
|
# Skip all header files outside the module source directory, except the generated files.
|
||||||
# or files explicitly marked to be included for syncqt.
|
if(is_outside_module_source_dir AND NOT is_generated)
|
||||||
if(NOT (forced_include OR is_inside_module_source_dir OR is_generated))
|
|
||||||
continue()
|
continue()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -1715,10 +1630,10 @@ function(qt_internal_collect_module_headers out_var target)
|
|||||||
"\nCondition:\n ${condition_string}")
|
"\nCondition:\n ${condition_string}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(is_inside_module_source_dir)
|
if(is_outside_module_source_dir)
|
||||||
set(base_dir "${source_dir}")
|
|
||||||
else()
|
|
||||||
set(base_dir "${binary_dir}")
|
set(base_dir "${binary_dir}")
|
||||||
|
else()
|
||||||
|
set(base_dir "${source_dir}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(RELATIVE_PATH file_path_rel "${base_dir}" "${file_path}")
|
file(RELATIVE_PATH file_path_rel "${base_dir}" "${file_path}")
|
||||||
@ -1790,100 +1705,3 @@ function(qt_internal_collect_module_headers out_var target)
|
|||||||
_qt_module_has_ssg_headers
|
_qt_module_has_ssg_headers
|
||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Set the value of the respective module properties and make the properties
|
|
||||||
# transitive. The property is not stored as target property, but is set as
|
|
||||||
# INTERFACE property, so its value is not considered by target itself, but only
|
|
||||||
# by depending targets. Also this require all properties have the
|
|
||||||
# INTERFACE_<property_name> name format.
|
|
||||||
#
|
|
||||||
# Synopsis
|
|
||||||
# qt_internal_set_module_transitive_properties(<target>
|
|
||||||
# PROPERTIES <prop1> <value1> [<prop2> <value2>] ...
|
|
||||||
# )
|
|
||||||
#
|
|
||||||
# Arguments
|
|
||||||
#
|
|
||||||
# `target` Qt module target. Unlike CMake set_target_properties this function
|
|
||||||
# accepts only one target as argument.
|
|
||||||
#
|
|
||||||
# `PROPERTIES` List of the property name-value pairs.
|
|
||||||
#
|
|
||||||
# `TYPE` The transitive property type: COMPILE or LINK.
|
|
||||||
function(qt_internal_set_module_transitive_properties target)
|
|
||||||
cmake_parse_arguments(PARSE_ARGV 1 arg "" "TYPE" "PROPERTIES")
|
|
||||||
|
|
||||||
if(NOT arg_PROPERTIES)
|
|
||||||
message(FATAL_ERROR "PROPERTIES argument is missing.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT arg_TYPE)
|
|
||||||
message(FATAL_ERROR "TYPE argument is missing.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(LENGTH arg_PROPERTIES count)
|
|
||||||
math(EXPR even_args_count "${count} % 2")
|
|
||||||
if(NOT even_args_count EQUAL 0)
|
|
||||||
message(FATAL_ERROR "Insufficient number of PROPERTIES values.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
_qt_internal_dealias_target(target)
|
|
||||||
|
|
||||||
set(property_names "")
|
|
||||||
set(internal_property_names "")
|
|
||||||
|
|
||||||
math(EXPR last "${count} - 1")
|
|
||||||
foreach(name_idx RANGE 0 ${last} 2)
|
|
||||||
list(GET arg_PROPERTIES ${name_idx} interface_property_name)
|
|
||||||
if(interface_property_name MATCHES "^INTERFACE_(.+)$")
|
|
||||||
set(property_name "${CMAKE_MATCH_1}")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Incorrect property name ${interface_property_name}. The property"
|
|
||||||
" name must have the INTERFACE_ prefix. Use regular set_target_properties call to set"
|
|
||||||
" the non-transitive property.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(TOLOWER "${property_name}" property_name_lower)
|
|
||||||
list(APPEND property_names ${property_name})
|
|
||||||
|
|
||||||
math(EXPR value_idx "${name_idx} + 1")
|
|
||||||
list(GET arg_PROPERTIES ${value_idx} property_value)
|
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.30)
|
|
||||||
# The collected interface properties exposed in module build tree and have the
|
|
||||||
# same transitive capabilities as after the module is installed. Supported for
|
|
||||||
# CMake version >= 3.30
|
|
||||||
set_property(TARGET ${target} PROPERTY ${interface_property_name} "${property_value}")
|
|
||||||
else()
|
|
||||||
# Internal properties are exported within the Qt module. They have limitations that
|
|
||||||
# EXPORT_PROPERTIES apply. These properties are exported even if we are building Qt
|
|
||||||
# with CMake versions that do not support transitive properties. It allows using
|
|
||||||
# them as transitive properties in user projects if CMake allows this.
|
|
||||||
list(APPEND internal_property_names _qt_internal_${property_name_lower})
|
|
||||||
set_property(TARGET ${target} PROPERTY
|
|
||||||
_qt_internal_${property_name_lower} "${property_value}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
_qt_internal_add_transitive_property(${target} ${arg_TYPE} ${property_name})
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
get_target_property(transitive_properties ${target} _qt_transitive_${type_lower}_properties)
|
|
||||||
if(NOT transitive_properties)
|
|
||||||
set(transitive_properties "")
|
|
||||||
endif()
|
|
||||||
list(APPEND transitive_properties ${property_names})
|
|
||||||
list(REMOVE_DUPLICATES transitive_properties)
|
|
||||||
|
|
||||||
get_target_property(export_properties ${target} EXPORT_PROPERTIES)
|
|
||||||
if(NOT export_properties)
|
|
||||||
set(export_properties "")
|
|
||||||
endif()
|
|
||||||
list(APPEND export_properties ${internal_property_names})
|
|
||||||
list(REMOVE_DUPLICATES export_properties)
|
|
||||||
|
|
||||||
string(TOLOWER "${arg_TYPE}" type_lower)
|
|
||||||
set_target_properties(${target} PROPERTIES
|
|
||||||
EXPORT_PROPERTIES "${export_properties}"
|
|
||||||
_qt_transitive_${type_lower}_properties "${transitive_properties}"
|
|
||||||
)
|
|
||||||
endfunction()
|
|
||||||
|
@ -23,7 +23,32 @@ if (NOT IS_DIRECTORY "${ANDROID_SDK_ROOT}")
|
|||||||
message(FATAL_ERROR "Could not find ANDROID_SDK_ROOT or path is not a directory: ${ANDROID_SDK_ROOT}")
|
message(FATAL_ERROR "Could not find ANDROID_SDK_ROOT or path is not a directory: ${ANDROID_SDK_ROOT}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
_qt_internal_locate_android_jar()
|
# This variable specifies the API level used for building Java code, it can be the same as Qt for
|
||||||
|
# Android's maximum supported Android version or higher.
|
||||||
|
if(NOT QT_ANDROID_API_USED_FOR_JAVA)
|
||||||
|
set(QT_ANDROID_API_USED_FOR_JAVA "android-35")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(jar_location "${ANDROID_SDK_ROOT}/platforms/${QT_ANDROID_API_USED_FOR_JAVA}/android.jar")
|
||||||
|
if(NOT EXISTS "${jar_location}")
|
||||||
|
_qt_internal_detect_latest_android_platform(android_platform_latest)
|
||||||
|
if(android_platform_latest)
|
||||||
|
message(NOTICE "The default platform SDK ${QT_ANDROID_API_USED_FOR_JAVA} not found, "
|
||||||
|
"using the latest installed ${android_platform_latest} instead.")
|
||||||
|
set(QT_ANDROID_API_USED_FOR_JAVA ${android_platform_latest})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(QT_ANDROID_JAR "${ANDROID_SDK_ROOT}/platforms/${QT_ANDROID_API_USED_FOR_JAVA}/android.jar")
|
||||||
|
if(NOT EXISTS "${QT_ANDROID_JAR}")
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"No suitable Android SDK platform found in '${ANDROID_SDK_ROOT}/platforms'."
|
||||||
|
" The minimum version required for building Java code is ${QT_ANDROID_API_USED_FOR_JAVA}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Using Android SDK API ${QT_ANDROID_API_USED_FOR_JAVA} from "
|
||||||
|
"${ANDROID_SDK_ROOT}/platforms")
|
||||||
|
|
||||||
# Locate Java
|
# Locate Java
|
||||||
include(UseJava)
|
include(UseJava)
|
||||||
@ -111,10 +136,8 @@ define_property(TARGET
|
|||||||
|
|
||||||
# Returns test execution arguments for Android targets
|
# Returns test execution arguments for Android targets
|
||||||
function(qt_internal_android_test_runner_arguments target out_test_runner out_test_arguments)
|
function(qt_internal_android_test_runner_arguments target out_test_runner out_test_arguments)
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
set(${out_test_runner} "${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}/androidtestrunner" PARENT_SCOPE)
|
||||||
set(host_bin_dir "${QT_HOST_PATH}/${${host_info_var_prefix}_BINDIR}")
|
set(deployment_tool "${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}/androiddeployqt")
|
||||||
set(${out_test_runner} "${host_bin_dir}/androidtestrunner" PARENT_SCOPE)
|
|
||||||
set(deployment_tool "${host_bin_dir}/androiddeployqt")
|
|
||||||
|
|
||||||
_qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
|
_qt_internal_android_get_target_android_build_dir(android_build_dir ${target})
|
||||||
set(${out_test_arguments}
|
set(${out_test_arguments}
|
||||||
|
@ -22,6 +22,9 @@ cmake_minimum_required(VERSION @min_new_policy_version@...@max_new_policy_versio
|
|||||||
|
|
||||||
include(CMakeFindDependencyMacro)
|
include(CMakeFindDependencyMacro)
|
||||||
|
|
||||||
|
get_filename_component(_import_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
|
get_filename_component(_import_prefix "${_import_prefix}" REALPATH)
|
||||||
|
|
||||||
if (NOT QT_NO_CREATE_TARGETS)
|
if (NOT QT_NO_CREATE_TARGETS)
|
||||||
# Find required dependencies, if any.
|
# Find required dependencies, if any.
|
||||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
|
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Dependencies.cmake")
|
||||||
|
@ -115,12 +115,6 @@ function(qt_internal_add_plugin target)
|
|||||||
|
|
||||||
qt_get_sanitized_plugin_type("${plugin_type}" plugin_type_escaped)
|
qt_get_sanitized_plugin_type("${plugin_type}" plugin_type_escaped)
|
||||||
|
|
||||||
if(NOT TARGET qt_${plugin_type_escaped}_plugins_all)
|
|
||||||
add_custom_target(qt_${plugin_type_escaped}_plugins_all)
|
|
||||||
endif()
|
|
||||||
add_dependencies(qt_${plugin_type_escaped}_plugins_all ${target})
|
|
||||||
|
|
||||||
|
|
||||||
set(output_directory_default "${QT_BUILD_DIR}/${INSTALL_PLUGINSDIR}/${plugin_type}")
|
set(output_directory_default "${QT_BUILD_DIR}/${INSTALL_PLUGINSDIR}/${plugin_type}")
|
||||||
set(install_directory_default "${INSTALL_PLUGINSDIR}/${plugin_type}")
|
set(install_directory_default "${INSTALL_PLUGINSDIR}/${plugin_type}")
|
||||||
|
|
||||||
@ -343,7 +337,6 @@ function(qt_internal_add_plugin target)
|
|||||||
list(APPEND qt_register_target_dependencies_args PUBLIC ${arg_PUBLIC_LIBRARIES})
|
list(APPEND qt_register_target_dependencies_args PUBLIC ${arg_PUBLIC_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
if(qt_libs_private)
|
if(qt_libs_private)
|
||||||
qt_internal_wrap_private_modules(qt_libs_private ${qt_libs_private})
|
|
||||||
list(APPEND qt_register_target_dependencies_args PRIVATE ${qt_libs_private})
|
list(APPEND qt_register_target_dependencies_args PRIVATE ${qt_libs_private})
|
||||||
endif()
|
endif()
|
||||||
qt_internal_register_target_dependencies("${target}"
|
qt_internal_register_target_dependencies("${target}"
|
||||||
|
@ -8,50 +8,13 @@ function(qt_update_precompiled_header target precompiled_header)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qt_update_precompiled_header_with_library target library)
|
function(qt_update_precompiled_header_with_library target library)
|
||||||
if(NOT TARGET "${library}")
|
if (TARGET "${library}")
|
||||||
return()
|
get_target_property(TARGET_TYPE "${library}" TYPE)
|
||||||
endif()
|
if (NOT TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
|
||||||
|
get_target_property(HEADER "${library}" MODULE_HEADER)
|
||||||
get_target_property(target_type "${library}" TYPE)
|
qt_update_precompiled_header("${target}" "${HEADER}")
|
||||||
if(target_type STREQUAL "INTERFACE_LIBRARY")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_target_property(header_file_path "${library}" MODULE_HEADER)
|
|
||||||
if(NOT header_file_path)
|
|
||||||
# The Qt module is imported from the Qt installation prefix.
|
|
||||||
# Calculate the module header location.
|
|
||||||
get_target_property(include_name "${library}" _qt_module_include_name)
|
|
||||||
if(NOT include_name)
|
|
||||||
message(DEBUG "Property _qt_module_include_name is not set on ${library}.")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_target_property(relative_include_dir "${library}" _qt_module_relative_include_dir)
|
|
||||||
if(NOT relative_include_dir)
|
|
||||||
message(DEBUG "Property _qt_module_relative_include_dir is not set on ${library}.")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_target_property(package_name ${library} _qt_package_name)
|
|
||||||
if(NOT package_name)
|
|
||||||
message(DEBUG "No package name found for ${library}.")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
set(package_location "${${package_name}_DIR}")
|
|
||||||
get_filename_component(absolute_include_dir
|
|
||||||
"${package_location}/${relative_include_dir}"
|
|
||||||
ABSOLUTE
|
|
||||||
)
|
|
||||||
|
|
||||||
set(header_file_path "${absolute_include_dir}/${include_name}")
|
|
||||||
if(NOT EXISTS "${header_file_path}")
|
|
||||||
message(DEBUG "Module header '${header_file_path}' does not exist.")
|
|
||||||
return()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
qt_update_precompiled_header("${target}" "${header_file_path}")
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(qt_update_ignore_pch_source target sources)
|
function(qt_update_ignore_pch_source target sources)
|
||||||
|
@ -738,10 +738,9 @@ function(qt_generate_global_config_pri_file)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_CROSSCOMPILING)
|
if(CMAKE_CROSSCOMPILING)
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
|
||||||
string(APPEND content "host_build {
|
string(APPEND content "host_build {
|
||||||
QT_ARCH = ${${host_info_var_prefix}_ARCH}
|
QT_ARCH = ${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_ARCH}
|
||||||
QT_BUILDABI = ${${host_info_var_prefix}_BUILDABI}
|
QT_BUILDABI = ${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BUILDABI}
|
||||||
QT_TARGET_ARCH = ${TEST_architecture_arch}
|
QT_TARGET_ARCH = ${TEST_architecture_arch}
|
||||||
QT_TARGET_BUILDABI = ${TEST_buildAbi}
|
QT_TARGET_BUILDABI = ${TEST_buildAbi}
|
||||||
} else {
|
} else {
|
||||||
@ -966,9 +965,8 @@ function(qt_generate_global_module_pri_file)
|
|||||||
set(arch "${TEST_architecture_arch}")
|
set(arch "${TEST_architecture_arch}")
|
||||||
list(JOIN TEST_subarch_result " " subarchs)
|
list(JOIN TEST_subarch_result " " subarchs)
|
||||||
if(CMAKE_CROSSCOMPILING)
|
if(CMAKE_CROSSCOMPILING)
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
set(host_arch "${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_ARCH}")
|
||||||
set(host_arch "${${host_info_var_prefix}_ARCH}")
|
list(JOIN QT${PROJECT_VERSION_MAJOR}_HOST_INFO_SUBARCHS " " host_subarchs)
|
||||||
list(JOIN ${host_info_var_prefix}_SUBARCHS " " host_subarchs)
|
|
||||||
string(APPEND content "host_build {
|
string(APPEND content "host_build {
|
||||||
QT_CPU_FEATURES.${host_arch} = ${host_subarchs}
|
QT_CPU_FEATURES.${host_arch} = ${host_subarchs}
|
||||||
} else {
|
} else {
|
||||||
|
@ -316,7 +316,7 @@ endmacro()
|
|||||||
|
|
||||||
function(qt_commandline_option name)
|
function(qt_commandline_option name)
|
||||||
set(options CONTROLS_FEATURE)
|
set(options CONTROLS_FEATURE)
|
||||||
set(oneValueArgs TYPE NAME VALUE CMAKE_VARIABLE)
|
set(oneValueArgs TYPE NAME VALUE)
|
||||||
set(multiValueArgs VALUES MAPPING)
|
set(multiValueArgs VALUES MAPPING)
|
||||||
cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
@ -327,9 +327,6 @@ function(qt_commandline_option name)
|
|||||||
set(input_name ${arg_NAME})
|
set(input_name ${arg_NAME})
|
||||||
set(commandline_option_${name}_variable "${arg_NAME}" PARENT_SCOPE)
|
set(commandline_option_${name}_variable "${arg_NAME}" PARENT_SCOPE)
|
||||||
endif()
|
endif()
|
||||||
if(DEFINED arg_CMAKE_VARIABLE)
|
|
||||||
set_property(GLOBAL PROPERTY INPUTCMAKEVAR_${input_name} "${arg_CMAKE_VARIABLE}")
|
|
||||||
endif()
|
|
||||||
set(mapping_type "${arg_TYPE}")
|
set(mapping_type "${arg_TYPE}")
|
||||||
if(arg_CONTROLS_FEATURE)
|
if(arg_CONTROLS_FEATURE)
|
||||||
set(mapping_type "boolean")
|
set(mapping_type "boolean")
|
||||||
@ -348,13 +345,11 @@ endfunction()
|
|||||||
# Add the common command line options for every qt repo.
|
# Add the common command line options for every qt repo.
|
||||||
macro(qt_add_common_commandline_options)
|
macro(qt_add_common_commandline_options)
|
||||||
qt_commandline_option(headersclean TYPE boolean)
|
qt_commandline_option(headersclean TYPE boolean)
|
||||||
qt_commandline_option(sbom TYPE boolean CMAKE_VARIABLE QT_GENERATE_SBOM)
|
qt_commandline_option(sbom TYPE boolean)
|
||||||
qt_commandline_option(sbom-json TYPE boolean CMAKE_VARIABLE QT_SBOM_GENERATE_JSON)
|
qt_commandline_option(sbom-json TYPE boolean)
|
||||||
qt_commandline_option(sbom-json-required TYPE boolean
|
qt_commandline_option(sbom-json-required TYPE boolean)
|
||||||
CMAKE_VARIABLE QT_SBOM_REQUIRE_GENERATE_JSON
|
qt_commandline_option(sbom-verify TYPE boolean)
|
||||||
)
|
qt_commandline_option(sbom-verify-required TYPE boolean)
|
||||||
qt_commandline_option(sbom-verify TYPE boolean CMAKE_VARIABLE QT_SBOM_VERIFY)
|
|
||||||
qt_commandline_option(sbom-verify-required TYPE boolean CMAKE_VARIABLE QT_SBOM_REQUIRE_VERIFY)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
function(qt_commandline_prefix arg var)
|
function(qt_commandline_prefix arg var)
|
||||||
@ -538,18 +533,6 @@ function(qt_commandline_string arg val nextok)
|
|||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Handle command line arguments of type "path" exactly like strings.
|
|
||||||
# They are treated differently by translate_input, however.
|
|
||||||
function(qt_commandline_path arg val nextok)
|
|
||||||
qt_commandline_string("${arg}" "${val}" "${nextok}")
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Handle command line arguments of type "stringList" exactly like strings.
|
|
||||||
# They are treated differently by translate_input, however.
|
|
||||||
function(qt_commandline_stringList arg val nextok)
|
|
||||||
qt_commandline_string("${arg}" "${val}" "${nextok}")
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(qt_commandline_optionalString arg val nextok)
|
function(qt_commandline_optionalString arg val nextok)
|
||||||
if("${val}" STREQUAL "")
|
if("${val}" STREQUAL "")
|
||||||
if(nextok)
|
if(nextok)
|
||||||
@ -843,10 +826,9 @@ get_property(config_inputs GLOBAL PROPERTY CONFIG_INPUTS)
|
|||||||
list(REMOVE_DUPLICATES config_inputs)
|
list(REMOVE_DUPLICATES config_inputs)
|
||||||
foreach(var ${config_inputs})
|
foreach(var ${config_inputs})
|
||||||
get_property(INPUT_${var} GLOBAL PROPERTY INPUT_${var})
|
get_property(INPUT_${var} GLOBAL PROPERTY INPUT_${var})
|
||||||
if("${commandline_input_${var}_type}" STREQUAL "")
|
if("${commandline_input_type}" STREQUAL "")
|
||||||
get_property(commandline_input_${var}_type GLOBAL PROPERTY INPUTTYPE_${var})
|
get_property(commandline_input_${var}_type GLOBAL PROPERTY INPUTTYPE_${var})
|
||||||
endif()
|
endif()
|
||||||
get_property(commandline_input_${var}_cmake_variable GLOBAL PROPERTY INPUTCMAKEVAR_${var})
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
macro(drop_input name)
|
macro(drop_input name)
|
||||||
@ -888,24 +870,6 @@ macro(translate_list_input name cmake_var)
|
|||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(translate_input name cmake_var)
|
|
||||||
if("${commandline_input_${name}_type}" STREQUAL "boolean")
|
|
||||||
translate_boolean_input(${name} ${cmake_var})
|
|
||||||
elseif("${commandline_input_${name}_type}" STREQUAL "path")
|
|
||||||
translate_path_input(${name} ${cmake_var})
|
|
||||||
elseif("${commandline_input_${name}_type}" STREQUAL "string")
|
|
||||||
translate_string_input(${name} ${cmake_var})
|
|
||||||
elseif("${commandline_input_${name}_type}" STREQUAL "addString"
|
|
||||||
OR "${commandline_input_${name}_type}" STREQUAL "stringList")
|
|
||||||
translate_list_input(${name} ${cmake_var})
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"translate_input cannot handle input '${name}' "
|
|
||||||
"of type '${commandline_input_${name}_type}'."
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# Check whether to guess the compiler for the given language.
|
# Check whether to guess the compiler for the given language.
|
||||||
#
|
#
|
||||||
# Sets ${out_var} to FALSE if one of the following holds:
|
# Sets ${out_var} to FALSE if one of the following holds:
|
||||||
@ -987,23 +951,47 @@ function(check_qt_build_parts type)
|
|||||||
set(cmake_args "${cmake_args}" PARENT_SCOPE)
|
set(cmake_args "${cmake_args}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Translate command line arguments that have CMAKE_VARIABLE set.
|
|
||||||
foreach(input IN LISTS config_inputs)
|
|
||||||
if(NOT "${commandline_input_${input}_cmake_variable}" STREQUAL "")
|
|
||||||
translate_input("${input}" "${commandline_input_${input}_cmake_variable}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
drop_input(commercial)
|
drop_input(commercial)
|
||||||
drop_input(confirm-license)
|
drop_input(confirm-license)
|
||||||
|
translate_boolean_input(precompile_header BUILD_WITH_PCH)
|
||||||
|
translate_boolean_input(unity_build QT_UNITY_BUILD)
|
||||||
|
translate_string_input(unity_build_batch_size QT_UNITY_BUILD_BATCH_SIZE)
|
||||||
|
translate_boolean_input(ccache QT_USE_CCACHE)
|
||||||
|
translate_boolean_input(vcpkg QT_USE_VCPKG)
|
||||||
|
translate_boolean_input(sbom QT_GENERATE_SBOM)
|
||||||
|
translate_boolean_input(sbom-json QT_SBOM_GENERATE_JSON)
|
||||||
|
translate_boolean_input(sbom-json-required QT_SBOM_REQUIRE_GENERATE_JSON)
|
||||||
|
translate_boolean_input(sbom-verify QT_SBOM_VERIFY)
|
||||||
|
translate_boolean_input(sbom-verify-required QT_SBOM_REQUIRE_VERIFY)
|
||||||
translate_boolean_input(shared BUILD_SHARED_LIBS)
|
translate_boolean_input(shared BUILD_SHARED_LIBS)
|
||||||
|
translate_boolean_input(warnings_are_errors WARNINGS_ARE_ERRORS)
|
||||||
|
translate_boolean_input(qtinlinenamespace QT_INLINE_NAMESPACE)
|
||||||
|
translate_string_input(qt_namespace QT_NAMESPACE)
|
||||||
|
translate_string_input(qt_libinfix QT_LIBINFIX)
|
||||||
|
translate_string_input(qreal QT_COORD_TYPE)
|
||||||
|
translate_path_input(prefix CMAKE_INSTALL_PREFIX)
|
||||||
|
translate_path_input(extprefix CMAKE_STAGING_PREFIX)
|
||||||
|
foreach(kind bin lib archdata libexec qml data doc sysconf examples tests)
|
||||||
|
string(TOUPPER ${kind} uc_kind)
|
||||||
|
translate_path_input(${kind}dir INSTALL_${uc_kind}DIR)
|
||||||
|
endforeach()
|
||||||
|
translate_path_input(headerdir INSTALL_INCLUDEDIR)
|
||||||
|
translate_path_input(plugindir INSTALL_PLUGINSDIR)
|
||||||
|
translate_path_input(translationdir INSTALL_TRANSLATIONSDIR)
|
||||||
|
translate_path_input(sbomdir INSTALL_SBOMDIR)
|
||||||
|
|
||||||
if(NOT "${INPUT_device}" STREQUAL "")
|
if(NOT "${INPUT_device}" STREQUAL "")
|
||||||
push("-DQT_QMAKE_TARGET_MKSPEC=devices/${INPUT_device}")
|
push("-DQT_QMAKE_TARGET_MKSPEC=devices/${INPUT_device}")
|
||||||
drop_input(device)
|
drop_input(device)
|
||||||
endif()
|
endif()
|
||||||
|
translate_string_input(platform QT_QMAKE_TARGET_MKSPEC)
|
||||||
|
translate_string_input(xplatform QT_QMAKE_TARGET_MKSPEC)
|
||||||
guess_compiler_from_mkspec()
|
guess_compiler_from_mkspec()
|
||||||
|
translate_string_input(qpa_default_platform QT_QPA_DEFAULT_PLATFORM)
|
||||||
|
translate_list_input(qpa_platforms QT_QPA_PLATFORMS)
|
||||||
|
|
||||||
|
translate_path_input(android-sdk ANDROID_SDK_ROOT)
|
||||||
|
translate_path_input(android-ndk ANDROID_NDK_ROOT)
|
||||||
if(DEFINED INPUT_android-ndk-platform)
|
if(DEFINED INPUT_android-ndk-platform)
|
||||||
drop_input(android-ndk-platform)
|
drop_input(android-ndk-platform)
|
||||||
push("-DANDROID_PLATFORM=${INPUT_android-ndk-platform}")
|
push("-DANDROID_PLATFORM=${INPUT_android-ndk-platform}")
|
||||||
@ -1015,9 +1003,14 @@ if(DEFINED INPUT_android-abis)
|
|||||||
endif()
|
endif()
|
||||||
translate_string_input(android-abis ANDROID_ABI)
|
translate_string_input(android-abis ANDROID_ABI)
|
||||||
endif()
|
endif()
|
||||||
|
translate_string_input(android-javac-source QT_ANDROID_JAVAC_SOURCE)
|
||||||
|
translate_string_input(android-javac-target QT_ANDROID_JAVAC_TARGET)
|
||||||
|
|
||||||
|
translate_string_input(sdk QT_APPLE_SDK)
|
||||||
|
|
||||||
drop_input(make)
|
drop_input(make)
|
||||||
drop_input(nomake)
|
drop_input(nomake)
|
||||||
|
translate_boolean_input(install-examples-sources QT_INSTALL_EXAMPLES_SOURCES)
|
||||||
|
|
||||||
check_qt_build_parts(nomake)
|
check_qt_build_parts(nomake)
|
||||||
check_qt_build_parts(make)
|
check_qt_build_parts(make)
|
||||||
@ -1082,7 +1075,10 @@ if("${INPUT_ltcg}" STREQUAL "yes")
|
|||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Handle -D, -I and friends.
|
translate_path_input(ffmpeg-dir FFMPEG_DIR)
|
||||||
|
translate_boolean_input(ffmpeg-deploy QT_DEPLOY_FFMPEG)
|
||||||
|
|
||||||
|
translate_list_input(device-option QT_QMAKE_DEVICE_OPTIONS)
|
||||||
translate_list_input(defines QT_EXTRA_DEFINES)
|
translate_list_input(defines QT_EXTRA_DEFINES)
|
||||||
translate_list_input(fpaths QT_EXTRA_FRAMEWORKPATHS)
|
translate_list_input(fpaths QT_EXTRA_FRAMEWORKPATHS)
|
||||||
translate_list_input(includes QT_EXTRA_INCLUDEPATHS)
|
translate_list_input(includes QT_EXTRA_INCLUDEPATHS)
|
||||||
|
@ -45,36 +45,3 @@ function(_qt_internal_sort_android_platforms out_var)
|
|||||||
endif()
|
endif()
|
||||||
set("${out_var}" "${platforms}" PARENT_SCOPE)
|
set("${out_var}" "${platforms}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(_qt_internal_locate_android_jar)
|
|
||||||
# This variable specifies the API level used for building Java code, it can be the same as Qt
|
|
||||||
# for Android's maximum supported Android version or higher.
|
|
||||||
if(NOT QT_ANDROID_API_USED_FOR_JAVA)
|
|
||||||
set(QT_ANDROID_API_USED_FOR_JAVA "android-35")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(jar_location "${ANDROID_SDK_ROOT}/platforms/${QT_ANDROID_API_USED_FOR_JAVA}/android.jar")
|
|
||||||
if(NOT EXISTS "${jar_location}")
|
|
||||||
_qt_internal_detect_latest_android_platform(android_platform_latest)
|
|
||||||
if(android_platform_latest)
|
|
||||||
message(NOTICE "The default platform SDK ${QT_ANDROID_API_USED_FOR_JAVA} not found, "
|
|
||||||
"using the latest installed ${android_platform_latest} instead.")
|
|
||||||
set(QT_ANDROID_API_USED_FOR_JAVA ${android_platform_latest})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(QT_ANDROID_JAR "${ANDROID_SDK_ROOT}/platforms/${QT_ANDROID_API_USED_FOR_JAVA}/android.jar")
|
|
||||||
if(NOT EXISTS "${QT_ANDROID_JAR}")
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"No suitable Android SDK platform found in '${ANDROID_SDK_ROOT}/platforms'."
|
|
||||||
" The minimum version required for building Java code is ${QT_ANDROID_API_USED_FOR_JAVA}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Using Android SDK API ${QT_ANDROID_API_USED_FOR_JAVA} from "
|
|
||||||
"${ANDROID_SDK_ROOT}/platforms")
|
|
||||||
|
|
||||||
set(QT_ANDROID_JAR "${QT_ANDROID_JAR}" PARENT_SCOPE)
|
|
||||||
set(QT_ANDROID_API_USED_FOR_JAVA "${QT_ANDROID_API_USED_FOR_JAVA}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
|
@ -813,55 +813,6 @@ function(_qt_internal_relative_path path_var)
|
|||||||
set(${arg_OUTPUT_VARIABLE} "${${arg_OUTPUT_VARIABLE}}" PARENT_SCOPE)
|
set(${arg_OUTPUT_VARIABLE} "${${arg_OUTPUT_VARIABLE}}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Compatibility of `cmake_path(IS_PREFIX)`
|
|
||||||
#
|
|
||||||
# NORMALIZE keyword is not supported
|
|
||||||
#
|
|
||||||
# Synopsis
|
|
||||||
#
|
|
||||||
# _qt_internal_path_is_prefix(<path-var> <input> <out-var>)
|
|
||||||
#
|
|
||||||
# Arguments
|
|
||||||
#
|
|
||||||
# `path-var`
|
|
||||||
# Equivalent to `cmake_path(IS_PREFIX <path-var>)`.
|
|
||||||
#
|
|
||||||
# `input`
|
|
||||||
# Equivalent to `cmake_path(IS_PREFIX <input>)`.
|
|
||||||
#
|
|
||||||
# `out-var`
|
|
||||||
# Equivalent to `cmake_path(IS_PREFIX <out-var>)`.
|
|
||||||
function(_qt_internal_path_is_prefix path_var input out_var)
|
|
||||||
|
|
||||||
# Make sure the path ends with `/`
|
|
||||||
if(NOT ${path_var} MATCHES "/$")
|
|
||||||
set(${path_var} "${${path_var}}/")
|
|
||||||
endif()
|
|
||||||
# For the case input == path_var, we need to also include a trailing `/` to match the
|
|
||||||
# previous change. We discard the actual path for input so we can add it unconditionally
|
|
||||||
set(input "${input}/")
|
|
||||||
if(CMAKE_VERSION VERSION_LESS 3.20)
|
|
||||||
string(FIND "${input}" "${${path_var}}" find_pos)
|
|
||||||
if(find_pos EQUAL 0)
|
|
||||||
# input starts_with path_var
|
|
||||||
set(${out_var} ON)
|
|
||||||
else()
|
|
||||||
set(${out_var} OFF)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
cmake_path(IS_PREFIX ${path_var} ${input} ${out_var})
|
|
||||||
endif()
|
|
||||||
set(${out_var} "${${out_var}}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(qt_set01 result)
|
|
||||||
if (${ARGN})
|
|
||||||
set("${result}" 1 PARENT_SCOPE)
|
|
||||||
else()
|
|
||||||
set("${result}" 0 PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Configures the file using either the input template or the CONTENT.
|
# Configures the file using either the input template or the CONTENT.
|
||||||
# Behaves as either file(CONFIGURE or configure_file( command, but do not depend
|
# Behaves as either file(CONFIGURE or configure_file( command, but do not depend
|
||||||
# on CMake version.
|
# on CMake version.
|
||||||
@ -934,49 +885,10 @@ function(_qt_internal_configure_file mode)
|
|||||||
configure_file("${input_file}" "${arg_OUTPUT}" @ONLY)
|
configure_file("${input_file}" "${arg_OUTPUT}" @ONLY)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# The function checks if `value` is a valid C indentifier.
|
function(qt_set01 result)
|
||||||
#
|
if (${ARGN})
|
||||||
# Synopsis
|
set("${result}" 1 PARENT_SCOPE)
|
||||||
#
|
|
||||||
# _qt_internal_is_c_identifier(<out_var> <value>)
|
|
||||||
#
|
|
||||||
# Arguments
|
|
||||||
#
|
|
||||||
# `out_var`
|
|
||||||
# Variable name for the evaluation result.
|
|
||||||
#
|
|
||||||
# `value`
|
|
||||||
# The string for the evaluation.
|
|
||||||
function(_qt_internal_is_c_identifier out_var value)
|
|
||||||
string(MAKE_C_IDENTIFIER "${value}" value_valid)
|
|
||||||
|
|
||||||
if(value AND "${value}" STREQUAL "${value_valid}")
|
|
||||||
set(${out_var} "TRUE" PARENT_SCOPE)
|
|
||||||
else()
|
else()
|
||||||
set(${out_var} "FALSE" PARENT_SCOPE)
|
set("${result}" 0 PARENT_SCOPE)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Makes appending of the CMake configure time dependencies unique.
|
|
||||||
function(_qt_internal_append_cmake_configure_depends)
|
|
||||||
get_property(configure_depends DIRECTORY PROPERTY CMAKE_CONFIGURE_DEPENDS)
|
|
||||||
foreach(path IN LISTS ARGN)
|
|
||||||
get_filename_component(abs_path "${path}" REALPATH)
|
|
||||||
if(NOT "${abs_path}" IN_LIST configure_depends)
|
|
||||||
list(APPEND configure_depends "${abs_path}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
set_property(DIRECTORY PROPERTY CMAKE_CONFIGURE_DEPENDS "${configure_depends}")
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(_qt_internal_get_moc_compiler_flavor_flags out_var)
|
|
||||||
set(flags "")
|
|
||||||
if(WIN32)
|
|
||||||
list(APPEND flags -DWIN32)
|
|
||||||
endif()
|
|
||||||
if(MSVC)
|
|
||||||
list(APPEND flags --compiler-flavor=msvc)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(${out_var} "${flags}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
@ -413,6 +413,46 @@ function(__qt_internal_collect_plugin_targets_from_dependencies_of_plugins targe
|
|||||||
set("${out_var}" "${plugin_targets}" PARENT_SCOPE)
|
set("${out_var}" "${plugin_targets}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# Generate plugin information files for deployment
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# OUT_PLUGIN_TARGETS - Variable name to store the plugin targets that were collected with
|
||||||
|
# __qt_internal_collect_plugin_targets_from_dependencies.
|
||||||
|
function(__qt_internal_generate_plugin_deployment_info target)
|
||||||
|
set(no_value_options "")
|
||||||
|
set(single_value_options "OUT_PLUGIN_TARGETS")
|
||||||
|
set(multi_value_options "")
|
||||||
|
cmake_parse_arguments(PARSE_ARGV 0 arg
|
||||||
|
"${no_value_options}" "${single_value_options}" "${multi_value_options}"
|
||||||
|
)
|
||||||
|
|
||||||
|
__qt_internal_collect_plugin_targets_from_dependencies("${target}" plugin_targets)
|
||||||
|
if(NOT "${arg_OUT_PLUGIN_TARGETS}" STREQUAL "")
|
||||||
|
set("${arg_OUT_PLUGIN_TARGETS}" "${plugin_targets}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_target_property(marked_for_deployment ${target} _qt_marked_for_deployment)
|
||||||
|
if(NOT marked_for_deployment)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
__qt_internal_collect_plugin_library_files(${target} "${plugin_targets}" plugins_files)
|
||||||
|
set(plugins_files "$<FILTER:${plugins_files},EXCLUDE,^$>")
|
||||||
|
|
||||||
|
_qt_internal_get_deploy_impl_dir(deploy_impl_dir)
|
||||||
|
set(file_path "${deploy_impl_dir}/${target}-plugins")
|
||||||
|
get_cmake_property(is_multi_config GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
if(is_multi_config)
|
||||||
|
string(APPEND file_path "-$<CONFIG>")
|
||||||
|
endif()
|
||||||
|
string(APPEND file_path ".cmake")
|
||||||
|
|
||||||
|
file(GENERATE
|
||||||
|
OUTPUT ${file_path}
|
||||||
|
CONTENT "set(__QT_DEPLOY_PLUGINS ${plugins_files})"
|
||||||
|
)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# Main logic of finalizer mode.
|
# Main logic of finalizer mode.
|
||||||
function(__qt_internal_apply_plugin_imports_finalizer_mode target)
|
function(__qt_internal_apply_plugin_imports_finalizer_mode target)
|
||||||
# Process a target only once.
|
# Process a target only once.
|
||||||
@ -421,6 +461,9 @@ function(__qt_internal_apply_plugin_imports_finalizer_mode target)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
__qt_internal_generate_plugin_deployment_info(${target}
|
||||||
|
OUT_PLUGIN_TARGETS plugin_targets)
|
||||||
|
|
||||||
# By default if the project hasn't explicitly opted in or out, use finalizer mode.
|
# By default if the project hasn't explicitly opted in or out, use finalizer mode.
|
||||||
# The precondition for this is that qt_finalize_target was called (either explicitly by the user
|
# The precondition for this is that qt_finalize_target was called (either explicitly by the user
|
||||||
# or auto-deferred by CMake 3.19+).
|
# or auto-deferred by CMake 3.19+).
|
||||||
@ -434,7 +477,6 @@ function(__qt_internal_apply_plugin_imports_finalizer_mode target)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
__qt_internal_collect_plugin_targets_from_dependencies("${target}" plugin_targets)
|
|
||||||
__qt_internal_collect_plugin_init_libraries("${plugin_targets}" init_libraries)
|
__qt_internal_collect_plugin_init_libraries("${plugin_targets}" init_libraries)
|
||||||
__qt_internal_collect_plugin_libraries("${plugin_targets}" plugin_libraries)
|
__qt_internal_collect_plugin_libraries("${plugin_targets}" plugin_libraries)
|
||||||
|
|
||||||
|
@ -814,9 +814,13 @@ function(_qt_internal_sbom_map_path_to_reproducible_relative_path out_var)
|
|||||||
if(IS_ABSOLUTE "${path}")
|
if(IS_ABSOLUTE "${path}")
|
||||||
set(path_in "${path}")
|
set(path_in "${path}")
|
||||||
|
|
||||||
_qt_internal_path_is_prefix(PROJECT_SOURCE_DIR "${path}" is_in_source_dir)
|
string(FIND "${path}" "${PROJECT_SOURCE_DIR}/" src_idx)
|
||||||
if(NOT is_in_source_dir)
|
string(FIND "${path}" "${PROJECT_BINARY_DIR}/" dest_idx)
|
||||||
_qt_internal_path_is_prefix(PROJECT_BINARY_DIR "${path}" is_in_build_dir)
|
|
||||||
|
if(src_idx EQUAL "0")
|
||||||
|
set(is_in_source_dir TRUE)
|
||||||
|
elseif(dest_idx EQUAL "0")
|
||||||
|
set(is_in_build_dir TRUE)
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
# We consider relative paths to be relative to the current source dir.
|
# We consider relative paths to be relative to the current source dir.
|
||||||
|
@ -432,7 +432,8 @@ function(_qt_internal_sbom_end_project)
|
|||||||
|
|
||||||
# Add configure-time dependency on project attribution files.
|
# Add configure-time dependency on project attribution files.
|
||||||
get_property(attribution_files GLOBAL PROPERTY _qt_internal_project_attribution_files)
|
get_property(attribution_files GLOBAL PROPERTY _qt_internal_project_attribution_files)
|
||||||
_qt_internal_append_cmake_configure_depends(${attribution_files})
|
list(REMOVE_DUPLICATES attribution_files)
|
||||||
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${attribution_files}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Automatically begins sbom generation for a qt git repo unless QT_SKIP_SBOM_AUTO_PROJECT is TRUE.
|
# Automatically begins sbom generation for a qt git repo unless QT_SKIP_SBOM_AUTO_PROJECT is TRUE.
|
||||||
|
@ -125,7 +125,6 @@ Prefix=${prefix}
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
|
||||||
string(APPEND content
|
string(APPEND content
|
||||||
"[Paths]
|
"[Paths]
|
||||||
Prefix=${ext_prefix_relative_to_conf_file}
|
Prefix=${ext_prefix_relative_to_conf_file}
|
||||||
@ -143,9 +142,9 @@ Examples=${INSTALL_EXAMPLESDIR}
|
|||||||
Tests=${INSTALL_TESTSDIR}
|
Tests=${INSTALL_TESTSDIR}
|
||||||
Settings=${INSTALL_SYSCONFDIR}
|
Settings=${INSTALL_SYSCONFDIR}
|
||||||
HostPrefix=${host_prefix_relative_to_conf_file}
|
HostPrefix=${host_prefix_relative_to_conf_file}
|
||||||
HostBinaries=${${host_info_var_prefix}_BINDIR}
|
HostBinaries=${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}
|
||||||
HostLibraries=${${host_info_var_prefix}_LIBDIR}
|
HostLibraries=${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBDIR}
|
||||||
HostLibraryExecutables=${${host_info_var_prefix}_LIBEXECDIR}
|
HostLibraryExecutables=${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}
|
||||||
HostData=${ext_datadir_relative_to_host_prefix}
|
HostData=${ext_datadir_relative_to_host_prefix}
|
||||||
Sysroot=${sysroot}
|
Sysroot=${sysroot}
|
||||||
SysrootifyPrefix=${sysrootify_prefix}
|
SysrootifyPrefix=${sysrootify_prefix}
|
||||||
@ -170,7 +169,7 @@ HostSpec=${QT_QMAKE_HOST_MKSPEC}
|
|||||||
set(wrapper_prefix "host-")
|
set(wrapper_prefix "host-")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(host_qt_bindir "${host_prefix}/${${host_info_var_prefix}_BINDIR}")
|
set(host_qt_bindir "${host_prefix}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}")
|
||||||
file(TO_NATIVE_PATH "${host_qt_bindir}" host_qt_bindir)
|
file(TO_NATIVE_PATH "${host_qt_bindir}" host_qt_bindir)
|
||||||
|
|
||||||
if(QT_CREATE_VERSIONED_HARD_LINK AND QT_WILL_INSTALL)
|
if(QT_CREATE_VERSIONED_HARD_LINK AND QT_WILL_INSTALL)
|
||||||
|
@ -195,11 +195,9 @@ function(qt_internal_extend_target target)
|
|||||||
${private_visibility_option} ${arg_LINK_OPTIONS})
|
${private_visibility_option} ${arg_LINK_OPTIONS})
|
||||||
|
|
||||||
if(NOT is_interface_lib)
|
if(NOT is_interface_lib)
|
||||||
_qt_internal_get_moc_compiler_flavor_flags(flavor_flags)
|
|
||||||
set_property(TARGET "${target}" APPEND PROPERTY
|
set_property(TARGET "${target}" APPEND PROPERTY
|
||||||
AUTOMOC_MOC_OPTIONS "${arg_MOC_OPTIONS}" ${flavor_flags}
|
AUTOMOC_MOC_OPTIONS "${arg_MOC_OPTIONS}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Plugin types associated to a module
|
# Plugin types associated to a module
|
||||||
if(NOT "x${arg_PLUGIN_TYPES}" STREQUAL "x")
|
if(NOT "x${arg_PLUGIN_TYPES}" STREQUAL "x")
|
||||||
qt_internal_add_plugin_types("${target}" "${arg_PLUGIN_TYPES}")
|
qt_internal_add_plugin_types("${target}" "${arg_PLUGIN_TYPES}")
|
||||||
@ -1241,10 +1239,9 @@ function(qt_internal_create_tracepoints name tracepoints_file)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
|
||||||
qt_path_join(tracegen
|
qt_path_join(tracegen
|
||||||
"${QT_HOST_PATH}"
|
"${QT_HOST_PATH}"
|
||||||
"${${host_info_var_prefix}_LIBEXECDIR}"
|
"${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}"
|
||||||
"tracegen")
|
"tracegen")
|
||||||
else()
|
else()
|
||||||
set(tracegen "${QT_CMAKE_EXPORT_NAMESPACE}::tracegen")
|
set(tracegen "${QT_CMAKE_EXPORT_NAMESPACE}::tracegen")
|
||||||
@ -1279,10 +1276,9 @@ function(qt_internal_generate_tracepoints name provider)
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
|
||||||
qt_path_join(tracepointgen
|
qt_path_join(tracepointgen
|
||||||
"${QT_HOST_PATH}"
|
"${QT_HOST_PATH}"
|
||||||
"${${host_info_var_prefix}_LIBEXECDIR}"
|
"${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}"
|
||||||
"tracepointgen")
|
"tracepointgen")
|
||||||
else()
|
else()
|
||||||
set(tracepointgen "${QT_CMAKE_EXPORT_NAMESPACE}::tracepointgen")
|
set(tracepointgen "${QT_CMAKE_EXPORT_NAMESPACE}::tracepointgen")
|
||||||
@ -1313,10 +1309,9 @@ function(qt_internal_generate_tracepoints name provider)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
qt_internal_get_host_info_var_prefix(host_info_var_prefix)
|
|
||||||
qt_path_join(tracegen
|
qt_path_join(tracegen
|
||||||
"${QT_HOST_PATH}"
|
"${QT_HOST_PATH}"
|
||||||
"${${host_info_var_prefix}_LIBEXECDIR}"
|
"${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}"
|
||||||
"tracegen")
|
"tracegen")
|
||||||
else()
|
else()
|
||||||
set(tracegen "${QT_CMAKE_EXPORT_NAMESPACE}::tracegen")
|
set(tracegen "${QT_CMAKE_EXPORT_NAMESPACE}::tracegen")
|
||||||
|
@ -100,10 +100,6 @@ function(qt_internal_add_manual_test target)
|
|||||||
qt_internal_add_test(${ARGV} MANUAL)
|
qt_internal_add_test(${ARGV} MANUAL)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
macro(qt_internal_skip_docker_compose)
|
|
||||||
set(QT_SKIP_DOCKER_COMPOSE ON CACHE BOOL "Skip setting docker on Linux." FORCE)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# This function will configure the fixture for the network tests that require docker network services
|
# This function will configure the fixture for the network tests that require docker network services
|
||||||
# qmake counterpart: qtbase/mkspecs/features/unsupported/testserver.prf
|
# qmake counterpart: qtbase/mkspecs/features/unsupported/testserver.prf
|
||||||
function(qt_internal_setup_docker_test_fixture name)
|
function(qt_internal_setup_docker_test_fixture name)
|
||||||
@ -123,7 +119,6 @@ function(qt_internal_setup_docker_test_fixture name)
|
|||||||
find_program(QT_DOCKER_COMPOSE docker-compose)
|
find_program(QT_DOCKER_COMPOSE docker-compose)
|
||||||
if (NOT QT_DOCKER_COMPOSE)
|
if (NOT QT_DOCKER_COMPOSE)
|
||||||
message(WARNING "docker-compose was not found. Docker network tests will not be run.")
|
message(WARNING "docker-compose was not found. Docker network tests will not be run.")
|
||||||
qt_internal_skip_docker_compose()
|
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
if (NOT DEFINED QT_DOCKER_COMPOSE_VERSION)
|
if (NOT DEFINED QT_DOCKER_COMPOSE_VERSION)
|
||||||
@ -135,7 +130,6 @@ function(qt_internal_setup_docker_test_fixture name)
|
|||||||
find_program(QT_DOCKER docker)
|
find_program(QT_DOCKER docker)
|
||||||
if (NOT QT_DOCKER)
|
if (NOT QT_DOCKER)
|
||||||
message(WARNING "docker was not found. Docker network tests will not be run.")
|
message(WARNING "docker was not found. Docker network tests will not be run.")
|
||||||
qt_internal_skip_docker_compose()
|
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
if (NOT DEFINED QT_DOCKER_TEST_SERVER)
|
if (NOT DEFINED QT_DOCKER_TEST_SERVER)
|
||||||
@ -145,7 +139,6 @@ function(qt_internal_setup_docker_test_fixture name)
|
|||||||
"Docker image qt-test-server-* not found.\n"
|
"Docker image qt-test-server-* not found.\n"
|
||||||
"Run the provisioning script (coin/provisioning/.../testserver/docker_testserver.sh) in advance\n"
|
"Run the provisioning script (coin/provisioning/.../testserver/docker_testserver.sh) in advance\n"
|
||||||
"Docker network tests will not be run.")
|
"Docker network tests will not be run.")
|
||||||
qt_internal_skip_docker_compose()
|
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
set(QT_DOCKER_TEST_SERVER "ON" CACHE BOOL "docker qt-test-server-* present")
|
set(QT_DOCKER_TEST_SERVER "ON" CACHE BOOL "docker qt-test-server-* present")
|
||||||
@ -576,17 +569,13 @@ function(qt_internal_add_test name)
|
|||||||
|
|
||||||
# Manual tests can be bundle apps
|
# Manual tests can be bundle apps
|
||||||
if(NOT arg_MANUAL)
|
if(NOT arg_MANUAL)
|
||||||
if(NOT DEFINED CMAKE_MACOSX_BUNDLE)
|
# Tests should not be bundles on macOS even if arg_GUI is true, because some tests make
|
||||||
# Tests should not be bundles on macOS even if arg_GUI is true, because some tests make
|
# assumptions about the location of helper processes, and those paths would be different
|
||||||
# assumptions about the location of helper processes, and those paths would be different
|
# if a test is built as a bundle.
|
||||||
# if a test is built as a bundle.
|
set_property(TARGET "${name}" PROPERTY MACOSX_BUNDLE FALSE)
|
||||||
set_property(TARGET "${name}" PROPERTY MACOSX_BUNDLE FALSE)
|
# The same goes for WIN32_EXECUTABLE, but because it will detach from the console window
|
||||||
endif()
|
# and not print anything.
|
||||||
if(NOT DEFINED CMAKE_WIN32_EXECUTABLE)
|
set_property(TARGET "${name}" PROPERTY WIN32_EXECUTABLE FALSE)
|
||||||
# The same goes for WIN32_EXECUTABLE, but because it will detach from the console window
|
|
||||||
# and not print anything.
|
|
||||||
set_property(TARGET "${name}" PROPERTY WIN32_EXECUTABLE FALSE)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Tests on iOS must be app bundles.
|
# Tests on iOS must be app bundles.
|
||||||
@ -753,40 +742,8 @@ function(qt_internal_add_test name)
|
|||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
if(arg_QMLTEST AND NOT arg_SOURCES)
|
if(arg_QMLTEST AND NOT arg_SOURCES)
|
||||||
set(qt_additional_libexec_paths "")
|
|
||||||
|
|
||||||
if(DEFINED QT_ADDITIONAL_PACKAGES_PREFIX_PATH)
|
|
||||||
foreach(additional_prefix IN LISTS QT_ADDITIONAL_PACKAGES_PREFIX_PATH)
|
|
||||||
set(additional_libexec "${additional_prefix}/${QT6_INSTALL_LIBEXECS}")
|
|
||||||
list(PREPEND qt_additional_libexec_paths "${additional_libexec}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# First look for the scanner in the target qt libexec dir. We prefer this one
|
|
||||||
# over the tool target which might be for the host platform.
|
|
||||||
find_program(qmltestrunner_executable
|
|
||||||
NAMES qmltestrunner qmltestrunner.exe
|
|
||||||
PATHS "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_LIBEXECS}"
|
|
||||||
${qt_additional_libexec_paths}
|
|
||||||
NO_DEFAULT_PATH
|
|
||||||
)
|
|
||||||
|
|
||||||
# If we don't find it in the paths, fallback to using target names.
|
|
||||||
if(NOT qmltestrunner_executable
|
|
||||||
AND TARGET "${QT_CMAKE_EXPORT_NAMESPACE}::qmltestrunner")
|
|
||||||
set(qmltestrunner_executable ${QT_CMAKE_EXPORT_NAMESPACE}::qmltestrunner)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT qmltestrunner_executable AND TARGET qmltestrunner)
|
|
||||||
set(qmltestrunner_executable qmltestrunner)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT qmltestrunner_executable)
|
|
||||||
message(FATAL_ERROR "qmltestrunner not found.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(test_working_dir "${CMAKE_CURRENT_SOURCE_DIR}")
|
set(test_working_dir "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
set(test_executable "${qmltestrunner_executable}")
|
set(test_executable ${QT_CMAKE_EXPORT_NAMESPACE}::qmltestrunner)
|
||||||
else()
|
else()
|
||||||
if (arg_WORKING_DIRECTORY)
|
if (arg_WORKING_DIRECTORY)
|
||||||
set(test_working_dir "${arg_WORKING_DIRECTORY}")
|
set(test_working_dir "${arg_WORKING_DIRECTORY}")
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
# Copyright (C) 2025 The Qt Company Ltd.
|
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
|
|
||||||
# This file sets the transitive properties supported by Qt Libraries.
|
|
||||||
if(NOT QT_NO_CREATE_TARGETS AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.30)
|
|
||||||
foreach(_qt_@target@_transitive_property_type COMPILE LINK)
|
|
||||||
string(TOLOWER "${_qt_@target@_transitive_property_type}"
|
|
||||||
_qt_@target@_transitive_property_type_lower)
|
|
||||||
|
|
||||||
get_target_property(_qt_@target@_transitive_properties @QT_CMAKE_EXPORT_NAMESPACE@::@target@
|
|
||||||
_qt_transitive_${_qt_@target@_transitive_property_type_lower}_properties)
|
|
||||||
if(NOT _qt_@target@_transitive_properties)
|
|
||||||
continue()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(_qt_@target@_transitive_property IN LISTS _qt_@target@_transitive_properties)
|
|
||||||
string(TOLOWER "_qt_internal_${_qt_@target@_transitive_property}"
|
|
||||||
_qt_@target@_transitive_property_internal)
|
|
||||||
get_target_property(_qt_@target@_transitive_property_value
|
|
||||||
@QT_CMAKE_EXPORT_NAMESPACE@::@target@ ${_qt_@target@_transitive_property_internal})
|
|
||||||
|
|
||||||
if(_qt_@target@_transitive_property_value)
|
|
||||||
_qt_internal_add_transitive_property(@QT_CMAKE_EXPORT_NAMESPACE@::@target@
|
|
||||||
${_qt_@target@_transitive_property_type} ${_qt_@target@_transitive_property})
|
|
||||||
|
|
||||||
set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::@target@ PROPERTY
|
|
||||||
INTERFACE_${_qt_@target@_transitive_property}
|
|
||||||
"${_qt_@target@_transitive_property_value}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
unset(_qt_@target@_transitive_property_value)
|
|
||||||
unset(_qt_@target@_transitive_property_internal)
|
|
||||||
unset(_qt_@target@_transitive_property)
|
|
||||||
unset(_qt_@target@_transitive_properties)
|
|
||||||
unset(_qt_@target@_transitive_property_type_lower)
|
|
||||||
unset(_qt_@target@_transitive_property_type)
|
|
||||||
endif()
|
|
@ -22,7 +22,6 @@
|
|||||||
/* outside library -> inline decl + defi */
|
/* outside library -> inline decl + defi */
|
||||||
/* static builds treat everything as part of the library, so they never inline */
|
/* static builds treat everything as part of the library, so they never inline */
|
||||||
# define QT_@module_define_infix@_INLINE_SINCE(major, minor) inline
|
# define QT_@module_define_infix@_INLINE_SINCE(major, minor) inline
|
||||||
# define QT_@module_define_infix@_CONSTEXPR_INLINE_SINCE(major, minor) constexpr
|
|
||||||
# define QT_@module_define_infix@_INLINE_IMPL_SINCE(major, minor) 1
|
# define QT_@module_define_infix@_INLINE_IMPL_SINCE(major, minor) 1
|
||||||
#elif defined(QT_@module_define_infix@_BUILD_REMOVED_API)
|
#elif defined(QT_@module_define_infix@_BUILD_REMOVED_API)
|
||||||
/* inside library, inside removed_api.cpp:
|
/* inside library, inside removed_api.cpp:
|
||||||
@ -31,8 +30,6 @@
|
|||||||
* definition is always available */
|
* definition is always available */
|
||||||
# define QT_@module_define_infix@_INLINE_SINCE(major, minor) \
|
# define QT_@module_define_infix@_INLINE_SINCE(major, minor) \
|
||||||
QT_IF_DEPRECATED_SINCE(major, minor, inline, /* not inline */)
|
QT_IF_DEPRECATED_SINCE(major, minor, inline, /* not inline */)
|
||||||
# define QT_@module_define_infix@_CONSTEXPR_INLINE_SINCE(major, minor) \
|
|
||||||
QT_IF_DEPRECATED_SINCE(major, minor, constexpr, /* not inline */)
|
|
||||||
# define QT_@module_define_infix@_INLINE_IMPL_SINCE(major, minor) 1
|
# define QT_@module_define_infix@_INLINE_IMPL_SINCE(major, minor) 1
|
||||||
#else
|
#else
|
||||||
/* inside library, outside removed_api.cpp:
|
/* inside library, outside removed_api.cpp:
|
||||||
@ -40,8 +37,6 @@
|
|||||||
* remove deprecated API -> inline decl, defi */
|
* remove deprecated API -> inline decl, defi */
|
||||||
# define QT_@module_define_infix@_INLINE_SINCE(major, minor) \
|
# define QT_@module_define_infix@_INLINE_SINCE(major, minor) \
|
||||||
QT_IF_DEPRECATED_SINCE(major, minor, inline, /* not inline */)
|
QT_IF_DEPRECATED_SINCE(major, minor, inline, /* not inline */)
|
||||||
# define QT_@module_define_infix@_CONSTEXPR_INLINE_SINCE(major, minor) \
|
|
||||||
QT_IF_DEPRECATED_SINCE(major, minor, constexpr, /* not inline */)
|
|
||||||
# define QT_@module_define_infix@_INLINE_IMPL_SINCE(major, minor) \
|
# define QT_@module_define_infix@_INLINE_IMPL_SINCE(major, minor) \
|
||||||
QT_IF_DEPRECATED_SINCE(major, minor, 1, 0)
|
QT_IF_DEPRECATED_SINCE(major, minor, 1, 0)
|
||||||
#endif
|
#endif
|
||||||
|
@ -16,30 +16,4 @@ instructions:
|
|||||||
- type: ChangeDirectory
|
- type: ChangeDirectory
|
||||||
directory: "{{.SourceDir}}_standalone_tests"
|
directory: "{{.SourceDir}}_standalone_tests"
|
||||||
|
|
||||||
# For configurations with granular test significance,
|
|
||||||
# make the tests significant by default, unless a module
|
|
||||||
# explicitly overrides it.
|
|
||||||
- type: Group
|
|
||||||
enable_if:
|
|
||||||
condition: and
|
|
||||||
conditions:
|
|
||||||
- condition: property
|
|
||||||
property: features
|
|
||||||
not_contains_value: "InsignificantTests"
|
|
||||||
- condition: runtime
|
|
||||||
env_var: COIN_CTEST_IGNORE_EXIT_CODE
|
|
||||||
equals_value: "1"
|
|
||||||
- condition: or
|
|
||||||
conditions:
|
|
||||||
- condition: property
|
|
||||||
property: id
|
|
||||||
contains_value: "macos-15"
|
|
||||||
- condition: runtime
|
|
||||||
env_var: COIN_CTEST_FORCE_IGNORE_EXIT_CODE
|
|
||||||
equals_value: null
|
|
||||||
instructions:
|
|
||||||
- type: EnvironmentVariable
|
|
||||||
variableName: COIN_CTEST_IGNORE_EXIT_CODE
|
|
||||||
variableValue: "0"
|
|
||||||
|
|
||||||
- !include "{{qt/qtbase}}/cmake_run_ctest.yaml"
|
- !include "{{qt/qtbase}}/cmake_run_ctest.yaml"
|
||||||
|
@ -52,9 +52,6 @@ instructions:
|
|||||||
- condition: runtime
|
- condition: runtime
|
||||||
env_var: TESTED_MODULE_COIN
|
env_var: TESTED_MODULE_COIN
|
||||||
not_equals_value: "qtwebengine"
|
not_equals_value: "qtwebengine"
|
||||||
- condition: runtime
|
|
||||||
env_var: TESTED_MODULE_COIN
|
|
||||||
not_equals_value: "qtactiveqt"
|
|
||||||
- type: Group
|
- type: Group
|
||||||
instructions:
|
instructions:
|
||||||
- !include "{{qt/qtbase}}/cmake_cross_compilation_module_build_instructions.yaml"
|
- !include "{{qt/qtbase}}/cmake_cross_compilation_module_build_instructions.yaml"
|
||||||
|
8
config.tests/precompile_header/CMakeLists.txt
Normal file
8
config.tests/precompile_header/CMakeLists.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (C) 2022 The Qt Company Ltd.
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
project(precompile_header LANGUAGES CXX)
|
||||||
|
|
||||||
|
add_executable(precompile_header main.cpp)
|
||||||
|
target_precompile_headers(precompile_header PRIVATE header.h)
|
8
config.tests/precompile_header/header.h
Normal file
8
config.tests/precompile_header/header.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (C) 2021 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
#ifndef HEADER_H
|
||||||
|
#define HEADER_H
|
||||||
|
|
||||||
|
// Nothing to see here. We just want the HEADER_H define.
|
||||||
|
|
||||||
|
#endif
|
7
config.tests/precompile_header/main.cpp
Normal file
7
config.tests/precompile_header/main.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// Copyright (C) 2021 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
#ifndef HEADER_H
|
||||||
|
# error no go
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int main() {}
|
@ -272,7 +272,6 @@ Core options:
|
|||||||
-glib ................ Enable Glib support [no; auto on Unix]
|
-glib ................ Enable Glib support [no; auto on Unix]
|
||||||
-inotify ............. Enable inotify support
|
-inotify ............. Enable inotify support
|
||||||
-icu ................. Enable ICU support [auto]
|
-icu ................. Enable ICU support [auto]
|
||||||
-jemalloc ............ Enable jemalloc support and cooperation [no]
|
|
||||||
-pcre ................ Select used libpcre2 [system/qt/no]
|
-pcre ................ Select used libpcre2 [system/qt/no]
|
||||||
-zlib ................ Select used zlib [system/qt]
|
-zlib ................ Select used zlib [system/qt]
|
||||||
|
|
||||||
|
@ -288,6 +288,12 @@ int main(void)
|
|||||||
CXX_STANDARD 23
|
CXX_STANDARD 23
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# precompile_header
|
||||||
|
qt_config_compile_test(precompile_header
|
||||||
|
LABEL "precompiled header support"
|
||||||
|
PROJECT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/config.tests/precompile_header"
|
||||||
|
)
|
||||||
|
|
||||||
qt_config_compiler_supports_flag_test(optimize_debug
|
qt_config_compiler_supports_flag_test(optimize_debug
|
||||||
LABEL "-Og support"
|
LABEL "-Og support"
|
||||||
FLAG "-Og"
|
FLAG "-Og"
|
||||||
@ -726,6 +732,12 @@ qt_feature("c++2b" PUBLIC
|
|||||||
CONDITION QT_FEATURE_cxx20 AND (CMAKE_VERSION VERSION_GREATER_EQUAL "3.20") AND TEST_cxx2b
|
CONDITION QT_FEATURE_cxx20 AND (CMAKE_VERSION VERSION_GREATER_EQUAL "3.20") AND TEST_cxx2b
|
||||||
)
|
)
|
||||||
qt_feature_config("c++2b" QMAKE_PUBLIC_QT_CONFIG)
|
qt_feature_config("c++2b" QMAKE_PUBLIC_QT_CONFIG)
|
||||||
|
qt_feature("precompile_header"
|
||||||
|
LABEL "Using precompiled headers"
|
||||||
|
CONDITION BUILD_WITH_PCH AND TEST_precompile_header
|
||||||
|
AUTODETECT NOT WASM
|
||||||
|
)
|
||||||
|
qt_feature_config("precompile_header" QMAKE_PRIVATE_CONFIG)
|
||||||
set(__qt_ltcg_detected FALSE)
|
set(__qt_ltcg_detected FALSE)
|
||||||
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
if(CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
||||||
set(__qt_ltcg_detected TRUE)
|
set(__qt_ltcg_detected TRUE)
|
||||||
@ -1088,13 +1100,12 @@ qt_feature("network" PRIVATE
|
|||||||
)
|
)
|
||||||
qt_feature("printsupport" PRIVATE
|
qt_feature("printsupport" PRIVATE
|
||||||
LABEL "Qt PrintSupport"
|
LABEL "Qt PrintSupport"
|
||||||
CONDITION QT_FEATURE_widgets AND NOT WASM
|
CONDITION QT_FEATURE_widgets
|
||||||
SECTION "Module"
|
SECTION "Module"
|
||||||
PURPOSE "Provides the Qt PrintSupport module."
|
PURPOSE "Provides the Qt PrintSupport module."
|
||||||
)
|
)
|
||||||
qt_feature("sql" PRIVATE
|
qt_feature("sql" PRIVATE
|
||||||
LABEL "Qt Sql"
|
LABEL "Qt Sql"
|
||||||
CONDITION NOT WASM
|
|
||||||
SECTION "Module"
|
SECTION "Module"
|
||||||
PURPOSE "Provides the Sql module."
|
PURPOSE "Provides the Sql module."
|
||||||
)
|
)
|
||||||
@ -1265,7 +1276,6 @@ qt_configure_add_summary_entry(
|
|||||||
qt_configure_add_summary_entry(
|
qt_configure_add_summary_entry(
|
||||||
ARGS "optimize_full"
|
ARGS "optimize_full"
|
||||||
)
|
)
|
||||||
qt_configure_add_summary_entry(ARGS "force_asserts" CONDITION QT_FEATURE_force_asserts)
|
|
||||||
qt_configure_add_summary_entry(ARGS "shared")
|
qt_configure_add_summary_entry(ARGS "shared")
|
||||||
qt_configure_add_summary_entry(
|
qt_configure_add_summary_entry(
|
||||||
ARGS "ccache"
|
ARGS "ccache"
|
||||||
@ -1299,6 +1309,7 @@ qt_configure_add_summary_entry(
|
|||||||
CONDITION GCC AND NOT CLANG AND ( QT_FEATURE_debug OR QT_FEATURE_force_debug_info OR QT_FEATURE_debug_and_release )
|
CONDITION GCC AND NOT CLANG AND ( QT_FEATURE_debug OR QT_FEATURE_force_debug_info OR QT_FEATURE_debug_and_release )
|
||||||
)
|
)
|
||||||
qt_configure_add_summary_entry(ARGS "relocatable")
|
qt_configure_add_summary_entry(ARGS "relocatable")
|
||||||
|
qt_configure_add_summary_entry(ARGS "precompile_header")
|
||||||
qt_configure_add_summary_entry(ARGS "ltcg")
|
qt_configure_add_summary_entry(ARGS "ltcg")
|
||||||
qt_configure_add_summary_entry(ARGS "intelcet")
|
qt_configure_add_summary_entry(ARGS "intelcet")
|
||||||
qt_configure_add_summary_entry(ARGS "glibc_fortify_source")
|
qt_configure_add_summary_entry(ARGS "glibc_fortify_source")
|
||||||
@ -1471,8 +1482,8 @@ qt_configure_add_report_entry(
|
|||||||
)
|
)
|
||||||
qt_configure_add_report_entry(
|
qt_configure_add_report_entry(
|
||||||
TYPE WARNING
|
TYPE WARNING
|
||||||
MESSAGE "Using Emscripten version ${EMCC_VERSION} with this Qt
|
MESSAGE "Using Emscripten version ${QT_EMCC_RECOMMENDED_VERSION} with this Qt
|
||||||
may have issues. The recommended version is ${QT_EMCC_RECOMMENDED_VERSION}."
|
may have issues. You have ${EMCC_VERSION}."
|
||||||
CONDITION WASM AND ${EMCC_VERSION} VERSION_GREATER ${QT_EMCC_RECOMMENDED_VERSION}
|
CONDITION WASM AND ${EMCC_VERSION} VERSION_GREATER ${QT_EMCC_RECOMMENDED_VERSION}
|
||||||
)
|
)
|
||||||
qt_configure_add_report_entry(
|
qt_configure_add_report_entry(
|
||||||
@ -1513,11 +1524,3 @@ qt_feature_definition("test_gui" "QT_GUI_TEST" VALUE "1")
|
|||||||
qt_feature("test_gui" PUBLIC
|
qt_feature("test_gui" PUBLIC
|
||||||
LABEL "Build QtGuiTest namespace"
|
LABEL "Build QtGuiTest namespace"
|
||||||
)
|
)
|
||||||
|
|
||||||
qt_configure_add_report_entry(
|
|
||||||
TYPE WARNING
|
|
||||||
MESSAGE "Starting with Qt 6.10, a -no-prefix or -developer-build
|
|
||||||
Qt build might not find all necessary Qt packages when using CMake < 3.26.
|
|
||||||
Please use a newer CMake version."
|
|
||||||
CONDITION QT_FEATURE_no_prefix AND CMAKE_VERSION VERSION_LESS "3.26"
|
|
||||||
)
|
|
||||||
|
@ -19,7 +19,7 @@ foreach(dir global config)
|
|||||||
# dependencies should be set up in that case (coarsness, use install vs build dirs,
|
# dependencies should be set up in that case (coarsness, use install vs build dirs,
|
||||||
# etc).
|
# etc).
|
||||||
file(GLOB_RECURSE files LIST_DIRECTORIES FALSE "${dir}/*")
|
file(GLOB_RECURSE files LIST_DIRECTORIES FALSE "${dir}/*")
|
||||||
_qt_internal_append_cmake_configure_depends(${files})
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${files})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qt3d.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qt3d.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qt3d.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtactiveqt.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtactiveqt.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtactiveqt.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtbase.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtbase.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtbase.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtconnectivity.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtconnectivity.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtconnectivity.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtdatavis3d.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtdatavis3d.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtdatavis3d.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtdeclarative.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtdeclarative.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtdeclarative.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtlocation.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtlocation.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtlocation.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtmultimedia.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtmultimedia.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtmultimedia.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtnetworkauth.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtnetworkauth.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtnetworkauth.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtpositioning.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtpositioning.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtpositioning.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtremoteobjects.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtremoteobjects.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtremoteobjects.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtscxml.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtscxml.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtscxml.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtsensors.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtsensors.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtsensors.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtserialbus.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtserialbus.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtserialbus.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtserialport.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtserialport.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtserialport.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtspeech.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtspeech.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtspeech.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtsvg.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtsvg.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtsvg.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qttools.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qttools.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qttools.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtvirtualkeyboard.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtvirtualkeyboard.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtvirtualkeyboard.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtwayland.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtwayland.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtwayland.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtwebchannel.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtwebchannel.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtwebchannel.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtwebengine.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtwebengine.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtwebengine.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtwebsockets.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtwebsockets.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtwebsockets.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -1,4 +1 @@
|
|||||||
url.examples = "https://code.qt.io/cgit/qt/qtwebview.git/tree/examples/\1?h=$QT_VER"
|
url.examples = "https://code.qt.io/cgit/qt/qtwebview.git/tree/examples/\1?h=$QT_VER"
|
||||||
|
|
||||||
# Automatic linking to declarations of C++ APIs
|
|
||||||
url.sources = "https://code.qt.io/cgit/qt/qtwebview.git/tree/\1?h=$QT_VER#n\2"
|
|
||||||
|
@ -13,10 +13,9 @@
|
|||||||
|
|
||||||
# The {checked} argument ensures that the tab is selected
|
# The {checked} argument ensures that the tab is selected
|
||||||
# by default when the HTML page is loaded. For the other
|
# by default when the HTML page is loaded. For the other
|
||||||
# tabs that are not selected, pass an empty argument {}.
|
# tabs that are not selected, pass and empty argument {}.
|
||||||
#
|
#
|
||||||
# Note that these macros work with the online template and
|
# Note that these macros work with the online template only.
|
||||||
# DocBook only.
|
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
# \if defined(onlinedocs)
|
# \if defined(onlinedocs)
|
||||||
@ -38,13 +37,9 @@
|
|||||||
# \endtabcontent
|
# \endtabcontent
|
||||||
# \endif
|
# \endif
|
||||||
|
|
||||||
macro.tab.HTML = "<input translate=\"no\" type=\"radio\" name=\"tabs_\1\" id=\"\2\" \4/>\n<label for=\"\2\">\3</label>\n<style translate=\"no\">#\2:checked ~ .\2{display: block;}</style>\n"
|
macro.tab.HTML = "<input type=\"radio\" name=\"tabs_\1\" id=\"\2\" \4/><label for=\"\2\">\3</label>\n<style>#\2:checked ~ .\2{display: block;}</style>\n"
|
||||||
macro.tabcontent.HTML = "<div class=\"tabcontent \1\">\n"
|
macro.tabcontent = "\\div {class=\"tabcontent \1\"}"
|
||||||
macro.endtabcontent.HTML = "</div>\n"
|
macro.endtabcontent = "\\enddiv"
|
||||||
|
|
||||||
macro.tab.DocBook = "<db:bridgehead xml:id="\2" renderas="sect5" role="tabbed \4 tab-group_\1" xlink:href="#\2_contents">\3</db:bridgehead>"
|
|
||||||
macro.tabcontent.DocBook = "<db:sidebar xml:id="\1_contents">"
|
|
||||||
macro.endtabcontent.DocBook = "</db:sidebar>"
|
|
||||||
|
|
||||||
HTML.extraimages += template/style/htmltabs.css
|
HTML.extraimages += template/style/htmltabs.css
|
||||||
|
|
||||||
|
@ -86,8 +86,8 @@ macro.Q4A = "Qt for Android"
|
|||||||
# The following macros are used for various Android docs. The purpose is to keep
|
# The following macros are used for various Android docs. The purpose is to keep
|
||||||
# it as simple as updating these instead of updating multiple lines in scattered locations.
|
# it as simple as updating these instead of updating multiple lines in scattered locations.
|
||||||
macro.AndroidAbis = "\\c{arm64-v8a}, \\c{x86_64}, \\c{x86}, and \\c{armeabi-v7a}"
|
macro.AndroidAbis = "\\c{arm64-v8a}, \\c{x86_64}, \\c{x86}, and \\c{armeabi-v7a}"
|
||||||
macro.NdkVer = "r27c"
|
macro.NdkVer = "r26b and r27c"
|
||||||
macro.NdkFullVer = "27.2.12479018"
|
macro.NdkFullVer = "26.1.10909125 and 27.2.12479018"
|
||||||
macro.NdkCompilerVer = "Clang 17.0.2"
|
macro.NdkCompilerVer = "Clang 17.0.2"
|
||||||
macro.JdkVer = "17"
|
macro.JdkVer = "17"
|
||||||
macro.AndroidMinApiVer = "28"
|
macro.AndroidMinApiVer = "28"
|
||||||
|
@ -39,6 +39,10 @@ manifestmeta.android.names = "Qt3D/Qt 3D: Basic Shapes C++ Example" \
|
|||||||
"QtBluetooth/Bluetooth Low Energy Scanner Example" \
|
"QtBluetooth/Bluetooth Low Energy Scanner Example" \
|
||||||
"QtBluetooth/Bluetooth Scanner Example" \
|
"QtBluetooth/Bluetooth Scanner Example" \
|
||||||
"QtBluetooth/QML Bluetooth Scanner Example" \
|
"QtBluetooth/QML Bluetooth Scanner Example" \
|
||||||
|
"QtCharts/*" \
|
||||||
|
"QtDataVisualization/Audiolevels Example" \
|
||||||
|
"QtDataVisualization/Qt Quick 2 Scatter Example" \
|
||||||
|
"QtDataVisualization/Qt Quick 2 Surface Multiseries Example" \
|
||||||
"QtGui/OpenGL Window Example" \
|
"QtGui/OpenGL Window Example" \
|
||||||
"QtGui/Raster Window Example" \
|
"QtGui/Raster Window Example" \
|
||||||
"QtLinguist/Arrow Pad Example" \
|
"QtLinguist/Arrow Pad Example" \
|
||||||
|
@ -29,9 +29,6 @@ include(macros-online.qdocconf)
|
|||||||
#extra configuration data DITA information
|
#extra configuration data DITA information
|
||||||
include(config.qdocconf)
|
include(config.qdocconf)
|
||||||
|
|
||||||
# Enable automatic linking to sources
|
|
||||||
url.sources.enabled = true
|
|
||||||
|
|
||||||
# single-directory output mode
|
# single-directory output mode
|
||||||
HTML.nosubdirs = "true"
|
HTML.nosubdirs = "true"
|
||||||
HTML.outputsubdir = "../html"
|
HTML.outputsubdir = "../html"
|
||||||
|
@ -20,11 +20,7 @@ WordCount singleThreadedWordCount(const QStringList &files)
|
|||||||
WordCount wordCount;
|
WordCount wordCount;
|
||||||
for (const QString &file : files) {
|
for (const QString &file : files) {
|
||||||
QFile f(file);
|
QFile f(file);
|
||||||
if (!f.open(QIODevice::ReadOnly)) {
|
f.open(QIODevice::ReadOnly);
|
||||||
qWarning().noquote() << "Failed to open file:" << QDir::toNativeSeparators(file)
|
|
||||||
<< ":" << f.errorString();
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
QTextStream textStream(&f);
|
QTextStream textStream(&f);
|
||||||
while (!textStream.atEnd()) {
|
while (!textStream.atEnd()) {
|
||||||
const auto words = textStream.readLine().split(' ', Qt::SkipEmptyParts);
|
const auto words = textStream.readLine().split(' ', Qt::SkipEmptyParts);
|
||||||
@ -41,11 +37,7 @@ WordCount singleThreadedWordCount(const QStringList &files)
|
|||||||
WordCount countWords(const QString &file)
|
WordCount countWords(const QString &file)
|
||||||
{
|
{
|
||||||
QFile f(file);
|
QFile f(file);
|
||||||
if (!f.open(QIODevice::ReadOnly)) {
|
f.open(QIODevice::ReadOnly);
|
||||||
qWarning().noquote() << "Failed to open file:" << QDir::toNativeSeparators(file)
|
|
||||||
<< ":" << f.errorString();
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
QTextStream textStream(&f);
|
QTextStream textStream(&f);
|
||||||
WordCount wordCount;
|
WordCount wordCount;
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@
|
|||||||
The QComboBox::itemData() function returns the data as a QVariant,
|
The QComboBox::itemData() function returns the data as a QVariant,
|
||||||
so we need to cast the data to \c RenderArea::Shape. If there is
|
so we need to cast the data to \c RenderArea::Shape. If there is
|
||||||
no data for the given role, the function returns
|
no data for the given role, the function returns
|
||||||
QMetaType::UnknownType.
|
QVariant::Invalid.
|
||||||
|
|
||||||
In the end we call the \c RenderArea::setShape() slot to update
|
In the end we call the \c RenderArea::setShape() slot to update
|
||||||
the \c RenderArea widget.
|
the \c RenderArea widget.
|
||||||
|
@ -149,9 +149,7 @@ WidgetGallery::WidgetGallery(QWidget *parent)
|
|||||||
QGuiApplication::styleHints()->setColorScheme(static_cast<Qt::ColorScheme>(index));
|
QGuiApplication::styleHints()->setColorScheme(static_cast<Qt::ColorScheme>(index));
|
||||||
});
|
});
|
||||||
|
|
||||||
const QKeySequence helpKeySequence(QKeySequence::HelpContents);
|
auto helpLabel = createWidget1<QLabel>(tr("Press F1 over a widget to see Documentation"), "helpLabel");
|
||||||
auto helpLabel = createWidget1<QLabel>(tr("Press <kbd>%1</kbd> over a widget to see Documentation")
|
|
||||||
.arg(helpKeySequence.toString(QKeySequence::NativeText)), "helpLabel");
|
|
||||||
|
|
||||||
auto disableWidgetsCheckBox = createWidget1<QCheckBox>(tr("&Disable widgets"), "disableWidgetsCheckBox");
|
auto disableWidgetsCheckBox = createWidget1<QCheckBox>(tr("&Disable widgets"), "disableWidgetsCheckBox");
|
||||||
|
|
||||||
@ -199,7 +197,7 @@ WidgetGallery::WidgetGallery(QWidget *parent)
|
|||||||
|
|
||||||
setWindowTitle(tr("Widget Gallery Qt %1").arg(QT_VERSION_STR));
|
setWindowTitle(tr("Widget Gallery Qt %1").arg(QT_VERSION_STR));
|
||||||
|
|
||||||
new QShortcut(helpKeySequence, this, this, &WidgetGallery::helpOnCurrentWidget);
|
new QShortcut(QKeySequence::HelpContents, this, this, &WidgetGallery::helpOnCurrentWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WidgetGallery::setVisible(bool visible)
|
void WidgetGallery::setVisible(bool visible)
|
||||||
|
@ -17,7 +17,7 @@ void MySortFilterProxyModel::setFilterMinimumDate(QDate date)
|
|||||||
{
|
{
|
||||||
beginFilterChange();
|
beginFilterChange();
|
||||||
minDate = date;
|
minDate = date;
|
||||||
endFilterChange(QSortFilterProxyModel::Direction::Rows);
|
invalidateRowsFilter();
|
||||||
}
|
}
|
||||||
//! [1]
|
//! [1]
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ void MySortFilterProxyModel::setFilterMaximumDate(QDate date)
|
|||||||
{
|
{
|
||||||
beginFilterChange();
|
beginFilterChange();
|
||||||
maxDate = date;
|
maxDate = date;
|
||||||
endFilterChange(QSortFilterProxyModel::Direction::Rows);
|
invalidateRowsFilter();
|
||||||
}
|
}
|
||||||
//! [2]
|
//! [2]
|
||||||
|
|
||||||
|
@ -17,10 +17,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
const QStringList headers({tr("Title"), tr("Description")});
|
const QStringList headers({tr("Title"), tr("Description")});
|
||||||
|
|
||||||
QFile file(":/default.txt"_L1);
|
QFile file(":/default.txt"_L1);
|
||||||
const bool res = file.open(QIODevice::ReadOnly | QIODevice::Text);
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
||||||
Q_ASSERT_X(res, Q_FUNC_INFO, "Failed to open ':/default.txt'");
|
|
||||||
if (!res)
|
|
||||||
return;
|
|
||||||
auto *model = new TreeModel(headers, QString::fromUtf8(file.readAll()), this);
|
auto *model = new TreeModel(headers, QString::fromUtf8(file.readAll()), this);
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
|
@ -556,20 +556,10 @@
|
|||||||
"file type": "build system",
|
"file type": "build system",
|
||||||
"spdx": ["BSD-3-Clause"]
|
"spdx": ["BSD-3-Clause"]
|
||||||
},
|
},
|
||||||
"src/corelib/global/qexpected_p.h": {
|
"src/corelib/Qt6CoreConfigureFileTemplate.in": {
|
||||||
"comment": "See REUSE.toml file",
|
"comment": "See REUSE.toml file",
|
||||||
"file type": "3rd party",
|
"file type": "build system",
|
||||||
"spdx": ["CC0-1.0"]
|
"spdx": ["BSD-3-Clause"]
|
||||||
},
|
|
||||||
"src/corelib/global/patches/tlexpected/": {
|
|
||||||
"comment": "See REUSE.toml file",
|
|
||||||
"file type": "3rd party",
|
|
||||||
"spdx": ["CC0-1.0"]
|
|
||||||
},
|
|
||||||
"src/corelib/Qt6CoreConfigureFileTemplate.in" : {
|
|
||||||
"comment" : "See REUSE.toml file",
|
|
||||||
"file type" : "build system",
|
|
||||||
"spdx" : ["BSD-3-Clause"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,10 @@
|
|||||||
#ifndef QPLATFORMDEFS_H
|
#ifndef QPLATFORMDEFS_H
|
||||||
#define QPLATFORMDEFS_H
|
#define QPLATFORMDEFS_H
|
||||||
|
|
||||||
|
// Get Qt defines/settings
|
||||||
|
|
||||||
|
#include "qglobal.h"
|
||||||
|
|
||||||
// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
|
// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
|
||||||
|
|
||||||
// 1) need to reset default environment if _BSD_SOURCE is defined
|
// 1) need to reset default environment if _BSD_SOURCE is defined
|
||||||
@ -13,11 +17,11 @@
|
|||||||
# define _GNU_SOURCE
|
# define _GNU_SOURCE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <features.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
// Get Qt defines/settings
|
|
||||||
|
|
||||||
#include "qglobal.h"
|
// We are hot - unistd.h should have turned on the specific APIs we requested
|
||||||
|
|
||||||
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
@ -26,16 +30,17 @@
|
|||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/ipc.h>
|
// Cygwin does not provide <sys/ipc.h> and <sys/shm.h> because it
|
||||||
#include <sys/shm.h>
|
// doesn't support SysV IPC or shared memory. See for example:
|
||||||
|
// http://afni.nimh.nih.gov/afni/afniboard/messages/1725.html
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
//#include <qt_windows.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
#define QT_NO_USE_FSEEKO
|
#define QT_NO_USE_FSEEKO
|
||||||
|
@ -50,11 +50,7 @@ exists($$QMAKE_QT_CONFIG) {
|
|||||||
}
|
}
|
||||||
EMCC_LFLAGS += -s INITIAL_MEMORY=$$INITIAL_MEMORY
|
EMCC_LFLAGS += -s INITIAL_MEMORY=$$INITIAL_MEMORY
|
||||||
isEmpty(QT_WASM_MAXIMUM_MEMORY) {
|
isEmpty(QT_WASM_MAXIMUM_MEMORY) {
|
||||||
qtConfig(wasm-jspi) {
|
MAXIMUM_MEMORY = 4GB # 32-bit max
|
||||||
MAXIMUM_MEMORY = 2GB # Avoid triggering Emscripten bug #23834
|
|
||||||
} else {
|
|
||||||
MAXIMUM_MEMORY = 4GB # 32-bit max
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
MAXIMUM_MEMORY = $$QT_WASM_MAXIMUM_MEMORY
|
MAXIMUM_MEMORY = $$QT_WASM_MAXIMUM_MEMORY
|
||||||
}
|
}
|
||||||
@ -81,14 +77,6 @@ exists($$QMAKE_QT_CONFIG) {
|
|||||||
EMCC_LFLAGS += $$EMCC_MODULE_FLAGS
|
EMCC_LFLAGS += $$EMCC_MODULE_FLAGS
|
||||||
}
|
}
|
||||||
|
|
||||||
qtConfig(wasm-jspi) {
|
|
||||||
EMCC_LFLAGS += -sJSPI
|
|
||||||
}
|
|
||||||
|
|
||||||
qtConfig(wasm-exceptions) {
|
|
||||||
EMCC_LFLAGS += -fwasm-exceptions
|
|
||||||
}
|
|
||||||
|
|
||||||
QMAKE_LFLAGS += $$EMCC_LFLAGS
|
QMAKE_LFLAGS += $$EMCC_LFLAGS
|
||||||
QMAKE_LFLAGS_DEBUG += $$EMCC_LFLAGS
|
QMAKE_LFLAGS_DEBUG += $$EMCC_LFLAGS
|
||||||
QMAKE_CFLAGS += $$EMCC_CFLAGS
|
QMAKE_CFLAGS += $$EMCC_CFLAGS
|
||||||
|
103
qt_cmdline.cmake
103
qt_cmdline.cmake
@ -11,51 +11,41 @@ qt_commandline_subconfig(src/printsupport)
|
|||||||
qt_commandline_subconfig(src/plugins/sqldrivers)
|
qt_commandline_subconfig(src/plugins/sqldrivers)
|
||||||
qt_commandline_subconfig(src/testlib)
|
qt_commandline_subconfig(src/testlib)
|
||||||
qt_commandline_subconfig(src/tools)
|
qt_commandline_subconfig(src/tools)
|
||||||
qt_commandline_option(prefix TYPE path CMAKE_VARIABLE CMAKE_INSTALL_PREFIX)
|
qt_commandline_option(prefix TYPE string)
|
||||||
qt_commandline_option(extprefix TYPE path CMAKE_VARIABLE CMAKE_STAGING_PREFIX)
|
qt_commandline_option(extprefix TYPE string)
|
||||||
qt_commandline_option(archdatadir TYPE path CMAKE_VARIABLE CMAKE_ARCHDATADIR)
|
qt_commandline_option(archdatadir TYPE string)
|
||||||
qt_commandline_option(bindir TYPE path CMAKE_VARIABLE INSTALL_BINDIR)
|
qt_commandline_option(bindir TYPE string)
|
||||||
qt_commandline_option(datadir TYPE path CMAKE_VARIABLE INSTALL_DATADIR)
|
qt_commandline_option(datadir TYPE string)
|
||||||
qt_commandline_option(docdir TYPE path CMAKE_VARIABLE INSTALL_DOCDIR)
|
qt_commandline_option(docdir TYPE string)
|
||||||
qt_commandline_option(examplesdir TYPE path CMAKE_VARIABLE INSTALL_EXAMPLESDIR)
|
qt_commandline_option(examplesdir TYPE string)
|
||||||
qt_commandline_option(headerdir TYPE path CMAKE_VARIABLE INSTALL_INCLUDEDIR)
|
qt_commandline_option(headerdir TYPE string)
|
||||||
qt_commandline_option(hostdatadir TYPE string) # handled specially in QtProcessConfigureArgs.cmake
|
qt_commandline_option(hostdatadir TYPE string)
|
||||||
qt_commandline_option(libdir TYPE path CMAKE_VARIABLE INSTALL_LIBDIR)
|
qt_commandline_option(libdir TYPE string)
|
||||||
qt_commandline_option(libexecdir TYPE path CMAKE_VARIABLE INSTALL_LIBEXECDIR)
|
qt_commandline_option(libexecdir TYPE string)
|
||||||
qt_commandline_option(plugindir TYPE path CMAKE_VARIABLE INSTALL_PLUGINSDIR)
|
qt_commandline_option(plugindir TYPE string)
|
||||||
qt_commandline_option(qmldir TYPE path CMAKE_VARIABLE INSTALL_QMLDIR)
|
qt_commandline_option(qmldir TYPE string)
|
||||||
qt_commandline_option(sbomdir TYPE path CMAKE_VARIABLE INSTALL_SBOMDIR)
|
qt_commandline_option(sbomdir TYPE string)
|
||||||
qt_commandline_option(settingsdir TYPE path NAME sysconfdir CMAKE_VARIABLE INSTALL_SYSCONFDIR)
|
qt_commandline_option(settingsdir TYPE string NAME sysconfdir)
|
||||||
qt_commandline_option(sysconfdir TYPE path CMAKE_VARIABLE INSTALL_SYSCONFDIR)
|
qt_commandline_option(sysconfdir TYPE string)
|
||||||
qt_commandline_option(testsdir TYPE path CMAKE_VARIABLE INSTALL_TESTSDIR)
|
qt_commandline_option(testsdir TYPE string)
|
||||||
qt_commandline_option(translationdir TYPE path CMAKE_VARIABLE INSTALL_TRANSLATIONSDIR)
|
qt_commandline_option(translationdir TYPE string)
|
||||||
qt_commandline_option(android-arch TYPE string)
|
qt_commandline_option(android-arch TYPE string)
|
||||||
qt_commandline_option(android-abis TYPE string)
|
qt_commandline_option(android-abis TYPE string)
|
||||||
qt_commandline_option(android-ndk TYPE path CMAKE_VARIABLE ANDROID_NDK_ROOT)
|
qt_commandline_option(android-ndk TYPE string)
|
||||||
qt_commandline_option(android-ndk-platform TYPE string)
|
qt_commandline_option(android-ndk-platform TYPE string)
|
||||||
qt_commandline_option(android-sdk TYPE path CMAKE_VARIABLE ANDROID_SDK_ROOT)
|
qt_commandline_option(android-sdk TYPE string)
|
||||||
qt_commandline_option(android-javac-target
|
qt_commandline_option(android-javac-target TYPE string)
|
||||||
TYPE string
|
qt_commandline_option(android-javac-source TYPE string)
|
||||||
CMAKE_VARIABLE QT_ANDROID_JAVAC_TARGET
|
|
||||||
)
|
|
||||||
qt_commandline_option(android-javac-source
|
|
||||||
TYPE string
|
|
||||||
CMAKE_VARIABLE QT_ANDROID_JAVAC_SOURCE
|
|
||||||
)
|
|
||||||
qt_commandline_option(android-style-assets TYPE boolean)
|
qt_commandline_option(android-style-assets TYPE boolean)
|
||||||
qt_commandline_option(appstore-compliant TYPE boolean)
|
qt_commandline_option(appstore-compliant TYPE boolean)
|
||||||
qt_commandline_option(avx TYPE boolean)
|
qt_commandline_option(avx TYPE boolean)
|
||||||
qt_commandline_option(avx2 TYPE boolean)
|
qt_commandline_option(avx2 TYPE boolean)
|
||||||
qt_commandline_option(avx512 TYPE boolean NAME avx512f)
|
qt_commandline_option(avx512 TYPE boolean NAME avx512f)
|
||||||
qt_commandline_option(c++std TYPE cxxstd)
|
qt_commandline_option(c++std TYPE cxxstd)
|
||||||
qt_commandline_option(unity-build TYPE boolean NAME unity_build CMAKE_VARIABLE QT_UNITY_BUILD)
|
qt_commandline_option(unity-build TYPE boolean NAME unity_build)
|
||||||
qt_commandline_option(unity-build-batch-size
|
qt_commandline_option(unity-build-batch-size TYPE string NAME unity_build_batch_size)
|
||||||
TYPE string
|
qt_commandline_option(ccache TYPE boolean NAME ccache)
|
||||||
NAME unity_build_batch_size
|
qt_commandline_option(vcpkg TYPE boolean)
|
||||||
CMAKE_VARIABLE QT_UNITY_BUILD_BATCH_SIZE
|
|
||||||
)
|
|
||||||
qt_commandline_option(ccache TYPE boolean NAME ccache CMAKE_VARIABLE QT_USE_CCACHE)
|
|
||||||
qt_commandline_option(vcpkg TYPE boolean CMAKE_VARIABLE QT_USE_VCPKG)
|
|
||||||
qt_commandline_option(commercial TYPE void)
|
qt_commandline_option(commercial TYPE void)
|
||||||
qt_commandline_option(confirm-license TYPE void)
|
qt_commandline_option(confirm-license TYPE void)
|
||||||
qt_commandline_option(dbus TYPE optionalString VALUES no yes linked runtime)
|
qt_commandline_option(dbus TYPE optionalString VALUES no yes linked runtime)
|
||||||
@ -64,7 +54,7 @@ qt_commandline_option(dbus-runtime TYPE void NAME dbus VALUE runtime)
|
|||||||
qt_commandline_option(debug TYPE void)
|
qt_commandline_option(debug TYPE void)
|
||||||
qt_commandline_option(debug-and-release TYPE boolean NAME debug_and_release)
|
qt_commandline_option(debug-and-release TYPE boolean NAME debug_and_release)
|
||||||
qt_commandline_option(device TYPE string)
|
qt_commandline_option(device TYPE string)
|
||||||
qt_commandline_option(device-option TYPE addString CMAKE_VARIABLE QT_QMAKE_DEVICE_OPTIONS)
|
qt_commandline_option(device-option TYPE addString)
|
||||||
qt_commandline_option(f16c TYPE boolean)
|
qt_commandline_option(f16c TYPE boolean)
|
||||||
qt_commandline_option(force-asserts TYPE boolean NAME force_asserts)
|
qt_commandline_option(force-asserts TYPE boolean NAME force_asserts)
|
||||||
qt_commandline_option(force-debug-info TYPE boolean NAME force_debug_info)
|
qt_commandline_option(force-debug-info TYPE boolean NAME force_debug_info)
|
||||||
@ -94,10 +84,7 @@ qt_commandline_option(libcpp-hardening TYPE boolean NAME libcpp_hardening)
|
|||||||
qt_commandline_option(relro-now-linker TYPE boolean NAME relro_now_linker)
|
qt_commandline_option(relro-now-linker TYPE boolean NAME relro_now_linker)
|
||||||
qt_commandline_option(make TYPE addString VALUES examples libs tests tools
|
qt_commandline_option(make TYPE addString VALUES examples libs tests tools
|
||||||
benchmarks manual-tests minimal-static-tests)
|
benchmarks manual-tests minimal-static-tests)
|
||||||
qt_commandline_option(install-examples-sources
|
qt_commandline_option(install-examples-sources TYPE boolean)
|
||||||
TYPE boolean
|
|
||||||
CMAKE_VARIABLE QT_INSTALL_EXAMPLES_SOURCES
|
|
||||||
)
|
|
||||||
qt_commandline_option(mips_dsp TYPE boolean)
|
qt_commandline_option(mips_dsp TYPE boolean)
|
||||||
qt_commandline_option(mips_dspr2 TYPE boolean)
|
qt_commandline_option(mips_dspr2 TYPE boolean)
|
||||||
qt_commandline_option(nomake TYPE addString VALUES examples tests tools benchmarks
|
qt_commandline_option(nomake TYPE addString VALUES examples tests tools benchmarks
|
||||||
@ -107,29 +94,21 @@ qt_commandline_option(optimize-debug TYPE boolean NAME optimize_debug)
|
|||||||
qt_commandline_option(optimize-size TYPE boolean NAME optimize_size)
|
qt_commandline_option(optimize-size TYPE boolean NAME optimize_size)
|
||||||
qt_commandline_option(optimized-qmake TYPE boolean NAME release_tools)
|
qt_commandline_option(optimized-qmake TYPE boolean NAME release_tools)
|
||||||
qt_commandline_option(optimized-tools TYPE boolean NAME release_tools)
|
qt_commandline_option(optimized-tools TYPE boolean NAME release_tools)
|
||||||
qt_commandline_option(pch TYPE boolean CMAKE_VARIABLE BUILD_WITH_PCH)
|
qt_commandline_option(pch TYPE boolean NAME precompile_header)
|
||||||
qt_commandline_option(pkg-config TYPE boolean)
|
qt_commandline_option(pkg-config TYPE boolean)
|
||||||
qt_commandline_option(platform TYPE string CMAKE_VARIABLE QT_QMAKE_TARGET_MKSPEC)
|
qt_commandline_option(platform TYPE string)
|
||||||
qt_commandline_option(plugin-manifests TYPE boolean)
|
qt_commandline_option(plugin-manifests TYPE boolean)
|
||||||
qt_commandline_option(profile TYPE boolean)
|
qt_commandline_option(profile TYPE boolean)
|
||||||
qt_commandline_option(qreal TYPE string CMAKE_VARIABLE QT_COORD_TYPE)
|
qt_commandline_option(qreal TYPE string)
|
||||||
qt_commandline_option(qtinlinenamespace TYPE boolean CMAKE_VARIABLE QT_INLINE_NAMESPACE)
|
qt_commandline_option(qtinlinenamespace TYPE boolean)
|
||||||
qt_commandline_option(qtlibinfix
|
qt_commandline_option(qtlibinfix TYPE string NAME qt_libinfix)
|
||||||
TYPE string
|
qt_commandline_option(qtnamespace TYPE string NAME qt_namespace)
|
||||||
NAME qt_libinfix
|
|
||||||
CMAKE_VARIABLE QT_LIBINFIX
|
|
||||||
)
|
|
||||||
qt_commandline_option(qtnamespace
|
|
||||||
TYPE string
|
|
||||||
NAME qt_namespace
|
|
||||||
CMAKE_VARIABLE QT_NAMESPACE
|
|
||||||
)
|
|
||||||
qt_commandline_option(reduce-exports TYPE boolean NAME reduce_exports)
|
qt_commandline_option(reduce-exports TYPE boolean NAME reduce_exports)
|
||||||
qt_commandline_option(reduce-relocations TYPE boolean NAME reduce_relocations)
|
qt_commandline_option(reduce-relocations TYPE boolean NAME reduce_relocations)
|
||||||
qt_commandline_option(release TYPE enum NAME debug MAPPING yes no no yes)
|
qt_commandline_option(release TYPE enum NAME debug MAPPING yes no no yes)
|
||||||
qt_commandline_option(rpath TYPE boolean)
|
qt_commandline_option(rpath TYPE boolean)
|
||||||
qt_commandline_option(sanitize TYPE sanitize)
|
qt_commandline_option(sanitize TYPE sanitize)
|
||||||
qt_commandline_option(sdk TYPE string CMAKE_VARIABLE QT_APPLE_SDK)
|
qt_commandline_option(sdk TYPE string)
|
||||||
qt_commandline_option(separate-debug-info TYPE boolean NAME separate_debug_info)
|
qt_commandline_option(separate-debug-info TYPE boolean NAME separate_debug_info)
|
||||||
qt_commandline_option(shared TYPE boolean)
|
qt_commandline_option(shared TYPE boolean)
|
||||||
qt_commandline_option(silent TYPE void)
|
qt_commandline_option(silent TYPE void)
|
||||||
@ -144,19 +123,15 @@ qt_commandline_option(static-runtime TYPE boolean NAME static_runtime)
|
|||||||
qt_commandline_option(strip TYPE boolean)
|
qt_commandline_option(strip TYPE boolean)
|
||||||
qt_commandline_option(sysroot TYPE string)
|
qt_commandline_option(sysroot TYPE string)
|
||||||
qt_commandline_option(use-gold-linker TYPE boolean NAME use_gold_linker_alias)
|
qt_commandline_option(use-gold-linker TYPE boolean NAME use_gold_linker_alias)
|
||||||
qt_commandline_option(warnings-are-errors
|
qt_commandline_option(warnings-are-errors TYPE boolean NAME warnings_are_errors)
|
||||||
TYPE boolean
|
|
||||||
NAME warnings_are_errors
|
|
||||||
CMAKE_VARIABLE WARNINGS_ARE_ERRORS
|
|
||||||
)
|
|
||||||
qt_commandline_option(Werror TYPE boolean NAME warnings_are_errors)
|
qt_commandline_option(Werror TYPE boolean NAME warnings_are_errors)
|
||||||
qt_commandline_option(widgets TYPE boolean)
|
qt_commandline_option(widgets TYPE boolean)
|
||||||
qt_commandline_option(xplatform TYPE string CMAKE_VARIABLE QT_QMAKE_TARGET_MKSPEC)
|
qt_commandline_option(xplatform TYPE string)
|
||||||
qt_commandline_option(zlib CONTROLS_FEATURE TYPE enum NAME system-zlib MAPPING system yes qt no)
|
qt_commandline_option(zlib CONTROLS_FEATURE TYPE enum NAME system-zlib MAPPING system yes qt no)
|
||||||
qt_commandline_option(zstd TYPE boolean)
|
qt_commandline_option(zstd TYPE boolean)
|
||||||
qt_commandline_option(coverage TYPE optionalString VALUES gcov)
|
qt_commandline_option(coverage TYPE optionalString VALUES gcov)
|
||||||
qt_commandline_option(ffmpeg-dir TYPE path CMAKE_VARIABLE FFMPEG_DIR)
|
qt_commandline_option(ffmpeg-dir TYPE string)
|
||||||
qt_commandline_option(ffmpeg-deploy TYPE boolean CMAKE_VARIABLE QT_DEPLOY_FFMPEG)
|
qt_commandline_option(ffmpeg-deploy TYPE boolean)
|
||||||
qt_commandline_prefix(D defines)
|
qt_commandline_prefix(D defines)
|
||||||
qt_commandline_prefix(F fpaths)
|
qt_commandline_prefix(F fpaths)
|
||||||
qt_commandline_prefix(I includes)
|
qt_commandline_prefix(I includes)
|
||||||
|
26
src/3rdparty/VulkanMemoryAllocator/patches/0001-Disable-SRWLOCK-for-MinGW.patch
vendored
Normal file
26
src/3rdparty/VulkanMemoryAllocator/patches/0001-Disable-SRWLOCK-for-MinGW.patch
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 1e4a10230381acc79768fd577987dde4255d6148 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Laszlo Agocs <laszlo.agocs@qt.io>
|
||||||
|
Date: Thu, 14 Jan 2021 11:22:09 +0100
|
||||||
|
Subject: [PATCH 1/4] Disable SRWLOCK for MinGW
|
||||||
|
|
||||||
|
Change-Id: Ie671e7bcf88ef28eb177a6fba17964a5e8ae30c0
|
||||||
|
---
|
||||||
|
src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||||
|
index 0dfb66efc6..8e579967d9 100644
|
||||||
|
--- a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||||
|
+++ b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||||
|
@@ -3691,7 +3691,7 @@ void *aligned_alloc(size_t alignment, size_t size)
|
||||||
|
std::shared_mutex m_Mutex;
|
||||||
|
};
|
||||||
|
#define VMA_RW_MUTEX VmaRWMutex
|
||||||
|
- #elif defined(_WIN32) && defined(WINVER) && WINVER >= 0x0600
|
||||||
|
+ #elif defined(_WIN32) && defined(WINVER) && WINVER >= 0x0600 && !defined(__MINGW32__)
|
||||||
|
// Use SRWLOCK from WinAPI.
|
||||||
|
// Minimum supported client = Windows Vista, server = Windows Server 2008.
|
||||||
|
class VmaRWMutex
|
||||||
|
--
|
||||||
|
2.23.0.windows.1
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
From 713fd01631dea4295e9036065cebb851af035258 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Aur=C3=A9lien=20Brooke?= <aurelien@bahiasoft.fr>
|
|
||||||
Date: Mon, 24 Mar 2025 13:33:39 +0100
|
|
||||||
Subject: [PATCH] Ignore unused-private-field warnings
|
|
||||||
|
|
||||||
Change-Id: I64593efbfbda9b0d7676542b328b336c11d570f0
|
|
||||||
---
|
|
||||||
src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
|
||||||
index ae395514951..f1a976042f9 100644
|
|
||||||
--- a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
|
||||||
+++ b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
|
||||||
@@ -2829,6 +2829,7 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeStatsString(
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
|
||||||
#pragma clang diagnostic ignored "-Wunused-parameter"
|
|
||||||
+#pragma clang diagnostic ignored "-Wunused-private-field"
|
|
||||||
#pragma clang diagnostic ignored "-Wmissing-field-initializers"
|
|
||||||
#pragma clang diagnostic ignored "-Wparentheses"
|
|
||||||
#pragma clang diagnostic ignored "-Wimplicit-fallthrough"
|
|
||||||
--
|
|
||||||
2.48.1
|
|
||||||
|
|
@ -7,12 +7,12 @@
|
|||||||
"QtUsage": "Memory management for the Vulkan backend of QRhi.",
|
"QtUsage": "Memory management for the Vulkan backend of QRhi.",
|
||||||
|
|
||||||
"Homepage": "https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator",
|
"Homepage": "https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator",
|
||||||
"Version": "3.2.1",
|
"Version": "3.1.0",
|
||||||
"PURL": "pkg:github/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator@v$<VERSION>",
|
"PURL": "pkg:github/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator@v$<VERSION>",
|
||||||
"License": "MIT License",
|
"License": "MIT License",
|
||||||
"LicenseId": "MIT",
|
"LicenseId": "MIT",
|
||||||
"LicenseFile": "LICENSE.txt",
|
"LicenseFile": "LICENSE.txt",
|
||||||
"Copyright": "Copyright (c) 2017-2025 Advanced Micro Devices, Inc. All rights reserved.",
|
"Copyright": "Copyright (c) 2017-2024 Advanced Micro Devices, Inc. All rights reserved.",
|
||||||
"Comment": "no relevant CPE found"
|
"Comment": "no relevant CPE found"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
578
src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
vendored
578
src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
vendored
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 2017-2025 Advanced Micro Devices, Inc. All rights reserved.
|
// Copyright (c) 2017-2024 Advanced Micro Devices, Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
@ -25,9 +25,9 @@
|
|||||||
|
|
||||||
/** \mainpage Vulkan Memory Allocator
|
/** \mainpage Vulkan Memory Allocator
|
||||||
|
|
||||||
<b>Version 3.2.1</b>
|
<b>Version 3.1.0</b>
|
||||||
|
|
||||||
Copyright (c) 2017-2025 Advanced Micro Devices, Inc. All rights reserved. \n
|
Copyright (c) 2017-2024 Advanced Micro Devices, Inc. All rights reserved. \n
|
||||||
License: MIT \n
|
License: MIT \n
|
||||||
See also: [product page on GPUOpen](https://gpuopen.com/gaming-product/vulkan-memory-allocator/),
|
See also: [product page on GPUOpen](https://gpuopen.com/gaming-product/vulkan-memory-allocator/),
|
||||||
[repository on GitHub](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator)
|
[repository on GitHub](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator)
|
||||||
@ -95,7 +95,6 @@ See also: [product page on GPUOpen](https://gpuopen.com/gaming-product/vulkan-me
|
|||||||
- \subpage enabling_buffer_device_address
|
- \subpage enabling_buffer_device_address
|
||||||
- \subpage vk_ext_memory_priority
|
- \subpage vk_ext_memory_priority
|
||||||
- \subpage vk_amd_device_coherent_memory
|
- \subpage vk_amd_device_coherent_memory
|
||||||
- \subpage vk_khr_external_memory_win32
|
|
||||||
- \subpage general_considerations
|
- \subpage general_considerations
|
||||||
- [Thread safety](@ref general_considerations_thread_safety)
|
- [Thread safety](@ref general_considerations_thread_safety)
|
||||||
- [Versioning and compatibility](@ref general_considerations_versioning_and_compatibility)
|
- [Versioning and compatibility](@ref general_considerations_versioning_and_compatibility)
|
||||||
@ -128,14 +127,10 @@ See documentation chapter: \ref statistics.
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(VULKAN_H_)
|
|
||||||
#include <vulkan/vulkan.h>
|
#include <vulkan/vulkan.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(VMA_VULKAN_VERSION)
|
#if !defined(VMA_VULKAN_VERSION)
|
||||||
#if defined(VK_VERSION_1_4)
|
#if defined(VK_VERSION_1_3)
|
||||||
#define VMA_VULKAN_VERSION 1004000
|
|
||||||
#elif defined(VK_VERSION_1_3)
|
|
||||||
#define VMA_VULKAN_VERSION 1003000
|
#define VMA_VULKAN_VERSION 1003000
|
||||||
#elif defined(VK_VERSION_1_2)
|
#elif defined(VK_VERSION_1_2)
|
||||||
#define VMA_VULKAN_VERSION 1002000
|
#define VMA_VULKAN_VERSION 1002000
|
||||||
@ -245,15 +240,6 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Defined to 1 when VK_KHR_external_memory_win32 device extension is defined in Vulkan headers.
|
|
||||||
#if !defined(VMA_EXTERNAL_MEMORY_WIN32)
|
|
||||||
#if VK_KHR_external_memory_win32
|
|
||||||
#define VMA_EXTERNAL_MEMORY_WIN32 1
|
|
||||||
#else
|
|
||||||
#define VMA_EXTERNAL_MEMORY_WIN32 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Define these macros to decorate all public functions with additional code,
|
// Define these macros to decorate all public functions with additional code,
|
||||||
// before and after returned type, appropriately. This may be useful for
|
// before and after returned type, appropriately. This may be useful for
|
||||||
// exporting the functions when compiling VMA as a separate library. Example:
|
// exporting the functions when compiling VMA as a separate library. Example:
|
||||||
@ -473,15 +459,6 @@ typedef enum VmaAllocatorCreateFlagBits
|
|||||||
*/
|
*/
|
||||||
VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT = 0x00000100,
|
VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT = 0x00000100,
|
||||||
|
|
||||||
/**
|
|
||||||
Enables usage of VK_KHR_external_memory_win32 extension in the library.
|
|
||||||
|
|
||||||
You should set this flag if you found available and enabled this device extension,
|
|
||||||
while creating Vulkan device passed as VmaAllocatorCreateInfo::device.
|
|
||||||
For more information, see \ref vk_khr_external_memory_win32.
|
|
||||||
*/
|
|
||||||
VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT = 0x00000200,
|
|
||||||
|
|
||||||
VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||||
} VmaAllocatorCreateFlagBits;
|
} VmaAllocatorCreateFlagBits;
|
||||||
/// See #VmaAllocatorCreateFlagBits.
|
/// See #VmaAllocatorCreateFlagBits.
|
||||||
@ -1056,11 +1033,6 @@ typedef struct VmaVulkanFunctions
|
|||||||
/// Fetch from "vkGetDeviceImageMemoryRequirements" on Vulkan >= 1.3, but you can also fetch it from "vkGetDeviceImageMemoryRequirementsKHR" if you enabled extension VK_KHR_maintenance4.
|
/// Fetch from "vkGetDeviceImageMemoryRequirements" on Vulkan >= 1.3, but you can also fetch it from "vkGetDeviceImageMemoryRequirementsKHR" if you enabled extension VK_KHR_maintenance4.
|
||||||
PFN_vkGetDeviceImageMemoryRequirementsKHR VMA_NULLABLE vkGetDeviceImageMemoryRequirements;
|
PFN_vkGetDeviceImageMemoryRequirementsKHR VMA_NULLABLE vkGetDeviceImageMemoryRequirements;
|
||||||
#endif
|
#endif
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
PFN_vkGetMemoryWin32HandleKHR VMA_NULLABLE vkGetMemoryWin32HandleKHR;
|
|
||||||
#else
|
|
||||||
void* VMA_NULLABLE vkGetMemoryWin32HandleKHR;
|
|
||||||
#endif
|
|
||||||
} VmaVulkanFunctions;
|
} VmaVulkanFunctions;
|
||||||
|
|
||||||
/// Description of a Allocator to be created.
|
/// Description of a Allocator to be created.
|
||||||
@ -1123,7 +1095,7 @@ typedef struct VmaAllocatorCreateInfo
|
|||||||
|
|
||||||
It must be a value in the format as created by macro `VK_MAKE_VERSION` or a constant like: `VK_API_VERSION_1_1`, `VK_API_VERSION_1_0`.
|
It must be a value in the format as created by macro `VK_MAKE_VERSION` or a constant like: `VK_API_VERSION_1_1`, `VK_API_VERSION_1_0`.
|
||||||
The patch version number specified is ignored. Only the major and minor versions are considered.
|
The patch version number specified is ignored. Only the major and minor versions are considered.
|
||||||
Only versions 1.0...1.4 are supported by the current implementation.
|
Only versions 1.0, 1.1, 1.2, 1.3 are supported by the current implementation.
|
||||||
Leaving it initialized to zero is equivalent to `VK_API_VERSION_1_0`.
|
Leaving it initialized to zero is equivalent to `VK_API_VERSION_1_0`.
|
||||||
It must match the Vulkan version used by the application and supported on the selected physical device,
|
It must match the Vulkan version used by the application and supported on the selected physical device,
|
||||||
so it must be no higher than `VkApplicationInfo::apiVersion` passed to `vkCreateInstance`
|
so it must be no higher than `VkApplicationInfo::apiVersion` passed to `vkCreateInstance`
|
||||||
@ -1838,9 +1810,6 @@ VMA_CALL_PRE void VMA_CALL_POST vmaDestroyPool(
|
|||||||
\param allocator Allocator object.
|
\param allocator Allocator object.
|
||||||
\param pool Pool object.
|
\param pool Pool object.
|
||||||
\param[out] pPoolStats Statistics of specified pool.
|
\param[out] pPoolStats Statistics of specified pool.
|
||||||
|
|
||||||
Note that when using the pool from multiple threads, returned information may immediately
|
|
||||||
become outdated.
|
|
||||||
*/
|
*/
|
||||||
VMA_CALL_PRE void VMA_CALL_POST vmaGetPoolStatistics(
|
VMA_CALL_PRE void VMA_CALL_POST vmaGetPoolStatistics(
|
||||||
VmaAllocator VMA_NOT_NULL allocator,
|
VmaAllocator VMA_NOT_NULL allocator,
|
||||||
@ -2081,40 +2050,6 @@ VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocationMemoryProperties(
|
|||||||
VmaAllocation VMA_NOT_NULL allocation,
|
VmaAllocation VMA_NOT_NULL allocation,
|
||||||
VkMemoryPropertyFlags* VMA_NOT_NULL pFlags);
|
VkMemoryPropertyFlags* VMA_NOT_NULL pFlags);
|
||||||
|
|
||||||
|
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
/**
|
|
||||||
\brief Given an allocation, returns Win32 handle that may be imported by other processes or APIs.
|
|
||||||
|
|
||||||
\param hTargetProcess Must be a valid handle to target process or null. If it's null, the function returns
|
|
||||||
handle for the current process.
|
|
||||||
\param[out] pHandle Output parameter that returns the handle.
|
|
||||||
|
|
||||||
The function fills `pHandle` with handle that can be used in target process.
|
|
||||||
The handle is fetched using function `vkGetMemoryWin32HandleKHR`.
|
|
||||||
When no longer needed, you must close it using:
|
|
||||||
|
|
||||||
\code
|
|
||||||
CloseHandle(handle);
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
You can close it any time, before or after destroying the allocation object.
|
|
||||||
It is reference-counted internally by Windows.
|
|
||||||
|
|
||||||
Note the handle is returned for the entire `VkDeviceMemory` block that the allocation belongs to.
|
|
||||||
If the allocation is sub-allocated from a larger block, you may need to consider the offset of the allocation
|
|
||||||
(VmaAllocationInfo::offset).
|
|
||||||
|
|
||||||
If the function fails with `VK_ERROR_FEATURE_NOT_PRESENT` error code, please double-check
|
|
||||||
that VmaVulkanFunctions::vkGetMemoryWin32HandleKHR function pointer is set, e.g. either by using `VMA_DYNAMIC_VULKAN_FUNCTIONS`
|
|
||||||
or by manually passing it through VmaAllocatorCreateInfo::pVulkanFunctions.
|
|
||||||
|
|
||||||
For more information, see chapter \ref vk_khr_external_memory_win32.
|
|
||||||
*/
|
|
||||||
VMA_CALL_PRE VkResult VMA_CALL_POST vmaGetMemoryWin32Handle(VmaAllocator VMA_NOT_NULL allocator,
|
|
||||||
VmaAllocation VMA_NOT_NULL allocation, HANDLE hTargetProcess, HANDLE* VMA_NOT_NULL pHandle);
|
|
||||||
#endif // VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
|
|
||||||
/** \brief Maps memory represented by given allocation and returns pointer to it.
|
/** \brief Maps memory represented by given allocation and returns pointer to it.
|
||||||
|
|
||||||
Maps memory represented by given allocation to make it accessible to CPU code.
|
Maps memory represented by given allocation to make it accessible to CPU code.
|
||||||
@ -2829,7 +2764,6 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeStatsString(
|
|||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
#pragma clang diagnostic ignored "-Wunused-variable"
|
||||||
#pragma clang diagnostic ignored "-Wunused-parameter"
|
#pragma clang diagnostic ignored "-Wunused-parameter"
|
||||||
#pragma clang diagnostic ignored "-Wunused-private-field"
|
|
||||||
#pragma clang diagnostic ignored "-Wmissing-field-initializers"
|
#pragma clang diagnostic ignored "-Wmissing-field-initializers"
|
||||||
#pragma clang diagnostic ignored "-Wparentheses"
|
#pragma clang diagnostic ignored "-Wparentheses"
|
||||||
#pragma clang diagnostic ignored "-Wimplicit-fallthrough"
|
#pragma clang diagnostic ignored "-Wimplicit-fallthrough"
|
||||||
@ -3180,7 +3114,7 @@ static void vma_aligned_free(void* VMA_NULLABLE ptr)
|
|||||||
std::shared_mutex m_Mutex;
|
std::shared_mutex m_Mutex;
|
||||||
};
|
};
|
||||||
#define VMA_RW_MUTEX VmaRWMutex
|
#define VMA_RW_MUTEX VmaRWMutex
|
||||||
#elif defined(_WIN32) && defined(WINVER) && defined(SRWLOCK_INIT) && WINVER >= 0x0600
|
#elif defined(_WIN32) && defined(WINVER) && WINVER >= 0x0600 && !defined(__MINGW32__)
|
||||||
// Use SRWLOCK from WinAPI.
|
// Use SRWLOCK from WinAPI.
|
||||||
// Minimum supported client = Windows Vista, server = Windows Server 2008.
|
// Minimum supported client = Windows Vista, server = Windows Server 2008.
|
||||||
class VmaRWMutex
|
class VmaRWMutex
|
||||||
@ -3921,6 +3855,12 @@ struct VmaBufferImageUsage
|
|||||||
|
|
||||||
const VmaBufferImageUsage VmaBufferImageUsage::UNKNOWN = VmaBufferImageUsage(0);
|
const VmaBufferImageUsage VmaBufferImageUsage::UNKNOWN = VmaBufferImageUsage(0);
|
||||||
|
|
||||||
|
// static void swap(VmaBufferImageUsage& lhs, VmaBufferImageUsage& rhs) noexcept
|
||||||
|
// {
|
||||||
|
// using std::swap;
|
||||||
|
// swap(lhs.Value, rhs.Value);
|
||||||
|
// }
|
||||||
|
|
||||||
VmaBufferImageUsage::VmaBufferImageUsage(const VkBufferCreateInfo &createInfo,
|
VmaBufferImageUsage::VmaBufferImageUsage(const VkBufferCreateInfo &createInfo,
|
||||||
bool useKhrMaintenance5)
|
bool useKhrMaintenance5)
|
||||||
{
|
{
|
||||||
@ -6150,84 +6090,6 @@ private:
|
|||||||
|
|
||||||
#endif // _VMA_MAPPING_HYSTERESIS
|
#endif // _VMA_MAPPING_HYSTERESIS
|
||||||
|
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
class VmaWin32Handle
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
VmaWin32Handle() noexcept : m_hHandle(VMA_NULL) { }
|
|
||||||
explicit VmaWin32Handle(HANDLE hHandle) noexcept : m_hHandle(hHandle) { }
|
|
||||||
~VmaWin32Handle() noexcept { if (m_hHandle != VMA_NULL) { ::CloseHandle(m_hHandle); } }
|
|
||||||
VMA_CLASS_NO_COPY_NO_MOVE(VmaWin32Handle)
|
|
||||||
|
|
||||||
public:
|
|
||||||
// Strengthened
|
|
||||||
VkResult GetHandle(VkDevice device, VkDeviceMemory memory, PFN_vkGetMemoryWin32HandleKHR pvkGetMemoryWin32HandleKHR, HANDLE hTargetProcess, bool useMutex, HANDLE* pHandle) noexcept
|
|
||||||
{
|
|
||||||
*pHandle = VMA_NULL;
|
|
||||||
// Try to get handle first.
|
|
||||||
if (m_hHandle != VMA_NULL)
|
|
||||||
{
|
|
||||||
*pHandle = Duplicate(hTargetProcess);
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
VkResult res = VK_SUCCESS;
|
|
||||||
// If failed, try to create it.
|
|
||||||
{
|
|
||||||
VmaMutexLockWrite lock(m_Mutex, useMutex);
|
|
||||||
if (m_hHandle == VMA_NULL)
|
|
||||||
{
|
|
||||||
res = Create(device, memory, pvkGetMemoryWin32HandleKHR, &m_hHandle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*pHandle = Duplicate(hTargetProcess);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
operator bool() const noexcept { return m_hHandle != VMA_NULL; }
|
|
||||||
private:
|
|
||||||
// Not atomic
|
|
||||||
static VkResult Create(VkDevice device, VkDeviceMemory memory, PFN_vkGetMemoryWin32HandleKHR pvkGetMemoryWin32HandleKHR, HANDLE* pHandle) noexcept
|
|
||||||
{
|
|
||||||
VkResult res = VK_ERROR_FEATURE_NOT_PRESENT;
|
|
||||||
if (pvkGetMemoryWin32HandleKHR != VMA_NULL)
|
|
||||||
{
|
|
||||||
VkMemoryGetWin32HandleInfoKHR handleInfo{ };
|
|
||||||
handleInfo.sType = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR;
|
|
||||||
handleInfo.memory = memory;
|
|
||||||
handleInfo.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR;
|
|
||||||
res = pvkGetMemoryWin32HandleKHR(device, &handleInfo, pHandle);
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
HANDLE Duplicate(HANDLE hTargetProcess = VMA_NULL) const noexcept
|
|
||||||
{
|
|
||||||
if (!m_hHandle)
|
|
||||||
return m_hHandle;
|
|
||||||
|
|
||||||
HANDLE hCurrentProcess = ::GetCurrentProcess();
|
|
||||||
HANDLE hDupHandle = VMA_NULL;
|
|
||||||
if (!::DuplicateHandle(hCurrentProcess, m_hHandle, hTargetProcess ? hTargetProcess : hCurrentProcess, &hDupHandle, 0, FALSE, DUPLICATE_SAME_ACCESS))
|
|
||||||
{
|
|
||||||
VMA_ASSERT(0 && "Failed to duplicate handle.");
|
|
||||||
}
|
|
||||||
return hDupHandle;
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
HANDLE m_hHandle;
|
|
||||||
VMA_RW_MUTEX m_Mutex; // Protects access m_Handle
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
class VmaWin32Handle
|
|
||||||
{
|
|
||||||
// ABI compatibility
|
|
||||||
void* placeholder = VMA_NULL;
|
|
||||||
VMA_RW_MUTEX placeholder2;
|
|
||||||
};
|
|
||||||
#endif // VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _VMA_DEVICE_MEMORY_BLOCK
|
#ifndef _VMA_DEVICE_MEMORY_BLOCK
|
||||||
/*
|
/*
|
||||||
Represents a single block of device memory (`VkDeviceMemory`) with all the
|
Represents a single block of device memory (`VkDeviceMemory`) with all the
|
||||||
@ -6294,13 +6156,7 @@ public:
|
|||||||
VkDeviceSize allocationLocalOffset,
|
VkDeviceSize allocationLocalOffset,
|
||||||
VkImage hImage,
|
VkImage hImage,
|
||||||
const void* pNext);
|
const void* pNext);
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
VkResult CreateWin32Handle(
|
|
||||||
const VmaAllocator hAllocator,
|
|
||||||
PFN_vkGetMemoryWin32HandleKHR pvkGetMemoryWin32HandleKHR,
|
|
||||||
HANDLE hTargetProcess,
|
|
||||||
HANDLE* pHandle)noexcept;
|
|
||||||
#endif // VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
private:
|
private:
|
||||||
VmaPool m_hParentPool; // VK_NULL_HANDLE if not belongs to custom pool.
|
VmaPool m_hParentPool; // VK_NULL_HANDLE if not belongs to custom pool.
|
||||||
uint32_t m_MemoryTypeIndex;
|
uint32_t m_MemoryTypeIndex;
|
||||||
@ -6316,18 +6172,10 @@ private:
|
|||||||
VmaMappingHysteresis m_MappingHysteresis;
|
VmaMappingHysteresis m_MappingHysteresis;
|
||||||
uint32_t m_MapCount;
|
uint32_t m_MapCount;
|
||||||
void* m_pMappedData;
|
void* m_pMappedData;
|
||||||
|
|
||||||
VmaWin32Handle m_Handle;
|
|
||||||
};
|
};
|
||||||
#endif // _VMA_DEVICE_MEMORY_BLOCK
|
#endif // _VMA_DEVICE_MEMORY_BLOCK
|
||||||
|
|
||||||
#ifndef _VMA_ALLOCATION_T
|
#ifndef _VMA_ALLOCATION_T
|
||||||
struct VmaAllocationExtraData
|
|
||||||
{
|
|
||||||
void* m_pMappedData = VMA_NULL; // Not null means memory is mapped.
|
|
||||||
VmaWin32Handle m_Handle;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VmaAllocation_T
|
struct VmaAllocation_T
|
||||||
{
|
{
|
||||||
friend struct VmaDedicatedAllocationListItemTraits;
|
friend struct VmaDedicatedAllocationListItemTraits;
|
||||||
@ -6360,14 +6208,12 @@ public:
|
|||||||
bool mapped);
|
bool mapped);
|
||||||
// pMappedData not null means allocation is created with MAPPED flag.
|
// pMappedData not null means allocation is created with MAPPED flag.
|
||||||
void InitDedicatedAllocation(
|
void InitDedicatedAllocation(
|
||||||
VmaAllocator allocator,
|
|
||||||
VmaPool hParentPool,
|
VmaPool hParentPool,
|
||||||
uint32_t memoryTypeIndex,
|
uint32_t memoryTypeIndex,
|
||||||
VkDeviceMemory hMemory,
|
VkDeviceMemory hMemory,
|
||||||
VmaSuballocationType suballocationType,
|
VmaSuballocationType suballocationType,
|
||||||
void* pMappedData,
|
void* pMappedData,
|
||||||
VkDeviceSize size);
|
VkDeviceSize size);
|
||||||
void Destroy(VmaAllocator allocator);
|
|
||||||
|
|
||||||
ALLOCATION_TYPE GetType() const { return (ALLOCATION_TYPE)m_Type; }
|
ALLOCATION_TYPE GetType() const { return (ALLOCATION_TYPE)m_Type; }
|
||||||
VkDeviceSize GetAlignment() const { return m_Alignment; }
|
VkDeviceSize GetAlignment() const { return m_Alignment; }
|
||||||
@ -6411,10 +6257,6 @@ public:
|
|||||||
void PrintParameters(class VmaJsonWriter& json) const;
|
void PrintParameters(class VmaJsonWriter& json) const;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
VkResult GetWin32Handle(VmaAllocator hAllocator, HANDLE hTargetProcess, HANDLE* hHandle) noexcept;
|
|
||||||
#endif // VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Allocation out of VmaDeviceMemoryBlock.
|
// Allocation out of VmaDeviceMemoryBlock.
|
||||||
struct BlockAllocation
|
struct BlockAllocation
|
||||||
@ -6427,7 +6269,7 @@ private:
|
|||||||
{
|
{
|
||||||
VmaPool m_hParentPool; // VK_NULL_HANDLE if not belongs to custom pool.
|
VmaPool m_hParentPool; // VK_NULL_HANDLE if not belongs to custom pool.
|
||||||
VkDeviceMemory m_hMemory;
|
VkDeviceMemory m_hMemory;
|
||||||
VmaAllocationExtraData* m_ExtraData;
|
void* m_pMappedData; // Not null means memory is mapped.
|
||||||
VmaAllocation_T* m_Prev;
|
VmaAllocation_T* m_Prev;
|
||||||
VmaAllocation_T* m_Next;
|
VmaAllocation_T* m_Next;
|
||||||
};
|
};
|
||||||
@ -6452,8 +6294,6 @@ private:
|
|||||||
#if VMA_STATS_STRING_ENABLED
|
#if VMA_STATS_STRING_ENABLED
|
||||||
VmaBufferImageUsage m_BufferImageUsage; // 0 if unknown.
|
VmaBufferImageUsage m_BufferImageUsage; // 0 if unknown.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void EnsureExtraData(VmaAllocator hAllocator);
|
|
||||||
};
|
};
|
||||||
#endif // _VMA_ALLOCATION_T
|
#endif // _VMA_ALLOCATION_T
|
||||||
|
|
||||||
@ -9334,10 +9174,10 @@ void VmaBlockMetadata_TLSF::Alloc(
|
|||||||
RemoveFreeBlock(currentBlock);
|
RemoveFreeBlock(currentBlock);
|
||||||
|
|
||||||
VkDeviceSize debugMargin = GetDebugMargin();
|
VkDeviceSize debugMargin = GetDebugMargin();
|
||||||
VkDeviceSize missingAlignment = offset - currentBlock->offset;
|
VkDeviceSize misssingAlignment = offset - currentBlock->offset;
|
||||||
|
|
||||||
// Append missing alignment to prev block or create new one
|
// Append missing alignment to prev block or create new one
|
||||||
if (missingAlignment)
|
if (misssingAlignment)
|
||||||
{
|
{
|
||||||
Block* prevBlock = currentBlock->prevPhysical;
|
Block* prevBlock = currentBlock->prevPhysical;
|
||||||
VMA_ASSERT(prevBlock != VMA_NULL && "There should be no missing alignment at offset 0!");
|
VMA_ASSERT(prevBlock != VMA_NULL && "There should be no missing alignment at offset 0!");
|
||||||
@ -9345,17 +9185,17 @@ void VmaBlockMetadata_TLSF::Alloc(
|
|||||||
if (prevBlock->IsFree() && prevBlock->size != debugMargin)
|
if (prevBlock->IsFree() && prevBlock->size != debugMargin)
|
||||||
{
|
{
|
||||||
uint32_t oldList = GetListIndex(prevBlock->size);
|
uint32_t oldList = GetListIndex(prevBlock->size);
|
||||||
prevBlock->size += missingAlignment;
|
prevBlock->size += misssingAlignment;
|
||||||
// Check if new size crosses list bucket
|
// Check if new size crosses list bucket
|
||||||
if (oldList != GetListIndex(prevBlock->size))
|
if (oldList != GetListIndex(prevBlock->size))
|
||||||
{
|
{
|
||||||
prevBlock->size -= missingAlignment;
|
prevBlock->size -= misssingAlignment;
|
||||||
RemoveFreeBlock(prevBlock);
|
RemoveFreeBlock(prevBlock);
|
||||||
prevBlock->size += missingAlignment;
|
prevBlock->size += misssingAlignment;
|
||||||
InsertFreeBlock(prevBlock);
|
InsertFreeBlock(prevBlock);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_BlocksFreeSize += missingAlignment;
|
m_BlocksFreeSize += misssingAlignment;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -9364,15 +9204,15 @@ void VmaBlockMetadata_TLSF::Alloc(
|
|||||||
prevBlock->nextPhysical = newBlock;
|
prevBlock->nextPhysical = newBlock;
|
||||||
newBlock->prevPhysical = prevBlock;
|
newBlock->prevPhysical = prevBlock;
|
||||||
newBlock->nextPhysical = currentBlock;
|
newBlock->nextPhysical = currentBlock;
|
||||||
newBlock->size = missingAlignment;
|
newBlock->size = misssingAlignment;
|
||||||
newBlock->offset = currentBlock->offset;
|
newBlock->offset = currentBlock->offset;
|
||||||
newBlock->MarkTaken();
|
newBlock->MarkTaken();
|
||||||
|
|
||||||
InsertFreeBlock(newBlock);
|
InsertFreeBlock(newBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentBlock->size -= missingAlignment;
|
currentBlock->size -= misssingAlignment;
|
||||||
currentBlock->offset += missingAlignment;
|
currentBlock->offset += misssingAlignment;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkDeviceSize size = request.size + debugMargin;
|
VkDeviceSize size = request.size + debugMargin;
|
||||||
@ -10252,7 +10092,6 @@ public:
|
|||||||
bool m_UseExtMemoryPriority;
|
bool m_UseExtMemoryPriority;
|
||||||
bool m_UseKhrMaintenance4;
|
bool m_UseKhrMaintenance4;
|
||||||
bool m_UseKhrMaintenance5;
|
bool m_UseKhrMaintenance5;
|
||||||
bool m_UseKhrExternalMemoryWin32;
|
|
||||||
const VkDevice m_hDevice;
|
const VkDevice m_hDevice;
|
||||||
const VkInstance m_hInstance;
|
const VkInstance m_hInstance;
|
||||||
const bool m_AllocationCallbacksSpecified;
|
const bool m_AllocationCallbacksSpecified;
|
||||||
@ -10616,7 +10455,7 @@ VmaDeviceMemoryBlock::VmaDeviceMemoryBlock(VmaAllocator hAllocator)
|
|||||||
m_Id(0),
|
m_Id(0),
|
||||||
m_hMemory(VK_NULL_HANDLE),
|
m_hMemory(VK_NULL_HANDLE),
|
||||||
m_MapCount(0),
|
m_MapCount(0),
|
||||||
m_pMappedData(VMA_NULL){}
|
m_pMappedData(VMA_NULL) {}
|
||||||
|
|
||||||
VmaDeviceMemoryBlock::~VmaDeviceMemoryBlock()
|
VmaDeviceMemoryBlock::~VmaDeviceMemoryBlock()
|
||||||
{
|
{
|
||||||
@ -10859,14 +10698,6 @@ VkResult VmaDeviceMemoryBlock::BindImageMemory(
|
|||||||
VmaMutexLock lock(m_MapAndBindMutex, hAllocator->m_UseMutex);
|
VmaMutexLock lock(m_MapAndBindMutex, hAllocator->m_UseMutex);
|
||||||
return hAllocator->BindVulkanImage(m_hMemory, memoryOffset, hImage, pNext);
|
return hAllocator->BindVulkanImage(m_hMemory, memoryOffset, hImage, pNext);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
VkResult VmaDeviceMemoryBlock::CreateWin32Handle(const VmaAllocator hAllocator, PFN_vkGetMemoryWin32HandleKHR pvkGetMemoryWin32HandleKHR, HANDLE hTargetProcess, HANDLE* pHandle) noexcept
|
|
||||||
{
|
|
||||||
VMA_ASSERT(pHandle);
|
|
||||||
return m_Handle.GetHandle(hAllocator->m_hDevice, m_hMemory, pvkGetMemoryWin32HandleKHR, hTargetProcess, hAllocator->m_UseMutex, pHandle);
|
|
||||||
}
|
|
||||||
#endif // VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
#endif // _VMA_DEVICE_MEMORY_BLOCK_FUNCTIONS
|
#endif // _VMA_DEVICE_MEMORY_BLOCK_FUNCTIONS
|
||||||
|
|
||||||
#ifndef _VMA_ALLOCATION_T_FUNCTIONS
|
#ifndef _VMA_ALLOCATION_T_FUNCTIONS
|
||||||
@ -10919,7 +10750,6 @@ void VmaAllocation_T::InitBlockAllocation(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VmaAllocation_T::InitDedicatedAllocation(
|
void VmaAllocation_T::InitDedicatedAllocation(
|
||||||
VmaAllocator allocator,
|
|
||||||
VmaPool hParentPool,
|
VmaPool hParentPool,
|
||||||
uint32_t memoryTypeIndex,
|
uint32_t memoryTypeIndex,
|
||||||
VkDeviceMemory hMemory,
|
VkDeviceMemory hMemory,
|
||||||
@ -10934,29 +10764,16 @@ void VmaAllocation_T::InitDedicatedAllocation(
|
|||||||
m_Size = size;
|
m_Size = size;
|
||||||
m_MemoryTypeIndex = memoryTypeIndex;
|
m_MemoryTypeIndex = memoryTypeIndex;
|
||||||
m_SuballocationType = (uint8_t)suballocationType;
|
m_SuballocationType = (uint8_t)suballocationType;
|
||||||
m_DedicatedAllocation.m_ExtraData = VMA_NULL;
|
if(pMappedData != VMA_NULL)
|
||||||
m_DedicatedAllocation.m_hParentPool = hParentPool;
|
|
||||||
m_DedicatedAllocation.m_hMemory = hMemory;
|
|
||||||
m_DedicatedAllocation.m_Prev = VMA_NULL;
|
|
||||||
m_DedicatedAllocation.m_Next = VMA_NULL;
|
|
||||||
|
|
||||||
if (pMappedData != VMA_NULL)
|
|
||||||
{
|
{
|
||||||
VMA_ASSERT(IsMappingAllowed() && "Mapping is not allowed on this allocation! Please use one of the new VMA_ALLOCATION_CREATE_HOST_ACCESS_* flags when creating it.");
|
VMA_ASSERT(IsMappingAllowed() && "Mapping is not allowed on this allocation! Please use one of the new VMA_ALLOCATION_CREATE_HOST_ACCESS_* flags when creating it.");
|
||||||
m_Flags |= (uint8_t)FLAG_PERSISTENT_MAP;
|
m_Flags |= (uint8_t)FLAG_PERSISTENT_MAP;
|
||||||
EnsureExtraData(allocator);
|
|
||||||
m_DedicatedAllocation.m_ExtraData->m_pMappedData = pMappedData;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void VmaAllocation_T::Destroy(VmaAllocator allocator)
|
|
||||||
{
|
|
||||||
FreeName(allocator);
|
|
||||||
|
|
||||||
if (GetType() == ALLOCATION_TYPE_DEDICATED)
|
|
||||||
{
|
|
||||||
vma_delete(allocator, m_DedicatedAllocation.m_ExtraData);
|
|
||||||
}
|
}
|
||||||
|
m_DedicatedAllocation.m_hParentPool = hParentPool;
|
||||||
|
m_DedicatedAllocation.m_hMemory = hMemory;
|
||||||
|
m_DedicatedAllocation.m_pMappedData = pMappedData;
|
||||||
|
m_DedicatedAllocation.m_Prev = VMA_NULL;
|
||||||
|
m_DedicatedAllocation.m_Next = VMA_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VmaAllocation_T::SetName(VmaAllocator hAllocator, const char* pName)
|
void VmaAllocation_T::SetName(VmaAllocator hAllocator, const char* pName)
|
||||||
@ -11061,9 +10878,8 @@ void* VmaAllocation_T::GetMappedData() const
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ALLOCATION_TYPE_DEDICATED:
|
case ALLOCATION_TYPE_DEDICATED:
|
||||||
VMA_ASSERT((m_DedicatedAllocation.m_ExtraData != VMA_NULL && m_DedicatedAllocation.m_ExtraData->m_pMappedData != VMA_NULL) ==
|
VMA_ASSERT((m_DedicatedAllocation.m_pMappedData != VMA_NULL) == (m_MapCount != 0 || IsPersistentMap()));
|
||||||
(m_MapCount != 0 || IsPersistentMap()));
|
return m_DedicatedAllocation.m_pMappedData;
|
||||||
return m_DedicatedAllocation.m_ExtraData != VMA_NULL ? m_DedicatedAllocation.m_ExtraData->m_pMappedData : VMA_NULL;
|
|
||||||
default:
|
default:
|
||||||
VMA_ASSERT(0);
|
VMA_ASSERT(0);
|
||||||
return VMA_NULL;
|
return VMA_NULL;
|
||||||
@ -11104,14 +10920,12 @@ VkResult VmaAllocation_T::DedicatedAllocMap(VmaAllocator hAllocator, void** ppDa
|
|||||||
VMA_ASSERT(GetType() == ALLOCATION_TYPE_DEDICATED);
|
VMA_ASSERT(GetType() == ALLOCATION_TYPE_DEDICATED);
|
||||||
VMA_ASSERT(IsMappingAllowed() && "Mapping is not allowed on this allocation! Please use one of the new VMA_ALLOCATION_CREATE_HOST_ACCESS_* flags when creating it.");
|
VMA_ASSERT(IsMappingAllowed() && "Mapping is not allowed on this allocation! Please use one of the new VMA_ALLOCATION_CREATE_HOST_ACCESS_* flags when creating it.");
|
||||||
|
|
||||||
EnsureExtraData(hAllocator);
|
|
||||||
|
|
||||||
if (m_MapCount != 0 || IsPersistentMap())
|
if (m_MapCount != 0 || IsPersistentMap())
|
||||||
{
|
{
|
||||||
if (m_MapCount < 0xFF)
|
if (m_MapCount < 0xFF)
|
||||||
{
|
{
|
||||||
VMA_ASSERT(m_DedicatedAllocation.m_ExtraData->m_pMappedData != VMA_NULL);
|
VMA_ASSERT(m_DedicatedAllocation.m_pMappedData != VMA_NULL);
|
||||||
*ppData = m_DedicatedAllocation.m_ExtraData->m_pMappedData;
|
*ppData = m_DedicatedAllocation.m_pMappedData;
|
||||||
++m_MapCount;
|
++m_MapCount;
|
||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -11132,7 +10946,7 @@ VkResult VmaAllocation_T::DedicatedAllocMap(VmaAllocator hAllocator, void** ppDa
|
|||||||
ppData);
|
ppData);
|
||||||
if (result == VK_SUCCESS)
|
if (result == VK_SUCCESS)
|
||||||
{
|
{
|
||||||
m_DedicatedAllocation.m_ExtraData->m_pMappedData = *ppData;
|
m_DedicatedAllocation.m_pMappedData = *ppData;
|
||||||
m_MapCount = 1;
|
m_MapCount = 1;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -11148,8 +10962,7 @@ void VmaAllocation_T::DedicatedAllocUnmap(VmaAllocator hAllocator)
|
|||||||
--m_MapCount;
|
--m_MapCount;
|
||||||
if (m_MapCount == 0 && !IsPersistentMap())
|
if (m_MapCount == 0 && !IsPersistentMap())
|
||||||
{
|
{
|
||||||
VMA_ASSERT(m_DedicatedAllocation.m_ExtraData != VMA_NULL);
|
m_DedicatedAllocation.m_pMappedData = VMA_NULL;
|
||||||
m_DedicatedAllocation.m_ExtraData->m_pMappedData = VMA_NULL;
|
|
||||||
(*hAllocator->GetVulkanFunctions().vkUnmapMemory)(
|
(*hAllocator->GetVulkanFunctions().vkUnmapMemory)(
|
||||||
hAllocator->m_hDevice,
|
hAllocator->m_hDevice,
|
||||||
m_DedicatedAllocation.m_hMemory);
|
m_DedicatedAllocation.m_hMemory);
|
||||||
@ -11185,33 +10998,8 @@ void VmaAllocation_T::PrintParameters(class VmaJsonWriter& json) const
|
|||||||
json.WriteString(m_pName);
|
json.WriteString(m_pName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
VkResult VmaAllocation_T::GetWin32Handle(VmaAllocator hAllocator, HANDLE hTargetProcess, HANDLE* pHandle) noexcept
|
|
||||||
{
|
|
||||||
auto pvkGetMemoryWin32HandleKHR = hAllocator->GetVulkanFunctions().vkGetMemoryWin32HandleKHR;
|
|
||||||
switch (m_Type)
|
|
||||||
{
|
|
||||||
case ALLOCATION_TYPE_BLOCK:
|
|
||||||
return m_BlockAllocation.m_Block->CreateWin32Handle(hAllocator, pvkGetMemoryWin32HandleKHR, hTargetProcess, pHandle);
|
|
||||||
case ALLOCATION_TYPE_DEDICATED:
|
|
||||||
EnsureExtraData(hAllocator);
|
|
||||||
return m_DedicatedAllocation.m_ExtraData->m_Handle.GetHandle(hAllocator->m_hDevice, m_DedicatedAllocation.m_hMemory, pvkGetMemoryWin32HandleKHR, hTargetProcess, hAllocator->m_UseMutex, pHandle);
|
|
||||||
default:
|
|
||||||
VMA_ASSERT(0);
|
|
||||||
return VK_ERROR_FEATURE_NOT_PRESENT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
#endif // VMA_STATS_STRING_ENABLED
|
#endif // VMA_STATS_STRING_ENABLED
|
||||||
|
|
||||||
void VmaAllocation_T::EnsureExtraData(VmaAllocator hAllocator)
|
|
||||||
{
|
|
||||||
if (m_DedicatedAllocation.m_ExtraData == VMA_NULL)
|
|
||||||
{
|
|
||||||
m_DedicatedAllocation.m_ExtraData = vma_new(hAllocator, VmaAllocationExtraData)();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void VmaAllocation_T::FreeName(VmaAllocator hAllocator)
|
void VmaAllocation_T::FreeName(VmaAllocator hAllocator)
|
||||||
{
|
{
|
||||||
if(m_pName)
|
if(m_pName)
|
||||||
@ -11628,10 +11416,6 @@ void VmaBlockVector::Free(const VmaAllocation hAllocation)
|
|||||||
}
|
}
|
||||||
|
|
||||||
IncrementallySortBlocks();
|
IncrementallySortBlocks();
|
||||||
|
|
||||||
m_hAllocator->m_Budget.RemoveAllocation(m_hAllocator->MemoryTypeIndexToHeapIndex(m_MemoryTypeIndex), hAllocation->GetSize());
|
|
||||||
hAllocation->Destroy(m_hAllocator);
|
|
||||||
m_hAllocator->m_AllocationObjectAllocator.Free(hAllocation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destruction of a free block. Deferred until this point, outside of mutex
|
// Destruction of a free block. Deferred until this point, outside of mutex
|
||||||
@ -11642,6 +11426,9 @@ void VmaBlockVector::Free(const VmaAllocation hAllocation)
|
|||||||
pBlockToDelete->Destroy(m_hAllocator);
|
pBlockToDelete->Destroy(m_hAllocator);
|
||||||
vma_delete(m_hAllocator, pBlockToDelete);
|
vma_delete(m_hAllocator, pBlockToDelete);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_hAllocator->m_Budget.RemoveAllocation(m_hAllocator->MemoryTypeIndexToHeapIndex(m_MemoryTypeIndex), hAllocation->GetSize());
|
||||||
|
m_hAllocator->m_AllocationObjectAllocator.Free(hAllocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
VkDeviceSize VmaBlockVector::CalcMaxBlockSize() const
|
VkDeviceSize VmaBlockVector::CalcMaxBlockSize() const
|
||||||
@ -12941,7 +12728,6 @@ VmaAllocator_T::VmaAllocator_T(const VmaAllocatorCreateInfo* pCreateInfo) :
|
|||||||
m_UseExtMemoryPriority((pCreateInfo->flags & VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT) != 0),
|
m_UseExtMemoryPriority((pCreateInfo->flags & VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT) != 0),
|
||||||
m_UseKhrMaintenance4((pCreateInfo->flags & VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT) != 0),
|
m_UseKhrMaintenance4((pCreateInfo->flags & VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT) != 0),
|
||||||
m_UseKhrMaintenance5((pCreateInfo->flags & VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT) != 0),
|
m_UseKhrMaintenance5((pCreateInfo->flags & VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT) != 0),
|
||||||
m_UseKhrExternalMemoryWin32((pCreateInfo->flags & VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT) != 0),
|
|
||||||
m_hDevice(pCreateInfo->device),
|
m_hDevice(pCreateInfo->device),
|
||||||
m_hInstance(pCreateInfo->instance),
|
m_hInstance(pCreateInfo->instance),
|
||||||
m_AllocationCallbacksSpecified(pCreateInfo->pAllocationCallbacks != VMA_NULL),
|
m_AllocationCallbacksSpecified(pCreateInfo->pAllocationCallbacks != VMA_NULL),
|
||||||
@ -12997,17 +12783,23 @@ VmaAllocator_T::VmaAllocator_T(const VmaAllocatorCreateInfo* pCreateInfo) :
|
|||||||
VMA_ASSERT(0 && "VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT is set but required extension or Vulkan 1.2 is not available in your Vulkan header or its support in VMA has been disabled by a preprocessor macro.");
|
VMA_ASSERT(0 && "VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT is set but required extension or Vulkan 1.2 is not available in your Vulkan header or its support in VMA has been disabled by a preprocessor macro.");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if VMA_VULKAN_VERSION < 1004000
|
|
||||||
VMA_ASSERT(m_VulkanApiVersion < VK_MAKE_VERSION(1, 4, 0) && "vulkanApiVersion >= VK_API_VERSION_1_4 but required Vulkan version is disabled by preprocessor macros.");
|
|
||||||
#endif
|
|
||||||
#if VMA_VULKAN_VERSION < 1003000
|
#if VMA_VULKAN_VERSION < 1003000
|
||||||
VMA_ASSERT(m_VulkanApiVersion < VK_MAKE_VERSION(1, 3, 0) && "vulkanApiVersion >= VK_API_VERSION_1_3 but required Vulkan version is disabled by preprocessor macros.");
|
if(m_VulkanApiVersion >= VK_MAKE_VERSION(1, 3, 0))
|
||||||
|
{
|
||||||
|
VMA_ASSERT(0 && "vulkanApiVersion >= VK_API_VERSION_1_3 but required Vulkan version is disabled by preprocessor macros.");
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if VMA_VULKAN_VERSION < 1002000
|
#if VMA_VULKAN_VERSION < 1002000
|
||||||
VMA_ASSERT(m_VulkanApiVersion < VK_MAKE_VERSION(1, 2, 0) && "vulkanApiVersion >= VK_API_VERSION_1_2 but required Vulkan version is disabled by preprocessor macros.");
|
if(m_VulkanApiVersion >= VK_MAKE_VERSION(1, 2, 0))
|
||||||
|
{
|
||||||
|
VMA_ASSERT(0 && "vulkanApiVersion >= VK_API_VERSION_1_2 but required Vulkan version is disabled by preprocessor macros.");
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if VMA_VULKAN_VERSION < 1001000
|
#if VMA_VULKAN_VERSION < 1001000
|
||||||
VMA_ASSERT(m_VulkanApiVersion < VK_MAKE_VERSION(1, 1, 0) && "vulkanApiVersion >= VK_API_VERSION_1_1 but required Vulkan version is disabled by preprocessor macros.");
|
if(m_VulkanApiVersion >= VK_MAKE_VERSION(1, 1, 0))
|
||||||
|
{
|
||||||
|
VMA_ASSERT(0 && "vulkanApiVersion >= VK_API_VERSION_1_1 but required Vulkan version is disabled by preprocessor macros.");
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if !(VMA_MEMORY_PRIORITY)
|
#if !(VMA_MEMORY_PRIORITY)
|
||||||
if(m_UseExtMemoryPriority)
|
if(m_UseExtMemoryPriority)
|
||||||
@ -13027,19 +12819,6 @@ VmaAllocator_T::VmaAllocator_T(const VmaAllocatorCreateInfo* pCreateInfo) :
|
|||||||
VMA_ASSERT(0 && "VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT is set but required extension is not available in your Vulkan header or its support in VMA has been disabled by a preprocessor macro.");
|
VMA_ASSERT(0 && "VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT is set but required extension is not available in your Vulkan header or its support in VMA has been disabled by a preprocessor macro.");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if !(VMA_KHR_MAINTENANCE5)
|
|
||||||
if(m_UseKhrMaintenance5)
|
|
||||||
{
|
|
||||||
VMA_ASSERT(0 && "VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT is set but required extension is not available in your Vulkan header or its support in VMA has been disabled by a preprocessor macro.");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !(VMA_EXTERNAL_MEMORY_WIN32)
|
|
||||||
if(m_UseKhrExternalMemoryWin32)
|
|
||||||
{
|
|
||||||
VMA_ASSERT(0 && "VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT is set but required extension is not available in your Vulkan header or its support in VMA has been disabled by a preprocessor macro.");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
memset(&m_DeviceMemoryCallbacks, 0 ,sizeof(m_DeviceMemoryCallbacks));
|
memset(&m_DeviceMemoryCallbacks, 0 ,sizeof(m_DeviceMemoryCallbacks));
|
||||||
memset(&m_PhysicalDeviceProperties, 0, sizeof(m_PhysicalDeviceProperties));
|
memset(&m_PhysicalDeviceProperties, 0, sizeof(m_PhysicalDeviceProperties));
|
||||||
@ -13264,9 +13043,7 @@ void VmaAllocator_T::ImportVulkanFunctions_Custom(const VmaVulkanFunctions* pVul
|
|||||||
VMA_COPY_IF_NOT_NULL(vkGetDeviceBufferMemoryRequirements);
|
VMA_COPY_IF_NOT_NULL(vkGetDeviceBufferMemoryRequirements);
|
||||||
VMA_COPY_IF_NOT_NULL(vkGetDeviceImageMemoryRequirements);
|
VMA_COPY_IF_NOT_NULL(vkGetDeviceImageMemoryRequirements);
|
||||||
#endif
|
#endif
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
VMA_COPY_IF_NOT_NULL(vkGetMemoryWin32HandleKHR);
|
|
||||||
#endif
|
|
||||||
#undef VMA_COPY_IF_NOT_NULL
|
#undef VMA_COPY_IF_NOT_NULL
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13320,14 +13097,10 @@ void VmaAllocator_T::ImportVulkanFunctions_Dynamic()
|
|||||||
if(m_VulkanApiVersion >= VK_MAKE_VERSION(1, 1, 0))
|
if(m_VulkanApiVersion >= VK_MAKE_VERSION(1, 1, 0))
|
||||||
{
|
{
|
||||||
VMA_FETCH_INSTANCE_FUNC(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2");
|
VMA_FETCH_INSTANCE_FUNC(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2");
|
||||||
// Try to fetch the pointer from the other name, based on suspected driver bug - see issue #410.
|
|
||||||
VMA_FETCH_INSTANCE_FUNC(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2KHR");
|
|
||||||
}
|
}
|
||||||
else if(m_UseExtMemoryBudget)
|
else if(m_UseExtMemoryBudget)
|
||||||
{
|
{
|
||||||
VMA_FETCH_INSTANCE_FUNC(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2KHR");
|
VMA_FETCH_INSTANCE_FUNC(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2KHR");
|
||||||
// Try to fetch the pointer from the other name, based on suspected driver bug - see issue #410.
|
|
||||||
VMA_FETCH_INSTANCE_FUNC(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, "vkGetPhysicalDeviceMemoryProperties2");
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -13372,12 +13145,7 @@ void VmaAllocator_T::ImportVulkanFunctions_Dynamic()
|
|||||||
VMA_FETCH_DEVICE_FUNC(vkGetDeviceImageMemoryRequirements, PFN_vkGetDeviceImageMemoryRequirementsKHR, "vkGetDeviceImageMemoryRequirementsKHR");
|
VMA_FETCH_DEVICE_FUNC(vkGetDeviceImageMemoryRequirements, PFN_vkGetDeviceImageMemoryRequirementsKHR, "vkGetDeviceImageMemoryRequirementsKHR");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
if (m_UseKhrExternalMemoryWin32)
|
|
||||||
{
|
|
||||||
VMA_FETCH_DEVICE_FUNC(vkGetMemoryWin32HandleKHR, PFN_vkGetMemoryWin32HandleKHR, "vkGetMemoryWin32HandleKHR");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#undef VMA_FETCH_DEVICE_FUNC
|
#undef VMA_FETCH_DEVICE_FUNC
|
||||||
#undef VMA_FETCH_INSTANCE_FUNC
|
#undef VMA_FETCH_INSTANCE_FUNC
|
||||||
}
|
}
|
||||||
@ -13426,12 +13194,6 @@ void VmaAllocator_T::ValidateVulkanFunctions()
|
|||||||
VMA_ASSERT(m_VulkanFunctions.vkGetPhysicalDeviceMemoryProperties2KHR != VMA_NULL);
|
VMA_ASSERT(m_VulkanFunctions.vkGetPhysicalDeviceMemoryProperties2KHR != VMA_NULL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
if (m_UseKhrExternalMemoryWin32)
|
|
||||||
{
|
|
||||||
VMA_ASSERT(m_VulkanFunctions.vkGetMemoryWin32HandleKHR != VMA_NULL);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Not validating these due to suspected driver bugs with these function
|
// Not validating these due to suspected driver bugs with these function
|
||||||
// pointers being null despite correct extension or Vulkan version is enabled.
|
// pointers being null despite correct extension or Vulkan version is enabled.
|
||||||
@ -13782,7 +13544,7 @@ VkResult VmaAllocator_T::AllocateDedicatedMemoryPage(
|
|||||||
}
|
}
|
||||||
|
|
||||||
*pAllocation = m_AllocationObjectAllocator.Allocate(isMappingAllowed);
|
*pAllocation = m_AllocationObjectAllocator.Allocate(isMappingAllowed);
|
||||||
(*pAllocation)->InitDedicatedAllocation(this, pool, memTypeIndex, hMemory, suballocType, pMappedData, size);
|
(*pAllocation)->InitDedicatedAllocation(pool, memTypeIndex, hMemory, suballocType, pMappedData, size);
|
||||||
if (isUserDataString)
|
if (isUserDataString)
|
||||||
(*pAllocation)->SetName(this, (const char*)pUserData);
|
(*pAllocation)->SetName(this, (const char*)pUserData);
|
||||||
else
|
else
|
||||||
@ -14118,6 +13880,8 @@ void VmaAllocator_T::FreeMemory(
|
|||||||
FillAllocation(allocation, VMA_ALLOCATION_FILL_PATTERN_DESTROYED);
|
FillAllocation(allocation, VMA_ALLOCATION_FILL_PATTERN_DESTROYED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allocation->FreeName(this);
|
||||||
|
|
||||||
switch(allocation->GetType())
|
switch(allocation->GetType())
|
||||||
{
|
{
|
||||||
case VmaAllocation_T::ALLOCATION_TYPE_BLOCK:
|
case VmaAllocation_T::ALLOCATION_TYPE_BLOCK:
|
||||||
@ -14588,6 +14352,7 @@ VkResult VmaAllocator_T::Map(VmaAllocation hAllocation, void** ppData)
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
VMA_FALLTHROUGH; // Fallthrough
|
||||||
case VmaAllocation_T::ALLOCATION_TYPE_DEDICATED:
|
case VmaAllocation_T::ALLOCATION_TYPE_DEDICATED:
|
||||||
return hAllocation->DedicatedAllocMap(this, ppData);
|
return hAllocation->DedicatedAllocMap(this, ppData);
|
||||||
default:
|
default:
|
||||||
@ -14801,7 +14566,6 @@ void VmaAllocator_T::FreeDedicatedMemory(const VmaAllocation allocation)
|
|||||||
FreeVulkanMemory(memTypeIndex, allocation->GetSize(), hMemory);
|
FreeVulkanMemory(memTypeIndex, allocation->GetSize(), hMemory);
|
||||||
|
|
||||||
m_Budget.RemoveAllocation(MemoryTypeIndexToHeapIndex(allocation->GetMemoryTypeIndex()), allocation->GetSize());
|
m_Budget.RemoveAllocation(MemoryTypeIndexToHeapIndex(allocation->GetMemoryTypeIndex()), allocation->GetSize());
|
||||||
allocation->Destroy(this);
|
|
||||||
m_AllocationObjectAllocator.Free(allocation);
|
m_AllocationObjectAllocator.Free(allocation);
|
||||||
|
|
||||||
VMA_DEBUG_LOG_FORMAT(" Freed DedicatedMemory MemoryTypeIndex=%" PRIu32, memTypeIndex);
|
VMA_DEBUG_LOG_FORMAT(" Freed DedicatedMemory MemoryTypeIndex=%" PRIu32, memTypeIndex);
|
||||||
@ -15088,7 +14852,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAllocator(
|
|||||||
{
|
{
|
||||||
VMA_ASSERT(pCreateInfo && pAllocator);
|
VMA_ASSERT(pCreateInfo && pAllocator);
|
||||||
VMA_ASSERT(pCreateInfo->vulkanApiVersion == 0 ||
|
VMA_ASSERT(pCreateInfo->vulkanApiVersion == 0 ||
|
||||||
(VK_VERSION_MAJOR(pCreateInfo->vulkanApiVersion) == 1 && VK_VERSION_MINOR(pCreateInfo->vulkanApiVersion) <= 4));
|
(VK_VERSION_MAJOR(pCreateInfo->vulkanApiVersion) == 1 && VK_VERSION_MINOR(pCreateInfo->vulkanApiVersion) <= 3));
|
||||||
VMA_DEBUG_LOG("vmaCreateAllocator");
|
VMA_DEBUG_LOG("vmaCreateAllocator");
|
||||||
*pAllocator = vma_new(pCreateInfo->pAllocationCallbacks, VmaAllocator_T)(pCreateInfo);
|
*pAllocator = vma_new(pCreateInfo->pAllocationCallbacks, VmaAllocator_T)(pCreateInfo);
|
||||||
VkResult result = (*pAllocator)->Init(pCreateInfo);
|
VkResult result = (*pAllocator)->Init(pCreateInfo);
|
||||||
@ -16422,7 +16186,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateImage(
|
|||||||
pImageCreateInfo,
|
pImageCreateInfo,
|
||||||
allocator->GetAllocationCallbacks(),
|
allocator->GetAllocationCallbacks(),
|
||||||
pImage);
|
pImage);
|
||||||
if(res == VK_SUCCESS)
|
if(res >= 0)
|
||||||
{
|
{
|
||||||
VmaSuballocationType suballocType = pImageCreateInfo->tiling == VK_IMAGE_TILING_OPTIMAL ?
|
VmaSuballocationType suballocType = pImageCreateInfo->tiling == VK_IMAGE_TILING_OPTIMAL ?
|
||||||
VMA_SUBALLOCATION_TYPE_IMAGE_OPTIMAL :
|
VMA_SUBALLOCATION_TYPE_IMAGE_OPTIMAL :
|
||||||
@ -16447,14 +16211,14 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateImage(
|
|||||||
1, // allocationCount
|
1, // allocationCount
|
||||||
pAllocation);
|
pAllocation);
|
||||||
|
|
||||||
if(res == VK_SUCCESS)
|
if(res >= 0)
|
||||||
{
|
{
|
||||||
// 3. Bind image with memory.
|
// 3. Bind image with memory.
|
||||||
if((pAllocationCreateInfo->flags & VMA_ALLOCATION_CREATE_DONT_BIND_BIT) == 0)
|
if((pAllocationCreateInfo->flags & VMA_ALLOCATION_CREATE_DONT_BIND_BIT) == 0)
|
||||||
{
|
{
|
||||||
res = allocator->BindImageMemory(*pAllocation, 0, *pImage, VMA_NULL);
|
res = allocator->BindImageMemory(*pAllocation, 0, *pImage, VMA_NULL);
|
||||||
}
|
}
|
||||||
if(res == VK_SUCCESS)
|
if(res >= 0)
|
||||||
{
|
{
|
||||||
// All steps succeeded.
|
// All steps succeeded.
|
||||||
#if VMA_STATS_STRING_ENABLED
|
#if VMA_STATS_STRING_ENABLED
|
||||||
@ -16687,15 +16451,6 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeVirtualBlockStatsString(VmaVirtualBlock V
|
|||||||
VmaFreeString(virtualBlock->GetAllocationCallbacks(), pStatsString);
|
VmaFreeString(virtualBlock->GetAllocationCallbacks(), pStatsString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
VMA_CALL_PRE VkResult VMA_CALL_POST vmaGetMemoryWin32Handle(VmaAllocator VMA_NOT_NULL allocator,
|
|
||||||
VmaAllocation VMA_NOT_NULL allocation, HANDLE hTargetProcess, HANDLE* VMA_NOT_NULL pHandle)
|
|
||||||
{
|
|
||||||
VMA_ASSERT(allocator && allocation && pHandle);
|
|
||||||
VMA_DEBUG_GLOBAL_MUTEX_LOCK;
|
|
||||||
return allocation->GetWin32Handle(allocator, hTargetProcess, pHandle);
|
|
||||||
}
|
|
||||||
#endif // VMA_EXTERNAL_MEMORY_WIN32
|
|
||||||
#endif // VMA_STATS_STRING_ENABLED
|
#endif // VMA_STATS_STRING_ENABLED
|
||||||
#endif // _VMA_PUBLIC_INTERFACE
|
#endif // _VMA_PUBLIC_INTERFACE
|
||||||
|
|
||||||
@ -16836,7 +16591,6 @@ VK_EXT_memory_budget | #VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT
|
|||||||
VK_KHR_buffer_device_address | #VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT
|
VK_KHR_buffer_device_address | #VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT
|
||||||
VK_EXT_memory_priority | #VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT
|
VK_EXT_memory_priority | #VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT
|
||||||
VK_AMD_device_coherent_memory | #VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT
|
VK_AMD_device_coherent_memory | #VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT
|
||||||
VK_KHR_external_memory_win32 | #VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT
|
|
||||||
|
|
||||||
Example with fetching pointers to Vulkan functions dynamically:
|
Example with fetching pointers to Vulkan functions dynamically:
|
||||||
|
|
||||||
@ -17323,7 +17077,7 @@ implementation whether the allocation succeeds or fails. You can change this beh
|
|||||||
by using #VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT flag. With it, the allocation is
|
by using #VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT flag. With it, the allocation is
|
||||||
not made if it would exceed the budget or if the budget is already exceeded.
|
not made if it would exceed the budget or if the budget is already exceeded.
|
||||||
VMA then tries to make the allocation from the next eligible Vulkan memory type.
|
VMA then tries to make the allocation from the next eligible Vulkan memory type.
|
||||||
If all of them fail, the call then fails with `VK_ERROR_OUT_OF_DEVICE_MEMORY`.
|
The all of them fail, the call then fails with `VK_ERROR_OUT_OF_DEVICE_MEMORY`.
|
||||||
Example usage pattern may be to pass the #VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT flag
|
Example usage pattern may be to pass the #VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT flag
|
||||||
when creating resources that are not essential for the application (e.g. the texture
|
when creating resources that are not essential for the application (e.g. the texture
|
||||||
of a specific object) and not to pass it when creating critically important resources
|
of a specific object) and not to pass it when creating critically important resources
|
||||||
@ -18463,8 +18217,7 @@ allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT |
|
|||||||
VkBuffer buf;
|
VkBuffer buf;
|
||||||
VmaAllocation alloc;
|
VmaAllocation alloc;
|
||||||
VmaAllocationInfo allocInfo;
|
VmaAllocationInfo allocInfo;
|
||||||
VkResult result = vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
|
vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
|
||||||
// Check result...
|
|
||||||
|
|
||||||
VkMemoryPropertyFlags memPropFlags;
|
VkMemoryPropertyFlags memPropFlags;
|
||||||
vmaGetAllocationMemoryProperties(allocator, alloc, &memPropFlags);
|
vmaGetAllocationMemoryProperties(allocator, alloc, &memPropFlags);
|
||||||
@ -18475,24 +18228,10 @@ if(memPropFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)
|
|||||||
|
|
||||||
// [Executed in runtime]:
|
// [Executed in runtime]:
|
||||||
memcpy(allocInfo.pMappedData, myData, myDataSize);
|
memcpy(allocInfo.pMappedData, myData, myDataSize);
|
||||||
result = vmaFlushAllocation(allocator, alloc, 0, VK_WHOLE_SIZE);
|
|
||||||
// Check result...
|
|
||||||
|
|
||||||
VkBufferMemoryBarrier bufMemBarrier = { VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER };
|
|
||||||
bufMemBarrier.srcAccessMask = VK_ACCESS_HOST_WRITE_BIT;
|
|
||||||
bufMemBarrier.dstAccessMask = VK_ACCESS_UNIFORM_READ_BIT;
|
|
||||||
bufMemBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
bufMemBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
bufMemBarrier.buffer = buf;
|
|
||||||
bufMemBarrier.offset = 0;
|
|
||||||
bufMemBarrier.size = VK_WHOLE_SIZE;
|
|
||||||
|
|
||||||
vkCmdPipelineBarrier(cmdBuf, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
|
|
||||||
0, 0, nullptr, 1, &bufMemBarrier, 0, nullptr);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Allocation ended up in a non-mappable memory - a transfer using a staging buffer is required.
|
// Allocation ended up in a non-mappable memory - need to transfer.
|
||||||
VkBufferCreateInfo stagingBufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
|
VkBufferCreateInfo stagingBufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
|
||||||
stagingBufCreateInfo.size = 65536;
|
stagingBufCreateInfo.size = 65536;
|
||||||
stagingBufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
|
stagingBufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
|
||||||
@ -18505,46 +18244,18 @@ else
|
|||||||
VkBuffer stagingBuf;
|
VkBuffer stagingBuf;
|
||||||
VmaAllocation stagingAlloc;
|
VmaAllocation stagingAlloc;
|
||||||
VmaAllocationInfo stagingAllocInfo;
|
VmaAllocationInfo stagingAllocInfo;
|
||||||
result = vmaCreateBuffer(allocator, &stagingBufCreateInfo, &stagingAllocCreateInfo,
|
vmaCreateBuffer(allocator, &stagingBufCreateInfo, &stagingAllocCreateInfo,
|
||||||
&stagingBuf, &stagingAlloc, &stagingAllocInfo);
|
&stagingBuf, &stagingAlloc, stagingAllocInfo);
|
||||||
// Check result...
|
|
||||||
|
|
||||||
// [Executed in runtime]:
|
// [Executed in runtime]:
|
||||||
memcpy(stagingAllocInfo.pMappedData, myData, myDataSize);
|
memcpy(stagingAllocInfo.pMappedData, myData, myDataSize);
|
||||||
result = vmaFlushAllocation(allocator, stagingAlloc, 0, VK_WHOLE_SIZE);
|
vmaFlushAllocation(allocator, stagingAlloc, 0, VK_WHOLE_SIZE);
|
||||||
// Check result...
|
//vkCmdPipelineBarrier: VK_ACCESS_HOST_WRITE_BIT --> VK_ACCESS_TRANSFER_READ_BIT
|
||||||
|
|
||||||
VkBufferMemoryBarrier bufMemBarrier = { VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER };
|
|
||||||
bufMemBarrier.srcAccessMask = VK_ACCESS_HOST_WRITE_BIT;
|
|
||||||
bufMemBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
|
|
||||||
bufMemBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
bufMemBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
bufMemBarrier.buffer = stagingBuf;
|
|
||||||
bufMemBarrier.offset = 0;
|
|
||||||
bufMemBarrier.size = VK_WHOLE_SIZE;
|
|
||||||
|
|
||||||
vkCmdPipelineBarrier(cmdBuf, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
|
|
||||||
0, 0, nullptr, 1, &bufMemBarrier, 0, nullptr);
|
|
||||||
|
|
||||||
VkBufferCopy bufCopy = {
|
VkBufferCopy bufCopy = {
|
||||||
0, // srcOffset
|
0, // srcOffset
|
||||||
0, // dstOffset,
|
0, // dstOffset,
|
||||||
myDataSize, // size
|
myDataSize); // size
|
||||||
};
|
|
||||||
|
|
||||||
vkCmdCopyBuffer(cmdBuf, stagingBuf, buf, 1, &bufCopy);
|
vkCmdCopyBuffer(cmdBuf, stagingBuf, buf, 1, &bufCopy);
|
||||||
|
|
||||||
VkBufferMemoryBarrier bufMemBarrier2 = { VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER };
|
|
||||||
bufMemBarrier2.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
|
||||||
bufMemBarrier2.dstAccessMask = VK_ACCESS_UNIFORM_READ_BIT; // We created a uniform buffer
|
|
||||||
bufMemBarrier2.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
bufMemBarrier2.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
|
||||||
bufMemBarrier2.buffer = buf;
|
|
||||||
bufMemBarrier2.offset = 0;
|
|
||||||
bufMemBarrier2.size = VK_WHOLE_SIZE;
|
|
||||||
|
|
||||||
vkCmdPipelineBarrier(cmdBuf, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
|
|
||||||
0, 0, nullptr, 1, &bufMemBarrier2, 0, nullptr);
|
|
||||||
}
|
}
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
@ -18577,22 +18288,14 @@ Please check "CONFIGURATION SECTION" in the code to find macros that you can def
|
|||||||
before each include of this file or change directly in this file to provide
|
before each include of this file or change directly in this file to provide
|
||||||
your own implementation of basic facilities like assert, `min()` and `max()` functions,
|
your own implementation of basic facilities like assert, `min()` and `max()` functions,
|
||||||
mutex, atomic etc.
|
mutex, atomic etc.
|
||||||
|
The library uses its own implementation of containers by default, but you can switch to using
|
||||||
|
STL containers instead.
|
||||||
|
|
||||||
For example, define `VMA_ASSERT(expr)` before including the library to provide
|
For example, define `VMA_ASSERT(expr)` before including the library to provide
|
||||||
custom implementation of the assertion, compatible with your project.
|
custom implementation of the assertion, compatible with your project.
|
||||||
By default it is defined to standard C `assert(expr)` in `_DEBUG` configuration
|
By default it is defined to standard C `assert(expr)` in `_DEBUG` configuration
|
||||||
and empty otherwise.
|
and empty otherwise.
|
||||||
|
|
||||||
Similarly, you can define `VMA_LEAK_LOG_FORMAT` macro to enable printing of leaked (unfreed) allocations,
|
|
||||||
including their names and other parameters. Example:
|
|
||||||
|
|
||||||
\code
|
|
||||||
#define VMA_LEAK_LOG_FORMAT(format, ...) do { \
|
|
||||||
printf((format), __VA_ARGS__); \
|
|
||||||
printf("\n"); \
|
|
||||||
} while(false)
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
\section config_Vulkan_functions Pointers to Vulkan functions
|
\section config_Vulkan_functions Pointers to Vulkan functions
|
||||||
|
|
||||||
There are multiple ways to import pointers to Vulkan functions in the library.
|
There are multiple ways to import pointers to Vulkan functions in the library.
|
||||||
@ -18847,145 +18550,6 @@ Example use of this extension can be found in the code of the sample and test su
|
|||||||
accompanying this library.
|
accompanying this library.
|
||||||
|
|
||||||
|
|
||||||
\page vk_khr_external_memory_win32 VK_KHR_external_memory_win32
|
|
||||||
|
|
||||||
On Windows, the VK_KHR_external_memory_win32 device extension allows exporting a Win32 `HANDLE`
|
|
||||||
of a `VkDeviceMemory` block, to be able to reference the memory on other Vulkan logical devices or instances,
|
|
||||||
in multiple processes, and/or in multiple APIs.
|
|
||||||
VMA offers support for it.
|
|
||||||
|
|
||||||
\section vk_khr_external_memory_win32_initialization Initialization
|
|
||||||
|
|
||||||
1) Make sure the extension is defined in the code by including following header before including VMA:
|
|
||||||
|
|
||||||
\code
|
|
||||||
#include <vulkan/vulkan_win32.h>
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
2) Check if "VK_KHR_external_memory_win32" is available among device extensions.
|
|
||||||
Enable it when creating the `VkDevice` object.
|
|
||||||
|
|
||||||
3) Enable the usage of this extension in VMA by setting flag #VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT
|
|
||||||
when calling vmaCreateAllocator().
|
|
||||||
|
|
||||||
4) Make sure that VMA has access to the `vkGetMemoryWin32HandleKHR` function by either enabling `VMA_DYNAMIC_VULKAN_FUNCTIONS` macro
|
|
||||||
or setting VmaVulkanFunctions::vkGetMemoryWin32HandleKHR explicitly.
|
|
||||||
For more information, see \ref quick_start_initialization_importing_vulkan_functions.
|
|
||||||
|
|
||||||
\section vk_khr_external_memory_win32_preparations Preparations
|
|
||||||
|
|
||||||
You can find example usage among tests, in file "Tests.cpp", function `TestWin32Handles()`.
|
|
||||||
|
|
||||||
To use the extenion, buffers need to be created with `VkExternalMemoryBufferCreateInfoKHR` attached to their `pNext` chain,
|
|
||||||
and memory allocations need to be made with `VkExportMemoryAllocateInfoKHR` attached to their `pNext` chain.
|
|
||||||
To make use of them, you need to use \ref custom_memory_pools. Example:
|
|
||||||
|
|
||||||
\code
|
|
||||||
// Define an example buffer and allocation parameters.
|
|
||||||
VkExternalMemoryBufferCreateInfoKHR externalMemBufCreateInfo = {
|
|
||||||
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
|
|
||||||
nullptr,
|
|
||||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
|
|
||||||
};
|
|
||||||
VkBufferCreateInfo exampleBufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
|
|
||||||
exampleBufCreateInfo.size = 0x10000; // Doesn't matter here.
|
|
||||||
exampleBufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
|
||||||
exampleBufCreateInfo.pNext = &externalMemBufCreateInfo;
|
|
||||||
|
|
||||||
VmaAllocationCreateInfo exampleAllocCreateInfo = {};
|
|
||||||
exampleAllocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
|
|
||||||
|
|
||||||
// Find memory type index to use for the custom pool.
|
|
||||||
uint32_t memTypeIndex;
|
|
||||||
VkResult res = vmaFindMemoryTypeIndexForBufferInfo(g_Allocator,
|
|
||||||
&exampleBufCreateInfo, &exampleAllocCreateInfo, &memTypeIndex);
|
|
||||||
// Check res...
|
|
||||||
|
|
||||||
// Create a custom pool.
|
|
||||||
constexpr static VkExportMemoryAllocateInfoKHR exportMemAllocInfo = {
|
|
||||||
VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
|
|
||||||
nullptr,
|
|
||||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
|
|
||||||
};
|
|
||||||
VmaPoolCreateInfo poolCreateInfo = {};
|
|
||||||
poolCreateInfo.memoryTypeIndex = memTypeIndex;
|
|
||||||
poolCreateInfo.pMemoryAllocateNext = (void*)&exportMemAllocInfo;
|
|
||||||
|
|
||||||
VmaPool pool;
|
|
||||||
res = vmaCreatePool(g_Allocator, &poolCreateInfo, &pool);
|
|
||||||
// Check res...
|
|
||||||
|
|
||||||
// YOUR OTHER CODE COMES HERE....
|
|
||||||
|
|
||||||
// At the end, don't forget to destroy it!
|
|
||||||
vmaDestroyPool(g_Allocator, pool);
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
Note that the structure passed as VmaPoolCreateInfo::pMemoryAllocateNext must remain alive and unchanged
|
|
||||||
for the whole lifetime of the custom pool, because it will be used when the pool allocates a new device memory block.
|
|
||||||
No copy is made internally. This is why variable `exportMemAllocInfo` is defined as `static`.
|
|
||||||
|
|
||||||
\section vk_khr_external_memory_win32_memory_allocation Memory allocation
|
|
||||||
|
|
||||||
Finally, you can create a buffer with an allocation out of the custom pool.
|
|
||||||
The buffer should use same flags as the sample buffer used to find the memory type.
|
|
||||||
It should also specify `VkExternalMemoryBufferCreateInfoKHR` in its `pNext` chain.
|
|
||||||
|
|
||||||
\code
|
|
||||||
VkExternalMemoryBufferCreateInfoKHR externalMemBufCreateInfo = {
|
|
||||||
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
|
|
||||||
nullptr,
|
|
||||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
|
|
||||||
};
|
|
||||||
VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
|
|
||||||
bufCreateInfo.size = // Your desired buffer size.
|
|
||||||
bufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
|
||||||
bufCreateInfo.pNext = &externalMemBufCreateInfo;
|
|
||||||
|
|
||||||
VmaAllocationCreateInfo allocCreateInfo = {};
|
|
||||||
allocCreateInfo.pool = pool; // It is enough to set this one member.
|
|
||||||
|
|
||||||
VkBuffer buf;
|
|
||||||
VmaAllocation alloc;
|
|
||||||
res = vmaCreateBuffer(g_Allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, nullptr);
|
|
||||||
// Check res...
|
|
||||||
|
|
||||||
// YOUR OTHER CODE COMES HERE....
|
|
||||||
|
|
||||||
// At the end, don't forget to destroy it!
|
|
||||||
vmaDestroyBuffer(g_Allocator, buf, alloc);
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
If you need each allocation to have its own device memory block and start at offset 0, you can still do
|
|
||||||
by using #VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT flag. It works also with custom pools.
|
|
||||||
|
|
||||||
\section vk_khr_external_memory_win32_exporting_win32_handle Exporting Win32 handle
|
|
||||||
|
|
||||||
After the allocation is created, you can acquire a Win32 `HANDLE` to the `VkDeviceMemory` block it belongs to.
|
|
||||||
VMA function vmaGetMemoryWin32Handle() is a replacement of the Vulkan function `vkGetMemoryWin32HandleKHR`.
|
|
||||||
|
|
||||||
\code
|
|
||||||
HANDLE handle;
|
|
||||||
res = vmaGetMemoryWin32Handle(g_Allocator, alloc, nullptr, &handle);
|
|
||||||
// Check res...
|
|
||||||
|
|
||||||
// YOUR OTHER CODE COMES HERE....
|
|
||||||
|
|
||||||
// At the end, you must close the handle.
|
|
||||||
CloseHandle(handle);
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
Documentation of the VK_KHR_external_memory_win32 extension states that:
|
|
||||||
|
|
||||||
> If handleType is defined as an NT handle, vkGetMemoryWin32HandleKHR must be called no more than once for each valid unique combination of memory and handleType.
|
|
||||||
|
|
||||||
This is ensured automatically inside VMA.
|
|
||||||
The library fetches the handle on first use, remembers it internally, and closes it when the memory block or dedicated allocation is destroyed.
|
|
||||||
Every time you call vmaGetMemoryWin32Handle(), VMA calls `DuplicateHandle` and returns a new handle that you need to close.
|
|
||||||
|
|
||||||
For further information, please check documentation of the vmaGetMemoryWin32Handle() function.
|
|
||||||
|
|
||||||
|
|
||||||
\page enabling_buffer_device_address Enabling buffer device address
|
\page enabling_buffer_device_address Enabling buffer device address
|
||||||
|
|
||||||
Device extension VK_KHR_buffer_device_address
|
Device extension VK_KHR_buffer_device_address
|
||||||
|
26
src/3rdparty/forkfd/forkfd.c
vendored
26
src/3rdparty/forkfd/forkfd.c
vendored
@ -229,19 +229,6 @@ static int isChildReady(pid_t pid, siginfo_t *info)
|
|||||||
info->si_pid = 0;
|
info->si_pid = 0;
|
||||||
return waitid(P_PID, pid, info, WEXITED | WNOHANG | WNOWAIT) == 0 && info->si_pid == pid;
|
return waitid(P_PID, pid, info, WEXITED | WNOHANG | WNOWAIT) == 0 && info->si_pid == pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__attribute__((unused))
|
|
||||||
#endif
|
|
||||||
static int convertForkfdWaitFlagsToWaitFlags(int ffdoptions)
|
|
||||||
{
|
|
||||||
int woptions = WEXITED;
|
|
||||||
if (ffdoptions & FFDW_NOWAIT)
|
|
||||||
woptions |= WNOWAIT;
|
|
||||||
if (ffdoptions & FFDW_NOHANG)
|
|
||||||
woptions |= WNOHANG;
|
|
||||||
return woptions;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void convertStatusToForkfdInfo(int status, struct forkfd_info *info)
|
static void convertStatusToForkfdInfo(int status, struct forkfd_info *info)
|
||||||
@ -259,6 +246,19 @@ static void convertStatusToForkfdInfo(int status, struct forkfd_info *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__attribute__((unused))
|
||||||
|
#endif
|
||||||
|
static int convertForkfdWaitFlagsToWaitFlags(int ffdoptions)
|
||||||
|
{
|
||||||
|
int woptions = WEXITED;
|
||||||
|
if (ffdoptions & FFDW_NOWAIT)
|
||||||
|
woptions |= WNOWAIT;
|
||||||
|
if (ffdoptions & FFDW_NOHANG)
|
||||||
|
woptions |= WNOHANG;
|
||||||
|
return woptions;
|
||||||
|
}
|
||||||
|
|
||||||
static int tryReaping(pid_t pid, struct pipe_payload *payload)
|
static int tryReaping(pid_t pid, struct pipe_payload *payload)
|
||||||
{
|
{
|
||||||
/* reap the child */
|
/* reap the child */
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user