mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2026-01-04 07:31:38 +01:00
Compare commits
819 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78c9fb92aa | ||
|
|
fda0943419 | ||
|
|
cd94606c0c | ||
|
|
e46edb5528 | ||
|
|
91244cc738 | ||
|
|
244573509d | ||
|
|
a4e082e985 | ||
|
|
4ea88512dd | ||
|
|
f2bad3a0be | ||
|
|
47c9b437af | ||
|
|
0ae78d4cd0 | ||
|
|
61e5e393a7 | ||
|
|
39e03a0b2c | ||
|
|
eabc9030ab | ||
|
|
9e463d1a88 | ||
|
|
0849117d5c | ||
|
|
172af1524d | ||
|
|
88dd6a9434 | ||
|
|
772addfd24 | ||
|
|
3df6ec2fbc | ||
|
|
1594372c28 | ||
|
|
30b9ff660f | ||
|
|
12297a00ef | ||
|
|
01d51a101a | ||
|
|
8da7c58016 | ||
|
|
4e8338eb13 | ||
|
|
2525f39d35 | ||
|
|
a06cea50a5 | ||
|
|
d234388042 | ||
|
|
d4c7db5060 | ||
|
|
8e42efaada | ||
|
|
fa50877c2e | ||
|
|
580af4906d | ||
|
|
dc7f01f448 | ||
|
|
c7c53d016e | ||
|
|
c50b464a12 | ||
|
|
64644a1072 | ||
|
|
e680ebeb2f | ||
|
|
6a78b2a2b2 | ||
|
|
7f92d187b1 | ||
|
|
adf0e23aa2 | ||
|
|
06c24e14eb | ||
|
|
be41468c83 | ||
|
|
a4f393caf4 | ||
|
|
3c488199c4 | ||
|
|
c04c7e1f10 | ||
|
|
71ae05d51f | ||
|
|
68f2acbf4c | ||
|
|
1dae45d745 | ||
|
|
45bd3b9ec0 | ||
|
|
00d80fdd86 | ||
|
|
59ae054873 | ||
|
|
1cc98bde67 | ||
|
|
1ce2e94f5f | ||
|
|
45a150b8dc | ||
|
|
38593a4f2a | ||
|
|
853c04712d | ||
|
|
7afb01dce9 | ||
|
|
1e03ca13cc | ||
|
|
cbc3feeb89 | ||
|
|
7320e051ea | ||
|
|
3f77a6002e | ||
|
|
9fdfc6dfc6 | ||
|
|
f15528eb64 | ||
|
|
666e6c4033 | ||
|
|
b0b70df4ad | ||
|
|
763623db80 | ||
|
|
6e824b3f51 | ||
|
|
30ca0a5d4b | ||
|
|
9ed0b76403 | ||
|
|
47c180da43 | ||
|
|
cb5a6b1a7d | ||
|
|
7b05439dcc | ||
|
|
143998e46c | ||
|
|
8251b74665 | ||
|
|
61cbf0fffe | ||
|
|
7aac4dc175 | ||
|
|
61390d8e45 | ||
|
|
6aa8eed352 | ||
|
|
952dc70402 | ||
|
|
83be8a902c | ||
|
|
04a1e5b75b | ||
|
|
41f312eb64 | ||
|
|
178c00182c | ||
|
|
c11525a45e | ||
|
|
d77b49d172 | ||
|
|
513269d24e | ||
|
|
643ddc1320 | ||
|
|
11bd7a814f | ||
|
|
b2f035549a | ||
|
|
ce0ab2dd84 | ||
|
|
6b4b676550 | ||
|
|
a244b82293 | ||
|
|
aa9c136d67 | ||
|
|
87644a2bb7 | ||
|
|
efd61c6f53 | ||
|
|
59f4c4aad5 | ||
|
|
330ce86123 | ||
|
|
c4632647ae | ||
|
|
ab5d581ba8 | ||
|
|
70183f4d6e | ||
|
|
6eca29600d | ||
|
|
3c66485015 | ||
|
|
72dfba8053 | ||
|
|
0c8cc2cde4 | ||
|
|
cdb53422e8 | ||
|
|
17ace8339d | ||
|
|
47ba652d5a | ||
|
|
b5a3a5b621 | ||
|
|
1e77896838 | ||
|
|
4d6f318153 | ||
|
|
b97fe6c410 | ||
|
|
8bf46c7368 | ||
|
|
7977e381ea | ||
|
|
1f556d22ca | ||
|
|
e7aa5fe602 | ||
|
|
c37eabe73b | ||
|
|
2273f9555a | ||
|
|
da2415fed5 | ||
|
|
36e2097401 | ||
|
|
e9113517d4 | ||
|
|
d53ee6219b | ||
|
|
65756abf44 | ||
|
|
ce36aeaac3 | ||
|
|
fa1cbb47aa | ||
|
|
7ff9c85639 | ||
|
|
a372be4ba2 | ||
|
|
568dc29b9a | ||
|
|
09e8675f56 | ||
|
|
3ab1dfeb8f | ||
|
|
381021aebf | ||
|
|
2c3ae19a20 | ||
|
|
1ff0f1673d | ||
|
|
e8c40bafa5 | ||
|
|
15481041e0 | ||
|
|
e69ae07f08 | ||
|
|
afc44414d5 | ||
|
|
2ee795d9e4 | ||
|
|
164c8a6e18 | ||
|
|
c30fff7c32 | ||
|
|
e1182920db | ||
|
|
43dc3f7992 | ||
|
|
6d79ec87fb | ||
|
|
2001da3dd4 | ||
|
|
b1afed7501 | ||
|
|
74b79c6e19 | ||
|
|
b7ac32d6ee | ||
|
|
a280182956 | ||
|
|
bacf22b907 | ||
|
|
f9c9bf03a8 | ||
|
|
8273514095 | ||
|
|
ff75ad515b | ||
|
|
b5592c05ad | ||
|
|
b28b0947d9 | ||
|
|
fa20186cb6 | ||
|
|
b90b7f50df | ||
|
|
1d15ebe19e | ||
|
|
8befc3210d | ||
|
|
37dc675cd0 | ||
|
|
d4282b0cfc | ||
|
|
58dca9253d | ||
|
|
e90d0d1da4 | ||
|
|
fa77008f19 | ||
|
|
80dac5a87c | ||
|
|
164c55be78 | ||
|
|
42264b2db4 | ||
|
|
3342ecaf44 | ||
|
|
f57405617e | ||
|
|
1e5e790ba0 | ||
|
|
669361117d | ||
|
|
6be1f5671e | ||
|
|
d163c6fe2e | ||
|
|
b35401d6a7 | ||
|
|
37043b0557 | ||
|
|
0890620c94 | ||
|
|
502a5241e5 | ||
|
|
026b09cf64 | ||
|
|
0a0691ebcf | ||
|
|
29ffffa7b9 | ||
|
|
db5da9619b | ||
|
|
4a839e95de | ||
|
|
d93293f31b | ||
|
|
869dcb6f50 | ||
|
|
34650f52b5 | ||
|
|
6847bbbb11 | ||
|
|
d2f9e31ae4 | ||
|
|
f631a9901f | ||
|
|
eb1c8a15b6 | ||
|
|
1ce2a36c7b | ||
|
|
53e537c738 | ||
|
|
0a3e446ad9 | ||
|
|
46c9a860b6 | ||
|
|
baf4c1a4af | ||
|
|
fd5f6e2e19 | ||
|
|
30de320c01 | ||
|
|
d33a689b96 | ||
|
|
e6b4c4d716 | ||
|
|
b977a7b8a5 | ||
|
|
5f03341211 | ||
|
|
6dd06add9d | ||
|
|
bd22aa5e86 | ||
|
|
cf62b0ad86 | ||
|
|
6c69eca380 | ||
|
|
6eff9315e1 | ||
|
|
f148915d54 | ||
|
|
0201a33dd6 | ||
|
|
d3dddb6a56 | ||
|
|
616b1f12bd | ||
|
|
5bdce9b995 | ||
|
|
b4615c67a3 | ||
|
|
df55ecd83c | ||
|
|
fae7961a03 | ||
|
|
79f1dfb8d3 | ||
|
|
9ce3d806fa | ||
|
|
10da767c2f | ||
|
|
2a62d5d34f | ||
|
|
b29f9cd7b0 | ||
|
|
48d8650ae1 | ||
|
|
ed4c4ee73b | ||
|
|
c47ab5f6b7 | ||
|
|
291ba97fab | ||
|
|
f48d5d1b7e | ||
|
|
1a9ed92d6f | ||
|
|
264feb35ff | ||
|
|
044616bd71 | ||
|
|
fab6158c19 | ||
|
|
936a7acf32 | ||
|
|
d0c526513d | ||
|
|
a70802477e | ||
|
|
35e81536e7 | ||
|
|
d2b66196b4 | ||
|
|
52ab72127d | ||
|
|
1d0adbb812 | ||
|
|
51ac37686c | ||
|
|
0b6b6eb59a | ||
|
|
500ab45770 | ||
|
|
6ff18e38b4 | ||
|
|
cef606feca | ||
|
|
39b8a2e682 | ||
|
|
c43c224ef9 | ||
|
|
62c7788b29 | ||
|
|
149a02f99a | ||
|
|
f92745d73e | ||
|
|
6937d9f9dd | ||
|
|
a5297bd0d4 | ||
|
|
36c0600523 | ||
|
|
395b6bdeee | ||
|
|
a265c20138 | ||
|
|
e3793e5a60 | ||
|
|
bbc44f57c4 | ||
|
|
b4b9828cb0 | ||
|
|
dcf63f8578 | ||
|
|
d29c78da19 | ||
|
|
74be819088 | ||
|
|
2c04fc02c9 | ||
|
|
46b35acfcb | ||
|
|
ecd7e476f8 | ||
|
|
e08b9ed0be | ||
|
|
637b0c64b0 | ||
|
|
09707dd4f2 | ||
|
|
04ce8e3840 | ||
|
|
5a03e47605 | ||
|
|
8e8e584552 | ||
|
|
566d77a2ae | ||
|
|
f5a582c287 | ||
|
|
d05401d886 | ||
|
|
7620124ee9 | ||
|
|
05dac03f36 | ||
|
|
29a09c8911 | ||
|
|
e590618962 | ||
|
|
972bc3b408 | ||
|
|
78be334c38 | ||
|
|
c4339c3064 | ||
|
|
d3ac1bf16c | ||
|
|
51d325e613 | ||
|
|
e27ea4d12c | ||
|
|
dd0b9454a2 | ||
|
|
d76039d3dc | ||
|
|
fcc84795f6 | ||
|
|
d8ac76fa09 | ||
|
|
3eb694605e | ||
|
|
ac54900849 | ||
|
|
86b65756cb | ||
|
|
dede01eb20 | ||
|
|
1d2d9815d0 | ||
|
|
feabddee56 | ||
|
|
c6f93ec9f2 | ||
|
|
fbdc1877e2 | ||
|
|
fd6756ee2b | ||
|
|
af6b7f9c55 | ||
|
|
d6dd440c76 | ||
|
|
2b4a423fd7 | ||
|
|
ca402671af | ||
|
|
4a85514963 | ||
|
|
f33808ffc9 | ||
|
|
417e7e6317 | ||
|
|
6845fee905 | ||
|
|
4390f2c8c3 | ||
|
|
d08c612b40 | ||
|
|
49f9e57715 | ||
|
|
f83fd4acb4 | ||
|
|
37c7835c78 | ||
|
|
f0b1194004 | ||
|
|
36209b70da | ||
|
|
c5b32b33eb | ||
|
|
85269470e5 | ||
|
|
7c7facc234 | ||
|
|
2b73f9929f | ||
|
|
805d05812c | ||
|
|
e29ee5b8a5 | ||
|
|
55f5542ca2 | ||
|
|
d3f3c32282 | ||
|
|
6c9482eef5 | ||
|
|
70517c83c2 | ||
|
|
e836396207 | ||
|
|
b170c8376d | ||
|
|
66a2e70985 | ||
|
|
fa58671f9f | ||
|
|
129c37700f | ||
|
|
e4497c9e69 | ||
|
|
4a267f1bc2 | ||
|
|
b44a329f91 | ||
|
|
ae1eb286c6 | ||
|
|
4169d96e24 | ||
|
|
a5a034b72f | ||
|
|
d80ae05f61 | ||
|
|
3932527288 | ||
|
|
02a0a027f4 | ||
|
|
cc1915b3b3 | ||
|
|
3da30e991a | ||
|
|
7104400ad8 | ||
|
|
3e89981d98 | ||
|
|
93b6ab56ae | ||
|
|
692b273ec5 | ||
|
|
670426646d | ||
|
|
0b8c7807fe | ||
|
|
2508bc7c58 | ||
|
|
cfb50a9cb7 | ||
|
|
287b829c04 | ||
|
|
1fd0ea7035 | ||
|
|
bff68f1f67 | ||
|
|
9a60413ba0 | ||
|
|
e7ca0c4ae3 | ||
|
|
7e37c7c544 | ||
|
|
3e3745c2da | ||
|
|
fb139cff1a | ||
|
|
9de283b891 | ||
|
|
282cb325b1 | ||
|
|
f2a0988a4a | ||
|
|
fe5cccc1ec | ||
|
|
541c7f74bb | ||
|
|
8f4fa3f8d5 | ||
|
|
cfd070ece6 | ||
|
|
03f3b8eadd | ||
|
|
ce496cbda5 | ||
|
|
927504e827 | ||
|
|
00e79db89e | ||
|
|
015e6e58c5 | ||
|
|
29d90b952c | ||
|
|
c5046ca5b3 | ||
|
|
56b15fbbcc | ||
|
|
1433bafb33 | ||
|
|
e3d0f27031 | ||
|
|
eaf4db6b8b | ||
|
|
2966d0d334 | ||
|
|
3a11009dac | ||
|
|
c859fb02f3 | ||
|
|
e0de28c1d3 | ||
|
|
60f2ba9a24 | ||
|
|
021dced22a | ||
|
|
aa2d36f6de | ||
|
|
3d460bd295 | ||
|
|
13bd2e82ca | ||
|
|
353e791a18 | ||
|
|
f48737c7b3 | ||
|
|
b5ce8af3d7 | ||
|
|
0eaf0bbe26 | ||
|
|
822ee47459 | ||
|
|
7d8985243d | ||
|
|
4356469a31 | ||
|
|
11dad148ff | ||
|
|
29f86e00b1 | ||
|
|
7f58a8e954 | ||
|
|
ae5b5268f3 | ||
|
|
41dbc139ab | ||
|
|
89690699b2 | ||
|
|
6eb25d7cb4 | ||
|
|
4c86e46d75 | ||
|
|
02ba5194c0 | ||
|
|
8aaee53c2c | ||
|
|
a3e1980c08 | ||
|
|
e3abe51a31 | ||
|
|
c0719605e7 | ||
|
|
4db05e991b | ||
|
|
962f7a3bae | ||
|
|
337d7bce03 | ||
|
|
4e55d0f31e | ||
|
|
e77aed624e | ||
|
|
738efea9c6 | ||
|
|
9bcd2695c3 | ||
|
|
222e943074 | ||
|
|
fdee70d174 | ||
|
|
816e8f83b8 | ||
|
|
c5d95071df | ||
|
|
c2af27beb0 | ||
|
|
87f37aa278 | ||
|
|
f4c15a98e3 | ||
|
|
04eecf03eb | ||
|
|
c93f0a07c4 | ||
|
|
1241f80002 | ||
|
|
65137ff02c | ||
|
|
f6bfbb2b09 | ||
|
|
b4cba15a0e | ||
|
|
5be4de8583 | ||
|
|
d51e2ab219 | ||
|
|
644271e7a4 | ||
|
|
53d14442c9 | ||
|
|
78fdb65dcf | ||
|
|
20525d2110 | ||
|
|
f2f3ba92d7 | ||
|
|
ee99686b28 | ||
|
|
a3eec39b01 | ||
|
|
9a468d8599 | ||
|
|
2215e5a47e | ||
|
|
62d72dec5e | ||
|
|
4e43b28858 | ||
|
|
6e0062236c | ||
|
|
a93841ac9c | ||
|
|
2d30a10138 | ||
|
|
0a5de50052 | ||
|
|
bf66d734bc | ||
|
|
1b3aa3afc5 | ||
|
|
734d3c3b8a | ||
|
|
7946c94170 | ||
|
|
f6d6a07c30 | ||
|
|
b823ad9270 | ||
|
|
973255c469 | ||
|
|
a8e3eabb6d | ||
|
|
b1d1499356 | ||
|
|
20020d1572 | ||
|
|
e56a8df8a0 | ||
|
|
9d7121c180 | ||
|
|
434b98fe0f | ||
|
|
f3fc0e088d | ||
|
|
a14f02d8e5 | ||
|
|
7c73fff34d | ||
|
|
461c5fc637 | ||
|
|
dee79d6053 | ||
|
|
cfb175dfdf | ||
|
|
7aed9b65d0 | ||
|
|
26e6cb3eb9 | ||
|
|
911f16d4c8 | ||
|
|
b0bd0c24aa | ||
|
|
9aeadbb020 | ||
|
|
8cd2e0f694 | ||
|
|
cdb41ba1d0 | ||
|
|
c45725e587 | ||
|
|
79e57ace65 | ||
|
|
0d91f0a1df | ||
|
|
66943fefa7 | ||
|
|
3c230b8ac5 | ||
|
|
1b7a61ff4a | ||
|
|
695117f8f6 | ||
|
|
dbfeb90d3a | ||
|
|
2a1e9be6c2 | ||
|
|
f1d6e8dbb6 | ||
|
|
bd14274b1b | ||
|
|
1c4c99eae2 | ||
|
|
3b3e90ecad | ||
|
|
ff6df15be3 | ||
|
|
303631e3d5 | ||
|
|
fa3cfcd0cd | ||
|
|
f55ae9595e | ||
|
|
7b3d0958c0 | ||
|
|
9e4944f7b6 | ||
|
|
8f7caa4353 | ||
|
|
f8d7c5a5cf | ||
|
|
b52f6c053b | ||
|
|
e838d71d61 | ||
|
|
cc96b0acbc | ||
|
|
67a959002d | ||
|
|
372595cca3 | ||
|
|
1df94c9fff | ||
|
|
b3497f9b36 | ||
|
|
b50b99dfcb | ||
|
|
47a78e8a6d | ||
|
|
7551c6800c | ||
|
|
d9ae0db699 | ||
|
|
aac5c2a862 | ||
|
|
fa75ad695c | ||
|
|
9de5d091ff | ||
|
|
18e8506412 | ||
|
|
042734cc5b | ||
|
|
ae0ca743f5 | ||
|
|
8ddf5e172b | ||
|
|
aabc9ca266 | ||
|
|
884b9ff24f | ||
|
|
84429cd944 | ||
|
|
895cc4f0a2 | ||
|
|
5ed704484e | ||
|
|
b0485b9632 | ||
|
|
0fb31dbf3a | ||
|
|
53f38353e0 | ||
|
|
b450e7c1c5 | ||
|
|
c0689d25fb | ||
|
|
65b77d5920 | ||
|
|
69c3470e72 | ||
|
|
e4a32bea9f | ||
|
|
1f32c11d5e | ||
|
|
659aec8096 | ||
|
|
e06a68397d | ||
|
|
037e49cf57 | ||
|
|
d46f6f5a80 | ||
|
|
1aa90ac629 | ||
|
|
edf72f065f | ||
|
|
9a19eb6918 | ||
|
|
14de791d60 | ||
|
|
86f36027e4 | ||
|
|
57025e65e1 | ||
|
|
41c05876bc | ||
|
|
f79e9d4573 | ||
|
|
503590f6bf | ||
|
|
e6fa85b493 | ||
|
|
be6c89366f | ||
|
|
b21b96df21 | ||
|
|
8d9cf48e81 | ||
|
|
5ad1e22866 | ||
|
|
cc0ed401ec | ||
|
|
19b2898691 | ||
|
|
4dd71ae1c5 | ||
|
|
2c3a2bed6d | ||
|
|
11bfdc57f9 | ||
|
|
2ae3e51f59 | ||
|
|
ff00c591c3 | ||
|
|
e7c7469cf5 | ||
|
|
98a5d5a6ee | ||
|
|
b99fd4c7d6 | ||
|
|
266dea06ec | ||
|
|
aeba9259b2 | ||
|
|
10ba541846 | ||
|
|
eb35ade9a0 | ||
|
|
a25fb0356a | ||
|
|
f57662874a | ||
|
|
8e7a855ee8 | ||
|
|
c45ab1aada | ||
|
|
5fedb69e66 | ||
|
|
02adaa5854 | ||
|
|
fa240f2261 | ||
|
|
4c095252a5 | ||
|
|
68138893a5 | ||
|
|
c816464c1d | ||
|
|
fae68ff016 | ||
|
|
c1407733c5 | ||
|
|
080c707aab | ||
|
|
b9db002fef | ||
|
|
b8244b606e | ||
|
|
defdd12e70 | ||
|
|
1718abaefa | ||
|
|
9bb82232fa | ||
|
|
580f22ccb7 | ||
|
|
675d1d56e6 | ||
|
|
ba721f5f2f | ||
|
|
3a4b90f086 | ||
|
|
342ccf6903 | ||
|
|
d183fc7faa | ||
|
|
f626ed6a43 | ||
|
|
6702910b74 | ||
|
|
9fe2d31d6e | ||
|
|
cb2676c8b7 | ||
|
|
8e241b5262 | ||
|
|
4178834deb | ||
|
|
cfa92a53c0 | ||
|
|
2b15571316 | ||
|
|
99eac53580 | ||
|
|
646c20022c | ||
|
|
5912df2440 | ||
|
|
3110d589e1 | ||
|
|
03e84ef7e3 | ||
|
|
300cbaa6ad | ||
|
|
c9c1573375 | ||
|
|
33d3918e5a | ||
|
|
1707d5ca3c | ||
|
|
50a2c22ff7 | ||
|
|
fa8dce4f77 | ||
|
|
4e5116c46e | ||
|
|
486d6f631b | ||
|
|
eab170c0af | ||
|
|
f504f419d3 | ||
|
|
5bcf898b97 | ||
|
|
f7f3447496 | ||
|
|
d2ddf07461 | ||
|
|
97074969a5 | ||
|
|
b0b9dd27b8 | ||
|
|
655bb619a3 | ||
|
|
6948456dbf | ||
|
|
d30956055b | ||
|
|
c08921487b | ||
|
|
7ecf070e7d | ||
|
|
26a1ec1b96 | ||
|
|
ef3ddb1d03 | ||
|
|
eb021848ba | ||
|
|
f751738645 | ||
|
|
d9dbd5def6 | ||
|
|
9efbb463a4 | ||
|
|
9130ca4c73 | ||
|
|
f2a9d02de2 | ||
|
|
c255b18cfc | ||
|
|
c371782630 | ||
|
|
3b9c5a36f5 | ||
|
|
654ad27418 | ||
|
|
9dbbe83a06 | ||
|
|
9d0ee66f2d | ||
|
|
3dcde557f7 | ||
|
|
53a31889fe | ||
|
|
adb8561aba | ||
|
|
a7422ac2f4 | ||
|
|
6d878565f8 | ||
|
|
5dbfae0176 | ||
|
|
4553fa0b98 | ||
|
|
1228517261 | ||
|
|
537b40e013 | ||
|
|
c35e1a284b | ||
|
|
30a2ad5501 | ||
|
|
eabf3bace7 | ||
|
|
36dbe6f2de | ||
|
|
bf84dac4cf | ||
|
|
0357db3581 | ||
|
|
6e35bcbf03 | ||
|
|
68fd71d2ad | ||
|
|
3675653c20 | ||
|
|
f611fdfee8 | ||
|
|
b8de2391d6 | ||
|
|
1d7ed03d5c | ||
|
|
c85c9ad1f1 | ||
|
|
c5fe2c1fcb | ||
|
|
8eeb36f14a | ||
|
|
ac3948930e | ||
|
|
1103e3374c | ||
|
|
588caab074 | ||
|
|
6a69e304dd | ||
|
|
298bce1d92 | ||
|
|
1e9a432d59 | ||
|
|
1c47244b01 | ||
|
|
56ea7864d4 | ||
|
|
e9956fec9a | ||
|
|
c8dd0b53ee | ||
|
|
5973e91cc3 | ||
|
|
8c31bd2939 | ||
|
|
b0c28fadaa | ||
|
|
41139e31c0 | ||
|
|
b4d0186718 | ||
|
|
ea576ddbd4 | ||
|
|
05b824567c | ||
|
|
c3139abe38 | ||
|
|
1d3d64f34c | ||
|
|
e32a4ea4ef | ||
|
|
dff26a489d | ||
|
|
531c56ea65 | ||
|
|
b5a9c92b7a | ||
|
|
90f9a7053a | ||
|
|
1c0b490c28 | ||
|
|
3e70aac5cc | ||
|
|
c6ab0fdb15 | ||
|
|
943acd22e5 | ||
|
|
19bade0280 | ||
|
|
f7685a4639 | ||
|
|
70c7b1d93c | ||
|
|
bd8693a084 | ||
|
|
4df8abc200 | ||
|
|
ec08b3f28d | ||
|
|
da48003abd | ||
|
|
14e25e2059 | ||
|
|
2f06893a29 | ||
|
|
ccb48b7203 | ||
|
|
59965c17b4 | ||
|
|
bfa060f098 | ||
|
|
96e0261041 | ||
|
|
3c3469b9ce | ||
|
|
2e19026d45 | ||
|
|
421a7c3b41 | ||
|
|
6247736fc9 | ||
|
|
436019b8bb | ||
|
|
ed615e3ca0 | ||
|
|
362feaae24 | ||
|
|
432c387e21 | ||
|
|
79ac041844 | ||
|
|
6e8b862811 | ||
|
|
129ff97fe6 | ||
|
|
5181f9cea2 | ||
|
|
35284e4667 | ||
|
|
8638cd9acf | ||
|
|
5de99da75c | ||
|
|
be635258fa | ||
|
|
0a41ca6b75 | ||
|
|
d6f1463cb3 | ||
|
|
f2a0bf3ea8 | ||
|
|
7d4e86be3b | ||
|
|
a7f46919ff | ||
|
|
bd3e65b576 | ||
|
|
6d8acd2696 | ||
|
|
643969a184 | ||
|
|
6ae5e5b6b7 | ||
|
|
6555996f92 | ||
|
|
97d6e4aed7 | ||
|
|
a1d4b9f35b | ||
|
|
3455fa9bfd | ||
|
|
e6df13e6e0 | ||
|
|
52805f526b | ||
|
|
9d07259f16 | ||
|
|
e281b13597 | ||
|
|
c601849e00 | ||
|
|
a38dd53411 | ||
|
|
01567b51dc | ||
|
|
4bc065cf9e | ||
|
|
b5d78afe20 | ||
|
|
8066b33c40 | ||
|
|
f71f9dc93a | ||
|
|
1332ba3c3c | ||
|
|
11431b16e0 | ||
|
|
17f04fc9e7 | ||
|
|
79b7909507 | ||
|
|
dd8e4ffbe5 | ||
|
|
d99e1f6c29 | ||
|
|
c7551c37c7 | ||
|
|
2d6c28db24 | ||
|
|
3ce09c05c4 | ||
|
|
2c8f4e202b | ||
|
|
2cad836833 | ||
|
|
a53b12df2d | ||
|
|
f39a2c89fc | ||
|
|
ed7526a66c | ||
|
|
6a183fbbc3 | ||
|
|
c5462bb95d | ||
|
|
358f5d2b03 | ||
|
|
a9dff9420a | ||
|
|
0b7fba75c1 | ||
|
|
f5d36e6c94 | ||
|
|
688b10b970 | ||
|
|
727a69f537 | ||
|
|
952abea47b | ||
|
|
5dfb42fc68 | ||
|
|
e730e8b691 | ||
|
|
57b98fa55a | ||
|
|
e42c134038 | ||
|
|
e66fd6f0aa | ||
|
|
140c162a0d | ||
|
|
fc894ab11b | ||
|
|
d6f0940400 | ||
|
|
1b59595e1e | ||
|
|
a50fdd5484 | ||
|
|
3a02578b33 | ||
|
|
ba2ff3a6d2 | ||
|
|
31918c55f3 | ||
|
|
867a484df1 | ||
|
|
d3c43c2816 | ||
|
|
b65ff60a8e | ||
|
|
2b78a43f77 | ||
|
|
a6ce6a5d80 | ||
|
|
cdef186c11 | ||
|
|
700447f7e4 | ||
|
|
397972ebf3 | ||
|
|
eb85b8da32 | ||
|
|
18bc95ba51 | ||
|
|
60e4aca846 | ||
|
|
397bae20e9 | ||
|
|
97a81cee25 | ||
|
|
166c728300 | ||
|
|
a0ade22057 | ||
|
|
29db1dcd62 | ||
|
|
26e7ef78fb | ||
|
|
804bd72599 | ||
|
|
160759ceef | ||
|
|
94ace035a5 | ||
|
|
2da9981e33 | ||
|
|
5348298f62 | ||
|
|
c287170c94 | ||
|
|
7dcaba6312 | ||
|
|
61c924701f | ||
|
|
7f4d873dd9 | ||
|
|
724217c740 | ||
|
|
6023f6b1bf | ||
|
|
ab9192e463 | ||
|
|
c7a2c24529 | ||
|
|
a5d8a9c211 | ||
|
|
4b88119b4b | ||
|
|
2668d23244 | ||
|
|
76fa974cb2 | ||
|
|
622f72bc8b | ||
|
|
cdf9cd8afa | ||
|
|
eab99f37ce | ||
|
|
450452bb8c | ||
|
|
b46d73bee8 | ||
|
|
6606e0909c | ||
|
|
88ee973334 | ||
|
|
f64a15d62e | ||
|
|
83f3cf4298 | ||
|
|
134e22a00f | ||
|
|
ca216bae1a | ||
|
|
d47336bf1c | ||
|
|
64a981124a | ||
|
|
364b0fe82e | ||
|
|
f389a718a8 | ||
|
|
93ef0091db | ||
|
|
63461d59a1 | ||
|
|
b8d4e02ce7 | ||
|
|
1d0bd50624 | ||
|
|
9a0cf58721 | ||
|
|
904561ebf2 | ||
|
|
9bd836e046 | ||
|
|
36998b006d | ||
|
|
4107670d62 | ||
|
|
9a36747927 | ||
|
|
c96a914b52 | ||
|
|
aa2862ad86 | ||
|
|
15805741f1 | ||
|
|
e7a2d5c843 | ||
|
|
6d36b4bb79 | ||
|
|
f0eeca9080 | ||
|
|
9beb866b12 |
373
.github/workflows/submit.yml
vendored
373
.github/workflows/submit.yml
vendored
@@ -9,17 +9,19 @@ on:
|
||||
platforms:
|
||||
description: "Platform(s) to execute on"
|
||||
required: true
|
||||
default: "Linux x64, Linux x86, Windows x64, macOS x64"
|
||||
default: "Linux additional (hotspot only), Linux x64, Linux x86, Windows aarch64, Windows x64, macOS x64"
|
||||
|
||||
jobs:
|
||||
prerequisites:
|
||||
name: Prerequisites
|
||||
runs-on: "ubuntu-latest"
|
||||
runs-on: "ubuntu-20.04"
|
||||
outputs:
|
||||
should_run: ${{ steps.check_submit.outputs.should_run }}
|
||||
bundle_id: ${{ steps.check_bundle_id.outputs.bundle_id }}
|
||||
platform_linux_x86: ${{ steps.check_platforms.outputs.platform_linux_x86 }}
|
||||
platform_linux_additional: ${{ steps.check_platforms.outputs.platform_linux_additional }}
|
||||
platform_linux_x64: ${{ steps.check_platforms.outputs.platform_linux_x64 }}
|
||||
platform_linux_x86: ${{ steps.check_platforms.outputs.platform_linux_x86 }}
|
||||
platform_windows_aarch64: ${{ steps.check_platforms.outputs.platform_windows_aarch64 }}
|
||||
platform_windows_x64: ${{ steps.check_platforms.outputs.platform_windows_x64 }}
|
||||
platform_macos_x64: ${{ steps.check_platforms.outputs.platform_macos_x64 }}
|
||||
dependencies: ${{ steps.check_deps.outputs.dependencies }}
|
||||
@@ -32,8 +34,10 @@ jobs:
|
||||
- name: Check which platforms should be included
|
||||
id: check_platforms
|
||||
run: |
|
||||
echo "::set-output name=platform_linux_additional::${{ contains(github.event.inputs.platforms, 'linux additional (hotspot only)') || (github.event.inputs.platforms == '' && (secrets.JDK_SUBMIT_PLATFORMS == '' || contains(secrets.JDK_SUBMIT_PLATFORMS, 'linux additional (hotspot only)'))) }}"
|
||||
echo "::set-output name=platform_linux_x64::${{ contains(github.event.inputs.platforms, 'linux x64') || (github.event.inputs.platforms == '' && (secrets.JDK_SUBMIT_PLATFORMS == '' || contains(secrets.JDK_SUBMIT_PLATFORMS, 'linux x64'))) }}"
|
||||
echo "::set-output name=platform_linux_x86::${{ contains(github.event.inputs.platforms, 'linux x86') || (github.event.inputs.platforms == '' && (secrets.JDK_SUBMIT_PLATFORMS == '' || contains(secrets.JDK_SUBMIT_PLATFORMS, 'linux x86'))) }}"
|
||||
echo "::set-output name=platform_windows_aarch64::${{ contains(github.event.inputs.platforms, 'windows aarch64') || (github.event.inputs.platforms == '' && (secrets.JDK_SUBMIT_PLATFORMS == '' || contains(secrets.JDK_SUBMIT_PLATFORMS, 'windows aarch64'))) }}"
|
||||
echo "::set-output name=platform_windows_x64::${{ contains(github.event.inputs.platforms, 'windows x64') || (github.event.inputs.platforms == '' && (secrets.JDK_SUBMIT_PLATFORMS == '' || contains(secrets.JDK_SUBMIT_PLATFORMS, 'windows x64'))) }}"
|
||||
echo "::set-output name=platform_macos_x64::${{ contains(github.event.inputs.platforms, 'macos x64') || (github.event.inputs.platforms == '' && (secrets.JDK_SUBMIT_PLATFORMS == '' || contains(secrets.JDK_SUBMIT_PLATFORMS, 'macos x64'))) }}"
|
||||
if: steps.check_submit.outputs.should_run != 'false'
|
||||
@@ -80,7 +84,7 @@ jobs:
|
||||
if: steps.check_submit.outputs.should_run != 'false' && steps.jtreg.outputs.cache-hit != 'true'
|
||||
|
||||
- name: Build jtreg
|
||||
run: sh make/build-all.sh ${JAVA_HOME}
|
||||
run: sh make/build-all.sh ${JAVA_HOME_8_X64}
|
||||
working-directory: jtreg
|
||||
if: steps.check_submit.outputs.should_run != 'false' && steps.jtreg.outputs.cache-hit != 'true'
|
||||
|
||||
@@ -98,9 +102,9 @@ jobs:
|
||||
|
||||
linux_x64_build:
|
||||
name: Linux x64
|
||||
runs-on: "ubuntu-latest"
|
||||
runs-on: "ubuntu-20.04"
|
||||
needs: prerequisites
|
||||
if: needs.prerequisites.outputs.should_run != 'false' && needs.prerequisites.outputs.platform_linux_x64 != 'false'
|
||||
if: needs.prerequisites.outputs.should_run != 'false' && (needs.prerequisites.outputs.platform_linux_x64 != 'false' || needs.prerequisites.outputs.platform_linux_additional == 'true')
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -108,22 +112,10 @@ jobs:
|
||||
flavor:
|
||||
- build release
|
||||
- build debug
|
||||
- build hotspot no-pch
|
||||
- build hotspot zero
|
||||
- build hotspot minimal
|
||||
include:
|
||||
- flavor: build debug
|
||||
flags: --enable-debug
|
||||
artifact: -debug
|
||||
- flavor: build hotspot no-pch
|
||||
flags: --enable-debug --disable-precompiled-headers
|
||||
build-target: hotspot
|
||||
- flavor: build hotspot zero
|
||||
flags: --enable-debug --disable-precompiled-headers --with-jvm-variants=zero
|
||||
build-target: hotspot
|
||||
- flavor: build hotspot minimal
|
||||
flags: --enable-debug --disable-precompiled-headers --with-jvm-variants=minimal
|
||||
build-target: hotspot
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
@@ -177,7 +169,10 @@ jobs:
|
||||
path: gtest
|
||||
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install libxrandr-dev libxtst-dev libcups2-dev libasound2-dev
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install gcc-10=10.2.0-5ubuntu1~20.04 g++-10=10.2.0-5ubuntu1~20.04 libxrandr-dev libxtst-dev libcups2-dev libasound2-dev
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
|
||||
|
||||
- name: Configure
|
||||
run: >
|
||||
@@ -195,7 +190,7 @@ jobs:
|
||||
working-directory: jdk
|
||||
|
||||
- name: Build
|
||||
run: make CONF_NAME=linux-x64 ${{ matrix.build-target }}
|
||||
run: make CONF_NAME=linux-x64
|
||||
working-directory: jdk
|
||||
|
||||
- name: Persist test bundles
|
||||
@@ -205,11 +200,10 @@ jobs:
|
||||
path: |
|
||||
jdk/build/linux-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
if: matrix.build-target == false
|
||||
|
||||
linux_x64_test:
|
||||
name: Linux x64
|
||||
runs-on: "ubuntu-latest"
|
||||
runs-on: "ubuntu-20.04"
|
||||
needs:
|
||||
- prerequisites
|
||||
- linux_x64_build
|
||||
@@ -368,8 +362,8 @@ jobs:
|
||||
"$HOME/linux-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip"
|
||||
.
|
||||
-i *.jtr
|
||||
-i hs_err*
|
||||
-i replay*
|
||||
-i */hs_err*.log
|
||||
-i */replay*.log
|
||||
continue-on-error: true
|
||||
|
||||
- name: Persist test results
|
||||
@@ -386,9 +380,190 @@ jobs:
|
||||
path: ~/linux-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
||||
continue-on-error: true
|
||||
|
||||
linux_additional_build:
|
||||
name: Linux additional
|
||||
runs-on: "ubuntu-20.04"
|
||||
needs:
|
||||
- prerequisites
|
||||
- linux_x64_build
|
||||
if: needs.prerequisites.outputs.should_run != 'false' && needs.prerequisites.outputs.platform_linux_additional != 'false'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
flavor:
|
||||
- hs x64 build only
|
||||
- hs x64 zero build only
|
||||
- hs x64 minimal build only
|
||||
- hs x64 optimized build only
|
||||
- hs aarch64 build only
|
||||
- hs arm build only
|
||||
- hs s390x build only
|
||||
- hs ppc64le build only
|
||||
include:
|
||||
- flavor: hs x64 build only
|
||||
flags: --enable-debug --disable-precompiled-headers
|
||||
- flavor: hs x64 zero build only
|
||||
flags: --enable-debug --disable-precompiled-headers --with-jvm-variants=zero
|
||||
- flavor: hs x64 minimal build only
|
||||
flags: --enable-debug --disable-precompiled-headers --with-jvm-variants=minimal
|
||||
- flavor: hs x64 optimized build only
|
||||
flags: --with-debug-level=optimized --disable-precompiled-headers
|
||||
- flavor: hs aarch64 build only
|
||||
flags: --enable-debug --disable-precompiled-headers
|
||||
debian-arch: arm64
|
||||
gnu-arch: aarch64
|
||||
- flavor: hs arm build only
|
||||
flags: --enable-debug --disable-precompiled-headers
|
||||
debian-arch: armhf
|
||||
gnu-arch: arm
|
||||
gnu-flavor: eabihf
|
||||
- flavor: hs s390x build only
|
||||
flags: --enable-debug --disable-precompiled-headers
|
||||
debian-arch: s390x
|
||||
gnu-arch: s390x
|
||||
- flavor: hs ppc64le build only
|
||||
flags: --enable-debug --disable-precompiled-headers
|
||||
debian-arch: ppc64el
|
||||
gnu-arch: powerpc64le
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_URL }}"
|
||||
BOOT_JDK_SHA256: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_SHA256 }}"
|
||||
|
||||
steps:
|
||||
- name: Checkout the source
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: jdk
|
||||
|
||||
- name: Restore boot JDK from cache
|
||||
id: bootjdk
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||
|
||||
- name: Download boot JDK
|
||||
run: |
|
||||
mkdir -p "${HOME}/bootjdk/${BOOT_JDK_VERSION}"
|
||||
wget -O "${HOME}/bootjdk/${BOOT_JDK_FILENAME}" "${BOOT_JDK_URL}"
|
||||
echo "${BOOT_JDK_SHA256} ${HOME}/bootjdk/${BOOT_JDK_FILENAME}" | sha256sum -c >/dev/null -
|
||||
tar -xf "${HOME}/bootjdk/${BOOT_JDK_FILENAME}" -C "${HOME}/bootjdk/${BOOT_JDK_VERSION}"
|
||||
mv "${HOME}/bootjdk/${BOOT_JDK_VERSION}/"*/* "${HOME}/bootjdk/${BOOT_JDK_VERSION}/"
|
||||
if: steps.bootjdk.outputs.cache-hit != 'true'
|
||||
|
||||
- name: Restore build JDK
|
||||
id: build_restore
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: transient_jdk-linux-x64_${{ needs.prerequisites.outputs.bundle_id }}
|
||||
path: ~/jdk-linux-x64
|
||||
continue-on-error: true
|
||||
|
||||
- name: Restore build JDK (retry)
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: transient_jdk-linux-x64_${{ needs.prerequisites.outputs.bundle_id }}
|
||||
path: ~/jdk-linux-x64
|
||||
if: steps.build_restore.outcome == 'failure'
|
||||
|
||||
- name: Unpack build JDK
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin"
|
||||
tar -xf "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin.tar.gz" -C "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin"
|
||||
|
||||
- name: Find root of build JDK image dir
|
||||
run: |
|
||||
build_jdk_root=`find ${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin -name release -type f`
|
||||
echo "build_jdk_root=`dirname ${build_jdk_root}`" >> $GITHUB_ENV
|
||||
|
||||
- name: Update apt
|
||||
run: sudo apt-get update
|
||||
|
||||
- name: Install native host dependencies
|
||||
run: |
|
||||
sudo apt-get install gcc-10=10.2.0-5ubuntu1~20.04 g++-10=10.2.0-5ubuntu1~20.04 libxrandr-dev libxtst-dev libcups2-dev libasound2-dev
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
|
||||
if: matrix.debian-arch == ''
|
||||
|
||||
- name: Install cross-compilation host dependencies
|
||||
run: sudo apt-get install gcc-10-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-flavor}}=10.2.0-5ubuntu1~20.04cross1 g++-10-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-flavor}}=10.2.0-5ubuntu1~20.04cross1
|
||||
if: matrix.debian-arch != ''
|
||||
|
||||
- name: Cache sysroot
|
||||
id: cache-sysroot
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/sysroot-${{ matrix.debian-arch }}/
|
||||
key: sysroot-${{ matrix.debian-arch }}-${{ hashFiles('jdk/.github/workflows/submit.yml') }}
|
||||
if: matrix.debian-arch != ''
|
||||
|
||||
- name: Install sysroot host dependencies
|
||||
run: sudo apt-get install debootstrap qemu-user-static
|
||||
if: matrix.debian-arch != '' && steps.cache-sysroot.outputs.cache-hit != 'true'
|
||||
|
||||
- name: Create sysroot
|
||||
run: >
|
||||
sudo qemu-debootstrap
|
||||
--arch=${{ matrix.debian-arch }}
|
||||
--verbose
|
||||
--include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng-dev
|
||||
--resolve-deps
|
||||
buster
|
||||
~/sysroot-${{ matrix.debian-arch }}
|
||||
http://httpredir.debian.org/debian/
|
||||
if: matrix.debian-arch != '' && steps.cache-sysroot.outputs.cache-hit != 'true'
|
||||
|
||||
- name: Prepare sysroot for caching
|
||||
run: |
|
||||
sudo chroot ~/sysroot-${{ matrix.debian-arch }} symlinks -cr .
|
||||
sudo chown ${USER} -R ~/sysroot-${{ matrix.debian-arch }}
|
||||
rm -rf ~/sysroot-${{ matrix.debian-arch }}/{dev,proc,run,sys}
|
||||
if: matrix.debian-arch != '' && steps.cache-sysroot.outputs.cache-hit != 'true'
|
||||
|
||||
- name: Configure cross compiler
|
||||
run: |
|
||||
echo "CC=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-flavor}}-gcc-10" >> $GITHUB_ENV
|
||||
echo "CXX=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-flavor}}-g++-10" >> $GITHUB_ENV
|
||||
if: matrix.debian-arch != ''
|
||||
|
||||
- name: Configure cross specific flags
|
||||
run: >
|
||||
echo "cross_flags=
|
||||
--openjdk-target=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-flavor}}
|
||||
--with-sysroot=${HOME}/sysroot-${{ matrix.debian-arch }}/
|
||||
--with-toolchain-path=${HOME}/sysroot-${{ matrix.debian-arch }}/
|
||||
--with-freetype-lib=${HOME}/sysroot-${{ matrix.debian-arch }}/usr/lib/${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-flavor}}/
|
||||
--with-freetype-include=${HOME}/sysroot-${{ matrix.debian-arch }}/usr/include/freetype2/
|
||||
--x-libraries=${HOME}/sysroot-${{ matrix.debian-arch }}/usr/lib/${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-flavor}}/
|
||||
" >> $GITHUB_ENV
|
||||
if: matrix.debian-arch != ''
|
||||
|
||||
- name: Configure
|
||||
run: >
|
||||
bash configure
|
||||
--with-conf-name=linux-${{ matrix.gnu-arch }}-hotspot
|
||||
${{ matrix.flags }}
|
||||
${{ env.cross_flags }}
|
||||
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
||||
--with-version-build=0
|
||||
--with-boot-jdk=${HOME}/bootjdk/${BOOT_JDK_VERSION}
|
||||
--with-build-jdk=${{ env.build_jdk_root }}
|
||||
--with-default-make-target="hotspot"
|
||||
--with-zlib=system
|
||||
working-directory: jdk
|
||||
|
||||
- name: Build
|
||||
run: make CONF_NAME=linux-${{ matrix.gnu-arch }}-hotspot
|
||||
working-directory: jdk
|
||||
|
||||
linux_x86_build:
|
||||
name: Linux x86
|
||||
runs-on: "ubuntu-latest"
|
||||
runs-on: "ubuntu-20.04"
|
||||
needs: prerequisites
|
||||
if: needs.prerequisites.outputs.should_run != 'false' && needs.prerequisites.outputs.platform_linux_x86 != 'false'
|
||||
|
||||
@@ -462,7 +637,8 @@ jobs:
|
||||
run: |
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt-get update
|
||||
sudo apt-get install gcc-multilib g++-multilib libfreetype6-dev:i386 libxrandr-dev:i386 libxtst-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libcups2-dev:i386 libasound2-dev:i386
|
||||
sudo apt-get install gcc-10-multilib g++-10-multilib libfreetype6-dev:i386 libxrandr-dev:i386 libxtst-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libcups2-dev:i386 libasound2-dev:i386
|
||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
|
||||
|
||||
- name: Configure
|
||||
run: >
|
||||
@@ -481,7 +657,7 @@ jobs:
|
||||
working-directory: jdk
|
||||
|
||||
- name: Build
|
||||
run: make CONF_NAME=linux-x86 ${{ matrix.build-target }}
|
||||
run: make CONF_NAME=linux-x86
|
||||
working-directory: jdk
|
||||
|
||||
- name: Persist test bundles
|
||||
@@ -491,11 +667,10 @@ jobs:
|
||||
path: |
|
||||
jdk/build/linux-x86/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x86/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
if: matrix.build-target == false
|
||||
|
||||
linux_x86_test:
|
||||
name: Linux x86
|
||||
runs-on: "ubuntu-latest"
|
||||
runs-on: "ubuntu-20.04"
|
||||
needs:
|
||||
- prerequisites
|
||||
- linux_x86_build
|
||||
@@ -655,8 +830,8 @@ jobs:
|
||||
"$HOME/linux-x86${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip"
|
||||
.
|
||||
-i *.jtr
|
||||
-i hs_err*
|
||||
-i replay*
|
||||
-i */hs_err*.log
|
||||
-i */replay*.log
|
||||
continue-on-error: true
|
||||
|
||||
- name: Persist test results
|
||||
@@ -673,9 +848,97 @@ jobs:
|
||||
path: ~/linux-x86${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
||||
continue-on-error: true
|
||||
|
||||
windows_aarch64_build:
|
||||
name: Windows aarch64
|
||||
runs-on: "windows-2019"
|
||||
needs: prerequisites
|
||||
if: needs.prerequisites.outputs.should_run != 'false' && needs.prerequisites.outputs.platform_windows_aarch64 != 'false'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
flavor:
|
||||
- build debug
|
||||
include:
|
||||
- flavor: build debug
|
||||
flags: --enable-debug
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_URL }}"
|
||||
BOOT_JDK_SHA256: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_SHA256 }}"
|
||||
|
||||
steps:
|
||||
- name: Restore cygwin packages from cache
|
||||
id: cygwin
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/cygwin/packages
|
||||
key: cygwin-packages-${{ runner.os }}-v1
|
||||
|
||||
- name: Install cygwin
|
||||
run: |
|
||||
New-Item -Force -ItemType directory -Path "$HOME\cygwin"
|
||||
& curl -L "https://www.cygwin.com/setup-x86_64.exe" -o "$HOME/cygwin/setup-x86_64.exe"
|
||||
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
||||
|
||||
- name: Checkout the source
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: jdk
|
||||
|
||||
- name: Restore boot JDK from cache
|
||||
id: bootjdk
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||
|
||||
- name: Download boot JDK
|
||||
run: |
|
||||
mkdir -p "$HOME\bootjdk\$env:BOOT_JDK_VERSION"
|
||||
& curl -L "$env:BOOT_JDK_URL" -o "$HOME/bootjdk/$env:BOOT_JDK_FILENAME"
|
||||
$FileHash = Get-FileHash -Algorithm SHA256 "$HOME/bootjdk/$env:BOOT_JDK_FILENAME"
|
||||
$FileHash.Hash -eq $env:BOOT_JDK_SHA256
|
||||
& tar -xf "$HOME/bootjdk/$env:BOOT_JDK_FILENAME" -C "$HOME/bootjdk/$env:BOOT_JDK_VERSION"
|
||||
Get-ChildItem "$HOME\bootjdk\$env:BOOT_JDK_VERSION\*\*" | Move-Item -Destination "$HOME\bootjdk\$env:BOOT_JDK_VERSION"
|
||||
if: steps.bootjdk.outputs.cache-hit != 'true'
|
||||
|
||||
- name: Ensure a specific version of MSVC is installed
|
||||
run: >
|
||||
Start-Process -FilePath 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe' -Wait -NoNewWindow -ArgumentList
|
||||
'modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" --quiet
|
||||
--add Microsoft.VisualStudio.Component.VC.14.28.arm64'
|
||||
|
||||
- name: Configure
|
||||
run: >
|
||||
$env:Path = "$HOME\cygwin\cygwin64\bin;$HOME\cygwin\cygwin64\bin;$env:Path" ;
|
||||
$env:Path = $env:Path -split ";" -match "C:\\Windows|PowerShell|cygwin" -join ";" ;
|
||||
$env:BOOT_JDK = cygpath "$HOME/bootjdk/$env:BOOT_JDK_VERSION" ;
|
||||
& bash configure
|
||||
--with-conf-name=windows-aarch64
|
||||
--with-msvc-toolset-version=14.28
|
||||
--openjdk-target=aarch64-unknown-cygwin
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt="$env:GITHUB_ACTOR-$env:GITHUB_SHA"
|
||||
--with-version-build=0
|
||||
--with-boot-jdk="$env:BOOT_JDK"
|
||||
--with-default-make-target="hotspot"
|
||||
working-directory: jdk
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
$env:Path = "$HOME\cygwin\cygwin64\bin;$HOME\cygwin\cygwin64\bin;$env:Path" ;
|
||||
$env:Path = $env:Path -split ";" -match "C:\\Windows|PowerShell|cygwin" -join ";" ;
|
||||
& make CONF_NAME=windows-aarch64
|
||||
working-directory: jdk
|
||||
|
||||
windows_x64_build:
|
||||
name: Windows x64
|
||||
runs-on: "windows-latest"
|
||||
runs-on: "windows-2019"
|
||||
needs: prerequisites
|
||||
if: needs.prerequisites.outputs.should_run != 'false' && needs.prerequisites.outputs.platform_windows_x64 != 'false'
|
||||
|
||||
@@ -755,18 +1018,28 @@ jobs:
|
||||
path: ~/jtreg/
|
||||
if: steps.jtreg_restore.outcome == 'failure'
|
||||
|
||||
- name: Ensure a specific version of MSVC is installed
|
||||
run: >
|
||||
Start-Process -FilePath 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe' -Wait -NoNewWindow -ArgumentList
|
||||
'modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" --quiet
|
||||
--add Microsoft.VisualStudio.Component.VC.14.27.x86.x64'
|
||||
|
||||
- name: Configure
|
||||
run: >
|
||||
$env:Path = "$HOME\cygwin\cygwin64\bin;$HOME\cygwin\cygwin64\bin;$env:Path" ;
|
||||
$env:Path = $env:Path -split ";" -match "C:\\Windows|PowerShell|cygwin" -join ";" ;
|
||||
$env:BOOT_JDK = cygpath "$HOME/bootjdk/$env:BOOT_JDK_VERSION" ;
|
||||
$env:JT_HOME = cygpath "$HOME/jtreg" ;
|
||||
$env:GTEST = cygpath "$env:GITHUB_WORKSPACE/gtest" ;
|
||||
& bash configure
|
||||
--with-conf-name=windows-x64
|
||||
--with-msvc-toolset-version=14.27
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt="$env:GITHUB_ACTOR-$env:GITHUB_SHA"
|
||||
--with-version-build=0
|
||||
--with-boot-jdk="$HOME/bootjdk/$env:BOOT_JDK_VERSION"
|
||||
--with-jtreg="$HOME/jtreg"
|
||||
--with-gtest="$env:GITHUB_WORKSPACE/gtest"
|
||||
--with-boot-jdk="$env:BOOT_JDK"
|
||||
--with-jtreg="$env:JT_HOME"
|
||||
--with-gtest="$env:GTEST"
|
||||
--with-default-make-target="product-bundles test-bundles"
|
||||
--enable-jtreg-failure-handler
|
||||
working-directory: jdk
|
||||
@@ -775,7 +1048,7 @@ jobs:
|
||||
run: |
|
||||
$env:Path = "$HOME\cygwin\cygwin64\bin;$HOME\cygwin\cygwin64\bin;$env:Path" ;
|
||||
$env:Path = $env:Path -split ";" -match "C:\\Windows|PowerShell|cygwin" -join ";" ;
|
||||
& make CONF_NAME=windows-x64 ${{ matrix.build-target }}
|
||||
& make CONF_NAME=windows-x64
|
||||
working-directory: jdk
|
||||
|
||||
- name: Persist test bundles
|
||||
@@ -786,11 +1059,10 @@ jobs:
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}.zip
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}-symbols.tar.gz
|
||||
if: matrix.build-target == false
|
||||
|
||||
windows_x64_test:
|
||||
name: Windows x64
|
||||
runs-on: "windows-latest"
|
||||
runs-on: "windows-2019"
|
||||
needs:
|
||||
- prerequisites
|
||||
- windows_x64_build
|
||||
@@ -971,8 +1243,8 @@ jobs:
|
||||
"$HOME/windows-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip"
|
||||
.
|
||||
-i *.jtr
|
||||
-i hs_err*
|
||||
-i replay*
|
||||
-i */hs_err*.log
|
||||
-i */replay*.log
|
||||
continue-on-error: true
|
||||
|
||||
- name: Persist test results
|
||||
@@ -991,7 +1263,7 @@ jobs:
|
||||
|
||||
macos_x64_build:
|
||||
name: macOS x64
|
||||
runs-on: "macos-latest"
|
||||
runs-on: "macos-10.15"
|
||||
needs: prerequisites
|
||||
if: needs.prerequisites.outputs.should_run != 'false' && needs.prerequisites.outputs.platform_macos_x64 != 'false'
|
||||
|
||||
@@ -1061,6 +1333,9 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: brew install make
|
||||
|
||||
- name: Select Xcode version
|
||||
run: sudo xcode-select --switch /Applications/Xcode_11.3.1.app/Contents/Developer
|
||||
|
||||
- name: Configure
|
||||
run: >
|
||||
bash configure
|
||||
@@ -1077,7 +1352,7 @@ jobs:
|
||||
working-directory: jdk
|
||||
|
||||
- name: Build
|
||||
run: make CONF_NAME=macos-x64 ${{ matrix.build-target }}
|
||||
run: make CONF_NAME=macos-x64
|
||||
working-directory: jdk
|
||||
|
||||
- name: Persist test bundles
|
||||
@@ -1087,11 +1362,10 @@ jobs:
|
||||
path: |
|
||||
jdk/build/macos-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_osx-x64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/macos-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_osx-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
if: matrix.build-target == false
|
||||
|
||||
macos_x64_test:
|
||||
name: macOS x64
|
||||
runs-on: "macos-latest"
|
||||
runs-on: "macos-10.15"
|
||||
needs:
|
||||
- prerequisites
|
||||
- macos_x64_build
|
||||
@@ -1204,6 +1478,9 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: brew install make
|
||||
|
||||
- name: Select Xcode version
|
||||
run: sudo xcode-select --switch /Applications/Xcode_11.3.1.app/Contents/Developer
|
||||
|
||||
- name: Find root of jdk image dir
|
||||
run: |
|
||||
imageroot=`find ${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_osx-x64_bin${{ matrix.artifact }} -name release -type f`
|
||||
@@ -1253,8 +1530,8 @@ jobs:
|
||||
"$HOME/macos-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip"
|
||||
.
|
||||
-i *.jtr
|
||||
-i hs_err*
|
||||
-i replay*
|
||||
-i */hs_err*.log
|
||||
-i */replay*.log
|
||||
continue-on-error: true
|
||||
|
||||
- name: Persist test results
|
||||
@@ -1273,11 +1550,13 @@ jobs:
|
||||
|
||||
artifacts:
|
||||
name: Post-process artifacts
|
||||
runs-on: "ubuntu-latest"
|
||||
runs-on: "ubuntu-20.04"
|
||||
if: always()
|
||||
continue-on-error: true
|
||||
needs:
|
||||
- prerequisites
|
||||
- linux_additional_build
|
||||
- windows_aarch64_build
|
||||
- linux_x64_test
|
||||
- linux_x86_test
|
||||
- windows_x64_test
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,6 +2,7 @@
|
||||
/dist/
|
||||
/.idea/
|
||||
/.vscode/
|
||||
/nbproject/
|
||||
nbproject/private/
|
||||
/webrev
|
||||
/.src-rev
|
||||
@@ -14,3 +15,4 @@ test/nashorn/lib
|
||||
NashornProfile.txt
|
||||
**/JTreport/**
|
||||
**/JTwork/**
|
||||
/src/utils/LogCompilation/target/
|
||||
|
||||
@@ -14,7 +14,8 @@ version=0
|
||||
domain=openjdk.org
|
||||
|
||||
[checks "whitespace"]
|
||||
files=.*\.cpp|.*\.hpp|.*\.c|.*\.h|.*\.java|.*\.cc|.*\.hh|.*\.m|.*\.mm
|
||||
files=.*\.cpp|.*\.hpp|.*\.c|.*\.h|.*\.java|.*\.cc|.*\.hh|.*\.m|.*\.mm|.*\.gmk|.*\.m4|.*\.ac|Makefile
|
||||
ignore-tabs=.*\.gmk|Makefile
|
||||
|
||||
[checks "merge"]
|
||||
message=Merge
|
||||
|
||||
@@ -97,12 +97,10 @@
|
||||
<li><a href="#getting-help">Getting Help</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</a><ul>
|
||||
<li><a href="#setting-up-a-repository-for-pushing-changes-defpath">Setting Up a Repository for Pushing Changes (defpath)</a></li>
|
||||
<li><a href="#bash-completion">Bash Completion</a></li>
|
||||
<li><a href="#using-multiple-configurations">Using Multiple Configurations</a></li>
|
||||
<li><a href="#handling-reconfigurations">Handling Reconfigurations</a></li>
|
||||
<li><a href="#using-fine-grained-make-targets">Using Fine-Grained Make Targets</a></li>
|
||||
<li><a href="#learn-about-mercurial">Learn About Mercurial</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#understanding-the-build-system">Understanding the Build System</a><ul>
|
||||
<li><a href="#configurations">Configurations</a></li>
|
||||
@@ -116,10 +114,10 @@
|
||||
</ul>
|
||||
</nav>
|
||||
<h2 id="tldr-instructions-for-the-impatient">TL;DR (Instructions for the Impatient)</h2>
|
||||
<p>If you are eager to try out building the JDK, these simple steps works most of the time. They assume that you have installed Mercurial (and Cygwin if running on Windows) and cloned the top-level JDK repository that you want to build.</p>
|
||||
<p>If you are eager to try out building the JDK, these simple steps works most of the time. They assume that you have installed Git (and Cygwin if running on Windows) and cloned the top-level JDK repository that you want to build.</p>
|
||||
<ol type="1">
|
||||
<li><p><a href="#getting-the-source-code">Get the complete source code</a>:<br />
|
||||
<code>hg clone http://hg.openjdk.java.net/jdk/jdk</code></p></li>
|
||||
<code>git clone https://git.openjdk.java.net/jdk/</code></p></li>
|
||||
<li><p><a href="#running-configure">Run configure</a>:<br />
|
||||
<code>bash configure</code></p>
|
||||
<p>If <code>configure</code> fails due to missing dependencies (to either the <a href="#native-compiler-toolchain-requirements">toolchain</a>, <a href="#build-tools-requirements">build tools</a>, <a href="#external-library-requirements">external libraries</a> or the <a href="#boot-jdk-requirements">boot JDK</a>), most of the time it prints a suggestion on how to resolve the situation on your platform. Follow the instructions, and try running <code>bash configure</code> again.</p></li>
|
||||
@@ -135,8 +133,8 @@
|
||||
<p>The JDK is a complex software project. Building it requires a certain amount of technical expertise, a fair number of dependencies on external software, and reasonably powerful hardware.</p>
|
||||
<p>If you just want to use the JDK and not build it yourself, this document is not for you. See for instance <a href="http://openjdk.java.net/install">OpenJDK installation</a> for some methods of installing a prebuilt JDK.</p>
|
||||
<h2 id="getting-the-source-code">Getting the Source Code</h2>
|
||||
<p>Make sure you are getting the correct version. As of JDK 10, the source is no longer split into separate repositories so you only need to clone one single repository. At the <a href="http://hg.openjdk.java.net/">OpenJDK Mercurial server</a> you can see a list of all available repositories. If you want to build an older version, e.g. JDK 8, it is recommended that you get the <code>jdk8u</code> forest, which contains incremental updates, instead of the <code>jdk8</code> forest, which was frozen at JDK 8 GA.</p>
|
||||
<p>If you are new to Mercurial, a good place to start is the <a href="http://www.mercurial-scm.org/guide">Mercurial Beginner's Guide</a>. The rest of this document assumes a working knowledge of Mercurial.</p>
|
||||
<p>Make sure you are getting the correct version. As of JDK 10, the source is no longer split into separate repositories so you only need to clone one single repository. At the <a href="https://git.openjdk.java.net/">OpenJDK Git site</a> you can see a list of all available repositories. If you want to build an older version, e.g. JDK 11, it is recommended that you get the <code>jdk11u</code> repo, which contains incremental updates, instead of the <code>jdk11</code> repo, which was frozen at JDK 11 GA.</p>
|
||||
<p>If you are new to Git, a good place to start is the book <a href="https://git-scm.com/book/en/v2">Pro Git</a>. The rest of this document assumes a working knowledge of Git.</p>
|
||||
<h3 id="special-considerations">Special Considerations</h3>
|
||||
<p>For a smooth building experience, it is recommended that you follow these rules on where and how to check out the source code.</p>
|
||||
<ul>
|
||||
@@ -147,7 +145,11 @@
|
||||
<ul>
|
||||
<li><p>Create the directory that is going to contain the top directory of the JDK clone by using the <code>mkdir</code> command in the Cygwin bash shell. That is, do <em>not</em> create it using Windows Explorer. This will ensure that it will have proper Cygwin attributes, and that it's children will inherit those attributes.</p></li>
|
||||
<li><p>Do not put the JDK clone in a path under your Cygwin home directory. This is especially important if your user name contains spaces and/or mixed upper and lower case letters.</p></li>
|
||||
<li><p>Clone the JDK repository using the Cygwin command line <code>hg</code> client as instructed in this document. That is, do <em>not</em> use another Mercurial client such as TortoiseHg.</p></li>
|
||||
<li><p>You need to install a git client. You have two choices, Cygwin git or Git for Windows. Unfortunately there are pros and cons with each choice.</p>
|
||||
<ul>
|
||||
<li><p>The Cygwin <code>git</code> client has no line ending issues and understands Cygwin paths (which are used throughout the JDK build system). However, it does not currently work well with the Skara CLI tooling. Please see the <a href="https://wiki.openjdk.java.net/display/SKARA/Skara#Skara-Git">Skara wiki on Git clients</a> for up-to-date information about the Skara git client support.</p></li>
|
||||
<li><p>The <a href="https://gitforwindows.org">Git for Windows</a> client has issues with line endings, and do not understand Cygwin paths. It does work well with the Skara CLI tooling, however. To alleviate the line ending problems, make sure you set <code>core.autocrlf</code> to <code>false</code> (this is asked during installation).</p></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
<p>Failure to follow this procedure might result in hard-to-debug build problems.</p></li>
|
||||
</ul>
|
||||
@@ -194,7 +196,7 @@
|
||||
<p>Windows XP is not a supported platform, but all newer Windows should be able to build the JDK.</p>
|
||||
<p>On Windows, it is important that you pay attention to the instructions in the <a href="#special-considerations">Special Considerations</a>.</p>
|
||||
<p>Windows is the only non-POSIX OS supported by the JDK, and as such, requires some extra care. A POSIX support layer is required to build on Windows. Currently, the only supported such layers are Cygwin and Windows Subsystem for Linux (WSL). (Msys is no longer supported due to a too old bash; msys2 would likely be possible to support in a future version but that would require effort to implement.)</p>
|
||||
<p>Internally in the build system, all paths are represented as Unix-style paths, e.g. <code>/cygdrive/c/hg/jdk9/Makefile</code> rather than <code>C:\hg\jdk9\Makefile</code>. This rule also applies to input to the build system, e.g. in arguments to <code>configure</code>. So, use <code>--with-msvcr-dll=/cygdrive/c/msvcr100.dll</code> rather than <code>--with-msvcr-dll=c:\msvcr100.dll</code>. For details on this conversion, see the section on <a href="#fixpath">Fixpath</a>.</p>
|
||||
<p>Internally in the build system, all paths are represented as Unix-style paths, e.g. <code>/cygdrive/c/git/jdk/Makefile</code> rather than <code>C:\git\jdk\Makefile</code>. This rule also applies to input to the build system, e.g. in arguments to <code>configure</code>. So, use <code>--with-msvcr-dll=/cygdrive/c/msvcr100.dll</code> rather than <code>--with-msvcr-dll=c:\msvcr100.dll</code>. For details on this conversion, see the section on <a href="#fixpath">Fixpath</a>.</p>
|
||||
<h4 id="cygwin">Cygwin</h4>
|
||||
<p>A functioning <a href="http://www.cygwin.com/">Cygwin</a> environment is required for building the JDK on Windows. If you have a 64-bit OS, we strongly recommend using the 64-bit version of Cygwin.</p>
|
||||
<p><strong>Note:</strong> Cygwin has a model of continuously updating all packages without any easy way to install or revert to a specific version of a package. This means that whenever you add or update a package in Cygwin, you might (inadvertently) update tools that are used by the JDK build process, and that can cause unexpected build problems.</p>
|
||||
@@ -400,7 +402,7 @@
|
||||
<li><code>--enable-jvm-feature-<feature></code> or <code>--disable-jvm-feature-<feature></code> - Include (or exclude) <code><feature></code> as a JVM feature in Hotspot. You can also specify a list of features to be enabled, separated by space or comma, as <code>--with-jvm-features=<feature>[,<feature>...]</code>. If you prefix <code><feature></code> with a <code>-</code>, it will be disabled. These options will modify the default list of features for the JVM variant(s) you are building. For the <code>custom</code> JVM variant, the default list is empty. A complete list of valid JVM features can be found using <code>bash configure --help</code>.</li>
|
||||
<li><code>--with-target-bits=<bits></code> - Create a target binary suitable for running on a <code><bits></code> platform. Use this to create 32-bit output on a 64-bit build platform, instead of doing a full cross-compile. (This is known as a <em>reduced</em> build.)</li>
|
||||
</ul>
|
||||
<p>On Linux, BSD and AIX, it is possible to override where Java by default searches for runtime/JNI libraries. This can be useful in situations where there is a special shared directory for system JNI libraries. This setting can in turn be overriden at runtime by setting the <code>java.library.path</code> property.</p>
|
||||
<p>On Linux, BSD and AIX, it is possible to override where Java by default searches for runtime/JNI libraries. This can be useful in situations where there is a special shared directory for system JNI libraries. This setting can in turn be overridden at runtime by setting the <code>java.library.path</code> property.</p>
|
||||
<ul>
|
||||
<li><code>--with-jni-libpath=<path></code> - Use the specified path as a default when searching for runtime libraries.</li>
|
||||
</ul>
|
||||
@@ -439,7 +441,7 @@
|
||||
<h3 id="configure-control-variables">Configure Control Variables</h3>
|
||||
<p>It is possible to control certain aspects of <code>configure</code> by overriding the value of <code>configure</code> variables, either on the command line or in the environment.</p>
|
||||
<p>Normally, this is <strong>not recommended</strong>. If used improperly, it can lead to a broken configuration. Unless you're well versed in the build system, this is hard to use properly. Therefore, <code>configure</code> will print a warning if this is detected.</p>
|
||||
<p>However, there are a few <code>configure</code> variables, known as <em>control variables</em> that are supposed to be overriden on the command line. These are variables that describe the location of tools needed by the build, like <code>MAKE</code> or <code>GREP</code>. If any such variable is specified, <code>configure</code> will use that value instead of trying to autodetect the tool. For instance, <code>bash configure MAKE=/opt/gnumake4.0/bin/make</code>.</p>
|
||||
<p>However, there are a few <code>configure</code> variables, known as <em>control variables</em> that are supposed to be overridden on the command line. These are variables that describe the location of tools needed by the build, like <code>MAKE</code> or <code>GREP</code>. If any such variable is specified, <code>configure</code> will use that value instead of trying to autodetect the tool. For instance, <code>bash configure MAKE=/opt/gnumake4.0/bin/make</code>.</p>
|
||||
<p>If a configure argument exists, use that instead, e.g. use <code>--with-jtreg</code> instead of setting <code>JTREGEXE</code>.</p>
|
||||
<p>Also note that, despite what autoconf claims, setting <code>CFLAGS</code> will not accomplish anything. Instead use <code>--with-extra-cflags</code> (and similar for <code>cxxflags</code> and <code>ldflags</code>).</p>
|
||||
<h2 id="running-make">Running Make</h2>
|
||||
@@ -476,7 +478,7 @@
|
||||
<h3 id="make-control-variables">Make Control Variables</h3>
|
||||
<p>It is possible to control <code>make</code> behavior by overriding the value of <code>make</code> variables, either on the command line or in the environment.</p>
|
||||
<p>Normally, this is <strong>not recommended</strong>. If used improperly, it can lead to a broken build. Unless you're well versed in the build system, this is hard to use properly. Therefore, <code>make</code> will print a warning if this is detected.</p>
|
||||
<p>However, there are a few <code>make</code> variables, known as <em>control variables</em> that are supposed to be overriden on the command line. These make up the "make time" configuration, as opposed to the "configure time" configuration.</p>
|
||||
<p>However, there are a few <code>make</code> variables, known as <em>control variables</em> that are supposed to be overridden on the command line. These make up the "make time" configuration, as opposed to the "configure time" configuration.</p>
|
||||
<h4 id="general-make-control-variables">General Make Control Variables</h4>
|
||||
<ul>
|
||||
<li><code>JOBS</code> - Specify the number of jobs to build with. See <a href="#build-performance">Build Performance</a>.</li>
|
||||
@@ -629,21 +631,30 @@ cp: cannot stat `arm-linux-gnueabihf/libXt.so': No such file or directory</c
|
||||
<p>Fortunately, you can create sysroots for foreign architectures with tools provided by your OS. On Debian/Ubuntu systems, one could use <code>qemu-deboostrap</code> to create the <em>target</em> system chroot, which would have the native libraries and headers specific to that <em>target</em> system. After that, we can use the cross-compiler on the <em>build</em> system, pointing into chroot to get the build dependencies right. This allows building for foreign architectures with native compilation speed.</p>
|
||||
<p>For example, cross-compiling to AArch64 from x86_64 could be done like this:</p>
|
||||
<ul>
|
||||
<li>Install cross-compiler on the <em>build</em> system:</li>
|
||||
</ul>
|
||||
<pre><code>apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu</code></pre>
|
||||
<ul>
|
||||
<li>Create chroot on the <em>build</em> system, configuring it for <em>target</em> system:</li>
|
||||
</ul>
|
||||
<pre><code>sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/</code></pre>
|
||||
<ul>
|
||||
<li>Configure and build with newly created chroot as sysroot/toolchain-path:</li>
|
||||
</ul>
|
||||
<pre><code>CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||
<li><p>Install cross-compiler on the <em>build</em> system:</p>
|
||||
<pre><code>apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu</code></pre></li>
|
||||
<li><p>Create chroot on the <em>build</em> system, configuring it for <em>target</em> system:</p>
|
||||
<pre><code>sudo qemu-debootstrap \
|
||||
--arch=arm64 \
|
||||
--verbose \
|
||||
--include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng-dev \
|
||||
--resolve-deps \
|
||||
buster \
|
||||
~/sysroot-arm64 \
|
||||
http://httpredir.debian.org/debian/</code></pre></li>
|
||||
<li><p>Make sure the symlinks inside the newly created chroot point to proper locations:</p>
|
||||
<pre><code>sudo chroot ~/sysroot-arm64 symlinks -cr .</code></pre></li>
|
||||
<li><p>Configure and build with newly created chroot as sysroot/toolchain-path:</p>
|
||||
<pre><code>CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure \
|
||||
--openjdk-target=aarch64-linux-gnu \
|
||||
--with-sysroot=~/sysroot-arm64 \
|
||||
--with-toolchain-path=~/sysroot-arm64 \
|
||||
--with-freetype-lib=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/ \
|
||||
--with-freetype-include=~/sysroot-arm64/usr/include/freetype2/ \
|
||||
--x-libraries=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/
|
||||
make images
|
||||
ls build/linux-aarch64-normal-server-release/</code></pre>
|
||||
ls build/linux-aarch64-server-release/</code></pre></li>
|
||||
</ul>
|
||||
<p>The build does not create new files in that chroot, so it can be reused for multiple builds without additional cleanup.</p>
|
||||
<p>Architectures that are known to successfully cross-compile like this are:</p>
|
||||
<table>
|
||||
@@ -749,14 +760,14 @@ ls build/linux-aarch64-normal-server-release/</code></pre>
|
||||
|
||||
=== Output from failing command(s) repeated here ===
|
||||
* For target hotspot_variant-server_libjvm_objs_psMemoryPool.o:
|
||||
/localhome/hg/jdk9-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
/localhome/git/jdk-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
... (rest of output omitted)
|
||||
|
||||
* All command lines available in /localhome/hg/jdk9-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
* All command lines available in /localhome/git/jdk-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
=== End of repeated output ===
|
||||
|
||||
=== Make failed targets repeated here ===
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/hg/jdk9-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/git/jdk-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
make/Main.gmk:263: recipe for target 'hotspot-server-libs' failed
|
||||
=== End of repeated output ===
|
||||
|
||||
@@ -783,7 +794,7 @@ Hint: If caused by a warning, try configure --disable-warnings-as-errors.</code>
|
||||
<p>Here are a suggested list of things to try if you are having unexpected build problems. Each step requires more time than the one before, so try them in order. Most issues will be solved at step 1 or 2.</p>
|
||||
<ol type="1">
|
||||
<li><p>Make sure your repository is up-to-date</p>
|
||||
<p>Run <code>hg pull -u</code> to make sure you have the latest changes.</p></li>
|
||||
<p>Run <code>git pull origin master</code> to make sure you have the latest changes.</p></li>
|
||||
<li><p>Clean build results</p>
|
||||
<p>The simplest way to fix incremental rebuild issues is to run <code>make clean</code>. This will remove all build results, but not the configuration or any build system support artifacts. In most cases, this will solve build errors resulting from incremental build mismatches.</p></li>
|
||||
<li><p>Completely clean the build directory.</p>
|
||||
@@ -792,8 +803,8 @@ Hint: If caused by a warning, try configure --disable-warnings-as-errors.</code>
|
||||
make dist-clean
|
||||
bash configure $(cat current-configuration)
|
||||
make</code></pre></li>
|
||||
<li><p>Re-clone the Mercurial repository</p>
|
||||
<p>Sometimes the Mercurial repository gets in a state that causes the product to be un-buildable. In such a case, the simplest solution is often the "sledgehammer approach": delete the entire repository, and re-clone it. If you have local changes, save them first to a different location using <code>hg export</code>.</p></li>
|
||||
<li><p>Re-clone the Git repository</p>
|
||||
<p>Sometimes the Git repository gets in a state that causes the product to be un-buildable. In such a case, the simplest solution is often the "sledgehammer approach": delete the entire repository, and re-clone it. If you have local changes, save them first to a different location using <code>git format-patch</code>.</p></li>
|
||||
</ol>
|
||||
<h3 id="specific-build-issues">Specific Build Issues</h3>
|
||||
<h4 id="clock-skew">Clock Skew</h4>
|
||||
@@ -812,19 +823,6 @@ spawn failed</code></pre>
|
||||
<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <a href="mailto:build-dev@openjdk.java.net">build-dev@openjdk.java.net</a>. Please include the relevant parts of the configure and/or build log.</p>
|
||||
<p>If you need general help or advice about developing for the JDK, you can also contact the Adoption Group. See the section on <a href="#contributing-to-openjdk">Contributing to OpenJDK</a> for more information.</p>
|
||||
<h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
|
||||
<h3 id="setting-up-a-repository-for-pushing-changes-defpath">Setting Up a Repository for Pushing Changes (defpath)</h3>
|
||||
<p>To help you prepare a proper push path for a Mercurial repository, there exists a useful tool known as <a href="http://openjdk.java.net/projects/code-tools/defpath">defpath</a>. It will help you setup a proper push path for pushing changes to the JDK.</p>
|
||||
<p>Install the extension by cloning <code>http://hg.openjdk.java.net/code-tools/defpath</code> and updating your <code>.hgrc</code> file. Here's one way to do this:</p>
|
||||
<pre><code>cd ~
|
||||
mkdir hg-ext
|
||||
cd hg-ext
|
||||
hg clone http://hg.openjdk.java.net/code-tools/defpath
|
||||
cat << EOT >> ~/.hgrc
|
||||
[extensions]
|
||||
defpath=~/hg-ext/defpath/defpath.py
|
||||
EOT</code></pre>
|
||||
<p>You can now setup a proper push path using:</p>
|
||||
<pre><code>hg defpath -d -u <your OpenJDK username></code></pre>
|
||||
<h3 id="bash-completion">Bash Completion</h3>
|
||||
<p>The <code>configure</code> and <code>make</code> commands tries to play nice with bash command-line completion (using <code><tab></code> or <code><tab><tab></code>). To use this functionality, make sure you enable completion in your <code>~/.bashrc</code> (see instructions for bash in your operating system).</p>
|
||||
<p>Make completion will work out of the box, and will complete valid make targets. For instance, typing <code>make jdk-i<tab></code> will complete to <code>make jdk-image</code>.</p>
|
||||
@@ -877,14 +875,6 @@ sudo mv /tmp/configure /usr/local/bin</code></pre>
|
||||
<h4 id="rebuilding-part-of-java.base-jdk_filter">Rebuilding Part of java.base (JDK_FILTER)</h4>
|
||||
<p>If you are modifying files in <code>java.base</code>, which is the by far largest module in the JDK, then you need to rebuild all those files whenever a single file has changed. (This inefficiency will hopefully be addressed in JDK 10.)</p>
|
||||
<p>As a hack, you can use the make control variable <code>JDK_FILTER</code> to specify a pattern that will be used to limit the set of files being recompiled. For instance, <code>make java.base JDK_FILTER=javax/crypto</code> (or, to combine methods, <code>make java.base-java-only JDK_FILTER=javax/crypto</code>) will limit the compilation to files in the <code>javax.crypto</code> package.</p>
|
||||
<h3 id="learn-about-mercurial">Learn About Mercurial</h3>
|
||||
<p>To become an efficient JDK developer, it is recommended that you invest in learning Mercurial properly. Here are some links that can get you started:</p>
|
||||
<ul>
|
||||
<li><a href="http://www.mercurial-scm.org/wiki/GitConcepts">Mercurial for git users</a></li>
|
||||
<li><a href="http://www.mercurial-scm.org/wiki/Tutorial">The official Mercurial tutorial</a></li>
|
||||
<li><a href="http://hginit.com/">hg init</a></li>
|
||||
<li><a href="http://hgbook.red-bean.com/read/">Mercurial: The Definitive Guide</a></li>
|
||||
</ul>
|
||||
<h2 id="understanding-the-build-system">Understanding the Build System</h2>
|
||||
<p>This section will give you a more technical description on the details of the build system.</p>
|
||||
<h3 id="configurations">Configurations</h3>
|
||||
|
||||
135
doc/building.md
135
doc/building.md
@@ -3,11 +3,11 @@
|
||||
## TL;DR (Instructions for the Impatient)
|
||||
|
||||
If you are eager to try out building the JDK, these simple steps works most of
|
||||
the time. They assume that you have installed Mercurial (and Cygwin if running
|
||||
the time. They assume that you have installed Git (and Cygwin if running
|
||||
on Windows) and cloned the top-level JDK repository that you want to build.
|
||||
|
||||
1. [Get the complete source code](#getting-the-source-code): \
|
||||
`hg clone http://hg.openjdk.java.net/jdk/jdk`
|
||||
`git clone https://git.openjdk.java.net/jdk/`
|
||||
|
||||
2. [Run configure](#running-configure): \
|
||||
`bash configure`
|
||||
@@ -47,14 +47,14 @@ JDK.
|
||||
|
||||
Make sure you are getting the correct version. As of JDK 10, the source is no
|
||||
longer split into separate repositories so you only need to clone one single
|
||||
repository. At the [OpenJDK Mercurial server](http://hg.openjdk.java.net/) you
|
||||
repository. At the [OpenJDK Git site](https://git.openjdk.java.net/) you
|
||||
can see a list of all available repositories. If you want to build an older version,
|
||||
e.g. JDK 8, it is recommended that you get the `jdk8u` forest, which contains
|
||||
incremental updates, instead of the `jdk8` forest, which was frozen at JDK 8 GA.
|
||||
e.g. JDK 11, it is recommended that you get the `jdk11u` repo, which contains
|
||||
incremental updates, instead of the `jdk11` repo, which was frozen at JDK 11 GA.
|
||||
|
||||
If you are new to Mercurial, a good place to start is the [Mercurial Beginner's
|
||||
Guide](http://www.mercurial-scm.org/guide). The rest of this document assumes a
|
||||
working knowledge of Mercurial.
|
||||
If you are new to Git, a good place to start is the book [Pro
|
||||
Git](https://git-scm.com/book/en/v2). The rest of this document
|
||||
assumes a working knowledge of Git.
|
||||
|
||||
### Special Considerations
|
||||
|
||||
@@ -89,9 +89,21 @@ on where and how to check out the source code.
|
||||
directory. This is especially important if your user name contains
|
||||
spaces and/or mixed upper and lower case letters.
|
||||
|
||||
* Clone the JDK repository using the Cygwin command line `hg` client
|
||||
as instructed in this document. That is, do *not* use another Mercurial
|
||||
client such as TortoiseHg.
|
||||
* You need to install a git client. You have two choices, Cygwin git or
|
||||
Git for Windows. Unfortunately there are pros and cons with each choice.
|
||||
|
||||
* The Cygwin `git` client has no line ending issues and understands
|
||||
Cygwin paths (which are used throughout the JDK build system).
|
||||
However, it does not currently work well with the Skara CLI tooling.
|
||||
Please see the [Skara wiki on Git clients](
|
||||
https://wiki.openjdk.java.net/display/SKARA/Skara#Skara-Git) for
|
||||
up-to-date information about the Skara git client support.
|
||||
|
||||
* The [Git for Windows](https://gitforwindows.org) client has issues
|
||||
with line endings, and do not understand Cygwin paths. It does work
|
||||
well with the Skara CLI tooling, however. To alleviate the line ending
|
||||
problems, make sure you set `core.autocrlf` to `false` (this is asked
|
||||
during installation).
|
||||
|
||||
Failure to follow this procedure might result in hard-to-debug build
|
||||
problems.
|
||||
@@ -173,7 +185,7 @@ likely be possible to support in a future version but that would require effort
|
||||
to implement.)
|
||||
|
||||
Internally in the build system, all paths are represented as Unix-style paths,
|
||||
e.g. `/cygdrive/c/hg/jdk9/Makefile` rather than `C:\hg\jdk9\Makefile`. This
|
||||
e.g. `/cygdrive/c/git/jdk/Makefile` rather than `C:\git\jdk\Makefile`. This
|
||||
rule also applies to input to the build system, e.g. in arguments to
|
||||
`configure`. So, use `--with-msvcr-dll=/cygdrive/c/msvcr100.dll` rather than
|
||||
`--with-msvcr-dll=c:\msvcr100.dll`. For details on this conversion, see the section
|
||||
@@ -641,7 +653,7 @@ features, use `bash configure --help=short` instead.)
|
||||
On Linux, BSD and AIX, it is possible to override where Java by default
|
||||
searches for runtime/JNI libraries. This can be useful in situations where
|
||||
there is a special shared directory for system JNI libraries. This setting
|
||||
can in turn be overriden at runtime by setting the `java.library.path` property.
|
||||
can in turn be overridden at runtime by setting the `java.library.path` property.
|
||||
|
||||
* `--with-jni-libpath=<path>` - Use the specified path as a default
|
||||
when searching for runtime libraries.
|
||||
@@ -707,7 +719,7 @@ hard to use properly. Therefore, `configure` will print a warning if this is
|
||||
detected.
|
||||
|
||||
However, there are a few `configure` variables, known as *control variables*
|
||||
that are supposed to be overriden on the command line. These are variables that
|
||||
that are supposed to be overridden on the command line. These are variables that
|
||||
describe the location of tools needed by the build, like `MAKE` or `GREP`. If
|
||||
any such variable is specified, `configure` will use that value instead of
|
||||
trying to autodetect the tool. For instance, `bash configure
|
||||
@@ -787,7 +799,7 @@ broken build. Unless you're well versed in the build system, this is hard to
|
||||
use properly. Therefore, `make` will print a warning if this is detected.
|
||||
|
||||
However, there are a few `make` variables, known as *control variables* that
|
||||
are supposed to be overriden on the command line. These make up the "make time"
|
||||
are supposed to be overridden on the command line. These make up the "make time"
|
||||
configuration, as opposed to the "configure time" configuration.
|
||||
|
||||
#### General Make Control Variables
|
||||
@@ -1086,23 +1098,39 @@ for foreign architectures with native compilation speed.
|
||||
For example, cross-compiling to AArch64 from x86_64 could be done like this:
|
||||
|
||||
* Install cross-compiler on the *build* system:
|
||||
```
|
||||
apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
|
||||
```
|
||||
```
|
||||
apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
|
||||
```
|
||||
|
||||
* Create chroot on the *build* system, configuring it for *target* system:
|
||||
```
|
||||
sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/
|
||||
```
|
||||
```
|
||||
sudo qemu-debootstrap \
|
||||
--arch=arm64 \
|
||||
--verbose \
|
||||
--include=fakeroot,symlinks,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxrandr-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng-dev \
|
||||
--resolve-deps \
|
||||
buster \
|
||||
~/sysroot-arm64 \
|
||||
http://httpredir.debian.org/debian/
|
||||
```
|
||||
|
||||
* Make sure the symlinks inside the newly created chroot point to proper locations:
|
||||
```
|
||||
sudo chroot ~/sysroot-arm64 symlinks -cr .
|
||||
```
|
||||
|
||||
* Configure and build with newly created chroot as sysroot/toolchain-path:
|
||||
```
|
||||
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||
make images
|
||||
ls build/linux-aarch64-normal-server-release/
|
||||
```
|
||||
```
|
||||
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure \
|
||||
--openjdk-target=aarch64-linux-gnu \
|
||||
--with-sysroot=~/sysroot-arm64 \
|
||||
--with-toolchain-path=~/sysroot-arm64 \
|
||||
--with-freetype-lib=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/ \
|
||||
--with-freetype-include=~/sysroot-arm64/usr/include/freetype2/ \
|
||||
--x-libraries=~/sysroot-arm64/usr/lib/aarch64-linux-gnu/
|
||||
make images
|
||||
ls build/linux-aarch64-server-release/
|
||||
```
|
||||
|
||||
The build does not create new files in that chroot, so it can be reused for multiple builds
|
||||
without additional cleanup.
|
||||
@@ -1270,14 +1298,14 @@ ERROR: Build failed for target 'hotspot' in configuration 'linux-x64' (exit code
|
||||
|
||||
=== Output from failing command(s) repeated here ===
|
||||
* For target hotspot_variant-server_libjvm_objs_psMemoryPool.o:
|
||||
/localhome/hg/jdk9-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
/localhome/git/jdk-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
... (rest of output omitted)
|
||||
|
||||
* All command lines available in /localhome/hg/jdk9-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
* All command lines available in /localhome/git/jdk-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
=== End of repeated output ===
|
||||
|
||||
=== Make failed targets repeated here ===
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/hg/jdk9-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/git/jdk-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
make/Main.gmk:263: recipe for target 'hotspot-server-libs' failed
|
||||
=== End of repeated output ===
|
||||
|
||||
@@ -1375,7 +1403,7 @@ order. Most issues will be solved at step 1 or 2.
|
||||
|
||||
1. Make sure your repository is up-to-date
|
||||
|
||||
Run `hg pull -u` to make sure you have the latest changes.
|
||||
Run `git pull origin master` to make sure you have the latest changes.
|
||||
|
||||
2. Clean build results
|
||||
|
||||
@@ -1400,13 +1428,13 @@ order. Most issues will be solved at step 1 or 2.
|
||||
make
|
||||
```
|
||||
|
||||
4. Re-clone the Mercurial repository
|
||||
4. Re-clone the Git repository
|
||||
|
||||
Sometimes the Mercurial repository gets in a state that causes the product
|
||||
Sometimes the Git repository gets in a state that causes the product
|
||||
to be un-buildable. In such a case, the simplest solution is often the
|
||||
"sledgehammer approach": delete the entire repository, and re-clone it.
|
||||
If you have local changes, save them first to a different location using
|
||||
`hg export`.
|
||||
`git format-patch`.
|
||||
|
||||
### Specific Build Issues
|
||||
|
||||
@@ -1451,33 +1479,6 @@ contact the Adoption Group. See the section on [Contributing to OpenJDK](
|
||||
|
||||
## Hints and Suggestions for Advanced Users
|
||||
|
||||
### Setting Up a Repository for Pushing Changes (defpath)
|
||||
|
||||
To help you prepare a proper push path for a Mercurial repository, there exists
|
||||
a useful tool known as [defpath](
|
||||
http://openjdk.java.net/projects/code-tools/defpath). It will help you setup a
|
||||
proper push path for pushing changes to the JDK.
|
||||
|
||||
Install the extension by cloning
|
||||
`http://hg.openjdk.java.net/code-tools/defpath` and updating your `.hgrc` file.
|
||||
Here's one way to do this:
|
||||
|
||||
```
|
||||
cd ~
|
||||
mkdir hg-ext
|
||||
cd hg-ext
|
||||
hg clone http://hg.openjdk.java.net/code-tools/defpath
|
||||
cat << EOT >> ~/.hgrc
|
||||
[extensions]
|
||||
defpath=~/hg-ext/defpath/defpath.py
|
||||
EOT
|
||||
```
|
||||
|
||||
You can now setup a proper push path using:
|
||||
```
|
||||
hg defpath -d -u <your OpenJDK username>
|
||||
```
|
||||
|
||||
### Bash Completion
|
||||
|
||||
The `configure` and `make` commands tries to play nice with bash command-line
|
||||
@@ -1618,16 +1619,6 @@ instance, `make java.base JDK_FILTER=javax/crypto` (or, to combine methods,
|
||||
`make java.base-java-only JDK_FILTER=javax/crypto`) will limit the compilation
|
||||
to files in the `javax.crypto` package.
|
||||
|
||||
### Learn About Mercurial
|
||||
|
||||
To become an efficient JDK developer, it is recommended that you invest in
|
||||
learning Mercurial properly. Here are some links that can get you started:
|
||||
|
||||
* [Mercurial for git users](http://www.mercurial-scm.org/wiki/GitConcepts)
|
||||
* [The official Mercurial tutorial](http://www.mercurial-scm.org/wiki/Tutorial)
|
||||
* [hg init](http://hginit.com/)
|
||||
* [Mercurial: The Definitive Guide](http://hgbook.red-bean.com/read/)
|
||||
|
||||
## Understanding the Build System
|
||||
|
||||
This section will give you a more technical description on the details of the
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
<li><a href="#thread_local">thread_local</a></li>
|
||||
<li><a href="#nullptr">nullptr</a></li>
|
||||
<li><a href="#atomic"><atomic></a></li>
|
||||
<li><a href="#uniform-initialization">Uniform Initialization</a></li>
|
||||
<li><a href="#additional-permitted-features">Additional Permitted Features</a></li>
|
||||
<li><a href="#excluded-features">Excluded Features</a></li>
|
||||
<li><a href="#undecided-features">Undecided Features</a></li>
|
||||
@@ -275,6 +276,17 @@ while ( test_foo(args...) ) { // No, excess spaces around control</code></pre></
|
||||
<p>Do not use facilities provided by the <code><atomic></code> header (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">n2427</a>), (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm">n2752</a>); instead, use the HotSpot <code>Atomic</code> class and related facilities.</p>
|
||||
<p>Atomic operations in HotSpot code must have semantics which are consistent with those provided by the JDK's compilers for Java. There are platform-specific implementation choices that a C++ compiler might make or change that are outside the scope of the C++ Standard, and might differ from what the Java compilers implement.</p>
|
||||
<p>In addition, HotSpot <code>Atomic</code> has a concept of "conservative" memory ordering, which may differ from (may be stronger than) sequentially consistent. There are algorithms in HotSpot that are believed to rely on that ordering.</p>
|
||||
<h3 id="uniform-initialization">Uniform Initialization</h3>
|
||||
<p>The use of <em>uniform initialization</em> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm">n2672</a>), also known as <em>brace initialization</em>, is permitted.</p>
|
||||
<p>Some relevant sections from cppreference.com:</p>
|
||||
<ul>
|
||||
<li><a href="https://en.cppreference.com/w/cpp/language/initialization">initialization</a></li>
|
||||
<li><a href="https://en.cppreference.com/w/cpp/language/value_initialization">value initialization</a></li>
|
||||
<li><a href="https://en.cppreference.com/w/cpp/language/direct_initialization">direct initialization</a></li>
|
||||
<li><a href="https://en.cppreference.com/w/cpp/language/list_initialization">list initialization</a></li>
|
||||
<li><a href="https://en.cppreference.com/w/cpp/language/aggregate_initialization">aggregate initialization</a></li>
|
||||
</ul>
|
||||
<p>Although related, the use of <code>std::initializer_list</code> remains forbidden, as part of the avoidance of the C++ Standard Library in HotSpot code.</p>
|
||||
<h3 id="additional-permitted-features">Additional Permitted Features</h3>
|
||||
<ul>
|
||||
<li><p><code>constexpr</code> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">n2235</a>) (<a href="https://isocpp.org/files/papers/N3652.html">n3652</a>)</p></li>
|
||||
@@ -292,6 +304,7 @@ while ( test_foo(args...) ) { // No, excess spaces around control</code></pre></
|
||||
<li><p>Dynamic initialization and destruction with concurrency (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">n2660</a>)</p></li>
|
||||
<li><p><code>final</code> virtual specifiers for classes and virtual functions (<a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm">n2928</a>), (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm">n3206</a>), (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm">n3272</a>)</p></li>
|
||||
<li><p>Local and unnamed types as template parameters (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">n2657</a>)</p></li>
|
||||
<li><p>Range-based <code>for</code> loops (<a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html">n2930</a>) (<a href="https://en.cppreference.com/w/cpp/language/range-for">range-for</a>)</p></li>
|
||||
</ul>
|
||||
<h3 id="excluded-features">Excluded Features</h3>
|
||||
<ul>
|
||||
|
||||
@@ -681,6 +681,23 @@ ordering, which may differ from (may be stronger than) sequentially
|
||||
consistent. There are algorithms in HotSpot that are believed to rely
|
||||
on that ordering.
|
||||
|
||||
### Uniform Initialization
|
||||
|
||||
The use of _uniform initialization_
|
||||
([n2672](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm)),
|
||||
also known as _brace initialization_, is permitted.
|
||||
|
||||
Some relevant sections from cppreference.com:
|
||||
|
||||
* [initialization](https://en.cppreference.com/w/cpp/language/initialization)
|
||||
* [value initialization](https://en.cppreference.com/w/cpp/language/value_initialization)
|
||||
* [direct initialization](https://en.cppreference.com/w/cpp/language/direct_initialization)
|
||||
* [list initialization](https://en.cppreference.com/w/cpp/language/list_initialization)
|
||||
* [aggregate initialization](https://en.cppreference.com/w/cpp/language/aggregate_initialization)
|
||||
|
||||
Although related, the use of `std::initializer_list` remains forbidden, as
|
||||
part of the avoidance of the C++ Standard Library in HotSpot code.
|
||||
|
||||
### Additional Permitted Features
|
||||
|
||||
* `constexpr`
|
||||
@@ -733,6 +750,10 @@ on that ordering.
|
||||
* Local and unnamed types as template parameters
|
||||
([n2657](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm))
|
||||
|
||||
* Range-based `for` loops
|
||||
([n2930](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html))
|
||||
([range-for](https://en.cppreference.com/w/cpp/language/range-for))
|
||||
|
||||
### Excluded Features
|
||||
|
||||
* New string and character literals
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# jetbrains/runtime:jbr15env
|
||||
FROM centos:7
|
||||
RUN yum -y install centos-release-scl
|
||||
RUN yum -y install devtoolset-8
|
||||
RUN yum -y install zip bzip2 unzip tar wget make autoconf automake libtool gcc gcc-c++ libstdc++-devel alsa-devel cups-devel xorg-x11-devel libjpeg62-devel giflib-devel freetype-devel file which libXtst-devel libXt-devel libXrender-devel alsa-lib-devel fontconfig-devel libXrandr-devel libXi-devel git
|
||||
# Install Java 15
|
||||
RUN wget https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz \
|
||||
-O - | tar xz -C /
|
||||
RUN mv /zulu15.27.17-ca-jdk15.0.0-linux_x64 /jdk15.0.0
|
||||
ENV PATH /opt/rh/devtoolset-8/root/usr/bin:$PATH
|
||||
RUN mkdir .git
|
||||
RUN git config user.email "builduser@jetbrains.com"
|
||||
RUN git config user.name "builduser"
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
script_dir=jb/project/tools/linux/scripts
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-boot-jdk=amazon-corretto-11.0.5.10.1-linux-aarch64 \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=linux-aarch64-normal-server-release || exit $?
|
||||
make images CONF=linux-aarch64-normal-server-release test-image || exit $?
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-linux-aarch64-b${build_number}
|
||||
BASE_DIR=build/linux-aarch64-normal-server-release/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar \
|
||||
--exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||
-C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-aarch64-b$build_number
|
||||
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.aarch64
|
||||
echo Running jlink....
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list.aarch64 | sed s/" "//g | sed s/,$//g) \
|
||||
--output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
tar -pcf $JBR.tar -C $BASE_DIR ${JBR_BUNDLE} || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-aarch64-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' test || exit $?
|
||||
gzip $JBRSDK_TEST.tar || exit $?
|
||||
@@ -1,139 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function create_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
|
||||
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx" | "jcef")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
*)
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
esac
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-x64-b$build_number
|
||||
|
||||
echo Running jlink....
|
||||
$JSDK/bin/jlink \
|
||||
--module-path $JSDK/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
if [[ "$bundle_type" == *jcef* ]]; then
|
||||
cp -R $BASE_DIR/$JBR_BUNDLE $BASE_DIR/jbr
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBR_BUNDLE/lib || exit $?
|
||||
fi
|
||||
grep -v "^JAVA_VERSION" $JSDK/release | grep -v "^MODULES" >> $BASE_DIR/$JBR_BUNDLE/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
if [ ! -z "$bundle_type" ]; then
|
||||
rm -rf ${BASE_DIR}/jbr
|
||||
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||
fi
|
||||
tar -pcf $JBR.tar -C $BASE_DIR jbr || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
|
||||
|
||||
#git checkout -- modules.list src
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
git apply -p0 < jb/project/tools/exclude_jcef_module.patch
|
||||
;;
|
||||
"jcef")
|
||||
git apply -p0 < jb/project/tools/exclude_jfx_module.patch
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-boot-jdk=$BOOT_JDK \
|
||||
--enable-cds=yes || exit $?
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--with-boot-jdk=$BOOT_JDK \
|
||||
--enable-cds=yes || exit $?
|
||||
fi
|
||||
|
||||
make images CONF=linux-x86_64-server-release || exit $?
|
||||
|
||||
JSDK=build/linux-x86_64-server-release/images/jdk
|
||||
JBSDK=$JBRSDK_BASE_NAME-linux-x64-b$build_number
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
BASE_DIR=build/linux-x86_64-server-release/images
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
if [[ "$bundle_type" == *jcef* ]]; then
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBRSDK_BUNDLE/lib || exit $?
|
||||
fi
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||
-C $BASE_DIR $JBRSDK_BUNDLE || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
fi
|
||||
|
||||
create_jbr ${bundle_type}
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
make test-image || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-x64-b$build_number
|
||||
|
||||
echo Creating $JBSDK_TEST.tar.gz ...
|
||||
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' test || exit $?
|
||||
gzip $JBRSDK_TEST.tar || exit $?
|
||||
fi
|
||||
@@ -1,72 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=fastdebug \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=linux-x86_64-normal-server-fastdebug || exit $?
|
||||
make images CONF=linux-x86_64-normal-server-fastdebug || exit $?
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-fastdebug-b${build_number}
|
||||
BASE_DIR=build/linux-x86_64-normal-server-fastdebug/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBRSDK_BUNDLE/lib || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar \
|
||||
--exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||
-C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-x64-fastdebug-b$build_number
|
||||
echo Running jlink....
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list | sed s/" "//g | sed s/,$//g) \
|
||||
--output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBR_BUNDLE/lib || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
tar -czf $JBR.tar -C $BASE_DIR ${JBR_BUNDLE} || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
@@ -1,73 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
linux32 bash configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-boot-jdk=/jbrsdk-11.0.5-b1 \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=linux-x86-normal-server-release || exit $?
|
||||
make images CONF=linux-x86-normal-server-release test-image || exit $?
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-linux-x86-b${build_number}
|
||||
BASE_DIR=build/linux-x86-normal-server-release/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man -C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-x86-b$build_number
|
||||
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.x86
|
||||
echo Running jlink....
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list.x86 | sed s/" "//g | sed s/,$//g) --output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
tar -pcf $JBR.tar -C $BASE_DIR $JBR_BUNDLE || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-x86-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' --exclude='test/hotspot/gtest' test || exit $?
|
||||
gzip $JBRSDK_TEST.tar || exit $?
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.cs.allow-jit</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-executable-page-protection</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
script_dir=jb/project/tools/mac/scripts
|
||||
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
|
||||
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
|
||||
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?
|
||||
@@ -1,148 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function create_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
|
||||
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx" | "jcef")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
*)
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
esac
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
|
||||
JRE_CONTENTS=${BASE_DIR}/${JBR_BUNDLE}/Contents
|
||||
JRE_HOME=${JRE_CONTENTS}/Home
|
||||
if [ -d "${JRE_CONTENTS}" ]; then
|
||||
rm -rf ${JRE_CONTENTS}
|
||||
fi
|
||||
mkdir -p ${JRE_CONTENTS}
|
||||
|
||||
JBR=${JBR_BASE_NAME}-osx-x64-b${build_number}
|
||||
|
||||
${BASE_DIR}/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
|
||||
--module-path ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JRE_HOME} || exit $?
|
||||
grep -v "^JAVA_VERSION" ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release | grep -v "^MODULES" >> ${JRE_HOME}/release
|
||||
cp -R ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/MacOS ${JRE_CONTENTS}
|
||||
cp ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Info.plist ${JRE_CONTENTS}
|
||||
|
||||
if [[ "${bundle_type}" == *jcef* ]]; then
|
||||
rm -rf ${JRE_CONTENTS}/Frameworks || exit $?
|
||||
rm -rf ${JRE_CONTENTS}/Helpers || exit $?
|
||||
cp -a jcef_mac/Frameworks ${JRE_CONTENTS} || exit $?
|
||||
cp -a jcef_mac/Helpers ${JRE_CONTENTS} || exit $?
|
||||
fi
|
||||
|
||||
echo Creating ${JBR}.tar.gz ...
|
||||
if [ ! -z "$bundle_type" ]; then
|
||||
rm -rf ${BASE_DIR}/jbr
|
||||
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||
fi
|
||||
COPYFILE_DISABLE=1 tar -pczf ${JBR}.tar.gz --exclude='*.dSYM' --exclude='man' -C ${BASE_DIR} jbr || exit $?
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
#git checkout -- modules.list src
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
git apply -p0 < jb/project/tools/exclude_jcef_module.patch
|
||||
;;
|
||||
"jcef")
|
||||
git apply -p0 < jb/project/tools/exclude_jfx_module.patch
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v $BOOT_JDK` \
|
||||
--enable-cds=yes || exit $?
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v $BOOT_JDK` \
|
||||
--enable-cds=yes || exit $?
|
||||
fi
|
||||
make images CONF=macosx-x86_64-server-release || exit $?
|
||||
|
||||
JSDK=build/macosx-x86_64-server-release/images/jdk-bundle
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-b${build_number}
|
||||
|
||||
BASE_DIR=jre
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf $BASE_DIR
|
||||
mkdir $BASE_DIR || exit $?
|
||||
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
if [[ "$bundle_type" == *jcef* ]]; then
|
||||
cp -a jcef_mac/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/ || exit $?
|
||||
cp -a jcef_mac/Helpers $BASE_DIR/$JBRSDK_BUNDLE/Contents/ || exit $?
|
||||
fi
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
COPYFILE_DISABLE=1 tar -pczf $JBSDK.tar.gz -C $BASE_DIR \
|
||||
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
|
||||
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
|
||||
$JBRSDK_BUNDLE || exit $?
|
||||
fi
|
||||
|
||||
create_jbr "${bundle_type}" || exit $?
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
make test-image || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-osx-test-x64-b$build_number
|
||||
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
COPYFILE_DISABLE=1 tar -pczf $JBRSDK_TEST.tar.gz -C build/macosx-x86_64-server-release/images \
|
||||
--exclude='test/jdk/demos' test || exit $?
|
||||
fi
|
||||
@@ -1,83 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=fastdebug \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=macosx-x86_64-normal-server-fastdebug || exit $?
|
||||
make images CONF=macosx-x86_64-normal-server-fastdebug || exit $?
|
||||
|
||||
JSDK=build/macosx-x86_64-normal-server-fastdebug/images/jdk-bundle
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-fastdebug-b${build_number}
|
||||
|
||||
BASE_DIR=jre
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf $BASE_DIR
|
||||
mkdir $BASE_DIR || exit $?
|
||||
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
cp -a jcef_mac/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/
|
||||
cp -a jcef_mac/Helpers $BASE_DIR/$JBRSDK_BUNDLE/Contents
|
||||
|
||||
COPYFILE_DISABLE=1 \
|
||||
tar -pczf ${JBSDK}.tar.gz -C ${BASE_DIR} \
|
||||
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
|
||||
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
|
||||
${JBRSDK_BUNDLE} || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JRE_CONTENTS=$BASE_DIR/$JBR_BUNDLE/Contents
|
||||
JRE_HOME=$JRE_CONTENTS/Home
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
|
||||
mkdir -p $JRE_CONTENTS
|
||||
|
||||
if [ -d "$JRE_HOME" ]; then
|
||||
rm -rf $JRE_HOME
|
||||
fi
|
||||
|
||||
JBR=${JBR_BASE_NAME}-osx-x64-fastdebug-b${build_number}
|
||||
|
||||
$BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
|
||||
--module-path $BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list | sed s/" "//g) --output $JRE_HOME || exit $?
|
||||
grep -v "^JAVA_VERSION" $BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/release | grep -v "^MODULES" >> $JRE_HOME/release
|
||||
cp -R $BASE_DIR/$JBRSDK_BUNDLE/Contents/MacOS $JRE_CONTENTS
|
||||
cp $BASE_DIR/$JBRSDK_BUNDLE/Contents/Info.plist $JRE_CONTENTS
|
||||
cp -a jcef_mac/Frameworks ${JRE_CONTENTS} || exit $?
|
||||
cp -a jcef_mac/Helpers ${JRE_CONTENTS} || exit $?
|
||||
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
COPYFILE_DISABLE=1 tar -pczf $JBR.tar.gz --exclude='*.dSYM' --exclude='man' -C $BASE_DIR $JBR_BUNDLE || exit $?
|
||||
@@ -1,120 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
APP_DIRECTORY=$1
|
||||
APPL_USER=$2
|
||||
APPL_PASSWORD=$3
|
||||
APP_NAME=$4
|
||||
BUNDLE_ID=$5
|
||||
FAKE_ROOT="${6:-fake-root}"
|
||||
|
||||
if [[ -z "$APP_DIRECTORY" ]] || [[ -z "$APPL_USER" ]] || [[ -z "$APPL_PASSWORD" ]]; then
|
||||
echo "Usage: $0 AppDirectory Username Password"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d "$APP_DIRECTORY" ]]; then
|
||||
echo "AppDirectory '$APP_DIRECTORY' does not exist or not a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function log() {
|
||||
echo "$(date '+[%H:%M:%S]') $*"
|
||||
}
|
||||
|
||||
function publish-log() {
|
||||
id=$1
|
||||
file=$2
|
||||
curl -T "$file" "$ARTIFACTORY_URL/$id" || true
|
||||
}
|
||||
|
||||
function altool-upload() {
|
||||
# Since altool uses same file for upload token we have to trick it into using different folders for token file location
|
||||
# Also it copies zip into TMPDIR so we override it too, to simplify cleanup
|
||||
OLD_HOME="$HOME"
|
||||
export HOME="$FAKE_ROOT/home"
|
||||
export TMPDIR="$FAKE_ROOT/tmp"
|
||||
mkdir -p "$HOME"
|
||||
mkdir -p "$TMPDIR"
|
||||
export _JAVA_OPTIONS="-Duser.home=$HOME -Djava.io.tmpdir=$TMPDIR"
|
||||
# Reduce amount of downloads, cache transporter libraries
|
||||
shared_itmstransporter="$OLD_HOME/shared-itmstransporter"
|
||||
if [[ -f "$shared_itmstransporter" ]]; then
|
||||
cp -r "$shared_itmstransporter" "$HOME/.itmstransporter"
|
||||
fi
|
||||
# For some reason altool prints everything to stderr, not stdout
|
||||
set +e
|
||||
xcrun altool --notarize-app \
|
||||
--username "$APPL_USER" --password "$APPL_PASSWORD" \
|
||||
--primary-bundle-id "$BUNDLE_ID" \
|
||||
--asc-provider JetBrainssro --file "$1" 2>&1 | tee "altool.init.out"
|
||||
unset TMPDIR
|
||||
export HOME="$OLD_HOME"
|
||||
set -e
|
||||
}
|
||||
|
||||
#immediately exit script with an error if a command fails
|
||||
set -euo pipefail
|
||||
|
||||
file="$APP_NAME.zip"
|
||||
|
||||
log "Zipping $file..."
|
||||
rm -rf "$file"
|
||||
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY/Contents" "$file"
|
||||
|
||||
log "Notarizing $file..."
|
||||
rm -rf "altool.init.out" "altool.check.out"
|
||||
altool-upload "$file"
|
||||
|
||||
rm -rf "$file"
|
||||
|
||||
notarization_info="$(grep -e "RequestUUID" "altool.init.out" | grep -oE '([0-9a-f-]{36})')"
|
||||
|
||||
if [ -z "$notarization_info" ]; then
|
||||
log "Faile to read RequestUUID from altool.init.out"
|
||||
exit 10
|
||||
fi
|
||||
|
||||
PATH="$PATH:/usr/local/bin/"
|
||||
|
||||
log "Notarization request sent, awaiting response"
|
||||
spent=0
|
||||
|
||||
while true; do
|
||||
# For some reason altool prints everything to stderr, not stdout
|
||||
xcrun altool --username "$APPL_USER" --notarization-info "$notarization_info" --password "$APPL_PASSWORD" >"altool.check.out" 2>&1 || true
|
||||
status="$(grep -oe 'Status: .*' "altool.check.out" | cut -c 9- || true)"
|
||||
log "Current status: $status"
|
||||
if [ "$status" = "invalid" ]; then
|
||||
log "Notarization failed"
|
||||
ec=1
|
||||
elif [ "$status" = "success" ]; then
|
||||
log "Notarization succeeded"
|
||||
ec=0
|
||||
else
|
||||
if [ "$status" != "in progress" ]; then
|
||||
log "Unknown notarization status, waiting more, altool output:"
|
||||
cat "altool.check.out"
|
||||
fi
|
||||
if [[ $spent -gt 60 ]]; then
|
||||
log "Waiting time out (apx 60 minutes)"
|
||||
ec=2
|
||||
break
|
||||
fi
|
||||
sleep 60
|
||||
((spent += 1))
|
||||
continue
|
||||
fi
|
||||
developer_log="developer_log.json"
|
||||
log "Fetching $developer_log"
|
||||
# TODO: Replace cut with trim or something better
|
||||
url="$(grep -oe 'LogFileURL: .*' "altool.check.out" | cut -c 13-)"
|
||||
wget "$url" -O "$developer_log" && cat "$developer_log" || true
|
||||
if [ $ec != 0 ]; then
|
||||
log "Publishing $developer_log"
|
||||
publish-log "$notarization_info" "$developer_log"
|
||||
fi
|
||||
break
|
||||
done
|
||||
cat "altool.check.out"
|
||||
|
||||
rm -rf "altool.init.out" "altool.check.out"
|
||||
exit $ec
|
||||
@@ -1,93 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
APP_DIRECTORY=$1
|
||||
JB_CERT=$2
|
||||
|
||||
if [[ -z "$APP_DIRECTORY" ]] || [[ -z "$JB_CERT" ]]; then
|
||||
echo "Usage: $0 AppDirectory CertificateID"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d "$APP_DIRECTORY" ]]; then
|
||||
echo "AppDirectory '$APP_DIRECTORY' does not exist or not a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function log() {
|
||||
echo "$(date '+[%H:%M:%S]') $*"
|
||||
}
|
||||
|
||||
#immediately exit script with an error if a command fails
|
||||
set -euo pipefail
|
||||
|
||||
# Cleanup files left from previous sign attempt (if any)
|
||||
find "$APP_DIRECTORY" -name '*.cstemp' -exec rm '{}' \;
|
||||
|
||||
log "Signing libraries and executables..."
|
||||
# -perm +111 searches for executables
|
||||
for f in \
|
||||
"Contents/Home/bin" \
|
||||
"Contents/Home/lib"; do
|
||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||
find "$APP_DIRECTORY/$f" \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||
-exec codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
fi
|
||||
done
|
||||
|
||||
log "Signing libraries in jars in $PWD"
|
||||
|
||||
# todo: add set -euo pipefail; into the inner sh -c
|
||||
# `-e` prevents `grep -q && printf` loginc
|
||||
# with `-o pipefail` there's no input for 'while' loop
|
||||
find "$APP_DIRECTORY" -name '*.jar' \
|
||||
-exec sh -c "set -u; unzip -l \"\$0\" | grep -q -e '\.dylib\$' -e '\.jnilib\$' -e '\.so\$' -e '^jattach\$' && printf \"\$0\0\" " {} \; |
|
||||
while IFS= read -r -d $'\0' file; do
|
||||
log "Processing libraries in $file"
|
||||
|
||||
rm -rf jarfolder jar.jar
|
||||
mkdir jarfolder
|
||||
filename="${file##*/}"
|
||||
log "Filename: $filename"
|
||||
cp "$file" jarfolder && (cd jarfolder && jar xf "$filename" && rm "$filename")
|
||||
|
||||
find jarfolder \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "jattach" \) \
|
||||
-exec codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
|
||||
(cd jarfolder; zip -q -r -o ../jar.jar .)
|
||||
mv jar.jar "$file"
|
||||
done
|
||||
|
||||
rm -rf jarfolder jar.jar
|
||||
|
||||
log "Signing other files..."
|
||||
for f in \
|
||||
"Contents/MacOS"; do
|
||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||
find "$APP_DIRECTORY/$f" \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||
-exec codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
fi
|
||||
done
|
||||
|
||||
#log "Signing executable..."
|
||||
#codesign --timestamp \
|
||||
# -v -s "$JB_CERT" --options=runtime \
|
||||
# --force \
|
||||
# --entitlements entitlements.xml "$APP_DIRECTORY/Contents/MacOS/idea"
|
||||
|
||||
log "Signing whole app..."
|
||||
codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--force \
|
||||
--entitlements entitlements.xml "$APP_DIRECTORY"
|
||||
|
||||
log "Verifying java is not broken"
|
||||
find "$APP_DIRECTORY" \
|
||||
-type f -name 'java' -perm +111 -exec {} -version \;
|
||||
@@ -1,145 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
#immediately exit script with an error if a command fails
|
||||
set -euo pipefail
|
||||
|
||||
export COPY_EXTENDED_ATTRIBUTES_DISABLE=true
|
||||
export COPYFILE_DISABLE=true
|
||||
|
||||
INPUT_FILE=$1
|
||||
EXPLODED=$2.exploded
|
||||
BACKUP_JMODS=$2.backup
|
||||
USERNAME=$3
|
||||
PASSWORD=$4
|
||||
CODESIGN_STRING=$5
|
||||
NOTARIZE=$6
|
||||
BUNDLE_ID=$7
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
function log() {
|
||||
echo "$(date '+[%H:%M:%S]') $*"
|
||||
}
|
||||
|
||||
log "Deleting $EXPLODED ..."
|
||||
if test -d "$EXPLODED"; then
|
||||
find "$EXPLODED" -mindepth 1 -maxdepth 1 -exec chmod -R u+wx '{}' \;
|
||||
fi
|
||||
rm -rf "$EXPLODED"
|
||||
mkdir "$EXPLODED"
|
||||
rm -rf "$BACKUP_JMODS"
|
||||
mkdir "$BACKUP_JMODS"
|
||||
|
||||
log "Unzipping $INPUT_FILE to $EXPLODED ..."
|
||||
tar -xzvf "$INPUT_FILE" --directory $EXPLODED
|
||||
rm "$INPUT_FILE"
|
||||
BUILD_NAME="$(ls "$EXPLODED")"
|
||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
|
||||
fi
|
||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/Frameworks; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/Frameworks $BACKUP_JMODS
|
||||
fi
|
||||
if test -f $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib $BACKUP_JMODS
|
||||
fi
|
||||
|
||||
#log "$INPUT_FILE unzipped and removed"
|
||||
log "$INPUT_FILE extracted and removed"
|
||||
|
||||
APPLICATION_PATH="$EXPLODED/$BUILD_NAME"
|
||||
|
||||
find "$APPLICATION_PATH/Contents/Home/bin" \
|
||||
-maxdepth 1 -type f -name '*.jnilib' -print0 |
|
||||
while IFS= read -r -d $'\0' file; do
|
||||
if [ -f "$file" ]; then
|
||||
log "Linking $file"
|
||||
b="$(basename "$file" .jnilib)"
|
||||
ln -sf "$b.jnilib" "$(dirname "$file")/$b.dylib"
|
||||
fi
|
||||
done
|
||||
|
||||
find "$APPLICATION_PATH/Contents/" \
|
||||
-maxdepth 1 -type f -name '*.txt' -print0 |
|
||||
while IFS= read -r -d $'\0' file; do
|
||||
if [ -f "$file" ]; then
|
||||
log "Moving $file"
|
||||
mv "$file" "$APPLICATION_PATH/Contents/Resources"
|
||||
fi
|
||||
done
|
||||
|
||||
non_plist=$(find "$APPLICATION_PATH/Contents/" -maxdepth 1 -type f -and -not -name 'Info.plist' | wc -l)
|
||||
if [[ $non_plist -gt 0 ]]; then
|
||||
log "Only Info.plist file is allowed in Contents directory but found $non_plist file(s):"
|
||||
log "$(find "$APPLICATION_PATH/Contents/" -maxdepth 1 -type f -and -not -name 'Info.plist')"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "Unlocking keychain..."
|
||||
# Make sure *.p12 is imported into local KeyChain
|
||||
security unlock-keychain -p "$PASSWORD" "/Users/$USERNAME/Library/Keychains/login.keychain"
|
||||
|
||||
attempt=1
|
||||
limit=3
|
||||
set +e
|
||||
while [[ $attempt -le $limit ]]; do
|
||||
log "Signing (attempt $attempt) $APPLICATION_PATH ..."
|
||||
./sign.sh "$APPLICATION_PATH" "$CODESIGN_STRING"
|
||||
ec=$?
|
||||
if [[ $ec -ne 0 ]]; then
|
||||
((attempt += 1))
|
||||
if [ $attempt -eq $limit ]; then
|
||||
set -e
|
||||
fi
|
||||
log "Signing failed, wait for 30 sec and try to sign again"
|
||||
sleep 30
|
||||
else
|
||||
log "Signing done"
|
||||
codesign -v "$APPLICATION_PATH" -vvvvv
|
||||
log "Check sign done"
|
||||
((attempt += limit))
|
||||
fi
|
||||
done
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$NOTARIZE" = "yes" ]; then
|
||||
log "Notarizing..."
|
||||
# shellcheck disable=SC1090
|
||||
source "$HOME/.notarize_token"
|
||||
APP_NAME=$(echo ${INPUT_FILE} | awk -F"." '{ print $1 }')
|
||||
# Since notarization tool uses same file for upload token we have to trick it into using different folders, hence fake root
|
||||
# Also it leaves copy of zip file in TMPDIR, so notarize.sh overrides it and uses FAKE_ROOT as location for temp TMPDIR
|
||||
FAKE_ROOT="$(pwd)/fake-root"
|
||||
mkdir -p "$FAKE_ROOT"
|
||||
echo "Notarization will use fake root: $FAKE_ROOT"
|
||||
./notarize.sh "$APPLICATION_PATH" "$APPLE_USERNAME" "$APPLE_PASSWORD" "$APP_NAME" "$BUNDLE_ID" "$FAKE_ROOT"
|
||||
rm -rf "$FAKE_ROOT"
|
||||
|
||||
set +e
|
||||
log "Stapling..."
|
||||
xcrun stapler staple "$APPLICATION_PATH"
|
||||
else
|
||||
log "Notarization disabled"
|
||||
log "Stapling disabled"
|
||||
fi
|
||||
|
||||
log "Zipping $BUILD_NAME to $INPUT_FILE ..."
|
||||
(
|
||||
#cd "$EXPLODED"
|
||||
#ditto -c -k --sequesterRsrc --keepParent "$BUILD_NAME" "../$INPUT_FILE"
|
||||
if test ! -z $(ls $BACKUP_JMODS/libjli.dylib); then
|
||||
mv $BACKUP_JMODS/libjli.dylib $EXPLODED/$BUILD_NAME/Contents/MacOS
|
||||
fi
|
||||
if test -d $BACKUP_JMODS/jmods; then
|
||||
mv $BACKUP_JMODS/jmods $EXPLODED/$BUILD_NAME/Contents/Home
|
||||
fi
|
||||
if test -d $BACKUP_JMODS/Frameworks; then
|
||||
mv $BACKUP_JMODS/Frameworks $EXPLODED/$BUILD_NAME/Contents/Home
|
||||
fi
|
||||
|
||||
COPYFILE_DISABLE=1 tar -pczf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
|
||||
log "Finished zipping"
|
||||
)
|
||||
rm -rf "$EXPLODED"
|
||||
log "Done"
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
script_dir=jb/project/tools/windows/scripts
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?
|
||||
@@ -1,119 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function create_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx" | "jcef" | "jfx_jcef")
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
*)
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
esac
|
||||
rm -rf ${JBR_BUNDLE}
|
||||
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JBR_BUNDLE} || exit $?
|
||||
if [[ "${bundle_type}" == *jcef* ]]
|
||||
then
|
||||
cp -R jcef_win_x64/* ${JBR_BUNDLE}/bin
|
||||
fi
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${JBR_BUNDLE}/release
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
WORK_DIR=$(pwd)
|
||||
|
||||
#git checkout -- modules.list src
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
echo "Excluding jcef modules"
|
||||
git apply -p0 < jb/project/tools/exclude_jcef_module.patch
|
||||
;;
|
||||
"jcef")
|
||||
echo "Excluding jfx modules"
|
||||
git apply -p0 < jb/project/tools/exclude_jfx_module.patch
|
||||
;;
|
||||
esac
|
||||
|
||||
PATH="/usr/local/bin:/usr/bin:${PATH}"
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
bash ./configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-target-bits=64 \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-toolchain-version=${TOOLCHAIN_VERSION} \
|
||||
--with-boot-jdk=${BOOT_JDK} \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes || exit 1
|
||||
else
|
||||
bash ./configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-target-bits=64 \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-import-modules=${WORK_DIR}/modular-sdk \
|
||||
--with-toolchain-version=${TOOLCHAIN_VERSION} \
|
||||
--with-boot-jdk=${BOOT_JDK} \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes || exit 1
|
||||
fi
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
make LOG=info images CONF=windows-x86_64-server-release test-image || exit 1
|
||||
else
|
||||
make LOG=info images CONF=windows-x86_64-server-release || exit 1
|
||||
fi
|
||||
|
||||
JSDK=build/windows-x86_64-server-release/images/jdk
|
||||
if [[ "$bundle_type" == "*jcef*" || -z "$bundle_type" ]]; then
|
||||
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
|
||||
fi
|
||||
BASE_DIR=build/windows-x86_64-server-release/images
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || exit 1
|
||||
if [[ "$bundle_type" == "*jcef*" ]]; then
|
||||
cp -R jcef_win_x64/* ${JBRSDK_BUNDLE}/bin
|
||||
fi
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
fi
|
||||
create_jbr ${bundle_type}
|
||||
|
||||
#JBR_BUNDLE=jbr_${bundle_type}_lw
|
||||
#create_jbr ${bundle_type}_lw
|
||||
@@ -1,57 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
WORK_DIR=$(pwd)
|
||||
|
||||
PATH="/usr/local/bin:/usr/bin:${PATH}"
|
||||
./configure \
|
||||
--disable-warnings-as-errors \
|
||||
--disable-debug-symbols \
|
||||
--with-target-bits=32 \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-toolchain-version=2015 \
|
||||
--with-boot-jdk=${BOOT_JDK} \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes || exit 1
|
||||
make clean CONF=windows-x86-normal-server-release || exit 1
|
||||
make LOG=info images CONF=windows-x86-normal-server-release test-image || exit 1
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-windows-x86-b${build_number}
|
||||
BASE_DIR=build/windows-x86-normal-server-release/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || exit 1
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
rm -rf ${JBR_BUNDLE}
|
||||
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.x86
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list.x86 | sed s/" "//g) --output ${JBR_BUNDLE} || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${JBR_BUNDLE}/release
|
||||
@@ -1,79 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function pack_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx" | "jcef")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx_jcef" | "")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
;;
|
||||
*)
|
||||
echo "***ERR*** bundle was not specified" && exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
JBR=$JBR_BASE_NAME-windows-x64-b$build_number
|
||||
echo Creating $JBR.tar.gz ...
|
||||
if [ ! -z "$bundle_type" ]; then
|
||||
rm -rf ${BASE_DIR}/jbr
|
||||
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||
fi
|
||||
|
||||
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR jbr || exit 1
|
||||
#rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
|
||||
IMAGES_DIR=build/windows-x86_64-server-release/images
|
||||
JSDK=$IMAGES_DIR/jdk
|
||||
JBSDK=$JBRSDK_BASE_NAME-windows-x64-b$build_number
|
||||
BASE_DIR=.
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
fi
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || exit 1
|
||||
fi
|
||||
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
pack_jbr $bundle_type
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-windows-test-x64-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || exit 1
|
||||
fi
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
|
||||
IMAGES_DIR=build/windows-x86-normal-server-release/images
|
||||
JSDK=$IMAGES_DIR/jdk
|
||||
JBSDK=$JBRSDK_BASE_NAME-windows-x86-b$build_number
|
||||
BASE_DIR=.
|
||||
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || exit 1
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
|
||||
JBR=$JBR_BASE_NAME-windows-x86-b$build_number
|
||||
echo Creating $JBR.tar.gz ...
|
||||
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR ${JBR_BUNDLE} || exit 1
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-windows-test-x86-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || exit 1
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -45,11 +45,6 @@ $(OUTPUTDIR)/compile_commands.json: $(wildcard $(MAKESUPPORT_OUTPUTDIR)/compile-
|
||||
$(RM) $@
|
||||
$(FIND) $(MAKESUPPORT_OUTPUTDIR)/compile-commands/ -name \*.json | \
|
||||
$(SORT) | $(XARGS) $(CAT) >> $@.tmp
|
||||
$(if $(FIXPATH),$(FIXPATH) $(AWK) 'BEGIN { \
|
||||
tmpfile = substr(ARGV[2],2); \
|
||||
cmd = "$(CP) " "\047" tmpfile "\047" " $@.tmp"; \
|
||||
system(cmd); \
|
||||
}' -- @$@.tmp)
|
||||
$(SED) -e '1s/^/[\$(NEWLINE)/' -e '$(DOLLAR)s/,\s\{0,\}$(DOLLAR)/\$(NEWLINE)]/' $@.tmp > $@
|
||||
$(RM) $@.tmp
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ define SetupInterimModule
|
||||
EXCLUDE_FILES := $(TOPDIR)/src/$1/share/classes/module-info.java \
|
||||
Standard.java, \
|
||||
EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim/module-info.java, \
|
||||
COPY := .gif .png .xml .css .js .txt javax.tools.JavaCompilerTool, \
|
||||
COPY := .gif .png .xml .css .js .js.template .txt javax.tools.JavaCompilerTool, \
|
||||
BIN := $(BUILDTOOLS_OUTPUTDIR)/interim_langtools_modules/$1.interim, \
|
||||
DISABLED_WARNINGS := module options, \
|
||||
JAVAC_FLAGS := \
|
||||
|
||||
@@ -76,7 +76,6 @@ java.datatransfer_COPY += flavormap.properties
|
||||
|
||||
################################################################################
|
||||
|
||||
java.desktop_DISABLED_WARNINGS += missing-explicit-ctor
|
||||
java.desktop_DOCLINT += -Xdoclint:all/protected,-reference \
|
||||
'-Xdoclint/package:java.*,javax.*'
|
||||
java.desktop_COPY += .gif .png .wav .txt .xml .css .pf
|
||||
@@ -184,10 +183,6 @@ ifeq ($(call isTargetOs, windows), true)
|
||||
java.desktop_EXCLUDES += com/sun/java/swing/plaf/gtk
|
||||
endif
|
||||
|
||||
ifdef BUILD_HEADLESS_ONLY
|
||||
java.desktop_EXCLUDES += sun/applet
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOs, windows macosx), false)
|
||||
java.desktop_EXCLUDE_FILES += sun/awt/AWTCharset.java
|
||||
endif
|
||||
@@ -299,10 +294,6 @@ java.xml.crypto_CLEAN += .properties
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.accessibility_DISABLED_WARNINGS += missing-explicit-ctor
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.charsets_COPY += .dat
|
||||
|
||||
################################################################################
|
||||
@@ -348,7 +339,7 @@ jdk.dynalink_CLEAN += .properties
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.javadoc_COPY += .xml .css .js .png .txt
|
||||
jdk.javadoc_COPY += .xml .css .js .js.template .png .txt
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -389,11 +380,11 @@ endif
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.incubator.jpackage_COPY += .gif .png .txt .spec .script .prerm .preinst \
|
||||
jdk.jpackage_COPY += .gif .png .txt .spec .script .prerm .preinst \
|
||||
.postrm .postinst .list .sh .desktop .copyright .control .plist .template \
|
||||
.icns .scpt .wxs .wxl .wxi .ico .bmp .tiff
|
||||
|
||||
jdk.incubator.jpackage_CLEAN += .properties
|
||||
jdk.jpackage_CLEAN += .properties
|
||||
|
||||
################################################################################
|
||||
|
||||
|
||||
@@ -57,14 +57,11 @@ $(eval $(call IncludeCustomExtension, Docs.gmk))
|
||||
################################################################################
|
||||
# Javadoc settings
|
||||
|
||||
# Include configuration for URLs in generated javadoc
|
||||
include $(TOPDIR)/make/conf/javadoc.conf
|
||||
|
||||
MODULES_SOURCE_PATH := $(call PathList, $(call GetModuleSrcPath) )
|
||||
|
||||
# URLs
|
||||
JAVADOC_BASE_URL := https://docs.oracle.com/pls/topic/lookup?ctx=javase$(VERSION_NUMBER)&id=homepage
|
||||
BUG_SUBMIT_URL := https://bugreport.java.com/bugreport/
|
||||
COPYRIGHT_URL := legal/copyright.html
|
||||
LICENSE_URL := https://www.oracle.com/java/javase/terms/license/java$(VERSION_NUMBER)speclicense.html
|
||||
REDISTRIBUTION_URL := https://www.oracle.com/technetwork/java/redist-137594.html
|
||||
|
||||
# In order to get a specific ordering it's necessary to specify the total
|
||||
# ordering of tags as the tags are otherwise ordered in order of definition.
|
||||
|
||||
@@ -61,7 +61,7 @@ endif
|
||||
|
||||
# Save the stderr output of the command and print it along with stdout in case
|
||||
# something goes wrong.
|
||||
$(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR)
|
||||
$(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXECUTABLE_SUFFIX) $(CLASSLIST_JAR)
|
||||
$(call MakeDir, $(LINK_OPT_DIR))
|
||||
$(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $@))
|
||||
$(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $(JLI_TRACE_FILE)))
|
||||
@@ -94,7 +94,7 @@ $(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR)
|
||||
# dependencies, make will correctly rebuild both jli trace and classlist
|
||||
# incrementally using the single recipe above.
|
||||
$(CLASSLIST_FILE): $(JLI_TRACE_FILE)
|
||||
$(JLI_TRACE_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR)
|
||||
$(JLI_TRACE_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXECUTABLE_SUFFIX) $(CLASSLIST_JAR)
|
||||
|
||||
TARGETS += $(CLASSLIST_FILE) $(JLI_TRACE_FILE)
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ ALL_MODULES := $(call FindAllModules)
|
||||
$(eval $(call ReadImportMetaData))
|
||||
|
||||
JRE_MODULES += $(filter $(ALL_MODULES), $(BOOT_MODULES) \
|
||||
$(PLATFORM_MODULES) $(JRE_TOOL_MODULES))
|
||||
$(PLATFORM_MODULES) jdk.jdwp.agent)
|
||||
JDK_MODULES += $(ALL_MODULES)
|
||||
|
||||
JRE_MODULES_LIST := $(call CommaList, $(JRE_MODULES))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -32,7 +32,7 @@ include Modules.gmk
|
||||
################################################################################
|
||||
|
||||
# Use this file inside the image as target for make rule
|
||||
JIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX)
|
||||
JIMAGE_TARGET_FILE := bin/java$(EXECUTABLE_SUFFIX)
|
||||
|
||||
INTERIM_MODULES_LIST := $(call CommaList, $(INTERIM_IMAGE_MODULES))
|
||||
|
||||
|
||||
@@ -60,19 +60,14 @@ define SetTestOpt
|
||||
endif
|
||||
endef
|
||||
|
||||
# Setup _NT_SYMBOL_PATH on Windows
|
||||
# Setup _NT_SYMBOL_PATH on Windows, which points to our pdb files.
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
ifndef _NT_SYMBOL_PATH
|
||||
# Can't use PathList here as it adds quotes around the value.
|
||||
_NT_SYMBOL_PATH := \
|
||||
$(subst $(SPACE),;,$(strip \
|
||||
$(foreach p, $(sort $(dir $(wildcard \
|
||||
$(addprefix $(SYMBOLS_IMAGE_DIR)/bin/, *.pdb */*.pdb)))), \
|
||||
$(call FixPath, $p) \
|
||||
) \
|
||||
))
|
||||
export _NT_SYMBOL_PATH
|
||||
$(call LogDebug, Rewriting _NT_SYMBOL_PATH to $(_NT_SYMBOL_PATH))
|
||||
SYMBOL_PATH := $(call PathList, $(sort $(patsubst %/, %, $(dir $(wildcard \
|
||||
$(addprefix $(SYMBOLS_IMAGE_DIR)/bin/, *.pdb */*.pdb))))))
|
||||
export _NT_SYMBOL_PATH := $(subst \\,\, $(call FixPath, \
|
||||
$(subst $(DQUOTE),, $(SYMBOL_PATH))))
|
||||
$(call LogDebug, Setting _NT_SYMBOL_PATH to $(_NT_SYMBOL_PATH))
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -613,6 +608,7 @@ define SetupRunGtestTestBody
|
||||
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
|
||||
-jdk $(JDK_UNDER_TEST) $$($1_GTEST_FILTER) \
|
||||
--gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
|
||||
--gtest_catch_exceptions=0 \
|
||||
$$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \
|
||||
$$(GTEST_JAVA_OPTIONS) $$($1_AOT_OPTIONS) \
|
||||
> >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \
|
||||
|
||||
@@ -189,15 +189,9 @@ ifeq ($(OPENJDK_TARGET_CPU), x86_64)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
ifeq ($(wildcard $(TEST_IMAGE_DIR)/bin/fixpath.exe), )
|
||||
$(info Error: fixpath is missing from test image '$(TEST_IMAGE_DIR)')
|
||||
$(error Cannot continue.)
|
||||
endif
|
||||
FIXPATH := $(TEST_IMAGE_DIR)/bin/fixpath.exe -c
|
||||
PATH_SEP:=;
|
||||
FIXPATH := $(BASH) $(TOPDIR)/make/scripts/fixpath.sh exec
|
||||
else
|
||||
FIXPATH :=
|
||||
PATH_SEP:=:
|
||||
endif
|
||||
|
||||
# Check number of cores and memory in MB
|
||||
@@ -280,7 +274,6 @@ $(call CreateNewSpec, $(NEW_SPEC), \
|
||||
BASH := $(BASH), \
|
||||
JIB_JAR := $(JIB_JAR), \
|
||||
FIXPATH := $(FIXPATH), \
|
||||
PATH_SEP := $(PATH_SEP), \
|
||||
OPENJDK_TARGET_OS := $(OPENJDK_TARGET_OS), \
|
||||
OPENJDK_TARGET_OS_TYPE := $(OPENJDK_TARGET_OS_TYPE), \
|
||||
OPENJDK_TARGET_OS_ENV := $(OPENJDK_TARGET_OS_ENV), \
|
||||
|
||||
@@ -116,16 +116,13 @@ JAVAC_CMD := $(BOOT_JDK)/bin/javac
|
||||
JAR_CMD := $(BOOT_JDK)/bin/jar
|
||||
JLINK_CMD := $(JDK_OUTPUTDIR)/bin/jlink
|
||||
JMOD_CMD := $(JDK_OUTPUTDIR)/bin/jmod
|
||||
JARSIGNER_CMD := $(BOOT_JDK)/bin/jarsigner
|
||||
|
||||
JAVA := $(FIXPATH) $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
|
||||
JAVA_SMALL := $(FIXPATH) $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS)
|
||||
JAVA_DETACH := $(FIXPATH) $(FIXPATH_DETACH_FLAG) $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
|
||||
JAVAC := $(FIXPATH) $(JAVAC_CMD)
|
||||
JAR := $(FIXPATH) $(JAR_CMD)
|
||||
JLINK := $(FIXPATH) $(JLINK_CMD)
|
||||
JMOD := $(FIXPATH) $(JMOD_CMD)
|
||||
JARSIGNER := $(FIXPATH) $(JARSIGNER_CMD)
|
||||
|
||||
BUILD_JAVA := $(JDK_IMAGE_DIR)/bin/JAVA
|
||||
################################################################################
|
||||
@@ -153,7 +150,6 @@ LN := ln
|
||||
MIG := mig
|
||||
MKDIR := mkdir
|
||||
MV := mv
|
||||
NAWK := nawk
|
||||
NICE := nice
|
||||
PATCH := patch
|
||||
PRINTF := printf
|
||||
@@ -167,7 +163,6 @@ TAIL := tail
|
||||
TEE := tee
|
||||
TR := tr
|
||||
TOUCH := touch
|
||||
UNIQ := uniq
|
||||
WC := wc
|
||||
XARGS := xargs
|
||||
ZIPEXE := zip
|
||||
@@ -178,7 +173,7 @@ HG := hg
|
||||
ULIMIT := ulimit
|
||||
|
||||
ifeq ($(OPENJDK_BUILD_OS), windows)
|
||||
CYGPATH := cygpath
|
||||
PATHTOOL := cygpath
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -30,34 +30,25 @@ include MakeBase.gmk
|
||||
|
||||
############################################################################
|
||||
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
FIXPATH_COPY := $(TEST_IMAGE_DIR)/bin/fixpath.exe
|
||||
|
||||
$(FIXPATH_COPY): $(firstword $(FIXPATH))
|
||||
$(call install-file)
|
||||
|
||||
FIXPATH_WORKSPACE_ROOT := $(call FixPath, $(WORKSPACE_ROOT))
|
||||
FIXPATH_OUTPUTDIR := $(call FixPath, $(OUTPUTDIR))
|
||||
else
|
||||
FIXPATH_WORKSPACE_ROOT := $(WORKSPACE_ROOT)
|
||||
FIXPATH_OUTPUTDIR := $(OUTPUTDIR)
|
||||
endif
|
||||
|
||||
|
||||
BUILD_INFO_PROPERTIES := $(TEST_IMAGE_DIR)/build-info.properties
|
||||
|
||||
$(BUILD_INFO_PROPERTIES):
|
||||
$(call MakeTargetDir)
|
||||
$(ECHO) "# Build info properties for JDK tests" > $@
|
||||
$(ECHO) "build.workspace.root=$(FIXPATH_WORKSPACE_ROOT)" >> $@
|
||||
$(ECHO) "build.output.root=$(FIXPATH_OUTPUTDIR)" >> $@
|
||||
$(ECHO) "build.workspace.root=$(call FixPath, $(WORKSPACE_ROOT))" >> $@
|
||||
$(ECHO) "build.output.root=$(call FixPath, $(OUTPUTDIR))" >> $@
|
||||
|
||||
prepare-test-image: $(FIXPATH_COPY) $(BUILD_INFO_PROPERTIES)
|
||||
$(call MakeDir, $(TEST_IMAGE_DIR))
|
||||
$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
|
||||
README := $(TEST_IMAGE_DIR)/Readme.txt
|
||||
|
||||
$(README):
|
||||
$(call MakeTargetDir)
|
||||
$(ECHO) > $@ 'JDK test image'
|
||||
|
||||
TARGETS += $(BUILD_INFO_PROPERTIES) $(README)
|
||||
|
||||
################################################################################
|
||||
|
||||
prepare-test-image: $(TARGETS)
|
||||
all: prepare-test-image
|
||||
|
||||
.PHONY: default all prepare-test-image
|
||||
|
||||
@@ -70,27 +70,18 @@ AC_DEFUN_ONCE([BASIC_SETUP_PATHS],
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
||||
PATH_SEP=";"
|
||||
EXE_SUFFIX=".exe"
|
||||
BASIC_CHECK_PATHS_WINDOWS
|
||||
else
|
||||
PATH_SEP=":"
|
||||
EXE_SUFFIX=""
|
||||
BASIC_SETUP_PATHS_WINDOWS
|
||||
fi
|
||||
AC_SUBST(PATH_SEP)
|
||||
AC_SUBST(EXE_SUFFIX)
|
||||
|
||||
# We get the top-level directory from the supporting wrappers.
|
||||
BASIC_WINDOWS_VERIFY_DIR($TOPDIR, source)
|
||||
UTIL_FIXUP_PATH(TOPDIR)
|
||||
AC_MSG_CHECKING([for top-level directory])
|
||||
AC_MSG_RESULT([$TOPDIR])
|
||||
AC_SUBST(TOPDIR)
|
||||
AC_SUBST(CONFIGURE_START_DIR)
|
||||
|
||||
# We can only call UTIL_FIXUP_PATH after BASIC_CHECK_PATHS_WINDOWS.
|
||||
UTIL_FIXUP_PATH(TOPDIR)
|
||||
UTIL_FIXUP_PATH(CONFIGURE_START_DIR)
|
||||
|
||||
if test "x$CUSTOM_ROOT" != x; then
|
||||
BASIC_WINDOWS_VERIFY_DIR($CUSTOM_ROOT, custom root)
|
||||
UTIL_FIXUP_PATH(CUSTOM_ROOT)
|
||||
WORKSPACE_ROOT="${CUSTOM_ROOT}"
|
||||
else
|
||||
@@ -98,6 +89,9 @@ AC_DEFUN_ONCE([BASIC_SETUP_PATHS],
|
||||
fi
|
||||
AC_SUBST(WORKSPACE_ROOT)
|
||||
|
||||
UTIL_FIXUP_PATH(CONFIGURE_START_DIR)
|
||||
AC_SUBST(CONFIGURE_START_DIR)
|
||||
|
||||
# Locate the directory of this script.
|
||||
AUTOCONF_DIR=$TOPDIR/make/autoconf
|
||||
|
||||
@@ -234,9 +228,12 @@ AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
|
||||
# if no Xcode installed, xcodebuild exits with 1
|
||||
# if Xcode is installed, even if xcode-select is misconfigured, then it exits with 0
|
||||
if test "x$DEVKIT_ROOT" != x || /usr/bin/xcodebuild -version >/dev/null 2>&1; then
|
||||
# We need to use xcodebuild in the toolchain dir provided by the user, this will
|
||||
# fall back on the stub binary in /usr/bin/xcodebuild
|
||||
AC_PATH_PROG([XCODEBUILD], [xcodebuild], [/usr/bin/xcodebuild], [$TOOLCHAIN_PATH])
|
||||
# We need to use xcodebuild in the toolchain dir provided by the user
|
||||
UTIL_LOOKUP_PROGS(XCODEBUILD, xcodebuild, $TOOLCHAIN_PATH)
|
||||
if test x$XCODEBUILD = x; then
|
||||
# fall back on the stub binary in /usr/bin/xcodebuild
|
||||
XCODEBUILD=/usr/bin/xcodebuild
|
||||
fi
|
||||
else
|
||||
# this should result in SYSROOT being empty, unless --with-sysroot is provided
|
||||
# when only the command line tools are installed there are no SDKs, so headers
|
||||
@@ -306,6 +303,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
|
||||
AC_MSG_RESULT([$SYSROOT])
|
||||
AC_MSG_CHECKING([for toolchain path])
|
||||
AC_MSG_RESULT([$TOOLCHAIN_PATH])
|
||||
AC_SUBST(TOOLCHAIN_PATH)
|
||||
AC_MSG_CHECKING([for extra path])
|
||||
AC_MSG_RESULT([$EXTRA_PATH])
|
||||
])
|
||||
@@ -380,6 +378,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
|
||||
AC_MSG_CHECKING([what configuration name to use])
|
||||
AC_MSG_RESULT([$CONF_NAME])
|
||||
|
||||
BASIC_WINDOWS_VERIFY_DIR($OUTPUTDIR, output)
|
||||
UTIL_FIXUP_PATH(OUTPUTDIR)
|
||||
|
||||
CONFIGURESUPPORT_OUTPUTDIR="$OUTPUTDIR/configure-support"
|
||||
@@ -416,26 +415,16 @@ AC_DEFUN([BASIC_CHECK_DIR_ON_LOCAL_DISK],
|
||||
# df -l lists only local disks; if the given directory is not found then
|
||||
# a non-zero exit code is given
|
||||
if test "x$DF" = x; then
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
# msys does not have df; use Windows "net use" instead.
|
||||
IS_NETWORK_DISK=`net use | grep \`pwd -W | cut -d ":" -f 1 | tr a-z A-Z\`:`
|
||||
if test "x$IS_NETWORK_DISK" = x; then
|
||||
$2
|
||||
else
|
||||
$3
|
||||
fi
|
||||
else
|
||||
# No df here, say it's local
|
||||
$2
|
||||
fi
|
||||
# No df here, say it's local
|
||||
$2
|
||||
else
|
||||
# JDK-8189619
|
||||
# df on AIX does not understand -l. On modern AIXes it understands "-T local" which
|
||||
# is the same. On older AIXes we just continue to live with a "not local build" warning.
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
DF_LOCAL_ONLY_OPTION='-T local'
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
# In WSL, we can only build on a drvfs file system (that is, a mounted real Windows drive)
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl1"; then
|
||||
# In WSL1, we can only build on a drvfs file system (that is, a mounted real Windows drive)
|
||||
DF_LOCAL_ONLY_OPTION='-t drvfs'
|
||||
else
|
||||
DF_LOCAL_ONLY_OPTION='-l'
|
||||
|
||||
@@ -28,38 +28,37 @@
|
||||
# but is used by much of the early bootstrap code.
|
||||
AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
|
||||
[
|
||||
# Start with tools that do not need have cross compilation support
|
||||
# and can be expected to be found in the default PATH. These tools are
|
||||
# used by configure.
|
||||
# Bootstrapping: These tools are needed by UTIL_LOOKUP_PROGS
|
||||
AC_PATH_PROGS(BASENAME, basename)
|
||||
UTIL_CHECK_NONEMPTY(BASENAME)
|
||||
AC_PATH_PROGS(DIRNAME, dirname)
|
||||
UTIL_CHECK_NONEMPTY(DIRNAME)
|
||||
AC_PATH_PROGS(FILE, file)
|
||||
UTIL_CHECK_NONEMPTY(FILE)
|
||||
AC_PATH_PROGS(LDD, ldd)
|
||||
|
||||
# First are all the simple required tools.
|
||||
UTIL_REQUIRE_PROGS(BASENAME, basename)
|
||||
# First are all the fundamental required tools.
|
||||
UTIL_REQUIRE_PROGS(BASH, bash)
|
||||
UTIL_REQUIRE_PROGS(CAT, cat)
|
||||
UTIL_REQUIRE_PROGS(CHMOD, chmod)
|
||||
UTIL_REQUIRE_PROGS(CMP, cmp)
|
||||
UTIL_REQUIRE_PROGS(COMM, comm)
|
||||
UTIL_REQUIRE_PROGS(CP, cp)
|
||||
UTIL_REQUIRE_PROGS(CUT, cut)
|
||||
UTIL_REQUIRE_PROGS(DATE, date)
|
||||
UTIL_REQUIRE_PROGS(DIFF, [gdiff diff])
|
||||
UTIL_REQUIRE_PROGS(DIRNAME, dirname)
|
||||
UTIL_REQUIRE_PROGS(DIFF, gdiff diff)
|
||||
UTIL_REQUIRE_PROGS(ECHO, echo)
|
||||
UTIL_REQUIRE_PROGS(EXPR, expr)
|
||||
UTIL_REQUIRE_PROGS(FILE, file)
|
||||
UTIL_REQUIRE_PROGS(FIND, find)
|
||||
UTIL_REQUIRE_PROGS(HEAD, head)
|
||||
UTIL_REQUIRE_PROGS(GUNZIP, gunzip)
|
||||
UTIL_REQUIRE_PROGS(GZIP, pigz gzip)
|
||||
UTIL_REQUIRE_PROGS(HEAD, head)
|
||||
UTIL_REQUIRE_PROGS(LN, ln)
|
||||
UTIL_REQUIRE_PROGS(LS, ls)
|
||||
# gmkdir is known to be safe for concurrent invocations with -p flag.
|
||||
UTIL_REQUIRE_PROGS(MKDIR, [gmkdir mkdir])
|
||||
UTIL_REQUIRE_PROGS(MKDIR, gmkdir mkdir)
|
||||
UTIL_REQUIRE_PROGS(MKTEMP, mktemp)
|
||||
UTIL_REQUIRE_PROGS(MV, mv)
|
||||
UTIL_REQUIRE_PROGS(NAWK, [nawk gawk awk])
|
||||
UTIL_REQUIRE_PROGS(AWK, gawk nawk awk)
|
||||
UTIL_REQUIRE_PROGS(PRINTF, printf)
|
||||
UTIL_REQUIRE_PROGS(READLINK, [greadlink readlink])
|
||||
UTIL_REQUIRE_PROGS(RM, rm)
|
||||
UTIL_REQUIRE_PROGS(RMDIR, rmdir)
|
||||
UTIL_REQUIRE_PROGS(SH, sh)
|
||||
@@ -70,33 +69,31 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
|
||||
UTIL_REQUIRE_PROGS(TOUCH, touch)
|
||||
UTIL_REQUIRE_PROGS(TR, tr)
|
||||
UTIL_REQUIRE_PROGS(UNAME, uname)
|
||||
UTIL_REQUIRE_PROGS(UNIQ, uniq)
|
||||
UTIL_REQUIRE_PROGS(WC, wc)
|
||||
UTIL_REQUIRE_PROGS(XARGS, xargs)
|
||||
|
||||
# Then required tools that require some special treatment.
|
||||
UTIL_REQUIRE_SPECIAL(AWK, [AC_PROG_AWK])
|
||||
UTIL_REQUIRE_SPECIAL(GREP, [AC_PROG_GREP])
|
||||
UTIL_REQUIRE_SPECIAL(EGREP, [AC_PROG_EGREP])
|
||||
UTIL_REQUIRE_SPECIAL(FGREP, [AC_PROG_FGREP])
|
||||
UTIL_REQUIRE_SPECIAL(SED, [AC_PROG_SED])
|
||||
|
||||
# Optional tools, we can do without them
|
||||
UTIL_LOOKUP_PROGS(DF, df)
|
||||
UTIL_LOOKUP_PROGS(NICE, nice)
|
||||
UTIL_LOOKUP_PROGS(READLINK, greadlink readlink)
|
||||
|
||||
# These are only needed on some platforms
|
||||
UTIL_LOOKUP_PROGS(PATHTOOL, cygpath wslpath)
|
||||
UTIL_LOOKUP_PROGS(LSB_RELEASE, lsb_release)
|
||||
UTIL_LOOKUP_PROGS(CMD, cmd.exe, $PATH:/cygdrive/c/windows/system32:/mnt/c/windows/system32:/c/windows/system32)
|
||||
|
||||
# For compare.sh only
|
||||
UTIL_LOOKUP_PROGS(CMP, cmp)
|
||||
UTIL_LOOKUP_PROGS(UNIQ, uniq)
|
||||
|
||||
# Always force rm.
|
||||
RM="$RM -f"
|
||||
|
||||
# pwd behaves differently on various platforms and some don't support the -L flag.
|
||||
# Always use the bash builtin pwd to get uniform behavior.
|
||||
THEPWDCMD=pwd
|
||||
|
||||
# These are not required on all platforms
|
||||
UTIL_PATH_PROGS(CYGPATH, cygpath)
|
||||
UTIL_PATH_PROGS(WSLPATH, wslpath)
|
||||
UTIL_PATH_PROGS(DF, df)
|
||||
UTIL_PATH_PROGS(CPIO, [cpio bsdcpio])
|
||||
UTIL_PATH_PROGS(NICE, nice)
|
||||
|
||||
UTIL_PATH_PROGS(LSB_RELEASE, lsb_release)
|
||||
UTIL_PATH_PROGS(CMD, cmd.exe, $PATH /cygdrive/c/Windows/System32 /mnt/c/Windows/System32)
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
@@ -131,10 +128,14 @@ AC_DEFUN([BASIC_CHECK_MAKE_VERSION],
|
||||
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
MAKE_EXPECTED_ENV='cygwin'
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys2"; then
|
||||
MAKE_EXPECTED_ENV='msys'
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
MAKE_EXPECTED_ENV='x86_64-.*-linux-gnu'
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl1" || test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
||||
if test "x$OPENJDK_BUILD_CPU" = "xaarch64"; then
|
||||
MAKE_EXPECTED_ENV='aarch64-.*-linux-gnu'
|
||||
else
|
||||
MAKE_EXPECTED_ENV='x86_64-.*-linux-gnu'
|
||||
fi
|
||||
else
|
||||
AC_MSG_ERROR([Unknown Windows environment])
|
||||
fi
|
||||
@@ -186,14 +187,14 @@ AC_DEFUN([BASIC_CHECK_MAKE_OUTPUT_SYNC],
|
||||
# Goes looking for a usable version of GNU make.
|
||||
AC_DEFUN([BASIC_CHECK_GNU_MAKE],
|
||||
[
|
||||
UTIL_SETUP_TOOL([MAKE],
|
||||
UTIL_SETUP_TOOL(MAKE,
|
||||
[
|
||||
# Try our hardest to locate a correct version of GNU make
|
||||
AC_PATH_PROGS(CHECK_GMAKE, gmake)
|
||||
UTIL_LOOKUP_PROGS(CHECK_GMAKE, gmake)
|
||||
BASIC_CHECK_MAKE_VERSION("$CHECK_GMAKE", [gmake in PATH])
|
||||
|
||||
if test "x$FOUND_MAKE" = x; then
|
||||
AC_PATH_PROGS(CHECK_MAKE, make)
|
||||
UTIL_LOOKUP_PROGS(CHECK_MAKE, make)
|
||||
BASIC_CHECK_MAKE_VERSION("$CHECK_MAKE", [make in PATH])
|
||||
fi
|
||||
|
||||
@@ -202,10 +203,10 @@ AC_DEFUN([BASIC_CHECK_GNU_MAKE],
|
||||
# We have a toolchain path, check that as well before giving up.
|
||||
OLD_PATH=$PATH
|
||||
PATH=$TOOLCHAIN_PATH:$PATH
|
||||
AC_PATH_PROGS(CHECK_TOOLSDIR_GMAKE, gmake)
|
||||
UTIL_LOOKUP_PROGS(CHECK_TOOLSDIR_GMAKE, gmake)
|
||||
BASIC_CHECK_MAKE_VERSION("$CHECK_TOOLSDIR_GMAKE", [gmake in tools-dir])
|
||||
if test "x$FOUND_MAKE" = x; then
|
||||
AC_PATH_PROGS(CHECK_TOOLSDIR_MAKE, make)
|
||||
UTIL_LOOKUP_PROGS(CHECK_TOOLSDIR_MAKE, make)
|
||||
BASIC_CHECK_MAKE_VERSION("$CHECK_TOOLSDIR_MAKE", [make in tools-dir])
|
||||
fi
|
||||
PATH=$OLD_PATH
|
||||
@@ -335,24 +336,17 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
||||
|
||||
# Non-required basic tools
|
||||
|
||||
UTIL_PATH_PROGS(LDD, ldd)
|
||||
if test "x$LDD" = "x"; then
|
||||
# List shared lib dependencies is used for
|
||||
# debug output and checking for forbidden dependencies.
|
||||
# We can build without it.
|
||||
LDD="true"
|
||||
fi
|
||||
UTIL_PATH_PROGS(READELF, [greadelf readelf])
|
||||
UTIL_PATH_PROGS(DOT, dot)
|
||||
UTIL_PATH_PROGS(HG, hg)
|
||||
UTIL_PATH_PROGS(GIT, git)
|
||||
UTIL_PATH_PROGS(STAT, stat)
|
||||
UTIL_PATH_PROGS(TIME, time)
|
||||
UTIL_PATH_PROGS(FLOCK, flock)
|
||||
UTIL_LOOKUP_PROGS(READELF, greadelf readelf)
|
||||
UTIL_LOOKUP_PROGS(DOT, dot)
|
||||
UTIL_LOOKUP_PROGS(HG, hg)
|
||||
UTIL_LOOKUP_PROGS(GIT, git)
|
||||
UTIL_LOOKUP_PROGS(STAT, stat)
|
||||
UTIL_LOOKUP_PROGS(TIME, time)
|
||||
UTIL_LOOKUP_PROGS(FLOCK, flock)
|
||||
# Dtrace is usually found in /usr/sbin, but that directory may not
|
||||
# be in the user path.
|
||||
UTIL_PATH_PROGS(DTRACE, dtrace, $PATH:/usr/sbin)
|
||||
UTIL_PATH_PROGS(PATCH, [gpatch patch])
|
||||
UTIL_LOOKUP_PROGS(DTRACE, dtrace, $PATH:/usr/sbin)
|
||||
UTIL_LOOKUP_PROGS(PATCH, gpatch patch)
|
||||
# Check if it's GNU time
|
||||
IS_GNU_TIME=`$TIME --version 2>&1 | $GREP 'GNU time'`
|
||||
if test "x$IS_GNU_TIME" != x; then
|
||||
@@ -366,7 +360,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
||||
UTIL_REQUIRE_PROGS(DSYMUTIL, dsymutil)
|
||||
UTIL_REQUIRE_PROGS(MIG, mig)
|
||||
UTIL_REQUIRE_PROGS(XATTR, xattr)
|
||||
UTIL_PATH_PROGS(CODESIGN, codesign)
|
||||
UTIL_LOOKUP_PROGS(CODESIGN, codesign)
|
||||
|
||||
if test "x$CODESIGN" != "x"; then
|
||||
# Check for user provided code signing identity.
|
||||
@@ -407,7 +401,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
||||
UTIL_REQUIRE_PROGS(SETFILE, SetFile)
|
||||
fi
|
||||
if ! test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
||||
UTIL_REQUIRE_BUILTIN_PROGS(ULIMIT, ulimit)
|
||||
UTIL_REQUIRE_PROGS(ULIMIT, ulimit)
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -453,7 +447,7 @@ AC_DEFUN_ONCE([BASIC_CHECK_BASH_OPTIONS],
|
||||
#
|
||||
AC_DEFUN_ONCE([BASIC_SETUP_PANDOC],
|
||||
[
|
||||
UTIL_PATH_PROGS(PANDOC, pandoc)
|
||||
UTIL_LOOKUP_PROGS(PANDOC, pandoc)
|
||||
|
||||
PANDOC_MARKDOWN_FLAG="markdown"
|
||||
if test -n "$PANDOC"; then
|
||||
|
||||
@@ -24,97 +24,160 @@
|
||||
#
|
||||
|
||||
# Setup basic configuration paths, and platform-specific stuff related to PATHs.
|
||||
AC_DEFUN([BASIC_CHECK_PATHS_WINDOWS],
|
||||
AC_DEFUN([BASIC_SETUP_PATHS_WINDOWS],
|
||||
[
|
||||
SRC_ROOT_LENGTH=`$THEPWDCMD -L|$WC -m`
|
||||
if test $SRC_ROOT_LENGTH -gt 100; then
|
||||
AC_MSG_ERROR([Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported])
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
# Clarify if it is wsl1 or wsl2, and use that as OS_ENV from this point forward
|
||||
$PATHTOOL -w / > /dev/null 2>&1
|
||||
if test $? -ne 0; then
|
||||
# Without Windows access to our root, it's definitely WSL1
|
||||
OPENJDK_BUILD_OS_ENV=windows.wsl1
|
||||
else
|
||||
# This test is not guaranteed, but there is no documented way of
|
||||
# distinguishing between WSL1 and WSL2. Assume only WSL2 has WSL_INTEROP
|
||||
# in /run/WSL
|
||||
if test -d "/run/WSL" ; then
|
||||
OPENJDK_BUILD_OS_ENV=windows.wsl2
|
||||
else
|
||||
OPENJDK_BUILD_OS_ENV=windows.wsl1
|
||||
fi
|
||||
fi
|
||||
# This is a bit silly since we really don't have a target env as such,
|
||||
# but do it to keep consistency.
|
||||
OPENJDK_TARGET_OS_ENV=$OPENJDK_BUILD_OS_ENV
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys2"; then
|
||||
# Must be done prior to calling any commands to avoid mangling of command line
|
||||
export MSYS2_ARG_CONV_EXCL="*"
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([Windows environment type])
|
||||
WINENV_VENDOR=${OPENJDK_BUILD_OS_ENV#windows.}
|
||||
AC_MSG_RESULT([$WINENV_VENDOR])
|
||||
|
||||
if test "x$WINENV_VENDOR" = x; then
|
||||
AC_MSG_ERROR([Unknown Windows environment. Neither cygwin, msys2, wsl1 nor wsl2 was detected.])
|
||||
fi
|
||||
|
||||
if test "x$PATHTOOL" = x; then
|
||||
AC_MSG_ERROR([Incorrect $WINENV_VENDOR installation. Neither cygpath nor wslpath was found])
|
||||
fi
|
||||
|
||||
if test "x$CMD" = x; then
|
||||
AC_MSG_ERROR([Incorrect Windows/$WINENV_VENDOR setup. Could not locate cmd.exe])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([$WINENV_VENDOR drive prefix])
|
||||
WINENV_PREFIX=`$PATHTOOL -u c:/ | $SED -e 's!/c/!!'`
|
||||
AC_MSG_RESULT(['$WINENV_PREFIX'])
|
||||
AC_SUBST(WINENV_PREFIX)
|
||||
|
||||
AC_MSG_CHECKING([$WINENV_VENDOR root directory as Windows path])
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" != "xwindows.wsl1"; then
|
||||
WINENV_ROOT=`$PATHTOOL -w / 2> /dev/null`
|
||||
# msys2 has a trailing backslash; strip it
|
||||
WINENV_ROOT=${WINENV_ROOT%\\}
|
||||
else
|
||||
WINENV_ROOT='[[unavailable]]'
|
||||
fi
|
||||
AC_MSG_RESULT(['$WINENV_ROOT'])
|
||||
AC_SUBST(WINENV_ROOT)
|
||||
|
||||
AC_MSG_CHECKING([$WINENV_VENDOR temp directory])
|
||||
WINENV_TEMP_DIR=$($PATHTOOL -u $($CMD /q /c echo %TEMP% 2> /dev/null) | $TR -d '\r\n')
|
||||
AC_MSG_RESULT([$WINENV_TEMP_DIR])
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
||||
# Don't trust the current directory for WSL2, but change to an OK temp dir
|
||||
cd "$WINENV_TEMP_DIR"
|
||||
# Bring along confdefs.h or autoconf gets all confused
|
||||
cp "$CONFIGURE_START_DIR/confdefs.h" "$WINENV_TEMP_DIR"
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([$WINENV_VENDOR release])
|
||||
WINENV_UNAME_RELEASE=`$UNAME -r`
|
||||
AC_MSG_RESULT([$WINENV_UNAME_RELEASE])
|
||||
|
||||
AC_MSG_CHECKING([$WINENV_VENDOR version])
|
||||
WINENV_UNAME_VERSION=`$UNAME -v`
|
||||
AC_MSG_RESULT([$WINENV_UNAME_VERSION])
|
||||
|
||||
WINENV_VERSION="$WINENV_UNAME_RELEASE, $WINENV_UNAME_VERSION"
|
||||
|
||||
AC_MSG_CHECKING([Windows version])
|
||||
|
||||
# We must change directory to one guaranteed to work, otherwise WSL1
|
||||
# can complain (since it does not have a WINENV_ROOT so it can't access
|
||||
# unix-style paths from Windows.
|
||||
# Additional [] needed to keep m4 from mangling shell constructs.
|
||||
[ WINDOWS_VERSION=`$CMD /c ver.exe | $EGREP -o '([0-9]+\.)+[0-9]+'` ]
|
||||
[ WINDOWS_VERSION=`cd $WINENV_TEMP_DIR && $CMD /c ver | $EGREP -o '([0-9]+\.)+[0-9]+'` ]
|
||||
AC_MSG_RESULT([$WINDOWS_VERSION])
|
||||
|
||||
# Additional handling per specific env
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
AC_MSG_CHECKING([cygwin release])
|
||||
CYGWIN_RELEASE=`$UNAME -r`
|
||||
AC_MSG_RESULT([$CYGWIN_RELEASE])
|
||||
|
||||
AC_MSG_CHECKING([cygwin version])
|
||||
CYGWIN_VERSION=`$UNAME -v`
|
||||
AC_MSG_RESULT([$CYGWIN_VERSION])
|
||||
|
||||
# Additional [] needed to keep m4 from mangling shell constructs.
|
||||
[ CYGWIN_VERSION_OLD=`$ECHO $CYGWIN_RELEASE | $GREP -e '^1\.[0-6]'` ]
|
||||
[ CYGWIN_VERSION_OLD=`$ECHO $WINENV_UNAME_RELEASE | $GREP -e '^1\.[0-6]'` ]
|
||||
if test "x$CYGWIN_VERSION_OLD" != x; then
|
||||
AC_MSG_NOTICE([Your cygwin is too old. You are running $CYGWIN_RELEASE, but at least cygwin 1.7 is required. Please upgrade.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
|
||||
WINDOWS_ENV_VENDOR='cygwin'
|
||||
WINDOWS_ENV_VERSION="$CYGWIN_RELEASE, $CYGWIN_VERSION"
|
||||
|
||||
if test "x$CYGPATH" = x; then
|
||||
AC_MSG_ERROR([Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path])
|
||||
if test "x$LDD" = x; then
|
||||
AC_MSG_ERROR([ldd is missing, which is needed on cygwin])
|
||||
fi
|
||||
AC_MSG_CHECKING([cygwin root directory as unix-style path])
|
||||
# The cmd output ends with Windows line endings (CR/LF)
|
||||
cygwin_winpath_root=`cd / ; cmd /c cd | $TR -d '\r\n'`
|
||||
# Force cygpath to report the proper root by including a trailing space, and then stripping it off again.
|
||||
CYGWIN_ROOT_PATH=`$CYGPATH -u "$cygwin_winpath_root " | $CUT -f 1 -d " "`
|
||||
AC_MSG_RESULT([$CYGWIN_ROOT_PATH])
|
||||
WINDOWS_ENV_ROOT_PATH="$CYGWIN_ROOT_PATH"
|
||||
test_cygdrive_prefix=`$ECHO $CYGWIN_ROOT_PATH | $GREP ^/cygdrive/`
|
||||
if test "x$test_cygdrive_prefix" = x; then
|
||||
AC_MSG_ERROR([Your cygdrive prefix is not /cygdrive. This is currently not supported. Change with mount -c.])
|
||||
WINENV_MARKER_DLL=cygwin1.dll
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys2"; then
|
||||
if test "x$LDD" = x; then
|
||||
AC_MSG_ERROR([ldd is missing, which is needed on msys2])
|
||||
fi
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
AC_MSG_CHECKING([msys release])
|
||||
MSYS_RELEASE=`$UNAME -r`
|
||||
AC_MSG_RESULT([$MSYS_RELEASE])
|
||||
|
||||
AC_MSG_CHECKING([msys version])
|
||||
MSYS_VERSION=`$UNAME -v`
|
||||
AC_MSG_RESULT([$MSYS_VERSION])
|
||||
|
||||
WINDOWS_ENV_VENDOR='msys'
|
||||
WINDOWS_ENV_VERSION="$MSYS_RELEASE, $MSYS_VERSION"
|
||||
|
||||
AC_MSG_CHECKING([msys root directory as unix-style path])
|
||||
# The cmd output ends with Windows line endings (CR/LF), the grep command will strip that away
|
||||
MSYS_ROOT_PATH=`cd / ; cmd /c cd | $GREP ".*"`
|
||||
UTIL_REWRITE_AS_UNIX_PATH(MSYS_ROOT_PATH)
|
||||
AC_MSG_RESULT([$MSYS_ROOT_PATH])
|
||||
WINDOWS_ENV_ROOT_PATH="$MSYS_ROOT_PATH"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
|
||||
AC_MSG_CHECKING([WSL kernel version])
|
||||
WSL_KERNEL_VERSION=`$UNAME -v`
|
||||
AC_MSG_RESULT([$WSL_KERNEL_VERSION])
|
||||
|
||||
AC_MSG_CHECKING([WSL kernel release])
|
||||
WSL_KERNEL_RELEASE=`$UNAME -r`
|
||||
AC_MSG_RESULT([$WSL_KERNEL_RELEASE])
|
||||
|
||||
AC_MSG_CHECKING([WSL distribution])
|
||||
WINENV_MARKER_DLL=msys-2.0.dll
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl1" || test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
||||
AC_MSG_CHECKING([wsl distribution])
|
||||
WSL_DISTRIBUTION=`$LSB_RELEASE -d | sed 's/Description:\t//'`
|
||||
AC_MSG_RESULT([$WSL_DISTRIBUTION])
|
||||
|
||||
WINDOWS_ENV_VENDOR='wsl'
|
||||
WINDOWS_ENV_VERSION="$WSL_KERNEL_RELEASE, $WSL_KERNEL_VERSION ($WSL_DISTRIBUTION)"
|
||||
else
|
||||
AC_MSG_ERROR([Unknown Windows environment. Neither cygwin, msys, nor wsl was detected.])
|
||||
WINENV_VERSION="$WINENV_VERSION ($WSL_DISTRIBUTION)"
|
||||
|
||||
# Tell WSL to automatically translate the PATH variable
|
||||
export WSLENV=PATH/l
|
||||
fi
|
||||
|
||||
# Test if windows or unix (cygwin/msys) find is first in path.
|
||||
# Chicken and egg: FIXPATH is needed for UTIL_FIXUP_PATH to work. So for the
|
||||
# first run we use the auto-detect abilities of fixpath.sh.
|
||||
FIXPATH_DIR="$TOPDIR/make/scripts"
|
||||
FIXPATH="$BASH $FIXPATH_DIR/fixpath.sh exec"
|
||||
FIXPATH_BASE="$BASH $FIXPATH_DIR/fixpath.sh"
|
||||
FIXPATH_SAVED_PATH="$PATH"
|
||||
UTIL_FIXUP_PATH(FIXPATH_DIR)
|
||||
|
||||
# Now we can use FIXPATH_DIR to rewrite path to fixpath.sh properly.
|
||||
if test "x$WINENV_PREFIX" = x; then
|
||||
# On msys the prefix is empty, but we need to pass something to have the
|
||||
# fixpath.sh options parser happy.
|
||||
WINENV_PREFIX_ARG="NONE"
|
||||
else
|
||||
WINENV_PREFIX_ARG="$WINENV_PREFIX"
|
||||
fi
|
||||
FIXPATH_ARGS="-e $PATHTOOL -p $WINENV_PREFIX_ARG -r ${WINENV_ROOT//\\/\\\\} -t $WINENV_TEMP_DIR -c $CMD -q"
|
||||
FIXPATH_BASE="$BASH $FIXPATH_DIR/fixpath.sh $FIXPATH_ARGS"
|
||||
FIXPATH="$FIXPATH_BASE exec"
|
||||
|
||||
AC_SUBST(FIXPATH_BASE)
|
||||
AC_SUBST(FIXPATH)
|
||||
|
||||
SRC_ROOT_LENGTH=`$ECHO "$TOPDIR" | $WC -m`
|
||||
if test $SRC_ROOT_LENGTH -gt 100; then
|
||||
AC_MSG_ERROR([Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported])
|
||||
fi
|
||||
|
||||
# Test if windows or unix "find" is first in path.
|
||||
AC_MSG_CHECKING([what kind of 'find' is first on the PATH])
|
||||
FIND_BINARY_OUTPUT=`find --version 2>&1`
|
||||
if test "x`echo $FIND_BINARY_OUTPUT | $GREP GNU`" != x; then
|
||||
AC_MSG_RESULT([unix style])
|
||||
elif test "x`echo $FIND_BINARY_OUTPUT | $GREP FIND`" != x; then
|
||||
AC_MSG_RESULT([Windows])
|
||||
AC_MSG_NOTICE([Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools.])
|
||||
AC_MSG_NOTICE([Your path contains Windows tools (C:\Windows\system32) before your unix tools.])
|
||||
AC_MSG_NOTICE([This will not work. Please correct and make sure /usr/bin (or similar) is first in path.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
else
|
||||
@@ -123,73 +186,39 @@ AC_DEFUN([BASIC_CHECK_PATHS_WINDOWS],
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
|
||||
# Verify that the directory is usable on Windows
|
||||
AC_DEFUN([BASIC_WINDOWS_VERIFY_DIR],
|
||||
[
|
||||
# When using cygwin or msys, we need a wrapper binary that renames
|
||||
# /cygdrive/c/ arguments into c:/ arguments and peeks into
|
||||
# @files and rewrites these too! This wrapper binary is
|
||||
# called fixpath.
|
||||
FIXPATH=
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows; then
|
||||
AC_MSG_CHECKING([if fixpath can be created])
|
||||
FIXPATH_SRC="$TOPDIR/make/src/native/fixpath.c"
|
||||
FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
|
||||
FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
|
||||
# Important to keep the .exe suffix on Cygwin for Hotspot makefiles
|
||||
FIXPATH="$FIXPATH_BIN -c"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then
|
||||
# Take all collected prefixes and turn them into a -m/c/foo@/c/bar@... command line
|
||||
# @ was chosen as separator to minimize risk of other tools messing around with it
|
||||
all_unique_prefixes=`echo "${all_fixpath_prefixes@<:@@@:>@}" \
|
||||
| tr ' ' '\n' | $GREP '^/./' | $SORT | $UNIQ`
|
||||
fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'`
|
||||
FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.wsl; then
|
||||
FIXPATH="$FIXPATH_BIN -w"
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl1"; then
|
||||
OUTPUTDIR_WIN=`$FIXPATH_BASE print $1`
|
||||
if test "x$OUTPUTDIR_WIN" = x; then
|
||||
AC_MSG_NOTICE([For wsl1, the $2 dir must be located on a Windows drive. Please see doc/building.md for details.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
FIXPATH_SRC_W="$FIXPATH_SRC"
|
||||
FIXPATH_BIN_W="$FIXPATH_BIN"
|
||||
$RM -rf $FIXPATH_BIN $FIXPATH_DIR
|
||||
$MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_SRC_W])
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_BIN_W])
|
||||
cd $FIXPATH_DIR
|
||||
$CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
|
||||
cd $CONFIGURE_START_DIR
|
||||
|
||||
if test ! -x $FIXPATH_BIN; then
|
||||
AC_MSG_RESULT([no])
|
||||
cat $FIXPATH_DIR/fixpath1.log
|
||||
AC_MSG_ERROR([Could not create $FIXPATH_BIN])
|
||||
fi
|
||||
AC_MSG_RESULT([yes])
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
OLD_WSLENV="$WSLENV"
|
||||
WSLENV=`$ECHO $WSLENV | $SED 's/PATH\/l://'`
|
||||
UTIL_APPEND_TO_PATH(WSLENV, "FIXPATH_PATH")
|
||||
export WSLENV
|
||||
export FIXPATH_PATH=$VS_PATH_WINDOWS
|
||||
AC_MSG_NOTICE([FIXPATH_PATH is $FIXPATH_PATH])
|
||||
AC_MSG_NOTICE([Rewriting WSLENV from $OLD_WSLENV to $WSLENV])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([if fixpath.exe works])
|
||||
cd $FIXPATH_DIR
|
||||
$FIXPATH $CC $FIXPATH_SRC -Fe$FIXPATH_DIR/fixpath2.exe \
|
||||
> $FIXPATH_DIR/fixpath2.log 2>&1
|
||||
cd $CONFIGURE_START_DIR
|
||||
if test ! -x $FIXPATH_DIR/fixpath2.exe; then
|
||||
AC_MSG_RESULT([no])
|
||||
cat $FIXPATH_DIR/fixpath2.log
|
||||
AC_MSG_ERROR([fixpath did not work!])
|
||||
fi
|
||||
AC_MSG_RESULT([yes])
|
||||
|
||||
FIXPATH_DETACH_FLAG="--detach"
|
||||
fi
|
||||
|
||||
AC_SUBST(FIXPATH)
|
||||
AC_SUBST(FIXPATH_DETACH_FLAG)
|
||||
])
|
||||
|
||||
# Create fixpath wrapper
|
||||
AC_DEFUN([BASIC_WINDOWS_FINALIZE_FIXPATH],
|
||||
[
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows; then
|
||||
FIXPATH_CMDLINE=". $TOPDIR/make/scripts/fixpath.sh -e $PATHTOOL \
|
||||
-p $WINENV_PREFIX_ARG -r ${WINENV_ROOT//\\/\\\\} -t $WINENV_TEMP_DIR \
|
||||
-c $CMD -q"
|
||||
$ECHO > $OUTPUTDIR/fixpath '#!/bin/bash'
|
||||
$ECHO >> $OUTPUTDIR/fixpath export PATH='"[$]PATH:'$PATH'"'
|
||||
$ECHO >> $OUTPUTDIR/fixpath $FIXPATH_CMDLINE '"[$]@"'
|
||||
$CHMOD +x $OUTPUTDIR/fixpath
|
||||
FIXPATH_BASE="$OUTPUTDIR/fixpath"
|
||||
FIXPATH="$FIXPATH_BASE exec"
|
||||
fi
|
||||
])
|
||||
|
||||
# Platform-specific finalization
|
||||
AC_DEFUN([BASIC_WINDOWS_FINALIZE],
|
||||
[
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl2"; then
|
||||
# Change back from temp dir
|
||||
cd $CONFIGURE_START_DIR
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -63,19 +63,23 @@ AC_DEFUN([BOOTJDK_DO_CHECK],
|
||||
# If previous step claimed to have found a JDK, check it to see if it seems to be valid.
|
||||
if test "x$BOOT_JDK_FOUND" = xmaybe; then
|
||||
# Do we have a bin/java?
|
||||
if test ! -x "$BOOT_JDK/bin/java$EXE_SUFFIX"; then
|
||||
if test ! -x "$BOOT_JDK/bin/java" && test ! -x "$BOOT_JDK/bin/java.exe"; then
|
||||
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring])
|
||||
BOOT_JDK_FOUND=no
|
||||
else
|
||||
# Do we have a bin/javac?
|
||||
if test ! -x "$BOOT_JDK/bin/javac$EXE_SUFFIX"; then
|
||||
if test ! -x "$BOOT_JDK/bin/javac" && test ! -x "$BOOT_JDK/bin/javac.exe"; then
|
||||
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring])
|
||||
AC_MSG_NOTICE([(This might be an JRE instead of an JDK)])
|
||||
BOOT_JDK_FOUND=no
|
||||
else
|
||||
# Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
|
||||
java_to_test="$BOOT_JDK/bin/java"
|
||||
UTIL_FIXUP_EXECUTABLE(java_to_test)
|
||||
BOOT_JDK_VERSION_OUTPUT=`$java_to_test $USER_BOOT_JDK_OPTIONS -version 2>&1`
|
||||
# Additional [] needed to keep m4 from mangling shell constructs.
|
||||
[ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java$EXE_SUFFIX" $USER_BOOT_JDK_OPTIONS -version 2>&1 | $AWK '/version \"[0-9a-zA-Z\._\-]+\"/{print $ 0; exit;}'` ]
|
||||
[ BOOT_JDK_VERSION=`echo $BOOT_JDK_VERSION_OUTPUT | $AWK '/version "[0-9a-zA-Z\._\-]+"/ {print $ 0; exit;}'` ]
|
||||
|
||||
if [ [[ "$BOOT_JDK_VERSION" =~ "Picked up" ]] ]; then
|
||||
AC_MSG_NOTICE([You have _JAVA_OPTIONS or JAVA_TOOL_OPTIONS set. This can mess up the build. Please use --with-boot-jdk-jvmargs instead.])
|
||||
AC_MSG_NOTICE([Java reports: "$BOOT_JDK_VERSION".])
|
||||
@@ -91,7 +95,12 @@ AC_DEFUN([BOOTJDK_DO_CHECK],
|
||||
# Extra M4 quote needed to protect [] in grep expression.
|
||||
[FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION \
|
||||
| $EGREP "\"(${DEFAULT_ACCEPTABLE_BOOT_VERSIONS// /|})([\.+-].*)?\""`]
|
||||
if test "x$FOUND_CORRECT_VERSION" = x; then
|
||||
|
||||
if test "x$BOOT_JDK_VERSION" = x; then
|
||||
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is not a working JDK; ignoring])
|
||||
AC_MSG_NOTICE([Output from java -version was: $BOOT_JDK_VERSION_OUTPUT])
|
||||
BOOT_JDK_FOUND=no
|
||||
elif test "x$FOUND_CORRECT_VERSION" = x; then
|
||||
AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring])
|
||||
AC_MSG_NOTICE([(Your Boot JDK version must be one of: $DEFAULT_ACCEPTABLE_BOOT_VERSIONS)])
|
||||
BOOT_JDK_FOUND=no
|
||||
@@ -102,7 +111,9 @@ AC_DEFUN([BOOTJDK_DO_CHECK],
|
||||
AC_MSG_CHECKING([for Boot JDK])
|
||||
AC_MSG_RESULT([$BOOT_JDK])
|
||||
AC_MSG_CHECKING([Boot JDK version])
|
||||
BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java$EXE_SUFFIX" $USER_BOOT_JDK_OPTIONS -version 2>&1 | $TR '\n\r' ' '`
|
||||
BOOT_JDK_VERSION=`$java_to_test $USER_BOOT_JDK_OPTIONS -version 2>&1 | $TR -d '\r'`
|
||||
# This is not a no-op; it will portably convert newline to space
|
||||
BOOT_JDK_VERSION=`$ECHO $BOOT_JDK_VERSION`
|
||||
AC_MSG_RESULT([$BOOT_JDK_VERSION])
|
||||
fi # end check jdk version
|
||||
fi # end check javac
|
||||
@@ -151,8 +162,8 @@ AC_DEFUN([BOOTJDK_CHECK_JAVA_HOME],
|
||||
[
|
||||
if test "x$JAVA_HOME" != x; then
|
||||
JAVA_HOME_PROCESSED="$JAVA_HOME"
|
||||
UTIL_FIXUP_PATH(JAVA_HOME_PROCESSED)
|
||||
if test ! -d "$JAVA_HOME_PROCESSED"; then
|
||||
UTIL_FIXUP_PATH(JAVA_HOME_PROCESSED, NOFAIL)
|
||||
if test "x$JAVA_HOME_PROCESSED" = x || test ! -d "$JAVA_HOME_PROCESSED"; then
|
||||
AC_MSG_NOTICE([Your JAVA_HOME points to a non-existing directory!])
|
||||
else
|
||||
# Aha, the user has set a JAVA_HOME
|
||||
@@ -167,8 +178,8 @@ AC_DEFUN([BOOTJDK_CHECK_JAVA_HOME],
|
||||
# Test: Is there a java or javac in the PATH, which is a symlink to the JDK?
|
||||
AC_DEFUN([BOOTJDK_CHECK_JAVA_IN_PATH_IS_SYMLINK],
|
||||
[
|
||||
AC_PATH_PROG(JAVAC_CHECK, javac)
|
||||
AC_PATH_PROG(JAVA_CHECK, java)
|
||||
UTIL_LOOKUP_PROGS(JAVAC_CHECK, javac, , NOFIXPATH)
|
||||
UTIL_LOOKUP_PROGS(JAVA_CHECK, java, , NOFIXPATH)
|
||||
BINARY="$JAVAC_CHECK"
|
||||
if test "x$JAVAC_CHECK" = x; then
|
||||
BINARY="$JAVA_CHECK"
|
||||
@@ -207,9 +218,9 @@ AC_DEFUN([BOOTJDK_CHECK_MACOSX_JAVA_LOCATOR],
|
||||
# First check at user selected default
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME()])
|
||||
# If that did not work out (e.g. too old), try explicit versions instead
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.9])])
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.8])])
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.7])])
|
||||
for ver in $DEFAULT_ACCEPTABLE_BOOT_VERSIONS ; do
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v $ver])])
|
||||
done
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -242,8 +253,10 @@ AC_DEFUN([BOOTJDK_FIND_BEST_JDK_IN_WINDOWS_VIRTUAL_DIRECTORY],
|
||||
[
|
||||
if test "x[$]$1" != x; then
|
||||
VIRTUAL_DIR="[$]$1/Java"
|
||||
UTIL_REWRITE_AS_UNIX_PATH(VIRTUAL_DIR)
|
||||
BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY($VIRTUAL_DIR)
|
||||
UTIL_FIXUP_PATH(VIRTUAL_DIR, NOFAIL)
|
||||
if test "x$VIRTUAL_DIR" != x; then
|
||||
BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY($VIRTUAL_DIR)
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -270,16 +283,17 @@ AC_DEFUN([BOOTJDK_CHECK_WELL_KNOWN_LOCATIONS],
|
||||
AC_DEFUN([BOOTJDK_CHECK_TOOL_IN_BOOTJDK],
|
||||
[
|
||||
# Use user overridden value if available, otherwise locate tool in the Boot JDK.
|
||||
UTIL_SETUP_TOOL($1,
|
||||
UTIL_REQUIRE_SPECIAL($1,
|
||||
[
|
||||
AC_MSG_CHECKING([for $2 in Boot JDK])
|
||||
AC_MSG_CHECKING([for $2 [[Boot JDK]]])
|
||||
$1=$BOOT_JDK/bin/$2
|
||||
if test ! -x [$]$1; then
|
||||
if test ! -x [$]$1 && test ! -x [$]$1.exe; then
|
||||
AC_MSG_RESULT(not found)
|
||||
AC_MSG_NOTICE([Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk])
|
||||
AC_MSG_ERROR([Could not find $2 in the Boot JDK])
|
||||
fi
|
||||
AC_MSG_RESULT(ok)
|
||||
AC_MSG_RESULT(\[$]BOOT_JDK/bin/$2)
|
||||
UTIL_FIXUP_EXECUTABLE($1)
|
||||
AC_SUBST($1)
|
||||
])
|
||||
])
|
||||
@@ -313,12 +327,12 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK],
|
||||
AC_MSG_ERROR([The path given by --with-boot-jdk does not contain a valid Boot JDK])
|
||||
fi
|
||||
|
||||
# Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home?
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_MACOSX_JAVA_LOCATOR])
|
||||
|
||||
# Test: Is $JAVA_HOME set?
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_JAVA_HOME])
|
||||
|
||||
# Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home?
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_MACOSX_JAVA_LOCATOR])
|
||||
|
||||
# Test: Is there a java or javac in the PATH, which is a symlink to the JDK?
|
||||
BOOTJDK_DO_CHECK([BOOTJDK_CHECK_JAVA_IN_PATH_IS_SYMLINK])
|
||||
|
||||
@@ -336,11 +350,10 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK],
|
||||
AC_SUBST(BOOT_JDK)
|
||||
|
||||
# Setup tools from the Boot JDK.
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA, java$EXE_SUFFIX)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC, javac$EXE_SUFFIX)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVADOC, javadoc$EXE_SUFFIX)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR, jar$EXE_SUFFIX)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JARSIGNER, jarsigner$EXE_SUFFIX)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVA, java)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVAC, javac)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAVADOC, javadoc)
|
||||
BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JAR, jar)
|
||||
|
||||
# Finally, set some other options...
|
||||
|
||||
@@ -353,7 +366,7 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK],
|
||||
AC_SUBST(BOOT_JDK_SOURCETARGET)
|
||||
|
||||
# Check if the boot jdk is 32 or 64 bit
|
||||
if "$JAVA" -version 2>&1 | $GREP -q "64-Bit"; then
|
||||
if $JAVA -version 2>&1 | $GREP -q "64-Bit"; then
|
||||
BOOT_JDK_BITS="64"
|
||||
else
|
||||
BOOT_JDK_BITS="32"
|
||||
@@ -368,7 +381,7 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK],
|
||||
|
||||
if test "x$boot_jdk_cds_args" != x; then
|
||||
# Try creating a CDS archive
|
||||
"$JAVA" $boot_jdk_cds_args -Xshare:dump > /dev/null 2>&1
|
||||
$JAVA $boot_jdk_cds_args -Xshare:dump > /dev/null 2>&1
|
||||
if test $? -eq 0; then
|
||||
BOOTJDK_USE_LOCAL_CDS=true
|
||||
AC_MSG_RESULT([yes, created])
|
||||
@@ -516,7 +529,7 @@ AC_DEFUN([BOOTJDK_CHECK_BUILD_JDK],
|
||||
else
|
||||
# Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
|
||||
# Additional [] needed to keep m4 from mangling shell constructs.
|
||||
[ BUILD_JDK_VERSION=`"$BUILD_JDK/bin/java" -version 2>&1 | $AWK '/version \"[0-9a-zA-Z\._\-]+\"/{print $ 0; exit;}'` ]
|
||||
[ BUILD_JDK_VERSION=`"$BUILD_JDK/bin/java" -version 2>&1 | $AWK '/version "[0-9a-zA-Z\._\-]+"/ {print $ 0; exit;}'` ]
|
||||
|
||||
# Extra M4 quote needed to protect [] in grep expression.
|
||||
[FOUND_CORRECT_VERSION=`echo $BUILD_JDK_VERSION | $EGREP "\"$VERSION_FEATURE([\.+-].*)?\""`]
|
||||
@@ -574,8 +587,12 @@ AC_DEFUN([BOOTJDK_SETUP_BUILD_JDK],
|
||||
fi
|
||||
fi
|
||||
|
||||
# Since these tools do not yet exist, we cannot use UTIL_FIXUP_EXECUTABLE to
|
||||
# detect the need of fixpath
|
||||
JMOD="$BUILD_JDK/bin/jmod"
|
||||
UTIL_ADD_FIXPATH(JMOD)
|
||||
JLINK="$BUILD_JDK/bin/jlink"
|
||||
UTIL_ADD_FIXPATH(JLINK)
|
||||
AC_SUBST(JMOD)
|
||||
AC_SUBST(JLINK)
|
||||
|
||||
|
||||
@@ -28,14 +28,6 @@
|
||||
# First include the real base spec.gmk file
|
||||
include @SPEC@
|
||||
|
||||
# Check that the user did not try to specify a different java to use for compiling.
|
||||
# On windows we need to account for fixpath being first word.
|
||||
ifeq ($(firstword $(JAVA)),$(FIXPATH))
|
||||
JAVA_EXEC_POS=2
|
||||
else
|
||||
JAVA_EXEC_POS=1
|
||||
endif
|
||||
|
||||
# Override specific values to do a boot cycle build
|
||||
|
||||
# Use a different Boot JDK
|
||||
@@ -47,10 +39,9 @@ OUTPUTDIR:=$(OLD_OUTPUTDIR)/bootcycle-build
|
||||
# No spaces in patsubst to avoid leading space in variable
|
||||
JAVAC_SERVER_DIR:=$(patsubst $(OLD_OUTPUTDIR)%,$(OUTPUTDIR)%,$(JAVAC_SERVER_DIR))
|
||||
|
||||
JAVA_CMD:=$(BOOT_JDK)/bin/java
|
||||
JAVAC_CMD:=$(BOOT_JDK)/bin/javac
|
||||
JAR_CMD:=$(BOOT_JDK)/bin/jar
|
||||
JARSIGNER_CMD:=$(BOOT_JDK)/bin/jarsigner
|
||||
JAVA_CMD := $(FIXPATH) $(BOOT_JDK)/bin/java
|
||||
JAVAC_CMD := $(FIXPATH) $(BOOT_JDK)/bin/javac
|
||||
JAR_CMD := $(FIXPATH) $(BOOT_JDK)/bin/jar
|
||||
# The bootcycle JVM arguments may differ from the original boot jdk.
|
||||
JAVA_FLAGS_BIG := @BOOTCYCLE_JVM_ARGS_BIG@
|
||||
# Any CDS settings generated for the bootjdk are invalid in the bootcycle build.
|
||||
@@ -58,5 +49,3 @@ JAVA_FLAGS_BIG := @BOOTCYCLE_JVM_ARGS_BIG@
|
||||
# settings for CDS.
|
||||
JAVA_FLAGS := $(filter-out -XX:SharedArchiveFile% -Xshare%, $(JAVA_FLAGS))
|
||||
|
||||
# Pandoc cannot be used without the jjs plugin, which was removed with Nashorn.
|
||||
ENABLE_PANDOC := false
|
||||
|
||||
4
make/autoconf/build-aux/config.guess
vendored
4
make/autoconf/build-aux/config.guess
vendored
@@ -56,11 +56,11 @@ if test $? = 0; then
|
||||
fi
|
||||
|
||||
# Test and fix wsl
|
||||
echo $OUT | grep x86_64-unknown-linux-gnu > /dev/null 2> /dev/null
|
||||
echo $OUT | grep unknown-linux-gnu > /dev/null 2> /dev/null
|
||||
if test $? = 0; then
|
||||
uname -r | grep -i microsoft > /dev/null 2> /dev/null
|
||||
if test $? = 0; then
|
||||
OUT="x86_64-pc-wsl"
|
||||
OUT=`echo $OUT | sed -e 's/unknown-linux-gnu/pc-wsl/'`
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
12
make/autoconf/build-aux/config.sub
vendored
12
make/autoconf/build-aux/config.sub
vendored
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -35,7 +35,13 @@ if echo $* | grep linux-musl >/dev/null ; then
|
||||
fi
|
||||
|
||||
# Allow wsl
|
||||
if echo $* | grep x86_64-pc-wsl >/dev/null ; then
|
||||
if echo $* | grep pc-wsl >/dev/null ; then
|
||||
echo $*
|
||||
exit
|
||||
fi
|
||||
|
||||
# Allow msys2
|
||||
if echo $* | grep pc-msys >/dev/null ; then
|
||||
echo $*
|
||||
exit
|
||||
fi
|
||||
@@ -49,7 +55,7 @@ if ! echo $* | grep '^aarch64-' >/dev/null ; then
|
||||
fi
|
||||
|
||||
while test $# -gt 0 ; do
|
||||
case $1 in
|
||||
case $1 in
|
||||
-- ) # Stop option processing
|
||||
shift; break ;;
|
||||
aarch64-* )
|
||||
|
||||
@@ -175,7 +175,7 @@ AC_DEFUN([BPERF_SETUP_CCACHE],
|
||||
if test "x$TOOLCHAIN_PATH" != x; then
|
||||
PATH=$TOOLCHAIN_PATH:$PATH
|
||||
fi
|
||||
UTIL_PATH_PROGS(CCACHE, ccache)
|
||||
UTIL_LOOKUP_PROGS(CCACHE, ccache)
|
||||
PATH="$OLD_PATH"
|
||||
|
||||
AC_MSG_CHECKING([if ccache is available])
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -43,7 +43,7 @@ export CMP="@CMP@"
|
||||
export CP="@CP@"
|
||||
export CUT="@CUT@"
|
||||
export DIFF="@DIFF@"
|
||||
export DUMPBIN="@FIXPATH@ @DUMPBIN@"
|
||||
export DUMPBIN="@DUMPBIN@"
|
||||
export EXPR="@EXPR@"
|
||||
export FILE="@FILE@"
|
||||
export FIND="@FIND@"
|
||||
@@ -53,7 +53,6 @@ export LDD="@LDD@"
|
||||
export LN="@LN@"
|
||||
export MKDIR="@MKDIR@"
|
||||
export MV="@MV@"
|
||||
export NAWK="@NAWK@"
|
||||
export NM="@GNM@"
|
||||
export OBJDUMP="@OBJDUMP@"
|
||||
export OTOOL="@OTOOL@"
|
||||
@@ -87,12 +86,10 @@ else
|
||||
fi
|
||||
|
||||
if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
||||
if [ "$OPENJDK_BUILD_OS_ENV" = "windows.wsl" ]; then
|
||||
export FIXPATH_PATH="@VS_PATH_WINDOWS@"
|
||||
export WSLENV="$WSLENV:FIXPATH_PATH:DEBUG_FIXPATH"
|
||||
else
|
||||
export PATH="@VS_PATH@"
|
||||
if [[ $OPENJDK_BUILD_OS_ENV =~ ^windows.wsl ]]; then
|
||||
export WSLENV=PATH/l
|
||||
fi
|
||||
export PATH="$PATH:@TOOLCHAIN_PATH@"
|
||||
fi
|
||||
|
||||
export HOTSPOT_BUILD_TIME="@HOTSPOT_BUILD_TIME@"
|
||||
|
||||
9
make/autoconf/configure
vendored
9
make/autoconf/configure
vendored
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -49,7 +49,7 @@ export LC_ALL=C
|
||||
if test "x$CUSTOM_CONFIG_DIR" != x; then
|
||||
custom_hook=$CUSTOM_CONFIG_DIR/custom-hook.m4
|
||||
if test ! -e $custom_hook; then
|
||||
echo "CUSTOM_CONFIG_DIR not pointing to a proper custom config dir."
|
||||
echo "CUSTOM_CONFIG_DIR ($CUSTOM_CONFIG_DIR) not pointing to a proper custom config dir."
|
||||
echo "Error: Cannot continue" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
@@ -83,6 +83,7 @@ autoconf_missing_help() {
|
||||
BREW="`type -p brew 2> /dev/null`"
|
||||
ZYPPER="`type -p zypper 2> /dev/null`"
|
||||
CYGWIN="`type -p cygpath 2> /dev/null`"
|
||||
UNAMEOUT="`uname 2> /dev/null`"
|
||||
|
||||
if test "x$ZYPPER" != x; then
|
||||
PKGHANDLER_COMMAND="sudo zypper install autoconf"
|
||||
@@ -92,6 +93,8 @@ autoconf_missing_help() {
|
||||
PKGHANDLER_COMMAND="sudo yum install autoconf"
|
||||
elif test "x$BREW" != x; then
|
||||
PKGHANDLER_COMMAND="brew install autoconf"
|
||||
elif test "x$UNAMEOUT" == xAIX; then
|
||||
echo "You might be able to fix this by installing autoconf from the 'AIX Toolbox for Linux Applications' (or compile it from the sources)."
|
||||
elif test "x$CYGWIN" != x; then
|
||||
PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P autoconf )"
|
||||
fi
|
||||
@@ -114,7 +117,7 @@ generate_configure_script() {
|
||||
AUTOCONF="`type -p autoconf 2> /dev/null`"
|
||||
if test "x$AUTOCONF" = x; then
|
||||
echo
|
||||
echo "Autoconf is not found on the PATH, and AUTOCONF is not set."
|
||||
echo "Autoconf is not found on the PATH ($PATH), and AUTOCONF is not set."
|
||||
echo "You need autoconf to be able to generate a runnable configure script."
|
||||
autoconf_missing_help
|
||||
echo "Error: Cannot find autoconf" 1>&2
|
||||
|
||||
@@ -106,6 +106,8 @@ BASIC_SETUP_DEVKIT
|
||||
# To properly create a configuration name, we need to have the OpenJDK target
|
||||
# and options (variants and debug level) parsed.
|
||||
BASIC_SETUP_OUTPUT_DIR
|
||||
# After we have the output dir we can finalize the fixpath wrapper
|
||||
BASIC_WINDOWS_FINALIZE_FIXPATH
|
||||
|
||||
# Must be done before we can call HELP_MSG_MISSING_DEPENDENCY.
|
||||
HELP_SETUP_DEPENDENCY_HELP
|
||||
@@ -203,7 +205,8 @@ FLAGS_POST_TOOLCHAIN
|
||||
PLATFORM_SETUP_OPENJDK_TARGET_BITS
|
||||
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
|
||||
|
||||
# Configure flags for the tools
|
||||
# Configure flags for the tools. Need to know if we should build reproducible.
|
||||
JDKOPT_SETUP_REPRODUCIBLE_BUILD
|
||||
FLAGS_SETUP_FLAGS
|
||||
|
||||
# Setup debug symbols (need objcopy from the toolchain for that)
|
||||
@@ -219,9 +222,6 @@ JDKOPT_SETUP_ADDRESS_SANITIZER
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# After we have toolchain, we can compile fixpath. It's needed by the lib checks.
|
||||
BASIC_COMPILE_FIXPATH
|
||||
|
||||
LIB_DETERMINE_DEPENDENCIES
|
||||
LIB_SETUP_LIBRARIES
|
||||
|
||||
@@ -247,7 +247,6 @@ JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
|
||||
JDKOPT_EXCLUDE_TRANSLATIONS
|
||||
JDKOPT_ENABLE_DISABLE_MANPAGES
|
||||
JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE
|
||||
JDKOPT_SETUP_REPRODUCIBLE_BUILD
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
@@ -294,6 +293,7 @@ BASIC_CHECK_LEFTOVER_OVERRIDDEN
|
||||
CONFIG_STATUS="$CONFIGURESUPPORT_OUTPUTDIR/config.status"
|
||||
|
||||
# Create the actual output files. Now the main work of configure is done.
|
||||
BASIC_WINDOWS_FINALIZE
|
||||
AC_OUTPUT
|
||||
|
||||
# After AC_OUTPUT, we need to do final work
|
||||
|
||||
@@ -130,6 +130,7 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
||||
case "${TOOLCHAIN_TYPE}" in
|
||||
microsoft)
|
||||
DISABLE_WARNING_PREFIX="-wd"
|
||||
BUILD_CC_DISABLE_WARNING_PREFIX="-wd"
|
||||
CFLAGS_WARNINGS_ARE_ERRORS="-WX"
|
||||
|
||||
WARNINGS_ENABLE_ALL="-W3"
|
||||
@@ -142,6 +143,7 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
||||
|
||||
gcc)
|
||||
DISABLE_WARNING_PREFIX="-Wno-"
|
||||
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
|
||||
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
||||
|
||||
# Additional warnings that are not activated by -Wall and -Wextra
|
||||
@@ -153,7 +155,6 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
||||
WARNINGS_ENABLE_ALL_CXXFLAGS="$WARNINGS_ENABLE_ALL_CFLAGS $WARNINGS_ENABLE_ADDITIONAL_CXX"
|
||||
|
||||
DISABLED_WARNINGS="unused-parameter unused"
|
||||
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
|
||||
;;
|
||||
|
||||
clang)
|
||||
@@ -663,16 +664,10 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -DARCH='\"$FLAGS_CPU_LEGACY\"' \
|
||||
-D$FLAGS_CPU_LEGACY"
|
||||
|
||||
if test "x$FLAGS_CPU_BITS" = x64; then
|
||||
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
|
||||
# unpack200.exe.
|
||||
if test "x$FLAGS_OS" = xlinux || test "x$FLAGS_OS" = xmacosx; then
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_LP64=1"
|
||||
fi
|
||||
if test "x$FLAGS_OS" != xaix; then
|
||||
# xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
|
||||
$1_DEFINES_CPU_JVM="${$1_DEFINES_CPU_JVM} -D_LP64=1"
|
||||
fi
|
||||
if test "x$FLAGS_CPU_BITS" = x64 && test "x$FLAGS_OS" != xaix; then
|
||||
# xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_LP64=1"
|
||||
$1_DEFINES_CPU_JVM="${$1_DEFINES_CPU_JVM} -D_LP64=1"
|
||||
fi
|
||||
|
||||
# toolchain dependend, per-cpu
|
||||
@@ -756,6 +751,18 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
$1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
|
||||
fi
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft && test "x$ENABLE_REPRODUCIBLE_BUILD" = xtrue; then
|
||||
# Enabling deterministic creates warnings if __DATE__ or __TIME__ are
|
||||
# used, and since we are, silence that warning.
|
||||
REPRODUCIBLE_CFLAGS="-experimental:deterministic -wd5048"
|
||||
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${REPRODUCIBLE_CFLAGS}],
|
||||
PREFIX: $3,
|
||||
IF_FALSE: [
|
||||
REPRODUCIBLE_CFLAGS=
|
||||
]
|
||||
)
|
||||
fi
|
||||
|
||||
# Prevent the __FILE__ macro from generating absolute paths into the built
|
||||
# binaries. Depending on toolchain, different mitigations are possible.
|
||||
# * GCC and Clang of new enough versions have -fmacro-prefix-map.
|
||||
@@ -774,6 +781,29 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
FILE_MACRO_CFLAGS=
|
||||
]
|
||||
)
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft &&
|
||||
test "x$ENABLE_REPRODUCIBLE_BUILD" = xtrue; then
|
||||
# There is a known issue with the pathmap if the mapping is made to the
|
||||
# empty string. Add a minimal string "s" as prefix to work around this.
|
||||
workspace_root_win=`$FIXPATH_BASE print "${WORKSPACE_ROOT%/}"`
|
||||
# PATHMAP_FLAGS is also added to LDFLAGS in flags-ldflags.m4.
|
||||
PATHMAP_FLAGS="-pathmap:${workspace_root_win//\//\\\\}=s \
|
||||
-pathmap:${workspace_root_win}=s"
|
||||
FILE_MACRO_CFLAGS="$PATHMAP_FLAGS"
|
||||
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${FILE_MACRO_CFLAGS}],
|
||||
PREFIX: $3,
|
||||
IF_FALSE: [
|
||||
PATHMAP_FLAGS=
|
||||
FILE_MACRO_CFLAGS=
|
||||
]
|
||||
)
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([how to prevent absolute paths in output])
|
||||
if test "x$FILE_MACRO_CFLAGS" != x; then
|
||||
AC_MSG_RESULT([using compiler options])
|
||||
else
|
||||
AC_MSG_RESULT([using relative paths])
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(FILE_MACRO_CFLAGS)
|
||||
@@ -782,12 +812,13 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM \
|
||||
$TOOLCHAIN_CFLAGS_JVM ${$1_TOOLCHAIN_CFLAGS_JVM} \
|
||||
$OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
|
||||
$WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG $FILE_MACRO_CFLAGS"
|
||||
$WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG $FILE_MACRO_CFLAGS \
|
||||
$REPRODUCIBLE_CFLAGS"
|
||||
|
||||
CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
|
||||
$OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
|
||||
$WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK \
|
||||
$FILE_MACRO_CFLAGS"
|
||||
$FILE_MACRO_CFLAGS $REPRODUCIBLE_CFLAGS"
|
||||
|
||||
# Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
|
||||
# (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
|
||||
|
||||
@@ -66,11 +66,11 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
||||
# Add -z,defs, to forbid undefined symbols in object files.
|
||||
# add -z,relro (mark relocations read only) for all libs
|
||||
# add -z,now ("full relro" - more of the Global Offset Table GOT is marked read only)
|
||||
BASIC_LDFLAGS="-Wl,--hash-style=gnu -Wl,-z,defs -Wl,-z,relro -Wl,-z,now"
|
||||
BASIC_LDFLAGS="-Wl,-z,defs -Wl,-z,relro -Wl,-z,now"
|
||||
# Linux : remove unused code+data in link step
|
||||
if test "x$ENABLE_LINKTIME_GC" = xtrue; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xs390x; then
|
||||
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections -Wl,--print-gc-sections"
|
||||
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections"
|
||||
else
|
||||
BASIC_LDFLAGS_JDK_ONLY="$BASIC_LDFLAGS_JDK_ONLY -Wl,--gc-sections"
|
||||
fi
|
||||
@@ -106,7 +106,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
||||
# Assume clang or gcc.
|
||||
# FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
|
||||
OS_LDFLAGS_JVM_ONLY="-Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
|
||||
OS_LDFLAGS_JDK_ONLY="-mmacosx-version-min=$MACOSX_VERSION_MIN"
|
||||
OS_LDFLAGS="-mmacosx-version-min=$MACOSX_VERSION_MIN"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -137,9 +137,17 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$ENABLE_REPRODUCIBLE_BUILD" = "xtrue"; then
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
REPRODUCIBLE_LDFLAGS="-experimental:deterministic"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
BASIC_LDFLAGS="$BASIC_LDFLAGS -pdbaltpath:%_PDB%"
|
||||
# PATHMAP_FLAGS is setup in flags-cflags.m4.
|
||||
FILE_MACRO_LDFLAGS="${PATHMAP_FLAGS}"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -164,6 +172,16 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
|
||||
$1_CPU_LDFLAGS="$ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
|
||||
fi
|
||||
|
||||
# MIPS ABI does not support GNU hash style
|
||||
if test "x${OPENJDK_$1_CPU}" = xmips ||
|
||||
test "x${OPENJDK_$1_CPU}" = xmipsel ||
|
||||
test "x${OPENJDK_$1_CPU}" = xmips64 ||
|
||||
test "x${OPENJDK_$1_CPU}" = xmips64el; then
|
||||
$1_CPU_LDFLAGS="${$1_CPU_LDFLAGS} -Wl,--hash-style=sysv"
|
||||
else
|
||||
$1_CPU_LDFLAGS="${$1_CPU_LDFLAGS} -Wl,--hash-style=gnu"
|
||||
fi
|
||||
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
if test "x${OPENJDK_$1_CPU_BITS}" = "x32"; then
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
|
||||
@@ -177,7 +195,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
|
||||
|
||||
# JVM_VARIANT_PATH depends on if this is build or target...
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
$1_LDFLAGS_JDK_LIBPATH="-libpath:${OUTPUTDIR}/support/modules_libs/java.base"
|
||||
$1_LDFLAGS_JDK_LIBPATH="-libpath:\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base"
|
||||
else
|
||||
$1_LDFLAGS_JDK_LIBPATH="-L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
|
||||
-L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/${$1_JVM_VARIANT_PATH}"
|
||||
@@ -185,15 +203,17 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
|
||||
|
||||
# Export variables according to old definitions, prefix with $2 if present.
|
||||
LDFLAGS_JDK_COMMON="$BASIC_LDFLAGS $BASIC_LDFLAGS_JDK_ONLY \
|
||||
$OS_LDFLAGS_JDK_ONLY $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}"
|
||||
$OS_LDFLAGS $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}"
|
||||
$2LDFLAGS_JDKLIB="$LDFLAGS_JDK_COMMON $BASIC_LDFLAGS_JDK_LIB_ONLY \
|
||||
${$1_LDFLAGS_JDK_LIBPATH} $SHARED_LIBRARY_FLAGS"
|
||||
${$1_LDFLAGS_JDK_LIBPATH} $SHARED_LIBRARY_FLAGS \
|
||||
$REPRODUCIBLE_LDFLAGS $FILE_MACRO_LDFLAGS"
|
||||
$2LDFLAGS_JDKEXE="$LDFLAGS_JDK_COMMON $EXECUTABLE_LDFLAGS \
|
||||
${$1_CPU_EXECUTABLE_LDFLAGS}"
|
||||
${$1_CPU_EXECUTABLE_LDFLAGS} $REPRODUCIBLE_LDFLAGS $FILE_MACRO_LDFLAGS"
|
||||
|
||||
$2JVM_LDFLAGS="$BASIC_LDFLAGS $BASIC_LDFLAGS_JVM_ONLY $OS_LDFLAGS_JVM_ONLY \
|
||||
$2JVM_LDFLAGS="$BASIC_LDFLAGS $BASIC_LDFLAGS_JVM_ONLY $OS_LDFLAGS $OS_LDFLAGS_JVM_ONLY \
|
||||
$DEBUGLEVEL_LDFLAGS $DEBUGLEVEL_LDFLAGS_JVM_ONLY $BASIC_LDFLAGS_ONLYCXX \
|
||||
${$1_CPU_LDFLAGS} ${$1_CPU_LDFLAGS_JVM_ONLY} ${$2EXTRA_LDFLAGS}"
|
||||
${$1_CPU_LDFLAGS} ${$1_CPU_LDFLAGS_JVM_ONLY} ${$2EXTRA_LDFLAGS} \
|
||||
$REPRODUCIBLE_LDFLAGS $FILE_MACRO_LDFLAGS"
|
||||
|
||||
AC_SUBST($2LDFLAGS_JDKLIB)
|
||||
AC_SUBST($2LDFLAGS_JDKEXE)
|
||||
|
||||
@@ -226,6 +226,14 @@ AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
|
||||
fi
|
||||
fi
|
||||
|
||||
# For the microsoft toolchain, we need to get the SYSROOT flags from the
|
||||
# Visual Studio environment. Currently we cannot handle this as a separate
|
||||
# build toolchain.
|
||||
if test "x$1" = x && test "x$OPENJDK_BUILD_OS" = "xwindows" \
|
||||
&& test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
|
||||
fi
|
||||
|
||||
AC_SUBST($1SYSROOT_CFLAGS)
|
||||
AC_SUBST($1SYSROOT_LDFLAGS)
|
||||
])
|
||||
@@ -234,6 +242,7 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
|
||||
[
|
||||
# We should always include user supplied flags
|
||||
FLAGS_SETUP_USER_SUPPLIED_FLAGS
|
||||
|
||||
# The sysroot flags are needed for configure to be able to run the compilers
|
||||
FLAGS_SETUP_SYSROOT_FLAGS
|
||||
|
||||
@@ -258,10 +267,6 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
|
||||
GLOBAL_LDFLAGS="$MACHINE_FLAG $SYSROOT_LDFLAGS $USER_LDFLAGS"
|
||||
# FIXME: Don't really know how to do with this, but this was the old behavior
|
||||
GLOBAL_CPPFLAGS="$SYSROOT_CFLAGS"
|
||||
AC_SUBST(GLOBAL_CFLAGS)
|
||||
AC_SUBST(GLOBAL_CXXFLAGS)
|
||||
AC_SUBST(GLOBAL_LDFLAGS)
|
||||
AC_SUBST(GLOBAL_CPPFLAGS)
|
||||
|
||||
# FIXME: For compatilibity, export this as EXTRA_CFLAGS for now.
|
||||
EXTRA_CFLAGS="$MACHINE_FLAG $USER_CFLAGS"
|
||||
@@ -280,6 +285,14 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
|
||||
CXXFLAGS="$GLOBAL_CXXFLAGS"
|
||||
LDFLAGS="$GLOBAL_LDFLAGS"
|
||||
CPPFLAGS="$GLOBAL_CPPFLAGS"
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# When autoconf sends both compiler and linker flags to cl.exe at the same
|
||||
# time, linker flags must be last at the command line. Achieve this by
|
||||
# moving them to LIBS.
|
||||
LIBS="$LIBS -link $LDFLAGS"
|
||||
LDFLAGS=""
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL],
|
||||
@@ -370,9 +383,6 @@ AC_DEFUN_ONCE([FLAGS_POST_TOOLCHAIN],
|
||||
BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(BUILD_SYSROOT_CFLAGS)
|
||||
AC_SUBST(BUILD_SYSROOT_LDFLAGS)
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([FLAGS_SETUP_FLAGS],
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
|
||||
[
|
||||
AC_CHECK_PROGS(PKGHANDLER, zypper apt-get yum brew port pkgutil pkgadd)
|
||||
UTIL_LOOKUP_PROGS(PKGHANDLER, zypper apt-get yum brew port pkgutil pkgadd pacman)
|
||||
])
|
||||
|
||||
AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
|
||||
@@ -38,8 +38,6 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
|
||||
HELP_MSG="OpenJDK distributions are available at http://jdk.java.net/."
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
cygwin_help $MISSING_DEPENDENCY
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
msys_help $MISSING_DEPENDENCY
|
||||
else
|
||||
PKGHANDLER_COMMAND=
|
||||
|
||||
@@ -58,6 +56,8 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
|
||||
pkgadd_help $MISSING_DEPENDENCY ;;
|
||||
zypper)
|
||||
zypper_help $MISSING_DEPENDENCY ;;
|
||||
pacman)
|
||||
pacman_help $MISSING_DEPENDENCY ;;
|
||||
esac
|
||||
|
||||
if test "x$PKGHANDLER_COMMAND" != x; then
|
||||
@@ -83,10 +83,6 @@ cygwin_help() {
|
||||
esac
|
||||
}
|
||||
|
||||
msys_help() {
|
||||
PKGHANDLER_COMMAND=""
|
||||
}
|
||||
|
||||
apt_help() {
|
||||
case $1 in
|
||||
reduced)
|
||||
@@ -165,6 +161,17 @@ brew_help() {
|
||||
esac
|
||||
}
|
||||
|
||||
pacman_help() {
|
||||
case $1 in
|
||||
unzip)
|
||||
PKGHANDLER_COMMAND="sudo pacman -S unzip" ;;
|
||||
zip)
|
||||
PKGHANDLER_COMMAND="sudo pacman -S zip" ;;
|
||||
make)
|
||||
PKGHANDLER_COMMAND="sudo pacman -S make" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
port_help() {
|
||||
PKGHANDLER_COMMAND=""
|
||||
}
|
||||
@@ -238,6 +245,7 @@ AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
|
||||
|
||||
printf "\n"
|
||||
printf "Configuration summary:\n"
|
||||
printf "* Name: $CONF_NAME\n"
|
||||
printf "* Debug level: $DEBUG_LEVEL\n"
|
||||
printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n"
|
||||
printf "* JVM variants: $JVM_VARIANTS\n"
|
||||
@@ -256,16 +264,13 @@ AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
|
||||
printf "\n"
|
||||
printf "Tools summary:\n"
|
||||
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
printf "* Environment: $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION. Windows version $WINDOWS_VERSION"
|
||||
if test "x$WINDOWS_ENV_ROOT_PATH" != "x"; then
|
||||
printf ". Root at $WINDOWS_ENV_ROOT_PATH"
|
||||
fi
|
||||
printf "\n"
|
||||
printf "* Environment: %s version %s; windows version %s; prefix \"%s\"; root \"%s\"\n" \
|
||||
"$WINENV_VENDOR" "$WINENV_VERSION" "$WINDOWS_VERSION" "$WINENV_PREFIX" "$WINENV_ROOT"
|
||||
fi
|
||||
printf "* Boot JDK: $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
|
||||
printf "* Toolchain: $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION)\n"
|
||||
printf "* C Compiler: Version $CC_VERSION_NUMBER (at $CC)\n"
|
||||
printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at $CXX)\n"
|
||||
printf "* C Compiler: Version $CC_VERSION_NUMBER (at ${CC#"$FIXPATH "})\n"
|
||||
printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at ${CXX#"$FIXPATH "})\n"
|
||||
|
||||
printf "\n"
|
||||
printf "Build performance summary:\n"
|
||||
|
||||
@@ -388,9 +388,9 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE],
|
||||
UTIL_FIXUP_PATH(JCOV_HOME)
|
||||
if test "x$with_jcov_input_jdk" != "x" ; then
|
||||
JCOV_INPUT_JDK="$with_jcov_input_jdk"
|
||||
if test ! -f "$JCOV_INPUT_JDK/bin/java$EXE_SUFFIX"; then
|
||||
if test ! -f "$JCOV_INPUT_JDK/bin/java" && test ! -f "$JCOV_INPUT_JDK/bin/java.exe"; then
|
||||
AC_MSG_RESULT([fail])
|
||||
AC_MSG_ERROR([Invalid JDK bundle: "$JCOV_INPUT_JDK/bin/java$EXE_SUFFIX" does not exist])
|
||||
AC_MSG_ERROR([Invalid JDK bundle: "$JCOV_INPUT_JDK/bin/java" does not exist])
|
||||
fi
|
||||
UTIL_FIXUP_PATH(JCOV_INPUT_JDK)
|
||||
fi
|
||||
@@ -664,10 +664,27 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
||||
fi
|
||||
fi
|
||||
|
||||
UTIL_ARG_ENABLE(NAME: reproducible-build, DEFAULT: $with_source_date_present,
|
||||
REPRODUCIBLE_BUILD_DEFAULT=$with_source_date_present
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows && \
|
||||
test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = xfalse; then
|
||||
# To support banning absolute paths on Windows, we must use the -pathmap
|
||||
# method, which requires reproducible builds.
|
||||
REPRODUCIBLE_BUILD_DEFAULT=true
|
||||
fi
|
||||
|
||||
UTIL_ARG_ENABLE(NAME: reproducible-build, DEFAULT: $REPRODUCIBLE_BUILD_DEFAULT,
|
||||
RESULT: ENABLE_REPRODUCIBLE_BUILD,
|
||||
DESC: [enable reproducible builds (not yet fully functional)],
|
||||
DEFAULT_DESC: [enabled if --with-source-date is given])
|
||||
DEFAULT_DESC: [enabled if --with-source-date is given or on Windows without absolute paths])
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows && \
|
||||
test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = xfalse && \
|
||||
test "x$ENABLE_REPRODUCIBLE_BUILD" = xfalse; then
|
||||
AC_MSG_NOTICE([On Windows it is not possible to combine --disable-reproducible-builds])
|
||||
AC_MSG_NOTICE([with --disable-absolute-paths-in-output.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
|
||||
AC_SUBST(SOURCE_DATE)
|
||||
AC_SUBST(ENABLE_REPRODUCIBLE_BUILD)
|
||||
|
||||
@@ -159,7 +159,7 @@ AC_DEFUN_ONCE([JVM_FEATURES_PARSE_OPTIONS],
|
||||
# Likewise, check for deprecated arguments.
|
||||
m4_foreach(FEATURE, m4_split(jvm_features_deprecated), [
|
||||
AC_ARG_ENABLE(jvm-feature-FEATURE, AS_HELP_STRING(
|
||||
[--enable-jvm-feature-FEATURE],
|
||||
[--enable-jvm-feature-FEATURE],
|
||||
[Deprecated. Option is kept for backwards compatibility and is ignored]))
|
||||
|
||||
m4_define(FEATURE_SHELL, [enable_jvm_feature_]m4_translit(FEATURE, -, _))
|
||||
@@ -306,7 +306,7 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_GRAAL],
|
||||
# Graal is only available where JVMCI is available since it requires JVMCI.
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
|
||||
@@ -340,7 +340,7 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_JVMCI],
|
||||
AC_MSG_CHECKING([if platform is supported by JVMCI])
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
|
||||
@@ -476,7 +476,7 @@ AC_DEFUN([JVM_FEATURES_PREPARE_VARIANT],
|
||||
JVM_FEATURES_VARIANT_UNAVAILABLE="cds minimal zero"
|
||||
elif test "x$variant" = "xzero"; then
|
||||
JVM_FEATURES_VARIANT_UNAVAILABLE="aot cds compiler1 compiler2 \
|
||||
epsilongc g1gc graal jvmci minimal shenandoahgc zgc"
|
||||
graal jvmci minimal zgc"
|
||||
else
|
||||
JVM_FEATURES_VARIANT_UNAVAILABLE="minimal zero"
|
||||
fi
|
||||
|
||||
@@ -124,6 +124,14 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
|
||||
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lpthread"
|
||||
fi
|
||||
|
||||
# Libatomic library
|
||||
# 32-bit MIPS needs fallback library for 8-byte atomic ops
|
||||
if test "x$OPENJDK_TARGET_OS" = xlinux &&
|
||||
(test "x$OPENJDK_TARGET_CPU" = xmips ||
|
||||
test "x$OPENJDK_TARGET_CPU" = xmipsel); then
|
||||
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -latomic"
|
||||
fi
|
||||
|
||||
# perfstat lib
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lperfstat"
|
||||
|
||||
@@ -206,9 +206,9 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
|
||||
VAR_OS=windows
|
||||
VAR_OS_ENV=windows.wsl
|
||||
;;
|
||||
*mingw*)
|
||||
*msys*)
|
||||
VAR_OS=windows
|
||||
VAR_OS_ENV=windows.msys
|
||||
VAR_OS_ENV=windows.msys2
|
||||
;;
|
||||
*aix*)
|
||||
VAR_OS=aix
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -28,9 +28,6 @@ AC_DEFUN_ONCE([SRCDIRS_SETUP_DIRS],
|
||||
OUTPUTDIR="$OUTPUTDIR"
|
||||
AC_SUBST(OUTPUTDIR)
|
||||
JDK_OUTPUTDIR="$OUTPUTDIR/jdk"
|
||||
|
||||
# Where are the sources.
|
||||
AC_SUBST(TOPDIR)
|
||||
])
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -131,20 +131,24 @@ ENABLE_REPRODUCIBLE_BUILD := @ENABLE_REPRODUCIBLE_BUILD@
|
||||
LIBM:=@LIBM@
|
||||
LIBDL:=@LIBDL@
|
||||
|
||||
# colon or semicolon
|
||||
PATH_SEP:=@PATH_SEP@
|
||||
WINENV_ROOT := @WINENV_ROOT@
|
||||
WINENV_PREFIX := @WINENV_PREFIX@
|
||||
|
||||
ifneq ($(findstring windows.wsl, @OPENJDK_BUILD_OS_ENV@), )
|
||||
# Tell WSL to convert PATH between linux and windows
|
||||
export WSLENV := PATH/l
|
||||
else ifeq (@OPENJDK_BUILD_OS_ENV@, windows.msys2)
|
||||
# Prohibit msys2 from attemping any path wrangling
|
||||
export MSYS2_ARG_CONV_EXCL := "*"
|
||||
endif
|
||||
|
||||
# Save the original path before replacing it with the Visual Studio tools
|
||||
ORIGINAL_PATH:=@ORIGINAL_PATH@
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
# On Windows, the Visual Studio toolchain needs the PATH to be adjusted
|
||||
# to include Visual Studio tools (this needs to be in cygwin/msys style).
|
||||
ifeq ($(OPENJDK_TARGET_OS_ENV), windows.wsl)
|
||||
export FIXPATH_PATH:=@VS_PATH_WINDOWS@
|
||||
export WSLENV:=$(WSLENV):FIXPATH_PATH:DEBUG_FIXPATH
|
||||
else
|
||||
export PATH:=@VS_PATH@
|
||||
endif
|
||||
ORIGINAL_PATH := @ORIGINAL_PATH@
|
||||
|
||||
ifeq (@TOOLCHAIN_TYPE@, microsoft)
|
||||
# The Visual Studio toolchain needs the PATH to be adjusted to include
|
||||
# Visual Studio tools.
|
||||
export PATH := @TOOLCHAIN_PATH@:$(PATH)
|
||||
endif
|
||||
|
||||
SYSROOT_CFLAGS := @SYSROOT_CFLAGS@
|
||||
@@ -488,7 +492,7 @@ ADLC_LANGSTD_CXXFLAGS=@ADLC_LANGSTD_CXXFLAGS@
|
||||
ADLC_LDFLAGS=@ADLC_LDFLAGS@
|
||||
|
||||
# Tools that potentially need to be cross compilation aware.
|
||||
CC:=@FIXPATH@ @CCACHE@ @ICECC@ @CC@
|
||||
CC := @CCACHE@ @ICECC@ @CC@
|
||||
|
||||
# CFLAGS used to compile the jdk native libraries (C-code)
|
||||
CFLAGS_JDKLIB:=@CFLAGS_JDKLIB@
|
||||
@@ -510,12 +514,12 @@ EXTRA_CXXFLAGS = @EXTRA_CXXFLAGS@
|
||||
EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
|
||||
EXTRA_ASFLAGS = @EXTRA_ASFLAGS@
|
||||
|
||||
CXX:=@FIXPATH@ @CCACHE@ @ICECC@ @CXX@
|
||||
CXX := @CCACHE@ @ICECC@ @CXX@
|
||||
|
||||
CPP:=@FIXPATH@ @CPP@
|
||||
CPP := @CPP@
|
||||
|
||||
# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
|
||||
LD:=@FIXPATH@ @LD@
|
||||
LD := @LD@
|
||||
|
||||
# Linker used by the jaotc tool for AOT compilation.
|
||||
LD_JAOTC:=@LD_JAOTC@
|
||||
@@ -535,7 +539,7 @@ JDKEXE_LIBS:=@JDKEXE_LIBS@
|
||||
LDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
|
||||
|
||||
# Sometimes a different linker is needed for c++ libs
|
||||
LDCXX:=@FIXPATH@ @LDCXX@
|
||||
LDCXX := @LDCXX@
|
||||
# The flags for linking libstdc++ linker.
|
||||
LIBCXX:=@LIBCXX@
|
||||
|
||||
@@ -544,22 +548,22 @@ LDFLAGS_TESTEXE:=@LDFLAGS_TESTEXE@
|
||||
|
||||
# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
|
||||
# build platform.
|
||||
BUILD_CC:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CC@
|
||||
BUILD_CXX:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CXX@
|
||||
BUILD_LD:=@FIXPATH@ @BUILD_LD@
|
||||
BUILD_LDCXX:=@FIXPATH@ @BUILD_LDCXX@
|
||||
BUILD_AS:=@FIXPATH@ @BUILD_AS@
|
||||
BUILD_AR:=@FIXPATH@ @BUILD_AR@
|
||||
BUILD_NM:=@FIXPATH@ @BUILD_NM@
|
||||
BUILD_CC := @BUILD_ICECC@ @BUILD_CC@
|
||||
BUILD_CXX := @BUILD_ICECC@ @BUILD_CXX@
|
||||
BUILD_LD := @BUILD_LD@
|
||||
BUILD_LDCXX := @BUILD_LDCXX@
|
||||
BUILD_AS := @BUILD_AS@
|
||||
BUILD_AR := @BUILD_AR@
|
||||
BUILD_NM := @BUILD_NM@
|
||||
BUILD_OBJCOPY:=@BUILD_OBJCOPY@
|
||||
BUILD_STRIP:=@BUILD_STRIP@
|
||||
BUILD_SYSROOT_CFLAGS:=@BUILD_SYSROOT_CFLAGS@
|
||||
BUILD_SYSROOT_LDFLAGS:=@BUILD_SYSROOT_LDFLAGS@
|
||||
|
||||
AS:=@FIXPATH@ @AS@
|
||||
AS := @AS@
|
||||
|
||||
# AR is used to create a static library (is ar in unix, lib.exe in windows)
|
||||
AR:=@FIXPATH@ @AR@
|
||||
AR := @AR@
|
||||
ARFLAGS:=@ARFLAGS@
|
||||
|
||||
NM:=@NM@
|
||||
@@ -608,7 +612,7 @@ STATIC_LIBRARY=@STATIC_LIBRARY@
|
||||
LIBRARY_PREFIX:=@LIBRARY_PREFIX@
|
||||
SHARED_LIBRARY_SUFFIX:=@SHARED_LIBRARY_SUFFIX@
|
||||
STATIC_LIBRARY_SUFFIX:=@STATIC_LIBRARY_SUFFIX@
|
||||
EXE_SUFFIX:=@EXE_SUFFIX@
|
||||
EXECUTABLE_SUFFIX:=@EXECUTABLE_SUFFIX@
|
||||
OBJ_SUFFIX:=@OBJ_SUFFIX@
|
||||
STATIC_BUILD:=@STATIC_BUILD@
|
||||
|
||||
@@ -629,18 +633,15 @@ JAVADOC_CMD:=@JAVADOC@
|
||||
JAR_CMD:=@JAR@
|
||||
JLINK_CMD := @JLINK@
|
||||
JMOD_CMD := @JMOD@
|
||||
JARSIGNER_CMD:=@JARSIGNER@
|
||||
# These variables are meant to be used. They are defined with = instead of := to make
|
||||
# it possible to override only the *_CMD variables.
|
||||
JAVA=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
|
||||
JAVA_SMALL=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS)
|
||||
JAVA_DETACH =@FIXPATH@ @FIXPATH_DETACH_FLAG@ $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
|
||||
JAVAC=@FIXPATH@ $(JAVAC_CMD)
|
||||
JAVADOC=@FIXPATH@ $(JAVADOC_CMD)
|
||||
JAR=@FIXPATH@ $(JAR_CMD)
|
||||
JLINK = @FIXPATH@ $(JLINK_CMD)
|
||||
JMOD = @FIXPATH@ $(JMOD_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
||||
JARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
|
||||
JAVA = $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
|
||||
JAVA_SMALL = $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS)
|
||||
JAVAC = $(JAVAC_CMD)
|
||||
JAVADOC = $(JAVADOC_CMD)
|
||||
JAR = $(JAR_CMD)
|
||||
JLINK = $(JLINK_CMD)
|
||||
JMOD = $(JMOD_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
||||
|
||||
BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
|
||||
BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
|
||||
@@ -685,9 +686,7 @@ CCACHE:=@CCACHE@
|
||||
CD:=cd
|
||||
CHMOD:=@CHMOD@
|
||||
CODESIGN:=@CODESIGN@
|
||||
COMM:=@COMM@
|
||||
CP:=@CP@
|
||||
CPIO:=@CPIO@
|
||||
CUT:=@CUT@
|
||||
DATE:=@DATE@
|
||||
DIFF:=@DIFF@
|
||||
@@ -707,9 +706,8 @@ LN:=@LN@
|
||||
MIG:=@MIG@
|
||||
MKDIR:=@MKDIR@
|
||||
MV:=@MV@
|
||||
NAWK:=@NAWK@
|
||||
NICE:=@NICE@
|
||||
PANDOC:=@FIXPATH@ @PANDOC@
|
||||
PANDOC:=@PANDOC@
|
||||
PATCH:=@PATCH@
|
||||
PRINTF:=@PRINTF@
|
||||
READLINK:=@READLINK@
|
||||
@@ -725,15 +723,14 @@ TIME:=@TIME@
|
||||
IS_GNU_TIME:=@IS_GNU_TIME@
|
||||
TR:=@TR@
|
||||
TOUCH:=@TOUCH@
|
||||
UNIQ:=@UNIQ@
|
||||
WC:=@WC@
|
||||
XARGS:=@XARGS@
|
||||
ZIPEXE:=@ZIPEXE@
|
||||
UNZIP:=@UNZIP@
|
||||
MT:=@FIXPATH@ @MT@
|
||||
RC:=@FIXPATH@ @RC@
|
||||
DUMPBIN:=@FIXPATH@ @DUMPBIN@
|
||||
CYGPATH:=@CYGPATH@
|
||||
MT:=@MT@
|
||||
RC:=@RC@
|
||||
DUMPBIN:=@DUMPBIN@
|
||||
PATHTOOL:=@PATHTOOL@
|
||||
WSLPATH:=@WSLPATH@
|
||||
LDD:=@LDD@
|
||||
OTOOL:=@OTOOL@
|
||||
@@ -750,7 +747,8 @@ JT_HOME:=@JT_HOME@
|
||||
JIB_HOME:=@JIB_HOME@
|
||||
XCODEBUILD=@XCODEBUILD@
|
||||
DTRACE := @DTRACE@
|
||||
FIXPATH:=@FIXPATH@
|
||||
FIXPATH := @FIXPATH@
|
||||
FIXPATH_BASE := @FIXPATH_BASE@
|
||||
ULIMIT:=@ULIMIT@
|
||||
|
||||
TAR_TYPE:=@TAR_TYPE@
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
# compilers and related tools that are used.
|
||||
########################################################################
|
||||
|
||||
m4_include([toolchain_windows.m4])
|
||||
m4_include([toolchain_microsoft.m4])
|
||||
|
||||
# All valid toolchains, regardless of platform (used by help.m4)
|
||||
VALID_TOOLCHAINS_all="gcc clang xlc microsoft"
|
||||
@@ -179,6 +179,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_FILENAME_PATTERNS],
|
||||
SHARED_LIBRARY='[$]1.dll'
|
||||
STATIC_LIBRARY='[$]1.lib'
|
||||
OBJ_SUFFIX='.obj'
|
||||
EXECUTABLE_SUFFIX='.exe'
|
||||
else
|
||||
LIBRARY_PREFIX=lib
|
||||
SHARED_LIBRARY_SUFFIX='.so'
|
||||
@@ -186,6 +187,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_FILENAME_PATTERNS],
|
||||
SHARED_LIBRARY='lib[$]1.so'
|
||||
STATIC_LIBRARY='lib[$]1.a'
|
||||
OBJ_SUFFIX='.o'
|
||||
EXECUTABLE_SUFFIX=''
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
# For full static builds, we're overloading the SHARED_LIBRARY
|
||||
# variables in order to limit the amount of changes required.
|
||||
@@ -209,6 +211,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_FILENAME_PATTERNS],
|
||||
AC_SUBST(SHARED_LIBRARY)
|
||||
AC_SUBST(STATIC_LIBRARY)
|
||||
AC_SUBST(OBJ_SUFFIX)
|
||||
AC_SUBST(EXECUTABLE_SUFFIX)
|
||||
])
|
||||
|
||||
# Determine which toolchain type to use, and make sure it is valid for this
|
||||
@@ -292,12 +295,12 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
|
||||
|
||||
TOOLCHAIN_CC_BINARY_clang="clang"
|
||||
TOOLCHAIN_CC_BINARY_gcc="gcc"
|
||||
TOOLCHAIN_CC_BINARY_microsoft="cl$EXE_SUFFIX"
|
||||
TOOLCHAIN_CC_BINARY_microsoft="cl"
|
||||
TOOLCHAIN_CC_BINARY_xlc="xlclang"
|
||||
|
||||
TOOLCHAIN_CXX_BINARY_clang="clang++"
|
||||
TOOLCHAIN_CXX_BINARY_gcc="g++"
|
||||
TOOLCHAIN_CXX_BINARY_microsoft="cl$EXE_SUFFIX"
|
||||
TOOLCHAIN_CXX_BINARY_microsoft="cl"
|
||||
TOOLCHAIN_CXX_BINARY_xlc="xlclang++"
|
||||
|
||||
# Use indirect variable referencing
|
||||
@@ -325,9 +328,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
|
||||
# special setup, e.g. additional paths etc.
|
||||
AC_DEFUN_ONCE([TOOLCHAIN_PRE_DETECTION],
|
||||
[
|
||||
# FIXME: Is this needed?
|
||||
AC_LANG(C++)
|
||||
|
||||
# Store the CFLAGS etc passed to the configure script.
|
||||
ORG_CFLAGS="$CFLAGS"
|
||||
ORG_CXXFLAGS="$CXXFLAGS"
|
||||
@@ -335,52 +335,26 @@ AC_DEFUN_ONCE([TOOLCHAIN_PRE_DETECTION],
|
||||
# autoconf magic only relies on PATH, so update it if tools dir is specified
|
||||
OLD_PATH="$PATH"
|
||||
|
||||
# On Windows, we need to detect the visual studio installation first.
|
||||
# This will change the PATH, but we need to keep that new PATH even
|
||||
# after toolchain detection is done, since the compiler (on x86) uses
|
||||
# it for DLL resolution in runtime.
|
||||
if test "x$OPENJDK_BUILD_OS" = "xwindows" \
|
||||
&& test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
# Append VS_PATH. In WSL, VS_PATH will not contain the WSL env path needed
|
||||
# for using basic Unix tools, so need to keep the original PATH.
|
||||
UTIL_APPEND_TO_PATH(PATH, $VS_PATH)
|
||||
UTIL_APPEND_TO_PATH(WSLENV, "PATH/l:LIB:INCLUDE")
|
||||
export WSLENV
|
||||
else
|
||||
# Reset path to VS_PATH. It will include everything that was on PATH at the time we
|
||||
# ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV.
|
||||
PATH="$VS_PATH"
|
||||
fi
|
||||
# The microsoft toolchain also requires INCLUDE and LIB to be set.
|
||||
export INCLUDE="$VS_INCLUDE"
|
||||
export LIB="$VS_LIB"
|
||||
else
|
||||
if test "x$XCODE_VERSION_OUTPUT" != x; then
|
||||
# For Xcode, we set the Xcode version as TOOLCHAIN_VERSION
|
||||
TOOLCHAIN_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | $CUT -f 2 -d ' '`
|
||||
TOOLCHAIN_DESCRIPTION="$TOOLCHAIN_DESCRIPTION from Xcode $TOOLCHAIN_VERSION"
|
||||
else
|
||||
# Currently we do not define this for other toolchains. This might change as the need arise.
|
||||
TOOLCHAIN_VERSION=
|
||||
fi
|
||||
if test "x$XCODE_VERSION_OUTPUT" != x; then
|
||||
# For Xcode, we set the Xcode version as TOOLCHAIN_VERSION
|
||||
TOOLCHAIN_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | $CUT -f 2 -d ' '`
|
||||
TOOLCHAIN_DESCRIPTION="$TOOLCHAIN_DESCRIPTION from Xcode $TOOLCHAIN_VERSION"
|
||||
fi
|
||||
AC_SUBST(TOOLCHAIN_VERSION)
|
||||
|
||||
# Finally add TOOLCHAIN_PATH at the beginning, to allow --with-tools-dir to
|
||||
# Finally prepend TOOLCHAIN_PATH to the PATH, to allow --with-tools-dir to
|
||||
# override all other locations.
|
||||
if test "x$TOOLCHAIN_PATH" != x; then
|
||||
PATH=$TOOLCHAIN_PATH:$PATH
|
||||
export PATH=$TOOLCHAIN_PATH:$PATH
|
||||
fi
|
||||
])
|
||||
|
||||
# Restore path, etc
|
||||
AC_DEFUN_ONCE([TOOLCHAIN_POST_DETECTION],
|
||||
[
|
||||
# Restore old path, except for the microsoft toolchain, which requires VS_PATH
|
||||
# to remain in place. Otherwise the compiler will not work in some siutations
|
||||
# in later configure checks.
|
||||
# Restore old path, except for the microsoft toolchain, which requires the
|
||||
# toolchain path to remain in place. Otherwise the compiler will not work in
|
||||
# some siutations in later configure checks.
|
||||
if test "x$TOOLCHAIN_TYPE" != "xmicrosoft"; then
|
||||
PATH="$OLD_PATH"
|
||||
fi
|
||||
@@ -427,7 +401,7 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION],
|
||||
# First line typically looks something like:
|
||||
# Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
|
||||
# but the compiler name may vary depending on locale.
|
||||
COMPILER_VERSION_OUTPUT=`"$COMPILER" 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'`
|
||||
COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 1>/dev/null | $HEAD -n 1 | $TR -d '\r'`
|
||||
# Check that this is likely to be Microsoft CL.EXE.
|
||||
$ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft" > /dev/null
|
||||
if test $? -ne 0; then
|
||||
@@ -506,7 +480,7 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER],
|
||||
if test "x`basename [$]$1`" = "x[$]$1"; then
|
||||
# A command without a complete path is provided, search $PATH.
|
||||
|
||||
AC_PATH_PROGS(POTENTIAL_$1, [$]$1)
|
||||
UTIL_LOOKUP_PROGS(POTENTIAL_$1, [$]$1)
|
||||
if test "x$POTENTIAL_$1" != x; then
|
||||
$1=$POTENTIAL_$1
|
||||
else
|
||||
@@ -528,34 +502,16 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER],
|
||||
# If we are not cross compiling, then the default compiler name will be
|
||||
# used.
|
||||
|
||||
$1=
|
||||
# If TOOLCHAIN_PATH is set, check for all compiler names in there first
|
||||
# before checking the rest of the PATH.
|
||||
# FIXME: Now that we prefix the TOOLS_DIR to the PATH in the PRE_DETECTION
|
||||
# step, this should not be necessary.
|
||||
if test -n "$TOOLCHAIN_PATH"; then
|
||||
PATH_save="$PATH"
|
||||
PATH="$TOOLCHAIN_PATH"
|
||||
AC_PATH_TOOL(TOOLCHAIN_PATH_$1, $SEARCH_LIST)
|
||||
$1=$TOOLCHAIN_PATH_$1
|
||||
PATH="$PATH_save"
|
||||
fi
|
||||
|
||||
# AC_PATH_TOOL can't be run multiple times with the same variable,
|
||||
# so create a new name for this run.
|
||||
if test "x[$]$1" = x; then
|
||||
AC_PATH_TOOL(POTENTIAL_$1, $SEARCH_LIST)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(POTENTIAL_$1, $SEARCH_LIST)
|
||||
if test "x$POTENTIAL_$1" != x; then
|
||||
$1=$POTENTIAL_$1
|
||||
fi
|
||||
|
||||
if test "x[$]$1" = x; then
|
||||
else
|
||||
HELP_MSG_MISSING_DEPENDENCY([devkit])
|
||||
AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG])
|
||||
fi
|
||||
fi
|
||||
|
||||
# Now we have a compiler binary in $1. Make sure it's okay.
|
||||
UTIL_FIXUP_EXECUTABLE($1)
|
||||
TEST_COMPILER="[$]$1"
|
||||
|
||||
AC_MSG_CHECKING([resolved symbolic links for $1])
|
||||
@@ -596,12 +552,7 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION],
|
||||
# There is no specific version flag, but all output starts with a version string.
|
||||
# First line typically looks something like:
|
||||
# Microsoft (R) Incremental Linker Version 12.00.31101.0
|
||||
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
|
||||
# which, in combination with WSLENV, will make the WSL layer complain
|
||||
old_path="$PATH"
|
||||
PATH=
|
||||
LINKER_VERSION_STRING=`$LD 2>&1 | $HEAD -n 1 | $TR -d '\r'`
|
||||
PATH="$old_path"
|
||||
LINKER_VERSION_STRING=`$LINKER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
|
||||
# Extract version number
|
||||
[ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
|
||||
$SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ]
|
||||
@@ -612,7 +563,7 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION],
|
||||
# This program is free software; [...]
|
||||
# If using gold it will look like:
|
||||
# GNU gold (GNU Binutils 2.30) 1.15
|
||||
LINKER_VERSION_STRING=`$LD -Wl,--version 2> /dev/null | $HEAD -n 1`
|
||||
LINKER_VERSION_STRING=`$LINKER -Wl,--version 2> /dev/null | $HEAD -n 1`
|
||||
# Extract version number
|
||||
if [ [[ "$LINKER_VERSION_STRING" == *gold* ]] ]; then
|
||||
[ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
|
||||
@@ -629,7 +580,7 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION],
|
||||
# or
|
||||
# GNU ld (GNU Binutils for Ubuntu) 2.26.1
|
||||
|
||||
LINKER_VERSION_STRING=`$LD -Wl,-v 2>&1 | $HEAD -n 1`
|
||||
LINKER_VERSION_STRING=`$LINKER -Wl,-v 2>&1 | $HEAD -n 1`
|
||||
# Check if we're using the GNU ld
|
||||
$ECHO "$LINKER_VERSION_STRING" | $GREP "GNU" > /dev/null
|
||||
if test $? -eq 0; then
|
||||
@@ -649,6 +600,23 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION],
|
||||
AC_MSG_NOTICE([Using $TOOLCHAIN_TYPE $LINKER_NAME version $LINKER_VERSION_NUMBER @<:@$LINKER_VERSION_STRING@:>@])
|
||||
])
|
||||
|
||||
# Make sure we did not pick up /usr/bin/link, which is the unix-style link
|
||||
# executable.
|
||||
#
|
||||
# $1 = linker to test (LD or BUILD_LD)
|
||||
AC_DEFUN(TOOLCHAIN_VERIFY_LINK_BINARY,
|
||||
[
|
||||
LINKER=[$]$1
|
||||
|
||||
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
|
||||
$LINKER --version > /dev/null
|
||||
if test $? -eq 0 ; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([$LINKER is the winenv link tool. Please check your PATH and rerun configure.])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
])
|
||||
# Detect the core components of the toolchain, i.e. the compilers (CC and CXX),
|
||||
# preprocessor (CPP and CXXCPP), the linker (LD), the assembler (AS) and the
|
||||
# archiver (AR). Verify that the compilers are correct according to the
|
||||
@@ -693,39 +661,18 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
|
||||
#
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# In the Microsoft toolchain we have a separate LD command "link".
|
||||
# Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
|
||||
# a cygwin program for something completely different.
|
||||
AC_CHECK_PROG([LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
|
||||
UTIL_FIXUP_EXECUTABLE(LD)
|
||||
# Verify that we indeed succeeded with this trick.
|
||||
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
|
||||
|
||||
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
|
||||
# which, in combination with WSLENV, will make the WSL layer complain
|
||||
old_path="$PATH"
|
||||
PATH=
|
||||
|
||||
"$LD" --version > /dev/null
|
||||
|
||||
if test $? -eq 0 ; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
|
||||
PATH="$old_path"
|
||||
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(LD, link)
|
||||
TOOLCHAIN_VERIFY_LINK_BINARY(LD)
|
||||
LDCXX="$LD"
|
||||
# jaotc being a windows program expects the linker to be supplied with exe suffix.
|
||||
LD_JAOTC="$LD$EXE_SUFFIX"
|
||||
# jaotc being a windows program expects the linker to be supplied with exe suffix.but without
|
||||
# fixpath
|
||||
LD_JAOTC="${LD##$FIXPATH }"
|
||||
else
|
||||
# All other toolchains use the compiler to link.
|
||||
LD="$CC"
|
||||
LDCXX="$CXX"
|
||||
# jaotc expects 'ld' as the linker rather than the compiler.
|
||||
UTIL_CHECK_TOOLS([LD_JAOTC], ld)
|
||||
UTIL_FIXUP_EXECUTABLE(LD_JAOTC)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(LD_JAOTC, ld)
|
||||
fi
|
||||
AC_SUBST(LD)
|
||||
AC_SUBST(LD_JAOTC)
|
||||
@@ -746,8 +693,12 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
|
||||
#
|
||||
# Setup the assembler (AS)
|
||||
#
|
||||
# FIXME: is this correct for microsoft?
|
||||
AS="$CC -c"
|
||||
if test "x$TOOLCHAIN_TYPE" != xmicrosoft; then
|
||||
AS="$CC -c"
|
||||
else
|
||||
# On windows, the assember is "ml.exe"
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(AS, ml)
|
||||
fi
|
||||
AC_SUBST(AS)
|
||||
|
||||
#
|
||||
@@ -755,13 +706,12 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
|
||||
#
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# The corresponding ar tool is lib.exe (used to create static libraries)
|
||||
AC_CHECK_PROG([AR], [lib$EXE_SUFFIX],[lib$EXE_SUFFIX],,,)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(AR, lib)
|
||||
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||
UTIL_CHECK_TOOLS(AR, ar gcc-ar)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(AR, ar gcc-ar)
|
||||
else
|
||||
UTIL_CHECK_TOOLS(AR, ar)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(AR, ar)
|
||||
fi
|
||||
UTIL_FIXUP_EXECUTABLE(AR)
|
||||
])
|
||||
|
||||
# Setup additional tools that is considered a part of the toolchain, but not the
|
||||
@@ -770,41 +720,26 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
|
||||
AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_EXTRA],
|
||||
[
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
|
||||
UTIL_PATH_PROGS(LIPO, lipo)
|
||||
UTIL_FIXUP_EXECUTABLE(LIPO)
|
||||
UTIL_LOOKUP_PROGS(LIPO, lipo)
|
||||
UTIL_REQUIRE_PROGS(OTOOL, otool)
|
||||
UTIL_FIXUP_EXECUTABLE(OTOOL)
|
||||
UTIL_REQUIRE_PROGS(INSTALL_NAME_TOOL, install_name_tool)
|
||||
UTIL_FIXUP_EXECUTABLE(INSTALL_NAME_TOOL)
|
||||
fi
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
AC_CHECK_PROG([MT], [mt$EXE_SUFFIX], [mt$EXE_SUFFIX],,, [/usr/bin/mt])
|
||||
UTIL_FIXUP_EXECUTABLE(MT)
|
||||
# Setup the manifest tool (MT)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(MT, mt)
|
||||
# Setup the resource compiler (RC)
|
||||
AC_CHECK_PROG([RC], [rc$EXE_SUFFIX], [rc$EXE_SUFFIX],,, [/usr/bin/rc])
|
||||
UTIL_FIXUP_EXECUTABLE(RC)
|
||||
AC_CHECK_PROG([DUMPBIN], [dumpbin$EXE_SUFFIX], [dumpbin$EXE_SUFFIX],,,)
|
||||
UTIL_FIXUP_EXECUTABLE(DUMPBIN)
|
||||
# We need to check for 'msbuild.exe' because at the place where we expect to
|
||||
# find 'msbuild.exe' there's also a directory called 'msbuild' and configure
|
||||
# won't find the 'msbuild.exe' executable in that case (and the
|
||||
# 'ac_executable_extensions' is unusable due to performance reasons).
|
||||
# Notice that we intentionally don't fix up the path to MSBUILD because we
|
||||
# will call it in a DOS shell during freetype detection on Windows (see
|
||||
# 'LIB_SETUP_FREETYPE' in "libraries.m4"
|
||||
AC_CHECK_PROG([MSBUILD], [msbuild$EXE_SUFFIX], [msbuild$EXE_SUFFIX],,,)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(RC, rc)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(DUMPBIN, dumpbin)
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" != xwindows; then
|
||||
UTIL_CHECK_TOOLS(STRIP, strip)
|
||||
UTIL_FIXUP_EXECUTABLE(STRIP)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(STRIP, strip)
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||
UTIL_CHECK_TOOLS(NM, nm gcc-nm)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(NM, nm gcc-nm)
|
||||
else
|
||||
UTIL_CHECK_TOOLS(NM, nm)
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(NM, nm)
|
||||
fi
|
||||
UTIL_FIXUP_EXECUTABLE(NM)
|
||||
GNM="$NM"
|
||||
AC_SUBST(GNM)
|
||||
fi
|
||||
@@ -812,25 +747,14 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_EXTRA],
|
||||
# objcopy is used for moving debug symbols to separate files when
|
||||
# full debug symbols are enabled.
|
||||
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||
UTIL_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy])
|
||||
# Only call fixup if objcopy was found.
|
||||
if test -n "$OBJCOPY"; then
|
||||
UTIL_FIXUP_EXECUTABLE(OBJCOPY)
|
||||
fi
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(OBJCOPY, gobjcopy objcopy)
|
||||
fi
|
||||
|
||||
UTIL_CHECK_TOOLS(OBJDUMP, [gobjdump objdump])
|
||||
if test "x$OBJDUMP" != x; then
|
||||
# Only used for compare.sh; we can live without it. UTIL_FIXUP_EXECUTABLE
|
||||
# bails if argument is missing.
|
||||
UTIL_FIXUP_EXECUTABLE(OBJDUMP)
|
||||
fi
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(OBJDUMP, gobjdump objdump)
|
||||
|
||||
case $TOOLCHAIN_TYPE in
|
||||
gcc|clang)
|
||||
UTIL_CHECK_TOOLS(CXXFILT, [c++filt])
|
||||
UTIL_CHECK_NONEMPTY(CXXFILT)
|
||||
UTIL_FIXUP_EXECUTABLE(CXXFILT)
|
||||
UTIL_REQUIRE_TOOLCHAIN_PROGS(CXXFILT, c++filt)
|
||||
;;
|
||||
esac
|
||||
])
|
||||
@@ -902,63 +826,57 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
BUILD_VS_INCLUDE="$BUILD_DEVKIT_VS_INCLUDE"
|
||||
BUILD_VS_LIB="$BUILD_DEVKIT_VS_LIB"
|
||||
# For historical reasons, paths are separated by ; in devkit.info
|
||||
BUILD_VS_INCLUDE="${BUILD_DEVKIT_VS_INCLUDE//;/:}"
|
||||
BUILD_VS_LIB="${BUILD_DEVKIT_VS_LIB//;/:}"
|
||||
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS([BUILD_])
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS(BUILD_, BUILD_)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# FIXME: we should list the discovered compilers as an exclude pattern!
|
||||
# If we do that, we can do this detection before POST_DETECTION, and still
|
||||
# find the build compilers in the tools dir, if needed.
|
||||
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||
UTIL_REQUIRE_PROGS(BUILD_CC, [clang cl cc gcc])
|
||||
UTIL_REQUIRE_PROGS(BUILD_CXX, [clang++ cl CC g++])
|
||||
else
|
||||
UTIL_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
|
||||
UTIL_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
|
||||
fi
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_CC)
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_CXX)
|
||||
UTIL_PATH_PROGS(BUILD_NM, nm gcc-nm)
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_NM)
|
||||
UTIL_PATH_PROGS(BUILD_AR, ar gcc-ar)
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_AR)
|
||||
UTIL_PATH_PROGS(BUILD_OBJCOPY, objcopy)
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_OBJCOPY)
|
||||
UTIL_PATH_PROGS(BUILD_STRIP, strip)
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_STRIP)
|
||||
# Assume the C compiler is the assembler
|
||||
BUILD_AS="$BUILD_CC -c"
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# In the Microsoft toolchain we have a separate LD command "link".
|
||||
# Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
|
||||
# a cygwin program for something completely different.
|
||||
AC_CHECK_PROG([BUILD_LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_LD)
|
||||
# Verify that we indeed succeeded with this trick.
|
||||
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# If we got no devkit, we need to go hunting for the proper env
|
||||
TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE($OPENJDK_BUILD_CPU, [$TOOLCHAIN_VERSION])
|
||||
TOOLCHAIN_EXTRACT_VISUAL_STUDIO_ENV($OPENJDK_BUILD_CPU, BUILD_)
|
||||
|
||||
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
|
||||
# which, in combination with WSLENV, will make the WSL layer complain
|
||||
old_path="$PATH"
|
||||
PATH=
|
||||
# We cannot currently export the VS_PATH to spec.gmk. This is probably
|
||||
# strictly not correct, but seems to work anyway.
|
||||
|
||||
"$BUILD_LD" --version > /dev/null
|
||||
|
||||
if test $? -eq 0 ; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
# Convert VS_INCLUDE and VS_LIB into sysroot flags
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS(BUILD_)
|
||||
fi
|
||||
fi
|
||||
|
||||
PATH="$old_path"
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
UTIL_REQUIRE_PROGS(BUILD_CC, cl, [$VS_PATH])
|
||||
UTIL_REQUIRE_PROGS(BUILD_CXX, cl, [$VS_PATH])
|
||||
|
||||
# On windows, the assember is "ml.exe". We currently don't need this so
|
||||
# do not require.
|
||||
UTIL_LOOKUP_PROGS(BUILD_AS, ml, [$VS_PATH])
|
||||
|
||||
# On windows, the ar tool is lib.exe (used to create static libraries).
|
||||
# We currently don't need this so do not require.
|
||||
UTIL_LOOKUP_PROGS(BUILD_AR, lib, [$VS_PATH])
|
||||
|
||||
# In the Microsoft toolchain we have a separate LD command "link".
|
||||
UTIL_REQUIRE_PROGS(BUILD_LD, link, [$VS_PATH])
|
||||
TOOLCHAIN_VERIFY_LINK_BINARY(BUILD_LD)
|
||||
BUILD_LDCXX="$BUILD_LD"
|
||||
else
|
||||
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||
UTIL_REQUIRE_PROGS(BUILD_CC, clang cc gcc)
|
||||
UTIL_REQUIRE_PROGS(BUILD_CXX, clang++ CC g++)
|
||||
else
|
||||
UTIL_REQUIRE_PROGS(BUILD_CC, cc gcc)
|
||||
UTIL_REQUIRE_PROGS(BUILD_CXX, CC g++)
|
||||
fi
|
||||
UTIL_LOOKUP_PROGS(BUILD_NM, nm gcc-nm)
|
||||
UTIL_LOOKUP_PROGS(BUILD_AR, ar gcc-ar lib)
|
||||
UTIL_LOOKUP_PROGS(BUILD_OBJCOPY, objcopy)
|
||||
UTIL_LOOKUP_PROGS(BUILD_STRIP, strip)
|
||||
# Assume the C compiler is the assembler
|
||||
BUILD_AS="$BUILD_CC -c"
|
||||
# Just like for the target compiler, use the compiler as linker
|
||||
BUILD_LD="$BUILD_CC"
|
||||
BUILD_LDCXX="$BUILD_CXX"
|
||||
@@ -1003,7 +921,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
|
||||
# Check for extra potential brokenness.
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# On Windows, double-check that we got the right compiler.
|
||||
CC_VERSION_OUTPUT=`$CC 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'`
|
||||
CC_VERSION_OUTPUT=`$CC 2>&1 1>/dev/null | $HEAD -n 1 | $TR -d '\r'`
|
||||
COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"`
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
|
||||
if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then
|
||||
@@ -1099,7 +1017,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
|
||||
if test "x$JT_HOME" = x; then
|
||||
# JT_HOME is not set in environment, or was deemed invalid.
|
||||
# Try to find jtreg on path
|
||||
UTIL_PATH_PROGS(JTREGEXE, jtreg)
|
||||
UTIL_LOOKUP_PROGS(JTREGEXE, jtreg)
|
||||
if test "x$JTREGEXE" != x; then
|
||||
# That's good, now try to derive JT_HOME
|
||||
JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
|
||||
|
||||
@@ -61,30 +61,32 @@ VS_TOOLSET_SUPPORTED_2019=true
|
||||
AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
||||
[
|
||||
if test "x$VS_ENV_CMD" = x; then
|
||||
VS_VERSION="$1"
|
||||
VS_BASE="$2"
|
||||
METHOD="$3"
|
||||
TARGET_CPU="$1"
|
||||
VS_VERSION="$2"
|
||||
VS_BASE="$3"
|
||||
METHOD="$4"
|
||||
|
||||
UTIL_REWRITE_AS_UNIX_PATH(VS_BASE)
|
||||
# In VS 2017 and VS 2019, the default installation is in a subdir named after the edition.
|
||||
# Find the first one present and use that.
|
||||
if test "x$VS_EDITIONS" != x; then
|
||||
for edition in $VS_EDITIONS; do
|
||||
if test -d "$VS_BASE/$edition"; then
|
||||
VS_BASE="$VS_BASE/$edition"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
UTIL_FIXUP_PATH(VS_BASE, NOFAIL)
|
||||
|
||||
if test "x$VS_BASE" != x && test -d "$VS_BASE"; then
|
||||
# In VS 2017 and VS 2019, the default installation is in a subdir named after the edition.
|
||||
# Find the first one present and use that.
|
||||
if test "x$VS_EDITIONS" != x; then
|
||||
for edition in $VS_EDITIONS; do
|
||||
if test -d "$VS_BASE/$edition"; then
|
||||
VS_BASE="$VS_BASE/$edition"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if test -d "$VS_BASE"; then
|
||||
AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD])
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
if test "x$TARGET_CPU" = xx86; then
|
||||
VCVARSFILES="vc/bin/vcvars32.bat vc/auxiliary/build/vcvars32.bat"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
elif test "x$TARGET_CPU" = xx86_64; then
|
||||
VCVARSFILES="vc/bin/amd64/vcvars64.bat vc/bin/x86_amd64/vcvarsx86_amd64.bat \
|
||||
VC/Auxiliary/Build/vcvarsx86_amd64.bat VC/Auxiliary/Build/vcvars64.bat"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
vc/auxiliary/build/vcvarsx86_amd64.bat vc/auxiliary/build/vcvars64.bat"
|
||||
elif test "x$TARGET_CPU" = xaarch64; then
|
||||
# for host x86-64, target aarch64
|
||||
VCVARSFILES="vc/auxiliary/build/vcvarsamd64_arm64.bat \
|
||||
vc/auxiliary/build/vcvarsx86_arm64.bat"
|
||||
@@ -114,24 +116,27 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
||||
AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT],
|
||||
[
|
||||
if test "x$VS_ENV_CMD" = x; then
|
||||
VS_VERSION="$1"
|
||||
WIN_SDK_BASE="$2"
|
||||
METHOD="$3"
|
||||
UTIL_REWRITE_AS_UNIX_PATH(WIN_SDK_BASE)
|
||||
if test -d "$WIN_SDK_BASE"; then
|
||||
TARGET_CPU="$1"
|
||||
VS_VERSION="$2"
|
||||
WIN_SDK_BASE="$3"
|
||||
METHOD="$4"
|
||||
|
||||
UTIL_FIXUP_PATH(WIN_SDK_BASE, NOFAIL)
|
||||
|
||||
if test "x$WIN_SDK_BASE" != x && test -d "$WIN_SDK_BASE"; then
|
||||
# There have been cases of partial or broken SDK installations. A missing
|
||||
# lib dir is not going to work.
|
||||
if test ! -d "$WIN_SDK_BASE/lib"; then
|
||||
AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
|
||||
AC_MSG_NOTICE([Warning: Installation is broken, lib dir is missing. Ignoring])
|
||||
elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
|
||||
elif test -f "$WIN_SDK_BASE/bin/setenv.cmd"; then
|
||||
AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
|
||||
VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
VS_ENV_CMD="$WIN_SDK_BASE/bin/setenv.cmd"
|
||||
if test "x$TARGET_CPU" = xx86; then
|
||||
VS_ENV_ARGS="/x86"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
elif test "x$TARGET_CPU" = xx86_64; then
|
||||
VS_ENV_ARGS="/x64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
elif test "x$TARGET_CPU" = xaarch64; then
|
||||
VS_ENV_ARGS="/arm64"
|
||||
fi
|
||||
# PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
|
||||
@@ -160,7 +165,8 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
||||
[specific MSVC toolset version to use, passed as -vcvars_ver argument to
|
||||
pass to vcvarsall.bat (Windows only)])])
|
||||
|
||||
VS_VERSION="$1"
|
||||
TARGET_CPU="$1"
|
||||
VS_VERSION="$2"
|
||||
eval VS_COMNTOOLS_VAR="\${VS_ENVVAR_${VS_VERSION}}"
|
||||
eval VS_COMNTOOLS="\$${VS_COMNTOOLS_VAR}"
|
||||
eval VS_INSTALL_DIR="\${VS_VS_INSTALLDIR_${VS_VERSION}}"
|
||||
@@ -174,9 +180,9 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
||||
# When using --with-tools-dir, assume it points to the correct and default
|
||||
# version of Visual Studio or that --with-toolchain-version was also set.
|
||||
if test "x$with_tools_dir" != x; then
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$with_tools_dir/../..], [--with-tools-dir])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$with_tools_dir/../../..], [--with-tools-dir])
|
||||
if test "x$VS_ENV_CMD" = x; then
|
||||
# Having specified an argument which is incorrect will produce an instant failure;
|
||||
@@ -189,45 +195,46 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
||||
fi
|
||||
|
||||
if test "x$VS_COMNTOOLS" != x; then
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$VS_COMNTOOLS/../..], [$VS_COMNTOOLS_VAR variable])
|
||||
fi
|
||||
if test "x$PROGRAMFILES" != x; then
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$PROGRAMFILES/$VS_INSTALL_DIR], [well-known name])
|
||||
fi
|
||||
# Work around the insanely named ProgramFiles(x86) env variable
|
||||
PROGRAMFILES_X86="`env | $SED -n 's/^ProgramFiles(x86)=//p'`"
|
||||
if test "x$PROGRAMFILES_X86" != x; then
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$PROGRAMFILES_X86/$VS_INSTALL_DIR], [well-known name])
|
||||
fi
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||
[C:/Program Files/$VS_INSTALL_DIR], [well-known name])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||
[C:/Program Files (x86)/$VS_INSTALL_DIR], [well-known name])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[c:/program files/$VS_INSTALL_DIR], [well-known name])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[c:/program files (x86)/$VS_INSTALL_DIR], [well-known name])
|
||||
if test "x$SDK_INSTALL_DIR" != x; then
|
||||
if test "x$ProgramW6432" != x; then
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$ProgramW6432/$SDK_INSTALL_DIR], [well-known name])
|
||||
fi
|
||||
if test "x$PROGRAMW6432" != x; then
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$PROGRAMW6432/$SDK_INSTALL_DIR], [well-known name])
|
||||
fi
|
||||
if test "x$PROGRAMFILES" != x; then
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[$PROGRAMFILES/$SDK_INSTALL_DIR], [well-known name])
|
||||
fi
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
|
||||
[C:/Program Files/$SDK_INSTALL_DIR], [well-known name])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
|
||||
[C:/Program Files (x86)/$SDK_INSTALL_DIR], [well-known name])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[c:/program files/$SDK_INSTALL_DIR], [well-known name])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$TARGET_CPU], [$VS_VERSION],
|
||||
[c:/program files (x86)/$SDK_INSTALL_DIR], [well-known name])
|
||||
fi
|
||||
|
||||
VCVARS_VER=auto
|
||||
if test "x$VS_TOOLSET_SUPPORTED" != x; then
|
||||
if test "x$with_msvc_toolset_version" != x; then
|
||||
VS_ENV_ARGS="$VS_ENV_ARGS -vcvars_ver=$with_msvc_toolset_version"
|
||||
VCVARS_VER="$with_msvc_toolset_version"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
@@ -264,44 +271,9 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO],
|
||||
eval VS_SUPPORTED="\${VS_SUPPORTED_${VS_VERSION}}"
|
||||
eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
|
||||
|
||||
# The TOOLCHAIN_PATH from a devkit is in Unix format. In WSL we need a
|
||||
# windows version of the complete VS_PATH as VS_PATH_WINDOWS
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
# Convert the toolchain path
|
||||
OLDIFS="$IFS"
|
||||
IFS=":"
|
||||
VS_PATH_WINDOWS=""
|
||||
for i in $TOOLCHAIN_PATH; do
|
||||
path=$i
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([path])
|
||||
VS_PATH_WINDOWS="$VS_PATH_WINDOWS;$path"
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
# Append the current path from Windows env
|
||||
WINDOWS_PATH="`$CMD /c echo %PATH%`"
|
||||
VS_PATH_WINDOWS="$VS_PATH_WINDOWS;$WINDOWS_PATH"
|
||||
else
|
||||
VS_PATH="$TOOLCHAIN_PATH:$PATH"
|
||||
fi
|
||||
|
||||
# Convert DEVKIT_VS_INCLUDE into windows style VS_INCLUDE so that it
|
||||
# can still be exported as INCLUDE for compiler invocations without
|
||||
# SYSROOT_CFLAGS
|
||||
OLDIFS="$IFS"
|
||||
IFS=";"
|
||||
for i in $DEVKIT_VS_INCLUDE; do
|
||||
ipath=$i
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([ipath])
|
||||
VS_INCLUDE="$VS_INCLUDE;$ipath"
|
||||
done
|
||||
# Convert DEVKIT_VS_LIB into VS_LIB so that it can still be exported
|
||||
# as LIB for compiler invocations without SYSROOT_LDFLAGS
|
||||
for i in $DEVKIT_VS_LIB; do
|
||||
libpath=$i
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([libpath])
|
||||
VS_LIB="$VS_LIB;$libpath"
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
# For historical reasons, paths are separated by ; in devkit.info
|
||||
VS_INCLUDE=${DEVKIT_VS_INCLUDE//;/:}
|
||||
VS_LIB=${DEVKIT_VS_LIB//;/:}
|
||||
|
||||
AC_MSG_NOTICE([Found devkit $VS_DESCRIPTION])
|
||||
|
||||
@@ -319,7 +291,7 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO],
|
||||
fi
|
||||
|
||||
for VS_VERSION in $VS_VERSIONS_PROBE_LIST; do
|
||||
TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE([$VS_VERSION])
|
||||
TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE($OPENJDK_TARGET_CPU, [$VS_VERSION])
|
||||
if test "x$VS_ENV_CMD" != x; then
|
||||
TOOLCHAIN_VERSION=$VS_VERSION
|
||||
eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
|
||||
@@ -341,206 +313,118 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO],
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([TOOLCHAIN_EXTRACT_VISUAL_STUDIO_ENV],
|
||||
[
|
||||
TARGET_CPU=$1
|
||||
|
||||
AC_MSG_NOTICE([Trying to extract Visual Studio environment variables for $TARGET_CPU])
|
||||
AC_MSG_NOTICE([using $VS_ENV_CMD $VS_ENV_ARGS])
|
||||
|
||||
VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env-$TARGET_CPU"
|
||||
$MKDIR -p $VS_ENV_TMP_DIR
|
||||
|
||||
# Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
|
||||
# Instead create a shell script which will set the relevant variables when run.
|
||||
|
||||
OLDPATH="$PATH"
|
||||
# Make sure we only capture additions to PATH needed by VS.
|
||||
# Clear out path, but need system dir present for vsvars cmd file to be able to run
|
||||
export PATH=$WINENV_PREFIX/c/windows/system32
|
||||
# The "| cat" is to stop SetEnv.Cmd to mess with system colors on some systems
|
||||
# We can't pass -vcvars_ver=$VCVARS_VER here because cmd.exe eats all '='
|
||||
# in bat file arguments. :-(
|
||||
$FIXPATH $CMD /c "$TOPDIR/make/scripts/extract-vs-env.cmd" "$VS_ENV_CMD" \
|
||||
"$VS_ENV_TMP_DIR/set-vs-env.sh" $VCVARS_VER $VS_ENV_ARGS \
|
||||
> $VS_ENV_TMP_DIR/extract-vs-env.log | $CAT 2>&1
|
||||
PATH="$OLDPATH"
|
||||
|
||||
if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
|
||||
AC_MSG_NOTICE([Could not succesfully extract the environment variables needed for the VS setup.])
|
||||
AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation.])
|
||||
AC_MSG_NOTICE([To analyze the problem, see extract-vs-env.log and extract-vs-env.bat in])
|
||||
AC_MSG_NOTICE([$VS_ENV_TMP_DIR.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
|
||||
# Remove windows line endings
|
||||
$SED -i -e 's|\r||g' $VS_ENV_TMP_DIR/set-vs-env.sh
|
||||
|
||||
# Now set all paths and other env variables by executing the generated
|
||||
# shell script. This will allow the rest of the configure script to find
|
||||
# and run the compiler in the proper way.
|
||||
AC_MSG_NOTICE([Setting extracted environment variables for $TARGET_CPU])
|
||||
. $VS_ENV_TMP_DIR/set-vs-env.sh
|
||||
|
||||
# Extract only what VS_ENV_CMD added to the PATH
|
||||
VS_PATH=${PATH_AFTER/"$PATH_BEFORE"}
|
||||
VS_PATH=${VS_PATH//::/:}
|
||||
|
||||
# Remove any paths containing # (typically F#) as that messes up make. This
|
||||
# is needed if visual studio was installed with F# support.
|
||||
[ VS_PATH=`$ECHO "$VS_PATH" | $SED 's/[^:#]*#[^:]*://g'` ]
|
||||
|
||||
# Sometimes case is off
|
||||
if test -z "$WINDOWSSDKDIR"; then
|
||||
WINDOWSSDKDIR="$WindowsSdkDir"
|
||||
fi
|
||||
# Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
|
||||
# also define VCINSTALLDIR and WINDOWSSDKDIR. All are in
|
||||
# unix style.
|
||||
])
|
||||
|
||||
################################################################################
|
||||
# Check if the VS env variables were setup prior to running configure.
|
||||
# If not, then find vcvarsall.bat and run it automatically, and integrate
|
||||
# the set env variables into the spec file.
|
||||
AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
|
||||
[
|
||||
# Store path to cygwin link.exe to help excluding it when searching for
|
||||
# VS linker. This must be done before changing the PATH when looking for VS.
|
||||
AC_PATH_PROG(CYGWIN_LINK, link.exe)
|
||||
if test "x$CYGWIN_LINK" != x; then
|
||||
AC_MSG_CHECKING([if the first found link.exe is actually the Cygwin link tool])
|
||||
"$CYGWIN_LINK" --version > /dev/null
|
||||
if test $? -eq 0 ; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
# This might be the VS linker. Don't exclude it later on.
|
||||
CYGWIN_LINK=""
|
||||
fi
|
||||
fi
|
||||
|
||||
# First-hand choice is to locate and run the vsvars bat file.
|
||||
# Locate the vsvars bat file and save it as VS_ENV_CMD
|
||||
TOOLCHAIN_FIND_VISUAL_STUDIO
|
||||
|
||||
# If we have a devkit, skip all of the below.
|
||||
# If we have a devkit, we don't need to run VS_ENV_CMD
|
||||
if test "x$DEVKIT_VS_VERSION" = x; then
|
||||
if test "x$VS_ENV_CMD" != x; then
|
||||
# We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
|
||||
UTIL_FIXUP_EXECUTABLE(VS_ENV_CMD)
|
||||
# We have found a Visual Studio environment on disk, let's extract variables
|
||||
# from the vsvars bat file into shell variables in the configure script.
|
||||
TOOLCHAIN_EXTRACT_VISUAL_STUDIO_ENV($OPENJDK_TARGET_CPU)
|
||||
|
||||
# Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
|
||||
AC_MSG_NOTICE([Trying to extract Visual Studio environment variables])
|
||||
|
||||
# We need to create a couple of temporary files.
|
||||
VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
|
||||
$MKDIR -p $VS_ENV_TMP_DIR
|
||||
|
||||
# Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
|
||||
# Instead create a shell script which will set the relevant variables when run.
|
||||
WINPATH_VS_ENV_CMD="$VS_ENV_CMD"
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_VS_ENV_CMD])
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
WINPATH_BASH="bash"
|
||||
else
|
||||
WINPATH_BASH="$BASH"
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_BASH])
|
||||
fi
|
||||
|
||||
# Generate a DOS batch file which runs $VS_ENV_CMD, and then creates a shell
|
||||
# script (executable by bash) that will setup the important variables.
|
||||
EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat"
|
||||
$ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE
|
||||
# This will end up something like:
|
||||
# call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat
|
||||
$ECHO "call \"$WINPATH_VS_ENV_CMD\" $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE
|
||||
# In some cases, the VS_ENV_CMD will change directory, change back so
|
||||
# the set-vs-env.sh ends up in the right place.
|
||||
$ECHO 'cd %~dp0' >> $EXTRACT_VC_ENV_BAT_FILE
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
# These will end up something like:
|
||||
# echo VS_PATH=\"$PATH\" > set-vs-env.sh
|
||||
# The trailing space for everyone except PATH is no typo, but is needed due
|
||||
# to trailing \ in the Windows paths. These will be stripped later.
|
||||
# Trying pure CMD extract. This results in windows paths that need to
|
||||
# be converted post extraction, but a simpler script.
|
||||
$ECHO 'echo VS_PATH="%PATH%" > set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO 'echo VS_INCLUDE="%INCLUDE% " >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO 'echo VS_LIB="%LIB% " >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO 'echo VCINSTALLDIR="%VCINSTALLDIR% " >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO 'echo VCToolsRedistDir="%VCToolsRedistDir% " >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO 'echo WindowsSdkDir="%WindowsSdkDir% " >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO 'echo WINDOWSSDKDIR="%WINDOWSSDKDIR% " >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
else
|
||||
# These will end up something like:
|
||||
# C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
|
||||
# The trailing space for everyone except PATH is no typo, but is needed due
|
||||
# to trailing \ in the Windows paths. These will be stripped later.
|
||||
$ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo VCToolsRedistDir="'\"$VCToolsRedistDir \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
fi
|
||||
|
||||
# Now execute the newly created bat file.
|
||||
# Change directory so we don't need to mess with Windows paths in redirects.
|
||||
cd $VS_ENV_TMP_DIR
|
||||
$CMD /c extract-vs-env.bat > extract-vs-env.log 2>&1
|
||||
cd $CONFIGURE_START_DIR
|
||||
|
||||
if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
|
||||
AC_MSG_NOTICE([Could not succesfully extract the environment variables needed for the VS setup.])
|
||||
AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
|
||||
AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
|
||||
# Remove windows line endings
|
||||
$SED -i -e 's|\r||g' $VS_ENV_TMP_DIR/set-vs-env.sh
|
||||
|
||||
# Now set all paths and other env variables. This will allow the rest of
|
||||
# the configure script to find and run the compiler in the proper way.
|
||||
AC_MSG_NOTICE([Setting extracted environment variables])
|
||||
. $VS_ENV_TMP_DIR/set-vs-env.sh
|
||||
# Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
|
||||
# also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
|
||||
|
||||
# In WSL, the extracted VS_PATH is Windows style. This needs to be
|
||||
# rewritten as Unix style and the Windows style version is saved
|
||||
# in VS_PATH_WINDOWS.
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
OLDIFS="$IFS"
|
||||
IFS=";"
|
||||
# Convert VS_PATH to unix style
|
||||
VS_PATH_WINDOWS="$VS_PATH"
|
||||
VS_PATH=""
|
||||
for i in $VS_PATH_WINDOWS; do
|
||||
path=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$path" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$path
|
||||
UTIL_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
UTIL_FIXUP_PATH([path])
|
||||
UTIL_APPEND_TO_PATH(VS_PATH, $path)
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
fi
|
||||
|
||||
# also define VCINSTALLDIR and WINDOWSSDKDIR. All are in
|
||||
# unix style.
|
||||
else
|
||||
# We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
|
||||
AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment])
|
||||
# We did not find a vsvars bat file.
|
||||
AC_MSG_ERROR([Cannot locate a valid Visual Studio installation])
|
||||
fi
|
||||
fi
|
||||
|
||||
# At this point, we should have correct variables in the environment, or we can't continue.
|
||||
AC_MSG_CHECKING([for Visual Studio variables])
|
||||
# At this point, we should have correct variables in the environment
|
||||
AC_MSG_CHECKING([that Visual Studio variables have been correctly extracted])
|
||||
|
||||
if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x \
|
||||
|| test "x$WINDOWSSDKDIR" != x || test "x$DEVKIT_NAME" != x; then
|
||||
if test "x$VCINSTALLDIR" != x || test "x$WINDOWSSDKDIR" != x \
|
||||
|| test "x$DEVKIT_NAME" != x; then
|
||||
if test "x$VS_INCLUDE" = x || test "x$VS_LIB" = x; then
|
||||
AC_MSG_RESULT([present but broken])
|
||||
AC_MSG_RESULT([no; Visual Studio present but broken])
|
||||
AC_MSG_ERROR([Your VC command prompt seems broken, INCLUDE and/or LIB is missing.])
|
||||
else
|
||||
AC_MSG_RESULT([ok])
|
||||
# Remove any trailing "\" ";" and " " from the variables.
|
||||
VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED -e 's/\\\\*;* *$//'`
|
||||
VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\*;* *$//'`
|
||||
VCINSTALLDIR=`$ECHO "$VCINSTALLDIR" | $SED 's/\\\\* *$//'`
|
||||
VCToolsRedistDir=`$ECHO "$VCToolsRedistDir" | $SED 's/\\\\* *$//'`
|
||||
WindowsSdkDir=`$ECHO "$WindowsSdkDir" | $SED 's/\\\\* *$//'`
|
||||
WINDOWSSDKDIR=`$ECHO "$WINDOWSSDKDIR" | $SED 's/\\\\* *$//'`
|
||||
if test -z "$WINDOWSSDKDIR"; then
|
||||
WINDOWSSDKDIR="$WindowsSdkDir"
|
||||
fi
|
||||
# Remove any paths containing # (typically F#) as that messes up make. This
|
||||
# is needed if visual studio was installed with F# support.
|
||||
VS_PATH=`$ECHO "$VS_PATH" | $SED 's/[[^:#]]*#[^:]*://g'`
|
||||
|
||||
AC_SUBST(VS_PATH)
|
||||
AC_SUBST(VS_INCLUDE)
|
||||
AC_SUBST(VS_LIB)
|
||||
# Turn VS_PATH into TOOLCHAIN_PATH
|
||||
TOOLCHAIN_PATH="$TOOLCHAIN_PATH:$VS_PATH"
|
||||
|
||||
# Convert VS_INCLUDE and VS_LIB into sysroot flags
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS
|
||||
|
||||
AC_SUBST(VS_PATH_WINDOWS)
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([not found])
|
||||
|
||||
if test "x$VS_ENV_CMD" = x; then
|
||||
AC_MSG_NOTICE([Cannot locate a valid Visual Studio or Windows SDK installation on disk,])
|
||||
AC_MSG_NOTICE([nor is this script run from a Visual Studio command prompt.])
|
||||
AC_MSG_NOTICE([Cannot locate a valid Visual Studio or Windows SDK installation on disk])
|
||||
else
|
||||
AC_MSG_NOTICE([Running the extraction script failed.])
|
||||
AC_MSG_NOTICE([Running the extraction script failed])
|
||||
fi
|
||||
AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
|
||||
AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
|
||||
AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation.])
|
||||
AC_MSG_NOTICE([To analyze the problem, see extract-vs-env.log and extract-vs-env.bat in])
|
||||
AC_MSG_NOTICE([$VS_ENV_TMP_DIR.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
])
|
||||
@@ -556,25 +440,15 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL],
|
||||
# Need to check if the found msvcr is correct architecture
|
||||
AC_MSG_CHECKING([found $DLL_NAME architecture])
|
||||
MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
# The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
|
||||
# on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
|
||||
CORRECT_MSVCR_ARCH="PE32 executable"
|
||||
else
|
||||
CORRECT_MSVCR_ARCH="PE32+ executable"
|
||||
fi
|
||||
else
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
CORRECT_MSVCR_ARCH=386
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
CORRECT_MSVCR_ARCH=x86-64
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
# The cygwin 'file' command only returns "PE32+ executable (DLL) (console), for MS Windows",
|
||||
# without specifying which architecture it is for specifically. This has been fixed upstream.
|
||||
# https://github.com/file/file/commit/b849b1af098ddd530094bf779b58431395db2e10#diff-ff2eced09e6860de75057dd731d092aeR142
|
||||
CORRECT_MSVCR_ARCH="PE32+ executable"
|
||||
fi
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
CORRECT_MSVCR_ARCH=386
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
CORRECT_MSVCR_ARCH=x86-64
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
# The cygwin 'file' command only returns "PE32+ executable (DLL) (console), for MS Windows",
|
||||
# without specifying which architecture it is for specifically. This has been fixed upstream.
|
||||
# https://github.com/file/file/commit/b849b1af098ddd530094bf779b58431395db2e10#diff-ff2eced09e6860de75057dd731d092aeR142
|
||||
CORRECT_MSVCR_ARCH="PE32+ executable"
|
||||
fi
|
||||
if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
|
||||
AC_MSG_RESULT([ok])
|
||||
@@ -603,20 +477,15 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
|
||||
if test "x$MSVC_DLL" = x; then
|
||||
if test "x$VCINSTALLDIR" != x; then
|
||||
CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR"
|
||||
UTIL_FIXUP_PATH(CYGWIN_VC_INSTALL_DIR)
|
||||
if test "$VS_VERSION" -lt 2017; then
|
||||
# Probe: Using well-known location from Visual Studio 12.0 and older
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/$vs_target_cpu/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
POSSIBLE_MSVC_DLL="$VCINSTALLDIR/redist/$vs_target_cpu/microsoft.vc${VS_VERSION_INTERNAL}.crt/$DLL_NAME"
|
||||
else
|
||||
CYGWIN_VC_TOOLS_REDIST_DIR="$VCToolsRedistDir"
|
||||
UTIL_FIXUP_PATH(CYGWIN_VC_TOOLS_REDIST_DIR)
|
||||
# Probe: Using well-known location from VS 2017 and VS 2019
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_TOOLS_REDIST_DIR/$vs_target_cpu/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
POSSIBLE_MSVC_DLL="`ls $VCToolsRedistDir/$vs_target_cpu/microsoft.vc${VS_VERSION_INTERNAL}.crt/$DLL_NAME 2> /dev/null`"
|
||||
fi
|
||||
# In case any of the above finds more than one file, loop over them.
|
||||
for possible_msvc_dll in $POSSIBLE_MSVC_DLL; do
|
||||
$ECHO "POSSIBLE_MSVC_DLL $possible_msvc_dll"
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$possible_msvc_dll],
|
||||
[well-known location in VCINSTALLDIR])
|
||||
done
|
||||
@@ -632,40 +501,44 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
|
||||
if test "x$MSVC_DLL" = x; then
|
||||
# Probe: Look in the Windows system32 directory
|
||||
CYGWIN_SYSTEMROOT="$SYSTEMROOT"
|
||||
UTIL_REWRITE_AS_UNIX_PATH(CYGWIN_SYSTEMROOT)
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_SYSTEMROOT/system32/$DLL_NAME"
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
[well-known location in SYSTEMROOT])
|
||||
WIN_SYSTEMROOT="$SYSTEMROOT"
|
||||
UTIL_FIXUP_PATH(WIN_SYSTEMROOT, NOFAIL)
|
||||
if test "x$WIN_SYSTEMROOT" != x; then
|
||||
POSSIBLE_MSVC_DLL="$WIN_SYSTEMROOT/system32/$DLL_NAME"
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
[well-known location in SYSTEMROOT])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$MSVC_DLL" = x; then
|
||||
# Probe: If Visual Studio Express is installed, there is usually one with the debugger
|
||||
if test "x$VS100COMNTOOLS" != x; then
|
||||
CYGWIN_VS_TOOLS_DIR="$VS100COMNTOOLS/.."
|
||||
UTIL_REWRITE_AS_UNIX_PATH(CYGWIN_VS_TOOLS_DIR)
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
WIN_VS_TOOLS_DIR="$VS100COMNTOOLS/.."
|
||||
UTIL_FIXUP_PATH(WIN_VS_TOOLS_DIR, NOFAIL)
|
||||
if test "x$WIN_VS_TOOLS_DIR" != x; then
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$WIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
| $GREP -i /$vs_target_cpu/ | $HEAD --lines 1`
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
[search of VS100COMNTOOLS])
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
[search of VS100COMNTOOLS])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$MSVC_DLL" = x; then
|
||||
# Probe: Search wildly in the VCINSTALLDIR. We've probably lost by now.
|
||||
# (This was the original behaviour; kept since it might turn something up)
|
||||
if test "x$CYGWIN_VC_INSTALL_DIR" != x; then
|
||||
if test "x$VCINSTALLDIR" != x; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$VCINSTALLDIR" -name $DLL_NAME \
|
||||
| $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $GREP -v arm64 | $HEAD --lines 1`
|
||||
if test "x$POSSIBLE_MSVC_DLL" = x; then
|
||||
# We're grasping at straws now...
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$VCINSTALLDIR" -name $DLL_NAME \
|
||||
| $HEAD --lines 1`
|
||||
fi
|
||||
else
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $GREP $vs_target_cpu | $HEAD --lines 1`
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$VCINSTALLDIR" -name $DLL_NAME \
|
||||
| $GREP x64 | $HEAD --lines 1`
|
||||
fi
|
||||
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
@@ -729,9 +602,9 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(vcruntime-1-dll, [AS_HELP_STRING([--with-vcruntime-1-dll],
|
||||
[path to microsoft C++ runtime dll (vcruntime*_1.dll) (Windows 64-bits only) @<:@probed@:>@])])
|
||||
[path to microsoft C++ runtime dll (vcruntime*_1.dll) (Windows x64 only) @<:@probed@:>@])])
|
||||
|
||||
if test "x$VCRUNTIME_1_NAME" != "x" -a "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
if test "x$VCRUNTIME_1_NAME" != "x" && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
if test "x$with_vcruntime_1_dll" != x; then
|
||||
# If given explicitly by user, do not probe. If not present, fail directly.
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($VCRUNTIME_1_NAME, [$with_vcruntime_1_dll],
|
||||
@@ -750,13 +623,13 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
TOOLCHAIN_SETUP_MSVC_DLL([${VCRUNTIME_1_NAME}])
|
||||
VCRUNTIME_1_DLL="$MSVC_DLL"
|
||||
fi
|
||||
AC_SUBST(VCRUNTIME_1_DLL)
|
||||
fi
|
||||
AC_SUBST(VCRUNTIME_1_DLL)
|
||||
|
||||
AC_ARG_WITH(ucrt-dll-dir, [AS_HELP_STRING([--with-ucrt-dll-dir],
|
||||
[path to Microsoft Windows Kit UCRT DLL dir (Windows only) @<:@probed@:>@])])
|
||||
|
||||
if test "x$USE_UCRT" = "xtrue"; then
|
||||
if test "x$USE_UCRT" = "xtrue" && test "x$OPENJDK_TARGET_CPU" != xaarch64; then
|
||||
AC_MSG_CHECKING([for UCRT DLL dir])
|
||||
if test "x$with_ucrt_dll_dir" != x; then
|
||||
if test -z "$(ls -d "$with_ucrt_dll_dir/"*.dll 2> /dev/null)"; then
|
||||
@@ -771,19 +644,16 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
UCRT_DLL_DIR="$DEVKIT_UCRT_DLL_DIR"
|
||||
AC_MSG_RESULT($UCRT_DLL_DIR)
|
||||
else
|
||||
CYGWIN_WINDOWSSDKDIR="${WINDOWSSDKDIR}"
|
||||
UTIL_FIXUP_PATH([CYGWIN_WINDOWSSDKDIR])
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
dll_subdir=$OPENJDK_TARGET_CPU
|
||||
if test "x$dll_subdir" = "xaarch64"; then
|
||||
dll_subdir="arm64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
elif test "x$dll_subdir" = "xx86_64"; then
|
||||
dll_subdir="x64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xx86"; then
|
||||
dll_subdir="x86"
|
||||
fi
|
||||
UCRT_DLL_DIR="$CYGWIN_WINDOWSSDKDIR/Redist/ucrt/DLLs/$dll_subdir"
|
||||
UCRT_DLL_DIR="$WINDOWSSDKDIR/redist/ucrt/dlls/$dll_subdir"
|
||||
if test -z "$(ls -d "$UCRT_DLL_DIR/"*.dll 2> /dev/null)"; then
|
||||
# Try with version subdir
|
||||
UCRT_DLL_DIR="`ls -d $CYGWIN_WINDOWSSDKDIR/Redist/*/ucrt/DLLs/$dll_subdir \
|
||||
UCRT_DLL_DIR="`ls -d $WINDOWSSDKDIR/redist/*/ucrt/dlls/$dll_subdir \
|
||||
2> /dev/null | $SORT -d | $HEAD -n1`"
|
||||
if test -z "$UCRT_DLL_DIR" \
|
||||
|| test -z "$(ls -d "$UCRT_DLL_DIR/"*.dll 2> /dev/null)"; then
|
||||
@@ -805,43 +675,23 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
|
||||
# that configure can use them while detecting compilers.
|
||||
# TOOLCHAIN_TYPE is available here.
|
||||
# Param 1 - Optional prefix to all variables. (e.g BUILD_)
|
||||
# Param 1 - Optional prefix to SYSROOT variables. (e.g BUILD_)
|
||||
# Param 2 - Optional prefix to VS variables. (e.g BUILD_)
|
||||
AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS],
|
||||
[
|
||||
OLDIFS="$IFS"
|
||||
IFS=";"
|
||||
# Convert $1VS_INCLUDE into $1SYSROOT_CFLAGS
|
||||
for i in [$]$1VS_INCLUDE; do
|
||||
ipath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$ipath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$ipath
|
||||
UTIL_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
UTIL_FIXUP_PATH([ipath])
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -I$ipath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
IFS=":"
|
||||
|
||||
# Convert VS_INCLUDE into SYSROOT_CFLAGS
|
||||
for ipath in [$]$2VS_INCLUDE; do
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -I$ipath"
|
||||
done
|
||||
# Convert $1VS_LIB into $1SYSROOT_LDFLAGS
|
||||
for i in [$]$1VS_LIB; do
|
||||
libpath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$libpath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$libpath
|
||||
UTIL_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
UTIL_FIXUP_PATH([libpath])
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -libpath:$libpath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
|
||||
# Convert VS_LIB into SYSROOT_LDFLAGS
|
||||
for libpath in [$]$2VS_LIB; do
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -libpath:$libpath"
|
||||
done
|
||||
|
||||
IFS="$OLDIFS"
|
||||
|
||||
AC_SUBST($1SYSROOT_CFLAGS)
|
||||
@@ -24,7 +24,6 @@
|
||||
#
|
||||
|
||||
m4_include([util_paths.m4])
|
||||
m4_include([util_windows.m4])
|
||||
|
||||
###############################################################################
|
||||
# Create a function/macro that takes a series of named arguments. The call is
|
||||
@@ -462,151 +461,3 @@ UTIL_DEFUN_NAMED([UTIL_ARG_ENABLE],
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
|
||||
# $1: variable to check
|
||||
AC_DEFUN([UTIL_CHECK_NONEMPTY],
|
||||
[
|
||||
if test "x[$]$1" = x; then
|
||||
AC_MSG_ERROR([Could not find required tool for $1])
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Setup a tool for the given variable. If correctly specified by the user,
|
||||
# use that value, otherwise search for the tool using the supplied code snippet.
|
||||
# $1: variable to set
|
||||
# $2: code snippet to call to look for the tool
|
||||
# $3: code snippet to call if variable was used to find tool
|
||||
AC_DEFUN([UTIL_SETUP_TOOL],
|
||||
[
|
||||
# Publish this variable in the help.
|
||||
AC_ARG_VAR($1, [Override default value for $1])
|
||||
|
||||
if [[ -z "${$1+x}" ]]; then
|
||||
# The variable is not set by user, try to locate tool using the code snippet
|
||||
$2
|
||||
else
|
||||
# The variable is set, but is it from the command line or the environment?
|
||||
|
||||
# Try to remove the string !$1! from our list.
|
||||
try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!$1!/}
|
||||
if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
|
||||
# If it failed, the variable was not from the command line. Ignore it,
|
||||
# but warn the user (except for BASH, which is always set by the calling BASH).
|
||||
if test "x$1" != xBASH; then
|
||||
AC_MSG_WARN([Ignoring value of $1 from the environment. Use command line variables instead.])
|
||||
fi
|
||||
# Try to locate tool using the code snippet
|
||||
$2
|
||||
else
|
||||
# If it succeeded, then it was overridden by the user. We will use it
|
||||
# for the tool.
|
||||
|
||||
# First remove it from the list of overridden variables, so we can test
|
||||
# for unknown variables in the end.
|
||||
CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
|
||||
|
||||
tool_override=[$]$1
|
||||
AC_MSG_NOTICE([User supplied override $1="$tool_override"])
|
||||
|
||||
# Check if we try to supply an empty value
|
||||
if test "x$tool_override" = x; then
|
||||
AC_MSG_CHECKING([for $1])
|
||||
AC_MSG_RESULT([disabled])
|
||||
else
|
||||
# Split up override in command part and argument part
|
||||
tool_and_args=($tool_override)
|
||||
[ tool_command=${tool_and_args[0]} ]
|
||||
[ unset 'tool_and_args[0]' ]
|
||||
[ tool_args=${tool_and_args[@]} ]
|
||||
|
||||
# Check if the provided tool contains a complete path.
|
||||
tool_basename="${tool_command##*/}"
|
||||
if test "x$tool_basename" = "x$tool_command"; then
|
||||
# A command without a complete path is provided, search $PATH.
|
||||
AC_MSG_NOTICE([Will search for user supplied tool "$tool_basename"])
|
||||
AC_PATH_PROG($1, $tool_basename)
|
||||
if test "x[$]$1" = x; then
|
||||
AC_MSG_ERROR([User supplied tool $1="$tool_basename" could not be found])
|
||||
fi
|
||||
else
|
||||
# Otherwise we believe it is a complete path. Use it as it is.
|
||||
AC_MSG_NOTICE([Will use user supplied tool "$tool_command"])
|
||||
AC_MSG_CHECKING([for $tool_command])
|
||||
if test ! -x "$tool_command" && test ! -x "$tool_command.exe"; then
|
||||
AC_MSG_RESULT([not found])
|
||||
AC_MSG_ERROR([User supplied tool $1="$tool_command" does not exist or is not executable])
|
||||
fi
|
||||
$1="$tool_command"
|
||||
AC_MSG_RESULT([found])
|
||||
fi
|
||||
if test "x$tool_args" != x; then
|
||||
# If we got arguments, re-append them to the command after the fixup.
|
||||
$1="[$]$1 $tool_args"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
$3
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Call UTIL_SETUP_TOOL with AC_PATH_PROGS to locate the tool
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
# $3: [path]
|
||||
AC_DEFUN([UTIL_PATH_PROGS],
|
||||
[
|
||||
UTIL_SETUP_TOOL($1, [AC_PATH_PROGS($1, $2, , $3)])
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Call UTIL_SETUP_TOOL with AC_CHECK_TOOLS to locate the tool
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
AC_DEFUN([UTIL_CHECK_TOOLS],
|
||||
[
|
||||
UTIL_SETUP_TOOL($1, [AC_CHECK_TOOLS($1, $2)])
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Like UTIL_PATH_PROGS but fails if no tool was found.
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
# $3: [path]
|
||||
AC_DEFUN([UTIL_REQUIRE_PROGS],
|
||||
[
|
||||
UTIL_PATH_PROGS($1, $2, , $3)
|
||||
UTIL_CHECK_NONEMPTY($1)
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Like UTIL_SETUP_TOOL but fails if no tool was found.
|
||||
# $1: variable to set
|
||||
# $2: autoconf macro to call to look for the special tool
|
||||
AC_DEFUN([UTIL_REQUIRE_SPECIAL],
|
||||
[
|
||||
UTIL_SETUP_TOOL($1, [$2])
|
||||
UTIL_CHECK_NONEMPTY($1)
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Like UTIL_REQUIRE_PROGS but also allows for bash built-ins
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
# $3: [path]
|
||||
AC_DEFUN([UTIL_REQUIRE_BUILTIN_PROGS],
|
||||
[
|
||||
UTIL_SETUP_TOOL($1, [AC_PATH_PROGS($1, $2, , $3)])
|
||||
if test "x[$]$1" = x; then
|
||||
AC_MSG_NOTICE([Required tool $2 not found in PATH, checking built-in])
|
||||
if type -p $2 > /dev/null 2>&1; then
|
||||
AC_MSG_NOTICE([Found $2 as shell built-in. Using it])
|
||||
$1="$2"
|
||||
else
|
||||
AC_MSG_ERROR([Required tool $2 also not found as built-in.])
|
||||
fi
|
||||
fi
|
||||
UTIL_CHECK_NONEMPTY($1)
|
||||
])
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
###############################################################################
|
||||
# Appends a string to a path variable, only adding the : when needed.
|
||||
AC_DEFUN([UTIL_APPEND_TO_PATH],
|
||||
[
|
||||
@@ -35,6 +36,7 @@ AC_DEFUN([UTIL_APPEND_TO_PATH],
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Prepends a string to a path variable, only adding the : when needed.
|
||||
AC_DEFUN([UTIL_PREPEND_TO_PATH],
|
||||
[
|
||||
@@ -47,34 +49,6 @@ AC_DEFUN([UTIL_PREPEND_TO_PATH],
|
||||
fi
|
||||
])
|
||||
|
||||
################################################################################
|
||||
# This will make a path absolute. Assumes it's already a unix path. Also
|
||||
# resolves ~ to homedir.
|
||||
AC_DEFUN([UTIL_ABSOLUTE_PATH],
|
||||
[
|
||||
if test "x[$]$1" != x; then
|
||||
new_path="[$]$1"
|
||||
|
||||
# Use eval to expand a potential ~. This technique does not work if there
|
||||
# are spaces in the path (which is valid at this point on Windows), so only
|
||||
# try to apply it if there is an actual ~ first in the path.
|
||||
if [ [[ "$new_path" = "~"* ]] ]; then
|
||||
eval new_path="$new_path"
|
||||
if test ! -f "$new_path" && test ! -d "$new_path"; then
|
||||
AC_MSG_ERROR([The new_path of $1, which resolves as "$new_path", is not found.])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -d "$new_path"; then
|
||||
$1="`cd "$new_path"; $THEPWDCMD -L`"
|
||||
else
|
||||
dir="`$DIRNAME "$new_path"`"
|
||||
base="`$BASENAME "$new_path"`"
|
||||
$1="`cd "$dir"; $THEPWDCMD -L`/$base"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# This will make sure the given variable points to a full and proper
|
||||
# path. This means:
|
||||
@@ -84,31 +58,100 @@ AC_DEFUN([UTIL_ABSOLUTE_PATH],
|
||||
# 2) The path will be absolute, and it will be in unix-style (on
|
||||
# cygwin).
|
||||
# $1: The name of the variable to fix
|
||||
# $2: if NOFAIL, errors will be silently ignored
|
||||
AC_DEFUN([UTIL_FIXUP_PATH],
|
||||
[
|
||||
# Only process if variable expands to non-empty
|
||||
if test "x[$]$1" != x; then
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
UTIL_FIXUP_PATH_CYGWIN($1)
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
UTIL_FIXUP_PATH_MSYS($1)
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
UTIL_FIXUP_PATH_WSL($1)
|
||||
path="[$]$1"
|
||||
if test "x$path" != x; then
|
||||
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
if test "x$2" = "xNOFAIL"; then
|
||||
quiet_option="-q"
|
||||
fi
|
||||
imported_path=`$FIXPATH_BASE $quiet_option import "$path"`
|
||||
$FIXPATH_BASE verify "$imported_path"
|
||||
if test $? -ne 0; then
|
||||
if test "x$2" != "xNOFAIL"; then
|
||||
AC_MSG_ERROR([The path of $1, which resolves as "$path", could not be imported.])
|
||||
else
|
||||
imported_path=""
|
||||
fi
|
||||
fi
|
||||
if test "x$imported_path" != "x$path"; then
|
||||
$1="$imported_path"
|
||||
fi
|
||||
else
|
||||
# We're on a unix platform. Hooray! :)
|
||||
path="[$]$1"
|
||||
has_space=`$ECHO "$path" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
|
||||
AC_MSG_ERROR([Spaces are not allowed in this path.])
|
||||
[ if [[ "$path" =~ " " ]]; then ]
|
||||
if test "x$2" != "xNOFAIL"; then
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
|
||||
AC_MSG_ERROR([Spaces are not allowed in this path.])
|
||||
else
|
||||
path=""
|
||||
fi
|
||||
fi
|
||||
|
||||
# Use eval to expand a potential ~.
|
||||
eval new_path="$path"
|
||||
if test ! -e "$new_path"; then
|
||||
if test "x$2" != "xNOFAIL"; then
|
||||
AC_MSG_ERROR([The path of $1, which resolves as "$new_path", is not found.])
|
||||
else
|
||||
new_path=""
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make the path absolute
|
||||
if test "x$new_path" != x; then
|
||||
if test -d "$new_path"; then
|
||||
path="`cd "$new_path"; pwd -L`"
|
||||
else
|
||||
dir="`$DIRNAME "$new_path"`"
|
||||
base="`$BASENAME "$new_path"`"
|
||||
path="`cd "$dir"; pwd -L`/$base"
|
||||
fi
|
||||
else
|
||||
path=""
|
||||
fi
|
||||
|
||||
UTIL_ABSOLUTE_PATH(path)
|
||||
$1="$path"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Check if the given file is a unix-style or windows-style executable, that is,
|
||||
# if it expects paths in unix-style or windows-style.
|
||||
# Returns "windows" or "unix" in $RESULT.
|
||||
AC_DEFUN([UTIL_CHECK_WINENV_EXEC_TYPE],
|
||||
[
|
||||
# For cygwin and msys2, if it's linked with the correct helper lib, it
|
||||
# accept unix paths
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin" || \
|
||||
test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys2"; then
|
||||
linked_libs=`$LDD $1 2>&1`
|
||||
if test $? -ne 0; then
|
||||
# Non-binary files (e.g. shell scripts) are unix files
|
||||
RESULT=unix
|
||||
else
|
||||
[ if [[ "$linked_libs" =~ $WINENV_MARKER_DLL ]]; then ]
|
||||
RESULT=unix
|
||||
else
|
||||
RESULT=windows
|
||||
fi
|
||||
fi
|
||||
elif test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
# On WSL, we can check if it is a PE file
|
||||
file_type=`$FILE -b $1 2>&1`
|
||||
[ if [[ $file_type =~ PE.*Windows ]]; then ]
|
||||
RESULT=windows
|
||||
else
|
||||
RESULT=unix
|
||||
fi
|
||||
else
|
||||
RESULT=unix
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# This will make sure the given variable points to a executable
|
||||
# with a full and proper path. This means:
|
||||
@@ -121,65 +164,331 @@ AC_DEFUN([UTIL_FIXUP_PATH],
|
||||
# If the input variable does not have a directory specification, then
|
||||
# it need to be in the PATH.
|
||||
# $1: The name of the variable to fix
|
||||
# $2: Where to look for the command (replaces $PATH)
|
||||
# $3: set to NOFIXPATH to skip prefixing FIXPATH, even if needed on platform
|
||||
AC_DEFUN([UTIL_FIXUP_EXECUTABLE],
|
||||
[
|
||||
input="[$]$1"
|
||||
|
||||
# Only process if variable expands to non-empty
|
||||
|
||||
if test "x[$]$1" != x; then
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
UTIL_FIXUP_EXECUTABLE_CYGWIN($1)
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
UTIL_FIXUP_EXECUTABLE_MSYS($1)
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
UTIL_FIXUP_EXECUTABLE_WSL($1)
|
||||
if test "x$input" != x; then
|
||||
# First separate the path from the arguments. This will split at the first
|
||||
# space.
|
||||
[ if [[ "$OPENJDK_BUILD_OS" = "windows" && input =~ ^$FIXPATH ]]; then
|
||||
line="${input#$FIXPATH }"
|
||||
prefix="$FIXPATH "
|
||||
else
|
||||
# We're on a unix platform. Hooray! :)
|
||||
# First separate the path from the arguments. This will split at the first
|
||||
# space.
|
||||
complete="[$]$1"
|
||||
path="${complete%% *}"
|
||||
tmp="$complete EOL"
|
||||
arguments="${tmp#* }"
|
||||
line="$input"
|
||||
prefix=""
|
||||
fi ]
|
||||
path="${line%% *}"
|
||||
arguments="${line#"$path"}"
|
||||
|
||||
# Cannot rely on the command "which" here since it doesn't always work.
|
||||
is_absolute_path=`$ECHO "$path" | $GREP ^/`
|
||||
if test -z "$is_absolute_path"; then
|
||||
# Path to executable is not absolute. Find it.
|
||||
IFS_save="$IFS"
|
||||
IFS=:
|
||||
for p in $PATH; do
|
||||
if test -f "$p/$path" && test -x "$p/$path"; then
|
||||
new_path="$p/$path"
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS="$IFS_save"
|
||||
else
|
||||
# This is an absolute path, we can use it without further modifications.
|
||||
[ if ! [[ "$path" =~ /|\\ ]]; then ]
|
||||
# This is a command without path (e.g. "gcc" or "echo")
|
||||
command_type=`type -t "$path"`
|
||||
if test "x$command_type" = xbuiltin || test "x$command_type" = xkeyword; then
|
||||
# Shell builtin or keyword; we're done here
|
||||
new_path="$path"
|
||||
fi
|
||||
|
||||
if test "x$new_path" = x; then
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
|
||||
has_space=`$ECHO "$complete" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
AC_MSG_NOTICE([This might be caused by spaces in the path, which is not allowed.])
|
||||
else
|
||||
# Search in $PATH using bash built-in 'type -p'.
|
||||
saved_path="$PATH"
|
||||
if test "x$2" != x; then
|
||||
PATH="$2"
|
||||
fi
|
||||
new_path=`type -p "$path"`
|
||||
if test "x$new_path" = x && test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
# Try again with .exe
|
||||
new_path="`type -p "$path.exe"`"
|
||||
fi
|
||||
PATH="$saved_path"
|
||||
|
||||
if test "x$new_path" = x; then
|
||||
AC_MSG_NOTICE([The command for $1, which resolves as "$input", is not found in the PATH.])
|
||||
AC_MSG_ERROR([Cannot locate $path])
|
||||
fi
|
||||
AC_MSG_ERROR([Cannot locate the the path of $1])
|
||||
fi
|
||||
else
|
||||
# This is a path with slashes, don't look at $PATH
|
||||
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
# fixpath.sh import will do all heavy lifting for us
|
||||
new_path=`$FIXPATH_BASE import "$path"`
|
||||
|
||||
if test ! -e $new_path; then
|
||||
# It failed, but maybe spaces were part of the path and not separating
|
||||
# the command and argument. Retry using that assumption.
|
||||
new_path=`$FIXPATH_BASE import "$input"`
|
||||
if test ! -e $new_path; then
|
||||
AC_MSG_NOTICE([The command for $1, which resolves as "$input", can not be found.])
|
||||
AC_MSG_ERROR([Cannot locate $input])
|
||||
fi
|
||||
# It worked, clear all "arguments"
|
||||
arguments=""
|
||||
fi
|
||||
else # on unix
|
||||
# Make absolute
|
||||
$1="$path"
|
||||
UTIL_FIXUP_PATH($1, NOFAIL)
|
||||
new_path="[$]$1"
|
||||
|
||||
if test ! -e $new_path; then
|
||||
AC_MSG_NOTICE([The command for $1, which resolves as "$input", is not found])
|
||||
[ if [[ "$path" =~ " " ]]; then ]
|
||||
AC_MSG_NOTICE([This might be caused by spaces in the path, which is not allowed.])
|
||||
fi
|
||||
AC_MSG_ERROR([Cannot locate $path])
|
||||
fi
|
||||
if test ! -x $new_path; then
|
||||
AC_MSG_NOTICE([The command for $1, which resolves as "$input", is not executable.])
|
||||
AC_MSG_ERROR([Cannot execute command at $path])
|
||||
fi
|
||||
fi # end on unix
|
||||
fi # end with or without slashes
|
||||
|
||||
# Now we have a usable command as new_path, with arguments in arguments
|
||||
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
if test "x$prefix" = x; then
|
||||
# Only mess around if prefix was not given
|
||||
UTIL_CHECK_WINENV_EXEC_TYPE("$new_path")
|
||||
if test "x$RESULT" = xwindows; then
|
||||
prefix="$FIXPATH "
|
||||
# make sure we have an .exe suffix (but not two)
|
||||
new_path="${new_path%.exe}.exe"
|
||||
else
|
||||
# If we have gotten a .exe suffix, remove it
|
||||
new_path="${new_path%.exe}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$3" = xNOFIXPATH; then
|
||||
prefix=""
|
||||
fi
|
||||
|
||||
# Now join together the path and the arguments once again
|
||||
if test "x$arguments" != xEOL; then
|
||||
new_complete="$new_path ${arguments% *}"
|
||||
new_complete="$prefix$new_path$arguments"
|
||||
$1="$new_complete"
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Setup a tool for the given variable. If correctly specified by the user,
|
||||
# use that value, otherwise search for the tool using the supplied code snippet.
|
||||
# $1: variable to set
|
||||
# $2: code snippet to call to look for the tool
|
||||
# $3: code snippet to call if variable was used to find tool
|
||||
AC_DEFUN([UTIL_SETUP_TOOL],
|
||||
[
|
||||
# Publish this variable in the help.
|
||||
AC_ARG_VAR($1, [Override default value for $1])
|
||||
|
||||
if [[ -z "${$1+x}" ]]; then
|
||||
# The variable is not set by user, try to locate tool using the code snippet
|
||||
$2
|
||||
else
|
||||
# The variable is set, but is it from the command line or the environment?
|
||||
|
||||
# Try to remove the string !$1! from our list.
|
||||
try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!$1!/}
|
||||
if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
|
||||
# If it failed, the variable was not from the command line. Ignore it,
|
||||
# but warn the user (except for BASH, which is always set by the calling BASH).
|
||||
if test "x$1" != xBASH; then
|
||||
AC_MSG_WARN([Ignoring value of $1 from the environment. Use command line variables instead.])
|
||||
fi
|
||||
# Try to locate tool using the code snippet
|
||||
$2
|
||||
else
|
||||
new_complete="$new_path"
|
||||
# If it succeeded, then it was overridden by the user. We will use it
|
||||
# for the tool.
|
||||
|
||||
# First remove it from the list of overridden variables, so we can test
|
||||
# for unknown variables in the end.
|
||||
CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
|
||||
|
||||
tool_override=[$]$1
|
||||
|
||||
# Check if we try to supply an empty value
|
||||
if test "x$tool_override" = x; then
|
||||
AC_MSG_CHECKING([for $1])
|
||||
AC_MSG_RESULT([[[disabled by user]]])
|
||||
else
|
||||
# Split up override in command part and argument part
|
||||
tool_and_args=($tool_override)
|
||||
[ tool_command=${tool_and_args[0]} ]
|
||||
[ unset 'tool_and_args[0]' ]
|
||||
[ tool_args=${tool_and_args[@]} ]
|
||||
|
||||
# Check if the provided tool contains a complete path.
|
||||
tool_basename="${tool_command##*/}"
|
||||
if test "x$tool_basename" = "x$tool_command"; then
|
||||
# A command without a complete path is provided, search $PATH.
|
||||
AC_MSG_NOTICE([Will search for user supplied tool "$tool_basename"])
|
||||
AC_PATH_PROGS($1, $tool_basename ${tool_basename}.exe)
|
||||
tool_command="[$]$1"
|
||||
if test "x$tool_command" = x; then
|
||||
AC_MSG_ERROR([User supplied tool $1="$tool_basename" could not be found in PATH])
|
||||
fi
|
||||
else
|
||||
# Otherwise we believe it is a complete path. Use it as it is.
|
||||
if test ! -x "$tool_command" && test ! -x "${tool_command}.exe"; then
|
||||
AC_MSG_ERROR([User supplied tool $1="$tool_command" does not exist or is not executable])
|
||||
fi
|
||||
if test ! -x "$tool_command"; then
|
||||
tool_command="${tool_command}.exe"
|
||||
fi
|
||||
$1="$tool_command"
|
||||
fi
|
||||
if test "x$tool_args" != x; then
|
||||
# If we got arguments, re-append them to the command after the fixup.
|
||||
$1="[$]$1 $tool_args"
|
||||
fi
|
||||
AC_MSG_CHECKING([for $1])
|
||||
AC_MSG_RESULT([[$]$1 [[user supplied]]])
|
||||
fi
|
||||
fi
|
||||
$3
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Locate a tool using proper methods.
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
# $3: [path]
|
||||
# $4: set to NOFIXPATH to skip prefixing FIXPATH, even if needed on platform
|
||||
AC_DEFUN([UTIL_LOOKUP_PROGS],
|
||||
[
|
||||
UTIL_SETUP_TOOL($1, [
|
||||
$1=""
|
||||
|
||||
if test "x$3" != x; then
|
||||
old_path="$PATH"
|
||||
PATH="$3"
|
||||
fi
|
||||
|
||||
if test "x$complete" != "x$new_complete"; then
|
||||
$1="$new_complete"
|
||||
AC_MSG_NOTICE([Rewriting $1 to "$new_complete"])
|
||||
for name in $2; do
|
||||
AC_MSG_CHECKING(for $name)
|
||||
|
||||
command_type=`type -t "$name"`
|
||||
if test "x$command_type" = xbuiltin || test "x$command_type" = xkeyword; then
|
||||
# Shell builtin or keyword; we're done here
|
||||
full_path="$name"
|
||||
$1="$full_path"
|
||||
AC_MSG_RESULT([[$full_path [builtin]]])
|
||||
break
|
||||
else
|
||||
# Search in $PATH
|
||||
old_ifs="$IFS"
|
||||
IFS=":"
|
||||
for elem in $PATH; do
|
||||
IFS="$old_ifs"
|
||||
if test "x$elem" = x; then
|
||||
continue
|
||||
fi
|
||||
full_path="$elem/$name"
|
||||
if test ! -e "$full_path" && test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
# Try again with .exe
|
||||
full_path="$elem/$name.exe"
|
||||
fi
|
||||
if test -x "$full_path" && test ! -d "$full_path" ; then
|
||||
$1="$full_path"
|
||||
UTIL_FIXUP_EXECUTABLE($1, $3, $4)
|
||||
result="[$]$1"
|
||||
|
||||
# If we have FIXPATH enabled, strip all instances of it and prepend
|
||||
# a single one, to avoid double fixpath prefixing.
|
||||
if test "x$4" != xNOFIXPATH; then
|
||||
[ if [[ $FIXPATH != "" && $result =~ ^"$FIXPATH " ]]; then ]
|
||||
result="\$FIXPATH ${result#"$FIXPATH "}"
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT([$result])
|
||||
break 2;
|
||||
fi
|
||||
done
|
||||
IFS="$old_ifs"
|
||||
fi
|
||||
AC_MSG_RESULT([[[not found]]])
|
||||
done
|
||||
|
||||
if test "x$3" != x; then
|
||||
PATH="$old_path"
|
||||
fi
|
||||
])
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Call UTIL_SETUP_TOOL with AC_CHECK_TOOLS to locate the tool. This will look
|
||||
# first for cross-compilation tools.
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
# $3: [path]
|
||||
AC_DEFUN([UTIL_LOOKUP_TOOLCHAIN_PROGS],
|
||||
[
|
||||
if test "x$ac_tool_prefix" = x; then
|
||||
UTIL_LOOKUP_PROGS($1, $2, $3)
|
||||
else
|
||||
prefixed_names=$(for name in $2; do echo ${ac_tool_prefix}${name} $name; done)
|
||||
UTIL_LOOKUP_PROGS($1, $prefixed_names, $3)
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
|
||||
# $1: variable to check
|
||||
AC_DEFUN([UTIL_CHECK_NONEMPTY],
|
||||
[
|
||||
if test "x[$]$1" = x; then
|
||||
AC_MSG_ERROR([Could not find required tool for $1])
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Like UTIL_LOOKUP_PROGS but fails if no tool was found.
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
# $3: [path]
|
||||
AC_DEFUN([UTIL_REQUIRE_PROGS],
|
||||
[
|
||||
UTIL_LOOKUP_PROGS($1, $2, $3)
|
||||
UTIL_CHECK_NONEMPTY($1)
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Like UTIL_LOOKUP_PROGS but fails if no tool was found.
|
||||
# $1: variable to set
|
||||
# $2: executable name (or list of names) to look for
|
||||
# $3: [path]
|
||||
AC_DEFUN([UTIL_REQUIRE_TOOLCHAIN_PROGS],
|
||||
[
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS($1, $2, $3)
|
||||
UTIL_CHECK_NONEMPTY($1)
|
||||
])
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Like UTIL_SETUP_TOOL but fails if no tool was found.
|
||||
# $1: variable to set
|
||||
# $2: autoconf macro to call to look for the special tool
|
||||
AC_DEFUN([UTIL_REQUIRE_SPECIAL],
|
||||
[
|
||||
UTIL_SETUP_TOOL($1, [$2])
|
||||
UTIL_CHECK_NONEMPTY($1)
|
||||
# The special macro will return an absolute path, and is only used for
|
||||
# unix tools. No further processing needed.
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Add FIXPATH prefix to variable. Normally this is done by UTIL_LOOKUP_PROGS
|
||||
# or UTIL_FIXUP_EXECUTABLE, but in some circumstances this has to be done
|
||||
# explicitly, such as when the command in question does not exist yet.
|
||||
#
|
||||
# $1: variable to add fixpath to
|
||||
AC_DEFUN([UTIL_ADD_FIXPATH],
|
||||
[
|
||||
if test "x$FIXPATH" != x; then
|
||||
$1="$FIXPATH [$]$1"
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -208,8 +517,8 @@ AC_DEFUN([UTIL_REMOVE_SYMBOLIC_LINKS],
|
||||
sym_link_file=`$BASENAME [$]$1`
|
||||
cd $sym_link_dir
|
||||
# Use -P flag to resolve symlinks in directories.
|
||||
cd `$THEPWDCMD -P`
|
||||
sym_link_dir=`$THEPWDCMD -P`
|
||||
cd `pwd -P`
|
||||
sym_link_dir=`pwd -P`
|
||||
# Resolve file symlinks
|
||||
while test $COUNTER -lt 20; do
|
||||
ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
|
||||
@@ -220,7 +529,7 @@ AC_DEFUN([UTIL_REMOVE_SYMBOLIC_LINKS],
|
||||
# Again resolve directory symlinks since the target of the just found
|
||||
# link could be in a different directory
|
||||
cd `$DIRNAME $ISLINK`
|
||||
sym_link_dir=`$THEPWDCMD -P`
|
||||
sym_link_dir=`pwd -P`
|
||||
sym_link_file=`$BASENAME $ISLINK`
|
||||
let COUNTER=COUNTER+1
|
||||
done
|
||||
@@ -229,4 +538,3 @@ AC_DEFUN([UTIL_REMOVE_SYMBOLIC_LINKS],
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
@@ -1,451 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code 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
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
AC_DEFUN([UTIL_REWRITE_AS_UNIX_PATH],
|
||||
[
|
||||
windows_path="[$]$1"
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
unix_path=`$CYGPATH -u "$windows_path"`
|
||||
$1="$unix_path"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
|
||||
$1="$unix_path"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
# wslpath does not check the input, only call if an actual windows path was
|
||||
# given.
|
||||
if $ECHO "$windows_path" | $GREP -q ["^[a-zA-Z]:[\\\\/]"]; then
|
||||
unix_path=`$WSLPATH -u "$windows_path"`
|
||||
$1="$unix_path"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([UTIL_REWRITE_AS_WINDOWS_MIXED_PATH],
|
||||
[
|
||||
unix_path="[$]$1"
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
windows_path=`$CYGPATH -m "$unix_path"`
|
||||
$1="$windows_path"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
windows_path=`cmd //c echo $unix_path`
|
||||
$1="$windows_path"
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
|
||||
windows_path=`$WSLPATH -m "$unix_path" 2>/dev/null`
|
||||
if test $? -ne 0; then
|
||||
dir=`dirname "$unix_path"`
|
||||
base=`basename "$unix_path"`
|
||||
windows_path=`$WSLPATH -m "$dir"`/"$base"
|
||||
if test $? -ne 0; then
|
||||
AC_MSG_ERROR([Cannot convert "$unix_path" to Windows path])
|
||||
fi
|
||||
fi
|
||||
$1="$windows_path"
|
||||
fi
|
||||
])
|
||||
|
||||
# Helper function which possibly converts a path using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
# $1: The path to check
|
||||
AC_DEFUN([UTIL_MAKE_WINDOWS_SPACE_SAFE_CYGWIN],
|
||||
[
|
||||
input_path="$1"
|
||||
# Check if we need to convert this using DOS-style short mode. If the path
|
||||
# contains just simple characters, use it. Otherwise (spaces, weird characters),
|
||||
# take no chances and rewrite it.
|
||||
# Note: m4 eats our [], so we need to use @<:@ and @:>@ instead.
|
||||
has_forbidden_chars=`$ECHO "$input_path" | $GREP @<:@^-._/a-zA-Z0-9@:>@`
|
||||
if test "x$has_forbidden_chars" != x; then
|
||||
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
|
||||
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
|
||||
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
|
||||
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
|
||||
# Going to short mode and back again did indeed matter. Since short mode is
|
||||
# case insensitive, let's make it lowercase to improve readability.
|
||||
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
# Now convert it back to Unix-style (cygpath)
|
||||
input_path=`$CYGPATH -u "$shortmode_path"`
|
||||
new_path="$input_path"
|
||||
fi
|
||||
fi
|
||||
|
||||
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
|
||||
if test "x$test_cygdrive_prefix" = x; then
|
||||
# As a simple fix, exclude /usr/bin since it's not a real path.
|
||||
if test "x`$ECHO $1 | $GREP ^/usr/bin/`" = x; then
|
||||
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
|
||||
# a path prefixed by /cygdrive for fixpath to work.
|
||||
new_path="$CYGWIN_ROOT_PATH$input_path"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
# Helper function which possibly converts a path using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
# $1: The path to check
|
||||
AC_DEFUN([UTIL_MAKE_WINDOWS_SPACE_SAFE_MSYS],
|
||||
[
|
||||
input_path="$1"
|
||||
# Check if we need to convert this using DOS-style short mode. If the path
|
||||
# contains just simple characters, use it. Otherwise (spaces, weird characters),
|
||||
# take no chances and rewrite it.
|
||||
# Note: m4 eats our [], so we need to use @<:@ and @:>@ instead.
|
||||
has_forbidden_chars=`$ECHO "$input_path" | $GREP @<:@^-_/:a-zA-Z0-9@:>@`
|
||||
if test "x$has_forbidden_chars" != x; then
|
||||
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
|
||||
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
fi
|
||||
])
|
||||
|
||||
# Helper function which possibly converts a path using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
# $1: The path to check
|
||||
AC_DEFUN([UTIL_MAKE_WINDOWS_SPACE_SAFE_WSL],
|
||||
[
|
||||
input_path="$1"
|
||||
# Check if we need to convert this using DOS-style short mode. If the path
|
||||
# contains just simple characters, use it. Otherwise (spaces, weird characters),
|
||||
# take no chances and rewrite it.
|
||||
# Note: m4 eats our [], so we need to use @<:@ and @:>@ instead.
|
||||
has_forbidden_chars=`$ECHO "$input_path" | $GREP [[^-_/:a-zA-Z0-9\\.]]`
|
||||
if test "x$has_forbidden_chars" != x; then
|
||||
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
|
||||
TOPDIR_windows="$TOPDIR"
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([TOPDIR_windows])
|
||||
# First convert to Windows path to make input valid for cmd
|
||||
UTIL_REWRITE_AS_WINDOWS_MIXED_PATH([input_path])
|
||||
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
|
||||
# which, in combination with WSLENV, will make the WSL layer complain
|
||||
old_path="$PATH"
|
||||
PATH=
|
||||
new_path=`$CMD /c $TOPDIR_windows/make/scripts/windowsShortName.bat "$input_path" \
|
||||
| $SED -e 's|\r||g' \
|
||||
| $TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
# Rewrite back to unix style
|
||||
PATH="$old_path"
|
||||
UTIL_REWRITE_AS_UNIX_PATH([new_path])
|
||||
fi
|
||||
])
|
||||
|
||||
# FIXME: The UTIL_FIXUP_*_CYGWIN/MSYS is most likely too convoluted
|
||||
# and could probably be heavily simplified. However, all changes in this
|
||||
# area tend to need lot of testing in different scenarios, and in lack of
|
||||
# proper unit testing, cleaning this up has not been deemed worth the effort
|
||||
# at the moment.
|
||||
|
||||
AC_DEFUN([UTIL_FIXUP_PATH_CYGWIN],
|
||||
[
|
||||
# Input might be given as Windows format, start by converting to
|
||||
# unix format.
|
||||
path="[$]$1"
|
||||
new_path=`$CYGPATH -u "$path"`
|
||||
|
||||
UTIL_ABSOLUTE_PATH(new_path)
|
||||
|
||||
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
|
||||
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
|
||||
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
|
||||
# "foo.exe" is OK but "foo" is an error.
|
||||
#
|
||||
# This test is therefore slightly more accurate than "test -f" to check for file precense.
|
||||
# It is also a way to make sure we got the proper file name for the real test later on.
|
||||
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
|
||||
if test "x$test_shortpath" = x; then
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
|
||||
AC_MSG_ERROR([Cannot locate the the path of $1])
|
||||
fi
|
||||
|
||||
# Call helper function which possibly converts this using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
UTIL_MAKE_WINDOWS_SPACE_SAFE_CYGWIN([$new_path])
|
||||
|
||||
if test "x$path" != "x$new_path"; then
|
||||
$1="$new_path"
|
||||
AC_MSG_NOTICE([Rewriting $1 to "$new_path"])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([UTIL_FIXUP_PATH_MSYS],
|
||||
[
|
||||
path="[$]$1"
|
||||
has_colon=`$ECHO $path | $GREP ^.:`
|
||||
new_path="$path"
|
||||
if test "x$has_colon" = x; then
|
||||
# Not in mixed or Windows style, start by that.
|
||||
new_path=`cmd //c echo $path`
|
||||
fi
|
||||
|
||||
UTIL_ABSOLUTE_PATH(new_path)
|
||||
|
||||
UTIL_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path])
|
||||
UTIL_REWRITE_AS_UNIX_PATH(new_path)
|
||||
if test "x$path" != "x$new_path"; then
|
||||
$1="$new_path"
|
||||
AC_MSG_NOTICE([Rewriting $1 to "$new_path"])
|
||||
fi
|
||||
|
||||
# Save the first 10 bytes of this path to the storage, so fixpath can work.
|
||||
all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" "${new_path:0:10}")
|
||||
])
|
||||
|
||||
AC_DEFUN([UTIL_FIXUP_PATH_WSL],
|
||||
[
|
||||
# Input might be given as Windows format, start by converting to
|
||||
# unix format.
|
||||
new_path="[$]$1"
|
||||
UTIL_REWRITE_AS_UNIX_PATH([new_path])
|
||||
|
||||
UTIL_ABSOLUTE_PATH(new_path)
|
||||
|
||||
# Call helper function which possibly converts this using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
UTIL_MAKE_WINDOWS_SPACE_SAFE_WSL([$new_path])
|
||||
|
||||
if test "x$path" != "x$new_path"; then
|
||||
$1="$new_path"
|
||||
AC_MSG_NOTICE([Rewriting $1 to "$new_path"])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([UTIL_FIXUP_EXECUTABLE_CYGWIN],
|
||||
[
|
||||
# First separate the path from the arguments. This will split at the first
|
||||
# space.
|
||||
complete="[$]$1"
|
||||
path="${complete%% *}"
|
||||
tmp="$complete EOL"
|
||||
arguments="${tmp#* }"
|
||||
|
||||
# Input might be given as Windows format, start by converting to
|
||||
# unix format.
|
||||
new_path=`$CYGPATH -u "$path"`
|
||||
|
||||
# Now try to locate executable using which
|
||||
new_path=`type -p "$new_path" 2> /dev/null`
|
||||
# bat and cmd files are not always considered executable in cygwin causing which
|
||||
# to not find them
|
||||
if test "x$new_path" = x \
|
||||
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
|
||||
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
|
||||
new_path=`$CYGPATH -u "$path"`
|
||||
fi
|
||||
if test "x$new_path" = x; then
|
||||
# Oops. Which didn't find the executable.
|
||||
# The splitting of arguments from the executable at a space might have been incorrect,
|
||||
# since paths with space are more likely in Windows. Give it another try with the whole
|
||||
# argument.
|
||||
path="$complete"
|
||||
arguments="EOL"
|
||||
new_path=`$CYGPATH -u "$path"`
|
||||
new_path=`type -p "$new_path" 2> /dev/null`
|
||||
# bat and cmd files are not always considered executable in cygwin causing which
|
||||
# to not find them
|
||||
if test "x$new_path" = x \
|
||||
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
|
||||
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
|
||||
new_path=`$CYGPATH -u "$path"`
|
||||
fi
|
||||
if test "x$new_path" = x; then
|
||||
# It's still not found. Now this is an unrecoverable error.
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
|
||||
has_space=`$ECHO "$complete" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
AC_MSG_NOTICE([You might be mixing spaces in the path and extra arguments, which is not allowed.])
|
||||
fi
|
||||
AC_MSG_ERROR([Cannot locate the the path of $1])
|
||||
fi
|
||||
fi
|
||||
|
||||
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
|
||||
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
|
||||
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
|
||||
# "foo.exe" is OK but "foo" is an error.
|
||||
#
|
||||
# This test is therefore slightly more accurate than "test -f" to check for file presence.
|
||||
# It is also a way to make sure we got the proper file name for the real test later on.
|
||||
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
|
||||
if test "x$test_shortpath" = x; then
|
||||
# Short path failed, file does not exist as specified.
|
||||
# Try adding .exe or .cmd
|
||||
if test -f "${new_path}.exe"; then
|
||||
input_to_shortpath="${new_path}.exe"
|
||||
elif test -f "${new_path}.cmd"; then
|
||||
input_to_shortpath="${new_path}.cmd"
|
||||
else
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$new_path", is invalid.])
|
||||
AC_MSG_NOTICE([Neither "$new_path" nor "$new_path.exe/cmd" can be found])
|
||||
AC_MSG_ERROR([Cannot locate the the path of $1])
|
||||
fi
|
||||
else
|
||||
input_to_shortpath="$new_path"
|
||||
fi
|
||||
|
||||
# Call helper function which possibly converts this using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
new_path="$input_to_shortpath"
|
||||
UTIL_MAKE_WINDOWS_SPACE_SAFE_CYGWIN([$input_to_shortpath])
|
||||
# remove trailing .exe if any
|
||||
new_path="${new_path/%.exe/}"
|
||||
])
|
||||
|
||||
AC_DEFUN([UTIL_FIXUP_EXECUTABLE_MSYS],
|
||||
[
|
||||
# First separate the path from the arguments. This will split at the first
|
||||
# space.
|
||||
complete="[$]$1"
|
||||
path="${complete%% *}"
|
||||
tmp="$complete EOL"
|
||||
arguments="${tmp#* }"
|
||||
|
||||
# Input might be given as Windows format, start by converting to
|
||||
# unix format.
|
||||
new_path="$path"
|
||||
UTIL_REWRITE_AS_UNIX_PATH(new_path)
|
||||
|
||||
# Now try to locate executable using which
|
||||
new_path=`type -p "$new_path" 2> /dev/null`
|
||||
|
||||
if test "x$new_path" = x; then
|
||||
# Oops. Which didn't find the executable.
|
||||
# The splitting of arguments from the executable at a space might have been incorrect,
|
||||
# since paths with space are more likely in Windows. Give it another try with the whole
|
||||
# argument.
|
||||
path="$complete"
|
||||
arguments="EOL"
|
||||
new_path="$path"
|
||||
UTIL_REWRITE_AS_UNIX_PATH(new_path)
|
||||
|
||||
new_path=`type -p "$new_path" 2> /dev/null`
|
||||
# bat and cmd files are not always considered executable in MSYS causing which
|
||||
# to not find them
|
||||
if test "x$new_path" = x \
|
||||
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
|
||||
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
|
||||
new_path="$path"
|
||||
UTIL_REWRITE_AS_UNIX_PATH(new_path)
|
||||
fi
|
||||
|
||||
if test "x$new_path" = x; then
|
||||
# It's still not found. Now this is an unrecoverable error.
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
|
||||
has_space=`$ECHO "$complete" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
AC_MSG_NOTICE([You might be mixing spaces in the path and extra arguments, which is not allowed.])
|
||||
fi
|
||||
AC_MSG_ERROR([Cannot locate the the path of $1])
|
||||
fi
|
||||
fi
|
||||
|
||||
# Now new_path has a complete unix path to the binary
|
||||
if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
|
||||
# Keep paths in /bin as-is, but remove trailing .exe if any
|
||||
new_path="${new_path/%.exe/}"
|
||||
# Do not save /bin paths to all_fixpath_prefixes!
|
||||
else
|
||||
# Not in mixed or Windows style, start by that.
|
||||
new_path=`cmd //c echo $new_path`
|
||||
UTIL_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path])
|
||||
# Output is in $new_path
|
||||
UTIL_REWRITE_AS_UNIX_PATH(new_path)
|
||||
# remove trailing .exe if any
|
||||
new_path="${new_path/%.exe/}"
|
||||
|
||||
# Save the first 10 bytes of this path to the storage, so fixpath can work.
|
||||
all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" "${new_path:0:10}")
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([UTIL_FIXUP_EXECUTABLE_WSL],
|
||||
[
|
||||
# First separate the path from the arguments. This will split at the first
|
||||
# space.
|
||||
complete="[$]$1"
|
||||
path="${complete%% *}"
|
||||
tmp="$complete EOL"
|
||||
arguments="${tmp#* }"
|
||||
|
||||
# Input might be given as Windows format, start by converting to
|
||||
# unix format.
|
||||
new_path="$path"
|
||||
UTIL_REWRITE_AS_UNIX_PATH([new_path])
|
||||
|
||||
# Now try to locate executable using which
|
||||
new_path_bak="$new_path"
|
||||
new_path=`type -p "$new_path" 2> /dev/null`
|
||||
# bat and cmd files are not considered executable in WSL
|
||||
if test "x$new_path" = x \
|
||||
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
|
||||
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
|
||||
new_path="$new_path_back"
|
||||
fi
|
||||
if test "x$new_path" = x; then
|
||||
# Oops. Which didn't find the executable.
|
||||
# The splitting of arguments from the executable at a space might have been incorrect,
|
||||
# since paths with space are more likely in Windows. Give it another try with the whole
|
||||
# argument.
|
||||
path="$complete"
|
||||
arguments="EOL"
|
||||
new_path="$path"
|
||||
UTIL_REWRITE_AS_UNIX_PATH([new_path])
|
||||
new_path_bak="$new_path"
|
||||
new_path=`type -p "$new_path" 2> /dev/null`
|
||||
# bat and cmd files are not considered executable in WSL
|
||||
if test "x$new_path" = x \
|
||||
&& test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
|
||||
&& test "x`$LS \"$path\" 2>/dev/null`" != x; then
|
||||
new_path="$new_path_bak"
|
||||
fi
|
||||
if test "x$new_path" = x; then
|
||||
# It's still not found. Now this is an unrecoverable error.
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
|
||||
has_space=`$ECHO "$complete" | $GREP " "`
|
||||
if test "x$has_space" != x; then
|
||||
AC_MSG_NOTICE([You might be mixing spaces in the path and extra arguments, which is not allowed.])
|
||||
fi
|
||||
AC_MSG_ERROR([Cannot locate the the path of $1])
|
||||
fi
|
||||
fi
|
||||
|
||||
# In WSL, suffixes must be present for Windows executables
|
||||
if test ! -f "$new_path"; then
|
||||
# Try adding .exe or .cmd
|
||||
if test -f "${new_path}.exe"; then
|
||||
input_to_shortpath="${new_path}.exe"
|
||||
elif test -f "${new_path}.cmd"; then
|
||||
input_to_shortpath="${new_path}.cmd"
|
||||
else
|
||||
AC_MSG_NOTICE([The path of $1, which resolves as "$new_path", is invalid.])
|
||||
AC_MSG_NOTICE([Neither "$new_path" nor "$new_path.exe/cmd" can be found])
|
||||
AC_MSG_ERROR([Cannot locate the the path of $1])
|
||||
fi
|
||||
else
|
||||
input_to_shortpath="$new_path"
|
||||
fi
|
||||
|
||||
# Call helper function which possibly converts this using DOS-style short mode.
|
||||
# If so, the updated path is stored in $new_path.
|
||||
new_path="$input_to_shortpath"
|
||||
UTIL_MAKE_WINDOWS_SPACE_SAFE_WSL([$input_to_shortpath])
|
||||
])
|
||||
|
||||
@@ -26,18 +26,18 @@
|
||||
# Default version, product, and vendor information to use,
|
||||
# unless overridden by configure
|
||||
|
||||
DEFAULT_VERSION_FEATURE=16
|
||||
DEFAULT_VERSION_FEATURE=17
|
||||
DEFAULT_VERSION_INTERIM=0
|
||||
DEFAULT_VERSION_UPDATE=0
|
||||
DEFAULT_VERSION_PATCH=0
|
||||
DEFAULT_VERSION_EXTRA1=0
|
||||
DEFAULT_VERSION_EXTRA2=0
|
||||
DEFAULT_VERSION_EXTRA3=0
|
||||
DEFAULT_VERSION_DATE=2021-03-16
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=60 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_DATE=2021-09-14
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=61 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="15 16"
|
||||
DEFAULT_JDK_SOURCE_TARGET_VERSION=16
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="15 16 17"
|
||||
DEFAULT_JDK_SOURCE_TARGET_VERSION=17
|
||||
DEFAULT_PROMOTED_VERSION_PRE=ea
|
||||
|
||||
LAUNCHER_NAME=openjdk
|
||||
|
||||
@@ -177,6 +177,12 @@ define SetupJavaCompilationBody
|
||||
$$(error Must specify BIN (in $1))
|
||||
endif
|
||||
|
||||
ifneq ($$($1_MODULE), )
|
||||
$1_MODULE_SUBDIR := /$$($1_MODULE)
|
||||
endif
|
||||
|
||||
$1_SAFE_NAME := $$(strip $$(subst /,_, $1))
|
||||
|
||||
ifeq ($$($1_SMALL_JAVA), )
|
||||
# If unspecified, default to true
|
||||
$1_SMALL_JAVA := true
|
||||
@@ -215,18 +221,29 @@ define SetupJavaCompilationBody
|
||||
ifeq ($$(ENABLE_JAVAC_SERVER)+$$($1_CLASSPATH), true+)
|
||||
$1_JAVAC := $$(INTERIM_LANGTOOLS_ARGS) -m jdk.compiler.interim/com.sun.tools.sjavac.Main
|
||||
|
||||
# How to launch the server. This must use JAVA_DETACH, which is the "big" java
|
||||
# with an ability to detach from fixpath (on Windows)
|
||||
# This will be executed by the client, if needed.
|
||||
$1_JAVAC_SERVER_CMD := $$(JAVA_DETACH) $$($1_JAVA_FLAGS) $$($1_JAVAC)
|
||||
$1_ESCAPED_CMD := $$(subst $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_JAVAC_SERVER_CMD))))
|
||||
# Create a configuration file with the needed information for the javac
|
||||
# server to function properly.
|
||||
$1_JAVAC_SERVER_CONFIG := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$$($1_SAFE_NAME)-server.conf
|
||||
|
||||
# The port file contains the tcp/ip on which the server listens
|
||||
# The portfile contains the tcp/ip on which the server listens
|
||||
# and the cookie necessary to talk to the server.
|
||||
$1_JAVA_SERVER_FLAGS := --server:portfile=$$(JAVAC_SERVER_DIR)/server.port,sjavac=$$($1_ESCAPED_CMD)
|
||||
$1_JAVAC_PORT_FILE := $$(call FixPath, $$(JAVAC_SERVER_DIR)/server.port)
|
||||
|
||||
# Always use small to launch client
|
||||
$1_JAVAC_CMD := $$(JAVA_SMALL) $$($1_JAVA_FLAGS) $$($1_JAVAC) $$($1_JAVA_SERVER_FLAGS)
|
||||
# The servercmd specifies how to launch the server. This will be executed
|
||||
# by the client, if needed.
|
||||
$1_JAVAC_SERVER_CMD := $$(call FixPath, $$(JAVA) $$($1_JAVA_FLAGS) $$($1_JAVAC))
|
||||
|
||||
$1_CONFIG_VARDEPS := $$($1_JAVAC_PORT_FILE) $$($1_JAVAC_SERVER_CMD)
|
||||
$1_CONFIG_VARDEPS_FILE := $$(call DependOnVariable, $1_CONFIG_VARDEPS, \
|
||||
$$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1.config_vardeps)
|
||||
|
||||
$$($1_JAVAC_SERVER_CONFIG): $$($1_CONFIG_VARDEPS_FILE)
|
||||
$(ECHO) portfile=$$($1_JAVAC_PORT_FILE) > $$@
|
||||
$(ECHO) servercmd=$$($1_JAVAC_SERVER_CMD) >> $$@
|
||||
|
||||
# Always use small java to launch client
|
||||
$1_JAVAC_CMD := $$(JAVA_SMALL) $$($1_JAVA_FLAGS) $$($1_JAVAC) \
|
||||
--server:conf=$$($1_JAVAC_SERVER_CONFIG)
|
||||
else
|
||||
# No javac server
|
||||
$1_JAVAC := $$(INTERIM_LANGTOOLS_ARGS) -m jdk.compiler.interim/com.sun.tools.javac.Main
|
||||
@@ -263,10 +280,6 @@ define SetupJavaCompilationBody
|
||||
$1_FLAGS += -cp $$(call PathList, $$($1_CLASSPATH))
|
||||
endif
|
||||
|
||||
ifneq ($$($1_MODULE), )
|
||||
$1_MODULE_SUBDIR := /$$($1_MODULE)
|
||||
endif
|
||||
|
||||
# Make sure the dirs exist, or that one of the EXTRA_FILES, that may not
|
||||
# exist yet, is in it.
|
||||
$$(foreach d, $$($1_SRC), \
|
||||
@@ -331,9 +344,6 @@ define SetupJavaCompilationBody
|
||||
$$(error No source files found for $1)
|
||||
endif
|
||||
else
|
||||
|
||||
$1_SAFE_NAME := $$(strip $$(subst /,_, $1))
|
||||
|
||||
# All files below META-INF are always copied.
|
||||
$1_ALL_COPIES := $$(filter $$(addsuffix /META-INF%,$$($1_SRC)),$$($1_ALL_SRCS))
|
||||
# Find all files to be copied from source to bin.
|
||||
@@ -442,7 +452,7 @@ define SetupJavaCompilationBody
|
||||
|
||||
# Do the actual compilation
|
||||
$$($1_COMPILE_TARGET): $$($1_SRCS) $$($1_FILELIST) $$($1_DEPENDS) \
|
||||
$$($1_VARDEPS_FILE) $$($1_EXTRA_DEPS)
|
||||
$$($1_VARDEPS_FILE) $$($1_EXTRA_DEPS) $$($1_JAVAC_SERVER_CONFIG)
|
||||
$$(call MakeDir, $$(@D))
|
||||
$$(call ExecuteWithLog, $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$$($1_SAFE_NAME)_batch, \
|
||||
$$($1_JAVAC_CMD) $$($1_FLAGS) \
|
||||
|
||||
@@ -77,8 +77,10 @@ ifeq ($(STATIC_LIBS), true)
|
||||
FindStaticLib =
|
||||
endif
|
||||
|
||||
# Returns the module specific java header dir if it exists.
|
||||
# Param 1 - module name
|
||||
GetJavaHeaderDir = \
|
||||
$(wildcard $(SUPPORT_OUTPUTDIR)/headers/$(strip $1))
|
||||
$(if $(strip $1),$(wildcard $(SUPPORT_OUTPUTDIR)/headers/$(strip $1)))
|
||||
|
||||
# Process a dir description such as "java.base:headers" into a set of proper absolute paths.
|
||||
ProcessDir = \
|
||||
@@ -123,15 +125,27 @@ JDK_RCFLAGS=$(RCFLAGS) \
|
||||
SetupJdkLibrary = $(NamedParamsMacroTemplate)
|
||||
define SetupJdkLibraryBody
|
||||
ifeq ($$($1_OUTPUT_DIR), )
|
||||
$1_OUTPUT_DIR := $$(call FindLibDirForModule, $$(MODULE))
|
||||
ifneq ($$(MODULE), )
|
||||
$1_OUTPUT_DIR := $$(call FindLibDirForModule, $$(MODULE))
|
||||
else
|
||||
$$(error Must specify OUTPUT_DIR in a MODULE free context)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($$($1_OBJECT_DIR), )
|
||||
$1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/lib$$($1_NAME)
|
||||
ifneq ($$(MODULE), )
|
||||
$1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/lib$$($1_NAME)
|
||||
else
|
||||
$$(error Must specify OBJECT_DIR in a MODULE free context)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($$($1_SRC), )
|
||||
$1_SRC := $$(call FindSrcDirsForLib, $$(MODULE), $$($1_NAME))
|
||||
ifneq ($$(MODULE), )
|
||||
$1_SRC := $$(call FindSrcDirsForLib, $$(MODULE), $$($1_NAME))
|
||||
else
|
||||
$$(error Must specify SRC in a MODULE free context)
|
||||
endif
|
||||
else
|
||||
$1_SRC := $$(foreach dir, $$($1_SRC), $$(call ProcessDir, $$(dir)))
|
||||
endif
|
||||
@@ -165,7 +179,8 @@ define SetupJdkLibraryBody
|
||||
ifneq ($$($1_HEADERS_FROM_SRC), false)
|
||||
$1_SRC_HEADER_FLAGS := $$(addprefix -I, $$(wildcard $$($1_SRC)))
|
||||
endif
|
||||
# Always add the java header dir
|
||||
|
||||
# Add the module specific java header dir
|
||||
$1_SRC_HEADER_FLAGS += $$(addprefix -I, $$(call GetJavaHeaderDir, $$(MODULE)))
|
||||
|
||||
ifneq ($$($1_EXTRA_HEADER_DIRS), )
|
||||
@@ -203,11 +218,19 @@ define SetupJdkExecutableBody
|
||||
$1_TYPE := EXECUTABLE
|
||||
|
||||
ifeq ($$($1_OUTPUT_DIR), )
|
||||
$1_OUTPUT_DIR := $$(call FindExecutableDirForModule, $$(MODULE))
|
||||
ifneq ($$(MODULE), )
|
||||
$1_OUTPUT_DIR := $$(call FindExecutableDirForModule, $$(MODULE))
|
||||
else
|
||||
$$(error Must specify OUTPUT_DIR in a MODULE free context)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($$($1_OBJECT_DIR), )
|
||||
$1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/$$($1_NAME)
|
||||
ifneq ($$(MODULE), )
|
||||
$1_OBJECT_DIR := $$(SUPPORT_OUTPUTDIR)/native/$$(MODULE)/$$($1_NAME)
|
||||
else
|
||||
$$(error Must specify OBJECT_DIR in a MODULE free context)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($$($1_VERSIONINFO_RESOURCE), )
|
||||
|
||||
@@ -64,6 +64,9 @@ define NEWLINE
|
||||
|
||||
endef
|
||||
|
||||
# Make sure we have a value (could be overridden on command line by caller)
|
||||
CREATING_BUILDJDK ?= false
|
||||
|
||||
# Certain features only work in newer version of GNU Make. The build will still
|
||||
# function in 3.81, but will be less performant.
|
||||
ifeq (4.0, $(firstword $(sort 4.0 $(MAKE_VERSION))))
|
||||
@@ -89,7 +92,7 @@ BUILDTIMESDIR=$(OUTPUTDIR)/make-support/build-times
|
||||
|
||||
# Record starting time for build of a sub repository.
|
||||
define RecordStartTime
|
||||
$(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_start_$(strip $1) && \
|
||||
$(DATE) '+%Y %m %d %H %M %S' | $(AWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_start_$(strip $1) && \
|
||||
$(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_start_$(strip $1)_human_readable
|
||||
endef
|
||||
|
||||
@@ -97,10 +100,10 @@ endef
|
||||
# easy to read format. Handles builds that cross midnight. Expects
|
||||
# that a build will never take 24 hours or more.
|
||||
define RecordEndTime
|
||||
$(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_end_$(strip $1)
|
||||
$(DATE) '+%Y %m %d %H %M %S' | $(AWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_end_$(strip $1)
|
||||
$(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_end_$(strip $1)_human_readable
|
||||
$(ECHO) `$(CAT) $(BUILDTIMESDIR)/build_time_start_$(strip $1)` `$(CAT) $(BUILDTIMESDIR)/build_time_end_$(strip $1)` $1 | \
|
||||
$(NAWK) '{ F=$$7; T=$$14; if (F > T) { T+=3600*24 }; D=T-F; H=int(D/3600); \
|
||||
$(AWK) '{ F=$$7; T=$$14; if (F > T) { T+=3600*24 }; D=T-F; H=int(D/3600); \
|
||||
M=int((D-H*3600)/60); S=D-H*3600-M*60; printf("%02d:%02d:%02d %s\n",H,M,S,$$15); }' \
|
||||
> $(BUILDTIMESDIR)/build_time_diff_$(strip $1)
|
||||
endef
|
||||
@@ -436,37 +439,18 @@ endif
|
||||
# On Windows, converts a path from cygwin/unix style (e.g. /bin/foo) into
|
||||
# "mixed mode" (e.g. c:/cygwin/bin/foo). On other platforms, return the path
|
||||
# unchanged.
|
||||
# This also converts a colon-separated list of paths to a semicolon-separated
|
||||
# list.
|
||||
# This is normally not needed since we use the FIXPATH prefix for command lines,
|
||||
# but might be needed in certain circumstances.
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
ifeq ($(call isBuildOsEnv, windows.wsl), true)
|
||||
FixPath = \
|
||||
$(shell $(WSLPATH) -m $1)
|
||||
else
|
||||
FixPath = \
|
||||
$(shell $(CYGPATH) -m $1)
|
||||
endif
|
||||
FixPath = \
|
||||
$(strip $(subst \,\\, $(shell $(FIXPATH_BASE) print $(patsubst $(FIXPATH), , $1))))
|
||||
else
|
||||
FixPath = \
|
||||
$1
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# FixPathList
|
||||
#
|
||||
# On Windows, converts a cygwin/unix style path list (colon-separated) into
|
||||
# the native format (mixed mode, semicolon-separated). On other platforms,
|
||||
# return the path list unchanged.
|
||||
################################################################################
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
FixPathList = \
|
||||
$(subst @,$(SPACE),$(subst $(SPACE),;,$(foreach entry,$(subst :,$(SPACE),\
|
||||
$(subst $(SPACE),@,$(strip $1))),$(call FixPath, $(entry)))))
|
||||
else
|
||||
FixPathList = \
|
||||
$1
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# DependOnVariable
|
||||
#
|
||||
|
||||
@@ -26,209 +26,56 @@
|
||||
ifndef _MODULES_GMK
|
||||
_MODULES_GMK := 1
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# BOOT_MODULES are modules defined by the boot loader
|
||||
# PLATFORM_MODULES are modules defined by the platform loader
|
||||
# JRE_TOOL_MODULES are tools included in JRE and defined by the application loader
|
||||
#
|
||||
# All other modules not declared below are defined by the application loader
|
||||
# and are not included in JRE.
|
||||
|
||||
BOOT_MODULES :=
|
||||
PLATFORM_MODULES :=
|
||||
JRE_TOOL_MODULES :=
|
||||
UPGRADEABLE_MODULES :=
|
||||
AGGREGATOR_MODULES :=
|
||||
DOCS_MODULES :=
|
||||
|
||||
# Hook to include the corresponding custom file, if present.
|
||||
$(eval $(call IncludeCustomExtension, common/Modules.gmk))
|
||||
|
||||
BOOT_MODULES += \
|
||||
java.base \
|
||||
java.datatransfer \
|
||||
java.desktop \
|
||||
java.instrument \
|
||||
java.logging \
|
||||
java.management \
|
||||
java.management.rmi \
|
||||
java.naming \
|
||||
java.prefs \
|
||||
java.rmi \
|
||||
java.security.sasl \
|
||||
java.xml \
|
||||
jdk.incubator.foreign \
|
||||
jdk.incubator.vector \
|
||||
jdk.internal.vm.ci \
|
||||
jdk.jfr \
|
||||
jdk.management \
|
||||
jdk.management.jfr \
|
||||
jdk.management.agent \
|
||||
jdk.net \
|
||||
jdk.nio.mapmode \
|
||||
jdk.sctp \
|
||||
jdk.unsupported \
|
||||
#
|
||||
################################################################################
|
||||
# Setup module sets for classloaders
|
||||
|
||||
# to be deprivileged
|
||||
BOOT_MODULES += \
|
||||
jdk.naming.rmi \
|
||||
#
|
||||
include $(TOPDIR)/make/conf/module-loader-map.conf
|
||||
|
||||
# Modules that directly or indirectly requiring upgradeable modules
|
||||
# should carefully be considered if it should be upgradeable or not.
|
||||
UPGRADEABLE_MODULES += \
|
||||
java.compiler \
|
||||
jdk.aot \
|
||||
jdk.internal.vm.compiler \
|
||||
jdk.internal.vm.compiler.management \
|
||||
#
|
||||
|
||||
|
||||
AGGREGATOR_MODULES += \
|
||||
java.se \
|
||||
#
|
||||
|
||||
PLATFORM_MODULES += \
|
||||
$(UPGRADEABLE_MODULES) \
|
||||
$(AGGREGATOR_MODULES)
|
||||
#
|
||||
|
||||
PLATFORM_MODULES += \
|
||||
java.net.http \
|
||||
java.scripting \
|
||||
java.security.jgss \
|
||||
java.smartcardio \
|
||||
java.sql \
|
||||
java.sql.rowset \
|
||||
java.transaction.xa \
|
||||
java.xml.crypto \
|
||||
jdk.accessibility \
|
||||
jdk.charsets \
|
||||
jdk.crypto.cryptoki \
|
||||
jdk.crypto.ec \
|
||||
jdk.dynalink \
|
||||
jdk.httpserver \
|
||||
jdk.jsobject \
|
||||
jdk.localedata \
|
||||
jdk.naming.dns \
|
||||
jdk.security.auth \
|
||||
jdk.security.jgss \
|
||||
jdk.xml.dom \
|
||||
jdk.zipfs \
|
||||
#
|
||||
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
PLATFORM_MODULES += jdk.crypto.mscapi
|
||||
endif
|
||||
|
||||
JRE_TOOL_MODULES += \
|
||||
jdk.jdwp.agent \
|
||||
jdk.incubator.jpackage \
|
||||
#
|
||||
# Append platform-specific and upgradeable modules
|
||||
PLATFORM_MODULES += $(PLATFORM_MODULES_$(OPENJDK_TARGET_OS)) \
|
||||
$(UPGRADEABLE_PLATFORM_MODULES)
|
||||
|
||||
################################################################################
|
||||
# Setup module sets for docs
|
||||
|
||||
# DOCS_MODULES defines the root modules for javadoc generation.
|
||||
# All of their `require transitive` modules directly and indirectly will be included.
|
||||
DOCS_MODULES += \
|
||||
java.se \
|
||||
java.smartcardio \
|
||||
jdk.accessibility \
|
||||
jdk.attach \
|
||||
jdk.charsets \
|
||||
jdk.compiler \
|
||||
jdk.crypto.cryptoki \
|
||||
jdk.crypto.ec \
|
||||
jdk.dynalink \
|
||||
jdk.editpad \
|
||||
jdk.hotspot.agent \
|
||||
jdk.httpserver \
|
||||
jdk.incubator.jpackage \
|
||||
jdk.incubator.vector \
|
||||
jdk.jartool \
|
||||
jdk.javadoc \
|
||||
jdk.jcmd \
|
||||
jdk.jconsole \
|
||||
jdk.jdeps \
|
||||
jdk.jdi \
|
||||
jdk.jdwp.agent \
|
||||
jdk.jfr \
|
||||
jdk.jlink \
|
||||
jdk.jsobject \
|
||||
jdk.jshell \
|
||||
jdk.jstatd \
|
||||
jdk.incubator.foreign \
|
||||
jdk.localedata \
|
||||
jdk.management \
|
||||
jdk.management.agent \
|
||||
jdk.management.jfr \
|
||||
jdk.naming.dns \
|
||||
jdk.naming.rmi \
|
||||
jdk.net \
|
||||
jdk.nio.mapmode \
|
||||
jdk.sctp \
|
||||
jdk.security.auth \
|
||||
jdk.security.jgss \
|
||||
jdk.xml.dom \
|
||||
jdk.zipfs \
|
||||
#
|
||||
|
||||
# These modules are included in the interim image which is used to run profiling
|
||||
# before building the real images.
|
||||
INTERIM_IMAGE_MODULES := java.base java.logging
|
||||
|
||||
LANGTOOLS_MODULES := \
|
||||
java.compiler \
|
||||
jdk.compiler \
|
||||
jdk.javadoc \
|
||||
jdk.jdeps \
|
||||
jdk.jshell \
|
||||
#
|
||||
|
||||
HOTSPOT_MODULES := \
|
||||
jdk.aot \
|
||||
jdk.hotspot.agent \
|
||||
jdk.internal.vm.ci \
|
||||
jdk.internal.vm.compiler \
|
||||
jdk.internal.vm.compiler.management \
|
||||
#
|
||||
include $(TOPDIR)/make/conf/docs-modules.conf
|
||||
|
||||
################################################################################
|
||||
# Setup module sets needed by the build system
|
||||
|
||||
include $(TOPDIR)/make/conf/build-module-sets.conf
|
||||
|
||||
################################################################################
|
||||
# Depending on the configuration, we might need to filter out some modules that
|
||||
# normally should have been included
|
||||
|
||||
# Some platforms don't have the serviceability agent
|
||||
|
||||
ifeq ($(INCLUDE_SA), false)
|
||||
MODULES_FILTER += jdk.hotspot.agent
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Filter out jvmci specific modules if jvmci is disabled
|
||||
|
||||
ifeq ($(INCLUDE_JVMCI), false)
|
||||
MODULES_FILTER += jdk.internal.vm.ci
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Filter out Graal specific modules if Graal is disabled
|
||||
|
||||
ifeq ($(INCLUDE_GRAAL), false)
|
||||
MODULES_FILTER += jdk.internal.vm.compiler
|
||||
MODULES_FILTER += jdk.internal.vm.compiler.management
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Filter out aot specific modules if aot is disabled
|
||||
|
||||
ifeq ($(ENABLE_AOT), false)
|
||||
MODULES_FILTER += jdk.aot
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# jpackage is only on windows, macosx, and linux
|
||||
|
||||
ifeq ($(call isTargetOs, windows macosx linux), false)
|
||||
MODULES_FILTER += jdk.incubator.jpackage
|
||||
MODULES_FILTER += jdk.jpackage
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
@@ -338,7 +185,7 @@ $(MODULE_DEPS_MAKEFILE): $(MODULE_INFOS) \
|
||||
$(RM) $@
|
||||
$(foreach m, $(MODULE_INFOS), \
|
||||
( $(PRINTF) "DEPS_$(call GetModuleNameFromModuleInfo, $m) :=" && \
|
||||
$(NAWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\
|
||||
$(AWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\
|
||||
BEGIN { if (MODULE != "java.base") printf(" java.base"); } \
|
||||
/^ *requires/ { sub(/;/, ""); \
|
||||
sub(/requires /, " "); \
|
||||
@@ -352,7 +199,7 @@ $(MODULE_DEPS_MAKEFILE): $(MODULE_INFOS) \
|
||||
printf(" %s", $$0) } \
|
||||
END { printf("\n") }' $m && \
|
||||
$(PRINTF) "TRANSITIVE_MODULES_$(call GetModuleNameFromModuleInfo, $m) :=" && \
|
||||
$(NAWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\
|
||||
$(AWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\
|
||||
BEGIN { if (MODULE != "java.base") printf(" java.base"); } \
|
||||
/^ *requires *transitive/ { \
|
||||
sub(/;/, ""); \
|
||||
@@ -410,8 +257,7 @@ FindTransitiveIndirectDepsForModules = \
|
||||
# Upgradeable modules are those that are either defined as upgradeable or that
|
||||
# require an upradeable module.
|
||||
FindAllUpgradeableModules = \
|
||||
$(sort $(filter-out $(MODULES_FILTER), $(UPGRADEABLE_MODULES)))
|
||||
|
||||
$(sort $(filter-out $(MODULES_FILTER), $(UPGRADEABLE_PLATFORM_MODULES)))
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -467,7 +313,6 @@ endef
|
||||
# * JDK_MODULES
|
||||
# * BOOT_MODULES
|
||||
# * PLATFORM_MODULES
|
||||
# * JRE_TOOL_MODULES
|
||||
define ReadImportMetaData
|
||||
IMPORTED_MODULES := $$(call FindImportedModules)
|
||||
$$(foreach m, $$(IMPORTED_MODULES), \
|
||||
|
||||
@@ -72,10 +72,10 @@ define WriteCompileCommandsFragment
|
||||
$(call LogInfo, Creating compile commands fragment for $(notdir $3))
|
||||
$(call MakeDir, $(dir $1))
|
||||
$(call WriteFile,{ \
|
||||
"directory": "$(strip $2)"$(COMMA) \
|
||||
"file": "$(strip $3)"$(COMMA) \
|
||||
"directory": "$(strip $(call FixPath, $2))"$(COMMA) \
|
||||
"file": "$(strip $(call FixPath, $3))"$(COMMA) \
|
||||
"command": "$(strip $(subst $(DQUOTE),\$(DQUOTE),$(subst \,\\,\
|
||||
$(subst $(FIXPATH),,$4))))" \
|
||||
$(subst $(FIXPATH),,$(call FixPath, $4)))))" \
|
||||
}$(COMMA), \
|
||||
$1)
|
||||
endef
|
||||
@@ -175,12 +175,6 @@ $(strip \
|
||||
)
|
||||
endef
|
||||
|
||||
ifeq ($(call isBuildOsEnv, windows.cygwin), true)
|
||||
UNIX_PATH_PREFIX := /cygdrive
|
||||
else ifeq ($(call isBuildOsEnv, windows.msys), true)
|
||||
UNIX_PATH_PREFIX :=
|
||||
endif
|
||||
|
||||
# This pattern is used to transform the output of the microsoft CL compiler
|
||||
# into a make syntax dependency file (.d)
|
||||
WINDOWS_SHOWINCLUDE_SED_PATTERN := \
|
||||
@@ -188,7 +182,7 @@ WINDOWS_SHOWINCLUDE_SED_PATTERN := \
|
||||
-e 's|Note: including file: *||' \
|
||||
-e 's|\r||g' \
|
||||
-e 's|\\|/|g' \
|
||||
-e 's|^\([a-zA-Z]\):|$(UNIX_PATH_PREFIX)/\1|g' \
|
||||
-e 's|^\([a-zA-Z]\):|$(WINENV_PREFIX)/\1|g' \
|
||||
-e '\|$(TOPDIR)|I !d' \
|
||||
-e 's|$$$$| \\|g' \
|
||||
#
|
||||
@@ -237,10 +231,25 @@ ifeq ($(ALLOW_ABSOLUTE_PATHS_IN_OUTPUT)-$(FILE_MACRO_CFLAGS), false-)
|
||||
) \
|
||||
)
|
||||
|
||||
# When compiling with relative paths, the deps file comes out with relative
|
||||
# paths.
|
||||
# When compiling with relative paths, the deps file may come out with relative
|
||||
# paths, and that path may start with './'. First remove any leading ./, then
|
||||
# add WORKSPACE_ROOT to any line not starting with /, while allowing for
|
||||
# leading spaces. There may also be multiple entries on the same line, so start
|
||||
# with splitting such lines.
|
||||
# Non GNU sed (BSD on macosx) cannot substitue in literal \n using regex.
|
||||
# Instead use a bash escaped literal newline. To avoid having unmatched quotes
|
||||
# ruin the ability for an editor to properly syntax highlight this file, define
|
||||
# that newline sequence as a separate variable and add the closing quote behind
|
||||
# a comment.
|
||||
sed_newline := \'$$'\n''#'
|
||||
define fix-deps-file
|
||||
$(SED) -e 's|^\([ ]*\)|\1$(WORKSPACE_ROOT)|' $1.tmp > $1
|
||||
$(SED) \
|
||||
-e 's|\([^ ]\) \{1,\}\([^\\:]\)|\1 \\$(sed_newline) \2|g' \
|
||||
$1.tmp \
|
||||
| $(SED) \
|
||||
-e 's|^\([ ]*\)\./|\1|' \
|
||||
-e '/^[ ]*[^/ ]/s|^\([ ]*\)|\1$(WORKSPACE_ROOT)/|' \
|
||||
> $1
|
||||
endef
|
||||
else
|
||||
# By default the MakeCommandRelative macro does nothing.
|
||||
@@ -527,7 +536,7 @@ define SetupNativeCompilationBody
|
||||
ifeq ($$($1_TYPE), EXECUTABLE)
|
||||
$1_PREFIX :=
|
||||
ifeq ($$($1_SUFFIX), )
|
||||
$1_SUFFIX := $(EXE_SUFFIX)
|
||||
$1_SUFFIX := $(EXECUTABLE_SUFFIX)
|
||||
endif
|
||||
else
|
||||
$1_PREFIX := $(LIBRARY_PREFIX)
|
||||
@@ -805,13 +814,15 @@ define SetupNativeCompilationBody
|
||||
-include $$($1_PCH_DEPS_TARGETS_FILE)
|
||||
|
||||
$1_PCH_COMMAND := $$($1_CC) $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $$($1_SYSROOT_CFLAGS) \
|
||||
$$($1_OPT_CFLAGS) -x c++-header -c $(C_FLAG_DEPS) $$($1_PCH_DEPS_FILE)
|
||||
$$($1_OPT_CFLAGS) -x c++-header -c $(C_FLAG_DEPS) \
|
||||
$$(addsuffix .tmp, $$($1_PCH_DEPS_FILE))
|
||||
|
||||
$$($1_PCH_FILE): $$($1_PRECOMPILED_HEADER) $$($1_COMPILE_VARDEPS_FILE)
|
||||
$$(call LogInfo, Generating precompiled header)
|
||||
$$(call MakeDir, $$(@D))
|
||||
$$(call ExecuteWithLog, $$@, $$(call MakeCommandRelative, \
|
||||
$$($1_PCH_COMMAND) $$< -o $$@))
|
||||
$$(call fix-deps-file, $$($1_PCH_DEPS_FILE))
|
||||
$(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_PCH_DEPS_FILE) \
|
||||
> $$($1_PCH_DEPS_TARGETS_FILE)
|
||||
|
||||
@@ -1146,6 +1157,9 @@ define SetupNativeCompilationBody
|
||||
test "$$$$?" = "1" ; \
|
||||
$$($1_CREATE_DEBUGINFO_CMDS)
|
||||
$$($1_STRIP_CMD)
|
||||
ifeq ($(call isBuildOsEnv, windows.wsl2), true)
|
||||
$$(CHMOD) +x $$($1_TARGET)
|
||||
endif
|
||||
else
|
||||
$$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \
|
||||
$$(if $$($1_LINK_OBJS_RELATIVE), $$(CD) $$(OUTPUTDIR) ; ) \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -177,7 +177,7 @@ define SetupTextFileProcessingBody
|
||||
$1_INCLUDES_PARTIAL_AWK := $$(subst $$(SPACE);,,$$(subst $$(SPACE)=>$$(SPACE),"$$(RIGHT_PAREN)$$(RIGHT_PAREN) \
|
||||
{ include$$(LEFT_PAREN)",$$(subst $$(SPACE);$$(SPACE),"$$(RIGHT_PAREN) } \
|
||||
else if $$(LEFT_PAREN)matches$$(LEFT_PAREN)",$$(strip $$($1_INCLUDES)))))
|
||||
$1_INCLUDES_COMMAND_LINE := $(NAWK) '$$($1_INCLUDES_HEADER_AWK) \
|
||||
$1_INCLUDES_COMMAND_LINE := $(AWK) '$$($1_INCLUDES_HEADER_AWK) \
|
||||
{ if (matches("$$($1_INCLUDES_PARTIAL_AWK)") } else print }'
|
||||
else
|
||||
# We don't have any includes, just pipe the file through cat.
|
||||
|
||||
@@ -278,7 +278,7 @@ FindExecutableDirForModule = \
|
||||
# param 1 : A space separated list of classpath entries
|
||||
# The surrounding strip is needed to keep additional whitespace out
|
||||
PathList = \
|
||||
"$(subst $(SPACE),$(PATH_SEP),$(strip $(subst $(DQUOTE),,$1)))"
|
||||
"$(subst $(SPACE),:,$(strip $(subst $(DQUOTE),,$1)))"
|
||||
|
||||
################################################################################
|
||||
# Check if a specified hotspot variant is being built, or at least one of a
|
||||
|
||||
@@ -85,14 +85,16 @@ define SetupCompileProperties
|
||||
$$(addprefix _SPACE_, $$(PROPJAVAS)))))
|
||||
|
||||
# Now setup the rule for the generation of the resource bundles.
|
||||
$(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_props: $$(PROPSOURCES)
|
||||
PROPS_BASE := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_props
|
||||
$$(PROPS_BASE): $$(PROPSOURCES)
|
||||
$$(call MakeDir, $$(@D) $$(PROPDIRS))
|
||||
$(FIND) $$(@D) -name "*.java" -a ! -name "*Properties.java" $(FIND_DELETE)
|
||||
$(ECHO) Compiling $$(words $$(PROPSOURCES)) properties into resource bundles for $(MODULE)
|
||||
$(TOOL_COMPILEPROPS_CMD) $$(PROPCMDLINE)
|
||||
$$(call ExecuteWithLog, $$(PROPS_BASE)_exec, \
|
||||
$(TOOL_COMPILEPROPS_CMD) $$(PROPCMDLINE))
|
||||
$(TOUCH) $$@
|
||||
|
||||
$$(strip $1) += $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_props
|
||||
$$(strip $1) += $$(PROPS_BASE)
|
||||
endef
|
||||
|
||||
################################################################################
|
||||
|
||||
52
make/conf/build-module-sets.conf
Normal file
52
make/conf/build-module-sets.conf
Normal file
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code 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
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# Module sets needed by the build system
|
||||
|
||||
# These modules are included in the interim image which is used to run profiling
|
||||
# before building the real images.
|
||||
INTERIM_IMAGE_MODULES= \
|
||||
java.base \
|
||||
java.logging \
|
||||
#
|
||||
|
||||
# These targets require buildtools-langtools to process for gensrc
|
||||
LANGTOOLS_MODULES= \
|
||||
java.compiler \
|
||||
jdk.compiler \
|
||||
jdk.javadoc \
|
||||
jdk.jdeps \
|
||||
jdk.jshell \
|
||||
#
|
||||
|
||||
# These models require buildtools-hotspot to process for gensrc
|
||||
HOTSPOT_MODULES= \
|
||||
jdk.aot \
|
||||
jdk.hotspot.agent \
|
||||
jdk.internal.vm.ci \
|
||||
jdk.internal.vm.compiler \
|
||||
jdk.internal.vm.compiler.management \
|
||||
#
|
||||
72
make/conf/docs-modules.conf
Normal file
72
make/conf/docs-modules.conf
Normal file
@@ -0,0 +1,72 @@
|
||||
#
|
||||
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code 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
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# Module sets needed to build docs.
|
||||
#
|
||||
# DOCS_MODULES defines the root modules for javadoc generation.
|
||||
# All of their `require transitive` modules directly and indirectly will be included.
|
||||
DOCS_MODULES= \
|
||||
java.se \
|
||||
java.smartcardio \
|
||||
jdk.accessibility \
|
||||
jdk.attach \
|
||||
jdk.charsets \
|
||||
jdk.compiler \
|
||||
jdk.crypto.cryptoki \
|
||||
jdk.crypto.ec \
|
||||
jdk.dynalink \
|
||||
jdk.editpad \
|
||||
jdk.hotspot.agent \
|
||||
jdk.httpserver \
|
||||
jdk.jpackage \
|
||||
jdk.incubator.vector \
|
||||
jdk.jartool \
|
||||
jdk.javadoc \
|
||||
jdk.jcmd \
|
||||
jdk.jconsole \
|
||||
jdk.jdeps \
|
||||
jdk.jdi \
|
||||
jdk.jdwp.agent \
|
||||
jdk.jfr \
|
||||
jdk.jlink \
|
||||
jdk.jsobject \
|
||||
jdk.jshell \
|
||||
jdk.jstatd \
|
||||
jdk.incubator.foreign \
|
||||
jdk.localedata \
|
||||
jdk.management \
|
||||
jdk.management.agent \
|
||||
jdk.management.jfr \
|
||||
jdk.naming.dns \
|
||||
jdk.naming.rmi \
|
||||
jdk.net \
|
||||
jdk.nio.mapmode \
|
||||
jdk.sctp \
|
||||
jdk.security.auth \
|
||||
jdk.security.jgss \
|
||||
jdk.xml.dom \
|
||||
jdk.zipfs \
|
||||
#
|
||||
30
make/conf/javadoc.conf
Normal file
30
make/conf/javadoc.conf
Normal file
@@ -0,0 +1,30 @@
|
||||
# Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code 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
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
# URLs
|
||||
JAVADOC_BASE_URL=https://docs.oracle.com/pls/topic/lookup?ctx=javase$(VERSION_NUMBER)&id=homepage
|
||||
BUG_SUBMIT_URL=https://bugreport.java.com/bugreport/
|
||||
COPYRIGHT_URL=legal/copyright.html
|
||||
LICENSE_URL=https://www.oracle.com/java/javase/terms/license/java$(VERSION_NUMBER)speclicense.html
|
||||
REDISTRIBUTION_URL=https://www.oracle.com/technetwork/java/redist-137594.html
|
||||
@@ -240,7 +240,7 @@ var getJibProfilesCommon = function (input, data) {
|
||||
// List of the main profile names used for iteration
|
||||
common.main_profile_names = [
|
||||
"linux-x64", "linux-x86", "macosx-x64",
|
||||
"windows-x64", "windows-x86",
|
||||
"windows-x64", "windows-x86", "windows-aarch64",
|
||||
"linux-aarch64", "linux-arm32", "linux-ppc64le", "linux-s390x"
|
||||
];
|
||||
|
||||
@@ -256,6 +256,13 @@ var getJibProfilesCommon = function (input, data) {
|
||||
"--disable-jvm-feature-shenandoahgc",
|
||||
versionArgs(input, common))
|
||||
};
|
||||
// Extra settings for release profiles
|
||||
common.release_profile_base = {
|
||||
configure_args: [
|
||||
"--enable-reproducible-build",
|
||||
"--with-source-date=current",
|
||||
],
|
||||
};
|
||||
// Extra settings for debug profiles
|
||||
common.debug_suffix = "-debug";
|
||||
common.debug_profile_base = {
|
||||
@@ -268,6 +275,12 @@ var getJibProfilesCommon = function (input, data) {
|
||||
configure_args: ["--with-debug-level=slowdebug"],
|
||||
labels: "slowdebug"
|
||||
};
|
||||
// Extra settings for optimized profiles
|
||||
common.optimized_suffix = "-optimized";
|
||||
common.optimized_profile_base = {
|
||||
configure_args: ["--with-debug-level=optimized"],
|
||||
labels: "optimized",
|
||||
};
|
||||
// Extra settings for openjdk only profiles
|
||||
common.open_suffix = "-open";
|
||||
common.open_profile_base = {
|
||||
@@ -448,6 +461,15 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
configure_args: concat(common.configure_args_32bit),
|
||||
},
|
||||
|
||||
"windows-aarch64": {
|
||||
target_os: "windows",
|
||||
target_cpu: "aarch64",
|
||||
dependencies: ["devkit", "gtest", "build_devkit"],
|
||||
configure_args: [
|
||||
"--openjdk-target=aarch64-unknown-cygwin",
|
||||
],
|
||||
},
|
||||
|
||||
"linux-aarch64": {
|
||||
target_os: "linux",
|
||||
target_cpu: "aarch64",
|
||||
@@ -510,6 +532,13 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
profiles[debugName] = concatObjects(profiles[name],
|
||||
common.slowdebug_profile_base);
|
||||
});
|
||||
// Generate optimized versions of all the main profiles
|
||||
common.main_profile_names.forEach(function (name) {
|
||||
var optName = name + common.optimized_suffix;
|
||||
profiles[optName] = concatObjects(profiles[name],
|
||||
common.optimized_profile_base);
|
||||
profiles[optName].default_make_targets = [ "hotspot" ];
|
||||
});
|
||||
// Generate testmake profiles for the main profile of each build host
|
||||
// platform. This profile only runs the makefile tests.
|
||||
// Ant is needed to run the idea project generator test.
|
||||
@@ -653,6 +682,10 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
platform: "windows-x86",
|
||||
jdk_suffix: "zip",
|
||||
},
|
||||
"windows-aarch64": {
|
||||
platform: "windows-aarch64",
|
||||
jdk_suffix: "zip",
|
||||
},
|
||||
"linux-aarch64": {
|
||||
platform: "linux-aarch64",
|
||||
},
|
||||
@@ -797,6 +830,13 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
});
|
||||
});
|
||||
|
||||
// After creating all derived profiles, we can add the release profile base
|
||||
// to the main profiles
|
||||
common.main_profile_names.forEach(function (name) {
|
||||
profiles[name] = concatObjects(profiles[name],
|
||||
common.release_profile_base);
|
||||
});
|
||||
|
||||
// Artifacts of JCov profiles
|
||||
[ "linux-aarch64", "linux-x64", "macosx-x64", "windows-x64" ]
|
||||
.forEach(function (name) {
|
||||
@@ -987,7 +1027,7 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
var devkit_platform_revisions = {
|
||||
linux_x64: "gcc10.2.0-OL6.4+1.0",
|
||||
macosx_x64: "Xcode11.3.1-MacOSX10.15+1.1",
|
||||
windows_x64: "VS2019-16.7.2+1.0",
|
||||
windows_x64: "VS2019-16.7.2+1.1",
|
||||
linux_aarch64: "gcc10.2.0-OL7.6+1.0",
|
||||
linux_arm: "gcc8.2.0-Fedora27+1.0",
|
||||
linux_ppc64le: "gcc8.2.0-Fedora27+1.0",
|
||||
@@ -997,9 +1037,11 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
var devkit_platform = (input.target_cpu == "x86"
|
||||
? input.target_os + "_x64"
|
||||
: input.target_platform);
|
||||
|
||||
if (input.target_platform == "windows_aarch64") {
|
||||
devkit_platform = "windows_x64";
|
||||
}
|
||||
var devkit_cross_prefix = "";
|
||||
if (!(input.target_os == "windows" && isWsl(input))) {
|
||||
if (!(input.target_os == "windows")) {
|
||||
if (input.build_platform != input.target_platform
|
||||
&& input.build_platform != devkit_platform) {
|
||||
devkit_cross_prefix = input.build_platform + "-to-";
|
||||
|
||||
96
make/conf/module-loader-map.conf
Normal file
96
make/conf/module-loader-map.conf
Normal file
@@ -0,0 +1,96 @@
|
||||
#
|
||||
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code 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
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
# BOOT_MODULES are modules defined by the boot loader
|
||||
# PLATFORM_MODULES are modules defined by the platform loader
|
||||
#
|
||||
# All other modules not declared below are defined by the application loader
|
||||
# and are not included in JRE.
|
||||
|
||||
BOOT_MODULES= \
|
||||
java.base \
|
||||
java.datatransfer \
|
||||
java.desktop \
|
||||
java.instrument \
|
||||
java.logging \
|
||||
java.management \
|
||||
java.management.rmi \
|
||||
java.naming \
|
||||
java.prefs \
|
||||
java.rmi \
|
||||
java.security.sasl \
|
||||
java.xml \
|
||||
jdk.incubator.foreign \
|
||||
jdk.incubator.vector \
|
||||
jdk.internal.vm.ci \
|
||||
jdk.jfr \
|
||||
jdk.management \
|
||||
jdk.management.jfr \
|
||||
jdk.management.agent \
|
||||
jdk.net \
|
||||
jdk.nio.mapmode \
|
||||
jdk.sctp \
|
||||
jdk.unsupported \
|
||||
jdk.naming.rmi \
|
||||
#
|
||||
|
||||
# Modules that directly or indirectly requiring upgradeable modules
|
||||
# should carefully be considered if it should be upgradeable or not.
|
||||
UPGRADEABLE_PLATFORM_MODULES= \
|
||||
java.compiler \
|
||||
jdk.aot \
|
||||
jdk.internal.vm.compiler \
|
||||
jdk.internal.vm.compiler.management \
|
||||
#
|
||||
|
||||
PLATFORM_MODULES= \
|
||||
java.se \
|
||||
java.net.http \
|
||||
java.scripting \
|
||||
java.security.jgss \
|
||||
java.smartcardio \
|
||||
java.sql \
|
||||
java.sql.rowset \
|
||||
java.transaction.xa \
|
||||
java.xml.crypto \
|
||||
jdk.accessibility \
|
||||
jdk.charsets \
|
||||
jdk.crypto.cryptoki \
|
||||
jdk.crypto.ec \
|
||||
jdk.dynalink \
|
||||
jdk.httpserver \
|
||||
jdk.jsobject \
|
||||
jdk.localedata \
|
||||
jdk.naming.dns \
|
||||
jdk.security.auth \
|
||||
jdk.security.jgss \
|
||||
jdk.xml.dom \
|
||||
jdk.zipfs \
|
||||
#
|
||||
|
||||
PLATFORM_MODULES_windows= \
|
||||
jdk.crypto.mscapi \
|
||||
#
|
||||
@@ -1,27 +0,0 @@
|
||||
Owner: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
|
||||
Issuer: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
|
||||
Serial number: 36122296c5e338a520a1d25f4cd70954
|
||||
Valid from: Thu Aug 01 00:00:00 GMT 1996 until: Fri Jan 01 23:59:59 GMT 2021
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDNjCCAp+gAwIBAgIQNhIilsXjOKUgodJfTNcJVDANBgkqhkiG9w0BAQUFADCB
|
||||
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
|
||||
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
|
||||
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
|
||||
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
|
||||
cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIxMDEwMTIzNTk1OVow
|
||||
gc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcT
|
||||
CUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNV
|
||||
BAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRo
|
||||
YXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1z
|
||||
ZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
||||
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560
|
||||
ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j
|
||||
+ao6hnO2RlNYyIkFvYMRuHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBlkKyID1bZ5jA01CbH0FDxkt5r1DmI
|
||||
CSLGpmODA/eZd9iy5Ri4XWPz1HP7bJyZePFLeH0ZJMMrAoT4vCLZiiLXoPxx7JGH
|
||||
IPG47LHlVYCsPVLIOQ7C8MAFT9aCdYy9X9LcdpoFEsmvcsPcJX6kTY4XpeCHf+Ga
|
||||
WuFg3GQjPEIuTQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,26 +0,0 @@
|
||||
Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Serial number: b92f60cc889fa17a4609b85b706c8aaf
|
||||
Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw
|
||||
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns
|
||||
YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
|
||||
MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
||||
aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe
|
||||
Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX
|
||||
MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj
|
||||
IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx
|
||||
KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
|
||||
eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B
|
||||
AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM
|
||||
HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw
|
||||
DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC
|
||||
AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji
|
||||
nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX
|
||||
rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn
|
||||
jBJ7xUS0rg==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,21 +0,0 @@
|
||||
Owner: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
|
||||
Issuer: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
|
||||
Serial number: 3c9131cb1ff6d01b0e9ab8d044bf12be
|
||||
Valid from: Mon Jan 29 00:00:00 GMT 1996 until: Wed Aug 02 23:59:59 GMT 2028
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG
|
||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
||||
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
||||
MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
|
||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
||||
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
|
||||
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
|
||||
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
|
||||
CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i
|
||||
2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ
|
||||
2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,26 +0,0 @@
|
||||
Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Serial number: 7dd9fe07cfa81eb7107967fba78934c6
|
||||
Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
|
||||
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
|
||||
c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
|
||||
MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
|
||||
emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
|
||||
DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
|
||||
FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
|
||||
UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
|
||||
YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
|
||||
MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
|
||||
AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
|
||||
pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
|
||||
13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
|
||||
AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
|
||||
U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
|
||||
F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
|
||||
oJ2daZH9
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,24 +0,0 @@
|
||||
Owner: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA
|
||||
Issuer: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA
|
||||
Serial number: 67c8e1e8e3be1cbdfc913b8ea6238749
|
||||
Valid from: Wed Jan 01 00:00:00 GMT 1997 until: Fri Jan 01 23:59:59 GMT 2021
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICsDCCAhmgAwIBAgIQZ8jh6OO+HL38kTuOpiOHSTANBgkqhkiG9w0BAQUFADCB
|
||||
izELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxML
|
||||
RHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENl
|
||||
cnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcN
|
||||
OTcwMTAxMDAwMDAwWhcNMjEwMTAxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTAT
|
||||
BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNV
|
||||
BAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNV
|
||||
BAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0A
|
||||
MIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u
|
||||
6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522
|
||||
FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzAR
|
||||
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAS+mqF4EF+3kKMZ/F
|
||||
QfRWVKvpwuWXjhj+kckMPiZkyaFMJ2SnvQGTVXFuF0853BvcSTUQOSP/ypvIz2Y/
|
||||
3Ewa1IEGQlIf4SaxFhe65nByMUToTo1b5NP50OOPJWQx5yr4GIg2GlLFDUE1G2m3
|
||||
JvUXzMEZXkt8XOKDgJH6L/uatxY=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,4 +1,4 @@
|
||||
CLDR - Unicode Common Locale Data Repository
|
||||
http://cldr.unicode.org
|
||||
|
||||
CLDR version installed: 37
|
||||
CLDR version installed: 38
|
||||
|
||||
@@ -185,7 +185,7 @@ For terms of use, see http://www.unicode.org/copyright.html
|
||||
<type name="ghacc" description="Accra, Ghana" alias="Africa/Accra"/>
|
||||
<type name="gigib" description="Gibraltar" alias="Europe/Gibraltar"/>
|
||||
<type name="gldkshvn" description="Danmarkshavn, Greenland" alias="America/Danmarkshavn"/>
|
||||
<type name="glgoh" description="Nuuk (Godthåb), Greenland" alias="America/Godthab"/>
|
||||
<type name="glgoh" description="Nuuk (Godthåb), Greenland" alias="America/Godthab America/Nuuk"/>
|
||||
<type name="globy" description="Ittoqqortoormiit (Scoresbysund), Greenland" alias="America/Scoresbysund"/>
|
||||
<type name="glthu" description="Qaanaaq (Thule), Greenland" alias="America/Thule"/>
|
||||
<type name="gmbjl" description="Banjul, Gambia" alias="Africa/Banjul"/>
|
||||
|
||||
@@ -46,7 +46,7 @@ $Revision$
|
||||
<!ATTLIST version number CDATA #REQUIRED >
|
||||
<!--@MATCH:regex/\$Revision.*\$-->
|
||||
<!--@METADATA-->
|
||||
<!ATTLIST version cldrVersion CDATA #FIXED "37" >
|
||||
<!ATTLIST version cldrVersion CDATA #FIXED "38" >
|
||||
<!--@MATCH:any-->
|
||||
<!--@VALUE-->
|
||||
<!ATTLIST version draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
|
||||
@@ -483,7 +483,7 @@ $Revision$
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT ellipsis ( #PCDATA ) >
|
||||
<!ATTLIST ellipsis type (initial | medial | final | word-initial | word-medial | word-final) #IMPLIED >
|
||||
<!ATTLIST ellipsis type (initial | medial | final | word-initial | word-medial | word-final) #REQUIRED >
|
||||
<!ATTLIST ellipsis alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST ellipsis draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
@@ -1548,7 +1548,7 @@ $Revision$
|
||||
<!ELEMENT dateFormatItem ( #PCDATA ) >
|
||||
<!ATTLIST dateFormatItem id CDATA #REQUIRED >
|
||||
<!-- TODO rationalize this list -->
|
||||
<!--@MATCH:literal/Bh, Bhm, Bhms, E, EBhm, EBhms, EEEEd, EHm, EHms, Ed, Ehm, Ehms, Gy, GyM, GyMMM, GyMMMEEEEd, GyMMMEd, GyMMMM, GyMMMMEd, GyMMMMd, GyMMMd, GyMd, H, HHmm, HHmmZ, HHmmss, Hm, HmZ, Hmm, Hms, Hmsv, Hmsvvvv, Hmv, M, MEEEEd, MEd, MMM, MMMEEEEd, MMMEd, MMMM, MMMMEEEEd, MMMMEd, MMMMW, MMMMd, MMMMdd, MMMd, MMMdd, MMd, MMdd, Md, Mdd, UM, UMMM, UMMMd, UMd, d, h, hhmm, hhmmss, hm, hms, hmsv, hmsvvvv, hmv, mmss, ms, y, yM, yMEEEEd, yMEd, yMM, yMMM, yMMMEEEEd, yMMMEd, yMMMM, yMMMMEEEEd, yMMMMEd, yMMMMccccd, yMMMMd, yMMMd, yMMdd, yMd, yQ, yQQQ, yQQQQ, yw, yyyy, yyyyM, yyyyMEEEEd, yyyyMEd, yyyyMM, yyyyMMM, yyyyMMMEEEEd, yyyyMMMEd, yyyyMMMM, yyyyMMMMEd, yyyyMMMMccccd, yyyyMMMMd, yyyyMMMd, yyyyMMdd, yyyyMd, yyyyQQQ, yyyyQQQQ-->
|
||||
<!--@MATCH:literal/Bh, Bhm, Bhms, E, EBhm, EBhms, EEEEd, EHm, EHms, Ed, Ehm, Ehms, Gy, GyM, GyMMM, GyMMMEEEEd, GyMMMEd, GyMMMM, GyMMMMEd, GyMMMMd, GyMMMd, GyMd, H, HHmm, HHmmZ, HHmmss, Hm, HmZ, Hmm, Hms, Hmsv, Hmsvvvv, Hmv, Hmvvvv, M, MEEEEd, MEd, MMM, MMMEEEEd, MMMEd, MMMM, MMMMEEEEd, MMMMEd, MMMMW, MMMMd, MMMMdd, MMMd, MMMdd, MMd, MMdd, Md, Mdd, UM, UMMM, UMMMd, UMd, d, h, hhmm, hhmmss, hm, hms, hmsv, hmsvvvv, hmv, hmvvvv, mmss, ms, y, yM, yMEEEEd, yMEd, yMM, yMMM, yMMMEEEEd, yMMMEd, yMMMM, yMMMMEEEEd, yMMMMEd, yMMMMccccd, yMMMMd, yMMMd, yMMdd, yMd, yQ, yQQQ, yQQQQ, yw, yyyy, yyyyM, yyyyMEEEEd, yyyyMEd, yyyyMM, yyyyMMM, yyyyMMMEEEEd, yyyyMMMEd, yyyyMMMM, yyyyMMMMEd, yyyyMMMMccccd, yyyyMMMMd, yyyyMMMd, yyyyMMdd, yyyyMd, yyyyQQQ, yyyyQQQQ-->
|
||||
<!ATTLIST dateFormatItem count (zero | one | two | few | many | other) #IMPLIED >
|
||||
<!ATTLIST dateFormatItem alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
@@ -1648,7 +1648,7 @@ $Revision$
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT field ( alias | ( displayName*, relative*, relativeTime*, relativePeriod*, special* ) ) >
|
||||
<!ATTLIST field type (era | era-short | era-narrow | year | year-short | year-narrow | quarter | quarter-short | quarter-narrow | month | month-short | month-narrow | week | week-short | week-narrow | weekOfMonth | weekOfMonth-short | weekOfMonth-narrow | day | day-short | day-narrow | dayOfYear | dayOfYear-short | dayOfYear-narrow | weekday | weekday-short | weekday-narrow | weekdayOfMonth | weekdayOfMonth-short | weekdayOfMonth-narrow | sun | sun-short | sun-narrow | mon | mon-short | mon-narrow | tue | tue-short | tue-narrow | wed | wed-short | wed-narrow | thu | thu-short | thu-narrow | fri | fri-short | fri-narrow | sat | sat-short | sat-narrow | dayperiod | dayperiod-short | dayperiod-narrow | hour | hour-short | hour-narrow | minute | minute-short | minute-narrow | second | second-short | second-narrow | zone | zone-short | zone-narrow) #IMPLIED >
|
||||
<!ATTLIST field type (era | era-short | era-narrow | year | year-short | year-narrow | quarter | quarter-short | quarter-narrow | month | month-short | month-narrow | week | week-short | week-narrow | weekOfMonth | weekOfMonth-short | weekOfMonth-narrow | day | day-short | day-narrow | dayOfYear | dayOfYear-short | dayOfYear-narrow | weekday | weekday-short | weekday-narrow | weekdayOfMonth | weekdayOfMonth-short | weekdayOfMonth-narrow | sun | sun-short | sun-narrow | mon | mon-short | mon-narrow | tue | tue-short | tue-narrow | wed | wed-short | wed-narrow | thu | thu-short | thu-narrow | fri | fri-short | fri-narrow | sat | sat-short | sat-narrow | dayperiod | dayperiod-short | dayperiod-narrow | hour | hour-short | hour-narrow | minute | minute-short | minute-narrow | second | second-short | second-narrow | zone | zone-short | zone-narrow) #REQUIRED >
|
||||
<!ATTLIST field alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST field draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
|
||||
@@ -1664,7 +1664,7 @@ $Revision$
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT relative ( #PCDATA ) >
|
||||
<!ATTLIST relative type NMTOKEN #IMPLIED >
|
||||
<!ATTLIST relative type NMTOKEN #REQUIRED >
|
||||
<!-- TODO: determine whether to allow 3 -->
|
||||
<!--@MATCH:range/-2~3-->
|
||||
<!ATTLIST relative alt NMTOKENS #IMPLIED >
|
||||
@@ -2015,7 +2015,7 @@ $Revision$
|
||||
<!ATTLIST minimumGroupingDigits references CDATA #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
|
||||
<!ELEMENT symbols ( alias | ( decimal*, group*, list*, percentSign*, nativeZeroDigit*, patternDigit*, plusSign*, minusSign*, exponential*, superscriptingExponent*, perMille*, infinity*, nan*, currencyDecimal*, currencyGroup*, timeSeparator*, special* ) ) >
|
||||
<!ELEMENT symbols ( alias | ( decimal*, group*, list*, percentSign*, nativeZeroDigit*, patternDigit*, plusSign*, minusSign*, approximatelySign*, exponential*, superscriptingExponent*, perMille*, infinity*, nan*, currencyDecimal*, currencyGroup*, timeSeparator*, special* ) ) >
|
||||
<!ATTLIST symbols alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST symbols draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
|
||||
@@ -2126,6 +2126,14 @@ $Revision$
|
||||
<!ATTLIST minusSign numberSystem CDATA #IMPLIED >
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT approximatelySign ( #PCDATA ) >
|
||||
<!ATTLIST approximatelySign alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST approximatelySign draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
<!ATTLIST approximatelySign references CDATA #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
|
||||
<!ELEMENT exponential ( #PCDATA ) >
|
||||
<!ATTLIST exponential alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
@@ -2415,6 +2423,8 @@ $Revision$
|
||||
|
||||
<!ELEMENT unitPattern ( #PCDATA ) >
|
||||
<!ATTLIST unitPattern count (0 | 1 | zero | one | two | few | many | other) #REQUIRED >
|
||||
<!ATTLIST unitPattern case NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/ablative, accusative, comitative, dative, ergative, genitive, instrumental, locative, locativecopulative, nominative, oblique, prepositional, sociative, vocative-->
|
||||
<!ATTLIST unitPattern alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST unitPattern draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
@@ -2469,7 +2479,7 @@ $Revision$
|
||||
<!ATTLIST miscPatterns numberSystem CDATA #IMPLIED >
|
||||
<!--@MATCH:bcp47/nu-->
|
||||
|
||||
<!ELEMENT minimalPairs ( alias | ( pluralMinimalPairs*, ordinalMinimalPairs*, special* ) ) >
|
||||
<!ELEMENT minimalPairs ( alias | ( pluralMinimalPairs*, ordinalMinimalPairs*, caseMinimalPairs*, genderMinimalPairs*, special* ) ) >
|
||||
<!ATTLIST minimalPairs alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST minimalPairs draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
@@ -2477,7 +2487,7 @@ $Revision$
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT pluralMinimalPairs ( #PCDATA ) >
|
||||
<!ATTLIST pluralMinimalPairs count NMTOKEN #IMPLIED >
|
||||
<!ATTLIST pluralMinimalPairs count NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:literal/few, many, one, other, two, zero-->
|
||||
<!ATTLIST pluralMinimalPairs alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
@@ -2485,13 +2495,29 @@ $Revision$
|
||||
<!--@METADATA-->
|
||||
|
||||
<!ELEMENT ordinalMinimalPairs ( #PCDATA ) >
|
||||
<!ATTLIST ordinalMinimalPairs ordinal NMTOKEN #IMPLIED >
|
||||
<!ATTLIST ordinalMinimalPairs ordinal NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:literal/few, many, one, other, two, zero-->
|
||||
<!ATTLIST ordinalMinimalPairs alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST ordinalMinimalPairs draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
|
||||
<!ELEMENT caseMinimalPairs ( #PCDATA ) >
|
||||
<!ATTLIST caseMinimalPairs case NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:literal/ablative, accusative, comitative, dative, ergative, genitive, instrumental, locative, locativecopulative, nominative, oblique, prepositional, sociative, vocative-->
|
||||
<!ATTLIST caseMinimalPairs alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST caseMinimalPairs draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
|
||||
<!ELEMENT genderMinimalPairs ( #PCDATA ) >
|
||||
<!ATTLIST genderMinimalPairs gender NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:literal/animate, common, feminine, inanimate, masculine, neuter, personal-->
|
||||
<!ATTLIST genderMinimalPairs alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST genderMinimalPairs draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
|
||||
<!-- ######################################################### -->
|
||||
|
||||
<!ELEMENT units ( alias | ( unit*, unitLength*, durationUnit*, special* ) ) >
|
||||
@@ -2506,7 +2532,7 @@ $Revision$
|
||||
<!--@VALUE-->
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT unit ( alias | ( displayName*, unitPattern*, perUnitPattern*, special* ) ) >
|
||||
<!ELEMENT unit ( alias | ( gender*, displayName*, unitPattern*, perUnitPattern*, special* ) ) >
|
||||
<!ATTLIST unit type NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:validity/unit-->
|
||||
<!ATTLIST unit alt NMTOKENS #IMPLIED >
|
||||
@@ -2520,6 +2546,12 @@ $Revision$
|
||||
<!--@VALUE-->
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT gender ( #PCDATA ) >
|
||||
<!ATTLIST gender alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/animate, common, feminine, inanimate, masculine, neuter, personal-->
|
||||
<!ATTLIST gender draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
|
||||
<!ELEMENT perUnitPattern ( #PCDATA ) >
|
||||
<!ATTLIST perUnitPattern alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
@@ -2543,7 +2575,7 @@ $Revision$
|
||||
|
||||
<!ELEMENT compoundUnit ( alias | ( compoundUnitPattern1*, compoundUnitPattern*, unitPrefixPattern*, special* ) ) >
|
||||
<!ATTLIST compoundUnit type NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:or/regex/10p-?[0-9]{1,2}||literal/per, times, power2, power3-->
|
||||
<!--@MATCH:or/regex/10p-?[0-9]{1,2}||regex/1024p[1-8]||literal/per, times, power2, power3-->
|
||||
<!ATTLIST compoundUnit alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST compoundUnit draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
@@ -2557,6 +2589,10 @@ $Revision$
|
||||
|
||||
<!ELEMENT compoundUnitPattern1 ( #PCDATA ) >
|
||||
<!ATTLIST compoundUnitPattern1 count (0 | 1 | zero | one | two | few | many | other) #IMPLIED >
|
||||
<!ATTLIST compoundUnitPattern1 gender NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/animate, common, feminine, inanimate, masculine, neuter, personal-->
|
||||
<!ATTLIST compoundUnitPattern1 case NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/ablative, accusative, comitative, dative, ergative, genitive, instrumental, locative, locativecopulative, nominative, oblique, prepositional, sociative, vocative-->
|
||||
<!ATTLIST compoundUnitPattern1 alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST compoundUnitPattern1 draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
@@ -2565,6 +2601,8 @@ $Revision$
|
||||
<!--@METADATA-->
|
||||
|
||||
<!ELEMENT compoundUnitPattern ( #PCDATA ) >
|
||||
<!ATTLIST compoundUnitPattern case NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/ablative, accusative, comitative, dative, ergative, genitive, instrumental, locative, locativecopulative, nominative, oblique, prepositional, sociative, vocative-->
|
||||
<!ATTLIST compoundUnitPattern alt NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:literal/variant-->
|
||||
<!ATTLIST compoundUnitPattern draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
|
||||
@@ -2949,7 +2987,7 @@ $Revision$
|
||||
|
||||
<!ELEMENT characterLabelPattern ( #PCDATA ) >
|
||||
<!ATTLIST characterLabelPattern type NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:literal/all, category-list, compatibility, enclosed, extended, historic, miscellaneous, other, scripts, strokes-->
|
||||
<!--@MATCH:literal/all, category-list, compatibility, enclosed, extended, historic, miscellaneous, other, scripts, strokes, subscript, superscript-->
|
||||
<!ATTLIST characterLabelPattern count (0 | 1 | zero | one | two | few | many | other) #IMPLIED >
|
||||
<!-- count only used for certain patterns" -->
|
||||
<!ATTLIST characterLabelPattern alt NMTOKENS #IMPLIED >
|
||||
@@ -3050,7 +3088,6 @@ $Revision$
|
||||
<!--@MATCH:literal/NumberingSystemRules, OrdinalRules, SpelloutRules-->
|
||||
<!ATTLIST rulesetGrouping draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
|
||||
<!--@METADATA-->
|
||||
<!--@DEPRECATED-->
|
||||
|
||||
<!ELEMENT ruleset ( alias | ( rbnfrule*, special* ) ) >
|
||||
<!--@ORDERED-->
|
||||
|
||||
@@ -16,7 +16,7 @@ $Revision$
|
||||
<!ATTLIST version number CDATA #REQUIRED >
|
||||
<!--@MATCH:regex/\$Revision.*\$-->
|
||||
<!--@METADATA-->
|
||||
<!ATTLIST version cldrVersion CDATA #FIXED "37" >
|
||||
<!ATTLIST version cldrVersion CDATA #FIXED "38" >
|
||||
<!--@MATCH:version-->
|
||||
<!--@VALUE-->
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Except as contained in this notice, the name of a copyright holder shall not be
|
||||
<!ATTLIST version number CDATA #REQUIRED >
|
||||
<!--@MATCH:any-->
|
||||
<!--@METADATA-->
|
||||
<!ATTLIST version cldrVersion CDATA #FIXED "37" >
|
||||
<!ATTLIST version cldrVersion CDATA #FIXED "38" >
|
||||
<!--@MATCH:version-->
|
||||
<!--@VALUE-->
|
||||
<!ATTLIST version unicodeVersion CDATA #FIXED "13.0.0" >
|
||||
@@ -653,9 +653,9 @@ Except as contained in this notice, the name of a copyright holder shall not be
|
||||
|
||||
<!ELEMENT languageAlias EMPTY >
|
||||
<!ATTLIST languageAlias type NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:or/validity/locale||literal/aa_SAAHO, aar, abk, afr, aka, alb, amh, ara, arg, arm, art_lojban, asm, ava, ave, aym, aze, bak, bam, baq, bel, ben, bih, bis, bod, bos, bre, bul, bur, cat, ces, cha, che, chi, chu, chv, cor, cos, cre, cym, cze, dan, deu, div, dut, dzo, ell, eng, epo, est, eus, ewe, fao, fas, fij, fin, fra, fre, fry, ful, geo, ger, gla, gle, glg, glv, gre, grn, guj, hat, hau, hbs, heb, her, hin, hmo, hrv, hun, hye, i_ami, i_bnn, i_hak, i_klingon, i_lux, i_navajo, i_pwn, i_tao, i_tay, i_tsu, ibo, ice, ido, iii, iku, ile, ina, ind, ipk, isl, ita, jav, jpn, kal, kan, kas, kat, kau, kaz, khm, kik, kin, kir, kom, kon, kor, kua, kur, lao, lat, lav, lim, lin, lit, ltz, lub, lug, mac, mah, mal, mao, mar, may, mkd, mlg, mlt, mol, mon, mri, msa, mya, nau, nav, nbl, nde, ndo, nep, nld, nno, no_BOKMAL, no_NYNORSK, no_bok, no_nyn, nob, nor, nya, oci, oji, ori, orm, oss, pan, per, pli, pol, por, pus, que, roh, ron, rum, run, rus, sag, san, scc, scr, sgn_BE_FR, sgn_BE_NL, sgn_CH_DE, sin, slk, slo, slv, sme, smo, sna, snd, som, sot, spa, sqi, srd, srp, ssw, sun, swa, swe, tah, tam, tat, tel, tgk, tgl, tha, tib, tir, ton, tsn, tso, tuk, tur, twi, uig, ukr, urd, uzb, ven, vie, vol, wel, wln, wol, xho, yid, yor, zh_guoyu, zh_hakka, zh_min_nan, zh_xiang, zha, zho, zul, cel-gaulish, i-default, i-enochian, i-mingo, zh-min-->
|
||||
<!--@MATCH:or/validity/locale||literal/aa_saaho, aar, abk, afr, aka, alb, amh, ara, arg, arm, art_lojban, asm, ava, ave, aym, aze, bak, bam, baq, bel, ben, bih, bis, bod, bos, bre, bul, bur, cat, ces, cha, che, chi, chu, chv, cor, cos, cre, cym, cze, dan, deu, div, dut, dzo, ell, eng, epo, est, eus, ewe, fao, fas, fij, fin, fra, fre, fry, ful, geo, ger, gla, gle, glg, glv, gre, grn, guj, hat, hau, hbs, heb, her, hin, hmo, hrv, hun, hye, i_ami, i_bnn, i_hak, i_klingon, i_lux, i_navajo, i_pwn, i_tao, i_tay, i_tsu, ibo, ice, ido, iii, iku, ile, ina, ind, ipk, isl, ita, jav, jpn, kal, kan, kas, kat, kau, kaz, khm, kik, kin, kir, kom, kon, kor, kua, kur, lao, lat, lav, lim, lin, lit, ltz, lub, lug, mac, mah, mal, mao, mar, may, mkd, mlg, mlt, mol, mon, mri, msa, mya, nau, nav, nbl, nde, ndo, nep, nld, nno, no_bokmal, no_nynorsk, no_bok, no_nyn, nob, nor, nya, oci, oji, ori, orm, oss, pan, per, pli, pol, por, pus, que, roh, ron, rum, run, rus, sag, san, scc, scr, sgn_BE_FR, sgn_BE_NL, sgn_CH_DE, sin, slk, slo, slv, sme, smo, sna, snd, som, sot, spa, sqi, srd, srp, ssw, sun, swa, swe, tah, tam, tat, tel, tgk, tgl, tha, tib, tir, ton, tsn, tso, tuk, tur, twi, uig, ukr, urd, uzb, ven, vie, vol, wel, wln, wol, xho, yid, yor, zh_guoyu, zh_hakka, zh_min_nan, zh_xiang, zha, zho, zul, cel_gaulish, i_default, i_enochian, i_mingo, und_aaland, und_bokmal, und_hakka, und_lojban, und_nynorsk, und_saaho, und_xiang, zh_min, en_GB_oed, zh_cmn, zh_cmn_Hans, zh_cmn_Hant, zh_gan, zh_wuu, zh_yue-->
|
||||
<!ATTLIST languageAlias replacement NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:or/validity/locale||literal/en-x-i-default, nan-x-zh-min, see-x-i-mingo, und-x-i-enochian, xtg-x-cel-gaulish-->
|
||||
<!--@MATCH:or/validity/locale||literal/en_x_i_default, nan_x_zh_min, see_x_i_mingo, und_x_i_enochian, xtg_x_cel_gaulish-->
|
||||
<!--@VALUE-->
|
||||
<!ATTLIST languageAlias reason (deprecated | overlong | macrolanguage | legacy | bibliographic) #IMPLIED >
|
||||
<!--@VALUE-->
|
||||
@@ -689,7 +689,7 @@ Except as contained in this notice, the name of a copyright holder shall not be
|
||||
|
||||
<!ELEMENT variantAlias EMPTY >
|
||||
<!ATTLIST variantAlias type NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:or/validity/variant||literal/AALAND, POLYTONI-->
|
||||
<!--@MATCH:or/validity/variant||literal/aaland, polytoni-->
|
||||
<!ATTLIST variantAlias replacement NMTOKEN #REQUIRED >
|
||||
<!--@MATCH:or/validity/variant||validity/region||literal/hy, hyw-->
|
||||
<!--@VALUE-->
|
||||
@@ -1230,25 +1230,59 @@ Except as contained in this notice, the name of a copyright holder shall not be
|
||||
|
||||
<!-- # Grammatical Features -->
|
||||
|
||||
<!ELEMENT grammaticalData ( grammaticalFeatures* ) >
|
||||
<!ELEMENT grammaticalData ( grammaticalFeatures*, grammaticalDerivations* ) >
|
||||
|
||||
<!ELEMENT grammaticalFeatures ( grammaticalCase?, grammaticalGender?, grammaticalDefiniteness? ) >
|
||||
<!ELEMENT grammaticalFeatures ( grammaticalCase*, grammaticalGender*, grammaticalDefiniteness* ) >
|
||||
<!ATTLIST grammaticalFeatures targets NMTOKENS #REQUIRED >
|
||||
<!--@MATCH:set/literal/nominal-->
|
||||
<!ATTLIST grammaticalFeatures locales NMTOKENS #REQUIRED >
|
||||
<!--@MATCH:set/validity/language-->
|
||||
|
||||
<!ELEMENT grammaticalCase EMPTY >
|
||||
<!ATTLIST grammaticalCase values NMTOKENS #REQUIRED >
|
||||
<!ATTLIST grammaticalCase scope NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:set/literal/units-->
|
||||
<!ATTLIST grammaticalCase values NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:set/literal/ablative, accusative, comitative, dative, ergative, genitive, instrumental, locative, locativecopulative, nominative, oblique, partitive, prepositional, sociative, vocative-->
|
||||
<!--@VALUE-->
|
||||
|
||||
<!ELEMENT grammaticalGender EMPTY >
|
||||
<!ATTLIST grammaticalGender values NMTOKENS #REQUIRED >
|
||||
<!ATTLIST grammaticalGender scope NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:set/literal/units-->
|
||||
<!ATTLIST grammaticalGender values NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:set/literal/animate, common, feminine, inanimate, masculine, neuter, personal-->
|
||||
<!--@VALUE-->
|
||||
|
||||
<!ELEMENT grammaticalDefiniteness EMPTY >
|
||||
<!ATTLIST grammaticalDefiniteness values NMTOKENS #REQUIRED >
|
||||
<!ATTLIST grammaticalDefiniteness scope NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:set/literal/units-->
|
||||
<!ATTLIST grammaticalDefiniteness values NMTOKENS #IMPLIED >
|
||||
<!--@MATCH:set/literal/definite, indefinite, unspecified, construct-->
|
||||
<!--@VALUE-->
|
||||
|
||||
<!ELEMENT grammaticalDerivations ( deriveCompound*, deriveComponent* ) >
|
||||
<!ATTLIST grammaticalDerivations locales NMTOKENS #REQUIRED >
|
||||
<!--@MATCH:set/validity/locale-->
|
||||
|
||||
<!ELEMENT deriveCompound EMPTY >
|
||||
<!ATTLIST deriveCompound feature NMTOKENS #REQUIRED >
|
||||
<!--@MATCH:set/literal/gender-->
|
||||
<!ATTLIST deriveCompound structure NMTOKENS #REQUIRED >
|
||||
<!--@MATCH:set/literal/per, times, power, prefix-->
|
||||
<!ATTLIST deriveCompound value NMTOKEN #REQUIRED >
|
||||
<!-- TODO: add @MATCH function for locale's gender categories and use here -->
|
||||
<!--@MATCH:set/literal/0, 1-->
|
||||
<!--@VALUE-->
|
||||
|
||||
<!ELEMENT deriveComponent EMPTY >
|
||||
<!ATTLIST deriveComponent feature NMTOKENS #REQUIRED >
|
||||
<!--@MATCH:set/literal/plural, case-->
|
||||
<!ATTLIST deriveComponent structure NMTOKENS #REQUIRED >
|
||||
<!--@MATCH:set/literal/per, times, power, prefix-->
|
||||
<!ATTLIST deriveComponent value0 NMTOKEN #REQUIRED >
|
||||
<!-- TODO: add @MATCH function for locale's plural/case categories and use here -->
|
||||
<!--@MATCH:set/literal/compound, zero, one, two, few, many, other, accusative, nominative-->
|
||||
<!--@VALUE-->
|
||||
<!ATTLIST deriveComponent value1 NMTOKEN #REQUIRED >
|
||||
<!-- TODO: add @MATCH function for locale's plural/case categories and use here -->
|
||||
<!--@MATCH:set/literal/compound, zero, one, two, few, many, other, accusative, nominative-->
|
||||
<!--@VALUE-->
|
||||
|
||||
@@ -79,6 +79,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="chr">Cherokees</language>
|
||||
<language type="chy">Cheyennees</language>
|
||||
<language type="ckb">Sorani</language>
|
||||
<language type="ckb" alt="variant">Koerdies Sorani</language>
|
||||
<language type="co">Korsikaans</language>
|
||||
<language type="cop">Kopties</language>
|
||||
<language type="crs">Seselwa Franskreools</language>
|
||||
@@ -169,7 +170,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="io">Ido</language>
|
||||
<language type="is">Yslands</language>
|
||||
<language type="it">Italiaans</language>
|
||||
<language type="iu">Inuïties</language>
|
||||
<language type="iu">Inoektitoet</language>
|
||||
<language type="ja">Japannees</language>
|
||||
<language type="jbo">Lojban</language>
|
||||
<language type="jgo">Ngomba</language>
|
||||
@@ -562,11 +563,10 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="CG" alt="variant">Kongo (Republiek die)</territory>
|
||||
<territory type="CH">Switserland</territory>
|
||||
<territory type="CI">Ivoorkus</territory>
|
||||
<territory type="CI" alt="variant">Cote d’Ivoire</territory>
|
||||
<territory type="CK">Cookeilande</territory>
|
||||
<territory type="CL">Chili</territory>
|
||||
<territory type="CM">Kameroen</territory>
|
||||
<territory type="CN">Sjina</territory>
|
||||
<territory type="CN">China</territory>
|
||||
<territory type="CO">Colombië</territory>
|
||||
<territory type="CP">Clippertoneiland</territory>
|
||||
<territory type="CR">Costa Rica</territory>
|
||||
@@ -621,7 +621,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="GU">Guam</territory>
|
||||
<territory type="GW">Guinee-Bissau</territory>
|
||||
<territory type="GY">Guyana</territory>
|
||||
<territory type="HK">Hongkong SAS Sjina</territory>
|
||||
<territory type="HK">Hongkong SAS China</territory>
|
||||
<territory type="HK" alt="short">Hongkong</territory>
|
||||
<territory type="HM">Heardeiland en McDonaldeilande</territory>
|
||||
<territory type="HN">Honduras</territory>
|
||||
@@ -676,7 +676,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="ML">Mali</territory>
|
||||
<territory type="MM">Mianmar (Birma)</territory>
|
||||
<territory type="MN">Mongolië</territory>
|
||||
<territory type="MO">Macau SAS Sjina</territory>
|
||||
<territory type="MO">Macau SAS China</territory>
|
||||
<territory type="MO" alt="short">Macau</territory>
|
||||
<territory type="MP">Noord-Mariane-eilande</territory>
|
||||
<territory type="MQ">Martinique</territory>
|
||||
@@ -712,7 +712,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="PM">Sint Pierre en Miquelon</territory>
|
||||
<territory type="PN">Pitcairneilande</territory>
|
||||
<territory type="PR">Puerto Rico</territory>
|
||||
<territory type="PS">Palestynse gebiede</territory>
|
||||
<territory type="PS">Palestynse Grondgebiede</territory>
|
||||
<territory type="PS" alt="short">Palestina</territory>
|
||||
<territory type="PT">Portugal</territory>
|
||||
<territory type="PW">Palau</territory>
|
||||
@@ -732,7 +732,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="SG">Singapoer</territory>
|
||||
<territory type="SH">Sint Helena</territory>
|
||||
<territory type="SI">Slowenië</territory>
|
||||
<territory type="SJ">Svalbard en Jan Mayen</territory>
|
||||
<territory type="SJ">Spitsbergen en Jan Mayen</territory>
|
||||
<territory type="SK">Slowakye</territory>
|
||||
<territory type="SL">Sierra Leone</territory>
|
||||
<territory type="SM">San Marino</territory>
|
||||
@@ -3315,9 +3315,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>Kaliningrad</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Simferopol</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>Moskou</exemplarCity>
|
||||
</zone>
|
||||
@@ -3361,7 +3358,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<exemplarCity>Krasnojarsk</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Asia/Irkutsk">
|
||||
<exemplarCity>Irkutsk</exemplarCity>
|
||||
<exemplarCity>Irkoetsk</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Asia/Chita">
|
||||
<exemplarCity>Chita</exemplarCity>
|
||||
@@ -3513,6 +3510,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>Kiëf</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Simferopol</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>Zaporozhye</exemplarCity>
|
||||
</zone>
|
||||
@@ -3851,7 +3851,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Bolivia">
|
||||
<long>
|
||||
<standard>Bolivia-tyd</standard>
|
||||
<standard>Bolivië-tyd</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Brasilia">
|
||||
@@ -4062,7 +4062,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Guyana">
|
||||
<long>
|
||||
<standard>Guyana-tyd</standard>
|
||||
<standard>Guiana-tyd</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Hawaii_Aleutian">
|
||||
@@ -4125,9 +4125,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Irkutsk">
|
||||
<long>
|
||||
<generic>Irkutsk-tyd</generic>
|
||||
<standard>Irkutsk-standaardtyd</standard>
|
||||
<daylight>Irkutsk-somertyd</daylight>
|
||||
<generic>Irkoetsk-tyd</generic>
|
||||
<standard>Irkoetsk-standaardtyd</standard>
|
||||
<daylight>Irkoetsk-somertyd</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Israel">
|
||||
@@ -4312,9 +4312,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">Norfolkeiland-tyd</generic>
|
||||
<standard draft="contributed">Norfolkeiland-standaardtyd</standard>
|
||||
<daylight draft="contributed">Norfolkeiland-dagligtyd</daylight>
|
||||
<generic>Norfolkeiland-tyd</generic>
|
||||
<standard>Norfolkeiland-standaardtyd</standard>
|
||||
<daylight>Norfolkeiland-dagligtyd</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -6150,7 +6150,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName>sekondes</displayName>
|
||||
<unitPattern count="one">{0} sekonde</unitPattern>
|
||||
<unitPattern count="other">{0} sekondes</unitPattern>
|
||||
<perUnitPattern>{0}/s</perUnitPattern>
|
||||
<perUnitPattern>{0} per sekonde</perUnitPattern>
|
||||
</unit>
|
||||
<unit type="duration-millisecond">
|
||||
<displayName>millisekondes</displayName>
|
||||
@@ -6271,19 +6271,19 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} pieksels</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-megapixel">
|
||||
<displayName draft="provisional">megapieksels</displayName>
|
||||
<unitPattern count="one" draft="provisional">{0} megapieksel</unitPattern>
|
||||
<unitPattern count="other" draft="provisional">{0} megapieksels</unitPattern>
|
||||
<displayName>megapieksels</displayName>
|
||||
<unitPattern count="one">{0} megapieksel</unitPattern>
|
||||
<unitPattern count="other">{0} megapieksels</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-pixel-per-centimeter">
|
||||
<displayName draft="provisional">pieksel per sentimeter</displayName>
|
||||
<unitPattern count="one" draft="provisional">{0} pieksel per sentimeter</unitPattern>
|
||||
<unitPattern count="other" draft="provisional">{0} pieksels per sentimeter</unitPattern>
|
||||
<displayName>pieksels per sentimeter</displayName>
|
||||
<unitPattern count="one">{0} pieksel per sentimeter</unitPattern>
|
||||
<unitPattern count="other">{0} pieksels per sentimeter</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-pixel-per-inch">
|
||||
<displayName draft="provisional">pieksels per duim</displayName>
|
||||
<unitPattern count="one" draft="provisional">{0} pieksel per duim</unitPattern>
|
||||
<unitPattern count="other" draft="provisional">{0} pieksels per duim</unitPattern>
|
||||
<displayName>pieksels per duim</displayName>
|
||||
<unitPattern count="one">{0} pieksel per duim</unitPattern>
|
||||
<unitPattern count="other">{0} pieksels per duim</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot-per-centimeter">
|
||||
<displayName>stippels per sentimeter</displayName>
|
||||
@@ -6295,6 +6295,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} stippel per duim</unitPattern>
|
||||
<unitPattern count="other">{0} stippels per duim</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>stippel</displayName>
|
||||
<unitPattern count="one">{0}stippel</unitPattern>
|
||||
<unitPattern count="other">{0}stippel</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>aardstraal</displayName>
|
||||
<unitPattern count="one">{0} aardstraal</unitPattern>
|
||||
<unitPattern count="other">{0} aardstraal</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>kilometer</displayName>
|
||||
<unitPattern count="one">{0} kilometer</unitPattern>
|
||||
@@ -6375,6 +6385,15 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} astronomiese eenheid</unitPattern>
|
||||
<unitPattern count="other">{0} astronomiese eenhede</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>furlongs</displayName>
|
||||
<unitPattern count="one">{0} furlong</unitPattern>
|
||||
<unitPattern count="other">{0} furlongs</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<unitPattern count="one">{0} vaam</unitPattern>
|
||||
<unitPattern count="other">{0} vaam</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>seemyl</displayName>
|
||||
<unitPattern count="one">{0} seemyl</unitPattern>
|
||||
@@ -6400,6 +6419,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} lux</unitPattern>
|
||||
<unitPattern count="other">{0} lux</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>kandela</displayName>
|
||||
<unitPattern count="one">{0} kandela</unitPattern>
|
||||
<unitPattern count="other">{0} kandela</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>lumen</displayName>
|
||||
<unitPattern count="one">{0} lumen</unitPattern>
|
||||
<unitPattern count="other">{0} lumen</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>sonligsterkte</displayName>
|
||||
<unitPattern count="one">{0} sonligsterkte</unitPattern>
|
||||
@@ -6437,6 +6466,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} VSA-ton</unitPattern>
|
||||
<unitPattern count="other">{0} VSA-ton</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>stone</displayName>
|
||||
<unitPattern count="one">{0} stone</unitPattern>
|
||||
<unitPattern count="other">{0} stone</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>pond</displayName>
|
||||
<unitPattern count="one">{0} pond</unitPattern>
|
||||
@@ -6474,6 +6508,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} sonmassa</unitPattern>
|
||||
<unitPattern count="other">{0} sonmassas</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>korrelgewig</displayName>
|
||||
<unitPattern count="one">{0} korrelgewig</unitPattern>
|
||||
<unitPattern count="other">{0} korrelgewig</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>gigawatt</displayName>
|
||||
<unitPattern count="one">{0} gigawatt</unitPattern>
|
||||
@@ -6566,8 +6605,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</unit>
|
||||
<unit type="temperature-generic">
|
||||
<displayName>°</displayName>
|
||||
<unitPattern count="one">{0}°</unitPattern>
|
||||
<unitPattern count="other">{0}°</unitPattern>
|
||||
<unitPattern count="one">{0} graad</unitPattern>
|
||||
<unitPattern count="other">{0} graad</unitPattern>
|
||||
</unit>
|
||||
<unit type="temperature-celsius">
|
||||
<displayName>grade Celsius</displayName>
|
||||
@@ -6586,7 +6625,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</unit>
|
||||
<unit type="torque-pound-force-foot">
|
||||
<displayName>pondvoet</displayName>
|
||||
<unitPattern count="one">{0} pondvoet</unitPattern>
|
||||
<unitPattern count="one">{0} pondvoetkrag</unitPattern>
|
||||
<unitPattern count="other">{0} pondvoet</unitPattern>
|
||||
</unit>
|
||||
<unit type="torque-newton-meter">
|
||||
@@ -6677,6 +6716,10 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} acre-voet</unitPattern>
|
||||
<unitPattern count="other">{0} acre-voet</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<unitPattern count="one">{0} skepel</unitPattern>
|
||||
<unitPattern count="other">{0} skepel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>gelling</displayName>
|
||||
<unitPattern count="one">{0} gelling</unitPattern>
|
||||
@@ -6729,6 +6772,41 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} vat</unitPattern>
|
||||
<unitPattern count="other">{0} vate</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>dessertlepel</displayName>
|
||||
<unitPattern count="one">{0} dstlpl.</unitPattern>
|
||||
<unitPattern count="other">{0} dessertlepel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>Engelse dessertlepel</displayName>
|
||||
<unitPattern count="one">{0} Engelse dessertlepel</unitPattern>
|
||||
<unitPattern count="other">{0} Engelse dessertlepel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>druppel</displayName>
|
||||
<unitPattern count="one">{0} druppel</unitPattern>
|
||||
<unitPattern count="other">{0} druppels</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>dragme</displayName>
|
||||
<unitPattern count="one">{0} dragme</unitPattern>
|
||||
<unitPattern count="other">{0} dragme</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>sopie</displayName>
|
||||
<unitPattern count="one">{0} sopie</unitPattern>
|
||||
<unitPattern count="other">{0} sopies</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>knypie</displayName>
|
||||
<unitPattern count="one">{0} knypie</unitPattern>
|
||||
<unitPattern count="other">{0} knypie</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>kwartgelling</displayName>
|
||||
<unitPattern count="one">{0} Engelse kwartgelling</unitPattern>
|
||||
<unitPattern count="other">{0} Engelse kwartgelling</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>kompasrigting</displayName>
|
||||
<coordinateUnitPattern type="east">{0} oos</coordinateUnitPattern>
|
||||
@@ -7002,7 +7080,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<perUnitPattern>{0}/s.</perUnitPattern>
|
||||
</unit>
|
||||
<unit type="duration-millisecond">
|
||||
<displayName>millisekondes</displayName>
|
||||
<displayName>millisek.</displayName>
|
||||
<unitPattern count="one">{0} ms.</unitPattern>
|
||||
<unitPattern count="other">{0} ms</unitPattern>
|
||||
</unit>
|
||||
@@ -7146,6 +7224,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} stip./dm.</unitPattern>
|
||||
<unitPattern count="other">{0} stip./dm.</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>stip.</displayName>
|
||||
<unitPattern count="one">{0} stip.</unitPattern>
|
||||
<unitPattern count="other">{0} stip.</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>km</displayName>
|
||||
<unitPattern count="one">{0} km</unitPattern>
|
||||
@@ -7226,6 +7309,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} AE</unitPattern>
|
||||
<unitPattern count="other">{0} AE</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>furlongs</displayName>
|
||||
<unitPattern count="one">{0} fur.</unitPattern>
|
||||
<unitPattern count="other">{0} fur.</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>vaam</displayName>
|
||||
<unitPattern count="one">{0} vaam</unitPattern>
|
||||
<unitPattern count="other">{0} vaam</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>sm.</displayName>
|
||||
<unitPattern count="one">{0} sm.</unitPattern>
|
||||
@@ -7288,6 +7381,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} VSA-t.</unitPattern>
|
||||
<unitPattern count="other">{0} VSA-t.</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>stone</displayName>
|
||||
<unitPattern count="one" draft="provisional">{0} st</unitPattern>
|
||||
<unitPattern count="other" draft="provisional">{0} st</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>pond</displayName>
|
||||
<unitPattern count="one">{0} lb.</unitPattern>
|
||||
@@ -7325,6 +7423,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} M☉</unitPattern>
|
||||
<unitPattern count="other">{0} M☉</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>korrelgewig</displayName>
|
||||
<unitPattern count="one">{0} korrelgewig</unitPattern>
|
||||
<unitPattern count="other">{0} korrelgewig</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>GW</displayName>
|
||||
<unitPattern count="one">{0} GW</unitPattern>
|
||||
@@ -7537,6 +7640,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} acre-vt.</unitPattern>
|
||||
<unitPattern count="other">{0} acre-vt.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName draft="provisional">skepel</displayName>
|
||||
<unitPattern count="one">{0} skepel</unitPattern>
|
||||
<unitPattern count="other">{0} skepel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>gell.</displayName>
|
||||
<unitPattern count="one">{0} gell.</unitPattern>
|
||||
@@ -7589,6 +7697,41 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} bbl</unitPattern>
|
||||
<unitPattern count="other">{0} bbl</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>dstlpl.</displayName>
|
||||
<unitPattern count="one">{0} dstlpl.</unitPattern>
|
||||
<unitPattern count="other">{0} dstlpl.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>dstlpl. Eng.</displayName>
|
||||
<unitPattern count="one">{0} dstlpl. Eng.</unitPattern>
|
||||
<unitPattern count="other">{0} dstlpl. Eng.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>druppel</displayName>
|
||||
<unitPattern count="one">{0} druppel</unitPattern>
|
||||
<unitPattern count="other">{0} druppels</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>dragme vloeistof</displayName>
|
||||
<unitPattern count="one">{0} dr. vl.</unitPattern>
|
||||
<unitPattern count="other">{0} dr. vl.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>sopie</displayName>
|
||||
<unitPattern count="one">{0} sopie</unitPattern>
|
||||
<unitPattern count="other">{0} sopies</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>knypie</displayName>
|
||||
<unitPattern count="one">{0} knypie</unitPattern>
|
||||
<unitPattern count="other">{0} knypie</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>kwart Eng.</displayName>
|
||||
<unitPattern count="one">{0} kwart Eng.</unitPattern>
|
||||
<unitPattern count="other">{0} kwart Eng.</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>rigting</displayName>
|
||||
<coordinateUnitPattern type="east">{0} O</coordinateUnitPattern>
|
||||
@@ -7821,10 +7964,10 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</coordinateUnit>
|
||||
</unitLength>
|
||||
<durationUnit type="hm">
|
||||
<durationUnitPattern>h:mm</durationUnitPattern>
|
||||
<durationUnitPattern>hh:mm</durationUnitPattern>
|
||||
</durationUnit>
|
||||
<durationUnit type="hms">
|
||||
<durationUnitPattern>h:mm:ss</durationUnitPattern>
|
||||
<durationUnitPattern>hh:mm:ss</durationUnitPattern>
|
||||
</durationUnit>
|
||||
<durationUnit type="ms">
|
||||
<durationUnitPattern>mm:ss</durationUnitPattern>
|
||||
@@ -7886,6 +8029,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="scripts">skrifte – {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="one">{0} haal</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} hale</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">onderskrif {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">boskrif {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">aktiwiteit</characterLabel>
|
||||
<characterLabel type="african_scripts">Afrika-skrif</characterLabel>
|
||||
<characterLabel type="american_scripts">Amerikaanse skrif</characterLabel>
|
||||
|
||||
@@ -481,7 +481,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="yi">ይዲሽኛ</language>
|
||||
<language type="yo">ዮሩባዊኛ</language>
|
||||
<language type="yue">ካንቶኒዝ</language>
|
||||
<language type="yue" alt="menu" draft="contributed">ቻይና፤ ካንቶንኛ</language>
|
||||
<language type="yue" alt="menu">ቻይና፤ ካንቶንኛ</language>
|
||||
<language type="za">ዡዋንግኛ</language>
|
||||
<language type="zbl">ብሊስይምቦልስ</language>
|
||||
<language type="zgh">መደበኛ የሞሮኮ ታማዚግት</language>
|
||||
@@ -645,7 +645,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="CD" alt="variant">ኮንጎ (የዲሞክራቲክ ሪፐብሊክ ኮንጎ)</territory>
|
||||
<territory type="CF">ማዕከላዊ አፍሪካ ሪፑብሊክ</territory>
|
||||
<territory type="CG">ኮንጎ ብራዛቪል</territory>
|
||||
<territory type="CG" alt="variant">ኮንጎ (ሪፐብሊክ)</territory>
|
||||
<territory type="CG" alt="variant">ኮንጎ (ሪፑብሊክ)</territory>
|
||||
<territory type="CH">ስዊዘርላንድ</territory>
|
||||
<territory type="CI">ኮት ዲቯር</territory>
|
||||
<territory type="CI" alt="variant">አይቮሪኮስት</territory>
|
||||
@@ -762,8 +762,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="ML">ማሊ</territory>
|
||||
<territory type="MM">ማይናማር(በርማ)</territory>
|
||||
<territory type="MN">ሞንጎሊያ</territory>
|
||||
<territory type="MO">ማካኡ ልዩ የአስተዳደር ክልል ቻይና</territory>
|
||||
<territory type="MO" alt="short">ማካኡ</territory>
|
||||
<territory type="MO">ማካኦ ልዩ የአስተዳደር ክልል ቻይና</territory>
|
||||
<territory type="MO" alt="short">ማካኦ</territory>
|
||||
<territory type="MP">የሰሜናዊ ማሪያና ደሴቶች</territory>
|
||||
<territory type="MQ">ማርቲኒክ</territory>
|
||||
<territory type="MR">ሞሪቴኒያ</territory>
|
||||
@@ -796,7 +796,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="PK">ፓኪስታን</territory>
|
||||
<territory type="PL">ፖላንድ</territory>
|
||||
<territory type="PM">ቅዱስ ፒዬር እና ሚኩኤሎን</territory>
|
||||
<territory type="PN">ፒትካኢርን አይስላንድ</territory>
|
||||
<territory type="PN">ፒትካኢርን ደሴቶች</territory>
|
||||
<territory type="PR">ፖርታ ሪኮ</territory>
|
||||
<territory type="PS">የፍልስጤም ግዛት</territory>
|
||||
<territory type="PS" alt="short">ፍልስጥኤም</territory>
|
||||
@@ -2139,6 +2139,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateFormatItem id="MMMEd">E፣ MMM d</dateFormatItem>
|
||||
<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
|
||||
<dateFormatItem id="MMMMEd">E፣ MMMM d</dateFormatItem>
|
||||
<dateFormatItem id="MMMMW" count="one">ሳምንት W የ MMMM</dateFormatItem>
|
||||
<dateFormatItem id="MMMMW" count="other">ሳምንት W የ MMMM</dateFormatItem>
|
||||
<dateFormatItem id="ms">mm:ss</dateFormatItem>
|
||||
<dateFormatItem id="y">y</dateFormatItem>
|
||||
<dateFormatItem id="yM">M/y</dateFormatItem>
|
||||
@@ -3928,9 +3930,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>ካሊኒንግራድ</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>ሲምፈሮፖል</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>ሞስኮ</exemplarCity>
|
||||
</zone>
|
||||
@@ -4126,6 +4125,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>ኪየቭ</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>ሲምፈሮፖል</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>ዛፖሮዚይ</exemplarCity>
|
||||
</zone>
|
||||
@@ -5241,12 +5243,12 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<pattern type="10000" count="other">00 ሺ</pattern>
|
||||
<pattern type="100000" count="one">000 ሺ</pattern>
|
||||
<pattern type="100000" count="other">000 ሺ</pattern>
|
||||
<pattern type="1000000" count="one">0 ሜትር</pattern>
|
||||
<pattern type="1000000" count="other">0 ሜትር</pattern>
|
||||
<pattern type="10000000" count="one">00 ሜትር</pattern>
|
||||
<pattern type="10000000" count="other">00 ሜትር</pattern>
|
||||
<pattern type="100000000" count="one">000ሜ</pattern>
|
||||
<pattern type="100000000" count="other">000ሜ</pattern>
|
||||
<pattern type="1000000" count="one">0 ሚ</pattern>
|
||||
<pattern type="1000000" count="other">0 ሚ</pattern>
|
||||
<pattern type="10000000" count="one">00 ሚ</pattern>
|
||||
<pattern type="10000000" count="other">00 ሚ</pattern>
|
||||
<pattern type="100000000" count="one">000 ሚ</pattern>
|
||||
<pattern type="100000000" count="other">000 ሚ</pattern>
|
||||
<pattern type="1000000000" count="one">0 ቢ</pattern>
|
||||
<pattern type="1000000000" count="other">0 ቢ</pattern>
|
||||
<pattern type="10000000000" count="one">00 ቢ</pattern>
|
||||
@@ -5293,12 +5295,12 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<pattern type="10000" count="other">¤00 ሺ</pattern>
|
||||
<pattern type="100000" count="one">¤000 ሺ</pattern>
|
||||
<pattern type="100000" count="other">¤000 ሺ</pattern>
|
||||
<pattern type="1000000" count="one">¤0 ሜትር</pattern>
|
||||
<pattern type="1000000" count="other">¤0 ሜትር</pattern>
|
||||
<pattern type="10000000" count="one">¤00 ሜትር</pattern>
|
||||
<pattern type="10000000" count="other">¤00 ሜትር</pattern>
|
||||
<pattern type="100000000" count="one">¤000 ሜትር</pattern>
|
||||
<pattern type="100000000" count="other">¤000 ሜትር</pattern>
|
||||
<pattern type="1000000" count="one">¤0 ሚ</pattern>
|
||||
<pattern type="1000000" count="other">¤0 ሚ</pattern>
|
||||
<pattern type="10000000" count="one">¤00 ሚ</pattern>
|
||||
<pattern type="10000000" count="other">¤00 ሚ</pattern>
|
||||
<pattern type="100000000" count="one">¤000 ሚ</pattern>
|
||||
<pattern type="100000000" count="other">¤000 ሚ</pattern>
|
||||
<pattern type="1000000000" count="one">¤0 ቢ</pattern>
|
||||
<pattern type="1000000000" count="other">¤0 ቢ</pattern>
|
||||
<pattern type="10000000000" count="one">¤00 ቢ</pattern>
|
||||
@@ -6461,9 +6463,38 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p6">
|
||||
<unitPrefixPattern>ሜጋ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p9">
|
||||
<unitPrefixPattern>ጊጋ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern draft="contributed">{0} ኪቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern draft="contributed">{0} ሜቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern draft="contributed">{0} ጊቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern draft="contributed">{0} ቴቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern draft="contributed">{0} ፔቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern draft="contributed">{0} ዜቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0} በ{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power2">
|
||||
<compoundUnitPattern1 count="one">ስኩየር {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">ስኩየር {0}</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power3">
|
||||
<compoundUnitPattern1 count="one">ኪዩቢክ {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">ኪዩቢክ {0}</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<unit type="acceleration-g-force">
|
||||
<displayName>ጂ-ኃይል</displayName>
|
||||
<unitPattern count="one">{0} ጂ-ኃይል</unitPattern>
|
||||
@@ -6806,6 +6837,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} Hz</unitPattern>
|
||||
<unitPattern count="other">{0} Hz</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-em">
|
||||
<displayName>ታይፖግራፊክ em</displayName>
|
||||
</unit>
|
||||
<unit type="graphics-pixel">
|
||||
<displayName draft="contributed">ፒክስል</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ፒክስል</unitPattern>
|
||||
@@ -6836,6 +6870,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one" draft="contributed">{0} ነበኢ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ነበኢ</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName draft="contributed">ነቁጥ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ነቁጥ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ነቁጥ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>ኪሎሜትር</displayName>
|
||||
<unitPattern count="one">{0} ኪሎሜትር</unitPattern>
|
||||
@@ -6916,6 +6955,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} au</unitPattern>
|
||||
<unitPattern count="other">{0} au</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName draft="contributed">ፈሎን</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ፈሎን</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ፈሎን</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName draft="contributed">ተዳክሞዎች</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ተዳክሞ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ተዳክሞዎች</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>nmi</displayName>
|
||||
<unitPattern count="one">{0} nmi</unitPattern>
|
||||
@@ -6931,11 +6980,26 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ነጥብ</unitPattern>
|
||||
<unitPattern count="other">{0} ነጥብ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-solar-radius">
|
||||
<displayName>ሶላር ራዲ</displayName>
|
||||
<unitPattern count="one">{0} ሶላር ዳዲየስ</unitPattern>
|
||||
<unitPattern count="other">{0} ሶላር ራዲ</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lux">
|
||||
<displayName>lx</displayName>
|
||||
<unitPattern count="one">{0} lx</unitPattern>
|
||||
<unitPattern count="other">{0} lx</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName draft="contributed">ካንዴላ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ካንዴላ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ካንዴላ</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName draft="contributed">ቱቦ ቀዳዳ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ቱቦ ቀዳዳ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ቱቦ ቀዳዳ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-metric-ton">
|
||||
<displayName>t</displayName>
|
||||
<unitPattern count="one">{0} t</unitPattern>
|
||||
@@ -6968,6 +7032,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ቶን</unitPattern>
|
||||
<unitPattern count="other">{0} ቶን</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName draft="contributed">ድንጋይ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ድንጋይ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ድንጋይ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>ፓውንድ</displayName>
|
||||
<unitPattern count="one">{0} ፓውንድ</unitPattern>
|
||||
@@ -6990,6 +7059,26 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} CD</unitPattern>
|
||||
<unitPattern count="other">{0} CD</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-dalton">
|
||||
<displayName>ዳተንስ</displayName>
|
||||
<unitPattern count="one">{0} ዳተንስ</unitPattern>
|
||||
<unitPattern count="other">{0} ዳተንስ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-earth-mass">
|
||||
<displayName>ኤርዝማስስ</displayName>
|
||||
<unitPattern count="one">{0} ኤርዝማስስ</unitPattern>
|
||||
<unitPattern count="other">{0} ኤርዝማስስ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-solar-mass">
|
||||
<displayName>ሶላር ማስስ</displayName>
|
||||
<unitPattern count="one">{0} ሶላር ማስስ</unitPattern>
|
||||
<unitPattern count="other">{0} ሶላር ማስስ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName draft="contributed">ጥራ ጥሬ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ጥራ ጥሬ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ጥራ ጥሬ</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>GW</displayName>
|
||||
<unitPattern count="one">{0} GW</unitPattern>
|
||||
@@ -7198,6 +7287,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ኤከር ጫማ</unitPattern>
|
||||
<unitPattern count="other">{0} ኤከር ጫማ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName draft="contributed">ዳውላ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ዳውላ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ዳውላ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>gal</displayName>
|
||||
<unitPattern count="one">{0} gal</unitPattern>
|
||||
@@ -7230,6 +7324,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} fl oz</unitPattern>
|
||||
<unitPattern count="other">{0} fl oz</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-fluid-ounce-imperial">
|
||||
<displayName>Imp. fluid ኦንስስ</displayName>
|
||||
<unitPattern count="one">{0} Imp. fluid ኦንስስ</unitPattern>
|
||||
<unitPattern count="other">{0} Imp. fluid ኦንስስ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-tablespoon">
|
||||
<displayName>tbsp</displayName>
|
||||
<unitPattern count="one">{0} tbsp</unitPattern>
|
||||
@@ -7245,6 +7344,41 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} በርሜል</unitPattern>
|
||||
<unitPattern count="other">{0} በርሜሎች</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName draft="contributed">የመምድረ በዳ ማንኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የመምድረ በዳ ማንኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የመምድረ በዳ ማንኪያ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName draft="contributed">የምድረ በዳ ማንኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የምድረ በዳ ማንኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የምድረ በዳ ማንኪያ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName draft="contributed">ጠብታ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ጠብታ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ጠብታ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName draft="contributed">የክብደት መለኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የክብደት መለኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የክብደት መለኪያ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName draft="contributed">ሙጃሌ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ሙጃሌ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ሙጃሌ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName draft="contributed">ቁንጥ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ቁንጥ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ቁንጥ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName draft="contributed">የፈሳሽ መለኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የፈሳሽ መለኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የፈሳሽ መለኪያ</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>ዓቢይ አቅጣጫ</displayName>
|
||||
<coordinateUnitPattern type="east">{0}ምስ</coordinateUnitPattern>
|
||||
@@ -7296,6 +7430,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p6">
|
||||
<unitPrefixPattern>ሜ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern draft="contributed">{0} ኪቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern draft="contributed">{0} ሜቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern draft="contributed">{0} ጊቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern draft="contributed">{0} ቴቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern draft="contributed">{0} ፔቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern draft="contributed">{0} ዜቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -7671,6 +7823,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one" draft="contributed">{0} ነበኢ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ነበኢ</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName draft="contributed">ነቁጥ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ነቁጥ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ነቁጥ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>ኪሎሜትር</displayName>
|
||||
<unitPattern count="one">{0} ኪሜ</unitPattern>
|
||||
@@ -7751,6 +7908,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} au</unitPattern>
|
||||
<unitPattern count="other">{0} au</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName draft="contributed">ፈሎን</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ፈሎን</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ፈሎን</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName draft="contributed">ተዳክሞዎች</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ተዳክሞ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ተዳክሞ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>nmi</displayName>
|
||||
<unitPattern count="one">{0} nmi</unitPattern>
|
||||
@@ -7766,11 +7933,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ነጥብ</unitPattern>
|
||||
<unitPattern count="other">{0} ነጥብ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-solar-radius">
|
||||
<displayName>ሶላር ራዲ</displayName>
|
||||
</unit>
|
||||
<unit type="light-lux">
|
||||
<displayName>lx</displayName>
|
||||
<unitPattern count="one">{0} lx</unitPattern>
|
||||
<unitPattern count="other">{0} lx</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName draft="contributed">ካንዴላ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ካንዴላ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ካንዴላ</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName draft="contributed">ቱቦ ቀዳዳ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ቱቦ ቀዳዳ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ቱቦ ቀዳዳ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-metric-ton">
|
||||
<displayName>t</displayName>
|
||||
<unitPattern count="one">{0} t</unitPattern>
|
||||
@@ -7803,6 +7983,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ቶን</unitPattern>
|
||||
<unitPattern count="other">{0} ቶን</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName draft="contributed">ድንጋይ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ድንጋይ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ድንጋይ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>ፓውንድ</displayName>
|
||||
<unitPattern count="one">{0} ፓውንድ</unitPattern>
|
||||
@@ -7825,6 +8010,20 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} CD</unitPattern>
|
||||
<unitPattern count="other">{0} CD</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-dalton">
|
||||
<displayName>ዳተንስ</displayName>
|
||||
</unit>
|
||||
<unit type="mass-earth-mass">
|
||||
<displayName>ኤርዝማስስ</displayName>
|
||||
</unit>
|
||||
<unit type="mass-solar-mass">
|
||||
<displayName>ሶላር ማስስ</displayName>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName draft="contributed">ጥራ ጥሬ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ጥራ ጥሬ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ጥራ ጥሬ</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>GW</displayName>
|
||||
<unitPattern count="one">{0} GW</unitPattern>
|
||||
@@ -8033,6 +8232,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ኤከር ጫማ</unitPattern>
|
||||
<unitPattern count="other">{0} ኤከር ጫማ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName draft="contributed">ዳውላ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ዳውላ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ዳውላ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>gal</displayName>
|
||||
<unitPattern count="one">{0} gal</unitPattern>
|
||||
@@ -8080,6 +8284,41 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} በርሜል</unitPattern>
|
||||
<unitPattern count="other">{0} በርሜል</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName draft="contributed">የመምድረ በዳ ማንኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የመምድረ በዳ ማንኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የመምድረ በዳ ማንኪያ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName draft="contributed">የምድረ በዳ ማንኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የምድረ በዳ ማንኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የምድረ በዳ ማንኪያ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName draft="contributed">ጠብታ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ጠብታ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ጠብታ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName draft="contributed">የክብደት መለኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የክብደት መለኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የክብደት መለኪያ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName draft="contributed">ሙጃሌ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ሙጃሌ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ሙጃሌ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName draft="contributed">ቁንጥ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ቁንጥ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ቁንጥ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName draft="contributed">የፈሳሽ መለኪያ</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} የፈሳሽ መለኪያ</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} የፈሳሽ መለኪያ</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>አቅጣጫ</displayName>
|
||||
<coordinateUnitPattern type="east">{0}ምስ</coordinateUnitPattern>
|
||||
@@ -8131,6 +8370,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p6">
|
||||
<unitPrefixPattern>ሜ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern draft="contributed">{0} ኪቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern draft="contributed">{0} ሜቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern draft="contributed">{0} ጊቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern draft="contributed">{0} ቴቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern draft="contributed">{0} ፔቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern draft="contributed">{0} ዜቢ</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -8376,9 +8633,12 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<listPattern type="or">
|
||||
<listPatternPart type="start">{0}፣ {1}</listPatternPart>
|
||||
<listPatternPart type="middle">{0}፣ {1}</listPatternPart>
|
||||
<listPatternPart type="end">{0} ወይም {1}</listPatternPart>
|
||||
<listPatternPart type="end">{0}፣ ወይም {1}</listPatternPart>
|
||||
<listPatternPart type="2">{0} ወይም {1}</listPatternPart>
|
||||
</listPattern>
|
||||
<listPattern type="or-narrow">
|
||||
<listPatternPart type="end">{0}፣ ወይም {1}</listPatternPart>
|
||||
</listPattern>
|
||||
<listPattern type="standard-narrow">
|
||||
<listPatternPart type="start">{0}, {1}</listPatternPart>
|
||||
</listPattern>
|
||||
@@ -8425,6 +8685,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="scripts">ስክሪፕቶች — {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="one">{0} ምች</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} ምች</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">ግርጌ ምልክት {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">ራስጌ ምልክት {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">እንቅስቃሴዎች</characterLabel>
|
||||
<characterLabel type="african_scripts">የአፍሪካ ስክሪፕቶች</characterLabel>
|
||||
<characterLabel type="american_scripts">የአሜሪካ ስክሪፕቶች</characterLabel>
|
||||
|
||||
@@ -1099,9 +1099,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<type key="lb" type="strict">نمط فصل السطور: متقارب</type>
|
||||
<type key="m0" type="bgn">بي جي إن</type>
|
||||
<type key="m0" type="ungegn">يو إن جي إي جي إن</type>
|
||||
<type key="ms" type="metric">نظام متري</type>
|
||||
<type key="ms" type="uksystem">نظام المملكة المتحدة</type>
|
||||
<type key="ms" type="ussystem">نظام الولايات المتحدة</type>
|
||||
<type key="ms" type="metric">النظام المتري</type>
|
||||
<type key="ms" type="uksystem">نظام القياس البريطاني</type>
|
||||
<type key="ms" type="ussystem">نظام القياس الأمريكي</type>
|
||||
<type key="numbers" type="arab">الأرقام العربية الهندية</type>
|
||||
<type key="numbers" type="arabext">الأرقام العربية الهندية الممتدة</type>
|
||||
<type key="numbers" type="armn">الأرقام الأرمينية</type>
|
||||
@@ -1145,7 +1145,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</types>
|
||||
<measurementSystemNames>
|
||||
<measurementSystemName type="metric">النظام المتري</measurementSystemName>
|
||||
<measurementSystemName type="UK">المملكة المتحدة</measurementSystemName>
|
||||
<measurementSystemName type="UK">النظام البريطاني</measurementSystemName>
|
||||
<measurementSystemName type="US">النظام الأمريكي</measurementSystemName>
|
||||
</measurementSystemNames>
|
||||
<codePatterns>
|
||||
@@ -1349,22 +1349,22 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateTimeFormats>
|
||||
<dateTimeFormatLength type="full">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1} في {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<dateTimeFormatLength type="long">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1} في {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<dateTimeFormatLength type="medium">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1} في {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<dateTimeFormatLength type="short">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1} في {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<availableFormats>
|
||||
@@ -1392,7 +1392,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateFormatItem id="Hms">HH:mm:ss</dateFormatItem>
|
||||
<dateFormatItem id="M">L</dateFormatItem>
|
||||
<dateFormatItem id="Md">d/M</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E، d/M</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E، d/M</dateFormatItem>
|
||||
<dateFormatItem id="MMM">LLL</dateFormatItem>
|
||||
<dateFormatItem id="MMMd">d MMM</dateFormatItem>
|
||||
<dateFormatItem id="MMMEd">E، d MMM</dateFormatItem>
|
||||
@@ -1415,6 +1415,44 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<intervalFormatItem id="d">
|
||||
<greatestDifference id="d">d–d</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="Gy">
|
||||
<greatestDifference id="G">y G – y G</greatestDifference>
|
||||
<greatestDifference id="y">y–y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyM">
|
||||
<greatestDifference id="G">MM-y GGGG – MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="M">MM-y – MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="y">MM-y – MM-y GGGG</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMd">
|
||||
<greatestDifference id="d">dd-MM-y – dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="G">dd-MM-y GGGG – dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="M">dd-MM-y – dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="y">dd-MM-y – dd-MM-y GGGG</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMEd">
|
||||
<greatestDifference id="d">E, dd-MM-y – E, dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="G">E, dd-MM-y GGGG – E, dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="M">E, dd-MM-y – E, dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="y">E, dd-MM-y – E,dd-MM-y GGGG</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMMM">
|
||||
<greatestDifference id="G">MMM y G – MMM y G</greatestDifference>
|
||||
<greatestDifference id="M">MMM – MMM y G</greatestDifference>
|
||||
<greatestDifference id="y">MMM y – MMM y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMMMd">
|
||||
<greatestDifference id="d">d–d MMM y G</greatestDifference>
|
||||
<greatestDifference id="G">d MMM y G – d MMM y G</greatestDifference>
|
||||
<greatestDifference id="M">d MMM – d MMM y G</greatestDifference>
|
||||
<greatestDifference id="y">d MMM y – d MMM y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMMMEd">
|
||||
<greatestDifference id="d">E, d MMM – E, d MMM y G</greatestDifference>
|
||||
<greatestDifference id="G">E, d MMM y G – E, d MMM y G</greatestDifference>
|
||||
<greatestDifference id="M">E, d MMM – E, d MMM y G</greatestDifference>
|
||||
<greatestDifference id="y">E, d MMM y – E, d MMM y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="h">
|
||||
<greatestDifference id="a">h a – h a</greatestDifference>
|
||||
<greatestDifference id="h">h–h a</greatestDifference>
|
||||
@@ -1451,8 +1489,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<greatestDifference id="M">M–M</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="Md">
|
||||
<greatestDifference id="d">M/d – M/d</greatestDifference>
|
||||
<greatestDifference id="M">M/d – M/d</greatestDifference>
|
||||
<greatestDifference id="d">d-M – d-M</greatestDifference>
|
||||
<greatestDifference id="M">d-M – d-M</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="MEd">
|
||||
<greatestDifference id="d">E، d/M – E، d/M</greatestDifference>
|
||||
@@ -1462,7 +1500,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<greatestDifference id="M">MMM–MMM</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="MMMd">
|
||||
<greatestDifference id="d">MMM d–d</greatestDifference>
|
||||
<greatestDifference id="d">d–d MMM</greatestDifference>
|
||||
<greatestDifference id="M">d MMM – d MMM</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="MMMEd">
|
||||
@@ -1731,7 +1769,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dayPeriod type="afternoon1">ظهرًا</dayPeriod>
|
||||
<dayPeriod type="afternoon2">بعد الظهر</dayPeriod>
|
||||
<dayPeriod type="evening1">مساءً</dayPeriod>
|
||||
<dayPeriod type="night1">منتصف الليل</dayPeriod>
|
||||
<dayPeriod type="night1">في المساء</dayPeriod>
|
||||
<dayPeriod type="night2">ليلاً</dayPeriod>
|
||||
</dayPeriodWidth>
|
||||
<dayPeriodWidth type="narrow">
|
||||
@@ -1748,12 +1786,12 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dayPeriodWidth type="wide">
|
||||
<dayPeriod type="am">ص</dayPeriod>
|
||||
<dayPeriod type="pm">م</dayPeriod>
|
||||
<dayPeriod type="morning1">فجرًا</dayPeriod>
|
||||
<dayPeriod type="morning1">في الصباح</dayPeriod>
|
||||
<dayPeriod type="morning2">صباحًا</dayPeriod>
|
||||
<dayPeriod type="afternoon1">ظهرًا</dayPeriod>
|
||||
<dayPeriod type="afternoon2">بعد الظهر</dayPeriod>
|
||||
<dayPeriod type="evening1">مساءً</dayPeriod>
|
||||
<dayPeriod type="night1">منتصف الليل</dayPeriod>
|
||||
<dayPeriod type="night1">في المساء</dayPeriod>
|
||||
<dayPeriod type="night2">ليلاً</dayPeriod>
|
||||
</dayPeriodWidth>
|
||||
</dayPeriodContext>
|
||||
@@ -1854,22 +1892,22 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateTimeFormats>
|
||||
<dateTimeFormatLength type="full">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1} في {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<dateTimeFormatLength type="long">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1} في {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<dateTimeFormatLength type="medium">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1}, {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<dateTimeFormatLength type="short">
|
||||
<dateTimeFormat>
|
||||
<pattern>{1} {0}</pattern>
|
||||
<pattern>{1}, {0}</pattern>
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<availableFormats>
|
||||
@@ -1901,7 +1939,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateFormatItem id="Hmv">HH:mm v</dateFormatItem>
|
||||
<dateFormatItem id="M">L</dateFormatItem>
|
||||
<dateFormatItem id="Md">d/M</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E، d/M</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E، d/M</dateFormatItem>
|
||||
<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
|
||||
<dateFormatItem id="MMM">LLL</dateFormatItem>
|
||||
<dateFormatItem id="MMMd">d MMM</dateFormatItem>
|
||||
@@ -1941,6 +1979,44 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<intervalFormatItem id="d">
|
||||
<greatestDifference id="d">d–d</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="Gy">
|
||||
<greatestDifference id="G">y G – y G</greatestDifference>
|
||||
<greatestDifference id="y">y – y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyM">
|
||||
<greatestDifference id="G">MM-y GGGG – MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="M">MM-y – MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="y">MM-y – MM-y GGGG</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMd">
|
||||
<greatestDifference id="d">d-MM-y – d-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="G">dd-MM-y GGGG – dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="M">dd-MM-y – dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="y">dd-MM-y – dd-MM-y GGGG</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMEd">
|
||||
<greatestDifference id="d">E, dd-MM-y – E, dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="G">E, dd-MM-y GGGG – E, dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="M">E, dd-MM-y – E, dd-MM-y GGGG</greatestDifference>
|
||||
<greatestDifference id="y">E, dd-MM-y – E, dd-MM-y GGGG</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMMM">
|
||||
<greatestDifference id="G">MMM y G – MMM y G</greatestDifference>
|
||||
<greatestDifference id="M">MMM – MMM y G</greatestDifference>
|
||||
<greatestDifference id="y">MMM y – MMM y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMMMd">
|
||||
<greatestDifference id="d">d–d MMM y G</greatestDifference>
|
||||
<greatestDifference id="G">d MMM y G – d MMM y G</greatestDifference>
|
||||
<greatestDifference id="M">d MMM – d MMM y G</greatestDifference>
|
||||
<greatestDifference id="y">d MMM y – d MMM y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="GyMMMEd">
|
||||
<greatestDifference id="d">E, d MMM – E, d MMM y G</greatestDifference>
|
||||
<greatestDifference id="G">E, d MMM y G – E, d MMM y G</greatestDifference>
|
||||
<greatestDifference id="M">E, d MMM – E, d MMM y G</greatestDifference>
|
||||
<greatestDifference id="y">E, d MMM y – E, d MMM y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="h">
|
||||
<greatestDifference id="a">h a – h a</greatestDifference>
|
||||
<greatestDifference id="h">h–h a</greatestDifference>
|
||||
@@ -1977,7 +2053,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<greatestDifference id="M">M–M</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="Md">
|
||||
<greatestDifference id="d">M/d – M/d</greatestDifference>
|
||||
<greatestDifference id="d">d-M – d-M</greatestDifference>
|
||||
<greatestDifference id="M">M/d – M/d</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="MEd">
|
||||
@@ -2279,7 +2355,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateFormatItem id="Hms">HH:mm:ss</dateFormatItem>
|
||||
<dateFormatItem id="M">L</dateFormatItem>
|
||||
<dateFormatItem id="Md">d/M</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E، d/M</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E، d/M</dateFormatItem>
|
||||
<dateFormatItem id="MMM">LLL</dateFormatItem>
|
||||
<dateFormatItem id="MMMd">d MMM</dateFormatItem>
|
||||
<dateFormatItem id="MMMEd">E، d MMM</dateFormatItem>
|
||||
@@ -4208,7 +4284,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<exemplarCity>جامايكا</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Asia/Amman">
|
||||
<exemplarCity>عمان</exemplarCity>
|
||||
<exemplarCity>عمّان</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Asia/Tokyo">
|
||||
<exemplarCity>طوكيو</exemplarCity>
|
||||
@@ -4531,9 +4607,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>كالينجراد</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>سيمفروبول</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>موسكو</exemplarCity>
|
||||
</zone>
|
||||
@@ -4729,6 +4802,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>كييف</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>سيمفروبول</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>زابوروزي</exemplarCity>
|
||||
</zone>
|
||||
@@ -5522,9 +5598,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">توقيت جزيرة نورفولك</generic>
|
||||
<standard draft="contributed">توقيت جزيرة نورفولك الرسمي</standard>
|
||||
<daylight draft="contributed">توقيت جزيرة نورفولك الصيفي</daylight>
|
||||
<generic>توقيت جزيرة نورفولك</generic>
|
||||
<standard>توقيت جزيرة نورفولك الرسمي</standard>
|
||||
<daylight>توقيت جزيرة نورفولك الصيفي</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -6048,78 +6124,78 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</currencyFormatLength>
|
||||
<currencyFormatLength type="short">
|
||||
<currencyFormat type="standard">
|
||||
<pattern type="1000" count="zero">¤ 0 ألف</pattern>
|
||||
<pattern type="1000" count="one">¤ 0 ألف</pattern>
|
||||
<pattern type="1000" count="two">¤ 0 ألف</pattern>
|
||||
<pattern type="1000" count="few">¤ 0 ألف</pattern>
|
||||
<pattern type="1000" count="many">¤ 0 ألف</pattern>
|
||||
<pattern type="1000" count="other">¤ 0 ألف</pattern>
|
||||
<pattern type="10000" count="zero">¤ 00 ألف</pattern>
|
||||
<pattern type="10000" count="one">¤ 00 ألف</pattern>
|
||||
<pattern type="10000" count="two">¤ 00 ألف</pattern>
|
||||
<pattern type="10000" count="few">¤ 00 ألف</pattern>
|
||||
<pattern type="10000" count="many">¤ 00 ألف</pattern>
|
||||
<pattern type="10000" count="other">¤ 00 ألف</pattern>
|
||||
<pattern type="100000" count="zero">¤ 000 ألف</pattern>
|
||||
<pattern type="100000" count="one">¤ 000 ألف</pattern>
|
||||
<pattern type="100000" count="two">¤ 000 ألف</pattern>
|
||||
<pattern type="100000" count="few">¤ 000 ألف</pattern>
|
||||
<pattern type="100000" count="many">¤ 000 ألف</pattern>
|
||||
<pattern type="100000" count="other">¤ 000 ألف</pattern>
|
||||
<pattern type="1000000" count="zero">¤ 0 مليون</pattern>
|
||||
<pattern type="1000000" count="one">¤ 0 مليون</pattern>
|
||||
<pattern type="1000000" count="two">¤ 0 مليون</pattern>
|
||||
<pattern type="1000000" count="few">¤ 0 مليون</pattern>
|
||||
<pattern type="1000000" count="many">¤ 0 مليون</pattern>
|
||||
<pattern type="1000000" count="other">¤ 0 مليون</pattern>
|
||||
<pattern type="10000000" count="zero">¤ 00 مليون</pattern>
|
||||
<pattern type="10000000" count="one">¤ 00 مليون</pattern>
|
||||
<pattern type="10000000" count="two">¤ 00 مليون</pattern>
|
||||
<pattern type="10000000" count="few">¤ 00 مليون</pattern>
|
||||
<pattern type="10000000" count="many">¤ 00 مليون</pattern>
|
||||
<pattern type="10000000" count="other">¤ 00 مليون</pattern>
|
||||
<pattern type="100000000" count="zero">¤ 000 مليون</pattern>
|
||||
<pattern type="100000000" count="one">¤ 000 مليون</pattern>
|
||||
<pattern type="100000000" count="two">¤ 000 مليون</pattern>
|
||||
<pattern type="100000000" count="few">¤ 000 مليون</pattern>
|
||||
<pattern type="100000000" count="many">¤ 000 مليون</pattern>
|
||||
<pattern type="100000000" count="other">¤ 000 مليون</pattern>
|
||||
<pattern type="1000000000" count="zero">¤ 0 مليار</pattern>
|
||||
<pattern type="1000000000" count="one">¤ 0 مليار</pattern>
|
||||
<pattern type="1000000000" count="two">¤ 0 مليار</pattern>
|
||||
<pattern type="1000000000" count="few">¤ 0 مليار</pattern>
|
||||
<pattern type="1000000000" count="many">¤ 0 مليار</pattern>
|
||||
<pattern type="1000000000" count="other">¤ 0 مليار</pattern>
|
||||
<pattern type="10000000000" count="zero">¤ 00 مليار</pattern>
|
||||
<pattern type="10000000000" count="one">¤ 00 مليار</pattern>
|
||||
<pattern type="10000000000" count="two">¤ 00 مليار</pattern>
|
||||
<pattern type="10000000000" count="few">¤ 00 مليار</pattern>
|
||||
<pattern type="10000000000" count="many">¤ 00 مليار</pattern>
|
||||
<pattern type="10000000000" count="other">¤ 00 مليار</pattern>
|
||||
<pattern type="100000000000" count="zero">¤ 000 مليار</pattern>
|
||||
<pattern type="100000000000" count="one">¤ 000 مليار</pattern>
|
||||
<pattern type="100000000000" count="two">¤ 000 مليار</pattern>
|
||||
<pattern type="100000000000" count="few">¤ 000 مليار</pattern>
|
||||
<pattern type="100000000000" count="many">¤ 000 مليار</pattern>
|
||||
<pattern type="100000000000" count="other">¤ 000 مليار</pattern>
|
||||
<pattern type="1000000000000" count="zero">¤ 0 ترليون</pattern>
|
||||
<pattern type="1000000000000" count="one">¤ 0 ترليون</pattern>
|
||||
<pattern type="1000000000000" count="two">¤ 0 ترليون</pattern>
|
||||
<pattern type="1000000000000" count="few">¤ 0 ترليون</pattern>
|
||||
<pattern type="1000000000000" count="many">¤ 0 ترليون</pattern>
|
||||
<pattern type="1000000000000" count="other">¤ 0 ترليون</pattern>
|
||||
<pattern type="10000000000000" count="zero">¤ 00 ترليون</pattern>
|
||||
<pattern type="10000000000000" count="one">¤ 00 ترليون</pattern>
|
||||
<pattern type="10000000000000" count="two">¤ 00 ترليون</pattern>
|
||||
<pattern type="10000000000000" count="few">¤ 00 ترليون</pattern>
|
||||
<pattern type="10000000000000" count="many">¤ 00 ترليون</pattern>
|
||||
<pattern type="10000000000000" count="other">¤ 00 ترليون</pattern>
|
||||
<pattern type="100000000000000" count="zero">¤ 000 ترليون</pattern>
|
||||
<pattern type="100000000000000" count="one">¤ 000 ترليون</pattern>
|
||||
<pattern type="100000000000000" count="two">¤ 000 ترليون</pattern>
|
||||
<pattern type="100000000000000" count="few">¤ 000 ترليون</pattern>
|
||||
<pattern type="100000000000000" count="many">¤ 000 ترليون</pattern>
|
||||
<pattern type="100000000000000" count="other">¤ 000 ترليون</pattern>
|
||||
<pattern type="1000" count="zero">0 ألف ¤</pattern>
|
||||
<pattern type="1000" count="one">0 ألف ¤</pattern>
|
||||
<pattern type="1000" count="two">0 ألف ¤</pattern>
|
||||
<pattern type="1000" count="few">0 ألف ¤</pattern>
|
||||
<pattern type="1000" count="many">0 ألف ¤</pattern>
|
||||
<pattern type="1000" count="other">0 ألف ¤</pattern>
|
||||
<pattern type="10000" count="zero">00 ألف ¤</pattern>
|
||||
<pattern type="10000" count="one">00 ألف ¤</pattern>
|
||||
<pattern type="10000" count="two">00 ألف ¤</pattern>
|
||||
<pattern type="10000" count="few">00 ألف ¤</pattern>
|
||||
<pattern type="10000" count="many">00 ألف ¤</pattern>
|
||||
<pattern type="10000" count="other">00 ألف ¤</pattern>
|
||||
<pattern type="100000" count="zero">000 ألف ¤</pattern>
|
||||
<pattern type="100000" count="one">000 ألف ¤</pattern>
|
||||
<pattern type="100000" count="two">000 ألف ¤</pattern>
|
||||
<pattern type="100000" count="few">000 ألف ¤</pattern>
|
||||
<pattern type="100000" count="many">000 ألف ¤</pattern>
|
||||
<pattern type="100000" count="other">000 ألف ¤</pattern>
|
||||
<pattern type="1000000" count="zero">0 مليون ¤</pattern>
|
||||
<pattern type="1000000" count="one">0 مليون ¤</pattern>
|
||||
<pattern type="1000000" count="two">0 مليون ¤</pattern>
|
||||
<pattern type="1000000" count="few">0 مليون ¤</pattern>
|
||||
<pattern type="1000000" count="many">0 مليون ¤</pattern>
|
||||
<pattern type="1000000" count="other">0 مليون ¤</pattern>
|
||||
<pattern type="10000000" count="zero">00 مليون ¤</pattern>
|
||||
<pattern type="10000000" count="one">00 مليون ¤</pattern>
|
||||
<pattern type="10000000" count="two">00 مليون ¤</pattern>
|
||||
<pattern type="10000000" count="few">00 مليون ¤</pattern>
|
||||
<pattern type="10000000" count="many">00 مليون ¤</pattern>
|
||||
<pattern type="10000000" count="other">00 مليون ¤</pattern>
|
||||
<pattern type="100000000" count="zero">000 مليون ¤</pattern>
|
||||
<pattern type="100000000" count="one">000 مليون ¤</pattern>
|
||||
<pattern type="100000000" count="two">000 مليون ¤</pattern>
|
||||
<pattern type="100000000" count="few">000 مليون ¤</pattern>
|
||||
<pattern type="100000000" count="many">000 مليون ¤</pattern>
|
||||
<pattern type="100000000" count="other">000 مليون ¤</pattern>
|
||||
<pattern type="1000000000" count="zero">0 مليار ¤</pattern>
|
||||
<pattern type="1000000000" count="one">0 مليار ¤</pattern>
|
||||
<pattern type="1000000000" count="two">0 مليار ¤</pattern>
|
||||
<pattern type="1000000000" count="few">0 مليار ¤</pattern>
|
||||
<pattern type="1000000000" count="many">0 مليار ¤</pattern>
|
||||
<pattern type="1000000000" count="other">0 مليار ¤</pattern>
|
||||
<pattern type="10000000000" count="zero">00 مليار ¤</pattern>
|
||||
<pattern type="10000000000" count="one">00 مليار ¤</pattern>
|
||||
<pattern type="10000000000" count="two">00 مليار ¤</pattern>
|
||||
<pattern type="10000000000" count="few">00 مليار ¤</pattern>
|
||||
<pattern type="10000000000" count="many">00 مليار ¤</pattern>
|
||||
<pattern type="10000000000" count="other">00 مليار ¤</pattern>
|
||||
<pattern type="100000000000" count="zero">000 مليار ¤</pattern>
|
||||
<pattern type="100000000000" count="one">000 مليار ¤</pattern>
|
||||
<pattern type="100000000000" count="two">000 مليار ¤</pattern>
|
||||
<pattern type="100000000000" count="few">000 مليار ¤</pattern>
|
||||
<pattern type="100000000000" count="many">000 مليار ¤</pattern>
|
||||
<pattern type="100000000000" count="other">000 مليار ¤</pattern>
|
||||
<pattern type="1000000000000" count="zero">0 ترليون ¤</pattern>
|
||||
<pattern type="1000000000000" count="one">0 ترليون ¤</pattern>
|
||||
<pattern type="1000000000000" count="two">0 ترليون ¤</pattern>
|
||||
<pattern type="1000000000000" count="few">0 ترليون ¤</pattern>
|
||||
<pattern type="1000000000000" count="many">0 ترليون ¤</pattern>
|
||||
<pattern type="1000000000000" count="other">0 ترليون ¤</pattern>
|
||||
<pattern type="10000000000000" count="zero">00 ترليون ¤</pattern>
|
||||
<pattern type="10000000000000" count="one">00 ترليون ¤</pattern>
|
||||
<pattern type="10000000000000" count="two">00 ترليون ¤</pattern>
|
||||
<pattern type="10000000000000" count="few">00 ترليون ¤</pattern>
|
||||
<pattern type="10000000000000" count="many">00 ترليون ¤</pattern>
|
||||
<pattern type="10000000000000" count="other">00 ترليون ¤</pattern>
|
||||
<pattern type="100000000000000" count="zero">000 ترليون ¤</pattern>
|
||||
<pattern type="100000000000000" count="one">000 ترليون ¤</pattern>
|
||||
<pattern type="100000000000000" count="two">000 ترليون ¤</pattern>
|
||||
<pattern type="100000000000000" count="few">000 ترليون ¤</pattern>
|
||||
<pattern type="100000000000000" count="many">000 ترليون ¤</pattern>
|
||||
<pattern type="100000000000000" count="other">000 ترليون ¤</pattern>
|
||||
</currencyFormat>
|
||||
</currencyFormatLength>
|
||||
<unitPattern count="zero">{0} {1}</unitPattern>
|
||||
@@ -8484,25 +8560,47 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>يوتا{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>كيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>ميبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>غيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>تيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>بيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>إكسبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>زيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>يوبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0} لكل {1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power2">
|
||||
<compoundUnitPattern1>{0} مربّع</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="zero">{0}²</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="zero">{0} مربّع</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="one">{0} مربّع</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="two">{0}²</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">{0}²</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">{0}²</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="two">{0} مربّعان</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">{0} مربّعة</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">{0} مربّعًا</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">{0} مربّع</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power3">
|
||||
<compoundUnitPattern1>{0} مكعّب</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="zero">{0}³</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="zero">{0} مكعّب</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="one">{0} مكعّب</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="two">{0}³</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">{0}³</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">{0}³</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="two">{0} مكعّبان</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">{0} مكعّبة</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">{0} مكعبًا</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">{0} مكعّب</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<unit type="acceleration-g-force">
|
||||
@@ -9210,6 +9308,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} نقطة لكل بوصة</unitPattern>
|
||||
<unitPattern count="other">{0} نقطة لكل بوصة</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>بكسل</displayName>
|
||||
<unitPattern count="zero">{0} بكسل</unitPattern>
|
||||
<unitPattern count="one">{0} بكسل</unitPattern>
|
||||
<unitPattern count="two">{0} بكسل</unitPattern>
|
||||
<unitPattern count="few">{0} بكسل</unitPattern>
|
||||
<unitPattern count="many">{0} بكسل</unitPattern>
|
||||
<unitPattern count="other">{0} بكسل</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>نصف قطر أرضي</displayName>
|
||||
<unitPattern count="zero">{0} نصف قطر أرضي</unitPattern>
|
||||
<unitPattern count="one">{0} نصف قطر أرضي</unitPattern>
|
||||
<unitPattern count="two">{0} نصف قطر أرضي</unitPattern>
|
||||
<unitPattern count="few">{0} نصف قطر أرضي</unitPattern>
|
||||
<unitPattern count="many">{0} نصف قطر أرضي</unitPattern>
|
||||
<unitPattern count="other">{0} نصف قطر أرضي</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>كيلومتر</displayName>
|
||||
<unitPattern count="zero">{0} كيلومتر</unitPattern>
|
||||
@@ -9350,6 +9466,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} وحدة فلكية</unitPattern>
|
||||
<unitPattern count="other">{0} وحدة فلكية</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>فرلنغ</displayName>
|
||||
<unitPattern count="zero">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="one">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="two">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="few">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="many">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="other">{0} فرلنغ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>قامة</displayName>
|
||||
<unitPattern count="zero">{0} قامة</unitPattern>
|
||||
<unitPattern count="one">{0} قامة</unitPattern>
|
||||
<unitPattern count="two">{0} قامة</unitPattern>
|
||||
<unitPattern count="few">{0} قامة</unitPattern>
|
||||
<unitPattern count="many">{0} قامة</unitPattern>
|
||||
<unitPattern count="other">{0} قامة</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>ميل بحري</displayName>
|
||||
<unitPattern count="zero">{0} ميل بحري</unitPattern>
|
||||
@@ -9395,6 +9529,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} لكس</unitPattern>
|
||||
<unitPattern count="other">{0} لكس</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>شمعة</displayName>
|
||||
<unitPattern count="zero">{0} شمعة</unitPattern>
|
||||
<unitPattern count="one">{0} شمعة</unitPattern>
|
||||
<unitPattern count="two">{0} شمعة</unitPattern>
|
||||
<unitPattern count="few">{0} شمعة</unitPattern>
|
||||
<unitPattern count="many">{0} شمعة</unitPattern>
|
||||
<unitPattern count="other">{0} شمعة</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>لومن</displayName>
|
||||
<unitPattern count="zero">{0} لومن</unitPattern>
|
||||
<unitPattern count="one">{0} لومن</unitPattern>
|
||||
<unitPattern count="two">{0} لومن</unitPattern>
|
||||
<unitPattern count="few">{0} لومن</unitPattern>
|
||||
<unitPattern count="many">{0} لومن</unitPattern>
|
||||
<unitPattern count="other">{0} لومن</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>ضياء شمسي</displayName>
|
||||
<unitPattern count="zero">{0} ضياء شمسي</unitPattern>
|
||||
@@ -9460,12 +9612,21 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} طنًا</unitPattern>
|
||||
<unitPattern count="other">{0} طن</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>ستون</displayName>
|
||||
<unitPattern count="zero">{0} ستون</unitPattern>
|
||||
<unitPattern count="one">{0} ستون</unitPattern>
|
||||
<unitPattern count="two">{0} ستون</unitPattern>
|
||||
<unitPattern count="few">{0} ستون</unitPattern>
|
||||
<unitPattern count="many">{0} ستون</unitPattern>
|
||||
<unitPattern count="other">{0} ستون</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>رطل</displayName>
|
||||
<unitPattern count="zero">{0} رطل</unitPattern>
|
||||
<unitPattern count="one">{0} رطل</unitPattern>
|
||||
<unitPattern count="two">رطلان</unitPattern>
|
||||
<unitPattern count="few">{0} أرطل</unitPattern>
|
||||
<unitPattern count="few">{0} رطل</unitPattern>
|
||||
<unitPattern count="many">{0} رطلًا</unitPattern>
|
||||
<unitPattern count="other">{0} رطل</unitPattern>
|
||||
<perUnitPattern>{0}/رطل</perUnitPattern>
|
||||
@@ -9525,6 +9686,15 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} كتلة شمسية</unitPattern>
|
||||
<unitPattern count="other">{0} كتلة شمسية</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>قمحة</displayName>
|
||||
<unitPattern count="zero">{0} قمحة</unitPattern>
|
||||
<unitPattern count="one">{0} قمحة</unitPattern>
|
||||
<unitPattern count="two">{0} قمحة</unitPattern>
|
||||
<unitPattern count="few">{0} قمحة</unitPattern>
|
||||
<unitPattern count="many">{0} قمحة</unitPattern>
|
||||
<unitPattern count="other">{0} قمحة</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>غيغا واط</displayName>
|
||||
<unitPattern count="zero">{0} غيغا واط</unitPattern>
|
||||
@@ -9906,6 +10076,15 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} فدان قدم</unitPattern>
|
||||
<unitPattern count="other">{0} فدان قدم</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>بوشل</displayName>
|
||||
<unitPattern count="zero">{0} بوشل</unitPattern>
|
||||
<unitPattern count="one">{0} بوشل</unitPattern>
|
||||
<unitPattern count="two">{0} بوشل</unitPattern>
|
||||
<unitPattern count="few">{0} بوشل</unitPattern>
|
||||
<unitPattern count="many">{0} بوشل</unitPattern>
|
||||
<unitPattern count="other">{0} بوشل</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>غالون</displayName>
|
||||
<unitPattern count="zero">{0} غالون</unitPattern>
|
||||
@@ -9998,6 +10177,69 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} برميلًا</unitPattern>
|
||||
<unitPattern count="other">{0} برميل</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>ملعقة حلو</displayName>
|
||||
<unitPattern count="zero">{0} ملعقة حلو</unitPattern>
|
||||
<unitPattern count="one">{0} ملعقة حلو</unitPattern>
|
||||
<unitPattern count="two">{0} ملعقة حلو</unitPattern>
|
||||
<unitPattern count="few">{0} ملعقة حلو</unitPattern>
|
||||
<unitPattern count="many">{0} ملعقة حلو</unitPattern>
|
||||
<unitPattern count="other">{0} ملعقة حلو</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>ملعقة حلو إمبراطوري</displayName>
|
||||
<unitPattern count="zero">{0} ملعقة حلو إمبراطوري</unitPattern>
|
||||
<unitPattern count="one">{0} ملعقة حلو إمبراطوري</unitPattern>
|
||||
<unitPattern count="two">{0} ملعقة حلو إمبراطوري</unitPattern>
|
||||
<unitPattern count="few">{0} ملعقة حلو إمبراطوري</unitPattern>
|
||||
<unitPattern count="many">{0} ملعقة حلو إمبراطوري</unitPattern>
|
||||
<unitPattern count="other">{0} ملعقة حلو إمبراطوري</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>قطرة</displayName>
|
||||
<unitPattern count="zero">{0} قطرة</unitPattern>
|
||||
<unitPattern count="one">{0} قطرة</unitPattern>
|
||||
<unitPattern count="two">قطرتان</unitPattern>
|
||||
<unitPattern count="few">{0} قطرات</unitPattern>
|
||||
<unitPattern count="many">{0} قطرة</unitPattern>
|
||||
<unitPattern count="other">{0} قطرة</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>درهم سائل</displayName>
|
||||
<unitPattern count="zero">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="one">{0} درهم</unitPattern>
|
||||
<unitPattern count="two">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="few">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="many">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="other">{0} درهم</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>قدح</displayName>
|
||||
<unitPattern count="zero">{0} قدح</unitPattern>
|
||||
<unitPattern count="one">{0} قدح</unitPattern>
|
||||
<unitPattern count="two">{0} قدح</unitPattern>
|
||||
<unitPattern count="few">{0} أقداح</unitPattern>
|
||||
<unitPattern count="many">{0} قدح</unitPattern>
|
||||
<unitPattern count="other">{0} قدح</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>رشّة</displayName>
|
||||
<unitPattern count="zero">{0} رشّة</unitPattern>
|
||||
<unitPattern count="one">{0} رشّة</unitPattern>
|
||||
<unitPattern count="two">{0} رشّة</unitPattern>
|
||||
<unitPattern count="few">{0} رشّات</unitPattern>
|
||||
<unitPattern count="many">{0} رشّة</unitPattern>
|
||||
<unitPattern count="other">{0} رشّة</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>ربع غالون إمبراطوري</displayName>
|
||||
<unitPattern count="zero">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="one">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="two">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="few">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="many">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="other">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>اتجاه أساسي</displayName>
|
||||
<coordinateUnitPattern type="east">{0} شرقًا</coordinateUnitPattern>
|
||||
@@ -10067,6 +10309,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>يو{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>كيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>ميبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>غيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>تيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>بيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>إكسبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>زيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>يوبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -10761,10 +11027,10 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} بكسل/بوصة</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot-per-centimeter">
|
||||
<displayName>نقطة لكل سنتيمتر</displayName>
|
||||
<displayName>نقطة/سم</displayName>
|
||||
<unitPattern count="zero">{0} نقطة/سم</unitPattern>
|
||||
<unitPattern count="one">{0} نقطة/سم</unitPattern>
|
||||
<unitPattern count="two">نقطتان/سم</unitPattern>
|
||||
<unitPattern count="two">{0} نقطة/سم</unitPattern>
|
||||
<unitPattern count="few">{0} نقاط/سم</unitPattern>
|
||||
<unitPattern count="many">{0} نقطة/سم</unitPattern>
|
||||
<unitPattern count="other">{0} نقطة/سم</unitPattern>
|
||||
@@ -10773,11 +11039,29 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName>نقطة لكل بوصة</displayName>
|
||||
<unitPattern count="zero">{0} نقطة/بوصة</unitPattern>
|
||||
<unitPattern count="one">{0} نقطة/بوصة</unitPattern>
|
||||
<unitPattern count="two">نقطتان/بوصة</unitPattern>
|
||||
<unitPattern count="two">{0} نقطة/بوصة</unitPattern>
|
||||
<unitPattern count="few">{0} نقاط/بوصة</unitPattern>
|
||||
<unitPattern count="many">{0} نقطة/بوصة</unitPattern>
|
||||
<unitPattern count="other">{0} نقطة/بوصة</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>بكسل</displayName>
|
||||
<unitPattern count="zero">{0} بكسل</unitPattern>
|
||||
<unitPattern count="one">{0} بكسل</unitPattern>
|
||||
<unitPattern count="two">{0} بكسل</unitPattern>
|
||||
<unitPattern count="few">{0} بكسل</unitPattern>
|
||||
<unitPattern count="many">{0} بكسل</unitPattern>
|
||||
<unitPattern count="other">{0} بكسل</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>نق أرضي</displayName>
|
||||
<unitPattern count="zero">{0} نق أرضي</unitPattern>
|
||||
<unitPattern count="one">{0} نق أرضي</unitPattern>
|
||||
<unitPattern count="two">{0} نق أرضي</unitPattern>
|
||||
<unitPattern count="few">{0} نق أرضي</unitPattern>
|
||||
<unitPattern count="many">{0} نق أرضي</unitPattern>
|
||||
<unitPattern count="other">{0} نق أرضي</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>كم</displayName>
|
||||
<unitPattern count="zero">{0} كم</unitPattern>
|
||||
@@ -10918,6 +11202,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} و.ف.</unitPattern>
|
||||
<unitPattern count="other">{0} و.ف.</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>فرلنغ</displayName>
|
||||
<unitPattern count="zero">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="one">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="two">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="few">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="many">{0} فرلنغ</unitPattern>
|
||||
<unitPattern count="other">{0} فرلنغ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>قامة</displayName>
|
||||
<unitPattern count="zero">{0} قامة</unitPattern>
|
||||
<unitPattern count="one">{0} قامة</unitPattern>
|
||||
<unitPattern count="two">{0} قامة</unitPattern>
|
||||
<unitPattern count="few">{0} قامة</unitPattern>
|
||||
<unitPattern count="many">{0} قامة</unitPattern>
|
||||
<unitPattern count="other">{0} قامة</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>ميل بحري</displayName>
|
||||
<unitPattern count="zero">{0} ميل بحري</unitPattern>
|
||||
@@ -10963,6 +11265,24 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} لكس</unitPattern>
|
||||
<unitPattern count="other">{0} لكس</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>شمعة</displayName>
|
||||
<unitPattern count="zero">{0} شمعة</unitPattern>
|
||||
<unitPattern count="one">{0} شمعة</unitPattern>
|
||||
<unitPattern count="two">{0} شمعة</unitPattern>
|
||||
<unitPattern count="few">{0} شمعة</unitPattern>
|
||||
<unitPattern count="many">{0} شمعة</unitPattern>
|
||||
<unitPattern count="other">{0} شمعة</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>لومن</displayName>
|
||||
<unitPattern count="zero">{0} لومن</unitPattern>
|
||||
<unitPattern count="one">{0} لومن</unitPattern>
|
||||
<unitPattern count="two">{0} لومن</unitPattern>
|
||||
<unitPattern count="few">{0} لومن</unitPattern>
|
||||
<unitPattern count="many">{0} لومن</unitPattern>
|
||||
<unitPattern count="other">{0} لومن</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>ضياء شمسي</displayName>
|
||||
<unitPattern count="zero">{0} ضياء شمسي</unitPattern>
|
||||
@@ -11028,6 +11348,15 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} طن</unitPattern>
|
||||
<unitPattern count="other">{0} طن</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>ستون</displayName>
|
||||
<unitPattern count="zero">{0} ستون</unitPattern>
|
||||
<unitPattern count="one">{0} ستون</unitPattern>
|
||||
<unitPattern count="two">{0} ستون</unitPattern>
|
||||
<unitPattern count="few">{0} ستون</unitPattern>
|
||||
<unitPattern count="many">{0} ستون</unitPattern>
|
||||
<unitPattern count="other">{0} ستون</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>رطل</displayName>
|
||||
<unitPattern count="zero">{0} رطل</unitPattern>
|
||||
@@ -11093,6 +11422,15 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} كتلة شمسية</unitPattern>
|
||||
<unitPattern count="other">{0} كتلة شمسية</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>قمحة</displayName>
|
||||
<unitPattern count="zero">{0} قمحة</unitPattern>
|
||||
<unitPattern count="one">{0} قمحة</unitPattern>
|
||||
<unitPattern count="two">{0} قمحة</unitPattern>
|
||||
<unitPattern count="few">{0} قمحة</unitPattern>
|
||||
<unitPattern count="many">{0} قمحة</unitPattern>
|
||||
<unitPattern count="other">{0} قمحة</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>غ واط</displayName>
|
||||
<unitPattern count="zero">{0} غ واط</unitPattern>
|
||||
@@ -11474,6 +11812,15 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} فدان قدم</unitPattern>
|
||||
<unitPattern count="other">{0} فدان قدم</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>بوشل</displayName>
|
||||
<unitPattern count="zero">{0} بوشل</unitPattern>
|
||||
<unitPattern count="one">{0} بوشل</unitPattern>
|
||||
<unitPattern count="two">{0} بوشل</unitPattern>
|
||||
<unitPattern count="few">{0} بوشل</unitPattern>
|
||||
<unitPattern count="many">{0} بوشل</unitPattern>
|
||||
<unitPattern count="other">{0} بوشل</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>غالون</displayName>
|
||||
<unitPattern count="zero">{0} غالون</unitPattern>
|
||||
@@ -11560,6 +11907,69 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} برميلًا</unitPattern>
|
||||
<unitPattern count="other">{0} برميل</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>ملعقة ح.</displayName>
|
||||
<unitPattern count="zero">{0} ملعقة ح.</unitPattern>
|
||||
<unitPattern count="one">{0} ملعقة ح.</unitPattern>
|
||||
<unitPattern count="two">{0} ملعقة ح.</unitPattern>
|
||||
<unitPattern count="few">{0} ملعقة ح.</unitPattern>
|
||||
<unitPattern count="many">{0} ملعقة ح.</unitPattern>
|
||||
<unitPattern count="other">{0} ملعقة ح.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>ملعقة حلو إمبراطوري</displayName>
|
||||
<unitPattern count="zero">{0} ملعقة ح. إمبراطوري</unitPattern>
|
||||
<unitPattern count="one">{0} ملعقة ح. إمبراطوري</unitPattern>
|
||||
<unitPattern count="two">{0} ملعقة ح. إمبراطوري</unitPattern>
|
||||
<unitPattern count="few">{0} ملعقة ح. إمبراطوري</unitPattern>
|
||||
<unitPattern count="many">{0} ملعقة ح. إمبراطوري</unitPattern>
|
||||
<unitPattern count="other">{0} ملعقة ح. إمبراطوري</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>قطرة</displayName>
|
||||
<unitPattern count="zero">{0} قطرة</unitPattern>
|
||||
<unitPattern count="one">{0} قطرة</unitPattern>
|
||||
<unitPattern count="two">{0} قطرة</unitPattern>
|
||||
<unitPattern count="few">{0} قطرة</unitPattern>
|
||||
<unitPattern count="many">{0} قطرة</unitPattern>
|
||||
<unitPattern count="other">{0} قطرة</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>درهم سائل</displayName>
|
||||
<unitPattern count="zero">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="one">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="two">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="few">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="many">{0} درهم سائل</unitPattern>
|
||||
<unitPattern count="other">{0} درهم سائل</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>قدح</displayName>
|
||||
<unitPattern count="zero">{0} قدح</unitPattern>
|
||||
<unitPattern count="one">{0} قدح</unitPattern>
|
||||
<unitPattern count="two">{0} قدح</unitPattern>
|
||||
<unitPattern count="few">{0} أقداح</unitPattern>
|
||||
<unitPattern count="many">{0} قدح</unitPattern>
|
||||
<unitPattern count="other">{0} قدح</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>رشّة</displayName>
|
||||
<unitPattern count="zero">{0} رشّة</unitPattern>
|
||||
<unitPattern count="one">{0} رشّة</unitPattern>
|
||||
<unitPattern count="two">{0} رشّة</unitPattern>
|
||||
<unitPattern count="few">{0} رشّة</unitPattern>
|
||||
<unitPattern count="many">{0} رشّة</unitPattern>
|
||||
<unitPattern count="other">{0} رشّة</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>ربع غالون إمبراطوري</displayName>
|
||||
<unitPattern count="zero">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="one">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="two">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="few">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="many">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
<unitPattern count="other">{0} ربع غالون إمبراطوري</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>اتجاه</displayName>
|
||||
<coordinateUnitPattern type="east">{0} شرق</coordinateUnitPattern>
|
||||
@@ -11629,6 +12039,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>يو{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>كيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>ميبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>غيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>تيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>بيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>إكسبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>زيبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>يوبي{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -11745,8 +12179,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="zero">{0} شهر</unitPattern>
|
||||
<unitPattern count="one">شهر</unitPattern>
|
||||
<unitPattern count="two">شهران</unitPattern>
|
||||
<unitPattern count="few">{0} شهر</unitPattern>
|
||||
<unitPattern count="many">{0} شهر</unitPattern>
|
||||
<unitPattern count="few">{0} أشهر</unitPattern>
|
||||
<unitPattern count="many">{0} شهرًا</unitPattern>
|
||||
<unitPattern count="other">{0} شهر</unitPattern>
|
||||
<perUnitPattern draft="contributed">{0}/ش</perUnitPattern>
|
||||
</unit>
|
||||
@@ -12125,6 +12559,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="strokes" count="few">{0} ضغطات</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="many">{0} ضغطة</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} ضغطة</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">نظام الكتابة تحت السطر {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">نظام الكتابة فوق السطر {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">أنشطة</characterLabel>
|
||||
<characterLabel type="african_scripts">أنظمة كتابة إفريقية</characterLabel>
|
||||
<characterLabel type="american_scripts">أنظمة كتابة أمريكية</characterLabel>
|
||||
|
||||
@@ -43,7 +43,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<dayPeriod type="afternoon1">ظهرًا</dayPeriod>
|
||||
<dayPeriod type="afternoon2">بعد الظهر</dayPeriod>
|
||||
<dayPeriod type="evening1">مساءً</dayPeriod>
|
||||
<dayPeriod type="night1">منتصف الليل</dayPeriod>
|
||||
<dayPeriod type="night1">في المساء</dayPeriod>
|
||||
<dayPeriod type="night2">ل</dayPeriod>
|
||||
</dayPeriodWidth>
|
||||
</dayPeriodContext>
|
||||
|
||||
@@ -71,7 +71,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<dayPeriod type="afternoon1">ظهرًا</dayPeriod>
|
||||
<dayPeriod type="afternoon2">بعد الظهر</dayPeriod>
|
||||
<dayPeriod type="evening1">مساءً</dayPeriod>
|
||||
<dayPeriod type="night1">منتصف الليل</dayPeriod>
|
||||
<dayPeriod type="night1">في المساء</dayPeriod>
|
||||
<dayPeriod type="night2">ل</dayPeriod>
|
||||
</dayPeriodWidth>
|
||||
</dayPeriodContext>
|
||||
|
||||
@@ -3206,9 +3206,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>কালিনিনগ্ৰাড</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>ছিম্ফেৰোপোল</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>মস্কো</exemplarCity>
|
||||
</zone>
|
||||
@@ -3404,6 +3401,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>কিভ</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>ছিম্ফেৰোপোল</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>জাপোৰোজাই</exemplarCity>
|
||||
</zone>
|
||||
@@ -4178,9 +4178,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">ন’ৰফ’ক দ্বীপৰ সময়</generic>
|
||||
<standard draft="contributed">ন’ৰফ’ক দ্বীপৰ মান সময়</standard>
|
||||
<daylight draft="contributed">ন’ৰফ’ক দ্বীপৰ সময় গ্ৰীষ্মকালীন সময়</daylight>
|
||||
<generic>ন’ৰফ’ক দ্বীপৰ সময়</generic>
|
||||
<standard>ন’ৰফ’ক দ্বীপৰ মান্য সময়</standard>
|
||||
<daylight>ন’ৰফ’ক দ্বীপৰ গ্ৰীষ্মকালীন সময়</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -5681,7 +5681,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<minimalPairs>
|
||||
<pluralMinimalPairs count="one">আপোনালৈ {0} টা বাৰ্তা আহিছে;আপুনিসেইটোপঢ়িব বিচাৰেনে?</pluralMinimalPairs>
|
||||
<pluralMinimalPairs count="other">{0} দিন</pluralMinimalPairs>
|
||||
<ordinalMinimalPairs ordinal="other" draft="contributed">সোঁফালে {0}ৰ্থ পাক লওক৷</ordinalMinimalPairs>
|
||||
<ordinalMinimalPairs ordinal="other">সোঁফালে {0}ৰ্থ পাক লওক৷</ordinalMinimalPairs>
|
||||
</minimalPairs>
|
||||
</numbers>
|
||||
<units>
|
||||
@@ -5746,6 +5746,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>য়োটা{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>কিবি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>মেবি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>গিবি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>টেবি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>পেবি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>এক্সবি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>জেবি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>য়োবে{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>প্ৰতি {1}ত {0}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -6126,6 +6150,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} হাৰ্টজ</unitPattern>
|
||||
<unitPattern count="other">{0} হাৰ্টজ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>পৃথিৱীৰ ব্যাসাৰ্ধ</displayName>
|
||||
<unitPattern count="one">{0} পৃথিৱীৰ ব্যাসাৰ্ধ</unitPattern>
|
||||
<unitPattern count="other">{0} পৃথিৱীৰ ব্যাসাৰ্ধ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>কিলোমিটাৰ</displayName>
|
||||
<unitPattern count="one">{0} কিলোমিটাৰ</unitPattern>
|
||||
@@ -6206,6 +6235,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} জ্যোতিৰ্বিজ্ঞান একক</unitPattern>
|
||||
<unitPattern count="other">{0} জ্যোতিৰ্বিজ্ঞান একক</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>ফাৰ্লং</displayName>
|
||||
<unitPattern count="one">{0} ফাৰ্লং</unitPattern>
|
||||
<unitPattern count="other">{0} ফাৰ্লং</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>ফাথম</displayName>
|
||||
<unitPattern count="one">{0} ফাথম</unitPattern>
|
||||
<unitPattern count="other">{0} ফাথম</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>ন’টিকেল মাইল</displayName>
|
||||
<unitPattern count="one">{0} ন’টিকেল মাইল</unitPattern>
|
||||
@@ -6231,6 +6270,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} লাক্স</unitPattern>
|
||||
<unitPattern count="other">{0} লাক্স</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>কেণ্ডেলা</displayName>
|
||||
<unitPattern count="one">{0} কেণ্ডেলা</unitPattern>
|
||||
<unitPattern count="other">{0} কেণ্ডেলা</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>লুমেন</displayName>
|
||||
<unitPattern count="one">{0} লুমেন</unitPattern>
|
||||
<unitPattern count="other">{0} লুমেন</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>ছ’লাৰ লুমিন’ছিটী</displayName>
|
||||
<unitPattern count="one">{0} ছ’লাৰ লুমিন’ছিটী</unitPattern>
|
||||
@@ -6268,6 +6317,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} টন</unitPattern>
|
||||
<unitPattern count="other">{0} টন</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>ষ্ট’ন</displayName>
|
||||
<unitPattern count="one">{0} ষ্ট'ন</unitPattern>
|
||||
<unitPattern count="other">{0} ষ্ট'ন</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>পাউণ্ড</displayName>
|
||||
<unitPattern count="one">{0} পাউণ্ড</unitPattern>
|
||||
@@ -6305,6 +6359,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} সৌৰ ভৰ</unitPattern>
|
||||
<unitPattern count="other">{0} সৌৰ ভৰ</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>গ্ৰেইন</displayName>
|
||||
<unitPattern count="one">{0} গ্ৰেইন</unitPattern>
|
||||
<unitPattern count="other">{0} গ্ৰেইন</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>গিগাৱাট</displayName>
|
||||
<unitPattern count="one">{0} গিগাৱাট</unitPattern>
|
||||
@@ -6341,9 +6400,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} মিলিমিটাৰ মাৰ্কিউৰী</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-pound-force-per-square-inch">
|
||||
<displayName>প্ৰতি বৰ্গ ইঞ্চি পাউণ্ড</displayName>
|
||||
<unitPattern count="one">{0} প্ৰতি বৰ্গ ইঞ্চি পাউণ্ড</unitPattern>
|
||||
<unitPattern count="other">{0} প্ৰতি বৰ্গ ইঞ্চি পাউণ্ড</unitPattern>
|
||||
<displayName>প্ৰতি বৰ্গ ইঞ্চিত পাউণ্ড</displayName>
|
||||
<unitPattern count="one">{0} প্ৰতি বৰ্গ ইঞ্চিত পাউণ্ড</unitPattern>
|
||||
<unitPattern count="other">{0} প্ৰতি বৰ্গ ইঞ্চিত পাউণ্ড</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-inch-ofhg">
|
||||
<displayName>ইঞ্চি মাৰ্কিউৰী</displayName>
|
||||
@@ -6508,6 +6567,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} একৰ-ফুট</unitPattern>
|
||||
<unitPattern count="other">{0} একৰ-ফুট</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>বুশ্বেল</displayName>
|
||||
<unitPattern count="one">{0} বুশ্লেল</unitPattern>
|
||||
<unitPattern count="other">{0} বুশ্বেল</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>গেলন</displayName>
|
||||
<unitPattern count="one">{0} গেলন</unitPattern>
|
||||
@@ -6560,6 +6624,41 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} বেৰেল</unitPattern>
|
||||
<unitPattern count="other">{0} বেৰেল</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>ডেজাৰ্ট চামুচ</displayName>
|
||||
<unitPattern count="one">{0} ডেজাৰ্ট চামুচ</unitPattern>
|
||||
<unitPattern count="other">{0} ডেজাৰ্ট চামুচ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>ইম্পেৰিয়েল ডেজাৰ্ট চামুচ</displayName>
|
||||
<unitPattern count="one">{0} ইম্পেৰিয়েল ডেজাৰ্ট চামুচ</unitPattern>
|
||||
<unitPattern count="other">{0} ইম্পেৰিয়েল ডেজাৰ্ট চামুচ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>ড্ৰপ</displayName>
|
||||
<unitPattern count="one">{0} ড্ৰপ</unitPattern>
|
||||
<unitPattern count="other">{0} ড্ৰপ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>ড্ৰাম</displayName>
|
||||
<unitPattern count="one">{0} ড্ৰাম</unitPattern>
|
||||
<unitPattern count="other">{0} ড্ৰাম</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>জিগাৰ</displayName>
|
||||
<unitPattern count="one">{0} জিগাৰ</unitPattern>
|
||||
<unitPattern count="other">{0} জিগাৰ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>পিঞ্চ</displayName>
|
||||
<unitPattern count="one">{0} পিঞ্চ</unitPattern>
|
||||
<unitPattern count="other">{0} পিঞ্চ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>ইম্পেৰিয়েল কুৱাৰ্ট</displayName>
|
||||
<unitPattern count="one">{0} ইম্পেৰিয়েল কুৱাৰ্ট</unitPattern>
|
||||
<unitPattern count="other">{0} ইম্পেৰিয়েল কুৱাৰ্ট</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>প্ৰধান দিক্-নিৰ্দেশনা</displayName>
|
||||
<coordinateUnitPattern type="east">{0} পূব</coordinateUnitPattern>
|
||||
@@ -6626,6 +6725,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>য়ো.{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>কি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>মি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>গিঃ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>টেঃ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>পেঃ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>এক্স{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>জেঃ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>য়োঃ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -7076,6 +7199,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} জ্যোঃ এঃ</unitPattern>
|
||||
<unitPattern count="other">{0} জ্যোঃ এঃ</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>ফাৰ্লং</displayName>
|
||||
<unitPattern count="one">{0} ফাৰ্লং</unitPattern>
|
||||
<unitPattern count="other">{0} ফাৰ্লং</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>ফাথম</displayName>
|
||||
<unitPattern count="one">{0} ফাথম</unitPattern>
|
||||
<unitPattern count="other">{0} ফাথম</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>ন’টিঃ মাঃ</displayName>
|
||||
<unitPattern count="one">{0} ন’টিঃ মাঃ</unitPattern>
|
||||
@@ -7138,6 +7271,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} টন</unitPattern>
|
||||
<unitPattern count="other">{0} টন</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>ষ্ট’ন</displayName>
|
||||
<unitPattern count="one">{0} ষ্ট'ন</unitPattern>
|
||||
<unitPattern count="other">{0} ষ্ট'ন</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>পাউণ্ড</displayName>
|
||||
<unitPattern count="one">{0} পাউণ্ড</unitPattern>
|
||||
@@ -7175,6 +7313,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} M☉</unitPattern>
|
||||
<unitPattern count="other">{0} M☉</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>গ্ৰেইন</displayName>
|
||||
<unitPattern count="one">{0} গ্ৰেইন</unitPattern>
|
||||
<unitPattern count="other">{0} গ্ৰেইন</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>গিঃ ৱাঃ</displayName>
|
||||
<unitPattern count="one">{0} গিঃ ৱাঃ</unitPattern>
|
||||
@@ -7378,6 +7521,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} এঃ-ফুঃ</unitPattern>
|
||||
<unitPattern count="other">{0} এঃ-ফুঃ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>বুশ্বেল</displayName>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>গেলন</displayName>
|
||||
<unitPattern count="one">{0} গেলন</unitPattern>
|
||||
@@ -7430,6 +7576,26 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} bbl</unitPattern>
|
||||
<unitPattern count="other">{0} bbl</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>ড্ৰপ</displayName>
|
||||
<unitPattern count="one">{0} ড্ৰপ</unitPattern>
|
||||
<unitPattern count="other">{0} ড্ৰপ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>ড্ৰাম তৰল পদাৰ্থ</displayName>
|
||||
<unitPattern count="one">{0} ড্ৰাম তৰল পদাৰ্থ</unitPattern>
|
||||
<unitPattern count="other">{0} ড্ৰাম তৰল পদাৰ্থ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>জিগাৰ</displayName>
|
||||
<unitPattern count="one">{0} জিগাৰ</unitPattern>
|
||||
<unitPattern count="other">{0} জিগাৰ</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>পিঞ্চ</displayName>
|
||||
<unitPattern count="one">{0} পিঞ্চ</unitPattern>
|
||||
<unitPattern count="other">{0} পিঞ্চ</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>দিক্-নিৰ্দেশনা</displayName>
|
||||
<coordinateUnitPattern type="east">{0} পূঃ</coordinateUnitPattern>
|
||||
@@ -7499,6 +7665,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>য়োটা{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>কি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>মি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>গি{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>টে{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>পে{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>এক্স{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>জে{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>য়ো{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -7654,8 +7844,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</listPatterns>
|
||||
<posix>
|
||||
<messages>
|
||||
<yesstr>yes:y</yesstr>
|
||||
<nostr>no:n</nostr>
|
||||
<yesstr>হয়</yesstr>
|
||||
<nostr>নহয়</nostr>
|
||||
</messages>
|
||||
</posix>
|
||||
<characterLabels>
|
||||
@@ -7670,6 +7860,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="scripts">লিপি — {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="one">{0} ষ্ট্ৰ’ক</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} ষ্ট্ৰ’ক</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">ছাবস্ক্ৰিপ্ট {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">ছুপাৰস্ক্ৰিপ্ট {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">ক্ৰিয়া-কলাপ</characterLabel>
|
||||
<characterLabel type="african_scripts">আফ্ৰিকান স্ক্ৰিপ্ট</characterLabel>
|
||||
<characterLabel type="american_scripts">আমেৰিকান স্ক্ৰিপ্ট</characterLabel>
|
||||
|
||||
@@ -5672,9 +5672,6 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>Kaliningráu</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Simferopol</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>Moscú</exemplarCity>
|
||||
</zone>
|
||||
@@ -5867,6 +5864,9 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>Kiev</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Simferopol</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>Zaporozhye</exemplarCity>
|
||||
</zone>
|
||||
|
||||
@@ -97,6 +97,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="chr">çeroki</language>
|
||||
<language type="chy">çeyen</language>
|
||||
<language type="ckb">Mərkəzi kürdcə</language>
|
||||
<language type="ckb" alt="menu">Kürdcə, mərkəzi</language>
|
||||
<language type="ckb" alt="variant">Kürdcə, sorani</language>
|
||||
<language type="co">korsika</language>
|
||||
<language type="cop">kopt</language>
|
||||
<language type="cr">kri</language>
|
||||
@@ -1402,16 +1404,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</monthWidth>
|
||||
<monthWidth type="wide">
|
||||
<month type="1">yanvar</month>
|
||||
<month type="2">Fevral</month>
|
||||
<month type="2">fevral</month>
|
||||
<month type="3">mart</month>
|
||||
<month type="4">Aprel</month>
|
||||
<month type="5">May</month>
|
||||
<month type="6">İyun</month>
|
||||
<month type="7">İyul</month>
|
||||
<month type="8">Avqust</month>
|
||||
<month type="9">Sentyabr</month>
|
||||
<month type="10">Oktyabr</month>
|
||||
<month type="11">Noyabr</month>
|
||||
<month type="4">aprel</month>
|
||||
<month type="5">may</month>
|
||||
<month type="6">iyun</month>
|
||||
<month type="7">iyul</month>
|
||||
<month type="8">avqust</month>
|
||||
<month type="9">sentyabr</month>
|
||||
<month type="10">oktyabr</month>
|
||||
<month type="11">noyabr</month>
|
||||
<month type="12">dekabr</month>
|
||||
</monthWidth>
|
||||
</monthContext>
|
||||
@@ -3523,9 +3525,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>Kalininqrad</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Simferopol</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>Moskva</exemplarCity>
|
||||
</zone>
|
||||
@@ -3721,6 +3720,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>Kiyev</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Simferopol</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>Zaporojye</exemplarCity>
|
||||
</zone>
|
||||
@@ -4492,9 +4494,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">Norfolk Adası Vaxtı</generic>
|
||||
<standard draft="contributed">Norfolk Adası Standart Vaxtı</standard>
|
||||
<daylight draft="contributed">Norfolk Adası Yay Vaxtı</daylight>
|
||||
<generic>Norfolk Adası Vaxtı</generic>
|
||||
<standard>Norfolk Adası Standart Vaxtı</standard>
|
||||
<daylight>Norfolk Adası Yay Vaxtı</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -4774,6 +4776,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<percentSign>%</percentSign>
|
||||
<plusSign draft="contributed">+</plusSign>
|
||||
<minusSign draft="contributed">-</minusSign>
|
||||
<approximatelySign>~</approximatelySign>
|
||||
<exponential>E</exponential>
|
||||
<superscriptingExponent>×</superscriptingExponent>
|
||||
<perMille>‰</perMille>
|
||||
@@ -6579,6 +6582,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>yotta{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>kibi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>mebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>gibi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>tebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>pebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>eksbi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>zebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>yobe{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -6598,9 +6625,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} g qüvvəsi</unitPattern>
|
||||
</unit>
|
||||
<unit type="acceleration-meter-per-square-second">
|
||||
<displayName>metr saniyə kvadratı</displayName>
|
||||
<unitPattern count="one">{0} metr saniyə kvadratı</unitPattern>
|
||||
<unitPattern count="other">{0} metr saniyə kvadratı</unitPattern>
|
||||
<displayName>metr kvadrat saniyə</displayName>
|
||||
<unitPattern count="one">{0} metr kvadrat saniyə</unitPattern>
|
||||
<unitPattern count="other">{0} metr kvadrat saniyə</unitPattern>
|
||||
</unit>
|
||||
<unit type="angle-revolution">
|
||||
<displayName>dövrə</displayName>
|
||||
@@ -6699,8 +6726,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</unit>
|
||||
<unit type="concentr-permillion">
|
||||
<displayName>milyonda hissəcik</displayName>
|
||||
<unitPattern count="one">milyonda {0} hissəcik</unitPattern>
|
||||
<unitPattern count="other">milyonda {0} hissəcik</unitPattern>
|
||||
<unitPattern count="one">{0} milyonda hissəcik</unitPattern>
|
||||
<unitPattern count="other">{0} milyonda hissəcik</unitPattern>
|
||||
</unit>
|
||||
<unit type="concentr-percent">
|
||||
<displayName>faiz</displayName>
|
||||
@@ -6987,6 +7014,14 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} nöqtə / düym</unitPattern>
|
||||
<unitPattern count="other">{0} nöqtə / düym</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>dot nöqtə</displayName>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>yer radiusu</displayName>
|
||||
<unitPattern count="one">{0} yer radiusu</unitPattern>
|
||||
<unitPattern count="other">{0} yer radiusu</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>kilometr</displayName>
|
||||
<unitPattern count="one">{0} kilometr</unitPattern>
|
||||
@@ -7067,6 +7102,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} astronomik vahid</unitPattern>
|
||||
<unitPattern count="other">{0} astronomik vahid</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>farlonq</displayName>
|
||||
<unitPattern count="one">{0} farlonq</unitPattern>
|
||||
<unitPattern count="other">{0} farlonq</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>fatom</displayName>
|
||||
<unitPattern count="one">{0} fatom</unitPattern>
|
||||
<unitPattern count="other">{0} fatom</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>nmi</displayName>
|
||||
<unitPattern count="one">{0} nmi</unitPattern>
|
||||
@@ -7092,6 +7137,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} lüks</unitPattern>
|
||||
<unitPattern count="other">{0} lüks</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>kandela</displayName>
|
||||
<unitPattern count="one">{0} kandela</unitPattern>
|
||||
<unitPattern count="other">{0} kandela</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>lümen</displayName>
|
||||
<unitPattern count="one">{0} lümen</unitPattern>
|
||||
<unitPattern count="other">{0} lümen</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>gün işığı</displayName>
|
||||
<unitPattern count="one">{0} gün işığı</unitPattern>
|
||||
@@ -7171,6 +7226,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} günəş kütləsi</unitPattern>
|
||||
<unitPattern count="other">{0} günəş kütləsi</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>qranul</displayName>
|
||||
<unitPattern count="one">{0} qranul</unitPattern>
|
||||
<unitPattern count="other">{0} qranul</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>giqavatt</displayName>
|
||||
<unitPattern count="one">{0} giqavatt</unitPattern>
|
||||
@@ -7379,6 +7439,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} akr-fut</unitPattern>
|
||||
<unitPattern count="other">{0} akr-fut</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>buşel</displayName>
|
||||
<unitPattern count="one">{0} buşel</unitPattern>
|
||||
<unitPattern count="other">{0} buşel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>qallon</displayName>
|
||||
<unitPattern count="one">{0} qallon</unitPattern>
|
||||
@@ -7429,6 +7494,36 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unit type="volume-barrel">
|
||||
<displayName>barrel</displayName>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>dessert qaşığı</displayName>
|
||||
<unitPattern count="one">{0} dessert qaşığı</unitPattern>
|
||||
<unitPattern count="other">{0} dessert qaşığı</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>İmp. dessert qaşığı</displayName>
|
||||
<unitPattern count="one">{0} İmp. dessert qaşığı</unitPattern>
|
||||
<unitPattern count="other">{0} İmp. dessert qaşığı</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>damcı</displayName>
|
||||
<unitPattern count="one">{0} damcı</unitPattern>
|
||||
<unitPattern count="other">{0} damcı</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>dram</displayName>
|
||||
<unitPattern count="one">{0} dram</unitPattern>
|
||||
<unitPattern count="other">{0} dram</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>çimdik</displayName>
|
||||
<unitPattern count="one">{0} çimdik</unitPattern>
|
||||
<unitPattern count="other">{0} çimdik</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>İmp. kvarta</displayName>
|
||||
<unitPattern count="one">{0} İmp. kvarta</unitPattern>
|
||||
<unitPattern count="other">{0} İmp. kvarta</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>kardinal istiqamət</displayName>
|
||||
<coordinateUnitPattern type="east">{0}E</coordinateUnitPattern>
|
||||
@@ -7447,6 +7542,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p-3">
|
||||
<unitPrefixPattern>m{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>ki{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>mi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>gi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>ti{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>pi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>ei{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>zi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>yi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -7459,7 +7578,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} G</unitPattern>
|
||||
</unit>
|
||||
<unit type="acceleration-meter-per-square-second">
|
||||
<displayName>m/s²</displayName>
|
||||
<displayName>metr/s²</displayName>
|
||||
<unitPattern count="one">{0} m/s²</unitPattern>
|
||||
<unitPattern count="other">{0} m/s²</unitPattern>
|
||||
</unit>
|
||||
@@ -7842,6 +7961,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} dpi</unitPattern>
|
||||
<unitPattern count="other">{0} dpi</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>yer radiusu</displayName>
|
||||
<unitPattern count="one">{0} R⊕</unitPattern>
|
||||
<unitPattern count="other">{0} R⊕</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>kilometr</displayName>
|
||||
<unitPattern count="one">{0} km</unitPattern>
|
||||
@@ -7922,6 +8046,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} av</unitPattern>
|
||||
<unitPattern count="other">{0} av</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>farlonq</displayName>
|
||||
<unitPattern count="one">{0} farlonq</unitPattern>
|
||||
<unitPattern count="other">{0} farlonq</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>fatom</displayName>
|
||||
<unitPattern count="one">{0} fth</unitPattern>
|
||||
<unitPattern count="other">{0} fth</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>nmi</displayName>
|
||||
<unitPattern count="one">{0} nmi</unitPattern>
|
||||
@@ -7945,6 +8079,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} lx</unitPattern>
|
||||
<unitPattern count="other">{0} lx</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>kd</displayName>
|
||||
<unitPattern count="one">{0} kd</unitPattern>
|
||||
<unitPattern count="other">{0} kd</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>lm</displayName>
|
||||
<unitPattern count="one">{0} lm</unitPattern>
|
||||
<unitPattern count="other">{0} lm</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>gün işığı</displayName>
|
||||
</unit>
|
||||
@@ -8016,6 +8160,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unit type="mass-solar-mass">
|
||||
<displayName>günəş kütləsi</displayName>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>qranul</displayName>
|
||||
<unitPattern count="one">{0} qranul</unitPattern>
|
||||
<unitPattern count="other">{0} qranul</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>GW</displayName>
|
||||
<unitPattern count="one">{0} GW</unitPattern>
|
||||
@@ -8058,8 +8207,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</unit>
|
||||
<unit type="pressure-inch-ofhg">
|
||||
<displayName>civə düymü</displayName>
|
||||
<unitPattern count="one">{0} inHg</unitPattern>
|
||||
<unitPattern count="other">{0} inHg</unitPattern>
|
||||
<unitPattern count="one">{0} civə düymü</unitPattern>
|
||||
<unitPattern count="other">{0} civə düymü</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-millibar">
|
||||
<displayName>millibar</displayName>
|
||||
@@ -8204,6 +8353,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ac ft</unitPattern>
|
||||
<unitPattern count="other">{0} ac ft</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>buşel</displayName>
|
||||
<unitPattern count="one">{0} buşel</unitPattern>
|
||||
<unitPattern count="other">{0} buşel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>qal</displayName>
|
||||
<unitPattern count="one">{0} qal</unitPattern>
|
||||
@@ -8251,6 +8405,36 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} çyqş</unitPattern>
|
||||
<unitPattern count="other">{0} çyqş</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>des.qaş.</displayName>
|
||||
<unitPattern count="one">{0} des.qaş.</unitPattern>
|
||||
<unitPattern count="other">{0} des.qaş.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>des.qaş. İmp.</displayName>
|
||||
<unitPattern count="one">{0} des.qaş. İmp</unitPattern>
|
||||
<unitPattern count="other">{0} des.qaş. İmp.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>damcı</displayName>
|
||||
<unitPattern count="one">{0} damcı</unitPattern>
|
||||
<unitPattern count="other">{0} damcı</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName draft="provisional">dram</displayName>
|
||||
<unitPattern count="one" draft="provisional">{0} dram</unitPattern>
|
||||
<unitPattern count="other" draft="provisional">{0} dram</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>çimdik</displayName>
|
||||
<unitPattern count="one">{0} çimdik</unitPattern>
|
||||
<unitPattern count="other">{0} çimdik</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>kvarta İmp.</displayName>
|
||||
<unitPattern count="one">{0} kvarta İmp.</unitPattern>
|
||||
<unitPattern count="other">{0} kvarta İmp.</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>istiqamət</displayName>
|
||||
<coordinateUnitPattern type="east">{0}E</coordinateUnitPattern>
|
||||
@@ -8269,6 +8453,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p-3">
|
||||
<unitPrefixPattern>m{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>ki{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>mi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>gi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>ti{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>pi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>ei{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>zi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>yi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -8570,6 +8778,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="scripts">Yazılar — {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="one">{0} Vurğu</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} Vurğu</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">indeks {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">üst indeks {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">Aktivitələr</characterLabel>
|
||||
<characterLabel type="african_scripts">Afrika Yazıları</characterLabel>
|
||||
<characterLabel type="american_scripts">Amerika Yazıları</characterLabel>
|
||||
|
||||
@@ -81,6 +81,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="chr">чэрокі</language>
|
||||
<language type="chy">шэйен</language>
|
||||
<language type="ckb">цэнтральнакурдская</language>
|
||||
<language type="ckb" alt="menu">курдская, сарані</language>
|
||||
<language type="ckb" alt="variant">сарані</language>
|
||||
<language type="co">карсіканская</language>
|
||||
<language type="cop">копцкая</language>
|
||||
<language type="crs">сэсэльва</language>
|
||||
@@ -792,7 +794,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="WF">Уоліс і Футуна</territory>
|
||||
<territory type="WS">Самоа</territory>
|
||||
<territory type="XA">Псеўдаакцэнты</territory>
|
||||
<territory type="XB">Псеўда-Bidi</territory>
|
||||
<territory type="XB">псеўдадвухнапрамкавы</territory>
|
||||
<territory type="XK">Косава</territory>
|
||||
<territory type="YE">Емен</territory>
|
||||
<territory type="YT">Маёта</territory>
|
||||
@@ -889,7 +891,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characters>
|
||||
<exemplarCharacters>[а б в г д {дж} {дз} е ё ж з і й к л м н о п р с т у ў ф х ц ч ш ы ь э ю я]</exemplarCharacters>
|
||||
<exemplarCharacters type="auxiliary">[{а\u0301} {е\u0301} {ё\u0301} {і\u0301} {о\u0301} {у\u0301} {ы\u0301} {э\u0301} {ю\u0301} {я\u0301}]</exemplarCharacters>
|
||||
<exemplarCharacters type="index" draft="contributed">[А Б В Г Д Е Ж З І Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Ы Э Ю Я]</exemplarCharacters>
|
||||
<exemplarCharacters type="index" draft="contributed">[А Б В Г Д Е Ё Ж З І Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Ы Ь Э Ю Я]</exemplarCharacters>
|
||||
<exemplarCharacters type="numbers">[ \- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]</exemplarCharacters>
|
||||
<exemplarCharacters type="punctuation">[\- ‑ , ; \: ! ? . « » ( ) \[ \] \{ \}]</exemplarCharacters>
|
||||
<ellipsis type="final">{0}…</ellipsis>
|
||||
@@ -3482,9 +3484,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>Калінінград</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Сімферопаль</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>Масква</exemplarCity>
|
||||
</zone>
|
||||
@@ -3680,6 +3679,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>Кіеў</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Сімферопаль</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>Запарожжа</exemplarCity>
|
||||
</zone>
|
||||
@@ -4451,9 +4453,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">Час вострава Норфалк</generic>
|
||||
<standard draft="contributed">Стандартны час вострава Норфалк</standard>
|
||||
<daylight draft="contributed">Летні час вострава Норфалк</daylight>
|
||||
<generic>Час вострава Норфалк</generic>
|
||||
<standard>Стандартны час вострава Норфалк</standard>
|
||||
<daylight>Летні час вострава Норфалк</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -4725,6 +4727,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<percentSign>%</percentSign>
|
||||
<plusSign draft="contributed">+</plusSign>
|
||||
<minusSign draft="contributed">-</minusSign>
|
||||
<approximatelySign>≈</approximatelySign>
|
||||
<exponential>E</exponential>
|
||||
<superscriptingExponent>×</superscriptingExponent>
|
||||
<perMille>‰</perMille>
|
||||
@@ -6377,21 +6380,43 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>ёта{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>кібі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>мебі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>гібі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>тэбі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>пебі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>эксбі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>зэбі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>ёбі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power2">
|
||||
<compoundUnitPattern1>квадратныя {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="one">квадратны {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">квадратныя {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">квадратных {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">кв. {0}</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power3">
|
||||
<compoundUnitPattern1>кубічныя {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="one">кубічны {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">{0}³</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">{0}³</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="one">куб. {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">куб. {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">куб. {0}</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">куб. {0}</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<unit type="acceleration-g-force">
|
||||
@@ -6540,7 +6565,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} мілімоля на літр</unitPattern>
|
||||
</unit>
|
||||
<unit type="concentr-permillion">
|
||||
<displayName>частак на мільён</displayName>
|
||||
<displayName>часткі на мільён</displayName>
|
||||
<unitPattern count="one">{0} частка на мільён</unitPattern>
|
||||
<unitPattern count="few">{0} часткі на мільён</unitPattern>
|
||||
<unitPattern count="many">{0} частак на мільён</unitPattern>
|
||||
@@ -6952,6 +6977,20 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} кропак на цалю</unitPattern>
|
||||
<unitPattern count="other">{0} кропкі на цалю</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>кропкі</displayName>
|
||||
<unitPattern count="one">{0} кропка</unitPattern>
|
||||
<unitPattern count="few">{0} кропкі</unitPattern>
|
||||
<unitPattern count="many">{0} кропак</unitPattern>
|
||||
<unitPattern count="other">{0} кропкі</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>радыус Зямлі</displayName>
|
||||
<unitPattern count="one">{0} радыус Зямлі</unitPattern>
|
||||
<unitPattern count="few">{0} R⊕</unitPattern>
|
||||
<unitPattern count="many">{0} R⊕</unitPattern>
|
||||
<unitPattern count="other">{0} радыуса Зямлі</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>кіламетры</displayName>
|
||||
<unitPattern count="one">{0} кіламетр</unitPattern>
|
||||
@@ -7062,6 +7101,20 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} астранамічных адзінак</unitPattern>
|
||||
<unitPattern count="other">{0} астранамічнай адзінкі</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>фурлонгі</displayName>
|
||||
<unitPattern count="one">{0} фурлонг</unitPattern>
|
||||
<unitPattern count="few">{0} фурлонгі</unitPattern>
|
||||
<unitPattern count="many">{0} фурлонгаў</unitPattern>
|
||||
<unitPattern count="other">{0} фурлонга</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>фатамы</displayName>
|
||||
<unitPattern count="one">{0} фатам</unitPattern>
|
||||
<unitPattern count="few">{0} фатамы</unitPattern>
|
||||
<unitPattern count="many">{0} фатамаў</unitPattern>
|
||||
<unitPattern count="other">{0} фатама</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>марскія мілі</displayName>
|
||||
<unitPattern count="one">{0} марская міля</unitPattern>
|
||||
@@ -7097,6 +7150,20 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} люксаў</unitPattern>
|
||||
<unitPattern count="other">{0} люкса</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>кандэла</displayName>
|
||||
<unitPattern count="one">{0} кандэла</unitPattern>
|
||||
<unitPattern count="few">{0} кандэлы</unitPattern>
|
||||
<unitPattern count="many">{0} кандэл</unitPattern>
|
||||
<unitPattern count="other">{0} кандэлы</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>люмен</displayName>
|
||||
<unitPattern count="one">{0} люмен</unitPattern>
|
||||
<unitPattern count="few">{0} люмены</unitPattern>
|
||||
<unitPattern count="many">{0} люменаў</unitPattern>
|
||||
<unitPattern count="other">{0} люмена</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>сонечныя свяцільнасці</displayName>
|
||||
<unitPattern count="one">{0} сонечная свяцільнасць</unitPattern>
|
||||
@@ -7148,6 +7215,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} амерыканскіх тон</unitPattern>
|
||||
<unitPattern count="other">{0} амерыканскай тоны</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>стоны</displayName>
|
||||
<unitPattern count="one">{0} стоўн</unitPattern>
|
||||
<unitPattern count="few">{0} стоны</unitPattern>
|
||||
<unitPattern count="many">{0} стонаў</unitPattern>
|
||||
<unitPattern count="other">{0} стона</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>фунты</displayName>
|
||||
<unitPattern count="one">{0} фунт</unitPattern>
|
||||
@@ -7199,6 +7273,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} мас Сонца</unitPattern>
|
||||
<unitPattern count="other">{0} масы Сонца</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>граны</displayName>
|
||||
<unitPattern count="one">{0} гран</unitPattern>
|
||||
<unitPattern count="few">{0} граны</unitPattern>
|
||||
<unitPattern count="many">{0} гранаў</unitPattern>
|
||||
<unitPattern count="other">{0} грана</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>гігаваты</displayName>
|
||||
<unitPattern count="one">{0} гігават</unitPattern>
|
||||
@@ -7496,6 +7577,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} акр-футаў</unitPattern>
|
||||
<unitPattern count="other">{0} акр-фута</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>бушалі</displayName>
|
||||
<unitPattern count="one">{0} бушаль</unitPattern>
|
||||
<unitPattern count="few">{0} бушалі</unitPattern>
|
||||
<unitPattern count="many">{0} бушаляў</unitPattern>
|
||||
<unitPattern count="other">{0} бушаля</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>галоны</displayName>
|
||||
<unitPattern count="one">{0} галон</unitPattern>
|
||||
@@ -7568,6 +7656,55 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} барэляў</unitPattern>
|
||||
<unitPattern count="other">{0} барэля</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>дэсертная лыжка</displayName>
|
||||
<unitPattern count="one">{0} дэсертная лыжка</unitPattern>
|
||||
<unitPattern count="few">{0} дэсертныя лыжкі</unitPattern>
|
||||
<unitPattern count="many">{0} дэсертных лыжак</unitPattern>
|
||||
<unitPattern count="other">{0} дэсертнай лыжкі</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>брытанская дэсертная лыжка</displayName>
|
||||
<unitPattern count="one">{0} брытанская дэсертная лыжка</unitPattern>
|
||||
<unitPattern count="few">{0} брыт. дэс. л.</unitPattern>
|
||||
<unitPattern count="many">{0} брыт. дэс. л.</unitPattern>
|
||||
<unitPattern count="other">{0} брытанскай дэсертнай лыжкі</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>кропля</displayName>
|
||||
<unitPattern count="one">{0} кропля</unitPattern>
|
||||
<unitPattern count="few">{0} кроплі</unitPattern>
|
||||
<unitPattern count="many">{0} кропляў</unitPattern>
|
||||
<unitPattern count="other">{0} кроплі</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>драхма</displayName>
|
||||
<unitPattern count="one">{0} драхма</unitPattern>
|
||||
<unitPattern count="few">{0} вад. драхмы</unitPattern>
|
||||
<unitPattern count="many">{0} вад. драхмаў</unitPattern>
|
||||
<unitPattern count="other">{0} вад. драхмы</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>джыгер</displayName>
|
||||
<unitPattern count="one">{0} джыгер</unitPattern>
|
||||
<unitPattern count="few">{0} джыгеры</unitPattern>
|
||||
<unitPattern count="many">{0} джыгераў</unitPattern>
|
||||
<unitPattern count="other">{0} джыгера</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>дробка</displayName>
|
||||
<unitPattern count="one">{0} дробка</unitPattern>
|
||||
<unitPattern count="few">{0} дробкі</unitPattern>
|
||||
<unitPattern count="many">{0} дробак</unitPattern>
|
||||
<unitPattern count="other">{0} дробкі</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>брыт. кварта</displayName>
|
||||
<unitPattern count="one">{0} брыт. кварта</unitPattern>
|
||||
<unitPattern count="few">{0} брыт. кварты</unitPattern>
|
||||
<unitPattern count="many">{0} брыт. кварт</unitPattern>
|
||||
<unitPattern count="other">{0} брыт. кварты</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>кірунак свету</displayName>
|
||||
<coordinateUnitPattern type="east">{0} усходняй даўгаты</coordinateUnitPattern>
|
||||
@@ -7637,6 +7774,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>Ё{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>Кі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>Мі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>Гі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>Ті{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>Пі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>Эі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>Зі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>Ёі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -7866,7 +8027,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} мілі/імп. галон</unitPattern>
|
||||
</unit>
|
||||
<unit type="digital-petabyte">
|
||||
<displayName>ПБайт</displayName>
|
||||
<displayName>ПБ</displayName>
|
||||
<unitPattern count="one">{0} ПБ</unitPattern>
|
||||
<unitPattern count="few">{0} ПБ</unitPattern>
|
||||
<unitPattern count="many">{0} ПБ</unitPattern>
|
||||
@@ -7929,14 +8090,14 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} кбіт</unitPattern>
|
||||
</unit>
|
||||
<unit type="digital-byte">
|
||||
<displayName>байты</displayName>
|
||||
<displayName>байт</displayName>
|
||||
<unitPattern count="one">{0} байт</unitPattern>
|
||||
<unitPattern count="few">{0} байты</unitPattern>
|
||||
<unitPattern count="many">{0} байт</unitPattern>
|
||||
<unitPattern count="other">{0} байта</unitPattern>
|
||||
</unit>
|
||||
<unit type="digital-bit">
|
||||
<displayName>біты</displayName>
|
||||
<displayName>біт</displayName>
|
||||
<unitPattern count="one">{0} біт</unitPattern>
|
||||
<unitPattern count="few">{0} біты</unitPattern>
|
||||
<unitPattern count="many">{0} біт</unitPattern>
|
||||
@@ -8215,6 +8376,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} dpi</unitPattern>
|
||||
<unitPattern count="other">{0} dpi</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>кр</displayName>
|
||||
<unitPattern count="one">{0} кр</unitPattern>
|
||||
<unitPattern count="few">{0} кр</unitPattern>
|
||||
<unitPattern count="many">{0} кр</unitPattern>
|
||||
<unitPattern count="other">{0} кр</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>км</displayName>
|
||||
<unitPattern count="one">{0} км</unitPattern>
|
||||
@@ -8325,6 +8493,20 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} а. а.</unitPattern>
|
||||
<unitPattern count="other">{0} а. а.</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>фурлонгі</displayName>
|
||||
<unitPattern count="one">{0} фур.</unitPattern>
|
||||
<unitPattern count="few">{0} фур.</unitPattern>
|
||||
<unitPattern count="many">{0} фур.</unitPattern>
|
||||
<unitPattern count="other">{0} фур.</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>фатамы</displayName>
|
||||
<unitPattern count="one">{0} фат.</unitPattern>
|
||||
<unitPattern count="few">{0} фат.</unitPattern>
|
||||
<unitPattern count="many">{0} фат.</unitPattern>
|
||||
<unitPattern count="other">{0} фат.</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>мар. мілі</displayName>
|
||||
<unitPattern count="one">{0} мар. міля</unitPattern>
|
||||
@@ -8360,6 +8542,20 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} лк</unitPattern>
|
||||
<unitPattern count="other">{0} лк</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>кд</displayName>
|
||||
<unitPattern count="one">{0} кд</unitPattern>
|
||||
<unitPattern count="few">{0} кд</unitPattern>
|
||||
<unitPattern count="many">{0} кд</unitPattern>
|
||||
<unitPattern count="other">{0} кд</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>лм</displayName>
|
||||
<unitPattern count="one">{0} лм</unitPattern>
|
||||
<unitPattern count="few">{0} лм</unitPattern>
|
||||
<unitPattern count="many">{0} лм</unitPattern>
|
||||
<unitPattern count="other">{0} лм</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>L☉</displayName>
|
||||
<unitPattern count="one">{0} L☉</unitPattern>
|
||||
@@ -8411,6 +8607,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} амер. т</unitPattern>
|
||||
<unitPattern count="other">{0} амер. т</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>стоны</displayName>
|
||||
<unitPattern count="one">{0} стон</unitPattern>
|
||||
<unitPattern count="few">{0} стоны</unitPattern>
|
||||
<unitPattern count="many">{0} стонаў</unitPattern>
|
||||
<unitPattern count="other">{0} стона</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>фунты</displayName>
|
||||
<unitPattern count="one">{0} фунт</unitPattern>
|
||||
@@ -8462,6 +8665,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} M☉</unitPattern>
|
||||
<unitPattern count="other">{0} M☉</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>гран</displayName>
|
||||
<unitPattern count="one">{0} гран</unitPattern>
|
||||
<unitPattern count="few">{0} граны</unitPattern>
|
||||
<unitPattern count="many">{0} гранаў</unitPattern>
|
||||
<unitPattern count="other">{0} грана</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>ГВт</displayName>
|
||||
<unitPattern count="one">{0} ГВт</unitPattern>
|
||||
@@ -8759,6 +8969,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} акр-футаў</unitPattern>
|
||||
<unitPattern count="other">{0} акр-фута</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>бушалі</displayName>
|
||||
<unitPattern count="one">{0} буш.</unitPattern>
|
||||
<unitPattern count="few">{0} буш.</unitPattern>
|
||||
<unitPattern count="many">{0} буш.</unitPattern>
|
||||
<unitPattern count="other">{0} буш.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>гал</displayName>
|
||||
<unitPattern count="one">{0} гал</unitPattern>
|
||||
@@ -8831,6 +9048,55 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="many">{0} барэляў</unitPattern>
|
||||
<unitPattern count="other">{0} барэля</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>дэс. л.</displayName>
|
||||
<unitPattern count="one">{0} дэс. л.</unitPattern>
|
||||
<unitPattern count="few">{0} дэс. л.</unitPattern>
|
||||
<unitPattern count="many">{0} дэс. л.</unitPattern>
|
||||
<unitPattern count="other">{0} дэс. л.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>брыт. дэс. л.</displayName>
|
||||
<unitPattern count="one">{0} брыт. дэс. л.</unitPattern>
|
||||
<unitPattern count="few">{0} брыт. дэс. л.</unitPattern>
|
||||
<unitPattern count="many">{0} брыт. дэс. л.</unitPattern>
|
||||
<unitPattern count="other">{0} брыт. дэс. л.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>кропля</displayName>
|
||||
<unitPattern count="one">{0} кропля</unitPattern>
|
||||
<unitPattern count="few">{0} кроплі</unitPattern>
|
||||
<unitPattern count="many">{0} кропель</unitPattern>
|
||||
<unitPattern count="other">{0} кроплі</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>вад. драхма</displayName>
|
||||
<unitPattern count="one">{0} вад. драхма</unitPattern>
|
||||
<unitPattern count="few">{0} вад. драхмы</unitPattern>
|
||||
<unitPattern count="many">{0} вад. драхмаў</unitPattern>
|
||||
<unitPattern count="other">{0} вад. драхмы</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>джыгер</displayName>
|
||||
<unitPattern count="one">{0} джыгер</unitPattern>
|
||||
<unitPattern count="few">{0} джыгеры</unitPattern>
|
||||
<unitPattern count="many">{0} джыгераў</unitPattern>
|
||||
<unitPattern count="other">{0} джыгера</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>дробка</displayName>
|
||||
<unitPattern count="one">{0} дробка</unitPattern>
|
||||
<unitPattern count="few">{0} дробкі</unitPattern>
|
||||
<unitPattern count="many">{0} дробак</unitPattern>
|
||||
<unitPattern count="other">{0} дробкі</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>брыт. кварта</displayName>
|
||||
<unitPattern count="one">{0} брыт. кварта</unitPattern>
|
||||
<unitPattern count="few">{0} брыт. кварты</unitPattern>
|
||||
<unitPattern count="many">{0} брыт. кварт</unitPattern>
|
||||
<unitPattern count="other">{0} брыт. кварты</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>кірунак</displayName>
|
||||
<coordinateUnitPattern type="east">{0} усх. д.</coordinateUnitPattern>
|
||||
@@ -8900,6 +9166,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>Ё{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>Кі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>Мі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>Гі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>Ті{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>Пі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>Эі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>Зі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>Ёі{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -9122,6 +9412,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="strokes" count="few">{0} штрыхі</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="many">{0} штрыхоў</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} штрыха</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">{0} - ніжні індэкс</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">{0} - верхні індэкс</characterLabelPattern>
|
||||
<characterLabel type="activities">Віды дзейнасці</characterLabel>
|
||||
<characterLabel type="african_scripts">Афрыканскія пісьмы</characterLabel>
|
||||
<characterLabel type="american_scripts">Амерыканскія пісьмы</characterLabel>
|
||||
|
||||
@@ -96,6 +96,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="chr">черокски</language>
|
||||
<language type="chy">шайенски</language>
|
||||
<language type="ckb">кюрдски (централен)</language>
|
||||
<language type="ckb" alt="variant">кюрдски (Сорани)</language>
|
||||
<language type="co">корсикански</language>
|
||||
<language type="cop">коптски</language>
|
||||
<language type="cr">крии</language>
|
||||
@@ -133,9 +134,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="el">гръцки</language>
|
||||
<language type="elx">еламитски</language>
|
||||
<language type="en">английски</language>
|
||||
<language type="en_GB">английски (Обединено кралство)</language>
|
||||
<language type="en_AU">австралийски английски</language>
|
||||
<language type="en_CA">канадски английски</language>
|
||||
<language type="en_GB">британски английски</language>
|
||||
<language type="en_GB" alt="short">английски (UK)</language>
|
||||
<language type="en_US">английски (САЩ)</language>
|
||||
<language type="en_US">американски английски</language>
|
||||
<language type="en_US" alt="short">английски (US)</language>
|
||||
<language type="enm">средновековен английски</language>
|
||||
<language type="eo">есперанто</language>
|
||||
@@ -397,7 +400,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="rwk">рва</language>
|
||||
<language type="sa">санскрит</language>
|
||||
<language type="sad">сандаве</language>
|
||||
<language type="sah">сакха</language>
|
||||
<language type="sah">саха</language>
|
||||
<language type="sam">самаритански арамейски</language>
|
||||
<language type="saq">самбуру</language>
|
||||
<language type="sas">сасак</language>
|
||||
@@ -486,7 +489,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="uga">угаритски</language>
|
||||
<language type="uk">украински</language>
|
||||
<language type="umb">умбунду</language>
|
||||
<language type="und">неопределен</language>
|
||||
<language type="und">непознат език</language>
|
||||
<language type="ur">урду</language>
|
||||
<language type="uz">узбекски</language>
|
||||
<language type="vai">ваи</language>
|
||||
@@ -503,7 +506,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="wbp">валпири</language>
|
||||
<language type="wo">волоф</language>
|
||||
<language type="xal">калмик</language>
|
||||
<language type="xh">ксоса</language>
|
||||
<language type="xh">кхоса</language>
|
||||
<language type="xog">сога</language>
|
||||
<language type="yao">яо</language>
|
||||
<language type="yap">япезе</language>
|
||||
@@ -512,6 +515,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="yi">идиш</language>
|
||||
<language type="yo">йоруба</language>
|
||||
<language type="yue">кантонски</language>
|
||||
<language type="yue" alt="menu">китайски, кантонски</language>
|
||||
<language type="za">зуанг</language>
|
||||
<language type="zap">запотек</language>
|
||||
<language type="zbl">блис символи</language>
|
||||
@@ -925,7 +929,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="TH">Тайланд</territory>
|
||||
<territory type="TJ">Таджикистан</territory>
|
||||
<territory type="TK">Токелау</territory>
|
||||
<territory type="TL">Източен Тимор</territory>
|
||||
<territory type="TL">Тимор Лесте</territory>
|
||||
<territory type="TL" alt="variant">Източен Тимор</territory>
|
||||
<territory type="TM">Туркменистан</territory>
|
||||
<territory type="TN">Тунис</territory>
|
||||
<territory type="TO">Тонга</territory>
|
||||
@@ -1136,7 +1141,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<exemplarCharacters type="auxiliary">[{а\u0300} ѐ ё ѝ {о\u0300} {у\u0300} {ъ\u0300} ы ѣ э {ю\u0300} {я\u0300} ѫ]</exemplarCharacters>
|
||||
<exemplarCharacters type="index" draft="contributed">[А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я]</exemplarCharacters>
|
||||
<exemplarCharacters type="numbers">[ \- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]</exemplarCharacters>
|
||||
<exemplarCharacters type="punctuation">[\- ‐ ‑ – — , ; \: ! ? . … ' ‘ ‚ " “ „ ( ) \[ \] § * / ″ №]</exemplarCharacters>
|
||||
<exemplarCharacters type="punctuation">[\- ‐ ‑ – — , ; \: ! ? . … ' ‘ ‚ " “ „ ( ) \[ \] § @ * / ″ №]</exemplarCharacters>
|
||||
<ellipsis type="final">{0}…</ellipsis>
|
||||
<ellipsis type="initial">…{0}</ellipsis>
|
||||
<ellipsis type="medial">{0}… {1}</ellipsis>
|
||||
@@ -1217,12 +1222,12 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateFormatItem id="GyMMMM">MMMM y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="GyMMMMd">d MMMM y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="GyMMMMEd">E, d MMMM y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="h">h a</dateFormatItem>
|
||||
<dateFormatItem id="H">HH</dateFormatItem>
|
||||
<dateFormatItem id="h">h 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="H">HH 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="hm">h:mm 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="Hm">HH:mm</dateFormatItem>
|
||||
<dateFormatItem id="Hm">HH:mm 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="hms">h:mm:ss 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="Hms">HH:mm:ss</dateFormatItem>
|
||||
<dateFormatItem id="Hms">HH:mm:ss 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="M">M</dateFormatItem>
|
||||
<dateFormatItem id="Md">d.MM</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E, d.MM</dateFormatItem>
|
||||
@@ -1727,22 +1732,22 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<timeFormats>
|
||||
<timeFormatLength type="full">
|
||||
<timeFormat>
|
||||
<pattern>H:mm:ss zzzz</pattern>
|
||||
<pattern>H:mm:ss 'ч'. zzzz</pattern>
|
||||
</timeFormat>
|
||||
</timeFormatLength>
|
||||
<timeFormatLength type="long">
|
||||
<timeFormat>
|
||||
<pattern>H:mm:ss z</pattern>
|
||||
<pattern>H:mm:ss 'ч'. z</pattern>
|
||||
</timeFormat>
|
||||
</timeFormatLength>
|
||||
<timeFormatLength type="medium">
|
||||
<timeFormat>
|
||||
<pattern>H:mm:ss</pattern>
|
||||
<pattern>H:mm:ss 'ч'.</pattern>
|
||||
</timeFormat>
|
||||
</timeFormatLength>
|
||||
<timeFormatLength type="short">
|
||||
<timeFormat>
|
||||
<pattern>H:mm</pattern>
|
||||
<pattern>H:mm 'ч'.</pattern>
|
||||
</timeFormat>
|
||||
</timeFormatLength>
|
||||
</timeFormats>
|
||||
@@ -1768,18 +1773,18 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</dateTimeFormat>
|
||||
</dateTimeFormatLength>
|
||||
<availableFormats>
|
||||
<dateFormatItem id="Bh">h B</dateFormatItem>
|
||||
<dateFormatItem id="Bhm">h:mm B</dateFormatItem>
|
||||
<dateFormatItem id="Bhms">h:mm:ss B</dateFormatItem>
|
||||
<dateFormatItem id="Bh">h 'ч'. B</dateFormatItem>
|
||||
<dateFormatItem id="Bhm">h:mm 'ч'. B</dateFormatItem>
|
||||
<dateFormatItem id="Bhms">h:mm:ss 'ч'. B</dateFormatItem>
|
||||
<dateFormatItem id="d">d</dateFormatItem>
|
||||
<dateFormatItem id="E">ccc</dateFormatItem>
|
||||
<dateFormatItem id="EBhm">E, h:mm B</dateFormatItem>
|
||||
<dateFormatItem id="EBhms">E, h:mm:ss B</dateFormatItem>
|
||||
<dateFormatItem id="EBhm">E, h:mm 'ч'. B</dateFormatItem>
|
||||
<dateFormatItem id="EBhms">E, h:mm:ss 'ч'. B</dateFormatItem>
|
||||
<dateFormatItem id="Ed">E, d</dateFormatItem>
|
||||
<dateFormatItem id="Ehm">E, h:mm a</dateFormatItem>
|
||||
<dateFormatItem id="EHm">E, HH:mm</dateFormatItem>
|
||||
<dateFormatItem id="Ehms">E, h:mm:ss a</dateFormatItem>
|
||||
<dateFormatItem id="EHms">E, H:mm:ss</dateFormatItem>
|
||||
<dateFormatItem id="Ehm">E, h:mm 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="EHm">E, HH:mm 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="Ehms">E, h:mm:ss 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="EHms">E, HH:mm:ss 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="Gy">y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="GyMMM">MM.y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="GyMMMd">d.MM.y 'г'. G</dateFormatItem>
|
||||
@@ -1787,16 +1792,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<dateFormatItem id="GyMMMM">MMMM y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="GyMMMMd">d MMMM y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="GyMMMMEd">E, d MMMM y 'г'. G</dateFormatItem>
|
||||
<dateFormatItem id="h">h a</dateFormatItem>
|
||||
<dateFormatItem id="H">H</dateFormatItem>
|
||||
<dateFormatItem id="hm">h:mm a</dateFormatItem>
|
||||
<dateFormatItem id="Hm">H:mm</dateFormatItem>
|
||||
<dateFormatItem id="hms">h:mm:ss a</dateFormatItem>
|
||||
<dateFormatItem id="Hms">H:mm:ss</dateFormatItem>
|
||||
<dateFormatItem id="hmsv">h:mm:ss a v</dateFormatItem>
|
||||
<dateFormatItem id="Hmsv">HH:mm:ss v</dateFormatItem>
|
||||
<dateFormatItem id="hmv">h:mm a v</dateFormatItem>
|
||||
<dateFormatItem id="Hmv">HH:mm v</dateFormatItem>
|
||||
<dateFormatItem id="h">h 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="H">HH 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="hm">h:mm 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="Hm">HH:mm 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="hms">h:mm:ss 'ч'. a</dateFormatItem>
|
||||
<dateFormatItem id="Hms">HH:mm:ss 'ч'.</dateFormatItem>
|
||||
<dateFormatItem id="hmsv">h:mm:ss 'ч'. a v</dateFormatItem>
|
||||
<dateFormatItem id="Hmsv">HH:mm:ss 'ч'. v</dateFormatItem>
|
||||
<dateFormatItem id="hmv">h:mm 'ч'. a v</dateFormatItem>
|
||||
<dateFormatItem id="Hmv">HH:mm 'ч'. v</dateFormatItem>
|
||||
<dateFormatItem id="M">L</dateFormatItem>
|
||||
<dateFormatItem id="Md">d.MM</dateFormatItem>
|
||||
<dateFormatItem id="MEd">E, d.MM</dateFormatItem>
|
||||
@@ -1879,36 +1884,36 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<greatestDifference id="y">E, d MMM y – E, d MMM y G</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="h">
|
||||
<greatestDifference id="a">h a – h a</greatestDifference>
|
||||
<greatestDifference id="h">h – h a</greatestDifference>
|
||||
<greatestDifference id="a">h 'ч'. a – h 'ч'. a</greatestDifference>
|
||||
<greatestDifference id="h">h 'ч'. – h 'ч'. a</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="H">
|
||||
<greatestDifference id="H">H – H</greatestDifference>
|
||||
<greatestDifference id="H">H – H 'ч'.</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="hm">
|
||||
<greatestDifference id="a">h:mm a – h:mm a</greatestDifference>
|
||||
<greatestDifference id="h">h:mm – h:mm a</greatestDifference>
|
||||
<greatestDifference id="m">h:mm – h:mm a</greatestDifference>
|
||||
<greatestDifference id="a">h:mm 'ч'. a – h:mm 'ч'. a</greatestDifference>
|
||||
<greatestDifference id="h">h:mm 'ч'. – h:mm 'ч'. a</greatestDifference>
|
||||
<greatestDifference id="m">h:mm 'ч'. – h:mm 'ч'. a</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="Hm">
|
||||
<greatestDifference id="H">H:mm – H:mm</greatestDifference>
|
||||
<greatestDifference id="m">H:mm – H:mm</greatestDifference>
|
||||
<greatestDifference id="H">H:mm 'ч'. – H:mm 'ч'.</greatestDifference>
|
||||
<greatestDifference id="m">H:mm 'ч'. – H:mm 'ч'.</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="hmv">
|
||||
<greatestDifference id="a">h:mm a – h:mm a v</greatestDifference>
|
||||
<greatestDifference id="h">h:mm a – h:mm a v</greatestDifference>
|
||||
<greatestDifference id="m">h:mm a – h:mm a v</greatestDifference>
|
||||
<greatestDifference id="a">h:mm 'ч'. a – h:mm 'ч'. a v</greatestDifference>
|
||||
<greatestDifference id="h">h:mm 'ч'. a – h:mm 'ч'. a v</greatestDifference>
|
||||
<greatestDifference id="m">h:mm 'ч'. a – h:mm 'ч'. a v</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="Hmv">
|
||||
<greatestDifference id="H">H:mm – H:mm v</greatestDifference>
|
||||
<greatestDifference id="m">H:mm – H:mm v</greatestDifference>
|
||||
<greatestDifference id="H">H:mm 'ч'. – H:mm 'ч'. v</greatestDifference>
|
||||
<greatestDifference id="m">H:mm 'ч'. – H:mm 'ч'. v</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="hv">
|
||||
<greatestDifference id="a">h a – h a v</greatestDifference>
|
||||
<greatestDifference id="h">h – h a v</greatestDifference>
|
||||
<greatestDifference id="a">h 'ч'. a – h 'ч'. a v</greatestDifference>
|
||||
<greatestDifference id="h">h 'ч'. – h 'ч'. a v</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="Hv">
|
||||
<greatestDifference id="H">H – H v</greatestDifference>
|
||||
<greatestDifference id="H">H – H 'ч'. v</greatestDifference>
|
||||
</intervalFormatItem>
|
||||
<intervalFormatItem id="M">
|
||||
<greatestDifference id="M">M – M</greatestDifference>
|
||||
@@ -2428,12 +2433,12 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<relative type="0">този вт</relative>
|
||||
<relative type="1">следв. вт</relative>
|
||||
<relativeTime type="future">
|
||||
<relativeTimePattern count="one">сл. {0} вт.</relativeTimePattern>
|
||||
<relativeTimePattern count="other">сл. {0} вт.</relativeTimePattern>
|
||||
<relativeTimePattern count="one">сл. {0} вт</relativeTimePattern>
|
||||
<relativeTimePattern count="other">сл. {0} вт</relativeTimePattern>
|
||||
</relativeTime>
|
||||
<relativeTime type="past">
|
||||
<relativeTimePattern count="one">пр. {0} вт.</relativeTimePattern>
|
||||
<relativeTimePattern count="other">пр. {0} вт.</relativeTimePattern>
|
||||
<relativeTimePattern count="one">пр. {0} вт</relativeTimePattern>
|
||||
<relativeTimePattern count="other">пр. {0} вт</relativeTimePattern>
|
||||
</relativeTime>
|
||||
</field>
|
||||
<field type="wed">
|
||||
@@ -2718,7 +2723,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<gmtFormat>Гринуич{0}</gmtFormat>
|
||||
<gmtZeroFormat>Гринуич</gmtZeroFormat>
|
||||
<regionFormat>{0}</regionFormat>
|
||||
<regionFormat type="daylight">{0}, лятно часово време</regionFormat>
|
||||
<regionFormat type="daylight">{0} – лятно часово време</regionFormat>
|
||||
<regionFormat type="standard">{0} – стандартно време</regionFormat>
|
||||
<fallbackFormat>{1} ({0})</fallbackFormat>
|
||||
<zone type="America/Santa_Isabel">
|
||||
@@ -2733,7 +2738,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</long>
|
||||
</zone>
|
||||
<zone type="Etc/Unknown">
|
||||
<exemplarCity>неизвестен</exemplarCity>
|
||||
<exemplarCity>неизвестен град</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Andorra">
|
||||
<exemplarCity>Андора</exemplarCity>
|
||||
@@ -3668,9 +3673,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>Калининград</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Симферопол</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>Москва</exemplarCity>
|
||||
</zone>
|
||||
@@ -3866,6 +3868,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>Киев</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>Симферопол</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>Запорожие</exemplarCity>
|
||||
</zone>
|
||||
@@ -4651,9 +4656,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">Норфолкско време</generic>
|
||||
<standard draft="contributed">Норфолкско стандартно време</standard>
|
||||
<daylight draft="contributed">Норфолкско лятно часово време</daylight>
|
||||
<generic>Норфолкско време</generic>
|
||||
<standard>Норфолкско стандартно време</standard>
|
||||
<daylight>Норфолкско лятно часово време</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -5079,6 +5084,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName count="one">афганистански афган</displayName>
|
||||
<displayName count="other">афганистански афгана</displayName>
|
||||
<symbol draft="contributed">AFN</symbol>
|
||||
<symbol alt="narrow" draft="contributed">Af</symbol>
|
||||
</currency>
|
||||
<currency type="ALL">
|
||||
<displayName>Албански лек</displayName>
|
||||
@@ -5091,6 +5097,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName count="one">арменски драм</displayName>
|
||||
<displayName count="other">арменски драма</displayName>
|
||||
<symbol draft="contributed">AMD</symbol>
|
||||
<symbol alt="narrow" draft="contributed">AMD</symbol>
|
||||
</currency>
|
||||
<currency type="ANG">
|
||||
<displayName>Антилски гулден</displayName>
|
||||
@@ -5165,6 +5172,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName count="one">азербайджански манат</displayName>
|
||||
<displayName count="other">азербайджански маната</displayName>
|
||||
<symbol draft="contributed">AZN</symbol>
|
||||
<symbol alt="narrow" draft="contributed">AZN</symbol>
|
||||
</currency>
|
||||
<currency type="BAD">
|
||||
<displayName>Босна и Херцеговина-динар</displayName>
|
||||
@@ -5369,9 +5377,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<symbol alt="narrow" draft="contributed">CLP</symbol>
|
||||
</currency>
|
||||
<currency type="CNH">
|
||||
<displayName>Китайски ренминби юан (offshore)</displayName>
|
||||
<displayName count="one">китайски ренминби юан (offshore)</displayName>
|
||||
<displayName count="other">китайски ренминби юан (offshore)</displayName>
|
||||
<displayName>Китайски юан (офшорен)</displayName>
|
||||
<displayName count="one">китайски юан (офшорен)</displayName>
|
||||
<displayName count="other">китайски юана (офшорни)</displayName>
|
||||
<symbol draft="contributed">CNH</symbol>
|
||||
</currency>
|
||||
<currency type="CNY">
|
||||
@@ -5529,9 +5537,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<symbol alt="narrow" draft="contributed">FJD</symbol>
|
||||
</currency>
|
||||
<currency type="FKP">
|
||||
<displayName>Фолклендска лира</displayName>
|
||||
<displayName count="one">фолклендска лира</displayName>
|
||||
<displayName count="other">фолклендски лири</displayName>
|
||||
<displayName>Фолкландска лира</displayName>
|
||||
<displayName count="one">фолкландска лира</displayName>
|
||||
<displayName count="other">фолкландски лири</displayName>
|
||||
<symbol draft="contributed">FKP</symbol>
|
||||
<symbol alt="narrow" draft="contributed">FKP</symbol>
|
||||
</currency>
|
||||
@@ -5568,6 +5576,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName count="one">ганайско седи</displayName>
|
||||
<displayName count="other">ганайски седи</displayName>
|
||||
<symbol draft="contributed">GHS</symbol>
|
||||
<symbol alt="narrow" draft="contributed">GHS</symbol>
|
||||
</currency>
|
||||
<currency type="GIP">
|
||||
<displayName>Гибралтарска лира</displayName>
|
||||
@@ -5870,9 +5879,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName count="other">марокански франка</displayName>
|
||||
</currency>
|
||||
<currency type="MDL">
|
||||
<displayName>Молдовско леу</displayName>
|
||||
<displayName count="one">молдовско леу</displayName>
|
||||
<displayName count="other">молдовски леу</displayName>
|
||||
<displayName>Молдовска лея</displayName>
|
||||
<displayName count="one">молдовска лея</displayName>
|
||||
<displayName count="other">молдовски леи</displayName>
|
||||
<symbol draft="contributed">MDL</symbol>
|
||||
</currency>
|
||||
<currency type="MGA">
|
||||
@@ -5897,9 +5906,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<displayName>Малийски франк</displayName>
|
||||
</currency>
|
||||
<currency type="MMK">
|
||||
<displayName>Мианмарски кият</displayName>
|
||||
<displayName count="one">мианмарски кият</displayName>
|
||||
<displayName count="other">мианмарски кията</displayName>
|
||||
<displayName>Мианмарски киат</displayName>
|
||||
<displayName count="one">мианмарски киат</displayName>
|
||||
<displayName count="other">мианмарски киата</displayName>
|
||||
<symbol draft="contributed">MMK</symbol>
|
||||
<symbol alt="narrow" draft="contributed">K</symbol>
|
||||
</currency>
|
||||
@@ -5947,9 +5956,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<symbol draft="contributed">MVR</symbol>
|
||||
</currency>
|
||||
<currency type="MWK">
|
||||
<displayName>Малавийска квача</displayName>
|
||||
<displayName count="one">малавийска квача</displayName>
|
||||
<displayName count="other">малавийски квачи</displayName>
|
||||
<displayName>Малавийска куача</displayName>
|
||||
<displayName count="one">малавийска куача</displayName>
|
||||
<displayName count="other">малавийски куачи</displayName>
|
||||
<symbol draft="contributed">MWK</symbol>
|
||||
</currency>
|
||||
<currency type="MXN">
|
||||
@@ -6371,9 +6380,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<symbol draft="contributed">TZS</symbol>
|
||||
</currency>
|
||||
<currency type="UAH">
|
||||
<displayName>Украинска хривня</displayName>
|
||||
<displayName count="one">украинска хривня</displayName>
|
||||
<displayName count="other">украински хривни</displayName>
|
||||
<displayName>Украинска гривня</displayName>
|
||||
<displayName count="one">украинска гривня</displayName>
|
||||
<displayName count="other">украински гривни</displayName>
|
||||
<symbol draft="contributed">UAH</symbol>
|
||||
<symbol alt="narrow" draft="contributed">UAH</symbol>
|
||||
</currency>
|
||||
@@ -6675,6 +6684,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>йота{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>киби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>меби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>гиби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>теби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>пеби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>ексби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>зеби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>йоби{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0} на {1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -6829,14 +6862,14 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} литра на 100 километра</unitPattern>
|
||||
</unit>
|
||||
<unit type="consumption-mile-per-gallon">
|
||||
<displayName>мили с един галон</displayName>
|
||||
<unitPattern count="one">{0} миля с един галон</unitPattern>
|
||||
<unitPattern count="other">{0} мили с един галон</unitPattern>
|
||||
<displayName>мили на галон</displayName>
|
||||
<unitPattern count="one">{0} миля на галон</unitPattern>
|
||||
<unitPattern count="other">{0} мили на галон</unitPattern>
|
||||
</unit>
|
||||
<unit type="consumption-mile-per-gallon-imperial">
|
||||
<displayName>мили с един британски галон</displayName>
|
||||
<unitPattern count="one">{0} миля с един британски галон</unitPattern>
|
||||
<unitPattern count="other">{0} мили с един британски галон</unitPattern>
|
||||
<displayName>мили на имперски галон</displayName>
|
||||
<unitPattern count="one">{0} миля на имперски галон</unitPattern>
|
||||
<unitPattern count="other">{0} мили на имперски галон</unitPattern>
|
||||
</unit>
|
||||
<unit type="digital-petabyte">
|
||||
<displayName>петабайти</displayName>
|
||||
@@ -7088,6 +7121,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} точка на инч</unitPattern>
|
||||
<unitPattern count="other">{0} точки на инч</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>точка</displayName>
|
||||
<unitPattern count="one">{0} точка</unitPattern>
|
||||
<unitPattern count="other">{0} точки</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>земен радиус</displayName>
|
||||
<unitPattern count="one">{0} земен радиус</unitPattern>
|
||||
<unitPattern count="other">{0} земни радиуса</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>километри</displayName>
|
||||
<unitPattern count="one">{0} километър</unitPattern>
|
||||
@@ -7168,6 +7211,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} астрономическа единица</unitPattern>
|
||||
<unitPattern count="other">{0} астрономически единици</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName>фърлонги</displayName>
|
||||
<unitPattern count="one">{0} фърлонг</unitPattern>
|
||||
<unitPattern count="other">{0} фърлонга</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName>фатоми</displayName>
|
||||
<unitPattern count="one">{0} фатом</unitPattern>
|
||||
<unitPattern count="other">{0} фатома</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>морски мили</displayName>
|
||||
<unitPattern count="one">{0} морска миля</unitPattern>
|
||||
@@ -7193,15 +7246,25 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} лукс</unitPattern>
|
||||
<unitPattern count="other">{0} лукса</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>кандела</displayName>
|
||||
<unitPattern count="one">{0} кандела</unitPattern>
|
||||
<unitPattern count="other">{0} кандели</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>лумен</displayName>
|
||||
<unitPattern count="one">{0} лумен</unitPattern>
|
||||
<unitPattern count="other">{0} лумена</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<displayName>слънчеви светимости</displayName>
|
||||
<unitPattern count="one">слънчева светимост</unitPattern>
|
||||
<unitPattern count="other">{0} слънчеви светимости</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-metric-ton">
|
||||
<displayName>тонове</displayName>
|
||||
<unitPattern count="one">{0} тон</unitPattern>
|
||||
<unitPattern count="other">{0} тона</unitPattern>
|
||||
<displayName>метрични тонове</displayName>
|
||||
<unitPattern count="one">{0} метричен тон</unitPattern>
|
||||
<unitPattern count="other">{0} метрични тона</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-kilogram">
|
||||
<displayName>килограми</displayName>
|
||||
@@ -7230,6 +7293,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} къс тон</unitPattern>
|
||||
<unitPattern count="other">{0} къси тона</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName>стоунове</displayName>
|
||||
<unitPattern count="one">{0} стоун</unitPattern>
|
||||
<unitPattern count="other">{0} стоуна</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>фунтове</displayName>
|
||||
<unitPattern count="one">{0} фунт</unitPattern>
|
||||
@@ -7267,6 +7335,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} слънчева маса</unitPattern>
|
||||
<unitPattern count="other">{0} слънчеви маси</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>гран</displayName>
|
||||
<unitPattern count="one">{0} гран</unitPattern>
|
||||
<unitPattern count="other">{0} грана</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>гигавати</displayName>
|
||||
<unitPattern count="one">{0} гигават</unitPattern>
|
||||
@@ -7388,9 +7461,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} келвина</unitPattern>
|
||||
</unit>
|
||||
<unit type="torque-pound-force-foot">
|
||||
<displayName>фунт-футове</displayName>
|
||||
<unitPattern count="one">{0} фунт-фут</unitPattern>
|
||||
<unitPattern count="other">{0} фунт-фута</unitPattern>
|
||||
<displayName>паунд-футове</displayName>
|
||||
<unitPattern count="one">{0} паунд-фут сила</unitPattern>
|
||||
<unitPattern count="other">{0} паунд-фута</unitPattern>
|
||||
</unit>
|
||||
<unit type="torque-newton-meter">
|
||||
<displayName>нютон-метър</displayName>
|
||||
@@ -7480,9 +7553,14 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} акър-фут</unitPattern>
|
||||
<unitPattern count="other">{0} акър-фута</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>бушели</displayName>
|
||||
<unitPattern count="one">{0} бушел</unitPattern>
|
||||
<unitPattern count="other">{0} бушела</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<displayName>галони</displayName>
|
||||
<unitPattern count="one">{0} галона</unitPattern>
|
||||
<unitPattern count="one">{0} галон</unitPattern>
|
||||
<unitPattern count="other">{0} галона</unitPattern>
|
||||
<perUnitPattern>{0} на галон</perUnitPattern>
|
||||
</unit>
|
||||
@@ -7513,9 +7591,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} течни унции</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-fluid-ounce-imperial">
|
||||
<displayName>Британски течни унции</displayName>
|
||||
<unitPattern count="one">{0} британска течна унция</unitPattern>
|
||||
<unitPattern count="other">{0} британски течни унции</unitPattern>
|
||||
<displayName>имперски течни унции</displayName>
|
||||
<unitPattern count="one">{0} имперска течна унция</unitPattern>
|
||||
<unitPattern count="other">{0} имперски течни унции</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-tablespoon">
|
||||
<displayName>супени лъжици</displayName>
|
||||
@@ -7532,6 +7610,36 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} барел</unitPattern>
|
||||
<unitPattern count="other">{0} барела</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>десертна лъжица</displayName>
|
||||
<unitPattern count="one">{0} десертна лъжица</unitPattern>
|
||||
<unitPattern count="other">{0} десертни лъжици</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>капка</displayName>
|
||||
<unitPattern count="one">{0} капка</unitPattern>
|
||||
<unitPattern count="other">{0} капки</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>драм</displayName>
|
||||
<unitPattern count="one">{0} драм</unitPattern>
|
||||
<unitPattern count="other">{0} драма</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>джигър</displayName>
|
||||
<unitPattern count="one">{0} джигър</unitPattern>
|
||||
<unitPattern count="other">{0} джигъра</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>щипка</displayName>
|
||||
<unitPattern count="one">{0} щипка</unitPattern>
|
||||
<unitPattern count="other">{0} щипки</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>имперска кварта</displayName>
|
||||
<unitPattern count="one">{0} имперска кварта</unitPattern>
|
||||
<unitPattern count="other">{0} имперски кварти</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>основна посока</displayName>
|
||||
<coordinateUnitPattern type="east">{0}И</coordinateUnitPattern>
|
||||
@@ -7601,6 +7709,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>Й{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>Ki{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>Mi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>Gi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>Ti{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>Pi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>Ei{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>Zi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>Yi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -7816,6 +7948,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} в.</unitPattern>
|
||||
<unitPattern count="other">{0} в.</unitPattern>
|
||||
</unit>
|
||||
<unit type="duration-decade">
|
||||
<displayName>декада</displayName>
|
||||
<unitPattern count="one">{0} декада</unitPattern>
|
||||
<unitPattern count="other">{0} декади</unitPattern>
|
||||
</unit>
|
||||
<unit type="duration-year">
|
||||
<displayName>години</displayName>
|
||||
<unitPattern count="one">{0} год.</unitPattern>
|
||||
@@ -7968,6 +8105,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unit type="graphics-em">
|
||||
<displayName>ем</displayName>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>точка</displayName>
|
||||
<unitPattern count="one">{0} точка</unitPattern>
|
||||
<unitPattern count="other">{0} точки</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>R⊕</displayName>
|
||||
<unitPattern count="one">{0} R⊕</unitPattern>
|
||||
<unitPattern count="other">{0} R⊕</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>km</displayName>
|
||||
<unitPattern count="one">{0} km</unitPattern>
|
||||
@@ -8007,7 +8154,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} nm</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-picometer">
|
||||
<displayName>пикометри</displayName>
|
||||
<unitPattern count="one">{0} pm</unitPattern>
|
||||
<unitPattern count="other">{0} pm</unitPattern>
|
||||
</unit>
|
||||
@@ -8042,6 +8188,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} AU</unitPattern>
|
||||
<unitPattern count="other">{0} AU</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName draft="provisional">fur</displayName>
|
||||
<unitPattern count="one">{0} fur</unitPattern>
|
||||
<unitPattern count="other">{0} fur</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName draft="provisional">fth</displayName>
|
||||
<unitPattern count="one">{0} fth</unitPattern>
|
||||
<unitPattern count="other">{0} fth</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>nmi</displayName>
|
||||
<unitPattern count="one">{0} nmi</unitPattern>
|
||||
@@ -8066,6 +8222,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} lx</unitPattern>
|
||||
<unitPattern count="other">{0} lx</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>cd</displayName>
|
||||
<unitPattern count="one">{0} cd</unitPattern>
|
||||
<unitPattern count="other">{0} cd</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>lm</displayName>
|
||||
<unitPattern count="one">{0} lm</unitPattern>
|
||||
<unitPattern count="other">{0} lm</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<unitPattern count="one">{0} L☉</unitPattern>
|
||||
<unitPattern count="other">{0} L☉</unitPattern>
|
||||
@@ -8100,6 +8266,10 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} tn</unitPattern>
|
||||
<unitPattern count="other">{0} tn</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<unitPattern count="one">{0} st</unitPattern>
|
||||
<unitPattern count="other">{0} st</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<unitPattern count="one">{0} lb</unitPattern>
|
||||
<unitPattern count="other">{0} lb</unitPattern>
|
||||
@@ -8133,6 +8303,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} M☉</unitPattern>
|
||||
<unitPattern count="other">{0} M☉</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>гран</displayName>
|
||||
<unitPattern count="one">{0} гран</unitPattern>
|
||||
<unitPattern count="other">{0} грана</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>GW</displayName>
|
||||
<unitPattern count="one">{0} GW</unitPattern>
|
||||
@@ -8331,6 +8506,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ac ft</unitPattern>
|
||||
<unitPattern count="other">{0} ac ft</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-bushel">
|
||||
<displayName>бушели</displayName>
|
||||
<unitPattern count="one">{0} bu</unitPattern>
|
||||
<unitPattern count="other">{0} bu</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-gallon">
|
||||
<unitPattern count="one">{0} gal US</unitPattern>
|
||||
<unitPattern count="other">{0} gal US</unitPattern>
|
||||
@@ -8338,7 +8518,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unit type="volume-gallon-imperial">
|
||||
<displayName>имп. галон</displayName>
|
||||
<unitPattern count="one">{0} имп. галон</unitPattern>
|
||||
<unitPattern count="other">{0} имп. гал.</unitPattern>
|
||||
<unitPattern count="other">{0} имп. галона</unitPattern>
|
||||
<perUnitPattern>{0}/имп. галон</perUnitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart">
|
||||
@@ -8378,6 +8558,41 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} bbl</unitPattern>
|
||||
<unitPattern count="other">{0} bbl</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>дес. лъжица</displayName>
|
||||
<unitPattern count="one">{0} дес. лъжица</unitPattern>
|
||||
<unitPattern count="other">{0} дес. лъжици</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>брит. дес. лъжица</displayName>
|
||||
<unitPattern count="one">{0} брит. дес. лъжица</unitPattern>
|
||||
<unitPattern count="other">{0} брит. дес. лъжици</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>капка</displayName>
|
||||
<unitPattern count="one">{0} капка</unitPattern>
|
||||
<unitPattern count="other">{0} капки</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>течен драм</displayName>
|
||||
<unitPattern count="one">{0} теч. драм</unitPattern>
|
||||
<unitPattern count="other">{0} теч. драма</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>джигър</displayName>
|
||||
<unitPattern count="one">{0} джигър</unitPattern>
|
||||
<unitPattern count="other">{0} джигъра</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>щипка</displayName>
|
||||
<unitPattern count="one">{0} щипка</unitPattern>
|
||||
<unitPattern count="other">{0} щипки</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>имп. кварта</displayName>
|
||||
<unitPattern count="one">{0} имп. кварта</unitPattern>
|
||||
<unitPattern count="other">{0} имп. кварти</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>посока</displayName>
|
||||
<coordinateUnitPattern type="east">{0}И</coordinateUnitPattern>
|
||||
@@ -8447,6 +8662,30 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>Й{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>Ki{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>Mi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>Gi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>Ti{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>Pi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>Ei{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>Zi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>Yi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -8743,6 +8982,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="scripts">{0} – писмени знаци</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="one">{0} черта</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} черти</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">долен индекс {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">горен индекс {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">Дейности</characterLabel>
|
||||
<characterLabel type="african_scripts">Африкански писмени знаци</characterLabel>
|
||||
<characterLabel type="american_scripts">Американски писмени знаци</characterLabel>
|
||||
@@ -8839,7 +9080,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<styleName type="ital" subtype="1">курсив</styleName>
|
||||
<styleName type="opsz" subtype="8">надпис</styleName>
|
||||
<styleName type="opsz" subtype="12">текст</styleName>
|
||||
<styleName type="opsz" subtype="18">titling</styleName>
|
||||
<styleName type="opsz" subtype="18">заглавен</styleName>
|
||||
<styleName type="opsz" subtype="72">едър шрифт</styleName>
|
||||
<styleName type="opsz" subtype="144">плакат</styleName>
|
||||
<styleName type="slnt" subtype="-12">обратно наклонен</styleName>
|
||||
|
||||
@@ -96,6 +96,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="chr">চেরোকী</language>
|
||||
<language type="chy">শাইয়েন</language>
|
||||
<language type="ckb">মধ্য কুর্দিশ</language>
|
||||
<language type="ckb" alt="variant">কুর্দিশ, সোরানি</language>
|
||||
<language type="co">কর্সিকান</language>
|
||||
<language type="cop">কপটিক</language>
|
||||
<language type="cr">ক্রি</language>
|
||||
@@ -352,7 +353,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<language type="nl">ওলন্দাজ</language>
|
||||
<language type="nl_BE">ফ্লেমিশ</language>
|
||||
<language type="nmg">কোয়াসিও</language>
|
||||
<language type="nn">নরওয়েজীয়ান নিনর্স্ক</language>
|
||||
<language type="nn">নরওয়েজিয়ান নিনর্স্ক</language>
|
||||
<language type="nnh">নিঙ্গেম্বুন</language>
|
||||
<language type="no">নরওয়েজীয়</language>
|
||||
<language type="nog">নোগাই</language>
|
||||
@@ -876,7 +877,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<territory type="ML">মালি</territory>
|
||||
<territory type="MM">মায়ানমার (বার্মা)</territory>
|
||||
<territory type="MN">মঙ্গোলিয়া</territory>
|
||||
<territory type="MO">ম্যাকাও এসএআর চীনা</territory>
|
||||
<territory type="MO">ম্যাকাও এসএআর চীনা চীনা (ম্যাকাও এসএআর চীনা) চীনা (ঐতিহ্যবাহী, ম্যাকাও এসএআর চীনা) অঞ্চল: ম্যাকাও এসএআর চীন</territory>
|
||||
<territory type="MO" alt="short">ম্যাকাও</territory>
|
||||
<territory type="MP">উত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জ</territory>
|
||||
<territory type="MQ">মার্টিনিক</territory>
|
||||
@@ -2632,18 +2633,18 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<month type="12">জ্বিলহজ্জ</month>
|
||||
</monthWidth>
|
||||
<monthWidth type="narrow">
|
||||
<month type="1" draft="contributed">১</month>
|
||||
<month type="2" draft="contributed">২</month>
|
||||
<month type="3" draft="contributed">৩</month>
|
||||
<month type="4" draft="contributed">৪</month>
|
||||
<month type="5" draft="contributed">৫</month>
|
||||
<month type="6" draft="contributed">৬</month>
|
||||
<month type="7" draft="contributed">৭</month>
|
||||
<month type="8" draft="contributed">৮</month>
|
||||
<month type="9" draft="contributed">৯</month>
|
||||
<month type="10" draft="contributed">১০</month>
|
||||
<month type="11" draft="contributed">১১</month>
|
||||
<month type="12" draft="contributed">১২</month>
|
||||
<month type="1">১</month>
|
||||
<month type="2">২</month>
|
||||
<month type="3">৩</month>
|
||||
<month type="4">৪</month>
|
||||
<month type="5">৫</month>
|
||||
<month type="6">৬</month>
|
||||
<month type="7">৭</month>
|
||||
<month type="8">৮</month>
|
||||
<month type="9">৯</month>
|
||||
<month type="10">১০</month>
|
||||
<month type="11">১১</month>
|
||||
<month type="12">১২</month>
|
||||
</monthWidth>
|
||||
<monthWidth type="wide">
|
||||
<month type="1">মহররম</month>
|
||||
@@ -2707,13 +2708,13 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</months>
|
||||
<eras>
|
||||
<eraNames>
|
||||
<era type="0" draft="contributed">যুগ</era>
|
||||
<era type="0">যুগ</era>
|
||||
</eraNames>
|
||||
<eraAbbr>
|
||||
<era type="0">যুগ</era>
|
||||
</eraAbbr>
|
||||
<eraNarrow>
|
||||
<era type="0" draft="contributed">যুগ</era>
|
||||
<era type="0">যুগ</era>
|
||||
</eraNarrow>
|
||||
</eras>
|
||||
</calendar>
|
||||
@@ -3144,7 +3145,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<relativeTimePattern count="other">{0} সোমবারেতে</relativeTimePattern>
|
||||
</relativeTime>
|
||||
<relativeTime type="past">
|
||||
<relativeTimePattern count="one">{0} সোমবারেতে</relativeTimePattern>
|
||||
<relativeTimePattern count="one">{0} সোমবার আগে</relativeTimePattern>
|
||||
<relativeTimePattern count="other">{0} সোমবার আগে</relativeTimePattern>
|
||||
</relativeTime>
|
||||
</field>
|
||||
@@ -4445,9 +4446,6 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>কালিনিঙগ্রাড</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>সিমফেরোপোল</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>মস্কো</exemplarCity>
|
||||
</zone>
|
||||
@@ -4643,6 +4641,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>কিয়েভ</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>সিমফেরোপোল</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>জেপোরোজাইয়াই</exemplarCity>
|
||||
</zone>
|
||||
@@ -4795,9 +4796,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</zone>
|
||||
<metazone type="Acre">
|
||||
<long>
|
||||
<generic draft="provisional">একর সময়</generic>
|
||||
<standard draft="provisional">একর মানক সময়</standard>
|
||||
<daylight draft="provisional">একর গ্রীষ্মকাল সময়</daylight>
|
||||
<generic>একর সময়</generic>
|
||||
<standard>একর মানক সময়</standard>
|
||||
<daylight>একর গ্রীষ্মকাল সময়</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Afghanistan">
|
||||
@@ -5124,7 +5125,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Europe_Further_Eastern">
|
||||
<long>
|
||||
<standard>অতিরিক্ত-পূর্ব ইউরোপীয় সময়</standard>
|
||||
<standard>প্রান্তীয় পূর্ব ইউরোপীয় সময়</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Europe_Western">
|
||||
@@ -5476,9 +5477,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">নরফোক দ্বীপ সময়</generic>
|
||||
<standard draft="contributed">নরফোক দ্বীপ মানক সময়</standard>
|
||||
<daylight draft="contributed">নরফোক দ্বীপ দিবালোক সময়</daylight>
|
||||
<generic>নরফোক দ্বীপ সময়</generic>
|
||||
<standard>নরফোক দ্বীপ মানক সময়</standard>
|
||||
<daylight>নরফোক দ্বীপ দিবালোক সময়</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -5849,8 +5850,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<pattern type="1000000000" count="other">000 কো</pattern>
|
||||
<pattern type="10000000000" count="one">00 শত কো</pattern>
|
||||
<pattern type="10000000000" count="other">00শত কো</pattern>
|
||||
<pattern type="100000000000" count="one">00000 কো</pattern>
|
||||
<pattern type="100000000000" count="other">00000 কো</pattern>
|
||||
<pattern type="100000000000" count="one">000কো</pattern>
|
||||
<pattern type="100000000000" count="other">000কো</pattern>
|
||||
<pattern type="1000000000000" count="one">0 লা'.'কো'.'</pattern>
|
||||
<pattern type="1000000000000" count="other">0 লা'.'কো'.'</pattern>
|
||||
<pattern type="10000000000000" count="one">00 লা'.'কো'.'</pattern>
|
||||
@@ -7420,6 +7421,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>ইয়োট্টা{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>{0}কিবি</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{1} প্রতি {0}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -7899,14 +7903,14 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} জ্যোতির্বিজ্ঞান একক</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName draft="contributed">ফার্লং</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ফার্লং</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ফার্লং</unitPattern>
|
||||
<displayName>ফার্লং</displayName>
|
||||
<unitPattern count="one">{0} ফার্লং</unitPattern>
|
||||
<unitPattern count="other">{0} ফার্লং</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName draft="contributed">fm</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} fth</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} fth</unitPattern>
|
||||
<displayName>fm</displayName>
|
||||
<unitPattern count="one">{0} fth</unitPattern>
|
||||
<unitPattern count="other">{0} fth</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>নটিক্যাল মাইল</displayName>
|
||||
@@ -7933,6 +7937,16 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} লাক্স</unitPattern>
|
||||
<unitPattern count="other">{0} লাক্স</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>ক্যান্ডেলা</displayName>
|
||||
<unitPattern count="one">{0} ক্যান্ডেলা</unitPattern>
|
||||
<unitPattern count="other">{0} ক্যান্ডেলা</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>লুমেন</displayName>
|
||||
<unitPattern count="one">{0} লুমেন</unitPattern>
|
||||
<unitPattern count="other">{0} লুমেন</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-metric-ton">
|
||||
<displayName>মেট্রিক টন</displayName>
|
||||
<unitPattern count="one">{0} মেট্রিক টন</unitPattern>
|
||||
@@ -7966,9 +7980,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} টন</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName draft="contributed">st</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} st</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} st</unitPattern>
|
||||
<displayName>st</displayName>
|
||||
<unitPattern count="one">{0} st</unitPattern>
|
||||
<unitPattern count="other">{0} st</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>পাউন্ড</displayName>
|
||||
@@ -8117,6 +8131,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} কেলভিন</unitPattern>
|
||||
<unitPattern count="other">{0} কেলভিন</unitPattern>
|
||||
</unit>
|
||||
<unit type="torque-pound-force-foot">
|
||||
<displayName>পাউন্ড-ফিট</displayName>
|
||||
<unitPattern count="one">{0} lbf⋅ft</unitPattern>
|
||||
<unitPattern count="other">{0} পাউন্ড-ফিট</unitPattern>
|
||||
</unit>
|
||||
<unit type="torque-newton-meter">
|
||||
<displayName>নিউটন-একক</displayName>
|
||||
<unitPattern count="one">{0} নিউটন-একক</unitPattern>
|
||||
@@ -8256,6 +8275,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="one">{0} ব্য়ারেল</unitPattern>
|
||||
<unitPattern count="other">{0} ব্যারেল</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>চিমটে</displayName>
|
||||
<unitPattern count="one">{0} চিমটে</unitPattern>
|
||||
<unitPattern count="other">{0} চিমটে</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>প্রধান দিকনির্দেশ</displayName>
|
||||
<coordinateUnitPattern type="east">{0} পূর্ব</coordinateUnitPattern>
|
||||
@@ -8325,6 +8349,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>ইঃ{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>{0}কি</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -8464,9 +8491,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} L/km</unitPattern>
|
||||
</unit>
|
||||
<unit type="consumption-liter-per-100-kilometer">
|
||||
<displayName>L/100km</displayName>
|
||||
<unitPattern count="one">{0} L/100km</unitPattern>
|
||||
<unitPattern count="other">{0} L/100km</unitPattern>
|
||||
<displayName>লি/100কিমি</displayName>
|
||||
<unitPattern count="one">{0} লি/100কিমি</unitPattern>
|
||||
<unitPattern count="other">{0} লি/100কিমি</unitPattern>
|
||||
</unit>
|
||||
<unit type="consumption-mile-per-gallon">
|
||||
<displayName>মাইল/গ্যালন</displayName>
|
||||
@@ -8771,14 +8798,14 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} au</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-furlong">
|
||||
<displayName draft="contributed">ফার্লং</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} ফার্লং</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} ফার্লং</unitPattern>
|
||||
<displayName>ফার্লং</displayName>
|
||||
<unitPattern count="one">{0} ফার্লং</unitPattern>
|
||||
<unitPattern count="other">{0} ফার্লং</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-fathom">
|
||||
<displayName draft="contributed">fm</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} fth</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} fth</unitPattern>
|
||||
<displayName>fm</displayName>
|
||||
<unitPattern count="one">{0} fth</unitPattern>
|
||||
<unitPattern count="other">{0} fth</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-nautical-mile">
|
||||
<displayName>nmi</displayName>
|
||||
@@ -8836,9 +8863,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0} tn</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-stone">
|
||||
<displayName draft="contributed">st</displayName>
|
||||
<unitPattern count="one" draft="contributed">{0} st</unitPattern>
|
||||
<unitPattern count="other" draft="contributed">{0} st</unitPattern>
|
||||
<displayName>st</displayName>
|
||||
<unitPattern count="one">{0} st</unitPattern>
|
||||
<unitPattern count="other">{0} st</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-pound">
|
||||
<displayName>পাউন্ড</displayName>
|
||||
@@ -9101,6 +9128,11 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unit type="volume-barrel">
|
||||
<displayName>ব্যারেল</displayName>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>চিমটে</displayName>
|
||||
<unitPattern count="one">{0} চিমটে</unitPattern>
|
||||
<unitPattern count="other">{0} চিমটে</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>দিকনির্দেশ</displayName>
|
||||
<coordinateUnitPattern type="east">{0}পূ</coordinateUnitPattern>
|
||||
@@ -9170,6 +9202,12 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>ই{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>{0}কি</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>Gi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0}/{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
@@ -9235,9 +9273,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<unitPattern count="other">{0}%</unitPattern>
|
||||
</unit>
|
||||
<unit type="consumption-liter-per-100-kilometer">
|
||||
<displayName>L/100km</displayName>
|
||||
<unitPattern count="one">{0} L/100km</unitPattern>
|
||||
<unitPattern count="other">{0} L/100km</unitPattern>
|
||||
<displayName>লি/100কিমি</displayName>
|
||||
<unitPattern count="one">{0} লি/100কিমি</unitPattern>
|
||||
<unitPattern count="other">{0} লি/100কিমি</unitPattern>
|
||||
</unit>
|
||||
<unit type="duration-century">
|
||||
<displayName draft="contributed">শতক</displayName>
|
||||
@@ -9632,6 +9670,8 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
|
||||
<characterLabelPattern type="scripts">লিপি — {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="one">{0} স্ট্রোক</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} স্ট্রোক</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">সাবস্ক্রিপ্ট {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">সুপারস্ক্রিপ্ট {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">কার্যকলাপ</characterLabel>
|
||||
<characterLabel type="african_scripts">আফ্রিকান লিপি</characterLabel>
|
||||
<characterLabel type="american_scripts">আমেরিকান লিপি</characterLabel>
|
||||
|
||||
@@ -103,6 +103,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<language type="chr">cherokee</language>
|
||||
<language type="chy">cheyenne</language>
|
||||
<language type="ckb">kurdeg sorani</language>
|
||||
<language type="ckb" alt="menu">kurdeg kreiz</language>
|
||||
<language type="co">korseg</language>
|
||||
<language type="cop">kopteg</language>
|
||||
<language type="cr">kri</language>
|
||||
@@ -157,6 +158,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<language type="eu">euskareg</language>
|
||||
<language type="ewo">ewondo</language>
|
||||
<language type="fa">perseg</language>
|
||||
<language type="fa_AF">dareg</language>
|
||||
<language type="fan">fang</language>
|
||||
<language type="fat">fanti</language>
|
||||
<language type="ff">fula</language>
|
||||
@@ -552,7 +554,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<language type="yue" alt="menu">sinaeg, kantoneg</language>
|
||||
<language type="za">zhuang</language>
|
||||
<language type="zap">zapoteg</language>
|
||||
<language type="zbl">Bliss</language>
|
||||
<language type="zbl">arouezioù Bliss</language>
|
||||
<language type="zea">zelandeg</language>
|
||||
<language type="zen">zenaga</language>
|
||||
<language type="zgh">tamacheg Maroko standart</language>
|
||||
@@ -993,6 +995,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<variant type="BISKE">rannyezh San Giorgio/Bila</variant>
|
||||
<variant type="BOHORIC">lizherenneg Bohorič</variant>
|
||||
<variant type="BOONT">boontling</variant>
|
||||
<variant type="BORNHOLM">rannyezh Bornholm</variant>
|
||||
<variant type="CISAUP">kizalpeg</variant>
|
||||
<variant type="COLB1945">emglev 1945 war reizhskrivadur portugaleg Brazil</variant>
|
||||
<variant type="CORNU">saozneg Kerne-Veur</variant>
|
||||
@@ -1077,6 +1080,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<key type="collation">doare rummañ</key>
|
||||
<key type="currency">moneiz</key>
|
||||
<key type="hc">kelcʼhiad eurioù</key>
|
||||
<key type="lb">stil torr linenn</key>
|
||||
<key type="ms">reizhiad vuzuliañ</key>
|
||||
<key type="numbers">niveroù</key>
|
||||
</keys>
|
||||
@@ -1099,6 +1103,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<type key="calendar" type="japanese">deiziadur japanat</type>
|
||||
<type key="calendar" type="persian">deiziadur persek</type>
|
||||
<type key="calendar" type="roc">deiziadur Republik Sina</type>
|
||||
<type key="cf" type="account">furmad unanenn jediñ</type>
|
||||
<type key="cf" type="standard">furmad moneiz standart</type>
|
||||
<type key="collation" type="big5han">urzh rummañ sinaek hengounel - Big5</type>
|
||||
<type key="collation" type="dictionary">urzh rummañ ar geriadur</type>
|
||||
@@ -1119,6 +1124,9 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<type key="hc" type="h12">reizhiad 12 eurvezh (1–12)</type>
|
||||
<type key="hc" type="h23">reizhiad 24 eurvezh (0–23)</type>
|
||||
<type key="hc" type="h24">reizhiad 24 eurvezh (1–24)</type>
|
||||
<type key="lb" type="loose">stil torr linenn lezober</type>
|
||||
<type key="lb" type="normal">stil torr linenn boas</type>
|
||||
<type key="lb" type="strict">stil torr linenn strizh</type>
|
||||
<type key="ms" type="metric">reizhiad vetrek</type>
|
||||
<type key="ms" type="uksystem">reizhiad vuzuliañ RU</type>
|
||||
<type key="ms" type="ussystem">reizhiad vuzuliañ SU</type>
|
||||
@@ -1193,7 +1201,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
</codePatterns>
|
||||
</localeDisplayNames>
|
||||
<characters>
|
||||
<exemplarCharacters>[a b {ch} {cʼh} d e ê f g h i j k l m n ñ o p r s t u ù v w x y z]</exemplarCharacters>
|
||||
<exemplarCharacters>[a b {cʼh} {ch} d e ê f g h i j k l m n ñ o p r s t u ù v w x y z]</exemplarCharacters>
|
||||
<exemplarCharacters type="auxiliary">[á à ă â å ä ã ā æ c ç é è ĕ ë ē í ì ĭ î ï ī ó ò ŏ ô ö ø ō œ q ú ŭ û ü ū ÿ]</exemplarCharacters>
|
||||
<exemplarCharacters type="index">[A B C D E F G H I J K L M N O P R S T U V W X Y Z]</exemplarCharacters>
|
||||
<exemplarCharacters type="numbers">[ \- ‑ , % ‰ + 0 1 2 3 4 5 6 7 8 9]</exemplarCharacters>
|
||||
@@ -1424,18 +1432,18 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<months>
|
||||
<monthContext type="format">
|
||||
<monthWidth type="abbreviated">
|
||||
<month type="1">kentañ miz</month>
|
||||
<month type="2">eil miz</month>
|
||||
<month type="3">trede miz</month>
|
||||
<month type="4">pevare miz</month>
|
||||
<month type="5">pempvet miz</month>
|
||||
<month type="6">cʼhwecʼhvet miz</month>
|
||||
<month type="7">seizhvet miz</month>
|
||||
<month type="8">eizhvet miz</month>
|
||||
<month type="9">navet miz</month>
|
||||
<month type="10">dekvet miz</month>
|
||||
<month type="11">unnekvet miz</month>
|
||||
<month type="12">daouzekvet miz</month>
|
||||
<month type="1">miz 1</month>
|
||||
<month type="2">miz 2</month>
|
||||
<month type="3">miz 3</month>
|
||||
<month type="4">miz 4</month>
|
||||
<month type="5">miz 5</month>
|
||||
<month type="6">miz 6</month>
|
||||
<month type="7">miz 7</month>
|
||||
<month type="8">miz 8</month>
|
||||
<month type="9">miz 9</month>
|
||||
<month type="10">miz 10</month>
|
||||
<month type="11">miz 11</month>
|
||||
<month type="12">miz 12</month>
|
||||
</monthWidth>
|
||||
<monthWidth type="narrow">
|
||||
<month type="1">1</month>
|
||||
@@ -1468,18 +1476,18 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
</monthContext>
|
||||
<monthContext type="stand-alone">
|
||||
<monthWidth type="abbreviated">
|
||||
<month type="1">kentañ miz</month>
|
||||
<month type="2">eil miz</month>
|
||||
<month type="3">trede miz</month>
|
||||
<month type="4">pevare miz</month>
|
||||
<month type="5">pempvet miz</month>
|
||||
<month type="6">cʼhwecʼhvet miz</month>
|
||||
<month type="7">seizhvet miz</month>
|
||||
<month type="8">eizhvet miz</month>
|
||||
<month type="9">navet miz</month>
|
||||
<month type="10">dekvet miz</month>
|
||||
<month type="11">unnekvet miz</month>
|
||||
<month type="12">daouzekvet miz</month>
|
||||
<month type="1">miz 1</month>
|
||||
<month type="2">miz 2</month>
|
||||
<month type="3">miz 3</month>
|
||||
<month type="4">miz 4</month>
|
||||
<month type="5">miz 5</month>
|
||||
<month type="6">miz 6</month>
|
||||
<month type="7">miz 7</month>
|
||||
<month type="8">miz 8</month>
|
||||
<month type="9">miz 9</month>
|
||||
<month type="10">miz 10</month>
|
||||
<month type="11">miz 11</month>
|
||||
<month type="12">miz 12</month>
|
||||
</monthWidth>
|
||||
<monthWidth type="narrow">
|
||||
<month type="1">1</month>
|
||||
@@ -6777,6 +6785,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
</field>
|
||||
<field type="minute">
|
||||
<displayName>munut</displayName>
|
||||
<relative type="0">ar munut-mañ</relative>
|
||||
<relativeTime type="future">
|
||||
<relativeTimePattern count="one">a-benn {0} munut</relativeTimePattern>
|
||||
<relativeTimePattern count="two">a-benn {0} vunut</relativeTimePattern>
|
||||
@@ -8012,6 +8021,11 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<daylight>eur hañv Europa ar Reter</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Europe_Further_Eastern">
|
||||
<long>
|
||||
<standard>eur Kaliningrad</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Europe_Western">
|
||||
<long>
|
||||
<generic>eur Europa ar Cʼhornôg</generic>
|
||||
@@ -8099,6 +8113,13 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<standard>eur Guyana</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Hawaii_Aleutian">
|
||||
<long>
|
||||
<generic>eur Hawaii hag an Aleouted</generic>
|
||||
<standard>eur cʼhoañv Hawaii hag an Aleouted</standard>
|
||||
<daylight>eur hañv Hawaii hag an Aleouted</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Hong_Kong">
|
||||
<long>
|
||||
<generic>eur Hong Kong</generic>
|
||||
@@ -8215,6 +8236,13 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<standard>eur Line Islands</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Lord_Howe">
|
||||
<long>
|
||||
<generic>eur Lord Howe</generic>
|
||||
<standard>eur cʼhoañv Lord Howe</standard>
|
||||
<daylight>eur hañv Lord Howe</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Macau">
|
||||
<long>
|
||||
<generic>eur Macau</generic>
|
||||
@@ -8273,6 +8301,13 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<daylight>eur hañv Gwalarn Mecʼhiko</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Mexico_Pacific">
|
||||
<long>
|
||||
<generic>eur an Habask mecʼhikan</generic>
|
||||
<standard>eur cʼhoañv an Habask mecʼhikan</standard>
|
||||
<daylight>eur hañv an Habask mecʼhikan</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Mongolia">
|
||||
<long>
|
||||
<generic>eur Ulaanbaatar</generic>
|
||||
@@ -8330,9 +8365,9 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
</metazone>
|
||||
<metazone type="Norfolk">
|
||||
<long>
|
||||
<generic draft="contributed">eur Enez Norfolk</generic>
|
||||
<standard draft="contributed">eur cʼhoañv Enez Norfolk</standard>
|
||||
<daylight draft="contributed">eur hañv Enez Norfolk</daylight>
|
||||
<generic>eur Enez Norfolk</generic>
|
||||
<standard>eur cʼhoañv Enez Norfolk</standard>
|
||||
<daylight>eur hañv Enez Norfolk</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Noronha">
|
||||
@@ -8342,6 +8377,11 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<daylight>eur hañv Fernando de Noronha</daylight>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="North_Mariana">
|
||||
<long>
|
||||
<standard>eur Mariana an Norzh</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Novosibirsk">
|
||||
<long>
|
||||
<generic>eur Novosibirsk</generic>
|
||||
@@ -8411,6 +8451,11 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<standard>eur Pitcairn</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Ponape">
|
||||
<long>
|
||||
<standard>eur Pohnpei</standard>
|
||||
</long>
|
||||
</metazone>
|
||||
<metazone type="Pyongyang">
|
||||
<long>
|
||||
<standard>eur Pʼyongyang</standard>
|
||||
@@ -8600,6 +8645,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<percentSign>٪</percentSign>
|
||||
<plusSign>+</plusSign>
|
||||
<minusSign>-</minusSign>
|
||||
<approximatelySign>~</approximatelySign>
|
||||
<exponential>اس</exponential>
|
||||
<superscriptingExponent>×</superscriptingExponent>
|
||||
<perMille>؉</perMille>
|
||||
@@ -8682,6 +8728,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<percentSign>%</percentSign>
|
||||
<plusSign>+</plusSign>
|
||||
<minusSign>-</minusSign>
|
||||
<approximatelySign>~</approximatelySign>
|
||||
<exponential>E</exponential>
|
||||
<superscriptingExponent>×</superscriptingExponent>
|
||||
<perMille>‰</perMille>
|
||||
@@ -9524,6 +9571,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<displayName count="other">peso Chile</displayName>
|
||||
<symbol draft="contributed">CLP</symbol>
|
||||
</currency>
|
||||
<currency type="CNH">
|
||||
<displayName>yuan Sina (diavaez)</displayName>
|
||||
<displayName count="one">yuan Sina (diavaez)</displayName>
|
||||
<displayName count="two">yuan Sina (diavaez)</displayName>
|
||||
<displayName count="few">yuan Sina (diavaez)</displayName>
|
||||
<displayName count="many">a yuanoù Sina (diavaez)</displayName>
|
||||
<displayName count="other">yuan Sina (diavaez)</displayName>
|
||||
</currency>
|
||||
<currency type="CNX">
|
||||
<displayName>dollar Bank poblel Sina</displayName>
|
||||
<displayName count="one">dollar Bank poblel Sina</displayName>
|
||||
@@ -11451,6 +11506,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<displayName count="other">unanenn voneiz amprouiñ</displayName>
|
||||
<symbol draft="contributed">XTS</symbol>
|
||||
</currency>
|
||||
<currency type="XUA">
|
||||
<displayName>unanenn jediñ BAD</displayName>
|
||||
<displayName count="one">unanenn jediñ BAD</displayName>
|
||||
<displayName count="two">unanenn jediñ BAD</displayName>
|
||||
<displayName count="few">unanenn jediñ BAD</displayName>
|
||||
<displayName count="many">a unanennoù jediñ BAD</displayName>
|
||||
<displayName count="other">unanenn jediñ BAD</displayName>
|
||||
</currency>
|
||||
<currency type="XXX">
|
||||
<displayName>moneiz dianav</displayName>
|
||||
<displayName count="one">(moneiz dianav)</displayName>
|
||||
@@ -11583,17 +11646,123 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<pluralMinimalPairs count="few">{0} cʼhi-error</pluralMinimalPairs>
|
||||
<pluralMinimalPairs count="many">{0} a chas</pluralMinimalPairs>
|
||||
<pluralMinimalPairs count="other">{0} ki</pluralMinimalPairs>
|
||||
<ordinalMinimalPairs ordinal="other" draft="contributed">{0}vet</ordinalMinimalPairs>
|
||||
<ordinalMinimalPairs ordinal="other">{0}vet</ordinalMinimalPairs>
|
||||
</minimalPairs>
|
||||
</numbers>
|
||||
<units>
|
||||
<unitLength type="long">
|
||||
<compoundUnit type="10p-1">
|
||||
<unitPrefixPattern>deki{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-2">
|
||||
<unitPrefixPattern>kenti{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-3">
|
||||
<unitPrefixPattern>mili{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-6">
|
||||
<unitPrefixPattern>mikro{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-9">
|
||||
<unitPrefixPattern>nano{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-12">
|
||||
<unitPrefixPattern>piko{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-15">
|
||||
<unitPrefixPattern>femto{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-18">
|
||||
<unitPrefixPattern>ato{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-21">
|
||||
<unitPrefixPattern>zepto{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p-24">
|
||||
<unitPrefixPattern>yokto{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p1">
|
||||
<unitPrefixPattern>deka{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p2">
|
||||
<unitPrefixPattern>hekto{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p3">
|
||||
<unitPrefixPattern>kilo{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p6">
|
||||
<unitPrefixPattern>mega{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p9">
|
||||
<unitPrefixPattern>giga{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p12">
|
||||
<unitPrefixPattern>tera{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p15">
|
||||
<unitPrefixPattern>peta{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p18">
|
||||
<unitPrefixPattern>eksa{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p21">
|
||||
<unitPrefixPattern>zeta{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="10p24">
|
||||
<unitPrefixPattern>yota{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p1">
|
||||
<unitPrefixPattern>kibi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p2">
|
||||
<unitPrefixPattern>mebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p3">
|
||||
<unitPrefixPattern>gibi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p4">
|
||||
<unitPrefixPattern>tebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p5">
|
||||
<unitPrefixPattern>pebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p6">
|
||||
<unitPrefixPattern>eksbi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p7">
|
||||
<unitPrefixPattern>zebi{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="1024p8">
|
||||
<unitPrefixPattern>yobe{0}</unitPrefixPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="per">
|
||||
<compoundUnitPattern>{0} dre {1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power2">
|
||||
<compoundUnitPattern1 count="one">{0} karrez</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="two">{0} karrez</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">{0} karrez</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">{0} karrez</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">{0} karrez</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="power3">
|
||||
<compoundUnitPattern1 count="one">{0} diñs</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="two">{0} diñs</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="few">{0} diñs</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="many">{0} diñs</compoundUnitPattern1>
|
||||
<compoundUnitPattern1 count="other">{0} diñs</compoundUnitPattern1>
|
||||
</compoundUnit>
|
||||
<compoundUnit type="times">
|
||||
<compoundUnitPattern>{0}-{1}</compoundUnitPattern>
|
||||
</compoundUnit>
|
||||
<unit type="acceleration-g-force">
|
||||
<displayName>buanadur g</displayName>
|
||||
<unitPattern count="one">{0} buanadur g</unitPattern>
|
||||
<unitPattern count="two">{0} vuanadur g</unitPattern>
|
||||
<unitPattern count="few">{0} buanadur g</unitPattern>
|
||||
<unitPattern count="many">{0} a vuanadurioù g</unitPattern>
|
||||
<unitPattern count="other">{0} buanadur g</unitPattern>
|
||||
</unit>
|
||||
<unit type="acceleration-meter-per-square-second">
|
||||
<displayName>metroù dre eilenn garrez</displayName>
|
||||
<unitPattern count="one">{0} metr dre eilenn garrez</unitPattern>
|
||||
@@ -12134,6 +12303,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a hertzoù</unitPattern>
|
||||
<unitPattern count="other">{0} hertz</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-em">
|
||||
<displayName>esaouenn em</displayName>
|
||||
<unitPattern count="one">{0} esaouenn em</unitPattern>
|
||||
<unitPattern count="two">{0} esaouenn em</unitPattern>
|
||||
<unitPattern count="few">{0} esaouenn em</unitPattern>
|
||||
<unitPattern count="many">{0} a esaouennoù em</unitPattern>
|
||||
<unitPattern count="other">{0} esaouenn em</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-pixel">
|
||||
<displayName>pikselioù</displayName>
|
||||
<unitPattern count="one">{0} piksel</unitPattern>
|
||||
@@ -12182,6 +12359,22 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a bikoù dre veutad</unitPattern>
|
||||
<unitPattern count="other">{0} pik dre veutad</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>pik</displayName>
|
||||
<unitPattern count="one">{0} pik</unitPattern>
|
||||
<unitPattern count="two">{0} bik</unitPattern>
|
||||
<unitPattern count="few">{0} fik</unitPattern>
|
||||
<unitPattern count="many">{0} a bikoù</unitPattern>
|
||||
<unitPattern count="other">{0} pik</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<displayName>skin douar</displayName>
|
||||
<unitPattern count="one">{0} skin douar</unitPattern>
|
||||
<unitPattern count="two">{0} skin douar</unitPattern>
|
||||
<unitPattern count="few">{0} skin douar</unitPattern>
|
||||
<unitPattern count="many">{0} a skinoù douar</unitPattern>
|
||||
<unitPattern count="other">{0} skin douar</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>kilometroù</displayName>
|
||||
<unitPattern count="one">{0} c'hilometr</unitPattern>
|
||||
@@ -12363,6 +12556,22 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a luksoù</unitPattern>
|
||||
<unitPattern count="other">{0} luks</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<displayName>kandelaoù</displayName>
|
||||
<unitPattern count="one">{0} c'handela</unitPattern>
|
||||
<unitPattern count="two">{0} gandela</unitPattern>
|
||||
<unitPattern count="few">{0} c'handela</unitPattern>
|
||||
<unitPattern count="many">{0} a gandelaoù</unitPattern>
|
||||
<unitPattern count="other">{0} kandela</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<displayName>lumenoù</displayName>
|
||||
<unitPattern count="one">{0} lumen</unitPattern>
|
||||
<unitPattern count="two">{0} lumen</unitPattern>
|
||||
<unitPattern count="few">{0} lumen</unitPattern>
|
||||
<unitPattern count="many">{0} a lumenoù</unitPattern>
|
||||
<unitPattern count="other">{0} lumen</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-metric-ton">
|
||||
<displayName>tonennoù metrek</displayName>
|
||||
<unitPattern count="one">{0} donenn vetrek</unitPattern>
|
||||
@@ -12479,6 +12688,13 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a dolzadoù heol</unitPattern>
|
||||
<unitPattern count="other">{0} tolzad heol</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<unitPattern count="one">{0} greunad</unitPattern>
|
||||
<unitPattern count="two">{0} c'hreunad</unitPattern>
|
||||
<unitPattern count="few">{0} greunad</unitPattern>
|
||||
<unitPattern count="many">{0} a c'hreunadoù</unitPattern>
|
||||
<unitPattern count="other">{0} greunad</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>gigawattoù</displayName>
|
||||
<unitPattern count="one">{0} gigawatt</unitPattern>
|
||||
@@ -12527,6 +12743,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a varc'hadoù nerzh</unitPattern>
|
||||
<unitPattern count="other">{0} marc'had nerzh</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-millimeter-ofhg">
|
||||
<displayName>milimetradoù merkur</displayName>
|
||||
<unitPattern count="one">{0} milimetrad merkur</unitPattern>
|
||||
<unitPattern count="two">{0} vilimetrad merkur</unitPattern>
|
||||
<unitPattern count="few">{0} milimetrad merkur</unitPattern>
|
||||
<unitPattern count="many">{0} a vilimetradoù merkur</unitPattern>
|
||||
<unitPattern count="other">{0} milimetrad merkur</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-pound-force-per-square-inch">
|
||||
<displayName>lurioù dre veutad karrez</displayName>
|
||||
<unitPattern count="one">{0} lur dre veutad karrez</unitPattern>
|
||||
@@ -12535,6 +12759,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a lurioù dre veutad karrez</unitPattern>
|
||||
<unitPattern count="other">{0} lur dre veutad karrez</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-inch-ofhg">
|
||||
<displayName>meutadoù merkur</displayName>
|
||||
<unitPattern count="one">{0} meutad merkur</unitPattern>
|
||||
<unitPattern count="two">{0} veutad merkur</unitPattern>
|
||||
<unitPattern count="few">{0} meutad merkur</unitPattern>
|
||||
<unitPattern count="many">{0} a veutadoù merkur</unitPattern>
|
||||
<unitPattern count="other">{0} meutad merkur</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-bar">
|
||||
<displayName>baroù</displayName>
|
||||
<unitPattern count="one">{0} bar</unitPattern>
|
||||
@@ -12551,6 +12783,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a vilibaroù</unitPattern>
|
||||
<unitPattern count="other">{0} milibar</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-atmosphere">
|
||||
<displayName>atmosfer</displayName>
|
||||
<unitPattern count="one">{0} atmosfer</unitPattern>
|
||||
<unitPattern count="two">{0} atmosfer</unitPattern>
|
||||
<unitPattern count="few">{0} atmosfer</unitPattern>
|
||||
<unitPattern count="many">{0} a atmosferoù</unitPattern>
|
||||
<unitPattern count="other">{0} atmosfer</unitPattern>
|
||||
</unit>
|
||||
<unit type="pressure-pascal">
|
||||
<displayName>paskaloù</displayName>
|
||||
<unitPattern count="one">{0} paskal</unitPattern>
|
||||
@@ -12876,7 +13116,64 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} a varilhoù</unitPattern>
|
||||
<unitPattern count="other">{0} barilh</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>loaiad dibenn-pred</displayName>
|
||||
<unitPattern count="one">{0} loaiad dibenn-pred</unitPattern>
|
||||
<unitPattern count="two">{0} loaiad dibenn-pred</unitPattern>
|
||||
<unitPattern count="few">{0} loaiad dibenn-pred</unitPattern>
|
||||
<unitPattern count="many">{0} a loaiadoù dibenn-pred</unitPattern>
|
||||
<unitPattern count="other">{0} loaiad dibenn-pred</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>loaiad dibenn-pred impalaerel</displayName>
|
||||
<unitPattern count="one">{0} loaiad dibenn-pred impalaerel</unitPattern>
|
||||
<unitPattern count="two">{0} loaiad dibenn-pred impalaerel</unitPattern>
|
||||
<unitPattern count="few">{0} loaiad dibenn-pred impalaerel</unitPattern>
|
||||
<unitPattern count="many">{0} a loaiadoù dibenn-pred impalaerel</unitPattern>
|
||||
<unitPattern count="other">{0} loaiad dibenn-pred impalaerel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>takenn</displayName>
|
||||
<unitPattern count="one">{0} dakenn</unitPattern>
|
||||
<unitPattern count="two">{0} dakenn</unitPattern>
|
||||
<unitPattern count="few">{0} zakenn</unitPattern>
|
||||
<unitPattern count="many">{0} a dakennoù</unitPattern>
|
||||
<unitPattern count="other">{0} takenn</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>drakm liñvel</displayName>
|
||||
<unitPattern count="one">{0} drakm liñvel</unitPattern>
|
||||
<unitPattern count="two">{0} zrakm liñvel</unitPattern>
|
||||
<unitPattern count="few">{0} drakm liñvel</unitPattern>
|
||||
<unitPattern count="many">{0} a zrakmoù liñvel</unitPattern>
|
||||
<unitPattern count="other">{0} drakm liñvel</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>shot</displayName>
|
||||
<unitPattern count="one">{0} shot</unitPattern>
|
||||
<unitPattern count="two">{0} shot</unitPattern>
|
||||
<unitPattern count="few">{0} shot</unitPattern>
|
||||
<unitPattern count="many">{0} a shotoù</unitPattern>
|
||||
<unitPattern count="other">{0} shot</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>piñsad</displayName>
|
||||
<unitPattern count="one">{0} piñsad</unitPattern>
|
||||
<unitPattern count="two">{0} biñsad</unitPattern>
|
||||
<unitPattern count="few">{0} fiñsad</unitPattern>
|
||||
<unitPattern count="many">{0} a biñsadoù</unitPattern>
|
||||
<unitPattern count="other">{0} piñsad</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>kardoù impalaerel</displayName>
|
||||
<unitPattern count="one">{0} c'hard impalaerel</unitPattern>
|
||||
<unitPattern count="two">{0} gard impalaerel</unitPattern>
|
||||
<unitPattern count="few">{0} c'hard impalaerel</unitPattern>
|
||||
<unitPattern count="many">{0} a gardoù impalaerel</unitPattern>
|
||||
<unitPattern count="other">{0} kard impalaerel</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>durcʼhadur</displayName>
|
||||
<coordinateUnitPattern type="east">{0} Reter</coordinateUnitPattern>
|
||||
<coordinateUnitPattern type="north">{0} Norzh</coordinateUnitPattern>
|
||||
<coordinateUnitPattern type="south">{0} Su</coordinateUnitPattern>
|
||||
@@ -13443,6 +13740,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} pdm</unitPattern>
|
||||
<unitPattern count="other">{0} pdm</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>pik</displayName>
|
||||
<unitPattern count="one">{0} pik</unitPattern>
|
||||
<unitPattern count="two">{0} pik</unitPattern>
|
||||
<unitPattern count="few">{0} pik</unitPattern>
|
||||
<unitPattern count="many">{0} pik</unitPattern>
|
||||
<unitPattern count="other">{0} pik</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>km</displayName>
|
||||
<unitPattern count="one">{0} km</unitPattern>
|
||||
@@ -13686,6 +13991,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} CD</unitPattern>
|
||||
<unitPattern count="other">{0} CD</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>gr</displayName>
|
||||
<unitPattern count="one">{0} gr</unitPattern>
|
||||
<unitPattern count="two">{0} gr</unitPattern>
|
||||
<unitPattern count="few">{0} gr</unitPattern>
|
||||
<unitPattern count="many">{0} gr</unitPattern>
|
||||
<unitPattern count="other">{0} gr</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<displayName>GW</displayName>
|
||||
<unitPattern count="one">{0} GW</unitPattern>
|
||||
@@ -14027,7 +14340,64 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0} l.-g.</unitPattern>
|
||||
<unitPattern count="other">{0} l.-g.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>l.d.-b.</displayName>
|
||||
<unitPattern count="one">{0} l.d.-b.</unitPattern>
|
||||
<unitPattern count="two">{0} l.d.-b.</unitPattern>
|
||||
<unitPattern count="few">{0} l.d.-b.</unitPattern>
|
||||
<unitPattern count="many">{0} l.d.-b.</unitPattern>
|
||||
<unitPattern count="other">{0} l.d.-b.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>l.d.-b. imp.</displayName>
|
||||
<unitPattern count="one">{0} l.d.-b. imp.</unitPattern>
|
||||
<unitPattern count="two">{0} l.d.-b. imp.</unitPattern>
|
||||
<unitPattern count="few">{0} l.d.-b. imp.</unitPattern>
|
||||
<unitPattern count="many">{0} l.d.-b. imp.</unitPattern>
|
||||
<unitPattern count="other">{0} l.d.-b. imp.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>gt</displayName>
|
||||
<unitPattern count="one">{0} gt</unitPattern>
|
||||
<unitPattern count="two">{0} gt</unitPattern>
|
||||
<unitPattern count="few">{0} gt</unitPattern>
|
||||
<unitPattern count="many">{0} gt</unitPattern>
|
||||
<unitPattern count="other">{0} gt</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>fl dr</displayName>
|
||||
<unitPattern count="one">{0} fl dr</unitPattern>
|
||||
<unitPattern count="two">{0} fl dr</unitPattern>
|
||||
<unitPattern count="few">{0} fl dr</unitPattern>
|
||||
<unitPattern count="many">{0} fl dr</unitPattern>
|
||||
<unitPattern count="other">{0} fl dr</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>shot</displayName>
|
||||
<unitPattern count="one">{0} shot</unitPattern>
|
||||
<unitPattern count="two">{0} shot</unitPattern>
|
||||
<unitPattern count="few">{0} shot</unitPattern>
|
||||
<unitPattern count="many">{0} shot</unitPattern>
|
||||
<unitPattern count="other">{0} shot</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>piñs</displayName>
|
||||
<unitPattern count="one">{0} piñs</unitPattern>
|
||||
<unitPattern count="two">{0} piñs</unitPattern>
|
||||
<unitPattern count="few">{0} piñs</unitPattern>
|
||||
<unitPattern count="many">{0} piñs</unitPattern>
|
||||
<unitPattern count="other">{0} piñs</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>qt Imp.</displayName>
|
||||
<unitPattern count="one">{0} qt Imp.</unitPattern>
|
||||
<unitPattern count="two">{0} qt Imp.</unitPattern>
|
||||
<unitPattern count="few">{0} qt Imp.</unitPattern>
|
||||
<unitPattern count="many">{0} qt Imp.</unitPattern>
|
||||
<unitPattern count="other">{0} qt Imp.</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>durcʼhadur</displayName>
|
||||
<coordinateUnitPattern type="east">{0} R</coordinateUnitPattern>
|
||||
<coordinateUnitPattern type="north">{0} N</coordinateUnitPattern>
|
||||
<coordinateUnitPattern type="south">{0} S</coordinateUnitPattern>
|
||||
@@ -14202,6 +14572,13 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0}mmol/l</unitPattern>
|
||||
<unitPattern count="other">{0}mmol/l</unitPattern>
|
||||
</unit>
|
||||
<unit type="concentr-permillion">
|
||||
<unitPattern count="one">{0}ppm</unitPattern>
|
||||
<unitPattern count="two">{0}ppm</unitPattern>
|
||||
<unitPattern count="few">{0}ppm</unitPattern>
|
||||
<unitPattern count="many">{0}ppm</unitPattern>
|
||||
<unitPattern count="other">{0}ppm</unitPattern>
|
||||
</unit>
|
||||
<unit type="concentr-percent">
|
||||
<unitPattern count="one">{0}%</unitPattern>
|
||||
<unitPattern count="two">{0}%</unitPattern>
|
||||
@@ -14635,6 +15012,21 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0}pdm</unitPattern>
|
||||
<unitPattern count="other">{0}pdm</unitPattern>
|
||||
</unit>
|
||||
<unit type="graphics-dot">
|
||||
<displayName>pik</displayName>
|
||||
<unitPattern count="one">{0}pik</unitPattern>
|
||||
<unitPattern count="two">{0}pik</unitPattern>
|
||||
<unitPattern count="few">{0}pik</unitPattern>
|
||||
<unitPattern count="many">{0}pik</unitPattern>
|
||||
<unitPattern count="other">{0}pik</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-earth-radius">
|
||||
<unitPattern count="one">{0}R⊕</unitPattern>
|
||||
<unitPattern count="two">{0}R⊕</unitPattern>
|
||||
<unitPattern count="few">{0}R⊕</unitPattern>
|
||||
<unitPattern count="many">{0}R⊕</unitPattern>
|
||||
<unitPattern count="other">{0}R⊕</unitPattern>
|
||||
</unit>
|
||||
<unit type="length-kilometer">
|
||||
<displayName>km</displayName>
|
||||
<unitPattern count="one">{0}km</unitPattern>
|
||||
@@ -14813,6 +15205,20 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0}lx</unitPattern>
|
||||
<unitPattern count="other">{0}lx</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-candela">
|
||||
<unitPattern count="one">{0}cd</unitPattern>
|
||||
<unitPattern count="two">{0}cd</unitPattern>
|
||||
<unitPattern count="few">{0}cd</unitPattern>
|
||||
<unitPattern count="many">{0}cd</unitPattern>
|
||||
<unitPattern count="other">{0}cd</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-lumen">
|
||||
<unitPattern count="one">{0}lm</unitPattern>
|
||||
<unitPattern count="two">{0}lm</unitPattern>
|
||||
<unitPattern count="few">{0}lm</unitPattern>
|
||||
<unitPattern count="many">{0}lm</unitPattern>
|
||||
<unitPattern count="other">{0}lm</unitPattern>
|
||||
</unit>
|
||||
<unit type="light-solar-luminosity">
|
||||
<unitPattern count="one">{0}L☉</unitPattern>
|
||||
<unitPattern count="two">{0}L☉</unitPattern>
|
||||
@@ -14931,6 +15337,14 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0}M☉</unitPattern>
|
||||
<unitPattern count="other">{0}M☉</unitPattern>
|
||||
</unit>
|
||||
<unit type="mass-grain">
|
||||
<displayName>gr</displayName>
|
||||
<unitPattern count="one">{0}gr</unitPattern>
|
||||
<unitPattern count="two">{0}gr</unitPattern>
|
||||
<unitPattern count="few">{0}gr</unitPattern>
|
||||
<unitPattern count="many">{0}gr</unitPattern>
|
||||
<unitPattern count="other">{0}gr</unitPattern>
|
||||
</unit>
|
||||
<unit type="power-gigawatt">
|
||||
<unitPattern count="one">{0}GW</unitPattern>
|
||||
<unitPattern count="two">{0}GW</unitPattern>
|
||||
@@ -15344,7 +15758,64 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<unitPattern count="many">{0}bbl</unitPattern>
|
||||
<unitPattern count="other">{0}bbl</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon">
|
||||
<displayName>l.d.-b.</displayName>
|
||||
<unitPattern count="one">{0}l.d.-b.</unitPattern>
|
||||
<unitPattern count="two">{0}l.d.-b.</unitPattern>
|
||||
<unitPattern count="few">{0}l.d.-b.</unitPattern>
|
||||
<unitPattern count="many">{0}l.d.-b.</unitPattern>
|
||||
<unitPattern count="other">{0}l.d.-b.</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dessert-spoon-imperial">
|
||||
<displayName>ldb Imp</displayName>
|
||||
<unitPattern count="one">{0}ldb Imp</unitPattern>
|
||||
<unitPattern count="two">{0}ldb Imp</unitPattern>
|
||||
<unitPattern count="few">{0}ldb Imp</unitPattern>
|
||||
<unitPattern count="many">{0}ldb Imp</unitPattern>
|
||||
<unitPattern count="other">{0}ldb Imp</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-drop">
|
||||
<displayName>gt</displayName>
|
||||
<unitPattern count="one">{0}gt</unitPattern>
|
||||
<unitPattern count="two">{0}gt</unitPattern>
|
||||
<unitPattern count="few">{0}gt</unitPattern>
|
||||
<unitPattern count="many">{0}gt</unitPattern>
|
||||
<unitPattern count="other">{0}gt</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-dram">
|
||||
<displayName>fl dr</displayName>
|
||||
<unitPattern count="one">{0}fl dr</unitPattern>
|
||||
<unitPattern count="two">{0}fl dr</unitPattern>
|
||||
<unitPattern count="few">{0}fl dr</unitPattern>
|
||||
<unitPattern count="many">{0}fl dr</unitPattern>
|
||||
<unitPattern count="other">{0}fl dr</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-jigger">
|
||||
<displayName>shot</displayName>
|
||||
<unitPattern count="one">{0}shot</unitPattern>
|
||||
<unitPattern count="two">{0}shot</unitPattern>
|
||||
<unitPattern count="few">{0}shot</unitPattern>
|
||||
<unitPattern count="many">{0}shot</unitPattern>
|
||||
<unitPattern count="other">{0}shot</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-pinch">
|
||||
<displayName>piñs</displayName>
|
||||
<unitPattern count="one">{0}piñs</unitPattern>
|
||||
<unitPattern count="two">{0}piñs</unitPattern>
|
||||
<unitPattern count="few">{0}piñs</unitPattern>
|
||||
<unitPattern count="many">{0}piñs</unitPattern>
|
||||
<unitPattern count="other">{0}piñs</unitPattern>
|
||||
</unit>
|
||||
<unit type="volume-quart-imperial">
|
||||
<displayName>qt Imp.</displayName>
|
||||
<unitPattern count="one">{0}qt Imp.</unitPattern>
|
||||
<unitPattern count="two">{0}qt Imp.</unitPattern>
|
||||
<unitPattern count="few">{0}qt Imp.</unitPattern>
|
||||
<unitPattern count="many">{0}qt Imp.</unitPattern>
|
||||
<unitPattern count="other">{0}qt Imp.</unitPattern>
|
||||
</unit>
|
||||
<coordinateUnit>
|
||||
<displayName>durcʼhadur</displayName>
|
||||
<coordinateUnitPattern type="east">{0}R</coordinateUnitPattern>
|
||||
<coordinateUnitPattern type="north">{0}N</coordinateUnitPattern>
|
||||
<coordinateUnitPattern type="south">{0}S</coordinateUnitPattern>
|
||||
@@ -15410,12 +15881,22 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
</messages>
|
||||
</posix>
|
||||
<characterLabels>
|
||||
<characterLabelPattern type="all">{0} — holl</characterLabelPattern>
|
||||
<characterLabelPattern type="category-list">{0} : {1}</characterLabelPattern>
|
||||
<characterLabelPattern type="compatibility">{0} — kenglotusted</characterLabelPattern>
|
||||
<characterLabelPattern type="enclosed">{0} — kelcʼhiet</characterLabelPattern>
|
||||
<characterLabelPattern type="extended">{0} — astennet</characterLabelPattern>
|
||||
<characterLabelPattern type="historic">{0} — istorel</characterLabelPattern>
|
||||
<characterLabelPattern type="miscellaneous">{0} — liesseurt</characterLabelPattern>
|
||||
<characterLabelPattern type="other">{0} — all</characterLabelPattern>
|
||||
<characterLabelPattern type="scripts">skriturioù — {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="one">{0} linenn</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="two">{0} linenn</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="few">{0} linenn</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="many">{0} a linennoù</characterLabelPattern>
|
||||
<characterLabelPattern type="strokes" count="other">{0} linenn</characterLabelPattern>
|
||||
<characterLabelPattern type="subscript">isskridad {0}</characterLabelPattern>
|
||||
<characterLabelPattern type="superscript">usskridad {0}</characterLabelPattern>
|
||||
<characterLabel type="activities">obererezh</characterLabel>
|
||||
<characterLabel type="african_scripts">skritur Afrika</characterLabel>
|
||||
<characterLabel type="american_scripts">skritur Amerika</characterLabel>
|
||||
@@ -15423,40 +15904,68 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<characterLabel type="animals_nature">loened pe natur</characterLabel>
|
||||
<characterLabel type="arrows">biroù</characterLabel>
|
||||
<characterLabel type="body">korf</characterLabel>
|
||||
<characterLabel type="box_drawing">rizennoù</characterLabel>
|
||||
<characterLabel type="braille">skritur Braille</characterLabel>
|
||||
<characterLabel type="building">savadur</characterLabel>
|
||||
<characterLabel type="bullets_stars">krug pe steredenn</characterLabel>
|
||||
<characterLabel type="consonantal_jamo">kensonennoù jamo</characterLabel>
|
||||
<characterLabel type="currency_symbols">arouez moneiz</characterLabel>
|
||||
<characterLabel type="dash_connector">barrennig pe kennasker</characterLabel>
|
||||
<characterLabel type="digits">sifr</characterLabel>
|
||||
<characterLabel type="dingbats">arouez Dingbat</characterLabel>
|
||||
<characterLabel type="divination_symbols">arouez divinouriezh</characterLabel>
|
||||
<characterLabel type="east_asian_scripts">skriturioù Azia ar Reter</characterLabel>
|
||||
<characterLabel type="european_scripts">skritur europat</characterLabel>
|
||||
<characterLabel type="female">benel</characterLabel>
|
||||
<characterLabel type="flag">banniel</characterLabel>
|
||||
<characterLabel type="flags">bannieloù</characterLabel>
|
||||
<characterLabel type="food_drink">boued hag evaj</characterLabel>
|
||||
<characterLabel type="format">furmad</characterLabel>
|
||||
<characterLabel type="format_whitespace">furmad hag esaouennoù</characterLabel>
|
||||
<characterLabel type="han_characters">arouezennoù han</characterLabel>
|
||||
<characterLabel type="han_radicals">gwrizienn han</characterLabel>
|
||||
<characterLabel type="hanja">arouezenn hanja</characterLabel>
|
||||
<characterLabel type="hanzi_simplified">arouezennoù han (eeunaet)</characterLabel>
|
||||
<characterLabel type="hanzi_traditional">arouezennoù han (hengounel)</characterLabel>
|
||||
<characterLabel type="heart">kalon</characterLabel>
|
||||
<characterLabel type="historic_scripts">skritur istorel</characterLabel>
|
||||
<characterLabel type="male">gourel</characterLabel>
|
||||
<characterLabel type="math_symbols">arouez matematikel</characterLabel>
|
||||
<characterLabel type="middle_eastern_scripts">skriturioù Reter-Kreiz</characterLabel>
|
||||
<characterLabel type="miscellaneous">liesseurt</characterLabel>
|
||||
<characterLabel type="modern_scripts">skritur modern</characterLabel>
|
||||
<characterLabel type="modifier">kemmañ</characterLabel>
|
||||
<characterLabel type="nature">natur</characterLabel>
|
||||
<characterLabel type="numbers">niveroù</characterLabel>
|
||||
<characterLabel type="objects">tra</characterLabel>
|
||||
<characterLabel type="other">all</characterLabel>
|
||||
<characterLabel type="person">den</characterLabel>
|
||||
<characterLabel type="phonetic_alphabet">lizherenneg soniadel</characterLabel>
|
||||
<characterLabel type="pictographs">piktogramm</characterLabel>
|
||||
<characterLabel type="place">lecʼh</characterLabel>
|
||||
<characterLabel type="plant">plant</characterLabel>
|
||||
<characterLabel type="punctuation">poentadur</characterLabel>
|
||||
<characterLabel type="sign_standard_symbols">sin pe arouez</characterLabel>
|
||||
<characterLabel type="small_form_variant">adstummoù bihan</characterLabel>
|
||||
<characterLabel type="smiley">fromlun</characterLabel>
|
||||
<characterLabel type="smileys_people">fromlun pe den</characterLabel>
|
||||
<characterLabel type="south_asian_scripts">skriturioù Azia ar Su</characterLabel>
|
||||
<characterLabel type="southeast_asian_scripts">skriturioù Azia ar Gevred</characterLabel>
|
||||
<characterLabel type="sport">sport</characterLabel>
|
||||
<characterLabel type="symbols">arouez</characterLabel>
|
||||
<characterLabel type="technical_symbols">arouez teknikel</characterLabel>
|
||||
<characterLabel type="travel">beaj</characterLabel>
|
||||
<characterLabel type="travel_places">beaj ha lecʼhioù</characterLabel>
|
||||
<characterLabel type="travel_places">beaj pe lecʼh</characterLabel>
|
||||
<characterLabel type="variant_forms">adstumm</characterLabel>
|
||||
<characterLabel type="vocalic_jamo">bogalennoù jamo</characterLabel>
|
||||
<characterLabel type="weather">amzer</characterLabel>
|
||||
<characterLabel type="western_asian_scripts">skriturioù Azia ar Cʼhonôg</characterLabel>
|
||||
<characterLabel type="whitespace">esaouenn</characterLabel>
|
||||
</characterLabels>
|
||||
<typographicNames>
|
||||
<axisName type="ital">italek</axisName>
|
||||
<axisName type="opsz">korf optikel</axisName>
|
||||
<axisName type="slnt">stouadur</axisName>
|
||||
<axisName type="wdth">ledander</axisName>
|
||||
<axisName type="wght">tevder</axisName>
|
||||
<styleName type="ital" subtype="1">red</styleName>
|
||||
@@ -15465,7 +15974,10 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<styleName type="opsz" subtype="18">titlañ</styleName>
|
||||
<styleName type="opsz" subtype="72">diskwel</styleName>
|
||||
<styleName type="opsz" subtype="144">skritell</styleName>
|
||||
<styleName type="slnt" subtype="-12">kilstouet</styleName>
|
||||
<styleName type="slnt" subtype="0">a-serzh</styleName>
|
||||
<styleName type="slnt" subtype="12">stouet</styleName>
|
||||
<featureName type="afrc">kevrennoù</featureName>
|
||||
<featureName type="ordn">niveroù petvediñ</featureName>
|
||||
<featureName type="smcp">pennlizherennoù bihan</featureName>
|
||||
<featureName type="zero">teskad goullo</featureName>
|
||||
|
||||
@@ -2047,9 +2047,6 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<zone type="Europe/Kaliningrad">
|
||||
<exemplarCity>कालिलीनग्राड</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>सिम्फेरोपोल</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Moscow">
|
||||
<exemplarCity>मॉस्को</exemplarCity>
|
||||
</zone>
|
||||
@@ -2194,6 +2191,9 @@ CLDR data files are interpreted according to the LDML specification (http://unic
|
||||
<zone type="Europe/Kiev">
|
||||
<exemplarCity>कीव</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Simferopol">
|
||||
<exemplarCity>सिम्फेरोपोल</exemplarCity>
|
||||
</zone>
|
||||
<zone type="Europe/Zaporozhye">
|
||||
<exemplarCity>झापरोझ्य</exemplarCity>
|
||||
</zone>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user