mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-18 19:12:17 +00:00
Compare commits
3603 Commits
v2.3.0-bet
...
feature/au
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5ca14ebb5 | ||
|
|
57f9112b7c | ||
|
|
1893712063 | ||
|
|
cf9de8e444 | ||
|
|
6d358443ec | ||
|
|
c8a4a7db29 | ||
|
|
5771f63edd | ||
|
|
444e191c2b | ||
|
|
82abc70460 | ||
|
|
58278596df | ||
|
|
b7af2efe4c | ||
|
|
e35f4dbf62 | ||
|
|
0c5f6c9865 | ||
|
|
03c8541b09 | ||
|
|
ad88d43db8 | ||
|
|
2e53e9db02 | ||
|
|
86c6cf7b91 | ||
|
|
fed4a120e4 | ||
|
|
9d39f5a5a1 | ||
|
|
0bee82cee5 | ||
|
|
06544bce9d | ||
|
|
a2c90e2de4 | ||
|
|
bed3cf154a | ||
|
|
504a5d3b70 | ||
|
|
af9688e619 | ||
|
|
11018ba0f3 | ||
|
|
8147f8d5fa | ||
|
|
d021da1487 | ||
|
|
a30fa08e1b | ||
|
|
d1f4e8abe1 | ||
|
|
263b592885 | ||
|
|
69861b57f9 | ||
|
|
32cf44fc0a | ||
|
|
7c91459c37 | ||
|
|
0330e86007 | ||
|
|
81dd153798 | ||
|
|
2877c6032d | ||
|
|
0f397492e7 | ||
|
|
e8af78d032 | ||
|
|
3dc80593bd | ||
|
|
b93112c674 | ||
|
|
8989e2102d | ||
|
|
1ca20469d7 | ||
|
|
1a3b8dc6a2 | ||
|
|
2026a0cf0c | ||
|
|
2a0cfdb356 | ||
|
|
506fde8f86 | ||
|
|
a240478c30 | ||
|
|
b1d659bad5 | ||
|
|
0aac0478e7 | ||
|
|
3c47b60063 | ||
|
|
baf5f286c3 | ||
|
|
f08cae6c5a | ||
|
|
7fa6175b4f | ||
|
|
9092389ef9 | ||
|
|
3da093b756 | ||
|
|
6a3e41035c | ||
|
|
ace2bd1349 | ||
|
|
b2a2b71b92 | ||
|
|
e69daea3c3 | ||
|
|
8e9daad2e8 | ||
|
|
b30d7fb0fa | ||
|
|
74c547f94f | ||
|
|
e32dbd3802 | ||
|
|
380ea7e2e8 | ||
|
|
4d8581cd47 | ||
|
|
29f4e66715 | ||
|
|
ad7fe3785a | ||
|
|
e4f6499663 | ||
|
|
d092d6d9a7 | ||
|
|
2be0f0e05e | ||
|
|
7f36a02f37 | ||
|
|
c126aae902 | ||
|
|
f9d5519294 | ||
|
|
0e6fc7a92b | ||
|
|
22d2fe9b37 | ||
|
|
00ff06a5d3 | ||
|
|
59ad126b48 | ||
|
|
b2822b6861 | ||
|
|
7ec3d85a02 | ||
|
|
54c876222e | ||
|
|
c9ea433cd5 | ||
|
|
83a64559a2 | ||
|
|
5c547ea4a1 | ||
|
|
d8de54dfca | ||
|
|
25bc45c8f5 | ||
|
|
bb537f97f2 | ||
|
|
d453de3912 | ||
|
|
0b83a0c8ad | ||
|
|
7760000aaf | ||
|
|
db64def4c2 | ||
|
|
52c2a85d28 | ||
|
|
02c8bba8b4 | ||
|
|
bd6cfd6cec | ||
|
|
f71e09a8c6 | ||
|
|
7ec32fc484 | ||
|
|
f3e486c1a9 | ||
|
|
855870e256 | ||
|
|
f0d79b99eb | ||
|
|
4c1b6445d3 | ||
|
|
f57d0d1442 | ||
|
|
b78381e4f5 | ||
|
|
b8cb62fb10 | ||
|
|
b843b36d8f | ||
|
|
9304cc35db | ||
|
|
f48a438b27 | ||
|
|
589eb2cfeb | ||
|
|
3367648ec0 | ||
|
|
61931d23a4 | ||
|
|
7b0cdd3ec6 | ||
|
|
4c00966ca3 | ||
|
|
3a7309a1b2 | ||
|
|
fb3b2aadac | ||
|
|
ac483df749 | ||
|
|
36fcf17358 | ||
|
|
e5f7722f57 | ||
|
|
e2baeae0d9 | ||
|
|
aa5350a6fe | ||
|
|
8b812e0b18 | ||
|
|
760f66d3d7 | ||
|
|
4046e39ff3 | ||
|
|
73b1d1def5 | ||
|
|
5fa38e16f4 | ||
|
|
c0c1ddfda0 | ||
|
|
73b93d2ed0 | ||
|
|
d6936ec32a | ||
|
|
a24785ee39 | ||
|
|
77f7514d97 | ||
|
|
c11053dfe7 | ||
|
|
5e2a7fbf35 | ||
|
|
3cd229098f | ||
|
|
4b1ddcdc55 | ||
|
|
8ec2454835 | ||
|
|
e5cbd2da24 | ||
|
|
25791cc685 | ||
|
|
95c901768e | ||
|
|
c2c796ef25 | ||
|
|
122934d8da | ||
|
|
074a3bd8ab | ||
|
|
416b447ab0 | ||
|
|
1bc5832efd | ||
|
|
21399999f1 | ||
|
|
7f1aad8bc1 | ||
|
|
0c810c817f | ||
|
|
9d944fd1bd | ||
|
|
d94fa0a95d | ||
|
|
43c48a265d | ||
|
|
c0ad4f4e1c | ||
|
|
61bc6193ab | ||
|
|
83738cacd8 | ||
|
|
a7adeb6305 | ||
|
|
5197358183 | ||
|
|
4501bf6f57 | ||
|
|
394d1a330d | ||
|
|
e20dc30c97 | ||
|
|
8f5a5a9b16 | ||
|
|
614612ed38 | ||
|
|
08bd21310c | ||
|
|
14dd1078bf | ||
|
|
b1bb08b096 | ||
|
|
a151ac931d | ||
|
|
2bcbb688a1 | ||
|
|
df734857cc | ||
|
|
b62187f076 | ||
|
|
bc008ff2f0 | ||
|
|
716d85f635 | ||
|
|
28184a96a1 | ||
|
|
bfe4b78b0e | ||
|
|
0b2778e670 | ||
|
|
8fce6c68b8 | ||
|
|
b88aee4c0b | ||
|
|
c3e03a0955 | ||
|
|
210bc47173 | ||
|
|
f4d8130451 | ||
|
|
058b6143a6 | ||
|
|
13f94b0559 | ||
|
|
0115cfbdd0 | ||
|
|
e8464dd69c | ||
|
|
4b7e95d81d | ||
|
|
eb02e9fbf4 | ||
|
|
ead6f9d763 | ||
|
|
d82f88bee8 | ||
|
|
ccd542b19d | ||
|
|
55f677ef21 | ||
|
|
55d97420f2 | ||
|
|
258799674f | ||
|
|
5eecb82cf5 | ||
|
|
69afe093bf | ||
|
|
4efaee4c98 | ||
|
|
3c65617139 | ||
|
|
ebb89a583d | ||
|
|
664a34f129 | ||
|
|
763bdb5dee | ||
|
|
a351aa8cb0 | ||
|
|
43693ebba9 | ||
|
|
c6e4ac1c4d | ||
|
|
c105d42d09 | ||
|
|
2ae3378605 | ||
|
|
9a37c45e35 | ||
|
|
bcb0387e0e | ||
|
|
ffddfb0559 | ||
|
|
c106350143 | ||
|
|
398c72dd68 | ||
|
|
6ab6b37c4a | ||
|
|
2b02a19404 | ||
|
|
f198ac306b | ||
|
|
a594e5fa01 | ||
|
|
ea85db92ba | ||
|
|
f6a4ebe87c | ||
|
|
320d8e435e | ||
|
|
9568d471af | ||
|
|
93c4838efe | ||
|
|
05533a7fd3 | ||
|
|
c734c1cdf1 | ||
|
|
420ac69e5b | ||
|
|
8c4dd9db37 | ||
|
|
95a6a8c0c5 | ||
|
|
493a92c7c8 | ||
|
|
6ae4cfb6df | ||
|
|
7bea0dabee | ||
|
|
b2dd9aa196 | ||
|
|
1aad85aee4 | ||
|
|
96ad19c53f | ||
|
|
3d294de33f | ||
|
|
5d84c38b09 | ||
|
|
dd7d12ed8b | ||
|
|
99863163b2 | ||
|
|
e349cccdb9 | ||
|
|
b9ab8e55be | ||
|
|
ab7e782809 | ||
|
|
d2e914b7f0 | ||
|
|
00122a9de5 | ||
|
|
275f3a7f1e | ||
|
|
bb9c3bb87a | ||
|
|
4b7b81a0a2 | ||
|
|
9b015c9d45 | ||
|
|
431cd47182 | ||
|
|
dedfd9d4ed | ||
|
|
50d93afc25 | ||
|
|
e3f049829b | ||
|
|
0767d3a363 | ||
|
|
d69aaeef3c | ||
|
|
4ca62922e2 | ||
|
|
790bb39783 | ||
|
|
435dba580c | ||
|
|
07427de46b | ||
|
|
06fbd3c087 | ||
|
|
7c7d80479d | ||
|
|
bfd8a0cbd7 | ||
|
|
2e19dfea93 | ||
|
|
cb9cbea742 | ||
|
|
c93d345d2a | ||
|
|
9f7ff97be6 | ||
|
|
778874aa01 | ||
|
|
5cccdc7078 | ||
|
|
3480bf728d | ||
|
|
ca34800cad | ||
|
|
ffab04262d | ||
|
|
69ecdeba71 | ||
|
|
54f17fc5af | ||
|
|
a50f14c6ce | ||
|
|
967b7a5050 | ||
|
|
d4e6b73de1 | ||
|
|
9013254def | ||
|
|
2db929a805 | ||
|
|
1e71d22cee | ||
|
|
669d53df17 | ||
|
|
8cec2a854e | ||
|
|
e686424e8c | ||
|
|
d852ceddc6 | ||
|
|
88222a5f64 | ||
|
|
438d80521b | ||
|
|
bf5a0c0084 | ||
|
|
223eaa5d2f | ||
|
|
011d7041a5 | ||
|
|
0eca9eefb8 | ||
|
|
f63cdc30e4 | ||
|
|
a561c1bf13 | ||
|
|
05599d65af | ||
|
|
edced8d5a6 | ||
|
|
34b25be058 | ||
|
|
a2d113111b | ||
|
|
d7f66b289d | ||
|
|
9e1b142ed5 | ||
|
|
5e279118d0 | ||
|
|
0dfe185cad | ||
|
|
104cbb7b9b | ||
|
|
c382a8a9c3 | ||
|
|
3d482ce4a0 | ||
|
|
0b805a7145 | ||
|
|
7eaabc4856 | ||
|
|
5f26bc9e6e | ||
|
|
0313680701 | ||
|
|
c52ca2a442 | ||
|
|
e5f08a7173 | ||
|
|
14fed10ce6 | ||
|
|
213aa92f8d | ||
|
|
efc2da6549 | ||
|
|
f4848a5782 | ||
|
|
0f7e6cc442 | ||
|
|
bc25e28860 | ||
|
|
a4fe4633ce | ||
|
|
7f81c31936 | ||
|
|
edb46704aa | ||
|
|
0964a9a85c | ||
|
|
d4e1d7dfb2 | ||
|
|
642cf3c09c | ||
|
|
80f4a7a40f | ||
|
|
91393cddfb | ||
|
|
0d01352658 | ||
|
|
f2c9acbd58 | ||
|
|
3c829f4df2 | ||
|
|
ff1e48a9c4 | ||
|
|
f2996a529b | ||
|
|
f34ee83f69 | ||
|
|
8d3da67254 | ||
|
|
2234b227c4 | ||
|
|
9d73426c0a | ||
|
|
901bdea706 | ||
|
|
4def2e846e | ||
|
|
62bf7d1355 | ||
|
|
4a51ef7f91 | ||
|
|
1ea5aa9017 | ||
|
|
55d8685952 | ||
|
|
aa75c444aa | ||
|
|
d6e40352c2 | ||
|
|
34a6100fe6 | ||
|
|
a2a9f95b6b | ||
|
|
46fd6c9794 | ||
|
|
d5da6b834b | ||
|
|
934f32bd8c | ||
|
|
fabc681442 | ||
|
|
8b640a148e | ||
|
|
6161c5c9bc | ||
|
|
721c93e3d8 | ||
|
|
7ab6a22601 | ||
|
|
85f01d2294 | ||
|
|
528960bef8 | ||
|
|
a57cc4aa58 | ||
|
|
491100a9d2 | ||
|
|
8534cf5fce | ||
|
|
420bdc8907 | ||
|
|
16a6138263 | ||
|
|
3a8269f9d4 | ||
|
|
b9cd05dc86 | ||
|
|
6923230495 | ||
|
|
69b2b5d86d | ||
|
|
c6db0f0f85 | ||
|
|
2c675b1365 | ||
|
|
d3bf96f067 | ||
|
|
970a226b94 | ||
|
|
32af91cf61 | ||
|
|
ada573a1fd | ||
|
|
abefa5ec4d | ||
|
|
837d2af7e0 | ||
|
|
6724ec56ba | ||
|
|
f0c03be324 | ||
|
|
7608195e17 | ||
|
|
434d2142e4 | ||
|
|
99c6b2d9ba | ||
|
|
4603d4a2c9 | ||
|
|
be88fc5a84 | ||
|
|
4e63907f72 | ||
|
|
dfa59a5c00 | ||
|
|
a40f3ed85f | ||
|
|
e218e43aba | ||
|
|
2cd92165f6 | ||
|
|
dd8fe9436e | ||
|
|
c8fac7158a | ||
|
|
c7b4a0b089 | ||
|
|
11345d6b54 | ||
|
|
833de25b29 | ||
|
|
2959f7549c | ||
|
|
21cd25d5af | ||
|
|
38faa0ae46 | ||
|
|
2fd2ad0e8a | ||
|
|
6f47a241c5 | ||
|
|
6b7d14b98b | ||
|
|
14716da0c3 | ||
|
|
a941895fe7 | ||
|
|
3b2da3451a | ||
|
|
68e08a5bee | ||
|
|
66263839dc | ||
|
|
6e16f3403a | ||
|
|
eafe57d8c6 | ||
|
|
8863631c92 | ||
|
|
21407e91de | ||
|
|
c9f0bdb4b8 | ||
|
|
164bd76762 | ||
|
|
c2938827ac | ||
|
|
6fcb6be65f | ||
|
|
776b8b63b9 | ||
|
|
35999b7110 | ||
|
|
13613a1831 | ||
|
|
6ebb3b8215 | ||
|
|
27acf8fbe8 | ||
|
|
55ed67ef23 | ||
|
|
8e82c0f086 | ||
|
|
299c7c0bac | ||
|
|
ac69e7cfbc | ||
|
|
94cde0fb3a | ||
|
|
299b821c5f | ||
|
|
964a35e9b0 | ||
|
|
9360733661 | ||
|
|
d8cd5d4ceb | ||
|
|
3bfeb2dc0b | ||
|
|
59c2e222d8 | ||
|
|
e89817b263 | ||
|
|
e4418731eb | ||
|
|
4f12f83ba1 | ||
|
|
d4c885bf23 | ||
|
|
1fa0e600b8 | ||
|
|
7fc8992978 | ||
|
|
99cb888421 | ||
|
|
a0f52e2c74 | ||
|
|
8ca6484e58 | ||
|
|
27599a998f | ||
|
|
3bd9fe995b | ||
|
|
29eec843eb | ||
|
|
6d9ad4412b | ||
|
|
cdd1c22857 | ||
|
|
e6d8339406 | ||
|
|
e774104f87 | ||
|
|
27a23a8baf | ||
|
|
84dd0449b7 | ||
|
|
9b5190ca37 | ||
|
|
fedcfc4ea5 | ||
|
|
b5b64265b2 | ||
|
|
06acdf2609 | ||
|
|
a397a7378a | ||
|
|
7df679fba7 | ||
|
|
f4ba9e7fd5 | ||
|
|
f1f6758411 | ||
|
|
2d69a71b15 | ||
|
|
1494731eab | ||
|
|
2339f5a789 | ||
|
|
fb2266f901 | ||
|
|
2626a6bc3b | ||
|
|
21cfc7edeb | ||
|
|
fd7c1ad1b5 | ||
|
|
0066aacfdb | ||
|
|
61991f8296 | ||
|
|
a839b81fdf | ||
|
|
e922411371 | ||
|
|
ca064dee1d | ||
|
|
3079ef1db2 | ||
|
|
d221432a62 | ||
|
|
1f0428dc29 | ||
|
|
f4d9e9159a | ||
|
|
ae10b4c09e | ||
|
|
1ba247bf71 | ||
|
|
9fb02f21b0 | ||
|
|
fda946918a | ||
|
|
026499c5b7 | ||
|
|
ce854fa3de | ||
|
|
9d69d37c5a | ||
|
|
ff0507e5a3 | ||
|
|
6725a9db89 | ||
|
|
433c1feb47 | ||
|
|
6e967563eb | ||
|
|
f5bbe52ac9 | ||
|
|
339636b91f | ||
|
|
9510b1a930 | ||
|
|
2915e3035f | ||
|
|
497ff94e09 | ||
|
|
b2047ba563 | ||
|
|
3cb6da6f61 | ||
|
|
f0b89eadf4 | ||
|
|
d87f8e3a88 | ||
|
|
4a05ac547a | ||
|
|
3d80ca3d85 | ||
|
|
0e30dab638 | ||
|
|
972026f0a5 | ||
|
|
f2e6a4c08e | ||
|
|
e6a4ddf32d | ||
|
|
0bdb114881 | ||
|
|
a6d9fa49b4 | ||
|
|
3b1a420b4e | ||
|
|
fcb640bee1 | ||
|
|
d786aec255 | ||
|
|
8e0e8ce461 | ||
|
|
a754387566 | ||
|
|
9e889afb53 | ||
|
|
c79e89d30b | ||
|
|
a48235691e | ||
|
|
2a3e761ab9 | ||
|
|
1bbdb3fa8e | ||
|
|
1a0979988a | ||
|
|
01c02051f2 | ||
|
|
f12602c0bc | ||
|
|
712febf3fb | ||
|
|
f6784a2dda | ||
|
|
b29174f767 | ||
|
|
e20113402c | ||
|
|
ea83a0f337 | ||
|
|
baf0588d43 | ||
|
|
af32339e1a | ||
|
|
6f36556eaa | ||
|
|
0493ed03a5 | ||
|
|
be18ff3c6f | ||
|
|
c6163ebcf3 | ||
|
|
45f6d3cf95 | ||
|
|
8de11c2f01 | ||
|
|
adf85c5080 | ||
|
|
12226c472b | ||
|
|
4e79527bf8 | ||
|
|
3a5a49b23d | ||
|
|
cbc41501b4 | ||
|
|
ac75c69ddf | ||
|
|
9c1c439cfc | ||
|
|
1786e3f5e4 | ||
|
|
295758f0fc | ||
|
|
6feb99bd2d | ||
|
|
592a3aea37 | ||
|
|
2582c65bb5 | ||
|
|
cf26243740 | ||
|
|
abe3cd48f9 | ||
|
|
fc8f183151 | ||
|
|
2fa386cbdb | ||
|
|
6ea106f754 | ||
|
|
ca6d1d37ee | ||
|
|
f658aad7ca | ||
|
|
cad5996446 | ||
|
|
56d8bd8fbe | ||
|
|
dd08cca05e | ||
|
|
59bca995fb | ||
|
|
fa238016ce | ||
|
|
6b4975da72 | ||
|
|
95f90a32da | ||
|
|
3ea51fc41f | ||
|
|
8d9050d99a | ||
|
|
9e44fe0cd2 | ||
|
|
754e602b53 | ||
|
|
83c167450b | ||
|
|
651afe8825 | ||
|
|
4897fd5ea2 | ||
|
|
b30716a996 | ||
|
|
c4adf70e45 | ||
|
|
45bf4a99f1 | ||
|
|
4ee98b1807 | ||
|
|
fb4bb83546 | ||
|
|
551be1c18b | ||
|
|
fdf3e88032 | ||
|
|
38f51bd77f | ||
|
|
687286ccac | ||
|
|
a8482a1138 | ||
|
|
8ed77beaa0 | ||
|
|
a9145ca641 | ||
|
|
6b24a977ca | ||
|
|
da2934d02a | ||
|
|
6346d3001a | ||
|
|
1dc8460621 | ||
|
|
63dd696908 | ||
|
|
42d2965093 | ||
|
|
9061b12aee | ||
|
|
df1c5722ef | ||
|
|
804c569b07 | ||
|
|
a9c0490c68 | ||
|
|
24fe8a9fa7 | ||
|
|
ad0ed95b85 | ||
|
|
9f99aa14a2 | ||
|
|
5e3f84acc0 | ||
|
|
735cd4f1d9 | ||
|
|
e5bd736def | ||
|
|
eac358046c | ||
|
|
e8d8fb5c7a | ||
|
|
6c74e5f45a | ||
|
|
6df1cde6d0 | ||
|
|
2d273b43b6 | ||
|
|
0a09c32e31 | ||
|
|
1653cb0bda | ||
|
|
82b9b5dc80 | ||
|
|
8bf60469b4 | ||
|
|
8dd88df97b | ||
|
|
3d7bf13932 | ||
|
|
e511d8d862 | ||
|
|
90830ab2ea | ||
|
|
f36f73e518 | ||
|
|
b473b34ddd | ||
|
|
e441a9f62e | ||
|
|
0b9bd42766 | ||
|
|
895d33f690 | ||
|
|
247a811900 | ||
|
|
093367a58e | ||
|
|
757d1f4cb1 | ||
|
|
f45d13dfc9 | ||
|
|
c1e4876793 | ||
|
|
7bc01c625d | ||
|
|
d9d2814b24 | ||
|
|
aebf303122 | ||
|
|
bd5c7b38b1 | ||
|
|
bac1473116 | ||
|
|
fa832b7539 | ||
|
|
95c63e2534 | ||
|
|
17d463c841 | ||
|
|
811060aabb | ||
|
|
f33fe05101 | ||
|
|
f46c456a49 | ||
|
|
eac836b74f | ||
|
|
1ce594f4df | ||
|
|
625d02661b | ||
|
|
c4b9349d9d | ||
|
|
574f597382 | ||
|
|
c348556235 | ||
|
|
72a64d7966 | ||
|
|
2eb607bf2c | ||
|
|
62d94b1a73 | ||
|
|
1943f128bb | ||
|
|
cd7f30d73e | ||
|
|
e520c68675 | ||
|
|
38a18dc086 | ||
|
|
4333872b3d | ||
|
|
ae8c59edc9 | ||
|
|
b8f3ff070d | ||
|
|
ed7ef5cb9d | ||
|
|
f6034a80af | ||
|
|
9bf94b3d30 | ||
|
|
2aeace7bee | ||
|
|
48b4d51a50 | ||
|
|
874a13180e | ||
|
|
f7643eb3be | ||
|
|
a543a55e01 | ||
|
|
2b7f14da27 | ||
|
|
2c4d422d30 | ||
|
|
791e124440 | ||
|
|
d8dc560f7a | ||
|
|
d1c8894fd6 | ||
|
|
1c0eecfc1f | ||
|
|
26a9cec304 | ||
|
|
e64fcbe210 | ||
|
|
1f1a408728 | ||
|
|
6fadf2da5c | ||
|
|
337d987ec8 | ||
|
|
49befe4306 | ||
|
|
a781862fb1 | ||
|
|
fdae073072 | ||
|
|
e0c42f0772 | ||
|
|
8b3c8fddb1 | ||
|
|
1a8138a996 | ||
|
|
5499007bc3 | ||
|
|
c30459f1c6 | ||
|
|
e5221592a8 | ||
|
|
ed13861cfd | ||
|
|
5d77251a22 | ||
|
|
d0448eb0da | ||
|
|
fea37d39b2 | ||
|
|
044362649f | ||
|
|
ca74440d9d | ||
|
|
57168f8caa | ||
|
|
5d1632ca8c | ||
|
|
6108cb12a1 | ||
|
|
9df8327890 | ||
|
|
980a30cedf | ||
|
|
d609d8c23f | ||
|
|
49c12a4f62 | ||
|
|
eb88d81362 | ||
|
|
c891884ca2 | ||
|
|
bf221a5ed9 | ||
|
|
b90dbb8bcf | ||
|
|
e6cafd9e1e | ||
|
|
a8c1713136 | ||
|
|
ef5458d231 | ||
|
|
1c793a5ad1 | ||
|
|
1a34765856 | ||
|
|
db05e4ac64 | ||
|
|
296e001856 | ||
|
|
bb43e312b3 | ||
|
|
9347bef7dd | ||
|
|
be643e0ec3 | ||
|
|
504ae4a393 | ||
|
|
a8f70a72c9 | ||
|
|
a12330f4e7 | ||
|
|
41bfd5b8c2 | ||
|
|
8e9281d68e | ||
|
|
a218000b9a | ||
|
|
0e80ad4c9b | ||
|
|
eb1eb7e81a | ||
|
|
561f4ebfbd | ||
|
|
f0cf58eede | ||
|
|
9c12a191f7 | ||
|
|
c9e27f516c | ||
|
|
a66a1b60a8 | ||
|
|
20a9682c18 | ||
|
|
6f52bae686 | ||
|
|
19bf2a6985 | ||
|
|
bbd25a733e | ||
|
|
53790c7bf3 | ||
|
|
b0223d2756 | ||
|
|
917717f2aa | ||
|
|
665f7852f2 | ||
|
|
05b7e28284 | ||
|
|
7771548e8c | ||
|
|
737948be1f | ||
|
|
106d8fe824 | ||
|
|
01e483a42d | ||
|
|
fcba4aa693 | ||
|
|
addc718acf | ||
|
|
a932821168 | ||
|
|
4943c31bd0 | ||
|
|
da57bed077 | ||
|
|
174346e113 | ||
|
|
a77b19bb46 | ||
|
|
a8f2e17edd | ||
|
|
4394527a5c | ||
|
|
2e47d7315e | ||
|
|
f39b26be75 | ||
|
|
0d6f5921ce | ||
|
|
d04f0ab133 | ||
|
|
250f4f4274 | ||
|
|
1bef9fc184 | ||
|
|
4e1ec6d354 | ||
|
|
20754415a6 | ||
|
|
4c980bfa10 | ||
|
|
2ac6ffa631 | ||
|
|
604b7d9f70 | ||
|
|
c12623f576 | ||
|
|
ae3b35d195 | ||
|
|
b42afde4d0 | ||
|
|
1d52ab4738 | ||
|
|
0f6cc6da4a | ||
|
|
f82783259a | ||
|
|
ad45236056 | ||
|
|
c4c0083a17 | ||
|
|
6d6969a315 | ||
|
|
24f1838f98 | ||
|
|
6d463ed8b4 | ||
|
|
9ac3d64328 | ||
|
|
885a078747 | ||
|
|
390bc3fb27 | ||
|
|
120c9b41e2 | ||
|
|
60bf21ad8c | ||
|
|
4bd1c0d98d | ||
|
|
2cb963852b | ||
|
|
bd066e7f96 | ||
|
|
942d023a1e | ||
|
|
e56774ad71 | ||
|
|
e05d81c797 | ||
|
|
aa9fb1fd34 | ||
|
|
c0c12fcb1f | ||
|
|
2dde924582 | ||
|
|
e987a6bf82 | ||
|
|
52e9e0ae08 | ||
|
|
bdf413fb58 | ||
|
|
b9601f666a | ||
|
|
251bd230da | ||
|
|
fcd0a11490 | ||
|
|
e68daa36c9 | ||
|
|
cae1fe4dd4 | ||
|
|
1b4bcfcba5 | ||
|
|
7208953cfd | ||
|
|
03eeb2bcd9 | ||
|
|
2ed08353ca | ||
|
|
1fd88842d9 | ||
|
|
68fe61564a | ||
|
|
89c58fb4d9 | ||
|
|
b39bc5bf8f | ||
|
|
6121a420f1 | ||
|
|
c94c453936 | ||
|
|
ac4b3696ab | ||
|
|
bb4944e955 | ||
|
|
0581fac6e6 | ||
|
|
f60a6f8490 | ||
|
|
eeb8b2111c | ||
|
|
54d9abadcb | ||
|
|
6809f99939 | ||
|
|
bc13ca4622 | ||
|
|
d1d7e87f86 | ||
|
|
73dd707d7b | ||
|
|
296bbe3dd6 | ||
|
|
e8ae3d1753 | ||
|
|
1304b315c7 | ||
|
|
641577c835 | ||
|
|
86a828afd2 | ||
|
|
873fb30bc5 | ||
|
|
83feaeadec | ||
|
|
4a787f6ff8 | ||
|
|
e17c8bfb80 | ||
|
|
d05420615b | ||
|
|
41da6a1ae7 | ||
|
|
b8bbb04527 | ||
|
|
40f8583440 | ||
|
|
2a27c49984 | ||
|
|
85f7b3b18c | ||
|
|
e8e7cebb9d | ||
|
|
6bb19e10b2 | ||
|
|
f2e759e885 | ||
|
|
a660e1ae6d | ||
|
|
755845598f | ||
|
|
b3689ec700 | ||
|
|
269b4d9fc2 | ||
|
|
637a86b738 | ||
|
|
30bce5df45 | ||
|
|
51151a89c5 | ||
|
|
cd0eb95c25 | ||
|
|
902b215eb1 | ||
|
|
46abd03bde | ||
|
|
fa68dde4b3 | ||
|
|
6757906ad3 | ||
|
|
8a6a7a0d7d | ||
|
|
f391070cb7 | ||
|
|
1ccdf7b43b | ||
|
|
070a8e62a1 | ||
|
|
c297c4232f | ||
|
|
f7758b1831 | ||
|
|
c21c715f37 | ||
|
|
583848c868 | ||
|
|
91d4b14ba7 | ||
|
|
723ce9d431 | ||
|
|
44c13f3967 | ||
|
|
0e7ed6e163 | ||
|
|
c1fa2acd85 | ||
|
|
2f18d25a2d | ||
|
|
6c242c5101 | ||
|
|
b6a44b5eb1 | ||
|
|
4b06a552b6 | ||
|
|
26dcf805e6 | ||
|
|
5f1ff2f9a9 | ||
|
|
d2fc250e5f | ||
|
|
a5c6450cc5 | ||
|
|
0721078177 | ||
|
|
2d215d75d2 | ||
|
|
91e27e8e95 | ||
|
|
a448cff1df | ||
|
|
c5956d6dff | ||
|
|
0d26211688 | ||
|
|
4c450df0df | ||
|
|
968be632a7 | ||
|
|
c11fd2592e | ||
|
|
04f0b96029 | ||
|
|
55e3bd1a4d | ||
|
|
28f5c3e952 | ||
|
|
8fc53b4312 | ||
|
|
3c17c26573 | ||
|
|
8d1f11495d | ||
|
|
73220b4df6 | ||
|
|
3d21cea5ee | ||
|
|
1d4b9a9f82 | ||
|
|
1331e51dae | ||
|
|
9ac93d7a25 | ||
|
|
aad1d7b7ae | ||
|
|
608ac2354d | ||
|
|
8d8630241a | ||
|
|
6a37e8f295 | ||
|
|
11a800de7d | ||
|
|
9d0885f382 | ||
|
|
3a49e2f516 | ||
|
|
cd5566aee5 | ||
|
|
1472b5ce21 | ||
|
|
041673dc85 | ||
|
|
491bcd294f | ||
|
|
8af893ad75 | ||
|
|
de718ce420 | ||
|
|
d6e87fc0b7 | ||
|
|
92a8b0b43e | ||
|
|
7f71c59490 | ||
|
|
4a3fa5141c | ||
|
|
0cb19a2bac | ||
|
|
7aca9f9535 | ||
|
|
09c5768484 | ||
|
|
3697abe3a9 | ||
|
|
9b91070ca9 | ||
|
|
d0cc4b35ee | ||
|
|
4e99a042bb | ||
|
|
c7f50ec485 | ||
|
|
ef0748e96b | ||
|
|
d4273b4f70 | ||
|
|
8611125008 | ||
|
|
7736b31015 | ||
|
|
200c8c3cb8 | ||
|
|
f1884a4264 | ||
|
|
ddee9f3976 | ||
|
|
54f758055c | ||
|
|
9982eaa036 | ||
|
|
8ee131ad0f | ||
|
|
89123e519a | ||
|
|
fad8043f5e | ||
|
|
12725f763c | ||
|
|
0f83d15962 | ||
|
|
3748ac6e93 | ||
|
|
a7da1da78a | ||
|
|
bc02e48dc0 | ||
|
|
a7b237f862 | ||
|
|
15037283e7 | ||
|
|
504b89af03 | ||
|
|
cf9a38bbc6 | ||
|
|
ad7725a020 | ||
|
|
6247ec1e83 | ||
|
|
c945bfa36c | ||
|
|
70f5abfdc1 | ||
|
|
a7ad18e66e | ||
|
|
ca87a0a395 | ||
|
|
a092c48642 | ||
|
|
e389072544 | ||
|
|
b0656fefbe | ||
|
|
b6a68ef312 | ||
|
|
6075302f98 | ||
|
|
013d2d8d6e | ||
|
|
fc6258e2b7 | ||
|
|
54e741705d | ||
|
|
a186e8e8d7 | ||
|
|
4bb326db16 | ||
|
|
4deb47554a | ||
|
|
78734352d8 | ||
|
|
bdf1caffd4 | ||
|
|
ea826815af | ||
|
|
0bbd563a79 | ||
|
|
d4115e0837 | ||
|
|
025294894a | ||
|
|
e3cb884ee8 | ||
|
|
ba4cc19e6c | ||
|
|
fcbad94b91 | ||
|
|
2be0569e3d | ||
|
|
bf3875e4c9 | ||
|
|
9e990fc5c1 | ||
|
|
614f93053a | ||
|
|
885e905e76 | ||
|
|
27943f7047 | ||
|
|
470ed6af5d | ||
|
|
9ee76e4775 | ||
|
|
5a1dc90e8c | ||
|
|
32ca697e9e | ||
|
|
4d7699b628 | ||
|
|
94732b6bad | ||
|
|
3ba39f694b | ||
|
|
1635ce28d6 | ||
|
|
bb08bb0e6d | ||
|
|
0f96e397f5 | ||
|
|
a42c933756 | ||
|
|
7a59122f7a | ||
|
|
3a3f6d3a43 | ||
|
|
18b9bffd02 | ||
|
|
4f8f642655 | ||
|
|
7667e188d7 | ||
|
|
c415eea556 | ||
|
|
1e9febbe4d | ||
|
|
95027d72db | ||
|
|
03e056e278 | ||
|
|
82079ea16c | ||
|
|
81978dc558 | ||
|
|
f020480900 | ||
|
|
7de52de353 | ||
|
|
042cf84614 | ||
|
|
c64ee8156c | ||
|
|
5a6cbc0a9a | ||
|
|
dc494da0b3 | ||
|
|
2c6bb1a443 | ||
|
|
2048f57cda | ||
|
|
13d92131e7 | ||
|
|
22c42323a4 | ||
|
|
b4c08f9bdf | ||
|
|
6148c73ffc | ||
|
|
219300277c | ||
|
|
b49ca90940 | ||
|
|
ddf6ed00c5 | ||
|
|
7d147cc550 | ||
|
|
1928add5a1 | ||
|
|
17ed76a033 | ||
|
|
5bc21568cf | ||
|
|
7a90b26e57 | ||
|
|
df5bf0ae29 | ||
|
|
10428f71c0 | ||
|
|
32c055ca7a | ||
|
|
70c0b116fc | ||
|
|
48149ed3c0 | ||
|
|
435faed968 | ||
|
|
3c981f4113 | ||
|
|
008a98ccda | ||
|
|
a776c9ae56 | ||
|
|
69d5b4ae48 | ||
|
|
cc358aa945 | ||
|
|
dcf3505bb4 | ||
|
|
88eae5d217 | ||
|
|
98a32f57aa | ||
|
|
59ff362296 | ||
|
|
3c4e28eb6c | ||
|
|
0431ae4e17 | ||
|
|
8f943486a1 | ||
|
|
8dc43f1b67 | ||
|
|
2d23db7890 | ||
|
|
fb2ecdc6d9 | ||
|
|
527def0887 | ||
|
|
39360790c7 | ||
|
|
68d7bd9e17 | ||
|
|
ec295405c1 | ||
|
|
b636bbaf2f | ||
|
|
d6a8f881de | ||
|
|
b351fa3b50 | ||
|
|
a339677d08 | ||
|
|
6f7704470f | ||
|
|
0fd471fdcc | ||
|
|
14dd1cf968 | ||
|
|
38e6589bcb | ||
|
|
7a197a3d8d | ||
|
|
a036994e0a | ||
|
|
7044bf0022 | ||
|
|
fd17dd6382 | ||
|
|
2ba649d7ef | ||
|
|
bb3f59e18f | ||
|
|
8653f034e9 | ||
|
|
8309c3f04f | ||
|
|
554ce5004c | ||
|
|
3f46a3d43d | ||
|
|
98e470f378 | ||
|
|
c9a2cb7753 | ||
|
|
61a3d11fc6 | ||
|
|
2ae055cfb3 | ||
|
|
3a5d473aae | ||
|
|
b0e2c37370 | ||
|
|
e1626c26b1 | ||
|
|
af0c9f7ce2 | ||
|
|
363fe39c83 | ||
|
|
4a02669054 | ||
|
|
4c1c9a180c | ||
|
|
c569be0067 | ||
|
|
3c051f4180 | ||
|
|
8c64808ae5 | ||
|
|
d691e2c2ed | ||
|
|
ae72d3345f | ||
|
|
8d5e75ca38 | ||
|
|
9bfe97c314 | ||
|
|
d86632b993 | ||
|
|
48dd4874d8 | ||
|
|
d44ad07cfa | ||
|
|
ad6681fa9d | ||
|
|
89f837b03e | ||
|
|
33891e4ddc | ||
|
|
e42556f835 | ||
|
|
f7d0b57e97 | ||
|
|
aa2071578f | ||
|
|
e5017df5d1 | ||
|
|
ace6e614ad | ||
|
|
d58a93b501 | ||
|
|
af9d012143 | ||
|
|
48bc942cc4 | ||
|
|
22f3a2f8bd | ||
|
|
429d7b2599 | ||
|
|
ab6b1b3760 | ||
|
|
faa8708c3a | ||
|
|
8242f28b38 | ||
|
|
ea6a093477 | ||
|
|
1267ab1101 | ||
|
|
d98cc9095f | ||
|
|
adeb3ab3f7 | ||
|
|
38ad17ffbe | ||
|
|
91329da2e9 | ||
|
|
90ebeab6f3 | ||
|
|
5245e13a98 | ||
|
|
98a4aee666 | ||
|
|
9fa3978133 | ||
|
|
4b6b3cc7bd | ||
|
|
2d69d58ce9 | ||
|
|
aca0f883f7 | ||
|
|
1b10eba98b | ||
|
|
b7f313a2e0 | ||
|
|
3fd9b7ef8a | ||
|
|
517b6c09a8 | ||
|
|
9d3526958a | ||
|
|
fa8280f065 | ||
|
|
9b68aef078 | ||
|
|
a6084d01bd | ||
|
|
5cc64fa9a4 | ||
|
|
5e59e9de57 | ||
|
|
c5d0edbaa7 | ||
|
|
7f0a167278 | ||
|
|
7a22989e89 | ||
|
|
760eb890bb | ||
|
|
71ae1c6118 | ||
|
|
5d8e43d089 | ||
|
|
d430636472 | ||
|
|
91860081af | ||
|
|
e78c9c137e | ||
|
|
1098bb8baf | ||
|
|
5deae31f6d | ||
|
|
cb30fd86b5 | ||
|
|
edf92dfffc | ||
|
|
6d5dca8961 | ||
|
|
860e0f6308 | ||
|
|
b533e6fe5f | ||
|
|
f33c87c002 | ||
|
|
766c1aa9d7 | ||
|
|
9be6e5deec | ||
|
|
f8a689d516 | ||
|
|
580414265d | ||
|
|
c59255a605 | ||
|
|
f60020da21 | ||
|
|
d4fd53763e | ||
|
|
f21c5f9ee6 | ||
|
|
db3ea45e82 | ||
|
|
80ac21afd6 | ||
|
|
22561ccfd9 | ||
|
|
9210c278d5 | ||
|
|
d9b68c6eef | ||
|
|
7c8ea0ecfc | ||
|
|
ff003bbda0 | ||
|
|
1e9d825dbb | ||
|
|
43df6fc427 | ||
|
|
5d2aaddbee | ||
|
|
09bdbbbed2 | ||
|
|
d3c40a0261 | ||
|
|
15c95a1090 | ||
|
|
5de5db5b99 | ||
|
|
8f97d9bbc3 | ||
|
|
d121f6e7ab | ||
|
|
2e916fcd5d | ||
|
|
e13e6c7897 | ||
|
|
d8f86e85ef | ||
|
|
d79e6cf694 | ||
|
|
44e62213e9 | ||
|
|
d7c15664dd | ||
|
|
de7a3b4910 | ||
|
|
3a35d4ca22 | ||
|
|
eacade9e34 | ||
|
|
04957107ef | ||
|
|
acfe601149 | ||
|
|
c8006ad7fd | ||
|
|
de89e64a55 | ||
|
|
c7890c638d | ||
|
|
a897f4866d | ||
|
|
ec8261055f | ||
|
|
15b0907df2 | ||
|
|
5e8272b0cb | ||
|
|
465f634988 | ||
|
|
ea98914bd0 | ||
|
|
6bd99609d8 | ||
|
|
f0825f2c2d | ||
|
|
32ca001701 | ||
|
|
0ad5ff27eb | ||
|
|
a37dbd6f1d | ||
|
|
e8296765cf | ||
|
|
c1ecf4fe65 | ||
|
|
7012feb672 | ||
|
|
faa1b2df6d | ||
|
|
b6add47f98 | ||
|
|
5d09d2290f | ||
|
|
a650db2903 | ||
|
|
787689a258 | ||
|
|
72360e5d33 | ||
|
|
6c42f245de | ||
|
|
7bd4f85a96 | ||
|
|
cdf66984dd | ||
|
|
3a7703fc67 | ||
|
|
0318b2579e | ||
|
|
d55f016568 | ||
|
|
7c28b5ae52 | ||
|
|
8065f11b60 | ||
|
|
2bbd4f89f8 | ||
|
|
0317e0dd88 | ||
|
|
b0cfd51d3c | ||
|
|
26fb098bbe | ||
|
|
7fcdfe1cfc | ||
|
|
6871bdd3b9 | ||
|
|
4b1657672e | ||
|
|
f9f1828642 | ||
|
|
2f1c7994bb | ||
|
|
34e653d0a3 | ||
|
|
e9b30443c5 | ||
|
|
e4c98a69b9 | ||
|
|
21f9866847 | ||
|
|
015ac04951 | ||
|
|
e17b314fac | ||
|
|
3064da3ed7 | ||
|
|
ce81f03b6d | ||
|
|
c5b8f1ee40 | ||
|
|
d1e9a761d2 | ||
|
|
c027c00caa | ||
|
|
cd9081b16d | ||
|
|
b483dff617 | ||
|
|
23ee1daac0 | ||
|
|
10b4d3b87d | ||
|
|
3877f15b68 | ||
|
|
b22a40598f | ||
|
|
0f17a2c45c | ||
|
|
b56cefc4b7 | ||
|
|
e5243be866 | ||
|
|
84ab08c033 | ||
|
|
d408db2fde | ||
|
|
60005def4c | ||
|
|
56088f22d6 | ||
|
|
4ae358f3e0 | ||
|
|
5cf7843e73 | ||
|
|
3e8ca38990 | ||
|
|
e6290bfebd | ||
|
|
3c20db56dd | ||
|
|
ce965f8637 | ||
|
|
9b541b40c1 | ||
|
|
66eb27cfaa | ||
|
|
d1de8c47d7 | ||
|
|
93824d5b50 | ||
|
|
67a463ecc2 | ||
|
|
36524f5199 | ||
|
|
54c402aec6 | ||
|
|
45936b6de8 | ||
|
|
14aa417122 | ||
|
|
75aabc349a | ||
|
|
26a7160226 | ||
|
|
e758b77ab7 | ||
|
|
f27381533c | ||
|
|
16d8e86b84 | ||
|
|
d31c4427aa | ||
|
|
9eae5935d9 | ||
|
|
4d3d0c7ef6 | ||
|
|
630f2bdf07 | ||
|
|
a3c59ecdd7 | ||
|
|
e3a53713bc | ||
|
|
2124302544 | ||
|
|
119f16c565 | ||
|
|
0926dc46fb | ||
|
|
eb75a325ca | ||
|
|
789da693a7 | ||
|
|
63509a5c1a | ||
|
|
5f19b624f4 | ||
|
|
b965d420cf | ||
|
|
0f08d28556 | ||
|
|
5d476c3e3d | ||
|
|
32061b6772 | ||
|
|
dd124e7f30 | ||
|
|
5f947afb97 | ||
|
|
1a59af5b2c | ||
|
|
14c9f8adf0 | ||
|
|
9a61fa7397 | ||
|
|
9744d93406 | ||
|
|
425cb8b52b | ||
|
|
50ef04666b | ||
|
|
01ec351df4 | ||
|
|
ff696caeff | ||
|
|
b52ba83ba0 | ||
|
|
6d336e3dd0 | ||
|
|
1ca002a744 | ||
|
|
b48785a276 | ||
|
|
4a282fd61d | ||
|
|
9a542b1a0f | ||
|
|
7f471d59a5 | ||
|
|
4ef27847cd | ||
|
|
f3610897c6 | ||
|
|
6adb7da9ea | ||
|
|
8e616ce892 | ||
|
|
2cea19bdcd | ||
|
|
b5756d1702 | ||
|
|
5647312a16 | ||
|
|
d3a29b763c | ||
|
|
dc56608d13 | ||
|
|
37a90cbf77 | ||
|
|
15d140d582 | ||
|
|
dc84ff0c6d | ||
|
|
01673d1fef | ||
|
|
cd9fd28c4e | ||
|
|
97b45219b9 | ||
|
|
5ce62285be | ||
|
|
c7ba6684c1 | ||
|
|
f36a264569 | ||
|
|
a6228b8015 | ||
|
|
af9e2cce6f | ||
|
|
441779447a | ||
|
|
3f46b18032 | ||
|
|
49559a6946 | ||
|
|
6c63f2fd37 | ||
|
|
4dbcb8152c | ||
|
|
cd01c24c3c | ||
|
|
b1a5e66af9 | ||
|
|
3654f1e56f | ||
|
|
2728d8ec78 | ||
|
|
75710b72c9 | ||
|
|
f4204d41ec | ||
|
|
5e0e0a7e7d | ||
|
|
f5314b2ae1 | ||
|
|
6547cb766c | ||
|
|
472a48acc6 | ||
|
|
285c237095 | ||
|
|
d3ad4067db | ||
|
|
899dfd83c8 | ||
|
|
9f24f0fe03 | ||
|
|
f4eacb6742 | ||
|
|
34e6da777d | ||
|
|
0f9608301d | ||
|
|
9d000d5584 | ||
|
|
f111becb34 | ||
|
|
de6996c0ae | ||
|
|
3a2f939f9b | ||
|
|
b3a834c3c6 | ||
|
|
e993a4cab8 | ||
|
|
5a7dee9add | ||
|
|
d2bbb02949 | ||
|
|
8633e76305 | ||
|
|
230eb6c9f5 | ||
|
|
25fd5606de | ||
|
|
174f225849 | ||
|
|
9546743347 | ||
|
|
837077ee3b | ||
|
|
bf71932371 | ||
|
|
86347cbf15 | ||
|
|
bb13f1e904 | ||
|
|
9c5b021b37 | ||
|
|
fd40c3e9ea | ||
|
|
e121b2bb25 | ||
|
|
edc6f3c010 | ||
|
|
0d37c60cd3 | ||
|
|
c61ba747f9 | ||
|
|
1c388a6891 | ||
|
|
64126754a5 | ||
|
|
a6df74e826 | ||
|
|
fa05f107ab | ||
|
|
86f16d9c8b | ||
|
|
d367136341 | ||
|
|
2b2d3cfd02 | ||
|
|
72bed99085 | ||
|
|
96374d61b7 | ||
|
|
a9cda8c9fa | ||
|
|
b18337f0a6 | ||
|
|
b64d05608b | ||
|
|
2291e6eb5c | ||
|
|
acd36c3460 | ||
|
|
72617a1af7 | ||
|
|
4cd0dc883f | ||
|
|
35353fb210 | ||
|
|
0b2e356f53 | ||
|
|
70ee51d366 | ||
|
|
d692b8b6cb | ||
|
|
a4991c626a | ||
|
|
59e211a4e1 | ||
|
|
0082c51fc0 | ||
|
|
290a379c38 | ||
|
|
69be743c68 | ||
|
|
79a3d917e5 | ||
|
|
554c192be1 | ||
|
|
b24d347a98 | ||
|
|
5570fadb4e | ||
|
|
91ee2cdbc2 | ||
|
|
cb635e8f7b | ||
|
|
d14789fad1 | ||
|
|
f36fa17a09 | ||
|
|
05cbd8a3c8 | ||
|
|
05fd490777 | ||
|
|
8b4388236d | ||
|
|
50fdb74003 | ||
|
|
f5f2a893de | ||
|
|
aea87dbb66 | ||
|
|
377df07c67 | ||
|
|
838da20835 | ||
|
|
f56df96b63 | ||
|
|
df920fe96c | ||
|
|
c4aad8640d | ||
|
|
bdc9e421cc | ||
|
|
bb74ca8b63 | ||
|
|
1908b39bb8 | ||
|
|
f4a3ceba2b | ||
|
|
b1b82927b2 | ||
|
|
16ceabe63d | ||
|
|
0210a3caa8 | ||
|
|
afede91818 | ||
|
|
7ed9710277 | ||
|
|
6494c35626 | ||
|
|
da33d78799 | ||
|
|
1549e8f4e4 | ||
|
|
b9796e8765 | ||
|
|
d2754f4c36 | ||
|
|
d513914dd3 | ||
|
|
3e2c72cb3d | ||
|
|
d5f11037fa | ||
|
|
836cfc5383 | ||
|
|
f61ccaff3d | ||
|
|
c3e0456017 | ||
|
|
5004fbbf60 | ||
|
|
ed40ce590b | ||
|
|
cd74bcf2ed | ||
|
|
e1ece85385 | ||
|
|
618716b544 | ||
|
|
8c513c816b | ||
|
|
8b2d727edd | ||
|
|
3ef47c0a38 | ||
|
|
94fed58ff9 | ||
|
|
0dfba478df | ||
|
|
aa430e1c2b | ||
|
|
ee169528c5 | ||
|
|
6aadc1bec7 | ||
|
|
da5a2160ce | ||
|
|
41f7bea34b | ||
|
|
b474eb0613 | ||
|
|
426b5900ee | ||
|
|
bc402d0792 | ||
|
|
55586bbaf6 | ||
|
|
6d739dde47 | ||
|
|
4f7e8e32a4 | ||
|
|
0bd15792e5 | ||
|
|
8ac5ca4e3d | ||
|
|
ae435eb74c | ||
|
|
adc00b2794 | ||
|
|
057b85f8a2 | ||
|
|
f3c11288f6 | ||
|
|
e7f95ae1af | ||
|
|
4b7f245740 | ||
|
|
c743085c4e | ||
|
|
c38fa41fab | ||
|
|
179d68ca37 | ||
|
|
649eacd801 | ||
|
|
38a71f527e | ||
|
|
8eee80286b | ||
|
|
aa70322e87 | ||
|
|
36cd741a3e | ||
|
|
2d3d68c922 | ||
|
|
c2a2f06b8a | ||
|
|
72fce85874 | ||
|
|
f18483825d | ||
|
|
833108d29a | ||
|
|
e59a11d539 | ||
|
|
5d95426cdd | ||
|
|
5dd1bc9a81 | ||
|
|
ed5111add8 | ||
|
|
7377d3ba9b | ||
|
|
42fe1d4f8b | ||
|
|
6aa49dcc12 | ||
|
|
c2fea83e72 | ||
|
|
782c7f1d0c | ||
|
|
220d2fd574 | ||
|
|
7b609448c0 | ||
|
|
00f5812aba | ||
|
|
3d5abeba60 | ||
|
|
fcfb6ac093 | ||
|
|
f9a7f056e9 | ||
|
|
327f64c093 | ||
|
|
157bec00a1 | ||
|
|
2bc9cb4441 | ||
|
|
6c03cd6178 | ||
|
|
291a5707df | ||
|
|
a65abbeb58 | ||
|
|
c26266dfb6 | ||
|
|
7aa3ce8a4d | ||
|
|
fa6a73ec5e | ||
|
|
fbecc5860d | ||
|
|
c228ab2da1 | ||
|
|
75ed995b00 | ||
|
|
94cc5465f1 | ||
|
|
bc9e0066e7 | ||
|
|
22d6e9de2b | ||
|
|
0cc427ec41 | ||
|
|
7ef078c94d | ||
|
|
ce41091f28 | ||
|
|
56c5d370b4 | ||
|
|
a856ebd5c2 | ||
|
|
4d6e8a735a | ||
|
|
ce9a0374d8 | ||
|
|
1583b836a3 | ||
|
|
e8203b81b2 | ||
|
|
a0bde11b29 | ||
|
|
b8b83a6f15 | ||
|
|
ff9f223042 | ||
|
|
1f00b9e8e7 | ||
|
|
81ae29d82f | ||
|
|
95e97e09fc | ||
|
|
178c6092b4 | ||
|
|
6e416a8fd4 | ||
|
|
ef4bdac5c1 | ||
|
|
780d547727 | ||
|
|
62a85019d3 | ||
|
|
baa0a96383 | ||
|
|
a95a44844e | ||
|
|
8092512af1 | ||
|
|
5bae3838c5 | ||
|
|
3794d2bbfc | ||
|
|
7964fb1a63 | ||
|
|
cc7c23716c | ||
|
|
10bb25065a | ||
|
|
6fc67a7cff | ||
|
|
343003a3c9 | ||
|
|
5ce2ec11a8 | ||
|
|
c2c4fbe3a8 | ||
|
|
c44df785ed | ||
|
|
890fe61af2 | ||
|
|
1aee0189d4 | ||
|
|
13d3cfda63 | ||
|
|
0b4b39f8ed | ||
|
|
a3dfbd29af | ||
|
|
572a52ffad | ||
|
|
43006e278e | ||
|
|
1ac67c71fd | ||
|
|
1e3a761ffe | ||
|
|
6f09622180 | ||
|
|
98c82d6be6 | ||
|
|
03526dfdd8 | ||
|
|
bca7f73f7f | ||
|
|
a9ea1992a0 | ||
|
|
35b7435644 | ||
|
|
17288f7fe0 | ||
|
|
55c8752509 | ||
|
|
e2c6f0b6b5 | ||
|
|
d293d4ba3c | ||
|
|
87116c0f00 | ||
|
|
dd6fff08f7 | ||
|
|
ded3891da3 | ||
|
|
d8eb4ac24e | ||
|
|
81382448eb | ||
|
|
996da6eebe | ||
|
|
770dec64c4 | ||
|
|
4d90955007 | ||
|
|
fa06bded14 | ||
|
|
4c210ea974 | ||
|
|
d87cbcf2f2 | ||
|
|
ef876da0ce | ||
|
|
9beeec9b83 | ||
|
|
602d36d067 | ||
|
|
e7e8fab7a0 | ||
|
|
b6cd98dfa1 | ||
|
|
484d70efb5 | ||
|
|
a0f38f3cfd | ||
|
|
cd16bd83a3 | ||
|
|
7f6d45ecfd | ||
|
|
44fe451dc3 | ||
|
|
e011b54d3f | ||
|
|
eb8eb5efd1 | ||
|
|
6b282809f8 | ||
|
|
68e852472c | ||
|
|
9b81fe3229 | ||
|
|
f0348248c9 | ||
|
|
450c87a0ac | ||
|
|
68741d019c | ||
|
|
c0c7d90845 | ||
|
|
06a86289cc | ||
|
|
05ba2c0428 | ||
|
|
1eb3bc177e | ||
|
|
862e6d211d | ||
|
|
08aef5bf53 | ||
|
|
b9ad057d1a | ||
|
|
5fc2af6707 | ||
|
|
367cf4dd06 | ||
|
|
5113b2c2dc | ||
|
|
9c4c5ba915 | ||
|
|
9c9dadc43f | ||
|
|
989b3995fa | ||
|
|
399d2eb216 | ||
|
|
26dbe61c5b | ||
|
|
5d768f27dc | ||
|
|
9df844a59e | ||
|
|
0686923d47 | ||
|
|
e268e5923d | ||
|
|
b7460cf30a | ||
|
|
bf0f98b0eb | ||
|
|
453d1e806d | ||
|
|
f4445d0c04 | ||
|
|
542ddebbc5 | ||
|
|
18f859a195 | ||
|
|
3e2fe6306b | ||
|
|
cc12de18e0 | ||
|
|
0c5c3410d6 | ||
|
|
0d9aebcdb2 | ||
|
|
c333cb58d9 | ||
|
|
7ca7ca18fb | ||
|
|
01d059912b | ||
|
|
484d3db930 | ||
|
|
dd4781e47b | ||
|
|
4d505580b4 | ||
|
|
15a6ac3dbc | ||
|
|
b2ddd87c79 | ||
|
|
3a46d9dac7 | ||
|
|
2aef37a182 | ||
|
|
3aa2dec020 | ||
|
|
596c897c80 | ||
|
|
907573a158 | ||
|
|
d592a328d5 | ||
|
|
f787166025 | ||
|
|
7e15661a42 | ||
|
|
5105f1d28b | ||
|
|
293787609b | ||
|
|
5ce8613053 | ||
|
|
489543313c | ||
|
|
2c365fba63 | ||
|
|
c8aa1de66f | ||
|
|
9d3d0b4c4d | ||
|
|
b077e0d39c | ||
|
|
8e658d13fb | ||
|
|
2806a25f33 | ||
|
|
0d232a8ac9 | ||
|
|
0b301bd971 | ||
|
|
eca819329b | ||
|
|
8014c57963 | ||
|
|
5880625b9c | ||
|
|
9cdabfbd59 | ||
|
|
5887caa431 | ||
|
|
4640858b18 | ||
|
|
dd546d4ec3 | ||
|
|
a2ab9e41d8 | ||
|
|
616082ae12 | ||
|
|
aeaafff9ed | ||
|
|
00579388b1 | ||
|
|
7e98754e9b | ||
|
|
45dcdb7a7d | ||
|
|
4427d5bccf | ||
|
|
67cc825f55 | ||
|
|
9738be3e58 | ||
|
|
a9eb20fc68 | ||
|
|
cbe9c99c20 | ||
|
|
c5580b4cba | ||
|
|
9db67520c0 | ||
|
|
ac4a4ca8ba | ||
|
|
d61b2a7b73 | ||
|
|
4fc4916ed0 | ||
|
|
d1d4a68a8f | ||
|
|
b5dadd160a | ||
|
|
a86bbf6cb4 | ||
|
|
959f6fe87c | ||
|
|
e096f242f4 | ||
|
|
532224fa8b | ||
|
|
85c5641c40 | ||
|
|
99ec668aa0 | ||
|
|
947e034b14 | ||
|
|
b6e3ec8852 | ||
|
|
4f8ff4b704 | ||
|
|
1f64497e25 | ||
|
|
1cbb0f817d | ||
|
|
8b9f3efa38 | ||
|
|
8dfc0a4929 | ||
|
|
59fec2f4d0 | ||
|
|
8886fd5b64 | ||
|
|
ba5641b311 | ||
|
|
b0943a2d0b | ||
|
|
697dd13875 | ||
|
|
d434c743f3 | ||
|
|
9dacc33e72 | ||
|
|
a8b5bfd809 | ||
|
|
111d7ca501 | ||
|
|
dc9d5661c3 | ||
|
|
1828e3b98f | ||
|
|
6e425e9601 | ||
|
|
5573293582 | ||
|
|
f850d397c9 | ||
|
|
40447640c6 | ||
|
|
5b9e4a4862 | ||
|
|
5550d23354 | ||
|
|
193d2dc598 | ||
|
|
b3181c6c52 | ||
|
|
6f2f8c584e | ||
|
|
c8484d99d6 | ||
|
|
4472c801b9 | ||
|
|
f378a41f7f | ||
|
|
01c6326ed0 | ||
|
|
929b02dc79 | ||
|
|
0235329bff | ||
|
|
15c24d903f | ||
|
|
5e04588837 | ||
|
|
581af2c433 | ||
|
|
95d7da6972 | ||
|
|
6632db0758 | ||
|
|
587e524302 | ||
|
|
3cc91d347f | ||
|
|
965b5b31cc | ||
|
|
c491d51509 | ||
|
|
198c78cac9 | ||
|
|
872f0342bb | ||
|
|
03ea48c6b4 | ||
|
|
b791a31aff | ||
|
|
df8cc32353 | ||
|
|
6988468729 | ||
|
|
7b4b655ba1 | ||
|
|
1f89df4993 | ||
|
|
6ad0aedcdf | ||
|
|
256eca69ab | ||
|
|
51efa961d4 | ||
|
|
2c41b6e529 | ||
|
|
ebf1b8a2e1 | ||
|
|
8974ab6e46 | ||
|
|
b9063c9484 | ||
|
|
3f00fd2993 | ||
|
|
51317b4753 | ||
|
|
740f7eabb1 | ||
|
|
5807353e24 | ||
|
|
7cf1621747 | ||
|
|
91349fa6cd | ||
|
|
44ebac591c | ||
|
|
3d93ed271b | ||
|
|
9252701cce | ||
|
|
f2c872f95c | ||
|
|
a84ede4467 | ||
|
|
ec2ee96ef5 | ||
|
|
3a67f1bd27 | ||
|
|
b561599575 | ||
|
|
86847f1f23 | ||
|
|
06e6fc8568 | ||
|
|
1f93be6bd9 | ||
|
|
a2e3a61ea0 | ||
|
|
ef07246879 | ||
|
|
06375250e6 | ||
|
|
eb1964feb2 | ||
|
|
30f85ee495 | ||
|
|
9cb261cbf2 | ||
|
|
e68300ef99 | ||
|
|
aa728809d3 | ||
|
|
40346a62e9 | ||
|
|
259e942ecd | ||
|
|
e96927a9e4 | ||
|
|
042f109cc9 | ||
|
|
fb47a27bc1 | ||
|
|
d930c7cdc8 | ||
|
|
01833baa28 | ||
|
|
35bb239a8f | ||
|
|
385c8a36a1 | ||
|
|
179f403ee3 | ||
|
|
5e63f5f01d | ||
|
|
6f6c82a0b5 | ||
|
|
b6d33931a3 | ||
|
|
1b84f2da1c | ||
|
|
914a2ac443 | ||
|
|
8c6e7f3d40 | ||
|
|
dd3c63bef0 | ||
|
|
3f72cc15df | ||
|
|
73bee49b0b | ||
|
|
1241b66dfc | ||
|
|
bab0a9cb92 | ||
|
|
fa1422127b | ||
|
|
81a8ae1e45 | ||
|
|
5c406ef00a | ||
|
|
6895cbcc58 | ||
|
|
7363e780fe | ||
|
|
bde94a6616 | ||
|
|
6f5ea725dc | ||
|
|
34d0855ba2 | ||
|
|
4a12032cd3 | ||
|
|
13f920b12a | ||
|
|
0099823501 | ||
|
|
8ccd7b0cc6 | ||
|
|
967ef78229 | ||
|
|
b1168c2b6e | ||
|
|
2f55bcab1f | ||
|
|
30bbb93680 | ||
|
|
c8bf1cedcc | ||
|
|
76b54ffffc | ||
|
|
7b282924e1 | ||
|
|
972f3c7831 | ||
|
|
16dc0381a2 | ||
|
|
e53337ded4 | ||
|
|
d557b8e35b | ||
|
|
194f52fb88 | ||
|
|
e108438427 | ||
|
|
e85fc25690 | ||
|
|
2936d37067 | ||
|
|
889911d69a | ||
|
|
61a68460bf | ||
|
|
e2a9aecb22 | ||
|
|
ad0f9b5e5a | ||
|
|
3682cbe45f | ||
|
|
b8384f0b7e | ||
|
|
3f7f8260cb | ||
|
|
84fa72a8bb | ||
|
|
f5829ee837 | ||
|
|
73810199d6 | ||
|
|
cff84682d8 | ||
|
|
956a312967 | ||
|
|
c077d8e4d0 | ||
|
|
3dd369ad4e | ||
|
|
fc76b50234 | ||
|
|
28fdf252d0 | ||
|
|
2e92205f61 | ||
|
|
44624274f5 | ||
|
|
39276e0c35 | ||
|
|
875d461120 | ||
|
|
2084b59cce | ||
|
|
820f12a16b | ||
|
|
d1d04d395e | ||
|
|
501388d29f | ||
|
|
60df338ac5 | ||
|
|
e5e95d48cc | ||
|
|
0af34f4324 | ||
|
|
27b16455b7 | ||
|
|
ae7438f249 | ||
|
|
1c14814246 | ||
|
|
9d4628e3e6 | ||
|
|
1308559993 | ||
|
|
155d42bb0e | ||
|
|
82480436e2 | ||
|
|
c9d5a3b482 | ||
|
|
18ffc5497b | ||
|
|
72ac5dd093 | ||
|
|
9f6c75a2f1 | ||
|
|
617dc5d6e7 | ||
|
|
c6b34b22dd | ||
|
|
0d62d88387 | ||
|
|
94b44a0391 | ||
|
|
ddfc8a6e31 | ||
|
|
022a67836d | ||
|
|
b50df3588a | ||
|
|
f54f6e3b21 | ||
|
|
a05ebb3b7c | ||
|
|
691d357606 | ||
|
|
cb909b9b56 | ||
|
|
9361303f17 | ||
|
|
d375836781 | ||
|
|
b84cca503f | ||
|
|
1e591ebd97 | ||
|
|
7b00b3ec54 | ||
|
|
80f92e4640 | ||
|
|
fbafa7f23a | ||
|
|
55b928694c | ||
|
|
4365f158d0 | ||
|
|
e79244a08a | ||
|
|
8456b8381b | ||
|
|
4ce8403888 | ||
|
|
42ed41a4e6 | ||
|
|
af44f4736d | ||
|
|
58fda108a4 | ||
|
|
fee142b820 | ||
|
|
efdcf91d96 | ||
|
|
ce8ca8f05e | ||
|
|
45e21155d5 | ||
|
|
e746ef0451 | ||
|
|
09df1248c0 | ||
|
|
22000cc7a4 | ||
|
|
71e5afc029 | ||
|
|
0c83bebe92 | ||
|
|
6e7cb1b223 | ||
|
|
4e72c8ecc1 | ||
|
|
b3381b6e40 | ||
|
|
911d6ecb14 | ||
|
|
a83569d82a | ||
|
|
34b5b96400 | ||
|
|
137fffa857 | ||
|
|
c9f7aa1ee0 | ||
|
|
7a0f07c424 | ||
|
|
268cc08ea1 | ||
|
|
7779a2aaa9 | ||
|
|
acbea85829 | ||
|
|
296a8bc474 | ||
|
|
d5661a89e6 | ||
|
|
37013aa25b | ||
|
|
e236b6aafe | ||
|
|
a0b5cdfbb2 | ||
|
|
d27c59c705 | ||
|
|
7924f92fe1 | ||
|
|
797c2cca4a | ||
|
|
5b589b47f1 | ||
|
|
23a52305dc | ||
|
|
f92e13bc44 | ||
|
|
cbfa3fcdf2 | ||
|
|
360eb8e190 | ||
|
|
650c82132d | ||
|
|
27ed7a74d6 | ||
|
|
283dbe48b2 | ||
|
|
38ec6429a3 | ||
|
|
b683661a45 | ||
|
|
1fdc6e5dac | ||
|
|
4024060b81 | ||
|
|
a42a87ed1c | ||
|
|
b08fe2cf0c | ||
|
|
0ecb7eb48a | ||
|
|
68fc82097c | ||
|
|
229ef8884f | ||
|
|
1384226447 | ||
|
|
c617a6427e | ||
|
|
ab3f0336e2 | ||
|
|
9ad372f3f5 | ||
|
|
ffdce0671c | ||
|
|
4b7514fc97 | ||
|
|
01977d7d46 | ||
|
|
00181ad03e | ||
|
|
5f93b01ef3 | ||
|
|
b368483aaa | ||
|
|
f17f0a6e22 | ||
|
|
d9df920c23 | ||
|
|
348f59ac67 | ||
|
|
25a195d1f4 | ||
|
|
b8220bb81f | ||
|
|
686825b584 | ||
|
|
81d62df2c7 | ||
|
|
fab93abdca | ||
|
|
9bb3532743 | ||
|
|
f384944a42 | ||
|
|
7d72743d1e | ||
|
|
a13ff362a2 | ||
|
|
58c877976d | ||
|
|
c3521b4d25 | ||
|
|
2db3c63b7b | ||
|
|
91176fb7fb | ||
|
|
6a7b6f2094 | ||
|
|
696485fe2b | ||
|
|
eee420027e | ||
|
|
5506488954 | ||
|
|
0e5066c76c | ||
|
|
ff4027a7ae | ||
|
|
8d354aef55 | ||
|
|
87f540b1e5 | ||
|
|
ec8bcc22d3 | ||
|
|
7b4ec54afa | ||
|
|
960d676043 | ||
|
|
d999107d49 | ||
|
|
f3bf34ed0c | ||
|
|
860ea61420 | ||
|
|
1f09fbc1ef | ||
|
|
b3ca79146b | ||
|
|
13c3c32237 | ||
|
|
d463858fda | ||
|
|
f133dd1733 | ||
|
|
f8ac3a6eaf | ||
|
|
3bbd2e7dc6 | ||
|
|
ab42d424a9 | ||
|
|
074a9c1bba | ||
|
|
01c2a31ac9 | ||
|
|
cef38a26ca | ||
|
|
b1d020b5e8 | ||
|
|
6d04854a98 | ||
|
|
0e1a930e10 | ||
|
|
078fa9d220 | ||
|
|
d8becfc9da | ||
|
|
e691ddca38 | ||
|
|
0581ddd0ba | ||
|
|
013d83b62a | ||
|
|
9e29f2db0b | ||
|
|
1364a38504 | ||
|
|
6c8c4ab3dc | ||
|
|
319e93ba4d | ||
|
|
ad740bde86 | ||
|
|
cf9e784893 | ||
|
|
ae4842c262 | ||
|
|
75a98050a0 | ||
|
|
2209f030ef | ||
|
|
4a0a4913f4 | ||
|
|
744d991ae8 | ||
|
|
9c10278fe8 | ||
|
|
c1f5884683 | ||
|
|
e546a9188e | ||
|
|
5458e0ea6c | ||
|
|
595d67761e | ||
|
|
69d85d0045 | ||
|
|
1db0f6d663 | ||
|
|
1275341149 | ||
|
|
9055fc090c | ||
|
|
f7cd6bb2d7 | ||
|
|
a753dd9200 | ||
|
|
715a8a8518 | ||
|
|
87bb315773 | ||
|
|
2665d4a49b | ||
|
|
3e40e40a3a | ||
|
|
7e4e73ad2d | ||
|
|
1fe3cadd2e | ||
|
|
9fae879ba4 | ||
|
|
2410564f46 | ||
|
|
b396d50d59 | ||
|
|
a30bae9151 | ||
|
|
d13cddf03c | ||
|
|
2870bfbef7 | ||
|
|
22b7efc098 | ||
|
|
2608d4a66e | ||
|
|
e17cd31f63 | ||
|
|
7d3acd75ae | ||
|
|
552c674483 | ||
|
|
cda6860bcf | ||
|
|
4007c47585 | ||
|
|
5e4a2f3bc1 | ||
|
|
6b16ac1fcd | ||
|
|
b477a9e3c0 | ||
|
|
f2a5ff26d5 | ||
|
|
5667d9a402 | ||
|
|
1b90abe640 | ||
|
|
170deadbda | ||
|
|
4b429af8f2 | ||
|
|
b9af995651 | ||
|
|
30731cfd54 | ||
|
|
80f6ce9e3d | ||
|
|
26bedce268 | ||
|
|
132b1756f6 | ||
|
|
8a730414c9 | ||
|
|
ae9493d885 | ||
|
|
b12b9c0fdd | ||
|
|
f729554858 | ||
|
|
481405f68c | ||
|
|
6c4479d0ea | ||
|
|
c1fe23d824 | ||
|
|
8b6ffd8428 | ||
|
|
ff958c3bd9 | ||
|
|
17813b487f | ||
|
|
5f2fa8c669 | ||
|
|
0b01388f49 | ||
|
|
307bb051e6 | ||
|
|
6c002687e0 | ||
|
|
4d4bf64aad | ||
|
|
2375ab860a | ||
|
|
e7e6405ad3 | ||
|
|
1e87666487 | ||
|
|
5cee8ed086 | ||
|
|
71c7944eab | ||
|
|
9e024d1d4d | ||
|
|
19a6a20b23 | ||
|
|
34eac964aa | ||
|
|
1b7f64ccd3 | ||
|
|
678538463f | ||
|
|
eb6cd70f9a | ||
|
|
8723b6987d | ||
|
|
164fec343f | ||
|
|
7ce79938f7 | ||
|
|
65c3a6330a | ||
|
|
a6c4e22e15 | ||
|
|
81b2b1c31a | ||
|
|
93de40b41f | ||
|
|
16f0b7890c | ||
|
|
e4f3738f2a | ||
|
|
32f4c15bf0 | ||
|
|
28a982e07f | ||
|
|
3b69225bc8 | ||
|
|
a57a927481 | ||
|
|
0b75d97360 | ||
|
|
64766860df | ||
|
|
45a3224539 | ||
|
|
a9349d1ef4 | ||
|
|
e988d38b14 | ||
|
|
872c979b0b | ||
|
|
aa58b9b7ad | ||
|
|
229c87df16 | ||
|
|
b2856b44b0 | ||
|
|
ecb94e119c | ||
|
|
a8d2a0e589 | ||
|
|
b55a0226b5 | ||
|
|
a5ae552512 | ||
|
|
b9d9602581 | ||
|
|
16731a90b0 | ||
|
|
3c0c36d11c | ||
|
|
2f2018f9ee | ||
|
|
d76524f03f | ||
|
|
466aa76642 | ||
|
|
d2eb007d57 | ||
|
|
4f50fdc94e | ||
|
|
5e9570c946 | ||
|
|
f9973bc2c5 | ||
|
|
e3d55b3c5b | ||
|
|
13e8189b80 | ||
|
|
88a29dc7e2 | ||
|
|
606d28dc26 | ||
|
|
c9f2d88cf5 | ||
|
|
193083bbd7 | ||
|
|
83971debef | ||
|
|
4887de8cbe | ||
|
|
054162a192 | ||
|
|
2fc1b8479e | ||
|
|
9a7ee39837 | ||
|
|
484279a7e9 | ||
|
|
324816cc6f | ||
|
|
e89c217da8 | ||
|
|
6cbdfe76c8 | ||
|
|
4fb8ab03fe | ||
|
|
00c9ab01fb | ||
|
|
8c06b19a7b | ||
|
|
996ca9752e | ||
|
|
bc939f27b9 | ||
|
|
491f7091dd | ||
|
|
6a2d4b878b | ||
|
|
eb218f28cb | ||
|
|
962e57eb51 | ||
|
|
2a8badec9f | ||
|
|
6a2fa8e648 | ||
|
|
d901ab323d | ||
|
|
b9f6e43159 | ||
|
|
4da45516cb | ||
|
|
1e1dd9ddf6 | ||
|
|
49743635f5 | ||
|
|
efb32b7c54 | ||
|
|
d017200c4d | ||
|
|
d1f039b5f3 | ||
|
|
0e763dd300 | ||
|
|
6d622a7f5f | ||
|
|
d5e1689d8b | ||
|
|
a90639130a | ||
|
|
a071fd14ac | ||
|
|
ca37c4b114 | ||
|
|
67036667b5 | ||
|
|
1126d3f7dc | ||
|
|
cbc1485b57 | ||
|
|
8264e9ee41 | ||
|
|
48c67f6d94 | ||
|
|
d6715225c7 | ||
|
|
31f16dc42e | ||
|
|
6926626595 | ||
|
|
fbf2ccc226 | ||
|
|
2456729002 | ||
|
|
3392d3136d | ||
|
|
1b1ccc398f | ||
|
|
389a7ff3a6 | ||
|
|
34f4300f4e | ||
|
|
c84358f309 | ||
|
|
6779336bb7 | ||
|
|
733353fbc9 | ||
|
|
c2b8f7ecae | ||
|
|
d2f3742805 | ||
|
|
21571e6eba | ||
|
|
4742521930 | ||
|
|
6ce74ddd6b | ||
|
|
d04f09fa18 | ||
|
|
cae74be2a4 | ||
|
|
98f305f32c | ||
|
|
8267224756 | ||
|
|
b4c9477732 | ||
|
|
dfa9e8d3bd | ||
|
|
0ad660b1d3 | ||
|
|
819e11733a | ||
|
|
7a7d15c5ef | ||
|
|
cd022b5f93 | ||
|
|
4356fd3529 | ||
|
|
8a6eddb7c2 | ||
|
|
d01f553dc6 | ||
|
|
33ebbdb15b | ||
|
|
c605f73d80 | ||
|
|
1ab2f775fc | ||
|
|
00f19fcd72 | ||
|
|
80cd896896 | ||
|
|
242f62861e | ||
|
|
f29133cf58 | ||
|
|
ae75d8b8a5 | ||
|
|
196dba481d | ||
|
|
9b1abd02ff | ||
|
|
ae267aeca5 | ||
|
|
b63e0ee556 | ||
|
|
c8fa5e1e4e | ||
|
|
fe204f972f | ||
|
|
70e82e2a92 | ||
|
|
b3a320cc2e | ||
|
|
8e78915cd2 | ||
|
|
d6e86ad7bf | ||
|
|
5d6638d395 | ||
|
|
ee12c32b11 | ||
|
|
ea06ea32f9 | ||
|
|
125ab80729 | ||
|
|
b733133ef1 | ||
|
|
b2c2289156 | ||
|
|
d626c38ae7 | ||
|
|
5c2281bb07 | ||
|
|
b93140f019 | ||
|
|
e7215fef59 | ||
|
|
d11a793774 | ||
|
|
b5dc52b00e | ||
|
|
b3b19210b6 | ||
|
|
200a811dca | ||
|
|
2e8a5ecd87 | ||
|
|
7889dddee8 | ||
|
|
20b10ead1e | ||
|
|
086da0d4a1 | ||
|
|
2878eb50f1 | ||
|
|
16a32d0cc4 | ||
|
|
c2a91c613d | ||
|
|
046685c626 | ||
|
|
555e9e3ded | ||
|
|
63cefd9e05 | ||
|
|
919606110c | ||
|
|
10e676e439 | ||
|
|
cb26af8477 | ||
|
|
260310e2fb | ||
|
|
270c52b2c7 | ||
|
|
c781f6f450 | ||
|
|
9c7e3f864b | ||
|
|
1052036719 | ||
|
|
ff21ff5618 | ||
|
|
0803186472 | ||
|
|
34e06c2b4f | ||
|
|
9f831d7536 | ||
|
|
3decb8d4af | ||
|
|
217084d3c3 | ||
|
|
914425e526 | ||
|
|
7315b69b02 | ||
|
|
04643255e7 | ||
|
|
0ffe93a093 | ||
|
|
8b7bcc32de | ||
|
|
b82bf9beba | ||
|
|
fc09eb2138 | ||
|
|
d674f49855 | ||
|
|
9732c0b845 | ||
|
|
f97c9e3e7d | ||
|
|
622d11cd17 | ||
|
|
4a6b8c4146 | ||
|
|
8a58583122 | ||
|
|
9e16287b21 | ||
|
|
632281fcc0 | ||
|
|
6c57be89d2 | ||
|
|
8d5ee46a3c | ||
|
|
dc5844df33 | ||
|
|
3fd3253e5a | ||
|
|
b7a8c28b1c | ||
|
|
0d528d2f17 | ||
|
|
9c6b57f3c7 | ||
|
|
e0940cb3e9 | ||
|
|
42c1005e76 | ||
|
|
c015a56f24 | ||
|
|
1f3ddf2bc9 | ||
|
|
24c80fed57 | ||
|
|
ed6f2eb39c | ||
|
|
80c4891926 | ||
|
|
8fcbe52770 | ||
|
|
19b466ccf0 | ||
|
|
ea759fdc90 | ||
|
|
5c4e8ca25f | ||
|
|
ccc52c20c9 | ||
|
|
e2d86888b5 | ||
|
|
ed3175f7a0 | ||
|
|
c04d50f885 | ||
|
|
1a27e545a6 | ||
|
|
b1b9c02368 | ||
|
|
a7578be62f | ||
|
|
92db9ad8c5 | ||
|
|
25900bb917 | ||
|
|
eeebaa3f74 | ||
|
|
5eeea0beba | ||
|
|
63a796e14a | ||
|
|
d6fc1826e3 | ||
|
|
6ab141e0e1 | ||
|
|
0c27260cda | ||
|
|
cd1c06de26 | ||
|
|
cf90949a34 | ||
|
|
28439b3650 | ||
|
|
ab986945be | ||
|
|
a8d10da9dd | ||
|
|
56d40ca24f | ||
|
|
74cf5b424a | ||
|
|
f8cd89fdee | ||
|
|
54b8fab63a | ||
|
|
29f9b4e9a7 | ||
|
|
0eef794824 | ||
|
|
950bb297f9 | ||
|
|
1dc6882b90 | ||
|
|
d6c6e0785e | ||
|
|
35bc6da4bb | ||
|
|
5cbb201469 | ||
|
|
b5a3e0e29c | ||
|
|
897a78ce9a | ||
|
|
522a8b63d1 | ||
|
|
f9144e29c4 | ||
|
|
b61670a503 | ||
|
|
9c7db003f5 | ||
|
|
f7e546e78c | ||
|
|
1b442e2c47 | ||
|
|
4c7dca1a0b | ||
|
|
9ab2092fd7 | ||
|
|
c219600a17 | ||
|
|
4faaa5e6ee | ||
|
|
f50534eeab | ||
|
|
32e0d8a5c9 | ||
|
|
94ac262624 | ||
|
|
8f71f55202 | ||
|
|
2cbf14fdfd | ||
|
|
e785282ecf | ||
|
|
583edf1e32 | ||
|
|
7f1d86c2bc | ||
|
|
b09a8ef2a9 | ||
|
|
94ceb3e0a7 | ||
|
|
961ad3dbc7 | ||
|
|
f4f4a3da12 | ||
|
|
7c7c2e23cc | ||
|
|
3e9a8b8b3a | ||
|
|
e36e7089eb | ||
|
|
926c22b797 | ||
|
|
78eb3b464f | ||
|
|
d4d86a5966 | ||
|
|
cfa00b938f | ||
|
|
b54c5769ff | ||
|
|
e9cd160ae7 | ||
|
|
73fe8b8a87 | ||
|
|
ca70cfd8b8 | ||
|
|
9b49c69693 | ||
|
|
b6b6ef57da | ||
|
|
ef5463f9fe | ||
|
|
f2022f431b | ||
|
|
ac3ead14d2 | ||
|
|
048f91be5c | ||
|
|
1d32826aa5 | ||
|
|
4a0d0a412e | ||
|
|
ea2d23c718 | ||
|
|
307d51d903 | ||
|
|
4970db4ee2 | ||
|
|
4cec1cd79c | ||
|
|
612c8c28df | ||
|
|
57a067213c | ||
|
|
385e5b24f9 | ||
|
|
a7c6b384e4 | ||
|
|
d72075fbd6 | ||
|
|
d6c92423d7 | ||
|
|
7a19b7a9b4 | ||
|
|
b2c59ea0e4 | ||
|
|
b0f602ba1b | ||
|
|
70151fed7c | ||
|
|
4e0e04af96 | ||
|
|
9648adacc5 | ||
|
|
e013019b11 | ||
|
|
793e3812d9 | ||
|
|
b3edd30bf7 | ||
|
|
0112d0ce41 | ||
|
|
ad79ed6d93 | ||
|
|
417454a4c5 | ||
|
|
28e55e4ec8 | ||
|
|
e5b8039817 | ||
|
|
33440082e6 | ||
|
|
8c2f658c93 | ||
|
|
5b03339b70 | ||
|
|
931e30a066 | ||
|
|
fa8485c040 | ||
|
|
49d65c8ca5 | ||
|
|
f127846914 | ||
|
|
3eaeb55f36 | ||
|
|
c259360dff | ||
|
|
285927574e | ||
|
|
50a9bb66ee | ||
|
|
f636c494cd | ||
|
|
55ec1da34f | ||
|
|
bf7c448fb6 | ||
|
|
6d884ccbce | ||
|
|
81c7c8f9dc | ||
|
|
3488ac6292 | ||
|
|
347cd4aadd | ||
|
|
b297ab18ee | ||
|
|
4600a38554 | ||
|
|
0030861915 | ||
|
|
ac7127f63f | ||
|
|
c4e29cca48 | ||
|
|
669e5fe640 | ||
|
|
9e799394d1 | ||
|
|
6e877a2f7c | ||
|
|
95b335937c | ||
|
|
c569a3a4ff | ||
|
|
b62fa12339 | ||
|
|
b6e8c7b14e | ||
|
|
4ecffb196d | ||
|
|
c0cda458e5 | ||
|
|
439761f71e | ||
|
|
da0e624bd0 | ||
|
|
904b1217f4 | ||
|
|
d19b705986 | ||
|
|
e0e6f77d7d | ||
|
|
88938ad5dd | ||
|
|
80b20c15c5 | ||
|
|
baf998c122 | ||
|
|
7235893726 | ||
|
|
da0adbf498 | ||
|
|
233edf9502 | ||
|
|
e3cc0c91cb | ||
|
|
15a0266a15 | ||
|
|
18279f7c37 | ||
|
|
a3c740c228 | ||
|
|
4a999bb932 | ||
|
|
afd2772689 | ||
|
|
937ed0702f | ||
|
|
9e3e2f05b8 | ||
|
|
14f227d9a3 | ||
|
|
87f579c6e2 | ||
|
|
20603526b8 | ||
|
|
a91937a7f8 | ||
|
|
b2e587ce47 | ||
|
|
a378afde0b | ||
|
|
f9869d4b5b | ||
|
|
52d18ab03a | ||
|
|
daad39949f | ||
|
|
057a1a4f5d | ||
|
|
973c2f9cf3 | ||
|
|
05bf5c114b | ||
|
|
66814d687e | ||
|
|
50daf0b5ca | ||
|
|
e5e121a036 | ||
|
|
916b94bd01 | ||
|
|
d35350cf14 | ||
|
|
c043f73a98 | ||
|
|
13d9fdb410 | ||
|
|
27d9445069 | ||
|
|
17a97cd536 | ||
|
|
09b7d41fe3 | ||
|
|
caa921976c | ||
|
|
ed6d6c807b | ||
|
|
a66ccf7f48 | ||
|
|
7abea28715 | ||
|
|
80481892a5 | ||
|
|
8e91932cd1 | ||
|
|
e0435c3e31 | ||
|
|
7e6a95c764 | ||
|
|
40e53b587c | ||
|
|
b48d0861b7 | ||
|
|
a7c90b8dfe | ||
|
|
bdf5cc9063 | ||
|
|
6dff86bc1c | ||
|
|
db026b7f87 | ||
|
|
426236b53e | ||
|
|
8097ffab25 | ||
|
|
1e44033480 | ||
|
|
257fc86ca9 | ||
|
|
c1c862d2c3 | ||
|
|
741d8d60da | ||
|
|
09a8ccaa18 | ||
|
|
81e57f3d8d | ||
|
|
079dca6b07 | ||
|
|
cdec42e361 | ||
|
|
2834aad6f7 | ||
|
|
a88beb02d1 | ||
|
|
e340573415 | ||
|
|
44e09c2fea | ||
|
|
5be8b62cd4 | ||
|
|
fa7e866730 | ||
|
|
92a71d27dc | ||
|
|
8e288051e3 | ||
|
|
1ed2c423d6 | ||
|
|
bf81dcefe8 | ||
|
|
bf247fba0f | ||
|
|
2ec35f9dad | ||
|
|
d63f9ac76b | ||
|
|
acb04e1d38 | ||
|
|
8fb9cc2ee8 | ||
|
|
24ee292ea0 | ||
|
|
9a07c98405 | ||
|
|
ac5f49ad73 | ||
|
|
a6fd63ab29 | ||
|
|
f571b6342d | ||
|
|
61c112386e | ||
|
|
c01c0c90b6 | ||
|
|
20d5270da0 | ||
|
|
6c026234e3 | ||
|
|
8446869cb1 | ||
|
|
b849426125 | ||
|
|
3e27715843 | ||
|
|
4120c64c5e | ||
|
|
783f533a15 | ||
|
|
bb75f93500 | ||
|
|
8e6d69dc9f | ||
|
|
6d0933d27c | ||
|
|
38ed01f61f | ||
|
|
31869bfbd1 | ||
|
|
9fc3b38da8 | ||
|
|
266bfeb9e2 | ||
|
|
b100915eba | ||
|
|
2ba6f9a5e4 | ||
|
|
719c1687e2 | ||
|
|
756129fff2 | ||
|
|
6e1856cb55 | ||
|
|
a8b7522f9d | ||
|
|
510f0c3242 | ||
|
|
2a9814abeb | ||
|
|
b856b9a91a | ||
|
|
dd7e3bf72d | ||
|
|
1bc373f10e | ||
|
|
03dddc4db3 | ||
|
|
7a04d8d1fb | ||
|
|
31b65dfbe9 | ||
|
|
660d2ee686 | ||
|
|
2a35173b8c | ||
|
|
01052c9c15 | ||
|
|
0e5d3fd7b8 | ||
|
|
1f9d27d880 | ||
|
|
853b496a4b | ||
|
|
5233702681 | ||
|
|
7c1830c04b | ||
|
|
f6bb871b38 | ||
|
|
07148d2dfd | ||
|
|
d637efee3d | ||
|
|
dcaf10a16e | ||
|
|
21b67d993f | ||
|
|
90a6c53ad5 | ||
|
|
fa4161eaae | ||
|
|
4e1952057c | ||
|
|
0ba336647c | ||
|
|
ca46e06966 | ||
|
|
f063e87f06 | ||
|
|
27780819e1 | ||
|
|
148ccec58d | ||
|
|
bc9c08a614 | ||
|
|
312371f84c | ||
|
|
27e30373c8 | ||
|
|
508ee2760d | ||
|
|
5b25588c1f | ||
|
|
88a728f444 | ||
|
|
98295eeb06 | ||
|
|
ab9f36dbf4 | ||
|
|
6d91d1a2e9 | ||
|
|
70c80d6530 | ||
|
|
d9eac89a9f | ||
|
|
a2c6ea7d15 | ||
|
|
592734dbf7 | ||
|
|
f2598e0265 | ||
|
|
6b093f11b6 | ||
|
|
139826677a | ||
|
|
ccfb28ad10 | ||
|
|
34a4946b3f | ||
|
|
d55aced0b4 | ||
|
|
6afd3a961b | ||
|
|
7b81f21093 | ||
|
|
40bdbed840 | ||
|
|
9b97ebeec5 | ||
|
|
410549dc89 | ||
|
|
c806aa05b7 | ||
|
|
b871e9318f | ||
|
|
fe6338449e | ||
|
|
2fe7f8c61b | ||
|
|
d1f45e87b0 | ||
|
|
c9ed30bc59 | ||
|
|
c92347ce51 | ||
|
|
2e132ee835 | ||
|
|
b215169f25 | ||
|
|
ca5bd00d0e | ||
|
|
1297857f66 | ||
|
|
71fd381c3c | ||
|
|
4c3081d654 | ||
|
|
89b9eb0ebe | ||
|
|
b8f8151340 | ||
|
|
6cb1ffdbf5 | ||
|
|
4b9aaa7341 | ||
|
|
d3a164251c | ||
|
|
038dd56006 | ||
|
|
eac07fd8e3 | ||
|
|
5c646d4b42 | ||
|
|
928debaff8 | ||
|
|
34ebd54680 | ||
|
|
96f081df27 | ||
|
|
ac19851e52 | ||
|
|
0b014edecd | ||
|
|
e273cf9cf2 | ||
|
|
1af3b014a9 | ||
|
|
5935b75fe5 | ||
|
|
55d8d77430 | ||
|
|
d941f80483 | ||
|
|
68b925f290 | ||
|
|
dfe137200c | ||
|
|
37ff918ea9 | ||
|
|
3297fe658e | ||
|
|
8f6cfda2f3 | ||
|
|
d0cbf620d7 | ||
|
|
71f9126b77 | ||
|
|
1b30bf799c | ||
|
|
2b2e7f7603 | ||
|
|
214ed3b6c4 | ||
|
|
2c1b7e86e5 | ||
|
|
f8375d2199 | ||
|
|
758e13e821 | ||
|
|
dba57efec7 | ||
|
|
46cc60c431 | ||
|
|
1e6a186e2b | ||
|
|
4073cae8e5 | ||
|
|
84d8d619e5 | ||
|
|
3678adfd6c | ||
|
|
49fdaf2f5d | ||
|
|
bd3b69abf9 | ||
|
|
65e0967b94 | ||
|
|
9ed5d8a1a9 | ||
|
|
f382ee98db | ||
|
|
ba957d1580 | ||
|
|
679794d3c3 | ||
|
|
f04a3dced9 | ||
|
|
6975a68338 | ||
|
|
f20c916e05 | ||
|
|
1765388326 | ||
|
|
e8d77ddb58 | ||
|
|
6599f37c83 | ||
|
|
5dda30f9cc | ||
|
|
db0f3e484a | ||
|
|
c99047c6a7 | ||
|
|
e6f72db6bf | ||
|
|
d7af75359f | ||
|
|
53745a5767 | ||
|
|
4d3fada5d1 | ||
|
|
8874585c89 | ||
|
|
a1586b348f | ||
|
|
78229089bf | ||
|
|
6c79e8262a | ||
|
|
5a9439ab4f | ||
|
|
1f7dc5a641 | ||
|
|
1b55440b15 | ||
|
|
64a2199733 | ||
|
|
ea4357df3e | ||
|
|
b71d14b526 | ||
|
|
179eab1355 | ||
|
|
a2ae7e1ddd | ||
|
|
56af264273 | ||
|
|
eec174ccf0 | ||
|
|
3141dbd57c | ||
|
|
d841b2d178 | ||
|
|
f888fafc07 | ||
|
|
4e4e9f7d15 | ||
|
|
5b9510981d | ||
|
|
9b9e339d15 | ||
|
|
041ca29ab7 | ||
|
|
1b11416cb8 | ||
|
|
679a4a7fa3 | ||
|
|
f73273519f | ||
|
|
8ace17eaef | ||
|
|
5d17c51aa9 | ||
|
|
950da4ecfd | ||
|
|
99f0e35069 | ||
|
|
b6197c460b | ||
|
|
0b71026bed | ||
|
|
a6dc8c27a8 | ||
|
|
e26e2ca793 | ||
|
|
4ac3edf780 | ||
|
|
c362a99a11 | ||
|
|
2c75d2f1b9 | ||
|
|
b553cf68da | ||
|
|
291225ae35 | ||
|
|
00ece36f38 | ||
|
|
e1ebe832dd | ||
|
|
3e9e9a1fa0 | ||
|
|
1737829922 | ||
|
|
cbfbe80ed8 | ||
|
|
a99d8736a7 | ||
|
|
7370dead32 | ||
|
|
626affffd8 | ||
|
|
859e5373a5 | ||
|
|
ca6a3fe17b | ||
|
|
9e05f88a36 | ||
|
|
1bcc4614b8 | ||
|
|
1658c6c54d | ||
|
|
b0329ac88d | ||
|
|
454002d65c | ||
|
|
8bfe3a818c | ||
|
|
e2efccac09 | ||
|
|
77fbe2e0ff | ||
|
|
0889ff619e | ||
|
|
fd5c390500 | ||
|
|
dcfa224cf2 | ||
|
|
22d00f89b0 | ||
|
|
45eb45e531 | ||
|
|
d6a93ed8b6 | ||
|
|
e677fb1936 | ||
|
|
eddab8bf8d | ||
|
|
be6095b4a7 | ||
|
|
7c6edc004f | ||
|
|
df7a9b1267 | ||
|
|
84fe6250b2 | ||
|
|
082c213dcf | ||
|
|
508c5d5bc9 | ||
|
|
c0369b2c81 | ||
|
|
c06de43231 | ||
|
|
c9708236ac | ||
|
|
72d758c3b0 | ||
|
|
42f8070fc9 | ||
|
|
1a03d33795 | ||
|
|
9142654795 | ||
|
|
b2f2e41b80 | ||
|
|
d6e3d5272e | ||
|
|
444d7fa81a | ||
|
|
71b4962b83 | ||
|
|
dd99af4cec | ||
|
|
1b70bd38f2 | ||
|
|
c77be9cf3b | ||
|
|
bd178d9369 | ||
|
|
f2bfd51492 | ||
|
|
e77d2abf47 | ||
|
|
6e7b2e9614 | ||
|
|
135b39526e | ||
|
|
7bd16a3ca7 | ||
|
|
8eb0a59723 | ||
|
|
e7d2c51326 | ||
|
|
d6e219c52f | ||
|
|
f0b0f21090 | ||
|
|
5fda94a53b | ||
|
|
0ff33f8f7e | ||
|
|
011f0d7d0c | ||
|
|
5474cff20c | ||
|
|
82497c18db | ||
|
|
6e063bdc8d | ||
|
|
f702ad9fd2 | ||
|
|
e433e49e2f | ||
|
|
297292ccf3 | ||
|
|
d77b6bd841 | ||
|
|
6fdb2569c5 | ||
|
|
4f42d6bd8e | ||
|
|
cd321f1711 | ||
|
|
7834f468d1 | ||
|
|
0116923f58 | ||
|
|
9409ec35a3 | ||
|
|
3cbaac7669 | ||
|
|
6b3ccc543d | ||
|
|
4685bf10c9 | ||
|
|
250b827e19 | ||
|
|
4c279b6497 | ||
|
|
6c6e9afd02 | ||
|
|
49631198bb | ||
|
|
1ada437979 | ||
|
|
00388756ed | ||
|
|
dee99d7a50 | ||
|
|
67edef75bb | ||
|
|
5d4cb375b0 | ||
|
|
ec98375192 | ||
|
|
9380260a74 | ||
|
|
94abdf8088 | ||
|
|
5d70958c55 | ||
|
|
955bb4dea8 | ||
|
|
4a031af091 | ||
|
|
6598b626e7 | ||
|
|
e7308673ec | ||
|
|
d9cac68a45 | ||
|
|
193ab1da34 | ||
|
|
53a1827731 | ||
|
|
504b34b6d4 | ||
|
|
8331f8eba8 | ||
|
|
0fec5317d6 | ||
|
|
366701958c | ||
|
|
ef7d233d93 | ||
|
|
7c182ca27c | ||
|
|
4f2547358d | ||
|
|
48a3f58c13 | ||
|
|
067d1484ab | ||
|
|
afac07c166 | ||
|
|
8b866d0ce6 | ||
|
|
7c48eac832 | ||
|
|
f021235ceb | ||
|
|
7c01515d9a | ||
|
|
5bc39afc9b | ||
|
|
74bf8ad58e | ||
|
|
e5477ba206 | ||
|
|
cc4c03d76f | ||
|
|
78e7821041 | ||
|
|
a9bec75ea2 | ||
|
|
c34eb170f1 | ||
|
|
58cd714283 | ||
|
|
d415073b14 | ||
|
|
aa858a83eb | ||
|
|
5e64197e08 | ||
|
|
5a6b215ef0 | ||
|
|
7aa1980813 | ||
|
|
d6864a161c | ||
|
|
0135b251cd | ||
|
|
df1e125e1d | ||
|
|
400ff4d007 | ||
|
|
f52dd41b23 | ||
|
|
18e08ec6a1 | ||
|
|
c424c63ec9 | ||
|
|
113fa34555 | ||
|
|
aee14d307a | ||
|
|
0ad75a223b | ||
|
|
2ff3b46a7e | ||
|
|
48f1d74127 | ||
|
|
8a491cd55a | ||
|
|
22ce2ebc9a | ||
|
|
d7029d383f | ||
|
|
c376677537 | ||
|
|
5a00e9c704 | ||
|
|
905f6b4291 | ||
|
|
11445c6fe1 | ||
|
|
fb2226208a | ||
|
|
f33f2fbc7d | ||
|
|
fc76348330 | ||
|
|
80aa3f1163 | ||
|
|
269fdcb324 | ||
|
|
e2c3926c76 | ||
|
|
8db3e3cd54 | ||
|
|
f5d2a1bc0c | ||
|
|
fab6b21e4d | ||
|
|
a94b0e3dba | ||
|
|
018f0c0353 | ||
|
|
aba8c12d07 | ||
|
|
f0e1a7d5c9 | ||
|
|
69d0d88da1 | ||
|
|
d4e3f443cd | ||
|
|
2fe654587b | ||
|
|
4861fc7e6b | ||
|
|
e6b434e746 | ||
|
|
141af16fa2 | ||
|
|
fe09c20725 | ||
|
|
84dc2d8835 | ||
|
|
57916c7452 | ||
|
|
cca85fe861 | ||
|
|
d9efd47c90 | ||
|
|
ffd07a5f34 | ||
|
|
9433db8d54 | ||
|
|
76a8cc6ba4 | ||
|
|
b46b69ebad | ||
|
|
bba00b2e7a | ||
|
|
95a5914c26 | ||
|
|
6b34eb5322 | ||
|
|
b16a6052cb | ||
|
|
586921fa4d | ||
|
|
09034d87b7 | ||
|
|
7dfce56fbb | ||
|
|
311f651d12 | ||
|
|
8b78fe98aa | ||
|
|
5fa35342fd | ||
|
|
5ebb490a8d | ||
|
|
099dbb4046 | ||
|
|
15a835af20 | ||
|
|
bd6ccbd451 | ||
|
|
e56d4cc1b9 | ||
|
|
77bfddd0e1 | ||
|
|
4b48ba1004 | ||
|
|
bdfae96095 | ||
|
|
883607e1d4 | ||
|
|
3808f7eb28 | ||
|
|
1263b2ed48 | ||
|
|
4981b0b3e4 | ||
|
|
684f5b44ee | ||
|
|
6ae89f7d9b | ||
|
|
9e0df24b9a | ||
|
|
173788b25c | ||
|
|
721ce0cb6d | ||
|
|
739e4b374e | ||
|
|
cdb22a3505 | ||
|
|
5973cc2fbc | ||
|
|
3d2b332c01 | ||
|
|
90b59ff7d6 | ||
|
|
612d5c42b4 | ||
|
|
e5d6de9080 | ||
|
|
eb92a2ddde | ||
|
|
05adf5f9c9 | ||
|
|
05181779d1 | ||
|
|
53440fd390 | ||
|
|
9ae20024aa | ||
|
|
202875a4bb | ||
|
|
2e63ce2196 | ||
|
|
0ac0263542 | ||
|
|
ce67aa43ea | ||
|
|
6f44ca576c | ||
|
|
4cab501f14 | ||
|
|
255d7153f4 | ||
|
|
31aa149a1e | ||
|
|
aacbcab468 | ||
|
|
b84fe5561a | ||
|
|
f4d2d050f5 | ||
|
|
f27a40d29b | ||
|
|
e5ea789b89 | ||
|
|
b16d3a2f4a | ||
|
|
468c8492b6 | ||
|
|
dc3da3df8f | ||
|
|
13bd1a4d68 | ||
|
|
282cdd111a | ||
|
|
c86eb27675 | ||
|
|
3f1e4ca55a | ||
|
|
d93671bbc7 | ||
|
|
8f3ed9bc7b | ||
|
|
4cdbe5fa30 | ||
|
|
7bf79a1a6c | ||
|
|
42e820e505 | ||
|
|
3461577d57 | ||
|
|
f51b887928 | ||
|
|
0cd3030c53 | ||
|
|
c7e66637f9 | ||
|
|
611e1f7718 | ||
|
|
40123e1c0d | ||
|
|
6996d317df | ||
|
|
85e66de431 | ||
|
|
68110eeecc | ||
|
|
1ef427f661 | ||
|
|
3d16c7f4c8 | ||
|
|
43a84842e8 | ||
|
|
c8a27715a9 | ||
|
|
7f27c9b37b | ||
|
|
daeedc51a3 | ||
|
|
bb5dbd7bfd | ||
|
|
c8b3899c5e | ||
|
|
16d7a1458f | ||
|
|
823d27b128 | ||
|
|
69520bdf97 | ||
|
|
e44ec1f27b | ||
|
|
50e64d5961 | ||
|
|
c00502638c | ||
|
|
46c0f19cc9 | ||
|
|
11e2c054d0 | ||
|
|
46af00aa01 | ||
|
|
41659bcfda | ||
|
|
365376ec2e | ||
|
|
521d2470eb | ||
|
|
571adb9a3f | ||
|
|
18f17a10c9 | ||
|
|
821e5ac597 | ||
|
|
e9e069c167 | ||
|
|
83f578ae50 | ||
|
|
37d8bec3e1 | ||
|
|
203dfa1b84 | ||
|
|
5202fe30ea | ||
|
|
a729d7ce35 | ||
|
|
0726819547 | ||
|
|
3e186d2393 | ||
|
|
fd0d716f53 | ||
|
|
03d25c97b4 | ||
|
|
f45155a966 | ||
|
|
bf52f5b4bf | ||
|
|
65e3bcc183 | ||
|
|
686a9bd44a | ||
|
|
b410154cb3 | ||
|
|
eba08bf727 | ||
|
|
41000db5bc | ||
|
|
c6399f6ee0 | ||
|
|
dbc6cb74b6 | ||
|
|
f595f40d1d | ||
|
|
b785f40fb0 | ||
|
|
c4e8b26f17 | ||
|
|
0fa846823a | ||
|
|
ea7cfbc050 | ||
|
|
e348923283 | ||
|
|
7f8f807500 | ||
|
|
a332167e5a | ||
|
|
b39893078a | ||
|
|
da2d2a07b5 | ||
|
|
f8ef9bc363 | ||
|
|
a8141ef360 | ||
|
|
10687085ee | ||
|
|
3f7d5b85fd | ||
|
|
cc3a3fcd76 | ||
|
|
a8f1220f19 | ||
|
|
c2eda0b0fa | ||
|
|
d80bb1cfc9 | ||
|
|
e276e15b1b | ||
|
|
414c8a36e4 | ||
|
|
aeea69706e | ||
|
|
9988d0a1f8 | ||
|
|
5707f8f4a5 | ||
|
|
bec5d9ea57 | ||
|
|
9d79eefc28 | ||
|
|
9be13033a0 | ||
|
|
168dd08042 | ||
|
|
392a3dd7ab | ||
|
|
661d7b88da | ||
|
|
3696d43590 | ||
|
|
51d844af2c | ||
|
|
88fb8187d9 | ||
|
|
fa70582ed1 | ||
|
|
bd1281954d | ||
|
|
6ed9b08173 | ||
|
|
d60fcb0d11 | ||
|
|
7cbd0d2b74 | ||
|
|
dec21efe7f | ||
|
|
5c42b396e0 | ||
|
|
8aec3f69e5 | ||
|
|
4ec16fd714 | ||
|
|
3e3a07a5b8 | ||
|
|
b9cce6c179 | ||
|
|
961b73c6be | ||
|
|
d4536fae9c | ||
|
|
fe4a72ec94 | ||
|
|
95b4334bf7 | ||
|
|
0010dc6bb4 | ||
|
|
a136ba1837 | ||
|
|
f62e9a71e2 | ||
|
|
dd6b0fb793 | ||
|
|
1aee8a0783 | ||
|
|
5041e0772e | ||
|
|
043abb4389 | ||
|
|
3a81a8f358 | ||
|
|
b259ee22b3 | ||
|
|
52e4d2af82 | ||
|
|
d8683fc045 | ||
|
|
1471276580 | ||
|
|
e13ec786d5 | ||
|
|
c72e8a24f1 | ||
|
|
be3bbfa39e | ||
|
|
ecfe53e488 | ||
|
|
b72e28c116 | ||
|
|
6da7fe62a2 | ||
|
|
153c478c35 | ||
|
|
3ecca6116d | ||
|
|
9569841091 | ||
|
|
13e4b54754 | ||
|
|
ec44768eb9 | ||
|
|
0999cb057d | ||
|
|
d0bf8746d0 | ||
|
|
33dc7bc1f2 | ||
|
|
25785abfe0 | ||
|
|
f44e90b884 | ||
|
|
db926cd9f4 | ||
|
|
8fff1caa39 | ||
|
|
5c2fe4da87 | ||
|
|
a60b65367a | ||
|
|
3b2fa4469a | ||
|
|
15f0d2a514 | ||
|
|
e52eb480d6 | ||
|
|
5a173bb1c4 | ||
|
|
b2ed8ff53e | ||
|
|
4e59b0abc6 | ||
|
|
0242e9462b | ||
|
|
4b893b40a1 | ||
|
|
8b1277b554 | ||
|
|
7f8f36bf40 | ||
|
|
3900042280 | ||
|
|
9bf5cf0fb9 | ||
|
|
dec18f5c70 | ||
|
|
b3598ea3cc | ||
|
|
83b28ff2d6 | ||
|
|
dd549a6c52 | ||
|
|
91ffc79c7b | ||
|
|
f978a584fe | ||
|
|
32aa040287 | ||
|
|
90e00eec66 | ||
|
|
7d7308feb2 | ||
|
|
aac6e2a3d0 | ||
|
|
57e5f5c4c4 | ||
|
|
40be2d5ef0 | ||
|
|
81c14f60b6 | ||
|
|
522aa8e585 | ||
|
|
21f25b9365 | ||
|
|
fc33a680d1 | ||
|
|
1441da246b | ||
|
|
e8f5b374b2 | ||
|
|
50fe1f7312 | ||
|
|
736da49da4 | ||
|
|
b01ccc8def | ||
|
|
340da6fa85 | ||
|
|
beaaa09f2f | ||
|
|
9444d61bb6 | ||
|
|
b8c5ddd0ee | ||
|
|
a2f87dc980 | ||
|
|
be7312f153 | ||
|
|
50fb11dddc | ||
|
|
3d64af917a | ||
|
|
63bca8ab64 | ||
|
|
5df4275c18 | ||
|
|
895b21fb2b | ||
|
|
9565f39c7a | ||
|
|
6423d521cd | ||
|
|
17586cf0a1 | ||
|
|
c0da25f036 | ||
|
|
4ae4634976 | ||
|
|
c93e321ef0 | ||
|
|
23ee612c03 | ||
|
|
9d1ab72c29 | ||
|
|
26306d586a | ||
|
|
49ae4ab8f7 | ||
|
|
2dacde5b3b | ||
|
|
7ecd3e7f0c | ||
|
|
659a65f27f | ||
|
|
6b9ce834e1 | ||
|
|
5335357f4c | ||
|
|
06cc09b62a | ||
|
|
54748aee1c | ||
|
|
f970bf8160 | ||
|
|
add22fb695 | ||
|
|
062d922beb | ||
|
|
5246fc4c0c | ||
|
|
057ba55c87 | ||
|
|
aebd2f5305 | ||
|
|
8579885e8e | ||
|
|
d613662ef7 | ||
|
|
23c148fb74 | ||
|
|
6fca6f527c | ||
|
|
4909c517d1 | ||
|
|
61aa5d2c09 | ||
|
|
59c2a453ab | ||
|
|
67ccaa3f6c | ||
|
|
4545132a0d | ||
|
|
09d309ee9c | ||
|
|
6e47c0c175 | ||
|
|
65936b34c1 | ||
|
|
0d61ae87ed | ||
|
|
e6eb80e003 | ||
|
|
56b6e0742e | ||
|
|
625a946e25 | ||
|
|
b5c164fae6 | ||
|
|
b88b1e4819 | ||
|
|
4339bd308e | ||
|
|
8b43ecca30 | ||
|
|
4425f91caa | ||
|
|
cee7041b4d | ||
|
|
3b3406a375 | ||
|
|
d654408bed | ||
|
|
9c8736f416 | ||
|
|
87c0719b32 | ||
|
|
502cee88ee | ||
|
|
0b98094dac | ||
|
|
e924a04fb8 | ||
|
|
6c9cbfc848 | ||
|
|
b051870245 | ||
|
|
917b638227 | ||
|
|
575d543299 | ||
|
|
5f989c81d1 | ||
|
|
e3ffc39316 | ||
|
|
00277ac4b0 | ||
|
|
2a19372ca0 | ||
|
|
80b234a369 | ||
|
|
8a7fa6918d | ||
|
|
1556523ca1 | ||
|
|
60ac0a514e | ||
|
|
6c22b0c86f | ||
|
|
9711b65736 | ||
|
|
a67436ee7e | ||
|
|
85bce2ac33 | ||
|
|
2d7259623f | ||
|
|
285bbeceb7 | ||
|
|
ebc072b141 | ||
|
|
aec877c7e0 | ||
|
|
c0ba405a64 | ||
|
|
320cd87f0b | ||
|
|
7af9802688 | ||
|
|
1f2b320b94 | ||
|
|
58c2ee4f06 | ||
|
|
1f41e18d7f | ||
|
|
21c69a99e6 | ||
|
|
eba2e0af78 | ||
|
|
fd5b6f88ab | ||
|
|
54d6f9f0de | ||
|
|
c6b8664c8e | ||
|
|
05a0703120 | ||
|
|
778deab033 | ||
|
|
a91fa2a40c | ||
|
|
294d07a2a0 | ||
|
|
b7e0abc5f5 | ||
|
|
2490564f7f | ||
|
|
9110dd51dc | ||
|
|
57a6f61349 | ||
|
|
020d31d600 | ||
|
|
7c76bb754a | ||
|
|
95e96712f1 | ||
|
|
ff9ce434a2 | ||
|
|
dfdf9a3159 | ||
|
|
b998ddd1bd | ||
|
|
8f143a1764 | ||
|
|
795945376c | ||
|
|
1c58c933e2 | ||
|
|
7a548ca7fb | ||
|
|
aebc01abfc | ||
|
|
24784bae9a | ||
|
|
3b658cba3b | ||
|
|
d4809b58b8 | ||
|
|
1a5b238ba4 | ||
|
|
2ce2facb0e | ||
|
|
bd67bd8270 | ||
|
|
3f60a23718 | ||
|
|
a008014ab0 | ||
|
|
43b2acba36 | ||
|
|
3e48390cee | ||
|
|
75dd55fcf6 | ||
|
|
41ff632d28 | ||
|
|
cc525608e9 | ||
|
|
4d25037614 | ||
|
|
0cc495b425 | ||
|
|
0c4f778ddb | ||
|
|
b0b6e000f2 | ||
|
|
2fbfb70994 | ||
|
|
9b18c82bfb | ||
|
|
f0384e7bc3 | ||
|
|
92b31a6435 | ||
|
|
13225c817a | ||
|
|
fe0f6497ad | ||
|
|
37244cce95 | ||
|
|
406ccadd06 | ||
|
|
48ec9edc51 | ||
|
|
ca68aa6d2b | ||
|
|
92972879f5 | ||
|
|
b4f1ef06a2 | ||
|
|
108a5b8344 | ||
|
|
2ee934a7ee | ||
|
|
f6bfad9de1 | ||
|
|
b0872aaba9 | ||
|
|
7c5dee1eda | ||
|
|
2db5cae51f | ||
|
|
72fa3fbb26 | ||
|
|
df3fe1491a | ||
|
|
e9e661a9db | ||
|
|
8a89c159db | ||
|
|
11cc964352 | ||
|
|
500d1835a8 | ||
|
|
1f08ec6072 | ||
|
|
d71b1b57e2 | ||
|
|
45dd04c899 | ||
|
|
319827daec | ||
|
|
89a225a0e1 | ||
|
|
693cf5f2f4 | ||
|
|
d77ef4c8a3 | ||
|
|
afb1d3df6f | ||
|
|
dad7320f4b | ||
|
|
9b9c9ba569 | ||
|
|
d40be52f18 | ||
|
|
c4c670c995 | ||
|
|
c5c3fdc321 | ||
|
|
78a09d9be6 | ||
|
|
241d097d2e | ||
|
|
4925f65fed | ||
|
|
cb7aef10ec | ||
|
|
b9729f872a | ||
|
|
7c60219ab1 | ||
|
|
569814d77c | ||
|
|
f5d58bb9f0 | ||
|
|
9e304d0743 | ||
|
|
be2d193117 | ||
|
|
0dd356a3a7 | ||
|
|
e9eb6f9d95 | ||
|
|
a91ee67ac7 | ||
|
|
038b25627e | ||
|
|
86f4c3a014 | ||
|
|
81f1cd4532 | ||
|
|
a37d648370 | ||
|
|
2304e6a9cd | ||
|
|
a4f35e0291 | ||
|
|
8c4b7456c1 | ||
|
|
a9d426a3dc | ||
|
|
461d42635f | ||
|
|
e4d8c2e440 | ||
|
|
7fe421b1b3 | ||
|
|
12d5ffb8e5 | ||
|
|
aef4dba512 | ||
|
|
440d44340d | ||
|
|
66830d2344 | ||
|
|
940800b059 | ||
|
|
a499695c93 | ||
|
|
032e6c8580 | ||
|
|
9913736b41 | ||
|
|
84d3bd2b48 | ||
|
|
5bf1596d65 | ||
|
|
7d72db562f | ||
|
|
d37f1b6a81 | ||
|
|
e787666605 | ||
|
|
2cc5b3e335 | ||
|
|
6938d2da7f | ||
|
|
9f4cd93817 | ||
|
|
0d3683c3e1 | ||
|
|
07634d2ba2 | ||
|
|
2a6c15d15a | ||
|
|
672c115c61 | ||
|
|
09f2ee467b | ||
|
|
54a5ac9235 | ||
|
|
e2b16f527a | ||
|
|
66cab434b8 | ||
|
|
d1c2368eee | ||
|
|
2c12515035 | ||
|
|
f4ebf9830c | ||
|
|
e2f59f02e4 | ||
|
|
1f74b6b78a | ||
|
|
ee7ebda584 | ||
|
|
bfe0778421 | ||
|
|
2349ea063d | ||
|
|
c456d38b5c | ||
|
|
35b4aadfda | ||
|
|
423172484e | ||
|
|
06d36b9718 | ||
|
|
cd2df8f5ef | ||
|
|
cd2077ebaf | ||
|
|
d9c27f3dee | ||
|
|
e395ba18ad | ||
|
|
0628a9444c | ||
|
|
7d2a12aa3c | ||
|
|
addade1216 | ||
|
|
f5849e5c08 | ||
|
|
ee85cda2bb | ||
|
|
2c8c3449c6 | ||
|
|
9c5c7c4c92 | ||
|
|
2e9cb000f5 | ||
|
|
3369a394e6 | ||
|
|
bae3a1e6b8 | ||
|
|
2b5fd7ad2e | ||
|
|
eb57036dab | ||
|
|
eb38474bb2 | ||
|
|
5a39e6beda | ||
|
|
69c2143804 | ||
|
|
1bce6a24d2 | ||
|
|
8cdc9c02df | ||
|
|
3a3f695967 | ||
|
|
bbf17e919e | ||
|
|
228b50f858 | ||
|
|
035b047fef | ||
|
|
c90b3a2cce | ||
|
|
b795708852 | ||
|
|
0e2582e0bb | ||
|
|
e2e06e5e89 | ||
|
|
6d467c8f16 | ||
|
|
205056b572 | ||
|
|
4dca5b6a7c | ||
|
|
5b3109945e | ||
|
|
8dd9e64af8 | ||
|
|
9c10f8cbc5 | ||
|
|
8e38ac234f | ||
|
|
7a40ebda66 | ||
|
|
97ec03692c | ||
|
|
443034553b | ||
|
|
2f8fa3fec2 | ||
|
|
0a3cbabae6 | ||
|
|
74df3a450b | ||
|
|
abcd6e7847 | ||
|
|
61a68fb497 | ||
|
|
5ed855aeef | ||
|
|
672a829cdb | ||
|
|
ee07700aa7 | ||
|
|
d54c139cdb | ||
|
|
697fc5b8d3 | ||
|
|
23372478a8 | ||
|
|
822de5ce29 | ||
|
|
9e53b079c6 | ||
|
|
cc81be0992 | ||
|
|
4b33c31106 | ||
|
|
5f16371672 | ||
|
|
5c0afd5e84 | ||
|
|
69df9420c1 | ||
|
|
82bc52cbcc | ||
|
|
7cc46619a5 | ||
|
|
a987f03aeb | ||
|
|
3612d8e4eb | ||
|
|
b149cb0682 | ||
|
|
267d81e9cc | ||
|
|
e97d9f5f17 | ||
|
|
7a50acb607 | ||
|
|
dd4a3ec042 | ||
|
|
5e42120df5 | ||
|
|
32efc176d9 | ||
|
|
1fd21371b1 | ||
|
|
ecd91bcf01 | ||
|
|
85d46d2979 | ||
|
|
c577fdd792 | ||
|
|
a519ea34a5 | ||
|
|
f14232396a | ||
|
|
a2bf46fc53 | ||
|
|
b1de545ff9 | ||
|
|
f20a4d705a | ||
|
|
503475f063 | ||
|
|
4aafa7a90d | ||
|
|
831608e6d6 | ||
|
|
c4d47abc52 | ||
|
|
7f913f1cc2 | ||
|
|
66a71d4db0 | ||
|
|
14502673da | ||
|
|
1b8f798d3b | ||
|
|
4b0977d306 | ||
|
|
40928a5d22 | ||
|
|
a66bc06b2d | ||
|
|
4376f8ba3c | ||
|
|
69b645d5c8 | ||
|
|
ac56fffffd | ||
|
|
9890ab333c | ||
|
|
428cba9a25 | ||
|
|
3662b5139c | ||
|
|
1857849cba | ||
|
|
19dae83e40 | ||
|
|
bf9cce4800 | ||
|
|
b4c17d6e97 | ||
|
|
8698f75144 | ||
|
|
c2bbc5b450 | ||
|
|
0cb458db89 | ||
|
|
2e9c30883b | ||
|
|
d91ef31bac | ||
|
|
d4e5a61efd | ||
|
|
60dac5f1f4 | ||
|
|
9fc51ba22e | ||
|
|
b5a7a917bf | ||
|
|
3a114a5d7f | ||
|
|
a3984a706e | ||
|
|
075565f4f4 | ||
|
|
67681c971f | ||
|
|
64ac0ecd41 | ||
|
|
19e5ee3f42 | ||
|
|
00cf9be46e | ||
|
|
b832370421 | ||
|
|
70aa20b9ee | ||
|
|
d31546b2ae | ||
|
|
c11b28d910 | ||
|
|
8210d76449 | ||
|
|
df19e91845 | ||
|
|
f6dc9c1ab4 | ||
|
|
ef978b848c | ||
|
|
8c4a65e3e1 | ||
|
|
c163d11fdb | ||
|
|
9fe905c47d | ||
|
|
933b282c53 | ||
|
|
d869a61ac1 | ||
|
|
61efef9e88 | ||
|
|
9db74c05c0 | ||
|
|
ec752671da | ||
|
|
98be94a729 | ||
|
|
2fbeb75ced | ||
|
|
eb0d0386a0 | ||
|
|
c2a1a8c39b | ||
|
|
6bd2355a69 | ||
|
|
41c14281e5 | ||
|
|
0001d62dc8 | ||
|
|
5dac629712 | ||
|
|
782adafc39 | ||
|
|
ed45bf425e | ||
|
|
45221a2bea | ||
|
|
41c3a059a7 | ||
|
|
cf0c5624a1 | ||
|
|
5e79e9196f | ||
|
|
d753292823 | ||
|
|
df6516e3e3 | ||
|
|
f1cba23976 | ||
|
|
5dee7297cf | ||
|
|
5c7cb0578f | ||
|
|
ef8649910f | ||
|
|
17d08aec41 | ||
|
|
658669d103 | ||
|
|
b65d6172cc | ||
|
|
72d8c82927 | ||
|
|
08eeed9c72 | ||
|
|
affa9068f0 | ||
|
|
d14571edfe | ||
|
|
588f42e2e2 | ||
|
|
1e75686221 | ||
|
|
6590ccf168 | ||
|
|
d27630cec7 | ||
|
|
0d9534bcf1 | ||
|
|
9b439ff5a2 | ||
|
|
0bc2444079 | ||
|
|
65e5b193e1 | ||
|
|
207d08476c | ||
|
|
8c4794de38 | ||
|
|
288a367e4d | ||
|
|
6d7260a6e9 | ||
|
|
f91b520bb8 | ||
|
|
e1477e642c | ||
|
|
61ebddf9b8 | ||
|
|
00811ee5bb | ||
|
|
108eeaed0a | ||
|
|
41450b3a64 | ||
|
|
2efee60a22 | ||
|
|
a16b8e4963 | ||
|
|
37653324fa | ||
|
|
c6f4ad0efa | ||
|
|
420d0c2f74 | ||
|
|
ce453ccd58 | ||
|
|
30db093c73 | ||
|
|
c3542ce014 | ||
|
|
4c56a3b3f5 | ||
|
|
19c4a4dc3f | ||
|
|
671d3d8f70 | ||
|
|
70931e5321 | ||
|
|
b02e8bb7f3 | ||
|
|
83f8b6b625 | ||
|
|
6825cf6d52 | ||
|
|
c432d2c537 | ||
|
|
61b86b976e | ||
|
|
9bf6a44608 | ||
|
|
7c1122d06f | ||
|
|
4eaef65a79 | ||
|
|
44b6a6a6b6 | ||
|
|
d8bb1786e5 | ||
|
|
2e4576b201 | ||
|
|
4ebbadb2a6 | ||
|
|
4dc6530391 | ||
|
|
e6467d4872 | ||
|
|
69154652ba | ||
|
|
9e2054278f | ||
|
|
61464de50b | ||
|
|
c73513ee0d | ||
|
|
818025635a | ||
|
|
7a788c29fd | ||
|
|
8d09a502f0 | ||
|
|
e36d9f9dbf | ||
|
|
d1fbf8b7bf | ||
|
|
6a3e56b103 | ||
|
|
afdf33e402 | ||
|
|
558cd53b4a | ||
|
|
1aff64d28c | ||
|
|
b8b60a3eb1 | ||
|
|
bd9dc7764f | ||
|
|
79a5a9b5f8 | ||
|
|
be0effc068 | ||
|
|
9227ebbff8 | ||
|
|
07148536db | ||
|
|
70d7768868 | ||
|
|
ff9178b830 | ||
|
|
9ead771405 | ||
|
|
144cdcdc6d | ||
|
|
312ddaa8fb | ||
|
|
c150bbf61c | ||
|
|
2a0de19e4e | ||
|
|
c17b52ad66 | ||
|
|
5c29ec73ee | ||
|
|
e4f8489b4a | ||
|
|
1ba7f18b90 | ||
|
|
345ab82f91 | ||
|
|
1558edf827 | ||
|
|
0f3fbd4390 | ||
|
|
ec213e98fb | ||
|
|
4900c546f9 | ||
|
|
38fb975d2a | ||
|
|
74d9a88480 | ||
|
|
464b89c3a7 | ||
|
|
69bab18a8e | ||
|
|
1d71ed5ade | ||
|
|
bc698a88df | ||
|
|
ecc16bfabf | ||
|
|
538db07127 | ||
|
|
2b8cdfe547 | ||
|
|
af2e1e1873 | ||
|
|
7c650c16f8 | ||
|
|
bc3347a538 | ||
|
|
36a5a14507 | ||
|
|
22e410f82d | ||
|
|
9a0ce083a4 | ||
|
|
b5f443c64c | ||
|
|
fbfbb0932f | ||
|
|
fc2335e554 | ||
|
|
398a91d548 | ||
|
|
e5bd7379a8 | ||
|
|
55beb67387 | ||
|
|
d92dfc097c | ||
|
|
30cfc13a3d | ||
|
|
bd0859d35d | ||
|
|
2b109d552c | ||
|
|
2a5371ab62 | ||
|
|
a407feed24 | ||
|
|
3bf935e00d | ||
|
|
1584c883b0 | ||
|
|
d9b4c9d18f | ||
|
|
5e5542d02f | ||
|
|
118266f721 | ||
|
|
c81b743d31 | ||
|
|
e11a121983 | ||
|
|
d9f4e6b8ba | ||
|
|
632eff6a3a | ||
|
|
ddf8eca96e | ||
|
|
93cb0426fd | ||
|
|
0965b92895 | ||
|
|
00825db508 | ||
|
|
16cbaf6180 | ||
|
|
d89520c8ae | ||
|
|
00a44ee48c | ||
|
|
de788a46da | ||
|
|
0aadfb479a | ||
|
|
af61ee38f3 | ||
|
|
2547a23135 | ||
|
|
18652068e3 | ||
|
|
268601a3da | ||
|
|
ad30af74dc | ||
|
|
51916ff058 | ||
|
|
41584cfae3 | ||
|
|
99b6033a1b | ||
|
|
e6f71774fd | ||
|
|
d649472412 | ||
|
|
f9e644bb24 | ||
|
|
c275e84743 | ||
|
|
26368f5d6c | ||
|
|
171a43bdaa | ||
|
|
b01c1a4553 | ||
|
|
afab94f231 | ||
|
|
71b40f9bd5 | ||
|
|
f6ac67e601 | ||
|
|
6587f27086 | ||
|
|
74b6371994 | ||
|
|
fa206896f4 | ||
|
|
fd8792f342 | ||
|
|
dc40071045 | ||
|
|
fdeeb3ad4e | ||
|
|
906923cd24 | ||
|
|
f8b84310d6 | ||
|
|
1d0af13aa3 | ||
|
|
160a0e2aea | ||
|
|
14f77e41fb | ||
|
|
f1ef4abca8 | ||
|
|
db16cacc38 | ||
|
|
d022d7ba69 | ||
|
|
7bd6863525 | ||
|
|
911baa84b2 | ||
|
|
a9a6f45f08 | ||
|
|
99e4879f8b | ||
|
|
70dfdb95a9 | ||
|
|
24522fdaf7 | ||
|
|
5b1cfa4529 | ||
|
|
961254b81d | ||
|
|
7494825038 | ||
|
|
32547c8c3b | ||
|
|
0187e1baf3 | ||
|
|
279b3ded14 | ||
|
|
a3ac1fc4f4 | ||
|
|
98135299e8 | ||
|
|
dc3938e0ea | ||
|
|
393e2f4027 | ||
|
|
d41c0a812b | ||
|
|
ed9ba7dcb7 | ||
|
|
ee1bd704ef | ||
|
|
d7cf4b2274 | ||
|
|
35157c9421 | ||
|
|
9e1b856e99 | ||
|
|
9f4d9fb463 | ||
|
|
d54d81e89d | ||
|
|
c1df01fd8e | ||
|
|
1c686b3c04 | ||
|
|
07c7e2f910 | ||
|
|
7a26dde977 | ||
|
|
36970dd9a2 | ||
|
|
e6880a468b | ||
|
|
724d8a12b6 | ||
|
|
3e7e4df7ce | ||
|
|
e78d50f733 | ||
|
|
59b756acb8 | ||
|
|
f76683e90e | ||
|
|
ae6fadda4d | ||
|
|
5054ee8508 | ||
|
|
532dcae37a | ||
|
|
f00bdfeca8 | ||
|
|
9ee61bb3dd | ||
|
|
0cfa5f47fe | ||
|
|
fa11957c17 | ||
|
|
2332caa84c | ||
|
|
3d70bdc3e1 | ||
|
|
36f2df3339 | ||
|
|
6e05d9ef84 | ||
|
|
5a8612eb63 | ||
|
|
2577b9b3a6 | ||
|
|
0b671e8852 | ||
|
|
19107b5869 | ||
|
|
da7eea49c9 | ||
|
|
fd3ed419c2 | ||
|
|
4ee6d636c7 | ||
|
|
242a36a262 | ||
|
|
107551f7b4 | ||
|
|
c199730004 | ||
|
|
715e8e1c32 | ||
|
|
562dc76ab0 | ||
|
|
31a5f0d523 | ||
|
|
a2e5332eef | ||
|
|
c7febad548 | ||
|
|
d0868d6711 | ||
|
|
de24d0ac2f | ||
|
|
b3be5bb161 | ||
|
|
cc9f29c463 | ||
|
|
1c498664a5 | ||
|
|
8c51f3e693 | ||
|
|
c443951f30 | ||
|
|
e8d4291e02 | ||
|
|
5f450923c9 | ||
|
|
14ecfac592 | ||
|
|
8a7cc79129 | ||
|
|
5fb0e01943 | ||
|
|
70c4961df3 | ||
|
|
2205ad0069 | ||
|
|
1d1df4b0a5 | ||
|
|
51290a853d | ||
|
|
4034ffea18 | ||
|
|
824f9efb69 | ||
|
|
58d524d75f | ||
|
|
f7e9792a5d | ||
|
|
921e4cef2e | ||
|
|
b5b837cf41 | ||
|
|
ed538b0307 | ||
|
|
dd8812cd04 | ||
|
|
4ca541fbc7 | ||
|
|
eb908d0aa7 | ||
|
|
478e2a68a0 | ||
|
|
1924d9b7ae |
19
.claude/commands/commit-push-pr.md
Normal file
19
.claude/commands/commit-push-pr.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Bash(git checkout --branch:*), Bash(git add:*), Bash(git status:*), Bash(git push:*), Bash(git commit:*), Bash(gh pr create:*)
|
||||||
|
description: Commit, push, and open a PR
|
||||||
|
---
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
- Current git status: !`git status`
|
||||||
|
- Current git diff (staged and unstaged changes): !`git diff HEAD`
|
||||||
|
- Current branch: !`git branch --show-current`
|
||||||
|
|
||||||
|
## Your task
|
||||||
|
|
||||||
|
Based on the above changes:
|
||||||
|
1. Create a new branch if on main
|
||||||
|
2. Create a single commit with an appropriate message
|
||||||
|
3. Push the branch to origin
|
||||||
|
4. Create a pull request using `gh pr create`
|
||||||
|
5. You have the capability to call multiple tools in a single response. You MUST do all of the above in a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls.
|
||||||
38
.claude/commands/dedupe.md
Normal file
38
.claude/commands/dedupe.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Bash(gh issue view:*), Bash(gh search:*), Bash(gh issue list:*), Bash(gh api:*), Bash(gh issue comment:*)
|
||||||
|
description: Find duplicate GitHub issues
|
||||||
|
---
|
||||||
|
|
||||||
|
Find up to 3 likely duplicate issues for a given GitHub issue.
|
||||||
|
|
||||||
|
To do this, follow these steps precisely:
|
||||||
|
|
||||||
|
1. Use an agent to check if the Github issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed.
|
||||||
|
2. Use an agent to view a Github issue, and ask the agent to return a summary of the issue
|
||||||
|
3. Then, launch 5 parallel agents to search Github for duplicates of this issue, using diverse keywords and search approaches, using the summary from #1
|
||||||
|
4. Next, feed the results from #1 and #2 into another agent, so that it can filter out false positives, that are likely not actually duplicates of the original issue. If there are no duplicates remaining, do not proceed.
|
||||||
|
5. Finally, comment back on the issue with a list of up to three duplicate issues (or zero, if there are no likely duplicates)
|
||||||
|
|
||||||
|
Notes (be sure to tell this to your agents, too):
|
||||||
|
|
||||||
|
- Use `gh` to interact with Github, rather than web fetch
|
||||||
|
- Do not use other tools, beyond `gh` (eg. don't use other MCP servers, file edit, etc.)
|
||||||
|
- Make a todo list first
|
||||||
|
- For your comment, follow the following format precisely (assuming for this example that you found 3 suspected duplicates):
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Found 3 possible duplicate issues:
|
||||||
|
|
||||||
|
1. <link to issue>
|
||||||
|
2. <link to issue>
|
||||||
|
3. <link to issue>
|
||||||
|
|
||||||
|
This issue will be automatically closed as a duplicate in 3 days.
|
||||||
|
|
||||||
|
- If your issue is a duplicate, please close it and 👍 the existing issue instead
|
||||||
|
- To prevent auto-closure, add a comment or 👎 this comment
|
||||||
|
|
||||||
|
🤖 OrcaSlicer bot
|
||||||
|
|
||||||
|
---
|
||||||
40
.claude/commands/oncall-triage.md
Normal file
40
.claude/commands/oncall-triage.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Bash(gh issue list:*), Bash(gh issue view:*), Bash(gh issue edit:*), TodoWrite
|
||||||
|
description: Triage GitHub issues and label critical ones for oncall
|
||||||
|
---
|
||||||
|
|
||||||
|
You're an oncall triage assistant for GitHub issues. Your task is to identify critical issues that require immediate oncall attention and apply the "oncall" label.
|
||||||
|
|
||||||
|
Repository: OrcaSlicer/OrcaSlicer
|
||||||
|
|
||||||
|
Task overview:
|
||||||
|
|
||||||
|
1. First, get all open bugs updated in the last 3 days with at least 50 engagements:
|
||||||
|
```bash
|
||||||
|
gh issue list --repo OrcaSlicer/OrcaSlicer --state open --label bug --limit 1000 --json number,title,updatedAt,comments,reactions | jq -r '.[] | select((.updatedAt >= (now - 259200 | strftime("%Y-%m-%dT%H:%M:%SZ"))) and ((.comments | length) + ([.reactions[].content] | length) >= 50)) | "\(.number)"'
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Save the list of issue numbers and create a TODO list with ALL of them. This ensures you process every single one.
|
||||||
|
|
||||||
|
3. For each issue in your TODO list:
|
||||||
|
- Use `gh issue view <number> --repo OrcaSlicer/OrcaSlicer --json title,body,labels,comments` to get full details
|
||||||
|
- Read and understand the full issue content and comments to determine actual user impact
|
||||||
|
- Evaluate: Is this truly blocking users from using Claude Code?
|
||||||
|
- Consider: "crash", "stuck", "frozen", "hang", "unresponsive", "cannot use", "blocked", "broken"
|
||||||
|
- Does it prevent core functionality? Can users work around it?
|
||||||
|
- Be conservative - only flag issues that truly prevent users from getting work done
|
||||||
|
|
||||||
|
4. For issues that are truly blocking and don't already have the "oncall" label:
|
||||||
|
- Use `gh issue edit <number> --repo OrcaSlicer/OrcaSlicer --add-label "oncall"`
|
||||||
|
- Mark the issue as complete in your TODO list
|
||||||
|
|
||||||
|
5. After processing all issues, provide a summary:
|
||||||
|
- List each issue number that received the "oncall" label
|
||||||
|
- Include the issue title and brief reason why it qualified
|
||||||
|
- If no issues qualified, state that clearly
|
||||||
|
|
||||||
|
Important:
|
||||||
|
- Process ALL issues in your TODO list systematically
|
||||||
|
- Don't post any comments to issues
|
||||||
|
- Only add the "oncall" label, never remove it
|
||||||
|
- Use individual `gh issue view` commands instead of bash for loops to avoid approval prompts
|
||||||
10
.cursorignore
Normal file
10
.cursorignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
|
||||||
|
deps/
|
||||||
|
build_*/
|
||||||
|
build/
|
||||||
|
localization/
|
||||||
|
sandboxes/
|
||||||
|
resources/*
|
||||||
|
!resources/web/
|
||||||
|
!resources/dailytip
|
||||||
|
!resources/shaders
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
ARG BASE_IMAGE
|
ARG BASE_IMAGE
|
||||||
FROM ${BASE_IMAGE}
|
FROM ${BASE_IMAGE}
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"name": "OrcaSlicer",
|
"name": "OrcaSlicer",
|
||||||
"build": {
|
"build": {
|
||||||
"dockerfile": "Dockerfile",
|
"dockerfile": "Dockerfile",
|
||||||
"args": {
|
"args": {
|
||||||
"PLATFORM": "linux/amd64",
|
"PLATFORM": "linux/amd64",
|
||||||
"BASE_IMAGE": "mcr.microsoft.com/devcontainers/cpp:ubuntu-20.04"
|
"BASE_IMAGE": "mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04"
|
||||||
},
|
},
|
||||||
"options": ["--platform=linux/amd64"]
|
"options": ["--platform=linux/amd64"]
|
||||||
},
|
},
|
||||||
"runArgs": ["--env-file", "/tmp/devcontainer.env"],
|
"runArgs": ["--platform=linux/amd64"],
|
||||||
"features": {
|
"features": {
|
||||||
"ghcr.io/devcontainers/features/desktop-lite:1": {
|
"ghcr.io/devcontainers/features/desktop-lite:1": {
|
||||||
"password": "orca"
|
"password": "orca"
|
||||||
@@ -16,17 +16,7 @@
|
|||||||
},
|
},
|
||||||
"customizations": {
|
"customizations": {
|
||||||
"vscode": {
|
"vscode": {
|
||||||
"settings": {
|
"settings": {
|
||||||
"cmake.configureArgs": [
|
|
||||||
"-DSLIC3R_GTK=3",
|
|
||||||
"-DBBL_RELEASE_TO_PUBLIC=1",
|
|
||||||
"-DBBL_INTERNAL_TESTING=0",
|
|
||||||
"-DSLIC3R_STATIC=1",
|
|
||||||
"-DCMAKE_PREFIX_PATH=${workspaceFolder}/deps/build/destdir/usr/local"
|
|
||||||
],
|
|
||||||
"cmake.buildToolArgs": [
|
|
||||||
"-l${containerEnv:CORES}"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Add the IDs of extensions you want installed when the container is created.
|
// Add the IDs of extensions you want installed when the container is created.
|
||||||
@@ -47,10 +37,6 @@
|
|||||||
"otherPortsAttributes": {
|
"otherPortsAttributes": {
|
||||||
"onAutoForward": "ignore"
|
"onAutoForward": "ignore"
|
||||||
},
|
},
|
||||||
|
|
||||||
"initializeCommand": {
|
|
||||||
"Setup Temporary Env File": "echo \"CORES=`nproc --all`\" > /tmp/devcontainer.env"
|
|
||||||
},
|
|
||||||
"onCreateCommand": {
|
"onCreateCommand": {
|
||||||
"Set postCreate executable flag": "chmod +x .devcontainer/postCreate.sh"
|
"Set postCreate executable flag": "chmod +x .devcontainer/postCreate.sh"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,12 +3,13 @@
|
|||||||
apt update
|
apt update
|
||||||
apt upgrade -y
|
apt upgrade -y
|
||||||
|
|
||||||
|
build_linux="./build_linux.sh -u"
|
||||||
echo "-----------------------------------------"
|
echo "-----------------------------------------"
|
||||||
echo "Running BuildLinux.sh with update flag..."
|
echo "Running ${build_linux}..."
|
||||||
echo "-----------------------------------------"
|
echo "-----------------------------------------"
|
||||||
./BuildLinux.sh -u
|
${build_linux}
|
||||||
|
|
||||||
echo "------------------------------"
|
echo "------------------------------"
|
||||||
echo "Installing missing packages..."
|
echo "Installing missing packages..."
|
||||||
echo "------------------------------"
|
echo "------------------------------"
|
||||||
apt install -y libgl1-mesa-dev m4 autoconf libtool
|
apt install -y libgl1-mesa-dev m4 autoconf libtool
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ deps/build-linux/*
|
|||||||
**/.DS_Store
|
**/.DS_Store
|
||||||
install_*
|
install_*
|
||||||
build_*/
|
build_*/
|
||||||
|
!build_linux.sh
|
||||||
SVG
|
SVG
|
||||||
Dockerfile
|
scripts/Dockerfile
|
||||||
DockerBuild.sh
|
scripts/DockerBuild.sh
|
||||||
DockerRun.sh
|
scripts/DockerRun.sh
|
||||||
|
scripts/.dockerignore
|
||||||
|
|||||||
14
.doxygen
14
.doxygen
@@ -48,7 +48,7 @@ PROJECT_NAME = OrcaSlicer
|
|||||||
# could be handy for archiving the generated documentation or if some version
|
# could be handy for archiving the generated documentation or if some version
|
||||||
# control system is used.
|
# control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = 1.6.3
|
PROJECT_NUMBER = latest
|
||||||
|
|
||||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||||
# for a project that appears at the top of each page and should give viewer a
|
# for a project that appears at the top of each page and should give viewer a
|
||||||
@@ -68,7 +68,7 @@ PROJECT_LOGO = ./resources/images/OrcaSlicer_32px.png
|
|||||||
# entered, it will be relative to the location where doxygen was started. If
|
# entered, it will be relative to the location where doxygen was started. If
|
||||||
# left blank the current directory will be used.
|
# left blank the current directory will be used.
|
||||||
|
|
||||||
OUTPUT_DIRECTORY = ../
|
OUTPUT_DIRECTORY = .
|
||||||
|
|
||||||
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
|
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
|
||||||
# sub-directories (in 2 levels) under the output directory of each output format
|
# sub-directories (in 2 levels) under the output directory of each output format
|
||||||
@@ -1059,7 +1059,11 @@ EXCLUDE_SYMLINKS = NO
|
|||||||
# Note that the wildcards are matched against the file with absolute path, so to
|
# Note that the wildcards are matched against the file with absolute path, so to
|
||||||
# exclude all test directories for example use the pattern */test/*
|
# exclude all test directories for example use the pattern */test/*
|
||||||
|
|
||||||
EXCLUDE_PATTERNS =
|
EXCLUDE_PATTERNS = */deps/*
|
||||||
|
EXCLUDE_PATTERNS = */build/*
|
||||||
|
EXCLUDE_PATTERNS = */deps_src/*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
||||||
# (namespaces, classes, functions, etc.) that should be excluded from the
|
# (namespaces, classes, functions, etc.) that should be excluded from the
|
||||||
@@ -1286,7 +1290,7 @@ GENERATE_HTML = YES
|
|||||||
# The default directory is: html.
|
# The default directory is: html.
|
||||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
||||||
HTML_OUTPUT = OrcaSlicer_Dev_Document
|
HTML_OUTPUT = internal_docs
|
||||||
|
|
||||||
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
|
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
|
||||||
# generated HTML page (for example: .htm, .php, .asp).
|
# generated HTML page (for example: .htm, .php, .asp).
|
||||||
@@ -1565,7 +1569,7 @@ TOC_EXPAND = NO
|
|||||||
# protocol see https://www.sitemaps.org
|
# protocol see https://www.sitemaps.org
|
||||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
||||||
SITEMAP_URL =
|
SITEMAP_URL = internals.orcaslicer.com
|
||||||
|
|
||||||
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
|
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
|
||||||
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
|
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
|
||||||
|
|||||||
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -0,0 +1,2 @@
|
|||||||
|
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||||
|
* text=auto
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -8,7 +8,7 @@ body:
|
|||||||
**Thank you for using Orca Slicer and wanting to report a bug.**
|
**Thank you for using Orca Slicer and wanting to report a bug.**
|
||||||
|
|
||||||
Please note that this is not the place to make feature requests or ask for help.
|
Please note that this is not the place to make feature requests or ask for help.
|
||||||
For this, please use the [Feature request](https://github.com/SoftFever/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=feature_request.yml) issue type or you can discuss your idea on our [Discord server](https://discord.gg/P4VE9UY9gJ) with others.
|
For this, please use the [Feature request](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=feature_request.yml) issue type or you can discuss your idea on our [Discord server](https://discord.gg/P4VE9UY9gJ) with others.
|
||||||
|
|
||||||
Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
|
Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -4,5 +4,5 @@ contact_links:
|
|||||||
url: https://discord.gg/P4VE9UY9gJ
|
url: https://discord.gg/P4VE9UY9gJ
|
||||||
about: Please ask and answer support "how do I?"questions here.
|
about: Please ask and answer support "how do I?"questions here.
|
||||||
- name: Discussion Forum
|
- name: Discussion Forum
|
||||||
url: https://github.com/SoftFever/OrcaSlicer/discussions
|
url: https://github.com/OrcaSlicer/OrcaSlicer/discussions
|
||||||
about: Please raise ideas and feature suggestions here.
|
about: Please raise ideas and feature suggestions here.
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -8,7 +8,7 @@ body:
|
|||||||
Thanks for taking the time to fill out this feature request!
|
Thanks for taking the time to fill out this feature request!
|
||||||
|
|
||||||
If your idea is still at the formulation stage, or you're not sure it would
|
If your idea is still at the formulation stage, or you're not sure it would
|
||||||
be useful to many users, you can raise it as a discussion topic under [Ideas](https://github.com/SoftFever/OrcaSlicer/discussions/categories/ideas)
|
be useful to many users, you can raise it as a discussion topic under [Ideas](https://github.com/OrcaSlicer/OrcaSlicer/discussions/categories/ideas)
|
||||||
or you can raise it on the [Discord server](https://discord.gg/P4VE9UY9gJ).
|
or you can raise it on the [Discord server](https://discord.gg/P4VE9UY9gJ).
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
attributes:
|
attributes:
|
||||||
|
|||||||
11
.github/actions/apt-install-deps/action.yml
vendored
Normal file
11
.github/actions/apt-install-deps/action.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
name: 'Apt Install Deps'
|
||||||
|
description: 'Install the packages needed for building and deploying'
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Install dependencies from build_linux.sh
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p ${{ github.workspace }}/deps/build/destdir
|
||||||
|
sudo env "ORCA_UPDATER_SIG_KEY=$ORCA_UPDATER_SIG_KEY" ./build_linux.sh -ur
|
||||||
|
sudo chown $USER -R ./
|
||||||
24
.github/workflows/assign.yml
vendored
Normal file
24
.github/workflows/assign.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
name: Assign Issue
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: 0 0 * * *
|
||||||
|
issue_comment:
|
||||||
|
types: [created]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
assign:
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Assign the user or unassign stale assignments
|
||||||
|
uses: takanome-dev/assign-issue-action@v2.3
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
maintainers: 'noisyfox,softfever'
|
||||||
|
days_until_unassign: 30
|
||||||
|
block_assignment: false
|
||||||
|
reminder_days: 7
|
||||||
|
max_assignments: 12
|
||||||
31
.github/workflows/auto-close-duplicates.yml
vendored
Normal file
31
.github/workflows/auto-close-duplicates.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Auto-close duplicate issues
|
||||||
|
description: Auto-closes issues that are duplicates of existing issues
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 9 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
auto-close-duplicates:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup Bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
|
|
||||||
|
- name: Auto-close duplicate issues
|
||||||
|
run: bun run scripts/auto-close-duplicates.ts
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
|
||||||
|
GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
|
||||||
|
STATSIG_API_KEY: ${{ secrets.STATSIG_API_KEY }}
|
||||||
44
.github/workflows/backfill-duplicate-comments.yml
vendored
Normal file
44
.github/workflows/backfill-duplicate-comments.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: Backfill Duplicate Comments
|
||||||
|
description: Triggers duplicate detection for old issues that don't have duplicate comments
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
days_back:
|
||||||
|
description: 'How many days back to look for old issues'
|
||||||
|
required: false
|
||||||
|
default: '90'
|
||||||
|
type: string
|
||||||
|
dry_run:
|
||||||
|
description: 'Dry run mode (true to only log what would be done)'
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- 'true'
|
||||||
|
- 'false'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
backfill-duplicate-comments:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: read
|
||||||
|
actions: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup Bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
|
|
||||||
|
- name: Backfill duplicate comments
|
||||||
|
run: bun run scripts/backfill-duplicate-comments.ts
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
DAYS_BACK: ${{ inputs.days_back }}
|
||||||
|
DRY_RUN: ${{ inputs.dry_run }}
|
||||||
189
.github/workflows/build_all.yml
vendored
189
.github/workflows/build_all.yml
vendored
@@ -5,6 +5,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- release/*
|
- release/*
|
||||||
|
- feature/auto-update # TODO: Remove after auto-update testing is complete
|
||||||
paths:
|
paths:
|
||||||
- 'deps/**'
|
- 'deps/**'
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
@@ -13,6 +14,7 @@ on:
|
|||||||
- 'localization/**'
|
- 'localization/**'
|
||||||
- 'resources/**'
|
- 'resources/**'
|
||||||
- ".github/workflows/build_*.yml"
|
- ".github/workflows/build_*.yml"
|
||||||
|
- 'scripts/flatpak/**'
|
||||||
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
@@ -20,13 +22,19 @@ on:
|
|||||||
- release/*
|
- release/*
|
||||||
paths:
|
paths:
|
||||||
- 'deps/**'
|
- 'deps/**'
|
||||||
|
- 'deps_src/**'
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
- '**/CMakeLists.txt'
|
- '**/CMakeLists.txt'
|
||||||
- 'version.inc'
|
- 'version.inc'
|
||||||
- ".github/workflows/build_*.yml"
|
- ".github/workflows/build_*.yml"
|
||||||
- 'BuildLinux.sh'
|
- 'build_linux.sh'
|
||||||
- 'build_release_vs2022.bat'
|
- 'build_release_vs2022.bat'
|
||||||
- 'build_release_macos.sh'
|
- 'build_release_macos.sh'
|
||||||
|
- 'scripts/flatpak/**'
|
||||||
|
|
||||||
|
|
||||||
|
schedule:
|
||||||
|
- cron: '0 17 * * *' # run once a day at 1 AM Singapore time (UTC+8)
|
||||||
|
|
||||||
workflow_dispatch: # allows for manual dispatch
|
workflow_dispatch: # allows for manual dispatch
|
||||||
inputs:
|
inputs:
|
||||||
@@ -36,75 +44,144 @@ on:
|
|||||||
default: false
|
default: false
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
# build_linux:
|
||||||
|
# name: Build Linux
|
||||||
|
# strategy:
|
||||||
|
# fail-fast: false
|
||||||
|
# # Don't run scheduled builds on forks:
|
||||||
|
# if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||||
|
# uses: ./.github/workflows/build_check_cache.yml
|
||||||
|
# with:
|
||||||
|
# os: ubuntu-24.04
|
||||||
|
# build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||||
|
# secrets: inherit
|
||||||
build_all:
|
build_all:
|
||||||
name: Build All
|
name: Build macOS (testing auto-update)
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-20.04
|
# TODO: Re-enable Windows after auto-update testing is complete
|
||||||
- os: ubuntu-24.04
|
# - os: windows-latest
|
||||||
- os: windows-latest
|
|
||||||
- os: macos-14
|
|
||||||
arch: x86_64
|
|
||||||
- os: macos-14
|
- os: macos-14
|
||||||
arch: arm64
|
arch: arm64
|
||||||
|
# Don't run scheduled builds on forks:
|
||||||
|
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||||
uses: ./.github/workflows/build_check_cache.yml
|
uses: ./.github/workflows/build_check_cache.yml
|
||||||
with:
|
with:
|
||||||
os: ${{ matrix.os }}
|
os: ${{ matrix.os }}
|
||||||
arch: ${{ matrix.arch }}
|
arch: ${{ matrix.arch }}
|
||||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||||
|
force-build: ${{ github.event_name == 'schedule' }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
flatpak:
|
# unit_tests:
|
||||||
name: "Flatpak"
|
# name: Unit Tests
|
||||||
runs-on: ubuntu-latest
|
# runs-on: ubuntu-24.04
|
||||||
env:
|
# needs: build_linux
|
||||||
date:
|
# if: ${{ !cancelled() && success() }}
|
||||||
ver:
|
# steps:
|
||||||
ver_pure:
|
# - name: Checkout
|
||||||
container:
|
# uses: actions/checkout@v6
|
||||||
image: bilelmoussaoui/flatpak-github-actions:gnome-46
|
# with:
|
||||||
options: --privileged
|
# sparse-checkout: |
|
||||||
volumes:
|
# .github
|
||||||
- /usr/local/lib/android:/usr/local/lib/android
|
# scripts
|
||||||
- /usr/share/dotnet:/usr/share/dotnet
|
# tests
|
||||||
- /opt/ghc:/opt/ghc1
|
# - name: Apt-Install Dependencies
|
||||||
- /usr/local/share/boost:/usr/local/share/boost1
|
# uses: ./.github/actions/apt-install-deps
|
||||||
steps:
|
# - name: Restore Test Artifact
|
||||||
- name: "Remove unneeded stuff to free disk space"
|
# uses: actions/download-artifact@v7
|
||||||
run:
|
# with:
|
||||||
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*"
|
# name: ${{ github.sha }}-tests
|
||||||
- uses: actions/checkout@v4
|
# - uses: lukka/get-cmake@latest
|
||||||
- name: Get the version and date
|
# with:
|
||||||
run: |
|
# cmakeVersion: "~3.28.0" # use most recent 3.28.x version
|
||||||
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
# - name: Unpackage and Run Unit Tests
|
||||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
# timeout-minutes: 20
|
||||||
ver="PR-${{ github.event.number }}"
|
# run: |
|
||||||
else
|
# tar -xvf build_tests.tar
|
||||||
ver=V$ver_pure
|
# scripts/run_unit_tests.sh
|
||||||
fi
|
# - name: Upload Test Logs
|
||||||
echo "ver=$ver" >> $GITHUB_ENV
|
# uses: actions/upload-artifact@v6
|
||||||
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
# if: ${{ failure() }}
|
||||||
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
# with:
|
||||||
shell: bash
|
# name: unit-test-logs
|
||||||
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
# path: build/tests/**/*.log
|
||||||
with:
|
# - name: Publish Test Results
|
||||||
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak
|
# if: always()
|
||||||
manifest-path: flatpak/io.github.softfever.OrcaSlicer.yml
|
# uses: EnricoMi/publish-unit-test-result-action@v2
|
||||||
cache: true
|
# with:
|
||||||
upload-artifact: false
|
# files: "ctest_results.xml"
|
||||||
- name: Deploy Flatpak to nightly release
|
# flatpak:
|
||||||
if: ${{github.ref == 'refs/heads/main'}}
|
# name: "Flatpak"
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
# container:
|
||||||
with:
|
# image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
|
||||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
# options: --privileged
|
||||||
release_id: 137995723
|
# volumes:
|
||||||
asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak
|
# - /usr/local/lib/android:/usr/local/lib/android
|
||||||
asset_name: OrcaSlicer-Linux-flatpak_${{ env.ver }}.flatpak
|
# - /usr/share/dotnet:/usr/share/dotnet
|
||||||
asset_content_type: application/octet-stream
|
# - /opt/ghc:/opt/ghc1
|
||||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
# - /usr/local/share/boost:/usr/local/share/boost1
|
||||||
|
# - /opt/hostedtoolcache:/opt/hostedtoolcache1
|
||||||
|
# strategy:
|
||||||
|
# fail-fast: false
|
||||||
|
# matrix:
|
||||||
|
# variant:
|
||||||
|
# - arch: x86_64
|
||||||
|
# runner: ubuntu-24.04
|
||||||
|
# - arch: aarch64
|
||||||
|
# runner: ubuntu-24.04-arm
|
||||||
|
# # Don't run scheduled builds on forks:
|
||||||
|
# if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||||
|
# runs-on: ${{ matrix.variant.runner }}
|
||||||
|
# env:
|
||||||
|
# date:
|
||||||
|
# ver:
|
||||||
|
# ver_pure:
|
||||||
|
# steps:
|
||||||
|
# - name: "Remove unneeded stuff to free disk space"
|
||||||
|
# run:
|
||||||
|
# rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*" /opt/hostedtoolcache1/*
|
||||||
|
# - uses: actions/checkout@v6
|
||||||
|
# - name: Get the version and date
|
||||||
|
# run: |
|
||||||
|
# ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
||||||
|
# if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||||
|
# ver="PR-${{ github.event.number }}"
|
||||||
|
# git_commit_hash="${{ github.event.pull_request.head.sha }}"
|
||||||
|
# else
|
||||||
|
# ver=V$ver_pure
|
||||||
|
# git_commit_hash=""
|
||||||
|
# fi
|
||||||
|
# echo "ver=$ver" >> $GITHUB_ENV
|
||||||
|
# echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
||||||
|
# echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||||
|
# echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
|
||||||
|
# shell: bash
|
||||||
|
# - uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
||||||
|
# with:
|
||||||
|
# bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||||
|
# manifest-path: scripts/flatpak/io.github.softfever.OrcaSlicer.yml
|
||||||
|
# cache: true
|
||||||
|
# arch: ${{ matrix.variant.arch }}
|
||||||
|
# upload-artifact: false
|
||||||
|
# - name: Upload artifacts Flatpak
|
||||||
|
# uses: actions/upload-artifact@v6
|
||||||
|
# with:
|
||||||
|
# name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||||
|
# path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak'
|
||||||
|
# - name: Deploy Flatpak to nightly release
|
||||||
|
# if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main'
|
||||||
|
# uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
|
# with:
|
||||||
|
# upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
|
# release_id: 137995723
|
||||||
|
# asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||||
|
# asset_name: OrcaSlicer-Linux-flatpak_nightly_${{ matrix.variant.arch }}.flatpak
|
||||||
|
# asset_content_type: application/octet-stream
|
||||||
|
# max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||||
|
|||||||
16
.github/workflows/build_check_cache.yml
vendored
16
.github/workflows/build_check_cache.yml
vendored
@@ -12,6 +12,9 @@ on:
|
|||||||
build-deps-only:
|
build-deps-only:
|
||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
force-build:
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_cache: # determines if there is a cache and outputs variables used in caching process
|
check_cache: # determines if there is a cache and outputs variables used in caching process
|
||||||
@@ -23,24 +26,22 @@ jobs:
|
|||||||
valid-cache: ${{ steps.cache_deps.outputs.cache-hit }}
|
valid-cache: ${{ steps.cache_deps.outputs.cache-hit }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
lfs: 'true'
|
lfs: 'true'
|
||||||
|
|
||||||
- name: set outputs
|
- name: set outputs
|
||||||
id: set_outputs
|
id: set_outputs
|
||||||
env:
|
env:
|
||||||
underscore-arch: ${{ inputs.os == 'macos-14' && '_' || ''}}${{ inputs.os == 'macos-14' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing
|
dep-folder-name: ${{ inputs.os != 'macos-14' && '/OrcaSlicer_dep' || '' }}
|
||||||
dash-arch: ${{ inputs.os == 'macos-14' && '-' || ''}}${{ inputs.os == 'macos-14' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing
|
|
||||||
dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-14') && 'OrcaSlicer_dep' || 'destdir' }}
|
|
||||||
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
|
output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
|
||||||
run: |
|
run: |
|
||||||
echo cache-key=${{ inputs.os }}${{ env.dash-arch }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
|
echo cache-key=${{ inputs.os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
|
||||||
echo cache-path=${{ github.workspace }}/deps/build${{ env.underscore-arch }}/${{ env.dep-folder-name }}${{ env.underscore-arch }} >> ${{ env.output-cmd }}
|
echo cache-path=${{ github.workspace }}/deps/build${{ env.dep-folder-name }} >> ${{ env.output-cmd }}
|
||||||
|
|
||||||
- name: load cache
|
- name: load cache
|
||||||
id: cache_deps
|
id: cache_deps
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.set_outputs.outputs.cache-path }}
|
path: ${{ steps.set_outputs.outputs.cache-path }}
|
||||||
key: ${{ steps.set_outputs.outputs.cache-key }}
|
key: ${{ steps.set_outputs.outputs.cache-key }}
|
||||||
@@ -57,4 +58,5 @@ jobs:
|
|||||||
os: ${{ inputs.os }}
|
os: ${{ inputs.os }}
|
||||||
arch: ${{ inputs.arch }}
|
arch: ${{ inputs.arch }}
|
||||||
build-deps-only: ${{ inputs.build-deps-only }}
|
build-deps-only: ${{ inputs.build-deps-only }}
|
||||||
|
force-build: ${{ inputs.force-build }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|||||||
62
.github/workflows/build_deps.yml
vendored
62
.github/workflows/build_deps.yml
vendored
@@ -19,11 +19,14 @@ on:
|
|||||||
build-deps-only:
|
build-deps-only:
|
||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
force-build:
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_deps:
|
build_deps:
|
||||||
name: Build Deps
|
name: Build Deps
|
||||||
if: inputs.build-deps-only || inputs.valid-cache != true
|
if: ${{ !cancelled() && (inputs.build-deps-only || inputs.force-build || inputs.valid-cache != true) }}
|
||||||
runs-on: ${{ inputs.os }}
|
runs-on: ${{ inputs.os }}
|
||||||
env:
|
env:
|
||||||
date:
|
date:
|
||||||
@@ -31,12 +34,12 @@ jobs:
|
|||||||
|
|
||||||
# Setup the environment
|
# Setup the environment
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
lfs: 'true'
|
lfs: 'true'
|
||||||
|
|
||||||
- name: load cached deps
|
- name: load cached deps
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: ${{ inputs.cache-path }}
|
path: ${{ inputs.cache-path }}
|
||||||
key: ${{ inputs.cache-key }}
|
key: ${{ inputs.cache-key }}
|
||||||
@@ -66,61 +69,50 @@ jobs:
|
|||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
choco install strawberryperl
|
choco install strawberryperl
|
||||||
.\build_release_vs2022.bat deps
|
.\build_release_vs.bat deps
|
||||||
.\build_release_vs2022.bat pack
|
.\build_release_vs.bat pack
|
||||||
cd ${{ github.workspace }}/deps/build
|
cd ${{ github.workspace }}/deps/build
|
||||||
|
|
||||||
- name: Build on Mac ${{ inputs.arch }}
|
- name: Build on Mac ${{ inputs.arch }}
|
||||||
if: inputs.os == 'macos-14'
|
if: inputs.os == 'macos-14'
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
brew install automake texinfo ninja libtool
|
brew install automake texinfo libtool
|
||||||
brew list
|
brew list
|
||||||
mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}
|
|
||||||
mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep_${{ inputs.arch }}
|
|
||||||
brew uninstall --ignore-dependencies zstd
|
brew uninstall --ignore-dependencies zstd
|
||||||
./build_release_macos.sh -dpx -a ${{ inputs.arch }} -t 10.15 -1
|
./build_release_macos.sh -dx -a universal -t 10.15 -1
|
||||||
|
for arch in arm64 x86_64; do
|
||||||
|
(cd "${{ github.workspace }}/deps/build/${arch}" && \
|
||||||
|
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
|
||||||
|
done
|
||||||
brew install zstd
|
brew install zstd
|
||||||
|
|
||||||
|
|
||||||
- name: Install Ubuntu Build Dependencies
|
- name: Apt-Install Dependencies
|
||||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
if: inputs.os == 'ubuntu-24.04'
|
||||||
working-directory: ${{ github.workspace }}
|
uses: ./.github/actions/apt-install-deps
|
||||||
env:
|
|
||||||
apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
|
|
||||||
webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
|
|
||||||
run: |
|
|
||||||
${{ env.apt-cmd }} update
|
|
||||||
${{ env.apt-cmd }} install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
|
|
||||||
libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
|
|
||||||
libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-${{ env.webkit-ver }}-dev \
|
|
||||||
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
|
|
||||||
gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev texinfo
|
|
||||||
|
|
||||||
- name: Build on Ubuntu
|
- name: Build on Ubuntu
|
||||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ${{ github.workspace }}/deps/build
|
|
||||||
mkdir -p ${{ github.workspace }}/deps/build/destdir
|
mkdir -p ${{ github.workspace }}/deps/build/destdir
|
||||||
sudo ./BuildLinux.sh -ur
|
./build_linux.sh -dr
|
||||||
sudo chown $USER -R ./
|
|
||||||
./BuildLinux.sh -dr
|
|
||||||
cd deps/build
|
cd deps/build
|
||||||
tar -czvf OrcaSlicer_dep_ubuntu_$(date +"%Y%m%d").tar.gz destdir
|
tar -czvf OrcaSlicer_dep_ubuntu_$(date +"%Y%m%d").tar.gz destdir
|
||||||
|
|
||||||
|
|
||||||
# Upload Artifacts
|
# Upload Artifacts
|
||||||
- name: Upload Mac ${{ inputs.arch }} artifacts
|
# - name: Upload Mac ${{ inputs.arch }} artifacts
|
||||||
if: inputs.os == 'macos-14'
|
# if: inputs.os == 'macos-14'
|
||||||
uses: actions/upload-artifact@v4
|
# uses: actions/upload-artifact@v6
|
||||||
with:
|
# with:
|
||||||
name: OrcaSlicer_dep_mac_${{ inputs.arch }}_${{ env.date }}
|
# name: OrcaSlicer_dep_mac_${{ env.date }}
|
||||||
path: ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep*.tar.gz
|
# path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.tar.gz
|
||||||
|
|
||||||
- name: Upload Windows artifacts
|
- name: Upload Windows artifacts
|
||||||
if: inputs.os == 'windows-latest'
|
if: inputs.os == 'windows-latest'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: OrcaSlicer_dep_win64_${{ env.date }}
|
name: OrcaSlicer_dep_win64_${{ env.date }}
|
||||||
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.zip
|
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.zip
|
||||||
@@ -129,7 +121,7 @@ jobs:
|
|||||||
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
||||||
env:
|
env:
|
||||||
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: OrcaSlicer_dep_ubuntu_${{ env.ubuntu-ver }}_${{ env.date }}
|
name: OrcaSlicer_dep_ubuntu_${{ env.ubuntu-ver }}_${{ env.date }}
|
||||||
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep_ubuntu_*.tar.gz
|
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep_ubuntu_*.tar.gz
|
||||||
@@ -137,7 +129,7 @@ jobs:
|
|||||||
build_orca:
|
build_orca:
|
||||||
name: Build OrcaSlicer
|
name: Build OrcaSlicer
|
||||||
needs: [build_deps]
|
needs: [build_deps]
|
||||||
if: ${{ !cancelled() && !inputs.build-deps-only && (inputs.valid-cache == true && needs.build_deps.result == 'skipped') || (inputs.valid-cache != true && success()) }}
|
if: ${{ !cancelled() && !inputs.build-deps-only && (inputs.force-build || (inputs.valid-cache == true && needs.build_deps.result == 'skipped') || (inputs.valid-cache != true && success())) }}
|
||||||
uses: ./.github/workflows/build_orca.yml
|
uses: ./.github/workflows/build_orca.yml
|
||||||
with:
|
with:
|
||||||
cache-key: ${{ inputs.cache-key }}
|
cache-key: ${{ inputs.cache-key }}
|
||||||
|
|||||||
296
.github/workflows/build_orca.yml
vendored
296
.github/workflows/build_orca.yml
vendored
@@ -22,15 +22,16 @@ jobs:
|
|||||||
date:
|
date:
|
||||||
ver:
|
ver:
|
||||||
ver_pure:
|
ver_pure:
|
||||||
|
ORCA_UPDATER_SIG_KEY: ${{ secrets.ORCA_UPDATER_SIG_KEY }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
lfs: 'true'
|
lfs: 'true'
|
||||||
|
|
||||||
- name: load cached deps
|
- name: load cached deps
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: ${{ inputs.cache-path }}
|
path: ${{ inputs.cache-path }}
|
||||||
key: ${{ inputs.cache-key }}
|
key: ${{ inputs.cache-key }}
|
||||||
@@ -46,12 +47,15 @@ jobs:
|
|||||||
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
||||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||||
ver="PR-${{ github.event.number }}"
|
ver="PR-${{ github.event.number }}"
|
||||||
|
git_commit_hash="${{ github.event.pull_request.head.sha }}"
|
||||||
else
|
else
|
||||||
ver=V$ver_pure
|
ver=V$ver_pure
|
||||||
|
git_commit_hash=""
|
||||||
fi
|
fi
|
||||||
echo "ver=$ver" >> $GITHUB_ENV
|
echo "ver=$ver" >> $GITHUB_ENV
|
||||||
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
echo "ver_pure=$ver_pure" >> $GITHUB_ENV
|
||||||
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||||
|
echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Get the version and date on Windows
|
- name: Get the version and date on Windows
|
||||||
@@ -64,16 +68,19 @@ jobs:
|
|||||||
|
|
||||||
if ($eventName -eq 'pull_request') {
|
if ($eventName -eq 'pull_request') {
|
||||||
$ver = "PR" + $prNumber
|
$ver = "PR" + $prNumber
|
||||||
|
$git_commit_hash = "${{ github.event.pull_request.head.sha }}"
|
||||||
} else {
|
} else {
|
||||||
$versionContent = Get-Content version.inc -Raw
|
$versionContent = Get-Content version.inc -Raw
|
||||||
if ($versionContent -match 'set\(SoftFever_VERSION "(.*?)"\)') {
|
if ($versionContent -match 'set\(SoftFever_VERSION "(.*?)"\)') {
|
||||||
$ver = $matches[1]
|
$ver = $matches[1]
|
||||||
}
|
}
|
||||||
$ver = "V$ver"
|
$ver = "V$ver"
|
||||||
|
$git_commit_hash = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "ver=$ver" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
echo "ver=$ver" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||||
echo "date=$date" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
echo "date=$date" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||||
|
echo "git_commit_hash=$git_commit_hash" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||||
echo "date: ${{ env.date }} version: ${{ env.ver }}"
|
echo "date: ${{ env.date }} version: ${{ env.ver }}"
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|
||||||
@@ -81,10 +88,9 @@ jobs:
|
|||||||
- name: Install tools mac
|
- name: Install tools mac
|
||||||
if: inputs.os == 'macos-14'
|
if: inputs.os == 'macos-14'
|
||||||
run: |
|
run: |
|
||||||
brew install ninja libtool
|
brew install libtool
|
||||||
brew list
|
brew list
|
||||||
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}
|
mkdir -p ${{ github.workspace }}/deps/build
|
||||||
mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}}
|
|
||||||
|
|
||||||
- name: Free disk space
|
- name: Free disk space
|
||||||
if: inputs.os == 'macos-14'
|
if: inputs.os == 'macos-14'
|
||||||
@@ -98,11 +104,13 @@ jobs:
|
|||||||
if: inputs.os == 'macos-14'
|
if: inputs.os == 'macos-14'
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
./build_release_macos.sh -s -n -x -a ${{inputs.arch}} -t 10.15 -1
|
# TODO: Change back to -a universal after auto-update testing is complete
|
||||||
|
./build_release_macos.sh -s -n -x -a arm64 -t 10.15 -1
|
||||||
|
|
||||||
# Thanks to RaySajuuk, it's working now
|
# Thanks to RaySajuuk, it's working now
|
||||||
- name: Sign app and notary
|
- name: Sign app and notary
|
||||||
if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && inputs.os == 'macos-14'
|
# TODO: Remove feature/auto-update after testing is complete
|
||||||
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') || github.ref == 'refs/heads/feature/auto-update') && inputs.os == 'macos-14'
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
env:
|
env:
|
||||||
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
||||||
@@ -119,39 +127,148 @@ jobs:
|
|||||||
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
|
security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
|
||||||
security list-keychain -d user -s $KEYCHAIN_PATH
|
security list-keychain -d user -s $KEYCHAIN_PATH
|
||||||
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
|
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH
|
||||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/OrcaSlicer.app
|
# TODO: Change build/arm64 back to build/universal after auto-update testing is complete
|
||||||
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
|
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer.app
|
||||||
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
# Sign OrcaSlicer_profile_validator.app if it exists
|
||||||
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
if [ -f "${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||||
|
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create main OrcaSlicer DMG without the profile validator helper
|
||||||
|
mkdir -p ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg
|
||||||
|
rm -rf ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg/*
|
||||||
|
cp -R ${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer.app ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg/
|
||||||
|
ln -sfn /Applications ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg/Applications
|
||||||
|
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
|
||||||
|
# Create separate OrcaSlicer_profile_validator DMG if the app exists
|
||||||
|
if [ -f "${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||||
|
mkdir -p ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg
|
||||||
|
rm -rf ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg/*
|
||||||
|
cp -R ${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg/
|
||||||
|
ln -sfn /Applications ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg/Applications
|
||||||
|
hdiutil create -volname "OrcaSlicer Profile Validator" -srcfolder ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg -ov -format UDZO OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Notarize main DMG
|
||||||
xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
|
xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}"
|
||||||
xcrun notarytool submit "OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
|
xcrun notarytool submit "OrcaSlicer_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
|
||||||
xcrun stapler staple OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
xcrun stapler staple OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
|
||||||
|
# Notarize profile validator DMG if it exists
|
||||||
|
if [ -f "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" ]; then
|
||||||
|
xcrun notarytool submit "OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait
|
||||||
|
xcrun stapler staple OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Sign DMG for Sparkle auto-update
|
||||||
|
# TODO: Remove feature/auto-update after testing is complete
|
||||||
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') || github.ref == 'refs/heads/feature/auto-update') && inputs.os == 'macos-14'
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
env:
|
||||||
|
SPARKLE_PRIVATE_KEY: ${{ secrets.SPARKLE_PRIVATE_KEY }}
|
||||||
|
run: |
|
||||||
|
# Get the Sparkle sign_update tool from deps (installed to OrcaSlicer_dep/bin)
|
||||||
|
SIGN_UPDATE="${{ github.workspace }}/deps/build/arm64/OrcaSlicer_dep/bin/sign_update"
|
||||||
|
|
||||||
|
# Fallback to x86_64 if arm64 not found
|
||||||
|
if [ ! -f "$SIGN_UPDATE" ]; then
|
||||||
|
SIGN_UPDATE="${{ github.workspace }}/deps/build/x86_64/OrcaSlicer_dep/bin/sign_update"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$SIGN_UPDATE" ] && [ -n "$SPARKLE_PRIVATE_KEY" ]; then
|
||||||
|
# Write the private key to a temp file
|
||||||
|
echo "$SPARKLE_PRIVATE_KEY" > /tmp/sparkle_private_key
|
||||||
|
chmod 600 /tmp/sparkle_private_key
|
||||||
|
|
||||||
|
# Sign the DMG and capture the signature
|
||||||
|
SIGNATURE=$("$SIGN_UPDATE" "OrcaSlicer_Mac_universal_${{ env.ver }}.dmg" -f /tmp/sparkle_private_key)
|
||||||
|
|
||||||
|
# Clean up the key file
|
||||||
|
rm -f /tmp/sparkle_private_key
|
||||||
|
|
||||||
|
# Save signature to a file for later use in appcast generation
|
||||||
|
echo "$SIGNATURE" > OrcaSlicer_Mac_universal_${{ env.ver }}.dmg.sig
|
||||||
|
echo "Sparkle signature generated: $SIGNATURE"
|
||||||
|
|
||||||
|
# Also output as GitHub Actions output
|
||||||
|
echo "sparkle_signature=$SIGNATURE" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "Warning: Sparkle sign_update tool not found at $SIGN_UPDATE or private key not set, skipping signature generation"
|
||||||
|
if [ ! -f "$SIGN_UPDATE" ]; then
|
||||||
|
echo "sign_update not found. Available files:"
|
||||||
|
ls -la "${{ github.workspace }}/deps/build/arm64/OrcaSlicer_dep/" || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Create DMG without notary
|
- name: Create DMG without notary
|
||||||
if: github.ref != 'refs/heads/main' && inputs.os == 'macos-14'
|
# TODO: Remove feature/auto-update exclusion after testing is complete
|
||||||
|
if: github.ref != 'refs/heads/main' && github.ref != 'refs/heads/feature/auto-update' && !startsWith(github.ref, 'refs/heads/release/') && inputs.os == 'macos-14'
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications
|
# TODO: Change build/arm64 back to build/universal after auto-update testing is complete
|
||||||
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
mkdir -p ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg
|
||||||
|
rm -rf ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg/*
|
||||||
|
cp -R ${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer.app ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg/
|
||||||
|
ln -sfn /Applications ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg/Applications
|
||||||
|
hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/arm64/OrcaSlicer_dmg -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
|
||||||
|
# Create separate OrcaSlicer_profile_validator DMG if the app exists
|
||||||
|
if [ -f "${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||||
|
mkdir -p ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg
|
||||||
|
rm -rf ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg/*
|
||||||
|
cp -R ${{ github.workspace }}/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg/
|
||||||
|
ln -sfn /Applications ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg/Applications
|
||||||
|
hdiutil create -volname "OrcaSlicer Profile Validator" -srcfolder ${{ github.workspace }}/build/arm64/OrcaSlicer_profile_validator_dmg -ov -format UDZO OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Upload artifacts mac
|
- name: Upload artifacts mac
|
||||||
if: inputs.os == 'macos-14'
|
if: inputs.os == 'macos-14'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}
|
name: OrcaSlicer_Mac_universal_${{ env.ver }}
|
||||||
path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
|
||||||
|
- name: Upload Sparkle signature mac
|
||||||
|
if: inputs.os == 'macos-14'
|
||||||
|
uses: actions/upload-artifact@v5
|
||||||
|
with:
|
||||||
|
name: OrcaSlicer_Mac_universal_${{ env.ver }}_sig
|
||||||
|
path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg.sig
|
||||||
|
if-no-files-found: ignore
|
||||||
|
|
||||||
|
- name: Upload OrcaSlicer_profile_validator DMG mac
|
||||||
|
if: inputs.os == 'macos-14'
|
||||||
|
uses: actions/upload-artifact@v6
|
||||||
|
with:
|
||||||
|
name: OrcaSlicer_profile_validator_Mac_universal_DMG_${{ env.ver }}
|
||||||
|
path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
if-no-files-found: ignore
|
||||||
|
|
||||||
- name: Deploy Mac release
|
- name: Deploy Mac release
|
||||||
if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
release_id: 137995723
|
release_id: 137995723
|
||||||
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
|
||||||
asset_name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg
|
asset_name: OrcaSlicer_Mac_universal_nightly.dmg
|
||||||
asset_content_type: application/octet-stream
|
asset_content_type: application/octet-stream
|
||||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||||
|
|
||||||
|
- name: Deploy Mac OrcaSlicer_profile_validator DMG release
|
||||||
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && inputs.os == 'macos-14'
|
||||||
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
|
with:
|
||||||
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
|
release_id: 137995723
|
||||||
|
asset_path: ${{ github.workspace }}/OrcaSlicer_profile_validator_Mac_universal_${{ env.ver }}.dmg
|
||||||
|
asset_name: OrcaSlicer_profile_validator_Mac_universal_nightly.dmg
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
max_releases: 1
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
- name: setup MSVC
|
- name: setup MSVC
|
||||||
if: inputs.os == 'windows-latest'
|
if: inputs.os == 'windows-latest'
|
||||||
@@ -168,8 +285,8 @@ jobs:
|
|||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
env:
|
env:
|
||||||
WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\'
|
WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\'
|
||||||
WindowsSDKVersion: '10.0.22000.0\'
|
WindowsSDKVersion: '10.0.26100.0\'
|
||||||
run: .\build_release_vs2022.bat slicer
|
run: .\build_release_vs.bat slicer
|
||||||
|
|
||||||
- name: Create installer Win
|
- name: Create installer Win
|
||||||
if: inputs.os == 'windows-latest'
|
if: inputs.os == 'windows-latest'
|
||||||
@@ -191,85 +308,98 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload artifacts Win zip
|
- name: Upload artifacts Win zip
|
||||||
if: inputs.os == 'windows-latest'
|
if: inputs.os == 'windows-latest'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: OrcaSlicer_Windows_${{ env.ver }}_portable
|
name: OrcaSlicer_Windows_${{ env.ver }}_portable
|
||||||
path: ${{ github.workspace }}/build/OrcaSlicer
|
path: ${{ github.workspace }}/build/OrcaSlicer
|
||||||
|
|
||||||
- name: Upload artifacts Win installer
|
- name: Upload artifacts Win installer
|
||||||
if: inputs.os == 'windows-latest'
|
if: inputs.os == 'windows-latest'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: OrcaSlicer_Windows_${{ env.ver }}
|
name: OrcaSlicer_Windows_${{ env.ver }}
|
||||||
path: ${{ github.workspace }}/build/OrcaSlicer*.exe
|
path: ${{ github.workspace }}/build/OrcaSlicer*.exe
|
||||||
|
|
||||||
- name: Upload artifacts Win PDB
|
- name: Upload artifacts Win PDB
|
||||||
if: inputs.os == 'windows-latest'
|
if: inputs.os == 'windows-latest'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: PDB
|
name: PDB
|
||||||
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
|
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
|
||||||
|
|
||||||
|
- name: Upload OrcaSlicer_profile_validator Win
|
||||||
|
if: inputs.os == 'windows-latest'
|
||||||
|
uses: actions/upload-artifact@v6
|
||||||
|
with:
|
||||||
|
name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}
|
||||||
|
path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
|
||||||
|
|
||||||
- name: Deploy Windows release portable
|
- name: Deploy Windows release portable
|
||||||
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
release_id: 137995723
|
release_id: 137995723
|
||||||
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
||||||
asset_name: OrcaSlicer_Windows_${{ env.ver }}_portable.zip
|
asset_name: OrcaSlicer_Windows_nightly_portable.zip
|
||||||
asset_content_type: application/x-zip-compressed
|
asset_content_type: application/x-zip-compressed
|
||||||
max_releases: 1
|
max_releases: 1
|
||||||
|
|
||||||
- name: Deploy Windows release installer
|
- name: Deploy Windows release installer
|
||||||
if: github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
release_id: 137995723
|
release_id: 137995723
|
||||||
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
|
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
|
||||||
asset_name: OrcaSlicer_Windows_Installer_${{ env.ver }}.exe
|
asset_name: OrcaSlicer_Windows_Installer_nightly.exe
|
||||||
|
asset_content_type: application/x-msdownload
|
||||||
|
max_releases: 1
|
||||||
|
|
||||||
|
- name: Deploy Windows OrcaSlicer_profile_validator release
|
||||||
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && inputs.os == 'windows-latest'
|
||||||
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
|
with:
|
||||||
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
|
release_id: 137995723
|
||||||
|
asset_path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
|
||||||
|
asset_name: OrcaSlicer_profile_validator_Windows_nightly.exe
|
||||||
asset_content_type: application/x-msdownload
|
asset_content_type: application/x-msdownload
|
||||||
max_releases: 1
|
max_releases: 1
|
||||||
|
|
||||||
# Ubuntu
|
# Ubuntu
|
||||||
- name: Install dependencies
|
- name: Apt-Install Dependencies
|
||||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
if: inputs.os == 'ubuntu-24.04'
|
||||||
env:
|
uses: ./.github/actions/apt-install-deps
|
||||||
apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
|
|
||||||
webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
|
|
||||||
libfuse2-pkg: ${{ (inputs.os == 'ubuntu-20.04' && 'libfuse2') || (inputs.os == 'ubuntu-24.04' && 'libfuse2t64') || '' }}
|
|
||||||
run: |
|
|
||||||
${{ env.apt-cmd }} update
|
|
||||||
${{ env.apt-cmd }} install -y autoconf build-essential cmake curl eglexternalplatform-dev \
|
|
||||||
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
|
|
||||||
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
|
|
||||||
libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
|
|
||||||
libwebkit2gtk-${{ env.webkit-ver }}-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget ${{ env.libfuse2-pkg }}
|
|
||||||
|
|
||||||
- name: Install dependencies from BuildLinux.sh
|
# Tests must built at the same time as the slicer;
|
||||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
# if you untangle them feel free to separate them here too
|
||||||
shell: bash
|
- name: Build slicer and tests
|
||||||
run: sudo ./BuildLinux.sh -ur
|
|
||||||
|
|
||||||
- name: Fix permissions
|
|
||||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
|
||||||
shell: bash
|
|
||||||
run: sudo chown $USER -R ./
|
|
||||||
|
|
||||||
- name: Build slicer
|
|
||||||
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||||
run: |
|
run: |
|
||||||
./BuildLinux.sh -isr
|
./build_linux.sh -istr
|
||||||
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||||
chmod +x ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
chmod +x ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||||
|
tar -cvpf build_tests.tar build/tests
|
||||||
|
|
||||||
|
# Use tar because upload-artifacts won't always preserve directory structure
|
||||||
|
# and doesn't preserve file permissions
|
||||||
|
- name: Upload Test Artifact
|
||||||
|
if: inputs.os == 'ubuntu-24.04'
|
||||||
|
uses: actions/upload-artifact@v6
|
||||||
|
with:
|
||||||
|
name: ${{ github.sha }}-tests
|
||||||
|
overwrite: true
|
||||||
|
path: build_tests.tar
|
||||||
|
retention-days: 5
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Build orca_custom_preset_tests
|
- name: Build orca_custom_preset_tests
|
||||||
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04'
|
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04'
|
||||||
working-directory: ${{ github.workspace }}/build/src
|
working-directory: ${{ github.workspace }}/build/src/Release
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -g 1
|
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -g 1
|
||||||
@@ -281,29 +411,59 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
||||||
path: './build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage'
|
path: './build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage'
|
||||||
|
|
||||||
|
- name: Upload OrcaSlicer_profile_validator Ubuntu
|
||||||
|
if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
|
||||||
|
env:
|
||||||
|
ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
|
||||||
|
uses: actions/upload-artifact@v6
|
||||||
|
with:
|
||||||
|
name: OrcaSlicer_profile_validator_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
|
||||||
|
path: './build/src/Release/OrcaSlicer_profile_validator'
|
||||||
|
|
||||||
- name: Deploy Ubuntu release
|
- name: Deploy Ubuntu release
|
||||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
||||||
env:
|
env:
|
||||||
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
release_id: 137995723
|
release_id: 137995723
|
||||||
asset_path: ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
asset_path: ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||||
asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_nightly.AppImage
|
||||||
asset_content_type: application/octet-stream
|
asset_content_type: application/octet-stream
|
||||||
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
|
||||||
|
- name: Deploy Ubuntu release
|
||||||
|
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
|
||||||
|
uses: rickstaa/action-create-tag@v1
|
||||||
|
with:
|
||||||
|
tag: "nightly-builds"
|
||||||
|
tag_exists_error: false
|
||||||
|
force_push_tag: true
|
||||||
|
message: "nightly-builds"
|
||||||
|
|
||||||
- name: Deploy orca_custom_preset_tests
|
- name: Deploy Ubuntu OrcaSlicer_profile_validator release
|
||||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' }}
|
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && (inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04') }}
|
||||||
|
env:
|
||||||
|
ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
|
||||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
with:
|
with:
|
||||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
|
release_id: 137995723
|
||||||
|
asset_path: ./build/src/Release/OrcaSlicer_profile_validator
|
||||||
|
asset_name: OrcaSlicer_profile_validator_Linux${{ env.ubuntu-ver-str }}_nightly
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
max_releases: 1
|
||||||
|
|
||||||
|
- name: Deploy orca_custom_preset_tests
|
||||||
|
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
|
||||||
|
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||||
|
with:
|
||||||
|
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||||
release_id: 137995723
|
release_id: 137995723
|
||||||
asset_path: ${{ github.workspace }}/resources/profiles/orca_custom_preset_tests.zip
|
asset_path: ${{ github.workspace }}/resources/profiles/orca_custom_preset_tests.zip
|
||||||
asset_name: orca_custom_preset_tests.zip
|
asset_name: orca_custom_preset_tests.zip
|
||||||
|
|||||||
2
.github/workflows/check_locale.yml
vendored
2
.github/workflows/check_locale.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install gettext
|
- name: Install gettext
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
4
.github/workflows/check_profiles.yml
vendored
4
.github/workflows/check_profiles.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
|||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Run extra JSON check
|
- name: Run extra JSON check
|
||||||
run: |
|
run: |
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
- name: validate custom presets
|
- name: validate custom presets
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
run: |
|
run: |
|
||||||
curl -LJO https://github.com/SoftFever/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip
|
curl -LJO https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip
|
||||||
unzip ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles
|
unzip ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles
|
||||||
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2
|
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2
|
||||||
|
|
||||||
|
|||||||
81
.github/workflows/dedupe-issues.yml
vendored
Normal file
81
.github/workflows/dedupe-issues.yml
vendored
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
name: Orca Issue Dedupe
|
||||||
|
description: Automatically dedupe GitHub issues using AI
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
issue_number:
|
||||||
|
description: 'Issue number to process for duplicate detection'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
dedupe-issues:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Run Claude Code slash command
|
||||||
|
uses: anthropics/claude-code-base-action@beta
|
||||||
|
with:
|
||||||
|
prompt: "/dedupe ${{ github.repository }}/issues/${{ github.event.issue.number || inputs.issue_number }}"
|
||||||
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||||
|
claude_args: "--model claude-sonnet-4-5-20250929"
|
||||||
|
claude_env: |
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Log duplicate comment event to Statsig
|
||||||
|
if: always()
|
||||||
|
env:
|
||||||
|
STATSIG_API_KEY: ${{ secrets.STATSIG_API_KEY }}
|
||||||
|
run: |
|
||||||
|
ISSUE_NUMBER=${{ github.event.issue.number || inputs.issue_number }}
|
||||||
|
REPO=${{ github.repository }}
|
||||||
|
|
||||||
|
if [ -z "$STATSIG_API_KEY" ]; then
|
||||||
|
echo "STATSIG_API_KEY not found, skipping Statsig logging"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare the event payload
|
||||||
|
EVENT_PAYLOAD=$(jq -n \
|
||||||
|
--arg issue_number "$ISSUE_NUMBER" \
|
||||||
|
--arg repo "$REPO" \
|
||||||
|
--arg triggered_by "${{ github.event_name }}" \
|
||||||
|
'{
|
||||||
|
events: [{
|
||||||
|
eventName: "github_duplicate_comment_added",
|
||||||
|
value: 1,
|
||||||
|
metadata: {
|
||||||
|
repository: $repo,
|
||||||
|
issue_number: ($issue_number | tonumber),
|
||||||
|
triggered_by: $triggered_by,
|
||||||
|
workflow_run_id: "${{ github.run_id }}"
|
||||||
|
},
|
||||||
|
time: (now | floor | tostring)
|
||||||
|
}]
|
||||||
|
}')
|
||||||
|
|
||||||
|
# Send to Statsig API
|
||||||
|
echo "Logging duplicate comment event to Statsig for issue #${ISSUE_NUMBER}"
|
||||||
|
|
||||||
|
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST https://events.statsigapi.net/v1/log_event \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "STATSIG-API-KEY: ${STATSIG_API_KEY}" \
|
||||||
|
-d "$EVENT_PAYLOAD")
|
||||||
|
|
||||||
|
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
|
||||||
|
BODY=$(echo "$RESPONSE" | head -n-1)
|
||||||
|
|
||||||
|
if [ "$HTTP_CODE" -eq 200 ] || [ "$HTTP_CODE" -eq 202 ]; then
|
||||||
|
echo "Successfully logged duplicate comment event for issue #${ISSUE_NUMBER}"
|
||||||
|
else
|
||||||
|
echo "Failed to log duplicate comment event for issue #${ISSUE_NUMBER}. HTTP ${HTTP_CODE}: ${BODY}"
|
||||||
|
fi
|
||||||
78
.github/workflows/doxygen-docs.yml
vendored
Normal file
78
.github/workflows/doxygen-docs.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
name: Generate Doxygen Documentation
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * 1' # Every Monday at midnight UTC
|
||||||
|
workflow_dispatch: # Manual trigger
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-deploy:
|
||||||
|
name: Build and Deploy Docs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 60
|
||||||
|
# Only run on main branch of the main repository
|
||||||
|
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main'
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: thejerrybao/setup-swap-space@v1
|
||||||
|
with:
|
||||||
|
swap-space-path: /swapfile
|
||||||
|
swap-size-gb: 8
|
||||||
|
remove-existing-swap-files: true
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Install Doxygen and Graphviz
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y doxygen graphviz
|
||||||
|
|
||||||
|
- name: Generate documentation
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
# Override DOT_NUM_THREADS to avoid parallel dot race condition bug
|
||||||
|
sed -i 's/^DOT_NUM_THREADS.*/DOT_NUM_THREADS = 1/' .doxygen
|
||||||
|
doxygen .doxygen
|
||||||
|
# Verify documentation was generated
|
||||||
|
if [ ! -f "internal_docs/index.html" ]; then
|
||||||
|
echo "Error: Documentation generation failed - index.html not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
- name: Install Rclone
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
sudo -v
|
||||||
|
curl -fsSL https://rclone.org/install.sh | sudo bash
|
||||||
|
|
||||||
|
- name: optimize
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
rm -f internal_docs/Nodes.xml internal_docs/Tokens.xml
|
||||||
|
find internal_docs -name "*.map" -type f -delete || true
|
||||||
|
find internal_docs -name "*.md5" -type f -delete || true
|
||||||
|
|
||||||
|
- name: upload
|
||||||
|
# We configure rclone dynamically using environment variables
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
# Remove existing config if it exists to avoid conflicts
|
||||||
|
rclone config delete cloudflare 2>/dev/null || true
|
||||||
|
rclone config create cloudflare s3 \
|
||||||
|
provider Cloudflare \
|
||||||
|
access_key_id ${{ secrets.R2_ACCESS_KEY_ID }} \
|
||||||
|
secret_access_key ${{ secrets.R2_SECRET_ACCESS_KEY }} \
|
||||||
|
endpoint ${{ secrets.R2_ENDPOINT }}
|
||||||
|
|
||||||
|
rclone sync internal_docs/ cloudflare:orcaslicer-internals \
|
||||||
|
--progress \
|
||||||
|
--transfers 512 \
|
||||||
|
--checkers 512
|
||||||
|
|
||||||
|
echo "Documentation upload completed successfully"
|
||||||
138
.github/workflows/generate_appcast.yml
vendored
Normal file
138
.github/workflows/generate_appcast.yml
vendored
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
name: Generate Appcast
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Version to generate appcast for (e.g., 2.3.2)'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate_appcast:
|
||||||
|
name: Generate and Deploy Appcast
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
|
||||||
|
- name: Get version from release or input
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
if [ "${{ github.event_name }}" == "release" ]; then
|
||||||
|
VERSION="${{ github.event.release.tag_name }}"
|
||||||
|
VERSION="${VERSION#v}" # Remove 'v' prefix if present
|
||||||
|
else
|
||||||
|
VERSION="${{ github.event.inputs.version }}"
|
||||||
|
fi
|
||||||
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
echo "Version: $VERSION"
|
||||||
|
|
||||||
|
- name: Download release assets info
|
||||||
|
id: assets
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
VERSION="${{ steps.version.outputs.version }}"
|
||||||
|
TAG="v$VERSION"
|
||||||
|
|
||||||
|
# Get release info
|
||||||
|
RELEASE_URL="https://github.com/${{ github.repository }}/releases/tag/$TAG"
|
||||||
|
echo "release_url=$RELEASE_URL" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# Get macOS DMG URL and size
|
||||||
|
# Use browser_download_url for public access (not .url which is the API endpoint)
|
||||||
|
MAC_ASSET=$(gh release view "$TAG" --json assets -q '.assets[] | select(.name | contains("Mac_universal")) | select(.name | endswith(".dmg"))')
|
||||||
|
if [ -n "$MAC_ASSET" ]; then
|
||||||
|
MAC_URL=$(echo "$MAC_ASSET" | jq -r '.browser_download_url // .url')
|
||||||
|
MAC_SIZE=$(echo "$MAC_ASSET" | jq -r '.size')
|
||||||
|
echo "mac_url=$MAC_URL" >> $GITHUB_OUTPUT
|
||||||
|
echo "mac_size=$MAC_SIZE" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get Windows installer URL and size
|
||||||
|
# Use browser_download_url for public access (not .url which is the API endpoint)
|
||||||
|
WIN_ASSET=$(gh release view "$TAG" --json assets -q '.assets[] | select(.name | contains("Windows_Installer")) | select(.name | endswith(".exe"))')
|
||||||
|
if [ -n "$WIN_ASSET" ]; then
|
||||||
|
WIN_URL=$(echo "$WIN_ASSET" | jq -r '.browser_download_url // .url')
|
||||||
|
WIN_SIZE=$(echo "$WIN_ASSET" | jq -r '.size')
|
||||||
|
echo "win_url=$WIN_URL" >> $GITHUB_OUTPUT
|
||||||
|
echo "win_size=$WIN_SIZE" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Download signatures
|
||||||
|
id: signatures
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
VERSION="${{ steps.version.outputs.version }}"
|
||||||
|
TAG="v$VERSION"
|
||||||
|
|
||||||
|
# Try to download macOS signature artifact
|
||||||
|
MAC_SIG_ARTIFACT="OrcaSlicer_Mac_universal_V${VERSION}_sig"
|
||||||
|
if gh run download --name "$MAC_SIG_ARTIFACT" -D /tmp/mac_sig 2>/dev/null; then
|
||||||
|
MAC_SIG=$(cat /tmp/mac_sig/*.sig)
|
||||||
|
echo "mac_signature=$MAC_SIG" >> $GITHUB_OUTPUT
|
||||||
|
echo "Found macOS signature: $MAC_SIG"
|
||||||
|
else
|
||||||
|
echo "No macOS signature artifact found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Windows, signature would come from WinSparkle signing (if implemented)
|
||||||
|
# echo "win_signature=$WIN_SIG" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Generate appcast.xml
|
||||||
|
run: |
|
||||||
|
python scripts/generate_appcast.py \
|
||||||
|
--version "${{ steps.version.outputs.version }}" \
|
||||||
|
--release-notes-url "${{ steps.assets.outputs.release_url }}" \
|
||||||
|
--mac-url "${{ steps.assets.outputs.mac_url }}" \
|
||||||
|
--mac-signature "${{ steps.signatures.outputs.mac_signature }}" \
|
||||||
|
--mac-length "${{ steps.assets.outputs.mac_size }}" \
|
||||||
|
--output appcast.xml
|
||||||
|
|
||||||
|
echo "Generated appcast.xml:"
|
||||||
|
cat appcast.xml
|
||||||
|
|
||||||
|
- name: Upload appcast artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: appcast
|
||||||
|
path: appcast.xml
|
||||||
|
|
||||||
|
# Deploy to Cloudflare KV (for check-version.orcaslicer.com Worker)
|
||||||
|
- name: Deploy appcast to Cloudflare KV
|
||||||
|
if: github.event_name == 'release'
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
KV_NAMESPACE_ID: ${{ secrets.CLOUDFLARE_KV_APPCAST_ID }}
|
||||||
|
run: |
|
||||||
|
if [ -n "$CLOUDFLARE_API_TOKEN" ] && [ -n "$CLOUDFLARE_ACCOUNT_ID" ] && [ -n "$KV_NAMESPACE_ID" ]; then
|
||||||
|
# Deploy appcast.xml
|
||||||
|
curl -X PUT \
|
||||||
|
"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/storage/kv/namespaces/$KV_NAMESPACE_ID/values/appcast.xml" \
|
||||||
|
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
||||||
|
-H "Content-Type: text/plain" \
|
||||||
|
--data-binary @appcast.xml
|
||||||
|
echo "Appcast deployed to Cloudflare KV"
|
||||||
|
|
||||||
|
# Deploy macOS signature file (for verification/auditing)
|
||||||
|
if [ -n "${{ steps.signatures.outputs.mac_signature }}" ]; then
|
||||||
|
echo "${{ steps.signatures.outputs.mac_signature }}" > mac_signature.txt
|
||||||
|
curl -X PUT \
|
||||||
|
"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/storage/kv/namespaces/$KV_NAMESPACE_ID/values/signatures/${{ steps.version.outputs.version }}/mac.sig" \
|
||||||
|
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
||||||
|
-H "Content-Type: text/plain" \
|
||||||
|
--data-binary @mac_signature.txt
|
||||||
|
echo "macOS signature deployed to Cloudflare KV"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Cloudflare credentials not configured, skipping deployment"
|
||||||
|
fi
|
||||||
71
.github/workflows/orca_bot.yml
vendored
71
.github/workflows/orca_bot.yml
vendored
@@ -1,71 +0,0 @@
|
|||||||
name: Orca bot
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 0 * * *"
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
logLevel:
|
|
||||||
description: 'Log level'
|
|
||||||
required: true
|
|
||||||
default: 'warning'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
stale:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
pull-requests: write
|
|
||||||
contents: write # only for delete-branch option
|
|
||||||
steps:
|
|
||||||
- uses: actions/stale@v9
|
|
||||||
with:
|
|
||||||
# PAT for GitHub API authentication
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
# Max number of operations per run
|
|
||||||
operations-per-run: 1000
|
|
||||||
# Order to get issues/PRs
|
|
||||||
ascending: true
|
|
||||||
|
|
||||||
# ISSUES
|
|
||||||
# Do not auto-close an issue if it is assigned to a milestone
|
|
||||||
exempt-all-issue-milestones: true
|
|
||||||
# Exempt all issues with assignees from stale
|
|
||||||
exempt-all-issue-assignees: true
|
|
||||||
# Idle number of days before marking issues stale
|
|
||||||
days-before-issue-stale: 90
|
|
||||||
# Idle number of days before marking issues close
|
|
||||||
days-before-issue-close: 7
|
|
||||||
# Label to apply on staled issues
|
|
||||||
stale-issue-label: "stale"
|
|
||||||
# Issue close reason
|
|
||||||
close-issue-reason: not_planned
|
|
||||||
# Remove stale label from issues on updates
|
|
||||||
remove-issue-stale-when-updated: true
|
|
||||||
# Issue stale message
|
|
||||||
stale-issue-message: "Orca bot: this issue is stale because it has been open for 90 days with no activity."
|
|
||||||
# Issue closure message
|
|
||||||
close-issue-message: "Orca bot: This issue was closed because it has been inactive for 7 days since being marked as stale."
|
|
||||||
|
|
||||||
# PRs
|
|
||||||
# Do not auto-close a PR if it is assigned to a milestone
|
|
||||||
exempt-all-pr-milestones: true
|
|
||||||
# Exempt all PRs with assignees from stale
|
|
||||||
exempt-all-pr-assignees: true
|
|
||||||
# Skip the stale action for draft PRs
|
|
||||||
exempt-draft-pr: true
|
|
||||||
# Idle number of days before marking PRs stale
|
|
||||||
days-before-pr-stale: -1
|
|
||||||
# Idle number of days before marking PRs close
|
|
||||||
days-before-pr-close: -1
|
|
||||||
# Label to apply on staled PRs
|
|
||||||
stale-pr-label: "stale"
|
|
||||||
# Label to apply on closed PRs
|
|
||||||
close-pr-label: not_planned
|
|
||||||
# Remove stale label from PRs on updates
|
|
||||||
remove-pr-stale-when-updated: true
|
|
||||||
# PR stale message
|
|
||||||
stale-pr-message: "Orca bot: this PR is stale because it has been open for XX days with no activity."
|
|
||||||
# PR closure message
|
|
||||||
close-pr-message: "Orca bot: This PR was closed because it has been inactive for X days since being marked as stale."
|
|
||||||
# Delete branch after closing a stale PR
|
|
||||||
delete-branch: true
|
|
||||||
46
.github/workflows/publish_docs_to_wiki.yml
vendored
46
.github/workflows/publish_docs_to_wiki.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
name: Publish docs to Wiki
|
|
||||||
|
|
||||||
# Trigger this action only if there are changes pushed to the doc/** directory under the main branch
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- doc/** # This includes all sub folders
|
|
||||||
branches:
|
|
||||||
- main # This can be changed to any branch of your preference
|
|
||||||
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
logLevel:
|
|
||||||
description: 'Log level'
|
|
||||||
required: true
|
|
||||||
default: 'warning'
|
|
||||||
|
|
||||||
env:
|
|
||||||
USER_TOKEN: ${{ secrets.GH_WIKI_PAT }} # This is the repository secret personal access token
|
|
||||||
USER_NAME: ${{ vars.BOT_USER_NAME }} # Enter the username of your (bot) account
|
|
||||||
OWNER: ${{ github.event.repository.owner.name }} # This is the repository owner
|
|
||||||
REPOSITORY_NAME: ${{ github.event.repository.name }} # This is the repository name
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
publish_docs_to_wiki:
|
|
||||||
name: Publish docs to Wiki
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
# 1. Clone the current wiki master branch to a folder named `tmp_wiki`
|
|
||||||
- name: Pull content from wiki
|
|
||||||
run: |
|
|
||||||
git config --global user.name "$USER_NAME"
|
|
||||||
git config --global user.email "$USER_NAME"@users.noreply.github.com
|
|
||||||
git clone https://"$USER_TOKEN"@github.com/SoftFever/"$REPOSITORY_NAME".wiki.git tmp_wiki
|
|
||||||
# 4. Synchronize differences between `doc` & `tmp_wiki`
|
|
||||||
# 5. Push new Wiki content
|
|
||||||
- name: Push main repo content to wiki
|
|
||||||
run: |
|
|
||||||
rsync -av --delete doc/ tmp_wiki/ --exclude .git
|
|
||||||
cd tmp_wiki
|
|
||||||
git add .
|
|
||||||
git commit -m "Updated Wiki content"
|
|
||||||
git push origin master
|
|
||||||
44
.github/workflows/shellcheck.yml
vendored
Normal file
44
.github/workflows/shellcheck.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- '**.sh'
|
||||||
|
- 'scripts/linux.d/*'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '**.sh'
|
||||||
|
- 'scripts/linux.d/*'
|
||||||
|
schedule:
|
||||||
|
- cron: '55 7 * * *' # run once a day near midnight US Pacific time
|
||||||
|
workflow_dispatch: # allows for manual dispatch
|
||||||
|
|
||||||
|
name: "Shellcheck"
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
shellcheck:
|
||||||
|
name: Shellcheck
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Cache shellcheck download
|
||||||
|
id: cache-shellcheck-v0_11
|
||||||
|
uses: actions/cache@v5
|
||||||
|
with:
|
||||||
|
path: ~/shellcheck
|
||||||
|
key: ${{ runner.os }}-shellcheck-v0_11
|
||||||
|
|
||||||
|
- name: Download shellcheck
|
||||||
|
if: steps.cache-shellcheck-v0_11.outputs.cache-hit != 'true'
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
INPUT_VERSION: "v0.11.0"
|
||||||
|
run: |
|
||||||
|
curl -L#o ~/sc.tar.xz "https://github.com/koalaman/shellcheck/releases/download/${INPUT_VERSION}/shellcheck-${INPUT_VERSION}.linux.x86_64.tar.xz"
|
||||||
|
tar -xvf ~/sc.tar.xz -C ~
|
||||||
|
mv ~/shellcheck-"${INPUT_VERSION}"/shellcheck ~/shellcheck
|
||||||
|
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Shellcheck scripts
|
||||||
|
run: 'find . -not -name \*.md \( -path ./scripts/linux.d/\* -o -name \*.sh \) -print0 | xargs -0 ~/shellcheck'
|
||||||
6
.github/workflows/update-translation.yml
vendored
6
.github/workflows/update-translation.yml
vendored
@@ -10,10 +10,10 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: '3.12'
|
python-version: '3.12'
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Update translation catalog
|
- name: Update translation catalog
|
||||||
run: |
|
run: |
|
||||||
./run_gettext.sh --full
|
./scripts/run_gettext.sh --full
|
||||||
git add localization/i18n/*
|
git add localization/i18n/*
|
||||||
|
|
||||||
- name: Commit translation catalog updates
|
- name: Commit translation catalog updates
|
||||||
|
|||||||
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,6 +1,8 @@
|
|||||||
Build
|
Build
|
||||||
Build.bat
|
Build.bat
|
||||||
/build*/
|
/build*/
|
||||||
|
CMakeLists.txt.user
|
||||||
|
**/CMakeLists.txt.autosave
|
||||||
deps/build*
|
deps/build*
|
||||||
MYMETA.json
|
MYMETA.json
|
||||||
MYMETA.yml
|
MYMETA.yml
|
||||||
@@ -17,6 +19,7 @@ xs/assertlib*
|
|||||||
local-lib
|
local-lib
|
||||||
/src/TAGS
|
/src/TAGS
|
||||||
/.vscode/
|
/.vscode/
|
||||||
|
/.vscode
|
||||||
build-linux/*
|
build-linux/*
|
||||||
deps/build*/*
|
deps/build*/*
|
||||||
**/.DS_Store
|
**/.DS_Store
|
||||||
@@ -35,3 +38,10 @@ src/OrcaSlicer-doc/
|
|||||||
**/.flatpak-builder/
|
**/.flatpak-builder/
|
||||||
resources/profiles/user/default
|
resources/profiles/user/default
|
||||||
*.code-workspace
|
*.code-workspace
|
||||||
|
deps_src/build/
|
||||||
|
test.js
|
||||||
|
/.cache/
|
||||||
|
.clangd
|
||||||
|
internal_docs/
|
||||||
|
# Sparkle auto-update test artifacts
|
||||||
|
/.sparkle-test/
|
||||||
|
|||||||
23
AGENTS.md
Normal file
23
AGENTS.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Repository Guidelines
|
||||||
|
|
||||||
|
## Project Structure & Module Organization
|
||||||
|
OrcaSlicer’s C++17 sources live in `src/`, split by feature modules and platform adapters. User assets, icons, and printer presets are in `resources/`; translations stay in `localization/`. Tests sit in `tests/`, grouped by domain (`libslic3r/`, `sla_print/`, etc.) with fixtures under `tests/data/`. CMake helpers reside in `cmake/`, and longer references in `doc/` and `SoftFever_doc/`. Automation scripts belong in `scripts/` and `tools/`. Treat everything in `deps/` and `deps_src/` as vendored snapshots—do not modify without mirroring upstream tags.
|
||||||
|
|
||||||
|
## Build, Test, and Development Commands
|
||||||
|
Use out-of-source builds:
|
||||||
|
- `cmake -S . -B build -DCMAKE_BUILD_TYPE=Release` configures dependencies and generates build files.
|
||||||
|
- `cmake --build build --target OrcaSlicer --config Release` compiles the app; add `--parallel` to speed up.
|
||||||
|
- `cmake --build build --target tests` then `ctest --test-dir build --output-on-failure` runs automated suites.
|
||||||
|
Platform helpers such as `build_linux.sh`, `build_release_macos.sh`, and `build_release_vs2022.bat` wrap the same flow with toolchain flags. Use `build_release_macos.sh -sx` when reproducing macOS build issues, and `scripts/DockerBuild.sh` for reproducible container builds.
|
||||||
|
|
||||||
|
## Coding Style & Naming Conventions
|
||||||
|
`.clang-format` enforces 4-space indents, a 140-column limit, aligned initializers, and brace wrapping for classes and functions. Run `clang-format -i <file>` before committing; the CMake `clang-format` target is available when LLVM tools are on your PATH. Prefer `CamelCase` for classes, `snake_case` for functions and locals, and `SCREAMING_CASE` for constants, matching conventions in `src/`. Keep headers self-contained and align include order with the IWYU pragmas.
|
||||||
|
|
||||||
|
## Testing Guidelines
|
||||||
|
Unit tests rely on Catch2 (`tests/catch2/`). Name specs after the component under test—for example `tests/libslic3r/TestPlanarHole.cpp`—and tag long-running cases so `ctest -L fast` remains useful. Cover new algorithms with deterministic fixtures or sample G-code stored in `tests/data/`. Document manual printer validation or regression slicer checks in your PR when automated coverage is insufficient.
|
||||||
|
|
||||||
|
## Commit & Pull Request Guidelines
|
||||||
|
The history favors concise, sentence-style subject lines with optional issue references, e.g., `Fix grid lines origin for multiple plates (#10724)`. Squash fixups locally before opening a PR. Complete `.github/pull_request_template.md`, include reproduction steps or screenshots for UI changes, and mention impacted presets or translations. Link issues via `Closes #NNNN` when applicable, and call out dependency bumps or profile migrations for maintainer review.
|
||||||
|
|
||||||
|
## Security & Configuration Tips
|
||||||
|
Follow `SECURITY.md` for vulnerability reporting. Keep API tokens and printer credentials out of tracked configs; use `sandboxes/` for experimental settings. When touching third-party code in `deps_src/`, record the upstream commit or release in your PR description and run the relevant platform build script to confirm integration.
|
||||||
132
Build.PL
132
Build.PL
@@ -1,132 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
print "This script is currently used for installing Perl dependenices for running\n";
|
|
||||||
print "the libslic3r unit / integration tests through Perl prove.\n";
|
|
||||||
print "If you don't plan to run the unit / integration tests, you don't need to\n";
|
|
||||||
print "install these dependencies to build and run OrcaSlicer.\n";
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
use Config;
|
|
||||||
use File::Spec;
|
|
||||||
|
|
||||||
my %prereqs = qw(
|
|
||||||
Devel::CheckLib 0
|
|
||||||
ExtUtils::MakeMaker 6.80
|
|
||||||
ExtUtils::ParseXS 3.22
|
|
||||||
ExtUtils::XSpp 0
|
|
||||||
ExtUtils::XSpp::Cmd 0
|
|
||||||
ExtUtils::CppGuess 0
|
|
||||||
ExtUtils::Typemaps 0
|
|
||||||
ExtUtils::Typemaps::Basic 0
|
|
||||||
File::Basename 0
|
|
||||||
File::Spec 0
|
|
||||||
Getopt::Long 0
|
|
||||||
Module::Build::WithXSpp 0.14
|
|
||||||
Moo 1.003001
|
|
||||||
POSIX 0
|
|
||||||
Scalar::Util 0
|
|
||||||
Test::More 0
|
|
||||||
IO::Scalar 0
|
|
||||||
Time::HiRes 0
|
|
||||||
);
|
|
||||||
my %recommends = qw(
|
|
||||||
Class::XSAccessor 0
|
|
||||||
Test::Harness 0
|
|
||||||
);
|
|
||||||
|
|
||||||
my $sudo = grep { $_ eq '--sudo' } @ARGV;
|
|
||||||
my $nolocal = grep { $_ eq '--nolocal' } @ARGV;
|
|
||||||
|
|
||||||
my @missing_prereqs = ();
|
|
||||||
if ($ENV{SLIC3R_NO_AUTO}) {
|
|
||||||
foreach my $module (sort keys %prereqs) {
|
|
||||||
my $version = $prereqs{$module};
|
|
||||||
next if eval "use $module $version; 1";
|
|
||||||
push @missing_prereqs, $module if exists $prereqs{$module};
|
|
||||||
print "Missing prerequisite $module $version\n";
|
|
||||||
}
|
|
||||||
foreach my $module (sort keys %recommends) {
|
|
||||||
my $version = $recommends{$module};
|
|
||||||
next if eval "use $module $version; 1";
|
|
||||||
print "Missing optional $module $version\n";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
my @try = (
|
|
||||||
$ENV{CPANM} // (),
|
|
||||||
File::Spec->catfile($Config{sitebin}, 'cpanm'),
|
|
||||||
File::Spec->catfile($Config{installscript}, 'cpanm'),
|
|
||||||
);
|
|
||||||
|
|
||||||
my $cpanm;
|
|
||||||
foreach my $path (@try) {
|
|
||||||
if (-e $path) { # don't use -x because it fails on Windows
|
|
||||||
$cpanm = $path;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!$cpanm) {
|
|
||||||
if ($^O =~ /^(?:darwin|linux)$/ && system(qw(which cpanm)) == 0) {
|
|
||||||
$cpanm = 'cpanm';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
die <<'EOF'
|
|
||||||
cpanm was not found. Please install it before running this script.
|
|
||||||
|
|
||||||
There are several ways to install cpanm, try one of these:
|
|
||||||
|
|
||||||
apt-get install cpanminus
|
|
||||||
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
|
|
||||||
cpan App::cpanminus
|
|
||||||
|
|
||||||
If it is installed in a non-standard location you can do:
|
|
||||||
|
|
||||||
CPANM=/path/to/cpanm perl Build.PL
|
|
||||||
|
|
||||||
EOF
|
|
||||||
if !$cpanm;
|
|
||||||
my @cpanm_args = ();
|
|
||||||
push @cpanm_args, "--sudo" if $sudo;
|
|
||||||
|
|
||||||
# install local::lib without --local-lib otherwise it's not usable afterwards
|
|
||||||
if (!eval "use local::lib qw(local-lib); 1") {
|
|
||||||
my $res = system $cpanm, @cpanm_args, 'local::lib';
|
|
||||||
warn "Warning: local::lib is required. You might need to run the `cpanm --sudo local::lib` command in order to install it.\n"
|
|
||||||
if $res != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
push @cpanm_args, ('--local-lib', 'local-lib') if ! $nolocal;
|
|
||||||
|
|
||||||
# make sure our cpanm is updated (old ones don't support the ~ syntax)
|
|
||||||
system $cpanm, @cpanm_args, 'App::cpanminus';
|
|
||||||
|
|
||||||
my %modules = (%prereqs, %recommends);
|
|
||||||
foreach my $module (sort keys %modules) {
|
|
||||||
my $version = $modules{$module};
|
|
||||||
my @cmd = ($cpanm, @cpanm_args);
|
|
||||||
|
|
||||||
# temporary workaround for upstream bug in test
|
|
||||||
push @cmd, '--notest'
|
|
||||||
if $module =~ /^(?:OpenGL|Test::Harness)$/;
|
|
||||||
|
|
||||||
push @cmd, "$module~$version";
|
|
||||||
|
|
||||||
my $res = system @cmd;
|
|
||||||
if ($res != 0) {
|
|
||||||
if (exists $prereqs{$module}) {
|
|
||||||
push @missing_prereqs, $module;
|
|
||||||
} else {
|
|
||||||
printf "Don't worry, this module is optional.\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print "\n";
|
|
||||||
print "In the next step, you need to build the OrcaSlicer C++ library.\n";
|
|
||||||
print "1) Create a build directory and change to it\n";
|
|
||||||
print "2) run cmake .. -DCMAKE_BUILD_TYPE=Release\n";
|
|
||||||
print "3) run make\n";
|
|
||||||
print "4) to execute the automatic tests, run ctest --verbose\n";
|
|
||||||
__END__
|
|
||||||
192
BuildLinux.sh
192
BuildLinux.sh
@@ -1,192 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
export ROOT=$(dirname $(readlink -f ${0}))
|
|
||||||
|
|
||||||
set -e # exit on first error
|
|
||||||
|
|
||||||
function check_available_memory_and_disk() {
|
|
||||||
FREE_MEM_GB=$(free -g -t | grep 'Mem' | rev | cut -d" " -f1 | rev)
|
|
||||||
MIN_MEM_GB=10
|
|
||||||
|
|
||||||
FREE_DISK_KB=$(df -k . | tail -1 | awk '{print $4}')
|
|
||||||
MIN_DISK_KB=$((10 * 1024 * 1024))
|
|
||||||
|
|
||||||
if [ ${FREE_MEM_GB} -le ${MIN_MEM_GB} ]; then
|
|
||||||
echo -e "\nERROR: Orca Slicer Builder requires at least ${MIN_MEM_GB}G of 'available' mem (systen has only ${FREE_MEM_GB}G available)"
|
|
||||||
echo && free -h && echo
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${FREE_DISK_KB} -le ${MIN_DISK_KB} ]]; then
|
|
||||||
echo -e "\nERROR: Orca Slicer Builder requires at least $(echo ${MIN_DISK_KB} |awk '{ printf "%.1fG\n", $1/1024/1024; }') (systen has only $(echo ${FREE_DISK_KB} | awk '{ printf "%.1fG\n", $1/1024/1024; }') disk free)"
|
|
||||||
echo && df -h . && echo
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function usage() {
|
|
||||||
echo "Usage: ./BuildLinux.sh [-1][-b][-c][-d][-i][-r][-s][-u]"
|
|
||||||
echo " -1: limit builds to 1 core (where possible)"
|
|
||||||
echo " -b: build in debug mode"
|
|
||||||
echo " -c: force a clean build"
|
|
||||||
echo " -d: build deps (optional)"
|
|
||||||
echo " -h: this help output"
|
|
||||||
echo " -i: Generate appimage (optional)"
|
|
||||||
echo " -r: skip ram and disk checks (low ram compiling)"
|
|
||||||
echo " -s: build orca-slicer (optional)"
|
|
||||||
echo " -u: update and build dependencies (optional and need sudo)"
|
|
||||||
echo "For a first use, you want to 'sudo ./BuildLinux.sh -u'"
|
|
||||||
echo " and then './BuildLinux.sh -dsi'"
|
|
||||||
}
|
|
||||||
|
|
||||||
unset name
|
|
||||||
while getopts ":1bcdghirsu" opt; do
|
|
||||||
case ${opt} in
|
|
||||||
1 )
|
|
||||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
|
||||||
;;
|
|
||||||
b )
|
|
||||||
BUILD_DEBUG="1"
|
|
||||||
;;
|
|
||||||
c )
|
|
||||||
CLEAN_BUILD=1
|
|
||||||
;;
|
|
||||||
d )
|
|
||||||
BUILD_DEPS="1"
|
|
||||||
;;
|
|
||||||
h ) usage
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
i )
|
|
||||||
BUILD_IMAGE="1"
|
|
||||||
;;
|
|
||||||
r )
|
|
||||||
SKIP_RAM_CHECK="1"
|
|
||||||
;;
|
|
||||||
s )
|
|
||||||
BUILD_ORCA="1"
|
|
||||||
;;
|
|
||||||
u )
|
|
||||||
UPDATE_LIB="1"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ${OPTIND} -eq 1 ]
|
|
||||||
then
|
|
||||||
usage
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release)
|
|
||||||
# treat ubuntu as debian
|
|
||||||
if [ "${DISTRIBUTION}" == "ubuntu" ] || [ "${DISTRIBUTION}" == "linuxmint" ]
|
|
||||||
then
|
|
||||||
DISTRIBUTION="debian"
|
|
||||||
fi
|
|
||||||
if [ ! -f ./linux.d/${DISTRIBUTION} ]
|
|
||||||
then
|
|
||||||
echo "Your distribution does not appear to be currently supported by these build scripts"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
source ./linux.d/${DISTRIBUTION}
|
|
||||||
|
|
||||||
echo "FOUND_GTK3=${FOUND_GTK3}"
|
|
||||||
if [[ -z "${FOUND_GTK3_DEV}" ]]
|
|
||||||
then
|
|
||||||
echo "Error, you must install the dependencies before."
|
|
||||||
echo "Use option -u with sudo"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Changing date in version..."
|
|
||||||
{
|
|
||||||
# change date in version
|
|
||||||
sed -i "s/+UNKNOWN/_$(date '+%F')/" version.inc
|
|
||||||
}
|
|
||||||
echo "done"
|
|
||||||
|
|
||||||
|
|
||||||
if ! [[ -n "${SKIP_RAM_CHECK}" ]]
|
|
||||||
then
|
|
||||||
check_available_memory_and_disk
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "${BUILD_DEPS}" ]]
|
|
||||||
then
|
|
||||||
echo "Configuring dependencies..."
|
|
||||||
BUILD_ARGS="-DDEP_WX_GTK3=ON"
|
|
||||||
if [[ -n "${CLEAN_BUILD}" ]]
|
|
||||||
then
|
|
||||||
rm -fr deps/build
|
|
||||||
fi
|
|
||||||
if [ ! -d "deps/build" ]
|
|
||||||
then
|
|
||||||
mkdir deps/build
|
|
||||||
fi
|
|
||||||
if [[ -n "${BUILD_DEBUG}" ]]
|
|
||||||
then
|
|
||||||
# have to build deps with debug & release or the cmake won't find everything it needs
|
|
||||||
if [ ! -d "deps/build/release" ]
|
|
||||||
then
|
|
||||||
mkdir deps/build/release
|
|
||||||
fi
|
|
||||||
cmake -S deps -B deps/build/release -G Ninja -DDESTDIR="${PWD}/deps/build/destdir" -DDEP_DOWNLOAD_DIR="${PWD}/deps/DL_CACHE" ${BUILD_ARGS}
|
|
||||||
cmake --build deps/build/release
|
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "cmake -S deps -B deps/build -G Ninja ${BUILD_ARGS}"
|
|
||||||
cmake -S deps -B deps/build -G Ninja ${BUILD_ARGS}
|
|
||||||
cmake --build deps/build
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [[ -n "${BUILD_ORCA}" ]]
|
|
||||||
then
|
|
||||||
echo "Configuring OrcaSlicer..."
|
|
||||||
if [[ -n "${CLEAN_BUILD}" ]]
|
|
||||||
then
|
|
||||||
rm -fr build
|
|
||||||
fi
|
|
||||||
BUILD_ARGS=""
|
|
||||||
if [[ -n "${FOUND_GTK3_DEV}" ]]
|
|
||||||
then
|
|
||||||
BUILD_ARGS="-DSLIC3R_GTK=3"
|
|
||||||
fi
|
|
||||||
if [[ -n "${BUILD_DEBUG}" ]]
|
|
||||||
then
|
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1"
|
|
||||||
else
|
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0"
|
|
||||||
fi
|
|
||||||
echo -e "cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH="${PWD}/deps/build/destdir/usr/local" -DSLIC3R_STATIC=1 ${BUILD_ARGS}"
|
|
||||||
cmake -S . -B build -G Ninja \
|
|
||||||
-DCMAKE_PREFIX_PATH="${PWD}/deps/build/destdir/usr/local" \
|
|
||||||
-DSLIC3R_STATIC=1 \
|
|
||||||
-DORCA_TOOLS=ON \
|
|
||||||
${BUILD_ARGS}
|
|
||||||
echo "done"
|
|
||||||
echo "Building OrcaSlicer ..."
|
|
||||||
cmake --build build --target OrcaSlicer
|
|
||||||
echo "Building OrcaSlicer_profile_validator .."
|
|
||||||
cmake --build build --target OrcaSlicer_profile_validator
|
|
||||||
./run_gettext.sh
|
|
||||||
echo "done"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -e ${ROOT}/build/src/BuildLinuxImage.sh ]]; then
|
|
||||||
# Give proper permissions to script
|
|
||||||
chmod 755 ${ROOT}/build/src/BuildLinuxImage.sh
|
|
||||||
|
|
||||||
echo "[9/9] Generating Linux app..."
|
|
||||||
pushd build
|
|
||||||
if [[ -n "${BUILD_IMAGE}" ]]
|
|
||||||
then
|
|
||||||
${ROOT}/build/src/BuildLinuxImage.sh -i
|
|
||||||
else
|
|
||||||
${ROOT}/build/src/BuildLinuxImage.sh
|
|
||||||
fi
|
|
||||||
popd
|
|
||||||
echo "done"
|
|
||||||
fi
|
|
||||||
259
CLAUDE.md
Normal file
259
CLAUDE.md
Normal file
@@ -0,0 +1,259 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
OrcaSlicer is an open-source 3D slicer application forked from Bambu Studio, built using C++ with wxWidgets for the GUI and CMake as the build system. The project uses a modular architecture with separate libraries for core slicing functionality, GUI components, and platform-specific code.
|
||||||
|
|
||||||
|
## Build Commands
|
||||||
|
|
||||||
|
### Building on Windows
|
||||||
|
```bash
|
||||||
|
# Build everything
|
||||||
|
build_release_vs2022.bat
|
||||||
|
|
||||||
|
# Build with debug symbols
|
||||||
|
build_release_vs2022.bat debug
|
||||||
|
|
||||||
|
# Build only dependencies
|
||||||
|
build_release_vs2022.bat deps
|
||||||
|
|
||||||
|
# Build only slicer (after deps are built)
|
||||||
|
build_release_vs2022.bat slicer
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building on macOS
|
||||||
|
```bash
|
||||||
|
# Build everything (dependencies and slicer)
|
||||||
|
./build_release_macos.sh
|
||||||
|
|
||||||
|
# Build only dependencies
|
||||||
|
./build_release_macos.sh -d
|
||||||
|
|
||||||
|
# Build only slicer (after deps are built)
|
||||||
|
./build_release_macos.sh -s
|
||||||
|
|
||||||
|
# Use Ninja generator for faster builds
|
||||||
|
./build_release_macos.sh -x
|
||||||
|
|
||||||
|
# Build for specific architecture
|
||||||
|
./build_release_macos.sh -a arm64 # or x86_64 or universal
|
||||||
|
|
||||||
|
# Build for specific macOS version target
|
||||||
|
./build_release_macos.sh -t 11.3
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building on Linux
|
||||||
|
```bash
|
||||||
|
# First time setup - install system dependencies
|
||||||
|
./build_linux.sh -u
|
||||||
|
|
||||||
|
# Build dependencies and slicer
|
||||||
|
./build_linux.sh -dsi
|
||||||
|
|
||||||
|
# Build everything (alternative)
|
||||||
|
./build_linux.sh -dsi
|
||||||
|
|
||||||
|
# Individual options:
|
||||||
|
./build_linux.sh -d # dependencies only
|
||||||
|
./build_linux.sh -s # slicer only
|
||||||
|
./build_linux.sh -i # build AppImage
|
||||||
|
|
||||||
|
# Performance and debug options:
|
||||||
|
./build_linux.sh -j N # limit to N cores
|
||||||
|
./build_linux.sh -1 # single core build
|
||||||
|
./build_linux.sh -b # Debug build
|
||||||
|
./build_linux.sh -e # RelWithDebInfo build
|
||||||
|
./build_linux.sh -c # clean build
|
||||||
|
./build_linux.sh -r # skip RAM/disk checks
|
||||||
|
./build_linux.sh -l # use Clang instead of GCC
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build System
|
||||||
|
- Uses CMake with minimum version 3.13 (maximum 3.31.x on Windows)
|
||||||
|
- Primary build directory: `build/`
|
||||||
|
- Dependencies are built in `deps/build/`
|
||||||
|
- The build process is split into dependency building and main application building
|
||||||
|
- Windows builds use Visual Studio generators
|
||||||
|
- macOS builds use Xcode by default, Ninja with -x flag
|
||||||
|
- Linux builds use Ninja generator
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
Tests are located in the `tests/` directory and use the Catch2 testing framework. Test structure:
|
||||||
|
- `tests/libslic3r/` - Core library tests (21 test files)
|
||||||
|
- Geometry processing, algorithms, file formats (STL, 3MF, AMF)
|
||||||
|
- Polygon operations, clipper utilities, Voronoi diagrams
|
||||||
|
- `tests/fff_print/` - Fused Filament Fabrication tests (12 test files)
|
||||||
|
- Slicing algorithms, G-code generation, print mechanics
|
||||||
|
- Fill patterns, extrusion, support material
|
||||||
|
- `tests/sla_print/` - Stereolithography tests (4 test files)
|
||||||
|
- SLA-specific printing algorithms, support generation
|
||||||
|
- `tests/libnest2d/` - 2D nesting algorithm tests
|
||||||
|
- `tests/slic3rutils/` - Utility function tests
|
||||||
|
- `tests/sandboxes/` - Experimental/sandbox test code
|
||||||
|
|
||||||
|
Run all tests after building:
|
||||||
|
```bash
|
||||||
|
cd build && ctest
|
||||||
|
```
|
||||||
|
|
||||||
|
Run tests with verbose output:
|
||||||
|
```bash
|
||||||
|
cd build && ctest --output-on-failure
|
||||||
|
```
|
||||||
|
|
||||||
|
Run individual test suites:
|
||||||
|
```bash
|
||||||
|
# From build directory
|
||||||
|
ctest --test-dir ./tests/libslic3r/libslic3r_tests
|
||||||
|
ctest --test-dir ./tests/fff_print/fff_print_tests
|
||||||
|
ctest --test-dir ./tests/sla_print/sla_print_tests
|
||||||
|
# and so on
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Core Libraries
|
||||||
|
- **libslic3r/**: Core slicing engine and algorithms (platform-independent)
|
||||||
|
- Main slicing logic, geometry processing, G-code generation
|
||||||
|
- Key classes: Print, PrintObject, Layer, GCode, Config
|
||||||
|
- Modular design with specialized subdirectories:
|
||||||
|
- `GCode/` - G-code generation, cooling, pressure equalization, thumbnails
|
||||||
|
- `Fill/` - Infill pattern implementations (gyroid, honeycomb, lightning, etc.)
|
||||||
|
- `Support/` - Tree supports and traditional support generation
|
||||||
|
- `Geometry/` - Advanced geometry operations, Voronoi diagrams, medial axis
|
||||||
|
- `Format/` - File I/O for 3MF, AMF, STL, OBJ, STEP formats
|
||||||
|
- `SLA/` - SLA-specific print processing and support generation
|
||||||
|
- `Arachne/` - Advanced wall generation using skeletal trapezoidation
|
||||||
|
|
||||||
|
- **src/slic3r/**: Main application framework and GUI
|
||||||
|
- GUI application built with wxWidgets
|
||||||
|
- Integration between libslic3r core and user interface
|
||||||
|
- Located in `src/slic3r/GUI/` (not shown in this directory but exists)
|
||||||
|
|
||||||
|
### Key Algorithmic Components
|
||||||
|
- **Arachne Wall Generation**: Variable-width perimeter generation using skeletal trapezoidation
|
||||||
|
- **Tree Supports**: Organic support generation algorithm
|
||||||
|
- **Lightning Infill**: Sparse infill optimization for internal structures
|
||||||
|
- **Adaptive Slicing**: Variable layer height based on geometry
|
||||||
|
- **Multi-material**: Multi-extruder and soluble support processing
|
||||||
|
- **G-code Post-processing**: Cooling, fan control, pressure advance, conflict checking
|
||||||
|
|
||||||
|
### File Format Support
|
||||||
|
- **3MF/BBS_3MF**: Native format with extensions for multi-material and metadata
|
||||||
|
- **STL**: Standard tessellation language for 3D models
|
||||||
|
- **AMF**: Additive Manufacturing Format with color/material support
|
||||||
|
- **OBJ**: Wavefront OBJ with material definitions
|
||||||
|
- **STEP**: CAD format support for precise geometry
|
||||||
|
- **G-code**: Output format with extensive post-processing capabilities
|
||||||
|
|
||||||
|
### External Dependencies
|
||||||
|
- **Clipper2**: Advanced 2D polygon clipping and offsetting
|
||||||
|
- **libigl**: Computational geometry library for mesh operations
|
||||||
|
- **TBB**: Intel Threading Building Blocks for parallelization
|
||||||
|
- **wxWidgets**: Cross-platform GUI framework
|
||||||
|
- **OpenGL**: 3D graphics rendering and visualization
|
||||||
|
- **CGAL**: Computational Geometry Algorithms Library (selective use)
|
||||||
|
- **OpenVDB**: Volumetric data structures for advanced operations
|
||||||
|
- **Eigen**: Linear algebra library for mathematical operations
|
||||||
|
|
||||||
|
## File Organization
|
||||||
|
|
||||||
|
### Resources and Configuration
|
||||||
|
- `resources/profiles/` - Printer and material profiles organized by manufacturer
|
||||||
|
- `resources/printers/` - Printer-specific configurations and G-code templates
|
||||||
|
- `resources/images/` - UI icons, logos, calibration images
|
||||||
|
- `resources/calib/` - Calibration test patterns and data
|
||||||
|
- `resources/handy_models/` - Built-in test models (benchy, calibration cubes)
|
||||||
|
|
||||||
|
### Internationalization and Localization
|
||||||
|
- `localization/i18n/` - Source translation files (.pot, .po)
|
||||||
|
- `resources/i18n/` - Runtime language resources
|
||||||
|
- Translation managed via `scripts/run_gettext.sh` / `scripts/run_gettext.bat`
|
||||||
|
|
||||||
|
### Platform-Specific Code
|
||||||
|
- `src/libslic3r/Platform.cpp` - Platform abstractions and utilities
|
||||||
|
- `src/libslic3r/MacUtils.mm` - macOS-specific utilities (Objective-C++)
|
||||||
|
- Windows-specific build scripts and configurations
|
||||||
|
- Linux distribution support scripts in `scripts/linux.d/`
|
||||||
|
|
||||||
|
### Build and Development Tools
|
||||||
|
- `cmake/modules/` - Custom CMake find modules and utilities
|
||||||
|
- `scripts/` - Python utilities for profile generation and validation
|
||||||
|
- `tools/` - Windows build tools (gettext utilities)
|
||||||
|
- `deps/` - External dependency build configurations
|
||||||
|
|
||||||
|
## Development Workflow
|
||||||
|
|
||||||
|
### Code Style and Standards
|
||||||
|
- **C++17 standard** with selective C++20 features
|
||||||
|
- **Naming conventions**: PascalCase for classes, snake_case for functions/variables
|
||||||
|
- **Header guards**: Use `#pragma once`
|
||||||
|
- **Memory management**: Prefer smart pointers, RAII patterns
|
||||||
|
- **Thread safety**: Use TBB for parallelization, be mindful of shared state
|
||||||
|
|
||||||
|
### Common Development Tasks
|
||||||
|
|
||||||
|
#### Adding New Print Settings
|
||||||
|
1. Define setting in `PrintConfig.cpp` with proper bounds and defaults
|
||||||
|
2. Add UI controls in appropriate GUI components
|
||||||
|
3. Update serialization in config save/load
|
||||||
|
4. Add tooltips and help text for user guidance
|
||||||
|
5. Test with different printer profiles
|
||||||
|
|
||||||
|
#### Modifying Slicing Algorithms
|
||||||
|
1. Core algorithms live in `libslic3r/` subdirectories
|
||||||
|
2. Performance-critical code should be profiled and optimized
|
||||||
|
3. Consider multi-threading implications (TBB integration)
|
||||||
|
4. Validate changes don't break existing profiles
|
||||||
|
5. Add regression tests where appropriate
|
||||||
|
|
||||||
|
#### GUI Development
|
||||||
|
1. GUI code resides in `src/slic3r/GUI/` (not visible in current tree)
|
||||||
|
2. Use existing wxWidgets patterns and custom controls
|
||||||
|
3. Support both light and dark themes
|
||||||
|
4. Consider DPI scaling on high-resolution displays
|
||||||
|
5. Maintain cross-platform compatibility
|
||||||
|
|
||||||
|
#### Adding Printer Support
|
||||||
|
1. Create JSON profile in `resources/profiles/[manufacturer].json`
|
||||||
|
2. Add printer-specific start/end G-code templates
|
||||||
|
3. Configure build volume, capabilities, and material compatibility
|
||||||
|
4. Test thoroughly with actual hardware when possible
|
||||||
|
5. Follow existing profile structure and naming conventions
|
||||||
|
|
||||||
|
### Dependencies and Build System
|
||||||
|
- **CMake-based** with separate dependency building phase
|
||||||
|
- **Dependencies** built once in `deps/build/`, then linked to main application
|
||||||
|
- **Cross-platform** considerations important for all changes
|
||||||
|
- **Resource files** embedded at build time, platform-specific handling
|
||||||
|
|
||||||
|
### Performance Considerations
|
||||||
|
- **Slicing algorithms** are CPU-intensive, profile before optimizing
|
||||||
|
- **Memory usage** can be substantial with complex models
|
||||||
|
- **Multi-threading** extensively used via TBB
|
||||||
|
- **File I/O** optimized for large 3MF files with embedded textures
|
||||||
|
- **Real-time preview** requires efficient mesh processing
|
||||||
|
|
||||||
|
## Important Development Notes
|
||||||
|
|
||||||
|
### Codebase Navigation
|
||||||
|
- Use search tools extensively - codebase has 500k+ lines
|
||||||
|
- Key entry points: `src/OrcaSlicer.cpp` for application startup
|
||||||
|
- Core slicing: `libslic3r/Print.cpp` orchestrates the slicing pipeline
|
||||||
|
- Configuration: `PrintConfig.cpp` defines all print/printer/material settings
|
||||||
|
|
||||||
|
### Compatibility and Stability
|
||||||
|
- **Backward compatibility** maintained for project files and profiles
|
||||||
|
- **Cross-platform** support essential (Windows/macOS/Linux)
|
||||||
|
- **File format** changes require careful version handling
|
||||||
|
- **Profile migrations** needed when settings change significantly
|
||||||
|
|
||||||
|
### Quality and Testing
|
||||||
|
- **Regression testing** important due to algorithm complexity
|
||||||
|
- **Performance benchmarks** help catch performance regressions
|
||||||
|
- **Memory leak** detection important for long-running GUI application
|
||||||
|
- **Cross-platform** testing required before releases
|
||||||
282
CMakeLists.txt
282
CMakeLists.txt
@@ -1,5 +1,56 @@
|
|||||||
cmake_minimum_required(VERSION 3.13)
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
|
||||||
|
# Verify that your CMake version is exactly 3.5 series or higher on windows
|
||||||
|
if ( (MSVC OR WIN32) AND (${CMAKE_VERSION} VERSION_LESS "3.5") )
|
||||||
|
message(FATAL_ERROR "CMake current version ${CMAKE_VERSION} is too old. Minimum required is 3.5.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# The following line used to be in tests/CMakeLists.txt
|
||||||
|
# Having it there causes rebuilds of all targets on any CMakeLists.txt change under tests/
|
||||||
|
# It has no effect on how code is compiled or linked.
|
||||||
|
# It just lets you later do `set_property(TARGET foo PROPERTY FOLDER "bar")`
|
||||||
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
# Detect known CI environments
|
||||||
|
set(IS_CI FALSE)
|
||||||
|
if(DEFINED ENV{CI})
|
||||||
|
set(IS_CI TRUE)
|
||||||
|
elseif(DEFINED ENV{GITHUB_ACTIONS})
|
||||||
|
set(IS_CI TRUE)
|
||||||
|
elseif(DEFINED ENV{GITLAB_CI})
|
||||||
|
set(IS_CI TRUE)
|
||||||
|
elseif(DEFINED ENV{TF_BUILD})
|
||||||
|
set(IS_CI TRUE)
|
||||||
|
elseif(DEFINED ENV{BUILD_NUMBER}) # Jenkins
|
||||||
|
set(IS_CI TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Detect common misconfiguration (Strawberry Perl in PATH before CMake)
|
||||||
|
# We use ENV to check the PATH order
|
||||||
|
string(REPLACE "\\" "/" ENV_PATH "$ENV{PATH}")
|
||||||
|
string(FIND "${ENV_PATH}" "Strawberry/c/bin" STRAWBERRY_POS)
|
||||||
|
string(FIND "${ENV_PATH}" "Program Files/CMake/bin" CMAKE_POS)
|
||||||
|
|
||||||
|
if (STRAWBERRY_POS GREATER -1 AND CMAKE_POS GREATER -1 AND STRAWBERRY_POS LESS CMAKE_POS)
|
||||||
|
set(_warning_text "
|
||||||
|
#############################################################
|
||||||
|
Detected Strawberry Perl's 'c/bin' appearing before CMake in PATH.
|
||||||
|
This is known to cause CMake to misbehave (e.g., missing modules).
|
||||||
|
Please adjust your PATH so that:
|
||||||
|
C:\\Program Files\\CMake\\bin
|
||||||
|
appears before:
|
||||||
|
C:\\Strawberry\\c\\bin
|
||||||
|
You can do this in Environment Variables settings.
|
||||||
|
#############################################################
|
||||||
|
")
|
||||||
|
|
||||||
|
if(NOT IS_CI)
|
||||||
|
message(FATAL_ERROR "${_warning_text}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
# if CMAKE_OSX_DEPLOYMENT_TARGET is not set, set it to 11.3
|
# if CMAKE_OSX_DEPLOYMENT_TARGET is not set, set it to 11.3
|
||||||
if (NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
if (NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||||
@@ -10,6 +61,11 @@ endif ()
|
|||||||
|
|
||||||
project(OrcaSlicer)
|
project(OrcaSlicer)
|
||||||
|
|
||||||
|
# Backward compatibility for old CMake versions
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_VERSION VERSION_LESS "3.25")
|
||||||
|
set(LINUX ON CACHE BOOL "" FORCE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
include("version.inc")
|
include("version.inc")
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
include(CMakeDependentOption)
|
include(CMakeDependentOption)
|
||||||
@@ -22,26 +78,41 @@ if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|||||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE)
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (DEFINED BBL_RELEASE_TO_PUBLIC)
|
||||||
|
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=${BBL_RELEASE_TO_PUBLIC}")
|
||||||
|
else ()
|
||||||
|
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=$<CONFIG:Release>")
|
||||||
|
endif ()
|
||||||
|
|
||||||
find_package(Git)
|
find_package(Git)
|
||||||
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||||
# Check current Git commit hash
|
if(DEFINED ENV{git_commit_hash} AND NOT "$ENV{git_commit_hash}" STREQUAL "")
|
||||||
execute_process(
|
message(STATUS "Specified git commit hash: $ENV{git_commit_hash}")
|
||||||
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
# Convert the given hash to short hash
|
||||||
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
execute_process(
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
COMMAND ${GIT_EXECUTABLE} rev-parse --short "$ENV{git_commit_hash}"
|
||||||
)
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
|
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
|
||||||
|
else()
|
||||||
|
# Check current Git commit hash
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED ENV{SLIC3R_STATIC})
|
if(DEFINED ENV{SLIC3R_STATIC})
|
||||||
set(SLIC3R_STATIC_INITIAL $ENV{SLIC3R_STATIC})
|
set(SLIC3R_STATIC_INITIAL $ENV{SLIC3R_STATIC})
|
||||||
else()
|
else()
|
||||||
if (MSVC OR MINGW OR APPLE)
|
set(SLIC3R_STATIC_INITIAL 1)
|
||||||
set(SLIC3R_STATIC_INITIAL 1)
|
|
||||||
else()
|
|
||||||
set(SLIC3R_STATIC_INITIAL 0)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(SLIC3R_STATIC "Compile OrcaSlicer with static libraries (Boost, TBB, glew)" ${SLIC3R_STATIC_INITIAL})
|
option(SLIC3R_STATIC "Compile OrcaSlicer with static libraries (Boost, TBB, glew)" ${SLIC3R_STATIC_INITIAL})
|
||||||
@@ -52,18 +123,30 @@ option(SLIC3R_PROFILE "Compile OrcaSlicer with an invasive Shiny profiler" 0)
|
|||||||
option(SLIC3R_PCH "Use precompiled headers" 1)
|
option(SLIC3R_PCH "Use precompiled headers" 1)
|
||||||
option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1)
|
option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1)
|
||||||
option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1)
|
option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1)
|
||||||
option(SLIC3R_PERL_XS "Compile XS Perl module and enable Perl unit and integration tests" 0)
|
|
||||||
option(SLIC3R_ASAN "Enable ASan on Clang and GCC" 0)
|
option(SLIC3R_ASAN "Enable ASan on Clang and GCC" 0)
|
||||||
# If SLIC3R_FHS is 1 -> SLIC3R_DESKTOP_INTEGRATION is always 0, othrewise variable.
|
# If SLIC3R_FHS is 1 -> SLIC3R_DESKTOP_INTEGRATION is always 0, othrewise variable.
|
||||||
CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_INTEGRATION "Allow perfoming desktop integration during runtime" 1 "NOT SLIC3R_FHS" 0)
|
CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_INTEGRATION "Allow perfoming desktop integration during runtime" 1 "NOT SLIC3R_FHS" 0)
|
||||||
|
|
||||||
set(OPENVDB_FIND_MODULE_PATH "" CACHE PATH "Path to OpenVDB installation's find modules.")
|
set(OPENVDB_FIND_MODULE_PATH "" CACHE PATH "Path to OpenVDB installation's find modules.")
|
||||||
|
|
||||||
set(SLIC3R_GTK "2" CACHE STRING "GTK version to use with wxWidgets on Linux")
|
set(SLIC3R_GTK "3" CACHE STRING "GTK version to use with wxWidgets on Linux")
|
||||||
|
|
||||||
set(IS_CROSS_COMPILE FALSE)
|
set(IS_CROSS_COMPILE FALSE)
|
||||||
|
|
||||||
|
option (COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." OFF)
|
||||||
|
if (${COLORED_OUTPUT})
|
||||||
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
add_compile_options (-fdiagnostics-color=always)
|
||||||
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
|
add_compile_options (-fcolor-diagnostics)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
|
list(LENGTH CMAKE_OSX_ARCHITECTURES _arch_len)
|
||||||
|
if (_arch_len GREATER 1)
|
||||||
|
message(FATAL_ERROR "OrcaSlicer only supports building for one architecture at a time. Please make sure only one architecture is specified in CMAKE_OSX_ARCHITECTURES")
|
||||||
|
endif ()
|
||||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||||
set(CMAKE_FIND_APPBUNDLE LAST)
|
set(CMAKE_FIND_APPBUNDLE LAST)
|
||||||
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
|
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
|
||||||
@@ -80,13 +163,20 @@ endif ()
|
|||||||
|
|
||||||
# Proposal for C++ unit tests and sandboxes
|
# Proposal for C++ unit tests and sandboxes
|
||||||
option(SLIC3R_BUILD_SANDBOXES "Build development sandboxes" OFF)
|
option(SLIC3R_BUILD_SANDBOXES "Build development sandboxes" OFF)
|
||||||
option(SLIC3R_BUILD_TESTS "Build unit tests" OFF)
|
option(BUILD_TESTS "Build unit tests" OFF)
|
||||||
option(ORCA_TOOLS "Build Orca tools" OFF)
|
option(ORCA_TOOLS "Build Orca tools" OFF)
|
||||||
|
|
||||||
|
if (FLATPAK)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++20")
|
||||||
|
set(SLIC3R_PCH OFF CACHE BOOL "" FORCE)
|
||||||
|
set(SLIC3R_FHS ON CACHE BOOL "" FORCE)
|
||||||
|
set(BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||||
|
set(SLIC3R_DESKTOP_INTEGRATION OFF CACHE BOOL "" FORCE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (IS_CROSS_COMPILE)
|
if (IS_CROSS_COMPILE)
|
||||||
message("Detected cross compilation setup. Tests and encoding checks will be forcedly disabled!")
|
message("Detected cross compilation setup. Tests and encoding checks will be forcedly disabled!")
|
||||||
set(SLIC3R_PERL_XS OFF CACHE BOOL "" FORCE)
|
set(BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||||
set(SLIC3R_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Print out the SLIC3R_* cache options
|
# Print out the SLIC3R_* cache options
|
||||||
@@ -106,6 +196,13 @@ if(SLIC3R_DESKTOP_INTEGRATION)
|
|||||||
add_definitions(-DSLIC3R_DESKTOP_INTEGRATION)
|
add_definitions(-DSLIC3R_DESKTOP_INTEGRATION)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||||
|
message(STATUS "Automatically setting CMAKE_INSTALL_PREFIX")
|
||||||
|
set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/OrcaSlicer")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
|
||||||
|
|
||||||
if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||||
set(IS_CLANG_CL TRUE)
|
set(IS_CLANG_CL TRUE)
|
||||||
|
|
||||||
@@ -151,24 +248,61 @@ if (NOT MSVC)
|
|||||||
add_compile_options(-fsigned-char)
|
add_compile_options(-fsigned-char)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Display and check CMAKE_PREFIX_PATH
|
if ("${DEP_BUILD_DIR}" STREQUAL "")
|
||||||
message(STATUS "SLIC3R_STATIC: ${SLIC3R_STATIC}")
|
get_filename_component(BIN_DIR_NAME ${CMAKE_BINARY_DIR} NAME)
|
||||||
if (NOT "${CMAKE_PREFIX_PATH}" STREQUAL "")
|
if (APPLE AND BIN_DIR_NAME STREQUAL "${CMAKE_OSX_ARCHITECTURES}")
|
||||||
message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH} (from cache or command line)")
|
file(RELATIVE_PATH BIN_DIR_NAME ${CMAKE_BINARY_DIR}/../.. ${CMAKE_BINARY_DIR})
|
||||||
set(PREFIX_PATH_CHECK ${CMAKE_PREFIX_PATH})
|
endif ()
|
||||||
elseif (NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")
|
set(DEP_BUILD_DIR "${CMAKE_SOURCE_DIR}/deps/${BIN_DIR_NAME}" CACHE PATH "Path to dependencies build directory" FORCE)
|
||||||
message(STATUS "CMAKE_PREFIX_PATH: $ENV{CMAKE_PREFIX_PATH} (from environment)")
|
message(STATUS "DEP_BUILD_DIR: ${DEP_BUILD_DIR} (generated automatically and saved to cache)")
|
||||||
set(PREFIX_PATH_CHECK $ENV{CMAKE_PREFIX_PATH})
|
set(AUTOGENERATED_DEP_BUILD_DIR ${DEP_BUILD_DIR} CACHE PATH "Provides the last autogenerated DEP_BUILD_DIR" FORCE)
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "CMAKE_PREFIX_PATH: (default)")
|
message(STATUS "DEP_BUILD_DIR: ${DEP_BUILD_DIR} (from cache or command line)")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if ("${CMAKE_PREFIX_PATH}" STREQUAL "" OR "${CMAKE_PREFIX_PATH}" STREQUAL "${AUTOGENERATED_PREFIX_PATH}")
|
||||||
|
if (DEFINED AUTOGENERATED_DEP_BUILD_DIR AND NOT "${DEP_BUILD_DIR}" STREQUAL "${AUTOGENERATED_DEP_BUILD_DIR}")
|
||||||
|
message(STATUS "CMAKE_PREFIX_PATH is being re-generated due to DEP_BUILD_DIR being manually updated")
|
||||||
|
set(REGEN_DESTDIR TRUE)
|
||||||
|
unset(AUTOGENERATED_DEP_BUILD_DIR CACHE)
|
||||||
|
endif ()
|
||||||
|
else ()
|
||||||
|
unset(AUTOGENERATED_PREFIX_PATH CACHE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# Display and check CMAKE_PREFIX_PATH
|
||||||
|
if ("${CMAKE_PREFIX_PATH}" STREQUAL "" OR REGEN_DESTDIR)
|
||||||
|
set(CMAKE_PREFIX_PATH "${DEP_BUILD_DIR}/OrcaSlicer_dep/usr/local" CACHE PATH "Path to dependencies install directory" FORCE)
|
||||||
|
message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH} (generated automatically and saved to cache)")
|
||||||
|
set(AUTOGENERATED_PREFIX_PATH ${CMAKE_PREFIX_PATH} CACHE STRING "Provides the last autogenerated CMAKE_PREFIX_PATH" FORCE)
|
||||||
|
unset(REGEN_DESTDIR CACHE)
|
||||||
|
else ()
|
||||||
|
message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH} (from cache or command line)")
|
||||||
|
endif ()
|
||||||
|
set(PREFIX_PATH_CHECK ${CMAKE_PREFIX_PATH})
|
||||||
|
|
||||||
|
# the CMAKE_PREFIX_PATH environment variable is separate from the CMAKE_PREFIX_PATH cache variable and provides additional paths to search for libraries.
|
||||||
|
if (NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")
|
||||||
|
message(STATUS "CMAKE_PREFIX_PATH: $ENV{CMAKE_PREFIX_PATH} (from environment)")
|
||||||
|
list(APPEND PREFIX_PATH_CHECK $ENV{CMAKE_PREFIX_PATH})
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# Check all directories in CMAKE_PREFIX_PATH variables
|
||||||
foreach (DIR ${PREFIX_PATH_CHECK})
|
foreach (DIR ${PREFIX_PATH_CHECK})
|
||||||
if (NOT EXISTS "${DIR}")
|
if (NOT EXISTS "${DIR}")
|
||||||
message(WARNING "CMAKE_PREFIX_PATH element doesn't exist: ${DIR}")
|
message(WARNING "CMAKE_PREFIX_PATH element doesn't exist: ${DIR}")
|
||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
set(CMAKE_MACOSX_RPATH ON CACHE BOOL "")
|
||||||
|
set(CMAKE_MACOSX_BUNDLE ON CACHE BOOL "")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (APPLE AND CMAKE_MACOSX_RPATH AND "${CMAKE_INSTALL_RPATH}" STREQUAL "")
|
||||||
|
set(CMAKE_INSTALL_RPATH ${CMAKE_PREFIX_PATH})
|
||||||
|
endif ()
|
||||||
|
|
||||||
# Add our own cmake module path.
|
# Add our own cmake module path.
|
||||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules/)
|
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules/)
|
||||||
message(STATUS "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
|
message(STATUS "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
|
||||||
@@ -182,7 +316,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|||||||
|
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
# Add DEBUG flags to debug builds.
|
# Add DEBUG flags to debug builds.
|
||||||
add_compile_options("$<$<CONFIG:DEBUG>:-DDEBUG>")
|
add_compile_definitions("$<IF:$<CONFIG:Debug>,DEBUG,NDEBUG>")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# To be able to link libslic3r with the Perl XS module.
|
# To be able to link libslic3r with the Perl XS module.
|
||||||
@@ -209,7 +343,11 @@ if(WIN32)
|
|||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
# Try to use the default Windows 10 SDK path.
|
# Try to use the default Windows 10 SDK path.
|
||||||
set(WIN10SDK_INCLUDE_PATH "$ENV{WindowsSdkDir}/Include/$ENV{WindowsSDKVersion}")
|
if (DEFINED ENV{WindowsSdkDir} AND DEFINED ENV{WindowsSDKVersion})
|
||||||
|
set(WIN10SDK_INCLUDE_PATH "$ENV{WindowsSdkDir}/Include/$ENV{WindowsSDKVersion}")
|
||||||
|
else ()
|
||||||
|
set(WIN10SDK_INCLUDE_PATH "C:/Program Files (x86)/Windows Kits/10/Include/10.0.26100.0")
|
||||||
|
endif ()
|
||||||
if (NOT EXISTS "${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h")
|
if (NOT EXISTS "${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h")
|
||||||
message("${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h was not found")
|
message("${WIN10SDK_INCLUDE_PATH}/winrt/windows.graphics.printing3d.h was not found")
|
||||||
message("STL fixing by the Netfabb service will not be compiled")
|
message("STL fixing by the Netfabb service will not be compiled")
|
||||||
@@ -219,7 +357,7 @@ if(WIN32)
|
|||||||
if(WIN10SDK_INCLUDE_PATH)
|
if(WIN10SDK_INCLUDE_PATH)
|
||||||
message("Building with Win10 Netfabb STL fixing service support")
|
message("Building with Win10 Netfabb STL fixing service support")
|
||||||
add_definitions(-DHAS_WIN10SDK)
|
add_definitions(-DHAS_WIN10SDK)
|
||||||
include_directories("${WIN10SDK_INCLUDE_PATH}")
|
include_directories(SYSTEM "${WIN10SDK_INCLUDE_PATH}")
|
||||||
else()
|
else()
|
||||||
message("Building without Win10 Netfabb STL fixing service support")
|
message("Building without Win10 Netfabb STL fixing service support")
|
||||||
endif()
|
endif()
|
||||||
@@ -247,7 +385,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
find_package(DBus REQUIRED)
|
find_package(DBus REQUIRED)
|
||||||
include_directories(${DBUS_INCLUDE_DIRS})
|
include_directories(SYSTEM ${DBUS_INCLUDE_DIRS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
|
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
|
||||||
@@ -309,7 +447,7 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
|||||||
add_compile_options(-Wno-unknown-pragmas)
|
add_compile_options(-Wno-unknown-pragmas)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Bit of a hack for flatpak building: compress the debug info with zstd to save space in CI
|
# Bit of a hack for flatpak building: compress the debug info with zstd to save space in CI
|
||||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0)
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0)
|
||||||
add_compile_options(-gz=zstd)
|
add_compile_options(-gz=zstd)
|
||||||
endif()
|
endif()
|
||||||
@@ -356,11 +494,11 @@ message(STATUS "LIBDIR: ${LIBDIR}")
|
|||||||
message(STATUS "LIBDIR_BIN: ${LIBDIR_BIN}")
|
message(STATUS "LIBDIR_BIN: ${LIBDIR_BIN}")
|
||||||
|
|
||||||
# For the bundled boost libraries (boost::nowide)
|
# For the bundled boost libraries (boost::nowide)
|
||||||
include_directories(${LIBDIR})
|
include_directories(SYSTEM ${LIBDIR})
|
||||||
# For generated header files
|
# For generated header files
|
||||||
include_directories(${LIBDIR_BIN}/platform)
|
include_directories(SYSTEM ${LIBDIR_BIN}/dev-utils/platform)
|
||||||
# For ligigl
|
# For ligigl
|
||||||
include_directories(${LIBDIR}/libigl)
|
include_directories(SYSTEM ${LIBDIR}/libigl)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
add_definitions(-D_USE_MATH_DEFINES -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
|
add_definitions(-D_USE_MATH_DEFINES -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
|
||||||
@@ -430,7 +568,10 @@ endif()
|
|||||||
# set(Boost_COMPILER "-mgw81")
|
# set(Boost_COMPILER "-mgw81")
|
||||||
# boost::process was introduced first in version 1.64.0,
|
# boost::process was introduced first in version 1.64.0,
|
||||||
# boost::beast::detail::base64 was introduced first in version 1.66.0
|
# boost::beast::detail::base64 was introduced first in version 1.66.0
|
||||||
find_package(Boost 1.66 REQUIRED COMPONENTS system filesystem thread log log_setup locale regex chrono atomic date_time iostreams program_options)
|
if(POLICY CMP0167)
|
||||||
|
cmake_policy(SET CMP0167 NEW)
|
||||||
|
endif()
|
||||||
|
find_package(Boost 1.83.0 REQUIRED COMPONENTS system filesystem thread log log_setup locale regex chrono atomic date_time iostreams program_options nowide)
|
||||||
|
|
||||||
add_library(boost_libs INTERFACE)
|
add_library(boost_libs INTERFACE)
|
||||||
add_library(boost_headeronly INTERFACE)
|
add_library(boost_headeronly INTERFACE)
|
||||||
@@ -447,7 +588,7 @@ endif()
|
|||||||
function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
string(TOUPPER ${from_Cfg} from_CFG)
|
string(TOUPPER ${from_Cfg} from_CFG)
|
||||||
|
|
||||||
foreach(tgt ${targets})
|
foreach(tgt ${targets})
|
||||||
if(TARGET ${tgt})
|
if(TARGET ${tgt})
|
||||||
set_target_properties(${tgt} PROPERTIES MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg})
|
set_target_properties(${tgt} PROPERTIES MAP_IMPORTED_CONFIG_${from_CFG} ${to_Cfg})
|
||||||
@@ -456,7 +597,7 @@ function(slic3r_remap_configs targets from_Cfg to_Cfg)
|
|||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
target_include_directories(boost_headeronly INTERFACE ${Boost_INCLUDE_DIRS})
|
target_include_directories(boost_headeronly SYSTEM INTERFACE ${Boost_INCLUDE_DIRS})
|
||||||
target_link_libraries(boost_libs INTERFACE boost_headeronly ${Boost_LIBRARIES})
|
target_link_libraries(boost_libs INTERFACE boost_headeronly ${Boost_LIBRARIES})
|
||||||
|
|
||||||
# Find and configure intel-tbb
|
# Find and configure intel-tbb
|
||||||
@@ -466,7 +607,7 @@ endif()
|
|||||||
set(TBB_DEBUG 1)
|
set(TBB_DEBUG 1)
|
||||||
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo Release "")
|
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo Release "")
|
||||||
find_package(TBB REQUIRED)
|
find_package(TBB REQUIRED)
|
||||||
# include_directories(${TBB_INCLUDE_DIRS})
|
# include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
|
||||||
# add_definitions(${TBB_DEFINITIONS})
|
# add_definitions(${TBB_DEFINITIONS})
|
||||||
# if(MSVC)
|
# if(MSVC)
|
||||||
# # Suppress implicit linking of the TBB libraries by the Visual Studio compiler.
|
# # Suppress implicit linking of the TBB libraries by the Visual Studio compiler.
|
||||||
@@ -477,6 +618,7 @@ find_package(TBB REQUIRED)
|
|||||||
|
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
find_package(CURL REQUIRED)
|
find_package(CURL REQUIRED)
|
||||||
|
find_package(Freetype REQUIRED)
|
||||||
|
|
||||||
|
|
||||||
add_library(libcurl INTERFACE)
|
add_library(libcurl INTERFACE)
|
||||||
@@ -508,7 +650,7 @@ if (SLIC3R_STATIC AND NOT SLIC3R_STATIC_EXCLUDE_CURL)
|
|||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
|
message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
|
||||||
message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")
|
message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")
|
||||||
target_include_directories(libcurl INTERFACE ${OPENSSL_INCLUDE_DIR})
|
target_include_directories(libcurl SYSTEM INTERFACE ${OPENSSL_INCLUDE_DIR})
|
||||||
target_link_libraries(libcurl INTERFACE ${OPENSSL_LIBRARIES})
|
target_link_libraries(libcurl INTERFACE ${OPENSSL_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@@ -574,7 +716,7 @@ add_custom_target(gettext_make_pot
|
|||||||
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
|
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
|
||||||
-f "${BBL_L18N_DIR}/list.txt"
|
-f "${BBL_L18N_DIR}/list.txt"
|
||||||
-o "${BBL_L18N_DIR}/OrcaSlicer.pot"
|
-o "${BBL_L18N_DIR}/OrcaSlicer.pot"
|
||||||
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR}
|
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR}
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
COMMENT "Generate pot file from strings in the source tree"
|
COMMENT "Generate pot file from strings in the source tree"
|
||||||
)
|
)
|
||||||
@@ -629,11 +771,9 @@ endif ()
|
|||||||
|
|
||||||
find_path(SPNAV_INCLUDE_DIR spnav.h)
|
find_path(SPNAV_INCLUDE_DIR spnav.h)
|
||||||
if (SPNAV_INCLUDE_DIR)
|
if (SPNAV_INCLUDE_DIR)
|
||||||
find_library(HAVE_SPNAV spnav)
|
find_library(SPNAV_LIB NAMES libspnav.a) # Force linking libspnav statically
|
||||||
if (HAVE_SPNAV)
|
if (SPNAV_LIB)
|
||||||
add_definitions(-DHAVE_SPNAV)
|
add_definitions(-DHAVE_SPNAV)
|
||||||
add_library(libspnav SHARED IMPORTED)
|
|
||||||
target_link_libraries(libspnav INTERFACE spnav)
|
|
||||||
message(STATUS "SPNAV library found")
|
message(STATUS "SPNAV library found")
|
||||||
else()
|
else()
|
||||||
message(STATUS "SPNAV library NOT found, Spacenavd not supported")
|
message(STATUS "SPNAV library NOT found, Spacenavd not supported")
|
||||||
@@ -644,10 +784,12 @@ endif()
|
|||||||
|
|
||||||
set(TOP_LEVEL_PROJECT_DIR ${PROJECT_SOURCE_DIR})
|
set(TOP_LEVEL_PROJECT_DIR ${PROJECT_SOURCE_DIR})
|
||||||
function(orcaslicer_copy_dlls target config postfix output_dlls)
|
function(orcaslicer_copy_dlls target config postfix output_dlls)
|
||||||
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
|
||||||
set(_bits 64)
|
set(_arch "x64")
|
||||||
elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "X86")
|
||||||
set(_bits 32)
|
set(_arch "x86")
|
||||||
|
else ()
|
||||||
|
message(FATAL_ERROR "Unable to detect architecture")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
@@ -664,11 +806,16 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
|||||||
message ("set out_dir to CMAKE_CURRENT_BINARY_DIR: ${_out_dir}")
|
message ("set out_dir to CMAKE_CURRENT_BINARY_DIR: ${_out_dir}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
file(COPY ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win${_bits}/libgmp-10.dll
|
file(COPY ${TOP_LEVEL_PROJECT_DIR}/deps/GMP/gmp/lib/win-${_arch}/libgmp-10.dll
|
||||||
${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win${_bits}/libmpfr-4.dll
|
${TOP_LEVEL_PROJECT_DIR}/deps/MPFR/mpfr/lib/win-${_arch}/libmpfr-4.dll
|
||||||
${TOP_LEVEL_PROJECT_DIR}/deps/WebView2/lib/win${_bits}/WebView2Loader.dll
|
${TOP_LEVEL_PROJECT_DIR}/deps/WebView2/lib/win-${_arch}/WebView2Loader.dll
|
||||||
DESTINATION ${_out_dir})
|
DESTINATION ${_out_dir})
|
||||||
|
|
||||||
|
# WinSparkle for auto-updates
|
||||||
|
if(EXISTS "${CMAKE_PREFIX_PATH}/bin/WinSparkle.dll")
|
||||||
|
file(COPY ${CMAKE_PREFIX_PATH}/bin/WinSparkle.dll DESTINATION ${_out_dir})
|
||||||
|
endif()
|
||||||
|
|
||||||
file(COPY ${CMAKE_PREFIX_PATH}/bin/occt/TKBO.dll
|
file(COPY ${CMAKE_PREFIX_PATH}/bin/occt/TKBO.dll
|
||||||
${CMAKE_PREFIX_PATH}/bin/occt/TKBRep.dll
|
${CMAKE_PREFIX_PATH}/bin/occt/TKBRep.dll
|
||||||
${CMAKE_PREFIX_PATH}/bin/occt/TKCAF.dll
|
${CMAKE_PREFIX_PATH}/bin/occt/TKCAF.dll
|
||||||
@@ -734,39 +881,28 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
|||||||
|
|
||||||
PARENT_SCOPE
|
PARENT_SCOPE
|
||||||
)
|
)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
# libslic3r, OrcaSlicer GUI and the OrcaSlicer executable.
|
# libslic3r, OrcaSlicer GUI and the OrcaSlicer executable.
|
||||||
|
add_subdirectory(deps_src)
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT OrcaSlicer_app_gui)
|
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT OrcaSlicer_app_gui)
|
||||||
|
|
||||||
add_dependencies(gettext_make_pot hintsToPot)
|
add_dependencies(gettext_make_pot hintsToPot)
|
||||||
|
|
||||||
# Perl bindings, currently only used for the unit / integration tests of libslic3r.
|
|
||||||
# Also runs the unit / integration tests.
|
|
||||||
#FIXME Port the tests into C++ to finally get rid of the Perl!
|
|
||||||
if (SLIC3R_PERL_XS)
|
|
||||||
add_subdirectory(xs)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(SLIC3R_BUILD_SANDBOXES)
|
if(SLIC3R_BUILD_SANDBOXES)
|
||||||
add_subdirectory(sandboxes)
|
add_subdirectory(sandboxes)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SLIC3R_BUILD_TESTS)
|
if(BUILD_TESTS)
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT WIN32 AND NOT APPLE)
|
if (NOT WIN32 AND NOT APPLE)
|
||||||
set(SLIC3R_APP_CMD "orca-slicer")
|
set(SLIC3R_APP_CMD "orca-slicer")
|
||||||
configure_file(${LIBDIR}/platform/unix/build_appimage.sh.in ${CMAKE_CURRENT_BINARY_DIR}/build_appimage.sh @ONLY)
|
configure_file(${LIBDIR}/dev-utils/platform/unix/build_appimage.sh.in ${CMAKE_CURRENT_BINARY_DIR}/build_appimage.sh USE_SOURCE_PERMISSIONS @ONLY)
|
||||||
endif()
|
|
||||||
|
|
||||||
option(BUILD_BBS_TEST_TOOLS "Build bbs test tools" OFF)
|
|
||||||
if(BUILD_BBS_TEST_TOOLS)
|
|
||||||
add_subdirectory(bbs_test_tools)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
@@ -774,7 +910,7 @@ endif()
|
|||||||
if (WIN32)
|
if (WIN32)
|
||||||
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "./resources")
|
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "./resources")
|
||||||
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
||||||
include(InstallRequiredSystemLibraries)
|
include(InstallRequiredSystemLibraries)
|
||||||
install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ".")
|
install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ".")
|
||||||
elseif (SLIC3R_FHS)
|
elseif (SLIC3R_FHS)
|
||||||
# CMAKE_INSTALL_FULL_DATAROOTDIR: read-only architecture-independent data root (share)
|
# CMAKE_INSTALL_FULL_DATAROOTDIR: read-only architecture-independent data root (share)
|
||||||
@@ -782,7 +918,7 @@ elseif (SLIC3R_FHS)
|
|||||||
install(DIRECTORY ${SLIC3R_RESOURCES_DIR}/ DESTINATION ${SLIC3R_FHS_RESOURCES}
|
install(DIRECTORY ${SLIC3R_RESOURCES_DIR}/ DESTINATION ${SLIC3R_FHS_RESOURCES}
|
||||||
PATTERN "*/udev" EXCLUDE
|
PATTERN "*/udev" EXCLUDE
|
||||||
)
|
)
|
||||||
install(FILES src/platform/unix/OrcaSlicer.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
|
install(FILES src/dev-utils/platform/unix/OrcaSlicer.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
|
||||||
foreach(SIZE 32 128 192)
|
foreach(SIZE 32 128 192)
|
||||||
install(FILES ${SLIC3R_RESOURCES_DIR}/images/OrcaSlicer_${SIZE}px.png
|
install(FILES ${SLIC3R_RESOURCES_DIR}/images/OrcaSlicer_${SIZE}px.png
|
||||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}x${SIZE}/apps RENAME OrcaSlicer.png
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}x${SIZE}/apps RENAME OrcaSlicer.png
|
||||||
@@ -791,12 +927,12 @@ elseif (SLIC3R_FHS)
|
|||||||
elseif (CMAKE_MACOSX_BUNDLE)
|
elseif (CMAKE_MACOSX_BUNDLE)
|
||||||
# install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/OrcaSlicer.app/Contents/resources")
|
# install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/OrcaSlicer.app/Contents/resources")
|
||||||
else ()
|
else ()
|
||||||
install(FILES src/platform/unix/OrcaSlicer.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/resources/applications)
|
install(FILES src/dev-utils/platform/unix/OrcaSlicer.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/resources/applications)
|
||||||
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources")
|
install(DIRECTORY "${SLIC3R_RESOURCES_DIR}/" DESTINATION "${CMAKE_INSTALL_PREFIX}/resources")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ".")
|
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ".")
|
||||||
configure_file(${LIBDIR}/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/platform/unix/fhs.hpp)
|
configure_file(${LIBDIR}/dev-utils/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/dev-utils/platform/unix/fhs.hpp)
|
||||||
|
|
||||||
set (CPACK_PACKAGE_NAME "OrcaSlicer")
|
set (CPACK_PACKAGE_NAME "OrcaSlicer")
|
||||||
set (CPACK_PACKAGE_VENDOR "SoftFever")
|
set (CPACK_PACKAGE_VENDOR "SoftFever")
|
||||||
@@ -805,7 +941,7 @@ set (CPACK_PACKAGE_VERSION_MINOR "${ORCA_VERSION_MINOR}")
|
|||||||
set (CPACK_PACKAGE_VERSION_PATCH "${ORCA_VERSION_PATCH}")
|
set (CPACK_PACKAGE_VERSION_PATCH "${ORCA_VERSION_PATCH}")
|
||||||
set (CPACK_PACKAGE_FILE_NAME "OrcaSlicer_Windows_Installer_V${SoftFever_VERSION}")
|
set (CPACK_PACKAGE_FILE_NAME "OrcaSlicer_Windows_Installer_V${SoftFever_VERSION}")
|
||||||
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Orca Slicer is an open source slicer for FDM printers")
|
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Orca Slicer is an open source slicer for FDM printers")
|
||||||
set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/SoftFever/OrcaSlicer")
|
set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/OrcaSlicer/OrcaSlicer")
|
||||||
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
|
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
|
||||||
set (CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/images\\\\OrcaSlicer.ico")
|
set (CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/images\\\\OrcaSlicer.ico")
|
||||||
set (CPACK_NSIS_MUI_ICON "${CPACK_PACKAGE_ICON}")
|
set (CPACK_NSIS_MUI_ICON "${CPACK_PACKAGE_ICON}")
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
PROJECT_ROOT=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
|
|
||||||
|
|
||||||
set -x
|
|
||||||
# Wishlist hint: For developers, creating a Docker Compose
|
|
||||||
# setup with persistent volumes for the build & deps directories
|
|
||||||
# would speed up recompile times significantly. For end users,
|
|
||||||
# the simplicity of a single Docker image and a one-time compilation
|
|
||||||
# seems better.
|
|
||||||
docker build -t orcaslicer \
|
|
||||||
--build-arg USER=$USER \
|
|
||||||
--build-arg UID=$(id -u) \
|
|
||||||
--build-arg GID=$(id -g) \
|
|
||||||
--build-arg NCORES=$NCORES \
|
|
||||||
$PROJECT_ROOT
|
|
||||||
BIN
OrcaSlicer.mo
BIN
OrcaSlicer.mo
Binary file not shown.
266
README.md
266
README.md
@@ -1,129 +1,158 @@
|
|||||||
|
<div align="center">
|
||||||
|
|
||||||
<h1> <p "font-size:200px;"><img align="left" src="https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/OrcaSlicer.ico" width="100"> Orca Slicer</p> </h1>
|
<picture>
|
||||||
|
<img alt="OrcaSlicer logo" src="resources/images/OrcaSlicer.png" width="15%" height="15%">
|
||||||
|
</picture>
|
||||||
|
|
||||||
[](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml)
|
<a href="https://trendshift.io/repositories/952" target="_blank"><img src="https://trendshift.io/api/badge/repositories/952" alt="SoftFever%2FOrcaSlicer | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||||
<br>Orca Slicer is an open source slicer for FDM printers.
|
|
||||||
|
|
||||||
|
[](https://github.com/OrcaSlicer/OrcaSlicer/stargazers) [](https://github.com/OrcaSlicer/OrcaSlicer/actions/workflows/build_all.yml)
|
||||||
|
|
||||||
Join our Discord community here:<br>
|
OrcaSlicer: an open source Next-Gen Slicing Software for Precision 3D Prints.
|
||||||
<a href="https://discord.gg/P4VE9UY9gJ"><img src="https://img.shields.io/static/v1?message=Discord&logo=discord&label=&color=7289DA&logoColor=white&labelColor=&style=for-the-badge" height="35" alt="discord logo"/> </a>
|
Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.
|
||||||
|
<h3>
|
||||||
<h3>🚨🚨🚨Important Security Alert🚨🚨🚨</h3>
|
|
||||||
|
|
||||||
Please be aware that "**orcaslicer.net**", "**orcaslicer.co**" or "**orca-slicer.com**" are NOT an official website for OrcaSlicer and may be potentially malicious. These sites appear to use AI-generated content, lacking genuine context and seems to exist solely to profit from advertisements. Worse, it may redirect download links to harmful sources. For your safety, avoid downloading OrcaSlicer from this site as the links may be compromised.
|
# Official links and community
|
||||||
|
|
||||||
If you see the above sites in your searches, report them as spam or unsafe to the search engine. This small action will assist everyone.
|
#### Official Website:
|
||||||
|
<a href="https://www.orcaslicer.com/" style="font-size:2em;">OrcaSlicer.com</a>
|
||||||
|
|
||||||
The only official platforms for OrcaSlicer are our GitHub project page and the <a href="https://discord.gg/P4VE9UY9gJ">official Discord channel</a> .
|
#### Github Repository:
|
||||||
|
<a href="https://github.com/OrcaSlicer/OrcaSlicer"><img src="https://img.shields.io/badge/OrcaSlicer-181717?style=flat&logo=github&logoColor=white" width="200" alt="GitHub Logo"/> </a>
|
||||||
|
|
||||||
We deeply value our OrcaSlicer community and appreciate all the social groups that support us. However, it is crucial to address the risk posed by any group that falsely claims to be official or misleads its members. If you encounter such a group or are part of one, please assist by encouraging the group owner to add a clear disclaimer or by alerting its members.
|
#### Follow us:
|
||||||
|
<a href="https://twitter.com/real_OrcaSlicer"><img src="https://img.shields.io/badge/real__OrcaSlicer-000000?style=flat&logo=x&logoColor=white" width="200" alt="X Logo"/> </a>
|
||||||
|
|
||||||
|
#### Join our Discord community:
|
||||||
|
<a href="https://discord.gg/P4VE9UY9gJ"><img src="https://img.shields.io/badge/-Discord-5865F2?style=flat&logo=discord&logoColor=fff" width="200" alt="discord logo"/> </a>
|
||||||
|
|
||||||
|
<table border="2" style="border-color: #ffa500; background-color:rgb(232, 220, 180); color: #856404;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<strong>⚠️ CAUTION:</strong><br>
|
||||||
|
Several clickbait and malicious websites, such as <b>orca-slicer[.]com</b> and <b>orcaslicer[.]net</b>, are pretending to be the official OrcaSlicer site. These sites may redirect you to dangerous downloads or contain misleading information.<br>
|
||||||
|
<b>Our only official website is <a href="https://www.orcaslicer.com/">www.orcaslicer.com</a>.</b><br><br>
|
||||||
|
If you come across any of these in search results, please <b>report them</b> as unsafe or phishing to help keep the community secure with:<br>
|
||||||
|
- <a href="https://safebrowsing.google.com/safebrowsing/report_phish/">Google Safe Browsing</a><br>
|
||||||
|
- <a href="https://www.microsoft.com/en-us/wdsi/support/report-unsafe-site">Microsoft Security Intelligence</a><br>
|
||||||
|
- <a href="https://ipthreat.net/tools/reportphishing">IPThreat</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
Thank you for your vigilance and support in keeping our community safe!
|
</div>
|
||||||
|
|
||||||
# Main features
|
# Main features
|
||||||
- Auto-calibration for all printers
|
|
||||||
- Sandwich (inner-outer-inner) mode - An improved version of the `External Perimeters First` mode
|
- **[Advanced Calibration Tools](https://www.orcaslicer.com/wiki/Calibration)**
|
||||||
- [Precise wall](https://github.com/SoftFever/OrcaSlicer/wiki/Precise-wall)
|
Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance.
|
||||||
- Polyholes conversion support: [SuperSlicer Wiki: Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes)
|
- **[Precise Wall](https://www.orcaslicer.com/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://www.orcaslicer.com/wiki/quality_settings_seam)**
|
||||||
- Klipper support
|
Adjust outer wall spacing and apply scarf seams to enhance print accuracy.
|
||||||
- More granular controls
|
- **[Sandwich Mode](https://www.orcaslicer.com/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://www.orcaslicer.com/wiki/quality_settings_precision#polyholes) Support**
|
||||||
- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/)
|
Use varied infill [patterns](https://www.orcaslicer.com/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity.
|
||||||
|
- **[Overhang](https://www.orcaslicer.com/wiki/quality_settings_overhangs) and [Support Optimization](https://www.orcaslicer.com/wiki#support-settings)**
|
||||||
|
Modify geometry for printable overhangs with precise support placement.
|
||||||
|
- **[Granular Controls and Customization](https://www.orcaslicer.com/wiki#process-settings)**
|
||||||
|
Fine-tune print speed, layer height, pressure, and temperature with precision.
|
||||||
|
- **Network Printer Support**
|
||||||
|
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
|
||||||
|
- **[Mouse Ear Brims](https://www.orcaslicer.com/wiki/others_settings_brim) & [Adaptive Bed Mesh](https://www.orcaslicer.com/wiki/printer_basic_information_adaptive_bed_mesh)**
|
||||||
|
Automatic brims and adaptive mesh calibration ensure consistent adhesion.
|
||||||
|
- **User-Friendly Interface**
|
||||||
|
Intuitive drag-and-drop design with pre-made profiles for popular printers.
|
||||||
|
- **[Open-Source](https://github.com/OrcaSlicer/OrcaSlicer) & [Community Driven](https://discord.gg/P4VE9UY9gJ)**
|
||||||
|
Regular updates fueled by continuous community contributions.
|
||||||
|
- **Wide Printer Compatibility**
|
||||||
|
Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more.
|
||||||
|
- Additional features can be found in the [change notes](https://github.com/OrcaSlicer/OrcaSlicer/releases/).
|
||||||
|
|
||||||
# Wiki
|
# Wiki
|
||||||
The wiki below aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
|
|
||||||
|
|
||||||
Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it!
|
The [wiki](https://www.orcaslicer.com/wiki) aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
|
||||||
|
|
||||||
**[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)**
|
- **[Access the wiki here](https://www.orcaslicer.com/wiki)**
|
||||||
|
- **[Contribute to the wiki](https://www.orcaslicer.com/wiki/How-to-wiki)**
|
||||||
|
|
||||||
# Download
|
# Download
|
||||||
|
|
||||||
### Stable Release
|
## Stable Release
|
||||||
📥 **[Download the Latest Stable Release](https://github.com/SoftFever/OrcaSlicer/releases/latest)**
|
|
||||||
Visit our GitHub Releases page for the latest stable version of Orca Slicer, recommended for most users.
|
|
||||||
|
|
||||||
### Nightly Builds
|
📥 **[Download the Latest Stable Release](https://github.com/OrcaSlicer/OrcaSlicer/releases/latest)**
|
||||||
🌙 **[Download the Latest Nightly Build](https://github.com/SoftFever/OrcaSlicer/releases/tag/nightly-builds)**
|
Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users.
|
||||||
Explore the latest developments in Orca Slicer with our nightly builds. Feedback on these versions is highly appreciated.
|
|
||||||
|
|
||||||
|
## Nightly Builds
|
||||||
|
|
||||||
|
🌙 **[Download the Latest Nightly Build](https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/nightly-builds)**
|
||||||
|
Explore the latest developments in OrcaSlicer with our nightly builds. Feedback on these versions is highly appreciated.
|
||||||
|
|
||||||
# How to install
|
# How to install
|
||||||
**Windows**:
|
|
||||||
1. Download the installer for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
|
|
||||||
- *For convenience there is also a portable build available.*
|
|
||||||
- *If you have troubles to run the build, you might need to install following runtimes:*
|
|
||||||
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
|
|
||||||
- [Details of this runtime](https://aka.ms/webview2)
|
|
||||||
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
|
|
||||||
- [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
|
|
||||||
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
|
|
||||||
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
|
|
||||||
|
|
||||||
**Mac**:
|
## Windows
|
||||||
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
|
|
||||||
2. Drag OrcaSlicer.app to Application folder.
|
Download the **Windows Installer exe** for your preferred version from the [releases page](https://github.com/OrcaSlicer/OrcaSlicer/releases).
|
||||||
3. *If you want to run a build from a PR, you also need to follow the instructions below:*
|
|
||||||
<details quarantine>
|
- *For convenience there is also a portable build available.*
|
||||||
|
<details>
|
||||||
|
<summary>Troubleshooting</summary>
|
||||||
|
|
||||||
|
- *If you have troubles to run the build, you might need to install following runtimes:*
|
||||||
|
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/OrcaSlicer/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
|
||||||
|
- [Details of this runtime](https://aka.ms/webview2)
|
||||||
|
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
|
||||||
|
- [vcredist2019_x64](https://github.com/OrcaSlicer/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
|
||||||
|
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
|
||||||
|
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
|
||||||
|
</details>
|
||||||
|
|
||||||
|
Windows Package Manager
|
||||||
|
|
||||||
|
```shell
|
||||||
|
winget install --id=SoftFever.OrcaSlicer -e
|
||||||
|
```
|
||||||
|
|
||||||
|
## Mac
|
||||||
|
|
||||||
|
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
|
||||||
|
2. Drag OrcaSlicer.app to Application folder.
|
||||||
|
3. *If you want to run a build from a PR, you also need to follow the instructions below:*
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Quarantine</summary>
|
||||||
|
|
||||||
- Option 1 (You only need to do this once. After that the app can be opened normally.):
|
- Option 1 (You only need to do this once. After that the app can be opened normally.):
|
||||||
- Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**.
|
- Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**.
|
||||||
- Step 2: A warning window will pop up, click _Open_
|
- Step 2: A warning window will pop up, click _Open_
|
||||||
|
|
||||||
- Option 2:
|
- Option 2:
|
||||||
Execute this command in terminal: `xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
|
Execute this command in terminal:
|
||||||
```console
|
|
||||||
softfever@mac:~$ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app
|
```shell
|
||||||
|
xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app
|
||||||
```
|
```
|
||||||
- Option 3:
|
|
||||||
|
- Option 3:
|
||||||
- Step 1: open the app, a warning window will pop up
|
- Step 1: open the app, a warning window will pop up
|
||||||

|

|
||||||
- Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
|
- Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
|
||||||

|

|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
**Linux (Ubuntu)**:
|
## Linux (Ubuntu)
|
||||||
1. If you run into trouble executing it, try this command in the terminal:
|
|
||||||
|
1. If you run into trouble executing it, try this command in the terminal:
|
||||||
`chmod +x /path_to_appimage/OrcaSlicer_Linux.AppImage`
|
`chmod +x /path_to_appimage/OrcaSlicer_Linux.AppImage`
|
||||||
|
|
||||||
# How to compile
|
|
||||||
- Windows 64-bit
|
|
||||||
- Tools needed: Visual Studio 2019, Cmake, git, git-lfs, Strawberry Perl.
|
|
||||||
- You will require cmake version 3.14 or later, which is available [on their website](https://cmake.org/download/).
|
|
||||||
- Strawberry Perl is [available on their GitHub repository](https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/).
|
|
||||||
- Run `build_release.bat` in `x64 Native Tools Command Prompt for VS 2019`
|
|
||||||
- Note: Don't forget to run `git lfs pull` after cloning the repository to download tools on Windows
|
|
||||||
|
|
||||||
- Mac 64-bit
|
# How to Compile
|
||||||
- Tools needed: Xcode, Cmake, git, gettext, libtool, automake, autoconf, texinfo
|
|
||||||
- You can install most of them by running `brew install cmake gettext libtool automake autoconf texinfo`
|
|
||||||
- run `build_release_macos.sh`
|
|
||||||
- To build and debug in Xcode:
|
|
||||||
- run `Xcode.app`
|
|
||||||
- open ``build_`arch`/OrcaSlicer.Xcodeproj``
|
|
||||||
- menu bar: Product => Scheme => OrcaSlicer
|
|
||||||
- menu bar: Product => Scheme => Edit Scheme...
|
|
||||||
- Run => Info tab => Build Configuration: `RelWithDebInfo`
|
|
||||||
- Run => Options tab => Document Versions: uncheck `Allow debugging when browsing versions`
|
|
||||||
- menu bar: Product => Run
|
|
||||||
|
|
||||||
- Linux (All Distros)
|
All updated build instructions for Windows, macOS, and Linux are now available on the official [OrcaSlicer Wiki - How to build](https://www.orcaslicer.com/wiki/How-to-build) page.
|
||||||
- Docker
|
|
||||||
- Dependencies: Docker [Installation Instructions](https://www.docker.com/get-started/), git
|
Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.
|
||||||
- clone this repository `git clone https://github.com/SoftFever/OrcaSlicer`
|
|
||||||
- run `cd OrcaSlicer`
|
# Klipper Note
|
||||||
- run `./DockerBuild.sh`
|
|
||||||
- To run OrcaSlicer:
|
|
||||||
- run `./DockerRun.sh`
|
|
||||||
- For most common errors, open `DockerRun.sh` and read the comments.
|
|
||||||
- Ubuntu
|
|
||||||
- Dependencies **Will be auto installed with the shell script**: `libmspack-dev libgstreamerd-3-dev libsecret-1-dev libwebkit2gtk-4.0-dev libosmesa6-dev libssl-dev libcurl4-openssl-dev eglexternalplatform-dev libudev-dev libdbus-1-dev extra-cmake-modules libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev cmake git texinfo`
|
|
||||||
- run 'sudo ./BuildLinux.sh -u'
|
|
||||||
- run './BuildLinux.sh -dsir'
|
|
||||||
|
|
||||||
# Note:
|
|
||||||
If you're running Klipper, it's recommended to add the following configuration to your `printer.cfg` file.
|
If you're running Klipper, it's recommended to add the following configuration to your `printer.cfg` file.
|
||||||
```
|
|
||||||
|
```gcode
|
||||||
# Enable object exclusion
|
# Enable object exclusion
|
||||||
[exclude_object]
|
[exclude_object]
|
||||||
|
|
||||||
@@ -133,57 +162,52 @@ resolution: 0.1
|
|||||||
```
|
```
|
||||||
|
|
||||||
# Supports
|
# Supports
|
||||||
**Orca Slicer** is an open-source project and I'm deeply grateful to all my sponsors and backers.
|
|
||||||
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
|
**OrcaSlicer** is an open-source project and I'm deeply grateful to all my sponsors and backers.
|
||||||
|
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
|
||||||
Thank you! :)
|
Thank you! :)
|
||||||
|
|
||||||
### Sponsors:
|
## Sponsors:
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a href="https://qidi3d.com/">
|
<a href="https://qidi3d.com/" style="display:inline-block; border-radius:8px; background:#fff;">
|
||||||
<img src="SoftFever_doc\sponsor_logos\QIDI.png" alt="QIDI" width="96" height="">
|
<img src="SoftFever_doc\sponsor_logos\QIDI.png" alt="QIDI" width="100" height="100">
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="https://bigtree-tech.com/">
|
<a href="https://bigtree-tech.com/" style="display:inline-block; border-radius:8px; background:#222;">
|
||||||
<img src="SoftFever_doc\sponsor_logos\BigTreeTech.png" alt="BIGTREE TECH" width="96" height="">
|
<img src="SoftFever_doc\sponsor_logos\BigTreeTech.png" alt="BIGTREE TECH" width="100" height="100">
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
### Backers:
|
## Backers:
|
||||||
**Ko-fi supporters**: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv)
|
|
||||||
|
|
||||||
## Support me
|
**Ko-fi supporters** ☕: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv)
|
||||||
<a href="https://github.com/sponsors/SoftFever"><img src="https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86" width="130"></a>
|
|
||||||
|
|
||||||
<a href="https://ko-fi.com/G2G5IP3CP"><img src="https://ko-fi.com/img/githubbutton_sm.svg" width="200"></a>
|
## Support me
|
||||||
|
|
||||||
[](https://paypal.me/softfever3d)
|
|
||||||
|
|
||||||
|
<a href="https://github.com/sponsors/SoftFever"><img src="https://img.shields.io/badge/GitHub%20Sponsors-30363D?style=flat&logo=GitHub-Sponsors&logoColor=EA4AAA" height="50"></a>
|
||||||
|
<a href="https://ko-fi.com/G2G5IP3CP"><img src="https://img.shields.io/badge/Support_me_on_Ko--fi-FF5E5B?style=flat&logo=ko-fi&logoColor=white" height="50"></a>
|
||||||
|
<a href="https://paypal.me/softfever3d"><img src="https://img.shields.io/badge/PayPal-003087?style=flat&logo=paypal&logoColor=fff" height="50"></a>
|
||||||
|
|
||||||
## Some background
|
## Some background
|
||||||
OrcaSlicer is originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.
|
|
||||||
|
|
||||||
Bambu Studio is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
|
OrcaSlicer was originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.
|
||||||
Orca Slicer incorporates a lot of features from SuperSlicer by @supermerill
|
|
||||||
Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr)
|
|
||||||
|
|
||||||
|
[Bambu Studio](https://github.com/bambulab/BambuStudio) is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community.
|
||||||
|
OrcaSlicer incorporates a lot of features from [SuperSlicer](https://github.com/supermerill/SuperSlicer) by @supermerill
|
||||||
|
OrcaSlicer's logo is designed by community member Justin Levine (@freejstnalxndr).
|
||||||
|
|
||||||
# License
|
# License
|
||||||
Orca Slicer is licensed under the GNU Affero General Public License, version 3. Orca Slicer is based on Bambu Studio by BambuLab.
|
|
||||||
|
|
||||||
Bambu Studio is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
|
|
||||||
|
|
||||||
PrusaSlicer is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
|
|
||||||
|
|
||||||
Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
|
|
||||||
|
|
||||||
The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
|
|
||||||
|
|
||||||
Orca Slicer includes a pressure advance calibration pattern test adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
|
|
||||||
|
|
||||||
The Bambu networking plugin is based on non-free libraries from BambuLab. It is optional to the Orca Slicer and provides extended functionalities for Bambulab printer users.
|
|
||||||
|
|
||||||
|
- **OrcaSlicer** is licensed under the GNU Affero General Public License, version 3. OrcaSlicer is based on Bambu Studio by BambuLab.
|
||||||
|
- **Bambu Studio** is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
|
||||||
|
- **PrusaSlicer** is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
|
||||||
|
- **Slic3r** is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
|
||||||
|
- The **GNU Affero General Public License**, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
|
||||||
|
- OrcaSlicer includes a **pressure advance calibration pattern test** adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
|
||||||
|
- The **Bambu networking plugin** is based on non-free libraries from BambuLab. It is optional to the OrcaSlicer and provides extended functionalities for Bambulab printer users.
|
||||||
|
|||||||
341
build_flatpak.sh
Executable file
341
build_flatpak.sh
Executable file
@@ -0,0 +1,341 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# OrcaSlicer Flatpak Build Script
|
||||||
|
# This script builds and packages OrcaSlicer as a Flatpak package locally
|
||||||
|
# Based on the GitHub Actions workflow in .github/workflows/build_all.yml
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Default values
|
||||||
|
ARCH=$(uname -m)
|
||||||
|
BUILD_DIR="build_flatpak"
|
||||||
|
CLEANUP=false
|
||||||
|
INSTALL_RUNTIME=false
|
||||||
|
JOBS=$(nproc)
|
||||||
|
FORCE_CLEAN=false
|
||||||
|
ENABLE_CCACHE=false
|
||||||
|
CACHE_DIR=".flatpak-builder"
|
||||||
|
|
||||||
|
# Help function
|
||||||
|
show_help() {
|
||||||
|
echo "Usage: $0 [OPTIONS]"
|
||||||
|
echo ""
|
||||||
|
echo "Build OrcaSlicer as a Flatpak package"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " -a, --arch ARCH Target architecture (x86_64, aarch64) [default: $ARCH]"
|
||||||
|
echo " -d, --build-dir DIR Build directory [default: $BUILD_DIR]"
|
||||||
|
echo " -j, --jobs JOBS Number of parallel build jobs for flatpak-builder and modules [default: $JOBS]"
|
||||||
|
echo " -c, --cleanup Clean build directory before building"
|
||||||
|
echo " -f, --force-clean Force clean build (disables caching)"
|
||||||
|
echo " --ccache Enable ccache for faster rebuilds (requires ccache in SDK)"
|
||||||
|
echo " --cache-dir DIR Flatpak builder cache directory [default: $CACHE_DIR]"
|
||||||
|
echo " -i, --install-runtime Install required Flatpak runtime and SDK"
|
||||||
|
echo " -h, --help Show this help message"
|
||||||
|
echo ""
|
||||||
|
echo "Examples:"
|
||||||
|
echo " $0 # Build for current architecture with caching enabled"
|
||||||
|
echo " $0 -f # Force clean build (no caching)"
|
||||||
|
echo " $0 --ccache -j 8 # Use ccache and 8 parallel jobs for faster builds"
|
||||||
|
echo " $0 -a x86_64 -c # Build for x86_64 and cleanup first"
|
||||||
|
echo " $0 -i -j 16 --ccache # Install runtime, build with 16 jobs and ccache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse command line arguments
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-a|--arch)
|
||||||
|
ARCH="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-d|--build-dir)
|
||||||
|
BUILD_DIR="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-j|--jobs)
|
||||||
|
JOBS="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-c|--cleanup)
|
||||||
|
CLEANUP=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-f|--force-clean)
|
||||||
|
FORCE_CLEAN=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--ccache)
|
||||||
|
ENABLE_CCACHE=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--cache-dir)
|
||||||
|
CACHE_DIR="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-i|--install-runtime)
|
||||||
|
INSTALL_RUNTIME=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}Error: Unknown option $1${NC}"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Validate architecture
|
||||||
|
if [[ "$ARCH" != "x86_64" && "$ARCH" != "aarch64" ]]; then
|
||||||
|
echo -e "${RED}Error: Unsupported architecture '$ARCH'. Supported: x86_64, aarch64${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate jobs parameter
|
||||||
|
if ! [[ "$JOBS" =~ ^[1-9][0-9]*$ ]]; then
|
||||||
|
echo -e "${RED}Error: Jobs must be a positive integer, got '$JOBS'${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}OrcaSlicer Flatpak Build Script${NC}"
|
||||||
|
echo -e "${BLUE}================================${NC}"
|
||||||
|
echo -e "Architecture: ${GREEN}$ARCH${NC}"
|
||||||
|
echo -e "Build directory: ${GREEN}$BUILD_DIR${NC}"
|
||||||
|
echo -e "Cache directory: ${GREEN}$CACHE_DIR${NC}"
|
||||||
|
echo -e "Parallel jobs: ${GREEN}$JOBS${NC}"
|
||||||
|
if [[ "$FORCE_CLEAN" == true ]]; then
|
||||||
|
echo -e "Cache mode: ${RED}DISABLED (force clean)${NC}"
|
||||||
|
else
|
||||||
|
echo -e "Cache mode: ${GREEN}ENABLED${NC}"
|
||||||
|
fi
|
||||||
|
if [[ "$ENABLE_CCACHE" == true ]]; then
|
||||||
|
echo -e "Ccache: ${GREEN}ENABLED${NC}"
|
||||||
|
else
|
||||||
|
echo -e "Ccache: ${YELLOW}DISABLED${NC}"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check available disk space (flatpak builds need several GB)
|
||||||
|
AVAILABLE_SPACE=$(df . | awk 'NR==2 {print $4}')
|
||||||
|
REQUIRED_SPACE=$((5 * 1024 * 1024)) # 5GB in KB
|
||||||
|
|
||||||
|
if [[ $AVAILABLE_SPACE -lt $REQUIRED_SPACE ]]; then
|
||||||
|
echo -e "${YELLOW}Warning: Low disk space detected.${NC}"
|
||||||
|
echo -e "Available: $(( AVAILABLE_SPACE / 1024 / 1024 ))GB, Recommended: 5GB+"
|
||||||
|
echo -e "Continue anyway? (y/N)"
|
||||||
|
read -r response
|
||||||
|
if [[ ! "$response" =~ ^[Yy]$ ]]; then
|
||||||
|
echo "Build cancelled by user"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if flatpak is installed
|
||||||
|
if ! command -v flatpak &> /dev/null; then
|
||||||
|
echo -e "${RED}Error: Flatpak is not installed. Please install it first.${NC}"
|
||||||
|
echo "On Ubuntu/Debian: sudo apt install flatpak"
|
||||||
|
echo "On Fedora: sudo dnf install flatpak"
|
||||||
|
echo "On Arch: sudo pacman -S flatpak"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if flatpak-builder is installed
|
||||||
|
if ! command -v flatpak-builder &> /dev/null; then
|
||||||
|
echo -e "${RED}Error: flatpak-builder is not installed. Please install it first.${NC}"
|
||||||
|
echo "On Ubuntu/Debian: sudo apt install flatpak-builder"
|
||||||
|
echo "On Fedora: sudo dnf install flatpak-builder"
|
||||||
|
echo "On Arch: sudo pacman -S flatpak-builder"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check additional build dependencies
|
||||||
|
echo -e "${YELLOW}Checking build dependencies...${NC}"
|
||||||
|
MISSING_DEPS=()
|
||||||
|
|
||||||
|
if ! command -v cmake &> /dev/null; then
|
||||||
|
MISSING_DEPS+=("cmake")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v ninja &> /dev/null && ! command -v make &> /dev/null; then
|
||||||
|
MISSING_DEPS+=("ninja or make")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v pkg-config &> /dev/null; then
|
||||||
|
MISSING_DEPS+=("pkg-config")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${#MISSING_DEPS[@]} -ne 0 ]; then
|
||||||
|
echo -e "${RED}Error: Missing required build dependencies: ${MISSING_DEPS[*]}${NC}"
|
||||||
|
echo "On Ubuntu/Debian: sudo apt install cmake ninja-build pkg-config"
|
||||||
|
echo "On Fedora: sudo dnf install cmake ninja-build pkgconfig"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}All required dependencies found${NC}"
|
||||||
|
|
||||||
|
# Install runtime and SDK if requested
|
||||||
|
if [[ "$INSTALL_RUNTIME" == true ]]; then
|
||||||
|
echo -e "${YELLOW}Installing GNOME runtime and SDK...${NC}"
|
||||||
|
flatpak install --user -y flathub org.gnome.Platform//48
|
||||||
|
flatpak install --user -y flathub org.gnome.Sdk//48
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if required runtime is available
|
||||||
|
if ! flatpak info --user org.gnome.Platform//48 &> /dev/null; then
|
||||||
|
echo -e "${RED}Error: GNOME Platform 48 runtime is not installed.${NC}"
|
||||||
|
echo "Run with -i flag to install it automatically, or install manually:"
|
||||||
|
echo "flatpak install --user flathub org.gnome.Platform//48"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! flatpak info --user org.gnome.Sdk//48 &> /dev/null; then
|
||||||
|
echo -e "${RED}Error: GNOME SDK 48 is not installed.${NC}"
|
||||||
|
echo "Run with -i flag to install it automatically, or install manually:"
|
||||||
|
echo "flatpak install --user flathub org.gnome.Sdk//48"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get version information
|
||||||
|
echo -e "${YELLOW}Getting version information...${NC}"
|
||||||
|
if [[ -f "version.inc" ]]; then
|
||||||
|
VER_PURE=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
|
||||||
|
VER="V$VER_PURE"
|
||||||
|
DATE=$(date +'%Y%m%d')
|
||||||
|
echo -e "Version: ${GREEN}$VER${NC}"
|
||||||
|
echo -e "Date: ${GREEN}$DATE${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}Error: version.inc not found${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cleanup build directory if requested
|
||||||
|
if [[ "$CLEANUP" == true ]]; then
|
||||||
|
echo -e "${YELLOW}Cleaning up flatpak-specific build directories...${NC}"
|
||||||
|
rm -rf deps/build_flatpak build_flatpak
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Cleaning up flatpak build directories...${NC}"
|
||||||
|
rm -rf "$BUILD_DIR"
|
||||||
|
|
||||||
|
# Only clean cache if force-clean is enabled
|
||||||
|
if [[ "$FORCE_CLEAN" == true ]]; then
|
||||||
|
echo -e "${YELLOW}Cleaning up flatpak build cache...${NC}"
|
||||||
|
rm -rf "$CACHE_DIR"
|
||||||
|
else
|
||||||
|
echo -e "${BLUE}Preserving build cache at: $CACHE_DIR${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}Note: Host build directories (deps/build, build) are preserved${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create build directory
|
||||||
|
mkdir -p "$BUILD_DIR"
|
||||||
|
rm -rf "$BUILD_DIR/build-dir"
|
||||||
|
|
||||||
|
# Check if flatpak manifest exists
|
||||||
|
if [[ ! -f "./scripts/flatpak/io.github.softfever.OrcaSlicer.yml" ]]; then
|
||||||
|
echo -e "${RED}Error: Flatpak manifest not found at scripts/flatpak/io.github.softfever.OrcaSlicer.yml${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build the Flatpak
|
||||||
|
echo -e "${YELLOW}Building Flatpak package...${NC}"
|
||||||
|
echo -e "This may take a while (30+ minutes depending on your system)..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
BUNDLE_NAME="OrcaSlicer-Linux-flatpak_${VER}_${ARCH}.flatpak"
|
||||||
|
|
||||||
|
# Remove any existing bundle
|
||||||
|
rm -f "$BUNDLE_NAME"
|
||||||
|
|
||||||
|
# Create necessary directories inside repo
|
||||||
|
mkdir -p "$BUILD_DIR/cache" "$BUILD_DIR/flatpak-builder"
|
||||||
|
|
||||||
|
# Set environment variables to match GitHub Actions
|
||||||
|
export FLATPAK_BUILDER_N_JOBS=$JOBS
|
||||||
|
|
||||||
|
echo -e "${BLUE}Running flatpak-builder...${NC}"
|
||||||
|
echo -e "Using $JOBS parallel jobs for flatpak-builder and $FLATPAK_BUILDER_N_JOBS for module builds"
|
||||||
|
|
||||||
|
# Check flatpak-builder version to determine available options
|
||||||
|
FLATPAK_BUILDER_VERSION=$(flatpak-builder --version 2>/dev/null | head -1 | awk '{print $2}' || echo "unknown")
|
||||||
|
echo -e "flatpak-builder version: $FLATPAK_BUILDER_VERSION"
|
||||||
|
|
||||||
|
# Build command with caching support
|
||||||
|
BUILDER_ARGS=(
|
||||||
|
--arch="$ARCH"
|
||||||
|
--user
|
||||||
|
--install-deps-from=flathub
|
||||||
|
--repo="$BUILD_DIR/repo"
|
||||||
|
--verbose
|
||||||
|
--state-dir="$CACHE_DIR"
|
||||||
|
--jobs="$JOBS"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add force-clean only if explicitly requested (disables caching)
|
||||||
|
if [[ "$FORCE_CLEAN" == true ]]; then
|
||||||
|
BUILDER_ARGS+=(--force-clean)
|
||||||
|
echo -e "${YELLOW}Using --force-clean (caching disabled)${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}Using build cache for faster rebuilds${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add ccache if enabled
|
||||||
|
if [[ "$ENABLE_CCACHE" == true ]]; then
|
||||||
|
BUILDER_ARGS+=(--ccache)
|
||||||
|
echo -e "${GREEN}Using ccache for compiler caching${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! flatpak-builder \
|
||||||
|
"${BUILDER_ARGS[@]}" \
|
||||||
|
"$BUILD_DIR/build-dir" \
|
||||||
|
scripts/flatpak/io.github.softfever.OrcaSlicer.yml; then
|
||||||
|
echo -e "${RED}Error: flatpak-builder failed${NC}"
|
||||||
|
echo -e "${YELLOW}Check the build log above for details${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create bundle
|
||||||
|
echo -e "${YELLOW}Creating Flatpak bundle...${NC}"
|
||||||
|
if ! flatpak build-bundle \
|
||||||
|
"$BUILD_DIR/repo" \
|
||||||
|
"$BUNDLE_NAME" \
|
||||||
|
io.github.softfever.OrcaSlicer \
|
||||||
|
--arch="$ARCH"; then
|
||||||
|
echo -e "${RED}Error: Failed to create Flatpak bundle${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Success message
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}✓ Flatpak build completed successfully!${NC}"
|
||||||
|
echo -e "Bundle created: ${GREEN}$BUNDLE_NAME${NC}"
|
||||||
|
echo -e "Size: ${GREEN}$(du -h "$BUNDLE_NAME" | cut -f1)${NC}"
|
||||||
|
if [[ "$FORCE_CLEAN" != true ]]; then
|
||||||
|
echo -e "Build cache: ${GREEN}$CACHE_DIR${NC} (preserved for faster future builds)"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}To install the Flatpak:${NC}"
|
||||||
|
echo -e "flatpak install --user $BUNDLE_NAME"
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}To run OrcaSlicer:${NC}"
|
||||||
|
echo -e "flatpak run io.github.softfever.OrcaSlicer"
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}To uninstall:${NC}"
|
||||||
|
echo -e "flatpak uninstall --user io.github.softfever.OrcaSlicer"
|
||||||
|
echo ""
|
||||||
|
if [[ "$FORCE_CLEAN" != true ]]; then
|
||||||
|
echo -e "${BLUE}Cache Management:${NC}"
|
||||||
|
echo -e "• Subsequent builds will be faster thanks to caching"
|
||||||
|
echo -e "• To force a clean build: $0 -f"
|
||||||
|
echo -e "• To clean cache manually: rm -rf $CACHE_DIR"
|
||||||
|
fi
|
||||||
269
build_linux.sh
Executable file
269
build_linux.sh
Executable file
@@ -0,0 +1,269 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e # Exit immediately if a command exits with a non-zero status.
|
||||||
|
|
||||||
|
SCRIPT_NAME=$(basename "$0")
|
||||||
|
SCRIPT_PATH=$(dirname "$(readlink -f "${0}")")
|
||||||
|
|
||||||
|
pushd "${SCRIPT_PATH}" > /dev/null
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-D][-e][-h][-i][-j N][-p][-r][-s][-t][-u][-l][-L]"
|
||||||
|
echo " -1: limit builds to one core (where possible)"
|
||||||
|
echo " -j N: limit builds to N cores (where possible)"
|
||||||
|
echo " -b: build in Debug mode"
|
||||||
|
echo " -c: force a clean build"
|
||||||
|
echo " -C: enable ANSI-colored compile output (GNU/Clang only)"
|
||||||
|
echo " -d: download and build dependencies in ./deps/ (build prerequisite)"
|
||||||
|
echo " -D: dry run"
|
||||||
|
echo " -e: build in RelWithDebInfo mode"
|
||||||
|
echo " -h: prints this help text"
|
||||||
|
echo " -i: build the Orca Slicer AppImage (optional)"
|
||||||
|
echo " -p: boost ccache hit rate by disabling precompiled headers (default: ON)"
|
||||||
|
echo " -r: skip RAM and disk checks (low RAM compiling)"
|
||||||
|
echo " -s: build the Orca Slicer (optional)"
|
||||||
|
echo " -t: build tests (optional), requires -s flag"
|
||||||
|
echo " -u: install system dependencies (asks for sudo password; build prerequisite)"
|
||||||
|
echo " -l: use Clang instead of GCC (default: GCC)"
|
||||||
|
echo " -L: use ld.lld as linker (if available)"
|
||||||
|
echo "For a first use, you want to './${SCRIPT_NAME} -u'"
|
||||||
|
echo " and then './${SCRIPT_NAME} -dsi'"
|
||||||
|
}
|
||||||
|
|
||||||
|
SLIC3R_PRECOMPILED_HEADERS="ON"
|
||||||
|
|
||||||
|
unset name
|
||||||
|
BUILD_DIR=build
|
||||||
|
BUILD_CONFIG=Release
|
||||||
|
while getopts ":1j:bcCdDehiprstulL" opt ; do
|
||||||
|
case ${opt} in
|
||||||
|
1 )
|
||||||
|
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||||
|
;;
|
||||||
|
j )
|
||||||
|
export CMAKE_BUILD_PARALLEL_LEVEL=$OPTARG
|
||||||
|
;;
|
||||||
|
b )
|
||||||
|
BUILD_DIR=build-dbg
|
||||||
|
BUILD_CONFIG=Debug
|
||||||
|
;;
|
||||||
|
c )
|
||||||
|
CLEAN_BUILD=1
|
||||||
|
;;
|
||||||
|
C )
|
||||||
|
COLORED_OUTPUT="-DCOLORED_OUTPUT=ON"
|
||||||
|
;;
|
||||||
|
d )
|
||||||
|
BUILD_DEPS="1"
|
||||||
|
;;
|
||||||
|
D )
|
||||||
|
DRY_RUN="1"
|
||||||
|
;;
|
||||||
|
e )
|
||||||
|
BUILD_DIR=build-dbginfo
|
||||||
|
BUILD_CONFIG=RelWithDebInfo
|
||||||
|
;;
|
||||||
|
h ) usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
i )
|
||||||
|
BUILD_IMAGE="1"
|
||||||
|
;;
|
||||||
|
p )
|
||||||
|
SLIC3R_PRECOMPILED_HEADERS="OFF"
|
||||||
|
;;
|
||||||
|
r )
|
||||||
|
SKIP_RAM_CHECK="1"
|
||||||
|
;;
|
||||||
|
s )
|
||||||
|
BUILD_ORCA="1"
|
||||||
|
;;
|
||||||
|
t )
|
||||||
|
BUILD_TESTS="1"
|
||||||
|
;;
|
||||||
|
u )
|
||||||
|
export UPDATE_LIB="1"
|
||||||
|
;;
|
||||||
|
l )
|
||||||
|
USE_CLANG="1"
|
||||||
|
;;
|
||||||
|
L )
|
||||||
|
USE_LLD="1"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "Unknown argument '${opt}', aborting."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ${OPTIND} -eq 1 ] ; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
function check_available_memory_and_disk() {
|
||||||
|
FREE_MEM_GB=$(free --gibi --total | grep 'Mem' | rev | cut --delimiter=" " --fields=1 | rev)
|
||||||
|
MIN_MEM_GB=10
|
||||||
|
|
||||||
|
FREE_DISK_KB=$(df --block-size=1K . | tail -1 | awk '{print $4}')
|
||||||
|
MIN_DISK_KB=$((10 * 1024 * 1024))
|
||||||
|
|
||||||
|
if [[ ${FREE_MEM_GB} -le ${MIN_MEM_GB} ]] ; then
|
||||||
|
echo -e "\nERROR: Orca Slicer Builder requires at least ${MIN_MEM_GB}G of 'available' mem (system has only ${FREE_MEM_GB}G available)"
|
||||||
|
echo && free --human && echo
|
||||||
|
echo "Invoke with -r to skip RAM and disk checks."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${FREE_DISK_KB} -le ${MIN_DISK_KB} ]] ; then
|
||||||
|
echo -e "\nERROR: Orca Slicer Builder requires at least $(echo "${MIN_DISK_KB}" |awk '{ printf "%.1fG\n", $1/1024/1024; }') (system has only $(echo "${FREE_DISK_KB}" | awk '{ printf "%.1fG\n", $1/1024/1024; }') disk free)"
|
||||||
|
echo && df --human-readable . && echo
|
||||||
|
echo "Invoke with -r to skip ram and disk checks."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_and_run() {
|
||||||
|
cmd=()
|
||||||
|
# Remove empty arguments, leading and trailing spaces
|
||||||
|
for item in "$@" ; do
|
||||||
|
if [[ -n $item ]]; then
|
||||||
|
cmd+=( "$(echo "${item}" | xargs)" )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "${cmd[@]}"
|
||||||
|
if [[ -z "${DRY_RUN}" ]] ; then
|
||||||
|
"${cmd[@]}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# cmake 4.x compatibility workaround
|
||||||
|
export CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
|
|
||||||
|
DISTRIBUTION=$(awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '"')
|
||||||
|
DISTRIBUTION_LIKE=$(awk -F= '/^ID_LIKE=/ {print $2}' /etc/os-release | tr -d '"')
|
||||||
|
# Check for direct distribution match to Ubuntu/Debian
|
||||||
|
if [ "${DISTRIBUTION}" == "ubuntu" ] || [ "${DISTRIBUTION}" == "linuxmint" ] ; then
|
||||||
|
DISTRIBUTION="debian"
|
||||||
|
# Check if distribution is Debian/Ubuntu-like based on ID_LIKE
|
||||||
|
elif [[ "${DISTRIBUTION_LIKE}" == *"debian"* ]] || [[ "${DISTRIBUTION_LIKE}" == *"ubuntu"* ]] ; then
|
||||||
|
DISTRIBUTION="debian"
|
||||||
|
elif [[ "${DISTRIBUTION_LIKE}" == *"arch"* ]] ; then
|
||||||
|
DISTRIBUTION="arch"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "./scripts/linux.d/${DISTRIBUTION}" ] ; then
|
||||||
|
echo "Your distribution \"${DISTRIBUTION}\" is not supported by system-dependency scripts in ./scripts/linux.d/"
|
||||||
|
echo "Please resolve dependencies manually and contribute a script for your distribution to upstream."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "resolving system dependencies for distribution \"${DISTRIBUTION}\" ..."
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "./scripts/linux.d/${DISTRIBUTION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "FOUND_GTK3_DEV=${FOUND_GTK3_DEV}"
|
||||||
|
if [[ -z "${FOUND_GTK3_DEV}" ]] ; then
|
||||||
|
echo "Error, you must install the dependencies before."
|
||||||
|
echo "Use option -u with sudo"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Changing date in version..."
|
||||||
|
{
|
||||||
|
# change date in version
|
||||||
|
sed --in-place "s/+UNKNOWN/_$(date '+%F')/" version.inc
|
||||||
|
}
|
||||||
|
echo "done"
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -z "${SKIP_RAM_CHECK}" ]] ; then
|
||||||
|
check_available_memory_and_disk
|
||||||
|
fi
|
||||||
|
|
||||||
|
export CMAKE_C_CXX_COMPILER_CLANG=()
|
||||||
|
if [[ -n "${USE_CLANG}" ]] ; then
|
||||||
|
export CMAKE_C_CXX_COMPILER_CLANG=(-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure use of ld.lld as the linker when requested
|
||||||
|
export CMAKE_LLD_LINKER_ARGS=()
|
||||||
|
if [[ -n "${USE_LLD}" ]] ; then
|
||||||
|
if command -v ld.lld >/dev/null 2>&1 ; then
|
||||||
|
LLD_BIN=$(command -v ld.lld)
|
||||||
|
export CMAKE_LLD_LINKER_ARGS=(-DCMAKE_LINKER="${LLD_BIN}" -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld)
|
||||||
|
else
|
||||||
|
echo "Error: ld.lld not found. Please install the 'lld' package (e.g., sudo apt install lld) or omit -L."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${BUILD_DEPS}" ]] ; then
|
||||||
|
echo "Configuring dependencies..."
|
||||||
|
read -r -a BUILD_ARGS <<< "${DEPS_EXTRA_BUILD_ARGS}"
|
||||||
|
if [[ -n "${CLEAN_BUILD}" ]]
|
||||||
|
then
|
||||||
|
print_and_run rm -fr deps/$BUILD_DIR
|
||||||
|
fi
|
||||||
|
mkdir -p deps/$BUILD_DIR
|
||||||
|
if [[ $BUILD_CONFIG != Release ]] ; then
|
||||||
|
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}"
|
||||||
|
print_and_run cmake --build deps/$BUILD_DIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${BUILD_ORCA}" ]] || [[ -n "${BUILD_TESTS}" ]] ; then
|
||||||
|
echo "Configuring OrcaSlicer..."
|
||||||
|
if [[ -n "${CLEAN_BUILD}" ]] ; then
|
||||||
|
print_and_run rm -fr $BUILD_DIR
|
||||||
|
fi
|
||||||
|
read -r -a BUILD_ARGS <<< "${ORCA_EXTRA_BUILD_ARGS}"
|
||||||
|
if [[ $BUILD_CONFIG != Release ]] ; then
|
||||||
|
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}")
|
||||||
|
fi
|
||||||
|
if [[ -n "${BUILD_TESTS}" ]] ; then
|
||||||
|
BUILD_ARGS+=(-DBUILD_TESTS=ON)
|
||||||
|
fi
|
||||||
|
if [[ -n "${ORCA_UPDATER_SIG_KEY}" ]] ; then
|
||||||
|
BUILD_ARGS+=(-DORCA_UPDATER_SIG_KEY="${ORCA_UPDATER_SIG_KEY}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_and_run cmake -S . -B $BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G "Ninja Multi-Config" \
|
||||||
|
-DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} \
|
||||||
|
-DORCA_TOOLS=ON \
|
||||||
|
"${COLORED_OUTPUT}" \
|
||||||
|
"${BUILD_ARGS[@]}"
|
||||||
|
echo "done"
|
||||||
|
if [[ -n "${BUILD_ORCA}" ]]; then
|
||||||
|
echo "Building OrcaSlicer ..."
|
||||||
|
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer
|
||||||
|
echo "Building OrcaSlicer_profile_validator .."
|
||||||
|
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer_profile_validator
|
||||||
|
./scripts/run_gettext.sh
|
||||||
|
fi
|
||||||
|
if [[ -n "${BUILD_TESTS}" ]] ; then
|
||||||
|
echo "Building tests ..."
|
||||||
|
print_and_run cmake --build ${BUILD_DIR} --config "${BUILD_CONFIG}" --target tests/all
|
||||||
|
fi
|
||||||
|
echo "done"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${BUILD_IMAGE}" || -n "${BUILD_ORCA}" ]] ; then
|
||||||
|
pushd $BUILD_DIR > /dev/null
|
||||||
|
build_linux_image="./src/build_linux_image.sh"
|
||||||
|
if [[ -e ${build_linux_image} ]] ; then
|
||||||
|
extra_script_args=""
|
||||||
|
if [[ -n "${BUILD_IMAGE}" ]] ; then
|
||||||
|
extra_script_args="-i"
|
||||||
|
fi
|
||||||
|
print_and_run ${build_linux_image} ${extra_script_args} -R "${BUILD_CONFIG}"
|
||||||
|
|
||||||
|
echo "done"
|
||||||
|
fi
|
||||||
|
popd > /dev/null # build
|
||||||
|
fi
|
||||||
|
|
||||||
|
popd > /dev/null # ${SCRIPT_PATH}
|
||||||
@@ -24,13 +24,15 @@ cd deps
|
|||||||
mkdir %build_dir%
|
mkdir %build_dir%
|
||||||
cd %build_dir%
|
cd %build_dir%
|
||||||
set DEPS=%CD%/OrcaSlicer_dep
|
set DEPS=%CD%/OrcaSlicer_dep
|
||||||
|
set "SIG_FLAG="
|
||||||
|
if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%"
|
||||||
if "%1"=="slicer" (
|
if "%1"=="slicer" (
|
||||||
GOTO :slicer
|
GOTO :slicer
|
||||||
)
|
)
|
||||||
echo "building deps.."
|
echo "building deps.."
|
||||||
|
|
||||||
echo cmake ../ -G "Visual Studio 16 2019" -A x64 -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
|
echo cmake ../ -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
cmake ../ -G "Visual Studio 16 2019" -A x64 -DDESTDIR="%CD%/OrcaSlicer_dep" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
|
cmake ../ -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
cmake --build . --config %build_type% --target deps -- -m
|
cmake --build . --config %build_type% --target deps -- -m
|
||||||
|
|
||||||
if "%1"=="deps" exit /b 0
|
if "%1"=="deps" exit /b 0
|
||||||
@@ -41,10 +43,10 @@ cd %WP%
|
|||||||
mkdir %build_dir%
|
mkdir %build_dir%
|
||||||
cd %build_dir%
|
cd %build_dir%
|
||||||
|
|
||||||
echo cmake .. -G "Visual Studio 16 2019" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type%
|
echo cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
cmake .. -G "Visual Studio 16 2019" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0"
|
cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type% %SIG_FLAG%
|
||||||
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
||||||
cd ..
|
cd ..
|
||||||
call run_gettext.bat
|
call scripts/run_gettext.bat
|
||||||
cd %build_dir%
|
cd %build_dir%
|
||||||
cmake --build . --target install --config %build_type%
|
cmake --build . --target install --config %build_type%
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
set -e
|
set -e
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
while getopts ":dpa:snt:xbc:h" opt; do
|
while getopts ":dpa:snt:xbc:1h" opt; do
|
||||||
case "${opt}" in
|
case "${opt}" in
|
||||||
d )
|
d )
|
||||||
export BUILD_TARGET="deps"
|
export BUILD_TARGET="deps"
|
||||||
@@ -24,7 +24,7 @@ while getopts ":dpa:snt:xbc:h" opt; do
|
|||||||
export OSX_DEPLOYMENT_TARGET="$OPTARG"
|
export OSX_DEPLOYMENT_TARGET="$OPTARG"
|
||||||
;;
|
;;
|
||||||
x )
|
x )
|
||||||
export SLICER_CMAKE_GENERATOR="Ninja"
|
export SLICER_CMAKE_GENERATOR="Ninja Multi-Config"
|
||||||
export SLICER_BUILD_TARGET="all"
|
export SLICER_BUILD_TARGET="all"
|
||||||
export DEPS_CMAKE_GENERATOR="Ninja"
|
export DEPS_CMAKE_GENERATOR="Ninja"
|
||||||
;;
|
;;
|
||||||
@@ -39,11 +39,11 @@ while getopts ":dpa:snt:xbc:h" opt; do
|
|||||||
;;
|
;;
|
||||||
h ) echo "Usage: ./build_release_macos.sh [-d]"
|
h ) echo "Usage: ./build_release_macos.sh [-d]"
|
||||||
echo " -d: Build deps only"
|
echo " -d: Build deps only"
|
||||||
echo " -a: Set ARCHITECTURE (arm64 or x86_64)"
|
echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)"
|
||||||
echo " -s: Build slicer only"
|
echo " -s: Build slicer only"
|
||||||
echo " -n: Nightly build"
|
echo " -n: Nightly build"
|
||||||
echo " -t: Specify minimum version of the target platform, default is 11.3"
|
echo " -t: Specify minimum version of the target platform, default is 11.3"
|
||||||
echo " -x: Use Ninja CMake generator, default is Xcode"
|
echo " -x: Use Ninja Multi-Config CMake generator, default is Xcode"
|
||||||
echo " -b: Build without reconfiguring CMake"
|
echo " -b: Build without reconfiguring CMake"
|
||||||
echo " -c: Set CMake build configuration, default is Release"
|
echo " -c: Set CMake build configuration, default is Release"
|
||||||
echo " -1: Use single job for building"
|
echo " -1: Use single job for building"
|
||||||
@@ -57,8 +57,8 @@ done
|
|||||||
# Set defaults
|
# Set defaults
|
||||||
|
|
||||||
if [ -z "$ARCH" ]; then
|
if [ -z "$ARCH" ]; then
|
||||||
ARCH="$(uname -m)"
|
ARCH="$(uname -m)"
|
||||||
export ARCH
|
export ARCH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$BUILD_CONFIG" ]; then
|
if [ -z "$BUILD_CONFIG" ]; then
|
||||||
@@ -107,102 +107,166 @@ echo
|
|||||||
# fi
|
# fi
|
||||||
|
|
||||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH"
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||||
DEPS_DIR="$PROJECT_DIR/deps"
|
DEPS_DIR="$PROJECT_DIR/deps"
|
||||||
DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH"
|
|
||||||
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH"
|
|
||||||
|
|
||||||
# Fix for Multi-config generators
|
# For Multi-config generators like Ninja and Xcode
|
||||||
if [ "$SLICER_CMAKE_GENERATOR" == "Xcode" ]; then
|
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
|
||||||
export BUILD_DIR_CONFIG_SUBDIR="/$BUILD_CONFIG"
|
|
||||||
else
|
|
||||||
export BUILD_DIR_CONFIG_SUBDIR=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
function build_deps() {
|
function build_deps() {
|
||||||
echo "Building deps..."
|
# iterate over two architectures: x86_64 and arm64
|
||||||
(
|
for _ARCH in x86_64 arm64; do
|
||||||
set -x
|
# if ARCH is universal or equal to _ARCH
|
||||||
mkdir -p "$DEPS"
|
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||||
cd "$DEPS_BUILD_DIR"
|
|
||||||
if [ "1." != "$BUILD_ONLY". ]; then
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||||
cmake .. \
|
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||||
-G "${DEPS_CMAKE_GENERATOR}" \
|
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep"
|
||||||
-DDESTDIR="$DEPS" \
|
|
||||||
-DOPENSSL_ARCH="darwin64-${ARCH}-cc" \
|
echo "Building deps..."
|
||||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
(
|
||||||
-DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \
|
set -x
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
mkdir -p "$DEPS"
|
||||||
|
cd "$DEPS_BUILD_DIR"
|
||||||
|
if [ "1." != "$BUILD_ONLY". ]; then
|
||||||
|
cmake "${DEPS_DIR}" \
|
||||||
|
-G "${DEPS_CMAKE_GENERATOR}" \
|
||||||
|
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||||
|
-DCMAKE_OSX_ARCHITECTURES:STRING="${_ARCH}" \
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||||
|
fi
|
||||||
|
cmake --build . --config "$BUILD_CONFIG" --target deps
|
||||||
|
)
|
||||||
fi
|
fi
|
||||||
cmake --build . --config "$BUILD_CONFIG" --target deps
|
done
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function pack_deps() {
|
function pack_deps() {
|
||||||
echo "Packing deps..."
|
echo "Packing deps..."
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
mkdir -p "$DEPS"
|
cd "$DEPS_DIR"
|
||||||
cd "$DEPS_BUILD_DIR"
|
tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "build"
|
||||||
tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "OrcaSlicer_dep_$ARCH"
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_slicer() {
|
function build_slicer() {
|
||||||
echo "Building slicer..."
|
# iterate over two architectures: x86_64 and arm64
|
||||||
(
|
for _ARCH in x86_64 arm64; do
|
||||||
set -x
|
# if ARCH is universal or equal to _ARCH
|
||||||
mkdir -p "$PROJECT_BUILD_DIR"
|
if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then
|
||||||
cd "$PROJECT_BUILD_DIR"
|
|
||||||
if [ "1." != "$BUILD_ONLY". ]; then
|
|
||||||
cmake .. \
|
|
||||||
-G "${SLICER_CMAKE_GENERATOR}" \
|
|
||||||
-DBBL_RELEASE_TO_PUBLIC=1 \
|
|
||||||
-DCMAKE_PREFIX_PATH="$DEPS/usr/local" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \
|
|
||||||
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
|
||||||
-DCMAKE_MACOSX_RPATH=ON \
|
|
||||||
-DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \
|
|
||||||
-DCMAKE_MACOSX_BUNDLE=ON \
|
|
||||||
-DCMAKE_OSX_ARCHITECTURES="${ARCH}" \
|
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
|
||||||
fi
|
|
||||||
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo "Verify localization with gettext..."
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH"
|
||||||
(
|
DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH"
|
||||||
cd "$PROJECT_DIR"
|
DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep"
|
||||||
./run_gettext.sh
|
|
||||||
)
|
|
||||||
|
|
||||||
echo "Fix macOS app package..."
|
echo "Building slicer for $_ARCH..."
|
||||||
(
|
(
|
||||||
cd "$PROJECT_BUILD_DIR"
|
set -x
|
||||||
mkdir -p OrcaSlicer
|
mkdir -p "$PROJECT_BUILD_DIR"
|
||||||
cd OrcaSlicer
|
cd "$PROJECT_BUILD_DIR"
|
||||||
# remove previously built app
|
if [ "1." != "$BUILD_ONLY". ]; then
|
||||||
rm -rf ./OrcaSlicer.app
|
cmake "${PROJECT_DIR}" \
|
||||||
# fully copy newly built app
|
-G "${SLICER_CMAKE_GENERATOR}" \
|
||||||
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app
|
-DORCA_TOOLS=ON \
|
||||||
# fix resources
|
${ORCA_UPDATER_SIG_KEY:+-DORCA_UPDATER_SIG_KEY="$ORCA_UPDATER_SIG_KEY"} \
|
||||||
resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources)
|
-DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \
|
||||||
rm ./OrcaSlicer.app/Contents/Resources
|
-DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \
|
||||||
cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources
|
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}"
|
||||||
# delete .DS_Store file
|
fi
|
||||||
find ./OrcaSlicer.app/ -name '.DS_Store' -delete
|
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
|
||||||
)
|
)
|
||||||
|
|
||||||
# extract version
|
echo "Verify localization with gettext..."
|
||||||
# export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
|
(
|
||||||
# ver="_V${ver//\"}"
|
cd "$PROJECT_DIR"
|
||||||
# echo $PWD
|
./scripts/run_gettext.sh
|
||||||
# if [ "1." != "$NIGHTLY_BUILD". ];
|
)
|
||||||
# then
|
|
||||||
# ver=${ver}_dev
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# zip -FSr OrcaSlicer${ver}_Mac_${ARCH}.zip OrcaSlicer.app
|
echo "Fix macOS app package..."
|
||||||
|
(
|
||||||
|
cd "$PROJECT_BUILD_DIR"
|
||||||
|
mkdir -p OrcaSlicer
|
||||||
|
cd OrcaSlicer
|
||||||
|
# remove previously built app
|
||||||
|
rm -rf ./OrcaSlicer.app
|
||||||
|
# fully copy newly built app
|
||||||
|
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app
|
||||||
|
# fix resources
|
||||||
|
resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources)
|
||||||
|
rm ./OrcaSlicer.app/Contents/Resources
|
||||||
|
cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources
|
||||||
|
# delete .DS_Store file
|
||||||
|
find ./OrcaSlicer.app/ -name '.DS_Store' -delete
|
||||||
|
|
||||||
|
# Copy OrcaSlicer_profile_validator.app if it exists
|
||||||
|
if [ -f "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||||
|
echo "Copying OrcaSlicer_profile_validator.app..."
|
||||||
|
rm -rf ./OrcaSlicer_profile_validator.app
|
||||||
|
cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer_profile_validator.app" ./OrcaSlicer_profile_validator.app
|
||||||
|
# delete .DS_Store file
|
||||||
|
find ./OrcaSlicer_profile_validator.app/ -name '.DS_Store' -delete
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
|
# extract version
|
||||||
|
# export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
|
||||||
|
# ver="_V${ver//\"}"
|
||||||
|
# echo $PWD
|
||||||
|
# if [ "1." != "$NIGHTLY_BUILD". ];
|
||||||
|
# then
|
||||||
|
# ver=${ver}_dev
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# zip -FSr OrcaSlicer${ver}_Mac_${_ARCH}.zip OrcaSlicer.app
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_universal() {
|
||||||
|
echo "Building universal binary..."
|
||||||
|
|
||||||
|
PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH"
|
||||||
|
|
||||||
|
# Create universal binary
|
||||||
|
echo "Creating universal binary..."
|
||||||
|
# PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal"
|
||||||
|
mkdir -p "$PROJECT_BUILD_DIR/OrcaSlicer"
|
||||||
|
UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer.app"
|
||||||
|
rm -rf "$UNIVERSAL_APP"
|
||||||
|
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP"
|
||||||
|
|
||||||
|
# Get the binary path inside the .app bundle
|
||||||
|
BINARY_PATH="Contents/MacOS/OrcaSlicer"
|
||||||
|
|
||||||
|
# Create universal binary using lipo
|
||||||
|
lipo -create \
|
||||||
|
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
|
||||||
|
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \
|
||||||
|
-output "$UNIVERSAL_APP/$BINARY_PATH"
|
||||||
|
|
||||||
|
echo "Universal binary created at $UNIVERSAL_APP"
|
||||||
|
|
||||||
|
# Create universal binary for profile validator if it exists
|
||||||
|
if [ -f "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ] && \
|
||||||
|
[ -f "$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/Contents/MacOS/OrcaSlicer_profile_validator" ]; then
|
||||||
|
echo "Creating universal binary for OrcaSlicer_profile_validator..."
|
||||||
|
UNIVERSAL_VALIDATOR_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer_profile_validator.app"
|
||||||
|
rm -rf "$UNIVERSAL_VALIDATOR_APP"
|
||||||
|
cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app" "$UNIVERSAL_VALIDATOR_APP"
|
||||||
|
|
||||||
|
# Get the binary path inside the profile validator .app bundle
|
||||||
|
VALIDATOR_BINARY_PATH="Contents/MacOS/OrcaSlicer_profile_validator"
|
||||||
|
|
||||||
|
# Create universal binary using lipo
|
||||||
|
lipo -create \
|
||||||
|
"$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
|
||||||
|
"$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer_profile_validator.app/$VALIDATOR_BINARY_PATH" \
|
||||||
|
-output "$UNIVERSAL_VALIDATOR_APP/$VALIDATOR_BINARY_PATH"
|
||||||
|
|
||||||
|
echo "Universal binary for OrcaSlicer_profile_validator created at $UNIVERSAL_VALIDATOR_APP"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
case "${BUILD_TARGET}" in
|
case "${BUILD_TARGET}" in
|
||||||
@@ -222,6 +286,10 @@ case "${BUILD_TARGET}" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then
|
||||||
|
build_universal
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "1." == "$PACK_DEPS". ]; then
|
if [ "1." == "$PACK_DEPS". ]; then
|
||||||
pack_deps
|
pack_deps
|
||||||
fi
|
fi
|
||||||
|
|||||||
119
build_release_vs.bat
Normal file
119
build_release_vs.bat
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
@REM OrcaSlicer build script for Windows with VS auto-detect
|
||||||
|
@echo off
|
||||||
|
set WP=%CD%
|
||||||
|
|
||||||
|
@REM Detect Visual Studio version using msbuild
|
||||||
|
echo Detecting Visual Studio version using msbuild...
|
||||||
|
|
||||||
|
@REM Try to get MSBuild version - the output format varies by VS version
|
||||||
|
set VS_MAJOR=
|
||||||
|
for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (
|
||||||
|
for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a
|
||||||
|
set MSBUILD_OUTPUT=%%i
|
||||||
|
goto :version_found
|
||||||
|
)
|
||||||
|
|
||||||
|
@REM Alternative method for newer MSBuild versions
|
||||||
|
if "%VS_MAJOR%"=="" (
|
||||||
|
for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (
|
||||||
|
for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a
|
||||||
|
set MSBUILD_OUTPUT=%%i
|
||||||
|
goto :version_found
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:version_found
|
||||||
|
echo MSBuild version detected: %MSBUILD_OUTPUT%
|
||||||
|
echo Major version: %VS_MAJOR%
|
||||||
|
|
||||||
|
if "%VS_MAJOR%"=="" (
|
||||||
|
echo Error: Could not determine Visual Studio version from msbuild
|
||||||
|
echo Please ensure Visual Studio and MSBuild are properly installed
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%VS_MAJOR%"=="16" (
|
||||||
|
set VS_VERSION=2019
|
||||||
|
set CMAKE_GENERATOR="Visual Studio 16 2019"
|
||||||
|
) else if "%VS_MAJOR%"=="17" (
|
||||||
|
set VS_VERSION=2022
|
||||||
|
set CMAKE_GENERATOR="Visual Studio 17 2022"
|
||||||
|
) else if "%VS_MAJOR%"=="18" (
|
||||||
|
set VS_VERSION=2026
|
||||||
|
set CMAKE_GENERATOR="Visual Studio 18 2026"
|
||||||
|
) else (
|
||||||
|
echo Error: Unsupported Visual Studio version: %VS_MAJOR%
|
||||||
|
echo Supported versions: VS2019 (16.x^), VS2022 (17.x^), VS2026 (18.x^)
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Detected Visual Studio %VS_VERSION% (version %VS_MAJOR%)
|
||||||
|
echo Using CMake generator: %CMAKE_GENERATOR%
|
||||||
|
|
||||||
|
@REM Pack deps
|
||||||
|
if "%1"=="pack" (
|
||||||
|
setlocal ENABLEDELAYEDEXPANSION
|
||||||
|
cd %WP%/deps/build
|
||||||
|
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set build_date=%%c%%b%%a
|
||||||
|
echo packing deps: OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip
|
||||||
|
|
||||||
|
%WP%/tools/7z.exe a OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip OrcaSlicer_dep
|
||||||
|
exit /b 0
|
||||||
|
)
|
||||||
|
|
||||||
|
set debug=OFF
|
||||||
|
set debuginfo=OFF
|
||||||
|
if "%1"=="debug" set debug=ON
|
||||||
|
if "%2"=="debug" set debug=ON
|
||||||
|
if "%1"=="debuginfo" set debuginfo=ON
|
||||||
|
if "%2"=="debuginfo" set debuginfo=ON
|
||||||
|
if "%debug%"=="ON" (
|
||||||
|
set build_type=Debug
|
||||||
|
set build_dir=build-dbg
|
||||||
|
) else (
|
||||||
|
if "%debuginfo%"=="ON" (
|
||||||
|
set build_type=RelWithDebInfo
|
||||||
|
set build_dir=build-dbginfo
|
||||||
|
) else (
|
||||||
|
set build_type=Release
|
||||||
|
set build_dir=build
|
||||||
|
)
|
||||||
|
)
|
||||||
|
echo build type set to %build_type%
|
||||||
|
|
||||||
|
setlocal DISABLEDELAYEDEXPANSION
|
||||||
|
cd deps
|
||||||
|
mkdir %build_dir%
|
||||||
|
cd %build_dir%
|
||||||
|
set "SIG_FLAG="
|
||||||
|
if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%"
|
||||||
|
|
||||||
|
if "%1"=="slicer" (
|
||||||
|
GOTO :slicer
|
||||||
|
)
|
||||||
|
echo "building deps.."
|
||||||
|
|
||||||
|
echo on
|
||||||
|
REM Set minimum CMake policy to avoid <3.5 errors
|
||||||
|
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
|
cmake ../ -G %CMAKE_GENERATOR% -A x64 -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
|
cmake --build . --config %build_type% --target deps -- -m
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
if "%1"=="deps" exit /b 0
|
||||||
|
|
||||||
|
:slicer
|
||||||
|
echo "building Orca Slicer..."
|
||||||
|
cd %WP%
|
||||||
|
mkdir %build_dir%
|
||||||
|
cd %build_dir%
|
||||||
|
|
||||||
|
echo on
|
||||||
|
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
|
cmake .. -G %CMAKE_GENERATOR% -A x64 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
|
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
||||||
|
@echo off
|
||||||
|
cd ..
|
||||||
|
call scripts/run_gettext.bat
|
||||||
|
cd %build_dir%
|
||||||
|
cmake --build . --target install --config %build_type%
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
@REM OcarSlicer build script for Windows
|
@REM OrcaSlicer build script for Windows
|
||||||
@echo off
|
@echo off
|
||||||
set WP=%CD%
|
set WP=%CD%
|
||||||
|
|
||||||
@@ -37,7 +37,8 @@ setlocal DISABLEDELAYEDEXPANSION
|
|||||||
cd deps
|
cd deps
|
||||||
mkdir %build_dir%
|
mkdir %build_dir%
|
||||||
cd %build_dir%
|
cd %build_dir%
|
||||||
set DEPS=%CD%/OrcaSlicer_dep
|
set "SIG_FLAG="
|
||||||
|
if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%"
|
||||||
|
|
||||||
if "%1"=="slicer" (
|
if "%1"=="slicer" (
|
||||||
GOTO :slicer
|
GOTO :slicer
|
||||||
@@ -45,7 +46,9 @@ if "%1"=="slicer" (
|
|||||||
echo "building deps.."
|
echo "building deps.."
|
||||||
|
|
||||||
echo on
|
echo on
|
||||||
cmake ../ -G "Visual Studio 17 2022" -A x64 -DDESTDIR="%DEPS%" -DCMAKE_BUILD_TYPE=%build_type% -DDEP_DEBUG=%debug% -DORCA_INCLUDE_DEBUG_INFO=%debuginfo%
|
REM Set minimum CMake policy to avoid <3.5 errors
|
||||||
|
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
|
cmake ../ -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
cmake --build . --config %build_type% --target deps -- -m
|
cmake --build . --config %build_type% --target deps -- -m
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
@@ -58,10 +61,11 @@ mkdir %build_dir%
|
|||||||
cd %build_dir%
|
cd %build_dir%
|
||||||
|
|
||||||
echo on
|
echo on
|
||||||
cmake .. -G "Visual Studio 17 2022" -A x64 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./OrcaSlicer" -DCMAKE_BUILD_TYPE=%build_type% -DWIN10SDK_PATH="%WindowsSdkDir%Include\%WindowsSDKVersion%\"
|
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
|
cmake .. -G "Visual Studio 17 2022" -A x64 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
||||||
@echo off
|
@echo off
|
||||||
cd ..
|
cd ..
|
||||||
call run_gettext.bat
|
call scripts/run_gettext.bat
|
||||||
cd %build_dir%
|
cd %build_dir%
|
||||||
cmake --build . --target install --config %build_type%
|
cmake --build . --target install --config %build_type%
|
||||||
|
|||||||
@@ -1,175 +0,0 @@
|
|||||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
||||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
|
||||||
|
|
||||||
#[=======================================================================[.rst:
|
|
||||||
Catch
|
|
||||||
-----
|
|
||||||
|
|
||||||
This module defines a function to help use the Catch test framework.
|
|
||||||
|
|
||||||
The :command:`catch_discover_tests` discovers tests by asking the compiled test
|
|
||||||
executable to enumerate its tests. This does not require CMake to be re-run
|
|
||||||
when tests change. However, it may not work in a cross-compiling environment,
|
|
||||||
and setting test properties is less convenient.
|
|
||||||
|
|
||||||
This command is intended to replace use of :command:`add_test` to register
|
|
||||||
tests, and will create a separate CTest test for each Catch test case. Note
|
|
||||||
that this is in some cases less efficient, as common set-up and tear-down logic
|
|
||||||
cannot be shared by multiple test cases executing in the same instance.
|
|
||||||
However, it provides more fine-grained pass/fail information to CTest, which is
|
|
||||||
usually considered as more beneficial. By default, the CTest test name is the
|
|
||||||
same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``.
|
|
||||||
|
|
||||||
.. command:: catch_discover_tests
|
|
||||||
|
|
||||||
Automatically add tests with CTest by querying the compiled test executable
|
|
||||||
for available tests::
|
|
||||||
|
|
||||||
catch_discover_tests(target
|
|
||||||
[TEST_SPEC arg1...]
|
|
||||||
[EXTRA_ARGS arg1...]
|
|
||||||
[WORKING_DIRECTORY dir]
|
|
||||||
[TEST_PREFIX prefix]
|
|
||||||
[TEST_SUFFIX suffix]
|
|
||||||
[PROPERTIES name1 value1...]
|
|
||||||
[TEST_LIST var]
|
|
||||||
)
|
|
||||||
|
|
||||||
``catch_discover_tests`` sets up a post-build command on the test executable
|
|
||||||
that generates the list of tests by parsing the output from running the test
|
|
||||||
with the ``--list-test-names-only`` argument. This ensures that the full
|
|
||||||
list of tests is obtained. Since test discovery occurs at build time, it is
|
|
||||||
not necessary to re-run CMake when the list of tests changes.
|
|
||||||
However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
|
|
||||||
in order to function in a cross-compiling environment.
|
|
||||||
|
|
||||||
Additionally, setting properties on tests is somewhat less convenient, since
|
|
||||||
the tests are not available at CMake time. Additional test properties may be
|
|
||||||
assigned to the set of tests as a whole using the ``PROPERTIES`` option. If
|
|
||||||
more fine-grained test control is needed, custom content may be provided
|
|
||||||
through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
|
|
||||||
directory property. The set of discovered tests is made accessible to such a
|
|
||||||
script via the ``<target>_TESTS`` variable.
|
|
||||||
|
|
||||||
The options are:
|
|
||||||
|
|
||||||
``target``
|
|
||||||
Specifies the Catch executable, which must be a known CMake executable
|
|
||||||
target. CMake will substitute the location of the built executable when
|
|
||||||
running the test.
|
|
||||||
|
|
||||||
``TEST_SPEC arg1...``
|
|
||||||
Specifies test cases, wildcarded test cases, tags and tag expressions to
|
|
||||||
pass to the Catch executable with the ``--list-test-names-only`` argument.
|
|
||||||
|
|
||||||
``EXTRA_ARGS arg1...``
|
|
||||||
Any extra arguments to pass on the command line to each test case.
|
|
||||||
|
|
||||||
``WORKING_DIRECTORY dir``
|
|
||||||
Specifies the directory in which to run the discovered test cases. If this
|
|
||||||
option is not provided, the current binary directory is used.
|
|
||||||
|
|
||||||
``TEST_PREFIX prefix``
|
|
||||||
Specifies a ``prefix`` to be prepended to the name of each discovered test
|
|
||||||
case. This can be useful when the same test executable is being used in
|
|
||||||
multiple calls to ``catch_discover_tests()`` but with different
|
|
||||||
``TEST_SPEC`` or ``EXTRA_ARGS``.
|
|
||||||
|
|
||||||
``TEST_SUFFIX suffix``
|
|
||||||
Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
|
|
||||||
every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
|
|
||||||
be specified.
|
|
||||||
|
|
||||||
``PROPERTIES name1 value1...``
|
|
||||||
Specifies additional properties to be set on all tests discovered by this
|
|
||||||
invocation of ``catch_discover_tests``.
|
|
||||||
|
|
||||||
``TEST_LIST var``
|
|
||||||
Make the list of tests available in the variable ``var``, rather than the
|
|
||||||
default ``<target>_TESTS``. This can be useful when the same test
|
|
||||||
executable is being used in multiple calls to ``catch_discover_tests()``.
|
|
||||||
Note that this variable is only available in CTest.
|
|
||||||
|
|
||||||
#]=======================================================================]
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
function(catch_discover_tests TARGET)
|
|
||||||
cmake_parse_arguments(
|
|
||||||
""
|
|
||||||
""
|
|
||||||
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST"
|
|
||||||
"TEST_SPEC;EXTRA_ARGS;PROPERTIES"
|
|
||||||
${ARGN}
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT _WORKING_DIRECTORY)
|
|
||||||
set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
|
||||||
endif()
|
|
||||||
if(NOT _TEST_LIST)
|
|
||||||
set(_TEST_LIST ${TARGET}_TESTS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
## Generate a unique name based on the extra arguments
|
|
||||||
string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS}")
|
|
||||||
string(SUBSTRING ${args_hash} 0 7 args_hash)
|
|
||||||
|
|
||||||
# Define rule to generate test list for aforementioned test executable
|
|
||||||
set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake")
|
|
||||||
set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake")
|
|
||||||
get_property(crosscompiling_emulator
|
|
||||||
TARGET ${TARGET}
|
|
||||||
PROPERTY CROSSCOMPILING_EMULATOR
|
|
||||||
)
|
|
||||||
add_custom_command(
|
|
||||||
TARGET ${TARGET} POST_BUILD
|
|
||||||
BYPRODUCTS "${ctest_tests_file}"
|
|
||||||
COMMAND "${CMAKE_COMMAND}"
|
|
||||||
-D "TEST_TARGET=${TARGET}"
|
|
||||||
-D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>"
|
|
||||||
-D "TEST_EXECUTOR=${crosscompiling_emulator}"
|
|
||||||
-D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
|
|
||||||
-D "TEST_SPEC=${_TEST_SPEC}"
|
|
||||||
-D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
|
|
||||||
-D "TEST_PROPERTIES=${_PROPERTIES}"
|
|
||||||
-D "TEST_PREFIX='${_TEST_PREFIX}'"
|
|
||||||
-D "TEST_SUFFIX='${_TEST_SUFFIX}'"
|
|
||||||
-D "TEST_LIST=${_TEST_LIST}"
|
|
||||||
-D "CTEST_FILE=${ctest_tests_file}"
|
|
||||||
-P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
|
|
||||||
file(WRITE "${ctest_include_file}"
|
|
||||||
"if(EXISTS \"${ctest_tests_file}\")\n"
|
|
||||||
" include(\"${ctest_tests_file}\")\n"
|
|
||||||
"else()\n"
|
|
||||||
" add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n"
|
|
||||||
"endif()\n"
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0")
|
|
||||||
# Add discovered tests to directory TEST_INCLUDE_FILES
|
|
||||||
set_property(DIRECTORY
|
|
||||||
APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
# Add discovered tests as directory TEST_INCLUDE_FILE if possible
|
|
||||||
get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET)
|
|
||||||
if (NOT ${test_include_file_set})
|
|
||||||
set_property(DIRECTORY
|
|
||||||
PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"Cannot set more than one TEST_INCLUDE_FILE"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
set(_CATCH_DISCOVER_TESTS_SCRIPT
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake
|
|
||||||
)
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
||||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
|
||||||
|
|
||||||
set(prefix "${TEST_PREFIX}")
|
|
||||||
set(suffix "${TEST_SUFFIX}")
|
|
||||||
set(spec ${TEST_SPEC})
|
|
||||||
set(extra_args ${TEST_EXTRA_ARGS})
|
|
||||||
set(properties ${TEST_PROPERTIES})
|
|
||||||
set(script)
|
|
||||||
set(suite)
|
|
||||||
set(tests)
|
|
||||||
|
|
||||||
function(add_command NAME)
|
|
||||||
set(_args "")
|
|
||||||
foreach(_arg ${ARGN})
|
|
||||||
if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
|
|
||||||
set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument
|
|
||||||
else()
|
|
||||||
set(_args "${_args} ${_arg}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
macro(_add_catch_test_labels LINE)
|
|
||||||
# convert to list of tags
|
|
||||||
string(REPLACE "][" "]\\;[" tags ${line})
|
|
||||||
|
|
||||||
add_command(
|
|
||||||
set_tests_properties "${prefix}${test}${suffix}"
|
|
||||||
PROPERTIES
|
|
||||||
LABELS "${tags}"
|
|
||||||
)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(_add_catch_test LINE)
|
|
||||||
set(test ${line})
|
|
||||||
# use escape commas to handle properly test cases with commans inside the name
|
|
||||||
string(REPLACE "," "\\," test_name ${test})
|
|
||||||
# ...and add to script
|
|
||||||
add_command(
|
|
||||||
add_test "${prefix}${test}${suffix}"
|
|
||||||
${TEST_EXECUTOR}
|
|
||||||
"${TEST_EXECUTABLE}"
|
|
||||||
"${test_name}"
|
|
||||||
${extra_args}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_command(
|
|
||||||
set_tests_properties "${prefix}${test}${suffix}"
|
|
||||||
PROPERTIES
|
|
||||||
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
|
|
||||||
${properties}
|
|
||||||
)
|
|
||||||
list(APPEND tests "${prefix}${test}${suffix}")
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# Run test executable to get list of available tests
|
|
||||||
if(NOT EXISTS "${TEST_EXECUTABLE}")
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"Specified test executable '${TEST_EXECUTABLE}' does not exist"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-tests
|
|
||||||
OUTPUT_VARIABLE output
|
|
||||||
RESULT_VARIABLE result
|
|
||||||
)
|
|
||||||
# Catch --list-test-names-only reports the number of tests, so 0 is... surprising
|
|
||||||
if(${result} EQUAL 0)
|
|
||||||
message(WARNING
|
|
||||||
"Test executable '${TEST_EXECUTABLE}' contains no tests!\n"
|
|
||||||
)
|
|
||||||
elseif(${result} LESS 0)
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"Error running test executable '${TEST_EXECUTABLE}':\n"
|
|
||||||
" Result: ${result}\n"
|
|
||||||
" Output: ${output}\n"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(REPLACE "\n" ";" output "${output}")
|
|
||||||
set(test)
|
|
||||||
set(tags_regex "(\\[([^\\[]*)\\])+$")
|
|
||||||
|
|
||||||
# Parse output
|
|
||||||
foreach(line ${output})
|
|
||||||
# lines without leading whitespaces are catch output not tests
|
|
||||||
if(${line} MATCHES "^[ \t]+")
|
|
||||||
# strip leading spaces and tabs
|
|
||||||
string(REGEX REPLACE "^[ \t]+" "" line ${line})
|
|
||||||
|
|
||||||
if(${line} MATCHES "${tags_regex}")
|
|
||||||
_add_catch_test_labels(${line})
|
|
||||||
else()
|
|
||||||
_add_catch_test(${line})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# Create a list of all discovered tests, which users may use to e.g. set
|
|
||||||
# properties on the tests
|
|
||||||
add_command(set ${TEST_LIST} ${tests})
|
|
||||||
|
|
||||||
# Write CTest script
|
|
||||||
file(WRITE "${CTEST_FILE}" "${script}")
|
|
||||||
@@ -1,225 +0,0 @@
|
|||||||
#==================================================================================================#
|
|
||||||
# supported macros #
|
|
||||||
# - TEST_CASE, #
|
|
||||||
# - SCENARIO, #
|
|
||||||
# - TEST_CASE_METHOD, #
|
|
||||||
# - CATCH_TEST_CASE, #
|
|
||||||
# - CATCH_SCENARIO, #
|
|
||||||
# - CATCH_TEST_CASE_METHOD. #
|
|
||||||
# #
|
|
||||||
# Usage #
|
|
||||||
# 1. make sure this module is in the path or add this otherwise: #
|
|
||||||
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
|
||||||
# 2. make sure that you've enabled testing option for the project by the call: #
|
|
||||||
# enable_testing() #
|
|
||||||
# 3. add the lines to the script for testing target (sample CMakeLists.txt): #
|
|
||||||
# project(testing_target) #
|
|
||||||
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
|
||||||
# enable_testing() #
|
|
||||||
# #
|
|
||||||
# find_path(CATCH_INCLUDE_DIR "catch.hpp") #
|
|
||||||
# include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR}) #
|
|
||||||
# #
|
|
||||||
# file(GLOB SOURCE_FILES "*.cpp") #
|
|
||||||
# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #
|
|
||||||
# #
|
|
||||||
# include(ParseAndAddCatchTests) #
|
|
||||||
# ParseAndAddCatchTests(${PROJECT_NAME}) #
|
|
||||||
# #
|
|
||||||
# The following variables affect the behavior of the script: #
|
|
||||||
# #
|
|
||||||
# PARSE_CATCH_TESTS_VERBOSE (Default OFF) #
|
|
||||||
# -- enables debug messages #
|
|
||||||
# PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF) #
|
|
||||||
# -- excludes tests marked with [!hide], [.] or [.foo] tags #
|
|
||||||
# PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON) #
|
|
||||||
# -- adds fixture class name to the test name #
|
|
||||||
# PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON) #
|
|
||||||
# -- adds cmake target name to the test name #
|
|
||||||
# PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF) #
|
|
||||||
# -- causes CMake to rerun when file with tests changes so that new tests will be discovered #
|
|
||||||
# #
|
|
||||||
# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way #
|
|
||||||
# a test should be run. For instance to use test MPI, one can write #
|
|
||||||
# set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC}) #
|
|
||||||
# just before calling this ParseAndAddCatchTests function #
|
|
||||||
# #
|
|
||||||
# The AdditionalCatchParameters optional variable can be used to pass extra argument to the test #
|
|
||||||
# command. For example, to include successful tests in the output, one can write #
|
|
||||||
# set(AdditionalCatchParameters --success) #
|
|
||||||
# #
|
|
||||||
# After the script, the ParseAndAddCatchTests_TESTS property for the target, and for each source #
|
|
||||||
# file in the target is set, and contains the list of the tests extracted from that target, or #
|
|
||||||
# from that file. This is useful, for example to add further labels or properties to the tests. #
|
|
||||||
# #
|
|
||||||
#==================================================================================================#
|
|
||||||
|
|
||||||
if (CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8)
|
|
||||||
message(FATAL_ERROR "ParseAndAddCatchTests requires CMake 2.8.8 or newer")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF)
|
|
||||||
option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF)
|
|
||||||
option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON)
|
|
||||||
option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON)
|
|
||||||
option(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS "Add test file to CMAKE_CONFIGURE_DEPENDS property" OFF)
|
|
||||||
|
|
||||||
function(ParseAndAddCatchTests_PrintDebugMessage)
|
|
||||||
if(PARSE_CATCH_TESTS_VERBOSE)
|
|
||||||
message(STATUS "ParseAndAddCatchTests: ${ARGV}")
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# This removes the contents between
|
|
||||||
# - block comments (i.e. /* ... */)
|
|
||||||
# - full line comments (i.e. // ... )
|
|
||||||
# contents have been read into '${CppCode}'.
|
|
||||||
# !keep partial line comments
|
|
||||||
function(ParseAndAddCatchTests_RemoveComments CppCode)
|
|
||||||
string(ASCII 2 CMakeBeginBlockComment)
|
|
||||||
string(ASCII 3 CMakeEndBlockComment)
|
|
||||||
string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}")
|
|
||||||
string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}")
|
|
||||||
string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}")
|
|
||||||
string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}")
|
|
||||||
|
|
||||||
set(${CppCode} "${${CppCode}}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Worker function
|
|
||||||
function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
|
|
||||||
# If SourceFile is an object library, do not scan it (as it is not a file). Exit without giving a warning about a missing file.
|
|
||||||
if(SourceFile MATCHES "\\\$<TARGET_OBJECTS:.+>")
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Detected OBJECT library: ${SourceFile} this will not be scanned for tests.")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
# According to CMake docs EXISTS behavior is well-defined only for full paths.
|
|
||||||
get_filename_component(SourceFile ${SourceFile} ABSOLUTE)
|
|
||||||
if(NOT EXISTS ${SourceFile})
|
|
||||||
message(WARNING "Cannot find source file: ${SourceFile}")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("parsing ${SourceFile}")
|
|
||||||
file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME)
|
|
||||||
|
|
||||||
# Remove block and fullline comments
|
|
||||||
ParseAndAddCatchTests_RemoveComments(Contents)
|
|
||||||
|
|
||||||
# Find definition of test names
|
|
||||||
string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")
|
|
||||||
|
|
||||||
if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests)
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property")
|
|
||||||
set_property(
|
|
||||||
DIRECTORY
|
|
||||||
APPEND
|
|
||||||
PROPERTY CMAKE_CONFIGURE_DEPENDS ${SourceFile}
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(TestName ${Tests})
|
|
||||||
# Strip newlines
|
|
||||||
string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")
|
|
||||||
|
|
||||||
# Get test type and fixture if applicable
|
|
||||||
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
|
|
||||||
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
|
|
||||||
string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}")
|
|
||||||
|
|
||||||
# Get string parts of test definition
|
|
||||||
string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}")
|
|
||||||
|
|
||||||
# Strip wrapping quotation marks
|
|
||||||
string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}")
|
|
||||||
string(REPLACE "\";\"" ";" TestStrings "${TestStrings}")
|
|
||||||
|
|
||||||
# Validate that a test name and tags have been provided
|
|
||||||
list(LENGTH TestStrings TestStringsLength)
|
|
||||||
if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1)
|
|
||||||
message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Assign name and tags
|
|
||||||
list(GET TestStrings 0 Name)
|
|
||||||
if("${TestType}" STREQUAL "SCENARIO")
|
|
||||||
set(Name "Scenario: ${Name}")
|
|
||||||
endif()
|
|
||||||
if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND TestFixture)
|
|
||||||
set(CTestName "${TestFixture}:${Name}")
|
|
||||||
else()
|
|
||||||
set(CTestName "${Name}")
|
|
||||||
endif()
|
|
||||||
if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME)
|
|
||||||
set(CTestName "${TestTarget}:${CTestName}")
|
|
||||||
endif()
|
|
||||||
# add target to labels to enable running all tests added from this target
|
|
||||||
set(Labels ${TestTarget})
|
|
||||||
if(TestStringsLength EQUAL 2)
|
|
||||||
list(GET TestStrings 1 Tags)
|
|
||||||
string(TOLOWER "${Tags}" Tags)
|
|
||||||
# remove target from labels if the test is hidden
|
|
||||||
if("${Tags}" MATCHES ".*\\[!?(hide|\\.)\\].*")
|
|
||||||
list(REMOVE_ITEM Labels ${TestTarget})
|
|
||||||
endif()
|
|
||||||
string(REPLACE "]" ";" Tags "${Tags}")
|
|
||||||
string(REPLACE "[" "" Tags "${Tags}")
|
|
||||||
else()
|
|
||||||
# unset tags variable from previous loop
|
|
||||||
unset(Tags)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND Labels ${Tags})
|
|
||||||
|
|
||||||
set(HiddenTagFound OFF)
|
|
||||||
foreach(label ${Labels})
|
|
||||||
string(REGEX MATCH "^!hide|^\\." result ${label})
|
|
||||||
if(result)
|
|
||||||
set(HiddenTagFound ON)
|
|
||||||
break()
|
|
||||||
endif(result)
|
|
||||||
endforeach(label)
|
|
||||||
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_LESS "3.9")
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label")
|
|
||||||
else()
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Adding test \"${CTestName}\"")
|
|
||||||
if(Labels)
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Setting labels to ${Labels}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Escape commas in the test spec
|
|
||||||
string(REPLACE "," "\\," Name ${Name})
|
|
||||||
|
|
||||||
# Add the test and set its properties
|
|
||||||
add_test(NAME "\"${CTestName}\"" COMMAND ${OptionalCatchTestLauncher} $<TARGET_FILE:${TestTarget}> ${Name} ${AdditionalCatchParameters})
|
|
||||||
# Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead
|
|
||||||
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_GREATER "3.8")
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Setting DISABLED test property")
|
|
||||||
set_tests_properties("\"${CTestName}\"" PROPERTIES DISABLED ON)
|
|
||||||
else()
|
|
||||||
set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
|
|
||||||
LABELS "${Labels}")
|
|
||||||
endif()
|
|
||||||
set_property(
|
|
||||||
TARGET ${TestTarget}
|
|
||||||
APPEND
|
|
||||||
PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"")
|
|
||||||
set_property(
|
|
||||||
SOURCE ${SourceFile}
|
|
||||||
APPEND
|
|
||||||
PROPERTY ParseAndAddCatchTests_TESTS "\"${CTestName}\"")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# entry point
|
|
||||||
function(ParseAndAddCatchTests TestTarget)
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Started parsing ${TestTarget}")
|
|
||||||
get_target_property(SourceFiles ${TestTarget} SOURCES)
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Found the following sources: ${SourceFiles}")
|
|
||||||
foreach(SourceFile ${SourceFiles})
|
|
||||||
ParseAndAddCatchTests_ParseFile(${SourceFile} ${TestTarget})
|
|
||||||
endforeach()
|
|
||||||
ParseAndAddCatchTests_PrintDebugMessage("Finished parsing ${TestTarget}")
|
|
||||||
endfunction()
|
|
||||||
@@ -152,7 +152,7 @@ find_library(GLEW_STATIC_LIBRARY_RELEASE
|
|||||||
PATHS ENV GLEW_ROOT)
|
PATHS ENV GLEW_ROOT)
|
||||||
|
|
||||||
find_library(GLEW_STATIC_LIBRARY_DEBUG
|
find_library(GLEW_STATIC_LIBRARY_DEBUG
|
||||||
NAMES GLEWds glewd glewds glew32ds
|
NAMES GLEWds GLEWd glewd glewds glew32ds
|
||||||
PATH_SUFFIXES lib lib64
|
PATH_SUFFIXES lib lib64
|
||||||
PATHS ENV GLEW_ROOT)
|
PATHS ENV GLEW_ROOT)
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,6 @@
|
|||||||
#//
|
#//
|
||||||
#// Description:
|
#// Description:
|
||||||
#// cmake module for finding NLopt installation
|
#// cmake module for finding NLopt installation
|
||||||
#// NLopt installation location is defined by environment variable $NLOPT
|
|
||||||
#//
|
|
||||||
#// following variables are defined:
|
|
||||||
#// NLopt_DIR - NLopt installation directory
|
|
||||||
#// NLopt_INCLUDE_DIR - NLopt header directory
|
|
||||||
#// NLopt_LIBRARY_DIR - NLopt library directory
|
|
||||||
#// NLopt_LIBS - NLopt library files
|
|
||||||
#//
|
#//
|
||||||
#// Example usage:
|
#// Example usage:
|
||||||
#// find_package(NLopt 1.4 REQUIRED)
|
#// find_package(NLopt 1.4 REQUIRED)
|
||||||
@@ -17,114 +10,27 @@
|
|||||||
#//
|
#//
|
||||||
#//-------------------------------------------------------------------------
|
#//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
set(NLopt_FOUND FALSE)
|
unset(_q)
|
||||||
set(NLopt_ERROR_REASON "")
|
if (NLopt_FIND_QUIETLY)
|
||||||
set(NLopt_DEFINITIONS "")
|
set(_q QUIET)
|
||||||
unset(NLopt_LIBS CACHE)
|
endif ()
|
||||||
|
|
||||||
set(NLopt_DIR $ENV{NLOPT})
|
|
||||||
if(NOT NLopt_DIR)
|
|
||||||
|
|
||||||
set(NLopt_FOUND TRUE)
|
|
||||||
|
|
||||||
set(_NLopt_LIB_NAMES "nlopt")
|
|
||||||
find_library(NLopt_LIBS
|
|
||||||
NAMES ${_NLopt_LIB_NAMES})
|
|
||||||
if(NOT NLopt_LIBS)
|
|
||||||
set(NLopt_FOUND FALSE)
|
|
||||||
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt library '${_NLopt_LIB_NAMES}'.")
|
|
||||||
else()
|
|
||||||
get_filename_component(NLopt_DIR ${NLopt_LIBS} PATH)
|
|
||||||
endif()
|
|
||||||
unset(_NLopt_LIB_NAMES)
|
|
||||||
|
|
||||||
set(_NLopt_HEADER_FILE_NAME "nlopt.hpp")
|
|
||||||
find_file(_NLopt_HEADER_FILE
|
|
||||||
NAMES ${_NLopt_HEADER_FILE_NAME})
|
|
||||||
if(NOT _NLopt_HEADER_FILE)
|
|
||||||
set(NLopt_FOUND FALSE)
|
|
||||||
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt header file '${_NLopt_HEADER_FILE_NAME}'.")
|
|
||||||
endif()
|
|
||||||
unset(_NLopt_HEADER_FILE_NAME)
|
|
||||||
|
|
||||||
if(NOT NLopt_FOUND)
|
|
||||||
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} NLopt not found in system directories (and environment variable NLOPT is not set).")
|
|
||||||
else()
|
|
||||||
get_filename_component(NLopt_INCLUDE_DIR ${_NLopt_HEADER_FILE} DIRECTORY )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
unset(_NLopt_HEADER_FILE CACHE)
|
|
||||||
|
|
||||||
else()
|
|
||||||
|
|
||||||
set(NLopt_FOUND TRUE)
|
|
||||||
|
|
||||||
set(NLopt_INCLUDE_DIR "${NLopt_DIR}/include")
|
|
||||||
if(NOT EXISTS "${NLopt_INCLUDE_DIR}")
|
|
||||||
set(NLopt_FOUND FALSE)
|
|
||||||
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Directory '${NLopt_INCLUDE_DIR}' does not exist.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(NLopt_LIBRARY_DIR "${NLopt_DIR}/lib")
|
|
||||||
if(NOT EXISTS "${NLopt_LIBRARY_DIR}")
|
|
||||||
set(NLopt_FOUND FALSE)
|
|
||||||
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Directory '${NLopt_LIBRARY_DIR}' does not exist.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(_NLopt_LIB_NAMES "nlopt_cxx")
|
|
||||||
find_library(NLopt_LIBS
|
|
||||||
NAMES ${_NLopt_LIB_NAMES}
|
|
||||||
PATHS ${NLopt_LIBRARY_DIR}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
if(NOT NLopt_LIBS)
|
|
||||||
set(NLopt_FOUND FALSE)
|
|
||||||
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt library '${_NLopt_LIB_NAMES}' in '${NLopt_LIBRARY_DIR}'.")
|
|
||||||
endif()
|
|
||||||
unset(_NLopt_LIB_NAMES)
|
|
||||||
|
|
||||||
set(_NLopt_HEADER_FILE_NAME "nlopt.hpp")
|
|
||||||
find_file(_NLopt_HEADER_FILE
|
|
||||||
NAMES ${_NLopt_HEADER_FILE_NAME}
|
|
||||||
PATHS ${NLopt_INCLUDE_DIR}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
if(NOT _NLopt_HEADER_FILE)
|
|
||||||
set(NLopt_FOUND FALSE)
|
|
||||||
set(NLopt_ERROR_REASON "${NLopt_ERROR_REASON} Cannot find NLopt header file '${_NLopt_HEADER_FILE_NAME}' in '${NLopt_INCLUDE_DIR}'.")
|
|
||||||
endif()
|
|
||||||
unset(_NLopt_HEADER_FILE_NAME)
|
|
||||||
unset(_NLopt_HEADER_FILE CACHE)
|
|
||||||
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# make variables changeable
|
|
||||||
mark_as_advanced(
|
|
||||||
NLopt_INCLUDE_DIR
|
|
||||||
NLopt_LIBRARY_DIR
|
|
||||||
NLopt_LIBS
|
|
||||||
NLopt_DEFINITIONS
|
|
||||||
)
|
|
||||||
|
|
||||||
|
find_package(NLopt ${NLopt_VERSION} CONFIG ${_q})
|
||||||
|
find_package_handle_standard_args(NLopt CONFIG_MODE)
|
||||||
|
|
||||||
# report result
|
# report result
|
||||||
if(NLopt_FOUND)
|
if(NLopt_FOUND AND NOT _q)
|
||||||
message(STATUS "Found NLopt in '${NLopt_DIR}'.")
|
get_filename_component(NLOPT_LIBRARY_DIRS ${NLOPT_LIBRARY_DIRS} ABSOLUTE)
|
||||||
message(STATUS "Using NLopt include directory '${NLopt_INCLUDE_DIR}'.")
|
get_filename_component(NLOPT_INCLUDE_DIRS ${NLOPT_INCLUDE_DIRS} ABSOLUTE)
|
||||||
message(STATUS "Using NLopt library '${NLopt_LIBS}'.")
|
|
||||||
add_library(NLopt::nlopt INTERFACE IMPORTED)
|
message(STATUS "Found NLopt in '${NLOPT_LIBRARY_DIRS}'.")
|
||||||
set_target_properties(NLopt::nlopt PROPERTIES INTERFACE_LINK_LIBRARIES ${NLopt_LIBS})
|
message(STATUS "Using NLopt include directory '${NLOPT_INCLUDE_DIRS}'.")
|
||||||
set_target_properties(NLopt::nlopt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${NLopt_INCLUDE_DIR})
|
|
||||||
set_target_properties(NLopt::nlopt PROPERTIES INTERFACE_COMPILE_DEFINITIONS "${NLopt_DEFINITIONS}")
|
get_target_property(_configs NLopt::nlopt IMPORTED_CONFIGURATIONS)
|
||||||
# target_link_libraries(Nlopt::Nlopt INTERFACE ${NLopt_LIBS})
|
foreach (_config ${_configs})
|
||||||
# target_include_directories(Nlopt::Nlopt INTERFACE ${NLopt_INCLUDE_DIR})
|
get_target_property(_lib NLopt::nlopt IMPORTED_LOCATION_${_config})
|
||||||
# target_compile_definitions(Nlopt::Nlopt INTERFACE ${NLopt_DEFINITIONS})
|
message(STATUS "Found NLopt ${_config} library: ${_lib}")
|
||||||
else()
|
endforeach ()
|
||||||
if(NLopt_FIND_REQUIRED)
|
|
||||||
message(FATAL_ERROR "Unable to find requested NLopt installation:${NLopt_ERROR_REASON}")
|
|
||||||
else()
|
|
||||||
if(NOT NLopt_FIND_QUIETLY)
|
|
||||||
message(STATUS "NLopt was not found:${NLopt_ERROR_REASON}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ if (OPENVDB_FIND_MODULE_PATH)
|
|||||||
endif ()
|
endif ()
|
||||||
# ###########################################################################
|
# ###########################################################################
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.3)
|
cmake_minimum_required(VERSION 3.13)
|
||||||
# Monitoring <PackageName>_ROOT variables
|
# Monitoring <PackageName>_ROOT variables
|
||||||
if(POLICY CMP0074)
|
if(POLICY CMP0074)
|
||||||
cmake_policy(SET CMP0074 NEW)
|
cmake_policy(SET CMP0074 NEW)
|
||||||
|
|||||||
@@ -1,15 +1,41 @@
|
|||||||
find_path(LIBNOISE_INCLUDE_DIR libnoise/noise.h)
|
find_path(LIBNOISE_INCLUDE_DIR libnoise/noise.h)
|
||||||
find_library(LIBNOISE_LIBRARY NAMES libnoise libnoise_static liblibnoise_static)
|
find_library(LIBNOISE_LIBRARY_RELEASE NAMES libnoise libnoise_static liblibnoise_static)
|
||||||
|
find_library(LIBNOISE_LIBRARY_DEBUG NAMES libnoised libnoise_staticd liblibnoise_staticd)
|
||||||
|
|
||||||
|
set(libnoise_LIB_FOUND FALSE)
|
||||||
|
if (LIBNOISE_LIBRARY_RELEASE OR LIBNOISE_LIBRARY_DEBUG)
|
||||||
|
set(libnoise_LIB_FOUND TRUE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(libnoise DEFAULT_MSG
|
find_package_handle_standard_args(libnoise DEFAULT_MSG
|
||||||
LIBNOISE_LIBRARY
|
libnoise_LIB_FOUND
|
||||||
LIBNOISE_INCLUDE_DIR
|
LIBNOISE_INCLUDE_DIR
|
||||||
)
|
)
|
||||||
|
|
||||||
if(libnoise_FOUND)
|
if(libnoise_FOUND)
|
||||||
add_library(noise::noise STATIC IMPORTED)
|
add_library(noise::noise STATIC IMPORTED)
|
||||||
|
|
||||||
set_target_properties(noise::noise PROPERTIES
|
set_target_properties(noise::noise PROPERTIES
|
||||||
IMPORTED_LOCATION "${LIBNOISE_LIBRARY}"
|
INTERFACE_INCLUDE_DIRECTORIES "${LIBNOISE_INCLUDE_DIR}"
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${LIBNOISE_INCLUDE_DIR}"
|
|
||||||
)
|
)
|
||||||
|
if (NOT libnoise_FIND_QUIETLY)
|
||||||
|
message(STATUS "Found libnoise include directory: ${LIBNOISE_INCLUDE_DIR}")
|
||||||
|
if (LIBNOISE_LIBRARY_RELEASE)
|
||||||
|
message(STATUS "Found libnoise RELEASE library: ${LIBNOISE_LIBRARY_RELEASE}")
|
||||||
|
endif ()
|
||||||
|
if (LIBNOISE_LIBRARY_DEBUG)
|
||||||
|
message(STATUS "Found libnoise DEBUG library: ${LIBNOISE_LIBRARY_DEBUG}")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (LIBNOISE_LIBRARY_RELEASE)
|
||||||
|
set_property(TARGET noise::noise APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||||
|
set_target_properties(noise::noise PROPERTIES IMPORTED_LOCATION_RELEASE ${LIBNOISE_LIBRARY_RELEASE})
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (LIBNOISE_LIBRARY_DEBUG)
|
||||||
|
set_property(TARGET noise::noise APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||||
|
set_target_properties(noise::noise PROPERTIES IMPORTED_LOCATION_DEBUG ${LIBNOISE_LIBRARY_DEBUG})
|
||||||
|
endif ()
|
||||||
endif()
|
endif()
|
||||||
@@ -37,14 +37,6 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>orcaslicer</string>
|
<string>orcaslicer</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>CFBundleURLName</key>
|
|
||||||
<string>BambuStudio Downloads</string>
|
|
||||||
<key>CFBundleURLSchemes</key>
|
|
||||||
<array>
|
|
||||||
<string>bambustudioopen</string>
|
|
||||||
</array>
|
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleDocumentTypes</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
@@ -139,13 +131,22 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<dict>
|
<dict>
|
||||||
<!-- Disable App Transport Security. Resolves https://github.com/SoftFever/OrcaSlicer/issues/791 -->
|
<!-- Disable App Transport Security. Resolves https://github.com/OrcaSlicer/OrcaSlicer/issues/791 -->
|
||||||
<key>NSAllowsArbitraryLoads</key>
|
<key>NSAllowsArbitraryLoads</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSAllowsArbitraryLoadsInWebContent</key>
|
<key>NSAllowsArbitraryLoadsInWebContent</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
|
<!-- Sparkle 2 Auto-Update Configuration -->
|
||||||
|
<key>SUFeedURL</key>
|
||||||
|
<string>https://check-version.orcaslicer.com/appcast.xml</string>
|
||||||
|
<key>SUPublicEDKey</key>
|
||||||
|
<string>eLFARgt9i0VZQR4FtXiTL6jdwjkGr2RMPjfYCCfBWeM=</string>
|
||||||
|
<key>SUEnableAutomaticChecks</key>
|
||||||
|
<true/>
|
||||||
|
<key>SUAllowsAutomaticUpdates</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
10
deps/CGAL/CGAL.cmake
vendored
10
deps/CGAL/CGAL.cmake
vendored
@@ -1,10 +1,14 @@
|
|||||||
|
if (IN_GIT_REPO)
|
||||||
|
set(CGAL_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_CGAL-prefix/src/dep_CGAL)
|
||||||
|
endif ()
|
||||||
|
|
||||||
orcaslicer_add_cmake_project(
|
orcaslicer_add_cmake_project(
|
||||||
CGAL
|
CGAL
|
||||||
# GIT_REPOSITORY https://github.com/CGAL/cgal.git
|
# GIT_REPOSITORY https://github.com/CGAL/cgal.git
|
||||||
# GIT_TAG bec70a6d52d8aacb0b3d82a7b4edc3caa899184b # releases/CGAL-5.0
|
# GIT_TAG 3654f780ae0c64675cabaef0e5ddaf904c48b4b7 # releases/CGAL-5.6.3
|
||||||
# For whatever reason, this keeps downloading forever (repeats downloads if finished)
|
# For whatever reason, this keeps downloading forever (repeats downloads if finished)
|
||||||
URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip
|
URL https://github.com/CGAL/cgal/releases/download/v5.6.3/CGAL-5.6.3.zip
|
||||||
URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0
|
URL_HASH SHA256=5d577acb4a9918ccb960491482da7a3838f8d363aff47e14d703f19fd84733d4
|
||||||
DEPENDS dep_Boost dep_GMP dep_MPFR
|
DEPENDS dep_Boost dep_GMP dep_MPFR
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
152
deps/CMakeLists.txt
vendored
152
deps/CMakeLists.txt
vendored
@@ -36,6 +36,11 @@ endif()
|
|||||||
|
|
||||||
project(OrcaSlicer-deps)
|
project(OrcaSlicer-deps)
|
||||||
|
|
||||||
|
# Backward compatibility for old CMake versions
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_VERSION VERSION_LESS "3.25")
|
||||||
|
set(LINUX ON CACHE BOOL "" FORCE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
include(ProcessorCount)
|
include(ProcessorCount)
|
||||||
|
|
||||||
@@ -44,9 +49,36 @@ if (NPROC EQUAL 0)
|
|||||||
set(NPROC 1)
|
set(NPROC 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
|
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/DL_CACHE CACHE PATH "Path for downloaded source packages.")
|
||||||
set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../DL_CACHE CACHE PATH "Path for downloaded source packages.")
|
|
||||||
set(FLATPAK FALSE CACHE BOOL "Toggles various build settings for flatpak, like /usr/local in DESTDIR or not building wxwidgets")
|
set(FLATPAK FALSE CACHE BOOL "Toggles various build settings for flatpak, like /usr/local in DESTDIR or not building wxwidgets")
|
||||||
|
|
||||||
|
if ("${DESTDIR}" STREQUAL "" OR "${DESTDIR}" STREQUAL "${AUTOGENERATED_DESTDIR}")
|
||||||
|
if (LINUX AND (NOT DEFINED USE_OLD_DESTDIR_PREV OR USE_OLD_DESTDIR_PREV) AND EXISTS "${CMAKE_BINARY_DIR}/destdir/usr/local" AND NOT EXISTS "${CMAKE_BINARY_DIR}/OrcaSlicer_dep/usr/local")
|
||||||
|
set(USE_OLD_DESTDIR TRUE)
|
||||||
|
message(WARNING "You are using an old directory name for dependencies that is being deprecated. "
|
||||||
|
"Please remove the \"destdir\" directory and rebuild to update to the new name. "
|
||||||
|
"The current \"destdir\" directory will be used until then.")
|
||||||
|
endif ()
|
||||||
|
if (NOT USE_OLD_DESTDIR AND USE_OLD_DESTDIR_PREV)
|
||||||
|
set(REGEN_DESTDIR TRUE)
|
||||||
|
endif ()
|
||||||
|
else ()
|
||||||
|
unset(AUTOGENERATED_DESTDIR CACHE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if ("${DESTDIR}" STREQUAL "" OR REGEN_DESTDIR)
|
||||||
|
if (USE_OLD_DESTDIR) # backward compatibility for old directory name
|
||||||
|
set(DESTDIR "${CMAKE_BINARY_DIR}/destdir" CACHE PATH "Path to dependencies install directory" FORCE)
|
||||||
|
else ()
|
||||||
|
set(DESTDIR "${CMAKE_BINARY_DIR}/OrcaSlicer_dep" CACHE PATH "Path to dependencies install directory" FORCE)
|
||||||
|
endif ()
|
||||||
|
set(DESTDIR_MSG "(generated automatically and saved to cache)")
|
||||||
|
set(AUTOGENERATED_DESTDIR ${DESTDIR} CACHE STRING "Provides the last autogenerated destdir" FORCE)
|
||||||
|
unset(REGEN_DESTDIR CACHE)
|
||||||
|
else ()
|
||||||
|
set(DESTDIR_MSG "(from cache or command line)")
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (NOT FLATPAK)
|
if (NOT FLATPAK)
|
||||||
set(DESTDIR "${DESTDIR}/usr/local/")
|
set(DESTDIR "${DESTDIR}/usr/local/")
|
||||||
endif()
|
endif()
|
||||||
@@ -56,15 +88,32 @@ get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
|||||||
if (_is_multi)
|
if (_is_multi)
|
||||||
option(DEP_DEBUG "Build debug variants (only applicable on Windows)" OFF)
|
option(DEP_DEBUG "Build debug variants (only applicable on Windows)" OFF)
|
||||||
option(ORCA_INCLUDE_DEBUG_INFO "Includes debug information in a release build (like RelWithDebInfo) in a way that works with multi-configuration generators and incompatible dependencies. DEP_DEBUG option takes priority over this." OFF)
|
option(ORCA_INCLUDE_DEBUG_INFO "Includes debug information in a release build (like RelWithDebInfo) in a way that works with multi-configuration generators and incompatible dependencies. DEP_DEBUG option takes priority over this." OFF)
|
||||||
|
option(AUTO_DEBUG_WORKAROUND "Automatically sets DEP_DEBUG and ORCA_INCLUDE_DEBUG_INFO based on CMAKE_BUILD_TYPE" ON)
|
||||||
|
|
||||||
|
if (AUTO_DEBUG_WORKAROUND)
|
||||||
|
set(DEP_DEBUG OFF)
|
||||||
|
set(ORCA_INCLUDE_DEBUG_INFO OFF)
|
||||||
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
set(DEP_DEBUG ON)
|
||||||
|
message(STATUS "DEP_DEBUG has been automatically turned ON due to CMAKE_BUILD_TYPE being set to Debug")
|
||||||
|
elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||||
|
set(ORCA_INCLUDE_DEBUG_INFO ON)
|
||||||
|
message(STATUS "ORCA_INCLUDE_DEBUG_INFO has been automatically turned ON due to CMAKE_BUILD_TYPE being set to RelWithDebInfo")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
|
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(IS_CROSS_COMPILE FALSE)
|
set(IS_CROSS_COMPILE FALSE)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
|
list(LENGTH CMAKE_OSX_ARCHITECTURES _arch_len)
|
||||||
|
if (_arch_len GREATER 1)
|
||||||
|
message(FATAL_ERROR "OrcaSlicer only supports building for one architecture at a time. Please make sure only one architecture is specified in CMAKE_OSX_ARCHITECTURES")
|
||||||
|
endif ()
|
||||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||||
set(CMAKE_FIND_APPBUNDLE LAST)
|
set(CMAKE_FIND_APPBUNDLE LAST)
|
||||||
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
|
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
|
||||||
@@ -87,8 +136,8 @@ endif ()
|
|||||||
# Slic3r compiles with a different version which will cause runtime errors.
|
# Slic3r compiles with a different version which will cause runtime errors.
|
||||||
# option(DEP_BUILD_IGL_STATIC "Build IGL as a static library. Might cause link errors and increase binary size." OFF)
|
# option(DEP_BUILD_IGL_STATIC "Build IGL as a static library. Might cause link errors and increase binary size." OFF)
|
||||||
|
|
||||||
message(STATUS "OrcaSlicer deps DESTDIR: ${DESTDIR}")
|
message(STATUS "OrcaSlicer deps DESTDIR: ${DESTDIR} ${DESTDIR_MSG}")
|
||||||
message(STATUS "OrcaSlicer dowload dir for source packages: ${DEP_DOWNLOAD_DIR}")
|
message(STATUS "OrcaSlicer download dir for source packages: ${DEP_DOWNLOAD_DIR}")
|
||||||
message(STATUS "OrcaSlicer deps debug build: ${DEP_DEBUG}")
|
message(STATUS "OrcaSlicer deps debug build: ${DEP_DEBUG}")
|
||||||
|
|
||||||
find_package(Git REQUIRED)
|
find_package(Git REQUIRED)
|
||||||
@@ -144,39 +193,26 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
|||||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
|
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
|
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
|
||||||
)
|
)
|
||||||
elseif(FLATPAK)
|
|
||||||
# the only reason this is here is because of the HACK at the bottom for ci
|
if (FLATPAK)
|
||||||
#
|
# Free up space during flatpak builds to prevent running out of space during CI/CD
|
||||||
# note for future devs: shared libs may actually create a size reduction
|
|
||||||
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
|
# note for future devs: shared libs may actually create a size reduction
|
||||||
# so, as much as I would like to use that, it's not happening
|
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
|
||||||
ExternalProject_Add(
|
# so, as much as I would like to use that, it's not happening
|
||||||
dep_${projectname}
|
ExternalProject_Add_Step(dep_${projectname} free_download_space
|
||||||
EXCLUDE_FROM_ALL ON
|
DEPENDEES download # do after download
|
||||||
INSTALL_DIR ${DESTDIR}
|
COMMENT "Freeing Space: Removing source archive"
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
WORKING_DIRECTORY ${DEP_DOWNLOAD_DIR}
|
||||||
${_gen}
|
COMMAND ${CMAKE_COMMAND} -E rm -r ${projectname}
|
||||||
CMAKE_ARGS
|
)
|
||||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
ExternalProject_Add_Step(dep_${projectname} free_build_space
|
||||||
-DCMAKE_MODULE_PATH:STRING=${PROJECT_SOURCE_DIR}/../cmake/modules
|
DEPENDEES install # do after install
|
||||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
COMMENT "Freeing Space: Removing source and build files"
|
||||||
-DCMAKE_DEBUG_POSTFIX:STRING=d
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dep_${projectname}-prefix/src
|
||||||
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
COMMAND ${CMAKE_COMMAND} -E rm -rf dep_${projectname} dep_${projectname}-build
|
||||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
)
|
||||||
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
endif ()
|
||||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
|
||||||
${_cmake_osx_arch}
|
|
||||||
"${_configs_line}"
|
|
||||||
${DEP_CMAKE_OPTS}
|
|
||||||
${P_ARGS_CMAKE_ARGS}
|
|
||||||
${P_ARGS_UNPARSED_ARGUMENTS}
|
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
|
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
|
|
||||||
# HACK: save space after each compile job, because CI
|
|
||||||
# reasoning: cmake changes directory after this command, so just keep only the folders
|
|
||||||
# so that it can navigate out
|
|
||||||
COMMAND find "${CMAKE_BINARY_DIR}/dep_${projectname}-prefix/" -type f -delete
|
|
||||||
)
|
|
||||||
else()
|
else()
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
dep_${projectname}
|
dep_${projectname}
|
||||||
@@ -203,13 +239,13 @@ endfunction(orcaslicer_add_cmake_project)
|
|||||||
|
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
|
||||||
message(STATUS "\nDetected 64-bit compiler => building 64-bit deps bundle\n")
|
message(STATUS "\nDetected X64 compiler => building X64 deps bundle\n")
|
||||||
set(DEPS_BITS 64)
|
set(DEPS_ARCH "x64")
|
||||||
include("deps-windows.cmake")
|
include("deps-windows.cmake")
|
||||||
elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
|
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "X86")
|
||||||
message(STATUS "\nDetected 32-bit compiler => building 32-bit deps bundle\n")
|
message(STATUS "\nDetected X86 compiler => building X86 deps bundle\n")
|
||||||
set(DEPS_BITS 32)
|
set(DEPS_ARCH "x86")
|
||||||
include("deps-windows.cmake")
|
include("deps-windows.cmake")
|
||||||
else ()
|
else ()
|
||||||
message(FATAL_ERROR "Unable to detect architecture")
|
message(FATAL_ERROR "Unable to detect architecture")
|
||||||
@@ -248,7 +284,6 @@ if(FLATPAK)
|
|||||||
find_package(EXPAT)
|
find_package(EXPAT)
|
||||||
find_package(CURL)
|
find_package(CURL)
|
||||||
find_package(JPEG)
|
find_package(JPEG)
|
||||||
find_package(TIFF)
|
|
||||||
find_package(Freetype)
|
find_package(Freetype)
|
||||||
find_package(OpenSSL 1.1...<3.2)
|
find_package(OpenSSL 1.1...<3.2)
|
||||||
find_package(CURL)
|
find_package(CURL)
|
||||||
@@ -321,16 +356,10 @@ if (NOT JPEG_FOUND)
|
|||||||
set(JPEG_PKG dep_JPEG)
|
set(JPEG_PKG dep_JPEG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(TIFF_PKG "")
|
# flatpak builds wxwidgets separately, so it is not included in the deps target
|
||||||
if (NOT TIFF_FOUND)
|
|
||||||
include(TIFF/TIFF.cmake)
|
|
||||||
set(TIFF_PKG "dep_TIFF")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# flatpak builds wxwidgets separately
|
|
||||||
set(WXWIDGETS_PKG "")
|
set(WXWIDGETS_PKG "")
|
||||||
|
include(wxWidgets/wxWidgets.cmake)
|
||||||
if (NOT FLATPAK)
|
if (NOT FLATPAK)
|
||||||
include(wxWidgets/wxWidgets.cmake)
|
|
||||||
set(WXWIDGETS_PKG "dep_wxWidgets")
|
set(WXWIDGETS_PKG "dep_wxWidgets")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -357,6 +386,16 @@ endif ()
|
|||||||
include(OCCT/OCCT.cmake)
|
include(OCCT/OCCT.cmake)
|
||||||
include(OpenCV/OpenCV.cmake)
|
include(OpenCV/OpenCV.cmake)
|
||||||
|
|
||||||
|
# WinSparkle for Windows auto-updates
|
||||||
|
if(WIN32)
|
||||||
|
include(WinSparkle/WinSparkle.cmake)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Sparkle 2 for macOS auto-updates
|
||||||
|
if(APPLE)
|
||||||
|
include(Sparkle/Sparkle.cmake)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(_dep_list
|
set(_dep_list
|
||||||
dep_Boost
|
dep_Boost
|
||||||
dep_TBB
|
dep_TBB
|
||||||
@@ -381,12 +420,19 @@ set(_dep_list
|
|||||||
if (MSVC)
|
if (MSVC)
|
||||||
# Experimental
|
# Experimental
|
||||||
#list(APPEND _dep_list "dep_qhull")
|
#list(APPEND _dep_list "dep_qhull")
|
||||||
|
# WinSparkle for auto-updates
|
||||||
|
list(APPEND _dep_list "dep_WinSparkle")
|
||||||
else()
|
else()
|
||||||
list(APPEND _dep_list "dep_Qhull")
|
list(APPEND _dep_list "dep_Qhull")
|
||||||
# Not working, static build has different Eigen
|
# Not working, static build has different Eigen
|
||||||
#list(APPEND _dep_list "dep_libigl")
|
#list(APPEND _dep_list "dep_libigl")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (APPLE)
|
||||||
|
# Sparkle 2 for auto-updates
|
||||||
|
list(APPEND _dep_list "dep_Sparkle")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_target(deps ALL DEPENDS ${_dep_list})
|
add_custom_target(deps ALL DEPENDS ${_dep_list})
|
||||||
|
|
||||||
# Note: I'm not using any of the LOG_xxx options in ExternalProject_Add() commands
|
# Note: I'm not using any of the LOG_xxx options in ExternalProject_Add() commands
|
||||||
|
|||||||
2
deps/FREETYPE/FREETYPE.cmake
vendored
2
deps/FREETYPE/FREETYPE.cmake
vendored
@@ -11,7 +11,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
orcaslicer_add_cmake_project(FREETYPE
|
orcaslicer_add_cmake_project(FREETYPE
|
||||||
URL https://mirror.ossplanet.net/nongnu/freetype/freetype-2.12.1.tar.gz
|
URL https://github.com/SoftFever/orca_deps/releases/download/freetype-2.12.1.tar.gz/freetype-2.12.1.tar.gz
|
||||||
URL_HASH SHA256=efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938
|
URL_HASH SHA256=efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938
|
||||||
#DEPENDS ${ZLIB_PKG}
|
#DEPENDS ${ZLIB_PKG}
|
||||||
#"${_patch_step}"
|
#"${_patch_step}"
|
||||||
|
|||||||
7
deps/GLEW/glew/README.md
vendored
7
deps/GLEW/glew/README.md
vendored
@@ -22,7 +22,6 @@ https://github.com/nigels-com/glew
|
|||||||
* [Install build tools](#install-build-tools)
|
* [Install build tools](#install-build-tools)
|
||||||
* [Build](#build-1)
|
* [Build](#build-1)
|
||||||
* [Linux EGL](#linux-egl)
|
* [Linux EGL](#linux-egl)
|
||||||
* [Linux OSMesa](#linux-osmesa)
|
|
||||||
* [Linux mingw-w64](#linux-mingw-w64)
|
* [Linux mingw-w64](#linux-mingw-w64)
|
||||||
* [Using cmake](#using-cmake)
|
* [Using cmake](#using-cmake)
|
||||||
* [Install build tools](#install-build-tools-1)
|
* [Install build tools](#install-build-tools-1)
|
||||||
@@ -95,11 +94,6 @@ _Note: you may need to call `make` in the **auto** folder first_
|
|||||||
$ sudo apt install libegl1-mesa-dev
|
$ sudo apt install libegl1-mesa-dev
|
||||||
$ make SYSTEM=linux-egl
|
$ make SYSTEM=linux-egl
|
||||||
|
|
||||||
##### Linux OSMesa
|
|
||||||
|
|
||||||
$ sudo apt install libosmesa-dev
|
|
||||||
$ make SYSTEM=linux-osmesa
|
|
||||||
|
|
||||||
##### Linux mingw-w64
|
##### Linux mingw-w64
|
||||||
|
|
||||||
$ sudo apt install mingw-w64
|
$ sudo apt install mingw-w64
|
||||||
@@ -140,7 +134,6 @@ RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel c
|
|||||||
| --------------- | ----------- |
|
| --------------- | ----------- |
|
||||||
| BUILD_UTILS | Build the `glewinfo` and `visualinfo` executables. |
|
| BUILD_UTILS | Build the `glewinfo` and `visualinfo` executables. |
|
||||||
| GLEW_REGAL | Build in Regal mode. |
|
| GLEW_REGAL | Build in Regal mode. |
|
||||||
| GLEW_OSMESA | Build in off-screen Mesa mode. |
|
|
||||||
| BUILD_FRAMEWORK | Build as MacOSX Framework. Setting `CMAKE_INSTALL_PREFIX` to `/Library/Frameworks` is recommended. |
|
| BUILD_FRAMEWORK | Build as MacOSX Framework. Setting `CMAKE_INSTALL_PREFIX` to `/Library/Frameworks` is recommended. |
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|||||||
32
deps/GMP/0001-GMP_GCC15.patch
vendored
Normal file
32
deps/GMP/0001-GMP_GCC15.patch
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
--- GMP/acinclude.m4 2025-05-14 18:50:11.396354745 -0400
|
||||||
|
+++ GMP/acinclude.m4.2 2025-05-14 18:57:20.757853503 -0400
|
||||||
|
@@ -609,7 +609,7 @@
|
||||||
|
|
||||||
|
#if defined (__GNUC__) && ! defined (__cplusplus)
|
||||||
|
typedef unsigned long long t1;typedef t1*t2;
|
||||||
|
-void g(){}
|
||||||
|
+void g(int,t1 const*,t1,t2,t1 const*,int){}
|
||||||
|
void h(){}
|
||||||
|
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
|
||||||
|
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
|
||||||
|
|
||||||
|
--- GMP/configure 2025-05-14 19:33:35.730593315 -0400
|
||||||
|
+++ GMP/configure 2025-05-14 19:35:37.805619186 -0400
|
||||||
|
@@ -6526,7 +6526,7 @@
|
||||||
|
|
||||||
|
#if defined (__GNUC__) && ! defined (__cplusplus)
|
||||||
|
typedef unsigned long long t1;typedef t1*t2;
|
||||||
|
-void g(){}
|
||||||
|
+void g(int,t1 const*,t1,t2,t1 const*,int){}
|
||||||
|
void h(){}
|
||||||
|
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
|
||||||
|
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
|
||||||
|
@@ -8145,7 +8145,7 @@
|
||||||
|
|
||||||
|
#if defined (__GNUC__) && ! defined (__cplusplus)
|
||||||
|
typedef unsigned long long t1;typedef t1*t2;
|
||||||
|
-void g(){}
|
||||||
|
+void g(int,t1 const*,t1,t2,t1 const*,int){}
|
||||||
|
void h(){}
|
||||||
|
static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0)
|
||||||
|
{t1 c,x,r;int i;if(v0){c=1;for(i=1;i<n;i++){x=up[i];r=x+1;rp[i]=r;}}return c;}
|
||||||
17
deps/GMP/GMP.cmake
vendored
17
deps/GMP/GMP.cmake
vendored
@@ -1,18 +1,22 @@
|
|||||||
|
|
||||||
set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/gmp)
|
set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/gmp)
|
||||||
|
|
||||||
|
if (IN_GIT_REPO)
|
||||||
|
set(GMP_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_GMP-prefix/src/dep_GMP)
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
set(_output ${DESTDIR}/include/gmp.h
|
set(_output ${DESTDIR}/include/gmp.h
|
||||||
${DESTDIR}/lib/libgmp-10.lib
|
${DESTDIR}/lib/libgmp-10.lib
|
||||||
${DESTDIR}/bin/libgmp-10.dll)
|
${DESTDIR}/bin/libgmp-10.dll)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${_output}
|
OUTPUT ${_output}
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/gmp.h ${DESTDIR}/include/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/gmp.h ${DESTDIR}/include/
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.lib ${DESTDIR}/lib/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libgmp-10.lib ${DESTDIR}/lib/
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libgmp-10.dll ${DESTDIR}/bin/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libgmp-10.dll ${DESTDIR}/bin/
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(dep_GMP SOURCES ${_output})
|
add_custom_target(dep_GMP SOURCES ${_output})
|
||||||
|
|
||||||
else ()
|
else ()
|
||||||
@@ -59,7 +63,8 @@ else ()
|
|||||||
URL https://github.com/SoftFever/OrcaSlicer_deps/releases/download/gmp-6.2.1/gmp-6.2.1.tar.bz2
|
URL https://github.com/SoftFever/OrcaSlicer_deps/releases/download/gmp-6.2.1/gmp-6.2.1.tar.bz2
|
||||||
URL_HASH SHA256=eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
|
URL_HASH SHA256=eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/GMP
|
||||||
BUILD_IN_SOURCE ON
|
PATCH_COMMAND git apply ${GMP_DIRECTORY_FLAG} --verbose ${CMAKE_CURRENT_LIST_DIR}/0001-GMP_GCC15.patch
|
||||||
|
BUILD_IN_SOURCE ON
|
||||||
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}" ${_gmp_build_tgt}
|
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --enable-shared=no --enable-cxx=yes --enable-static=yes "--prefix=${DESTDIR}" ${_gmp_build_tgt}
|
||||||
BUILD_COMMAND make -j
|
BUILD_COMMAND make -j
|
||||||
INSTALL_COMMAND make install
|
INSTALL_COMMAND make install
|
||||||
|
|||||||
9
deps/MPFR/MPFR.cmake
vendored
9
deps/MPFR/MPFR.cmake
vendored
@@ -10,8 +10,8 @@ if (MSVC)
|
|||||||
OUTPUT ${_output}
|
OUTPUT ${_output}
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${DESTDIR}/include/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpfr.h ${DESTDIR}/include/
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${DESTDIR}/include/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/include/mpf2mpfr.h ${DESTDIR}/include/
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.lib ${DESTDIR}/lib/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libmpfr-4.lib ${DESTDIR}/lib/
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win${DEPS_BITS}/libmpfr-4.dll ${DESTDIR}/bin/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_srcdir}/lib/win-${DEPS_ARCH}/libmpfr-4.dll ${DESTDIR}/bin/
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(dep_MPFR SOURCES ${_output})
|
add_custom_target(dep_MPFR SOURCES ${_output})
|
||||||
@@ -25,8 +25,9 @@ else ()
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
ExternalProject_Add(dep_MPFR
|
ExternalProject_Add(dep_MPFR
|
||||||
URL https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.bz2
|
URL https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.2.tar.bz2
|
||||||
URL_HASH SHA256=b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0
|
https://www.mpfr.org/mpfr-4.2.2/mpfr-4.2.2.tar.bz2
|
||||||
|
URL_HASH SHA256=9ad62c7dc910303cd384ff8f1f4767a655124980bb6d8650fe62c815a231bb7b
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/MPFR
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/MPFR
|
||||||
BUILD_IN_SOURCE ON
|
BUILD_IN_SOURCE ON
|
||||||
CONFIGURE_COMMAND autoreconf -f -i &&
|
CONFIGURE_COMMAND autoreconf -f -i &&
|
||||||
|
|||||||
24
deps/OCCT/0001-OCCT-fix.patch
vendored
24
deps/OCCT/0001-OCCT-fix.patch
vendored
@@ -195,3 +195,27 @@ index 5ae9899f..0a17372b 100644
|
|||||||
|
|
||||||
if (!myFTLib->IsValid())
|
if (!myFTLib->IsValid())
|
||||||
{
|
{
|
||||||
|
From 7236e83dcc1e7284e66dc61e612154617ef715d6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: dpasukhi <dpasukhi@opencascade.com>
|
||||||
|
Date: Tue, 27 Aug 2024 11:33:29 +0100
|
||||||
|
Subject: [PATCH] 0033808: Coding - FreeType Use unsigned point and contour
|
||||||
|
indexing in `FT_Outline`
|
||||||
|
|
||||||
|
Changes to auto instead of specific type
|
||||||
|
---
|
||||||
|
src/StdPrs/StdPrs_BRepFont.cxx | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/StdPrs/StdPrs_BRepFont.cxx b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
index ab2d9b3c9f..cd701879b1 100644
|
||||||
|
--- a/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
+++ b/src/StdPrs/StdPrs_BRepFont.cxx
|
||||||
|
@@ -457,7 +457,7 @@ Standard_Boolean StdPrs_BRepFont::renderGlyph (const Standard_Utf32Char theChar,
|
||||||
|
for (short aContour = 0, aStartIndex = 0; aContour < anOutline->n_contours; ++aContour)
|
||||||
|
{
|
||||||
|
const FT_Vector* aPntList = &anOutline->points[aStartIndex];
|
||||||
|
- const char* aTags = &anOutline->tags[aStartIndex];
|
||||||
|
+ const auto* aTags = &anOutline->tags[aStartIndex];
|
||||||
|
const short anEndIndex = anOutline->contours[aContour];
|
||||||
|
const short aPntsNb = (anEndIndex - aStartIndex) + 1;
|
||||||
|
aStartIndex = anEndIndex + 1;
|
||||||
|
|||||||
54
deps/OpenCV/0001-vs.patch
vendored
Normal file
54
deps/OpenCV/0001-vs.patch
vendored
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake
|
||||||
|
index 7f229cde96..d8e20f8fe9 100644
|
||||||
|
--- a/cmake/OpenCVDetectCXXCompiler.cmake
|
||||||
|
+++ b/cmake/OpenCVDetectCXXCompiler.cmake
|
||||||
|
@@ -171,8 +171,10 @@ elseif(MSVC)
|
||||||
|
set(OpenCV_RUNTIME vc15)
|
||||||
|
elseif(MSVC_VERSION MATCHES "^192[0-9]$")
|
||||||
|
set(OpenCV_RUNTIME vc16)
|
||||||
|
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
|
||||||
|
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
|
||||||
|
set(OpenCV_RUNTIME vc17)
|
||||||
|
+ elseif(MSVC_VERSION MATCHES "^195[0-9]$")
|
||||||
|
+ set(OpenCV_RUNTIME vc18)
|
||||||
|
else()
|
||||||
|
message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME")
|
||||||
|
endif()
|
||||||
|
diff --git a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
||||||
|
index b0f254ebe8..8f0178b0ae 100644
|
||||||
|
--- a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
||||||
|
+++ b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
||||||
|
@@ -137,7 +137,7 @@ elseif(MSVC)
|
||||||
|
set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
|
||||||
|
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
|
||||||
|
set(OpenCV_RUNTIME vc17)
|
||||||
|
check_one_config(has_VS2022)
|
||||||
|
if(NOT has_VS2022)
|
||||||
|
@@ -151,6 +151,24 @@ elseif(MSVC)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
+ elseif(MSVC_VERSION MATCHES "^195[0-9]$")
|
||||||
|
+ set(OpenCV_RUNTIME vc18)
|
||||||
|
+ check_one_config(has_VS2026)
|
||||||
|
+ if(NOT has_VS2026)
|
||||||
|
+ set(OpenCV_RUNTIME vc17)
|
||||||
|
+ check_one_config(has_VS2022)
|
||||||
|
+ if(NOT has_VS2022)
|
||||||
|
+ set(OpenCV_RUNTIME vc16)
|
||||||
|
+ check_one_config(has_VS2019)
|
||||||
|
+ if(NOT has_VS2019)
|
||||||
|
+ set(OpenCV_RUNTIME vc15) # selecting previous compatible runtime version
|
||||||
|
+ check_one_config(has_VS2017)
|
||||||
|
+ if(NOT has_VS2017)
|
||||||
|
+ set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
|
||||||
|
+ endif()
|
||||||
|
+ endif()
|
||||||
|
+ endif()
|
||||||
|
+ endif()
|
||||||
|
endif()
|
||||||
|
elseif(MINGW)
|
||||||
|
set(OpenCV_RUNTIME mingw)
|
||||||
52
deps/OpenCV/0001-vs2022.patch
vendored
52
deps/OpenCV/0001-vs2022.patch
vendored
@@ -1,52 +0,0 @@
|
|||||||
From 6fb3f6333150a777e835fc7c48e49750591bf7fe Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Buch <bebuch@users.noreply.github.com>
|
|
||||||
Date: Thu, 23 May 2024 16:05:19 +0200
|
|
||||||
Subject: [PATCH] Support VS 2022 17.1x.y
|
|
||||||
|
|
||||||
With 17.10.0 the MSVC toolset was set to 19.40.x which breaks the compatibility test in the OpenCV's CMake Config files.
|
|
||||||
---
|
|
||||||
cmake/templates/OpenCVConfig.root-WIN32.cmake.in | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
|
||||||
index b0f254ebe8..62e36272f3 100644
|
|
||||||
--- a/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
|
||||||
+++ b/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
|
|
||||||
@@ -137,7 +137,7 @@ elseif(MSVC)
|
|
||||||
set(OpenCV_RUNTIME vc14) # selecting previous compatible runtime version
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
|
|
||||||
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
|
|
||||||
set(OpenCV_RUNTIME vc17)
|
|
||||||
check_one_config(has_VS2022)
|
|
||||||
if(NOT has_VS2022)
|
|
||||||
--
|
|
||||||
2.45.2.windows.1
|
|
||||||
|
|
||||||
From f85818ba6f9031c450475a7453dee0acce31a881 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Buch <bebuch@users.noreply.github.com>
|
|
||||||
Date: Fri, 24 May 2024 11:10:09 +0200
|
|
||||||
Subject: [PATCH] Support VS 2022 17.1x.y in OpenCVDetectCXXCompiler.cmake
|
|
||||||
|
|
||||||
With 17.10.0 the MSVC toolset was set to 19.40.x which breaks the compatibility test in the OpenCV's CMake Config files.
|
|
||||||
---
|
|
||||||
cmake/OpenCVDetectCXXCompiler.cmake | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/cmake/OpenCVDetectCXXCompiler.cmake b/cmake/OpenCVDetectCXXCompiler.cmake
|
|
||||||
index 1743aca11f..448afd46ea 100644
|
|
||||||
--- a/cmake/OpenCVDetectCXXCompiler.cmake
|
|
||||||
+++ b/cmake/OpenCVDetectCXXCompiler.cmake
|
|
||||||
@@ -176,7 +176,7 @@ elseif(MSVC)
|
|
||||||
set(OpenCV_RUNTIME vc15)
|
|
||||||
elseif(MSVC_VERSION MATCHES "^192[0-9]$")
|
|
||||||
set(OpenCV_RUNTIME vc16)
|
|
||||||
- elseif(MSVC_VERSION MATCHES "^193[0-9]$")
|
|
||||||
+ elseif(MSVC_VERSION MATCHES "^19[34][0-9]$")
|
|
||||||
set(OpenCV_RUNTIME vc17)
|
|
||||||
else()
|
|
||||||
message(WARNING "OpenCV does not recognize MSVC_VERSION \"${MSVC_VERSION}\". Cannot set OpenCV_RUNTIME")
|
|
||||||
--
|
|
||||||
2.45.2.windows.1
|
|
||||||
|
|
||||||
54
deps/OpenCV/0002-clang19-macos.patch
vendored
Normal file
54
deps/OpenCV/0002-clang19-macos.patch
vendored
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
From 893b8113f04d408cc6177c6de19c9889a48faa24 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Zixu Wang <zixu_wang@apple.com>
|
||||||
|
Date: Thu, 18 Jan 2024 11:12:00 -0800
|
||||||
|
Subject: [PATCH] Fix unused platform check and configuration for macOS
|
||||||
|
|
||||||
|
In a similar manner as zlib (https://github.com/madler/zlib/pull/895),
|
||||||
|
libpng contains a header configuration that's no longer valid and
|
||||||
|
hasn't been exercised for the macOS target.
|
||||||
|
|
||||||
|
- The target OS conditional macros are misused. Specifically
|
||||||
|
`TARGET_OS_MAC` covers all Apple targets, including iOS, and it
|
||||||
|
should not be checked with `#if defined` as they would always be
|
||||||
|
defined (to either 1 or 0) on Apple platforms.
|
||||||
|
- `#include <fp.h>` no longer works for the macOS target and results
|
||||||
|
in a compilation failure. macOS ships all required functions in
|
||||||
|
`math.h`, and clients should use `math.h` instead.
|
||||||
|
|
||||||
|
This problem has not been noticed until a recent extension in clang
|
||||||
|
(https://github.com/llvm/llvm-project/pull/74676) exposed the issue
|
||||||
|
and broke libpng builds on Apple platforms. The failure can be
|
||||||
|
reproduced now by adding `#include <TargetConditionals.h>` before the
|
||||||
|
block.
|
||||||
|
|
||||||
|
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
|
||||||
|
---
|
||||||
|
AUTHORS | 2 ++
|
||||||
|
pngpriv.h | 14 ++------------
|
||||||
|
2 files changed, 4 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/3rdparty/libpng/pngpriv.h b/3rdparty/libpng/pngpriv.h
|
||||||
|
index 6c7280cf53..190eb85cbf 100644
|
||||||
|
--- a/3rdparty/libpng/pngpriv.h
|
||||||
|
+++ b/3rdparty/libpng/pngpriv.h
|
||||||
|
@@ -556,18 +556,8 @@
|
||||||
|
*/
|
||||||
|
# include <float.h>
|
||||||
|
|
||||||
|
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
|
||||||
|
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
|
||||||
|
- /* We need to check that <math.h> hasn't already been included earlier
|
||||||
|
- * as it seems it doesn't agree with <fp.h>, yet we should really use
|
||||||
|
- * <fp.h> if possible.
|
||||||
|
- */
|
||||||
|
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
|
||||||
|
-# include <fp.h>
|
||||||
|
-# endif
|
||||||
|
-# else
|
||||||
|
-# include <math.h>
|
||||||
|
-# endif
|
||||||
|
+# include <math.h>
|
||||||
|
+
|
||||||
|
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
|
||||||
|
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
|
||||||
|
* MATH=68881
|
||||||
3
deps/OpenCV/OpenCV.cmake
vendored
3
deps/OpenCV/OpenCV.cmake
vendored
@@ -11,7 +11,7 @@ endif ()
|
|||||||
orcaslicer_add_cmake_project(OpenCV
|
orcaslicer_add_cmake_project(OpenCV
|
||||||
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
URL https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
||||||
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
URL_HASH SHA256=1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
||||||
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs2022.patch
|
PATCH_COMMAND git apply ${OpenCV_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-vs.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DBUILD_SHARED_LIBS=0
|
-DBUILD_SHARED_LIBS=0
|
||||||
-DBUILD_PERE_TESTS=OFF
|
-DBUILD_PERE_TESTS=OFF
|
||||||
@@ -53,6 +53,7 @@ orcaslicer_add_cmake_project(OpenCV
|
|||||||
-DWITH_OPENJPEG=OFF
|
-DWITH_OPENJPEG=OFF
|
||||||
-DWITH_QUIRC=OFF
|
-DWITH_QUIRC=OFF
|
||||||
-DWITH_VTK=OFF
|
-DWITH_VTK=OFF
|
||||||
|
-DWITH_JPEG=OFF
|
||||||
-DWITH_WEBP=OFF
|
-DWITH_WEBP=OFF
|
||||||
-DENABLE_PRECOMPILED_HEADERS=OFF
|
-DENABLE_PRECOMPILED_HEADERS=OFF
|
||||||
-DINSTALL_TESTS=OFF
|
-DINSTALL_TESTS=OFF
|
||||||
|
|||||||
2
deps/OpenSSL/OpenSSL.cmake
vendored
2
deps/OpenSSL/OpenSSL.cmake
vendored
@@ -8,7 +8,7 @@ else()
|
|||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(_cross_arch "VC-WIN64A")
|
set(_cross_arch "VC-WIN64A")
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
set(_cross_arch "darwin64-arm64-cc")
|
set(_cross_arch "darwin64-${CMAKE_OSX_ARCHITECTURES}-cc")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
29
deps/OpenVDB/0001-clang19.patch
vendored
Normal file
29
deps/OpenVDB/0001-clang19.patch
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
--- a/openvdb/openvdb/tree/NodeManager.h 2023-11-01 20:31:11 UTC
|
||||||
|
+++ b/openvdb/openvdb/tree/NodeManager.h
|
||||||
|
@@ -327,7 +327,7 @@ class NodeList (private)
|
||||||
|
void operator()(const NodeRange& range) const
|
||||||
|
{
|
||||||
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
|
- OpT::template eval(mNodeOp, it);
|
||||||
|
+ OpT::eval(mNodeOp, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const NodeOp mNodeOp;
|
||||||
|
@@ -347,7 +347,7 @@ class NodeList (private)
|
||||||
|
void operator()(const NodeRange& range) const
|
||||||
|
{
|
||||||
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
|
- OpT::template eval(mNodeOp, it);
|
||||||
|
+ OpT::eval(mNodeOp, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const NodeOp& mNodeOp;
|
||||||
|
@@ -372,7 +372,7 @@ class NodeList (private)
|
||||||
|
void operator()(const NodeRange& range)
|
||||||
|
{
|
||||||
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
|
- OpT::template eval(*mNodeOp, it);
|
||||||
|
+ OpT::eval(*mNodeOp, it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void join(const NodeReducer& other)
|
||||||
5
deps/OpenVDB/OpenVDB.cmake
vendored
5
deps/OpenVDB/OpenVDB.cmake
vendored
@@ -6,10 +6,15 @@ else()
|
|||||||
set(_build_static ON)
|
set(_build_static ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (IN_GIT_REPO)
|
||||||
|
set(OPENVDB_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenVDB-prefix/src/dep_OpenVDB)
|
||||||
|
endif ()
|
||||||
|
|
||||||
orcaslicer_add_cmake_project(OpenVDB
|
orcaslicer_add_cmake_project(OpenVDB
|
||||||
# support vs2022, update to 8.2
|
# support vs2022, update to 8.2
|
||||||
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip
|
URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip
|
||||||
URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
|
URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
|
||||||
|
PATCH_COMMAND git apply ${OPENVDB_DIRECTORY_FLAG} --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-clang19.patch
|
||||||
DEPENDS dep_TBB dep_Blosc dep_OpenEXR dep_Boost
|
DEPENDS dep_TBB dep_Blosc dep_OpenEXR dep_Boost
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||||
|
|||||||
29
deps/PNG/0002-clang19-macos.patch
vendored
Normal file
29
deps/PNG/0002-clang19-macos.patch
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
--- a/pngpriv.h 2025-04-20 19:36:04.000000000
|
||||||
|
+++ b/pngpriv.h 2025-04-20 19:35:55.000000000
|
||||||
|
@@ -511,24 +511,14 @@
|
||||||
|
* DBL_DIG Maximum number of decimal digits (can be set to any constant)
|
||||||
|
* DBL_MIN Smallest normalized fp number (can be set to an arbitrary value)
|
||||||
|
* DBL_MAX Maximum floating point number (can be set to an arbitrary value)
|
||||||
|
*/
|
||||||
|
# include <float.h>
|
||||||
|
|
||||||
|
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
|
||||||
|
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
|
||||||
|
- /* We need to check that <math.h> hasn't already been included earlier
|
||||||
|
- * as it seems it doesn't agree with <fp.h>, yet we should really use
|
||||||
|
- * <fp.h> if possible.
|
||||||
|
- */
|
||||||
|
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
|
||||||
|
-# include <fp.h>
|
||||||
|
-# endif
|
||||||
|
-# else
|
||||||
|
-# include <math.h>
|
||||||
|
-# endif
|
||||||
|
+# include <math.h>
|
||||||
|
+
|
||||||
|
# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
|
||||||
|
/* Amiga SAS/C: We must include builtin FPU functions when compiling using
|
||||||
|
* MATH=68881
|
||||||
|
*/
|
||||||
|
# include <m68881.h>
|
||||||
|
# endif
|
||||||
4
deps/PNG/PNG.cmake
vendored
4
deps/PNG/PNG.cmake
vendored
@@ -12,7 +12,7 @@ if(APPLE AND IS_CROSS_COMPILE)
|
|||||||
GIT_TAG v1.6.35
|
GIT_TAG v1.6.35
|
||||||
DEPENDS ${ZLIB_PKG}
|
DEPENDS ${ZLIB_PKG}
|
||||||
PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df &&
|
PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df &&
|
||||||
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch
|
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DPNG_SHARED=OFF
|
-DPNG_SHARED=OFF
|
||||||
-DPNG_STATIC=ON
|
-DPNG_STATIC=ON
|
||||||
@@ -24,7 +24,7 @@ if(APPLE AND IS_CROSS_COMPILE)
|
|||||||
else ()
|
else ()
|
||||||
set(_patch_step "")
|
set(_patch_step "")
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch)
|
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch ${CMAKE_CURRENT_LIST_DIR}/0002-clang19-macos.patch)
|
||||||
endif ()
|
endif ()
|
||||||
orcaslicer_add_cmake_project(PNG
|
orcaslicer_add_cmake_project(PNG
|
||||||
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
# GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||||
|
|||||||
6
deps/Qhull/Qhull.cmake
vendored
6
deps/Qhull/Qhull.cmake
vendored
@@ -1,11 +1,11 @@
|
|||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
orcaslicer_add_cmake_project(Qhull
|
orcaslicer_add_cmake_project(Qhull
|
||||||
URL "https://github.com/qhull/qhull/archive/v8.0.1.zip"
|
URL "https://github.com/qhull/qhull/archive/v8.0.2.zip"
|
||||||
URL_HASH SHA256=5287f5edd6a0372588f5d6640799086a4033d89d19711023ef8229dd9301d69b
|
URL_HASH SHA256=a378e9a39e718e289102c20d45632f873bfdc58a7a5f924246ea4b176e185f1e
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DINCLUDE_INSTALL_DIR=${CMAKE_INSTALL_INCLUDEDIR}
|
-DINCLUDE_INSTALL_DIR=${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_debug_dep(dep_Qhull)
|
add_debug_dep(dep_Qhull)
|
||||||
endif ()
|
endif ()
|
||||||
|
|||||||
27
deps/Sparkle/Sparkle.cmake
vendored
Normal file
27
deps/Sparkle/Sparkle.cmake
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Sparkle 2 - Auto-update framework for macOS
|
||||||
|
# https://sparkle-project.org/
|
||||||
|
# https://github.com/sparkle-project/Sparkle
|
||||||
|
#
|
||||||
|
# Sparkle is distributed as a pre-built framework, so we just download and extract.
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
set(SPARKLE_VERSION "2.8.1")
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
dep_Sparkle
|
||||||
|
EXCLUDE_FROM_ALL ON
|
||||||
|
URL "https://github.com/sparkle-project/Sparkle/releases/download/${SPARKLE_VERSION}/Sparkle-${SPARKLE_VERSION}.tar.xz"
|
||||||
|
URL_HASH SHA256=5cddb7695674ef7704268f38eccaee80e3accbf19e61c1689efff5b6116d85be
|
||||||
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Sparkle
|
||||||
|
# No build step needed - just install pre-built framework and tools
|
||||||
|
CONFIGURE_COMMAND ""
|
||||||
|
BUILD_COMMAND ""
|
||||||
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DESTDIR}/Frameworks
|
||||||
|
# Use ditto to preserve symlinks in framework bundle (cmake -E copy_directory breaks symlinks)
|
||||||
|
COMMAND ditto <SOURCE_DIR>/Sparkle.framework ${DESTDIR}/Frameworks/Sparkle.framework
|
||||||
|
# Also install the Sparkle CLI tools (sign_update, generate_appcast) for CI/CD signing
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${DESTDIR}/bin
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/bin/sign_update ${DESTDIR}/bin/sign_update
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/bin/generate_appcast ${DESTDIR}/bin/generate_appcast
|
||||||
|
)
|
||||||
|
endif()
|
||||||
33
deps/TIFF/TIFF.cmake
vendored
33
deps/TIFF/TIFF.cmake
vendored
@@ -1,33 +0,0 @@
|
|||||||
find_package(OpenGL QUIET REQUIRED)
|
|
||||||
|
|
||||||
if (APPLE)
|
|
||||||
message(STATUS "Compiling TIFF for macos ${CMAKE_SYSTEM_VERSION}.")
|
|
||||||
orcaslicer_add_cmake_project(TIFF
|
|
||||||
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.3.0/libtiff-v4.3.0.zip
|
|
||||||
URL_HASH SHA256=4fca1b582c88319f3ad6ecd5b46320eadaf5eb4ef6f6c32d44caaae4a03d0726
|
|
||||||
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
|
|
||||||
CMAKE_ARGS
|
|
||||||
-Dlzma:BOOL=OFF
|
|
||||||
-Dwebp:BOOL=OFF
|
|
||||||
-Djbig:BOOL=OFF
|
|
||||||
-Dzstd:BOOL=OFF
|
|
||||||
-Dlibdeflate:BOOL=OFF
|
|
||||||
-Dpixarlog:BOOL=OFF
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
orcaslicer_add_cmake_project(TIFF
|
|
||||||
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
|
|
||||||
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
|
|
||||||
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
|
|
||||||
CMAKE_ARGS
|
|
||||||
-Dlzma:BOOL=OFF
|
|
||||||
-Dwebp:BOOL=OFF
|
|
||||||
-Djbig:BOOL=OFF
|
|
||||||
-Dzstd:BOOL=OFF
|
|
||||||
-Dpixarlog:BOOL=OFF
|
|
||||||
)
|
|
||||||
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
44755
deps/WebView2/include/WebView2.h
vendored
44755
deps/WebView2/include/WebView2.h
vendored
File diff suppressed because it is too large
Load Diff
414
deps/WebView2/include/WebView2EnvironmentOptions.h
vendored
414
deps/WebView2/include/WebView2EnvironmentOptions.h
vendored
@@ -5,11 +5,27 @@
|
|||||||
#ifndef __core_webview2_environment_options_h__
|
#ifndef __core_webview2_environment_options_h__
|
||||||
#define __core_webview2_environment_options_h__
|
#define __core_webview2_environment_options_h__
|
||||||
|
|
||||||
|
// Adding the definition of this macro to enable unsafe buffer usage
|
||||||
|
#ifndef UNSAFE_BUFFERS
|
||||||
|
#if defined(__clang__)
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
#define UNSAFE_BUFFERS(...) \
|
||||||
|
_Pragma("clang unsafe_buffer_usage begin") \
|
||||||
|
__VA_ARGS__ \
|
||||||
|
_Pragma("clang unsafe_buffer_usage end")
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define UNSAFE_BUFFERS(...) __VA_ARGS__
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <objbase.h>
|
#include <objbase.h>
|
||||||
#include <wrl/implements.h>
|
#include <wrl/implements.h>
|
||||||
|
|
||||||
#include "webview2.h"
|
#include "WebView2.h"
|
||||||
#define CORE_WEBVIEW_TARGET_PRODUCT_VERSION L"107.0.1418.22"
|
#define CORE_WEBVIEW_TARGET_PRODUCT_VERSION L"138.0.3351.48"
|
||||||
|
|
||||||
#define COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(p) \
|
#define COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(p) \
|
||||||
public: \
|
public: \
|
||||||
@@ -31,21 +47,180 @@
|
|||||||
protected: \
|
protected: \
|
||||||
AutoCoMemString m_##p;
|
AutoCoMemString m_##p;
|
||||||
|
|
||||||
#define COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(p) \
|
#define COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(p, defPVal) \
|
||||||
public: \
|
public: \
|
||||||
HRESULT STDMETHODCALLTYPE get_##p(BOOL* value) override { \
|
HRESULT STDMETHODCALLTYPE get_##p(BOOL* value) override { \
|
||||||
if (!value) \
|
if (!value) \
|
||||||
return E_POINTER; \
|
return E_POINTER; \
|
||||||
*value = m_##p; \
|
*value = m_##p; \
|
||||||
return S_OK; \
|
return S_OK; \
|
||||||
} \
|
} \
|
||||||
HRESULT STDMETHODCALLTYPE put_##p(BOOL value) override { \
|
HRESULT STDMETHODCALLTYPE put_##p(BOOL value) override { \
|
||||||
m_##p = value; \
|
m_##p = value; \
|
||||||
return S_OK; \
|
return S_OK; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
protected: \
|
protected: \
|
||||||
BOOL m_##p = FALSE;
|
BOOL m_##p = defPVal ? TRUE : FALSE;
|
||||||
|
|
||||||
|
#define DEFINE_AUTO_COMEM_STRING() \
|
||||||
|
protected: \
|
||||||
|
class AutoCoMemString { \
|
||||||
|
public: \
|
||||||
|
AutoCoMemString() {} \
|
||||||
|
~AutoCoMemString() { Release(); } \
|
||||||
|
void Release() { \
|
||||||
|
if (m_string) { \
|
||||||
|
deallocate_fn(m_string); \
|
||||||
|
m_string = nullptr; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
LPCWSTR Set(LPCWSTR str) { \
|
||||||
|
Release(); \
|
||||||
|
if (str) { \
|
||||||
|
m_string = MakeCoMemString(str); \
|
||||||
|
} \
|
||||||
|
return m_string; \
|
||||||
|
} \
|
||||||
|
LPCWSTR Get() { return m_string; } \
|
||||||
|
LPWSTR Copy() { \
|
||||||
|
if (m_string) \
|
||||||
|
return MakeCoMemString(m_string); \
|
||||||
|
return nullptr; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
protected: \
|
||||||
|
LPWSTR MakeCoMemString(LPCWSTR source) { \
|
||||||
|
const size_t length = wcslen(source); \
|
||||||
|
const size_t bytes = (length + 1) * sizeof(*source); \
|
||||||
|
\
|
||||||
|
if (bytes <= length) { \
|
||||||
|
return nullptr; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
wchar_t* result = reinterpret_cast<wchar_t*>(allocate_fn(bytes)); \
|
||||||
|
\
|
||||||
|
if (result) \
|
||||||
|
memcpy(result, source, bytes); \
|
||||||
|
return result; \
|
||||||
|
} \
|
||||||
|
LPWSTR m_string = nullptr; \
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename allocate_fn_t,
|
||||||
|
allocate_fn_t allocate_fn,
|
||||||
|
typename deallocate_fn_t,
|
||||||
|
deallocate_fn_t deallocate_fn>
|
||||||
|
class CoreWebView2CustomSchemeRegistrationBase
|
||||||
|
: public Microsoft::WRL::RuntimeClass<
|
||||||
|
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
|
||||||
|
ICoreWebView2CustomSchemeRegistration> {
|
||||||
|
public:
|
||||||
|
CoreWebView2CustomSchemeRegistrationBase(LPCWSTR schemeName) {
|
||||||
|
m_schemeName.Set(schemeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
CoreWebView2CustomSchemeRegistrationBase(
|
||||||
|
CoreWebView2CustomSchemeRegistrationBase&&) = default;
|
||||||
|
~CoreWebView2CustomSchemeRegistrationBase() { ReleaseAllowedOrigins(); }
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE get_SchemeName(LPWSTR* schemeName) override {
|
||||||
|
if (!schemeName)
|
||||||
|
return E_POINTER;
|
||||||
|
*schemeName = m_schemeName.Copy();
|
||||||
|
if ((*schemeName == nullptr) && (m_schemeName.Get() != nullptr))
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
GetAllowedOrigins(UINT32* allowedOriginsCount,
|
||||||
|
LPWSTR** allowedOrigins) override {
|
||||||
|
if (!allowedOrigins || !allowedOriginsCount) {
|
||||||
|
return E_POINTER;
|
||||||
|
}
|
||||||
|
*allowedOriginsCount = 0;
|
||||||
|
if (m_allowedOriginsCount == 0) {
|
||||||
|
*allowedOrigins = nullptr;
|
||||||
|
return S_OK;
|
||||||
|
} else {
|
||||||
|
*allowedOrigins = reinterpret_cast<LPWSTR*>(
|
||||||
|
allocate_fn(m_allowedOriginsCount * sizeof(LPWSTR)));
|
||||||
|
if (!(*allowedOrigins)) {
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
ZeroMemory(*allowedOrigins, m_allowedOriginsCount * sizeof(LPWSTR));
|
||||||
|
for (UINT32 i = 0; i < m_allowedOriginsCount; i++) {
|
||||||
|
UNSAFE_BUFFERS((*allowedOrigins)[i] = m_allowedOrigins[i].Copy();
|
||||||
|
if (!(*allowedOrigins)[i]) {
|
||||||
|
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
for (UINT32 j = 0; j < i; j++) {
|
||||||
|
deallocate_fn((*allowedOrigins)[j]);
|
||||||
|
}
|
||||||
|
deallocate_fn(*allowedOrigins);
|
||||||
|
return hr;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
*allowedOriginsCount = m_allowedOriginsCount;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
SetAllowedOrigins(UINT32 allowedOriginsCount,
|
||||||
|
LPCWSTR* allowedOrigins) override {
|
||||||
|
ReleaseAllowedOrigins();
|
||||||
|
if (allowedOriginsCount == 0) {
|
||||||
|
return S_OK;
|
||||||
|
} else {
|
||||||
|
m_allowedOrigins = new AutoCoMemString[allowedOriginsCount];
|
||||||
|
if (!m_allowedOrigins) {
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
for (UINT32 i = 0; i < allowedOriginsCount; i++) {
|
||||||
|
UNSAFE_BUFFERS(m_allowedOrigins[i].Set(allowedOrigins[i]);
|
||||||
|
if (!m_allowedOrigins[i].Get()) {
|
||||||
|
HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
for (UINT32 j = 0; j < i; j++) {
|
||||||
|
m_allowedOrigins[j].Release();
|
||||||
|
}
|
||||||
|
m_allowedOriginsCount = 0;
|
||||||
|
delete[] (m_allowedOrigins);
|
||||||
|
return hr;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
m_allowedOriginsCount = allowedOriginsCount;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
DEFINE_AUTO_COMEM_STRING()
|
||||||
|
|
||||||
|
void ReleaseAllowedOrigins() {
|
||||||
|
if (m_allowedOrigins) {
|
||||||
|
delete[] (m_allowedOrigins);
|
||||||
|
m_allowedOrigins = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AutoCoMemString m_schemeName;
|
||||||
|
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(TreatAsSecure, false)
|
||||||
|
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(HasAuthorityComponent, false)
|
||||||
|
|
||||||
|
// WebView2EnvironmentOptions.h this is a publicly exposed header to clients
|
||||||
|
// and it used by them to integrate the webview2 enviorment as published at
|
||||||
|
// https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2environmentoptions?view=webview2-1.0.3179.45
|
||||||
|
// This file is not included in msedge.dll/lib/exe and is limited to WebView2
|
||||||
|
// SDK which does not use partition alloc. So need to use raw_ptr_exclusion
|
||||||
|
// here.
|
||||||
|
#if defined(__has_attribute)
|
||||||
|
__attribute__((annotate("raw_ptr_exclusion")))
|
||||||
|
#endif
|
||||||
|
AutoCoMemString* m_allowedOrigins = nullptr;
|
||||||
|
unsigned int m_allowedOriginsCount = 0;
|
||||||
|
};
|
||||||
|
|
||||||
// This is a base COM class that implements ICoreWebView2EnvironmentOptions.
|
// This is a base COM class that implements ICoreWebView2EnvironmentOptions.
|
||||||
template <typename allocate_fn_t,
|
template <typename allocate_fn_t,
|
||||||
@@ -56,70 +231,183 @@ class CoreWebView2EnvironmentOptionsBase
|
|||||||
: public Microsoft::WRL::Implements<
|
: public Microsoft::WRL::Implements<
|
||||||
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
|
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
|
||||||
ICoreWebView2EnvironmentOptions,
|
ICoreWebView2EnvironmentOptions,
|
||||||
ICoreWebView2EnvironmentOptions2> {
|
ICoreWebView2EnvironmentOptions2,
|
||||||
|
ICoreWebView2EnvironmentOptions3,
|
||||||
|
ICoreWebView2EnvironmentOptions4,
|
||||||
|
ICoreWebView2EnvironmentOptions5,
|
||||||
|
ICoreWebView2EnvironmentOptions6,
|
||||||
|
ICoreWebView2EnvironmentOptions7,
|
||||||
|
ICoreWebView2EnvironmentOptions8> {
|
||||||
public:
|
public:
|
||||||
|
static const COREWEBVIEW2_RELEASE_CHANNELS kInternalChannel =
|
||||||
|
static_cast<COREWEBVIEW2_RELEASE_CHANNELS>(1 << 4);
|
||||||
|
static const COREWEBVIEW2_RELEASE_CHANNELS kAllChannels =
|
||||||
|
COREWEBVIEW2_RELEASE_CHANNELS_STABLE |
|
||||||
|
COREWEBVIEW2_RELEASE_CHANNELS_BETA | COREWEBVIEW2_RELEASE_CHANNELS_DEV |
|
||||||
|
COREWEBVIEW2_RELEASE_CHANNELS_CANARY | kInternalChannel;
|
||||||
|
|
||||||
CoreWebView2EnvironmentOptionsBase() {
|
CoreWebView2EnvironmentOptionsBase() {
|
||||||
// Initialize the target compatible browser version value to the version of
|
// Initialize the target compatible browser version value to the version
|
||||||
// the browser binaries corresponding to this version of the SDK.
|
// of the browser binaries corresponding to this version of the SDK.
|
||||||
m_TargetCompatibleBrowserVersion.Set(CORE_WEBVIEW_TARGET_PRODUCT_VERSION);
|
m_TargetCompatibleBrowserVersion.Set(CORE_WEBVIEW_TARGET_PRODUCT_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ICoreWebView2EnvironmentOptions7
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
get_ReleaseChannels(COREWEBVIEW2_RELEASE_CHANNELS* channels) override {
|
||||||
|
if (!channels) {
|
||||||
|
return E_POINTER;
|
||||||
|
}
|
||||||
|
*channels = m_releaseChannels;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
put_ReleaseChannels(COREWEBVIEW2_RELEASE_CHANNELS channels) override {
|
||||||
|
m_releaseChannels = channels;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
get_ChannelSearchKind(COREWEBVIEW2_CHANNEL_SEARCH_KIND* value) override {
|
||||||
|
if (!value) {
|
||||||
|
return E_POINTER;
|
||||||
|
}
|
||||||
|
*value = m_channelSearchKind;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
put_ChannelSearchKind(COREWEBVIEW2_CHANNEL_SEARCH_KIND value) override {
|
||||||
|
m_channelSearchKind = value;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ICoreWebView2EnvironmentOptions8
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
get_ScrollBarStyle(COREWEBVIEW2_SCROLLBAR_STYLE* style) override {
|
||||||
|
if (!style) {
|
||||||
|
return E_POINTER;
|
||||||
|
}
|
||||||
|
*style = m_scrollbarStyle;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE
|
||||||
|
put_ScrollBarStyle(COREWEBVIEW2_SCROLLBAR_STYLE style) override {
|
||||||
|
m_scrollbarStyle = style;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
~CoreWebView2EnvironmentOptionsBase() {}
|
~CoreWebView2EnvironmentOptionsBase() { ReleaseCustomSchemeRegistrations(); }
|
||||||
|
|
||||||
class AutoCoMemString {
|
void ReleaseCustomSchemeRegistrations() {
|
||||||
public:
|
if (m_customSchemeRegistrations) {
|
||||||
AutoCoMemString() {}
|
for (UINT32 i = 0; i < m_customSchemeRegistrationsCount; i++) {
|
||||||
~AutoCoMemString() { Release(); }
|
// SAFETY: Since we can't convert the raw buffer to safe type we do a
|
||||||
void Release() {
|
// bound check and use the macro to mitigate the error.
|
||||||
if (m_string) {
|
UNSAFE_BUFFERS(m_customSchemeRegistrations[i])->Release();
|
||||||
deallocate_fn(m_string);
|
|
||||||
m_string = nullptr;
|
|
||||||
}
|
}
|
||||||
|
deallocate_fn(m_customSchemeRegistrations);
|
||||||
|
m_customSchemeRegistrations = nullptr;
|
||||||
|
m_customSchemeRegistrationsCount = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LPCWSTR Set(LPCWSTR str) {
|
private:
|
||||||
Release();
|
// TODO(task.ms/56073082): Use raw_ptr.
|
||||||
if (str) {
|
#if defined(__has_attribute)
|
||||||
m_string = MakeCoMemString(str);
|
__attribute__((annotate("raw_ptr_exclusion")))
|
||||||
}
|
#endif
|
||||||
return m_string;
|
ICoreWebView2CustomSchemeRegistration** m_customSchemeRegistrations = nullptr;
|
||||||
}
|
unsigned int m_customSchemeRegistrationsCount = 0;
|
||||||
LPCWSTR Get() { return m_string; }
|
|
||||||
LPWSTR Copy() {
|
|
||||||
if (m_string)
|
|
||||||
return MakeCoMemString(m_string);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
COREWEBVIEW2_RELEASE_CHANNELS m_releaseChannels = kAllChannels;
|
||||||
LPWSTR MakeCoMemString(LPCWSTR source) {
|
COREWEBVIEW2_CHANNEL_SEARCH_KIND m_channelSearchKind =
|
||||||
const size_t length = wcslen(source);
|
COREWEBVIEW2_CHANNEL_SEARCH_KIND_MOST_STABLE;
|
||||||
const size_t bytes = (length + 1) * sizeof(*source);
|
|
||||||
// Ensure we didn't overflow during our size calculation.
|
|
||||||
if (bytes <= length) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
wchar_t* result = reinterpret_cast<wchar_t*>(allocate_fn(bytes));
|
// ICoreWebView2EnvironmentOptions8
|
||||||
if (result)
|
COREWEBVIEW2_SCROLLBAR_STYLE m_scrollbarStyle =
|
||||||
memcpy(result, source, bytes);
|
COREWEBVIEW2_SCROLLBAR_STYLE_DEFAULT;
|
||||||
|
|
||||||
return result;
|
DEFINE_AUTO_COMEM_STRING()
|
||||||
}
|
|
||||||
|
|
||||||
LPWSTR m_string = nullptr;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
public:
|
||||||
// ICoreWebView2EnvironmentOptions
|
// ICoreWebView2EnvironmentOptions
|
||||||
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(AdditionalBrowserArguments)
|
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(AdditionalBrowserArguments)
|
||||||
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(Language)
|
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(Language)
|
||||||
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(TargetCompatibleBrowserVersion)
|
COREWEBVIEW2ENVIRONMENTOPTIONS_STRING_PROPERTY(TargetCompatibleBrowserVersion)
|
||||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(
|
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(
|
||||||
AllowSingleSignOnUsingOSPrimaryAccount)
|
AllowSingleSignOnUsingOSPrimaryAccount,
|
||||||
|
false)
|
||||||
|
|
||||||
// ICoreWebView2EnvironmentOptions2
|
// ICoreWebView2EnvironmentOptions2
|
||||||
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(ExclusiveUserDataFolderAccess)
|
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(ExclusiveUserDataFolderAccess,
|
||||||
|
false)
|
||||||
|
|
||||||
|
// ICoreWebView2EnvironmentOptions3
|
||||||
|
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(IsCustomCrashReportingEnabled,
|
||||||
|
false)
|
||||||
|
|
||||||
|
// ICoreWebView2EnvironmentOptions4
|
||||||
|
public:
|
||||||
|
HRESULT STDMETHODCALLTYPE GetCustomSchemeRegistrations(
|
||||||
|
UINT32* count,
|
||||||
|
ICoreWebView2CustomSchemeRegistration*** schemeRegistrations) override {
|
||||||
|
if (!count || !schemeRegistrations) {
|
||||||
|
return E_POINTER;
|
||||||
|
}
|
||||||
|
*count = 0;
|
||||||
|
if (m_customSchemeRegistrationsCount == 0) {
|
||||||
|
*schemeRegistrations = nullptr;
|
||||||
|
return S_OK;
|
||||||
|
} else {
|
||||||
|
*schemeRegistrations =
|
||||||
|
reinterpret_cast<ICoreWebView2CustomSchemeRegistration**>(
|
||||||
|
allocate_fn(sizeof(ICoreWebView2CustomSchemeRegistration*) *
|
||||||
|
m_customSchemeRegistrationsCount));
|
||||||
|
if (!*schemeRegistrations) {
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
for (UINT32 i = 0; i < m_customSchemeRegistrationsCount; i++) {
|
||||||
|
// SAFETY: Since we can't convert the raw buffer to safe type we do a
|
||||||
|
// bound check and use the macro to mitigate the error.
|
||||||
|
UNSAFE_BUFFERS((*schemeRegistrations)[i] =
|
||||||
|
m_customSchemeRegistrations[i];
|
||||||
|
(*schemeRegistrations)[i]->AddRef();)
|
||||||
|
}
|
||||||
|
*count = m_customSchemeRegistrationsCount;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT STDMETHODCALLTYPE SetCustomSchemeRegistrations(
|
||||||
|
UINT32 count,
|
||||||
|
ICoreWebView2CustomSchemeRegistration** schemeRegistrations) override {
|
||||||
|
ReleaseCustomSchemeRegistrations();
|
||||||
|
m_customSchemeRegistrations =
|
||||||
|
reinterpret_cast<ICoreWebView2CustomSchemeRegistration**>(allocate_fn(
|
||||||
|
sizeof(ICoreWebView2CustomSchemeRegistration*) * count));
|
||||||
|
if (!m_customSchemeRegistrations) {
|
||||||
|
return GetLastError();
|
||||||
|
}
|
||||||
|
for (UINT32 i = 0; i < count; i++) {
|
||||||
|
// SAFETY: Since we can't convert the raw buffer to safe type we do a
|
||||||
|
// bound check and use the macro to mitigate the error.
|
||||||
|
UNSAFE_BUFFERS(m_customSchemeRegistrations[i] = schemeRegistrations[i];
|
||||||
|
m_customSchemeRegistrations[i]->AddRef());
|
||||||
|
}
|
||||||
|
m_customSchemeRegistrationsCount = count;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ICoreWebView2EnvironmentOptions5
|
||||||
|
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(EnableTrackingPrevention, true)
|
||||||
|
|
||||||
|
// ICoreWebView2EnvironmentOptions6
|
||||||
|
COREWEBVIEW2ENVIRONMENTOPTIONS_BOOL_PROPERTY(AreBrowserExtensionsEnabled,
|
||||||
|
false)
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename allocate_fn_t,
|
template <typename allocate_fn_t,
|
||||||
@@ -140,6 +428,12 @@ class CoreWebView2EnvironmentOptionsBaseClass
|
|||||||
~CoreWebView2EnvironmentOptionsBaseClass() override {}
|
~CoreWebView2EnvironmentOptionsBaseClass() override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef CoreWebView2CustomSchemeRegistrationBase<decltype(&::CoTaskMemAlloc),
|
||||||
|
::CoTaskMemAlloc,
|
||||||
|
decltype(&::CoTaskMemFree),
|
||||||
|
::CoTaskMemFree>
|
||||||
|
CoreWebView2CustomSchemeRegistration;
|
||||||
|
|
||||||
typedef CoreWebView2EnvironmentOptionsBaseClass<decltype(&::CoTaskMemAlloc),
|
typedef CoreWebView2EnvironmentOptionsBaseClass<decltype(&::CoTaskMemAlloc),
|
||||||
::CoTaskMemAlloc,
|
::CoTaskMemAlloc,
|
||||||
decltype(&::CoTaskMemFree),
|
decltype(&::CoTaskMemFree),
|
||||||
|
|||||||
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll
vendored
Normal file
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-arm64/WebView2Loader.dll.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-arm64/WebView2LoaderStatic.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-arm64/WebView2LoaderStatic.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll
vendored
Normal file
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x64/WebView2Loader.dll.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x64/WebView2LoaderStatic.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x64/WebView2LoaderStatic.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll
vendored
Normal file
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x86/WebView2Loader.dll.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win-x86/WebView2LoaderStatic.lib
vendored
Normal file
BIN
deps/WebView2/lib/win-x86/WebView2LoaderStatic.lib
vendored
Normal file
Binary file not shown.
BIN
deps/WebView2/lib/win32/WebView2Loader.dll
vendored
BIN
deps/WebView2/lib/win32/WebView2Loader.dll
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win32/WebView2Loader.dll.lib
vendored
BIN
deps/WebView2/lib/win32/WebView2Loader.dll.lib
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win32/WebView2LoaderStatic.lib
vendored
BIN
deps/WebView2/lib/win32/WebView2LoaderStatic.lib
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win64/WebView2Loader.dll
vendored
BIN
deps/WebView2/lib/win64/WebView2Loader.dll
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win64/WebView2Loader.dll.lib
vendored
BIN
deps/WebView2/lib/win64/WebView2Loader.dll.lib
vendored
Binary file not shown.
BIN
deps/WebView2/lib/win64/WebView2LoaderStatic.lib
vendored
BIN
deps/WebView2/lib/win64/WebView2LoaderStatic.lib
vendored
Binary file not shown.
33
deps/WinSparkle/WinSparkle.cmake
vendored
Normal file
33
deps/WinSparkle/WinSparkle.cmake
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# WinSparkle - Auto-update framework for Windows
|
||||||
|
# https://winsparkle.org/
|
||||||
|
# https://github.com/vslavik/winsparkle
|
||||||
|
#
|
||||||
|
# WinSparkle is distributed as pre-built binaries, so we just download and extract.
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set(WINSPARKLE_VERSION "0.8.3")
|
||||||
|
|
||||||
|
# Determine architecture
|
||||||
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
set(WINSPARKLE_ARCH "x64")
|
||||||
|
else()
|
||||||
|
set(WINSPARKLE_ARCH "x86")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
dep_WinSparkle
|
||||||
|
EXCLUDE_FROM_ALL ON
|
||||||
|
URL "https://github.com/vslavik/winsparkle/releases/download/v${WINSPARKLE_VERSION}/WinSparkle-${WINSPARKLE_VERSION}.zip"
|
||||||
|
URL_HASH SHA256=5ff4a4604c78d57e01d83e22f79f5ffea0c4969defd48b45c69ccbd6b1a71e94
|
||||||
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/WinSparkle
|
||||||
|
# No build step needed - just install pre-built binaries
|
||||||
|
CONFIGURE_COMMAND ""
|
||||||
|
BUILD_COMMAND ""
|
||||||
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
|
<SOURCE_DIR>/include ${DESTDIR}/include
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
|
<SOURCE_DIR>/${WINSPARKLE_ARCH}/Release/WinSparkle.dll ${DESTDIR}/bin/WinSparkle.dll
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
|
<SOURCE_DIR>/${WINSPARKLE_ARCH}/Release/WinSparkle.lib ${DESTDIR}/lib/WinSparkle.lib
|
||||||
|
)
|
||||||
|
endif()
|
||||||
23
deps/deps-windows.cmake
vendored
23
deps/deps-windows.cmake
vendored
@@ -19,6 +19,10 @@ elseif (MSVC_VERSION LESS 1950)
|
|||||||
# 1930-1949 = VS 17.0 (v143 toolset)
|
# 1930-1949 = VS 17.0 (v143 toolset)
|
||||||
set(DEP_VS_VER "17")
|
set(DEP_VS_VER "17")
|
||||||
set(DEP_BOOST_TOOLSET "msvc-14.3")
|
set(DEP_BOOST_TOOLSET "msvc-14.3")
|
||||||
|
elseif (MSVC_VERSION LESS 1960)
|
||||||
|
# 1950-1959 = VS 18.0 (v145 toolset)
|
||||||
|
set(DEP_VS_VER "18")
|
||||||
|
set(DEP_BOOST_TOOLSET "msvc-14.5")
|
||||||
else ()
|
else ()
|
||||||
message(FATAL_ERROR "Unsupported MSVC version")
|
message(FATAL_ERROR "Unsupported MSVC version")
|
||||||
endif ()
|
endif ()
|
||||||
@@ -27,16 +31,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|||||||
set(DEP_BOOST_TOOLSET "clang-win")
|
set(DEP_BOOST_TOOLSET "clang-win")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${DEPS_BITS} EQUAL 32)
|
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
|
||||||
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
|
if ("${DEPS_ARCH}" STREQUAL "x86")
|
||||||
set(DEP_PLATFORM "Win32")
|
set(DEP_PLATFORM "Win32")
|
||||||
else ()
|
elseif ("${DEPS_ARCH}" STREQUAL "x64")
|
||||||
if (DEP_VS_VER LESS 16)
|
|
||||||
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER} Win64")
|
|
||||||
else ()
|
|
||||||
set(DEP_MSVC_GEN "Visual Studio ${DEP_VS_VER}")
|
|
||||||
endif ()
|
|
||||||
set(DEP_PLATFORM "x64")
|
set(DEP_PLATFORM "x64")
|
||||||
|
else ()
|
||||||
|
message(FATAL_ERROR "Unsupported OS architecture")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (${DEP_DEBUG})
|
if (${DEP_DEBUG})
|
||||||
@@ -57,12 +58,14 @@ if (${DEP_DEBUG})
|
|||||||
endif ()
|
endif ()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
if (${DEPS_BITS} EQUAL 32)
|
if ("${DEPS_ARCH}" STREQUAL "x86")
|
||||||
set(DEP_WXWIDGETS_TARGET "")
|
set(DEP_WXWIDGETS_TARGET "")
|
||||||
set(DEP_WXWIDGETS_LIBDIR "vc_lib")
|
set(DEP_WXWIDGETS_LIBDIR "vc_lib")
|
||||||
else ()
|
elseif ("${DEPS_ARCH}" STREQUAL "x64")
|
||||||
set(DEP_WXWIDGETS_TARGET "TARGET_CPU=X64")
|
set(DEP_WXWIDGETS_TARGET "TARGET_CPU=X64")
|
||||||
set(DEP_WXWIDGETS_LIBDIR "vc_x64_lib")
|
set(DEP_WXWIDGETS_LIBDIR "vc_x64_lib")
|
||||||
|
else ()
|
||||||
|
message(FATAL_ERROR "Unsupported OS architecture")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
find_package(Git REQUIRED)
|
find_package(Git REQUIRED)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user