Compare commits
3383 Commits
tmp-overla
...
temp-fix-c
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ecdc014f41 | ||
![]() |
f5f410036c | ||
![]() |
c9e90976f5 | ||
![]() |
0abf090373 | ||
![]() |
8e9f248df0 | ||
490c32c425 | |||
13abd3784a | |||
d0d16eb7d3 | |||
![]() |
8a94903c09 | ||
0edf3f5680 | |||
c13ad410a6 | |||
576ecbd694 | |||
dea1c1b9eb | |||
a2de3d86de | |||
066b0248df | |||
05b94c9c54 | |||
8d8414cd21 | |||
f418eddf8e | |||
e54a206e15 | |||
78887318e2 | |||
53106934f9 | |||
2b95f2439e | |||
4ab85a3380 | |||
5d14463e1a | |||
c5f4d5e448 | |||
1f2b1d520f | |||
ebe0d7ca5e | |||
62f6255b47 | |||
fd10ac9aca | |||
a8441fc900 | |||
be5c9d45bd | |||
be00902082 | |||
246d59ff0f | |||
47ae0affc8 | |||
69b6c89842 | |||
ed32afd962 | |||
4542b50afc | |||
0de591ac39 | |||
1625b7c37c | |||
c2bf0c1d54 | |||
e8d3996e67 | |||
b0b6fb8a93 | |||
a8e89db291 | |||
9b56b2b2b9 | |||
d4ffd1d91f | |||
c1e4b369b0 | |||
001629a362 | |||
d2aa4ada50 | |||
d428cca124 | |||
9667f89e82 | |||
af0a042da7 | |||
826f6dd9ee | |||
d712f1f83a | |||
d0ff3434cf | |||
54e1b63567 | |||
ed4f33a7bd | |||
8f5a4a4da3 | |||
7d98dfd6bb | |||
0fbcb824d0 | |||
c03b6f6f0b | |||
40f2c92460 | |||
2467f4df79 | |||
53de2c3e4f | |||
5e04548500 | |||
869472b3f0 | |||
3b47f335c6 | |||
1fce2ea743 | |||
694c0547c2 | |||
6524aaf685 | |||
5afba30c69 | |||
1c84cd8198 | |||
a0652430d0 | |||
35ecfefaec | |||
8f51f60948 | |||
3a0af215b9 | |||
614621747e | |||
68cfce1519 | |||
8dedbb1747 | |||
6c0ddf1110 | |||
b900a5e452 | |||
6489f5a8ec | |||
83d9ba341e | |||
b785feb3d7 | |||
e812512e1d | |||
5491c045af | |||
101ec2f3b8 | |||
c3accabef9 | |||
c632396733 | |||
f6f4ab3ebf | |||
a68bd94d11 | |||
f7753bf97f | |||
6f8d5eaa28 | |||
d17b371a83 | |||
c3d8fa1301 | |||
821316b034 | |||
22cf2572d9 | |||
0dfe30502a | |||
f9649e2bf1 | |||
f5b540593c | |||
de168b4115 | |||
878cd0e124 | |||
cdc399a055 | |||
45f8d1783b | |||
cf5147f69f | |||
138b0c970e | |||
0fe3e38b57 | |||
07ed64aae6 | |||
f148bd3795 | |||
6485d8b78a | |||
fdea3dd7e7 | |||
d19277c72f | |||
650f9cfe93 | |||
abdd4117b1 | |||
40e9dc638b | |||
06e3df4ce4 | |||
5cae44ef6d | |||
912ac457a6 | |||
9000ec3013 | |||
6a1056c6a8 | |||
28f7c80c46 | |||
6c9bebd827 | |||
a0fe22095e | |||
8d5ae15040 | |||
a47a975a55 | |||
6c9a882340 | |||
e5052e8bde | |||
9aeb475e99 | |||
c69a047b90 | |||
![]() |
aa09a46fd7 | ||
dfe22c2900 | |||
470f17f21c | |||
bc83fc9c04 | |||
b2cc2dda9c | |||
aba78caa11 | |||
8eeae02cb0 | |||
c7991bcefc | |||
3542c5eb72 | |||
21f811cb6d | |||
1998154ff4 | |||
0faeca806c | |||
f7374737ef | |||
13e3a1c532 | |||
8845b27dce | |||
bc3aab3fa5 | |||
93e193399d | |||
38f4b95635 | |||
29e9506a7f | |||
3059353b38 | |||
0e52b91f97 | |||
805c52b1fd | |||
b08e18ff36 | |||
2d6ad88466 | |||
23919d2275 | |||
6505dd1985 | |||
ec14bee20d | |||
2de0cc5adc | |||
b4993a9032 | |||
f4ee9643ad | |||
![]() |
ad23b1e91d | ||
a93ed3bcb7 | |||
9528fa2c46 | |||
6f598ecc1a | |||
81d29a9f61 | |||
5fed9ac9b5 | |||
1c86912068 | |||
06a2ae281b | |||
c73d6162be | |||
49a29c9c76 | |||
a02da85b55 | |||
55a2682348 | |||
9618bd9202 | |||
be7c51d076 | |||
749181ff4d | |||
e9c9e1c2c7 | |||
f0e8965090 | |||
ce82e9e64a | |||
c334020d8f | |||
838d452843 | |||
584f112548 | |||
3135791395 | |||
![]() |
7865185d98 | ||
665bf41f3c | |||
d1da2f0b9e | |||
7ff0f896e8 | |||
8dbbac43bb | |||
dcb45992bf | |||
aa2544793d | |||
b78f2675d7 | |||
915866f0d9 | |||
9f7bea6e83 | |||
e7acf17b74 | |||
8759813abd | |||
2b2d3c14fe | |||
8d53e59e32 | |||
1b01d10998 | |||
67593a41dd | |||
25e774422c | |||
bc71074d0a | |||
0247ee5f53 | |||
eb4e3bbe68 | |||
5f5ec7b0ed | |||
005bba2a81 | |||
0e7871f9c3 | |||
0e6c56760c | |||
2a96e8be39 | |||
9d3b1d361d | |||
23bb42a06e | |||
b293517d7b | |||
30bfa991f8 | |||
9776b8a05e | |||
![]() |
28f667c7c4 | ||
7e72b74713 | |||
44a386b88c | |||
65aaa13a00 | |||
![]() |
35cbf3b5dc | ||
251234ad43 | |||
d290bdd42a | |||
a331d79900 | |||
76c1a91cfa | |||
6c4a7e0ac3 | |||
c1c97c3d4a | |||
2816b22b38 | |||
1760b8c59f | |||
d7f05fd445 | |||
5cc7e2ae16 | |||
![]() |
a39a6517af | ||
a0a59972e7 | |||
3cd147b49f | |||
1f1520a045 | |||
89d49ae218 | |||
221a7002a9 | |||
bfdcb6bed6 | |||
1c62ba80b1 | |||
101f00e696 | |||
a444c7e0e2 | |||
d809a0260e | |||
fda754145a | |||
62103e7d42 | |||
746684519b | |||
f96a689b3b | |||
![]() |
8fd9516a71 | ||
0fe8239470 | |||
a6c14faa06 | |||
76b3aac802 | |||
59d7fbb052 | |||
156319d2b3 | |||
842e817bf7 | |||
c3994aa443 | |||
f2acfb460f | |||
b7d603b41c | |||
cad1ddc1e8 | |||
2fc8daff10 | |||
a2f075b996 | |||
75ded99ff9 | |||
23c52d9584 | |||
e491573060 | |||
1f232e9ae9 | |||
f915549ee7 | |||
4ffa5e5703 | |||
398d0bf57e | |||
7fc60bff14 | |||
219049bb3b | |||
20614d331d | |||
6adb254bb0 | |||
d923fb784f | |||
74fcb531de | |||
27941b027b | |||
795a874d0b | |||
c565d0764f | |||
a250be980a | |||
96825403a6 | |||
95a018aa32 | |||
c87dd76937 | |||
493c623b13 | |||
adc6659de5 | |||
40d90456ea | |||
f8ca1da138 | |||
1b7ceb0aff | |||
53ff71725a | |||
b6279b7415 | |||
e77821eeca | |||
774b61189c | |||
841b0c2bf5 | |||
42224bf623 | |||
03faffa10b | |||
f1f68b3f9a | |||
19c7ef3067 | |||
cbd6c5735d | |||
0f0436c15e | |||
ab93e568eb | |||
0733bd0d64 | |||
27e39cc533 | |||
9029690a5d | |||
b374fcc98f | |||
8cb10c124e | |||
67ddf68dd9 | |||
e9bf624a49 | |||
db600fd639 | |||
2a68b41b7d | |||
e22e766cf8 | |||
81bb2a143c | |||
dac6091207 | |||
0438944b34 | |||
e3d575b376 | |||
d34c5eec19 | |||
![]() |
79a58eef05 | ||
a1420da027 | |||
a9dd6d004b | |||
816597d6da | |||
8a506b9660 | |||
dcb443416e | |||
7ef2dd8424 | |||
675d42dfc3 | |||
737a4309e8 | |||
cdd406f4bd | |||
13876d50ce | |||
3ea4d3dc07 | |||
70a6c737ec | |||
3468434b6b | |||
90d3fe1e4d | |||
ec263547b5 | |||
![]() |
5d9d246851 | ||
![]() |
502b8e0f08 | ||
a703bbb4d7 | |||
ef19cd395f | |||
0301aff285 | |||
e322f7a3a2 | |||
002752f021 | |||
1685f5824d | |||
bc0ed16537 | |||
d409ce1593 | |||
32cd853294 | |||
f0221ff667 | |||
e0d7b6c78d | |||
e08ac50a5c | |||
851baa40a1 | |||
03a931a876 | |||
ed8184cff0 | |||
3b0d86d8b1 | |||
e9a3a1afd1 | |||
f49ffd7f1c | |||
11a6d840da | |||
![]() |
eb46b55e56 | ||
4dc534aa04 | |||
f250b1f5a0 | |||
ec574b5b09 | |||
b79a5bdd5a | |||
8f86da71fe | |||
fe513a5b61 | |||
7af84255c7 | |||
debd8aab4a | |||
f83ccbc673 | |||
549b854187 | |||
7d1c7a6485 | |||
![]() |
5fb4ff7711 | ||
![]() |
69a2af7e84 | ||
![]() |
b9ec9afce1 | ||
7de86ad61f | |||
0f6044610f | |||
d9db8f8b7c | |||
e21fdfc8e4 | |||
d6de81eed6 | |||
![]() |
54736d5058 | ||
![]() |
9ca1b721b4 | ||
8fcbbcf2e6 | |||
6547d9d3e2 | |||
![]() |
c1edbe7917 | ||
![]() |
bdf260a1b8 | ||
![]() |
04828b7d99 | ||
69419b5f00 | |||
ad3bcee081 | |||
![]() |
51e73e9956 | ||
530008df1d | |||
e17bee5b7f | |||
44b9f6a888 | |||
5e05db3419 | |||
0d4eefd231 | |||
1bb241437c | |||
92113e2da7 | |||
af91bbc221 | |||
e74535df08 | |||
04f006ea9e | |||
47f46637be | |||
7dd8c889f1 | |||
f881ff129f | |||
f12589d335 | |||
bb9a282c7e | |||
21c658b718 | |||
bf49bb354f | |||
7fbd9b67af | |||
e90d8422d0 | |||
65f674b570 | |||
dc66fa5c9c | |||
d4ead6e639 | |||
00466e756e | |||
7bfb7450a2 | |||
de47bf69da | |||
b800a05c55 | |||
![]() |
50dd876fbf | ||
2ed2dd7b13 | |||
![]() |
cc9bee9162 | ||
![]() |
35b1cc806f | ||
b07e8a24f5 | |||
6e272b9ba4 | |||
![]() |
47084bac9f | ||
e6d9d5dcc1 | |||
571646ebc1 | |||
3bef5d15d8 | |||
0fa7e1efbe | |||
b2c2d7b7f1 | |||
9e0b44aae9 | |||
5f059c8751 | |||
9ce83acba4 | |||
ad317a5ffd | |||
![]() |
5cf7283342 | ||
c19f37764d | |||
2e75172c45 | |||
2ec6eca518 | |||
e63d5f40ee | |||
71a333f56e | |||
68ba6378b5 | |||
c456671b53 | |||
0c9e47705d | |||
bbf1c83370 | |||
5081556bb5 | |||
5cabf1301a | |||
![]() |
77ca5ab6b0 | ||
5b79e0b80e | |||
e2003d9212 | |||
f16fcb5bd5 | |||
0a747cd4e3 | |||
aeb42cf8ab | |||
ddfec08514 | |||
85de07e64c | |||
5cc7036aa3 | |||
b0350d8310 | |||
a8d139ca20 | |||
![]() |
4f9a56cbc4 | ||
d6cefef98f | |||
d216a0b505 | |||
475d7d073a | |||
ab8e7ffc64 | |||
9a7f5f1bb4 | |||
9c5b054206 | |||
0b86943641 | |||
03dda57678 | |||
da48a8ef50 | |||
d3cda49d14 | |||
337a7ed292 | |||
![]() |
1a3928f33c | ||
5ebbd8f672 | |||
d85e2beb67 | |||
d7273f087d | |||
![]() |
054950def9 | ||
![]() |
f3433fcd3b | ||
07bb7206c2 | |||
78f56d5582 | |||
![]() |
862ec82942 | ||
bf68e1a547 | |||
464752876f | |||
a7df9d6cdd | |||
98abcfdb9d | |||
a6d8f6c0f3 | |||
a8bd385a5d | |||
17da3b5d82 | |||
80255e67e3 | |||
36746474fd | |||
b5e277ed05 | |||
ee5cec4a50 | |||
bd59781c66 | |||
19352bca16 | |||
7df787b2c1 | |||
1239cab11f | |||
74fa8787d8 | |||
c13aa95eda | |||
cc53c9e476 | |||
8360bfb75c | |||
f405934fe3 | |||
d41d4d0593 | |||
4a6f715421 | |||
2328599e97 | |||
b0f229dd27 | |||
020d1e23ae | |||
34b28850bf | |||
91d7f5d246 | |||
fd487b1f4e | |||
ff2c67d7e8 | |||
c2cb87f897 | |||
a1ddb63329 | |||
7cafdc57e0 | |||
ea5a2efb57 | |||
![]() |
ea3e0b3e8c | ||
![]() |
d571d615a5 | ||
![]() |
3d8c57f4da | ||
![]() |
4e4bf241c8 | ||
c43473e884 | |||
![]() |
d478cc71dd | ||
a3c1605581 | |||
57468ae37e | |||
b0d565e5b6 | |||
35861a49ee | |||
bd45ec0b06 | |||
1c58311440 | |||
056ebb56b1 | |||
1ec2f8d1f2 | |||
161c13e12b | |||
1ee3def5d3 | |||
9d0f452076 | |||
a2243f1b51 | |||
968619d036 | |||
53981c7fb6 | |||
7b4b07a7dd | |||
6b58571813 | |||
c5ed2eb95e | |||
02598e629e | |||
3a5c16f1c9 | |||
1de5cb6a31 | |||
3a65397473 | |||
5e0465e4ec | |||
4a83832120 | |||
ea78f9922e | |||
5892622d68 | |||
ee43cf5722 | |||
6feeede47f | |||
58e20b432a | |||
aaaa0a43af | |||
e953ada0bb | |||
c786f95871 | |||
7bc99fdb32 | |||
826e4ba99c | |||
d2a07c7b78 | |||
44e5f7a8cf | |||
c75aaf5329 | |||
624b231ec4 | |||
0aac74f18f | |||
c4def7992b | |||
9fca9b9953 | |||
49deda4ca2 | |||
cdbb61704d | |||
ffe599b4bd | |||
284d28acbc | |||
17193f6c76 | |||
a1eb5ec81c | |||
7c4391e6aa | |||
d14e768069 | |||
d54757e389 | |||
4e7c65035b | |||
e9b4d2ca68 | |||
10f0e003a9 | |||
e05552f7c4 | |||
29b87b5615 | |||
71a52bbe2a | |||
60d873bd22 | |||
71b1ee940b | |||
![]() |
c544df997e | ||
![]() |
95f51bb01d | ||
3d439aa29b | |||
5dde5dd44e | |||
7e93d4eea3 | |||
2903fb6929 | |||
9ddbb03861 | |||
ded7af53b4 | |||
c03e5e7830 | |||
cc0819aee1 | |||
ccaf6c7404 | |||
5d3c7d1218 | |||
f9c05f3fc0 | |||
2fc30978bc | |||
2a2d0d463a | |||
480ff89bf7 | |||
999134b7ca | |||
f1bf7bfa1b | |||
6526c3ced8 | |||
0ca5b7b69b | |||
d0d20de183 | |||
0e7599bc15 | |||
0d0036cb53 | |||
43cc2f3195 | |||
9d4300b0c6 | |||
bae1c243ce | |||
f1573731bc | |||
3e8a818419 | |||
9fe0505db0 | |||
93806ba82b | |||
505a19ed75 | |||
e455536943 | |||
a702b095a1 | |||
fe98d8c0ea | |||
6fa904765a | |||
7c0e285948 | |||
17931f3b51 | |||
f2f30db98d | |||
d38023f2f3 | |||
82774a9d24 | |||
d138cbfb47 | |||
b0c1184875 | |||
200cc531bd | |||
cfc8d73546 | |||
63922c5056 | |||
70b061b4fd | |||
bfdc42d990 | |||
d1011c9e64 | |||
3208454aa8 | |||
33ab613655 | |||
49289f31ff | |||
d8b0b8d3db | |||
ad85989a3f | |||
cff49e625f | |||
905c0269f3 | |||
![]() |
1a69384e76 | ||
80513d8574 | |||
82a8da0ec3 | |||
10c2254d41 | |||
7ec59cc7b7 | |||
b5253159b6 | |||
736f9f5a69 | |||
cecb25273e | |||
fe7ea8a24c | |||
a2a70cfc41 | |||
9aad06db88 | |||
973e1f9d9a | |||
05dcb007e1 | |||
600a627f6e | |||
04fe37f931 | |||
71e543c68b | |||
b18608f3e9 | |||
09071e2799 | |||
eae40c6c76 | |||
d52326bab3 | |||
c154f265de | |||
6f4dbb661f | |||
c4ba0d1508 | |||
75f6e6b39e | |||
6eb409bb9c | |||
12628e0794 | |||
![]() |
b8d9b5e331 | ||
34465a7fb0 | |||
868d4526a8 | |||
343a874831 | |||
9672605938 | |||
5159ba6b33 | |||
2aa938b0ae | |||
1f745e2c72 | |||
e276558a50 | |||
b75a7c2f8f | |||
e6c732e0cb | |||
7c88968c89 | |||
3dad6294da | |||
f868d51bdd | |||
009dde69cd | |||
6cc4c68dad | |||
43f748a32f | |||
b26bebd59f | |||
88362565f6 | |||
f5e4f20dc1 | |||
fa8a3c8f26 | |||
7bffdab93c | |||
53d029d6da | |||
782e6ea4ed | |||
1c3ded12f4 | |||
06cb321f33 | |||
3ebebe62d7 | |||
a9963669f9 | |||
c4374bc919 | |||
25b2b6724d | |||
f047d47e24 | |||
5e176d67e1 | |||
d66519f197 | |||
d31f79a9bc | |||
1f065df03e | |||
ec351c7a65 | |||
e0dc4130fd | |||
358f8b484f | |||
e24553ca0f | |||
8d63135da3 | |||
254748c3e7 | |||
4f509db181 | |||
33a622cbf4 | |||
e790aa1f19 | |||
27b9f1f626 | |||
ee0d91df5d | |||
9532ce4605 | |||
80280acc93 | |||
ca0dcd830c | |||
186ac84210 | |||
60ff3a7daf | |||
f8c4f5e308 | |||
029a714fc7 | |||
59e001cbf6 | |||
![]() |
2ad0ae8dad | ||
7952274cf0 | |||
60d3a801db | |||
29eb891658 | |||
9bcc83a5d6 | |||
8d116e9956 | |||
b157abebe5 | |||
b7868c0b89 | |||
6a1f0c1eaa | |||
2d39e46f84 | |||
9b0d72aa3d | |||
18fc4155fd | |||
bcd3c3cb57 | |||
91604279c9 | |||
f9f0f44be8 | |||
e819f67500 | |||
74b5e5f6e1 | |||
da3cb514e5 | |||
0062813c73 | |||
5b88ab25bd | |||
6c036a65c9 | |||
38685b5a39 | |||
1c1a14dcdf | |||
f149d5e4b2 | |||
afe707cc3a | |||
b0bd9b4c70 | |||
39684e4554 | |||
17a409e223 | |||
b74e388617 | |||
155f917403 | |||
d8217ec6d0 | |||
039d619c76 | |||
24f8c8491d | |||
c1722a3a8c | |||
61f9bbbdea | |||
07add4b485 | |||
0f5c94bbd1 | |||
b555b8dedc | |||
899bfdc412 | |||
22677d8e1d | |||
f4982b555c | |||
2e60226f23 | |||
91b334b2f2 | |||
248873603f | |||
4c40468856 | |||
2c9e27f209 | |||
100896e080 | |||
6428da84ed | |||
af1e3b0270 | |||
9371c051b1 | |||
6f15bc3b52 | |||
1280f3c0ae | |||
a2d19c1f78 | |||
57d8bde088 | |||
a6a9a12e8f | |||
ef7229d69a | |||
cf258b02f4 | |||
d6e0d27816 | |||
3351a2655d | |||
513885a991 | |||
15cb567c8e | |||
6462ea2a8d | |||
7b347b225a | |||
ec3da20896 | |||
9ccaf9899e | |||
e252d2c990 | |||
6b24f7d87c | |||
086bfffe74 | |||
6c48a36962 | |||
a103d09df4 | |||
7d59f84708 | |||
b023c91118 | |||
bf3b0db785 | |||
0b57ecc665 | |||
a022cb8f62 | |||
bd74f5f7ab | |||
![]() |
5b8b6b4c1e | ||
![]() |
d8e2cc9f4d | ||
![]() |
a3d5b949d2 | ||
c6143da27c | |||
![]() |
fc37318fe7 | ||
![]() |
e8dd6128b5 | ||
b9faf53182 | |||
424fed3cc7 | |||
aec9e0e1b6 | |||
d5163e06c3 | |||
ac02c702e5 | |||
a24f52c51c | |||
a882debee0 | |||
7dbf7255c2 | |||
bdec24b40d | |||
10bd3fb4cb | |||
79b391f3a0 | |||
![]() |
e0030d53bc | ||
1f949121cd | |||
90aa771b30 | |||
d85026db15 | |||
a7110618ff | |||
![]() |
0c0170f77a | ||
9120191fe2 | |||
4c0cca78eb | |||
015c084bda | |||
7eacda5a2b | |||
0db055338a | |||
671d811323 | |||
![]() |
0a02c288aa | ||
![]() |
2632ba6703 | ||
31bd8e6bf3 | |||
7fd71c1694 | |||
70f56167d0 | |||
8a62fa9855 | |||
25e8550739 | |||
5ce41e6f57 | |||
![]() |
6e505a45a1 | ||
1bb7d42cf6 | |||
da91329291 | |||
b498edb189 | |||
e7af825ded | |||
![]() |
bd86edf116 | ||
![]() |
ba1f7acc3f | ||
3441862c96 | |||
96b3463e25 | |||
ff62481f65 | |||
d0b0a0a894 | |||
6eb1004d50 | |||
3b59c11182 | |||
95247b4b14 | |||
03ac301102 | |||
e1ee4dff8d | |||
c8b85d32c5 | |||
ed86f3edb6 | |||
5c74b0964b | |||
2f149ebbe9 | |||
![]() |
f1fb3eb975 | ||
![]() |
d663c9d8da | ||
![]() |
fcd6fac0a7 | ||
![]() |
02518be634 | ||
5cf6689019 | |||
b7666f27d3 | |||
![]() |
a921a4daad | ||
56e0249489 | |||
afb1a64ccb | |||
![]() |
d1972e50cb | ||
839f0cfa41 | |||
86c61ce64f | |||
58ea0d93f1 | |||
48ea173a7d | |||
99530ef4ed | |||
![]() |
a218be3080 | ||
a0437c3f73 | |||
f5ac118fb3 | |||
e000dcb849 | |||
458f50ba73 | |||
83947ea253 | |||
c286fa309e | |||
32bb848838 | |||
c32cf06e42 | |||
4ff3d5aded | |||
![]() |
7ed3ebbc6e | ||
![]() |
2e8fb95e7c | ||
0545a84729 | |||
![]() |
1ca1744c29 | ||
1b1c683f74 | |||
622e1591da | |||
a093112696 | |||
bd2b1a67a7 | |||
08b9b95147 | |||
90e8f94558 | |||
671b6d41c4 | |||
ef2bde11d2 | |||
a22471f1d1 | |||
f9590c8eaa | |||
c547d431eb | |||
e8dd96516c | |||
03b2fc1a61 | |||
fd262d3196 | |||
09b8cdb25e | |||
b2f04fce2d | |||
bae9553848 | |||
![]() |
eca52402bc | ||
b2b6099666 | |||
e990e55eba | |||
a9394aa48e | |||
38b211b581 | |||
0a34e5b300 | |||
33da997193 | |||
52cff88f72 | |||
a8e749f624 | |||
ffd26b420c | |||
7354f07ead | |||
ba8d819c9b | |||
366cb3a059 | |||
99e693d126 | |||
d554cf8dd9 | |||
6681a33a6f | |||
acd84ab105 | |||
d751491489 | |||
59aaba739d | |||
68e341e9d5 | |||
9070999c21 | |||
f48d15a861 | |||
e5f7b31dd4 | |||
04ab677761 | |||
035a3760af | |||
b4c05a9c89 | |||
567212c343 | |||
1587eb16d8 | |||
4c57f07a0f | |||
2bc791437e | |||
c3764fe1e8 | |||
188ccfb0dd | |||
e1c7549ac9 | |||
8e8fdf875d | |||
![]() |
27f29cdfba | ||
394a1373a0 | |||
bb26c1359e | |||
![]() |
26ef4fa85e | ||
f3ea8cd608 | |||
5801a016d4 | |||
2bec6f1f06 | |||
f8a4fb43fb | |||
266d243d8d | |||
d5c177bc90 | |||
a40f2c30ff | |||
7ac5c5b08c | |||
d626ced6f1 | |||
28c3d952db | |||
b67b414a85 | |||
b759857825 | |||
![]() |
88adfc7e54 | ||
28827b62f7 | |||
02f7a6b2bd | |||
ed44bb902d | |||
a6dd22d431 | |||
579447bd89 | |||
![]() |
6e4eb2be28 | ||
cd02495479 | |||
3d3a91103b | |||
![]() |
bb19d96bc5 | ||
15b0c76480 | |||
c46dcdf887 | |||
94b8166a8b | |||
d0d251b53b | |||
9c280630c9 | |||
cda81d5a4d | |||
e9629e3cfd | |||
1b5b6a5da8 | |||
765c82e92d | |||
b701af328a | |||
ed386507e1 | |||
58ac113b76 | |||
24b27ea231 | |||
![]() |
c95b522856 | ||
88a86c025c | |||
![]() |
241248223a | ||
![]() |
ee4645207f | ||
f9855800e0 | |||
7192a1bca3 | |||
0b116a84c9 | |||
6a5bd812b5 | |||
64982e213f | |||
bceb91ffd2 | |||
0710fb724b | |||
46c0da6e69 | |||
0c571db4ad | |||
95b6090afc | |||
ad7bb8e42c | |||
1e4f6b231c | |||
9e8afa8817 | |||
1e8dfe79c6 | |||
c589fdc8db | |||
44c6b6615b | |||
3033b2a044 | |||
ada28d3c65 | |||
c0544eedc6 | |||
0dbbb2eabf | |||
d924e31b42 | |||
a22cd6b6a9 | |||
9607e54985 | |||
3d9d132ccd | |||
a696053545 | |||
6777956005 | |||
db65a6e0fb | |||
0127e8522a | |||
36b55bee42 | |||
27553a2e4e | |||
d931aacef6 | |||
6cbf342cbb | |||
db4d264e70 | |||
3bab9b4868 | |||
b8574c7e56 | |||
86cc29d0cf | |||
![]() |
8ba9efb7d8 | ||
4fc45c7a2b | |||
cb560c01b6 | |||
85dc8d7477 | |||
35e3abb912 | |||
d2c3544c5c | |||
![]() |
45dbe0be69 | ||
![]() |
f974bf2cba | ||
a1322d7c95 | |||
![]() |
83f171b626 | ||
![]() |
c8b611b67f | ||
![]() |
da019efde9 | ||
817c38f715 | |||
4b74b35322 | |||
12b621059a | |||
0b7854323d | |||
e1b2ded7b2 | |||
3be7d74cba | |||
689606887f | |||
89b0465136 | |||
2be14e0ec4 | |||
2982c9ba0a | |||
9ace7e2439 | |||
42012493a8 | |||
91c1759956 | |||
cc516b82ef | |||
885caa4535 | |||
e793a47efb | |||
ccb731f2dd | |||
317a9cf835 | |||
6e39445f80 | |||
e839a25651 | |||
7e9575f7a1 | |||
b49dbb635a | |||
53674fb255 | |||
9dfc480ad1 | |||
ffb95baebe | |||
2d1cce8331 | |||
008aaaa378 | |||
![]() |
473316e246 | ||
![]() |
fd48ff1296 | ||
![]() |
fe045b2b77 | ||
d68d1da1f3 | |||
f4a60fd85c | |||
326ce2d625 | |||
07c4c86049 | |||
b62e1146e1 | |||
014e569258 | |||
ed4c47632f | |||
5bf09bbcdf | |||
f3e7c1e8c8 | |||
![]() |
f70241deba | ||
271231f58e | |||
348d2fa09e | |||
c8b4b4c0fa | |||
99be00fdb1 | |||
1935cd4027 | |||
a12ae67cf7 | |||
c102dfd43d | |||
6bfe7c7a02 | |||
9a116c7c2d | |||
ac74a843d2 | |||
1a502097c7 | |||
c9c08dc7c8 | |||
805c4ab6bc | |||
efb53f5181 | |||
b88ca3e6d1 | |||
9e382dd2a3 | |||
237ef0dcc7 | |||
7bde3f63dd | |||
19df67cd75 | |||
82fc81816e | |||
efdc93fcc6 | |||
52c0742560 | |||
d8897bed99 | |||
0af739ae8a | |||
e843d4e438 | |||
b81b127928 | |||
dd416681fb | |||
406026abba | |||
c3651adf89 | |||
7537cad576 | |||
![]() |
1162ba206d | ||
9d20f170c7 | |||
994eb1ec17 | |||
006025ead0 | |||
fd53b72871 | |||
b0a1cf2c9a | |||
8dcfd392e4 | |||
12720d8b9b | |||
35019443c0 | |||
084bf7daee | |||
82c51d0edb | |||
7ba403dc94 | |||
dc2df8307f | |||
406bfd4304 | |||
c9a8de1d70 | |||
3af51cacbf | |||
a7c660fe61 | |||
e09f0caff3 | |||
![]() |
ba3d49225c | ||
f1eb86c458 | |||
bf9c4af9bb | |||
07d5b8b023 | |||
6a0ddb4bb1 | |||
f958560a99 | |||
1504cb26b0 | |||
2518f60109 | |||
964375e36a | |||
![]() |
d374237d43 | ||
24e44143a1 | |||
628d799c85 | |||
c76d390c92 | |||
bf5151b2d2 | |||
a45c34ae8e | |||
17abae45f1 | |||
20456b52b4 | |||
b852db57ba | |||
![]() |
9ce3890950 | ||
8cb463f4ff | |||
3c1433b6f3 | |||
b2851dbe78 | |||
54c8770692 | |||
0b7841679e | |||
b02a25b7e1 | |||
055863d9c1 | |||
20d7c04305 | |||
7f3e84deb5 | |||
2ba3e6a02e | |||
90ce708ef0 | |||
b87997f59b | |||
ab430cfdfe | |||
67307e72ea | |||
47af235ba9 | |||
120a38ccbe | |||
e42f61dda8 | |||
bab0fd1308 | |||
e4077ea69d | |||
7941ea02f8 | |||
ba26adee0c | |||
f0856b1fda | |||
215e474a99 | |||
20f6700c88 | |||
d89e5fcaef | |||
37e7e1e77c | |||
a69c364746 | |||
5a664c6e98 | |||
35a29befb3 | |||
7df435325b | |||
01377fd229 | |||
868573451f | |||
f06a6e92bc | |||
![]() |
ac1dcdbf06 | ||
7a19a99675 | |||
cebff2ff30 | |||
7a7b392b54 | |||
22925d0dd3 | |||
8022fc3220 | |||
e53e17b8d6 | |||
b435bd2f31 | |||
59f5194265 | |||
b8feef59c8 | |||
5029b97d02 | |||
ecfb89280e | |||
37419bb3f6 | |||
4be4c06671 | |||
80edc0e972 | |||
aa60b9338a | |||
b037816980 | |||
4031d8bcb7 | |||
a210b8297f | |||
a816a067ed | |||
b7160f2f0a | |||
94bad2f30d | |||
cc53900baf | |||
428e65256e | |||
b8211a4d7c | |||
466171d0ef | |||
d50d410a70 | |||
bb89cc51ec | |||
f0b0524c5f | |||
117ccb56ad | |||
4b38eac4da | |||
60e3f690cb | |||
626b2bd071 | |||
acab745078 | |||
5260aaf3b1 | |||
7d56c425f8 | |||
dc99c3532a | |||
ebf3c87912 | |||
5ad16e6a11 | |||
4e26afe0ae | |||
110a35ef5a | |||
de30fda04e | |||
67704cb8aa | |||
6bcb6a0ea6 | |||
be76a37c91 | |||
5593efec01 | |||
93ac4709eb | |||
525bd62557 | |||
bc0a0cdf17 | |||
b0a1af4eb1 | |||
f36d98bb1d | |||
8622372256 | |||
48e0af52e6 | |||
4326d162ba | |||
![]() |
9075ec8269 | ||
db4298c6be | |||
cb19bb7f57 | |||
cf9b3310c0 | |||
91ca3c3c0b | |||
1ca582c651 | |||
3652870483 | |||
de9c7bae7b | |||
df032580c1 | |||
![]() |
54743dbf09 | ||
1f0b21e713 | |||
fa823f0af8 | |||
69eaa19340 | |||
b0271c6e40 | |||
53c03d4679 | |||
9dcd6ba3eb | |||
88fd2b1dd5 | |||
088b92b92c | |||
472534d16e | |||
2050baa139 | |||
c1290a1d1f | |||
649fdc7938 | |||
11e4827738 | |||
4669dfe2cc | |||
38ba022858 | |||
741888ce08 | |||
26bea849cf | |||
75be60a667 | |||
f130c5ddb6 | |||
5c427f4b17 | |||
63ee3db961 | |||
5929dd7129 | |||
85ea7dfc54 | |||
fe5933a972 | |||
37a07f812b | |||
16ed7aebf2 | |||
6c707aad6a | |||
4ba6a00afc | |||
8363e10ccc | |||
21f016f010 | |||
456595fd39 | |||
0c0895e3e6 | |||
d4d9ded09b | |||
![]() |
6ce709dceb | ||
1aebcdbb3a | |||
74855969e7 | |||
8751af6d19 | |||
27e0998a8a | |||
72461c09b4 | |||
372dcacbe4 | |||
e6d0a438ab | |||
6cf4861c3a | |||
d8aa613d94 | |||
ec3eeee46b | |||
5a169ae2f3 | |||
21821601f2 | |||
cbb854a98f | |||
33c6b269d1 | |||
12e64e5ec1 | |||
366d951b0c | |||
e9220d5cd0 | |||
![]() |
19b46b2fca | ||
200695dd89 | |||
a9c0ad53e2 | |||
a54e17e52d | |||
7dd0be9554 | |||
c476c36e40 | |||
f01bc597a8 | |||
9910803574 | |||
9ef7759bf0 | |||
e1698e3750 | |||
6a632f11c8 | |||
b198cef89f | |||
![]() |
b9f6d033be | ||
e1e772a802 | |||
c4beb518de | |||
![]() |
c8acb6dd6c | ||
f3a33a9298 | |||
4bee1e1c8c | |||
836b99ce49 | |||
6eeaecdd67 | |||
5cb2861420 | |||
68c0d77b0c | |||
8820ab41bd | |||
8b2072868d | |||
796683db8e | |||
b70a13fb66 | |||
476c0eab4a | |||
e1b70e9f9c | |||
f2c64517b5 | |||
d195deef5c | |||
![]() |
d0618570eb | ||
1c9829f351 | |||
15983243a4 | |||
4184f890fd | |||
f9cca12886 | |||
9c5a120ba2 | |||
fa09b900c2 | |||
0f1f751785 | |||
a6d7280b8e | |||
7c027f9480 | |||
be20bf2fc0 | |||
1619a5d8e9 | |||
dc8bb3f3a0 | |||
b37482bc3d | |||
e06888cf89 | |||
d55231e5a1 | |||
a52f6d7a31 | |||
a801487ef5 | |||
ca717f0489 | |||
212660f467 | |||
85cdf9a1b9 | |||
![]() |
915998111b | ||
982b498c22 | |||
dc3ff1db3f | |||
9f48852ba4 | |||
1aa7c4c28a | |||
![]() |
811569dc11 | ||
7b8ac04d86 | |||
5aa54207e1 | |||
5184328991 | |||
94a5b7a2e2 | |||
163e6b348f | |||
71712d828d | |||
c971e812d5 | |||
bf1b323b15 | |||
ec9b836d3b | |||
fbe81db29a | |||
9c5522f7c8 | |||
0133d66ada | |||
![]() |
4652f23fa3 | ||
84b94f9e7b | |||
![]() |
04e9ba7169 | ||
![]() |
2d8d30e17b | ||
![]() |
848a4f002d | ||
18e3615a68 | |||
0dfb4ac1ff | |||
e702c9a700 | |||
0030e6a2fc | |||
503d5c0c65 | |||
c65b9fb825 | |||
6eb76f6430 | |||
a540d16ee8 | |||
1131e33026 | |||
![]() |
a468368540 | ||
be2e41c397 | |||
6472a721f0 | |||
b080de79db | |||
e672cf11c3 | |||
3e9dbe7f62 | |||
c010290e75 | |||
214cc3c245 | |||
32fc22db56 | |||
![]() |
07bdbeda84 | ||
![]() |
aca222c3da | ||
![]() |
bada2dcafd | ||
![]() |
6f4612a7cc | ||
![]() |
da101eddef | ||
![]() |
8bc8713beb | ||
![]() |
58e6306b15 | ||
![]() |
5543572cd2 | ||
![]() |
1276380fd2 | ||
![]() |
3923738c8f | ||
324e24ee38 | |||
81c18c2507 | |||
29b405a327 | |||
3912a2a227 | |||
4d0d43ce8e | |||
dab1d14a51 | |||
6965bcc0c9 | |||
d43fbbb307 | |||
29f3af9527 | |||
dcb9312687 | |||
93f6369573 | |||
598ab525da | |||
ee5d7bc16b | |||
a922a097ef | |||
3a10c61a7d | |||
b9d1026ce0 | |||
b57d3afb76 | |||
613148ce5b | |||
0de5156a24 | |||
f881162f81 | |||
![]() |
bc6bbe5fac | ||
668b64380a | |||
014f78b5b5 | |||
0d05fd9b4c | |||
7f404f1c74 | |||
bc2343d5c3 | |||
52dc1ddaa0 | |||
62f238a65e | |||
5539b68009 | |||
9867a82072 | |||
6b49a9db52 | |||
db1d711458 | |||
7760cec5dc | |||
946d39f688 | |||
8a5a306a83 | |||
2534dffaa5 | |||
ef5c6361a5 | |||
0964865568 | |||
8fb1ea857f | |||
dcdcc23488 | |||
b31b44c223 | |||
afe6df1487 | |||
558f449f8c | |||
7177862313 | |||
13595c912c | |||
85424397b1 | |||
96e2bd8493 | |||
b2ee1770d4 | |||
b825a95ec3 | |||
f4936de918 | |||
a7fb567c18 | |||
ae6a5629a5 | |||
68b6d0302a | |||
57daecc2cf | |||
14d03af7ae | |||
d5572eacc5 | |||
b242cc6792 | |||
da7fcd3e52 | |||
8c21668ee1 | |||
bf6cf49133 | |||
eb522af4fe | |||
ff60dd8b18 | |||
f2f8c5b2bd | |||
40ac8250b2 | |||
926f52edf0 | |||
a16e4652e3 | |||
c60366c01f | |||
17f08cff6a | |||
69d4aec55f | |||
b201a67faa | |||
a5bbdd6998 | |||
b4f1edd98b | |||
a9ac87be36 | |||
f9c7442479 | |||
165daee7cb | |||
c8ac760c59 | |||
4102d67d32 | |||
2d5773d11a | |||
07c5ca7f2c | |||
b839a5d076 | |||
0b16b63d87 | |||
8bb0ac27dc | |||
50d5050e9c | |||
63bb2007d8 | |||
f0808b53ab | |||
15c834ebbf | |||
c08151c6fa | |||
98d562af52 | |||
24a37b3c03 | |||
e65f5c07b0 | |||
79558a581d | |||
e96b103536 | |||
297261eb90 | |||
9fa29fe765 | |||
![]() |
c72317943b | ||
7d61132807 | |||
d8491cb7c6 | |||
17e1fef85a | |||
c25f6e998b | |||
af5d2e38f7 | |||
7d9a5b7b10 | |||
abd33a3c0c | |||
2e7cfb86fe | |||
e6aa349c68 | |||
0b9c1c2b86 | |||
5be0e3430d | |||
73ef27f156 | |||
e97aed1e73 | |||
b15c658801 | |||
07d13be678 | |||
54ab8c6abd | |||
bba4a09b2f | |||
1af83aa2dd | |||
088636bc38 | |||
5229448c43 | |||
c19d2f2507 | |||
8574d68aa0 | |||
6c623b0e8c | |||
da30e9a104 | |||
310285b0c2 | |||
eed1beff88 | |||
38d6533f21 | |||
e56471bcd3 | |||
![]() |
84c9a99cca | ||
![]() |
3b1ef223ba | ||
4a3377fcf6 | |||
a874cfb858 | |||
c43725e189 | |||
88db9a17ce | |||
fe7528ee91 | |||
60c208e2d6 | |||
950a35e353 | |||
cd0a6ff5c4 | |||
4d3da4e1d0 | |||
![]() |
51e898324d | ||
4ccbbd3080 | |||
c328049535 | |||
6665ce8951 | |||
e5f98c79b0 | |||
a0ea0153c2 | |||
![]() |
ae223ff52b | ||
3da2dc8213 | |||
337e861486 | |||
6ab14d971c | |||
bd0f5fa71f | |||
55b465f976 | |||
1d18a2a5ec | |||
1da8ed2a97 | |||
2fb4de1f8c | |||
5b0f1e7649 | |||
a297a6c444 | |||
a5c4a44df6 | |||
3c74d45c9e | |||
8f1876b4f0 | |||
bf8a73b4a7 | |||
6958ec3f7f | |||
b32fd73b24 | |||
2a4f350940 | |||
765f2a1bca | |||
![]() |
a22573e243 | ||
e7f1de5e11 | |||
f4463cd865 | |||
d83c0969f6 | |||
6706ae5712 | |||
4bfa256ea4 | |||
4e597a5cff | |||
76d8e8693f | |||
![]() |
e4eede8318 | ||
9c62a8c8e5 | |||
a9dc1f6d00 | |||
fb330dd110 | |||
8931c4b18d | |||
0baae18375 | |||
38ed95fe8d | |||
89b10b8d42 | |||
a37dceb139 | |||
a5c984a57d | |||
d09c5bdc28 | |||
![]() |
14c9f64def | ||
31aefdeec5 | |||
059f3c1a7e | |||
![]() |
2841b2be39 | ||
![]() |
19785b96c4 | ||
![]() |
0c603cffd1 | ||
78383f7a9f | |||
daca00f187 | |||
b39273c071 | |||
4b2b5fe4b8 | |||
453be9cc8a | |||
c60e5211d7 | |||
594945eb01 | |||
1ba4aa37c9 | |||
ed29ff944a | |||
40343a76c5 | |||
ce2dc6ef2b | |||
582205c134 | |||
b454a12233 | |||
ee7034949f | |||
d6fd092495 | |||
73bd0ef12d | |||
8447f45f09 | |||
7a875922e7 | |||
29716abcd1 | |||
3e1aa6cbf3 | |||
a976fe42ef | |||
c549a9dd46 | |||
fe7c4fb4a2 | |||
5a77748e47 | |||
98c74c6a6e | |||
![]() |
409074aae5 | ||
![]() |
7b8db971d4 | ||
51bce18b6f | |||
f48b46860b | |||
360443a483 | |||
d8198b27df | |||
680b70f093 | |||
5de56f9596 | |||
cf93b65a65 | |||
![]() |
5afa4b1dc8 | ||
1648a79036 | |||
9c4523b1fd | |||
847c091ae8 | |||
493c99078a | |||
6fa4581d92 | |||
bd25df3d68 | |||
c930cd7450 | |||
94937984b0 | |||
e0ffb911a2 | |||
f78ca97cfc | |||
e9e4f6af9e | |||
eaf0528749 | |||
3db948cffe | |||
![]() |
ff0124418f | ||
fc7fdc5c4e | |||
![]() |
233158b555 | ||
![]() |
3c9956a3ac | ||
![]() |
a489d77c5b | ||
![]() |
c04c5ac4f6 | ||
f2557d137a | |||
![]() |
38058833f1 | ||
![]() |
6a6ccb26ec | ||
24ef1cf07e | |||
![]() |
821ecbe805 | ||
![]() |
0373e300ea | ||
22a8a3b214 | |||
cb8b424c6b | |||
a52eb7489f | |||
85f980c517 | |||
4a373afa5f | |||
793135e190 | |||
bc2ce31d79 | |||
21bdeb5cc0 | |||
af54bbd61c | |||
03e04d4db7 | |||
![]() |
fe3ce61528 | ||
0cea9353fd | |||
![]() |
27fa33c143 | ||
498397f7bd | |||
4c83e6bac0 | |||
94dcfe7a77 | |||
e8ab0137f8 | |||
e0f41d32c9 | |||
bcac081ad5 | |||
95d0e04ed1 | |||
![]() |
2269759fdf | ||
![]() |
e287122af6 | ||
![]() |
318112379d | ||
c60be37f3e | |||
da1140f75e | |||
7a8a074a30 | |||
![]() |
8e8b4ec3a3 | ||
1eb73d1596 | |||
944da82eaf | |||
feead324fd | |||
![]() |
d9c25f0192 | ||
9a855f94fc | |||
4c4d36c25e | |||
9cac5fa681 | |||
e98f94d778 | |||
d7d7859128 | |||
ba546976c3 | |||
28fca2c588 | |||
dd2cdd436f | |||
e339c7798e | |||
30158b6ed0 | |||
91abb70006 | |||
c20caec7f0 | |||
f48ad37ef0 | |||
33e9e1060f | |||
e88a715364 | |||
1ec11363bd | |||
50f9c08979 | |||
403bb357ae | |||
![]() |
f2b95b9eae | ||
57b7833d1e | |||
74b0edce74 | |||
41dbb06b76 | |||
0a3b4d4c64 | |||
aa4579c35f | |||
abc040f26c | |||
cb2f5d498e | |||
e21a475fae | |||
edb5e19442 | |||
6d705693a3 | |||
2515a125c8 | |||
f24a4750bd | |||
57bd1a0ae1 | |||
e420caab19 | |||
d5bcc375ba | |||
01162f756a | |||
830a45a18a | |||
10162d68e3 | |||
4952fb1669 | |||
f38c54d56e | |||
80684ca41c | |||
1a1f2912e6 | |||
1d302df4f8 | |||
2d423479bd | |||
9085b7e847 | |||
da38cb622e | |||
4c4e798f35 | |||
9f4b090eec | |||
d675cf20a1 | |||
78391def6e | |||
22abc7f080 | |||
30b3bf2b57 | |||
9dbfc7ca8b | |||
95175c3b5e | |||
41cc3ffaf3 | |||
5c490d4377 | |||
fe41c1ec0b | |||
28a16c4374 | |||
d95dbd1f4f | |||
92c9dbf343 | |||
db7bb5bdd2 | |||
661b01825f | |||
4cf3977a74 | |||
466d37e0b1 | |||
de8062053d | |||
48816d462e | |||
5f83495e4c | |||
66af6e4f32 | |||
5a6a6ef0c6 | |||
220310ffc5 | |||
c8d31807d2 | |||
00a3d99f93 | |||
dc257318d0 | |||
c05d83bc76 | |||
f4411b58ad | |||
9cc5af64c6 | |||
b4b47e6ba2 | |||
4f48179437 | |||
65aa55babc | |||
280d2a9a17 | |||
a93043153a | |||
e75059e3b6 | |||
6dd3e7d84d | |||
5943e7d02e | |||
0c09700f20 | |||
![]() |
a4a1074f3d | ||
4e9fffc289 | |||
1bbc1eed62 | |||
![]() |
fe3264fafd | ||
![]() |
b0786d069c | ||
9cdf01085f | |||
2ffd530217 | |||
19de81afe5 | |||
190fd795a9 | |||
7bc893c827 | |||
4f92367bde | |||
![]() |
6e23433c1a | ||
7e7c927602 | |||
8885fb5929 | |||
7463da6c72 | |||
e0085bfd24 | |||
e6be2af061 | |||
bd03fe1ab0 | |||
d94a3996a4 | |||
ae3263e525 | |||
9e45468835 | |||
096936fe1d | |||
727d430811 | |||
a322b43e3d | |||
44862110de | |||
f61f26b033 | |||
d109ea5ee5 | |||
f9b1e8f000 | |||
f7b6b7dda3 | |||
14856e149f | |||
![]() |
f01617bb15 | ||
8955b8b992 | |||
ed21506f26 | |||
![]() |
fc81eb74e7 | ||
69c587888b | |||
001f7c92d1 | |||
a31bd3f7b5 | |||
abb7364912 | |||
24ea6b713d | |||
39d0bf9044 | |||
c26f470cfe | |||
189a6c783d | |||
fb47c131df | |||
0b626703f9 | |||
3e77765362 | |||
1fb62d1272 | |||
b1b020806e | |||
4c30dc3431 | |||
b8c7ff564c | |||
d0578a94ee | |||
824b2c689e | |||
4653d253b3 | |||
803636f888 | |||
f2b0aef4dc | |||
b8af5e1062 | |||
ec5fc1adcc | |||
f2224ccfce | |||
0c506a6ef0 | |||
7bea1416b6 | |||
94e180bd80 | |||
![]() |
be2bc97eba | ||
1f8f4c8cfe | |||
973982a8e5 | |||
20b47d77e1 | |||
b56957f0af | |||
ee7f307c9a | |||
a9b184bbc4 | |||
282e8499b1 | |||
d95e9c7cf8 | |||
![]() |
b4ae962447 | ||
0d8a8ce03b | |||
a2febb8d91 | |||
e2722aec6b | |||
0e48bb26af | |||
2a6df7dfe5 | |||
1e3ffd1f87 | |||
![]() |
bc86eb1780 | ||
![]() |
0115568ca6 | ||
e233e492df | |||
71d6fbcd51 | |||
146fe1decf | |||
60e877bb78 | |||
5dcb6fb22f | |||
a74f0dc0e3 | |||
6f5ef60f1b | |||
0c01ad9300 | |||
67cbce0b02 | |||
![]() |
03a4d3c33f | ||
![]() |
e37988fa21 | ||
f972a3c314 | |||
bda8076d35 | |||
05fd2acf89 | |||
2df040ed58 | |||
888d180164 | |||
04b7f052e1 | |||
213b4f76ee | |||
19f3a93e22 | |||
f0a22f5dd0 | |||
ee5c13c45c | |||
e77e6ba308 | |||
d772c6ea31 | |||
1c0230b573 | |||
e317e9f6c7 | |||
8c5e36d0a9 | |||
4453509d83 | |||
367ecff15d | |||
bde215a60c | |||
cfdb5b9a8b | |||
65ea5020c4 | |||
3b01dbdeb1 | |||
02f44049a8 | |||
d54a4a32f3 | |||
3afe218a7d | |||
9f8dd4f9e5 | |||
![]() |
eef5b506d5 | ||
e82827bf6e | |||
77619f5274 | |||
56d6666689 | |||
![]() |
20605c4b51 | ||
![]() |
6cd4363c0c | ||
ed8aa154a3 | |||
![]() |
5df0f8bffb | ||
b8567b704b | |||
43c497051a | |||
![]() |
e30d8f45ef | ||
19e63bb51e | |||
8673d2e92a | |||
f996aeaf76 | |||
efcfe0ffdf | |||
![]() |
d0cc9b522d | ||
cef4d344f9 | |||
003a97e0bf | |||
ad9b919962 | |||
ce33388413 | |||
e3e6dc41a7 | |||
f7386b9757 | |||
d4e38d99b2 | |||
abfdd1c697 | |||
5343d0f494 | |||
8a2228a597 | |||
79f99becaf | |||
f35f7bd97a | |||
c83099e987 | |||
d0c159ae97 | |||
ca72ff599a | |||
1761d65b25 | |||
a450bf330c | |||
52a475287d | |||
![]() |
f5740ec8cf | ||
435476cb87 | |||
cc296ef179 | |||
d38dfbd13d | |||
b117b8e818 | |||
9491e7d7c2 | |||
a5ac142a31 | |||
ff1d307e25 | |||
00227edf4c | |||
a661ef42fb | |||
f78c407aff | |||
5f3b898638 | |||
37cdfac6b9 | |||
42ff69db25 | |||
8d60e6fa38 | |||
a33b261473 | |||
847bb4c4e0 | |||
4353bc9190 | |||
1fcca29b47 | |||
18b693bdbd | |||
![]() |
20a4cdfd70 | ||
ab3a6e050c | |||
3a53ae8d4b | |||
852cdd476b | |||
5231d06d4c | |||
dcb905a58f | |||
e64166652b | |||
e2e2a98573 | |||
![]() |
d5d235c44f | ||
2278aa0da9 | |||
12b6ddaf95 | |||
5b22713c22 | |||
![]() |
67d12bb519 | ||
ae9bbb4d03 | |||
d119e163d0 | |||
2d1b05a15f | |||
c498abb103 | |||
395e0c79bd | |||
cec7db2004 | |||
c64cea14ed | |||
340f452da8 | |||
a6755f2f1f | |||
c0423c871d | |||
fc85490c2d | |||
0a1b6a3b4a | |||
0b5c2685db | |||
60890ccf9d | |||
2ff1d62b87 | |||
d6977b5387 | |||
819af2094b | |||
31530d0da9 | |||
de0de9381d | |||
70ff8f4a97 | |||
f6d5a95513 | |||
0716394423 | |||
322dc72316 | |||
007f1b74a6 | |||
6701db773e | |||
ab18dbb67e | |||
c6928843dc | |||
031dcbf15b | |||
50975026ff | |||
b5f17f6b8a | |||
e0499387ca | |||
0feb03e680 | |||
738bb309f9 | |||
de9ea94fc6 | |||
f0c991a380 | |||
924fe50e97 | |||
39fb33f0b7 | |||
ff4ffb18d4 | |||
6669eca820 | |||
9531a8a10a | |||
a200986273 | |||
35e3dc9192 | |||
57511782cf | |||
d8d1f66dbc | |||
d936f6977f | |||
f829fefe8a | |||
1857548b5c | |||
5192b60e57 | |||
60475b9549 | |||
fa5837c5e8 | |||
52da1b6e2b | |||
f37b9ffdcb | |||
9c79a21eb0 | |||
82cf0ab468 | |||
![]() |
f6aafd5186 | ||
fa4ab69abf | |||
92a56bbe6a | |||
7d90ff08f3 | |||
b2df29e50d | |||
1c883fe646 | |||
68a52a7fa9 | |||
b6c9c9c449 | |||
1135c2cd17 | |||
b1f40955d9 | |||
38e569cb1f | |||
12728d43f8 | |||
![]() |
635ab9d1dd | ||
44d7706fe1 | |||
6608caef0e | |||
180aff7b74 | |||
![]() |
73e404697b | ||
![]() |
e7cf132e57 | ||
![]() |
9b243b9a53 | ||
332aed6399 | |||
e34ff4926f | |||
![]() |
60e823fe22 | ||
![]() |
c4b9cb0af0 | ||
8645b73cd8 | |||
ef4505a158 | |||
38e06b19f6 | |||
fb2f100d89 | |||
451bd5fd79 | |||
7c5a44c71f | |||
f457dc122d | |||
a21f5ec562 | |||
d6d44ccc77 | |||
5ba727861d | |||
![]() |
e139a3f9a5 | ||
![]() |
9339dc6dd1 | ||
1c1b78eab5 | |||
e277e8d085 | |||
897f943ca0 | |||
31ad86884c | |||
38ced52d34 | |||
38c8378f52 | |||
0c5014aaef | |||
5ca7c85e10 | |||
d9e4f5a7e8 | |||
9fef5a2db4 | |||
59bae6d149 | |||
f621f03e4b | |||
bbe6b661df | |||
9e74c071b6 | |||
489cecb954 | |||
69be8039e8 | |||
75a5ea01c1 | |||
4af74f453d | |||
b6572c5430 | |||
d46273563e | |||
dadabf5cf3 | |||
92e41bb1a8 | |||
52f326ed48 | |||
be40d86e35 | |||
3ec3c5b557 | |||
c9c013f53b | |||
a1397e48b9 | |||
f28bb6992f | |||
0d750d7c06 | |||
63bde1063f | |||
13e5e55f3f | |||
6022cd015f | |||
d1cd3ec9ba | |||
0840469ccd | |||
57d0e4969d | |||
60066b0b80 | |||
d1bd33407d | |||
f874f6817d | |||
eaea5c8904 | |||
10b04fa316 | |||
d051dd01ed | |||
a40d9ce553 | |||
9fe469c110 | |||
dd9dfadaac | |||
9aae62a59b | |||
80cecee5b7 | |||
5527cd4ba0 | |||
6da097136c | |||
8e4d5740c8 | |||
00e012d564 | |||
c10e05ceb8 | |||
fffb185dbf | |||
6389471c40 | |||
83c6f09746 | |||
d104c77af8 | |||
709012187a | |||
153e001c74 | |||
![]() |
cc085e228d | ||
24b5d5aa61 | |||
a1e50cfe6b | |||
![]() |
cd57c9e310 | ||
0e15850a7e | |||
![]() |
e32457952b | ||
![]() |
1f28af6a79 | ||
cc6defa244 | |||
a2ce3b342a | |||
df1e9b662b | |||
6a28d14f72 | |||
88210a6ddf | |||
7e99e396a9 | |||
df45257ec5 | |||
6ee6a42d10 | |||
0ab7e32158 | |||
015d5eda88 | |||
f1f2d9fe74 | |||
38589de10c | |||
35490c3ead | |||
![]() |
2fb9285371 | ||
![]() |
7b0aca2a53 | ||
64e65442a1 | |||
395e91b87c | |||
af6ba4dce5 | |||
efbe4fd6c2 | |||
c939b4df18 | |||
![]() |
63de813914 | ||
![]() |
4aa0e2136c | ||
![]() |
bf361fc9a0 | ||
dac4e48bb7 | |||
804e90b42d | |||
58cdab8b97 | |||
3657bb5141 | |||
4e216b1025 | |||
3dcddf83bf | |||
2e80265dc3 | |||
d2ff21e75d | |||
be8879718e | |||
757da61606 | |||
baa4b5e93c | |||
452674db30 | |||
c5d0a23204 | |||
e08c2128af | |||
3a1af7444c | |||
![]() |
5911b6b313 | ||
50d5c03e2d | |||
ad2a8400e9 | |||
56a4ee3fdb | |||
3e6e9ce01b | |||
9f07c03d20 | |||
906b8a241a | |||
a66b9490a1 | |||
7d6c08beb8 | |||
1c61f3e018 | |||
189e96ba68 | |||
974dc28476 | |||
51b67218ae | |||
78cf61cc62 | |||
08d1df4729 | |||
![]() |
a2248e2ec4 | ||
e75e29ee47 | |||
c6e28f6513 | |||
c92163b2b0 | |||
f3a3a976b7 | |||
ddad044cfe | |||
872ac349ad | |||
810088bf9b | |||
d08ccd526f | |||
77208a0871 | |||
36b7f5d27e | |||
ec6fcac628 | |||
f8df6286c2 | |||
ec116e3d49 | |||
cd48b132ff | |||
de09db6b4d | |||
68cc982dcb | |||
![]() |
76208a5670 | ||
11e9ad412e | |||
56116bbdf4 | |||
ae863f34df | |||
0f07848efe | |||
a605775298 | |||
379ee3e527 | |||
14d1dc5df5 | |||
795c4a3462 | |||
956fd64653 | |||
39b3327490 | |||
6a841acab6 | |||
dbf48758d9 | |||
![]() |
7c54de4ab3 | ||
cdfaddbb1d | |||
068f4e4592 | |||
8a9c4bd907 | |||
5314161491 | |||
f780057d52 | |||
5e30bd43f8 | |||
a048354e9f | |||
86e24ea10c | |||
4a08eb0707 | |||
19361bf2f4 | |||
8e981efe38 | |||
89ce270f61 | |||
![]() |
cebd025e02 | ||
2be20e9ece | |||
94c8bbec9c | |||
02495f1e3c | |||
6a1414dc58 | |||
01cb35cc8f | |||
a5a9493ffd | |||
8c509f98e1 | |||
67d3613d1a | |||
9ff3482af4 | |||
fc412be5ac | |||
b9c9b00171 | |||
a7106883e8 | |||
2bfc0da301 | |||
a010d97204 | |||
4e2e28b8c3 | |||
68221b7eba | |||
b05651199b | |||
47d13fecfb | |||
03000549fb | |||
11df80fc6d | |||
c2e80cfaa3 | |||
f3db5a0965 | |||
974eca79d3 | |||
41ada0381c | |||
677e027f20 | |||
faf08954d5 | |||
f2df4e0076 | |||
![]() |
08a4cb0727 | ||
6477fcf40f | |||
1a93bc2db8 | |||
ffcccf654c | |||
6f3e498e7d | |||
80415ee203 | |||
91c64b5ca3 | |||
636fe3df0e | |||
b40ac82052 | |||
ccda7ef996 | |||
6dc9f89c6a | |||
f81fe8a3a0 | |||
3e738a60d0 | |||
dfa7e1cd9f | |||
d809853513 | |||
d9c5f0d25f | |||
46c9872afa | |||
47402dcb91 | |||
7b66f73558 | |||
ad489b7164 | |||
b1f1a1ca60 | |||
28cd16ec44 | |||
![]() |
0f7a90d4ad | ||
![]() |
f2695c9c1d | ||
638adb2f1a | |||
f12b4e53aa | |||
753323af15 | |||
192314b9d3 | |||
c01dea5711 | |||
1778efc897 | |||
d8830048f7 | |||
8ff556cf75 | |||
763f117c48 | |||
a24b5a74b5 | |||
ffb94e88b0 | |||
7954e672c5 | |||
921d74dd36 | |||
![]() |
49b66ad914 | ||
![]() |
f875655418 | ||
1bb702df1e | |||
e7d71ce9cf | |||
ae112a38ab | |||
b088d1e996 | |||
807aefd623 | |||
62ca9bcd0a | |||
![]() |
dd00e8ecd6 | ||
![]() |
8768cd6a6a | ||
2abe733771 | |||
515b4d9a84 | |||
617f6bc320 | |||
342ceba5bf | |||
![]() |
efa2ffaa2d | ||
2c5379b405 | |||
d7429e76b8 | |||
10705807fe | |||
02226ef653 | |||
dc1db0791e | |||
8c353931af | |||
3caefc89ee | |||
462d566485 | |||
d1112ae0d0 | |||
![]() |
b4f8e3f01b | ||
cad09e5227 | |||
092deb88b0 | |||
77394ef1db | |||
00a0f06241 | |||
354b2a7b1d | |||
0a95a0852e | |||
994e9f702f | |||
b841167ee3 | |||
c35d6b1854 | |||
1bc2a98a9d | |||
![]() |
06c5608646 | ||
ea2e6995a9 | |||
d2c0df2842 | |||
6d10c24062 | |||
be70fcd7f2 | |||
87c18fbbc5 | |||
edcec3aee0 | |||
db0121a009 | |||
79003fa0c4 | |||
93a46f7d08 | |||
78ba097331 | |||
559d01e129 | |||
f3fec859ba | |||
0bedf9cf07 | |||
54a4e9b697 | |||
36d09d9029 | |||
![]() |
15bb6e63e8 | ||
![]() |
e4605cb155 | ||
![]() |
f7ca86369d | ||
c19112d755 | |||
fd130a711e | |||
86fb8062d7 | |||
8efd804685 | |||
![]() |
370a6175e0 | ||
![]() |
937eff4112 | ||
6b9062508a | |||
db4bb49aae | |||
3685347b41 | |||
![]() |
842e71a1ef | ||
cd0a028624 | |||
e35dab4895 | |||
5c8f8a7403 | |||
3dde6360ff | |||
62dba60e49 | |||
e3f8c887fb | |||
04ec64b251 | |||
2264590d8c | |||
647521af20 | |||
![]() |
057b78c40c | ||
9dd6b0842a | |||
ae433393af | |||
ea8975cb27 | |||
5dc1183580 | |||
84e71195c9 | |||
77702245b1 | |||
0964ae5266 | |||
d09646a40b | |||
c482e22f3f | |||
fdb68e1847 | |||
e268fe6e64 | |||
0cd0058e27 | |||
06a8f55104 | |||
95ad34c5d7 | |||
![]() |
03a29090b5 | ||
5f056fb742 | |||
0936f2f52c | |||
3d6e7cd67c | |||
85776521f8 | |||
26ba7573e6 | |||
7799890d8e | |||
3125cfceec | |||
59e1c2f629 | |||
88ffee6953 | |||
dcf44dfe8e | |||
ed8e110b5a | |||
f13940e883 | |||
f037244e2c | |||
bc3d7faab7 | |||
aea125fe9d | |||
![]() |
808fa22a7a | ||
![]() |
a8ea1ea1b7 | ||
![]() |
7bbbb9ba8a | ||
6d95baf67a | |||
d237681cad | |||
68ab4dd28a | |||
![]() |
831bb6bc77 | ||
3dc2b009ae | |||
5206124ce1 | |||
d243a0b03a | |||
7e60e7a185 | |||
![]() |
f51286cb8c | ||
0a09fe7831 | |||
07df76496d | |||
f48e876459 | |||
f051d47cdb | |||
63d5b974cc | |||
bf8a26b745 | |||
26d0f7ed23 | |||
3ba5461af0 | |||
b97da8a3de | |||
253dbdbb39 | |||
dc3f073d1c | |||
4046fade9b | |||
eee5a0e4ec | |||
ff40f3967a | |||
f9d09a1209 | |||
![]() |
5780142679 | ||
![]() |
4633bb9939 | ||
4f8f0f3208 | |||
aa81a05de8 | |||
3601924acb | |||
a663ece5a3 | |||
9b308f27ad | |||
385b34b9b8 | |||
eea3751c5b | |||
53d805abcb | |||
![]() |
6ab359e525 | ||
c82b8c5944 | |||
a075f45526 | |||
14ccda75f6 | |||
bcacf47cbc | |||
fd959bf658 | |||
cb8714fd8a | |||
![]() |
2de704da68 | ||
8c5cb8359a | |||
30963eecfb | |||
e207cba8cc | |||
8285a12f4e | |||
6dcb4c9b4f | |||
9112d19cf7 | |||
944ab36657 | |||
2142288eae | |||
87b551e836 | |||
5a570be9f5 | |||
543685fe3d | |||
78872b3360 | |||
332f310b81 | |||
306edb7477 | |||
bae2cb730a | |||
81def64739 | |||
d83acac66b | |||
725477fdb1 | |||
ac2d342d88 | |||
97ace45e42 | |||
1d28ff7f2b | |||
4c1b7f311d | |||
7a27f64ecb | |||
ccb3cb0b9b | |||
c27d30f3ea | |||
002b183506 | |||
![]() |
4482d70f6e | ||
5a541cfcec | |||
15350c70be | |||
89996da1f5 | |||
c7c8ee6168 | |||
6576148722 | |||
c3001812dc | |||
3984586292 | |||
33317b4647 | |||
76489fbe7c | |||
a16eacf615 | |||
88b14fdf60 | |||
a8bfa91633 | |||
745e356300 | |||
42318e358a | |||
e782d35d34 | |||
35c6d68d35 | |||
e4faed120d | |||
aa919f3e82 | |||
e7c90438e0 | |||
![]() |
e3f89237fe | ||
![]() |
9cb7ecefce | ||
18c88eac17 | |||
fee7a34575 | |||
925cd40460 | |||
bd59b21907 | |||
657ff6ef5e | |||
b683fcb628 | |||
d3670823b3 | |||
051ee76f7f | |||
642e5ec78c | |||
![]() |
395dfff103 | ||
aa123555d7 | |||
a4842eb8db | |||
67a6050499 | |||
![]() |
7c9b5523ff | ||
3ee219b845 | |||
34853c7e06 | |||
9c062ac310 | |||
eb4c26a46c | |||
8410aa2684 | |||
787293c71f | |||
a554ff9693 | |||
dee9c3cc25 | |||
a622e29a25 | |||
![]() |
9c190dea4c | ||
51546ff6e6 | |||
337ce7c984 | |||
64e13bef6d | |||
![]() |
d8435596d5 | ||
7642ee627a | |||
deb5b00e1b | |||
b0f6fb8369 | |||
3d73609832 | |||
![]() |
f9e1e088a4 | ||
b499b24c54 | |||
bcbd9009e7 | |||
![]() |
7b5f09c068 | ||
14deacdc22 | |||
b707504973 | |||
b2034c6ba2 | |||
ca572e9970 | |||
49403a676b | |||
1af8e0cc6c | |||
12865caf4f | |||
5d36a2e587 | |||
![]() |
a5790b2656 | ||
3fd4c88e3a | |||
ba01ea3f8b | |||
fd0bc7e002 | |||
4a7faaa399 | |||
38f3a85649 | |||
864cb7f376 | |||
d33f4bce8d | |||
ecab41e44f | |||
7038a3a774 | |||
2867c35d4e | |||
40a9b5ebc7 | |||
01a3482742 | |||
![]() |
5536be2cfe | ||
ed4cbde967 | |||
ecfcb560db | |||
![]() |
773beec541 | ||
![]() |
92d606ba26 | ||
![]() |
bb65f49005 | ||
![]() |
cdd223039b | ||
acb576c762 | |||
![]() |
50d65d5a2e | ||
d4daecb223 | |||
2a39fb1345 | |||
9a4544762e | |||
2e7fd35425 | |||
051d224065 | |||
eb6cb67ab6 | |||
ddda73b98a | |||
5df494d75c | |||
944956aba8 | |||
9291558b63 | |||
507a331f01 | |||
0366c46ec6 | |||
22ca8b8aee | |||
f357740a80 | |||
10eb711e16 | |||
67f3941dd5 | |||
![]() |
c8103efbe3 | ||
![]() |
6bf0e9dbb1 | ||
![]() |
f4f57ed21a | ||
2662ba2438 | |||
20e803ac6b | |||
84c537e685 | |||
5d21efcd21 | |||
![]() |
1094e56041 | ||
2ab5ca81a5 | |||
5c82c9bae4 | |||
39fd6ef305 | |||
aabf4d4076 | |||
5c75c8d8d0 | |||
c76a8f65b7 | |||
1107af1abb | |||
9cacadc8a6 | |||
3788901107 | |||
62ec19f37c | |||
c055d69f83 | |||
2efd8099de | |||
![]() |
4e881540f7 | ||
34c8ba6d3e | |||
![]() |
6dbc254c0b | ||
7527eb3a3a | |||
7e8e7bfe69 | |||
dfb4a2e907 | |||
![]() |
8a7859b9ad | ||
![]() |
82f08cb2b0 | ||
649659aa24 | |||
756b9acaf5 | |||
3ca9eaf187 | |||
65e42d7b32 | |||
9ee87231e1 | |||
b2769562ee | |||
9a8dd37d1a | |||
f56bc68231 | |||
![]() |
b59adcaa36 | ||
96339c4cef | |||
36f713e216 | |||
5325bc3fb6 | |||
92230a32fd | |||
12b183ba55 | |||
cb83cf1b71 | |||
cdebc8a9f6 | |||
497be89f28 | |||
39cf62607f | |||
abe5fcb8d1 | |||
4aa703aa14 | |||
79d9874028 | |||
fc1f5bded4 | |||
dada30f5ef | |||
300f937aec | |||
f08f92a04d | |||
5186bb56b5 | |||
be691105c2 | |||
8d3df01e9d | |||
7a9f102537 | |||
64b152c254 | |||
1c98539b57 | |||
b5652f3f02 | |||
cb6f9c2f19 | |||
6b28b77730 | |||
21892d5592 | |||
2bd62ca7eb | |||
11df5443e5 | |||
18343c230d | |||
cf84db61a6 | |||
c89e103348 | |||
3401b070b8 | |||
71d53ab465 | |||
316d2c1522 | |||
af00fab312 | |||
726c7ba632 | |||
005af1e274 | |||
d6bd359545 | |||
c5436883c6 | |||
c2e21b2329 | |||
39ae4804a8 | |||
6fff73e3f0 | |||
517870a4a1 | |||
544ee7a4f2 | |||
fb671035be | |||
d9d11e2faf | |||
170844135a | |||
3cd32c376d | |||
6dcbc3cd5a | |||
8482ba6d2e | |||
24ebed4d84 | |||
fb0136f908 | |||
79122aec30 | |||
9c9ea37770 | |||
237d03f3a3 | |||
dc96995b03 | |||
dee01cad19 | |||
c01246f6c0 | |||
1f6ab32196 | |||
fe772bf818 | |||
c5c46e5b74 | |||
452834f1e3 | |||
![]() |
e769be1f34 | ||
![]() |
c68c160e7b | ||
ca7bd3f1c3 | |||
8fc68a2e9c | |||
![]() |
084f072aae | ||
abce4833a6 | |||
be7571a5e4 | |||
fde6151641 | |||
![]() |
412179b39b | ||
26687dda5a | |||
0272acee0d | |||
fc0df1ffb4 | |||
cfb7a8048c | |||
cbbbb9d179 | |||
6a49161c8c | |||
![]() |
f559e3977e | ||
![]() |
ba8de85299 | ||
3cb212602c | |||
e790f4a49f | |||
2b236294bb | |||
a90c2834a1 | |||
fbe25aeed4 | |||
d51760dc5a | |||
a60a623a1a | |||
96fa613639 | |||
c4b5279bbc | |||
908ed661ee | |||
69828cba53 | |||
4099ad1984 | |||
a4cf2cf2de | |||
0f7095f826 | |||
3119a014a6 | |||
![]() |
ddda1af97a | ||
055b323a0c | |||
![]() |
bda0c0847b | ||
676f6a699b | |||
56c7ee99b8 | |||
367d60dab1 | |||
![]() |
71f39c45a7 | ||
6c50e82efb | |||
![]() |
0de07c9814 | ||
7dc4477784 | |||
5168408ae5 | |||
4db9562246 | |||
ce92e3d553 | |||
6cfdd882d7 | |||
8d163d5976 | |||
3436eea1f5 | |||
42360e64da | |||
![]() |
5d69d2a863 | ||
267061e8f4 | |||
02e1f92cfa | |||
98a99cb763 | |||
2e4fbd327f | |||
1ee253c014 | |||
4c8de1040d | |||
79bd553f06 | |||
2e9d5ba211 | |||
c58cc8aeda | |||
ca4e8b423e | |||
40d71fc642 | |||
f10d190240 | |||
![]() |
5a29356b4d | ||
463941b6a1 | |||
c81549af28 | |||
9f66062da7 | |||
ed4bf2dc61 | |||
![]() |
1982d110f4 | ||
93a9fbb35f | |||
04e318de3a | |||
2210f9c7c8 | |||
902209eda5 | |||
43b4cf232c | |||
aee2b754dc | |||
b6051f1f01 | |||
ddddb94517 | |||
335930ab4e | |||
6b902d78b3 | |||
932cfdbe98 | |||
89b6a7bae9 | |||
31e2786707 | |||
661d363e13 | |||
587ca9e69b | |||
a5f19e3f72 | |||
4dbaee0293 | |||
dae033801b | |||
2795a7d02a | |||
133f6a9812 | |||
a5270d4cf3 | |||
![]() |
482f3c008b | ||
![]() |
5c5f2bd221 | ||
81befded7b | |||
8e7faf0e67 | |||
3bda3a2992 | |||
1613c994b0 | |||
bb692a2d0f | |||
ccfe5bf215 | |||
153a96472a | |||
e6ccd512e6 | |||
b15073b9ee | |||
cfae9fb9e4 | |||
a5a30e485f | |||
![]() |
02f6722350 | ||
78aa321931 | |||
957ba51200 | |||
4f4435001a | |||
![]() |
66e02d15a0 | ||
6368343da9 | |||
fb26d25405 | |||
6395937b01 | |||
3fb8191d1d | |||
81b7f8efaf | |||
c7596cd820 | |||
9b70950e3c | |||
d1657b406e | |||
c2e62c1292 | |||
2272f380bd | |||
3e11c4e63b | |||
a7ca0e92ef | |||
9801678295 | |||
deb59c25c0 | |||
6dc979e2f9 | |||
966383138a | |||
1f92e9903f | |||
5472ae6fdf | |||
6744f4d108 | |||
fb0fc1d613 | |||
66ad94d905 | |||
35b16e4985 | |||
7b29956cc5 | |||
![]() |
e280c0441b | ||
f185a9b97c | |||
![]() |
f417787ee1 | ||
6eaf51ef3e | |||
9410e5dc97 | |||
3ef32cb90a | |||
![]() |
1e91d9d4dc | ||
7f794ae09d | |||
7c9d15fca8 | |||
![]() |
d57b93437e | ||
b9fa80ed5a | |||
c22d2f9e01 | |||
4b6ce694c2 | |||
f60d97d426 | |||
2aa497661f | |||
554f861ac1 | |||
684b5172ff | |||
6b7e5b35bc | |||
74acb00684 | |||
192940e8c2 | |||
![]() |
61072f0819 | ||
4aca02064f | |||
55c70a908e | |||
9b3c9ab61a | |||
9d90cad3ed | |||
86db35845a | |||
b963745cdf | |||
![]() |
6257cdc376 | ||
9ebd64ec7e | |||
b05bca2364 | |||
d72ffb5e9a | |||
5d5add5de2 | |||
d42a7bbd6e | |||
7c2f0074f3 | |||
![]() |
2cd3298fde | ||
![]() |
3cd1c8ccff | ||
09122883b2 | |||
abdaf2a4f5 | |||
db33867270 | |||
![]() |
d52551401e | ||
5b8c2301d8 | |||
d74f9c4b7b | |||
0461ff764a | |||
faf563d27c | |||
32f0bb0523 | |||
59d3e4357a | |||
7fc7df1bd3 | |||
216291ddb3 | |||
d4261760c7 | |||
59589457a5 | |||
3c426feb12 | |||
e7e454f964 | |||
9a6551543b | |||
![]() |
003be8aa7c | ||
![]() |
25cb12dc71 | ||
dd4d27e907 | |||
3ee6d74f93 | |||
2dfeb25c54 | |||
e17b075a65 | |||
6c91509745 | |||
be521a7457 | |||
7570c07bfd | |||
ef9e278b67 | |||
3de84f2f1b | |||
![]() |
967ac9b6e6 | ||
7f571aad22 | |||
![]() |
7d8a186335 | ||
689a873029 | |||
848b28d71e | |||
588f2d2944 | |||
![]() |
eca8bae671 | ||
![]() |
ca49643f3c | ||
68462a9419 | |||
7e20d6930d | |||
cdd937c6dd | |||
adcc9d014c | |||
f7fa6cd1da | |||
5f8b290eb8 | |||
542e0c67ba | |||
c27acbcfb7 | |||
d571e9055a | |||
2ff3877f71 | |||
![]() |
f842ffb107 | ||
![]() |
758361556b | ||
3fa548f986 | |||
aa3720ed82 | |||
![]() |
0e94d8bbe0 | ||
473bcff5cb | |||
5319b79965 | |||
6b7991edf4 | |||
79bd14d0fd | |||
c0793d6629 | |||
9d7b2e3068 | |||
5977ed3470 | |||
0c9f04f6b6 | |||
d68346eacf | |||
1a28c142bf | |||
75100d0b94 | |||
c8450c480f | |||
27c5fb6fc4 | |||
6c0eeb1569 | |||
df36e1c5dd | |||
41075589c0 | |||
dedceb9395 | |||
![]() |
e400cfe6bb | ||
f164ea6eaa | |||
3edd8d5b07 | |||
1ec08999b6 | |||
d7afa23333 | |||
f4beab7192 | |||
5cc0f361f3 | |||
22a317347f | |||
cb9f67e846 | |||
22f5edcf45 | |||
468fad3ac7 | |||
eb9401e9af | |||
f8b34d5ca4 | |||
8e6c6e2ba1 | |||
![]() |
c167e8ba18 | ||
![]() |
e4bf08a363 | ||
e2724abc22 | |||
2a638e8c90 | |||
ff430dea66 | |||
52c96b60a0 | |||
4c1fb64123 | |||
a560a46f32 | |||
d51dcaf104 | |||
ca994239bc | |||
39d5d11e02 | |||
ba5bbf14f9 | |||
fca069a705 | |||
![]() |
388d43d85a | ||
![]() |
29ab2386c0 | ||
51add8e6d0 | |||
473fc35c70 | |||
9ad0b7f8c7 | |||
6f03e356fb | |||
![]() |
042e4daa72 | ||
3a1745235f | |||
0187735eea | |||
d5c963bbc3 | |||
283d76932a | |||
efa3605ec0 | |||
d49fa504fd | |||
6d74775a47 | |||
e2c8aa4971 | |||
597d6be61c | |||
ac723db57f | |||
9954cbfca6 | |||
1bcb2bfd57 | |||
1e0b790364 | |||
43de11f323 | |||
fffba2b653 | |||
99912f15e8 | |||
e34d3e32dd | |||
4f7ad0050b | |||
c56526d8b6 | |||
389fc62f6c | |||
60c6a74ce1 | |||
2359979141 | |||
84825e4b50 | |||
b8bdb8e9e9 | |||
820794e162 | |||
efe119cd39 | |||
dfa3f51e52 | |||
3fdc04d3ee | |||
162cb74320 | |||
a60606e467 | |||
830150c7b9 | |||
3c1115ef7f | |||
9d254fa17a | |||
44231386e4 | |||
1c81374c37 | |||
1b86b3c0f4 | |||
ddb958ae99 | |||
d5042c4250 | |||
f6aac92ab8 | |||
0ef881cc57 | |||
01d9a2f71b | |||
1cb938ef2c | |||
89578a8f6e | |||
6915555906 | |||
1d149f6746 | |||
8e66183a98 | |||
![]() |
aacdf55a50 | ||
![]() |
c91ebcd7ab | ||
9867106199 | |||
befc082736 | |||
![]() |
c3d6929e4f | ||
![]() |
20ca8fddf8 | ||
![]() |
a72d823489 | ||
2ef08bd93e | |||
db3968fd59 | |||
1a66b330ac | |||
![]() |
95200045f3 | ||
04c588294d | |||
6eb9cc101b | |||
0920c1684b | |||
62c6038531 | |||
7eaed14fae | |||
ad69127859 | |||
![]() |
9d95c035c5 | ||
9b920938bb | |||
7ac8f61dc1 | |||
04122c8eb2 | |||
e55ffb28a9 | |||
9f5f91d6bd | |||
cf0f066c2d | |||
d98b38f97a | |||
744a58918a | |||
![]() |
2f1d3ba6da | ||
![]() |
2eafae4e39 | ||
002f5b826c | |||
f681e9ea49 | |||
ce5a5b553d | |||
ac4057b95a | |||
73098d2ca5 | |||
7ae35a7369 | |||
830aa758b4 | |||
99c798b8a6 | |||
533d146f48 | |||
915177f99a | |||
c3b406a7c3 | |||
![]() |
e72ecaa371 | ||
6bca11a847 | |||
15c463cee3 | |||
d5ca72191c | |||
f1516e007d | |||
![]() |
f52d9a878d | ||
![]() |
525b0e0ccb | ||
cea67064da | |||
75f82d28e3 | |||
15ef1d4c80 | |||
07a959067d | |||
010c551257 | |||
b42b837b7e | |||
a32ee63660 | |||
0e37045f32 | |||
55daa0d444 | |||
4f70af34e0 | |||
bc9c8c35e1 | |||
fdf89acc86 | |||
bd766f8f06 | |||
e665c2c893 | |||
0bd598d388 | |||
94d19d5ff5 | |||
a99f6e5df1 | |||
122a0afa96 | |||
581a5ee0cc | |||
bcfa1c3051 | |||
b6b5924e69 | |||
5be0b2bc4e | |||
8534fb1b01 | |||
2c9ca87cef | |||
c128b30bd1 | |||
cb1f48ab7f | |||
b6bcfd2a6e | |||
fa3a0697b8 | |||
e237b78b91 | |||
b5cef9fc3f | |||
11292edba6 | |||
1ef59d0eb5 | |||
32b7056acd | |||
9d7abce359 | |||
8bdac377d8 | |||
e95c0fba09 | |||
6e39aeb2cd | |||
a8d11995bf | |||
592e245a90 | |||
3a35301fd1 | |||
58e88d3816 | |||
04ddd6f717 | |||
55fbb0fd69 | |||
60c54be053 | |||
7213c42b6e | |||
24d46bdbf7 | |||
3978568e45 | |||
0d67eb277f | |||
98e4fbc7cc | |||
b7acb8690a | |||
7f3e121926 | |||
a6d01365e3 | |||
9483997472 | |||
![]() |
e993667a46 | ||
b15f601d2c | |||
ebe177aead | |||
8df339438a | |||
485ff4b9bf | |||
295647212d | |||
85d43943dd | |||
bbe7c278d2 | |||
3576056eea | |||
5c66739b78 | |||
952bc89d6e | |||
819be3639c | |||
9fec9c6a0f | |||
0ac41dea7e | |||
8314e20139 | |||
aad09525fb | |||
025d13045a | |||
ad6c66fa3e | |||
5659c8e0bf | |||
9b74e648c5 | |||
846c034323 | |||
eb6ca6cf9f | |||
e26a527770 | |||
ac7eb71089 | |||
d8dc310103 | |||
b423b89127 | |||
a8ce9a143a | |||
a854840e76 | |||
311178fcf2 | |||
de530a95dc | |||
2e06a6bec3 | |||
461261c18d | |||
9583932538 | |||
![]() |
87e7ad197d | ||
86832ececc | |||
b5dd73a48b | |||
e9ac784237 | |||
d27fb46715 | |||
86a2ffc3ab | |||
56ef761381 | |||
a38840a9b8 | |||
0314561684 | |||
394b48029c | |||
6a54969cf1 | |||
62d131e962 | |||
3b891989ac | |||
f7fb1de41b | |||
![]() |
79476a9c0a | ||
c2a37867f2 | |||
d2dc4f8411 | |||
d35a319687 | |||
e4413dc72b | |||
f172441e30 | |||
fa5e28ab08 | |||
6657fcc783 | |||
9aab9970c6 | |||
33eabb8220 | |||
9378debd26 | |||
2ba9572d9e | |||
4c295ad478 | |||
d616938449 | |||
3e1dc56365 | |||
c1f6a49ae4 | |||
0bc964c93d | |||
![]() |
d9ec25844b | ||
af2be110c3 | |||
b450ba84d9 | |||
f46ba1a7e0 | |||
![]() |
6c2eeba0c7 | ||
2ff996040d | |||
50b478e328 | |||
708045eb40 | |||
b888711e50 | |||
6aa82d1686 | |||
6929d8aa59 | |||
a0892bb690 | |||
51d8d790d7 | |||
c1242874c9 | |||
4d0a91d03d | |||
f9e65fcea7 | |||
e9093a6e49 | |||
9a8f840c31 | |||
a2d6dfc026 | |||
39112a4f7b | |||
5804f18b1f | |||
46607bc09d | |||
4cc8201a65 | |||
2aab727009 | |||
4ed3a62d0f | |||
d840658078 | |||
9984dd332f | |||
9a1bbca5b1 | |||
96f9334857 | |||
130ebfe43c | |||
50a56f566f | |||
c5a7644717 | |||
c0dd9908ff | |||
c3782ebf44 | |||
110f1cb1d6 | |||
334ddce17c | |||
9a9f39e466 | |||
6ccef2aa7e | |||
ecfb7eab0c | |||
0647232ac5 | |||
66d773c2e7 | |||
7dd6e034f1 | |||
26e4f4a8c4 | |||
56fc0f411f | |||
e0afee86b3 | |||
701338d31c | |||
076cedc777 | |||
f7611126b6 | |||
4440739699 | |||
0971f56bac | |||
c14e352d2c | |||
7ba1489bd7 | |||
f98e2c0427 | |||
da6929488a | |||
9ae097e239 | |||
d591c8a350 | |||
5467f3de3a | |||
838dc349ca | |||
61f4a7d1f5 | |||
409d3f4880 | |||
8bab865539 | |||
2a35383bb0 | |||
b30a722f2d | |||
a6b1c158c9 | |||
31b9ddd876 | |||
0019216722 | |||
bdbcb0df10 | |||
87dba476fb | |||
0149b76dc6 | |||
850aa3a6cf | |||
e0cd5b980f | |||
11d9271804 | |||
9a12f97f26 | |||
e6a5e5077b | |||
5ad465c87f | |||
e998cb2c2e | |||
a04573f4aa | |||
0b60fb5ec2 | |||
7267d1fe30 | |||
5f79e0d8f7 | |||
a601f54ba2 | |||
64116ca15a | |||
aa7c1cdb7f | |||
7830ea29c2 | |||
3a5562151f | |||
84c1e57dfe | |||
bda4a284d2 | |||
4b62d98984 | |||
bde06da223 | |||
7d2d2ffa76 | |||
8ebc6be43d | |||
aa1af7f8e4 | |||
2564e2a2ad | |||
8676491090 | |||
de8a19077e | |||
ca277d7d60 | |||
79e51d9e5f | |||
a977cb0445 | |||
647d54a36d | |||
db043e7e5b | |||
f7745b15b7 | |||
d61d68a310 | |||
814a11be59 | |||
23940ff1e1 | |||
7f00b3a711 | |||
1ef6be3686 | |||
f4d7d5e75d | |||
bc92d05522 | |||
9c82eac2c8 | |||
5d1245cca9 | |||
7e15638cce | |||
96ebdbc90f | |||
bcd38b398c | |||
11e4eafd9b | |||
831b85efb2 | |||
4f1abcb06f | |||
3da429aa87 | |||
79c3e8db26 | |||
714e48ec55 | |||
043cac5d20 | |||
ceba74dcd7 | |||
7bd3d2be08 | |||
d27ccf990c | |||
7b87d3d34e | |||
db8726dfd5 | |||
eb98cbb8c5 | |||
829a83262f | |||
41fd60db16 | |||
9064655a70 | |||
4235fe37d6 | |||
2aa4301c88 | |||
4ff7c5eed6 | |||
![]() |
6a3f2b30d2 | ||
8d16dc029e | |||
bbc97fc533 | |||
![]() |
01608f5348 | ||
f3dadd4115 | |||
e720661b7d | |||
85f8690555 | |||
165afb3ad0 | |||
31ac2e292e | |||
5a97a74c69 | |||
80062e6305 | |||
3b163483c4 | |||
dfe965bee2 | |||
fb74dcc5d6 | |||
16206b66a2 | |||
017e028784 | |||
f8cdc5ac4c | |||
9b871683b1 | |||
c6ba941339 | |||
c4203ef17d | |||
e6c40bc9e1 | |||
38ad1c4d33 | |||
322555faa3 | |||
f5e00f7351 | |||
02f23ab685 | |||
82755f5137 | |||
ec62413f80 | |||
6fc016d963 | |||
123744e432 | |||
ce87abbc95 | |||
c30d6571bb | |||
d7a8a60688 | |||
c8d121bf35 | |||
0f04bf8cd6 | |||
302d692b0b | |||
![]() |
afcdea3961 | ||
![]() |
31a3b57037 | ||
77d82ed1fd | |||
102fcba855 | |||
![]() |
3437c9c3bf | ||
85b7d397f7 | |||
ba5aedea8f | |||
059f7413c4 | |||
379bb0706c | |||
e653f8fbb1 | |||
132a932ef2 | |||
2f1b891dd9 | |||
464d3e905d | |||
03bd44a1ca | |||
da09bbc3dd | |||
8aadba6ef0 | |||
80c156a8d5 | |||
f050fa3253 | |||
dc3a165ae0 | |||
b03066f7ee | |||
7878adf49c | |||
61e0e93644 | |||
![]() |
a1bd78b488 | ||
7683641a7f | |||
f5e37af5a8 | |||
57d2d8ac05 | |||
7f36db35ce | |||
576d385ddb | |||
f52d60a21d | |||
5cd6aa4bc9 | |||
d1631c9f03 | |||
63d521432e | |||
e0fbea9c0d | |||
![]() |
e760972221 | ||
35b5888b15 | |||
![]() |
4fa774b533 | ||
![]() |
c5767a24b9 | ||
4d0643a185 | |||
96a1bc2997 | |||
e71fe924c5 | |||
daf290dcc8 | |||
42a551d2dd | |||
3ea736fb4d | |||
b7533f92e5 | |||
dfb6af3011 | |||
3a4fa40313 | |||
00e9241d49 | |||
cc70f7d048 | |||
1a8642937d | |||
2b71f8cac5 | |||
08d4e7e11c | |||
15630c5a81 | |||
8bf7ca9fe3 | |||
62ef59aa0c | |||
e77fdc62b7 | |||
8a7851de3a | |||
448669a630 | |||
40e2f4469a | |||
312b6fd713 | |||
baeb11826b | |||
c9dc57be3a | |||
3d5775b69a | |||
761111efb8 | |||
52c834983f | |||
f16bca7212 | |||
5c234a558c | |||
03cb991618 | |||
2901986b10 | |||
9569425b02 | |||
d82d19904b | |||
416e66c7fe | |||
![]() |
074c00f9d6 | ||
9c1134015c | |||
![]() |
958d0d4236 | ||
![]() |
0406eb1103 | ||
6a78ace569 | |||
8b512414c5 | |||
7c2217cd12 | |||
a05b79e96d | |||
6ffcddc10a | |||
7465078e63 | |||
8a8b549e56 | |||
bd53c053f3 | |||
5e96b860a3 | |||
dd4b98133e | |||
6df2ede341 | |||
19a89797c3 | |||
593d972407 | |||
eeaf452381 | |||
15abc9fe74 | |||
601eafd104 | |||
61a02a7aa1 | |||
![]() |
9febff7e14 | ||
05ef758f46 | |||
f7bd56bf22 | |||
b50853611e | |||
fe605080ef | |||
9f48a04799 | |||
b9f896f6f1 | |||
d40579c62b | |||
95ca3f6536 | |||
70b3469c0e | |||
d21a8dcae2 | |||
c402a4847b | |||
31c77326c9 | |||
e2806b7429 | |||
798b977d95 | |||
5356c90a46 | |||
cf77b67c45 | |||
6ba09f8515 | |||
2f05c79db3 | |||
f4b7d57551 | |||
722b8e4692 | |||
de7622b4b6 | |||
51bec2e5fe | |||
a16a56e7d9 | |||
1b33e1f9ae | |||
4949a62d4d | |||
4705aa4fe5 | |||
a77fe7eb5c | |||
6d3eb85f66 | |||
e203f69bc3 | |||
8b30847952 | |||
7868db9343 | |||
824c265938 | |||
9c337fcfe2 | |||
186d74020e | |||
10ab0d66e8 | |||
fff50bb3b4 | |||
98ff6cfa57 | |||
541d0fdba6 | |||
b3f388dca9 | |||
fda791ab12 | |||
574a59dfb0 | |||
![]() |
b81939716d | ||
dcded19507 | |||
adb6be36e4 | |||
ceab47f347 | |||
aee9d9a4a4 | |||
a51f7c8a50 | |||
d6fe8cea73 | |||
c7e64f67ed | |||
1fdea43c29 | |||
a81fdefdde | |||
37cd7b25dc | |||
1e480840a2 | |||
df29e9c070 | |||
6fd2e65295 | |||
6d2bc870a7 | |||
35217b4c06 | |||
![]() |
8b260fec0c | ||
7866512627 | |||
014eb69cf8 | |||
3e241af3ae | |||
0f521ca4d9 | |||
9516921c05 | |||
![]() |
1f6c3699a8 |
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"project_id" : "Blender",
|
||||
"conduit_uri" : "https://developer.blender.org/",
|
||||
"phabricator.uri" : "https://developer.blender.org/",
|
||||
"git.default-relative-commit" : "origin/master",
|
||||
"arc.land.update.default" : "rebase",
|
||||
"arc.land.onto.default" : "master"
|
||||
|
@@ -132,9 +132,7 @@ PenaltyBreakAssignment: 100
|
||||
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
|
||||
# Disable for now since it complicates initial migration tests,
|
||||
# TODO: look into enabling this in the future.
|
||||
SortIncludes: false
|
||||
SortIncludes: true
|
||||
|
||||
# Don't right align escaped newlines to the right because we have a wide default
|
||||
AlignEscapedNewlines: DontAlign
|
||||
@@ -193,6 +191,7 @@ ForEachMacros:
|
||||
- FOREACH_MAIN_ID_BEGIN
|
||||
- FOREACH_MAIN_LISTBASE_BEGIN
|
||||
- FOREACH_MAIN_LISTBASE_ID_BEGIN
|
||||
- FOREACH_MESH_BUFFER_CACHE
|
||||
- FOREACH_NODETREE_BEGIN
|
||||
- FOREACH_OBJECT_BEGIN
|
||||
- FOREACH_OBJECT_FLAG_BEGIN
|
||||
@@ -215,6 +214,7 @@ ForEachMacros:
|
||||
- GHASH_ITER_INDEX
|
||||
- GPU_SELECT_LOAD_IF_PICKSEL_LIST
|
||||
- GP_EDITABLE_STROKES_BEGIN
|
||||
- GP_EVALUATED_STROKES_BEGIN
|
||||
- GSET_FOREACH_BEGIN
|
||||
- GSET_ITER
|
||||
- GSET_ITER_INDEX
|
||||
@@ -238,7 +238,6 @@ ForEachMacros:
|
||||
- LISTBASE_FOREACH_BACKWARD
|
||||
- LISTBASE_FOREACH_MUTABLE
|
||||
- LISTBASE_FOREACH_BACKWARD_MUTABLE
|
||||
- MAN2D_ITER_AXES_BEGIN
|
||||
- MAN_ITER_AXES_BEGIN
|
||||
- NODE_INSTANCE_HASH_ITER
|
||||
- NODE_SOCKET_TYPES_BEGIN
|
||||
@@ -246,12 +245,16 @@ ForEachMacros:
|
||||
- NODE_TYPES_BEGIN
|
||||
- PIXEL_LOOPER_BEGIN
|
||||
- PIXEL_LOOPER_BEGIN_CHANNELS
|
||||
- RENDER_PASS_ITER_BEGIN
|
||||
- RNA_BEGIN
|
||||
- RNA_PROP_BEGIN
|
||||
- RNA_STRUCT_BEGIN
|
||||
- RNA_STRUCT_BEGIN_SKIP_RNA_TYPE
|
||||
- SCULPT_VERTEX_DUPLICATES_AND_NEIGHBORS_ITER_BEGIN
|
||||
- SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN
|
||||
- SEQP_BEGIN
|
||||
- SEQ_BEGIN
|
||||
- SURFACE_QUAD_ITER_BEGIN
|
||||
- foreach
|
||||
|
||||
# Use once we bump the minimum version to version 8.
|
||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@@ -42,4 +42,7 @@ Desktop.ini
|
||||
/build_files/build_environment/downloads
|
||||
|
||||
# in-source buildbot signing configuration
|
||||
/build_files/buildbot/codesign/config_server.py
|
||||
/build_files/buildbot/codesign/config_server.py
|
||||
|
||||
# smoke simulation noise tile (generated)
|
||||
waveletNoiseTile.bin
|
||||
|
187
CMakeLists.txt
187
CMakeLists.txt
@@ -97,6 +97,11 @@ cmake_policy(SET CMP0010 NEW)
|
||||
# Input directories must have CMakeLists.txt
|
||||
cmake_policy(SET CMP0014 NEW)
|
||||
|
||||
# Silence draco warning on macOS, new policy works fine.
|
||||
if(POLICY CMP0068)
|
||||
cmake_policy(SET CMP0068 NEW)
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Load some macros.
|
||||
include(build_files/cmake/macros.cmake)
|
||||
@@ -175,6 +180,14 @@ option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
|
||||
option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
|
||||
mark_as_advanced(WITH_SYSTEM_BULLET)
|
||||
option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ON)
|
||||
if(APPLE)
|
||||
# There's no OpenXR runtime in sight for macOS, neither is code well
|
||||
# tested there -> disable it by default.
|
||||
option(WITH_XR_OPENXR "Enable VR features through the OpenXR specification" OFF)
|
||||
mark_as_advanced(WITH_XR_OPENXR)
|
||||
else()
|
||||
option(WITH_XR_OPENXR "Enable VR features through the OpenXR specification" ON)
|
||||
endif()
|
||||
|
||||
# Compositor
|
||||
option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
|
||||
@@ -242,8 +255,7 @@ endif()
|
||||
|
||||
|
||||
# Modifiers
|
||||
option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
|
||||
option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
|
||||
option(WITH_MOD_FLUID "Enable Mantaflow Fluid Simulation Framework" ON)
|
||||
option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
|
||||
option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" ON)
|
||||
|
||||
@@ -265,6 +277,9 @@ option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd
|
||||
option(WITH_ALEMBIC "Enable Alembic Support" ON)
|
||||
option(WITH_ALEMBIC_HDF5 "Enable Legacy Alembic Support (not officially supported)" OFF)
|
||||
|
||||
# Universal Scene Description support
|
||||
option(WITH_USD "Enable Universal Scene Description (USD) Support" OFF)
|
||||
|
||||
# 3D format support
|
||||
# Disable opencollada when we don't have precompiled libs
|
||||
option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" ON)
|
||||
@@ -304,6 +319,14 @@ mark_as_advanced(WITH_SYSTEM_GLOG)
|
||||
# Freestyle
|
||||
option(WITH_FREESTYLE "Enable Freestyle (advanced edges rendering)" ON)
|
||||
|
||||
# New object types
|
||||
option(WITH_NEW_OBJECT_TYPES "Enable new hair and pointcloud objects (use for development only, don't save in files)" OFF)
|
||||
mark_as_advanced(WITH_NEW_OBJECT_TYPES)
|
||||
|
||||
# New simulation data block
|
||||
option(WITH_NEW_SIMULATION_TYPE "Enable simulation data block (use for development only, don't save in files)" OFF)
|
||||
mark_as_advanced(WITH_NEW_SIMULATION_TYPE)
|
||||
|
||||
# Misc
|
||||
if(WIN32)
|
||||
option(WITH_INPUT_IME "Enable Input Method Editor (IME) for complex Asian character input" ON)
|
||||
@@ -410,6 +433,8 @@ endif()
|
||||
option(WITH_GTESTS "Enable GTest unit testing" OFF)
|
||||
option(WITH_OPENGL_RENDER_TESTS "Enable OpenGL render related unit testing (Experimental)" OFF)
|
||||
option(WITH_OPENGL_DRAW_TESTS "Enable OpenGL UI drawing related unit testing (Experimental)" OFF)
|
||||
set(TEST_PYTHON_EXE "" CACHE PATH "Python executable to run unit tests")
|
||||
mark_as_advanced(TEST_PYTHON_EXE)
|
||||
|
||||
# Documentation
|
||||
if(UNIX AND NOT APPLE)
|
||||
@@ -450,6 +475,8 @@ endif()
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
option(WITH_LINKER_GOLD "Use ld.gold linker which is usually faster than ld.bfd" ON)
|
||||
mark_as_advanced(WITH_LINKER_GOLD)
|
||||
option(WITH_LINKER_LLD "Use ld.lld linker which is usually faster than ld.gold" OFF)
|
||||
mark_as_advanced(WITH_LINKER_LLD)
|
||||
endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
@@ -485,7 +512,8 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
if(NOT MSVC)
|
||||
find_library(COMPILER_ASAN_LIBRARY asan ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES})
|
||||
else()
|
||||
find_library( COMPILER_ASAN_LIBRARY NAMES clang_rt.asan-x86_64
|
||||
find_library(
|
||||
COMPILER_ASAN_LIBRARY NAMES clang_rt.asan-x86_64
|
||||
PATHS
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/7.0.0/lib/windows
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/6.0.0/lib/windows
|
||||
@@ -508,6 +536,13 @@ if(WIN32)
|
||||
|
||||
option(WINDOWS_PYTHON_DEBUG "Include the files needed for debugging python scripts with visual studio 2017+." OFF)
|
||||
mark_as_advanced(WINDOWS_PYTHON_DEBUG)
|
||||
|
||||
option(WITH_WINDOWS_BUNDLE_CRT "Bundle the C runtime for install free distribution." ON)
|
||||
mark_as_advanced(WITH_WINDOWS_BUNDLE_CRT)
|
||||
|
||||
option(WITH_WINDOWS_SCCACHE "Use sccache to speed up builds (Ninja builder only)" OFF)
|
||||
mark_as_advanced(WITH_WINDOWS_SCCACHE)
|
||||
|
||||
endif()
|
||||
|
||||
# The following only works with the Ninja generator in CMake >= 3.0.
|
||||
@@ -602,29 +637,29 @@ endif()
|
||||
|
||||
# enable boost for cycles, audaspace or i18n
|
||||
# otherwise if the user disabled
|
||||
if(NOT WITH_BOOST)
|
||||
# Explicitly disabled. so disable all deps.
|
||||
macro(set_and_warn
|
||||
_setting _val)
|
||||
if(${${_setting}})
|
||||
message(STATUS "'WITH_BOOST' is disabled: forcing 'set(${_setting} ${_val})'")
|
||||
endif()
|
||||
set(${_setting} ${_val})
|
||||
endmacro()
|
||||
|
||||
set_and_warn(WITH_CYCLES OFF)
|
||||
set_and_warn(WITH_INTERNATIONAL OFF)
|
||||
set_and_warn(WITH_OPENVDB OFF)
|
||||
set_and_warn(WITH_OPENCOLORIO OFF)
|
||||
set_and_warn(WITH_QUADRIFLOW OFF)
|
||||
elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_INTERNATIONAL OR
|
||||
WITH_OPENVDB OR WITH_OPENCOLORIO)
|
||||
# Keep enabled
|
||||
else()
|
||||
# Disable boost if not needed.
|
||||
set_and_warn_dependency(WITH_BOOST WITH_CYCLES OFF)
|
||||
set_and_warn_dependency(WITH_BOOST WITH_INTERNATIONAL OFF)
|
||||
set_and_warn_dependency(WITH_BOOST WITH_OPENVDB OFF)
|
||||
set_and_warn_dependency(WITH_BOOST WITH_OPENCOLORIO OFF)
|
||||
set_and_warn_dependency(WITH_BOOST WITH_QUADRIFLOW OFF)
|
||||
set_and_warn_dependency(WITH_BOOST WITH_USD OFF)
|
||||
set_and_warn_dependency(WITH_BOOST WITH_ALEMBIC OFF)
|
||||
|
||||
if(WITH_BOOST AND NOT (WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_INTERNATIONAL OR
|
||||
WITH_OPENVDB OR WITH_OPENCOLORIO OR WITH_USD OR WITH_ALEMBIC))
|
||||
message(STATUS "No dependencies need 'WITH_BOOST' forcing WITH_BOOST=OFF")
|
||||
set(WITH_BOOST OFF)
|
||||
endif()
|
||||
|
||||
set_and_warn_dependency(WITH_TBB WITH_USD OFF)
|
||||
set_and_warn_dependency(WITH_TBB WITH_OPENIMAGEDENOISE OFF)
|
||||
set_and_warn_dependency(WITH_TBB WITH_OPENVDB OFF)
|
||||
set_and_warn_dependency(WITH_TBB WITH_MOD_FLUID OFF)
|
||||
|
||||
# OpenVDB uses 'half' type from OpenEXR & fails to link without OpenEXR enabled.
|
||||
set_and_warn_dependency(WITH_IMAGE_OPENEXR WITH_OPENVDB OFF)
|
||||
|
||||
# auto enable openimageio for cycles
|
||||
if(WITH_CYCLES)
|
||||
set(WITH_OPENIMAGEIO ON)
|
||||
@@ -661,6 +696,7 @@ if(WITH_GHOST_SDL OR WITH_HEADLESS)
|
||||
set(WITH_X11_ALPHA OFF)
|
||||
set(WITH_GHOST_XDND OFF)
|
||||
set(WITH_INPUT_IME OFF)
|
||||
set(WITH_XR_OPENXR OFF)
|
||||
endif()
|
||||
|
||||
if(WITH_CPU_SSE)
|
||||
@@ -774,67 +810,14 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Release")
|
||||
if(MSVC)
|
||||
set(COMPILER_ASAN_LINKER_FLAGS "/FUNCTIONPADMIN:6")
|
||||
endif()
|
||||
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS};${COMPILER_ASAN_LIBRARY}")
|
||||
set(PLATFORM_LINKFLAGS "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
|
||||
set(PLATFORM_LINKFLAGS_DEBUG "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
|
||||
if(COMPILER_ASAN_LIBRARY)
|
||||
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS};${COMPILER_ASAN_LIBRARY}")
|
||||
set(PLATFORM_LINKFLAGS "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
|
||||
set(PLATFORM_LINKFLAGS_DEBUG "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Platform specifics
|
||||
|
||||
if(WITH_X11)
|
||||
find_package(X11 REQUIRED)
|
||||
|
||||
find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
|
||||
mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
|
||||
|
||||
list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB})
|
||||
|
||||
if(WITH_X11_XINPUT)
|
||||
if(X11_Xinput_LIB)
|
||||
list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB})
|
||||
else()
|
||||
message(FATAL_ERROR "LibXi not found. Disable WITH_X11_XINPUT if you
|
||||
want to build without tablet support")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_X11_XF86VMODE)
|
||||
# XXX, why doesn't cmake make this available?
|
||||
find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
|
||||
mark_as_advanced(X11_Xxf86vmode_LIB)
|
||||
if(X11_Xxf86vmode_LIB)
|
||||
list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB})
|
||||
else()
|
||||
message(FATAL_ERROR "libXxf86vm not found. Disable WITH_X11_XF86VMODE if you
|
||||
want to build without")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_X11_XFIXES)
|
||||
if(X11_Xfixes_LIB)
|
||||
list(APPEND PLATFORM_LINKLIBS ${X11_Xfixes_LIB})
|
||||
else()
|
||||
message(FATAL_ERROR "libXfixes not found. Disable WITH_X11_XFIXES if you
|
||||
want to build without")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_X11_ALPHA)
|
||||
find_library(X11_Xrender_LIB Xrender ${X11_LIB_SEARCH_PATH})
|
||||
mark_as_advanced(X11_Xrender_LIB)
|
||||
if(X11_Xrender_LIB)
|
||||
list(APPEND PLATFORM_LINKLIBS ${X11_Xrender_LIB})
|
||||
else()
|
||||
message(FATAL_ERROR "libXrender not found. Disable WITH_X11_ALPHA if you
|
||||
want to build without")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Main Platform Checks
|
||||
#
|
||||
@@ -944,6 +927,28 @@ if(NOT WITH_SYSTEM_EIGEN3)
|
||||
set(EIGEN3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/Eigen3)
|
||||
endif()
|
||||
|
||||
if(WITH_OPENVDB)
|
||||
list(APPEND OPENVDB_DEFINITIONS -DWITH_OPENVDB)
|
||||
|
||||
if(WITH_OPENVDB_3_ABI_COMPATIBLE)
|
||||
list(APPEND OPENVDB_DEFINITIONS -DOPENVDB_3_ABI_COMPATIBLE)
|
||||
endif()
|
||||
|
||||
list(APPEND OPENVDB_INCLUDE_DIRS
|
||||
${BOOST_INCLUDE_DIR}
|
||||
${TBB_INCLUDE_DIRS}
|
||||
${OPENEXR_INCLUDE_DIRS})
|
||||
|
||||
list(APPEND OPENVDB_LIBRARIES ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
|
||||
|
||||
if(WITH_OPENVDB_BLOSC)
|
||||
list(APPEND OPENVDB_DEFINITIONS -DWITH_OPENVDB_BLOSC)
|
||||
list(APPEND OPENVDB_LIBRARIES ${BLOSC_LIBRARIES} ${ZLIB_LIBRARIES})
|
||||
endif()
|
||||
|
||||
list(APPEND OPENVDB_LIBRARIES ${BOOST_LIBRARIES} ${TBB_LIBRARIES})
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Configure OpenGL.
|
||||
|
||||
@@ -967,7 +972,7 @@ if(WITH_GL_PROFILE_ES20)
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND BLENDER_GL_LIBRARIES OPENGLES_LIBRARY)
|
||||
list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}")
|
||||
|
||||
else()
|
||||
set(OPENGLES_LIBRARY "" CACHE FILEPATH "OpenGL ES 2.0 library file")
|
||||
@@ -1027,7 +1032,10 @@ else()
|
||||
endif()
|
||||
|
||||
if(WITH_GL_EGL)
|
||||
list(APPEND GL_DEFINITIONS -DWITH_GL_EGL)
|
||||
find_package(OpenGL REQUIRED EGL)
|
||||
list(APPEND BLENDER_GL_LIBRARIES OpenGL::EGL)
|
||||
|
||||
list(APPEND GL_DEFINITIONS -DWITH_GL_EGL -DGLEW_EGL -DGLEW_INC_EGL)
|
||||
|
||||
if(WITH_SYSTEM_GLES)
|
||||
if(NOT OPENGLES_EGL_LIBRARY)
|
||||
@@ -1037,7 +1045,7 @@ if(WITH_GL_EGL)
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND BLENDER_GL_LIBRARIES OPENGLES_EGL_LIBRARY)
|
||||
list(APPEND BLENDER_GL_LIBRARIES ${OPENGLES_EGL_LIBRARY})
|
||||
|
||||
else()
|
||||
set(OPENGLES_EGL_LIBRARY "" CACHE FILEPATH "EGL library file")
|
||||
@@ -1077,10 +1085,6 @@ else()
|
||||
list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_CORE)
|
||||
endif()
|
||||
|
||||
if(WITH_GL_EGL)
|
||||
list(APPEND GL_DEFINITIONS -DWITH_EGL)
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Configure OpenMP.
|
||||
if(WITH_OPENMP)
|
||||
@@ -1152,10 +1156,6 @@ else()
|
||||
list(APPEND GL_DEFINITIONS -DGL_ES_VERSION_1_0=0 -DGL_ES_VERSION_CL_1_1=0 -DGL_ES_VERSION_CM_1_1=0)
|
||||
endif()
|
||||
|
||||
if(WITH_GL_EGL)
|
||||
list(APPEND GL_DEFINITIONS -DGLEW_INC_EGL)
|
||||
endif()
|
||||
|
||||
set(BLENDER_GLEW_LIBRARIES extern_glew_es bf_intern_glew_mx)
|
||||
|
||||
else()
|
||||
@@ -1452,6 +1452,7 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
|
||||
# flags to undo strict flags
|
||||
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
|
||||
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_VARIABLE -Wno-unused-variable)
|
||||
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
|
||||
|
||||
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
|
||||
@@ -1470,6 +1471,8 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_COMMENT -Wno-comment)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_TYPEDEFS -Wno-unused-local-typedefs)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNDEFINED_VAR_TEMPLATE -Wno-undefined-var-template)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_INSTANTIATION_AFTER_SPECIALIZATION -Wno-instantiation-after-specialization)
|
||||
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
|
||||
@@ -1720,10 +1723,12 @@ if(FIRST_RUN)
|
||||
info_cfg_option(WITH_CYCLES)
|
||||
info_cfg_option(WITH_FREESTYLE)
|
||||
info_cfg_option(WITH_OPENCOLORIO)
|
||||
info_cfg_option(WITH_XR_OPENXR)
|
||||
info_cfg_option(WITH_OPENIMAGEDENOISE)
|
||||
info_cfg_option(WITH_OPENVDB)
|
||||
info_cfg_option(WITH_ALEMBIC)
|
||||
info_cfg_option(WITH_QUADRIFLOW)
|
||||
info_cfg_option(WITH_USD)
|
||||
|
||||
info_cfg_text("Compiler Options:")
|
||||
info_cfg_option(WITH_BUILDINFO)
|
||||
|
52
GNUmakefile
52
GNUmakefile
@@ -71,17 +71,6 @@ Testing Targets
|
||||
which are tagged to use the stricter formatting
|
||||
* test_deprecated:
|
||||
Checks for deprecation tags in our code which may need to be removed
|
||||
* test_style_c:
|
||||
Checks C/C++ conforms with blenders style guide:
|
||||
https://wiki.blender.org/wiki/Source/Code_Style
|
||||
* test_style_c_qtc:
|
||||
Same as test_style but outputs QtCreator tasks format
|
||||
* test_style_osl:
|
||||
Checks OpenShadingLanguage conforms with blenders style guide:
|
||||
https://wiki.blender.org/wiki/Source/Code_Style
|
||||
* test_style_osl_qtc:
|
||||
Checks OpenShadingLanguage conforms with blenders style guide:
|
||||
https://wiki.blender.org/wiki/Source/Code_Style
|
||||
|
||||
Static Source Code Checking
|
||||
Not associated with building Blender.
|
||||
@@ -402,45 +391,6 @@ test_cmake: .FORCE
|
||||
test_deprecated: .FORCE
|
||||
$(PYTHON) tests/check_deprecated.py
|
||||
|
||||
test_style_c: .FORCE
|
||||
# run our own checks on C/C++ style
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||
"$(BLENDER_DIR)/source/blender" \
|
||||
"$(BLENDER_DIR)/source/creator" \
|
||||
--no-length-check
|
||||
|
||||
test_style_c_qtc: .FORCE
|
||||
# run our own checks on C/C++ style
|
||||
USE_QTC_TASK=1 \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||
"$(BLENDER_DIR)/source/blender" \
|
||||
"$(BLENDER_DIR)/source/creator" \
|
||||
--no-length-check \
|
||||
> \
|
||||
"$(BLENDER_DIR)/test_style.tasks"
|
||||
@echo "written: test_style.tasks"
|
||||
|
||||
|
||||
test_style_osl: .FORCE
|
||||
# run our own checks on C/C++ style
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders" \
|
||||
"$(BLENDER_DIR)/release/scripts/templates_osl"
|
||||
|
||||
|
||||
test_style_osl_qtc: .FORCE
|
||||
# run our own checks on C/C++ style
|
||||
USE_QTC_TASK=1 \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_style_c.py" \
|
||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders" \
|
||||
"$(BLENDER_DIR)/release/scripts/templates_osl" \
|
||||
> \
|
||||
"$(BLENDER_DIR)/test_style.tasks"
|
||||
@echo "written: test_style.tasks"
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Project Files
|
||||
@@ -545,7 +495,7 @@ update: .FORCE
|
||||
$(PYTHON) ./build_files/utils/make_update.py
|
||||
|
||||
format: .FORCE
|
||||
PATH="../lib/${OS_NCASE}/llvm/bin/:$(PATH)" \
|
||||
PATH="../lib/${OS_NCASE}_${CPU}/llvm/bin/:../lib/${OS_NCASE}_centos7_${CPU}/llvm/bin/:../lib/${OS_NCASE}/llvm/bin/:$(PATH)" \
|
||||
$(PYTHON) source/tools/utils_maintenance/clang_format_paths.py $(PATHS)
|
||||
|
||||
|
||||
|
@@ -64,7 +64,6 @@ include(cmake/jpeg.cmake)
|
||||
include(cmake/boost.cmake)
|
||||
include(cmake/blosc.cmake)
|
||||
include(cmake/pthreads.cmake)
|
||||
include(cmake/ilmbase.cmake)
|
||||
include(cmake/openexr.cmake)
|
||||
include(cmake/freetype.cmake)
|
||||
include(cmake/freeglut.cmake)
|
||||
@@ -92,21 +91,20 @@ include(cmake/python.cmake)
|
||||
include(cmake/python_site_packages.cmake)
|
||||
include(cmake/package_python.cmake)
|
||||
include(cmake/numpy.cmake)
|
||||
if(UNIX AND NOT APPLE)
|
||||
include(cmake/usd.cmake)
|
||||
if(UNIX)
|
||||
# Rely on PugiXML compiled with OpenImageIO
|
||||
else()
|
||||
include(cmake/pugixml.cmake)
|
||||
endif()
|
||||
include(cmake/openimagedenoise.cmake)
|
||||
include(cmake/embree.cmake)
|
||||
include(cmake/xr_openxr.cmake)
|
||||
|
||||
if(WITH_WEBP)
|
||||
include(cmake/webp.cmake)
|
||||
endif()
|
||||
|
||||
if(WITH_EMBREE)
|
||||
include(cmake/embree.cmake)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
# HMD branch deps
|
||||
include(cmake/hidapi.cmake)
|
||||
|
@@ -26,12 +26,6 @@ if(ALEMBIC_HDF5)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(ALEMBIC_ILMBASE ${LIBDIR}/openexr)
|
||||
else()
|
||||
set(ALEMBIC_ILMBASE ${LIBDIR}/ilmbase)
|
||||
endif()
|
||||
|
||||
set(ALEMBIC_EXTRA_ARGS
|
||||
-DBUILDSTATIC=ON
|
||||
-DLINKSTATIC=ON
|
||||
@@ -44,13 +38,13 @@ set(ALEMBIC_EXTRA_ARGS
|
||||
-DBoost_DEBUG=ON
|
||||
-DBOOST_ROOT=${LIBDIR}/boost
|
||||
-DBoost_NO_SYSTEM_PATHS=ON
|
||||
-DILMBASE_ROOT=${ALEMBIC_ILMBASE}
|
||||
-DALEMBIC_ILMBASE_INCLUDE_DIRECTORY=${ALEMBIC_ILMBASE}/include/OpenEXR
|
||||
-DALEMBIC_ILMBASE_HALF_LIB=${ALEMBIC_ILMBASE}/lib/${LIBPREFIX}Half${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_IMATH_LIB=${ALEMBIC_ILMBASE}/lib/${LIBPREFIX}Imath${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_ILMTHREAD_LIB=${ALEMBIC_ILMBASE}/lib/${LIBPREFIX}IlmThread${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_IEX_LIB=${ALEMBIC_ILMBASE}/lib/${LIBPREFIX}Iex${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_IEXMATH_LIB=${ALEMBIC_ILMBASE}/lib/${LIBPREFIX}IexMath${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DILMBASE_ROOT=${LIBDIR}/openexr
|
||||
-DALEMBIC_ILMBASE_INCLUDE_DIRECTORY=${LIBDIR}/openexr/include/OpenEXR
|
||||
-DALEMBIC_ILMBASE_HALF_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}Half${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_IMATH_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}Imath${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_ILMTHREAD_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmThread${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_IEX_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}Iex${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DALEMBIC_ILMBASE_IEXMATH_LIB=${LIBDIR}/openexr/lib/${LIBPREFIX}IexMath${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DUSE_PYILMBASE=0
|
||||
-DUSE_PYALEMBIC=0
|
||||
-DUSE_ARNOLD=0
|
||||
@@ -100,6 +94,5 @@ add_dependencies(
|
||||
external_alembic
|
||||
external_boost
|
||||
external_zlib
|
||||
external_ilmbase
|
||||
external_openexr
|
||||
)
|
||||
|
@@ -29,13 +29,11 @@ set(BLOSC_EXTRA_ARGS
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
# Prevent blosc from including it's own local copy of zlib in the object file
|
||||
# and cause linker errors with everybody else.
|
||||
set(BLOSC_EXTRA_ARGS ${BLOSC_EXTRA_ARGS}
|
||||
-DPREFER_EXTERNAL_ZLIB=ON
|
||||
)
|
||||
endif()
|
||||
# Prevent blosc from including it's own local copy of zlib in the object file
|
||||
# and cause linker errors with everybody else.
|
||||
set(BLOSC_EXTRA_ARGS ${BLOSC_EXTRA_ARGS}
|
||||
-DPREFER_EXTERNAL_ZLIB=ON
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_blosc
|
||||
URL ${BLOSC_URI}
|
||||
|
@@ -38,13 +38,13 @@ if(WIN32)
|
||||
set(BOOST_BUILD_OPTIONS runtime-link=shared )
|
||||
set(BOOST_HARVEST_CMD ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/lib/ ${HARVEST_TARGET}/boost/lib/ )
|
||||
if(BUILD_MODE STREQUAL Release)
|
||||
set(BOOST_HARVEST_CMD ${BOOST_HARVEST_CMD} && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/include/boost-1_68/ ${HARVEST_TARGET}/boost/include/)
|
||||
set(BOOST_HARVEST_CMD ${BOOST_HARVEST_CMD} && ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/boost/include/boost-${BOOST_VERSION_NODOTS_SHORT}/ ${HARVEST_TARGET}/boost/include/)
|
||||
endif()
|
||||
|
||||
elseif(APPLE)
|
||||
set(BOOST_CONFIGURE_COMMAND ./bootstrap.sh)
|
||||
set(BOOST_BUILD_COMMAND ./b2)
|
||||
set(BOOST_BUILD_OPTIONS toolset=darwin cxxflags=${PLATFORM_CXXFLAGS} linkflags=${PLATFORM_LDFLAGS} --disable-icu boost.locale.icu=off)
|
||||
set(BOOST_BUILD_OPTIONS toolset=darwin cxxflags=${PLATFORM_CXXFLAGS} linkflags=${PLATFORM_LDFLAGS} visibility=global --disable-icu boost.locale.icu=off)
|
||||
set(BOOST_HARVEST_CMD echo .)
|
||||
set(BOOST_PATCH_COMMAND echo .)
|
||||
else()
|
||||
@@ -72,6 +72,9 @@ set(BOOST_OPTIONS
|
||||
--with-serialization
|
||||
--with-program_options
|
||||
--with-iostreams
|
||||
-sNO_BZIP2=1
|
||||
-sNO_LZMA=1
|
||||
-sNO_ZSTD=1
|
||||
${BOOST_TOOLSET}
|
||||
)
|
||||
|
||||
|
@@ -46,9 +46,7 @@ if(MSVC)
|
||||
set(CLANG_HARVEST_COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/clang/ ${HARVEST_TARGET}/llvm/)
|
||||
else()
|
||||
set(CLANG_HARVEST_COMMAND
|
||||
${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/clang/lib/ ${HARVEST_TARGET}/llvm/debug/lib/ &&
|
||||
${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/clang/bin/ ${HARVEST_TARGET}/llvm/debug/bin/ &&
|
||||
${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/clang/include/ ${HARVEST_TARGET}/llvm/debug/include/
|
||||
${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/clang/lib/ ${HARVEST_TARGET}/llvm/debug/lib/
|
||||
)
|
||||
endif()
|
||||
ExternalProject_Add_Step(external_clang after_install
|
||||
|
@@ -32,7 +32,6 @@ ExternalProject_Add(external_freetype
|
||||
URL_HASH MD5=${FREETYPE_HASH}
|
||||
PREFIX ${BUILD_DIR}/freetype
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/freetype ${DEFAULT_CMAKE_FLAGS} ${FREETYPE_EXTRA_ARGS}
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/freetype/src/external_freetype < ${PATCH_DIR}/freetype.diff
|
||||
INSTALL_DIR ${LIBDIR}/freetype
|
||||
)
|
||||
|
||||
|
@@ -62,14 +62,8 @@ if(BUILD_MODE STREQUAL Debug)
|
||||
# OpenImageIO
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimageio/lib/OpenImageIO.lib ${HARVEST_TARGET}/openimageio/lib/OpenImageIO_d.lib &&
|
||||
${CMAKE_COMMAND} -E copy ${LIBDIR}/openimageio/lib/OpenImageIO_Util.lib ${HARVEST_TARGET}/openimageio/lib/OpenImageIO_Util_d.lib &&
|
||||
# python
|
||||
${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/python/ ${HARVEST_TARGET}/python/ &&
|
||||
# hdf5
|
||||
${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/hdf5/lib ${HARVEST_TARGET}/hdf5/lib &&
|
||||
# numpy
|
||||
${CMAKE_COMMAND} -E copy ${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}_numpy_${NUMPY_SHORT_VERSION}d.tar.gz ${HARVEST_TARGET}/Release/python${PYTHON_SHORT_VERSION_NO_DOTS}_numpy_${NUMPY_SHORT_VERSION}d.tar.gz &&
|
||||
# python
|
||||
${CMAKE_COMMAND} -E copy ${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}_d.tar.gz ${HARVEST_TARGET}/Release/python${PYTHON_SHORT_VERSION_NO_DOTS}_d.tar.gz
|
||||
DEPENDS Package_Python
|
||||
)
|
||||
endif()
|
||||
@@ -116,8 +110,6 @@ harvest(freetype/include freetype/include "*.h")
|
||||
harvest(freetype/lib/libfreetype2ST.a freetype/lib/libfreetype.a)
|
||||
harvest(glew/include glew/include "*.h")
|
||||
harvest(glew/lib glew/lib "*.a")
|
||||
harvest(ilmbase openexr "*")
|
||||
harvest(ilmbase/include openexr/include "*.h")
|
||||
harvest(jemalloc/include jemalloc/include "*.h")
|
||||
harvest(jemalloc/lib jemalloc/lib "*.a")
|
||||
harvest(jpg/include jpeg/include "*.h")
|
||||
@@ -169,6 +161,8 @@ harvest(opensubdiv/include opensubdiv/include "*.h")
|
||||
harvest(opensubdiv/lib opensubdiv/lib "*.a")
|
||||
harvest(openvdb/include/openvdb openvdb/include/openvdb "*.h")
|
||||
harvest(openvdb/lib openvdb/lib "*.a")
|
||||
harvest(xr_openxr_sdk/include/openxr xr_openxr_sdk/include/openxr "*.h")
|
||||
harvest(xr_openxr_sdk/lib xr_openxr_sdk/lib "*.a")
|
||||
harvest(osl/bin osl/bin "oslc")
|
||||
harvest(osl/include osl/include "*.h")
|
||||
harvest(osl/lib osl/lib "*.a")
|
||||
@@ -197,6 +191,9 @@ harvest(x264/lib ffmpeg/lib "*.a")
|
||||
harvest(xvidcore/lib ffmpeg/lib "*.a")
|
||||
harvest(embree/include embree/include "*.h")
|
||||
harvest(embree/lib embree/lib "*.a")
|
||||
harvest(usd/include usd/include "*.h")
|
||||
harvest(usd/lib/usd usd/lib/usd "*")
|
||||
harvest(usd/plugin usd/plugin "*")
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
harvest(libglu/lib mesa/lib "*.so*")
|
||||
|
@@ -1,58 +0,0 @@
|
||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ***** END GPL LICENSE BLOCK *****
|
||||
|
||||
if(WIN32)
|
||||
set(ILMBASE_CMAKE_CXX_STANDARD_LIBRARIES "kernel32${LIBEXT} user32${LIBEXT} gdi32${LIBEXT} winspool${LIBEXT} shell32${LIBEXT} ole32${LIBEXT} oleaut32${LIBEXT} uuid${LIBEXT} comdlg32${LIBEXT} advapi32${LIBEXT} psapi${LIBEXT}")
|
||||
set(ILMBASE_EXTRA_ARGS
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DCMAKE_CXX_STANDARD_LIBRARIES=${ILMBASE_CMAKE_CXX_STANDARD_LIBRARIES}
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_ilmbase
|
||||
URL ${ILMBASE_URI}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH MD5=${ILMBASE_HASH}
|
||||
PREFIX ${BUILD_DIR}/ilmbase
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/ilmbase ${DEFAULT_CMAKE_FLAGS} ${ILMBASE_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/openexr
|
||||
)
|
||||
|
||||
if(BUILD_MODE STREQUAL Release)
|
||||
ExternalProject_Add_Step(external_ilmbase after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/ilmbase ${HARVEST_TARGET}/openexr
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
|
||||
else()
|
||||
set(ILMBASE_EXTRA_ARGS
|
||||
--enable-static
|
||||
--disable-shared
|
||||
--enable-cxxstd=11
|
||||
)
|
||||
ExternalProject_Add(external_ilmbase
|
||||
URL ${ILMBASE_URI}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH MD5=${ILMBASE_HASH}
|
||||
PREFIX ${BUILD_DIR}/ilmbase
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ilmbase/src/external_ilmbase/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/ilmbase ${ILMBASE_EXTRA_ARGS}
|
||||
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ilmbase/src/external_ilmbase/ && make -j${MAKE_THREADS}
|
||||
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ilmbase/src/external_ilmbase/ && make install
|
||||
INSTALL_DIR ${LIBDIR}/openexr
|
||||
)
|
||||
endif()
|
@@ -23,6 +23,8 @@ set(LLVM_EXTRA_ARGS
|
||||
-DLLVM_TARGETS_TO_BUILD=X86
|
||||
-DLLVM_INCLUDE_EXAMPLES=OFF
|
||||
-DLLVM_ENABLE_TERMINFO=OFF
|
||||
-DLLVM_BUILD_LLVM_C_DYLIB=OFF
|
||||
-DLLVM_ENABLE_UNWIND_TABLES=OFF
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
@@ -38,6 +40,7 @@ ExternalProject_Add(ll
|
||||
URL_HASH MD5=${LLVM_HASH}
|
||||
CMAKE_GENERATOR ${LLVM_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/ll
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/ll/src/ll < ${PATCH_DIR}/llvm.diff
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/llvm ${DEFAULT_CMAKE_FLAGS} ${LLVM_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/llvm
|
||||
)
|
||||
|
@@ -20,59 +20,45 @@ if(WIN32)
|
||||
set(OPENEXR_CMAKE_CXX_STANDARD_LIBRARIES "kernel32${LIBEXT} user32${LIBEXT} gdi32${LIBEXT} winspool${LIBEXT} shell32${LIBEXT} ole32${LIBEXT} oleaut32${LIBEXT} uuid${LIBEXT} comdlg32${LIBEXT} advapi32${LIBEXT} psapi${LIBEXT}")
|
||||
set(OPENEXR_EXTRA_ARGS
|
||||
-DCMAKE_CXX_STANDARD_LIBRARIES=${OPENEXR_CMAKE_CXX_STANDARD_LIBRARIES}
|
||||
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
|
||||
-DILMBASE_PACKAGE_PREFIX=${LIBDIR}/ilmbase
|
||||
-DOPENEXR_BUILD_ILMBASE=On
|
||||
-DOPENEXR_BUILD_OPENEXR=On
|
||||
-DOPENEXR_BUILD_PYTHON_LIBS=Off
|
||||
-DOPENEXR_BUILD_STATIC=On
|
||||
-DOPENEXR_BUILD_SHARED=Off
|
||||
-DOPENEXR_BUILD_TESTS=Off
|
||||
-DOPENEXR_BUILD_VIEWERS=Off
|
||||
-DOPENEXR_BUILD_UTILS=Off
|
||||
-DOPENEXR_NAMESPACE_VERSIONING=Off
|
||||
)
|
||||
ExternalProject_Add(external_openexr
|
||||
URL ${OPENEXR_URI}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH MD5=${OPENEXR_HASH}
|
||||
PREFIX ${BUILD_DIR}/openexr
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openexr ${DEFAULT_CMAKE_FLAGS} ${OPENEXR_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/openexr
|
||||
else()
|
||||
set(OPENEXR_EXTRA_ARGS
|
||||
)
|
||||
endif()
|
||||
|
||||
set(OPENEXR_EXTRA_ARGS
|
||||
${OPENEXR_EXTRA_ARGS}
|
||||
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
|
||||
-DBUILD_TESTING=OFF
|
||||
-DOPENEXR_BUILD_BOTH_STATIC_SHARED=OFF
|
||||
-DILMBASE_BUILD_BOTH_STATIC_SHARED=OFF
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DOPENEXR_BUILD_UTILS=OFF
|
||||
-DPYILMBASE_ENABLE=OFF
|
||||
-DOPENEXR_VIEWERS_ENABLE=OFF
|
||||
-DILMBASE_LIB_SUFFIX=${OPENEXR_VERSION_BUILD_POSTFIX}
|
||||
-DOPENEXR_LIB_SUFFIX=${OPENEXR_VERSION_BUILD_POSTFIX}
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_openexr
|
||||
URL ${OPENEXR_URI}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH MD5=${OPENEXR_HASH}
|
||||
PREFIX ${BUILD_DIR}/openexr
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openexr ${DEFAULT_CMAKE_FLAGS} ${OPENEXR_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/openexr
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
ExternalProject_Add_Step(external_openexr after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openexr/lib ${HARVEST_TARGET}/openexr/lib
|
||||
# Libs have moved between versions, just duplicate it for now.
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openexr/lib ${LIBDIR}/ilmbase/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openexr/include ${HARVEST_TARGET}/openexr/include
|
||||
DEPENDEES install
|
||||
)
|
||||
|
||||
else()
|
||||
set(OPENEXR_PKG_CONFIG_PATH ${LIBDIR}/zlib/share/pkgconfig)
|
||||
set(OPENEXR_EXTRA_ARGS
|
||||
--enable-static
|
||||
--disable-shared
|
||||
--enable-cxxstd=11
|
||||
--with-ilmbase-prefix=${LIBDIR}/ilmbase
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_openexr
|
||||
URL ${OPENEXR_URI}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH MD5=${OPENEXR_HASH}
|
||||
PREFIX ${BUILD_DIR}/openexr
|
||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} && export PKG_CONFIG_PATH=${OPENEXR_PKG_CONFIG_PATH} && cd ${BUILD_DIR}/openexr/src/external_openexr/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/openexr ${OPENEXR_EXTRA_ARGS}
|
||||
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/openexr/src/external_openexr/ && make -j${MAKE_THREADS}
|
||||
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/openexr/src/external_openexr/ && make install
|
||||
INSTALL_DIR ${LIBDIR}/openexr
|
||||
)
|
||||
endif()
|
||||
|
||||
add_dependencies(
|
||||
external_openexr
|
||||
external_zlib
|
||||
external_ilmbase
|
||||
)
|
||||
|
@@ -106,13 +106,13 @@ set(OPENIMAGEIO_EXTRA_ARGS
|
||||
-DOCIO_PATH=${LIBDIR}/opencolorio/
|
||||
-DOpenEXR_USE_STATIC_LIBS=On
|
||||
-DOPENEXR_HOME=${LIBDIR}/openexr/
|
||||
-DILMBASE_INCLUDE_PATH=${LIBDIR}/ilmbase/
|
||||
-DILMBASE_PACKAGE_PREFIX=${LIBDIR}/ilmbase/
|
||||
-DILMBASE_INCLUDE_DIR=${LIBDIR}/ilmbase/include/
|
||||
-DOPENEXR_HALF_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Half${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IMATH_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Imath${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_ILMTHREAD_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}IlmThread${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IEX_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Iex${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DILMBASE_INCLUDE_PATH=${LIBDIR}/openexr/
|
||||
-DILMBASE_PACKAGE_PREFIX=${LIBDIR}/openexr/
|
||||
-DILMBASE_INCLUDE_DIR=${LIBDIR}/openexr/include/
|
||||
-DOPENEXR_HALF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Half${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IMATH_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Imath${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_ILMTHREAD_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmThread${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IEX_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Iex${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_INCLUDE_DIR=${LIBDIR}/openexr/include/
|
||||
-DOPENEXR_ILMIMF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DSTOP_ON_WARNING=OFF
|
||||
@@ -135,7 +135,6 @@ ExternalProject_Add(external_openimageio
|
||||
add_dependencies(
|
||||
external_openimageio
|
||||
external_png external_zlib
|
||||
external_ilmbase
|
||||
external_openexr
|
||||
external_jpeg
|
||||
external_boost
|
||||
|
@@ -29,24 +29,20 @@ set(OPENVDB_EXTRA_ARGS
|
||||
-DBoost_NO_SYSTEM_PATHS=ON
|
||||
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
|
||||
-DBLOSC_INCLUDE_DIR=${LIBDIR}/blosc/include/
|
||||
-DBLOSC_blosc_LIBRARY=${LIBDIR}/blosc/lib/libblosc${BLOSC_POST}${LIBEXT}
|
||||
-DBlosc_INCLUDE_DIR=${LIBDIR}/blosc/include/
|
||||
-DBlosc_LIBRARY=${LIBDIR}/blosc/lib/libblosc${BLOSC_POST}${LIBEXT}
|
||||
-DOPENVDB_ENABLE_3_ABI_COMPATIBLE=OFF
|
||||
-DOPENVDB_BUILD_UNITTESTS=Off
|
||||
-DOPENVDB_BUILD_PYTHON_MODULE=Off
|
||||
-DGLEW_LOCATION=${LIBDIR}/glew/
|
||||
-DBLOSC_LOCATION=${LIBDIR}/blosc/
|
||||
-DTBB_LOCATION=${LIBDIR}/tbb/
|
||||
-DBlosc_ROOT=${LIBDIR}/blosc/
|
||||
-DTBB_ROOT=${LIBDIR}/tbb/
|
||||
-DOPENEXR_LOCATION=${LIBDIR}/openexr
|
||||
-DILMBASE_LOCATION=${LIBDIR}/ilmbase
|
||||
-DIlmbase_HALF_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Half${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DIlmbase_IEX_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Iex${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DIlmbase_ILMTHREAD_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}IlmThread${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOpenexr_ILMIMF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DTBB_LIBRARYDIR=${LIBDIR}/tbb/lib
|
||||
-DTbb_TBB_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
|
||||
-DTBB_LIBRARY_PATH=${LIBDIR}/tbb/lib
|
||||
-DOpenEXR_ROOT=${LIBDIR}/openexr
|
||||
-DIlmBase_ROOT=${LIBDIR}/openexr
|
||||
-DOPENEXR_LIBRARYDIR=${LIBDIR}/openexr/lib
|
||||
# All libs live in openexr, even the ilmbase ones
|
||||
-DILMBASE_LIBRARYDIR=${LIBDIR}/openexr/lib
|
||||
-DOPENVDB_CORE_SHARED=Off
|
||||
-DOPENVDB_BUILD_BINARIES=Off
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
@@ -54,15 +50,17 @@ if(WIN32)
|
||||
# being in the correct namespace
|
||||
# needs to link pthreads due to it being a blosc dependency
|
||||
set(OPENVDB_EXTRA_ARGS ${OPENVDB_EXTRA_ARGS}
|
||||
-DOPENEXR_NAMESPACE_VERSIONING=OFF
|
||||
-DEXTRA_LIBS:FILEPATH=${LIBDIR}/pthreads/lib/pthreadVC3.lib
|
||||
-DCMAKE_CXX_STANDARD_LIBRARIES="${LIBDIR}/pthreads/lib/pthreadVC3.lib"
|
||||
-DUSE_EXR=On
|
||||
)
|
||||
else()
|
||||
# OpenVDB can't find the _static libraries automatically.
|
||||
set(OPENVDB_EXTRA_ARGS ${OPENVDB_EXTRA_ARGS}
|
||||
-DTbb_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
|
||||
-DTbb_tbb_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
|
||||
-DTbb_tbbmalloc_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbbmalloc_static${LIBEXT}
|
||||
-DTbb_tbbmalloc_proxy_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbbmalloc_proxy_static${LIBEXT}
|
||||
)
|
||||
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||
set(OPENVDB_EXTRA_ARGS ${OPENVDB_EXTRA_ARGS}
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="/safeseh:no"
|
||||
-DCMAKE_EXE_LINKER_FLAGS="/safeseh:no"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(openvdb
|
||||
@@ -79,7 +77,6 @@ add_dependencies(
|
||||
openvdb
|
||||
external_tbb
|
||||
external_boost
|
||||
external_ilmbase
|
||||
external_openexr
|
||||
external_zlib
|
||||
external_blosc
|
||||
|
@@ -20,7 +20,6 @@ if(WIN32)
|
||||
option(ENABLE_MINGW64 "Enable building of ffmpeg/iconv/libsndfile/lapack/fftw3 by installing mingw64" ON)
|
||||
endif()
|
||||
option(WITH_WEBP "Enable building of oiio with webp support" OFF)
|
||||
option(WITH_EMBREE "Enable building of Embree" OFF)
|
||||
set(MAKE_THREADS 1 CACHE STRING "Number of threads to run make with")
|
||||
|
||||
if(NOT BUILD_MODE)
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
if(WIN32)
|
||||
set(OSL_CMAKE_CXX_STANDARD_LIBRARIES "kernel32${LIBEXT} user32${LIBEXT} gdi32${LIBEXT} winspool${LIBEXT} shell32${LIBEXT} ole32${LIBEXT} oleaut32${LIBEXT} uuid${LIBEXT} comdlg32${LIBEXT} advapi32${LIBEXT} psapi${LIBEXT}")
|
||||
set(OSL_FLEX_BISON -DFLEX_EXECUTABLE=${LIBDIR}/flexbison/win_flex.exe -DFLEX_EXTRA_OPTIONS="--wincompat" -DBISON_EXECUTABLE=${LIBDIR}/flexbison/win_bison.exe)
|
||||
set(OSL_FLEX_BISON -DFLEX_EXECUTABLE=${LIBDIR}/flexbison/win_flex.exe -DBISON_EXECUTABLE=${LIBDIR}/flexbison/win_bison.exe)
|
||||
set(OSL_OPENIMAGEIO_LIBRARY "${LIBDIR}/openimageio/lib/${LIBPREFIX}OpenImageIO${LIBEXT};${LIBDIR}/openimageio/lib/${LIBPREFIX}OpenImageIO_Util${LIBEXT};${LIBDIR}/png/lib/libpng16${LIBEXT};${LIBDIR}/jpg/lib/${LIBPREFIX}jpeg${LIBEXT};${LIBDIR}/tiff/lib/${LIBPREFIX}tiff${LIBEXT};${LIBDIR}/openexr/lib/${LIBPREFIX}IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT}")
|
||||
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||
set(OSL_SIMD_FLAGS -DOIIO_NOSIMD=1 -DOIIO_SIMD=0)
|
||||
@@ -33,7 +33,7 @@ else()
|
||||
SET(OSL_PLATFORM_FLAGS)
|
||||
endif()
|
||||
|
||||
set(OSL_ILMBASE_CUSTOM_LIBRARIES "${LIBDIR}/ilmbase/lib/Imath${ILMBASE_VERSION_POSTFIX}.lib^^${LIBDIR}/ilmbase/lib/Half{ILMBASE_VERSION_POSTFIX}.lib^^${LIBDIR}/ilmbase/lib/IlmThread${ILMBASE_VERSION_POSTFIX}.lib^^${LIBDIR}/ilmbase/lib/Iex${ILMBASE_VERSION_POSTFIX}.lib")
|
||||
set(OSL_ILMBASE_CUSTOM_LIBRARIES "${LIBDIR}/openexr/lib/Imath${OPENEXR_VERSION_POSTFIX}.lib^^${LIBDIR}/openexr/lib/Half{OPENEXR_VERSION_POSTFIX}.lib^^${LIBDIR}/openexr/lib/IlmThread${OPENEXR_VERSION_POSTFIX}.lib^^${LIBDIR}/openexr/lib/Iex${OPENEXR_VERSION_POSTFIX}.lib")
|
||||
set(OSL_LLVM_LIBRARY "${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMAnalysis${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMAsmParser${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMAsmPrinter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMBitReader${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMBitWriter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMCodeGen${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMCore${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMDebugInfo${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMExecutionEngine${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMInstCombine${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMInstrumentation${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMInterpreter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMJIT${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMLinker${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMC${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMCDisassembler${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMCJIT${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMMCParser${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMObject${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMRuntimeDyld${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMScalarOpts${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMSelectionDAG${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMSupport${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMTableGen${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMTarget${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMTransformUtils${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMVectorize${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86AsmParser${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86AsmPrinter${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86CodeGen${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Desc${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Disassembler${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Info${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMX86Utils${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMipa${LIBEXT};${LIBDIR}/llvm/lib/${LIBPREFIX}LLVMipo${LIBEXT}")
|
||||
|
||||
set(OSL_EXTRA_ARGS
|
||||
@@ -50,20 +50,21 @@ set(OSL_EXTRA_ARGS
|
||||
-DLLVM_VERSION=3.4
|
||||
-DLLVM_LIBRARY=${OSL_LLVM_LIBRARY}
|
||||
-DOPENEXR_HOME=${LIBDIR}/openexr/
|
||||
-DILMBASE_HOME=${LIBDIR}/ilmbase/
|
||||
-DILMBASE_INCLUDE_DIR=${LIBDIR}/ilmbase/include/
|
||||
-DOPENEXR_HALF_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Half${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IMATH_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Imath${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_ILMTHREAD_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}IlmThread${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IEX_LIBRARY=${LIBDIR}/ilmbase/lib/${LIBPREFIX}Iex${ILMBASE_VERSION_POSTFIX}${LIBEXT}
|
||||
-DILMBASE_HOME=${LIBDIR}/openexr/
|
||||
-DILMBASE_INCLUDE_DIR=${LIBDIR}/openexr/include/
|
||||
-DOPENEXR_HALF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Half${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IMATH_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Imath${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_ILMTHREAD_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmThread${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_IEX_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}Iex${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOPENEXR_INCLUDE_DIR=${LIBDIR}/openexr/include/
|
||||
-DOPENEXR_ILMIMF_LIBRARY=${LIBDIR}/openexr/lib/${LIBPREFIX}IlmImf${OPENEXR_VERSION_POSTFIX}${LIBEXT}
|
||||
-DOSL_BUILD_TESTS=OFF
|
||||
-DOSL_BUILD_MATERIALX=OFF
|
||||
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
|
||||
-DOPENIMAGEIOHOME=${LIBDIR}/openimageio/
|
||||
-DOPENIMAGEIO_INCLUDE_DIR=${LIBDIR}/openimageio/include
|
||||
-DOPENIMAGEIO_LIBRARY=${OSL_OPENIMAGEIO_LIBRARY}
|
||||
-DOPENIMAGEIO_INCLUDES=${LIBDIR}/openimageio/include
|
||||
${OSL_FLEX_BISON}
|
||||
-DCMAKE_CXX_STANDARD_LIBRARIES=${OSL_CMAKE_CXX_STANDARD_LIBRARIES}
|
||||
-DBUILDSTATIC=ON
|
||||
@@ -72,6 +73,7 @@ set(OSL_EXTRA_ARGS
|
||||
-DSTOP_ON_WARNING=OFF
|
||||
-DUSE_LLVM_BITCODE=OFF
|
||||
-DUSE_PARTIO=OFF
|
||||
-DUSE_QT=OFF
|
||||
${OSL_SIMD_FLAGS}
|
||||
-DPARTIO_LIBRARIES=
|
||||
)
|
||||
@@ -87,7 +89,6 @@ elseif(APPLE)
|
||||
set(OSL_EXTRA_ARGS
|
||||
${OSL_EXTRA_ARGS}
|
||||
-DHIDE_SYMBOLS=OFF
|
||||
-DPUGIXML_HOME=${LIBDIR}/pugixml
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -107,14 +108,13 @@ add_dependencies(
|
||||
external_boost
|
||||
ll
|
||||
external_clang
|
||||
external_ilmbase
|
||||
external_openexr
|
||||
external_zlib
|
||||
external_flexbison
|
||||
external_openimageio
|
||||
)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
if(UNIX)
|
||||
# Rely on PugiXML compiled with OpenImageIO
|
||||
else()
|
||||
add_dependencies(
|
||||
|
@@ -29,6 +29,7 @@ if(MSVC)
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}.lib ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}.lib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python.exe ${PYTARGET}/bin/python.exe
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}.dll ${PYTARGET}/bin/python${PYTHON_SHORT_VERSION_NO_DOTS}.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python3${PYTHON_POSTFIX}.dll ${PYTARGET}/bin/python3${PYTHON_POSTFIX}.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}.pdb ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}.pdb
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/include/ ${PYTARGET}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/lib/ ${PYTARGET}/lib/
|
||||
@@ -47,6 +48,7 @@ if(MSVC)
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.lib ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.lib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_POSTFIX}.exe ${PYTARGET}/bin/python${PYTHON_POSTFIX}.exe
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll ${PYTARGET}/bin/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python3${PYTHON_POSTFIX}.dll ${PYTARGET}/bin/python3${PYTHON_POSTFIX}.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/include/ ${PYTARGET}/include/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/lib/ ${PYTARGET}/lib/
|
||||
|
@@ -43,7 +43,7 @@ if(WIN32)
|
||||
PREFIX ${BUILD_DIR}/python
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p ${PYTHON_ARCH} -c ${BUILD_MODE}
|
||||
INSTALL_COMMAND ${PYTHON_BINARY_INTERNAL} ${PYTHON_SRC}/PC/layout/main.py -b ${PYTHON_SRC}/PCbuild/amd64 -s ${PYTHON_SRC} -t ${PYTHON_SRC}/tmp/ --include-underpth --include-stable --include-pip --include-dev --include-launchers --include-symbols ${PYTHON_EXTRA_INSTLAL_FLAGS} --copy ${LIBDIR}/python
|
||||
INSTALL_COMMAND ${PYTHON_BINARY_INTERNAL} ${PYTHON_SRC}/PC/layout/main.py -b ${PYTHON_SRC}/PCbuild/amd64 -s ${PYTHON_SRC} -t ${PYTHON_SRC}/tmp/ --include-underpth --include-stable --include-pip --include-dev --include-launchers --include-venv --include-symbols ${PYTHON_EXTRA_INSTLAL_FLAGS} --copy ${LIBDIR}/python
|
||||
)
|
||||
|
||||
else()
|
||||
|
@@ -19,8 +19,10 @@
|
||||
set(SQLITE_CONFIGURE_ENV echo .)
|
||||
set(SQLITE_CONFIGURATION_ARGS)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(SQLITE_LDFLAGS -Wl,--as-needed)
|
||||
if(UNIX)
|
||||
if(NOT APPLE)
|
||||
set(SQLITE_LDFLAGS -Wl,--as-needed)
|
||||
endif()
|
||||
set(SQLITE_CFLAGS
|
||||
"-DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_COLUMN_METADATA \
|
||||
-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS \
|
||||
|
101
build_files/build_environment/cmake/usd.cmake
Normal file
101
build_files/build_environment/cmake/usd.cmake
Normal file
@@ -0,0 +1,101 @@
|
||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ***** END GPL LICENSE BLOCK *****
|
||||
|
||||
set(USD_EXTRA_ARGS
|
||||
-DBoost_COMPILER:STRING=${BOOST_COMPILER_STRING}
|
||||
-DBoost_USE_MULTITHREADED=ON
|
||||
-DBoost_USE_STATIC_LIBS=ON
|
||||
-DBoost_USE_STATIC_RUNTIME=OFF
|
||||
-DBOOST_ROOT=${LIBDIR}/boost
|
||||
-DTBB_INCLUDE_DIRS=${LIBDIR}/tbb/include
|
||||
-DTBB_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
|
||||
-DTbb_TBB_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
|
||||
|
||||
# This is a preventative measure that avoids possible conflicts when add-ons
|
||||
# try to load another USD library into the same process space.
|
||||
-DPXR_SET_INTERNAL_NAMESPACE=usdBlender
|
||||
|
||||
-DPXR_ENABLE_PYTHON_SUPPORT=OFF
|
||||
-DPXR_BUILD_IMAGING=OFF
|
||||
-DPXR_BUILD_TESTS=OFF
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DPYTHON_EXECUTABLE=${PYTHON_BINARY}
|
||||
-DPXR_BUILD_MONOLITHIC=ON
|
||||
|
||||
# The PXR_BUILD_USD_TOOLS argument is patched-in by usd.diff. An upstream pull request
|
||||
# can be found at https://github.com/PixarAnimationStudios/USD/pull/1048.
|
||||
-DPXR_BUILD_USD_TOOLS=OFF
|
||||
|
||||
-DCMAKE_DEBUG_POSTFIX=_d
|
||||
# USD is hellbound on making a shared lib, unless you point this variable to a valid cmake file
|
||||
# doesn't have to make sense, but as long as it points somewhere valid it will skip the shared lib.
|
||||
-DPXR_MONOLITHIC_IMPORT=${BUILD_DIR}/usd/src/external_usd/cmake/defaults/Version.cmake
|
||||
)
|
||||
|
||||
ExternalProject_Add(external_usd
|
||||
URL ${USD_URI}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH MD5=${USD_HASH}
|
||||
PREFIX ${BUILD_DIR}/usd
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < ${PATCH_DIR}/usd.diff
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/usd -Wno-dev ${DEFAULT_CMAKE_FLAGS} ${USD_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/usd
|
||||
)
|
||||
|
||||
add_dependencies(
|
||||
external_usd
|
||||
external_tbb
|
||||
external_boost
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
# USD currently demands python be available at build time
|
||||
# and then proceeds not to use it, but still checks that the
|
||||
# version of the interpreter it is not going to use is atleast 2.7
|
||||
# so we need this dep currently since there is no system python
|
||||
# on windows.
|
||||
add_dependencies(
|
||||
external_usd
|
||||
external_python
|
||||
)
|
||||
if(BUILD_MODE STREQUAL Release)
|
||||
ExternalProject_Add_Step(external_usd after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/usd/ ${HARVEST_TARGET}/usd
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/usd/src/external_usd-build/pxr/Release/libusd_m.lib ${HARVEST_TARGET}/usd/lib/libusd_m.lib
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
if(BUILD_MODE STREQUAL Debug)
|
||||
ExternalProject_Add_Step(external_usd after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/usd/lib ${HARVEST_TARGET}/usd/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/usd/src/external_usd-build/pxr/Debug/libusd_m_d.lib ${HARVEST_TARGET}/usd/lib/libusd_m_d.lib
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
# USD has two build options. The default build creates lots of small libraries,
|
||||
# whereas the 'monolithic' build produces only a single library. The latter
|
||||
# makes linking simpler, so that's what we use in Blender. However, running
|
||||
# 'make install' in the USD sources doesn't install the static library in that
|
||||
# case (only the shared library). As a result, we need to grab the `libusd_m.a`
|
||||
# file from the build directory instead of from the install directory.
|
||||
ExternalProject_Add_Step(external_usd after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/usd/src/external_usd-build/pxr/libusd_m.a ${HARVEST_TARGET}/usd/lib/libusd_m.a
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
@@ -32,47 +32,43 @@ set(JPEG_VERSION 1.5.3)
|
||||
set(JPEG_URI https://github.com/libjpeg-turbo/libjpeg-turbo/archive/${JPEG_VERSION}.tar.gz)
|
||||
set(JPEG_HASH 5b7549d440b86c98a517355c102d155e)
|
||||
|
||||
set(BOOST_VERSION 1.68.0)
|
||||
set(BOOST_VERSION_NODOTS 1_68_0)
|
||||
set(BOOST_VERSION 1.70.0)
|
||||
set(BOOST_VERSION_NODOTS 1_70_0)
|
||||
set(BOOST_VERSION_NODOTS_SHORT 1_70)
|
||||
set(BOOST_URI https://dl.bintray.com/boostorg/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_NODOTS}.tar.gz)
|
||||
set(BOOST_HASH 5d8b4503582fffa9eefdb9045359c239)
|
||||
set(BOOST_HASH fea771fe8176828fabf9c09242ee8c26)
|
||||
|
||||
set(BLOSC_VERSION 1.14.4)
|
||||
# Using old version as recommended by OpenVDB build documentation.
|
||||
set(BLOSC_VERSION 1.5.0)
|
||||
set(BLOSC_URI https://github.com/Blosc/c-blosc/archive/v${BLOSC_VERSION}.tar.gz)
|
||||
set(BLOSC_HASH e80dfc71e4cba03b8d01ed0876547ffe)
|
||||
set(BLOSC_HASH 6e4a49c8c06f05aa543f3312cfce3d55)
|
||||
|
||||
set(PTHREADS_VERSION 3.0.0)
|
||||
set(PTHREADS_URI http://sourceforge.mirrorservice.org/p/pt/pthreads4w/pthreads4w-code-v${PTHREADS_VERSION}.zip)
|
||||
set(PTHREADS_HASH f3bf81bb395840b3446197bcf4ecd653)
|
||||
|
||||
set(ILMBASE_VERSION 2.3.0)
|
||||
set(OPENEXR_VERSION 2.4.0)
|
||||
set(OPENEXR_URI https://github.com/AcademySoftwareFoundation/openexr/archive/v${OPENEXR_VERSION}.tar.gz)
|
||||
set(OPENEXR_HASH 9e4d69cf2a12c6fb19b98af7c5e0eaee)
|
||||
if(WIN32)
|
||||
# Openexr started appending _d on its own so now
|
||||
# we need to tell the build the postfix is _s while
|
||||
# telling all other deps the postfix is _s_d
|
||||
if(BUILD_MODE STREQUAL Release)
|
||||
set(ILMBASE_VERSION_POSTFIX _s)
|
||||
set(OPENEXR_VERSION_POSTFIX _s)
|
||||
set(OPENEXR_VERSION_BUILD_POSTFIX _s)
|
||||
else()
|
||||
set(ILMBASE_VERSION_POSTFIX _s_d)
|
||||
set(OPENEXR_VERSION_POSTFIX _s_d)
|
||||
set(OPENEXR_VERSION_BUILD_POSTFIX _s)
|
||||
endif()
|
||||
else()
|
||||
set(ILMBASE_VERSION_POSTFIX)
|
||||
endif()
|
||||
set(ILMBASE_URI https://github.com/openexr/openexr/releases/download/v${ILMBASE_VERSION}/ilmbase-${ILMBASE_VERSION}.tar.gz)
|
||||
set(ILMBASE_HASH 354bf86de3b930ab87ac63619d60c860)
|
||||
|
||||
set(OPENEXR_VERSION 2.3.0)
|
||||
if(WIN32) # release 2.3.0 tarball has broken cmake support
|
||||
set(OPENEXR_URI https://github.com/openexr/openexr/archive/0ac2ea34c8f3134148a5df4052e40f155b76f6fb.tar.gz)
|
||||
set(OPENEXR_HASH ed159435d508240712fbaaa21d94bafb)
|
||||
else()
|
||||
set(OPENEXR_VERSION_BUILD_POSTFIX)
|
||||
set(OPENEXR_VERSION_POSTFIX)
|
||||
set(OPENEXR_URI https://github.com/openexr/openexr/releases/download/v${OPENEXR_VERSION}/openexr-${OPENEXR_VERSION}.tar.gz)
|
||||
set(OPENEXR_HASH a157e8a46596bc185f2472a5a4682174)
|
||||
endif()
|
||||
|
||||
set(FREETYPE_VERSION 2.9.1)
|
||||
set(FREETYPE_VERSION 2.10.1)
|
||||
set(FREETYPE_URI http://prdownloads.sourceforge.net/freetype/freetype-${FREETYPE_VERSION}.tar.gz)
|
||||
set(FREETYPE_HASH 3adb0e35d3c100c456357345ccfa8056)
|
||||
set(FREETYPE_HASH c50a3c9e5e62bdc938a6e1598a782947)
|
||||
|
||||
set(GLEW_VERSION 1.13.0)
|
||||
set(GLEW_URI http://prdownloads.sourceforge.net/glew/glew/${GLEW_VERSION}/glew-${GLEW_VERSION}.tgz)
|
||||
@@ -121,15 +117,15 @@ set(OPENCOLORIO_VERSION 1.1.0)
|
||||
set(OPENCOLORIO_URI https://github.com/imageworks/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz)
|
||||
set(OPENCOLORIO_HASH 802d8f5b1d1fe316ec5f76511aa611b8)
|
||||
|
||||
set(LLVM_VERSION 6.0.1)
|
||||
set(LLVM_URI http://releases.llvm.org/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz)
|
||||
set(LLVM_HASH c88c98709300ce2c285391f387fecce0)
|
||||
set(LLVM_VERSION 9.0.1)
|
||||
set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz)
|
||||
set(LLVM_HASH 31eb9ce73dd2a0f8dcab8319fb03f8fc)
|
||||
|
||||
set(CLANG_URI http://releases.llvm.org/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz)
|
||||
set(CLANG_HASH 4e419bd4e3b55aa06d872320f754bd85)
|
||||
set(CLANG_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/clang-${LLVM_VERSION}.src.tar.xz)
|
||||
set(CLANG_HASH 13468e4a44940efef1b75e8641752f90)
|
||||
|
||||
set(OPENMP_URI http://releases.llvm.org/${LLVM_VERSION}/openmp-${LLVM_VERSION}.src.tar.xz)
|
||||
set(OPENMP_HASH 4826402ae3633c36c51ba4d0e5527d30)
|
||||
set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/openmp-${LLVM_VERSION}.src.tar.xz)
|
||||
set(OPENMP_HASH 6eade16057edbdecb3c4eef9daa2bfcf)
|
||||
|
||||
set(OPENIMAGEIO_VERSION 1.8.13)
|
||||
set(OPENIMAGEIO_URI https://github.com/OpenImageIO/oiio/archive/Release-${OPENIMAGEIO_VERSION}.tar.gz)
|
||||
@@ -139,9 +135,9 @@ set(TIFF_VERSION 4.0.9)
|
||||
set(TIFF_URI http://download.osgeo.org/libtiff/tiff-${TIFF_VERSION}.tar.gz)
|
||||
set(TIFF_HASH 54bad211279cc93eb4fca31ba9bfdc79)
|
||||
|
||||
set(OSL_VERSION 1.9.9)
|
||||
set(OSL_VERSION 1.10.9)
|
||||
set(OSL_URI https://github.com/imageworks/OpenShadingLanguage/archive/Release-${OSL_VERSION}.tar.gz)
|
||||
set(OSL_HASH 44ad511e424965a10fce051a053b0605)
|
||||
set(OSL_HASH a94f1e8506f7e8f5e993653de5c5fa00)
|
||||
|
||||
set(PYTHON_VERSION 3.7.4)
|
||||
set(PYTHON_SHORT_VERSION 3.7)
|
||||
@@ -150,12 +146,12 @@ set(PYTHON_URI https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTH
|
||||
set(PYTHON_HASH d33e4aae66097051c2eca45ee3604803)
|
||||
|
||||
set(TBB_VERSION 2019_U9)
|
||||
set(TBB_URI https://github.com/01org/tbb/archive/${TBB_VERSION}.tar.gz)
|
||||
set(TBB_HASH 584edbec127c508f2cd5b6e79ad200fc)
|
||||
set(TBB_URI https://github.com/oneapi-src/oneTBB/archive/${TBB_VERSION}.tar.gz)
|
||||
set(TBB_HASH 26263622e9187212ec240dcf01b66207)
|
||||
|
||||
set(OPENVDB_VERSION 5.1.0)
|
||||
set(OPENVDB_VERSION 7.0.0)
|
||||
set(OPENVDB_URI https://github.com/dreamworksanimation/openvdb/archive/v${OPENVDB_VERSION}.tar.gz)
|
||||
set(OPENVDB_HASH 5310101f874dcfd2165f9cee68c22624)
|
||||
set(OPENVDB_HASH fd6c4f168282f7e0e494d290cd531fa8)
|
||||
|
||||
set(IDNA_VERSION 2.8)
|
||||
set(CHARDET_VERSION 3.0.4)
|
||||
@@ -303,9 +299,13 @@ set(SQLITE_VERSION 3.24.0)
|
||||
set(SQLITE_URI https://www.sqlite.org/2018/sqlite-src-3240000.zip)
|
||||
set(SQLITE_HASH fb558c49ee21a837713c4f1e7e413309aabdd9c7)
|
||||
|
||||
set(EMBREE_VERSION 3.2.4)
|
||||
set(EMBREE_VERSION 3.8.0)
|
||||
set(EMBREE_URI https://github.com/embree/embree/archive/v${EMBREE_VERSION}.zip)
|
||||
set(EMBREE_HASH 3d4a1147002ff43939d45140aa9d6fb8)
|
||||
set(EMBREE_HASH ac504d5426945fe25dec1267e0c39d52)
|
||||
|
||||
set(USD_VERSION 19.11)
|
||||
set(USD_URI https://github.com/PixarAnimationStudios/USD/archive/v${USD_VERSION}.tar.gz)
|
||||
set(USD_HASH 79ff176167b3fe85f4953abd6cc5e0cc)
|
||||
|
||||
set(OIDN_VERSION 1.0.0)
|
||||
set(OIDN_URI https://github.com/OpenImageDenoise/oidn/releases/download/v${OIDN_VERSION}/oidn-${OIDN_VERSION}.src.zip)
|
||||
@@ -318,3 +318,7 @@ set(LIBGLU_HASH 151aef599b8259efe9acd599c96ea2a3)
|
||||
set(MESA_VERSION 18.3.1)
|
||||
set(MESA_URI ftp://ftp.freedesktop.org/pub/mesa//mesa-${MESA_VERSION}.tar.xz)
|
||||
set(MESA_HASH d60828056d77bfdbae0970f9b15fb1be)
|
||||
|
||||
set(XR_OPENXR_SDK_VERSION 1.0.6)
|
||||
set(XR_OPENXR_SDK_URI https://github.com/KhronosGroup/OpenXR-SDK/archive/release-${XR_OPENXR_SDK_VERSION}.tar.gz)
|
||||
set(XR_OPENXR_SDK_HASH 21daea7c3bfec365298d779a0e19caa1)
|
||||
|
60
build_files/build_environment/cmake/xr_openxr.cmake
Normal file
60
build_files/build_environment/cmake/xr_openxr.cmake
Normal file
@@ -0,0 +1,60 @@
|
||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ***** END GPL LICENSE BLOCK *****
|
||||
|
||||
|
||||
# Keep flags in sync with install_deps.sh ones in compile_XR_OpenXR_SDK()
|
||||
set(XR_OPENXR_SDK_EXTRA_ARGS
|
||||
-DBUILD_FORCE_GENERATION=OFF
|
||||
-DBUILD_LOADER=ON
|
||||
-DDYNAMIC_LOADER=OFF
|
||||
)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
list(APPEND XR_OPENXR_SDK_EXTRA_ARGS
|
||||
-DBUILD_WITH_WAYLAND_HEADERS=OFF
|
||||
-DBUILD_WITH_XCB_HEADERS=OFF
|
||||
-DBUILD_WITH_XLIB_HEADERS=ON
|
||||
-DBUILD_WITH_SYSTEM_JSONCPP=OFF
|
||||
-DCMAKE_CXX_FLAGS=-DDISABLE_STD_FILESYSTEM=1
|
||||
)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(external_xr_openxr_sdk
|
||||
URL ${XR_OPENXR_SDK_URI}
|
||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||
URL_HASH MD5=${XR_OPENXR_SDK_HASH}
|
||||
PREFIX ${BUILD_DIR}/xr_openxr_sdk
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/xr_openxr_sdk ${DEFAULT_CMAKE_FLAGS} ${XR_OPENXR_SDK_EXTRA_ARGS}
|
||||
INSTALL_DIR ${LIBDIR}/xr_openxr_sdk
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
if(BUILD_MODE STREQUAL Release)
|
||||
ExternalProject_Add_Step(external_xr_openxr_sdk after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/xr_openxr_sdk/include/openxr ${HARVEST_TARGET}/xr_openxr_sdk/include/openxr
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/xr_openxr_sdk/lib ${HARVEST_TARGET}/xr_openxr_sdk/lib
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
if(BUILD_MODE STREQUAL Debug)
|
||||
ExternalProject_Add_Step(external_xr_openxr_sdk after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/xr_openxr_sdk/lib/openxr_loader.lib ${HARVEST_TARGET}/xr_openxr_sdk/lib/openxr_loader_d.lib
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
endif()
|
100
build_files/build_environment/dependencies.dot
Normal file
100
build_files/build_environment/dependencies.dot
Normal file
@@ -0,0 +1,100 @@
|
||||
strict graph {
|
||||
graph[autosize = false, size = "25.7,8.3!", resolution = 300, overlap = false, splines = false, outputorder=edgesfirst ];
|
||||
node [style=filled fillcolor=white];
|
||||
external_alembic -- external_boost;
|
||||
external_alembic -- external_zlib;
|
||||
external_alembic -- external_openexr;
|
||||
external_blosc -- external_zlib;
|
||||
external_blosc -- external_pthreads;
|
||||
external_boost -- Make_Python_Environment;
|
||||
external_clang -- ll;
|
||||
external_ffmpeg -- external_zlib;
|
||||
external_ffmpeg -- external_faad;
|
||||
external_ffmpeg -- external_openjpeg;
|
||||
external_ffmpeg -- external_xvidcore;
|
||||
external_ffmpeg -- external_x264;
|
||||
external_ffmpeg -- external_vpx;
|
||||
external_ffmpeg -- external_theora;
|
||||
external_ffmpeg -- external_vorbis;
|
||||
external_ffmpeg -- external_ogg;
|
||||
external_ffmpeg -- external_lame;
|
||||
external_ffmpeg -- external_zlib_mingw;
|
||||
external_numpy -- Make_Python_Environment;
|
||||
external_opencollada -- external_xml2;
|
||||
external_opencolorio -- external_boost;
|
||||
external_opencolorio -- external_tinyxml;
|
||||
external_opencolorio -- external_yamlcpp;
|
||||
external_openexr -- external_zlib;
|
||||
external_openimageio -- external_png;
|
||||
external_openimageio -- external_zlib;
|
||||
external_openimageio -- external_openexr;
|
||||
external_openimageio -- external_openexr;
|
||||
external_openimageio -- external_jpeg;
|
||||
external_openimageio -- external_boost;
|
||||
external_openimageio -- external_tiff;
|
||||
external_openimageio -- external_opencolorio;
|
||||
external_openimageio -- external_openjpeg;
|
||||
external_openimageio -- external_webp;
|
||||
external_openimageio -- external_opencolorio_extra;
|
||||
external_openmp -- external_clang;
|
||||
external_opensubdiv -- external_glew;
|
||||
external_opensubdiv -- external_glfw;
|
||||
external_opensubdiv -- external_clew;
|
||||
external_opensubdiv -- external_cuew;
|
||||
external_opensubdiv -- external_tbb;
|
||||
openvdb -- external_tbb;
|
||||
openvdb -- external_boost;
|
||||
openvdb -- external_openexr;
|
||||
openvdb -- external_openexr;
|
||||
openvdb -- external_zlib;
|
||||
openvdb -- external_blosc;
|
||||
external_osl -- external_boost;
|
||||
external_osl -- ll;
|
||||
external_osl -- external_clang;
|
||||
external_osl -- external_openexr;
|
||||
external_osl -- external_openexr;
|
||||
external_osl -- external_zlib;
|
||||
external_osl -- external_flexbison;
|
||||
external_osl -- external_openimageio;
|
||||
external_osl -- external_pugixml;
|
||||
external_png -- external_zlib;
|
||||
external_python_site_packages -- Make_Python_Environment;
|
||||
external_sndfile -- external_ogg;
|
||||
external_sndfile -- external_vorbis;
|
||||
external_sndfile -- external_flac;
|
||||
external_theora -- external_vorbis;
|
||||
external_theora -- external_ogg;
|
||||
external_tiff -- external_zlib;
|
||||
external_vorbis -- external_ogg;
|
||||
blender-- external_ffmpeg;
|
||||
blender-- external_alembic;
|
||||
blender-- external_openjpeg;
|
||||
blender-- external_opencolorio;
|
||||
blender-- external_openexr;
|
||||
blender-- external_opensubdiv;
|
||||
blender-- openvdb;
|
||||
blender-- external_osl;
|
||||
blender-- external_boost;
|
||||
blender-- external_jpeg;
|
||||
blender-- external_png;
|
||||
blender-- external_python;
|
||||
blender-- external_sndfile;
|
||||
blender-- external_iconv;
|
||||
blender-- external_fftw3;
|
||||
external_python-- external_python_site_packages;
|
||||
external_python_site_packages-- requests;
|
||||
external_python_site_packages-- idna;
|
||||
external_python_site_packages-- chardet;
|
||||
external_python_site_packages-- urllib3;
|
||||
external_python_site_packages-- certifi;
|
||||
external_python-- external_numpy;
|
||||
external_usd-- external_boost;
|
||||
external_usd-- external_tbb;
|
||||
blender-- external_opencollada;
|
||||
blender-- external_sdl;
|
||||
blender-- external_freetype;
|
||||
blender-- external_pthreads;
|
||||
blender-- external_zlib;
|
||||
blender-- external_openal;
|
||||
blender-- external_usd;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
2
build_files/build_environment/patches/.gitattributes
vendored
Normal file
2
build_files/build_environment/patches/.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Files contains mixed line endings, patch needs to preserve them to apply.
|
||||
opencollada.diff binary
|
@@ -10,22 +10,84 @@ diff -Naur src/blosc/CMakeLists.txt external_blosc/blosc/CMakeLists.txt
|
||||
endif(NOT Threads_FOUND)
|
||||
else(WIN32)
|
||||
find_package(Threads REQUIRED)
|
||||
diff -Naur src/CMakeLists.txt external_blosc/CMakeLists.txt
|
||||
--- src/CMakeLists.txt 2016-02-03 10:26:28 -0700
|
||||
+++ external_blosc/CMakeLists.txt 2017-03-03 09:03:31 -0700
|
||||
@@ -17,8 +17,8 @@
|
||||
# do not include support for the Snappy library
|
||||
# DEACTIVATE_ZLIB: default OFF
|
||||
# do not include support for the Zlib library
|
||||
-# PREFER_EXTERNAL_COMPLIBS: default ON
|
||||
-# when found, use the installed compression libs instead of included sources
|
||||
+# PREFER_EXTERNAL_ZLIB: default ON
|
||||
+# when found, use the installed zlib instead of included sources
|
||||
# TEST_INCLUDE_BENCH_SINGLE_1: default ON
|
||||
# add a test that runs the benchmark program passing "single" with 1 thread
|
||||
# as first parameter
|
||||
@@ -80,29 +80,23 @@
|
||||
"Do not include support for the SNAPPY library." OFF)
|
||||
option(DEACTIVATE_ZLIB
|
||||
"Do not include support for the ZLIB library." OFF)
|
||||
-option(PREFER_EXTERNAL_COMPLIBS
|
||||
- "When found, use the installed compression libs instead of included sources." ON)
|
||||
+option(PREFER_EXTERNAL_ZLIB
|
||||
+ "When found, use the installed zlib instead of included sources." ON)
|
||||
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
|
||||
-if(NOT PREFER_EXTERNAL_COMPLIBS)
|
||||
+if(NOT PREFER_EXTERNAL_ZLIB)
|
||||
message(STATUS "Finding external libraries disabled. Using internal sources.")
|
||||
-endif(NOT PREFER_EXTERNAL_COMPLIBS)
|
||||
+endif(NOT PREFER_EXTERNAL_ZLIB)
|
||||
|
||||
|
||||
if(NOT DEACTIVATE_LZ4)
|
||||
- if(PREFER_EXTERNAL_COMPLIBS)
|
||||
- find_package(LZ4)
|
||||
- endif(PREFER_EXTERNAL_COMPLIBS)
|
||||
# HAVE_LZ4 will be set to true because even if the library is
|
||||
# not found, we will use the included sources for it
|
||||
set(HAVE_LZ4 TRUE)
|
||||
endif(NOT DEACTIVATE_LZ4)
|
||||
|
||||
if(NOT DEACTIVATE_SNAPPY)
|
||||
- if(PREFER_EXTERNAL_COMPLIBS)
|
||||
- find_package(Snappy)
|
||||
- endif(PREFER_EXTERNAL_COMPLIBS)
|
||||
# HAVE_SNAPPY will be set to true because even if the library is not found,
|
||||
# we will use the included sources for it
|
||||
set(HAVE_SNAPPY TRUE)
|
||||
@@ -110,13 +104,13 @@
|
||||
|
||||
if(NOT DEACTIVATE_ZLIB)
|
||||
# import the ZLIB_ROOT environment variable to help finding the zlib library
|
||||
- if(PREFER_EXTERNAL_COMPLIBS)
|
||||
+ if(PREFER_EXTERNAL_ZLIB)
|
||||
set(ZLIB_ROOT $ENV{ZLIB_ROOT})
|
||||
find_package( ZLIB )
|
||||
if (NOT ZLIB_FOUND )
|
||||
message(STATUS "No zlib found. Using internal sources.")
|
||||
endif (NOT ZLIB_FOUND )
|
||||
- endif(PREFER_EXTERNAL_COMPLIBS)
|
||||
+ endif(PREFER_EXTERNAL_ZLIB)
|
||||
# HAVE_ZLIB will be set to true because even if the library is not found,
|
||||
# we will use the included sources for it
|
||||
set(HAVE_ZLIB TRUE)
|
||||
diff -Naur external_blosc.orig/blosc/blosc.c external_blosc/blosc/blosc.c
|
||||
--- external_blosc.orig/blosc/blosc.c 2018-07-30 04:56:38 -0600
|
||||
+++ external_blosc/blosc/blosc.c 2018-08-11 15:27:26 -0600
|
||||
@@ -56,14 +56,7 @@
|
||||
@@ -41,12 +41,7 @@
|
||||
#include <inttypes.h>
|
||||
#endif /* _WIN32 */
|
||||
|
||||
-/* Include the win32/pthread.h library for all the Windows builds. See #224. */
|
||||
-#if defined(_WIN32)
|
||||
- #include "win32/pthread.h"
|
||||
- #include "win32/pthread.c"
|
||||
-#else
|
||||
- #include <pthread.h>
|
||||
-#endif
|
||||
-
|
||||
+#include <pthread.h>
|
||||
|
||||
|
||||
/* Some useful units */
|
||||
#define KB 1024
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_blosc_SEARCH_DIRS
|
||||
${BLOSC_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/blosc
|
||||
)
|
||||
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_cppunit_SEARCH_DIRS
|
||||
${CPPUNIT_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/cppunit
|
||||
)
|
||||
|
||||
|
@@ -26,8 +26,8 @@ include(FindPackageMessage)
|
||||
include(SelectLibraryConfigurations)
|
||||
|
||||
|
||||
if( ILMBASE_USE_STATIC_LIBS )
|
||||
set( _ilmbase_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
if(ILMBASE_USE_STATIC_LIBS)
|
||||
set(_ilmbase_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
if(WIN32)
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
else()
|
||||
@@ -124,7 +124,6 @@ set(IlmBase_generic_include_paths
|
||||
/usr/include
|
||||
/usr/include/${CMAKE_LIBRARY_ARCHITECTURE}
|
||||
/usr/local/include
|
||||
/sw/include
|
||||
/opt/local/include
|
||||
)
|
||||
set(IlmBase_generic_library_paths
|
||||
@@ -133,7 +132,6 @@ set(IlmBase_generic_library_paths
|
||||
/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
|
||||
/usr/local/lib
|
||||
/usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
|
||||
/sw/lib
|
||||
/opt/local/lib
|
||||
)
|
||||
|
||||
@@ -249,7 +247,7 @@ if(ILMBASE_FOUND)
|
||||
endif()
|
||||
|
||||
# Restore the original find library ordering
|
||||
if( ILMBASE_USE_STATIC_LIBS )
|
||||
if(ILMBASE_USE_STATIC_LIBS )
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_ilmbase_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
endif()
|
||||
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_logc4plus_SEARCH_DIRS
|
||||
${LOGC4PLUS_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/logc4plus
|
||||
)
|
||||
|
||||
|
@@ -119,7 +119,6 @@ set(OpenEXR_generic_include_paths
|
||||
/usr/include
|
||||
/usr/include/${CMAKE_LIBRARY_ARCHITECTURE}
|
||||
/usr/local/include
|
||||
/sw/include
|
||||
/opt/local/include
|
||||
)
|
||||
set(OpenEXR_generic_library_paths
|
||||
@@ -128,7 +127,6 @@ set(OpenEXR_generic_library_paths
|
||||
/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
|
||||
/usr/local/lib
|
||||
/usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
|
||||
/sw/lib
|
||||
/opt/local/lib
|
||||
)
|
||||
|
||||
@@ -232,7 +230,7 @@ if(OPENEXR_FOUND)
|
||||
endif()
|
||||
|
||||
# Restore the original find library ordering
|
||||
if( OPENEXR_USE_STATIC_LIBS )
|
||||
if(OPENEXR_USE_STATIC_LIBS )
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_openexr_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
endif()
|
||||
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_tbb_SEARCH_DIRS
|
||||
${TBB_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/tbb
|
||||
)
|
||||
|
||||
|
@@ -1,18 +0,0 @@
|
||||
diff -NaurBb b/CMakeLists.txt a/CMakeLists.txt
|
||||
--- b/CMakeLists.txt 2018-05-01 12:45:46 -0600
|
||||
+++ a/CMakeLists.txt 2018-08-08 13:03:22 -0600
|
||||
@@ -229,9 +229,12 @@
|
||||
endif ()
|
||||
string(REPLACE "/undef " "#undef "
|
||||
FTCONFIG_H "${FTCONFIG_H}")
|
||||
- file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h"
|
||||
- "${FTCONFIG_H}")
|
||||
+else()
|
||||
+ file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h"
|
||||
+ FTCONFIG_H)
|
||||
endif ()
|
||||
+file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h"
|
||||
+ "${FTCONFIG_H}")
|
||||
|
||||
|
||||
# Create the options file
|
13
build_files/build_environment/patches/llvm.diff
Normal file
13
build_files/build_environment/patches/llvm.diff
Normal file
@@ -0,0 +1,13 @@
|
||||
--- a/lib/Support/Unix/Path.inc 2020-02-17 09:24:26.000000000 +0100
|
||||
+++ b/lib/Support/Unix/Path.inc 2020-02-17 09:26:25.000000000 +0100
|
||||
@@ -1200,7 +1200,9 @@
|
||||
/// implementation.
|
||||
std::error_code copy_file(const Twine &From, const Twine &To) {
|
||||
uint32_t Flag = COPYFILE_DATA;
|
||||
-#if __has_builtin(__builtin_available) && defined(COPYFILE_CLONE)
|
||||
+ // BLENDER: This optimization makes LLVM not build on older Xcode versions,
|
||||
+ // just disable until everyone has new enough Xcode versions.
|
||||
+#if 0
|
||||
if (__builtin_available(macos 10.12, *)) {
|
||||
bool IsSymlink;
|
||||
if (std::error_code Error = is_symlink_file(From, IsSymlink))
|
@@ -16,6 +16,19 @@ index 95abbe2..4f14f30 100644
|
||||
message("WARNING: Native PCRE not found, taking PCRE from ./Externals")
|
||||
add_definitions(-DPCRE_STATIC)
|
||||
add_subdirectory(${EXTERNAL_LIBRARIES}/pcre)
|
||||
diff --git a/DAEValidator/CMakeLists.txt b/DAEValidator/CMakeLists.txt
|
||||
index 03ad540..f7d05cf 100644
|
||||
--- a/DAEValidator/CMakeLists.txt
|
||||
+++ b/DAEValidator/CMakeLists.txt
|
||||
@@ -98,7 +98,7 @@ if (WIN32)
|
||||
# C4710: 'function' : function not inlined
|
||||
# C4711: function 'function' selected for inline expansion
|
||||
# C4820: 'bytes' bytes padding added after construct 'member_name'
|
||||
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /Wall /WX /wd4505 /wd4514 /wd4592 /wd4710 /wd4711 /wd4820")
|
||||
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /Wall /wd4505 /wd4514 /wd4592 /wd4710 /wd4711 /wd4820")
|
||||
else ()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror")
|
||||
endif ()
|
||||
diff --git a/DAEValidator/library/include/no_warning_begin b/DAEValidator/library/include/no_warning_begin
|
||||
index 7a69c32..defb315 100644
|
||||
--- a/DAEValidator/library/include/no_warning_begin
|
||||
@@ -30,34 +43,8 @@ index 7a69c32..defb315 100644
|
||||
# if defined(_MSC_VER) && defined(_DEBUG)
|
||||
# pragma warning(disable:4548)
|
||||
# endif
|
||||
diff --git a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
||||
index 1f9a3ee..d151e9a 100644
|
||||
--- a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
||||
+++ b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
||||
@@ -1553,7 +1553,7 @@ namespace GeneratedSaxParser
|
||||
#if defined(COLLADABU_OS_WIN) && !defined(__MINGW32__)
|
||||
return _isnan( value ) ? true : false;
|
||||
#else
|
||||
-#ifdef isnan
|
||||
+#if defined(isnan) || defined(__APPLE__)
|
||||
return isnan( value );
|
||||
#else
|
||||
return std::isnan(value);
|
||||
diff --git a/DAEValidator/CMakeLists.txt b/DAEValidator/CMakeLists.txt
|
||||
index 03ad540f..f7d05cfb 100644
|
||||
--- a/DAEValidator/CMakeLists.txt
|
||||
+++ b/DAEValidator/CMakeLists.txt
|
||||
@@ -98,7 +98,7 @@ if (WIN32)
|
||||
# C4710: 'function' : function not inlined
|
||||
# C4711: function 'function' selected for inline expansion
|
||||
# C4820: 'bytes' bytes padding added after construct 'member_name'
|
||||
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /Wall /WX /wd4505 /wd4514 /wd4592 /wd4710 /wd4711 /wd4820")
|
||||
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /Wall /wd4505 /wd4514 /wd4592 /wd4710 /wd4711 /wd4820")
|
||||
else ()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror")
|
||||
endif ()
|
||||
diff --git a/DAEValidator/library/src/ArgumentParser.cpp b/DAEValidator/library/src/ArgumentParser.cpp
|
||||
index 897e4dcf..98a69ff1 100644
|
||||
index 897e4dc..98a69ff 100644
|
||||
--- a/DAEValidator/library/src/ArgumentParser.cpp
|
||||
+++ b/DAEValidator/library/src/ArgumentParser.cpp
|
||||
@@ -6,10 +6,10 @@
|
||||
@@ -74,3 +61,28 @@ index 897e4dcf..98a69ff1 100644
|
||||
#endif
|
||||
|
||||
namespace opencollada
|
||||
diff --git a/Externals/LibXML/CMakeLists.txt b/Externals/LibXML/CMakeLists.txt
|
||||
index 40081e7..e1d1bfa 100644
|
||||
--- a/Externals/LibXML/CMakeLists.txt
|
||||
+++ b/Externals/LibXML/CMakeLists.txt
|
||||
@@ -9,6 +9,7 @@ add_definitions(
|
||||
-DLIBXML_SCHEMAS_ENABLED
|
||||
-DLIBXML_XPATH_ENABLED
|
||||
-DLIBXML_TREE_ENABLED
|
||||
+ -DLIBXML_STATIC
|
||||
)
|
||||
|
||||
if(USE_STATIC_MSVC_RUNTIME)
|
||||
diff --git a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
||||
index 1f9a3ee..d151e9a 100644
|
||||
--- a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
||||
+++ b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
|
||||
@@ -1553,7 +1553,7 @@ namespace GeneratedSaxParser
|
||||
#if defined(COLLADABU_OS_WIN) && !defined(__MINGW32__)
|
||||
return _isnan( value ) ? true : false;
|
||||
#else
|
||||
-#ifdef isnan
|
||||
+#if defined(isnan) || defined(__APPLE__)
|
||||
return isnan( value );
|
||||
#else
|
||||
return std::isnan(value);
|
||||
|
@@ -117,3 +117,15 @@ diff '--ignore-matching-lines=:' -ur '--exclude=*.svn*' -u -r
|
||||
if(OIDN_STATIC_LIB)
|
||||
set(OIDN_LIB_TYPE STATIC)
|
||||
else()
|
||||
diff -Naur orig/core/api.cpp external_openimagedenoise/core/api.cpp
|
||||
--- orig/core/api.cpp 2019-07-19 08:37:04 -0600
|
||||
+++ external_openimagedenoise/core/api.cpp 2020-01-21 15:10:56 -0700
|
||||
@@ -15,7 +15,7 @@
|
||||
// ======================================================================== //
|
||||
|
||||
#ifdef _WIN32
|
||||
-# define OIDN_API extern "C" __declspec(dllexport)
|
||||
+# define OIDN_API extern "C"
|
||||
#else
|
||||
# define OIDN_API extern "C" __attribute__ ((visibility ("default")))
|
||||
#endif
|
||||
|
@@ -1,13 +0,0 @@
|
||||
--- idiff.cpp 2016-11-18 11:42:01 -0700
|
||||
+++ idiff.cpp 2016-11-18 11:41:25 -0700
|
||||
@@ -308,8 +308,10 @@
|
||||
// printed with three digit exponent. We change this behaviour to fit
|
||||
// Linux way
|
||||
#ifdef _MSC_VER
|
||||
+#if _MSC_VER < 1900
|
||||
_set_output_format(_TWO_DIGIT_EXPONENT);
|
||||
#endif
|
||||
+#endif
|
||||
std::streamsize precis = std::cout.precision();
|
||||
std::cout << " " << cr.nwarn << " pixels ("
|
||||
<< std::setprecision(3) << (100.0*cr.nwarn / npels)
|
@@ -1,102 +1,73 @@
|
||||
diff -Naur openvdb.orig/openvdb/CMakeLists.txt openvdb/openvdb/CMakeLists.txt
|
||||
--- openvdb.orig/openvdb/CMakeLists.txt 2018-04-10 12:22:17 -0600
|
||||
+++ openvdb/openvdb/CMakeLists.txt 2018-08-15 19:04:52 -0600
|
||||
@@ -82,6 +82,9 @@
|
||||
IF (WIN32 AND OPENVDB_DISABLE_BOOST_IMPLICIT_LINKING)
|
||||
ADD_DEFINITIONS ( -DBOOST_ALL_NO_LIB )
|
||||
ENDIF ()
|
||||
+if(WIN32)
|
||||
+ADD_DEFINITIONS ( -D__TBB_NO_IMPLICIT_LINKAGE )
|
||||
+endif()
|
||||
|
||||
FIND_PACKAGE ( Blosc REQUIRED )
|
||||
FIND_PACKAGE ( TBB REQUIRED )
|
||||
@@ -195,6 +198,7 @@
|
||||
${Ilmbase_HALF_LIBRARY}
|
||||
${ZLIB_LIBRARY}
|
||||
${BLOSC_blosc_LIBRARY}
|
||||
+ ${EXTRA_LIBS}
|
||||
diff -Naur orig/cmake/FindIlmBase.cmake openvdb/cmake/FindIlmBase.cmake
|
||||
--- orig/cmake/FindIlmBase.cmake 2019-12-06 13:11:33 -0700
|
||||
+++ openvdb/cmake/FindIlmBase.cmake 2020-01-16 09:06:32 -0700
|
||||
@@ -225,6 +225,12 @@
|
||||
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
"-${IlmBase_VERSION_MAJOR}_${IlmBase_VERSION_MINOR}.lib"
|
||||
)
|
||||
|
||||
IF (WIN32)
|
||||
@@ -225,13 +228,16 @@
|
||||
${VDB_PRINT_SOURCE_FILES}
|
||||
)
|
||||
|
||||
+if(NOT WIN32)
|
||||
+ set(EXTRA_LIBS m stdc++ dl)
|
||||
+endif()
|
||||
+
|
||||
TARGET_LINK_LIBRARIES ( vdb_print
|
||||
openvdb_shared
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
${BLOSC_blosc_LIBRARY}
|
||||
- m
|
||||
- stdc++
|
||||
- )
|
||||
+ ${EXTRA_LIBS}
|
||||
+)
|
||||
|
||||
SET ( VDB_RENDER_SOURCE_FILES cmd/openvdb_render/main.cc )
|
||||
SET_SOURCE_FILES_PROPERTIES ( ${VDB_RENDER_SOURCE_FILES}
|
||||
@@ -249,8 +255,7 @@
|
||||
${Openexr_ILMIMF_LIBRARY}
|
||||
${Ilmbase_ILMTHREAD_LIBRARY}
|
||||
${Ilmbase_IEX_LIBRARY}
|
||||
- m
|
||||
- stdc++
|
||||
+ ${EXTRA_LIBS}
|
||||
)
|
||||
|
||||
SET ( VDB_VIEW_SOURCE_FILES
|
||||
@@ -270,7 +270,7 @@
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "-DOPENVDB_USE_BLOSC ${OPENVDB_USE_GLFW_FLAG} -DGL_GLEXT_PROTOTYPES=1"
|
||||
)
|
||||
-IF (NOT WIN32)
|
||||
+IF (FALSE)
|
||||
ADD_EXECUTABLE ( vdb_view
|
||||
${VDB_VIEW_SOURCE_FILES}
|
||||
)
|
||||
@@ -283,9 +288,8 @@
|
||||
${GLFW_LINK_LIBRARY}
|
||||
${GLFW_DEPENDENT_LIBRARIES}
|
||||
${GLEW_GLEW_LIBRARY}
|
||||
- m
|
||||
- stdc++
|
||||
- )
|
||||
+ ${EXTRA_LIBS}
|
||||
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
+ "_s.lib"
|
||||
+ )
|
||||
ENDIF ()
|
||||
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
+ "_s_d.lib"
|
||||
+ )
|
||||
else()
|
||||
if(ILMBASE_USE_STATIC_LIBS)
|
||||
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
diff -Naur orig/cmake/FindOpenEXR.cmake openvdb/cmake/FindOpenEXR.cmake
|
||||
--- orig/cmake/FindOpenEXR.cmake 2019-12-06 13:11:33 -0700
|
||||
+++ openvdb/cmake/FindOpenEXR.cmake 2020-01-16 09:06:39 -0700
|
||||
@@ -218,6 +218,12 @@
|
||||
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
"-${OpenEXR_VERSION_MAJOR}_${OpenEXR_VERSION_MINOR}.lib"
|
||||
)
|
||||
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
+ "_s.lib"
|
||||
+ )
|
||||
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
+ "_s_d.lib"
|
||||
+ )
|
||||
else()
|
||||
if(OPENEXR_USE_STATIC_LIBS)
|
||||
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
diff -Naur orig/openvdb/CMakeLists.txt openvdb/openvdb/CMakeLists.txt
|
||||
--- orig/openvdb/CMakeLists.txt 2019-12-06 13:11:33 -0700
|
||||
+++ openvdb/openvdb/CMakeLists.txt 2020-01-16 08:56:25 -0700
|
||||
@@ -193,11 +193,12 @@
|
||||
if(OPENVDB_DISABLE_BOOST_IMPLICIT_LINKING)
|
||||
add_definitions(-DBOOST_ALL_NO_LIB)
|
||||
endif()
|
||||
+ add_definitions(-D__TBB_NO_IMPLICIT_LINKAGE -DOPENVDB_OPENEXR_STATICLIB)
|
||||
endif()
|
||||
|
||||
SET ( UNITTEST_SOURCE_FILES
|
||||
@@ -392,8 +396,7 @@
|
||||
TARGET_LINK_LIBRARIES ( vdb_test
|
||||
${CPPUnit_cppunit_LIBRARY}
|
||||
openvdb_shared
|
||||
- m
|
||||
- stdc++
|
||||
+ ${EXTRA_LIBS}
|
||||
)
|
||||
# @todo Should be target definitions
|
||||
if(WIN32)
|
||||
- add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_DLL)
|
||||
+ add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_STATICLIB)
|
||||
endif()
|
||||
|
||||
ADD_TEST ( vdb_unit_test vdb_test )
|
||||
@@ -422,7 +422,7 @@
|
||||
ENDIF ()
|
||||
##### Core library configuration
|
||||
diff -Naur orig/openvdb/cmd/CMakeLists.txt openvdb/openvdb/cmd/CMakeLists.txt
|
||||
--- orig/openvdb/cmd/CMakeLists.txt 2019-12-06 13:11:33 -0700
|
||||
+++ openvdb/openvdb/cmd/CMakeLists.txt 2020-01-16 08:56:25 -0700
|
||||
@@ -53,7 +53,7 @@
|
||||
endif()
|
||||
|
||||
# Installation
|
||||
-IF ( NOT WIN32 )
|
||||
+IF ( FALSE )
|
||||
INSTALL ( TARGETS
|
||||
vdb_view
|
||||
DESTINATION
|
||||
diff -Naur openvdb.orig/openvdb/math/Coord.h openvdb/openvdb/math/Coord.h
|
||||
--- openvdb.orig/openvdb/math/Coord.h 2018-04-10 12:22:17 -0600
|
||||
+++ openvdb/openvdb/math/Coord.h 2018-08-15 20:32:43 -0600
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <array> // for std::array
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
+#define NOMINMAX
|
||||
#include <openvdb/Platform.h>
|
||||
#include "Math.h"
|
||||
#include "Vec3.h"
|
||||
if(WIN32)
|
||||
- add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_DLL)
|
||||
+ add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_STATICLIB)
|
||||
endif()
|
||||
|
||||
# rpath handling
|
||||
diff -Naur orig/openvdb/unittest/CMakeLists.txt openvdb/openvdb/unittest/CMakeLists.txt
|
||||
--- orig/openvdb/unittest/CMakeLists.txt 2019-12-06 13:11:33 -0700
|
||||
+++ openvdb/openvdb/unittest/CMakeLists.txt 2020-01-16 08:56:25 -0700
|
||||
@@ -49,7 +49,7 @@
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
- add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_DLL)
|
||||
+ add_definitions(-D_WIN32 -DNOMINMAX -DOPENVDB_STATICLIB)
|
||||
endif()
|
||||
|
||||
##### VDB unit tests
|
||||
|
@@ -1,15 +1,3 @@
|
||||
diff -Naur OpenShadingLanguage-Release-1.9.9/src/cmake/flexbison.cmake external_osl/src/cmake/flexbison.cmake
|
||||
--- OpenShadingLanguage-Release-1.9.9/src/cmake/flexbison.cmake 2018-05-01 16:39:02 -0600
|
||||
+++ external_osl/src/cmake/flexbison.cmake 2018-08-23 15:42:27 -0600
|
||||
@@ -77,7 +77,7 @@
|
||||
DEPENDS ${${compiler_headers}}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
|
||||
ADD_CUSTOM_COMMAND ( OUTPUT ${flexoutputcxx}
|
||||
- COMMAND ${FLEX_EXECUTABLE} -o ${flexoutputcxx} "${CMAKE_CURRENT_SOURCE_DIR}/${flexsrc}"
|
||||
+ COMMAND ${FLEX_EXECUTABLE} ${FLEX_EXTRA_OPTIONS} -o ${flexoutputcxx} "${CMAKE_CURRENT_SOURCE_DIR}/${flexsrc}"
|
||||
MAIN_DEPENDENCY ${flexsrc}
|
||||
DEPENDS ${${compiler_headers}}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
|
||||
diff -Naur OpenShadingLanguage-Release-1.9.9/src/cmake/flexbison.cmake.rej external_osl/src/cmake/flexbison.cmake.rej
|
||||
--- OpenShadingLanguage-Release-1.9.9/src/cmake/flexbison.cmake.rej 1969-12-31 17:00:00 -0700
|
||||
+++ external_osl/src/cmake/flexbison.cmake.rej 2018-08-24 17:42:11 -0600
|
||||
@@ -45,18 +33,6 @@ diff -Naur OpenShadingLanguage-Release-1.9.9/src/include/OSL/llvm_util.h externa
|
||||
|
||||
private:
|
||||
class MemoryManager;
|
||||
diff -Naur OpenShadingLanguage-Release-1.9.9/src/include/OSL/oslnoise.h external_osl/src/include/OSL/oslnoise.h
|
||||
--- OpenShadingLanguage-Release-1.9.9/src/include/OSL/oslnoise.h 2018-05-01 16:39:02 -0600
|
||||
+++ external_osl/src/include/OSL/oslnoise.h 2018-08-24 17:42:11 -0600
|
||||
@@ -762,7 +762,7 @@
|
||||
// packed into a float4. We assume T is float and VECTYPE is float4,
|
||||
// but it also works if T is Dual2<float> and VECTYPE is Dual2<float4>.
|
||||
template<typename T, typename VECTYPE>
|
||||
-OIIO_FORCEINLINE T bilerp (VECTYPE abcd, T u, T v) {
|
||||
+OIIO_FORCEINLINE T bilerp (VECTYPE& abcd, T u, T v) {
|
||||
VECTYPE xx = OIIO::lerp (abcd, OIIO::simd::shuffle<1,1,3,3>(abcd), u);
|
||||
return OIIO::simd::extract<0>(OIIO::lerp (xx,OIIO::simd::shuffle<2>(xx), v));
|
||||
}
|
||||
diff -Naur OpenShadingLanguage-Release-1.9.9/src/liboslexec/llvm_util.cpp external_osl/src/liboslexec/llvm_util.cpp
|
||||
--- OpenShadingLanguage-Release-1.9.9/src/liboslexec/llvm_util.cpp 2018-05-01 16:39:02 -0600
|
||||
+++ external_osl/src/liboslexec/llvm_util.cpp 2018-08-25 14:04:27 -0600
|
||||
|
139
build_files/build_environment/patches/usd.diff
Normal file
139
build_files/build_environment/patches/usd.diff
Normal file
@@ -0,0 +1,139 @@
|
||||
diff -x .git -ur usd.orig/cmake/defaults/Options.cmake external_usd/cmake/defaults/Options.cmake
|
||||
--- usd.orig/cmake/defaults/Options.cmake 2019-10-24 22:39:53.000000000 +0200
|
||||
+++ external_usd/cmake/defaults/Options.cmake 2019-11-28 13:00:33.197957712 +0100
|
||||
@@ -25,6 +25,7 @@
|
||||
option(PXR_VALIDATE_GENERATED_CODE "Validate script generated code" OFF)
|
||||
option(PXR_HEADLESS_TEST_MODE "Disallow GUI based tests, useful for running under headless CI systems." OFF)
|
||||
option(PXR_BUILD_TESTS "Build tests" ON)
|
||||
+option(PXR_BUILD_USD_TOOLS "Build commandline tools" ON)
|
||||
option(PXR_BUILD_IMAGING "Build imaging components" ON)
|
||||
option(PXR_BUILD_EMBREE_PLUGIN "Build embree imaging plugin" OFF)
|
||||
option(PXR_BUILD_OPENIMAGEIO_PLUGIN "Build OpenImageIO plugin" OFF)
|
||||
diff -x .git -ur usd.orig/cmake/defaults/Packages.cmake external_usd/cmake/defaults/Packages.cmake
|
||||
--- usd.orig/cmake/defaults/Packages.cmake 2019-10-24 22:39:53.000000000 +0200
|
||||
+++ external_usd/cmake/defaults/Packages.cmake 2019-11-28 13:00:33.185957483 +0100
|
||||
@@ -64,7 +64,7 @@
|
||||
endif()
|
||||
|
||||
# --TBB
|
||||
-find_package(TBB REQUIRED COMPONENTS tbb)
|
||||
+find_package(TBB)
|
||||
add_definitions(${TBB_DEFINITIONS})
|
||||
|
||||
# --math
|
||||
diff -x .git -ur usd.orig/pxr/base/lib/plug/initConfig.cpp external_usd/pxr/base/lib/plug/initConfig.cpp
|
||||
--- usd.orig/pxr/base/lib/plug/initConfig.cpp 2019-10-24 22:39:53.000000000 +0200
|
||||
+++ external_usd/pxr/base/lib/plug/initConfig.cpp 2019-12-11 11:00:37.643323127 +0100
|
||||
@@ -69,8 +69,38 @@
|
||||
|
||||
ARCH_CONSTRUCTOR(Plug_InitConfig, 2, void)
|
||||
{
|
||||
+ /* The contents of this constructor have been moved to usd_initialise_plugin_path(...) */
|
||||
+}
|
||||
+
|
||||
+}; // end of anonymous namespace
|
||||
+
|
||||
+/**
|
||||
+ * The contents of this function used to be in the static constructor Plug_InitConfig.
|
||||
+ * This static constructor made it impossible for Blender to pass a path to the USD
|
||||
+ * library at runtime, as the constructor would run before Blender's main() function.
|
||||
+ *
|
||||
+ * This function is wrapped in a C function of the same name (defined below),
|
||||
+ * so that it can be called from Blender's main() function.
|
||||
+ *
|
||||
+ * The datafiles_usd_path path is used to point to the USD plugin path when Blender
|
||||
+ * has been installed. The fallback_usd_path path should point to the build-time
|
||||
+ * location of the USD plugin files so that Blender can be run on a development machine
|
||||
+ * without requiring an installation step.
|
||||
+ */
|
||||
+void
|
||||
+usd_initialise_plugin_path(const char *datafiles_usd_path)
|
||||
+{
|
||||
std::vector<std::string> result;
|
||||
|
||||
+ // Add Blender-specific paths. They MUST end in a slash, or symlinks will not be treated as directory.
|
||||
+ if (datafiles_usd_path != NULL && datafiles_usd_path[0] != '\0') {
|
||||
+ std::string datafiles_usd_path_str(datafiles_usd_path);
|
||||
+ if (datafiles_usd_path_str.back() != '/') {
|
||||
+ datafiles_usd_path_str += "/";
|
||||
+ }
|
||||
+ result.push_back(datafiles_usd_path_str);
|
||||
+ }
|
||||
+
|
||||
// Determine the absolute path to the Plug shared library.
|
||||
// Any relative paths specified in the plugin search path will be
|
||||
// anchored to this directory, to allow for relocatability.
|
||||
@@ -94,9 +124,24 @@
|
||||
_AppendPathList(&result, installLocation, sharedLibPath);
|
||||
#endif // PXR_INSTALL_LOCATION
|
||||
|
||||
- Plug_SetPaths(result);
|
||||
-}
|
||||
+ if (!TfGetenv("PXR_PATH_DEBUG").empty()) {
|
||||
+ printf("USD Plugin paths: (%zu in total):\n", result.size());
|
||||
+ for(const std::string &path : result) {
|
||||
+ printf(" %s\n", path.c_str());
|
||||
+ }
|
||||
+ }
|
||||
|
||||
+ Plug_SetPaths(result);
|
||||
}
|
||||
|
||||
PXR_NAMESPACE_CLOSE_SCOPE
|
||||
+
|
||||
+/* Workaround to make it possible to pass a path at runtime to USD. */
|
||||
+extern "C" {
|
||||
+void
|
||||
+usd_initialise_plugin_path(
|
||||
+ const char *datafiles_usd_path)
|
||||
+{
|
||||
+ PXR_NS::usd_initialise_plugin_path(datafiles_usd_path);
|
||||
+}
|
||||
+}
|
||||
diff -x .git -ur usd.orig/pxr/usd/CMakeLists.txt external_usd/pxr/usd/CMakeLists.txt
|
||||
--- usd.orig/pxr/usd/CMakeLists.txt 2019-10-24 22:39:53.000000000 +0200
|
||||
+++ external_usd/pxr/usd/CMakeLists.txt 2019-11-28 13:00:33.197957712 +0100
|
||||
@@ -1,6 +1,5 @@
|
||||
set(DIRS
|
||||
lib
|
||||
- bin
|
||||
plugin
|
||||
)
|
||||
|
||||
@@ -8,3 +7,8 @@
|
||||
add_subdirectory(${d})
|
||||
endforeach()
|
||||
|
||||
+if (PXR_BUILD_USD_TOOLS)
|
||||
+ add_subdirectory(bin)
|
||||
+else()
|
||||
+ message(STATUS "Skipping commandline tools because PXR_BUILD_USD_TOOLS=OFF")
|
||||
+endif()
|
||||
diff -Naur external_usd_orig/pxr/base/lib/tf/preprocessorUtils.h external_usd/pxr/base/lib/tf/preprocessorUtils.h
|
||||
--- external_usd_orig/pxr/base/lib/tf/preprocessorUtils.h 2019-10-24 14:39:53 -0600
|
||||
+++ external_usd/pxr/base/lib/tf/preprocessorUtils.h 2020-01-14 09:30:18 -0700
|
||||
@@ -189,7 +189,7 @@
|
||||
/// Exapnds to 1 if the argument is a tuple, and 0 otherwise.
|
||||
/// \ingroup group_tf_Preprocessor
|
||||
/// \hideinitializer
|
||||
-#if defined(ARCH_OS_WINDOWS)
|
||||
+#if defined(ARCH_COMPILER_MSVC)
|
||||
#define TF_PP_IS_TUPLE(sequence) \
|
||||
BOOST_VMD_IS_TUPLE(sequence)
|
||||
#else
|
||||
diff -Naur external_usd_base/cmake/macros/Public.cmake external_usd/cmake/macros/Public.cmake
|
||||
--- external_usd_base/cmake/macros/Public.cmake 2019-10-24 14:39:53 -0600
|
||||
+++ external_usd/cmake/macros/Public.cmake 2020-01-11 13:33:29 -0700
|
||||
@@ -996,6 +996,12 @@
|
||||
foreach(lib ${PXR_OBJECT_LIBS})
|
||||
string(TOUPPER ${lib} uppercaseName)
|
||||
list(APPEND exports "${uppercaseName}_EXPORTS=1")
|
||||
+ # When building for blender, we do NOT want to export all symbols on windows.
|
||||
+ # This is a dirty hack, but USD makes it impossible to do the right thing
|
||||
+ # with the default options exposed.
|
||||
+ if (WIN32)
|
||||
+ list(APPEND exports "PXR_STATIC=1")
|
||||
+ endif()
|
||||
endforeach()
|
||||
foreach(lib ${PXR_OBJECT_LIBS})
|
||||
set(objects "${objects};\$<TARGET_OBJECTS:${lib}>")
|
@@ -126,6 +126,7 @@ if "%dobuild%" == "1" (
|
||||
cmake --build . --target Harvest_Release_Results > Harvest_Release.txt
|
||||
)
|
||||
echo %DATE% %TIME% : Release Harvest done >> %StatusFile%
|
||||
if "%NODEBUG%" == "1" goto exit
|
||||
cd %BUILD_DIR%
|
||||
mkdir %STAGING%\%BuildDir%%ARCH%D
|
||||
cd %Staging%\%BuildDir%%ARCH%D
|
||||
|
@@ -24,6 +24,14 @@ import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
def is_tool(name):
|
||||
"""Check whether `name` is on PATH and marked as executable."""
|
||||
|
||||
# from whichcraft import which
|
||||
from shutil import which
|
||||
|
||||
return which(name) is not None
|
||||
|
||||
class Builder:
|
||||
def __init__(self, name, branch):
|
||||
self.name = name
|
||||
@@ -42,7 +50,10 @@ class Builder:
|
||||
self.command_prefix = []
|
||||
elif name.startswith('linux'):
|
||||
self.platform = 'linux'
|
||||
self.command_prefix = ['scl', 'enable', 'devtoolset-6', '--']
|
||||
if is_tool('scl'):
|
||||
self.command_prefix = ['scl', 'enable', 'devtoolset-6', '--']
|
||||
else:
|
||||
self.command_prefix = []
|
||||
elif name.startswith('win'):
|
||||
self.platform = 'win'
|
||||
self.command_prefix = []
|
||||
@@ -87,7 +98,7 @@ class VersionInfo:
|
||||
self.is_development_build = False
|
||||
else:
|
||||
# Development build
|
||||
self.full_version = self.version + '-' + self.hash
|
||||
self.full_version = self.version + self.version_char + '-' + self.hash
|
||||
self.is_development_build = True
|
||||
|
||||
def _parse_header_file(self, filename, define):
|
||||
|
@@ -65,10 +65,14 @@ class AbsoluteAndRelativeFileName:
|
||||
"""
|
||||
Create list of AbsoluteAndRelativeFileName for all the files in the
|
||||
given directory.
|
||||
|
||||
NOTE: Result will be pointing to a resolved paths.
|
||||
"""
|
||||
assert base_dir.is_absolute()
|
||||
assert base_dir.is_dir()
|
||||
|
||||
base_dir = base_dir.resolve()
|
||||
|
||||
result = []
|
||||
for filename in base_dir.glob('**/*'):
|
||||
if not filename.is_file():
|
||||
|
@@ -18,9 +18,10 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from codesign.util import ensure_file_does_not_exist_or_die
|
||||
import codesign.util as util
|
||||
|
||||
|
||||
class ArchiveWithIndicator:
|
||||
@@ -69,9 +70,64 @@ class ArchiveWithIndicator:
|
||||
self.archive_filepath = self.base_dir / archive_name
|
||||
self.ready_indicator_filepath = self.base_dir / ready_indicator_name
|
||||
|
||||
def is_ready_unsafe(self) -> bool:
|
||||
"""
|
||||
Check whether the archive is ready for access.
|
||||
|
||||
No guarding about possible network failres is done here.
|
||||
"""
|
||||
if not self.ready_indicator_filepath.exists():
|
||||
return False
|
||||
|
||||
# Sometimes on macOS indicator file appears prior to the actual archive
|
||||
# despite the order of creation and os.sync() used in tag_ready().
|
||||
# So consider archive not ready if there is an indicator without an
|
||||
# actual archive.
|
||||
if not self.archive_filepath.exists():
|
||||
print('Found indicator without actual archive, waiting for archive '
|
||||
f'({self.archive_filepath}) to appear.')
|
||||
return False
|
||||
|
||||
# Read archive size from indicator/
|
||||
#
|
||||
# Assume that file is either empty or is fully written. This is being checked
|
||||
# by performing ValueError check since empty string will throw this exception
|
||||
# when attempted to be converted to int.
|
||||
expected_archive_size_str = self.ready_indicator_filepath.read_text()
|
||||
try:
|
||||
expected_archive_size = int(expected_archive_size_str)
|
||||
except ValueError:
|
||||
print(f'Invalid archive size "{expected_archive_size_str}"')
|
||||
return False
|
||||
|
||||
# Wait for until archive is fully stored.
|
||||
actual_archive_size = self.archive_filepath.stat().st_size
|
||||
if actual_archive_size != expected_archive_size:
|
||||
print('Partial/invalid archive size (expected '
|
||||
f'{expected_archive_size} got {actual_archive_size})')
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def is_ready(self) -> bool:
|
||||
"""Check whether the archive is ready for access."""
|
||||
return self.ready_indicator_filepath.exists()
|
||||
"""
|
||||
Check whether the archive is ready for access.
|
||||
|
||||
Will tolerate possible network failures: if there is a network failure
|
||||
or if there is still no proper permission on a file False is returned.
|
||||
"""
|
||||
|
||||
# There are some intermitten problem happening at a random which is
|
||||
# translates to "OSError : [WinError 59] An unexpected network error occurred".
|
||||
# Some reports suggests it might be due to lack of permissions to the file,
|
||||
# which might be applicable in our case since it's possible that file is
|
||||
# initially created with non-accessible permissions and gets chmod-ed
|
||||
# after initial creation.
|
||||
try:
|
||||
return self.is_ready_unsafe()
|
||||
except OSError as e:
|
||||
print(f'Exception checking archive: {e}')
|
||||
return False
|
||||
|
||||
def tag_ready(self) -> None:
|
||||
"""
|
||||
@@ -82,14 +138,20 @@ class ArchiveWithIndicator:
|
||||
If it is violated, an assert will fail.
|
||||
"""
|
||||
assert not self.is_ready()
|
||||
self.ready_indicator_filepath.touch()
|
||||
# Try the best to make sure everything is synced to the file system,
|
||||
# to avoid any possibility of stamp appearing on a network share prior to
|
||||
# an actual file.
|
||||
if util.get_current_platform() != util.Platform.WINDOWS:
|
||||
os.sync()
|
||||
archive_size = self.archive_filepath.stat().st_size
|
||||
self.ready_indicator_filepath.write_text(str(archive_size))
|
||||
|
||||
def clean(self) -> None:
|
||||
"""
|
||||
Remove both archive and the ready indication file.
|
||||
"""
|
||||
ensure_file_does_not_exist_or_die(self.ready_indicator_filepath)
|
||||
ensure_file_does_not_exist_or_die(self.archive_filepath)
|
||||
util.ensure_file_does_not_exist_or_die(self.ready_indicator_filepath)
|
||||
util.ensure_file_does_not_exist_or_die(self.archive_filepath)
|
||||
|
||||
def is_fully_absent(self) -> bool:
|
||||
"""
|
||||
|
@@ -45,13 +45,16 @@
|
||||
import abc
|
||||
import logging
|
||||
import shutil
|
||||
import subprocess
|
||||
import time
|
||||
import zipfile
|
||||
import tarfile
|
||||
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
from typing import Iterable, List
|
||||
|
||||
import codesign.util as util
|
||||
|
||||
from codesign.absolute_and_relative_filename import AbsoluteAndRelativeFileName
|
||||
from codesign.archive_with_indicator import ArchiveWithIndicator
|
||||
|
||||
@@ -64,14 +67,14 @@ logger_server = logger.getChild('server')
|
||||
def pack_files(files: Iterable[AbsoluteAndRelativeFileName],
|
||||
archive_filepath: Path) -> None:
|
||||
"""
|
||||
Create zip archive from given files for the signing pipeline.
|
||||
Create tar archive from given files for the signing pipeline.
|
||||
Is used by buildbot worker to create an archive of files which are to be
|
||||
signed, and by signing server to send signed files back to the worker.
|
||||
"""
|
||||
with zipfile.ZipFile(archive_filepath, 'w') as zip_file_handle:
|
||||
with tarfile.TarFile.open(archive_filepath, 'w') as tar_file_handle:
|
||||
for file_info in files:
|
||||
zip_file_handle.write(file_info.absolute_filepath,
|
||||
arcname=file_info.relative_filepath)
|
||||
tar_file_handle.add(file_info.absolute_filepath,
|
||||
arcname=file_info.relative_filepath)
|
||||
|
||||
|
||||
def extract_files(archive_filepath: Path,
|
||||
@@ -82,8 +85,8 @@ def extract_files(archive_filepath: Path,
|
||||
|
||||
# TODO(sergey): Verify files in the archive have relative path.
|
||||
|
||||
with zipfile.ZipFile(archive_filepath, mode='r') as zip_file_handle:
|
||||
zip_file_handle.extractall(path=extraction_dir)
|
||||
with tarfile.TarFile.open(archive_filepath, mode='r') as tar_file_handle:
|
||||
tar_file_handle.extractall(path=extraction_dir)
|
||||
|
||||
|
||||
class BaseCodeSigner(metaclass=abc.ABCMeta):
|
||||
@@ -133,6 +136,9 @@ class BaseCodeSigner(metaclass=abc.ABCMeta):
|
||||
# This archive is created by the code signing server.
|
||||
signed_archive_info: ArchiveWithIndicator
|
||||
|
||||
# Platform the code is currently executing on.
|
||||
platform: util.Platform
|
||||
|
||||
def __init__(self, config):
|
||||
self.config = config
|
||||
|
||||
@@ -141,12 +147,14 @@ class BaseCodeSigner(metaclass=abc.ABCMeta):
|
||||
# Unsigned (signing server input) configuration.
|
||||
self.unsigned_storage_dir = absolute_shared_storage_dir / 'unsigned'
|
||||
self.unsigned_archive_info = ArchiveWithIndicator(
|
||||
self.unsigned_storage_dir, 'unsigned_files.zip', 'ready.stamp')
|
||||
self.unsigned_storage_dir, 'unsigned_files.tar', 'ready.stamp')
|
||||
|
||||
# Signed (signing server output) configuration.
|
||||
self.signed_storage_dir = absolute_shared_storage_dir / 'signed'
|
||||
self.signed_archive_info = ArchiveWithIndicator(
|
||||
self.signed_storage_dir, 'signed_files.zip', 'ready.stamp')
|
||||
self.signed_storage_dir, 'signed_files.tar', 'ready.stamp')
|
||||
|
||||
self.platform = util.get_current_platform()
|
||||
|
||||
"""
|
||||
General note on cleanup environment functions.
|
||||
@@ -318,6 +326,9 @@ class BaseCodeSigner(metaclass=abc.ABCMeta):
|
||||
self.copy_signed_files_to_directory(
|
||||
unpacked_signed_files_dir, destination_dir)
|
||||
|
||||
logger_builder.info('Removing archive with signed files...')
|
||||
self.signed_archive_info.clean()
|
||||
|
||||
############################################################################
|
||||
# Signing server side helpers.
|
||||
|
||||
@@ -383,3 +394,61 @@ class BaseCodeSigner(metaclass=abc.ABCMeta):
|
||||
logger_server.info(
|
||||
'Got signing request, beging signign procedure.')
|
||||
self.run_signing_pipeline()
|
||||
|
||||
############################################################################
|
||||
# Command executing.
|
||||
#
|
||||
# Abstracted to a degree that allows to run commands from a foreign
|
||||
# platform.
|
||||
# The goal with this is to allow performing dry-run tests of code signer
|
||||
# server from other platforms (for example, to test that macOS code signer
|
||||
# does what it is supposed to after doing a refactor on Linux).
|
||||
|
||||
# TODO(sergey): What is the type annotation for the command?
|
||||
def run_command_or_mock(self, command, platform: util.Platform) -> None:
|
||||
"""
|
||||
Run given command if current platform matches given one
|
||||
|
||||
If the platform is different then it will only be printed allowing
|
||||
to verify logic of the code signing process.
|
||||
"""
|
||||
|
||||
if platform != self.platform:
|
||||
logger_server.info(
|
||||
f'Will run command for {platform}: {command}')
|
||||
return
|
||||
|
||||
logger_server.info(f'Running command: {command}')
|
||||
subprocess.run(command)
|
||||
|
||||
# TODO(sergey): What is the type annotation for the command?
|
||||
def check_output_or_mock(self, command,
|
||||
platform: util.Platform,
|
||||
allow_nonzero_exit_code=False) -> str:
|
||||
"""
|
||||
Run given command if current platform matches given one
|
||||
|
||||
If the platform is different then it will only be printed allowing
|
||||
to verify logic of the code signing process.
|
||||
|
||||
If allow_nonzero_exit_code is truth then the output will be returned
|
||||
even if application quit with non-zero exit code.
|
||||
Otherwise an subprocess.CalledProcessError exception will be raised
|
||||
in such case.
|
||||
"""
|
||||
|
||||
if platform != self.platform:
|
||||
logger_server.info(
|
||||
f'Will run command for {platform}: {command}')
|
||||
return
|
||||
|
||||
if allow_nonzero_exit_code:
|
||||
process = subprocess.Popen(command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT)
|
||||
output = process.communicate()[0]
|
||||
return output.decode()
|
||||
|
||||
logger_server.info(f'Running command: {command}')
|
||||
return subprocess.check_output(
|
||||
command, stderr=subprocess.STDOUT).decode()
|
||||
|
@@ -25,12 +25,17 @@ import sys
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import codesign.util as util
|
||||
|
||||
from codesign.config_common import *
|
||||
|
||||
if sys.platform == 'linux':
|
||||
platform = util.get_current_platform()
|
||||
if platform == util.Platform.LINUX:
|
||||
SHARED_STORAGE_DIR = Path('/data/codesign')
|
||||
elif sys.platform == 'win32':
|
||||
elif platform == util.Platform.WINDOWS:
|
||||
SHARED_STORAGE_DIR = Path('Z:\\codesign')
|
||||
elif platform == util.Platform.MACOS:
|
||||
SHARED_STORAGE_DIR = Path('/Volumes/codesign_macos/codesign')
|
||||
|
||||
# https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema
|
||||
LOGGING = {
|
||||
|
@@ -24,7 +24,10 @@ from pathlib import Path
|
||||
#
|
||||
# This is how long buildbot packing step will wait signing server to
|
||||
# perform signing.
|
||||
TIMEOUT_IN_SECONDS = 240
|
||||
#
|
||||
# NOTE: Notarization could take a long time, hence the rather high value
|
||||
# here. Might consider using different timeout for different platforms.
|
||||
TIMEOUT_IN_SECONDS = 45 * 60 * 60
|
||||
|
||||
# Directory which is shared across buildbot worker and signing server.
|
||||
#
|
||||
|
@@ -27,8 +27,43 @@ from pathlib import Path
|
||||
|
||||
from codesign.config_common import *
|
||||
|
||||
CODESIGN_DIRECTORY = Path(__file__).absolute().parent
|
||||
BLENDER_GIT_ROOT_DIRECTORY = CODESIGN_DIRECTORY.parent.parent.parent
|
||||
|
||||
################################################################################
|
||||
# Common configuration.
|
||||
|
||||
# Directory where folders for codesign requests and signed result are stored.
|
||||
# For example, /data/codesign
|
||||
SHARED_STORAGE_DIR: Path
|
||||
|
||||
################################################################################
|
||||
# macOS-specific configuration.
|
||||
|
||||
MACOS_ENTITLEMENTS_FILE = \
|
||||
BLENDER_GIT_ROOT_DIRECTORY / 'release' / 'darwin' / 'entitlements.plist'
|
||||
|
||||
# Identity of the Developer ID Application certificate which is to be used for
|
||||
# codesign tool.
|
||||
# Use `security find-identity -v -p codesigning` to find the identity.
|
||||
#
|
||||
# NOTE: This identity is just an example from release/darwin/README.txt.
|
||||
MACOS_CODESIGN_IDENTITY = 'AE825E26F12D08B692F360133210AF46F4CF7B97'
|
||||
|
||||
# User name (Apple ID) which will be used to request notarization.
|
||||
MACOS_XCRUN_USERNAME = 'me@example.com'
|
||||
|
||||
# One-time application password which will be used to request notarization.
|
||||
MACOS_XCRUN_PASSWORD = '@keychain:altool-password'
|
||||
|
||||
# Timeout in seconds within which the notarial office is supposed to reply.
|
||||
MACOS_NOTARIZE_TIMEOUT_IN_SECONDS = 60 * 60
|
||||
|
||||
################################################################################
|
||||
# Windows-specific configuration.
|
||||
|
||||
# URL to the timestamping authority.
|
||||
TIMESTAMP_AUTHORITY_URL = 'http://timestamp.digicert.com'
|
||||
WIN_TIMESTAMP_AUTHORITY_URL = 'http://timestamp.digicert.com'
|
||||
|
||||
# Full path to the certificate used for signing.
|
||||
#
|
||||
@@ -36,7 +71,10 @@ TIMESTAMP_AUTHORITY_URL = 'http://timestamp.digicert.com'
|
||||
#
|
||||
# On Windows it is usually is a PKCS #12 key (.pfx), so the path will look
|
||||
# like Path('C:\\Secret\\Blender.pfx').
|
||||
CERTIFICATE_FILEPATH: Path
|
||||
WIN_CERTIFICATE_FILEPATH: Path
|
||||
|
||||
################################################################################
|
||||
# Logging configuration, common for all platforms.
|
||||
|
||||
# https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema
|
||||
LOGGING = {
|
||||
|
@@ -51,7 +51,7 @@ class LinuxCodeSigner(BaseCodeSigner):
|
||||
self, file: AbsoluteAndRelativeFileName) -> bool:
|
||||
if file.relative_filepath == Path('blender'):
|
||||
return True
|
||||
if (file.relative_filepath.parts()[-3:-1] == ('python', 'bin') and
|
||||
if (file.relative_filepath.parts[-3:-1] == ('python', 'bin') and
|
||||
file.relative_filepath.name.startwith('python')):
|
||||
return True
|
||||
if file.relative_filepath.suffix == '.so':
|
||||
|
453
build_files/buildbot/codesign/macos_code_signer.py
Normal file
453
build_files/buildbot/codesign/macos_code_signer.py
Normal file
@@ -0,0 +1,453 @@
|
||||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
import logging
|
||||
import re
|
||||
import stat
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
import codesign.util as util
|
||||
|
||||
from buildbot_utils import Builder
|
||||
|
||||
from codesign.absolute_and_relative_filename import AbsoluteAndRelativeFileName
|
||||
from codesign.base_code_signer import BaseCodeSigner
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logger_server = logger.getChild('server')
|
||||
|
||||
# NOTE: Check is done as filename.endswith(), so keep the dot
|
||||
EXTENSIONS_TO_BE_SIGNED = {'.dylib', '.so', '.dmg'}
|
||||
|
||||
# Prefixes of a file (not directory) name which are to be signed.
|
||||
# Used to sign extra executable files in Contents/Resources.
|
||||
NAME_PREFIXES_TO_BE_SIGNED = {'python'}
|
||||
|
||||
|
||||
def is_file_from_bundle(file: AbsoluteAndRelativeFileName) -> bool:
|
||||
"""
|
||||
Check whether file is coming from an .app bundle
|
||||
"""
|
||||
parts = file.relative_filepath.parts
|
||||
if not parts:
|
||||
return False
|
||||
if not parts[0].endswith('.app'):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def get_bundle_from_file(
|
||||
file: AbsoluteAndRelativeFileName) -> AbsoluteAndRelativeFileName:
|
||||
"""
|
||||
Get AbsoluteAndRelativeFileName descriptor of bundle
|
||||
"""
|
||||
assert(is_file_from_bundle(file))
|
||||
|
||||
parts = file.relative_filepath.parts
|
||||
bundle_name = parts[0]
|
||||
|
||||
base_dir = file.base_dir
|
||||
bundle_filepath = file.base_dir / bundle_name
|
||||
return AbsoluteAndRelativeFileName(base_dir, bundle_filepath)
|
||||
|
||||
|
||||
def is_bundle_executable_file(file: AbsoluteAndRelativeFileName) -> bool:
|
||||
"""
|
||||
Check whether given file is an executable within an app bundle
|
||||
"""
|
||||
if not is_file_from_bundle(file):
|
||||
return False
|
||||
|
||||
parts = file.relative_filepath.parts
|
||||
num_parts = len(parts)
|
||||
if num_parts < 3:
|
||||
return False
|
||||
|
||||
if parts[1:3] != ('Contents', 'MacOS'):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def xcrun_field_value_from_output(field: str, output: str) -> str:
|
||||
"""
|
||||
Get value of a given field from xcrun output.
|
||||
|
||||
If field is not found empty string is returned.
|
||||
"""
|
||||
|
||||
field_prefix = field + ': '
|
||||
for line in output.splitlines():
|
||||
line = line.strip()
|
||||
if line.startswith(field_prefix):
|
||||
return line[len(field_prefix):]
|
||||
return ''
|
||||
|
||||
|
||||
class MacOSCodeSigner(BaseCodeSigner):
|
||||
def check_file_is_to_be_signed(
|
||||
self, file: AbsoluteAndRelativeFileName) -> bool:
|
||||
if file.relative_filepath.name.startswith('.'):
|
||||
return False
|
||||
|
||||
if is_bundle_executable_file(file):
|
||||
return True
|
||||
|
||||
base_name = file.relative_filepath.name
|
||||
if any(base_name.startswith(prefix)
|
||||
for prefix in NAME_PREFIXES_TO_BE_SIGNED):
|
||||
return True
|
||||
|
||||
mode = file.absolute_filepath.lstat().st_mode
|
||||
if mode & stat.S_IXUSR != 0:
|
||||
file_output = subprocess.check_output(
|
||||
("file", file.absolute_filepath)).decode()
|
||||
if "64-bit executable" in file_output:
|
||||
return True
|
||||
|
||||
return file.relative_filepath.suffix in EXTENSIONS_TO_BE_SIGNED
|
||||
|
||||
def collect_files_to_sign(self, path: Path) \
|
||||
-> List[AbsoluteAndRelativeFileName]:
|
||||
# Include all files when signing app or dmg bundle: all the files are
|
||||
# needed to do valid signature of bundle.
|
||||
if path.name.endswith('.app'):
|
||||
return AbsoluteAndRelativeFileName.recursively_from_directory(path)
|
||||
if path.is_dir():
|
||||
files = []
|
||||
for child in path.iterdir():
|
||||
if child.name.endswith('.app'):
|
||||
current_files = AbsoluteAndRelativeFileName.recursively_from_directory(
|
||||
child)
|
||||
else:
|
||||
current_files = super().collect_files_to_sign(child)
|
||||
for current_file in current_files:
|
||||
files.append(AbsoluteAndRelativeFileName(
|
||||
path, current_file.absolute_filepath))
|
||||
return files
|
||||
return super().collect_files_to_sign(path)
|
||||
|
||||
############################################################################
|
||||
# Codesign.
|
||||
|
||||
def codesign_remove_signature(
|
||||
self, file: AbsoluteAndRelativeFileName) -> None:
|
||||
"""
|
||||
Make sure given file does not have codesign signature
|
||||
|
||||
This is needed because codesigning is not possible for file which has
|
||||
signature already.
|
||||
"""
|
||||
|
||||
logger_server.info(
|
||||
'Removing codesign signature from %s...', file.relative_filepath)
|
||||
|
||||
command = ['codesign', '--remove-signature', file.absolute_filepath]
|
||||
self.run_command_or_mock(command, util.Platform.MACOS)
|
||||
|
||||
def codesign_file(
|
||||
self, file: AbsoluteAndRelativeFileName) -> None:
|
||||
"""
|
||||
Sign given file
|
||||
|
||||
NOTE: File must not have any signatures.
|
||||
"""
|
||||
|
||||
logger_server.info(
|
||||
'Codesigning %s...', file.relative_filepath)
|
||||
|
||||
entitlements_file = self.config.MACOS_ENTITLEMENTS_FILE
|
||||
command = ['codesign',
|
||||
'--timestamp',
|
||||
'--options', 'runtime',
|
||||
f'--entitlements={entitlements_file}',
|
||||
'--sign', self.config.MACOS_CODESIGN_IDENTITY,
|
||||
file.absolute_filepath]
|
||||
self.run_command_or_mock(command, util.Platform.MACOS)
|
||||
|
||||
def codesign_all_files(self, files: List[AbsoluteAndRelativeFileName]) -> bool:
|
||||
"""
|
||||
Run codesign tool on all eligible files in the given list.
|
||||
|
||||
Will ignore all files which are not to be signed. For the rest will
|
||||
remove possible existing signature and add a new signature.
|
||||
"""
|
||||
|
||||
num_files = len(files)
|
||||
have_ignored_files = False
|
||||
signed_files = []
|
||||
for file_index, file in enumerate(files):
|
||||
# Ignore file if it is not to be signed.
|
||||
# Allows to manually construct ZIP of a bundle and get it signed.
|
||||
if not self.check_file_is_to_be_signed(file):
|
||||
logger_server.info(
|
||||
'Ignoring file [%d/%d] %s',
|
||||
file_index + 1, num_files, file.relative_filepath)
|
||||
have_ignored_files = True
|
||||
continue
|
||||
|
||||
logger_server.info(
|
||||
'Running codesigning routines for file [%d/%d] %s...',
|
||||
file_index + 1, num_files, file.relative_filepath)
|
||||
|
||||
self.codesign_remove_signature(file)
|
||||
self.codesign_file(file)
|
||||
|
||||
signed_files.append(file)
|
||||
|
||||
if have_ignored_files:
|
||||
logger_server.info('Signed %d files:', len(signed_files))
|
||||
num_signed_files = len(signed_files)
|
||||
for file_index, signed_file in enumerate(signed_files):
|
||||
logger_server.info(
|
||||
'- [%d/%d] %s',
|
||||
file_index + 1, num_signed_files,
|
||||
signed_file.relative_filepath)
|
||||
|
||||
return True
|
||||
|
||||
def codesign_bundles(
|
||||
self, files: List[AbsoluteAndRelativeFileName]) -> None:
|
||||
"""
|
||||
Codesign all .app bundles in the given list of files.
|
||||
|
||||
Bundle is deducted from paths of the files, and every bundle is only
|
||||
signed once.
|
||||
"""
|
||||
|
||||
signed_bundles = set()
|
||||
extra_files = []
|
||||
|
||||
for file in files:
|
||||
if not is_file_from_bundle(file):
|
||||
continue
|
||||
bundle = get_bundle_from_file(file)
|
||||
bundle_name = bundle.relative_filepath
|
||||
if bundle_name in signed_bundles:
|
||||
continue
|
||||
|
||||
logger_server.info('Running codesign routines on bundle %s',
|
||||
bundle_name)
|
||||
|
||||
# It is not possible to remove signature from DMG.
|
||||
if bundle.relative_filepath.name.endswith('.app'):
|
||||
self.codesign_remove_signature(bundle)
|
||||
self.codesign_file(bundle)
|
||||
|
||||
signed_bundles.add(bundle_name)
|
||||
|
||||
# Codesign on a bundle adds an extra folder with information.
|
||||
# It needs to be compied to the source.
|
||||
code_signature_directory = \
|
||||
bundle.absolute_filepath / 'Contents' / '_CodeSignature'
|
||||
code_signature_files = \
|
||||
AbsoluteAndRelativeFileName.recursively_from_directory(
|
||||
code_signature_directory)
|
||||
for code_signature_file in code_signature_files:
|
||||
bundle_relative_file = AbsoluteAndRelativeFileName(
|
||||
bundle.base_dir,
|
||||
code_signature_directory /
|
||||
code_signature_file.relative_filepath)
|
||||
extra_files.append(bundle_relative_file)
|
||||
|
||||
files.extend(extra_files)
|
||||
|
||||
return True
|
||||
|
||||
############################################################################
|
||||
# Notarization.
|
||||
|
||||
def notarize_get_bundle_id(self, file: AbsoluteAndRelativeFileName) -> str:
|
||||
"""
|
||||
Get bundle ID which will be used to notarize DMG
|
||||
"""
|
||||
name = file.relative_filepath.name
|
||||
app_name = name.split('-', 2)[0].lower()
|
||||
|
||||
app_name_words = app_name.split()
|
||||
if len(app_name_words) > 1:
|
||||
app_name_id = ''.join(word.capitalize() for word in app_name_words)
|
||||
else:
|
||||
app_name_id = app_name_words[0]
|
||||
|
||||
# TODO(sergey): Consider using "alpha" for buildbot builds.
|
||||
return f'org.blenderfoundation.{app_name_id}.release'
|
||||
|
||||
def notarize_request(self, file) -> str:
|
||||
"""
|
||||
Request notarization of the given file.
|
||||
|
||||
Returns UUID of the notarization request. If error occurred None is
|
||||
returned instead of UUID.
|
||||
"""
|
||||
|
||||
bundle_id = self.notarize_get_bundle_id(file)
|
||||
logger_server.info('Bundle ID: %s', bundle_id)
|
||||
|
||||
logger_server.info('Submitting file to the notarial office.')
|
||||
command = [
|
||||
'xcrun', 'altool', '--notarize-app', '--verbose',
|
||||
'-f', file.absolute_filepath,
|
||||
'--primary-bundle-id', bundle_id,
|
||||
'--username', self.config.MACOS_XCRUN_USERNAME,
|
||||
'--password', self.config.MACOS_XCRUN_PASSWORD]
|
||||
|
||||
output = self.check_output_or_mock(
|
||||
command, util.Platform.MACOS, allow_nonzero_exit_code=True)
|
||||
|
||||
for line in output.splitlines():
|
||||
line = line.strip()
|
||||
if line.startswith('RequestUUID = '):
|
||||
request_uuid = line[14:]
|
||||
return request_uuid
|
||||
|
||||
# Check whether the package has been already submitted.
|
||||
if 'The software asset has already been uploaded.' in line:
|
||||
request_uuid = re.sub(
|
||||
'.*The upload ID is ([A-Fa-f0-9\-]+).*', '\\1', line)
|
||||
logger_server.warning(
|
||||
f'The package has been already submitted under UUID {request_uuid}')
|
||||
return request_uuid
|
||||
|
||||
logger_server.error(output)
|
||||
logger_server.error('xcrun command did not report RequestUUID')
|
||||
return None
|
||||
|
||||
def notarize_wait_result(self, request_uuid: str) -> bool:
|
||||
"""
|
||||
Wait for until notarial office have a reply
|
||||
"""
|
||||
|
||||
logger_server.info(
|
||||
'Waiting for a result from the notarization office.')
|
||||
|
||||
command = ['xcrun', 'altool',
|
||||
'--notarization-info', request_uuid,
|
||||
'--username', self.config.MACOS_XCRUN_USERNAME,
|
||||
'--password', self.config.MACOS_XCRUN_PASSWORD]
|
||||
|
||||
time_start = time.monotonic()
|
||||
timeout_in_seconds = self.config.MACOS_NOTARIZE_TIMEOUT_IN_SECONDS
|
||||
|
||||
while True:
|
||||
output = self.check_output_or_mock(
|
||||
command, util.Platform.MACOS, allow_nonzero_exit_code=True)
|
||||
# Parse status and message
|
||||
status = xcrun_field_value_from_output('Status', output)
|
||||
status_message = xcrun_field_value_from_output(
|
||||
'Status Message', output)
|
||||
|
||||
# Review status.
|
||||
if status:
|
||||
if status == 'success':
|
||||
logger_server.info(
|
||||
'Package successfully notarized: %s', status_message)
|
||||
return True
|
||||
elif status == 'invalid':
|
||||
logger_server.error(output)
|
||||
logger_server.error(
|
||||
'Package notarization has failed: %s', status_message)
|
||||
return False
|
||||
elif status == 'in progress':
|
||||
pass
|
||||
else:
|
||||
logger_server.info(
|
||||
'Unknown notarization status %s (%s)', status, status_message)
|
||||
|
||||
logger_server.info('Keep waiting for notarization office.')
|
||||
time.sleep(30)
|
||||
|
||||
time_slept_in_seconds = time.monotonic() - time_start
|
||||
if time_slept_in_seconds > timeout_in_seconds:
|
||||
logger_server.error(
|
||||
"Notarial office didn't reply in %f seconds.",
|
||||
timeout_in_seconds)
|
||||
|
||||
def notarize_staple(self, file: AbsoluteAndRelativeFileName) -> bool:
|
||||
"""
|
||||
Staple notarial label on the file
|
||||
"""
|
||||
|
||||
logger_server.info('Stapling notarial stamp.')
|
||||
|
||||
command = ['xcrun', 'stapler', 'staple', '-v', file.absolute_filepath]
|
||||
self.check_output_or_mock(command, util.Platform.MACOS)
|
||||
|
||||
return True
|
||||
|
||||
def notarize_dmg(self, file: AbsoluteAndRelativeFileName) -> bool:
|
||||
"""
|
||||
Run entire pipeline to get DMG notarized.
|
||||
"""
|
||||
logger_server.info('Begin notarization routines on %s',
|
||||
file.relative_filepath)
|
||||
|
||||
# Submit file for notarization.
|
||||
request_uuid = self.notarize_request(file)
|
||||
if not request_uuid:
|
||||
return False
|
||||
logger_server.info('Received Request UUID: %s', request_uuid)
|
||||
|
||||
# Wait for the status from the notarization office.
|
||||
if not self.notarize_wait_result(request_uuid):
|
||||
return False
|
||||
|
||||
# Staple.
|
||||
if not self.notarize_staple(file):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def notarize_all_dmg(
|
||||
self, files: List[AbsoluteAndRelativeFileName]) -> bool:
|
||||
"""
|
||||
Notarize all DMG images from the input.
|
||||
|
||||
Images are supposed to be codesigned already.
|
||||
"""
|
||||
for file in files:
|
||||
if not file.relative_filepath.name.endswith('.dmg'):
|
||||
continue
|
||||
if not self.check_file_is_to_be_signed(file):
|
||||
continue
|
||||
|
||||
if not self.notarize_dmg(file):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
############################################################################
|
||||
# Entry point.
|
||||
|
||||
def sign_all_files(self, files: List[AbsoluteAndRelativeFileName]) -> None:
|
||||
# TODO(sergey): Handle errors somehow.
|
||||
|
||||
if not self.codesign_all_files(files):
|
||||
return
|
||||
|
||||
if not self.codesign_bundles(files):
|
||||
return
|
||||
|
||||
if not self.notarize_all_dmg(files):
|
||||
return
|
@@ -26,6 +26,7 @@ from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import codesign.config_builder
|
||||
import codesign.util as util
|
||||
from codesign.base_code_signer import BaseCodeSigner
|
||||
|
||||
|
||||
@@ -33,10 +34,14 @@ class SimpleCodeSigner:
|
||||
code_signer: Optional[BaseCodeSigner]
|
||||
|
||||
def __init__(self):
|
||||
if sys.platform == 'linux':
|
||||
platform = util.get_current_platform()
|
||||
if platform == util.Platform.LINUX:
|
||||
from codesign.linux_code_signer import LinuxCodeSigner
|
||||
self.code_signer = LinuxCodeSigner(codesign.config_builder)
|
||||
elif sys.platform == 'win32':
|
||||
elif platform == util.Platform.MACOS:
|
||||
from codesign.macos_code_signer import MacOSCodeSigner
|
||||
self.code_signer = MacOSCodeSigner(codesign.config_builder)
|
||||
elif platform == util.Platform.WINDOWS:
|
||||
from codesign.windows_code_signer import WindowsCodeSigner
|
||||
self.code_signer = WindowsCodeSigner(codesign.config_builder)
|
||||
else:
|
||||
|
@@ -18,9 +18,28 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
import sys
|
||||
|
||||
from enum import Enum
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class Platform(Enum):
|
||||
LINUX = 1
|
||||
MACOS = 2
|
||||
WINDOWS = 3
|
||||
|
||||
|
||||
def get_current_platform() -> Platform:
|
||||
if sys.platform == 'linux':
|
||||
return Platform.LINUX
|
||||
elif sys.platform == 'darwin':
|
||||
return Platform.MACOS
|
||||
elif sys.platform == 'win32':
|
||||
return Platform.WINDOWS
|
||||
raise Exception(f'Unknown platform {sys.platform}')
|
||||
|
||||
|
||||
def ensure_file_does_not_exist_or_die(filepath: Path) -> None:
|
||||
"""
|
||||
If the file exists, unlink it.
|
||||
|
@@ -19,11 +19,12 @@
|
||||
# <pep8 compliant>
|
||||
|
||||
import logging
|
||||
import subprocess
|
||||
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
import codesign.util as util
|
||||
|
||||
from buildbot_utils import Builder
|
||||
|
||||
from codesign.absolute_and_relative_filename import AbsoluteAndRelativeFileName
|
||||
@@ -52,8 +53,8 @@ class WindowsCodeSigner(BaseCodeSigner):
|
||||
def get_sign_command_prefix(self) -> List[str]:
|
||||
return [
|
||||
'signtool', 'sign', '/v',
|
||||
'/f', self.config.CERTIFICATE_FILEPATH,
|
||||
'/t', self.config.TIMESTAMP_AUTHORITY_URL]
|
||||
'/f', self.config.WIN_CERTIFICATE_FILEPATH,
|
||||
'/tr', self.config.WIN_TIMESTAMP_AUTHORITY_URL]
|
||||
|
||||
def sign_all_files(self, files: List[AbsoluteAndRelativeFileName]) -> None:
|
||||
# NOTE: Sign files one by one to avoid possible command line length
|
||||
@@ -64,6 +65,14 @@ class WindowsCodeSigner(BaseCodeSigner):
|
||||
# one go (but only if this actually known to be much faster).
|
||||
num_files = len(files)
|
||||
for file_index, file in enumerate(files):
|
||||
# Ignore file if it is not to be signed.
|
||||
# Allows to manually construct ZIP of package and get it signed.
|
||||
if not self.check_file_is_to_be_signed(file):
|
||||
logger_server.info(
|
||||
'Ignoring file [%d/%d] %s',
|
||||
file_index + 1, num_files, file.relative_filepath)
|
||||
continue
|
||||
|
||||
command = self.get_sign_command_prefix()
|
||||
command.append(file.absolute_filepath)
|
||||
logger_server.info(
|
||||
@@ -71,5 +80,5 @@ class WindowsCodeSigner(BaseCodeSigner):
|
||||
file_index + 1, num_files, file.relative_filepath)
|
||||
# TODO(sergey): Check the status somehow. With a missing certificate
|
||||
# the command still exists with a zero code.
|
||||
subprocess.run(command)
|
||||
self.run_command_or_mock(command, util.Platform.WINDOWS)
|
||||
# TODO(sergey): Report number of signed and ignored files.
|
||||
|
41
build_files/buildbot/codesign_server_macos.py
Executable file
41
build_files/buildbot/codesign_server_macos.py
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
import logging.config
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
from codesign.macos_code_signer import MacOSCodeSigner
|
||||
import codesign.config_server
|
||||
|
||||
if __name__ == "__main__":
|
||||
entitlements_file = codesign.config_server.MACOS_ENTITLEMENTS_FILE
|
||||
if not entitlements_file.exists():
|
||||
raise SystemExit(
|
||||
'Entitlements file {entitlements_file} does not exist.')
|
||||
if not entitlements_file.is_file():
|
||||
raise SystemExit(
|
||||
'Entitlements file {entitlements_file} is not a file.')
|
||||
|
||||
logging.config.dictConfig(codesign.config_server.LOGGING)
|
||||
code_signer = MacOSCodeSigner(codesign.config_server)
|
||||
code_signer.run_signing_server()
|
@@ -30,15 +30,25 @@ import shutil
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
import codesign.util as util
|
||||
|
||||
from codesign.windows_code_signer import WindowsCodeSigner
|
||||
import codesign.config_server
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.config.dictConfig(codesign.config_server.LOGGING)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logger_server = logger.getChild('server')
|
||||
|
||||
# TODO(sergey): Consider moving such sanity checks into
|
||||
# CodeSigner.check_environment_or_die().
|
||||
if not shutil.which('signtool.exe'):
|
||||
raise SystemExit("signtool.exe is not found in %PATH%")
|
||||
if util.get_current_platform() == util.Platform.WINDOWS:
|
||||
raise SystemExit("signtool.exe is not found in %PATH%")
|
||||
logger_server.info(
|
||||
'signtool.exe not found, '
|
||||
'but will not be used on this foreign platform')
|
||||
|
||||
logging.config.dictConfig(codesign.config_server.LOGGING)
|
||||
code_signer = WindowsCodeSigner(codesign.config_server)
|
||||
code_signer.run_signing_server()
|
||||
|
@@ -7,9 +7,6 @@ message(STATUS "Building in CentOS 7 64bit environment")
|
||||
set(LIBDIR_NAME "linux_centos7_x86_64")
|
||||
set(WITH_CXX11_ABI OFF CACHE BOOL "" FORCE)
|
||||
|
||||
# Default to only build Blender
|
||||
set(WITH_BLENDER ON CACHE BOOL "" FORCE)
|
||||
|
||||
# ######## Linux-specific build options ########
|
||||
# Options which are specific to Linux-only platforms
|
||||
|
||||
@@ -20,12 +17,6 @@ set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE)
|
||||
|
||||
set(WITH_JACK_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_SDL_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_SYSTEM_GLEW OFF CACHE BOOL "" FORCE)
|
||||
|
||||
set(WITH_OPENMP_STATIC ON CACHE BOOL "" FORCE)
|
||||
|
||||
set(WITH_PYTHON_INSTALL_NUMPY ON CACHE BOOL "" FORCE)
|
||||
set(WITH_PYTHON_INSTALL_REQUESTS ON CACHE BOOL "" FORCE)
|
||||
|
||||
# ######## Release environment specific settings ########
|
||||
|
||||
@@ -33,13 +24,5 @@ set(LIBDIR "${CMAKE_CURRENT_LIST_DIR}/../../../../lib/${LIBDIR_NAME}" CACHE STRI
|
||||
|
||||
# Platform specific configuration, to ensure static linking against everything.
|
||||
|
||||
set(Boost_USE_STATIC_LIBS ON CACHE BOOL "" FORCE)
|
||||
|
||||
# We need to link OpenCOLLADA against PCRE library. Even though it is not installed
|
||||
# on /usr, we do not really care -- all we care is PCRE_FOUND be TRUE and its
|
||||
# library pointing to a valid one.
|
||||
set(PCRE_INCLUDE_DIR "/usr/include" CACHE STRING "" FORCE)
|
||||
set(PCRE_LIBRARY "${LIBDIR}/opencollada/lib/libpcre.a" CACHE STRING "" FORCE)
|
||||
|
||||
# Additional linking libraries
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-lrt -static-libstdc++ -no-pie" CACHE STRING "" FORCE)
|
||||
|
542
build_files/buildbot/slave_bundle_dmg.py
Executable file
542
build_files/buildbot/slave_bundle_dmg.py
Executable file
@@ -0,0 +1,542 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
import argparse
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory, NamedTemporaryFile
|
||||
from typing import List
|
||||
|
||||
BUILDBOT_DIRECTORY = Path(__file__).absolute().parent
|
||||
CODESIGN_SCRIPT = BUILDBOT_DIRECTORY / 'slave_codesign.py'
|
||||
BLENDER_GIT_ROOT_DIRECTORY = BUILDBOT_DIRECTORY.parent.parent
|
||||
DARWIN_DIRECTORY = BLENDER_GIT_ROOT_DIRECTORY / 'release' / 'darwin'
|
||||
|
||||
|
||||
# Extra size which is added on top of actual files size when estimating size
|
||||
# of destination DNG.
|
||||
EXTRA_DMG_SIZE_IN_BYTES = 800 * 1024 * 1024
|
||||
|
||||
################################################################################
|
||||
# Common utilities
|
||||
|
||||
|
||||
def get_directory_size(root_directory: Path) -> int:
|
||||
"""
|
||||
Get size of directory on disk
|
||||
"""
|
||||
|
||||
total_size = 0
|
||||
for file in root_directory.glob('**/*'):
|
||||
total_size += file.lstat().st_size
|
||||
return total_size
|
||||
|
||||
|
||||
################################################################################
|
||||
# DMG bundling specific logic
|
||||
|
||||
def create_argument_parser():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
'source_dir',
|
||||
type=Path,
|
||||
help='Source directory which points to either existing .app bundle'
|
||||
'or to a directory with .app bundles.')
|
||||
parser.add_argument(
|
||||
'--background-image',
|
||||
type=Path,
|
||||
help="Optional background picture which will be set on the DMG."
|
||||
"If not provided default Blender's one is used.")
|
||||
parser.add_argument(
|
||||
'--volume-name',
|
||||
type=str,
|
||||
help='Optional name of a volume which will be used for DMG.')
|
||||
parser.add_argument(
|
||||
'--dmg',
|
||||
type=Path,
|
||||
help='Optional argument which points to a final DMG file name.')
|
||||
parser.add_argument(
|
||||
'--applescript',
|
||||
type=Path,
|
||||
help="Optional path to applescript to set up folder looks of DMG."
|
||||
"If not provided default Blender's one is used.")
|
||||
return parser
|
||||
|
||||
|
||||
def collect_app_bundles(source_dir: Path) -> List[Path]:
|
||||
"""
|
||||
Collect all app bundles which are to be put into DMG
|
||||
|
||||
If the source directory points to FOO.app it will be the only app bundle
|
||||
packed.
|
||||
|
||||
Otherwise all .app bundles from given directory are placed to a single
|
||||
DMG.
|
||||
"""
|
||||
|
||||
if source_dir.name.endswith('.app'):
|
||||
return [source_dir]
|
||||
|
||||
app_bundles = []
|
||||
for filename in source_dir.glob('*'):
|
||||
if not filename.is_dir():
|
||||
continue
|
||||
if not filename.name.endswith('.app'):
|
||||
continue
|
||||
|
||||
app_bundles.append(filename)
|
||||
|
||||
return app_bundles
|
||||
|
||||
|
||||
def collect_and_log_app_bundles(source_dir: Path) -> List[Path]:
|
||||
app_bundles = collect_app_bundles(source_dir)
|
||||
|
||||
if not app_bundles:
|
||||
print('No app bundles found for packing')
|
||||
return
|
||||
|
||||
print(f'Found {len(app_bundles)} to pack:')
|
||||
for app_bundle in app_bundles:
|
||||
print(f'- {app_bundle}')
|
||||
|
||||
return app_bundles
|
||||
|
||||
|
||||
def estimate_dmg_size(app_bundles: List[Path]) -> int:
|
||||
"""
|
||||
Estimate size of DMG to hold requested app bundles
|
||||
|
||||
The size is based on actual size of all files in all bundles plus some
|
||||
space to compensate for different size-on-disk plus some space to hold
|
||||
codesign signatures.
|
||||
|
||||
Is better to be on a high side since the empty space is compressed, but
|
||||
lack of space might cause silent failures later on.
|
||||
"""
|
||||
|
||||
app_bundles_size = 0
|
||||
for app_bundle in app_bundles:
|
||||
app_bundles_size += get_directory_size(app_bundle)
|
||||
|
||||
return app_bundles_size + EXTRA_DMG_SIZE_IN_BYTES
|
||||
|
||||
|
||||
def copy_app_bundles_to_directory(app_bundles: List[Path],
|
||||
directory: Path) -> None:
|
||||
"""
|
||||
Copy all bundles to a given directory
|
||||
|
||||
This directory is what the DMG will be created from.
|
||||
"""
|
||||
for app_bundle in app_bundles:
|
||||
print(f'Copying {app_bundle.name}...')
|
||||
shutil.copytree(app_bundle, directory / app_bundle.name)
|
||||
|
||||
|
||||
def get_main_app_bundle(app_bundles: List[Path]) -> Path:
|
||||
"""
|
||||
Get application bundle main for the installation
|
||||
"""
|
||||
return app_bundles[0]
|
||||
|
||||
|
||||
def create_dmg_image(app_bundles: List[Path],
|
||||
dmg_filepath: Path,
|
||||
volume_name: str) -> None:
|
||||
"""
|
||||
Create DMG disk image and put app bundles in it
|
||||
|
||||
No DMG configuration or codesigning is happening here.
|
||||
"""
|
||||
|
||||
if dmg_filepath.exists():
|
||||
print(f'Removing existing writable DMG {dmg_filepath}...')
|
||||
dmg_filepath.unlink()
|
||||
|
||||
print('Preparing directory with app bundles for the DMG...')
|
||||
with TemporaryDirectory(prefix='blender-dmg-content-') as content_dir_str:
|
||||
# Copy all bundles to a clean directory.
|
||||
content_dir = Path(content_dir_str)
|
||||
copy_app_bundles_to_directory(app_bundles, content_dir)
|
||||
|
||||
# Estimate size of the DMG.
|
||||
dmg_size = estimate_dmg_size(app_bundles)
|
||||
print(f'Estimated DMG size: {dmg_size:,} bytes.')
|
||||
|
||||
# Create the DMG.
|
||||
print(f'Creating writable DMG {dmg_filepath}')
|
||||
command = ('hdiutil',
|
||||
'create',
|
||||
'-size', str(dmg_size),
|
||||
'-fs', 'HFS+',
|
||||
'-srcfolder', content_dir,
|
||||
'-volname', volume_name,
|
||||
'-format', 'UDRW',
|
||||
dmg_filepath)
|
||||
subprocess.run(command)
|
||||
|
||||
|
||||
def get_writable_dmg_filepath(dmg_filepath: Path):
|
||||
"""
|
||||
Get file path for writable DMG image
|
||||
"""
|
||||
parent = dmg_filepath.parent
|
||||
return parent / (dmg_filepath.stem + '-temp.dmg')
|
||||
|
||||
|
||||
def mount_readwrite_dmg(dmg_filepath: Path) -> None:
|
||||
"""
|
||||
Mount writable DMG
|
||||
|
||||
Mounting point would be /Volumes/<volume name>
|
||||
"""
|
||||
|
||||
print(f'Mounting read-write DMG ${dmg_filepath}')
|
||||
command = ('hdiutil',
|
||||
'attach', '-readwrite',
|
||||
'-noverify',
|
||||
'-noautoopen',
|
||||
dmg_filepath)
|
||||
subprocess.run(command)
|
||||
|
||||
|
||||
def get_mount_directory_for_volume_name(volume_name: str) -> Path:
|
||||
"""
|
||||
Get directory under which the volume will be mounted
|
||||
"""
|
||||
|
||||
return Path('/Volumes') / volume_name
|
||||
|
||||
|
||||
def eject_volume(volume_name: str) -> None:
|
||||
"""
|
||||
Eject given volume, if mounted
|
||||
"""
|
||||
mount_directory = get_mount_directory_for_volume_name(volume_name)
|
||||
if not mount_directory.exists():
|
||||
return
|
||||
mount_directory_str = str(mount_directory)
|
||||
|
||||
print(f'Ejecting volume {volume_name}')
|
||||
|
||||
# Figure out which device to eject.
|
||||
mount_output = subprocess.check_output(['mount']).decode()
|
||||
device = ''
|
||||
for line in mount_output.splitlines():
|
||||
if f'on {mount_directory_str} (' not in line:
|
||||
continue
|
||||
tokens = line.split(' ', 3)
|
||||
if len(tokens) < 3:
|
||||
continue
|
||||
if tokens[1] != 'on':
|
||||
continue
|
||||
if device:
|
||||
raise Exception(
|
||||
f'Multiple devices found for mounting point {mount_directory}')
|
||||
device = tokens[0]
|
||||
|
||||
if not device:
|
||||
raise Exception(
|
||||
f'No device found for mounting point {mount_directory}')
|
||||
|
||||
print(f'{mount_directory} is mounted as device {device}, ejecting...')
|
||||
subprocess.run(['diskutil', 'eject', device])
|
||||
|
||||
|
||||
def copy_background_if_needed(background_image_filepath: Path,
|
||||
mount_directory: Path) -> None:
|
||||
"""
|
||||
Copy background to the DMG
|
||||
|
||||
If the background image is not specified it will not be copied.
|
||||
"""
|
||||
|
||||
if not background_image_filepath:
|
||||
print('No background image provided.')
|
||||
return
|
||||
|
||||
print(f'Copying background image {background_image_filepath}')
|
||||
|
||||
destination_dir = mount_directory / '.background'
|
||||
destination_dir.mkdir(exist_ok=True)
|
||||
|
||||
destination_filepath = destination_dir / background_image_filepath.name
|
||||
shutil.copy(background_image_filepath, destination_filepath)
|
||||
|
||||
|
||||
def create_applications_link(mount_directory: Path) -> None:
|
||||
"""
|
||||
Create link to /Applications in the given location
|
||||
"""
|
||||
|
||||
print('Creating link to /Applications')
|
||||
|
||||
command = ('ln', '-s', '/Applications', mount_directory / ' ')
|
||||
subprocess.run(command)
|
||||
|
||||
|
||||
def run_applescript(applescript: Path,
|
||||
volume_name: str,
|
||||
app_bundles: List[Path],
|
||||
background_image_filepath: Path) -> None:
|
||||
"""
|
||||
Run given applescript to adjust look and feel of the DMG
|
||||
"""
|
||||
|
||||
main_app_bundle = get_main_app_bundle(app_bundles)
|
||||
|
||||
with NamedTemporaryFile(
|
||||
mode='w', suffix='.applescript') as temp_applescript:
|
||||
print('Adjusting applescript for volume name...')
|
||||
# Adjust script to the specific volume name.
|
||||
with open(applescript, mode='r') as input:
|
||||
for line in input.readlines():
|
||||
stripped_line = line.strip()
|
||||
if stripped_line.startswith('tell disk'):
|
||||
line = re.sub('tell disk ".*"',
|
||||
f'tell disk "{volume_name}"',
|
||||
line)
|
||||
elif stripped_line.startswith('set background picture'):
|
||||
if not background_image_filepath:
|
||||
continue
|
||||
else:
|
||||
background_image_short = \
|
||||
'.background:' + background_image_filepath.name
|
||||
line = re.sub('to file ".*"',
|
||||
f'to file "{background_image_short}"',
|
||||
line)
|
||||
line = line.replace('blender.app', main_app_bundle.name)
|
||||
temp_applescript.write(line)
|
||||
|
||||
temp_applescript.flush()
|
||||
|
||||
print('Running applescript...')
|
||||
command = ('osascript', temp_applescript.name)
|
||||
subprocess.run(command)
|
||||
|
||||
print('Waiting for applescript...')
|
||||
|
||||
# NOTE: This is copied from bundle.sh. The exact reason for sleep is
|
||||
# still remained a mystery.
|
||||
time.sleep(5)
|
||||
|
||||
|
||||
def codesign(subject: Path):
|
||||
"""
|
||||
Codesign file or directory
|
||||
|
||||
NOTE: For DMG it will also notarize.
|
||||
"""
|
||||
|
||||
command = (CODESIGN_SCRIPT, subject)
|
||||
subprocess.run(command)
|
||||
|
||||
|
||||
def codesign_app_bundles_in_dmg(mount_directory: str) -> None:
|
||||
"""
|
||||
Code sign all binaries and bundles in the mounted directory
|
||||
"""
|
||||
|
||||
print(f'Codesigning all app bundles in {mount_directory}')
|
||||
codesign(mount_directory)
|
||||
|
||||
|
||||
def codesign_and_notarize_dmg(dmg_filepath: Path) -> None:
|
||||
"""
|
||||
Run codesign and notarization pipeline on the DMG
|
||||
"""
|
||||
|
||||
print(f'Codesigning and notarizing DMG {dmg_filepath}')
|
||||
codesign(dmg_filepath)
|
||||
|
||||
|
||||
def compress_dmg(writable_dmg_filepath: Path,
|
||||
final_dmg_filepath: Path) -> None:
|
||||
"""
|
||||
Compress temporary read-write DMG
|
||||
"""
|
||||
command = ('hdiutil', 'convert',
|
||||
writable_dmg_filepath,
|
||||
'-format', 'UDZO',
|
||||
'-o', final_dmg_filepath)
|
||||
|
||||
if final_dmg_filepath.exists():
|
||||
print(f'Removing old compressed DMG {final_dmg_filepath}')
|
||||
final_dmg_filepath.unlink()
|
||||
|
||||
print('Compressing disk image...')
|
||||
subprocess.run(command)
|
||||
|
||||
|
||||
def create_final_dmg(app_bundles: List[Path],
|
||||
dmg_filepath: Path,
|
||||
background_image_filepath: Path,
|
||||
volume_name: str,
|
||||
applescript: Path) -> None:
|
||||
"""
|
||||
Create DMG with all app bundles
|
||||
|
||||
Will take care configuring background, signing all binaries and app bundles
|
||||
and notarizing the DMG.
|
||||
"""
|
||||
|
||||
print('Running all routines to create final DMG')
|
||||
|
||||
writable_dmg_filepath = get_writable_dmg_filepath(dmg_filepath)
|
||||
mount_directory = get_mount_directory_for_volume_name(volume_name)
|
||||
|
||||
# Make sure volume is not mounted.
|
||||
# If it is mounted it will prevent removing old DMG files and could make
|
||||
# it so app bundles are copied to the wrong place.
|
||||
eject_volume(volume_name)
|
||||
|
||||
create_dmg_image(app_bundles, writable_dmg_filepath, volume_name)
|
||||
|
||||
mount_readwrite_dmg(writable_dmg_filepath)
|
||||
|
||||
# Run codesign first, prior to copying amything else.
|
||||
#
|
||||
# This allows to recurs into the content of bundles without worrying about
|
||||
# possible interfereice of Application symlink.
|
||||
codesign_app_bundles_in_dmg(mount_directory)
|
||||
|
||||
copy_background_if_needed(background_image_filepath, mount_directory)
|
||||
create_applications_link(mount_directory)
|
||||
run_applescript(applescript, volume_name, app_bundles,
|
||||
background_image_filepath)
|
||||
|
||||
print('Ejecting read-write DMG image...')
|
||||
eject_volume(volume_name)
|
||||
|
||||
compress_dmg(writable_dmg_filepath, dmg_filepath)
|
||||
writable_dmg_filepath.unlink()
|
||||
|
||||
codesign_and_notarize_dmg(dmg_filepath)
|
||||
|
||||
|
||||
def ensure_dmg_extension(filepath: Path) -> Path:
|
||||
"""
|
||||
Make sure given file have .dmg extension
|
||||
"""
|
||||
|
||||
if filepath.suffix != '.dmg':
|
||||
return filepath.with_suffix(f'{filepath.suffix}.dmg')
|
||||
return filepath
|
||||
|
||||
|
||||
def get_dmg_filepath(requested_name: Path, app_bundles: List[Path]) -> Path:
|
||||
"""
|
||||
Get full file path for the final DMG image
|
||||
|
||||
Will use the provided one when possible, otherwise will deduct it from
|
||||
app bundles.
|
||||
|
||||
If the name is deducted, the DMG is stored in the current directory.
|
||||
"""
|
||||
|
||||
if requested_name:
|
||||
return ensure_dmg_extension(requested_name.absolute())
|
||||
|
||||
# TODO(sergey): This is not necessarily the main one.
|
||||
main_bundle = app_bundles[0]
|
||||
# Strip .app from the name
|
||||
return Path(main_bundle.name[:-4] + '.dmg').absolute()
|
||||
|
||||
|
||||
def get_background_image(requested_background_image: Path) -> Path:
|
||||
"""
|
||||
Get effective filepath for the background image
|
||||
"""
|
||||
|
||||
if requested_background_image:
|
||||
return requested_background_image.absolute()
|
||||
|
||||
return DARWIN_DIRECTORY / 'background.tif'
|
||||
|
||||
|
||||
def get_applescript(requested_applescript: Path) -> Path:
|
||||
"""
|
||||
Get effective filepath for the applescript
|
||||
"""
|
||||
|
||||
if requested_applescript:
|
||||
return requested_applescript.absolute()
|
||||
|
||||
return DARWIN_DIRECTORY / 'blender.applescript'
|
||||
|
||||
|
||||
def get_volume_name_from_dmg_filepath(dmg_filepath: Path) -> str:
|
||||
"""
|
||||
Deduct volume name from the DMG path
|
||||
|
||||
Will use first part of the DMG file name prior to dash.
|
||||
"""
|
||||
|
||||
tokens = dmg_filepath.stem.split('-')
|
||||
words = tokens[0].split()
|
||||
|
||||
return ' '.join(word.capitalize() for word in words)
|
||||
|
||||
|
||||
def get_volume_name(requested_volume_name: str,
|
||||
dmg_filepath: Path) -> str:
|
||||
"""
|
||||
Get effective name for DMG volume
|
||||
"""
|
||||
|
||||
if requested_volume_name:
|
||||
return requested_volume_name
|
||||
|
||||
return get_volume_name_from_dmg_filepath(dmg_filepath)
|
||||
|
||||
|
||||
def main():
|
||||
parser = create_argument_parser()
|
||||
args = parser.parse_args()
|
||||
|
||||
# Get normalized input parameters.
|
||||
source_dir = args.source_dir.absolute()
|
||||
background_image_filepath = get_background_image(args.background_image)
|
||||
applescript = get_applescript(args.applescript)
|
||||
|
||||
app_bundles = collect_and_log_app_bundles(source_dir)
|
||||
if not app_bundles:
|
||||
return
|
||||
|
||||
dmg_filepath = get_dmg_filepath(args.dmg, app_bundles)
|
||||
volume_name = get_volume_name(args.volume_name, dmg_filepath)
|
||||
|
||||
print(f'Will produce DMG "{dmg_filepath.name}" (without quotes)')
|
||||
|
||||
create_final_dmg(app_bundles,
|
||||
dmg_filepath,
|
||||
background_image_filepath,
|
||||
volume_name,
|
||||
applescript)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@@ -40,5 +40,5 @@ execute_process(
|
||||
)
|
||||
|
||||
if(NOT exit_code EQUAL "0")
|
||||
message( FATAL_ERROR "Non-zero exit code of codesign tool")
|
||||
message(FATAL_ERROR "Non-zero exit code of codesign tool")
|
||||
endif()
|
||||
|
@@ -45,7 +45,7 @@ def create_argument_parser():
|
||||
def main():
|
||||
parser = create_argument_parser()
|
||||
args = parser.parse_args()
|
||||
path_to_sign = args.path_to_sign
|
||||
path_to_sign = args.path_to_sign.absolute()
|
||||
|
||||
if sys.platform == 'win32':
|
||||
# When WIX packed is used to generate .msi on Windows the CPack will
|
||||
|
@@ -103,7 +103,7 @@ def cmake_build(builder):
|
||||
if builder.platform == 'win':
|
||||
command = ['cmake', '--build', '.', '--target', 'install', '--config', 'Release']
|
||||
else:
|
||||
command = ['make', '-s', '-j2', 'install']
|
||||
command = ['make', '-s', '-j16', 'install']
|
||||
|
||||
print("CMake build:")
|
||||
buildbot_utils.call(builder.command_prefix + command)
|
||||
|
@@ -109,14 +109,15 @@ def pack_mac(builder):
|
||||
package_filepath = os.path.join(builder.build_dir, package_filename)
|
||||
|
||||
release_dir = os.path.join(builder.blender_dir, 'release', 'darwin')
|
||||
bundle_sh = os.path.join(release_dir, 'bundle.sh')
|
||||
buildbot_dir = os.path.join(builder.blender_dir, 'build_files', 'buildbot')
|
||||
bundle_script = os.path.join(buildbot_dir, 'slave_bundle_dmg.py')
|
||||
|
||||
command = [bundle_sh]
|
||||
command += ['--source', builder.install_dir]
|
||||
command = [bundle_script]
|
||||
command += ['--dmg', package_filepath]
|
||||
if info.is_development_build:
|
||||
background_image = os.path.join(release_dir, 'buildbot', 'background.tif')
|
||||
command += ['--background-image', background_image]
|
||||
command += [builder.install_dir]
|
||||
buildbot_utils.call(command)
|
||||
|
||||
create_buildbot_upload_zip(builder, [(package_filepath, package_filename)])
|
||||
@@ -160,8 +161,6 @@ def pack_linux(builder):
|
||||
blender_executable = os.path.join(builder.install_dir, 'blender')
|
||||
|
||||
info = buildbot_utils.VersionInfo(builder)
|
||||
blender_glibc = builder.name.split('_')[1]
|
||||
blender_arch = 'x86_64'
|
||||
|
||||
# Strip all unused symbols from the binaries
|
||||
print("Stripping binaries...")
|
||||
@@ -172,7 +171,7 @@ def pack_linux(builder):
|
||||
buildbot_utils.call(builder.command_prefix + ['find', py_target, '-iname', '*.so', '-exec', 'strip', '-s', '{}', ';'])
|
||||
|
||||
# Construct package name
|
||||
platform_name = 'linux-' + blender_glibc + '-' + blender_arch
|
||||
platform_name = 'linux64'
|
||||
package_name = get_package_name(builder, platform_name)
|
||||
package_filename = package_name + ".tar.xz"
|
||||
|
||||
|
@@ -27,9 +27,6 @@ ENDIF()
|
||||
|
||||
SET(_alembic_SEARCH_DIRS
|
||||
${ALEMBIC_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/alembic
|
||||
)
|
||||
|
||||
|
@@ -17,9 +17,6 @@ ENDIF()
|
||||
|
||||
SET(_audaspace_SEARCH_DIRS
|
||||
${AUDASPACE_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
# Use pkg-config to get hints about paths
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_blosc_SEARCH_DIRS
|
||||
${BLOSC_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/blosc
|
||||
)
|
||||
|
||||
|
@@ -25,9 +25,6 @@ ENDIF()
|
||||
|
||||
SET(_eigen3_SEARCH_DIRS
|
||||
${EIGEN3_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(EIGEN3_INCLUDE_DIR
|
||||
|
@@ -29,10 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_embree_SEARCH_DIRS
|
||||
${EMBREE_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/embree
|
||||
/opt/lib/embree
|
||||
)
|
||||
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_fftw3_SEARCH_DIRS
|
||||
${FFTW3_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(FFTW3_INCLUDE_DIR
|
||||
|
@@ -28,7 +28,6 @@ ENDIF()
|
||||
|
||||
SET(_glew_SEARCH_DIRS
|
||||
${GLEW_ROOT_DIR}
|
||||
/usr/local
|
||||
)
|
||||
|
||||
FIND_PATH(GLEW_INCLUDE_DIR
|
||||
|
@@ -444,7 +444,6 @@ if(NOT GFLAGS_FOUND)
|
||||
/opt/local/var/macports/software # Mac OS X.
|
||||
/opt/local/include
|
||||
/usr/include
|
||||
/sw/include # Fink
|
||||
/opt/lib/gflags/include)
|
||||
|
||||
list(APPEND GFLAGS_CHECK_PATH_SUFFIXES
|
||||
@@ -457,7 +456,6 @@ if(NOT GFLAGS_FOUND)
|
||||
/usr/local/homebrew/lib # Mac OS X.
|
||||
/opt/local/lib
|
||||
/usr/lib
|
||||
/sw/lib # Fink
|
||||
/opt/lib/gflags/lib)
|
||||
list(APPEND GFLAGS_CHECK_LIBRARY_SUFFIXES
|
||||
gflags/lib # Windows (for C:/Program Files prefix).
|
||||
|
@@ -128,7 +128,6 @@ list(APPEND GLOG_CHECK_INCLUDE_DIRS
|
||||
/opt/local/var/macports/software # Mac OS X.
|
||||
/opt/local/include
|
||||
/usr/include
|
||||
/sw/include # Fink
|
||||
/opt/lib/glog/include)
|
||||
# Windows (for C:/Program Files prefix).
|
||||
list(APPEND GLOG_CHECK_PATH_SUFFIXES
|
||||
@@ -143,7 +142,6 @@ list(APPEND GLOG_CHECK_LIBRARY_DIRS
|
||||
/usr/local/homebrew/lib # Mac OS X.
|
||||
/opt/local/lib
|
||||
/usr/lib
|
||||
/sw/lib # Fink
|
||||
/opt/lib/gflags/lib)
|
||||
# Windows (for C:/Program Files prefix).
|
||||
list(APPEND GLOG_CHECK_LIBRARY_SUFFIXES
|
||||
|
@@ -26,9 +26,6 @@ ENDIF()
|
||||
|
||||
SET(_hdf5_SEARCH_DIRS
|
||||
${HDF5_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/hdf5
|
||||
)
|
||||
|
||||
|
@@ -32,9 +32,6 @@ endif()
|
||||
|
||||
SET(_icu_SEARCH_DIRS
|
||||
${ICU_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
# We don't need includes, only libs to link against...
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_jack_SEARCH_DIRS
|
||||
${JACK_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(JACK_INCLUDE_DIR
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_jemalloc_SEARCH_DIRS
|
||||
${JEMALLOC_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/jemalloc
|
||||
)
|
||||
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_lzo_SEARCH_DIRS
|
||||
${LZO_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(LZO_INCLUDE_DIR lzo/lzo1x.h
|
||||
|
@@ -62,9 +62,6 @@ SET(_opencollada_FIND_STATIC_COMPONENTS
|
||||
|
||||
SET(_opencollada_SEARCH_DIRS
|
||||
${OPENCOLLADA_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/opencollada
|
||||
)
|
||||
|
||||
|
@@ -35,9 +35,6 @@ SET(_opencolorio_FIND_COMPONENTS
|
||||
|
||||
SET(_opencolorio_SEARCH_DIRS
|
||||
${OPENCOLORIO_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/ocio
|
||||
)
|
||||
|
||||
|
@@ -47,9 +47,6 @@ SET(_openexr_FIND_COMPONENTS
|
||||
|
||||
SET(_openexr_SEARCH_DIRS
|
||||
${OPENEXR_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/openexr
|
||||
)
|
||||
|
||||
|
@@ -17,7 +17,6 @@ ENDIF()
|
||||
|
||||
SET(_opengles_SEARCH_DIRS
|
||||
${OPENGLES_ROOT_DIR}
|
||||
/usr/local
|
||||
)
|
||||
|
||||
FIND_PATH(OPENGLES_INCLUDE_DIR
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_openimagedenoise_SEARCH_DIRS
|
||||
${OPENIMAGEDENOISE_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/openimagedenoise
|
||||
)
|
||||
|
||||
@@ -98,7 +95,7 @@ FIND_LIBRARY(OPENIMAGEDENOISE_LIBRARY
|
||||
# handle the QUIETLY and REQUIRED arguments and set OPENIMAGEDENOISE_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENIMAGEDENOISE DEFAULT_MSG
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenImageDenoise DEFAULT_MSG
|
||||
OPENIMAGEDENOISE_LIBRARY OPENIMAGEDENOISE_INCLUDE_DIR)
|
||||
|
||||
IF(OPENIMAGEDENOISE_FOUND)
|
||||
|
@@ -31,9 +31,6 @@ ENDIF()
|
||||
|
||||
SET(_openimageio_SEARCH_DIRS
|
||||
${OPENIMAGEIO_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/oiio
|
||||
)
|
||||
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_openjpeg_SEARCH_DIRS
|
||||
${OPENJPEG_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(OPENJPEG_INCLUDE_DIR
|
||||
|
@@ -35,9 +35,6 @@ SET(_osl_FIND_COMPONENTS
|
||||
|
||||
SET(_osl_SEARCH_DIRS
|
||||
${OSL_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/osl
|
||||
)
|
||||
|
||||
@@ -69,6 +66,22 @@ FIND_PROGRAM(OSL_COMPILER oslc
|
||||
HINTS ${_osl_SEARCH_DIRS}
|
||||
PATH_SUFFIXES bin)
|
||||
|
||||
get_filename_component(OSL_SHADER_HINT ${OSL_COMPILER} DIRECTORY)
|
||||
get_filename_component(OSL_SHADER_HINT ${OSL_SHADER_DIR}/../ ABSOLUTE)
|
||||
|
||||
FIND_PATH(OSL_SHADER_DIR
|
||||
NAMES
|
||||
stdosl.h
|
||||
HINTS
|
||||
${OSL_ROOT_DIR}
|
||||
${OSL_SHADER_HINT}
|
||||
$ENV{OSLHOME}
|
||||
/usr/share/OSL/
|
||||
/usr/include/OSL/
|
||||
PATH_SUFFIXES
|
||||
shaders
|
||||
)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set OSL_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
|
@@ -34,9 +34,6 @@ SET(_opensubdiv_FIND_COMPONENTS
|
||||
|
||||
SET(_opensubdiv_SEARCH_DIRS
|
||||
${OPENSUBDIV_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/opensubdiv
|
||||
/opt/lib/osd # install_deps.sh
|
||||
)
|
||||
|
@@ -29,10 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_openvdb_SEARCH_DIRS
|
||||
${OPENVDB_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/openvdb
|
||||
/opt/lib/openvdb
|
||||
)
|
||||
|
||||
|
@@ -26,9 +26,6 @@ ENDIF()
|
||||
SET(_optix_SEARCH_DIRS
|
||||
${OPTIX_ROOT_DIR}
|
||||
"$ENV{PROGRAMDATA}/NVIDIA Corporation/OptiX SDK 7.0.0"
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(OPTIX_INCLUDE_DIR
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_pcre_SEARCH_DIRS
|
||||
${PCRE_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(PCRE_INCLUDE_DIR pcre.h
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_pugixml_SEARCH_DIRS
|
||||
${PUGIXML_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/oiio
|
||||
)
|
||||
|
||||
|
@@ -71,7 +71,6 @@ STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
|
||||
SET(_python_SEARCH_DIRS
|
||||
${PYTHON_ROOT_DIR}
|
||||
"$ENV{HOME}/py${_PYTHON_VERSION_NO_DOTS}"
|
||||
"/opt/py${_PYTHON_VERSION_NO_DOTS}"
|
||||
"/opt/lib/python-${PYTHON_VERSION}"
|
||||
)
|
||||
|
||||
|
@@ -28,12 +28,6 @@ ENDIF()
|
||||
|
||||
SET(_sdl2_SEARCH_DIRS
|
||||
${SDL2_ROOT_DIR}
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/usr/local
|
||||
/usr
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(SDL2_INCLUDE_DIR
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_sndfile_SEARCH_DIRS
|
||||
${LIBSNDFILE_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(LIBSNDFILE_INCLUDE_DIR sndfile.h
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_spacenav_SEARCH_DIRS
|
||||
${SPACENAV_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(SPACENAV_INCLUDE_DIR
|
||||
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_tbb_SEARCH_DIRS
|
||||
${TBB_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
/opt/lib/tbb
|
||||
)
|
||||
|
||||
|
73
build_files/cmake/Modules/FindUSD.cmake
Normal file
73
build_files/cmake/Modules/FindUSD.cmake
Normal file
@@ -0,0 +1,73 @@
|
||||
# - Find Universal Scene Description (USD) library
|
||||
# Find the native USD includes and libraries
|
||||
# This module defines
|
||||
# USD_INCLUDE_DIRS, where to find USD headers, Set when
|
||||
# USD_INCLUDE_DIR is found.
|
||||
# USD_LIBRARIES, libraries to link against to use USD.
|
||||
# USD_ROOT_DIR, The base directory to search for USD.
|
||||
# This can also be an environment variable.
|
||||
# USD_FOUND, If false, do not try to use USD.
|
||||
#
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2019 Blender Foundation.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
|
||||
# If USD_ROOT_DIR was defined in the environment, use it.
|
||||
IF(NOT USD_ROOT_DIR AND NOT $ENV{USD_ROOT_DIR} STREQUAL "")
|
||||
SET(USD_ROOT_DIR $ENV{USD_ROOT_DIR})
|
||||
ENDIF()
|
||||
|
||||
SET(_usd_SEARCH_DIRS
|
||||
${USD_ROOT_DIR}
|
||||
/opt/lib/usd
|
||||
)
|
||||
|
||||
FIND_PATH(USD_INCLUDE_DIR
|
||||
NAMES
|
||||
pxr/usd/usd/api.h
|
||||
HINTS
|
||||
${_usd_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
DOC "Universal Scene Description (USD) header files"
|
||||
)
|
||||
|
||||
FIND_LIBRARY(USD_LIBRARY
|
||||
NAMES
|
||||
usd_m usd_ms
|
||||
HINTS
|
||||
${_usd_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
lib64 lib lib/static
|
||||
DOC "Universal Scene Description (USD) monolithic library"
|
||||
)
|
||||
|
||||
IF(${USD_LIBRARY_NOTFOUND})
|
||||
set(USD_FOUND FALSE)
|
||||
ELSE()
|
||||
# handle the QUIETLY and REQUIRED arguments and set USD_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(USD DEFAULT_MSG USD_LIBRARY USD_INCLUDE_DIR)
|
||||
|
||||
IF(USD_FOUND)
|
||||
get_filename_component(USD_LIBRARY_DIR ${USD_LIBRARY} DIRECTORY)
|
||||
SET(USD_INCLUDE_DIRS ${USD_INCLUDE_DIR})
|
||||
set(USD_LIBRARIES ${USD_LIBRARY})
|
||||
ENDIF(USD_FOUND)
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
USD_INCLUDE_DIR
|
||||
USD_LIBRARY_DIR
|
||||
)
|
||||
|
||||
UNSET(_usd_SEARCH_DIRS)
|
@@ -29,9 +29,6 @@ ENDIF()
|
||||
|
||||
SET(_xml2_SEARCH_DIRS
|
||||
${XML2_ROOT_DIR}
|
||||
/usr/local
|
||||
/sw # Fink
|
||||
/opt/local # DarwinPorts
|
||||
)
|
||||
|
||||
FIND_PATH(XML2_INCLUDE_DIR libxml2/libxml/xpath.h
|
||||
|
73
build_files/cmake/Modules/FindXR-OpenXR-SDK.cmake
Normal file
73
build_files/cmake/Modules/FindXR-OpenXR-SDK.cmake
Normal file
@@ -0,0 +1,73 @@
|
||||
# - Find OpenXR-SDK libraries
|
||||
# Find the native OpenXR-SDK includes and libraries
|
||||
#
|
||||
# Note that there is a distinction between the OpenXR standard and the SDK. The
|
||||
# latter provides utilities to use the standard but is not part of it. Most
|
||||
# importantly, it contains C headers and a loader library, which manages
|
||||
# dynamic linking to OpenXR runtimes like Monado, Windows Mixed Reality or
|
||||
# Oculus. See the repository for more details:
|
||||
# https://github.com/KhronosGroup/OpenXR-SDK
|
||||
#
|
||||
# This module defines
|
||||
# XR_OPENXR_SDK_INCLUDE_DIRS, where to find OpenXR-SDK headers, Set when
|
||||
# XR_OPENXR_SDK_INCLUDE_DIR is found.
|
||||
# XR_OPENXR_SDK_LIBRARIES, libraries to link against to use OpenXR.
|
||||
# XR_OPENXR_SDK_ROOT_DIR, the base directory to search for OpenXR-SDK.
|
||||
# This can also be an environment variable.
|
||||
# XR_OPENXR_SDK_FOUND, if false, do not try to use OpenXR-SDK.
|
||||
#
|
||||
# also defined, but not for general use are
|
||||
# XR_OPENXR_SDK_LOADER_LIBRARY, where to find the OpenXR-SDK loader library.
|
||||
|
||||
#=============================================================================
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
|
||||
# If XR_OPENXR_SDK_ROOT_DIR was defined in the environment, use it.
|
||||
IF(NOT XR_OPENXR_SDK_ROOT_DIR AND NOT $ENV{XR_OPENXR_SDK_ROOT_DIR} STREQUAL "")
|
||||
SET(XR_OPENXR_SDK_ROOT_DIR $ENV{XR_OPENXR_SDK_ROOT_DIR})
|
||||
ENDIF()
|
||||
|
||||
SET(_xr_openxr_sdk_SEARCH_DIRS
|
||||
${XR_OPENXR_SDK_ROOT_DIR}
|
||||
/opt/lib/xr-openxr-sdk
|
||||
)
|
||||
|
||||
FIND_PATH(XR_OPENXR_SDK_INCLUDE_DIR
|
||||
NAMES
|
||||
openxr/openxr.h
|
||||
HINTS
|
||||
${_xr_openxr_sdk_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(XR_OPENXR_SDK_LOADER_LIBRARY
|
||||
NAMES
|
||||
openxr_loader
|
||||
HINTS
|
||||
${_xr_openxr_sdk_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
lib64 lib
|
||||
)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set XR_OPENXR_SDK_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XR_OPENXR_SDK DEFAULT_MSG
|
||||
XR_OPENXR_SDK_LOADER_LIBRARY XR_OPENXR_SDK_INCLUDE_DIR)
|
||||
|
||||
IF(XR_OPENXR_SDK_FOUND)
|
||||
SET(XR_OPENXR_SDK_LIBRARIES ${XR_OPENXR_SDK_LOADER_LIBRARY})
|
||||
SET(XR_OPENXR_SDK_INCLUDE_DIRS ${XR_OPENXR_SDK_INCLUDE_DIR})
|
||||
ENDIF(XR_OPENXR_SDK_FOUND)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
XR_OPENXR_SDK_INCLUDE_DIR
|
||||
XR_OPENXR_SDK_LOADER_LIBRARY
|
||||
)
|
@@ -34,13 +34,23 @@ macro(BLENDER_SRC_GTEST_EX)
|
||||
${CMAKE_SOURCE_DIR}/extern/gmock/include
|
||||
)
|
||||
unset(_current_include_directories)
|
||||
|
||||
add_executable(${TARGET_NAME} ${ARG_SRC})
|
||||
if(WIN32)
|
||||
set(MANIFEST "${CMAKE_BINARY_DIR}/tests.exe.manifest")
|
||||
endif()
|
||||
add_executable(${TARGET_NAME} ${ARG_SRC} ${MANIFEST})
|
||||
target_include_directories(${TARGET_NAME} PUBLIC "${TEST_INC}")
|
||||
target_include_directories(${TARGET_NAME} SYSTEM PUBLIC "${TEST_INC_SYS}")
|
||||
target_link_libraries(${TARGET_NAME} ${ARG_EXTRA_LIBS} ${PLATFORM_LINKLIBS})
|
||||
if(WITH_TBB)
|
||||
# Force TBB libraries to be in front of MKL (part of OpenImageDenoise), so
|
||||
# that it is initialized before MKL and static library initialization order
|
||||
# issues are avoided.
|
||||
target_link_libraries(${TARGET_NAME} ${TBB_LIBRARIES})
|
||||
if(WITH_OPENIMAGEDENOISE)
|
||||
target_link_libraries(${TARGET_NAME} ${OPENIMAGEDENOISE_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
target_link_libraries(${TARGET_NAME}
|
||||
${ARG_EXTRA_LIBS}
|
||||
${PLATFORM_LINKLIBS}
|
||||
bf_testing_main
|
||||
bf_intern_eigen
|
||||
bf_intern_guardedalloc
|
||||
@@ -53,6 +63,9 @@ macro(BLENDER_SRC_GTEST_EX)
|
||||
if(WITH_OPENMP_STATIC)
|
||||
target_link_libraries(${TARGET_NAME} ${OpenMP_LIBRARIES})
|
||||
endif()
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_link_libraries(${TARGET_NAME} bf_intern_libc_compat)
|
||||
endif()
|
||||
|
||||
get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(GENERATOR_IS_MULTI_CONFIG)
|
||||
@@ -75,6 +88,9 @@ macro(BLENDER_SRC_GTEST_EX)
|
||||
# that we can't fix.
|
||||
set_tests_properties(${TARGET_NAME} PROPERTIES ENVIRONMENT LSAN_OPTIONS=exitcode=0)
|
||||
endif()
|
||||
if(WIN32)
|
||||
unset(MANIFEST)
|
||||
endif()
|
||||
unset(TEST_INC)
|
||||
unset(TEST_INC_SYS)
|
||||
unset(TARGET_NAME)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user