mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
685 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2fc648a76b | ||
|
|
6e139146e2 | ||
|
|
dde1208ca6 | ||
|
|
206b880a6e | ||
|
|
f5a4eedcac | ||
|
|
542c40850b | ||
|
|
de6100367e | ||
|
|
968855e2b9 | ||
|
|
6492ef8b0b | ||
|
|
aa0e79fa2a | ||
|
|
e0b6f0a07a | ||
|
|
9f17cbf77e | ||
|
|
030a1130fd | ||
|
|
3f3ba60965 | ||
|
|
1e7ca9455e | ||
|
|
5ce60ac368 | ||
|
|
4a355f43cb | ||
|
|
baf3c8d6fa | ||
|
|
68598349c6 | ||
|
|
b557e5e7ee | ||
|
|
858a1db459 | ||
|
|
2642b4f4cb | ||
|
|
be885bb6a6 | ||
|
|
b68719fb31 | ||
|
|
ee1bd6572a | ||
|
|
f60bbeaa15 | ||
|
|
f9738e27f3 | ||
|
|
b85d24ab7c | ||
|
|
fca86f7259 | ||
|
|
32a850c454 | ||
|
|
dd73fb44ab | ||
|
|
6daf6189e2 | ||
|
|
a6ac497c5e | ||
|
|
67ebfbbdcd | ||
|
|
2a0c458a14 | ||
|
|
08b2eea451 | ||
|
|
8786085d86 | ||
|
|
3c503a08ec | ||
|
|
93a3df396e | ||
|
|
4bec56e045 | ||
|
|
65b836163a | ||
|
|
006a07d362 | ||
|
|
fe7b2bb2ac | ||
|
|
cd739ddc2d | ||
|
|
afc164973f | ||
|
|
bd8dc70507 | ||
|
|
4ef348c312 | ||
|
|
fedf81f46e | ||
|
|
9459bcbae4 | ||
|
|
cce01587e7 | ||
|
|
ba1c7002cd | ||
|
|
984df586b6 | ||
|
|
db4f2b6fcd | ||
|
|
f119807a22 | ||
|
|
d20f61451d | ||
|
|
f1acdc7ce2 | ||
|
|
8378168fde | ||
|
|
3d12d964b1 | ||
|
|
570525ca77 | ||
|
|
d1f21ad8ab | ||
|
|
2d27e1f8ff | ||
|
|
62e05e893e | ||
|
|
bb7ef3c2f9 | ||
|
|
5c4119be39 | ||
|
|
a53882b4d0 | ||
|
|
5759404c2c | ||
|
|
ffae2894de | ||
|
|
a42051d3b9 | ||
|
|
7ab381415f | ||
|
|
42abbef629 | ||
|
|
9535756cea | ||
|
|
3ab932719d | ||
|
|
7c1e6e3224 | ||
|
|
fb70a6631c | ||
|
|
ca26b275b4 | ||
|
|
f94566a539 | ||
|
|
89848258dd | ||
|
|
2e4b8d4e95 | ||
|
|
6d9d078612 | ||
|
|
cb39031cc1 | ||
|
|
4f65335da5 | ||
|
|
fe6a92f934 | ||
|
|
74e10a81af | ||
|
|
4b0e759a3d | ||
|
|
fa19cf94c0 | ||
|
|
1329364b24 | ||
|
|
22e3025922 | ||
|
|
187a102a47 | ||
|
|
47eb715e76 | ||
|
|
397a4182b4 | ||
|
|
c7b876f56e | ||
|
|
00930c197a | ||
|
|
a20a31281d | ||
|
|
ab6b5b3c3e | ||
|
|
c1034dbc7d | ||
|
|
a9dd2dd469 | ||
|
|
abfd9f617b | ||
|
|
6501dcea09 | ||
|
|
b41db5be3c | ||
|
|
a7dbba8c5a | ||
|
|
b1a3d94baf | ||
|
|
060c9c1a2c | ||
|
|
ce863024f3 | ||
|
|
d53e56203f | ||
|
|
c0bf96b8eb | ||
|
|
0963abf32d | ||
|
|
9ed7f7b328 | ||
|
|
89cfc37856 | ||
|
|
02944650f9 | ||
|
|
989628dd93 | ||
|
|
a6227a0d1e | ||
|
|
926fc0616b | ||
|
|
d7a498f047 | ||
|
|
1215cb29b3 | ||
|
|
1e0fdf2eb8 | ||
|
|
8e97ffe1d3 | ||
|
|
891178a938 | ||
|
|
4e3dd4a9e3 | ||
|
|
1fe55b8963 | ||
|
|
4b599ac7b9 | ||
|
|
f46bf71175 | ||
|
|
e09c9e327d | ||
|
|
6fb50fc4a7 | ||
|
|
b7f4e0858b | ||
|
|
03bbb0c0da | ||
|
|
1d9af064f6 | ||
|
|
2858a48a90 | ||
|
|
fa69c859b9 | ||
|
|
6fba4ade3e | ||
|
|
05decce3ef | ||
|
|
c78e31d506 | ||
|
|
44374f5e5b | ||
|
|
75cb527ec2 | ||
|
|
0d9b2be673 | ||
|
|
579e8d86dc | ||
|
|
72f680aa3f | ||
|
|
011f81f2bf | ||
|
|
3a15ba32e6 | ||
|
|
cfd2fc0b3f | ||
|
|
4000f42935 | ||
|
|
317f3a57d2 | ||
|
|
26a14f1845 | ||
|
|
601c347a4c | ||
|
|
0f9f1c8fd3 | ||
|
|
db9f1c2441 | ||
|
|
6e8c6bb4ac | ||
|
|
4ad4726911 | ||
|
|
d58c355742 | ||
|
|
602106cfd8 | ||
|
|
d260d4f905 | ||
|
|
4eb0733670 | ||
|
|
d5ae3e5c9b | ||
|
|
01802edb3c | ||
|
|
5923c833db | ||
|
|
725ea4f977 | ||
|
|
169d9e2bd4 | ||
|
|
36229de2ae | ||
|
|
2a0e3db397 | ||
|
|
8585fc4a38 | ||
|
|
2efee46a59 | ||
|
|
4feee8c709 | ||
|
|
362f0f2c88 | ||
|
|
d9923faf46 | ||
|
|
331560bd33 | ||
|
|
bf3e1f7835 | ||
|
|
4ecc230be4 | ||
|
|
d3b2a1ca68 | ||
|
|
9364925d4b | ||
|
|
663686cd1a | ||
|
|
80f393f05a | ||
|
|
ffeeaec36b | ||
|
|
d25123f7c6 | ||
|
|
36c856d519 | ||
|
|
5444e62c66 | ||
|
|
ca468b48ff | ||
|
|
fb12c9fcf5 | ||
|
|
2f9e111b3c | ||
|
|
e8bfc4a345 | ||
|
|
8756cfcc86 | ||
|
|
9996681af3 | ||
|
|
20817256b9 | ||
|
|
61218b7063 | ||
|
|
cf693a3d67 | ||
|
|
20c9911908 | ||
|
|
09b22b4c22 | ||
|
|
4fb34c4223 | ||
|
|
f93f0893d3 | ||
|
|
2d2ada8fce | ||
|
|
6d5e4feb75 | ||
|
|
3aa52390b9 | ||
|
|
c145d12dee | ||
|
|
c7578b6b04 | ||
|
|
9c67c4ebd7 | ||
|
|
ba9bface25 | ||
|
|
f7ea95f0e5 | ||
|
|
c7f82c633a | ||
|
|
546c9b1c1d | ||
|
|
7eeb8833e2 | ||
|
|
ba84b5cd11 | ||
|
|
dbfe4ca571 | ||
|
|
c409d13222 | ||
|
|
27c38bd87c | ||
|
|
973a25f8b1 | ||
|
|
39b356a21c | ||
|
|
2426720d94 | ||
|
|
b076660580 | ||
|
|
87959001bb | ||
|
|
94d860b594 | ||
|
|
170604fbcc | ||
|
|
2d19aadff3 | ||
|
|
1a936b6d18 | ||
|
|
fded97e10d | ||
|
|
be43c5794f | ||
|
|
dc3bd252ed | ||
|
|
f07dcdf5a0 | ||
|
|
80fbbf52e9 | ||
|
|
7a9f5e9095 | ||
|
|
ef153d8acd | ||
|
|
0c14cf1e26 | ||
|
|
13b8d5923d | ||
|
|
5982d8fc66 | ||
|
|
8c0169a1b8 | ||
|
|
fb219bdfc3 | ||
|
|
a4a31abe9c | ||
|
|
e4ccefbfd8 | ||
|
|
cfcced201f | ||
|
|
7f739667b0 | ||
|
|
dfb6325a47 | ||
|
|
d45684a72e | ||
|
|
4c2b31b042 | ||
|
|
1930b5bf3f | ||
|
|
e58346d0eb | ||
|
|
263704a1c1 | ||
|
|
98a96ef1f7 | ||
|
|
c3203ad7b2 | ||
|
|
69d07e2400 | ||
|
|
3a8e676198 | ||
|
|
cbee744648 | ||
|
|
e302e31578 | ||
|
|
66901a1158 | ||
|
|
dea9b42671 | ||
|
|
87d7e3b3e6 | ||
|
|
8064d06753 | ||
|
|
19f7ce8ee6 | ||
|
|
69712afe82 | ||
|
|
2faebc7896 | ||
|
|
88d7775e2c | ||
|
|
c9c42fcff9 | ||
|
|
7dea31eee9 | ||
|
|
cda2246f4e | ||
|
|
cbd1e667bb | ||
|
|
321cf6838c | ||
|
|
bad532f91f | ||
|
|
0ad9cf660c | ||
|
|
219cef4346 | ||
|
|
1085b0934b | ||
|
|
3722f864bd | ||
|
|
206679a738 | ||
|
|
8fcd93a97e | ||
|
|
514878558d | ||
|
|
05ff287b2b | ||
|
|
a2848577ba | ||
|
|
2ec3835432 | ||
|
|
93cf36d495 | ||
|
|
6f64dba141 | ||
|
|
50558420a8 | ||
|
|
662c131cf6 | ||
|
|
65957d2cb9 | ||
|
|
00a7211dc6 | ||
|
|
1f6b0ec204 | ||
|
|
7c1fde32cb | ||
|
|
4ef86b9584 | ||
|
|
f1763b390f | ||
|
|
9ff1b8938e | ||
|
|
c0c5004fa0 | ||
|
|
00b859e7e6 | ||
|
|
a26112dfb6 | ||
|
|
9d6f299f9c | ||
|
|
5a2a61f462 | ||
|
|
f4c5c5c595 | ||
|
|
5ddd14b9de | ||
|
|
9c4dd51862 | ||
|
|
4d4fe5db74 | ||
|
|
32dbdb29bc | ||
|
|
7eafbcca2e | ||
|
|
aee0aacc6d | ||
|
|
6ad9a51833 | ||
|
|
73a15750e5 | ||
|
|
d627fb8d30 | ||
|
|
1a9b633690 | ||
|
|
e5cbfb8d63 | ||
|
|
c0859a6027 | ||
|
|
951c5d53ab | ||
|
|
f7dc40c239 | ||
|
|
1df18c5b4d | ||
|
|
405c39f60c | ||
|
|
488d1c2768 | ||
|
|
ef0e06c54c | ||
|
|
fcb6cdf20d | ||
|
|
6cba6b53a6 | ||
|
|
d9b92b885b | ||
|
|
3d6973a0fe | ||
|
|
106d79fabe | ||
|
|
7c55e0b563 | ||
|
|
025aeab3f2 | ||
|
|
b12be93217 | ||
|
|
20d72172fb | ||
|
|
33b8fa692a | ||
|
|
d61a409ad4 | ||
|
|
432b882c76 | ||
|
|
5c4544d0f5 | ||
|
|
17a605ff60 | ||
|
|
859ab7acf6 | ||
|
|
e947ab847b | ||
|
|
b57a6b97ea | ||
|
|
91cfa51c62 | ||
|
|
3d12c275d8 | ||
|
|
9ed05db2ba | ||
|
|
cac0b9edc0 | ||
|
|
7cce661ccb | ||
|
|
b1549d5830 | ||
|
|
eccfda73a5 | ||
|
|
e2026a89a9 | ||
|
|
bf348a3414 | ||
|
|
220656b630 | ||
|
|
2a6867a57e | ||
|
|
d4d5e7fe66 | ||
|
|
de0d226415 | ||
|
|
9f5db8632a | ||
|
|
366680f96f | ||
|
|
812e8d0c82 | ||
|
|
c1132f03b1 | ||
|
|
93db1a9306 | ||
|
|
1e535f9bc1 | ||
|
|
d56b95f5d9 | ||
|
|
2d8750b0f9 | ||
|
|
9b939f525d | ||
|
|
5cc87f5668 | ||
|
|
97a2c64941 | ||
|
|
d28c4d1a6b | ||
|
|
a1d11f1f75 | ||
|
|
657f586557 | ||
|
|
f5f9d05547 | ||
|
|
2298ecddd8 | ||
|
|
422292e653 | ||
|
|
4223bc9872 | ||
|
|
ec34b03ea2 | ||
|
|
653bc14d6b | ||
|
|
d9c5262b44 | ||
|
|
ffa8de08da | ||
|
|
fbca528383 | ||
|
|
80131787fa | ||
|
|
36f69520ec | ||
|
|
9b7294433b | ||
|
|
1ccc00116f | ||
|
|
54fb7d1177 | ||
|
|
2d90ca3005 | ||
|
|
60529eca6b | ||
|
|
2030ed65cc | ||
|
|
0ed19bc976 | ||
|
|
474ca09872 | ||
|
|
37853a9867 | ||
|
|
5ab13b678c | ||
|
|
dd885d0348 | ||
|
|
9e86ba8cba | ||
|
|
9f298e2892 | ||
|
|
e6de58e71a | ||
|
|
133e689af8 | ||
|
|
58e773dca3 | ||
|
|
1c96485967 | ||
|
|
8c93bf9991 | ||
|
|
e368a86aa3 | ||
|
|
6aaed182b7 | ||
|
|
1ed35d8b49 | ||
|
|
4ee20e8c71 | ||
|
|
d8e056fbb1 | ||
|
|
01a56ed60c | ||
|
|
a686a4cc5b | ||
|
|
d61953b7fc | ||
|
|
37abf07b99 | ||
|
|
38a05b657d | ||
|
|
d9713afba3 | ||
|
|
2834222618 | ||
|
|
b63392ba6a | ||
|
|
2871239554 | ||
|
|
2ed3513f7e | ||
|
|
7a434a2c91 | ||
|
|
cdeb155e32 | ||
|
|
0f60b32360 | ||
|
|
a2b656ba03 | ||
|
|
5d65364754 | ||
|
|
d8f59d0038 | ||
|
|
f7baa8b0e7 | ||
|
|
921b2946bb | ||
|
|
3dd3941fbf | ||
|
|
e9d16a9dbc | ||
|
|
0bb3bf0c56 | ||
|
|
55c6872f3b | ||
|
|
c35e290e1c | ||
|
|
ef501be8e5 | ||
|
|
f04b32f040 | ||
|
|
eeefc316a0 | ||
|
|
60c40f4d0c | ||
|
|
d072beaa19 | ||
|
|
af4b0042ca | ||
|
|
3955e904d4 | ||
|
|
bfc346f149 | ||
|
|
988d870c83 | ||
|
|
93d79e7d9d | ||
|
|
3750ea87c6 | ||
|
|
f8386021bb | ||
|
|
e09c42d24c | ||
|
|
6d6746e8ad | ||
|
|
34eab52f30 | ||
|
|
513d97c004 | ||
|
|
527d728074 | ||
|
|
f3384ea0ad | ||
|
|
221873110f | ||
|
|
8fc8625139 | ||
|
|
7dc9988eea | ||
|
|
f99192fff6 | ||
|
|
3a3b17a16d | ||
|
|
2763b466ce | ||
|
|
8facb7e50e | ||
|
|
3b96ed1437 | ||
|
|
da06747af0 | ||
|
|
03fa15a7f8 | ||
|
|
91bc83a17d | ||
|
|
93b2a23a84 | ||
|
|
8ff5bfcc6c | ||
|
|
1682779e92 | ||
|
|
a5645234f5 | ||
|
|
d4709b5edf | ||
|
|
3d13fd83ef | ||
|
|
49d922389f | ||
|
|
3b95ec7fa7 | ||
|
|
d7df47c3a4 | ||
|
|
41e3b2d752 | ||
|
|
a75e9c5497 | ||
|
|
8da488ea5f | ||
|
|
969eca503d | ||
|
|
6d103ebdc5 | ||
|
|
30b905bac9 | ||
|
|
68542939ab | ||
|
|
a70d2aa5d6 | ||
|
|
41a9ce1662 | ||
|
|
c0c554cd63 | ||
|
|
90431b1d5b | ||
|
|
7f1ca28dee | ||
|
|
29b19e4290 | ||
|
|
c43c9e6b2d | ||
|
|
cd39767d3f | ||
|
|
ec7ae37870 | ||
|
|
8dd929ba80 | ||
|
|
0a2942fe14 | ||
|
|
e44c5bdd4b | ||
|
|
a8f62abc84 | ||
|
|
2008930ca1 | ||
|
|
ee028a33dc | ||
|
|
8cc2c7a954 | ||
|
|
1735267fcf | ||
|
|
b650ab5c09 | ||
|
|
631763943d | ||
|
|
1b3c5057a5 | ||
|
|
fea12c2024 | ||
|
|
036eb04fa3 | ||
|
|
e08546b1b0 | ||
|
|
03c6b2529a | ||
|
|
c6e503287c | ||
|
|
fd47595761 | ||
|
|
2ce16e27b8 | ||
|
|
b134d64482 | ||
|
|
e19b68ee83 | ||
|
|
1e3ca35c53 | ||
|
|
170b2b1a3b | ||
|
|
149932996e | ||
|
|
9cc3272a45 | ||
|
|
65e8f13b14 | ||
|
|
e985e81bb5 | ||
|
|
9bdb99b3d4 | ||
|
|
6538e24517 | ||
|
|
bf4f876d1f | ||
|
|
499c81676d | ||
|
|
18a3e1fbd3 | ||
|
|
552464990f | ||
|
|
e81db6b331 | ||
|
|
4e84fa67cc | ||
|
|
476cdc0ef5 | ||
|
|
c4349acf19 | ||
|
|
454cd85c2f | ||
|
|
d04082cbd5 | ||
|
|
933ddc791b | ||
|
|
d0cea9f806 | ||
|
|
22265d521c | ||
|
|
69dbf3230d | ||
|
|
924977e809 | ||
|
|
63616ef5b4 | ||
|
|
33ab675bec | ||
|
|
2d77ddcd99 | ||
|
|
2059d063e1 | ||
|
|
09fa63daba | ||
|
|
d42d70e37b | ||
|
|
2e8fe15944 | ||
|
|
d646d98ec3 | ||
|
|
776a39224e | ||
|
|
faa855e465 | ||
|
|
0fe32e7d78 | ||
|
|
19ca464412 | ||
|
|
eecdd40110 | ||
|
|
88346815ec | ||
|
|
910faa4c01 | ||
|
|
788329893d | ||
|
|
74833bbbb7 | ||
|
|
941f8d40bb | ||
|
|
24f7d21f90 | ||
|
|
588c727598 | ||
|
|
3985b2dd23 | ||
|
|
b2581671d0 | ||
|
|
cec46a4fb5 | ||
|
|
b3ab80e817 | ||
|
|
68f09e7534 | ||
|
|
458eb39d3a | ||
|
|
feabd4f63b | ||
|
|
b76fb8f060 | ||
|
|
7748054f12 | ||
|
|
db2e729811 | ||
|
|
d5ef4dc928 | ||
|
|
d5e41936e0 | ||
|
|
86065df3be | ||
|
|
2aa3c2ef1b | ||
|
|
48d500999f | ||
|
|
ac4096cd2d | ||
|
|
5dd71d483f | ||
|
|
fa274e9c98 | ||
|
|
358e2a2176 | ||
|
|
9687680cde | ||
|
|
0f3fc524e8 | ||
|
|
e48bd0eff5 | ||
|
|
bab193c33f | ||
|
|
312105443d | ||
|
|
7de5804b74 | ||
|
|
6dadb21a65 | ||
|
|
da089adbbb | ||
|
|
ac84a351b9 | ||
|
|
85df4e90a3 | ||
|
|
6cea4d65db | ||
|
|
836ebe8b96 | ||
|
|
3a1fbc1097 | ||
|
|
434bd98e7b | ||
|
|
802d954c0e | ||
|
|
3eb6461177 | ||
|
|
c3092b9e56 | ||
|
|
d79d003d2d | ||
|
|
ab057000b5 | ||
|
|
d62f367059 | ||
|
|
ca5c821790 | ||
|
|
67a26e96b0 | ||
|
|
b8d54c996d | ||
|
|
cd4963e417 | ||
|
|
ad447cb436 | ||
|
|
1b38078cc3 | ||
|
|
5cbf4b628f | ||
|
|
71e74152c0 | ||
|
|
f5c5932aa7 | ||
|
|
1ef73829a5 | ||
|
|
a8129b5a97 | ||
|
|
a121a54ab4 | ||
|
|
d1a0a796cd | ||
|
|
41ff317df9 | ||
|
|
d90a7d7e46 | ||
|
|
eb5a36ff84 | ||
|
|
34575deeb9 | ||
|
|
3a4c9fe390 | ||
|
|
dfbddfddd0 | ||
|
|
c1e2a03d2a | ||
|
|
19550d23fe | ||
|
|
a90b4ac0ae | ||
|
|
cfe9170f5a | ||
|
|
26a2822ec1 | ||
|
|
1fa3766e3a | ||
|
|
f4eff5d616 | ||
|
|
6d6ddda85e | ||
|
|
6312298b60 | ||
|
|
302d631530 | ||
|
|
59aef8148b | ||
|
|
a0522352d1 | ||
|
|
279e853d65 | ||
|
|
33cd353f2f | ||
|
|
80696f7a1c | ||
|
|
65eba95bf0 | ||
|
|
8eaf8fd711 | ||
|
|
4f365ca641 | ||
|
|
8a4da13cde | ||
|
|
19afe0804e | ||
|
|
bccd2183f3 | ||
|
|
e1b549085b | ||
|
|
055384bec5 | ||
|
|
cde8475f82 | ||
|
|
b62fed0755 | ||
|
|
cc66648c15 | ||
|
|
a7b21abcfa | ||
|
|
eb2d020662 | ||
|
|
3982ace660 | ||
|
|
ded08c83c2 | ||
|
|
044fcda3ca | ||
|
|
305c902eea | ||
|
|
751854c996 | ||
|
|
e95c15fdfa | ||
|
|
2e3081a930 | ||
|
|
8132f7219d | ||
|
|
64061c6b82 | ||
|
|
69784bc2e1 | ||
|
|
d6f3fb1d7e | ||
|
|
3f3017080e | ||
|
|
0fc1236132 | ||
|
|
f7384b0a07 | ||
|
|
c00db0142d | ||
|
|
fcc27c2ca9 | ||
|
|
9819eb2882 | ||
|
|
6ce5b754da | ||
|
|
a99d8579d1 | ||
|
|
f5f1619ba7 | ||
|
|
758206ee30 | ||
|
|
534fa64a0b | ||
|
|
f37dc3d814 | ||
|
|
9e1de0e501 | ||
|
|
f2ec932807 | ||
|
|
0c00ae5426 | ||
|
|
87bc6673c3 | ||
|
|
3a276dff8d | ||
|
|
12e058d361 | ||
|
|
43f444123c | ||
|
|
e8c09095cb | ||
|
|
e4827031e2 | ||
|
|
467d83c7df | ||
|
|
15d8783066 | ||
|
|
be4cd20415 | ||
|
|
3e8842de3a | ||
|
|
6ea82b7755 | ||
|
|
086a9ac6d6 | ||
|
|
afab2210c7 | ||
|
|
1ddb223c32 | ||
|
|
941623cef0 | ||
|
|
457293502c | ||
|
|
29cf662774 | ||
|
|
a33429b300 | ||
|
|
7c8944fa4c | ||
|
|
fcdcdc6b9b | ||
|
|
9d8a561ea7 | ||
|
|
8d98e515e6 | ||
|
|
d71b47452f | ||
|
|
88137084a2 | ||
|
|
c2e22a68c8 | ||
|
|
81ad9e3cc1 | ||
|
|
fecd874527 | ||
|
|
a0a15e8fe1 | ||
|
|
3d2acf64d8 | ||
|
|
6076e94851 | ||
|
|
7de58acafd | ||
|
|
f1a0c4161e | ||
|
|
4b529fc0e8 | ||
|
|
9c3e78edee | ||
|
|
6c3dc1c14d | ||
|
|
60c621b33d | ||
|
|
29ccce7adc | ||
|
|
e9e4610181 | ||
|
|
4d318a2eb3 | ||
|
|
7f659b671d | ||
|
|
f07aedb38a | ||
|
|
61cb0dcb66 | ||
|
|
2a9a08e26d | ||
|
|
b3f49fad47 | ||
|
|
5a0e921c70 | ||
|
|
5bc7ac7955 | ||
|
|
4249089523 | ||
|
|
507105941c | ||
|
|
203000a859 | ||
|
|
c94e1b77b5 | ||
|
|
2de641bb52 | ||
|
|
9a35e85b8c | ||
|
|
70c39c72b0 | ||
|
|
b3774fbecf | ||
|
|
d0bb5fc077 | ||
|
|
f819afaa4f | ||
|
|
62cd1c76b7 |
2
config/docker/changelog.txt
Normal file
2
config/docker/changelog.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
100
|
||||
- Initial addon
|
||||
45
config/docker/package.mk
Normal file
45
config/docker/package.mk
Normal file
@@ -0,0 +1,45 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="@NAME@"
|
||||
PKG_VERSION="@VERSION@" # Update bin/docker.@NAME@ accordingly
|
||||
PKG_REV="100"
|
||||
PKG_ARCH="@ARCH@"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="docker"
|
||||
PKG_SITE=""
|
||||
PKG_SHORTDESC=""
|
||||
PKG_LONGDESC=""
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME=" (@IMAGE@:$PKG_VERSION)"
|
||||
PKG_ADDON_PROJECTS="@PROJECTS@"
|
||||
PKG_ADDON_REQUIRES="service.system.docker:0.0.0"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
|
||||
make_target() {
|
||||
: #
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: #
|
||||
}
|
||||
|
||||
addon() {
|
||||
: #
|
||||
}
|
||||
25
config/docker/source/bin/docker
Normal file
25
config/docker/source/bin/docker
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
name="$(basename $0)"
|
||||
. /etc/profile
|
||||
oe_setup_addon "$name"
|
||||
|
||||
docker rm "$name" 2>/dev/null
|
||||
docker run --name="$name" \
|
||||
35
config/docker/source/default.py
Normal file
35
config/docker/source/default.py
Normal file
@@ -0,0 +1,35 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import subprocess
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
xbmc.Monitor.__init__(self)
|
||||
self.id = xbmcaddon.Addon().getAddonInfo('id')
|
||||
|
||||
def onSettingsChanged(self):
|
||||
subprocess.call(['systemctl', 'restart', self.id])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
Monitor().waitForAbort()
|
||||
10
config/docker/source/resources/language/English/strings.po
Normal file
10
config/docker/source/resources/language/English/strings.po
Normal file
@@ -0,0 +1,10 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30000"
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30001"
|
||||
msgid "Note: Kodi remote sources can not be used as Docker volume host sources"
|
||||
msgstr ""
|
||||
6
config/docker/source/resources/settings.xml
Normal file
6
config/docker/source/resources/settings.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
<category label="30000">
|
||||
<setting label="30001" type="lsep" />
|
||||
@SETTINGS@ </category>
|
||||
</settings>
|
||||
14
config/docker/source/system.d/docker.service
Normal file
14
config/docker/source/system.d/docker.service
Normal file
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=%p container
|
||||
Requires=service.system.docker.service
|
||||
After=service.system.docker.service
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
RestartSec=10s
|
||||
TimeoutStartSec=0
|
||||
ExecStart=/bin/sh /storage/.kodi/addons/%p/bin/%p
|
||||
ExecStop=/storage/.kodi/addons/service.system.docker/bin/docker kill %p
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -83,14 +83,14 @@ setup_toolchain() {
|
||||
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)" >> $CMAKE_CONF
|
||||
echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)" >> $CMAKE_CONF
|
||||
fi
|
||||
export HOST_CC="$HOST_CC"
|
||||
export HOST_CXX="$HOST_CXX"
|
||||
export HOSTCC="$HOST_CC"
|
||||
export HOSTCXX="$HOST_CXX"
|
||||
export CC_FOR_BUILD="$HOST_CC"
|
||||
export CXX_FOR_BUILD="$HOST_CXX"
|
||||
export BUILD_CC="$HOST_CC"
|
||||
export BUILD_CXX="$HOST_CXX"
|
||||
export HOST_CC="$CC"
|
||||
export HOST_CXX="$CXX"
|
||||
export HOSTCC="$CC"
|
||||
export HOSTCXX="$CXX"
|
||||
export CC_FOR_BUILD="$CC"
|
||||
export CXX_FOR_BUILD="$CXX"
|
||||
export BUILD_CC="$CC"
|
||||
export BUILD_CXX="$CXX"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -117,7 +117,7 @@ kernel_version() {
|
||||
|
||||
# get kernel module dir
|
||||
get_module_dir() {
|
||||
basename $(ls -d $(get_build_dir linux)/.install_pkg/lib/modules/*)
|
||||
basename $(ls -d $(get_build_dir linux)/.install_pkg/usr/lib/modules/*)
|
||||
}
|
||||
|
||||
# get package's build dir
|
||||
@@ -288,28 +288,47 @@ dashes="==========================="
|
||||
|
||||
check_config() {
|
||||
dashes="==========================="
|
||||
if [ ! -d $PROJECT_DIR/$PROJECT -a ! -d $HOME/.libreelec/projects/$PROJECT ]; then
|
||||
if [ ! -d $PROJECT_DIR/$PROJECT ]; then
|
||||
check_project="$check_project\n $dashes$dashes$dashes"
|
||||
check_project="$check_project\n ERROR: Project not found, use a valid project or create a new config"
|
||||
check_project="$check_project\n $dashes$dashes$dashes"
|
||||
check_project="$check_project\n\n Valid projects:"
|
||||
|
||||
for projects in $PROJECT_DIR/* $HOME/.libreelec/projects/*; do
|
||||
for projects in $PROJECT_DIR/*; do
|
||||
check_project="$check_project\n - $(basename $projects)"
|
||||
done
|
||||
echo -e $check_project
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf ] &&
|
||||
! ls $PROJECT_DIR/$PROJECT/linux/*/linux.$TARGET_ARCH.conf &>/dev/null; then
|
||||
if [ \( -z "$DEVICE" -a -d "$PROJECT_DIR/$PROJECT/devices" \) -o \( -n "$DEVICE" -a ! -d "$PROJECT_DIR/$PROJECT/devices/$DEVICE" \) ]; then
|
||||
check_device="$check_device\n $dashes$dashes$dashes"
|
||||
check_device="$check_device\n ERROR: You need to specify a valid device for the $PROJECT project"
|
||||
check_device="$check_device\n $dashes$dashes$dashes"
|
||||
check_device="$check_device\n\n Valid devices for project: $PROJECT"
|
||||
|
||||
for device in $PROJECT_DIR/$PROJECT/devices/*; do
|
||||
check_device="$check_device\n - $(basename $device)"
|
||||
done
|
||||
echo -e $check_device
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d $PROJECT_DIR/$PROJECT/devices/$DEVICE/linux ]; then
|
||||
linux_config_dir="$PROJECT_DIR/$PROJECT/devices/$DEVICE/linux"
|
||||
else
|
||||
linux_config_dir="$PROJECT_DIR/$PROJECT/linux"
|
||||
fi
|
||||
|
||||
if [ ! -f $linux_config_dir/linux.$TARGET_ARCH.conf ] &&
|
||||
! ls $linux_config_dir/*/linux.$TARGET_ARCH.conf &>/dev/null; then
|
||||
check_arch="$check_arch\n $dashes$dashes$dashes"
|
||||
check_arch="$check_arch\n ERROR: Architecture not found, use a valid Architecture"
|
||||
check_arch="$check_arch\n for your project or create a new config"
|
||||
check_arch="$check_arch\n $dashes$dashes$dashes"
|
||||
check_arch="$check_arch\n\n Valid Architectures for your project: $PROJECT"
|
||||
|
||||
for arch in $PROJECT_DIR/$PROJECT/linux/*.conf $PROJECT_DIR/$PROJECT/linux/*/linux.$TARGET_ARCH.conf; do
|
||||
for arch in $linux_config_dir/*.conf $linux_config_dir/*/linux.$TARGET_ARCH.conf; do
|
||||
check_arch="$check_arch\n - $(basename $arch | cut -f2 -d".")"
|
||||
done
|
||||
echo -e $check_arch
|
||||
@@ -335,7 +354,6 @@ show_config() {
|
||||
config_message="$config_message\n - FLOAT:\t\t\t\t $TARGET_FLOAT"
|
||||
config_message="$config_message\n - FPU:\t\t\t\t\t $TARGET_FPU"
|
||||
config_message="$config_message\n - SIMD support:\t\t\t $SIMD_SUPPORT"
|
||||
config_message="$config_message\n - Optimizations:\t\t\t $OPTIMIZATIONS"
|
||||
config_message="$config_message\n - LTO (Link Time Optimization) support: $LTO_SUPPORT"
|
||||
config_message="$config_message\n - GOLD (Google Linker) Support:\t $GOLD_SUPPORT"
|
||||
config_message="$config_message\n - LLVM support:\t\t\t $LLVM_SUPPORT"
|
||||
|
||||
@@ -70,11 +70,6 @@ get_graphicdrivers() {
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "virtualbox" ]; then
|
||||
DRI_DRIVERS="$DRI_DRIVERS,swrast"
|
||||
XORG_DRIVERS="$XORG_DRIVERS virtualbox"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "vmware" ]; then
|
||||
DRI_DRIVERS="$DRI_DRIVERS,swrast"
|
||||
GALLIUM_DRIVERS="$GALLIUM_DRIVERS,svga"
|
||||
|
||||
@@ -28,7 +28,7 @@ fi
|
||||
ROOT=`pwd`
|
||||
DISTRO_DIR="$ROOT/distributions"
|
||||
PROJECT_DIR="$ROOT/projects"
|
||||
LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $ROOT/packages/linux/package.mk"
|
||||
LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $PROJECT_DIR/$PROJECT/devices/$DEVICE/linux/linux.$TARGET_ARCH.conf $ROOT/packages/linux/package.mk"
|
||||
[ "$TARGET_ARCH" = "x86_64" ] && LINUX_DEPENDS+=" $ROOT/packages/linux-firmware/intel-ucode/package.mk $ROOT/packages/linux-firmware/x86-firmware/package.mk"
|
||||
|
||||
# include versioning
|
||||
@@ -49,6 +49,11 @@ LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $ROOT/package
|
||||
. $PROJECT_DIR/$PROJECT/options
|
||||
fi
|
||||
|
||||
# read board options if available
|
||||
if [ -f "$PROJECT_DIR/$PROJECT/devices/$DEVICE/options" ]; then
|
||||
. $PROJECT_DIR/$PROJECT/devices/$DEVICE/options
|
||||
fi
|
||||
|
||||
# Need to point to your actual cc
|
||||
# If you have ccache installed, take care that LOCAL_CC don't point to it
|
||||
LOCAL_CC=`which gcc`
|
||||
@@ -84,14 +89,6 @@ fi
|
||||
if [ -f "$HOME/.libreelec/options" ]; then
|
||||
. $HOME/.libreelec/options
|
||||
fi
|
||||
if [ -f "$HOME/.libreelec/projects/$PROJECT/options" ]; then
|
||||
. $HOME/.libreelec/projects/$PROJECT/options
|
||||
fi
|
||||
|
||||
# read distro options from $HOME if available
|
||||
if [ -f "$HOME/.libreelec/options.$DISTRO" ]; then
|
||||
. $HOME/.libreelec/options.$DISTRO
|
||||
fi
|
||||
|
||||
# install devtools on development builds
|
||||
if [ -z "$DEVTOOLS" -a "$LIBREELEC_VERSION" = "devel" ]; then
|
||||
|
||||
18
config/path
18
config/path
@@ -19,9 +19,16 @@ set -e
|
||||
HOST_NAME=`$LOCAL_CC -dumpmachine`
|
||||
TARGET_NAME=$TARGET_GCC_ARCH-libreelec-linux-gnu${TARGET_ABI}
|
||||
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$LIBREELEC_VERSION
|
||||
if [ "$LIBREELEC_VERSION" = "devel" ] ; then
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$OS_VERSION-$LIBREELEC_VERSION
|
||||
if [ -n "$DEVICE" ]; then
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$DEVICE.$TARGET_ARCH-$LIBREELEC_VERSION
|
||||
if [ "$LIBREELEC_VERSION" = "devel" ] ; then
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$DEVICE.$TARGET_ARCH-$OS_VERSION-$LIBREELEC_VERSION
|
||||
fi
|
||||
else
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$LIBREELEC_VERSION
|
||||
if [ "$LIBREELEC_VERSION" = "devel" ] ; then
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$OS_VERSION-$LIBREELEC_VERSION
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$BUILD_SUFFIX" ]; then
|
||||
@@ -71,6 +78,7 @@ SED="sed -i"
|
||||
PKG_SHORTDESC="$1 (autogenerated)"
|
||||
PKG_LONGDESC=""
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_PATCH_DIRS=""
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
_PKG_ROOT_NAME=${1%:*}
|
||||
@@ -179,7 +187,11 @@ XORG_PATH_DRIVERS=/usr/lib/xorg/modules/drivers
|
||||
. config/optimize
|
||||
|
||||
if [ -z "$CCACHE_DIR" ]; then
|
||||
if [ -n "$DEVICE" ]; then
|
||||
export CCACHE_DIR=$ROOT/.ccache/$PROJECT.$DEVICE.$TARGET_ARCH-$OS_VERSION
|
||||
else
|
||||
export CCACHE_DIR=$ROOT/.ccache/$PROJECT.$TARGET_ARCH-$OS_VERSION
|
||||
fi
|
||||
fi
|
||||
export MAKEFLAGS=-j$CONCURRENCY_MAKE_LEVEL
|
||||
export PKG_CONFIG=$ROOT/$TOOLCHAIN/bin/pkg-config
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
OS_VERSION="8.0"
|
||||
|
||||
# ADDON_VERSION: Addon version
|
||||
ADDON_VERSION="8.0"
|
||||
ADDON_VERSION="8.1"
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
# build and install hfs filesystem utilities (yes / no)
|
||||
HFSTOOLS="yes"
|
||||
|
||||
# Windowmanager to use (ratpoison / fluxbox / none)
|
||||
# Windowmanager to use (fluxbox / none)
|
||||
WINDOWMANAGER="fluxbox"
|
||||
|
||||
# Xorg Graphic drivers to use (all / i915,i965,r200,r300,r600,nvidia)
|
||||
|
||||
@@ -29,8 +29,26 @@ PKG_SHORTDESC="Adafruit Python DHT Library"
|
||||
PKG_LONGDESC="Python library to read the DHT series of humidity and temperature sensors on a Raspberry Pi or Beaglebone Black."
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
case $PROJECT in
|
||||
RPi)
|
||||
RPI_VERSION="--force-pi"
|
||||
;;
|
||||
RPi2)
|
||||
RPI_VERSION="--force-pi2"
|
||||
;;
|
||||
esac
|
||||
|
||||
pre_make_target() {
|
||||
export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr"
|
||||
export LDSHARED="$CC -shared"
|
||||
|
||||
sed -e 's/from ez_setup import use_setuptools/\#from ez_setup import use_setuptools/' \
|
||||
-e 's/use_setuptools()/\#use_setuptools()/' \
|
||||
-i setup.py
|
||||
}
|
||||
|
||||
make_target() {
|
||||
: # nop
|
||||
python setup.py build $RPI_VERSION --cross-compile
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="Adafruit_Python_SI1145"
|
||||
PKG_VERSION="cbc6c62"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/THP-JOE/Python_SI1145"
|
||||
PKG_URL="https://github.com/THP-JOE/Python_SI1145/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_SOURCE_DIR="Python_SI1145-$PKG_VERSION*"
|
||||
PKG_DEPENDS_TARGET="toolchain Python distutilscross:host"
|
||||
PKG_SECTION="python"
|
||||
PKG_SHORTDESC="Python library for the SI1145"
|
||||
PKG_LONGDESC="Python library for accessing the SI1145 temperature sensor on a Raspberry Pi"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
: # nop
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: # nop
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ PKG_SHORTDESC="ATK - Accessibility Toolkit"
|
||||
PKG_LONGDESC="ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and control running applications."
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared \
|
||||
--disable-rebuilds --disable-glibtest"
|
||||
|
||||
@@ -48,6 +48,9 @@ pre_make_target() {
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
aarch64)
|
||||
export GOARCH=arm64
|
||||
;;
|
||||
esac
|
||||
|
||||
export GOOS=linux
|
||||
|
||||
@@ -29,6 +29,6 @@ PKG_SHORTDESC="libev: a full-featured and high-performance event loop"
|
||||
PKG_LONGDESC="A full-featured and high-performance event loop that is loosely modelled after libevent, but without its limitations and bugs."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="ffmpegx"
|
||||
PKG_VERSION="libreelec"
|
||||
PKG_REV="4"
|
||||
PKG_REV="5"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPLv2.1+"
|
||||
PKG_SITE="https://ffmpeg.org"
|
||||
@@ -46,11 +46,6 @@ pre_configure_target() {
|
||||
FFMPEG_RPI_HADE="--enable-mmal --enable-omx-rpi"
|
||||
fi
|
||||
|
||||
# ffmpeg does not build with libx264 on aarch64
|
||||
if [ "$TARGET_ARCH" != "aarch64" ]; then
|
||||
FFMPEG_X264="--enable-libx264"
|
||||
fi
|
||||
|
||||
if [ "$TARGET_ARCH" == "arm" ]; then
|
||||
FFMPEG_ARM_AO="--enable-hardcoded-tables"
|
||||
fi
|
||||
@@ -102,6 +97,10 @@ configure_target() {
|
||||
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
make install DESTDIR=$INSTALL
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
for ff in $INSTALL/usr/local/bin/*; do mv $ff ${ff}x; done
|
||||
rm -fr $INSTALL/usr/local/include
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="imagemagick"
|
||||
PKG_VERSION="6.9.5-5"
|
||||
PKG_VERSION="6.9.6-7"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="http://www.imagemagick.org/script/license.php"
|
||||
@@ -37,3 +37,7 @@ PKG_CONFIGURE_OPTS_TARGET="--enable-static \
|
||||
--with-quantum-depth=8 \
|
||||
--enable-hdri=no \
|
||||
--disable-openmp"
|
||||
|
||||
makeinstall_target() {
|
||||
make install DESTDIR=$INSTALL
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="x264"
|
||||
PKG_VERSION="snapshot-20160623-2245"
|
||||
PKG_VERSION="snapshot-20161203-2245-stable"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="enca"
|
||||
PKG_VERSION="1.16"
|
||||
PKG_VERSION="1.19"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@@ -29,7 +29,7 @@ PKG_SHORTDESC="enca: detects the encoding of text files, on the basis of knowled
|
||||
PKG_LONGDESC="Enca detects the encoding of text files, on the basis of knowledge of their language. It can also convert them to other encodings, allowing you to recode files without knowing their current encoding. It supports most of Central and East European languages, and a few Unicode variants, independently on language."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_MAKEINSTALL_OPTS_TARGET="-C lib"
|
||||
PKG_CONFIGURE_OPTS_TARGET="ac_cv_file__dev_random=yes \
|
||||
|
||||
@@ -30,7 +30,7 @@ PKG_LONGDESC="ENet's purpose is to provide a relatively thin, simple and robust
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_USE_CMAKE="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared"
|
||||
|
||||
|
||||
42
packages/addons/addon-depends/enum34/package.mk
Normal file
42
packages/addons/addon-depends/enum34/package.mk
Normal file
@@ -0,0 +1,42 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="enum34"
|
||||
PKG_VERSION="1.1.6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="https://bitbucket.org/stoneleaf/enum34"
|
||||
PKG_URL="https://bitbucket.org/stoneleaf/$PKG_NAME/get/$PKG_VERSION.tar.bz2"
|
||||
PKG_SOURCE_DIR="stoneleaf-enum34-*"
|
||||
PKG_DEPENDS_TARGET="toolchain Python distutilscross:host"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="python"
|
||||
PKG_SHORTDESC="Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4"
|
||||
PKG_LONGDESC="Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
python setup.py build
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
:
|
||||
}
|
||||
@@ -29,7 +29,7 @@ PKG_SHORTDESC="faad: An MPEG-4 AAC decoder"
|
||||
PKG_LONGDESC="The FAAD project includes the AAC decoder FAAD2. It supports several MPEG-4 object types (LC, Main, LTP, HE AAC, PS) and file formats (ADTS AAC, raw AAC, MP4), multichannel and gapless decoding as well as MP4 metadata tags. The codecs are compatible with standard-compliant audio applications using one or more of these profiles."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_MAINTAINER="Team LibreELEC (addons@libreelec.tv)"
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ PKG_SECTION="x11/toolkits"
|
||||
PKG_SHORTDESC="gdk-pixbuf: a GNOME library for image loading and manipulation."
|
||||
PKG_LONGDESC="gdk-pixbuf (GdkPixbuf) is a GNOME library for image loading and manipulation. The GdkPixbuf documentation contains both the programmer's guide and the API reference."
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="gio_can_sniff=yes \
|
||||
--disable-gtk-doc \
|
||||
|
||||
@@ -19,19 +19,23 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="harfbuzz"
|
||||
PKG_VERSION="1.2.5"
|
||||
PKG_VERSION="1.3.3"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.freedesktop.org/wiki/Software/HarfBuzz"
|
||||
PKG_URL="http://www.freedesktop.org/software/harfbuzz/release/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain glib freetype cairo"
|
||||
PKG_DEPENDS_TARGET="toolchain glib freetype cairo icu"
|
||||
PKG_SECTION="x11/toolkits"
|
||||
PKG_SHORTDESC="harfbuzz: an OpenType text shaping engine."
|
||||
PKG_LONGDESC="HarfBuzz is an OpenType text shaping engine."
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_MAINTAINER="none"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--with-icu=no"
|
||||
PKG_CONFIGURE_OPTS_TARGET="--with-icu=yes"
|
||||
|
||||
pre_configure_target() {
|
||||
export LIBS="-ldl"
|
||||
}
|
||||
|
||||
45
packages/addons/addon-depends/icu/package.mk
Normal file
45
packages/addons/addon-depends/icu/package.mk
Normal file
@@ -0,0 +1,45 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="icu"
|
||||
PKG_VERSION="57.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Custom"
|
||||
PKG_SITE="http://www.icu-project.org"
|
||||
PKG_URL="http://download.icu-project.org/files/${PKG_NAME}4c/${PKG_VERSION}/${PKG_NAME}4c-${PKG_VERSION//./_}-src.tgz"
|
||||
PKG_SOURCE_DIR="icu"
|
||||
PKG_DEPENDS_TARGET="toolchain icu:host"
|
||||
PKG_SECTION="textproc"
|
||||
PKG_SHORTDESC="International Components for Unicode library"
|
||||
PKG_LONGDESC="International Components for Unicode library"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--enable-static --disable-shared"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static \
|
||||
--disable-shared \
|
||||
--with-cross-build=$ROOT/$PKG_BUILD/.$HOST_NAME"
|
||||
|
||||
PKG_CONFIGURE_SCRIPT="source/configure"
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL
|
||||
}
|
||||
@@ -29,7 +29,7 @@ PKG_SHORTDESC="jasper: JPEG-2000 Part-1 standard (i.e., ISO/IEC 15444-1) impleme
|
||||
PKG_LONGDESC="This distribution contains the public release of the an open-source implementation of the ISO/IEC 15444-1 also known as JPEG-2000 standard for image compression."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static"
|
||||
|
||||
|
||||
@@ -29,6 +29,6 @@ PKG_SHORTDESC=""
|
||||
PKG_LONGDESC=""
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared --enable-malloc0returnsnull"
|
||||
|
||||
@@ -31,6 +31,6 @@ PKG_SHORTDESC="libXcursor: X Cursor Library"
|
||||
PKG_LONGDESC="X11 Cursor management library"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static"
|
||||
|
||||
@@ -29,6 +29,6 @@ PKG_SHORTDESC="libxft: X FreeType library"
|
||||
PKG_LONGDESC="X FreeType library"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libconfig"
|
||||
PKG_VERSION="1.5"
|
||||
PKG_VERSION="1.6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
|
||||
@@ -29,4 +29,4 @@ PKG_SHORTDESC="A library to parse an EXIF file and read the data from those tags
|
||||
PKG_LONGDESC="A library to parse an EXIF file and read the data from those tags"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
@@ -31,7 +31,7 @@ PKG_SHORTDESC="library for id3 tagging"
|
||||
PKG_LONGDESC="library for id3 tagging"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_MAINTAINER="Lukas Sabota (LTsmooth42@gmail.com)"
|
||||
|
||||
|
||||
38
packages/addons/addon-depends/libimobiledevice/package.mk
Normal file
38
packages/addons/addon-depends/libimobiledevice/package.mk
Normal file
@@ -0,0 +1,38 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libimobiledevice"
|
||||
PKG_VERSION="1.2.0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.libimobiledevice.org"
|
||||
PKG_URL="http://www.libimobiledevice.org/downloads/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain libusbmuxd libressl"
|
||||
PKG_SECTION="libs"
|
||||
PKG_SHORTDESC="libimobiledevice is a cross-platform software library that talks the protocols to support iPhone®, iPod Touch®, iPad® and Apple TV® devices"
|
||||
PKG_LONGDESC="libimobiledevice is a cross-platform software library that talks the protocols to support iPhone®, iPod Touch®, iPad® and Apple TV® devices"
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static \
|
||||
--disable-shared \
|
||||
--without-cython \
|
||||
--disable-largefile"
|
||||
|
||||
post_makeinstall_target() {
|
||||
cp $ROOT/$PKG_BUILD/common/utils.h $SYSROOT_PREFIX/usr/include/libimobiledevice/
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -u -r libimobiledevice-1.2.0/src/idevice.c libimobiledevice-1.2.0-nossl3/src/idevice.c
|
||||
--- libimobiledevice-1.2.0/src/idevice.c 2015-01-28 02:10:32.000000000 +0100
|
||||
+++ libimobiledevice-1.2.0-nossl3/src/idevice.c 2016-03-03 18:33:45.912308242 +0100
|
||||
@@ -678,7 +678,7 @@
|
||||
}
|
||||
BIO_set_fd(ssl_bio, (int)(long)connection->data, BIO_NOCLOSE);
|
||||
|
||||
- SSL_CTX *ssl_ctx = SSL_CTX_new(SSLv3_method());
|
||||
+ SSL_CTX *ssl_ctx = SSL_CTX_new(SSLv23_method());
|
||||
if (ssl_ctx == NULL) {
|
||||
debug_info("ERROR: Could not create SSL context.");
|
||||
BIO_free(ssl_bio);
|
||||
34
packages/addons/addon-depends/libusbmuxd/package.mk
Normal file
34
packages/addons/addon-depends/libusbmuxd/package.mk
Normal file
@@ -0,0 +1,34 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libusbmuxd"
|
||||
PKG_VERSION="1.0.10"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.libimobiledevice.org"
|
||||
PKG_URL="http://www.libimobiledevice.org/downloads/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain libplist"
|
||||
PKG_SECTION="libs"
|
||||
PKG_SHORTDESC="USB Multiplex Daemon"
|
||||
PKG_LONGDESC="USB Multiplex Daemon"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_malloc_0_nonnull=yes \
|
||||
ac_cv_func_realloc_0_nonnull=yes \
|
||||
--enable-static \
|
||||
--disable-shared"
|
||||
@@ -35,3 +35,7 @@ PKG_CONFIGURE_OPTS_TARGET="--enable-shared \
|
||||
--with-libgif \
|
||||
--with-libjpeg \
|
||||
--with-libtiff"
|
||||
|
||||
makeinstall_target() {
|
||||
make install DESTDIR=$INSTALL
|
||||
}
|
||||
|
||||
@@ -30,3 +30,7 @@ unpack() {
|
||||
mkdir -p $PKG_BUILD
|
||||
cp -r $(get_build_dir sqlite)/* $PKG_BUILD/
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
make install DESTDIR=$INSTALL
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="moonlight-common-c"
|
||||
PKG_VERSION="6455381"
|
||||
PKG_VERSION="1d058cb"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv3"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
|
||||
--- a/CMakeLists.txt 2016-11-19 09:59:59.335970047 -0800
|
||||
+++ b/CMakeLists.txt 2016-11-19 10:08:43.639992687 -0800
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
set_property(TARGET moonlight PROPERTY COMPILE_DEFINITIONS ${MOONLIGHT_DEFINITIONS})
|
||||
target_include_directories(moonlight PRIVATE ${GAMESTREAM_INCLUDE_DIR} ${MOONLIGHT_COMMON_INCLUDE_DIR} ${OPUS_INCLUDE_DIRS} ${EVDEV_INCLUDE_DIRS} ${UDEV_INCLUDE_DIRS})
|
||||
-target_link_libraries(moonlight ${EVDEV_LIBRARIES} ${ALSA_LIBRARY} ${OPUS_LIBRARY} ${UDEV_LIBRARIES} ${CMAKE_DL_LIBS} m)
|
||||
+target_link_libraries(moonlight ${EVDEV_LIBRARIES} ${ALSA_LIBRARY} ${OPUS_LIBRARY} ${UDEV_LIBRARIES} ${CMAKE_DL_LIBS} pthread m)
|
||||
|
||||
add_subdirectory(docs)
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
From 90bfcdcc4da4178b0fd6c6013947006cd1c07377 Mon Sep 17 00:00:00 2001
|
||||
From: Iwan Timmer <irtimmer@gmail.com>
|
||||
Date: Fri, 9 Dec 2016 20:05:31 +0100
|
||||
Subject: [PATCH] Update libCEC compatibility to version 4.0
|
||||
|
||||
---
|
||||
src/input/cec.c | 2 +-
|
||||
third_party/libcec/ceccloader.h | 8 ++++----
|
||||
2 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/input/cec.c b/src/input/cec.c
|
||||
index 8c3892e..1a50d81 100644
|
||||
--- a/src/input/cec.c
|
||||
+++ b/src/input/cec.c
|
||||
@@ -77,7 +77,7 @@ void cec_init() {
|
||||
libcecc_reset_configuration(&g_config);
|
||||
g_config.clientVersion = LIBCEC_VERSION_CURRENT;
|
||||
g_config.bActivateSource = 0;
|
||||
- g_callbacks.CBCecKeyPress = &on_cec_keypress;
|
||||
+ g_callbacks.keyPress = &on_cec_keypress;
|
||||
g_config.callbacks = &g_callbacks;
|
||||
snprintf(g_config.strDeviceName, sizeof(g_config.strDeviceName), "Moonlight");
|
||||
g_config.callbacks = &g_callbacks;
|
||||
diff --git a/third_party/libcec/ceccloader.h b/third_party/libcec/ceccloader.h
|
||||
index 1ae0c2a..2f8f760 100644
|
||||
--- a/third_party/libcec/ceccloader.h
|
||||
+++ b/third_party/libcec/ceccloader.h
|
||||
@@ -84,7 +84,7 @@ typedef struct {
|
||||
int (CDECL *set_osd_string)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iLogicalAddress, CEC_NAMESPACE cec_display_control duration, const char* strMessage);
|
||||
int (CDECL *switch_monitoring)(libcec_connection_t connection, int bEnable);
|
||||
CEC_NAMESPACE cec_version (CDECL *get_device_cec_version)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iLogicalAddress);
|
||||
- int (CDECL *get_device_menu_language)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iLogicalAddress, CEC_NAMESPACE cec_menu_language* language);
|
||||
+ int (CDECL *get_device_menu_language)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iLogicalAddress, CEC_NAMESPACE cec_menu_language language);
|
||||
uint64_t (CDECL *get_device_vendor_id)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iLogicalAddress);
|
||||
uint16_t (CDECL *get_device_physical_address)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iLogicalAddress);
|
||||
CEC_NAMESPACE cec_logical_address (CDECL *get_active_source)(libcec_connection_t connection);
|
||||
@@ -100,7 +100,7 @@ typedef struct {
|
||||
int (CDECL *mute_audio)(libcec_connection_t connection, int bSendRelease);
|
||||
int (CDECL *send_keypress)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iDestination, CEC_NAMESPACE cec_user_control_code key, int bWait);
|
||||
int (CDECL *send_key_release)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iDestination, int bWait);
|
||||
- CEC_NAMESPACE cec_osd_name (CDECL *get_device_osd_name)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iAddress);
|
||||
+ int (CDECL *get_device_osd_name)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iAddress, CEC_NAMESPACE cec_osd_name name);
|
||||
int (CDECL *set_stream_path_logical)(libcec_connection_t connection, CEC_NAMESPACE cec_logical_address iAddress);
|
||||
int (CDECL *set_stream_path_physical)(libcec_connection_t connection, uint16_t iPhysicalAddress);
|
||||
CEC_NAMESPACE cec_logical_addresses (CDECL *get_logical_addresses)(libcec_connection_t connection);
|
||||
@@ -161,7 +161,7 @@ static int libcecc_resolve_all(void* lib, libcec_interface_t* iface)
|
||||
_libcecc_resolve(lib, iface->set_osd_string, "libcec_set_osd_string", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, CEC_NAMESPACE cec_display_control, const char*));
|
||||
_libcecc_resolve(lib, iface->switch_monitoring, "libcec_switch_monitoring", int(CDECL *)(libcec_connection_t, int));
|
||||
_libcecc_resolve(lib, iface->get_device_cec_version, "libcec_get_device_cec_version", CEC_NAMESPACE cec_version(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address));
|
||||
- _libcecc_resolve(lib, iface->get_device_menu_language, "libcec_get_device_menu_language", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, CEC_NAMESPACE cec_menu_language*));
|
||||
+ _libcecc_resolve(lib, iface->get_device_menu_language, "libcec_get_device_menu_language", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, CEC_NAMESPACE cec_menu_language));
|
||||
_libcecc_resolve(lib, iface->get_device_vendor_id, "libcec_get_device_vendor_id", uint64_t(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address));
|
||||
_libcecc_resolve(lib, iface->get_device_physical_address, "libcec_get_device_physical_address", uint16_t(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address));
|
||||
_libcecc_resolve(lib, iface->get_active_source, "libcec_get_active_source", CEC_NAMESPACE cec_logical_address(CDECL *)(libcec_connection_t));
|
||||
@@ -177,7 +177,7 @@ static int libcecc_resolve_all(void* lib, libcec_interface_t* iface)
|
||||
_libcecc_resolve(lib, iface->mute_audio, "libcec_mute_audio", int(CDECL *)(libcec_connection_t, int));
|
||||
_libcecc_resolve(lib, iface->send_keypress, "libcec_send_keypress", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, CEC_NAMESPACE cec_user_control_code, int));
|
||||
_libcecc_resolve(lib, iface->send_key_release, "libcec_send_key_release", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, int));
|
||||
- _libcecc_resolve(lib, iface->get_device_osd_name, "libcec_get_device_osd_name", CEC_NAMESPACE cec_osd_name(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address));
|
||||
+ _libcecc_resolve(lib, iface->get_device_osd_name, "libcec_get_device_osd_name", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address, CEC_NAMESPACE cec_osd_name));
|
||||
_libcecc_resolve(lib, iface->set_stream_path_logical, "libcec_set_stream_path_logical", int(CDECL *)(libcec_connection_t, CEC_NAMESPACE cec_logical_address));
|
||||
_libcecc_resolve(lib, iface->set_stream_path_physical, "libcec_set_stream_path_physical", int(CDECL *)(libcec_connection_t, uint16_t));
|
||||
_libcecc_resolve(lib, iface->get_logical_addresses, "libcec_get_logical_addresses", CEC_NAMESPACE cec_logical_addresses(CDECL *)(libcec_connection_t));
|
||||
@@ -29,6 +29,6 @@ PKG_SHORTDESC="mpg123"
|
||||
PKG_LONGDESC="A fast MP3 Player"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static"
|
||||
|
||||
@@ -27,7 +27,7 @@ PKG_DEPENDS_TARGET="toolchain netbsd-curses libstatgrab"
|
||||
PKG_SECTION="network/analyzer"
|
||||
PKG_SHORTDESC="bwm-ng: small and simple console-based live network and disk io bandwidth monitor"
|
||||
PKG_LONGDESC="Bandwidth Monitor NG is a small and simple console-based live network and disk io bandwidth monitor for Linux, BSD, Solaris, Mac OS X and others."
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--with-libstatgrab \
|
||||
--with-time \
|
||||
|
||||
@@ -27,7 +27,7 @@ PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="devel"
|
||||
PKG_SHORTDESC="system interface for user-level packet capture"
|
||||
PKG_LONGDESC="libpcap (Packet CAPture) provides a portable framework for low-level network monitoring. Applications include network statistics collection, security monitoring, network debugging, etc."
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="LIBS=-lpthread \
|
||||
ac_cv_header_libusb_1_0_libusb_h=no \
|
||||
|
||||
@@ -27,7 +27,7 @@ PKG_DEPENDS_TARGET="toolchain glib netbsd-curses libressl"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="IRC client"
|
||||
PKG_LONGDESC="Irssi is a terminal based IRC client for UNIX systems"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--with-sysroot=$SYSROOT_PREFIX \
|
||||
--enable-ssl \
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="lftp"
|
||||
PKG_VERSION="4.6.5"
|
||||
PKG_VERSION="4.7.4"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@@ -27,15 +27,14 @@ PKG_DEPENDS_TARGET="toolchain readline libressl zlib"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="ftp client"
|
||||
PKG_LONGDESC="LFTP is a sophisticated ftp/http client, and a file transfer program supporting a number of network protocols"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-nls --with-gnu-ld --without-gnutls --with-openssl"
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-nls \
|
||||
--without-gnutls \
|
||||
--with-openssl \
|
||||
--with-readline=$SYSROOT_PREFIX/usr \
|
||||
--with-zlib=$SYSROOT_PREFIX/usr"
|
||||
|
||||
makeinstall_target() {
|
||||
: # nop
|
||||
}
|
||||
|
||||
pre_configure_target() {
|
||||
# fails to build with gcc 4.9 + lto
|
||||
strip_lto
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -Naur a/configure b/configure
|
||||
--- a/configure 2016-11-16 05:11:30.000000000 -0800
|
||||
+++ b/configure 2016-11-19 11:21:25.384243165 -0800
|
||||
@@ -48854,7 +48854,7 @@
|
||||
readline_include_dir="$readline_include_dir/readline"
|
||||
fi
|
||||
readline_ld_flags="-L$readline_prefix/lib"
|
||||
- readline_lib_flags="-lreadline"
|
||||
+ readline_lib_flags="-lreadline -ltermcap"
|
||||
run_readline_test="yes"
|
||||
elif test "$readline_requested" = "yes"; then
|
||||
if test -n "$readline_include_dir" -a -n "$readline_lib_flags"; then
|
||||
@@ -28,7 +28,7 @@ PKG_SECTION="network/analyzer"
|
||||
PKG_SHORTDESC="ngrep - network grep"
|
||||
PKG_LONGDESC="ngrep - network grep"
|
||||
PKG_DISCLAIMER="this is an unofficial addon. please don't ask for support in openelec forum / irc channel"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--with-pcap-includes=$SYSROOT_PREFIX/usr/include --disable-dropprivs"
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ PKG_DEPENDS_TARGET="toolchain libpcap"
|
||||
PKG_SECTION="network/analyzer"
|
||||
PKG_SHORTDESC="powerful tool for network monitoring and data acquisition"
|
||||
PKG_LONGDESC="This program allows you to dump the traffic on a network. tcpdump is able to examine IPv4, ICMPv4, IPv6, ICMPv6, UDP, TCP, SNMP, AFS BGP, RIP, PIM, DVMRP, IGMP, SMB, OSPF, NFS and many other packet types."
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--with-pcap=linux --with-crypto=no --disable-ipv6"
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ PKG_AUTORECONF="no"
|
||||
pre_configure_target() {
|
||||
# fails to build with gcc 4.9 + lto
|
||||
strip_lto
|
||||
CFLAGS="$CFLAGS -Wno-error=unused-const-variable"
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="nspr"
|
||||
PKG_VERSION="4.12"
|
||||
PKG_VERSION="4.13"
|
||||
PKG_REV="2"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Mozilla Public License"
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="nss"
|
||||
PKG_VERSION="3.22.3"
|
||||
PKG_VERSION="3.27.1"
|
||||
PKG_REV="2"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Mozilla Public License"
|
||||
PKG_SITE="http://ftp.mozilla.org/"
|
||||
PKG_URL="http://ftp.mozilla.org/pub/security/nss/releases/NSS_3_22_3_RTM/src/nss-3.22.3-with-nspr-4.12.tar.gz"
|
||||
PKG_URL="http://ftp.mozilla.org/pub/security/nss/releases/NSS_3_27_1_RTM/src/nss-3.27.1-with-nspr-4.13.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain nss:host nspr zlib"
|
||||
PKG_SECTION="security"
|
||||
PKG_SHORTDESC="The Network Security Services (NSS) package is a set of libraries designed to support cross-platform development of security-enabled client and server applications"
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
diff --git a/nss/cmd/shlibsign/Makefile b/nss/cmd/shlibsign/Makefile
|
||||
index 83f90fa..177feee 100644
|
||||
--- a/nss/cmd/shlibsign/Makefile
|
||||
+++ b/nss/cmd/shlibsign/Makefile
|
||||
@@ -95,5 +95,3 @@ else
|
||||
endif
|
||||
endif
|
||||
|
||||
-libs install :: $(CHECKLOC)
|
||||
-
|
||||
diff --git a/nss/coreconf/Linux.mk b/nss/coreconf/Linux.mk
|
||||
index a586e5e..e815b72 100644
|
||||
--- a/nss/coreconf/Linux.mk
|
||||
+++ b/nss/coreconf/Linux.mk
|
||||
@@ -16,12 +16,6 @@ ifeq ($(USE_PTHREADS),1)
|
||||
IMPL_STRATEGY = _PTH
|
||||
endif
|
||||
|
||||
-CC = gcc
|
||||
-CCC = g++
|
||||
-RANLIB = ranlib
|
||||
-
|
||||
-DEFAULT_COMPILER = gcc
|
||||
-
|
||||
ifeq ($(OS_TARGET),Android)
|
||||
ifndef ANDROID_NDK
|
||||
$(error Must set ANDROID_NDK to the path to the android NDK first)
|
||||
@@ -29,7 +29,7 @@ PKG_SHORTDESC="Codec designed for interactive speech and audio transmission over
|
||||
PKG_LONGDESC="Codec designed for interactive speech and audio transmission over the Internet"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
if [ "$TARGET_ARCH" = "arm" ]; then
|
||||
FIXED_POINT="--enable-fixed-point"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pango"
|
||||
PKG_VERSION="1.40.1"
|
||||
PKG_VERSION="1.40.3"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -29,7 +29,7 @@ PKG_SHORTDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||
PKG_LONGDESC="Middleware to access a smart card using SCard API (PC/SC)"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
|
||||
--enable-static \
|
||||
|
||||
@@ -14,23 +14,30 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="protobuf"
|
||||
PKG_VERSION="2.6.1"
|
||||
PKG_VERSION="3.1.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="https://developers.google.com/protocol-buffers/"
|
||||
PKG_URL="https://github.com/google/$PKG_NAME/releases/download/v$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_HOST="toolchain zlib"
|
||||
PKG_URL="https://github.com/google/$PKG_NAME/releases/download/v$PKG_VERSION/$PKG_NAME-cpp-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_HOST="toolchain zlib:host"
|
||||
PKG_DEPENDS_TARGET="toolchain zlib protobuf:host"
|
||||
PKG_SECTION="devel"
|
||||
PKG_SHORTDESC="protobuf: Protocol Buffers - Google's data interchange format"
|
||||
PKG_LONGDESC="protobuf: Protocol Buffers - Google's data interchange format"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--enable-static --disable-shared"
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static --with-protoc=$ROOT/$TOOLCHAIN/bin/protoc"
|
||||
PKG_CMAKE_SCRIPT="cmake/CMakeLists.txt"
|
||||
|
||||
PKG_CMAKE_OPTS_HOST="-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
|
||||
-DBUILD_SHARED_LIBS=0 \
|
||||
-Dprotobuf_BUILD_TESTS=0 \
|
||||
-Dprotobuf_BUILD_EXAMPLES=0 \
|
||||
-Dprotobuf_WITH_ZLIB=1"
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_HOST"
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/bin
|
||||
|
||||
@@ -1,923 +0,0 @@
|
||||
From cab5eae3e0dc8cc13d06b8d94bf4759d14e1c20e Mon Sep 17 00:00:00 2001
|
||||
From: john hood <cgull@glup.org>
|
||||
Date: Fri, 18 Mar 2016 23:56:51 +0000
|
||||
Subject: [PATCH] Replace ancient m4/acx_pthread.m4 with m4/ax_pthread.m4
|
||||
|
||||
---
|
||||
configure.ac | 5 +-
|
||||
m4/acx_pthread.m4 | 397 --------------------------------------------
|
||||
m4/ax_pthread.m4 | 485 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 487 insertions(+), 400 deletions(-)
|
||||
delete mode 100644 m4/acx_pthread.m4
|
||||
create mode 100644 m4/ax_pthread.m4
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 33a6c64..dc39ee6 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -149,9 +149,8 @@ AS_IF([test "$with_protoc" != "no"], [
|
||||
])
|
||||
AM_CONDITIONAL([USE_EXTERNAL_PROTOC], [test "$with_protoc" != "no"])
|
||||
|
||||
-ACX_PTHREAD
|
||||
-AM_CONDITIONAL([HAVE_PTHREAD], [test "x$acx_pthread_ok" = "xyes"])
|
||||
-
|
||||
+AX_PTHREAD
|
||||
+AM_CONDITIONAL([HAVE_PTHREAD], [test "x$ax_pthread_ok" = "xyes"])
|
||||
# We still keep this for improving pbconfig.h for unsupported platforms.
|
||||
AC_CXX_STL_HASH
|
||||
|
||||
diff --git a/m4/acx_pthread.m4 b/m4/acx_pthread.m4
|
||||
deleted file mode 100644
|
||||
index 89d42c7..0000000
|
||||
--- a/m4/acx_pthread.m4
|
||||
+++ /dev/null
|
||||
@@ -1,397 +0,0 @@
|
||||
-# This was retrieved from
|
||||
-# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?revision=1277&root=avahi
|
||||
-# See also (perhaps for new versions?)
|
||||
-# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?root=avahi
|
||||
-#
|
||||
-# We've rewritten the inconsistency check code (from avahi), to work
|
||||
-# more broadly. In particular, it no longer assumes ld accepts -zdefs.
|
||||
-# This caused a restructing of the code, but the functionality has only
|
||||
-# changed a little.
|
||||
-
|
||||
-dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
-dnl
|
||||
-dnl @summary figure out how to build C programs using POSIX threads
|
||||
-dnl
|
||||
-dnl This macro figures out how to build C programs using POSIX threads.
|
||||
-dnl It sets the PTHREAD_LIBS output variable to the threads library and
|
||||
-dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
|
||||
-dnl C compiler flags that are needed. (The user can also force certain
|
||||
-dnl compiler flags/libs to be tested by setting these environment
|
||||
-dnl variables.)
|
||||
-dnl
|
||||
-dnl Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
-dnl multi-threaded programs (defaults to the value of CC otherwise).
|
||||
-dnl (This is necessary on AIX to use the special cc_r compiler alias.)
|
||||
-dnl
|
||||
-dnl NOTE: You are assumed to not only compile your program with these
|
||||
-dnl flags, but also link it with them as well. e.g. you should link
|
||||
-dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
|
||||
-dnl $LIBS
|
||||
-dnl
|
||||
-dnl If you are only building threads programs, you may wish to use
|
||||
-dnl these variables in your default LIBS, CFLAGS, and CC:
|
||||
-dnl
|
||||
-dnl LIBS="$PTHREAD_LIBS $LIBS"
|
||||
-dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
-dnl CC="$PTHREAD_CC"
|
||||
-dnl
|
||||
-dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
|
||||
-dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
|
||||
-dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
-dnl
|
||||
-dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
|
||||
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
|
||||
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
|
||||
-dnl default action will define HAVE_PTHREAD.
|
||||
-dnl
|
||||
-dnl Please let the authors know if this macro fails on any platform, or
|
||||
-dnl if you have any other suggestions or comments. This macro was based
|
||||
-dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
|
||||
-dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
|
||||
-dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
|
||||
-dnl We are also grateful for the helpful feedback of numerous users.
|
||||
-dnl
|
||||
-dnl @category InstalledPackages
|
||||
-dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
-dnl @version 2006-05-29
|
||||
-dnl @license GPLWithACException
|
||||
-dnl
|
||||
-dnl Checks for GCC shared/pthread inconsistency based on work by
|
||||
-dnl Marcin Owsiany <marcin@owsiany.pl>
|
||||
-
|
||||
-
|
||||
-AC_DEFUN([ACX_PTHREAD], [
|
||||
-AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
-AC_LANG_SAVE
|
||||
-AC_LANG_C
|
||||
-acx_pthread_ok=no
|
||||
-
|
||||
-# We used to check for pthread.h first, but this fails if pthread.h
|
||||
-# requires special compiler flags (e.g. on True64 or Sequent).
|
||||
-# It gets checked for in the link test anyway.
|
||||
-
|
||||
-# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
-# etcetera environment variables, and if threads linking works using
|
||||
-# them:
|
||||
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
||||
- save_CFLAGS="$CFLAGS"
|
||||
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
- save_LIBS="$LIBS"
|
||||
- LIBS="$PTHREAD_LIBS $LIBS"
|
||||
- AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
||||
- AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
|
||||
- AC_MSG_RESULT($acx_pthread_ok)
|
||||
- if test x"$acx_pthread_ok" = xno; then
|
||||
- PTHREAD_LIBS=""
|
||||
- PTHREAD_CFLAGS=""
|
||||
- fi
|
||||
- LIBS="$save_LIBS"
|
||||
- CFLAGS="$save_CFLAGS"
|
||||
-fi
|
||||
-
|
||||
-# We must check for the threads library under a number of different
|
||||
-# names; the ordering is very important because some systems
|
||||
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
-# libraries is broken (non-POSIX).
|
||||
-
|
||||
-# Create a list of thread flags to try. Items starting with a "-" are
|
||||
-# C compiler flags, and other items are library names, except for "none"
|
||||
-# which indicates that we try without any flags at all, and "pthread-config"
|
||||
-# which is a program returning the flags for the Pth emulation library.
|
||||
-
|
||||
-acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
-
|
||||
-# The ordering *is* (sometimes) important. Some notes on the
|
||||
-# individual items follow:
|
||||
-
|
||||
-# pthreads: AIX (must check this before -lpthread)
|
||||
-# none: in case threads are in libc; should be tried before -Kthread and
|
||||
-# other compiler flags to prevent continual compiler warnings
|
||||
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
||||
-# -pthreads: Solaris/gcc
|
||||
-# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
-# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
-# also defines -D_REENTRANT)
|
||||
-# ... -mt is also the pthreads flag for HP/aCC
|
||||
-# pthread: Linux, etcetera
|
||||
-# --thread-safe: KAI C++
|
||||
-# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
-
|
||||
-case "${host_cpu}-${host_os}" in
|
||||
- *solaris*)
|
||||
-
|
||||
- # On Solaris (at least, for some versions), libc contains stubbed
|
||||
- # (non-functional) versions of the pthreads routines, so link-based
|
||||
- # tests will erroneously succeed. (We need to link with -pthreads/-mt/
|
||||
- # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
- # a function called by this macro, so we could check for that, but
|
||||
- # who knows whether they'll stub that too in a future libc.) So,
|
||||
- # we'll just look for -pthreads and -lpthread first:
|
||||
-
|
||||
- acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
|
||||
- ;;
|
||||
-esac
|
||||
-
|
||||
-if test x"$acx_pthread_ok" = xno; then
|
||||
-for flag in $acx_pthread_flags; do
|
||||
-
|
||||
- case $flag in
|
||||
- none)
|
||||
- AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
- ;;
|
||||
-
|
||||
- -*)
|
||||
- AC_MSG_CHECKING([whether pthreads work with $flag])
|
||||
- PTHREAD_CFLAGS="$flag"
|
||||
- ;;
|
||||
-
|
||||
- pthread-config)
|
||||
- AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
|
||||
- if test x"$acx_pthread_config" = xno; then continue; fi
|
||||
- PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
- PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
- ;;
|
||||
-
|
||||
- *)
|
||||
- AC_MSG_CHECKING([for the pthreads library -l$flag])
|
||||
- PTHREAD_LIBS="-l$flag"
|
||||
- ;;
|
||||
- esac
|
||||
-
|
||||
- save_LIBS="$LIBS"
|
||||
- save_CFLAGS="$CFLAGS"
|
||||
- LIBS="$PTHREAD_LIBS $LIBS"
|
||||
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
-
|
||||
- # Check for various functions. We must include pthread.h,
|
||||
- # since some functions may be macros. (On the Sequent, we
|
||||
- # need a special flag -Kthread to make this header compile.)
|
||||
- # We check for pthread_join because it is in -lpthread on IRIX
|
||||
- # while pthread_create is in libc. We check for pthread_attr_init
|
||||
- # due to DEC craziness with -lpthreads. We check for
|
||||
- # pthread_cleanup_push because it is one of the few pthread
|
||||
- # functions on Solaris that doesn't have a non-functional libc stub.
|
||||
- # We try pthread_create on general principles.
|
||||
- AC_TRY_LINK([#include <pthread.h>],
|
||||
- [pthread_t th; pthread_join(th, 0);
|
||||
- pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
- [acx_pthread_ok=yes])
|
||||
-
|
||||
- LIBS="$save_LIBS"
|
||||
- CFLAGS="$save_CFLAGS"
|
||||
-
|
||||
- AC_MSG_RESULT($acx_pthread_ok)
|
||||
- if test "x$acx_pthread_ok" = xyes; then
|
||||
- break;
|
||||
- fi
|
||||
-
|
||||
- PTHREAD_LIBS=""
|
||||
- PTHREAD_CFLAGS=""
|
||||
-done
|
||||
-fi
|
||||
-
|
||||
-# Various other checks:
|
||||
-if test "x$acx_pthread_ok" = xyes; then
|
||||
- save_LIBS="$LIBS"
|
||||
- LIBS="$PTHREAD_LIBS $LIBS"
|
||||
- save_CFLAGS="$CFLAGS"
|
||||
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
-
|
||||
- # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
- AC_MSG_CHECKING([for joinable pthread attribute])
|
||||
- attr_name=unknown
|
||||
- for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
- AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
|
||||
- [attr_name=$attr; break])
|
||||
- done
|
||||
- AC_MSG_RESULT($attr_name)
|
||||
- if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
||||
- AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
|
||||
- [Define to necessary symbol if this constant
|
||||
- uses a non-standard name on your system.])
|
||||
- fi
|
||||
-
|
||||
- AC_MSG_CHECKING([if more special flags are required for pthreads])
|
||||
- flag=no
|
||||
- case "${host_cpu}-${host_os}" in
|
||||
- *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
|
||||
- *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
|
||||
- esac
|
||||
- AC_MSG_RESULT(${flag})
|
||||
- if test "x$flag" != xno; then
|
||||
- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
||||
- fi
|
||||
-
|
||||
- LIBS="$save_LIBS"
|
||||
- CFLAGS="$save_CFLAGS"
|
||||
- # More AIX lossage: must compile with xlc_r or cc_r
|
||||
- if test x"$GCC" != xyes; then
|
||||
- AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
|
||||
- else
|
||||
- PTHREAD_CC=$CC
|
||||
- fi
|
||||
-
|
||||
- # The next part tries to detect GCC inconsistency with -shared on some
|
||||
- # architectures and systems. The problem is that in certain
|
||||
- # configurations, when -shared is specified, GCC "forgets" to
|
||||
- # internally use various flags which are still necessary.
|
||||
-
|
||||
- #
|
||||
- # Prepare the flags
|
||||
- #
|
||||
- save_CFLAGS="$CFLAGS"
|
||||
- save_LIBS="$LIBS"
|
||||
- save_CC="$CC"
|
||||
-
|
||||
- # Try with the flags determined by the earlier checks.
|
||||
- #
|
||||
- # -Wl,-z,defs forces link-time symbol resolution, so that the
|
||||
- # linking checks with -shared actually have any value
|
||||
- #
|
||||
- # FIXME: -fPIC is required for -shared on many architectures,
|
||||
- # so we specify it here, but the right way would probably be to
|
||||
- # properly detect whether it is actually required.
|
||||
- CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS"
|
||||
- LIBS="$PTHREAD_LIBS $LIBS"
|
||||
- CC="$PTHREAD_CC"
|
||||
-
|
||||
- # In order not to create several levels of indentation, we test
|
||||
- # the value of "$done" until we find the cure or run out of ideas.
|
||||
- done="no"
|
||||
-
|
||||
- # First, make sure the CFLAGS we added are actually accepted by our
|
||||
- # compiler. If not (and OS X's ld, for instance, does not accept -z),
|
||||
- # then we can't do this test.
|
||||
- if test x"$done" = xno; then
|
||||
- AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies])
|
||||
- AC_TRY_LINK(,, , [done=yes])
|
||||
-
|
||||
- if test "x$done" = xyes ; then
|
||||
- AC_MSG_RESULT([no])
|
||||
- else
|
||||
- AC_MSG_RESULT([yes])
|
||||
- fi
|
||||
- fi
|
||||
-
|
||||
- if test x"$done" = xno; then
|
||||
- AC_MSG_CHECKING([whether -pthread is sufficient with -shared])
|
||||
- AC_TRY_LINK([#include <pthread.h>],
|
||||
- [pthread_t th; pthread_join(th, 0);
|
||||
- pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
- [done=yes])
|
||||
-
|
||||
- if test "x$done" = xyes; then
|
||||
- AC_MSG_RESULT([yes])
|
||||
- else
|
||||
- AC_MSG_RESULT([no])
|
||||
- fi
|
||||
- fi
|
||||
-
|
||||
- #
|
||||
- # Linux gcc on some architectures such as mips/mipsel forgets
|
||||
- # about -lpthread
|
||||
- #
|
||||
- if test x"$done" = xno; then
|
||||
- AC_MSG_CHECKING([whether -lpthread fixes that])
|
||||
- LIBS="-lpthread $PTHREAD_LIBS $save_LIBS"
|
||||
- AC_TRY_LINK([#include <pthread.h>],
|
||||
- [pthread_t th; pthread_join(th, 0);
|
||||
- pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
- [done=yes])
|
||||
-
|
||||
- if test "x$done" = xyes; then
|
||||
- AC_MSG_RESULT([yes])
|
||||
- PTHREAD_LIBS="-lpthread $PTHREAD_LIBS"
|
||||
- else
|
||||
- AC_MSG_RESULT([no])
|
||||
- fi
|
||||
- fi
|
||||
- #
|
||||
- # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc
|
||||
- #
|
||||
- if test x"$done" = xno; then
|
||||
- AC_MSG_CHECKING([whether -lc_r fixes that])
|
||||
- LIBS="-lc_r $PTHREAD_LIBS $save_LIBS"
|
||||
- AC_TRY_LINK([#include <pthread.h>],
|
||||
- [pthread_t th; pthread_join(th, 0);
|
||||
- pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
- [done=yes])
|
||||
-
|
||||
- if test "x$done" = xyes; then
|
||||
- AC_MSG_RESULT([yes])
|
||||
- PTHREAD_LIBS="-lc_r $PTHREAD_LIBS"
|
||||
- else
|
||||
- AC_MSG_RESULT([no])
|
||||
- fi
|
||||
- fi
|
||||
- if test x"$done" = xno; then
|
||||
- # OK, we have run out of ideas
|
||||
- AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries])
|
||||
-
|
||||
- # so it's not safe to assume that we may use pthreads
|
||||
- acx_pthread_ok=no
|
||||
- fi
|
||||
-
|
||||
- AC_MSG_CHECKING([whether what we have so far is sufficient with -nostdlib])
|
||||
- CFLAGS="-nostdlib $CFLAGS"
|
||||
- # we need c with nostdlib
|
||||
- LIBS="$LIBS -lc"
|
||||
- AC_TRY_LINK([#include <pthread.h>],
|
||||
- [pthread_t th; pthread_join(th, 0);
|
||||
- pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
- [done=yes],[done=no])
|
||||
-
|
||||
- if test "x$done" = xyes; then
|
||||
- AC_MSG_RESULT([yes])
|
||||
- else
|
||||
- AC_MSG_RESULT([no])
|
||||
- fi
|
||||
-
|
||||
- if test x"$done" = xno; then
|
||||
- AC_MSG_CHECKING([whether -lpthread saves the day])
|
||||
- LIBS="-lpthread $LIBS"
|
||||
- AC_TRY_LINK([#include <pthread.h>],
|
||||
- [pthread_t th; pthread_join(th, 0);
|
||||
- pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
- [done=yes],[done=no])
|
||||
-
|
||||
- if test "x$done" = xyes; then
|
||||
- AC_MSG_RESULT([yes])
|
||||
- PTHREAD_LIBS="$PTHREAD_LIBS -lpthread"
|
||||
- else
|
||||
- AC_MSG_RESULT([no])
|
||||
- AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries and -nostdlib])
|
||||
- fi
|
||||
- fi
|
||||
-
|
||||
- CFLAGS="$save_CFLAGS"
|
||||
- LIBS="$save_LIBS"
|
||||
- CC="$save_CC"
|
||||
-else
|
||||
- PTHREAD_CC="$CC"
|
||||
-fi
|
||||
-
|
||||
-AC_SUBST(PTHREAD_LIBS)
|
||||
-AC_SUBST(PTHREAD_CFLAGS)
|
||||
-AC_SUBST(PTHREAD_CC)
|
||||
-
|
||||
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
-if test x"$acx_pthread_ok" = xyes; then
|
||||
- ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
|
||||
- :
|
||||
-else
|
||||
- acx_pthread_ok=no
|
||||
- $2
|
||||
-fi
|
||||
-AC_LANG_RESTORE
|
||||
-])dnl ACX_PTHREAD
|
||||
diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4
|
||||
new file mode 100644
|
||||
index 0000000..d218d1a
|
||||
--- /dev/null
|
||||
+++ b/m4/ax_pthread.m4
|
||||
@@ -0,0 +1,485 @@
|
||||
+# ===========================================================================
|
||||
+# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
|
||||
+# ===========================================================================
|
||||
+#
|
||||
+# SYNOPSIS
|
||||
+#
|
||||
+# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
+#
|
||||
+# DESCRIPTION
|
||||
+#
|
||||
+# This macro figures out how to build C programs using POSIX threads. It
|
||||
+# sets the PTHREAD_LIBS output variable to the threads library and linker
|
||||
+# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
|
||||
+# flags that are needed. (The user can also force certain compiler
|
||||
+# flags/libs to be tested by setting these environment variables.)
|
||||
+#
|
||||
+# Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
+# multi-threaded programs (defaults to the value of CC otherwise). (This
|
||||
+# is necessary on AIX to use the special cc_r compiler alias.)
|
||||
+#
|
||||
+# NOTE: You are assumed to not only compile your program with these flags,
|
||||
+# but also to link with them as well. For example, you might link with
|
||||
+# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
|
||||
+#
|
||||
+# If you are only building threaded programs, you may wish to use these
|
||||
+# variables in your default LIBS, CFLAGS, and CC:
|
||||
+#
|
||||
+# LIBS="$PTHREAD_LIBS $LIBS"
|
||||
+# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
+# CC="$PTHREAD_CC"
|
||||
+#
|
||||
+# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||
+# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
|
||||
+# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
+#
|
||||
+# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||
+# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||
+# PTHREAD_CFLAGS.
|
||||
+#
|
||||
+# ACTION-IF-FOUND is a list of shell commands to run if a threads library
|
||||
+# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
|
||||
+# is not found. If ACTION-IF-FOUND is not specified, the default action
|
||||
+# will define HAVE_PTHREAD.
|
||||
+#
|
||||
+# Please let the authors know if this macro fails on any platform, or if
|
||||
+# you have any other suggestions or comments. This macro was based on work
|
||||
+# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
|
||||
+# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
|
||||
+# Alejandro Forero Cuervo to the autoconf macro repository. We are also
|
||||
+# grateful for the helpful feedback of numerous users.
|
||||
+#
|
||||
+# Updated for Autoconf 2.68 by Daniel Richard G.
|
||||
+#
|
||||
+# LICENSE
|
||||
+#
|
||||
+# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
+# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
|
||||
+#
|
||||
+# This program is free software: you can redistribute it and/or modify it
|
||||
+# under the terms of the GNU General Public License as published by the
|
||||
+# Free Software Foundation, either version 3 of the License, or (at your
|
||||
+# option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful, but
|
||||
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
+# Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License along
|
||||
+# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+#
|
||||
+# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
+# gives unlimited permission to copy, distribute and modify the configure
|
||||
+# scripts that are the output of Autoconf when processing the Macro. You
|
||||
+# need not follow the terms of the GNU General Public License when using
|
||||
+# or distributing such scripts, even though portions of the text of the
|
||||
+# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
+# all other use of the material that constitutes the Autoconf Macro.
|
||||
+#
|
||||
+# This special exception to the GPL applies to versions of the Autoconf
|
||||
+# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
+# modified version of the Autoconf Macro, you may extend this special
|
||||
+# exception to the GPL to apply to your modified version as well.
|
||||
+
|
||||
+#serial 22
|
||||
+
|
||||
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||
+AC_DEFUN([AX_PTHREAD], [
|
||||
+AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
+AC_REQUIRE([AC_PROG_CC])
|
||||
+AC_REQUIRE([AC_PROG_SED])
|
||||
+AC_LANG_PUSH([C])
|
||||
+ax_pthread_ok=no
|
||||
+
|
||||
+# We used to check for pthread.h first, but this fails if pthread.h
|
||||
+# requires special compiler flags (e.g. on Tru64 or Sequent).
|
||||
+# It gets checked for in the link test anyway.
|
||||
+
|
||||
+# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
+# etcetera environment variables, and if threads linking works using
|
||||
+# them:
|
||||
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
|
||||
+ ax_pthread_save_CC="$CC"
|
||||
+ ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
+ ax_pthread_save_LIBS="$LIBS"
|
||||
+ AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
|
||||
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
+ LIBS="$PTHREAD_LIBS $LIBS"
|
||||
+ AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
|
||||
+ AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
|
||||
+ AC_MSG_RESULT([$ax_pthread_ok])
|
||||
+ if test "x$ax_pthread_ok" = "xno"; then
|
||||
+ PTHREAD_LIBS=""
|
||||
+ PTHREAD_CFLAGS=""
|
||||
+ fi
|
||||
+ CC="$ax_pthread_save_CC"
|
||||
+ CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
+ LIBS="$ax_pthread_save_LIBS"
|
||||
+fi
|
||||
+
|
||||
+# We must check for the threads library under a number of different
|
||||
+# names; the ordering is very important because some systems
|
||||
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
+# libraries is broken (non-POSIX).
|
||||
+
|
||||
+# Create a list of thread flags to try. Items starting with a "-" are
|
||||
+# C compiler flags, and other items are library names, except for "none"
|
||||
+# which indicates that we try without any flags at all, and "pthread-config"
|
||||
+# which is a program returning the flags for the Pth emulation library.
|
||||
+
|
||||
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
+
|
||||
+# The ordering *is* (sometimes) important. Some notes on the
|
||||
+# individual items follow:
|
||||
+
|
||||
+# pthreads: AIX (must check this before -lpthread)
|
||||
+# none: in case threads are in libc; should be tried before -Kthread and
|
||||
+# other compiler flags to prevent continual compiler warnings
|
||||
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
|
||||
+# (Note: HP C rejects this with "bad form for `-t' option")
|
||||
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
|
||||
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
+# doesn't hurt to check since this sometimes defines pthreads and
|
||||
+# -D_REENTRANT too), HP C (must be checked before -lpthread, which
|
||||
+# is present but should not be used directly; and before -mthreads,
|
||||
+# because the compiler interprets this as "-mt" + "-hreads")
|
||||
+# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
+# pthread: Linux, etcetera
|
||||
+# --thread-safe: KAI C++
|
||||
+# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
+
|
||||
+case $host_os in
|
||||
+
|
||||
+ freebsd*)
|
||||
+
|
||||
+ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
+ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
+
|
||||
+ ax_pthread_flags="-kthread lthread $ax_pthread_flags"
|
||||
+ ;;
|
||||
+
|
||||
+ hpux*)
|
||||
+
|
||||
+ # From the cc(1) man page: "[-mt] Sets various -D flags to enable
|
||||
+ # multi-threading and also sets -lpthread."
|
||||
+
|
||||
+ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
|
||||
+ ;;
|
||||
+
|
||||
+ openedition*)
|
||||
+
|
||||
+ # IBM z/OS requires a feature-test macro to be defined in order to
|
||||
+ # enable POSIX threads at all, so give the user a hint if this is
|
||||
+ # not set. (We don't define these ourselves, as they can affect
|
||||
+ # other portions of the system API in unpredictable ways.)
|
||||
+
|
||||
+ AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
|
||||
+ [
|
||||
+# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
|
||||
+ AX_PTHREAD_ZOS_MISSING
|
||||
+# endif
|
||||
+ ],
|
||||
+ [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
|
||||
+ ;;
|
||||
+
|
||||
+ solaris*)
|
||||
+
|
||||
+ # On Solaris (at least, for some versions), libc contains stubbed
|
||||
+ # (non-functional) versions of the pthreads routines, so link-based
|
||||
+ # tests will erroneously succeed. (N.B.: The stubs are missing
|
||||
+ # pthread_cleanup_push, or rather a function called by this macro,
|
||||
+ # so we could check for that, but who knows whether they'll stub
|
||||
+ # that too in a future libc.) So we'll check first for the
|
||||
+ # standard Solaris way of linking pthreads (-mt -lpthread).
|
||||
+
|
||||
+ ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
|
||||
+ ;;
|
||||
+esac
|
||||
+
|
||||
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
|
||||
+
|
||||
+AS_IF([test "x$GCC" = "xyes"],
|
||||
+ [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
|
||||
+
|
||||
+# The presence of a feature test macro requesting re-entrant function
|
||||
+# definitions is, on some systems, a strong hint that pthreads support is
|
||||
+# correctly enabled
|
||||
+
|
||||
+case $host_os in
|
||||
+ darwin* | hpux* | linux* | osf* | solaris*)
|
||||
+ ax_pthread_check_macro="_REENTRANT"
|
||||
+ ;;
|
||||
+
|
||||
+ aix* | freebsd*)
|
||||
+ ax_pthread_check_macro="_THREAD_SAFE"
|
||||
+ ;;
|
||||
+
|
||||
+ *)
|
||||
+ ax_pthread_check_macro="--"
|
||||
+ ;;
|
||||
+esac
|
||||
+AS_IF([test "x$ax_pthread_check_macro" = "x--"],
|
||||
+ [ax_pthread_check_cond=0],
|
||||
+ [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
|
||||
+
|
||||
+# Are we compiling with Clang?
|
||||
+
|
||||
+AC_CACHE_CHECK([whether $CC is Clang],
|
||||
+ [ax_cv_PTHREAD_CLANG],
|
||||
+ [ax_cv_PTHREAD_CLANG=no
|
||||
+ # Note that Autoconf sets GCC=yes for Clang as well as GCC
|
||||
+ if test "x$GCC" = "xyes"; then
|
||||
+ AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
|
||||
+ [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
|
||||
+# if defined(__clang__) && defined(__llvm__)
|
||||
+ AX_PTHREAD_CC_IS_CLANG
|
||||
+# endif
|
||||
+ ],
|
||||
+ [ax_cv_PTHREAD_CLANG=yes])
|
||||
+ fi
|
||||
+ ])
|
||||
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
|
||||
+
|
||||
+ax_pthread_clang_warning=no
|
||||
+
|
||||
+# Clang needs special handling, because older versions handle the -pthread
|
||||
+# option in a rather... idiosyncratic way
|
||||
+
|
||||
+if test "x$ax_pthread_clang" = "xyes"; then
|
||||
+
|
||||
+ # Clang takes -pthread; it has never supported any other flag
|
||||
+
|
||||
+ # (Note 1: This will need to be revisited if a system that Clang
|
||||
+ # supports has POSIX threads in a separate library. This tends not
|
||||
+ # to be the way of modern systems, but it's conceivable.)
|
||||
+
|
||||
+ # (Note 2: On some systems, notably Darwin, -pthread is not needed
|
||||
+ # to get POSIX threads support; the API is always present and
|
||||
+ # active. We could reasonably leave PTHREAD_CFLAGS empty. But
|
||||
+ # -pthread does define _REENTRANT, and while the Darwin headers
|
||||
+ # ignore this macro, third-party headers might not.)
|
||||
+
|
||||
+ PTHREAD_CFLAGS="-pthread"
|
||||
+ PTHREAD_LIBS=
|
||||
+
|
||||
+ ax_pthread_ok=yes
|
||||
+
|
||||
+ # However, older versions of Clang make a point of warning the user
|
||||
+ # that, in an invocation where only linking and no compilation is
|
||||
+ # taking place, the -pthread option has no effect ("argument unused
|
||||
+ # during compilation"). They expect -pthread to be passed in only
|
||||
+ # when source code is being compiled.
|
||||
+ #
|
||||
+ # Problem is, this is at odds with the way Automake and most other
|
||||
+ # C build frameworks function, which is that the same flags used in
|
||||
+ # compilation (CFLAGS) are also used in linking. Many systems
|
||||
+ # supported by AX_PTHREAD require exactly this for POSIX threads
|
||||
+ # support, and in fact it is often not straightforward to specify a
|
||||
+ # flag that is used only in the compilation phase and not in
|
||||
+ # linking. Such a scenario is extremely rare in practice.
|
||||
+ #
|
||||
+ # Even though use of the -pthread flag in linking would only print
|
||||
+ # a warning, this can be a nuisance for well-run software projects
|
||||
+ # that build with -Werror. So if the active version of Clang has
|
||||
+ # this misfeature, we search for an option to squash it.
|
||||
+
|
||||
+ AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
|
||||
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
|
||||
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
|
||||
+ # Create an alternate version of $ac_link that compiles and
|
||||
+ # links in two steps (.c -> .o, .o -> exe) instead of one
|
||||
+ # (.c -> exe), because the warning occurs only in the second
|
||||
+ # step
|
||||
+ ax_pthread_save_ac_link="$ac_link"
|
||||
+ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
|
||||
+ ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
|
||||
+ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
|
||||
+ ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
+ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
|
||||
+ AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
|
||||
+ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
|
||||
+ ac_link="$ax_pthread_save_ac_link"
|
||||
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
|
||||
+ [ac_link="$ax_pthread_2step_ac_link"
|
||||
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
|
||||
+ [break])
|
||||
+ ])
|
||||
+ done
|
||||
+ ac_link="$ax_pthread_save_ac_link"
|
||||
+ CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
+ AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
|
||||
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
|
||||
+ ])
|
||||
+
|
||||
+ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
|
||||
+ no | unknown) ;;
|
||||
+ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
|
||||
+ esac
|
||||
+
|
||||
+fi # $ax_pthread_clang = yes
|
||||
+
|
||||
+if test "x$ax_pthread_ok" = "xno"; then
|
||||
+for ax_pthread_try_flag in $ax_pthread_flags; do
|
||||
+
|
||||
+ case $ax_pthread_try_flag in
|
||||
+ none)
|
||||
+ AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
+ ;;
|
||||
+
|
||||
+ -mt,pthread)
|
||||
+ AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
|
||||
+ PTHREAD_CFLAGS="-mt"
|
||||
+ PTHREAD_LIBS="-lpthread"
|
||||
+ ;;
|
||||
+
|
||||
+ -*)
|
||||
+ AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
|
||||
+ PTHREAD_CFLAGS="$ax_pthread_try_flag"
|
||||
+ ;;
|
||||
+
|
||||
+ pthread-config)
|
||||
+ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
|
||||
+ AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
|
||||
+ PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
+ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
+ ;;
|
||||
+
|
||||
+ *)
|
||||
+ AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
|
||||
+ PTHREAD_LIBS="-l$ax_pthread_try_flag"
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
+ ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
+ ax_pthread_save_LIBS="$LIBS"
|
||||
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
+ LIBS="$PTHREAD_LIBS $LIBS"
|
||||
+
|
||||
+ # Check for various functions. We must include pthread.h,
|
||||
+ # since some functions may be macros. (On the Sequent, we
|
||||
+ # need a special flag -Kthread to make this header compile.)
|
||||
+ # We check for pthread_join because it is in -lpthread on IRIX
|
||||
+ # while pthread_create is in libc. We check for pthread_attr_init
|
||||
+ # due to DEC craziness with -lpthreads. We check for
|
||||
+ # pthread_cleanup_push because it is one of the few pthread
|
||||
+ # functions on Solaris that doesn't have a non-functional libc stub.
|
||||
+ # We try pthread_create on general principles.
|
||||
+
|
||||
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
||||
+# if $ax_pthread_check_cond
|
||||
+# error "$ax_pthread_check_macro must be defined"
|
||||
+# endif
|
||||
+ static void routine(void *a) { a = 0; }
|
||||
+ static void *start_routine(void *a) { return a; }],
|
||||
+ [pthread_t th; pthread_attr_t attr;
|
||||
+ pthread_create(&th, 0, start_routine, 0);
|
||||
+ pthread_join(th, 0);
|
||||
+ pthread_attr_init(&attr);
|
||||
+ pthread_cleanup_push(routine, 0);
|
||||
+ pthread_cleanup_pop(0) /* ; */])],
|
||||
+ [ax_pthread_ok=yes],
|
||||
+ [])
|
||||
+
|
||||
+ CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
+ LIBS="$ax_pthread_save_LIBS"
|
||||
+
|
||||
+ AC_MSG_RESULT([$ax_pthread_ok])
|
||||
+ AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
|
||||
+
|
||||
+ PTHREAD_LIBS=""
|
||||
+ PTHREAD_CFLAGS=""
|
||||
+done
|
||||
+fi
|
||||
+
|
||||
+# Various other checks:
|
||||
+if test "x$ax_pthread_ok" = "xyes"; then
|
||||
+ ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
+ ax_pthread_save_LIBS="$LIBS"
|
||||
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
+ LIBS="$PTHREAD_LIBS $LIBS"
|
||||
+
|
||||
+ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
+ AC_CACHE_CHECK([for joinable pthread attribute],
|
||||
+ [ax_cv_PTHREAD_JOINABLE_ATTR],
|
||||
+ [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
|
||||
+ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||
+ [int attr = $ax_pthread_attr; return attr /* ; */])],
|
||||
+ [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
|
||||
+ [])
|
||||
+ done
|
||||
+ ])
|
||||
+ AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
|
||||
+ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
|
||||
+ test "x$ax_pthread_joinable_attr_defined" != "xyes"],
|
||||
+ [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
|
||||
+ [$ax_cv_PTHREAD_JOINABLE_ATTR],
|
||||
+ [Define to necessary symbol if this constant
|
||||
+ uses a non-standard name on your system.])
|
||||
+ ax_pthread_joinable_attr_defined=yes
|
||||
+ ])
|
||||
+
|
||||
+ AC_CACHE_CHECK([whether more special flags are required for pthreads],
|
||||
+ [ax_cv_PTHREAD_SPECIAL_FLAGS],
|
||||
+ [ax_cv_PTHREAD_SPECIAL_FLAGS=no
|
||||
+ case $host_os in
|
||||
+ solaris*)
|
||||
+ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ ])
|
||||
+ AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
|
||||
+ test "x$ax_pthread_special_flags_added" != "xyes"],
|
||||
+ [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
|
||||
+ ax_pthread_special_flags_added=yes])
|
||||
+
|
||||
+ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||
+ [ax_cv_PTHREAD_PRIO_INHERIT],
|
||||
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||
+ [[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||
+ [ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||
+ [ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||
+ ])
|
||||
+ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
|
||||
+ test "x$ax_pthread_prio_inherit_defined" != "xyes"],
|
||||
+ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
|
||||
+ ax_pthread_prio_inherit_defined=yes
|
||||
+ ])
|
||||
+
|
||||
+ CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
+ LIBS="$ax_pthread_save_LIBS"
|
||||
+
|
||||
+ # More AIX lossage: compile with *_r variant
|
||||
+ if test "x$GCC" != "xyes"; then
|
||||
+ case $host_os in
|
||||
+ aix*)
|
||||
+ AS_CASE(["x/$CC"],
|
||||
+ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
|
||||
+ [#handle absolute path differently from PATH based program lookup
|
||||
+ AS_CASE(["x$CC"],
|
||||
+ [x/*],
|
||||
+ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
|
||||
+ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
|
||||
+
|
||||
+AC_SUBST([PTHREAD_LIBS])
|
||||
+AC_SUBST([PTHREAD_CFLAGS])
|
||||
+AC_SUBST([PTHREAD_CC])
|
||||
+
|
||||
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
+if test "x$ax_pthread_ok" = "xyes"; then
|
||||
+ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
|
||||
+ :
|
||||
+else
|
||||
+ ax_pthread_ok=no
|
||||
+ $2
|
||||
+fi
|
||||
+AC_LANG_POP
|
||||
+])dnl AX_PTHREAD
|
||||
41
packages/addons/addon-depends/python-libusb1/package.mk
Normal file
41
packages/addons/addon-depends/python-libusb1/package.mk
Normal file
@@ -0,0 +1,41 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="python-libusb1"
|
||||
PKG_VERSION="1.5.3"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="https://github.com/vpelletier/python-libusb1"
|
||||
PKG_URL="https://github.com/vpelletier/$PKG_NAME/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain Python distutilscross:host"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="python"
|
||||
PKG_SHORTDESC="Pure-python wrapper for libusb-1.0"
|
||||
PKG_LONGDESC="Pure-python wrapper for libusb-1.0"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
python setup.py build
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
:
|
||||
}
|
||||
@@ -28,7 +28,7 @@ PKG_SECTION="rsyslog"
|
||||
PKG_SHORTDESC="libestr: some essentials for string handling (and a bit more)"
|
||||
PKG_LONGDESC="libestr: some essentials for string handling (and a bit more)"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared \
|
||||
|
||||
@@ -28,7 +28,7 @@ PKG_SECTION="rsyslog"
|
||||
PKG_SHORTDESC="libfastjson"
|
||||
PKG_LONGDESC="libfastjson"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared \
|
||||
|
||||
@@ -27,7 +27,7 @@ PKG_DEPENDS_TARGET="toolchain systemd"
|
||||
PKG_SHORTDESC="liblogging"
|
||||
PKG_LONGDESC="liblogging"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-man-pages \
|
||||
|
||||
@@ -28,7 +28,7 @@ PKG_SECTION="rsyslog"
|
||||
PKG_SHORTDESC="liblognorm"
|
||||
PKG_LONGDESC="liblognorm"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared \
|
||||
|
||||
@@ -28,7 +28,7 @@ PKG_SECTION="rsyslog"
|
||||
PKG_SHORTDESC="librelp"
|
||||
PKG_LONGDESC="librelp"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-tls \
|
||||
|
||||
@@ -48,6 +48,9 @@ pre_make_target() {
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
aarch64)
|
||||
export GOARCH=arm64
|
||||
;;
|
||||
esac
|
||||
|
||||
export GOOS=linux
|
||||
|
||||
@@ -29,4 +29,4 @@ PKG_SHORTDESC=""
|
||||
PKG_LONGDESC=""
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
@@ -29,7 +29,7 @@ PKG_SHORTDESC="serdisplib: a lcd control library"
|
||||
PKG_LONGDESC="Library to drive serial/parallel/usb displays with built-in controllers"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--prefix=$SYSROOT_PREFIX/usr \
|
||||
--bindir=$SYSROOT_PREFIX/usr/bin \
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="diffutils"
|
||||
PKG_VERSION="3.3"
|
||||
PKG_VERSION="3.5"
|
||||
PKG_REV="0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@@ -27,7 +27,7 @@ PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="GNU Diffutils"
|
||||
PKG_LONGDESC="GNU Diffutils is a package of several programs related to finding differences between files."
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-nls \
|
||||
--without-libsigsegv-prefix \
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="file"
|
||||
PKG_VERSION="5.25"
|
||||
PKG_VERSION="5.29"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="BSD"
|
||||
@@ -28,7 +28,7 @@ PKG_DEPENDS_TARGET="toolchain zlib file:host"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="file: File type identification utility"
|
||||
PKG_LONGDESC="These are the sources to Darwin's file(1) utility and master magic(4) file, now maintained by Christos Zoulas. The file(1) utility is used to determine the types of various files."
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--enable-fsect-man5 --enable-static --disable-shared"
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-fsect-man5 --enable-static --disable-shared"
|
||||
|
||||
@@ -29,7 +29,7 @@ PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="mc: visual file manager"
|
||||
PKG_LONGDESC="mc is a visual file manager, licensed under GNU General Public License and therefore qualifies as Free Software. It's a feature rich full-screen text mode application that allows you to copy, move and delete files and whole directory trees, search for files and run commands in the subshell. Internal viewer and editor are included"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--sysconfdir=/storage/.kodi/addons/virtual.system-tools/etc \
|
||||
|
||||
@@ -27,7 +27,7 @@ PKG_DEPENDS_TARGET="toolchain fuse libmtp glib"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="MTPfs is a FUSE filesystem that supports reading and writing from any MTP device"
|
||||
PKG_LONGDESC="MTPfs is a FUSE filesystem that supports reading and writing from any MTP device"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-mad"
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="nmon"
|
||||
PKG_VERSION="411b08f"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/axibase/nmon"
|
||||
PKG_URL="https://github.com/axibase/nmon/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain netbsd-curses"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="Systems administrator, tuner, benchmark tool gives you a huge amount of important performance information in one go"
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
case $ARCH in
|
||||
x86_64)
|
||||
arch="X86"
|
||||
;;
|
||||
*)
|
||||
arch="arm"
|
||||
;;
|
||||
esac
|
||||
CFLAGS="$CFLAGS -g -O3 -Wall -D JFS -D GETUSER -D LARGEMEM"
|
||||
LDFLAGS="$LDFLAGS -lncurses -ltermcap -lm -g"
|
||||
$CC -o nmon lmon*.c $CFLAGS $LDFLAGS -D $arch -D KERNEL_2_6_18
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
:
|
||||
}
|
||||
@@ -27,7 +27,7 @@ PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="tools"
|
||||
PKG_SHORTDESC="GNU patch"
|
||||
PKG_LONGDESC="Patch takes a patch file containing a difference listing produced by the diff program and applies those differences to one or more original files, producing patched versions"
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-xattr"
|
||||
|
||||
|
||||
61
packages/addons/addon-depends/tslib/package.mk
Normal file
61
packages/addons/addon-depends/tslib/package.mk
Normal file
@@ -0,0 +1,61 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="tslib"
|
||||
PKG_VERSION="1.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/kergoth/tslib"
|
||||
PKG_URL="https://github.com/kergoth/tslib/releases/download/1.1/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain evtest"
|
||||
PKG_SECTION="service/system"
|
||||
PKG_SHORTDESC="Touchscreen access library with ts_uinput_touch daemon."
|
||||
PKG_LONGDESC="Touchscreen access library with ts_uinput_touch daemon."
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
TSLIB_MODULES_ENABLED="linear dejitter variance pthres ucb1x00 tatung input galax dmc touchkit st1232 waveshare"
|
||||
TSLIB_MODULES_DISABLED="arctic2 corgi collie h3600 linear_h2200 mk712 cy8mrln_palmpre"
|
||||
TSLIB_BUILD_STATIC="yes" # no .so files (easy to manage)
|
||||
|
||||
pre_configure_target() {
|
||||
local OPTS_MODULES=""
|
||||
|
||||
if [ "$TSLIB_BUILD_STATIC" = "yes" ]; then
|
||||
OPTS_MODULES="--enable-static --disable-shared"
|
||||
for module in $TSLIB_MODULES_ENABLED; do
|
||||
OPTS_MODULES="$OPTS_MODULES --enable-$module=static"
|
||||
done
|
||||
fi
|
||||
|
||||
for module in $TSLIB_MODULES_DISABLED; do
|
||||
OPTS_MODULES="$OPTS_MODULES --disable-$module"
|
||||
done
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="$OPTS_MODULES \
|
||||
--sysconfdir=/storage/.kodi/userdata/addon_data/service.touchscreen"
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -fr $INSTALL/etc
|
||||
rm -fr $INSTALL/storage
|
||||
|
||||
debug_strip $INSTALL/usr/bin
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
From f60540a1e0c120dfb6a7452470b3e56bee91c7d7 Mon Sep 17 00:00:00 2001
|
||||
From: Dirk Gerdes <dirk.gerdes@googlemail.com>
|
||||
Date: Mon, 22 Dec 2014 11:07:13 +0100
|
||||
Subject: [PATCH] Added support for additional model of eGalax Touchscreen
|
||||
|
||||
---
|
||||
plugins/galax-raw.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/plugins/galax-raw.c b/plugins/galax-raw.c
|
||||
index c8689e2..6cacc56 100644
|
||||
--- a/plugins/galax-raw.c
|
||||
+++ b/plugins/galax-raw.c
|
||||
@@ -93,8 +93,9 @@ static int ts_galax_check_fd (struct tslib_galax *i)
|
||||
|
||||
if ((ioctl(ts->fd, EVIOCGID, &infos) < 0)) {
|
||||
fprintf (stderr, "tslib: warning, can not read device identifier\n");
|
||||
- } else if (infos.bustype != 3 || infos.vendor != 0x0EEF || infos.product != 0x0001) {
|
||||
- fprintf (stderr, "tslib: this is not an eGalax touchscreen (3,0x0EEF,1,0x0112)\n"
|
||||
+ } else if (infos.bustype != 3 || infos.vendor != 0x0EEF
|
||||
+ || (infos.product != 0x0001 && infos.product != 0x7200 && infos.product != 0x7201 && infos.product != 0xC000)) {
|
||||
+ fprintf (stderr, "tslib: this is not an eGalax touchscreen (3,0x0EEF,1/7200/7201/C000,0x0112)\n"
|
||||
"Your device: bus=%d, vendor=0x%X, product=0x%X, version=0x%X\n",infos.bustype, infos.vendor, infos.product, infos.version);
|
||||
return -1;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
diff -aurN a/plugins/linear.c b/plugins/linear.c
|
||||
--- a/plugins/linear.c 2013-08-08 02:23:04.000000000 +0200
|
||||
+++ b/plugins/linear.c 2015-09-04 20:21:50.376205701 +0200
|
||||
@@ -187,11 +187,11 @@
|
||||
for (index = 0; index < 7; index++)
|
||||
if (fscanf(pcal_fd, "%d", &lin->a[index]) != 1) break;
|
||||
fscanf(pcal_fd, "%d %d", &lin->cal_res_x, &lin->cal_res_y);
|
||||
-#ifdef DEBUG
|
||||
+/*#ifdef DEBUG*/
|
||||
printf("Linear calibration constants: ");
|
||||
for(index=0;index<7;index++) printf("%d ",lin->a[index]);
|
||||
printf("\n");
|
||||
-#endif /*DEBUG*/
|
||||
+/*#endif*/ /*DEBUG*/
|
||||
fclose(pcal_fd);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,43 @@
|
||||
--- a/stdext.h.orig 2016-02-07 12:55:05.958100061 +0100
|
||||
+++ b/stdext.h 2016-02-07 12:56:49.583375455 +0100
|
||||
@@ -3,8 +3,38 @@
|
||||
|
||||
#if __GNUC__ >= 4
|
||||
|
||||
-# include <tr1/functional>
|
||||
-# include <tr1/memory>
|
||||
+#if __GNUC__ >= 6
|
||||
+
|
||||
+#include <memory>
|
||||
+#include <functional>
|
||||
+
|
||||
+namespace std {
|
||||
+namespace tr1 {
|
||||
+
|
||||
+ using std::bind;
|
||||
+ using std::shared_ptr;
|
||||
+ using std::weak_ptr;
|
||||
+
|
||||
+ namespace placeholders {
|
||||
+ using std::placeholders::_1;
|
||||
+ using std::placeholders::_2;
|
||||
+ using std::placeholders::_3;
|
||||
+ using std::placeholders::_4;
|
||||
+ using std::placeholders::_5;
|
||||
+ using std::placeholders::_6;
|
||||
+ using std::placeholders::_7;
|
||||
+ using std::placeholders::_8;
|
||||
+ using std::placeholders::_9;
|
||||
+ }
|
||||
+} // namespace tr1
|
||||
+} // namespace std
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+ # include <tr1/functional>
|
||||
+ # include <tr1/memory>
|
||||
+
|
||||
+# endif
|
||||
|
||||
#else
|
||||
|
||||
@@ -34,9 +34,9 @@ PKG_AUTORECONF="no"
|
||||
|
||||
pre_configure_target() {
|
||||
export CFLAGS="$CFLAGS -fPIC"
|
||||
export CXXFLAGS="$CXXFLAGS -fPIC"
|
||||
export CXXFLAGS="$CXXFLAGS -fPIC -Wno-narrowing"
|
||||
export LDFLAGS="$LDFLAGS -fPIC"
|
||||
export LIBS="-L$SYSROOT_PREFIX/usr/lib/iconv"
|
||||
export LIBS="-L$SYSROOT_PREFIX/usr/lib/iconv -lpcre -lpcrecpp"
|
||||
}
|
||||
|
||||
make_target() {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -Naur a/import.cpp b/import.cpp
|
||||
--- a/import.cpp 2016-08-23 15:16:10.362347074 +0100
|
||||
+++ b/import.cpp 2016-08-23 15:16:22.814431356 +0100
|
||||
@@ -250,7 +250,7 @@
|
||||
char *cImport::Add2Description(char *description, const char *Name, int Value)
|
||||
{
|
||||
char *value=NULL;
|
||||
- if (asprintf(&value,"%i",Value)==-1) return false;
|
||||
+ if (asprintf(&value,"%i",Value)==-1) return NULL;
|
||||
description = strcatrealloc(description,Name);
|
||||
description = strcatrealloc(description,": ");
|
||||
description = strcatrealloc(description,value);
|
||||
42
packages/addons/addon-depends/whois/package.mk
Normal file
42
packages/addons/addon-depends/whois/package.mk
Normal file
@@ -0,0 +1,42 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# This Program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This Program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="whois"
|
||||
PKG_VERSION="5.2.13"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.linux.it/~md/software/"
|
||||
PKG_URL="https://github.com/rfc1036/whois/archive/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="system"
|
||||
PKG_SHORTDESC="whois is a client-side application which queries the whois directory service for information pertaining to a particular domain name."
|
||||
PKG_LONGDESC="whois is a client-side application which queries the whois directory service for information pertaining to a particular domain name."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
make mkpasswd
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: # nop
|
||||
}
|
||||
@@ -1,3 +1,9 @@
|
||||
8.1.106
|
||||
- Update to 55.0.2883.75
|
||||
|
||||
8.1.105
|
||||
- Update to 55.0.2883.44
|
||||
|
||||
8.0.104
|
||||
- Update to 53.0.2785.92
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="chromium"
|
||||
PKG_VERSION="53.0.2785.92"
|
||||
PKG_REV="104"
|
||||
PKG_VERSION="55.0.2883.75"
|
||||
PKG_REV="106"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="Mixed"
|
||||
PKG_SITE="http://www.chromium.org/Home"
|
||||
@@ -37,21 +37,17 @@ PKG_ADDON_TYPE="xbmc.python.script"
|
||||
PKG_ADDON_PROVIDES="executable"
|
||||
|
||||
pre_make_target() {
|
||||
export MAKEFLAGS="-j4"
|
||||
|
||||
strip_lto
|
||||
|
||||
# https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/9JX1N2nf4PU/discussion
|
||||
touch chrome/test/data/webui/i18n_process_css_test.html
|
||||
|
||||
sed -i -e 's/@WIDEVINE_VERSION@/Pinkie Pie/' third_party/widevine/cdm/stub/widevine_cdm_version.h
|
||||
}
|
||||
|
||||
make_target() {
|
||||
# CFLAGS are passed through release_extra_cflags below
|
||||
export -n CFLAGS CXXFLAGS
|
||||
|
||||
export LDFLAGS="$LDFLAGS -ludev"
|
||||
export LD=$CXX
|
||||
|
||||
# Use Python 2
|
||||
find . -name '*.py' -exec sed -i -r "s|/usr/bin/python$|$ROOT/$TOOLCHAIN/bin/python|g" {} +
|
||||
|
||||
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
|
||||
# Note: These are for OpenELEC use ONLY. For your own distribution, please
|
||||
@@ -61,61 +57,66 @@ make_target() {
|
||||
_google_default_client_id=740889307901-4bkm4e0udppnp1lradko85qsbnmkfq3b.apps.googleusercontent.com
|
||||
_google_default_client_secret=9TJlhL661hvShQub4cWhANXa
|
||||
|
||||
local _chromium_conf=(
|
||||
-Dgoogle_api_key=$_google_api_key
|
||||
-Dgoogle_default_client_id=$_google_default_client_id
|
||||
-Dgoogle_default_client_secret=$_google_default_client_secret
|
||||
-Dtarget_arch=x64
|
||||
-Dfastbuild=2
|
||||
-Dwerror=
|
||||
-Dclang=0
|
||||
-Dpython_ver=2.7
|
||||
-Dlinux_link_gsettings=0
|
||||
-Dlinux_strip_binary=1
|
||||
-Dlinux_use_bundled_binutils=0
|
||||
-Dlinux_use_bundled_gold=0
|
||||
-Dlinux_use_gold_flags=0
|
||||
-Dicu_use_data_file_flag=1
|
||||
-Dlogging_like_official_build=1
|
||||
-Dtracing_like_official_build=1
|
||||
-Dfieldtrial_testing_like_official_build=1
|
||||
-Dremove_webcore_debug_symbols=1
|
||||
-Drelease_extra_cflags="$CFLAGS"
|
||||
-Dlibspeechd_h_prefix=speech-dispatcher/
|
||||
-Dffmpeg_branding=Chrome
|
||||
-Dproprietary_codecs=1
|
||||
-Duse_system_bzip2=1
|
||||
-Duse_system_flac=0
|
||||
-Duse_system_ffmpeg=0
|
||||
-Duse_system_harfbuzz=1
|
||||
-Duse_system_icu=0
|
||||
-Duse_system_libevent=0
|
||||
-Duse_system_libjpeg=1
|
||||
-Duse_system_libpng=1
|
||||
-Duse_system_libvpx=0
|
||||
-Duse_system_libxml=0
|
||||
-Duse_system_snappy=0
|
||||
-Duse_system_xdg_utils=0
|
||||
-Duse_system_yasm=1
|
||||
-Duse_system_zlib=0
|
||||
-Duse_mojo=0
|
||||
-Duse_gconf=0
|
||||
-Duse_gnome_keyring=0
|
||||
-Duse_pulseaudio=0
|
||||
-Duse_kerberos=0
|
||||
-Duse_cups=0
|
||||
-Denable_hangout_services_extension=1
|
||||
-Ddisable_fatal_linker_warnings=1
|
||||
-Dsysroot=$SYSROOT_PREFIX
|
||||
-Ddisable_glibc=1
|
||||
-Denable_widevine=1
|
||||
-Ddisable_nacl=1
|
||||
-Ddisable_pnacl=1)
|
||||
local _flags=(
|
||||
'is_clang=false'
|
||||
'clang_use_chrome_plugins=false'
|
||||
'symbol_level=0'
|
||||
'is_debug=false'
|
||||
'fatal_linker_warnings=false'
|
||||
'treat_warnings_as_errors=false'
|
||||
'fieldtrial_testing_like_official_build=true'
|
||||
'remove_webcore_debug_symbols=true'
|
||||
'ffmpeg_branding="Chrome"'
|
||||
'proprietary_codecs=true'
|
||||
'link_pulseaudio=true'
|
||||
'linux_use_bundled_binutils=false'
|
||||
'use_allocator="none"'
|
||||
'use_cups=false'
|
||||
'use_gconf=false'
|
||||
'use_gnome_keyring=false'
|
||||
'use_gold=false'
|
||||
'use_gtk3=false'
|
||||
'use_kerberos=false'
|
||||
'use_pulseaudio=false'
|
||||
'use_sysroot=true'
|
||||
"target_sysroot=\"${SYSROOT_PREFIX}\""
|
||||
'enable_hangout_services_extension=true'
|
||||
'enable_widevine=true'
|
||||
'enable_nacl=false'
|
||||
'enable_nacl_nonsfi=false'
|
||||
"google_api_key=\"${_google_api_key}\""
|
||||
"google_default_client_id=\"${_google_default_client_id}\""
|
||||
"google_default_client_secret=\"${_google_default_client_secret}\""
|
||||
)
|
||||
|
||||
./build/linux/unbundle/replace_gyp_files.py "${_chromium_conf[@]}"
|
||||
./build/gyp_chromium --depth=. "${_chromium_conf[@]}"
|
||||
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
|
||||
local _system_libs=(
|
||||
harfbuzz-ng
|
||||
libjpeg
|
||||
libpng
|
||||
libxslt
|
||||
yasm
|
||||
)
|
||||
|
||||
ninja -C out/Release chrome chrome_sandbox
|
||||
# Remove bundled libraries for which we will use the system copies; this
|
||||
# *should* do what the remove_bundled_libraries.py script does, with the
|
||||
# added benefit of not having to list all the remaining libraries
|
||||
local _lib
|
||||
for _lib in ${_system_libs}; do
|
||||
find -type f -path "*third_party/$_lib/*" \
|
||||
\! -path "*third_party/$_lib/chromium/*" \
|
||||
\! -path "*third_party/$_lib/google/*" \
|
||||
\! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
|
||||
-delete
|
||||
done
|
||||
|
||||
./build/linux/unbundle/replace_gn_files.py --system-libraries "${_system_libs}"
|
||||
./third_party/libaddressinput/chromium/tools/update-strings.py
|
||||
|
||||
./tools/gn/bootstrap/bootstrap.py --gn-gen-args "${_flags[*]}"
|
||||
./out/Release/gn gen out/Release --args="${_flags[*]}" --script-executable=$ROOT/$TOOLCHAIN/bin/python
|
||||
|
||||
ninja -C out/Release chrome chrome_sandbox widevinecdmadapter
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
@@ -128,9 +129,9 @@ addon() {
|
||||
cp -P $PKG_BUILD/out/Release/chrome_sandbox $ADDON_BUILD/$PKG_ADDON_ID/bin/chrome-sandbox
|
||||
cp -P $PKG_BUILD/out/Release/{*.pak,*.dat,*.bin,libwidevinecdmadapter.so} $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -PR $PKG_BUILD/out/Release/locales $ADDON_BUILD/$PKG_ADDON_ID/bin/
|
||||
cp -PR $PKG_BUILD/out/Release/gen/content/content_resources.pak $ADDON_BUILD/$PKG_ADDON_ID/bin/
|
||||
|
||||
$STRIP $ADDON_BUILD/$PKG_ADDON_ID/bin/chromium.bin
|
||||
$STRIP $ADDON_BUILD/$PKG_ADDON_ID/bin/chrome-sandbox
|
||||
debug_strip $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
# config
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
@@ -151,7 +152,8 @@ addon() {
|
||||
cp -PL $(get_build_dir gtk+)/.install_pkg/usr/lib/libgtk-x11-2.0.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# harfbuzz
|
||||
cp -PL $(get_build_dir harfbuzz)/.install_pkg/usr/lib/libharfbuzz.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir harfbuzz)/.install_pkg/usr/lib/libharfbuzz.so* $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir harfbuzz)/.install_pkg/usr/lib/libharfbuzz-icu.so* $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
# gdk-pixbuf
|
||||
cp -PL $(get_build_dir gdk-pixbuf)/.install_pkg/usr/lib/libgdk_pixbuf-2.0.so.0 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
@@ -0,0 +1,639 @@
|
||||
Description: Enables using VA-API hardware acceleration in Linux. The patch for bpf_gpu_policy_linux.cc initially came from https://codereview.chromium.org/15955009/diff/92001/content/common/sandbox_linux/bpf_gpu_policy_linux.cc. The code in bpf_gpu_policy_linux.cc was then updated by Steven Newbury to support Nvidia drivers.
|
||||
|
||||
Index: dev/chrome/browser/about_flags.cc
|
||||
===================================================================
|
||||
--- dev.orig/chrome/browser/about_flags.cc
|
||||
+++ dev/chrome/browser/about_flags.cc
|
||||
@@ -947,7 +947,7 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
"disable-accelerated-video-decode",
|
||||
IDS_FLAGS_ACCELERATED_VIDEO_DECODE_NAME,
|
||||
IDS_FLAGS_ACCELERATED_VIDEO_DECODE_DESCRIPTION,
|
||||
- kOsMac | kOsWin | kOsCrOS,
|
||||
+ kOsAll,
|
||||
SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
|
||||
},
|
||||
#if defined(USE_ASH)
|
||||
Index: dev/content/common/BUILD.gn
|
||||
===================================================================
|
||||
--- dev.orig/content/common/BUILD.gn
|
||||
+++ dev/content/common/BUILD.gn
|
||||
@@ -11,6 +11,49 @@ if (is_mac) {
|
||||
import("//build/config/mac/mac_sdk.gni")
|
||||
}
|
||||
|
||||
+if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") {
|
||||
+ action("libva_generate_stubs") {
|
||||
+ extra_header = "../../media/gpu/va_stub_header.fragment"
|
||||
+
|
||||
+ script = "../../tools/generate_stubs/generate_stubs.py"
|
||||
+ sources = [
|
||||
+ "../../media/gpu/va.sigs",
|
||||
+ ]
|
||||
+ inputs = [
|
||||
+ extra_header,
|
||||
+ ]
|
||||
+ sources += [ "../../media/gpu/va_x11.sigs" ]
|
||||
+ if (use_ozone) {
|
||||
+ sources += [
|
||||
+ "../../media/gpu/va_drm.sigs",
|
||||
+ "va_wayland.sigs",
|
||||
+ ]
|
||||
+ }
|
||||
+ stubs_filename_root = "va_stubs"
|
||||
+
|
||||
+ outputs = [
|
||||
+ "$target_gen_dir/$stubs_filename_root.cc",
|
||||
+ "$target_gen_dir/$stubs_filename_root.h",
|
||||
+ ]
|
||||
+ args = [
|
||||
+ "-i",
|
||||
+ rebase_path("$target_gen_dir", root_build_dir),
|
||||
+ "-o",
|
||||
+ rebase_path("$target_gen_dir", root_build_dir),
|
||||
+ "-t",
|
||||
+ "posix_stubs",
|
||||
+ "-e",
|
||||
+ rebase_path(extra_header, root_build_dir),
|
||||
+ "-s",
|
||||
+ stubs_filename_root,
|
||||
+ "-p",
|
||||
+ "content/common",
|
||||
+ ]
|
||||
+
|
||||
+ args += rebase_path(sources, root_build_dir)
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
source_set("common") {
|
||||
# Targets external to content should always link to the public API.
|
||||
# In addition, targets outside of the content component (shell and tests)
|
||||
@@ -502,6 +545,15 @@ source_set("common") {
|
||||
|
||||
if (use_seccomp_bpf) {
|
||||
defines += [ "USE_SECCOMP_BPF" ]
|
||||
+ if (current_cpu != "arm" && is_desktop_linux) {
|
||||
+ sources += get_target_outputs(":libva_generate_stubs")
|
||||
+ deps += [ ":libva_generate_stubs" ]
|
||||
+ configs += [ "//third_party/libva:libva_config" ]
|
||||
+ if (use_ozone) {
|
||||
+ configs += [ "//build/config/linux:x11" ]
|
||||
+ deps += [ "//third_party/wayland:wayland_client" ]
|
||||
+ }
|
||||
+ }
|
||||
} else {
|
||||
if (is_linux) {
|
||||
sources -= [
|
||||
Index: dev/content/common/sandbox_linux/bpf_gpu_policy_linux.cc
|
||||
===================================================================
|
||||
--- dev.orig/content/common/sandbox_linux/bpf_gpu_policy_linux.cc
|
||||
+++ dev/content/common/sandbox_linux/bpf_gpu_policy_linux.cc
|
||||
@@ -24,6 +24,12 @@
|
||||
#include "base/memory/ptr_util.h"
|
||||
#include "base/strings/stringprintf.h"
|
||||
#include "build/build_config.h"
|
||||
+
|
||||
+#if !defined(__arm__)
|
||||
+// Auto-generated for dlopen libva libraries
|
||||
+#include "content/common/va_stubs.h"
|
||||
+#endif
|
||||
+
|
||||
#include "content/common/sandbox_linux/sandbox_bpf_base_policy_linux.h"
|
||||
#include "content/common/sandbox_linux/sandbox_seccomp_bpf_linux.h"
|
||||
#include "content/common/set_process_title.h"
|
||||
@@ -35,6 +41,27 @@
|
||||
#include "sandbox/linux/syscall_broker/broker_process.h"
|
||||
#include "sandbox/linux/system_headers/linux_syscalls.h"
|
||||
|
||||
+#if !defined(__arm__)
|
||||
+#include "third_party/libva/va/va.h"
|
||||
+#include "third_party/libva/va/va_backend.h"
|
||||
+#if defined(USE_X11)
|
||||
+#include "third_party/libva/va/va_x11.h"
|
||||
+#include "ui/gfx/x/x11_types.h"
|
||||
+#elif defined(USE_OZONE)
|
||||
+#include "third_party/libva/va/va_drm.h"
|
||||
+#include "third_party/libva/va/va_drmcommon.h"
|
||||
+#endif
|
||||
+#endif
|
||||
+
|
||||
+#define DRIVER_EXTENSION "_drv_video.so"
|
||||
+#if defined(__x86_64__)
|
||||
+#define VA_DRIVERS_PATH "/usr/lib/x86_64-linux-gnu/dri"
|
||||
+#elif defined(__i386__)
|
||||
+#define VA_DRIVERS_PATH "/usr/lib/i386-linux-gnu/dri"
|
||||
+#elif defined(__aarch64__)
|
||||
+#define VA_DRIVERS_PATH "/usr/lib/aarch64-linux-gnu/dri"
|
||||
+#endif
|
||||
+
|
||||
using sandbox::arch_seccomp_data;
|
||||
using sandbox::bpf_dsl::Allow;
|
||||
using sandbox::bpf_dsl::ResultExpr;
|
||||
@@ -43,6 +70,17 @@ using sandbox::syscall_broker::BrokerFil
|
||||
using sandbox::syscall_broker::BrokerProcess;
|
||||
using sandbox::SyscallSets;
|
||||
|
||||
+#if !defined(__arm__)
|
||||
+using content_common::kModuleVa;
|
||||
+#if defined(USE_X11)
|
||||
+using content_common::kModuleVa_x11;
|
||||
+#elif defined(USE_OZONE)
|
||||
+using content_common::kModuleVa_drm;
|
||||
+#endif
|
||||
+using content_common::InitializeStubs;
|
||||
+using content_common::StubPathMap;
|
||||
+#endif
|
||||
+
|
||||
namespace content {
|
||||
|
||||
namespace {
|
||||
@@ -97,7 +135,7 @@ inline bool UseLibV4L2() {
|
||||
|
||||
bool IsAcceleratedVaapiVideoEncodeEnabled() {
|
||||
bool accelerated_encode_enabled = false;
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
const base::CommandLine& command_line =
|
||||
*base::CommandLine::ForCurrentProcess();
|
||||
accelerated_encode_enabled =
|
||||
@@ -282,6 +320,32 @@ ResultExpr GpuProcessPolicy::EvaluateSys
|
||||
}
|
||||
}
|
||||
|
||||
+#if !defined(__arm__)
|
||||
+static VADisplay VaapiGetVADisplay() {
|
||||
+ StubPathMap paths;
|
||||
+ VADisplay va_display;
|
||||
+ paths[kModuleVa].push_back("libva.so.1");
|
||||
+#if defined(USE_OZONE)
|
||||
+ paths[kModuleVa_drm].push_back("libva-drm.so.1");
|
||||
+#elif defined (USE_X11)
|
||||
+ paths[kModuleVa_x11].push_back("libva-x11.so.1");
|
||||
+#endif
|
||||
+ if (!InitializeStubs(paths)) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+#if defined(USE_OZONE)
|
||||
+ va_display = vaGetDisplayDRM(drm_fd_.get());
|
||||
+#elif defined(USE_X11)
|
||||
+ va_display = vaGetDisplay(gfx::GetXDisplay());
|
||||
+#endif
|
||||
+ if (!vaDisplayIsValid(va_display)) {
|
||||
+ LOG(WARNING) << "Unable to get display.";
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ return va_display;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
bool GpuProcessPolicy::PreSandboxHook() {
|
||||
// Warm up resources needed by the policy we're about to enable and
|
||||
// eventually start a broker process.
|
||||
@@ -295,32 +359,75 @@ bool GpuProcessPolicy::PreSandboxHook()
|
||||
GpuBrokerProcessPolicy::Create,
|
||||
std::vector<BrokerFilePermission>()); // No extra files in whitelist.
|
||||
|
||||
+#if !defined(__arm__)
|
||||
if (IsArchitectureX86_64() || IsArchitectureI386()) {
|
||||
// Accelerated video dlopen()'s some shared objects
|
||||
// inside the sandbox, so preload them now.
|
||||
if (IsAcceleratedVaapiVideoEncodeEnabled() ||
|
||||
IsAcceleratedVideoDecodeEnabled()) {
|
||||
- const char* I965DrvVideoPath = NULL;
|
||||
- const char* I965HybridDrvVideoPath = NULL;
|
||||
-
|
||||
- if (IsArchitectureX86_64()) {
|
||||
- I965DrvVideoPath = "/usr/lib64/va/drivers/i965_drv_video.so";
|
||||
- I965HybridDrvVideoPath = "/usr/lib64/va/drivers/hybrid_drv_video.so";
|
||||
- } else if (IsArchitectureI386()) {
|
||||
- I965DrvVideoPath = "/usr/lib/va/drivers/i965_drv_video.so";
|
||||
- }
|
||||
-
|
||||
- dlopen(I965DrvVideoPath, RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
- if (I965HybridDrvVideoPath)
|
||||
- dlopen(I965HybridDrvVideoPath, RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
- dlopen("libva.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
+ // Init a VA Context, get driver name (and path), close context and preload
|
||||
+#if defined(USE_OZONE) || defined(USE_X11)
|
||||
+ VADisplay va_display = VaapiGetVADisplay();
|
||||
+ if (va_display) {
|
||||
+ char *va_search_path = getenv("LIBVA_DRIVERS_PATH");
|
||||
+ char *va_driver_name = getenv("LIBVA_DRIVER_NAME");
|
||||
+ char *saveptr, *driver_dir;
|
||||
+ if (!va_driver_name) {
|
||||
+ VADisplayContextP pDisplayContext =
|
||||
+ static_cast<VADisplayContextP>(va_display);
|
||||
+ pDisplayContext->vaGetDriverName(pDisplayContext, &va_driver_name);
|
||||
+ }
|
||||
+
|
||||
+ if (!va_driver_name) {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ if (!va_search_path) {
|
||||
+ va_search_path = strdup(VA_DRIVERS_PATH);
|
||||
+ }
|
||||
+
|
||||
+ driver_dir = strtok_r(va_search_path, ":", &saveptr);
|
||||
+ while (driver_dir) {
|
||||
+ std::string driver_path = base::StringPrintf("%s/%s%s", driver_dir,
|
||||
+ va_driver_name, DRIVER_EXTENSION);
|
||||
+
|
||||
+ // attempt to dlopen() the va driver
|
||||
+ LOG(INFO) << "Looking for " << driver_path << "...";
|
||||
+ if (access(driver_path.c_str(), R_OK) != -1) {
|
||||
+ LOG(WARNING) << "Attempting to pre-load " << va_driver_name << " VA driver...";
|
||||
+ if (dlopen(driver_path.c_str(), RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE)) {
|
||||
+ LOG(WARNING) << "VA driver \"" << driver_path << "\" opened!";
|
||||
+
|
||||
+ if (strcmp(va_driver_name, "nvidia") == 0) {
|
||||
+ LOG(WARNING) << "Pre-loading NVIDIA VDPAU driver libraries...";
|
||||
+ if (dlopen("libvdpau_nvidia.so", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE)) {
|
||||
+ LOG(WARNING) << "Loaded libvdpau_nvidia.so";
|
||||
+ }
|
||||
+
|
||||
+ if (dlopen("libvdpau.so", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE)) {
|
||||
+ LOG(WARNING) << "Loaded libvdpau.so";
|
||||
+ }
|
||||
+ }
|
||||
+ LOG(WARNING) << "Loading libva libraries...";
|
||||
+ dlopen("libva.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
#if defined(USE_OZONE)
|
||||
- dlopen("libva-drm.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
+ dlopen("libva-drm.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
#elif defined(USE_X11)
|
||||
- dlopen("libva-x11.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
+ dlopen("libva-x11.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
|
||||
+#endif
|
||||
+ break;
|
||||
+ }
|
||||
+ LOG(ERROR) << "VA driver failed to open!";
|
||||
+ }
|
||||
+
|
||||
+ driver_dir = strtok_r(NULL, ":", &saveptr);
|
||||
+ }
|
||||
+ free(va_search_path);
|
||||
+ }
|
||||
#endif
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
Index: dev/content/common/va_wayland.sigs
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ dev/content/common/va_wayland.sigs
|
||||
@@ -0,0 +1,8 @@
|
||||
+// Copyright 2014 The Chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+//------------------------------------------------
|
||||
+// Functions from libva-wayland used in chromium code.
|
||||
+//------------------------------------------------
|
||||
+VADisplay vaGetDisplayWl(struct wl_display *display);
|
||||
Index: dev/content/gpu/BUILD.gn
|
||||
===================================================================
|
||||
--- dev.orig/content/gpu/BUILD.gn
|
||||
+++ dev/content/gpu/BUILD.gn
|
||||
@@ -91,7 +91,7 @@ target(link_target_type, "gpu_sources")
|
||||
]
|
||||
}
|
||||
|
||||
- if (is_chromeos && current_cpu != "arm") {
|
||||
+ if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") {
|
||||
configs += [ "//third_party/libva:libva_config" ]
|
||||
}
|
||||
|
||||
Index: dev/content/gpu/gpu_main.cc
|
||||
===================================================================
|
||||
--- dev.orig/content/gpu/gpu_main.cc
|
||||
+++ dev/content/gpu/gpu_main.cc
|
||||
@@ -79,7 +79,7 @@
|
||||
#include "content/common/sandbox_mac.h"
|
||||
#endif
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
#include "media/gpu/vaapi_wrapper.h"
|
||||
#endif
|
||||
|
||||
@@ -138,7 +138,7 @@ class ContentSandboxHelper : public gpu:
|
||||
(void)base::RandUint64();
|
||||
}
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
media::VaapiWrapper::PreSandboxInitialization();
|
||||
#endif
|
||||
#if defined(OS_WIN)
|
||||
Index: dev/content/public/common/content_switches.cc
|
||||
===================================================================
|
||||
--- dev.orig/content/public/common/content_switches.cc
|
||||
+++ dev/content/public/common/content_switches.cc
|
||||
@@ -985,7 +985,9 @@ const char kDisableAudioSupportForDeskto
|
||||
#if defined(OS_CHROMEOS)
|
||||
// Disables panel fitting (used for mirror mode).
|
||||
const char kDisablePanelFitting[] = "disable-panel-fitting";
|
||||
+#endif
|
||||
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
// Disables VA-API accelerated video encode.
|
||||
const char kDisableVaapiAcceleratedVideoEncode[] =
|
||||
"disable-vaapi-accelerated-video-encode";
|
||||
Index: dev/content/public/common/content_switches.h
|
||||
===================================================================
|
||||
--- dev.orig/content/public/common/content_switches.h
|
||||
+++ dev/content/public/common/content_switches.h
|
||||
@@ -288,6 +288,8 @@ CONTENT_EXPORT extern const char kEnable
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
CONTENT_EXPORT extern const char kDisablePanelFitting[];
|
||||
+#endif
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
CONTENT_EXPORT extern const char kDisableVaapiAcceleratedVideoEncode[];
|
||||
#endif
|
||||
|
||||
Index: dev/gpu/config/software_rendering_list_json.cc
|
||||
===================================================================
|
||||
--- dev.orig/gpu/config/software_rendering_list_json.cc
|
||||
+++ dev/gpu/config/software_rendering_list_json.cc
|
||||
@@ -415,17 +415,6 @@ const char kSoftwareRenderingListJson[]
|
||||
]
|
||||
},
|
||||
{
|
||||
- "id": 48,
|
||||
- "description": "Accelerated video decode is unavailable on Linux",
|
||||
- "cr_bugs": [137247],
|
||||
- "os": {
|
||||
- "type": "linux"
|
||||
- },
|
||||
- "features": [
|
||||
- "accelerated_video_decode"
|
||||
- ]
|
||||
- },
|
||||
- {
|
||||
"id": 50,
|
||||
"description": "Disable VMware software renderer on older Mesa",
|
||||
"cr_bugs": [145531, 332596, 571899],
|
||||
Index: dev/media/BUILD.gn
|
||||
===================================================================
|
||||
--- dev.orig/media/BUILD.gn
|
||||
+++ dev/media/BUILD.gn
|
||||
@@ -370,7 +370,7 @@ component("media") {
|
||||
allow_circular_includes_from = [ "//media/base/android" ]
|
||||
}
|
||||
|
||||
- if (current_cpu != "arm" && is_chromeos) {
|
||||
+ if (current_cpu != "arm" && (is_chromeos || is_desktop_linux)) {
|
||||
sources += [
|
||||
"filters/h264_bitstream_buffer.cc",
|
||||
"filters/h264_bitstream_buffer.h",
|
||||
@@ -653,7 +653,7 @@ test("media_unittests") {
|
||||
}
|
||||
}
|
||||
|
||||
- if (current_cpu != "arm" && is_chromeos) {
|
||||
+ if (current_cpu != "arm" && (is_chromeos || is_desktop_linux)) {
|
||||
sources += [ "filters/h264_bitstream_buffer_unittest.cc" ]
|
||||
}
|
||||
|
||||
Index: dev/media/gpu/BUILD.gn
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/BUILD.gn
|
||||
+++ dev/media/gpu/BUILD.gn
|
||||
@@ -12,7 +12,7 @@ if (is_mac) {
|
||||
import("//build/config/mac/mac_sdk.gni")
|
||||
}
|
||||
|
||||
-if (is_chromeos && current_cpu != "arm") {
|
||||
+if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") {
|
||||
action("libva_generate_stubs") {
|
||||
extra_header = "va_stub_header.fragment"
|
||||
|
||||
@@ -238,7 +238,7 @@ component("gpu") {
|
||||
}
|
||||
}
|
||||
|
||||
- if (is_chromeos) {
|
||||
+ if (is_linux) {
|
||||
sources += [
|
||||
"accelerated_video_decoder.h",
|
||||
"h264_decoder.cc",
|
||||
@@ -281,7 +281,7 @@ component("gpu") {
|
||||
"GLESv2",
|
||||
]
|
||||
}
|
||||
- if (current_cpu == "arm") {
|
||||
+ if (current_cpu == "arm" && is_chromeos) {
|
||||
sources += [
|
||||
"tegra_v4l2_device.cc",
|
||||
"tegra_v4l2_device.h",
|
||||
Index: dev/media/gpu/gpu_video_decode_accelerator_factory.cc
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/gpu_video_decode_accelerator_factory.cc
|
||||
+++ dev/media/gpu/gpu_video_decode_accelerator_factory.cc
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "media/gpu/dxva_video_decode_accelerator_win.h"
|
||||
#elif defined(OS_MACOSX)
|
||||
#include "media/gpu/vt_video_decode_accelerator_mac.h"
|
||||
-#elif defined(OS_CHROMEOS)
|
||||
+#elif defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
#if defined(USE_V4L2_CODEC)
|
||||
#include "media/gpu/v4l2_device.h"
|
||||
#include "media/gpu/v4l2_slice_video_decode_accelerator.h"
|
||||
@@ -79,7 +79,7 @@ GpuVideoDecodeAcceleratorFactory::GetDec
|
||||
#if defined(OS_WIN)
|
||||
capabilities.supported_profiles =
|
||||
DXVAVideoDecodeAccelerator::GetSupportedProfiles(gpu_preferences);
|
||||
-#elif defined(OS_CHROMEOS)
|
||||
+#elif defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
VideoDecodeAccelerator::SupportedProfiles vda_profiles;
|
||||
#if defined(USE_V4L2_CODEC)
|
||||
vda_profiles = V4L2VideoDecodeAccelerator::GetSupportedProfiles();
|
||||
@@ -131,7 +131,7 @@ GpuVideoDecodeAcceleratorFactory::Create
|
||||
&GpuVideoDecodeAcceleratorFactory::CreateV4L2VDA,
|
||||
&GpuVideoDecodeAcceleratorFactory::CreateV4L2SVDA,
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
&GpuVideoDecodeAcceleratorFactory::CreateVaapiVDA,
|
||||
#endif
|
||||
#if defined(OS_MACOSX)
|
||||
@@ -199,11 +199,12 @@ GpuVideoDecodeAcceleratorFactory::Create
|
||||
}
|
||||
#endif
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
std::unique_ptr<VideoDecodeAccelerator>
|
||||
GpuVideoDecodeAcceleratorFactory::CreateVaapiVDA(
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
const gpu::GpuPreferences& gpu_preferences) const {
|
||||
+ VLOG(1) << "Creating new VAAPI video decode accelerator.";
|
||||
std::unique_ptr<VideoDecodeAccelerator> decoder;
|
||||
decoder.reset(new VaapiVideoDecodeAccelerator(make_context_current_cb_,
|
||||
bind_image_cb_));
|
||||
Index: dev/media/gpu/gpu_video_decode_accelerator_factory.h
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/gpu_video_decode_accelerator_factory.h
|
||||
+++ dev/media/gpu/gpu_video_decode_accelerator_factory.h
|
||||
@@ -98,7 +98,7 @@ class MEDIA_GPU_EXPORT GpuVideoDecodeAcc
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
const gpu::GpuPreferences& gpu_preferences) const;
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
std::unique_ptr<VideoDecodeAccelerator> CreateVaapiVDA(
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
const gpu::GpuPreferences& gpu_preferences) const;
|
||||
Index: dev/media/gpu/ipc/service/BUILD.gn
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/ipc/service/BUILD.gn
|
||||
+++ dev/media/gpu/ipc/service/BUILD.gn
|
||||
@@ -45,7 +45,7 @@ target(link_target_type, "service") {
|
||||
|
||||
configs += [ "//media/gpu:gpu_config" ]
|
||||
|
||||
- if (is_chromeos && current_cpu != "arm") {
|
||||
+ if ((is_desktop_linux || is_chromeos) && current_cpu != "arm") {
|
||||
configs += [ "//third_party/libva:libva_config" ]
|
||||
}
|
||||
|
||||
Index: dev/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
|
||||
+++ dev/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
|
||||
@@ -58,7 +58,7 @@ static bool MakeDecoderContextCurrent(
|
||||
return true;
|
||||
}
|
||||
|
||||
-#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
+#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
static bool BindImage(const base::WeakPtr<gpu::GpuCommandBufferStub>& stub,
|
||||
uint32_t client_texture_id,
|
||||
uint32_t texture_target,
|
||||
@@ -171,7 +171,7 @@ GpuVideoDecodeAccelerator::GpuVideoDecod
|
||||
get_gl_context_cb_ = base::Bind(&GetGLContext, stub_->AsWeakPtr());
|
||||
make_context_current_cb_ =
|
||||
base::Bind(&MakeDecoderContextCurrent, stub_->AsWeakPtr());
|
||||
-#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
+#if ((defined(OS_LINUX) || defined(OS_CHROMEOS)) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
bind_image_cb_ = base::Bind(&BindImage, stub_->AsWeakPtr());
|
||||
#endif
|
||||
get_gles2_decoder_cb_ = base::Bind(&GetGLES2Decoder, stub_->AsWeakPtr());
|
||||
Index: dev/media/gpu/va_stub_header.fragment
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/va_stub_header.fragment
|
||||
+++ dev/media/gpu/va_stub_header.fragment
|
||||
@@ -5,8 +5,9 @@ extern "C" {
|
||||
|
||||
#include "third_party/libva/va/drm/va_drm.h"
|
||||
#include "third_party/libva/va/va.h"
|
||||
-#if defined(USE_X11)
|
||||
#include "third_party/libva/va/va_x11.h"
|
||||
+#if defined(USE_OZONE)
|
||||
+#include "third_party/libva/va/wayland/va_wayland.h"
|
||||
#endif
|
||||
|
||||
}
|
||||
Index: dev/media/gpu/vaapi_video_decode_accelerator.cc
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/vaapi_video_decode_accelerator.cc
|
||||
+++ dev/media/gpu/vaapi_video_decode_accelerator.cc
|
||||
@@ -359,17 +359,17 @@ bool VaapiVideoDecodeAccelerator::Initia
|
||||
|
||||
base::AutoLock auto_lock(lock_);
|
||||
DCHECK_EQ(state_, kUninitialized);
|
||||
- DVLOG(2) << "Initializing VAVDA, profile: " << profile;
|
||||
+ VLOG(1) << "Initializing VAVDA, profile: " << profile;
|
||||
|
||||
#if defined(USE_X11)
|
||||
if (gl::GetGLImplementation() != gl::kGLImplementationDesktopGL) {
|
||||
- DVLOG(1) << "HW video decode acceleration not available without "
|
||||
+ VLOG(1) << "HW video decode acceleration not available without "
|
||||
"DesktopGL (GLX).";
|
||||
return false;
|
||||
}
|
||||
#elif defined(USE_OZONE)
|
||||
if (gl::GetGLImplementation() != gl::kGLImplementationEGLGLES2) {
|
||||
- DVLOG(1) << "HW video decode acceleration not available without "
|
||||
+ VLOG(1) << "HW video decode acceleration not available without "
|
||||
<< "EGLGLES2.";
|
||||
return false;
|
||||
}
|
||||
@@ -379,7 +379,7 @@ bool VaapiVideoDecodeAccelerator::Initia
|
||||
VaapiWrapper::kDecode, profile, base::Bind(&ReportToUMA, VAAPI_ERROR));
|
||||
|
||||
if (!vaapi_wrapper_.get()) {
|
||||
- DVLOG(1) << "Failed initializing VAAPI for profile " << profile;
|
||||
+ VLOG(1) << "Failed initializing VAAPI for profile " << profile;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -394,7 +394,7 @@ bool VaapiVideoDecodeAccelerator::Initia
|
||||
vp9_accelerator_.reset(new VaapiVP9Accelerator(this, vaapi_wrapper_.get()));
|
||||
decoder_.reset(new VP9Decoder(vp9_accelerator_.get()));
|
||||
} else {
|
||||
- DLOG(ERROR) << "Unsupported profile " << profile;
|
||||
+ VLOG(1) << "Unsupported profile " << profile;
|
||||
return false;
|
||||
}
|
||||
|
||||
Index: dev/media/gpu/vaapi_wrapper.cc
|
||||
===================================================================
|
||||
--- dev.orig/media/gpu/vaapi_wrapper.cc
|
||||
+++ dev/media/gpu/vaapi_wrapper.cc
|
||||
@@ -194,7 +194,7 @@ scoped_refptr<VaapiWrapper> VaapiWrapper
|
||||
VAProfile va_profile,
|
||||
const base::Closure& report_error_to_uma_cb) {
|
||||
if (!profile_infos_.Get().IsProfileSupported(mode, va_profile)) {
|
||||
- DVLOG(1) << "Unsupported va_profile: " << va_profile;
|
||||
+ VLOG(1) << "Unsupported va_profile: " << va_profile;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -347,15 +347,17 @@ VaapiWrapper::GetSupportedProfileInfosFo
|
||||
bool VaapiWrapper::VaInitialize(const base::Closure& report_error_to_uma_cb) {
|
||||
static bool vaapi_functions_initialized = PostSandboxInitialization();
|
||||
if (!vaapi_functions_initialized) {
|
||||
- bool running_on_chromeos = false;
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+ bool error_level_logging = false;
|
||||
+#if defined(OS_LINUX)
|
||||
+ error_level_logging = true;
|
||||
+#elif defined(OS_CHROMEOS)
|
||||
// When chrome runs on linux with chromeos=1, do not log error message
|
||||
// without VAAPI libraries.
|
||||
- running_on_chromeos = base::SysInfo::IsRunningOnChromeOS();
|
||||
+ error_level_logging = base::SysInfo::IsRunningOnChromeOS();
|
||||
#endif
|
||||
static const char kErrorMsg[] = "Failed to initialize VAAPI libs";
|
||||
- if (running_on_chromeos)
|
||||
- LOG(ERROR) << kErrorMsg;
|
||||
+ if (error_level_logging)
|
||||
+ VLOG(1) << kErrorMsg;
|
||||
else
|
||||
DVLOG(1) << kErrorMsg;
|
||||
return false;
|
||||
@@ -421,7 +423,7 @@ bool VaapiWrapper::IsEntrypointSupported
|
||||
|
||||
if (std::find(supported_entrypoints.begin(), supported_entrypoints.end(),
|
||||
entrypoint) == supported_entrypoints.end()) {
|
||||
- DVLOG(1) << "Unsupported entrypoint";
|
||||
+ VLOG(1) << "Unsupported entrypoint";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -445,8 +447,8 @@ bool VaapiWrapper::AreAttribsSupported_L
|
||||
if (attribs[i].type != required_attribs[i].type ||
|
||||
(attribs[i].value & required_attribs[i].value) !=
|
||||
required_attribs[i].value) {
|
||||
- DVLOG(1) << "Unsupported value " << required_attribs[i].value
|
||||
- << " for attribute type " << required_attribs[i].type;
|
||||
+ VLOG(1) << "Unsupported value " << required_attribs[i].value
|
||||
+ << " for attribute type " << required_attribs[i].type;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,554 +0,0 @@
|
||||
From 0cc8e208feef2c49b8f2344005e97684b5e84012 Mon Sep 17 00:00:00 2001
|
||||
From: Knut Andre Tidemann <Knut.Andre.Tidemann@jotron.com>
|
||||
Date: Mon, 29 Aug 2016 20:57:27 +0200
|
||||
Subject: [PATCH] Enable VAAPI on Linux.
|
||||
|
||||
---
|
||||
content/content_gpu.gypi | 2 +-
|
||||
content/public/common/content_switches.cc | 2 ++
|
||||
content/public/common/content_switches.h | 3 +++
|
||||
gpu/command_buffer/service/gpu_preferences.h | 2 +-
|
||||
gpu/config/software_rendering_list_json.cc | 11 -----------
|
||||
media/gpu/BUILD.gn | 10 +++++-----
|
||||
media/gpu/gpu_video_decode_accelerator_factory_impl.cc | 12 ++++++------
|
||||
media/gpu/gpu_video_decode_accelerator_factory_impl.h | 4 ++--
|
||||
media/gpu/ipc/service/BUILD.gn | 2 +-
|
||||
media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc | 6 +++---
|
||||
media/gpu/ipc/service/gpu_video_decode_accelerator.cc | 4 ++--
|
||||
media/gpu/ipc/service/gpu_video_encode_accelerator.cc | 10 +++++-----
|
||||
media/gpu/ipc/service/gpu_video_encode_accelerator.h | 4 ++--
|
||||
media/gpu/jpeg_decode_accelerator_unittest.cc | 8 ++++----
|
||||
media/gpu/video_decode_accelerator_unittest.cc | 4 ++--
|
||||
media/gpu/video_encode_accelerator_unittest.cc | 10 +++++-----
|
||||
media/media.gyp | 12 ++++++------
|
||||
media/media_gpu.gypi | 8 ++++----
|
||||
18 files changed, 54 insertions(+), 60 deletions(-)
|
||||
|
||||
diff --git a/content/content_gpu.gypi b/content/content_gpu.gypi
|
||||
index f2a21d9..f9df0e6 100644
|
||||
--- a/content/content_gpu.gypi
|
||||
+++ b/content/content_gpu.gypi
|
||||
@@ -49,7 +49,7 @@
|
||||
],
|
||||
},
|
||||
}],
|
||||
- ['target_arch!="arm" and chromeos == 1', {
|
||||
+ ['target_arch!="arm" and (chromeos == 1 or desktop_linux == 1)', {
|
||||
'include_dirs': [
|
||||
'<(DEPTH)/third_party/libva',
|
||||
],
|
||||
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
|
||||
index 244e371..48cdffb 100644
|
||||
--- a/content/public/common/content_switches.cc
|
||||
+++ b/content/public/common/content_switches.cc
|
||||
@@ -970,7 +970,9 @@ const char kDisableAudioSupportForDesktopShare[] =
|
||||
#if defined(OS_CHROMEOS)
|
||||
// Disables panel fitting (used for mirror mode).
|
||||
const char kDisablePanelFitting[] = "disable-panel-fitting";
|
||||
+#endif
|
||||
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
// Disables VA-API accelerated video encode.
|
||||
const char kDisableVaapiAcceleratedVideoEncode[] =
|
||||
"disable-vaapi-accelerated-video-encode";
|
||||
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h
|
||||
index be5cc9e..9585fb6 100644
|
||||
--- a/content/public/common/content_switches.h
|
||||
+++ b/content/public/common/content_switches.h
|
||||
@@ -278,6 +278,9 @@ CONTENT_EXPORT extern const char kEnableOSKOverscroll[];
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
CONTENT_EXPORT extern const char kDisablePanelFitting[];
|
||||
+#endif
|
||||
+
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
CONTENT_EXPORT extern const char kDisableVaapiAcceleratedVideoEncode[];
|
||||
#endif
|
||||
|
||||
diff --git a/gpu/command_buffer/service/gpu_preferences.h b/gpu/command_buffer/service/gpu_preferences.h
|
||||
index 6fe15b0..ee31d3e 100644
|
||||
--- a/gpu/command_buffer/service/gpu_preferences.h
|
||||
+++ b/gpu/command_buffer/service/gpu_preferences.h
|
||||
@@ -37,7 +37,7 @@ struct GPU_EXPORT GpuPreferences {
|
||||
// Disables hardware acceleration of video decode, where available.
|
||||
bool disable_accelerated_video_decode = false;
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
// Disables VA-API accelerated video encode.
|
||||
bool disable_vaapi_accelerated_video_encode = false;
|
||||
#endif
|
||||
diff --git a/gpu/config/software_rendering_list_json.cc b/gpu/config/software_rendering_list_json.cc
|
||||
index 9adc5f0..abf7bc5 100644
|
||||
--- a/gpu/config/software_rendering_list_json.cc
|
||||
+++ b/gpu/config/software_rendering_list_json.cc
|
||||
@@ -431,17 +431,6 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
- "id": 48,
|
||||
- "description": "Accelerated video decode is unavailable on Linux",
|
||||
- "cr_bugs": [137247],
|
||||
- "os": {
|
||||
- "type": "linux"
|
||||
- },
|
||||
- "features": [
|
||||
- "accelerated_video_decode"
|
||||
- ]
|
||||
- },
|
||||
- {
|
||||
"id": 50,
|
||||
"description": "Disable VMware software renderer on older Mesa",
|
||||
"cr_bugs": [145531, 332596, 571899],
|
||||
diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
|
||||
index ba02e8a..c31bae2 100644
|
||||
--- a/media/gpu/BUILD.gn
|
||||
+++ b/media/gpu/BUILD.gn
|
||||
@@ -12,7 +12,7 @@ if (is_mac) {
|
||||
import("//build/config/mac/mac_sdk.gni")
|
||||
}
|
||||
|
||||
-if (is_chromeos && current_cpu != "arm") {
|
||||
+if ((is_chromeos || is_linux) && current_cpu != "arm") {
|
||||
action("libva_generate_stubs") {
|
||||
extra_header = "va_stub_header.fragment"
|
||||
|
||||
@@ -54,7 +54,7 @@ if (is_chromeos && current_cpu != "arm") {
|
||||
}
|
||||
}
|
||||
|
||||
-if (is_chromeos && use_v4lplugin) {
|
||||
+if ((is_chromeos || is_linux) && use_v4lplugin) {
|
||||
action("libv4l2_generate_stubs") {
|
||||
extra_header = "v4l2_stub_header.fragment"
|
||||
|
||||
@@ -229,7 +229,7 @@ component("gpu") {
|
||||
}
|
||||
}
|
||||
|
||||
- if (is_chromeos) {
|
||||
+ if (is_chromeos || is_linux) {
|
||||
sources += [
|
||||
"accelerated_video_decoder.h",
|
||||
"h264_decoder.cc",
|
||||
@@ -356,7 +356,7 @@ component("gpu") {
|
||||
}
|
||||
}
|
||||
|
||||
-if (is_win || is_android || is_chromeos) {
|
||||
+if (is_win || is_android || is_chromeos || is_linux) {
|
||||
test("video_decode_accelerator_unittest") {
|
||||
sources = [
|
||||
"video_accelerator_unittest_helpers.h",
|
||||
@@ -425,7 +425,7 @@ if (is_win || is_android || is_chromeos) {
|
||||
}
|
||||
}
|
||||
|
||||
-if (is_chromeos || is_mac) {
|
||||
+if (is_chromeos || is_linux || is_mac) {
|
||||
test("video_encode_accelerator_unittest") {
|
||||
deps = [
|
||||
"//base",
|
||||
diff --git a/media/gpu/gpu_video_decode_accelerator_factory_impl.cc b/media/gpu/gpu_video_decode_accelerator_factory_impl.cc
|
||||
index 0a1a883..add2a8e 100644
|
||||
--- a/media/gpu/gpu_video_decode_accelerator_factory_impl.cc
|
||||
+++ b/media/gpu/gpu_video_decode_accelerator_factory_impl.cc
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "media/gpu/dxva_video_decode_accelerator_win.h"
|
||||
#elif defined(OS_MACOSX)
|
||||
#include "media/gpu/vt_video_decode_accelerator_mac.h"
|
||||
-#elif defined(OS_CHROMEOS)
|
||||
+#elif defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
#if defined(USE_V4L2_CODEC)
|
||||
#include "media/gpu/v4l2_device.h"
|
||||
#include "media/gpu/v4l2_slice_video_decode_accelerator.h"
|
||||
@@ -79,7 +79,7 @@
|
||||
#if defined(OS_WIN)
|
||||
capabilities.supported_profiles =
|
||||
DXVAVideoDecodeAccelerator::GetSupportedProfiles();
|
||||
-#elif defined(OS_CHROMEOS)
|
||||
+#elif defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
VideoDecodeAccelerator::SupportedProfiles vda_profiles;
|
||||
#if defined(USE_V4L2_CODEC)
|
||||
vda_profiles = V4L2VideoDecodeAccelerator::GetSupportedProfiles();
|
||||
@@ -126,11 +126,11 @@ GpuVideoDecodeAcceleratorFactoryImpl::CreateVDA(
|
||||
#if defined(OS_WIN)
|
||||
&GpuVideoDecodeAcceleratorFactoryImpl::CreateDXVAVDA,
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
&GpuVideoDecodeAcceleratorFactoryImpl::CreateV4L2VDA,
|
||||
&GpuVideoDecodeAcceleratorFactoryImpl::CreateV4L2SVDA,
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
&GpuVideoDecodeAcceleratorFactoryImpl::CreateVaapiVDA,
|
||||
#endif
|
||||
#if defined(OS_MACOSX)
|
||||
@@ -169,7 +169,7 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
std::unique_ptr<VideoDecodeAccelerator>
|
||||
GpuVideoDecodeAcceleratorFactoryImpl::CreateV4L2VDA(
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
@@ -199,7 +199,7 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
std::unique_ptr<VideoDecodeAccelerator>
|
||||
GpuVideoDecodeAcceleratorFactoryImpl::CreateVaapiVDA(
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
diff --git a/media/gpu/gpu_video_decode_accelerator_factory_impl.h b/media/gpu/gpu_video_decode_accelerator_factory_impl.h
|
||||
index a005a1c..5974972 100644
|
||||
--- a/media/gpu/gpu_video_decode_accelerator_factory_impl.h
|
||||
+++ b/media/gpu/gpu_video_decode_accelerator_factory_impl.h
|
||||
@@ -93,7 +93,7 @@
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
const gpu::GpuPreferences& gpu_preferences) const;
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
std::unique_ptr<VideoDecodeAccelerator> CreateV4L2VDA(
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
const gpu::GpuPreferences& gpu_preferences) const;
|
||||
@@ -101,7 +101,7 @@
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
const gpu::GpuPreferences& gpu_preferences) const;
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
std::unique_ptr<VideoDecodeAccelerator> CreateVaapiVDA(
|
||||
const gpu::GpuDriverBugWorkarounds& workarounds,
|
||||
const gpu::GpuPreferences& gpu_preferences) const;
|
||||
diff --git a/media/gpu/ipc/service/BUILD.gn b/media/gpu/ipc/service/BUILD.gn
|
||||
index 16d6922..78a4b94 100644
|
||||
--- a/media/gpu/ipc/service/BUILD.gn
|
||||
+++ b/media/gpu/ipc/service/BUILD.gn
|
||||
@@ -37,7 +37,7 @@ source_set("service") {
|
||||
"//third_party/mesa:mesa_headers",
|
||||
]
|
||||
|
||||
- if (is_chromeos && current_cpu != "arm") {
|
||||
+ if ((is_chromeos || is_linux) && current_cpu != "arm") {
|
||||
configs += [ "//third_party/libva:libva_config" ]
|
||||
}
|
||||
|
||||
diff --git a/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc b/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc
|
||||
index bffc7fb..09dd0ef 100644
|
||||
--- a/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc
|
||||
+++ b/media/gpu/ipc/service/gpu_jpeg_decode_accelerator.cc
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "media/gpu/ipc/common/media_messages.h"
|
||||
#include "ui/gfx/geometry/size.h"
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
#if defined(ARCH_CPU_X86_FAMILY)
|
||||
#include "media/gpu/vaapi_jpeg_decode_accelerator.h"
|
||||
#endif
|
||||
@@ -381,7 +381,7 @@
|
||||
std::unique_ptr<JpegDecodeAccelerator> GpuJpegDecodeAccelerator::CreateV4L2JDA(
|
||||
const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) {
|
||||
std::unique_ptr<JpegDecodeAccelerator> decoder;
|
||||
-#if defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
scoped_refptr<V4L2Device> device =
|
||||
V4L2Device::Create(V4L2Device::kJpegDecoder);
|
||||
if (device)
|
||||
@@ -394,7 +394,7 @@
|
||||
std::unique_ptr<JpegDecodeAccelerator> GpuJpegDecodeAccelerator::CreateVaapiJDA(
|
||||
const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) {
|
||||
std::unique_ptr<JpegDecodeAccelerator> decoder;
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
decoder.reset(new VaapiJpegDecodeAccelerator(io_task_runner));
|
||||
#endif
|
||||
return decoder;
|
||||
diff --git a/media/gpu/ipc/service/gpu_video_decode_accelerator.cc b/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
|
||||
index 44f8a12..014a752 100644
|
||||
--- a/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
|
||||
+++ b/media/gpu/ipc/service/gpu_video_decode_accelerator.cc
|
||||
@@ -58,7 +58,7 @@ static bool MakeDecoderContextCurrent(
|
||||
return true;
|
||||
}
|
||||
|
||||
-#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
+#if ((defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
static bool BindImage(const base::WeakPtr<gpu::GpuCommandBufferStub>& stub,
|
||||
uint32_t client_texture_id,
|
||||
uint32_t texture_target,
|
||||
@@ -170,7 +170,7 @@ GpuVideoDecodeAccelerator::GpuVideoDecodeAccelerator(
|
||||
get_gl_context_cb_ = base::Bind(&GetGLContext, stub_->AsWeakPtr());
|
||||
make_context_current_cb_ =
|
||||
base::Bind(&MakeDecoderContextCurrent, stub_->AsWeakPtr());
|
||||
-#if (defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
+#if ((defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)) || defined(OS_MACOSX)
|
||||
bind_image_cb_ = base::Bind(&BindImage, stub_->AsWeakPtr());
|
||||
#endif
|
||||
get_gles2_decoder_cb_ = base::Bind(&GetGLES2Decoder, stub_->AsWeakPtr());
|
||||
diff --git a/media/gpu/ipc/service/gpu_video_encode_accelerator.cc b/media/gpu/ipc/service/gpu_video_encode_accelerator.cc
|
||||
index 62a8539..6367661 100644
|
||||
--- a/media/gpu/ipc/service/gpu_video_encode_accelerator.cc
|
||||
+++ b/media/gpu/ipc/service/gpu_video_encode_accelerator.cc
|
||||
@@ -24,7 +24,7 @@
|
||||
#include "media/gpu/gpu_video_accelerator_util.h"
|
||||
#include "media/gpu/ipc/common/media_messages.h"
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
#if defined(USE_V4L2_CODEC)
|
||||
#include "media/gpu/v4l2_video_encode_accelerator.h"
|
||||
#endif
|
||||
@@ -196,10 +196,10 @@ std::vector<GpuVideoEncodeAccelerator::CreateVEAFp>
|
||||
GpuVideoEncodeAccelerator::CreateVEAFps(
|
||||
const gpu::GpuPreferences& gpu_preferences) {
|
||||
std::vector<GpuVideoEncodeAccelerator::CreateVEAFp> create_vea_fps;
|
||||
-#if defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
create_vea_fps.push_back(&GpuVideoEncodeAccelerator::CreateV4L2VEA);
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
if (!gpu_preferences.disable_vaapi_accelerated_video_encode)
|
||||
create_vea_fps.push_back(&GpuVideoEncodeAccelerator::CreateVaapiVEA);
|
||||
#endif
|
||||
@@ -213,7 +213,7 @@ GpuVideoEncodeAccelerator::CreateVEAFps(
|
||||
return create_vea_fps;
|
||||
}
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
// static
|
||||
std::unique_ptr<media::VideoEncodeAccelerator>
|
||||
GpuVideoEncodeAccelerator::CreateV4L2VEA() {
|
||||
@@ -225,7 +225,7 @@ GpuVideoEncodeAccelerator::CreateV4L2VEA() {
|
||||
}
|
||||
#endif
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
// static
|
||||
std::unique_ptr<media::VideoEncodeAccelerator>
|
||||
GpuVideoEncodeAccelerator::CreateVaapiVEA() {
|
||||
diff --git a/media/gpu/ipc/service/gpu_video_encode_accelerator.h b/media/gpu/ipc/service/gpu_video_encode_accelerator.h
|
||||
index cfe44d2..29da8b8 100644
|
||||
--- a/media/gpu/ipc/service/gpu_video_encode_accelerator.h
|
||||
+++ b/media/gpu/ipc/service/gpu_video_encode_accelerator.h
|
||||
@@ -80,10 +80,10 @@
|
||||
// platform.
|
||||
static std::vector<CreateVEAFp> CreateVEAFps(
|
||||
const gpu::GpuPreferences& gpu_preferences);
|
||||
-#if defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
static std::unique_ptr<VideoEncodeAccelerator> CreateV4L2VEA();
|
||||
#endif
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
static std::unique_ptr<VideoEncodeAccelerator> CreateVaapiVEA();
|
||||
#endif
|
||||
#if defined(OS_ANDROID) && defined(ENABLE_WEBRTC)
|
||||
diff --git a/media/gpu/jpeg_decode_accelerator_unittest.cc b/media/gpu/jpeg_decode_accelerator_unittest.cc
|
||||
index 5c68851..796ca54 100644
|
||||
--- a/media/gpu/jpeg_decode_accelerator_unittest.cc
|
||||
+++ b/media/gpu/jpeg_decode_accelerator_unittest.cc
|
||||
@@ -31,7 +31,7 @@
|
||||
#include "third_party/libyuv/include/libyuv.h"
|
||||
#include "ui/gfx/codec/jpeg_codec.h"
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
#if defined(USE_V4L2_CODEC)
|
||||
#include "media/gpu/v4l2_device.h"
|
||||
#include "media/gpu/v4l2_jpeg_decode_accelerator.h"
|
||||
@@ -135,10 +135,10 @@ JpegClient::JpegClient(const std::vector<TestImageFile*>& test_image_files,
|
||||
JpegClient::~JpegClient() {}
|
||||
|
||||
void JpegClient::CreateJpegDecoder() {
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
decoder_.reset(
|
||||
new VaapiJpegDecodeAccelerator(base::ThreadTaskRunnerHandle::Get()));
|
||||
-#elif defined(OS_CHROMEOS) && defined(USE_V4L2_CODEC)
|
||||
+#elif (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(USE_V4L2_CODEC)
|
||||
scoped_refptr<V4L2Device> device =
|
||||
V4L2Device::Create(V4L2Device::kJpegDecoder);
|
||||
if (!device.get()) {
|
||||
@@ -575,7 +575,7 @@ int main(int argc, char** argv) {
|
||||
continue;
|
||||
LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second;
|
||||
}
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
media::VaapiWrapper::PreSandboxInitialization();
|
||||
#endif
|
||||
|
||||
diff --git a/media/gpu/video_decode_accelerator_unittest.cc b/media/gpu/video_decode_accelerator_unittest.cc
|
||||
index f9f2711..936cd6d 100644
|
||||
--- a/media/gpu/video_decode_accelerator_unittest.cc
|
||||
+++ b/media/gpu/video_decode_accelerator_unittest.cc
|
||||
@@ -61,7 +61,7 @@
|
||||
#if defined(OS_WIN)
|
||||
#include "base/win/windows_version.h"
|
||||
#include "media/gpu/dxva_video_decode_accelerator_win.h"
|
||||
-#elif defined(OS_CHROMEOS)
|
||||
+#elif defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
#if defined(USE_V4L2_CODEC)
|
||||
#include "media/gpu/v4l2_device.h"
|
||||
#include "media/gpu/v4l2_slice_video_decode_accelerator.h"
|
||||
@@ -1732,7 +1732,7 @@ int main(int argc, char** argv) {
|
||||
ui::OzonePlatform::InitializeForUI();
|
||||
#endif
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
media::VaapiWrapper::PreSandboxInitialization();
|
||||
#endif
|
||||
|
||||
diff --git a/media/gpu/video_encode_accelerator_unittest.cc b/media/gpu/video_encode_accelerator_unittest.cc
|
||||
index b8b4dd9..07ddff5 100644
|
||||
--- a/media/gpu/video_encode_accelerator_unittest.cc
|
||||
+++ b/media/gpu/video_encode_accelerator_unittest.cc
|
||||
@@ -48,7 +48,7 @@
|
||||
#include "media/video/video_encode_accelerator.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
||||
#if defined(ARCH_CPU_ARMEL) || (defined(USE_OZONE) && defined(USE_V4L2_CODEC))
|
||||
#include "media/gpu/v4l2_video_encode_accelerator.h"
|
||||
#endif
|
||||
@@ -1063,8 +1063,8 @@
|
||||
|
||||
std::unique_ptr<VideoEncodeAccelerator> VEAClient::CreateV4L2VEA() {
|
||||
std::unique_ptr<VideoEncodeAccelerator> encoder;
|
||||
-#if defined(OS_CHROMEOS) && (defined(ARCH_CPU_ARMEL) || \
|
||||
- (defined(USE_OZONE) && defined(USE_V4L2_CODEC)))
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && (defined(ARCH_CPU_ARMEL) || \
|
||||
+ (defined(USE_OZONE) && defined(USE_V4L2_CODEC)))
|
||||
scoped_refptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kEncoder);
|
||||
if (device)
|
||||
encoder.reset(new V4L2VideoEncodeAccelerator(device));
|
||||
@@ -1074,7 +1074,7 @@
|
||||
|
||||
std::unique_ptr<VideoEncodeAccelerator> VEAClient::CreateVaapiVEA() {
|
||||
std::unique_ptr<VideoEncodeAccelerator> encoder;
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
encoder.reset(new VaapiVideoEncodeAccelerator());
|
||||
#endif
|
||||
return encoder;
|
||||
@@ -1812,7 +1812,7 @@ int main(int argc, char** argv) {
|
||||
LOG(FATAL) << "--measure_latency requires --run_at_fps enabled to work.";
|
||||
}
|
||||
|
||||
-#if defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
|
||||
+#if (defined(OS_CHROMEOS) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_FAMILY)
|
||||
media::VaapiWrapper::PreSandboxInitialization();
|
||||
#endif
|
||||
|
||||
diff --git a/media/media.gyp b/media/media.gyp
|
||||
index a8a370e..9a92e5f 100644
|
||||
--- a/media/media.gyp
|
||||
+++ b/media/media.gyp
|
||||
@@ -752,7 +752,7 @@
|
||||
],
|
||||
}],
|
||||
# For VaapiVideoEncodeAccelerator.
|
||||
- ['target_arch != "arm" and chromeos == 1', {
|
||||
+ ['target_arch != "arm" and (chromeos == 1 or desktop_linux == 1)', {
|
||||
'sources': [
|
||||
'filters/h264_bitstream_buffer.cc',
|
||||
'filters/h264_bitstream_buffer.h',
|
||||
@@ -1330,7 +1330,7 @@
|
||||
'cdm/cdm_adapter_unittest.cc',
|
||||
],
|
||||
}],
|
||||
- ['target_arch != "arm" and chromeos == 1 and use_x11 == 1', {
|
||||
+ ['target_arch != "arm" and (chromeos == 1 or desktop_linux == 1) and use_x11 == 1', {
|
||||
'sources': [
|
||||
'filters/h264_bitstream_buffer_unittest.cc',
|
||||
],
|
||||
@@ -2098,7 +2098,7 @@
|
||||
},
|
||||
],
|
||||
}],
|
||||
- ['chromeos==1', {
|
||||
+ ['chromeos==1 or desktop_linux==1', {
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'jpeg_decode_accelerator_unittest',
|
||||
@@ -2125,7 +2125,7 @@
|
||||
}
|
||||
]
|
||||
}],
|
||||
- ['chromeos==1 or OS=="mac"', {
|
||||
+ ['chromeos==1 or desktop_linux==1 or OS=="mac"', {
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'video_encode_accelerator_unittest',
|
||||
@@ -2171,7 +2171,7 @@
|
||||
}
|
||||
]
|
||||
}],
|
||||
- ['chromeos==1 or OS=="win" or OS=="android"', {
|
||||
+ ['chromeos==1 or desktop_linux==1 or OS=="win" or OS=="android"', {
|
||||
'targets': [
|
||||
{
|
||||
# GN: //media/gpu:video_decode_accelerator_unittest
|
||||
@@ -2264,7 +2264,7 @@
|
||||
],
|
||||
}],
|
||||
|
||||
- ['chromeos==1 and target_arch != "arm"', {
|
||||
+ ['(chromeos==1 or desktop_linux==1) and target_arch != "arm"', {
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'vaapi_jpeg_decoder_unittest',
|
||||
diff --git a/media/media_gpu.gypi b/media/media_gpu.gypi
|
||||
index 70c1398..810ac32 100644
|
||||
--- a/media/media_gpu.gypi
|
||||
+++ b/media/media_gpu.gypi
|
||||
@@ -125,7 +125,7 @@
|
||||
'gpu/android_video_encode_accelerator.h',
|
||||
],
|
||||
}],
|
||||
- ['use_v4lplugin==1 and chromeos==1', {
|
||||
+ ['use_v4lplugin==1 and (chromeos==1 or desktop_linux==1)', {
|
||||
'direct_dependent_settings': {
|
||||
'defines': [
|
||||
'USE_LIBV4L2'
|
||||
@@ -174,7 +174,7 @@
|
||||
},
|
||||
],
|
||||
}],
|
||||
- ['chromeos==1', {
|
||||
+ ['chromeos==1 or desktop_linux==1', {
|
||||
'sources': [
|
||||
'gpu/accelerated_video_decoder.h',
|
||||
'gpu/h264_decoder.cc',
|
||||
@@ -191,7 +191,7 @@
|
||||
'gpu/vp9_picture.h',
|
||||
],
|
||||
}],
|
||||
- ['chromeos==1 and use_v4l2_codec==1', {
|
||||
+ ['(chromeos==1 or desktop_linux==1) and use_v4l2_codec==1', {
|
||||
'direct_dependent_settings': {
|
||||
'defines': [
|
||||
'USE_V4L2_CODEC'
|
||||
@@ -230,7 +230,7 @@
|
||||
'gpu/tegra_v4l2_device.h',
|
||||
],
|
||||
}],
|
||||
- ['target_arch != "arm" and chromeos == 1', {
|
||||
+ ['target_arch != "arm" and (chromeos == 1 or desktop_linux==1)', {
|
||||
'dependencies': [
|
||||
'../media/media.gyp:media',
|
||||
'../third_party/libyuv/libyuv.gyp:libyuv',
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
--- a/build/toolchain/linux/BUILD.gn 2016-11-09 19:49:39.000000000 -0800
|
||||
+++ b/build/toolchain/linux/BUILD.gn 2016-11-10 20:33:18.200587987 -0800
|
||||
@@ -102,13 +102,14 @@
|
||||
}
|
||||
|
||||
gcc_toolchain("x64") {
|
||||
- cc = "gcc"
|
||||
- cxx = "g++"
|
||||
+ toolprefix = "x86_64-libreelec-linux-gnu-"
|
||||
+ cc = "${toolprefix}gcc"
|
||||
+ cxx = "${toolprefix}g++"
|
||||
|
||||
- readelf = "readelf"
|
||||
- nm = "nm"
|
||||
- ar = "ar"
|
||||
+ ar = "${toolprefix}ar"
|
||||
ld = cxx
|
||||
+ readelf = "${toolprefix}readelf"
|
||||
+ nm = "${toolprefix}nm"
|
||||
|
||||
toolchain_args = {
|
||||
current_cpu = "x64"
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -Naur a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
|
||||
--- a/tools/gn/bootstrap/bootstrap.py 2016-10-20 15:02:19.000000000 -0700
|
||||
+++ b/tools/gn/bootstrap/bootstrap.py 2016-11-10 09:26:36.026611661 -0800
|
||||
@@ -563,7 +563,7 @@
|
||||
}
|
||||
|
||||
if is_linux:
|
||||
- libs.extend(['-lrt', '-latomic'])
|
||||
+ libs.extend(['-lrt'])
|
||||
ldflags.extend(['-pthread'])
|
||||
|
||||
static_libraries['xdg_user_dirs'] = {
|
||||
@@ -35,40 +35,44 @@ __path__ = os.path.join(__addon__.getAddonInfo('path'), 'bin') + '/'
|
||||
pauseXBMC = __addon__.getSetting("PAUSE_XBMC")
|
||||
|
||||
# widevine and flash stuff
|
||||
__url__ = 'https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb'
|
||||
__file__ = __url__.split('/')[-1]
|
||||
__tar__ = 'data.tar.xz'
|
||||
__tmp__ = '/tmp/widevine/'
|
||||
__lib__ = 'opt/google/chrome/libwidevinecdm.so'
|
||||
__flash__ = 'opt/google/chrome/PepperFlash/libpepflashplayer.so'
|
||||
|
||||
def download():
|
||||
def install_flash():
|
||||
__url__ = 'https://fpdownload.adobe.com/pub/flashplayer/pdc/24.0.0.186/flash_player_ppapi_linux.x86_64.tar.gz'
|
||||
__file__ = __url__.split('/')[-1]
|
||||
__tmp__ = '/tmp/pepperflash/'
|
||||
__lib__ = 'libpepflashplayer.so'
|
||||
try:
|
||||
if not os.path.isdir(__tmp__):
|
||||
os.mkdir(__tmp__)
|
||||
if not os.path.exists(__tmp__ + __file__):
|
||||
oe.download_file(__url__, __tmp__ + __file__)
|
||||
except Exception, e:
|
||||
oe.notify('Chromium', 'Could not download file')
|
||||
|
||||
def install_flash():
|
||||
try:
|
||||
download()
|
||||
oe.notify('Chromium', 'Extracting libpepflashplayer.so')
|
||||
if not os.path.isdir(__tmp__ + __tar__):
|
||||
oe.execute('cd ' + __tmp__ + ' && ar -x ' + __file__)
|
||||
oe.execute('tar xf ' + __tmp__ + __tar__ + ' -C ' + __tmp__ + ' ./' + __flash__)
|
||||
if not os.path.exists(__tmp__ + __file__):
|
||||
oe.notify('Chromium', 'Could not download file')
|
||||
else:
|
||||
oe.notify('Chromium', 'Extracting libpepflashplayer.so')
|
||||
if not os.path.isdir(__tmp__ + __file__):
|
||||
oe.execute('tar zxf ' + __tmp__ + __file__ + ' -C ' + __tmp__ + '')
|
||||
if not os.path.isdir(__path__ + 'PepperFlash'):
|
||||
os.mkdir(__path__ + 'PepperFlash')
|
||||
oe.copy_file(__tmp__ + __flash__, __path__ + 'PepperFlash/' + __flash__.split('/')[-1])
|
||||
oe.copy_file(__tmp__ + __lib__, __path__ + 'PepperFlash/' + __lib__)
|
||||
oe.notify('Chromium', 'Installation of libpepflashplayer.so succeeded')
|
||||
except Exception, e:
|
||||
oe.notify('Chromium', 'Installation of libpepflashplayer.so failed')
|
||||
|
||||
def install_widevine():
|
||||
__url__ = 'https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb'
|
||||
__file__ = __url__.split('/')[-1]
|
||||
__tar__ = 'data.tar.xz'
|
||||
__tmp__ = '/tmp/widevine/'
|
||||
__lib__ = 'opt/google/chrome/libwidevinecdm.so'
|
||||
try:
|
||||
download()
|
||||
oe.notify('Chromium', 'Extracting libwidevinecdm.so')
|
||||
if not os.path.isdir(__tmp__):
|
||||
os.mkdir(__tmp__)
|
||||
if not os.path.exists(__tmp__ + __file__):
|
||||
oe.download_file(__url__, __tmp__ + __file__)
|
||||
if not os.path.exists(__tmp__ + __file__):
|
||||
oe.notify('Chromium', 'Could not download file')
|
||||
else:
|
||||
oe.notify('Chromium', 'Extracting libwidevinecdm.so')
|
||||
if not os.path.isdir(__tmp__ + __tar__):
|
||||
oe.execute('cd ' + __tmp__ + ' && ar -x ' + __file__)
|
||||
oe.execute('tar xf ' + __tmp__ + __tar__ + ' -C ' + __tmp__ + ' ./' + __lib__)
|
||||
|
||||
2
packages/addons/driver/steamcontroller/changelog.txt
Normal file
2
packages/addons/driver/steamcontroller/changelog.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
100
|
||||
- Initial add-on
|
||||
BIN
packages/addons/driver/steamcontroller/icon/icon.png
Normal file
BIN
packages/addons/driver/steamcontroller/icon/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
66
packages/addons/driver/steamcontroller/package.mk
Normal file
66
packages/addons/driver/steamcontroller/package.mk
Normal file
@@ -0,0 +1,66 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="steamcontroller"
|
||||
PKG_VERSION="02f27c4"
|
||||
PKG_REV="100"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/ynsta/steamcontroller"
|
||||
PKG_URL="https://github.com/ynsta/steamcontroller/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain Python distutilscross:host python-libusb1 enum34 linux"
|
||||
PKG_SECTION="driver"
|
||||
PKG_SHORTDESC="A standalone userland driver for the steam controller to be used where steam client can't be installed."
|
||||
PKG_LONGDESC="A standalone userland driver for the steam controller to be used where steam client can't be installed."
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_NAME="Steam Controller Driver"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
|
||||
pre_make_target() {
|
||||
export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr"
|
||||
export LDSHARED="$CC -shared"
|
||||
}
|
||||
|
||||
make_target() {
|
||||
python setup.py build
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
:
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -a $PKG_BUILD/build/scripts-2.7/* $ADDON_BUILD/$PKG_ADDON_ID/bin/
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -a $PKG_BUILD/build/lib.linux-*-2.7/* $ADDON_BUILD/$PKG_ADDON_ID/lib/
|
||||
cp -a $(get_build_dir python-libusb1)/build/lib/* $ADDON_BUILD/$PKG_ADDON_ID/lib/
|
||||
cp -a $(get_build_dir enum34)/build/lib/* $ADDON_BUILD/$PKG_ADDON_ID/lib/
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/include/linux
|
||||
if [ -f "$(get_build_dir linux)/usr/include/linux/input-event-codes.h" ]; then
|
||||
cp $(get_build_dir linux)/usr/include/linux/input-event-codes.h $ADDON_BUILD/$PKG_ADDON_ID/include/linux/
|
||||
fi
|
||||
cp $(get_build_dir linux)/usr/include/linux/input.h $ADDON_BUILD/$PKG_ADDON_ID/include/linux/
|
||||
|
||||
python -Wi -t -B $ROOT/$TOOLCHAIN/lib/python2.7/compileall.py $ADDON_BUILD/$PKG_ADDON_ID/lib/ -f 1>/dev/null
|
||||
find $ADDON_BUILD/$PKG_ADDON_ID/lib/ -name '*.py' -exec rm {} \;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
diff -Naur a/src/uinput.py b/src/uinput.py
|
||||
--- a/src/uinput.py 2016-01-02 23:13:18.000000000 +0100
|
||||
+++ b/src/uinput.py 2016-01-03 08:44:34.003676619 +0100
|
||||
@@ -34,10 +34,10 @@
|
||||
from collections import deque
|
||||
|
||||
# Get All defines from linux headers
|
||||
-if os.path.exists('/usr/include/linux/input-event-codes.h'):
|
||||
- CHEAD = defines('/usr/include', 'linux/input-event-codes.h')
|
||||
+if os.path.exists('/storage/.kodi/addons/driver.steamcontroller/include/linux/input-event-codes.h'):
|
||||
+ CHEAD = defines('/storage/.kodi/addons/driver.steamcontroller/include', 'linux/input-event-codes.h')
|
||||
else:
|
||||
- CHEAD = defines('/usr/include', 'linux/input.h')
|
||||
+ CHEAD = defines('/storage/.kodi/addons/driver.steamcontroller/include', 'linux/input.h')
|
||||
|
||||
# Keys enum contains all keys and button from linux/uinput.h (KEY_* BTN_*)
|
||||
Keys = IntEnum('Keys', {i: CHEAD[i] for i in CHEAD.keys() if (i.startswith('KEY_') or
|
||||
@@ -0,0 +1,28 @@
|
||||
diff -Naur a/scripts/sc-desktop.py b/scripts/sc-desktop.py
|
||||
--- a/scripts/sc-desktop.py 2016-01-02 23:13:18.000000000 +0100
|
||||
+++ b/scripts/sc-desktop.py 2016-01-04 22:00:18.536497613 +0100
|
||||
@@ -22,6 +22,10 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
+import sys
|
||||
+
|
||||
+sys.path.append('/storage/.kodi/addons/driver.steamcontroller/lib')
|
||||
+
|
||||
"""Steam Controller Mouse, Keyboard mode"""
|
||||
|
||||
from steamcontroller import SteamController, SCButtons
|
||||
diff -Naur a/scripts/sc-xbox.py b/scripts/sc-xbox.py
|
||||
--- a/scripts/sc-xbox.py 2016-01-02 23:13:18.000000000 +0100
|
||||
+++ b/scripts/sc-xbox.py 2016-01-04 22:00:30.751519105 +0100
|
||||
@@ -22,6 +22,10 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
+import sys
|
||||
+
|
||||
+sys.path.append('/storage/.kodi/addons/driver.steamcontroller/lib')
|
||||
+
|
||||
"""Steam Controller XBOX360 Gamepad Emulator"""
|
||||
|
||||
from steamcontroller import \
|
||||
@@ -0,0 +1,31 @@
|
||||
diff -Naur a/src/__init__.py b/src/__init__.py
|
||||
--- a/src/__init__.py 2016-09-14 13:00:35.000000000 -0700
|
||||
+++ b/src/__init__.py 2016-11-17 23:40:57.137095353 -0800
|
||||
@@ -116,18 +116,16 @@
|
||||
self._cmsg = []
|
||||
self._ctx = usb1.USBContext()
|
||||
|
||||
+ while self._handle is None:
|
||||
+ for i in range(len(PRODUCT_ID)):
|
||||
+ pid = PRODUCT_ID[i]
|
||||
+ endpoint = ENDPOINT[i]
|
||||
+ ccidx = CONTROLIDX[i]
|
||||
|
||||
- for i in range(len(PRODUCT_ID)):
|
||||
- pid = PRODUCT_ID[i]
|
||||
- endpoint = ENDPOINT[i]
|
||||
- ccidx = CONTROLIDX[i]
|
||||
-
|
||||
- self._handle = self._ctx.openByVendorIDAndProductID(
|
||||
- VENDOR_ID, pid,
|
||||
- skip_on_error=True,
|
||||
- )
|
||||
- if self._handle is not None:
|
||||
- break
|
||||
+ self._handle = self._ctx.openByVendorIDAndProductID(
|
||||
+ VENDOR_ID, pid,
|
||||
+ skip_on_error=True,
|
||||
+ )
|
||||
|
||||
if self._handle is None:
|
||||
raise ValueError('SteamControler Device not found')
|
||||
@@ -0,0 +1,24 @@
|
||||
diff -Naur a/scripts/sc-desktop.py b/scripts/sc-desktop.py
|
||||
--- a/scripts/sc-desktop.py 2016-11-18 13:31:29.522462062 -0800
|
||||
+++ b/scripts/sc-desktop.py 2016-11-18 13:33:09.268432661 -0800
|
||||
@@ -80,7 +80,7 @@
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('command', type=str, choices=['start', 'stop', 'restart', 'debug'])
|
||||
args = parser.parse_args()
|
||||
- daemon = SCDaemon('/tmp/steamcontroller.pid')
|
||||
+ daemon = SCDaemon('/run/steamcontroller.pid')
|
||||
|
||||
if 'start' == args.command:
|
||||
daemon.start()
|
||||
diff -Naur a/scripts/sc-xbox.py b/scripts/sc-xbox.py
|
||||
--- a/scripts/sc-xbox.py 2016-11-18 13:31:29.522462062 -0800
|
||||
+++ b/scripts/sc-xbox.py 2016-11-18 13:33:09.266432642 -0800
|
||||
@@ -79,7 +79,7 @@
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('command', type=str, choices=['start', 'stop', 'restart', 'debug'])
|
||||
args = parser.parse_args()
|
||||
- daemon = SCDaemon('/tmp/steamcontroller.pid')
|
||||
+ daemon = SCDaemon('/run/steamcontroller.pid')
|
||||
|
||||
if 'start' == args.command:
|
||||
daemon.start()
|
||||
35
packages/addons/driver/steamcontroller/source/default.py
Normal file
35
packages/addons/driver/steamcontroller/source/default.py
Normal file
@@ -0,0 +1,35 @@
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2016 Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import subprocess
|
||||
import xbmc
|
||||
import xbmcaddon
|
||||
|
||||
|
||||
class Monitor(xbmc.Monitor):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
xbmc.Monitor.__init__(self)
|
||||
self.id = xbmcaddon.Addon().getAddonInfo('id')
|
||||
|
||||
def onSettingsChanged(self):
|
||||
subprocess.call(['systemctl', 'restart', self.id])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
Monitor().waitForAbort()
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=a standalone userland driver for the steam controller
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStart=/usr/bin/python /storage/.kodi/addons/driver.steamcontroller/bin/sc-xbox.py start
|
||||
ExecStop=/usr/bin/python /storage/.kodi/addons/driver.steamcontroller/bin/sc-xbox.py stop
|
||||
PIDFile=/run/steamcontroller.pid
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,2 +1,6 @@
|
||||
8.0.101
|
||||
- include SI1145 library
|
||||
- compile DHT driver
|
||||
|
||||
8.0.100
|
||||
- Initial Release
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user