mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-22 01:09:41 +01:00
Compare commits
1480 Commits
jdk-20+2
...
wayland-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0262fae05 | ||
|
|
c49624baf9 | ||
|
|
4729e32f8b | ||
|
|
bb98aad651 | ||
|
|
e2321b5594 | ||
|
|
5813b10e65 | ||
|
|
d121a93cb1 | ||
|
|
f7638abee2 | ||
|
|
55b1310c24 | ||
|
|
bfe03f4bd1 | ||
|
|
15a09a1564 | ||
|
|
858380c36d | ||
|
|
a81b44d79d | ||
|
|
7f9aee3c7f | ||
|
|
0478a24483 | ||
|
|
c113772448 | ||
|
|
757194800f | ||
|
|
b9c4ac35ec | ||
|
|
adf8d95f7b | ||
|
|
b2986aef46 | ||
|
|
cea81933d9 | ||
|
|
6779e2c59b | ||
|
|
4b7c5f62a9 | ||
|
|
df204bb882 | ||
|
|
0d7fdcf415 | ||
|
|
73c8c50262 | ||
|
|
16cacd0b55 | ||
|
|
19496fcef9 | ||
|
|
9cb4769361 | ||
|
|
dc36d0afaf | ||
|
|
20ca5a41f4 | ||
|
|
e864ea8469 | ||
|
|
b3e31866ec | ||
|
|
4cdce4b44a | ||
|
|
2187957e7e | ||
|
|
14aa544c86 | ||
|
|
de5214531a | ||
|
|
ea6f74d64f | ||
|
|
56e174709b | ||
|
|
c5103ff4a8 | ||
|
|
49c103709e | ||
|
|
4b21d041d8 | ||
|
|
c1ee18adfb | ||
|
|
693e16b0a1 | ||
|
|
5ad126f446 | ||
|
|
ab8c1361bc | ||
|
|
2ceb80c60f | ||
|
|
703a6ef591 | ||
|
|
94a9b048af | ||
|
|
3a980b972f | ||
|
|
9bb932ce30 | ||
|
|
945950d863 | ||
|
|
d362e16924 | ||
|
|
07946aa49c | ||
|
|
2586b1a3c1 | ||
|
|
e1a77cfd5f | ||
|
|
3c7ae1225f | ||
|
|
619cd825b5 | ||
|
|
9d0009e92b | ||
|
|
3ebe5ad2d7 | ||
|
|
33d0618813 | ||
|
|
fba763f825 | ||
|
|
6053bf0f6a | ||
|
|
4435d56d3f | ||
|
|
fe70487d0b | ||
|
|
97f1321cb4 | ||
|
|
5e05e421ed | ||
|
|
e775acf889 | ||
|
|
9d116ec147 | ||
|
|
4b17d28a6d | ||
|
|
891156a744 | ||
|
|
e6c33e62b5 | ||
|
|
1bfcc2790a | ||
|
|
eb90c4fc04 | ||
|
|
4df4a1f8e2 | ||
|
|
35d17a00ab | ||
|
|
c5f462e83b | ||
|
|
269252aa3d | ||
|
|
6ed74ef654 | ||
|
|
8a148bc960 | ||
|
|
8713dfa64e | ||
|
|
542cc602a7 | ||
|
|
495c043533 | ||
|
|
d39d8c856a | ||
|
|
3466e99934 | ||
|
|
823b53d895 | ||
|
|
6a266c4de1 | ||
|
|
fe7a4617fe | ||
|
|
4cbac40de9 | ||
|
|
c1166a304d | ||
|
|
a1747ef81a | ||
|
|
67210abd04 | ||
|
|
7a194d31a3 | ||
|
|
b38bed6d0e | ||
|
|
118d93b3dc | ||
|
|
1fda8421b9 | ||
|
|
2d25c0a31c | ||
|
|
0ad6803ac2 | ||
|
|
cf84c8eaf2 | ||
|
|
f3a44a4835 | ||
|
|
37bd4fbe30 | ||
|
|
d4c9a88073 | ||
|
|
5dd851d872 | ||
|
|
85569e966c | ||
|
|
fef345b19f | ||
|
|
5c030cccae | ||
|
|
f888aa953c | ||
|
|
73f06468ae | ||
|
|
2ceebf681f | ||
|
|
ad7b7d40ce | ||
|
|
e38ae8a651 | ||
|
|
7012d4ba55 | ||
|
|
8c15f77aba | ||
|
|
6029120a5f | ||
|
|
8f5611593a | ||
|
|
e986a97a96 | ||
|
|
d4142d8441 | ||
|
|
0ec18382b7 | ||
|
|
87acfee3c3 | ||
|
|
f2c57186a4 | ||
|
|
536c9a512e | ||
|
|
f531dae4a0 | ||
|
|
ee6c39175b | ||
|
|
bd90c4cfa6 | ||
|
|
979efd4174 | ||
|
|
b9eeec2b6b | ||
|
|
13a5000d48 | ||
|
|
8ebebbce32 | ||
|
|
4bdd1c9148 | ||
|
|
b4e74aeabf | ||
|
|
953ce8da2c | ||
|
|
be82cff625 | ||
|
|
43dbf5899b | ||
|
|
755958e5ee | ||
|
|
1dafbe3f94 | ||
|
|
b2e86a6209 | ||
|
|
b22a38dedb | ||
|
|
121d4a5119 | ||
|
|
1166a8abd2 | ||
|
|
3644e26cef | ||
|
|
085949a117 | ||
|
|
b850f052d8 | ||
|
|
2dbedf0e93 | ||
|
|
4d6668e7ee | ||
|
|
5a9cd33632 | ||
|
|
f03934e270 | ||
|
|
3b476a1758 | ||
|
|
16047e8308 | ||
|
|
bf39b184ca | ||
|
|
f957ce9959 | ||
|
|
ae79af2ad6 | ||
|
|
07ed68efb2 | ||
|
|
090cdfc7a2 | ||
|
|
ed40d88f29 | ||
|
|
081691adf4 | ||
|
|
a4f2078bd6 | ||
|
|
c6e3daa5fa | ||
|
|
e137f9f2f0 | ||
|
|
4f44fd6308 | ||
|
|
edfb18a724 | ||
|
|
46633e644a | ||
|
|
f2a32d996a | ||
|
|
ccc1d31696 | ||
|
|
08a7ecf47e | ||
|
|
5fe837a35e | ||
|
|
8e9cfeb17c | ||
|
|
6e8f0387d6 | ||
|
|
bc668b994d | ||
|
|
03f25a9c69 | ||
|
|
a69ee85308 | ||
|
|
b8b9b97a1a | ||
|
|
fd594302f7 | ||
|
|
c7ab1caafb | ||
|
|
375f02fb21 | ||
|
|
d207da8a8c | ||
|
|
da4e96d596 | ||
|
|
48674d4f36 | ||
|
|
3b1bc21727 | ||
|
|
b8f9a915a2 | ||
|
|
1d26c4b149 | ||
|
|
3efbd5f0fa | ||
|
|
052a924985 | ||
|
|
c2ce43cbb0 | ||
|
|
f01573368f | ||
|
|
64da8620e1 | ||
|
|
b4e1e416da | ||
|
|
6d83482a6b | ||
|
|
6974978869 | ||
|
|
81fda1b756 | ||
|
|
7c60e6d2d6 | ||
|
|
9dce8652f2 | ||
|
|
b030c7de32 | ||
|
|
a07975bf3e | ||
|
|
88062eea67 | ||
|
|
aeef3ecdc4 | ||
|
|
5f6ad926d7 | ||
|
|
545ded1a82 | ||
|
|
29c70f1ab7 | ||
|
|
5d48da4574 | ||
|
|
ce85cac947 | ||
|
|
1decdcee71 | ||
|
|
8491fd5c12 | ||
|
|
6f8f28e756 | ||
|
|
8873192433 | ||
|
|
76f1865124 | ||
|
|
9db95edd01 | ||
|
|
9309786dbf | ||
|
|
3b7fc80b18 | ||
|
|
4fb424ba5f | ||
|
|
7515b304ca | ||
|
|
7401fe040d | ||
|
|
70d8428ebb | ||
|
|
30e3bf9da0 | ||
|
|
37f83b9b8e | ||
|
|
60616f243f | ||
|
|
ea6167104e | ||
|
|
c42ef70a45 | ||
|
|
94e14da0ef | ||
|
|
1ea0d6b424 | ||
|
|
c13e0ef3f8 | ||
|
|
79ccc791f2 | ||
|
|
5e1e449c11 | ||
|
|
d827fd830a | ||
|
|
9d76ac8a44 | ||
|
|
e5b65c40ea | ||
|
|
f8d9fa8873 | ||
|
|
6ad151d096 | ||
|
|
22b59b66d9 | ||
|
|
763d4bf074 | ||
|
|
739fdec7ea | ||
|
|
a11477ce25 | ||
|
|
71511283ce | ||
|
|
fb4979c05b | ||
|
|
112ca2b863 | ||
|
|
99017b06bf | ||
|
|
3419363e89 | ||
|
|
1abf971b93 | ||
|
|
bc12e9553d | ||
|
|
dd51f7e0b7 | ||
|
|
14c6ac457d | ||
|
|
02ea338177 | ||
|
|
49a7347ba5 | ||
|
|
aa48705ddd | ||
|
|
1ddc92fef5 | ||
|
|
1e222bccd3 | ||
|
|
43eff2b309 | ||
|
|
b88ee1ee22 | ||
|
|
aca4276e89 | ||
|
|
1f521a1204 | ||
|
|
5ae6bc23e8 | ||
|
|
968af74de4 | ||
|
|
36b61c5d7e | ||
|
|
2be315877b | ||
|
|
050eebf2e8 | ||
|
|
91a23d775f | ||
|
|
169a5d48af | ||
|
|
3675f4c2af | ||
|
|
543851db92 | ||
|
|
e2f8251490 | ||
|
|
6ecd08172b | ||
|
|
eca9749da0 | ||
|
|
2e20e7ec0f | ||
|
|
e45f3d5176 | ||
|
|
664e5b1d2e | ||
|
|
acd75e0f1c | ||
|
|
0b56b82243 | ||
|
|
acd5bcfc88 | ||
|
|
05c8cabdad | ||
|
|
eec992c6b0 | ||
|
|
f6d78cda85 | ||
|
|
a4dc035a97 | ||
|
|
f3ba332fdc | ||
|
|
df53fa752a | ||
|
|
5285035ed9 | ||
|
|
696287d6e8 | ||
|
|
48cc15602b | ||
|
|
f751e6087d | ||
|
|
4a6060ba2c | ||
|
|
0be2b2c2f1 | ||
|
|
bc2af47e1e | ||
|
|
d781ab09f7 | ||
|
|
a216960d71 | ||
|
|
3fa6778ab2 | ||
|
|
800e68d690 | ||
|
|
83abfa5d82 | ||
|
|
5652030f16 | ||
|
|
03f287d4ad | ||
|
|
d5bee4a0df | ||
|
|
47f233acec | ||
|
|
742bc041ea | ||
|
|
2283c3244f | ||
|
|
9f90eb0524 | ||
|
|
c6be2cd347 | ||
|
|
711e2520ad | ||
|
|
27b8e2f49e | ||
|
|
e1958971c9 | ||
|
|
84d7ff64d8 | ||
|
|
07afa3f41e | ||
|
|
0746bcb68f | ||
|
|
95ec2eaca3 | ||
|
|
d14e96d970 | ||
|
|
da4fdfbbf4 | ||
|
|
cd1cdcdb0d | ||
|
|
e9401e67b3 | ||
|
|
844a95b907 | ||
|
|
8d1dd6a6cf | ||
|
|
4e7cb156c8 | ||
|
|
8ecdaa6811 | ||
|
|
379f3094db | ||
|
|
12e3510f63 | ||
|
|
cb72f80925 | ||
|
|
cddd6def9f | ||
|
|
21008cad46 | ||
|
|
3b438a68ea | ||
|
|
caae53f4da | ||
|
|
cb5771dc2a | ||
|
|
5002eaa5cc | ||
|
|
e3358e77f5 | ||
|
|
df8ec09f8d | ||
|
|
09af637a9b | ||
|
|
584de68d78 | ||
|
|
bb422f5c14 | ||
|
|
0f28cb06ab | ||
|
|
84ee1a291c | ||
|
|
1b496064bf | ||
|
|
a07902bcbe | ||
|
|
fe541f05cc | ||
|
|
0fa7d9e8cd | ||
|
|
4020ed53dd | ||
|
|
8ff2c2639e | ||
|
|
6e23b43220 | ||
|
|
1f9ff41312 | ||
|
|
64b96e5cf5 | ||
|
|
f91762f56e | ||
|
|
8082c24a0d | ||
|
|
b920d2999f | ||
|
|
5725a93c07 | ||
|
|
ab7f58a377 | ||
|
|
d41f69f9c0 | ||
|
|
471e2f12b4 | ||
|
|
a93cf92635 | ||
|
|
36c9034ff1 | ||
|
|
cbd0688b32 | ||
|
|
04d7b7d574 | ||
|
|
d77c464c38 | ||
|
|
d7c1a7635d | ||
|
|
43f7f47ae0 | ||
|
|
26e08cf3d0 | ||
|
|
357a2cc22a | ||
|
|
b1ed40a87a | ||
|
|
b6ff8fa307 | ||
|
|
cfd44bb2cd | ||
|
|
01e7b88199 | ||
|
|
4b8399b5f0 | ||
|
|
a8f0f575ab | ||
|
|
746f5f589d | ||
|
|
4b297c1c16 | ||
|
|
dfb9c06633 | ||
|
|
f42caefe2e | ||
|
|
5feca688df | ||
|
|
39cd1635bf | ||
|
|
7765942aee | ||
|
|
11e7d53b23 | ||
|
|
141d5f5dee | ||
|
|
3beca2db07 | ||
|
|
9a40b76ac5 | ||
|
|
bb9aa4eae6 | ||
|
|
4cec141a90 | ||
|
|
6beeb8471c | ||
|
|
bf79f99c0c | ||
|
|
2028ec7412 | ||
|
|
ecb456ae29 | ||
|
|
6fca9ae047 | ||
|
|
fbd8b42d70 | ||
|
|
aff5ff14b2 | ||
|
|
15cb1fb788 | ||
|
|
b31a03c60a | ||
|
|
8f3bbe950f | ||
|
|
1caba0f13c | ||
|
|
eeb625e709 | ||
|
|
2057070eb0 | ||
|
|
7376c55219 | ||
|
|
d191e47516 | ||
|
|
a75ddb836b | ||
|
|
95c7c556a3 | ||
|
|
211fab8d36 | ||
|
|
7f3250d71c | ||
|
|
2a3879180e | ||
|
|
8351b30e00 | ||
|
|
91f9c0d0cf | ||
|
|
1169a15936 | ||
|
|
2baf2516e1 | ||
|
|
60f59a4a88 | ||
|
|
b3461c188a | ||
|
|
7e02039805 | ||
|
|
90390222bd | ||
|
|
1dc5039fed | ||
|
|
6f2223faa1 | ||
|
|
725f41ffd4 | ||
|
|
37234c856d | ||
|
|
1e1db5debd | ||
|
|
dfc16e047f | ||
|
|
8bd79d3efd | ||
|
|
9cd3e355d1 | ||
|
|
ec2629c052 | ||
|
|
cbee0bc9ef | ||
|
|
68645ebffb | ||
|
|
526eb54fc3 | ||
|
|
41ce658267 | ||
|
|
155b10ae86 | ||
|
|
d3f7e3b417 | ||
|
|
524af94937 | ||
|
|
cea409cc28 | ||
|
|
9ef6c0925a | ||
|
|
0c61bf109f | ||
|
|
91c9091d7e | ||
|
|
4c77bd32a0 | ||
|
|
d5aae0103a | ||
|
|
37df5f5625 | ||
|
|
699c42962e | ||
|
|
68da02c7b5 | ||
|
|
005b49bb78 | ||
|
|
91d00b3022 | ||
|
|
45ff10cc68 | ||
|
|
dbec22b84b | ||
|
|
b8598b0297 | ||
|
|
a14c3a493a | ||
|
|
00befddd7c | ||
|
|
7169ee5c73 | ||
|
|
3dd94f33b2 | ||
|
|
9d6b0285f5 | ||
|
|
812d805a48 | ||
|
|
43e191d64b | ||
|
|
14eb5ad0dc | ||
|
|
30d4145e2e | ||
|
|
4c5501c31c | ||
|
|
46e6e41b9a | ||
|
|
c0ee30a25a | ||
|
|
85ec1f8d02 | ||
|
|
6bd2794175 | ||
|
|
98da03af50 | ||
|
|
ffc249ae21 | ||
|
|
8d3399bf5f | ||
|
|
6677227301 | ||
|
|
986b834148 | ||
|
|
fc5f97fe37 | ||
|
|
2d13f53017 | ||
|
|
f84386cf6e | ||
|
|
51de765867 | ||
|
|
8a489658ab | ||
|
|
1e031e6a58 | ||
|
|
1080c4e4ae | ||
|
|
aff9a696cb | ||
|
|
76df73b390 | ||
|
|
32c7b6283d | ||
|
|
02dce24b59 | ||
|
|
d36abbe8da | ||
|
|
1ee59adcfe | ||
|
|
5934669ca8 | ||
|
|
6ff4775b71 | ||
|
|
d696104535 | ||
|
|
14fd1b6cdf | ||
|
|
4f9065d3d5 | ||
|
|
2259e427a5 | ||
|
|
205f992e9e | ||
|
|
710a143473 | ||
|
|
57930f8e53 | ||
|
|
5b4c415510 | ||
|
|
fb6eb6f267 | ||
|
|
da596182a4 | ||
|
|
85d4b49151 | ||
|
|
98d85e6f59 | ||
|
|
7c96608d9a | ||
|
|
c05015bc93 | ||
|
|
b2067e63da | ||
|
|
6a1e98cbf7 | ||
|
|
a92c1ff700 | ||
|
|
272745b374 | ||
|
|
26f2a978f6 | ||
|
|
8e22f2bb40 | ||
|
|
b17758a932 | ||
|
|
1bed23a1af | ||
|
|
4955835249 | ||
|
|
ef20ffe4d2 | ||
|
|
056ed48dda | ||
|
|
dbb2c4b6ac | ||
|
|
9833c025fd | ||
|
|
d7536588b3 | ||
|
|
d4e3e69505 | ||
|
|
2c61efe3de | ||
|
|
e31c537f05 | ||
|
|
955baa3c44 | ||
|
|
8df671c908 | ||
|
|
5bed9f7675 | ||
|
|
48b3ab02f9 | ||
|
|
4067321ef4 | ||
|
|
32f4dc8403 | ||
|
|
e945619ddd | ||
|
|
730ced9a10 | ||
|
|
3464019d7e | ||
|
|
e92b9e4030 | ||
|
|
767262e67c | ||
|
|
a366e82aa1 | ||
|
|
ac05bc8605 | ||
|
|
e1e67324c0 | ||
|
|
5757e2129e | ||
|
|
3993a1f9ea | ||
|
|
83a34086bc | ||
|
|
b6477fdb30 | ||
|
|
0c6094e796 | ||
|
|
2baeebbc02 | ||
|
|
da99e3e829 | ||
|
|
77e21c57ce | ||
|
|
fcc0cf9677 | ||
|
|
6fc58b8324 | ||
|
|
ce06a3b689 | ||
|
|
26cac088b4 | ||
|
|
46523b817c | ||
|
|
bc5ffc8e47 | ||
|
|
98ce45ff74 | ||
|
|
3ac91b08cb | ||
|
|
e0168a0eb0 | ||
|
|
99c3ab0177 | ||
|
|
0fb9469d93 | ||
|
|
0a4d0cee9f | ||
|
|
032be168b5 | ||
|
|
e393973761 | ||
|
|
fa68371bb8 | ||
|
|
04d8069bac | ||
|
|
3d254d3c8e | ||
|
|
2d18dda3f2 | ||
|
|
7c2f2994da | ||
|
|
07616de00c | ||
|
|
9444a081cc | ||
|
|
6a1b0b5649 | ||
|
|
5204528296 | ||
|
|
2d10d4f54e | ||
|
|
bd674dc55e | ||
|
|
479795b4d1 | ||
|
|
6e6202c14d | ||
|
|
17283cfe4c | ||
|
|
6076128996 | ||
|
|
6f297346dc | ||
|
|
dd5415309a | ||
|
|
12317ef7d0 | ||
|
|
372fc58e89 | ||
|
|
3c1bda4bc3 | ||
|
|
0d51f63a2e | ||
|
|
5d6779f709 | ||
|
|
38e6706315 | ||
|
|
4c90e87a6f | ||
|
|
9e3176bd09 | ||
|
|
c42478b723 | ||
|
|
d2eed079c3 | ||
|
|
923c952bec | ||
|
|
38377d5eb7 | ||
|
|
2d7792c783 | ||
|
|
c3380c03b1 | ||
|
|
1cf245d77c | ||
|
|
6335150cea | ||
|
|
622be797b9 | ||
|
|
3d0ab2b1aa | ||
|
|
6e248279cf | ||
|
|
f5ebbf3225 | ||
|
|
550e5d7822 | ||
|
|
d3d2e669b7 | ||
|
|
f3ebb420b7 | ||
|
|
1576f991fe | ||
|
|
f285cea9a6 | ||
|
|
343333abcf | ||
|
|
b3450e930e | ||
|
|
6b7d4b1f74 | ||
|
|
21a736954f | ||
|
|
4a28f3798d | ||
|
|
f766d92755 | ||
|
|
afa5d4ced3 | ||
|
|
bc6ac6f7af | ||
|
|
e016363b54 | ||
|
|
9424d6d487 | ||
|
|
40b0ed5657 | ||
|
|
adb3d4f14a | ||
|
|
30def49c72 | ||
|
|
a88a9e344f | ||
|
|
d5167a91a9 | ||
|
|
512fee1d1e | ||
|
|
a476ec5c81 | ||
|
|
99cab6a68e | ||
|
|
f6b6360155 | ||
|
|
b0e0b87891 | ||
|
|
1500d3dfb2 | ||
|
|
4e457acda0 | ||
|
|
774edeb521 | ||
|
|
9a0d1e7ce8 | ||
|
|
c74b6d4552 | ||
|
|
3844685be0 | ||
|
|
2b803493ba | ||
|
|
4732abf7f4 | ||
|
|
f694f8a767 | ||
|
|
f91943c19f | ||
|
|
6354a57b5c | ||
|
|
3e18773016 | ||
|
|
909e1edb18 | ||
|
|
55f5a83b88 | ||
|
|
d83faeaf9a | ||
|
|
e353b572a5 | ||
|
|
95a33fe150 | ||
|
|
5d799d80e6 | ||
|
|
4f50316a1a | ||
|
|
2fe0ce0148 | ||
|
|
251bff6bee | ||
|
|
f57d34242c | ||
|
|
88af204027 | ||
|
|
8d3d4397cc | ||
|
|
054c23f484 | ||
|
|
dc7e2562f4 | ||
|
|
5a20bc44b1 | ||
|
|
7b81a9c75d | ||
|
|
76ee5495cd | ||
|
|
14623c6087 | ||
|
|
568be58e85 | ||
|
|
69448f9c1a | ||
|
|
3c2289d651 | ||
|
|
71ab5c95af | ||
|
|
c0623972cf | ||
|
|
a45a4b9465 | ||
|
|
d3fed12867 | ||
|
|
b653b9cc27 | ||
|
|
0813a47051 | ||
|
|
fa5cc4cc8e | ||
|
|
ad2e0c4df0 | ||
|
|
13c0369646 | ||
|
|
fe0544f8a7 | ||
|
|
926380d3b7 | ||
|
|
f3be6731d3 | ||
|
|
d24b7b7026 | ||
|
|
8a45abd5f3 | ||
|
|
cc287832c2 | ||
|
|
cf00677412 | ||
|
|
d92e00a519 | ||
|
|
486f90c134 | ||
|
|
b4e1aa87e3 | ||
|
|
84936e9278 | ||
|
|
259ba86c60 | ||
|
|
a85a72341b | ||
|
|
4da1745836 | ||
|
|
38a81913d3 | ||
|
|
27af0144ea | ||
|
|
f58aaab4a4 | ||
|
|
ab6988599c | ||
|
|
54843b700a | ||
|
|
8a0c3e53d5 | ||
|
|
8e8ee4b6f2 | ||
|
|
aa9b8f04bf | ||
|
|
f95ee79603 | ||
|
|
45c3e898ed | ||
|
|
db77227684 | ||
|
|
256b52387b | ||
|
|
e561933907 | ||
|
|
dcd78020e4 | ||
|
|
16593cf51c | ||
|
|
c59f9b374b | ||
|
|
476c484e37 | ||
|
|
a17fce7507 | ||
|
|
1ed03d82b2 | ||
|
|
79597f1ea6 | ||
|
|
7b5f9edb59 | ||
|
|
07c797720d | ||
|
|
a3ec0bb03a | ||
|
|
27b0f7726b | ||
|
|
9a65524e2f | ||
|
|
f9004fe443 | ||
|
|
2fbb936203 | ||
|
|
3601e30df7 | ||
|
|
37c0a13647 | ||
|
|
44532009ff | ||
|
|
07c9ba74fa | ||
|
|
235151ead8 | ||
|
|
df5209e70f | ||
|
|
74d3330e10 | ||
|
|
57aac2ab65 | ||
|
|
6a8a531359 | ||
|
|
7244dd6fab | ||
|
|
1f3578b79c | ||
|
|
45dec480ef | ||
|
|
58aae340a9 | ||
|
|
5ca268ca65 | ||
|
|
37aa7c165d | ||
|
|
f2f0cd86bf | ||
|
|
1f484dae4e | ||
|
|
63a126aa2d | ||
|
|
7d18ebd870 | ||
|
|
2edd550105 | ||
|
|
964aac28fe | ||
|
|
f85411f24a | ||
|
|
82dbe29fc8 | ||
|
|
54ce11431d | ||
|
|
a1df2da668 | ||
|
|
1b756bfa3a | ||
|
|
97e2689470 | ||
|
|
833bf06905 | ||
|
|
62a7fc60d3 | ||
|
|
20a3cb7ce3 | ||
|
|
f567fa0fd5 | ||
|
|
d00e7b92b4 | ||
|
|
f2773f6404 | ||
|
|
d5435642f9 | ||
|
|
2ee9491a60 | ||
|
|
32d675ca60 | ||
|
|
0d96546ab9 | ||
|
|
e8bc87956a | ||
|
|
494d3873b1 | ||
|
|
8b4e6ba01f | ||
|
|
0fc92637d2 | ||
|
|
e81210f5fe | ||
|
|
f45b8408a0 | ||
|
|
0c67fba11f | ||
|
|
bf7d6d3a0f | ||
|
|
e230719ad3 | ||
|
|
f75da2235a | ||
|
|
802ef38060 | ||
|
|
e61f6fc394 | ||
|
|
0bfb12162f | ||
|
|
1d9c2f7a6e | ||
|
|
a25e1dc53c | ||
|
|
1ef4e48488 | ||
|
|
0cc66aeae8 | ||
|
|
da477b1366 | ||
|
|
01b87ba8e2 | ||
|
|
e44e3f0c19 | ||
|
|
c3d3662e52 | ||
|
|
3e122419b2 | ||
|
|
ec53fba039 | ||
|
|
4cc6cb9d9d | ||
|
|
d1edda8ff5 | ||
|
|
21f4eb2233 | ||
|
|
6e6ae596d6 | ||
|
|
ea2c82e74f | ||
|
|
b5707b0376 | ||
|
|
b00eedeb02 | ||
|
|
3a090777ba | ||
|
|
dd2034b007 | ||
|
|
aa5b718933 | ||
|
|
695bb39391 | ||
|
|
ec96b1f187 | ||
|
|
fd4b2f2868 | ||
|
|
9d7c13eb14 | ||
|
|
e89abb7d2d | ||
|
|
77cd917a97 | ||
|
|
1c1c4410b2 | ||
|
|
d546d13861 | ||
|
|
8353a33350 | ||
|
|
e70747b4e9 | ||
|
|
967a28c3d8 | ||
|
|
22d6d315f2 | ||
|
|
00decca46a | ||
|
|
9f8cc42135 | ||
|
|
871b7dab14 | ||
|
|
0c40128fec | ||
|
|
6eb7c3ad0e | ||
|
|
083e014d0c | ||
|
|
45e5b31a18 | ||
|
|
9bfffa082e | ||
|
|
bd5855337c | ||
|
|
755ecf6b73 | ||
|
|
dedc05cb40 | ||
|
|
3d20a8b20a | ||
|
|
a28ab7b62a | ||
|
|
7ea9ba1f6c | ||
|
|
fc1d94ef1a | ||
|
|
a9bc149992 | ||
|
|
1c0f0f4211 | ||
|
|
ad5f628c58 | ||
|
|
2ddf72874f | ||
|
|
3aaffd6309 | ||
|
|
85a602355f | ||
|
|
4b03e135e1 | ||
|
|
2e0a17c560 | ||
|
|
36ef4c1a92 | ||
|
|
b47438cabc | ||
|
|
543163a03b | ||
|
|
68af7c1365 | ||
|
|
e4925a3959 | ||
|
|
7b029ea6ba | ||
|
|
35fd5d88eb | ||
|
|
9825c33560 | ||
|
|
cb37282a12 | ||
|
|
4c6d22a6ce | ||
|
|
37d3146cca | ||
|
|
ecfa38ffa8 | ||
|
|
5fce02e39a | ||
|
|
83dc2e3e45 | ||
|
|
49133809c2 | ||
|
|
6397d564a5 | ||
|
|
0def5316cd | ||
|
|
57e0da1578 | ||
|
|
17c77b5d7a | ||
|
|
d889264c61 | ||
|
|
ae1a9a0b25 | ||
|
|
4040927d17 | ||
|
|
8d0d9eaa9c | ||
|
|
aff7689a00 | ||
|
|
3677b55b45 | ||
|
|
0ade2641f7 | ||
|
|
f5b3618c42 | ||
|
|
cbc9040f3a | ||
|
|
2712bc3f79 | ||
|
|
af243ca334 | ||
|
|
77398430b5 | ||
|
|
eb8b789015 | ||
|
|
08274e6fea | ||
|
|
7db5abddd1 | ||
|
|
124fc4a83d | ||
|
|
459193710f | ||
|
|
7676be8a99 | ||
|
|
861cc671e2 | ||
|
|
8d88be233b | ||
|
|
8a804f653d | ||
|
|
5a539e8da7 | ||
|
|
b2f0cbdca1 | ||
|
|
891df2128a | ||
|
|
d4fb91ba04 | ||
|
|
20123ea4de | ||
|
|
8e2c006cd1 | ||
|
|
ae52053757 | ||
|
|
87cda21c5d | ||
|
|
0657acf534 | ||
|
|
b66a0d1613 | ||
|
|
9bff3b76f2 | ||
|
|
f9bb3676e3 | ||
|
|
b17a745d7f | ||
|
|
0da4314e95 | ||
|
|
88c96dd3eb | ||
|
|
dd7f2d912b | ||
|
|
4c652d9eca | ||
|
|
5963300c0c | ||
|
|
b0d6952811 | ||
|
|
504a626597 | ||
|
|
6e7cd7627d | ||
|
|
477f471159 | ||
|
|
6b2184e8d1 | ||
|
|
27c8826090 | ||
|
|
6e6c64c6f6 | ||
|
|
617a196fd3 | ||
|
|
1edc245574 | ||
|
|
6ad6b1c454 | ||
|
|
90257f9505 | ||
|
|
c48cd88652 | ||
|
|
3c3256414f | ||
|
|
fd9ac62161 | ||
|
|
3ba317167d | ||
|
|
4b3dfe1d22 | ||
|
|
92d2982f3f | ||
|
|
966ab219b4 | ||
|
|
aa557b9b01 | ||
|
|
d4a795d75a | ||
|
|
a3040fcc2b | ||
|
|
ce61eb6ff9 | ||
|
|
26e5c112da | ||
|
|
0bc804d6ef | ||
|
|
3493973186 | ||
|
|
4772354f4c | ||
|
|
43bb399375 | ||
|
|
1a6c83b771 | ||
|
|
b6b0317f83 | ||
|
|
4cfbb3b5ec | ||
|
|
13f0f126b9 | ||
|
|
67f001186b | ||
|
|
1b66cecd31 | ||
|
|
0cc49fd9ea | ||
|
|
c89556f6cd | ||
|
|
4d6e6f6741 | ||
|
|
e52a340d7f | ||
|
|
af529be069 | ||
|
|
e265b2a291 | ||
|
|
b7d2bde8e3 | ||
|
|
0971d34646 | ||
|
|
0ae8341057 | ||
|
|
5acf2d7cb4 | ||
|
|
a6564d495b | ||
|
|
54c093ab0e | ||
|
|
af76c0c199 | ||
|
|
a9db5bb373 | ||
|
|
a2cff2634c | ||
|
|
554f44ecb1 | ||
|
|
f714ac52bf | ||
|
|
6cbc234ad1 | ||
|
|
57bf603b73 | ||
|
|
1df77ec137 | ||
|
|
fcc119531a | ||
|
|
226b8e680a | ||
|
|
464085ed90 | ||
|
|
f5d1b5bda2 | ||
|
|
30205bb289 | ||
|
|
86ef7b20eb | ||
|
|
d61c0c79cf | ||
|
|
7ff19694df | ||
|
|
257c71c35f | ||
|
|
d9cb410efc | ||
|
|
acbe093a66 | ||
|
|
32d410a1af | ||
|
|
357902415d | ||
|
|
470c0eb216 | ||
|
|
dd9bd31b86 | ||
|
|
8179a191f0 | ||
|
|
15943e4242 | ||
|
|
0bcf17674e | ||
|
|
cc2861a993 | ||
|
|
64a1a08ff9 | ||
|
|
95fc16bdfa | ||
|
|
f58e08e258 | ||
|
|
18cd16d2ea | ||
|
|
cfe9026fe0 | ||
|
|
eeac3da795 | ||
|
|
791fc5791a | ||
|
|
e052d7f4bc | ||
|
|
1d16c91ba7 | ||
|
|
54a2c5a6d1 | ||
|
|
5214a17d81 | ||
|
|
471a427d10 | ||
|
|
5d1ad39684 | ||
|
|
97fc8deb1d | ||
|
|
dd69a68d09 | ||
|
|
07f0612c9a | ||
|
|
93f96d8c9e | ||
|
|
5d82d67a9e | ||
|
|
348a0521e1 | ||
|
|
bc6a3c7b83 | ||
|
|
16a127524c | ||
|
|
c1a3347f17 | ||
|
|
37b08c7bf9 | ||
|
|
dc74ea21f1 | ||
|
|
c1040897cd | ||
|
|
923462467e | ||
|
|
2f3e494b80 | ||
|
|
e804236f05 | ||
|
|
adaf3b9014 | ||
|
|
48b77a6969 | ||
|
|
8ec3197683 | ||
|
|
61e072d11c | ||
|
|
36c00fdd74 | ||
|
|
2bd90c2149 | ||
|
|
2a1d9cfead | ||
|
|
4d796ee8ab | ||
|
|
f0f78a9125 | ||
|
|
1451642317 | ||
|
|
8159a1ab70 | ||
|
|
7318b22209 | ||
|
|
2ae8e31183 | ||
|
|
893909558b | ||
|
|
da9cc5c9f4 | ||
|
|
330adc03a9 | ||
|
|
28bbdc5ebb | ||
|
|
a6faf5d33a | ||
|
|
0ca5cb13a3 | ||
|
|
7c3cfd13e3 | ||
|
|
8c9d5ad4f8 | ||
|
|
0ca74f538e | ||
|
|
1e270ea4f5 | ||
|
|
b17269ad52 | ||
|
|
350808a5a3 | ||
|
|
d0c365a7b9 | ||
|
|
80dc6cebc9 | ||
|
|
228e8e94fe | ||
|
|
852e71d9f0 | ||
|
|
0599a05f8c | ||
|
|
987656d690 | ||
|
|
2660a9268b | ||
|
|
ef8486a1a4 | ||
|
|
62f22633d1 | ||
|
|
b28f9dab80 | ||
|
|
54854d9300 | ||
|
|
75c1e99968 | ||
|
|
c29242ebb0 | ||
|
|
7841e5cc38 | ||
|
|
e9f97b2e8c | ||
|
|
59d85bad34 | ||
|
|
66f59c2c16 | ||
|
|
0dda3c14eb | ||
|
|
620c8a045f | ||
|
|
7ec0132ad3 | ||
|
|
80bd8c3549 | ||
|
|
15f4b30459 | ||
|
|
4c1cd66d22 | ||
|
|
6346c3338c | ||
|
|
604a115a5b | ||
|
|
59e495e4d3 | ||
|
|
799a2c844d | ||
|
|
52cc6cd063 | ||
|
|
3582fd9e93 | ||
|
|
53fc495e3a | ||
|
|
db1e44c2dd | ||
|
|
2c73a1f39d | ||
|
|
e8975be94b | ||
|
|
9c19d89c9c | ||
|
|
b1817a30a0 | ||
|
|
eeb345a286 | ||
|
|
89458e36af | ||
|
|
3d3e3df8f0 | ||
|
|
17e65bbd23 | ||
|
|
1c055076e0 | ||
|
|
011958d30b | ||
|
|
984cd02dfb | ||
|
|
4b4d35289a | ||
|
|
43c47b1ad7 | ||
|
|
5425573bb4 | ||
|
|
a3e07d950a | ||
|
|
2ea3f546c2 | ||
|
|
971479153d | ||
|
|
618f3a82a4 | ||
|
|
43588648ca | ||
|
|
7b418f9aba | ||
|
|
41ef2b2490 | ||
|
|
d991ec4f9f | ||
|
|
b7b917a0a8 | ||
|
|
a37465b8fa | ||
|
|
632d2d2690 | ||
|
|
84b4e9bb41 | ||
|
|
e7f8003edd | ||
|
|
cdc1582d1d | ||
|
|
ec1d338e15 | ||
|
|
c2cbeb3ee8 | ||
|
|
f1001a06b3 | ||
|
|
5d1c44871a | ||
|
|
d0a2f13dea | ||
|
|
83339500ba | ||
|
|
879ea78037 | ||
|
|
78c514d085 | ||
|
|
ac93ab0e0a | ||
|
|
67dd3f7343 | ||
|
|
243c76f59f | ||
|
|
ddb106be7a | ||
|
|
1af7c33df5 | ||
|
|
d67e7ccda5 | ||
|
|
977e09489d | ||
|
|
96a542feb2 | ||
|
|
2cb659e7f4 | ||
|
|
bbc57483ce | ||
|
|
e062dff1bf | ||
|
|
a41b12f430 | ||
|
|
e02627ca0a | ||
|
|
2ff22087f2 | ||
|
|
a6bab2a379 | ||
|
|
f5a7de8627 | ||
|
|
612d8c6cb1 | ||
|
|
d7f0de272c | ||
|
|
dfbc6919e1 | ||
|
|
4e6cd67fec | ||
|
|
4dc421caa0 | ||
|
|
af86cd3d8c | ||
|
|
6cd1c0c14e | ||
|
|
4a4d8ed83b | ||
|
|
5a96a5db13 | ||
|
|
b65f7ec2f1 | ||
|
|
6c8d0e617f | ||
|
|
e72742eeb5 | ||
|
|
b9de0a7556 | ||
|
|
5ae4320921 | ||
|
|
efed7a7f65 | ||
|
|
b2010a7481 | ||
|
|
ea8b75cfe4 | ||
|
|
6882f0eb39 | ||
|
|
92067e2003 | ||
|
|
2677dd6d23 | ||
|
|
4f3f74c141 | ||
|
|
87340fd540 | ||
|
|
bc7a1ea249 | ||
|
|
84f23149e2 | ||
|
|
4dd236b40a | ||
|
|
522b65743c | ||
|
|
441c33f0b1 | ||
|
|
2342684f2c | ||
|
|
0143cf1d46 | ||
|
|
0184f46bdf | ||
|
|
cca91f7bcc | ||
|
|
b4e2ce0094 | ||
|
|
f3abb82989 | ||
|
|
92deab5465 | ||
|
|
70fce07a38 | ||
|
|
15d3329edd | ||
|
|
757a742ac7 | ||
|
|
890bcedd49 | ||
|
|
c8e0315114 | ||
|
|
3ad3950560 | ||
|
|
fb27ddcbe5 | ||
|
|
3bb2dc8e7f | ||
|
|
c7c20661ee | ||
|
|
be58cbc417 | ||
|
|
109e21af66 | ||
|
|
adf40d25a1 | ||
|
|
292d909e81 | ||
|
|
a7f83582d3 | ||
|
|
02fae60740 | ||
|
|
5d588eda97 | ||
|
|
3471ac9a90 | ||
|
|
fd89ab8dac | ||
|
|
dbab827bee | ||
|
|
3216d198f3 | ||
|
|
2bf6285c80 | ||
|
|
c83fcbd18f | ||
|
|
74ac5df96f | ||
|
|
5e3ecff7a6 | ||
|
|
535804554d | ||
|
|
73b83e0188 | ||
|
|
2583feb21b | ||
|
|
44fb92e2aa | ||
|
|
f528124f57 | ||
|
|
572c14efc6 | ||
|
|
6e18883d8f | ||
|
|
ce36f6ea85 | ||
|
|
fff7f35300 | ||
|
|
128c6c648c | ||
|
|
31f7fc043b | ||
|
|
d9ca438d06 | ||
|
|
e8568b890a | ||
|
|
7f0e9bd632 | ||
|
|
728157fa03 | ||
|
|
59d0c739ac | ||
|
|
4545ed6842 | ||
|
|
0fd1b68972 | ||
|
|
0e906975a8 | ||
|
|
2baf526fce | ||
|
|
ea12615d2f | ||
|
|
393dc7ade7 | ||
|
|
e5491a2605 | ||
|
|
04c47da118 | ||
|
|
3164c98f4c | ||
|
|
3b9059a147 | ||
|
|
c3806b93c4 | ||
|
|
f42dab8592 | ||
|
|
39715f3da7 | ||
|
|
21db9a507b | ||
|
|
c79baaa811 | ||
|
|
62fbc3f883 | ||
|
|
0c1aa2bc8a | ||
|
|
c33fa55cf8 | ||
|
|
59980ac8e4 | ||
|
|
fc01666a58 | ||
|
|
fed3af8ae0 | ||
|
|
95c8022958 | ||
|
|
0c37008917 | ||
|
|
46251bc6e2 | ||
|
|
bba6be79e0 | ||
|
|
2579373dd0 | ||
|
|
cb6e9cb728 | ||
|
|
0494291490 | ||
|
|
25f4b04365 | ||
|
|
0225eb434c | ||
|
|
e25982071d | ||
|
|
b542bcba57 | ||
|
|
4ab77ac60d | ||
|
|
e9d9cc6d0a | ||
|
|
87aa3ce03e | ||
|
|
81ee7d28f8 | ||
|
|
3c08e6b311 | ||
|
|
c86c51cc72 | ||
|
|
9981c85d46 | ||
|
|
54b4576f78 | ||
|
|
6aaf141f61 | ||
|
|
1877533f75 | ||
|
|
c142fbbbaf | ||
|
|
9c86c82091 | ||
|
|
eeaf0bbabc | ||
|
|
e7795851d2 | ||
|
|
460d879a75 | ||
|
|
732f1065fe | ||
|
|
d852e99ae9 | ||
|
|
a13af65043 | ||
|
|
f1967cfaab | ||
|
|
ea21c46531 | ||
|
|
1b8f466dba | ||
|
|
ac399e9777 | ||
|
|
1fec62f299 | ||
|
|
01b9f95c62 | ||
|
|
64286074ba | ||
|
|
3f1174aa47 | ||
|
|
f804f2ce8e | ||
|
|
1304390b3e | ||
|
|
11319c2aeb | ||
|
|
8cdead0c94 | ||
|
|
f93beacd2f | ||
|
|
3212dc9c6f | ||
|
|
3e60e82814 | ||
|
|
f7b183059a | ||
|
|
5564effe9c | ||
|
|
a8eb728680 | ||
|
|
a694e9e34d | ||
|
|
95e3190d96 | ||
|
|
8e7b45b820 | ||
|
|
74ca6ca25b | ||
|
|
86f63f9703 | ||
|
|
013a5eeeb9 | ||
|
|
77ad998b6e | ||
|
|
532a6ec7e3 | ||
|
|
e05b2f2c3b | ||
|
|
cce77a7001 | ||
|
|
889150b47a | ||
|
|
d1249aa5cb | ||
|
|
a79ce4e748 | ||
|
|
8dd94a2c14 | ||
|
|
569de453c3 | ||
|
|
403a9bc796 | ||
|
|
8f24d25168 | ||
|
|
a40c17b730 | ||
|
|
2a6ec88cd0 | ||
|
|
9a0fa82424 | ||
|
|
55fa19b508 | ||
|
|
32b650c024 | ||
|
|
ef3f2ed9ba | ||
|
|
35387d5cb6 | ||
|
|
9f37ba44b8 | ||
|
|
dfb24ae4b7 | ||
|
|
82a8bd7e92 | ||
|
|
cc2b792704 | ||
|
|
75c0a5b828 | ||
|
|
83a5d5996b | ||
|
|
cbaf6e807e | ||
|
|
0526402a02 | ||
|
|
834189527e | ||
|
|
ac6be16519 | ||
|
|
4ad18cf088 | ||
|
|
d8f4e97bd3 | ||
|
|
f783244caf | ||
|
|
b3a0e482ad | ||
|
|
fafe8b3f8d | ||
|
|
0b6fd4820c | ||
|
|
351560414d | ||
|
|
30e134e909 | ||
|
|
d48694d0f3 | ||
|
|
c45d613faa | ||
|
|
29ea6429d2 | ||
|
|
77c3bbf105 | ||
|
|
a5934cddca | ||
|
|
fd1bb078ea | ||
|
|
4c997ba830 | ||
|
|
1b997db734 | ||
|
|
688712f75c | ||
|
|
df063f7db1 | ||
|
|
9ccae7078e | ||
|
|
f640fc5a1e | ||
|
|
bad9ffe471 | ||
|
|
0dff3276e8 | ||
|
|
b5d965656d | ||
|
|
d53b02eb9f | ||
|
|
1a271645a8 | ||
|
|
a8edd7a12f | ||
|
|
e31003a064 | ||
|
|
5b5bc6c26e | ||
|
|
8e7a3cb5ab | ||
|
|
dc4edd3fe8 | ||
|
|
649f2d8835 | ||
|
|
d8444aa45e | ||
|
|
c4dcce4bca | ||
|
|
70f5693356 | ||
|
|
dee5121bd4 | ||
|
|
cdf6979259 | ||
|
|
f5cdabad06 | ||
|
|
9515560c54 | ||
|
|
cfc9a881af | ||
|
|
9925014035 | ||
|
|
44e8c462b4 | ||
|
|
8e01ffb3a7 | ||
|
|
2dd00f580c | ||
|
|
e291a67e96 | ||
|
|
20124ac755 | ||
|
|
c43bdf7165 | ||
|
|
604ea90d55 | ||
|
|
09b4032f8b | ||
|
|
a8fe2d97a2 | ||
|
|
b9b900a61c | ||
|
|
f190f4e638 | ||
|
|
d260a4e794 | ||
|
|
95497772e7 | ||
|
|
124c63c17c | ||
|
|
918068a115 | ||
|
|
00d06d4a82 | ||
|
|
feb223aacf | ||
|
|
c3addbb1c0 | ||
|
|
1305fb5ca8 | ||
|
|
c20b3aa9c5 | ||
|
|
7b5bd251ef | ||
|
|
28c5e483a8 | ||
|
|
da6d1fc0e0 | ||
|
|
31e50f2c76 | ||
|
|
dddd4e7c81 | ||
|
|
048bffad79 | ||
|
|
15efb2bdeb | ||
|
|
b6bd190d8d | ||
|
|
ba670ecbb9 | ||
|
|
cf7154498f | ||
|
|
570897498b | ||
|
|
0709a6a1fb | ||
|
|
2961b7eede | ||
|
|
167ce4dae2 | ||
|
|
108cd69516 | ||
|
|
b96ba19807 | ||
|
|
779b4e1d19 | ||
|
|
dbc6e11010 | ||
|
|
910053b74e | ||
|
|
7b3bf97760 | ||
|
|
86dc760f9e | ||
|
|
1504804896 | ||
|
|
af0088076d | ||
|
|
c67149be4b | ||
|
|
1f36ed1fae | ||
|
|
9b7805e3b4 | ||
|
|
c42b796f91 | ||
|
|
a814293e1f | ||
|
|
88fe19c5b2 | ||
|
|
6f9717b46b | ||
|
|
d4eeeb82cb | ||
|
|
9048cef761 | ||
|
|
549c6c22ae | ||
|
|
aa43824249 | ||
|
|
adbd200dc5 | ||
|
|
b4ab5fe1da | ||
|
|
33369719b2 | ||
|
|
b4490386fe | ||
|
|
784fa0add7 | ||
|
|
ca78f7bd76 | ||
|
|
2efa89a89e | ||
|
|
e322e77e95 | ||
|
|
40bf3b1167 | ||
|
|
17ef8cae33 | ||
|
|
caa6b74b5b | ||
|
|
28913f4747 | ||
|
|
d4b040f42d | ||
|
|
354ed1034d | ||
|
|
7746664819 | ||
|
|
2c8ada689f | ||
|
|
f3f078846f | ||
|
|
be6be15efa | ||
|
|
210a06a287 | ||
|
|
64f95cfb32 | ||
|
|
ddb55ede2c | ||
|
|
699ad45b43 | ||
|
|
784a0f0496 | ||
|
|
7e13cdb799 | ||
|
|
7905788e96 | ||
|
|
47fe9ef5bf | ||
|
|
62e1e7950b | ||
|
|
de7467146f | ||
|
|
9c92da5249 | ||
|
|
a5c25d8837 | ||
|
|
e93be3acdf | ||
|
|
7ac40f3b9f | ||
|
|
53b37fe153 | ||
|
|
08288819dd | ||
|
|
4cdb97893c | ||
|
|
9918b6d384 | ||
|
|
f67c5361cc | ||
|
|
239b4bb020 | ||
|
|
0d2952e5b3 | ||
|
|
fdc8455c45 | ||
|
|
20f55abd27 | ||
|
|
925084c496 | ||
|
|
bdf9902f75 | ||
|
|
17aacde50f | ||
|
|
9dc9a64fa4 | ||
|
|
64782a7524 | ||
|
|
b0db33333a | ||
|
|
651cbebb96 | ||
|
|
c8cc94a384 | ||
|
|
740169ce1c | ||
|
|
13cbb3a416 | ||
|
|
1f9521e6cb | ||
|
|
a716f7934b | ||
|
|
4c9ea7e66a | ||
|
|
b206d2d149 | ||
|
|
2728770e3d | ||
|
|
ef17ee4dea | ||
|
|
72f286a9ba | ||
|
|
b8db0c383b | ||
|
|
d579916a6b | ||
|
|
26c03c1860 | ||
|
|
a802b9816a | ||
|
|
bf0623b11f | ||
|
|
3f5e48a44e | ||
|
|
5b583e4792 | ||
|
|
3b1ec3e660 | ||
|
|
58b6937b09 | ||
|
|
6458ebc8e4 | ||
|
|
82c77ca807 | ||
|
|
d4de475747 | ||
|
|
50c37f53f2 | ||
|
|
6037ccdd50 | ||
|
|
270cf67e5f | ||
|
|
d51f4f471f | ||
|
|
8fa46c8f72 | ||
|
|
7cf71bc2d3 | ||
|
|
affbd72aa3 | ||
|
|
9e2d9ac59a | ||
|
|
2bf5c9a687 | ||
|
|
70008da6b4 | ||
|
|
d7b43af591 | ||
|
|
9f8bfab290 | ||
|
|
f080430440 | ||
|
|
834d92dd72 | ||
|
|
198cec9e1b | ||
|
|
97200a78b1 | ||
|
|
31d981e5ea | ||
|
|
a144988600 | ||
|
|
e26d3b3c01 | ||
|
|
c74a9235fc | ||
|
|
535fba8bfc | ||
|
|
af05139133 | ||
|
|
19017358b1 | ||
|
|
0f801fe6fd | ||
|
|
701ea3beaa | ||
|
|
5e680d0594 | ||
|
|
b9c396625c | ||
|
|
ad8914616b | ||
|
|
7e211d7daa | ||
|
|
7039c6616a | ||
|
|
453e8beb43 | ||
|
|
33d0363e03 | ||
|
|
302a6c068d | ||
|
|
0408f9c543 | ||
|
|
a7df5a4063 | ||
|
|
406cf611d9 | ||
|
|
1cf83a403f | ||
|
|
5cdb4b1960 | ||
|
|
46d5b682db | ||
|
|
68bff04515 | ||
|
|
d917e1874e | ||
|
|
695d8656c5 | ||
|
|
09da87cf5c | ||
|
|
7acdcc1034 | ||
|
|
f62b2bd9cd | ||
|
|
02da5f9970 | ||
|
|
ed714af854 | ||
|
|
7d4df6a83f | ||
|
|
ae030bcbc5 | ||
|
|
f12d044929 | ||
|
|
97544be5b6 | ||
|
|
47b86690b6 | ||
|
|
983f75caa6 | ||
|
|
af64d316c0 | ||
|
|
cc445926cf | ||
|
|
523d553e13 | ||
|
|
f3da7ff66e | ||
|
|
53bf1bfdab | ||
|
|
9d4b25e788 | ||
|
|
c254c9d095 | ||
|
|
e833c1d179 | ||
|
|
e7d52e25a2 | ||
|
|
2cf7c01759 | ||
|
|
ce5024f66f | ||
|
|
ff3db52044 | ||
|
|
8fc8fdca96 | ||
|
|
cf4a4966a8 | ||
|
|
3d12c0225b | ||
|
|
b2a58bec4a | ||
|
|
39526e28bc | ||
|
|
a1795901ee | ||
|
|
f7ba3b7e42 | ||
|
|
07612281b0 | ||
|
|
729164f534 | ||
|
|
9ff40346dd | ||
|
|
1855e9d201 | ||
|
|
6d595614a2 | ||
|
|
9254e12993 | ||
|
|
395aea307f | ||
|
|
3475e12fa6 | ||
|
|
cb5ef3da19 | ||
|
|
13d4ddc35b | ||
|
|
6633855ca7 | ||
|
|
d5cd2f2caa | ||
|
|
dfeeb6f8f3 | ||
|
|
68b2057205 | ||
|
|
f3b1f60a29 | ||
|
|
2471f8f7c5 | ||
|
|
31bc689977 | ||
|
|
33f34d540e | ||
|
|
444a0d98ac | ||
|
|
08400f18ba | ||
|
|
50f99c3208 | ||
|
|
5a8e1e43a4 | ||
|
|
8cd87e731b | ||
|
|
c76a06aeb5 | ||
|
|
53ef59c402 |
66
.github/workflows/build-cross-compile.yml
vendored
66
.github/workflows/build-cross-compile.yml
vendored
@@ -29,22 +29,22 @@ on:
|
|||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
gcc-major-version:
|
gcc-major-version:
|
||||||
required: false
|
required: true
|
||||||
type: string
|
type: string
|
||||||
default: '10'
|
|
||||||
apt-gcc-version:
|
apt-gcc-version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
apt-gcc-cross-version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
extra-conf-options:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
default: '10.3.0-1ubuntu1~20.04'
|
|
||||||
apt-gcc-cross-suffix:
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
default: 'cross1'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-cross-compile:
|
build-cross-compile:
|
||||||
name: build
|
name: build
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -54,20 +54,35 @@ jobs:
|
|||||||
- arm
|
- arm
|
||||||
- s390x
|
- s390x
|
||||||
- ppc64le
|
- ppc64le
|
||||||
|
- riscv64
|
||||||
include:
|
include:
|
||||||
- target-cpu: aarch64
|
- target-cpu: aarch64
|
||||||
debian-arch: arm64
|
|
||||||
gnu-arch: aarch64
|
gnu-arch: aarch64
|
||||||
|
debian-arch: arm64
|
||||||
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
|
debian-version: bullseye
|
||||||
- target-cpu: arm
|
- target-cpu: arm
|
||||||
debian-arch: armhf
|
|
||||||
gnu-arch: arm
|
gnu-arch: arm
|
||||||
|
debian-arch: armhf
|
||||||
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
|
debian-version: bullseye
|
||||||
gnu-abi: eabihf
|
gnu-abi: eabihf
|
||||||
- target-cpu: s390x
|
- target-cpu: s390x
|
||||||
debian-arch: s390x
|
|
||||||
gnu-arch: s390x
|
gnu-arch: s390x
|
||||||
|
debian-arch: s390x
|
||||||
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
|
debian-version: bullseye
|
||||||
- target-cpu: ppc64le
|
- target-cpu: ppc64le
|
||||||
debian-arch: ppc64el
|
|
||||||
gnu-arch: powerpc64le
|
gnu-arch: powerpc64le
|
||||||
|
debian-arch: ppc64el
|
||||||
|
debian-repository: https://httpredir.debian.org/debian/
|
||||||
|
debian-version: bullseye
|
||||||
|
- target-cpu: riscv64
|
||||||
|
gnu-arch: riscv64
|
||||||
|
debian-arch: riscv64
|
||||||
|
debian-repository: https://deb.debian.org/debian-ports
|
||||||
|
debian-keyring: /usr/share/keyrings/debian-ports-archive-keyring.gpg
|
||||||
|
debian-version: sid
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'Checkout the JDK source'
|
- name: 'Checkout the JDK source'
|
||||||
@@ -95,9 +110,10 @@ jobs:
|
|||||||
sudo apt-get install \
|
sudo apt-get install \
|
||||||
gcc-${{ inputs.gcc-major-version }}=${{ inputs.apt-gcc-version }} \
|
gcc-${{ inputs.gcc-major-version }}=${{ inputs.apt-gcc-version }} \
|
||||||
g++-${{ inputs.gcc-major-version }}=${{ inputs.apt-gcc-version }} \
|
g++-${{ inputs.gcc-major-version }}=${{ inputs.apt-gcc-version }} \
|
||||||
gcc-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}=${{ inputs.apt-gcc-version }}${{ inputs.apt-gcc-cross-suffix }} \
|
gcc-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}=${{ inputs.apt-gcc-cross-version }} \
|
||||||
g++-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}=${{ inputs.apt-gcc-version }}${{ inputs.apt-gcc-cross-suffix }} \
|
g++-${{ inputs.gcc-major-version }}-${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}=${{ inputs.apt-gcc-cross-version }} \
|
||||||
libxrandr-dev libxtst-dev libcups2-dev libasound2-dev
|
libxrandr-dev libxtst-dev libcups2-dev libasound2-dev \
|
||||||
|
debian-ports-archive-keyring
|
||||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}
|
||||||
|
|
||||||
- name: 'Check cache for sysroot'
|
- name: 'Check cache for sysroot'
|
||||||
@@ -113,14 +129,15 @@ jobs:
|
|||||||
|
|
||||||
- name: 'Create sysroot'
|
- name: 'Create sysroot'
|
||||||
run: >
|
run: >
|
||||||
sudo qemu-debootstrap
|
sudo debootstrap
|
||||||
--arch=${{ matrix.debian-arch }}
|
--arch=${{ matrix.debian-arch }}
|
||||||
--verbose
|
--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
|
--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
|
--resolve-deps
|
||||||
buster
|
$(test -n "${{ matrix.debian-keyring }}" && echo "--keyring=${{ matrix.debian-keyring }}")
|
||||||
|
${{ matrix.debian-version }}
|
||||||
sysroot
|
sysroot
|
||||||
https://httpredir.debian.org/debian/
|
${{ matrix.debian-repository }}
|
||||||
if: steps.get-cached-sysroot.outputs.cache-hit != 'true'
|
if: steps.get-cached-sysroot.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
- name: 'Prepare sysroot'
|
- name: 'Prepare sysroot'
|
||||||
@@ -128,7 +145,9 @@ jobs:
|
|||||||
# Prepare sysroot and remove unused files to minimize cache
|
# Prepare sysroot and remove unused files to minimize cache
|
||||||
sudo chroot sysroot symlinks -cr .
|
sudo chroot sysroot symlinks -cr .
|
||||||
sudo chown ${USER} -R sysroot
|
sudo chown ${USER} -R sysroot
|
||||||
rm -rf sysroot/{dev,proc,run,sys}
|
rm -rf sysroot/{dev,proc,run,sys,var}
|
||||||
|
rm -rf sysroot/usr/{sbin,bin,share}
|
||||||
|
rm -rf sysroot/usr/lib/{apt,udev,systemd}
|
||||||
if: steps.get-cached-sysroot.outputs.cache-hit != 'true'
|
if: steps.get-cached-sysroot.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
- name: 'Configure'
|
- name: 'Configure'
|
||||||
@@ -143,8 +162,13 @@ jobs:
|
|||||||
--openjdk-target=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}
|
--openjdk-target=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}
|
||||||
--with-sysroot=sysroot
|
--with-sysroot=sysroot
|
||||||
--with-build-jdk=${{ steps.buildjdk.outputs.jdk-path }}
|
--with-build-jdk=${{ steps.buildjdk.outputs.jdk-path }}
|
||||||
CC=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-gcc-10
|
--with-jmod-compress=zip-1
|
||||||
CXX=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-g++-10
|
CC=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-gcc-${{ inputs.gcc-major-version }}
|
||||||
|
CXX=${{ matrix.gnu-arch }}-linux-gnu${{ matrix.gnu-abi}}-g++-${{ inputs.gcc-major-version }}
|
||||||
|
${{ inputs.extra-conf-options }} || (
|
||||||
|
echo "Dumping config.log:" &&
|
||||||
|
cat config.log &&
|
||||||
|
exit 1)
|
||||||
|
|
||||||
- name: 'Build'
|
- name: 'Build'
|
||||||
id: build
|
id: build
|
||||||
|
|||||||
19
.github/workflows/build-linux.yml
vendored
19
.github/workflows/build-linux.yml
vendored
@@ -42,6 +42,13 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
default: '[ "debug", "release" ]'
|
default: '[ "debug", "release" ]'
|
||||||
|
gcc-major-version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
gcc-package-suffix:
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
apt-gcc-version:
|
apt-gcc-version:
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
@@ -55,7 +62,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build-linux:
|
build-linux:
|
||||||
name: build
|
name: build
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -101,8 +108,8 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install --only-upgrade apt
|
sudo apt-get install --only-upgrade apt
|
||||||
sudo apt-get install gcc-${{ inputs.apt-gcc-version }} g++-${{ inputs.apt-gcc-version }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
|
sudo apt-get install gcc-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }}=${{ inputs.apt-gcc-version }} g++-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }}=${{ inputs.apt-gcc-version }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
|
||||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}
|
||||||
|
|
||||||
- name: 'Configure'
|
- name: 'Configure'
|
||||||
run: >
|
run: >
|
||||||
@@ -115,7 +122,11 @@ jobs:
|
|||||||
--with-gtest=${{ steps.gtest.outputs.path }}
|
--with-gtest=${{ steps.gtest.outputs.path }}
|
||||||
--enable-jtreg-failure-handler
|
--enable-jtreg-failure-handler
|
||||||
--with-zlib=system
|
--with-zlib=system
|
||||||
${{ inputs.extra-conf-options }}
|
--with-jmod-compress=zip-1
|
||||||
|
${{ inputs.extra-conf-options }} || (
|
||||||
|
echo "Dumping config.log:" &&
|
||||||
|
cat config.log &&
|
||||||
|
exit 1)
|
||||||
|
|
||||||
- name: 'Build'
|
- name: 'Build'
|
||||||
id: build
|
id: build
|
||||||
|
|||||||
8
.github/workflows/build-macos.yml
vendored
8
.github/workflows/build-macos.yml
vendored
@@ -49,7 +49,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build-macos:
|
build-macos:
|
||||||
name: build
|
name: build
|
||||||
runs-on: macos-10.15
|
runs-on: macos-11
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -97,7 +97,11 @@ jobs:
|
|||||||
--with-gtest=${{ steps.gtest.outputs.path }}
|
--with-gtest=${{ steps.gtest.outputs.path }}
|
||||||
--enable-jtreg-failure-handler
|
--enable-jtreg-failure-handler
|
||||||
--with-zlib=system
|
--with-zlib=system
|
||||||
${{ inputs.extra-conf-options }}
|
--with-jmod-compress=zip-1
|
||||||
|
${{ inputs.extra-conf-options }} || (
|
||||||
|
echo "Dumping config.log:" &&
|
||||||
|
cat config.log &&
|
||||||
|
exit 1)
|
||||||
|
|
||||||
- name: 'Build'
|
- name: 'Build'
|
||||||
id: build
|
id: build
|
||||||
|
|||||||
6
.github/workflows/build-windows.yml
vendored
6
.github/workflows/build-windows.yml
vendored
@@ -110,7 +110,11 @@ jobs:
|
|||||||
--with-gtest=${{ steps.gtest.outputs.path }}
|
--with-gtest=${{ steps.gtest.outputs.path }}
|
||||||
--enable-jtreg-failure-handler
|
--enable-jtreg-failure-handler
|
||||||
--with-msvc-toolset-version=${{ inputs.msvc-toolset-version }}
|
--with-msvc-toolset-version=${{ inputs.msvc-toolset-version }}
|
||||||
${{ inputs.extra-conf-options }}
|
--with-jmod-compress=zip-1
|
||||||
|
${{ inputs.extra-conf-options }} || (
|
||||||
|
echo "Dumping config.log:" &&
|
||||||
|
cat config.log &&
|
||||||
|
exit 1)
|
||||||
env:
|
env:
|
||||||
# We need a minimal PATH on Windows
|
# We need a minimal PATH on Windows
|
||||||
# Set PATH to "", so just GITHUB_PATH is included
|
# Set PATH to "", so just GITHUB_PATH is included
|
||||||
|
|||||||
41
.github/workflows/main.yml
vendored
41
.github/workflows/main.yml
vendored
@@ -39,7 +39,7 @@ on:
|
|||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
cancel-in-progress: false
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ jobs:
|
|||||||
|
|
||||||
select:
|
select:
|
||||||
name: 'Select platforms'
|
name: 'Select platforms'
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
outputs:
|
outputs:
|
||||||
linux-x64: ${{ steps.include.outputs.linux-x64 }}
|
linux-x64: ${{ steps.include.outputs.linux-x64 }}
|
||||||
linux-x86: ${{ steps.include.outputs.linux-x86 }}
|
linux-x86: ${{ steps.include.outputs.linux-x86 }}
|
||||||
@@ -123,7 +123,8 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-linux.yml
|
uses: ./.github/workflows/build-linux.yml
|
||||||
with:
|
with:
|
||||||
platform: linux-x64
|
platform: linux-x64
|
||||||
apt-gcc-version: '10=10.3.0-1ubuntu1~20.04'
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.3.0-15ubuntu1'
|
||||||
# The linux-x64 jdk bundle is used as buildjdk for the cross-compile job
|
# The linux-x64 jdk bundle is used as buildjdk for the cross-compile job
|
||||||
if: needs.select.outputs.linux-x64 == 'true' || needs.select.outputs.linux-cross-compile == 'true'
|
if: needs.select.outputs.linux-x64 == 'true' || needs.select.outputs.linux-cross-compile == 'true'
|
||||||
|
|
||||||
@@ -133,11 +134,13 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-linux.yml
|
uses: ./.github/workflows/build-linux.yml
|
||||||
with:
|
with:
|
||||||
platform: linux-x86
|
platform: linux-x86
|
||||||
apt-gcc-version: '10-multilib'
|
gcc-major-version: '10'
|
||||||
|
gcc-package-suffix: '-multilib'
|
||||||
|
apt-gcc-version: '10.3.0-15ubuntu1'
|
||||||
apt-architecture: 'i386'
|
apt-architecture: 'i386'
|
||||||
# Some multilib libraries do not have proper inter-dependencies, so we have to
|
# Some multilib libraries do not have proper inter-dependencies, so we have to
|
||||||
# install their dependencies manually.
|
# install their dependencies manually.
|
||||||
apt-extra-packages: 'libfreetype6-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386'
|
apt-extra-packages: 'libfreetype6-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libc6-i386'
|
||||||
extra-conf-options: '--with-target-bits=32'
|
extra-conf-options: '--with-target-bits=32'
|
||||||
if: needs.select.outputs.linux-x86 == 'true'
|
if: needs.select.outputs.linux-x86 == 'true'
|
||||||
|
|
||||||
@@ -149,7 +152,8 @@ jobs:
|
|||||||
platform: linux-x64
|
platform: linux-x64
|
||||||
make-target: 'hotspot'
|
make-target: 'hotspot'
|
||||||
debug-levels: '[ "debug" ]'
|
debug-levels: '[ "debug" ]'
|
||||||
apt-gcc-version: '10=10.3.0-1ubuntu1~20.04'
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.3.0-15ubuntu1'
|
||||||
extra-conf-options: '--disable-precompiled-headers'
|
extra-conf-options: '--disable-precompiled-headers'
|
||||||
if: needs.select.outputs.linux-x64-variants == 'true'
|
if: needs.select.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
@@ -161,7 +165,8 @@ jobs:
|
|||||||
platform: linux-x64
|
platform: linux-x64
|
||||||
make-target: 'hotspot'
|
make-target: 'hotspot'
|
||||||
debug-levels: '[ "debug" ]'
|
debug-levels: '[ "debug" ]'
|
||||||
apt-gcc-version: '10=10.3.0-1ubuntu1~20.04'
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.3.0-15ubuntu1'
|
||||||
extra-conf-options: '--with-jvm-variants=zero --disable-precompiled-headers'
|
extra-conf-options: '--with-jvm-variants=zero --disable-precompiled-headers'
|
||||||
if: needs.select.outputs.linux-x64-variants == 'true'
|
if: needs.select.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
@@ -173,7 +178,8 @@ jobs:
|
|||||||
platform: linux-x64
|
platform: linux-x64
|
||||||
make-target: 'hotspot'
|
make-target: 'hotspot'
|
||||||
debug-levels: '[ "debug" ]'
|
debug-levels: '[ "debug" ]'
|
||||||
apt-gcc-version: '10=10.3.0-1ubuntu1~20.04'
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.3.0-15ubuntu1'
|
||||||
extra-conf-options: '--with-jvm-variants=minimal --disable-precompiled-headers'
|
extra-conf-options: '--with-jvm-variants=minimal --disable-precompiled-headers'
|
||||||
if: needs.select.outputs.linux-x64-variants == 'true'
|
if: needs.select.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
@@ -186,7 +192,8 @@ jobs:
|
|||||||
make-target: 'hotspot'
|
make-target: 'hotspot'
|
||||||
# Technically this is not the "debug" level, but we can't inject a new matrix state for just this job
|
# Technically this is not the "debug" level, but we can't inject a new matrix state for just this job
|
||||||
debug-levels: '[ "debug" ]'
|
debug-levels: '[ "debug" ]'
|
||||||
apt-gcc-version: '10=10.3.0-1ubuntu1~20.04'
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.3.0-15ubuntu1'
|
||||||
extra-conf-options: '--with-debug-level=optimized --disable-precompiled-headers'
|
extra-conf-options: '--with-debug-level=optimized --disable-precompiled-headers'
|
||||||
if: needs.select.outputs.linux-x64-variants == 'true'
|
if: needs.select.outputs.linux-x64-variants == 'true'
|
||||||
|
|
||||||
@@ -196,6 +203,10 @@ jobs:
|
|||||||
- select
|
- select
|
||||||
- build-linux-x64
|
- build-linux-x64
|
||||||
uses: ./.github/workflows/build-cross-compile.yml
|
uses: ./.github/workflows/build-cross-compile.yml
|
||||||
|
with:
|
||||||
|
gcc-major-version: '10'
|
||||||
|
apt-gcc-version: '10.3.0-15ubuntu1'
|
||||||
|
apt-gcc-cross-version: '10.3.0-8ubuntu1cross1'
|
||||||
if: needs.select.outputs.linux-cross-compile == 'true'
|
if: needs.select.outputs.linux-cross-compile == 'true'
|
||||||
|
|
||||||
build-macos-x64:
|
build-macos-x64:
|
||||||
@@ -204,7 +215,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-macos.yml
|
uses: ./.github/workflows/build-macos.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-x64
|
platform: macos-x64
|
||||||
xcode-toolset-version: '11.3.1'
|
xcode-toolset-version: '11.7'
|
||||||
if: needs.select.outputs.macos-x64 == 'true'
|
if: needs.select.outputs.macos-x64 == 'true'
|
||||||
|
|
||||||
build-macos-aarch64:
|
build-macos-aarch64:
|
||||||
@@ -223,7 +234,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-windows.yml
|
uses: ./.github/workflows/build-windows.yml
|
||||||
with:
|
with:
|
||||||
platform: windows-x64
|
platform: windows-x64
|
||||||
msvc-toolset-version: '14.25'
|
msvc-toolset-version: '14.29'
|
||||||
msvc-toolset-architecture: 'x86.x64'
|
msvc-toolset-architecture: 'x86.x64'
|
||||||
if: needs.select.outputs.windows-x64 == 'true'
|
if: needs.select.outputs.windows-x64 == 'true'
|
||||||
|
|
||||||
@@ -251,7 +262,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
platform: linux-x64
|
platform: linux-x64
|
||||||
bootjdk-platform: linux-x64
|
bootjdk-platform: linux-x64
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
test-linux-x86:
|
test-linux-x86:
|
||||||
name: linux-x86
|
name: linux-x86
|
||||||
@@ -261,7 +272,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
platform: linux-x86
|
platform: linux-x86
|
||||||
bootjdk-platform: linux-x64
|
bootjdk-platform: linux-x64
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
test-macos-x64:
|
test-macos-x64:
|
||||||
name: macos-x64
|
name: macos-x64
|
||||||
@@ -271,7 +282,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
platform: macos-x64
|
platform: macos-x64
|
||||||
bootjdk-platform: macos-x64
|
bootjdk-platform: macos-x64
|
||||||
runs-on: macos-10.15
|
runs-on: macos-11
|
||||||
|
|
||||||
test-windows-x64:
|
test-windows-x64:
|
||||||
name: windows-x64
|
name: windows-x64
|
||||||
@@ -286,7 +297,7 @@ jobs:
|
|||||||
# Remove bundles so they are not misconstrued as binary distributions from the JDK project
|
# Remove bundles so they are not misconstrued as binary distributions from the JDK project
|
||||||
remove-bundles:
|
remove-bundles:
|
||||||
name: 'Remove bundle artifacts'
|
name: 'Remove bundle artifacts'
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
if: always()
|
if: always()
|
||||||
needs:
|
needs:
|
||||||
- build-linux-x64
|
- build-linux-x64
|
||||||
|
|||||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -127,7 +127,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
# On macOS we need to install some dependencies for testing
|
# On macOS we need to install some dependencies for testing
|
||||||
brew install make
|
brew install make
|
||||||
sudo xcode-select --switch /Applications/Xcode_11.3.1.app/Contents/Developer
|
sudo xcode-select --switch /Applications/Xcode_11.7.app/Contents/Developer
|
||||||
# This will make GNU make available as 'make' and not only as 'gmake'
|
# This will make GNU make available as 'make' and not only as 'gmake'
|
||||||
echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
|
echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
|
||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS'
|
||||||
|
|||||||
57
README.md
57
README.md
@@ -1,11 +1,64 @@
|
|||||||
# Welcome to the JDK!
|
# Welcome to the JDK!
|
||||||
|
|
||||||
|
## Wakefield
|
||||||
|
This is a temporary section created to host information on the
|
||||||
|
[Wakefield](https://wiki.openjdk.java.net/display/wakefield) project.
|
||||||
|
|
||||||
|
### Building
|
||||||
|
There are two addition `configure` arguments:
|
||||||
|
```
|
||||||
|
--with-wayland specify prefix directory for the wayland package
|
||||||
|
(expecting the headers under PATH/include)
|
||||||
|
--with-wayland-include specify directory for the wayland include files
|
||||||
|
```
|
||||||
|
As usual, there should be no need to specify those explicitly unless you're doing
|
||||||
|
something tricky.
|
||||||
|
However, a variant of `libwayland-dev` needs to be installed on the build system.
|
||||||
|
|
||||||
|
### Running
|
||||||
|
Make sure your system is configured such that `libwayland` can find the socket to connect to;
|
||||||
|
usually this means that the environment variable `WAYLAND_DISPLAY` is set to something
|
||||||
|
sensible. Then add this argument to `java`
|
||||||
|
```
|
||||||
|
-Dawt.toolkit.name=WLToolkit
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
Testing that involves `Robot` is done inside a [Weston](https://gitlab.freedesktop.org/wayland/weston/)
|
||||||
|
instance with a special module loaded called `libwakefield`
|
||||||
|
that provides the necessary functionality. The Wayland-specific tests are therefore executed with a dedicated test driver
|
||||||
|
`test/jdk/java/awt/wakefield/WakefieldTestDriver.java`. The driver also provides an easy
|
||||||
|
way to run the test in several configurations with a different size and even number
|
||||||
|
of "outputs" (monitors).
|
||||||
|
|
||||||
|
To run the Wayland-specific tests, perform these steps:
|
||||||
|
* Install Weston version 9 (earlier versions are known NOT to work).
|
||||||
|
* Obtain `libwakefield.so` either by building from source (available under
|
||||||
|
`src/java.desktop/share/native/libwakefield` and not integrated into the rest of the
|
||||||
|
build infrastructure; see `README.md` there)
|
||||||
|
or by fetching the latest pre-built `x64` binary
|
||||||
|
```
|
||||||
|
wget https://github.com/mkartashev/wakefield/raw/main/libwakefield.so
|
||||||
|
```
|
||||||
|
* Set `LIBWAKEFIELD` environment variable to the full path to `libwakefield.so`
|
||||||
|
```
|
||||||
|
export LIBWAKEFIELD=/tmp/wakefield-testing/libwakefield.so
|
||||||
|
```
|
||||||
|
* Run `jtreg` like so
|
||||||
|
```
|
||||||
|
jtreg -e:XDG_RUNTIME_DIR -e:LIBWAKEFIELD -testjdk:... test/jdk/java/awt/wakefield/
|
||||||
|
```
|
||||||
|
|
||||||
|
This was verified to work in `Ubuntu 21.10`.
|
||||||
|
This does NOT work in `Ubuntu 21.04` or `Fedora 34`.
|
||||||
|
|
||||||
|
## Generic Info (not Wakefield-specific)
|
||||||
For build instructions please see the
|
For build instructions please see the
|
||||||
[online documentation](https://openjdk.java.net/groups/build/doc/building.html),
|
[online documentation](https://openjdk.org/groups/build/doc/building.html),
|
||||||
or either of these files:
|
or either of these files:
|
||||||
|
|
||||||
- [doc/building.html](doc/building.html) (html version)
|
- [doc/building.html](doc/building.html) (html version)
|
||||||
- [doc/building.md](doc/building.md) (markdown version)
|
- [doc/building.md](doc/building.md) (markdown version)
|
||||||
|
|
||||||
See <https://openjdk.java.net/> for more information about
|
See <https://openjdk.org/> for more information about
|
||||||
the OpenJDK Community and the JDK.
|
the OpenJDK Community and the JDK.
|
||||||
|
|||||||
22
bin/idea.sh
22
bin/idea.sh
@@ -215,15 +215,29 @@ replace_template_dir "$IDEA_OUTPUT"
|
|||||||
CLASSES=$IDEA_OUTPUT/classes
|
CLASSES=$IDEA_OUTPUT/classes
|
||||||
|
|
||||||
if [ "x$ANT_HOME" = "x" ] ; then
|
if [ "x$ANT_HOME" = "x" ] ; then
|
||||||
# try some common locations, before giving up
|
# try some common locations
|
||||||
if [ -f "/usr/share/ant/lib/ant.jar" ] ; then
|
if [ -f "/usr/share/ant/lib/ant.jar" ] ; then
|
||||||
ANT_HOME="/usr/share/ant"
|
ANT_HOME="/usr/share/ant"
|
||||||
elif [ -f "/usr/local/Cellar/ant/1.9.4/libexec/lib/ant.jar" ] ; then
|
|
||||||
ANT_HOME="/usr/local/Cellar/ant/1.9.4/libexec"
|
|
||||||
else
|
else
|
||||||
echo "FATAL: cannot find ant. Try setting ANT_HOME." >&2; exit 1
|
try_ant=$(ls /opt/homebrew/Cellar/ant/*/libexec/lib/ant.jar 2> /dev/null | sort -r | head -n 1)
|
||||||
|
if [ "x$try_ant" != "x" ] ; then
|
||||||
|
ANT_HOME=$(cd $(dirname $try_ant)/.. && pwd)
|
||||||
|
else
|
||||||
|
try_ant=$(ls /usr/local/Cellar/ant/*/libexec/lib/ant.jar 2> /dev/null | sort -r | head -n 1)
|
||||||
|
if [ "x$try_ant" != "x" ] ; then
|
||||||
|
ANT_HOME=$(cd $(dirname $try_ant)/.. && pwd)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ ! -f "$ANT_HOME/lib/ant.jar" ] ; then
|
||||||
|
echo "FATAL: ANT_HOME is incorrect. Try removing it and use autodetection, or fix the value" >&2; exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$ANT_HOME" = "x" ] ; then
|
||||||
|
echo "FATAL: cannot find ant. Try setting ANT_HOME." >&2; exit 1
|
||||||
|
fi
|
||||||
CP=$ANT_HOME/lib/ant.jar
|
CP=$ANT_HOME/lib/ant.jar
|
||||||
rm -rf $CLASSES; mkdir $CLASSES
|
rm -rf $CLASSES; mkdir $CLASSES
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,9 @@
|
|||||||
<li><a href="#make-control-variables">Make Control Variables</a></li>
|
<li><a href="#make-control-variables">Make Control Variables</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
<li><a href="#running-tests">Running Tests</a></li>
|
<li><a href="#running-tests">Running Tests</a></li>
|
||||||
|
<li><a href="#signing">Signing</a><ul>
|
||||||
|
<li><a href="#macos-1">macOS</a></li>
|
||||||
|
</ul></li>
|
||||||
<li><a href="#cross-compiling">Cross-compiling</a><ul>
|
<li><a href="#cross-compiling">Cross-compiling</a><ul>
|
||||||
<li><a href="#cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</a></li>
|
<li><a href="#cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</a></li>
|
||||||
<li><a href="#boot-jdk-and-build-jdk">Boot JDK and Build JDK</a></li>
|
<li><a href="#boot-jdk-and-build-jdk">Boot JDK and Build JDK</a></li>
|
||||||
@@ -112,13 +115,14 @@
|
|||||||
<li><a href="#developing-the-build-system-itself">Developing the Build System Itself</a></li>
|
<li><a href="#developing-the-build-system-itself">Developing the Build System Itself</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
<li><a href="#contributing-to-the-jdk">Contributing to the JDK</a></li>
|
<li><a href="#contributing-to-the-jdk">Contributing to the JDK</a></li>
|
||||||
|
<li><a href="#editing-this-document">Editing this document</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<h2 id="tldr-instructions-for-the-impatient">TL;DR (Instructions for the Impatient)</h2>
|
<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 Git (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">
|
<ol type="1">
|
||||||
<li><p><a href="#getting-the-source-code">Get the complete source code</a>:<br />
|
<li><p><a href="#getting-the-source-code">Get the complete source code</a>:<br />
|
||||||
<code>git clone https://git.openjdk.java.net/jdk/</code></p></li>
|
<code>git clone https://git.openjdk.org/jdk/</code></p></li>
|
||||||
<li><p><a href="#running-configure">Run configure</a>:<br />
|
<li><p><a href="#running-configure">Run configure</a>:<br />
|
||||||
<code>bash configure</code></p>
|
<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>
|
<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>
|
||||||
@@ -132,9 +136,9 @@
|
|||||||
<p>If any of these steps failed, or if you want to know more about build requirements or build functionality, please continue reading this document.</p>
|
<p>If any of these steps failed, or if you want to know more about build requirements or build functionality, please continue reading this document.</p>
|
||||||
<h2 id="introduction">Introduction</h2>
|
<h2 id="introduction">Introduction</h2>
|
||||||
<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>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>
|
<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.org/install">OpenJDK installation</a> for some methods of installing a prebuilt JDK.</p>
|
||||||
<h2 id="getting-the-source-code">Getting the Source Code</h2>
|
<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="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>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.org/">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>
|
<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>
|
<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>
|
<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>
|
||||||
@@ -148,7 +152,7 @@
|
|||||||
<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>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>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>
|
<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>
|
<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 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.org/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>
|
<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></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -194,7 +198,7 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p>The double version numbers for Linux are due to the hybrid model used at Oracle, where header files and external libraries from an older version are used when building on a more modern version of the OS.</p>
|
<p>The double version numbers for Linux are due to the hybrid model used at Oracle, where header files and external libraries from an older version are used when building on a more modern version of the OS.</p>
|
||||||
<p>The Build Group has a wiki page with <a href="https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms">Supported Build Platforms</a>. From time to time, this is updated by contributors to list successes or failures of building on different platforms.</p>
|
<p>The Build Group has a wiki page with <a href="https://wiki.openjdk.org/display/Build/Supported+Build+Platforms">Supported Build Platforms</a>. From time to time, this is updated by contributors to list successes or failures of building on different platforms.</p>
|
||||||
<h3 id="windows">Windows</h3>
|
<h3 id="windows">Windows</h3>
|
||||||
<p>Windows XP is not a supported platform, but all newer Windows should be able to build the JDK.</p>
|
<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>On Windows, it is important that you pay attention to the instructions in the <a href="#special-considerations">Special Considerations</a>.</p>
|
||||||
@@ -233,7 +237,7 @@
|
|||||||
<p>For Alpine Linux, aside from basic tooling, install the GNU versions of some programs:</p>
|
<p>For Alpine Linux, aside from basic tooling, install the GNU versions of some programs:</p>
|
||||||
<pre><code>sudo apk add build-base bash grep zip</code></pre>
|
<pre><code>sudo apk add build-base bash grep zip</code></pre>
|
||||||
<h3 id="aix">AIX</h3>
|
<h3 id="aix">AIX</h3>
|
||||||
<p>Please consult the AIX section of the <a href="https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms">Supported Build Platforms</a> OpenJDK Build Wiki page for details about which versions of AIX are supported.</p>
|
<p>Please consult the AIX section of the <a href="https://wiki.openjdk.org/display/Build/Supported+Build+Platforms">Supported Build Platforms</a> OpenJDK Build Wiki page for details about which versions of AIX are supported.</p>
|
||||||
<h2 id="native-compiler-toolchain-requirements">Native Compiler (Toolchain) Requirements</h2>
|
<h2 id="native-compiler-toolchain-requirements">Native Compiler (Toolchain) Requirements</h2>
|
||||||
<p>Large portions of the JDK consists of native code, that needs to be compiled to be able to run on the target platform. In theory, toolchain and operating system should be independent factors, but in practice there's more or less a one-to-one correlation between target operating system and toolchain.</p>
|
<p>Large portions of the JDK consists of native code, that needs to be compiled to be able to run on the target platform. In theory, toolchain and operating system should be independent factors, but in practice there's more or less a one-to-one correlation between target operating system and toolchain.</p>
|
||||||
<table>
|
<table>
|
||||||
@@ -300,11 +304,11 @@
|
|||||||
<p>It is advisable to keep an older version of Xcode for building the JDK when updating Xcode. This <a href="http://iosdevelopertips.com/xcode/install-multiple-versions-of-xcode.html">blog page</a> has good suggestions on managing multiple Xcode versions. To use a specific version of Xcode, use <code>xcode-select -s</code> before running <code>configure</code>, or use <code>--with-toolchain-path</code> to point to the version of Xcode to use, e.g. <code>configure --with-toolchain-path=/Applications/Xcode8.app/Contents/Developer/usr/bin</code></p>
|
<p>It is advisable to keep an older version of Xcode for building the JDK when updating Xcode. This <a href="http://iosdevelopertips.com/xcode/install-multiple-versions-of-xcode.html">blog page</a> has good suggestions on managing multiple Xcode versions. To use a specific version of Xcode, use <code>xcode-select -s</code> before running <code>configure</code>, or use <code>--with-toolchain-path</code> to point to the version of Xcode to use, e.g. <code>configure --with-toolchain-path=/Applications/Xcode8.app/Contents/Developer/usr/bin</code></p>
|
||||||
<p>If you have recently (inadvertently) updated your OS and/or Xcode version, and the JDK can no longer be built, please see the section on <a href="#problems-with-the-build-environment">Problems with the Build Environment</a>, and <a href="#getting-help">Getting Help</a> to find out if there are any recent, non-merged patches available for this update.</p>
|
<p>If you have recently (inadvertently) updated your OS and/or Xcode version, and the JDK can no longer be built, please see the section on <a href="#problems-with-the-build-environment">Problems with the Build Environment</a>, and <a href="#getting-help">Getting Help</a> to find out if there are any recent, non-merged patches available for this update.</p>
|
||||||
<h3 id="microsoft-visual-studio">Microsoft Visual Studio</h3>
|
<h3 id="microsoft-visual-studio">Microsoft Visual Studio</h3>
|
||||||
<p>For aarch64 machines running Windows the minimum accepted version is Visual Studio 2019 (16.8 or higher). For all other platforms the minimum accepted version of Visual Studio is 2017. Older versions will not be accepted by <code>configure</code> and will not work. For all platforms the maximum accepted version of Visual Studio is 2022.</p>
|
<p>The minimum accepted version is Visual Studio 2019 version 16.8. (Note that this version is often presented as "MSVC 14.28", and reported by cl.exe as 19.28.) Older versions will not be accepted by <code>configure</code> and will not work. The maximum accepted version of Visual Studio is 2022.</p>
|
||||||
<p>If you have multiple versions of Visual Studio installed, <code>configure</code> will by default pick the latest. You can request a specific version to be used by setting <code>--with-toolchain-version</code>, e.g. <code>--with-toolchain-version=2017</code>.</p>
|
<p>If you have multiple versions of Visual Studio installed, <code>configure</code> will by default pick the latest. You can request a specific version to be used by setting <code>--with-toolchain-version</code>, e.g. <code>--with-toolchain-version=2022</code>.</p>
|
||||||
<p>If you have Visual Studio installed but <code>configure</code> fails to detect it, it may be because of <a href="#spaces-in-path">spaces in path</a>.</p>
|
<p>If you have Visual Studio installed but <code>configure</code> fails to detect it, it may be because of <a href="#spaces-in-path">spaces in path</a>.</p>
|
||||||
<h3 id="ibm-xl-cc">IBM XL C/C++</h3>
|
<h3 id="ibm-xl-cc">IBM XL C/C++</h3>
|
||||||
<p>Please consult the AIX section of the <a href="https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms">Supported Build Platforms</a> OpenJDK Build Wiki page for details about which versions of XLC are supported.</p>
|
<p>Please consult the AIX section of the <a href="https://wiki.openjdk.org/display/Build/Supported+Build+Platforms">Supported Build Platforms</a> OpenJDK Build Wiki page for details about which versions of XLC are supported.</p>
|
||||||
<h2 id="boot-jdk-requirements">Boot JDK Requirements</h2>
|
<h2 id="boot-jdk-requirements">Boot JDK Requirements</h2>
|
||||||
<p>Paradoxically, building the JDK requires a pre-existing JDK. This is called the "boot JDK". The boot JDK does not, however, have to be a JDK built directly from the source code available in the OpenJDK Community. If you are porting the JDK to a new platform, chances are that there already exists another JDK for that platform that is usable as boot JDK.</p>
|
<p>Paradoxically, building the JDK requires a pre-existing JDK. This is called the "boot JDK". The boot JDK does not, however, have to be a JDK built directly from the source code available in the OpenJDK Community. If you are porting the JDK to a new platform, chances are that there already exists another JDK for that platform that is usable as boot JDK.</p>
|
||||||
<p>The rule of thumb is that the boot JDK for building JDK major version <em>N</em> should be a JDK of major version <em>N-1</em>, so for building JDK 9 a JDK 8 would be suitable as boot JDK. However, the JDK should be able to "build itself", so an up-to-date build of the current JDK source is an acceptable alternative. If you are following the <em>N-1</em> rule, make sure you've got the latest update version, since JDK 8 GA might not be able to build JDK 9 on all platforms.</p>
|
<p>The rule of thumb is that the boot JDK for building JDK major version <em>N</em> should be a JDK of major version <em>N-1</em>, so for building JDK 9 a JDK 8 would be suitable as boot JDK. However, the JDK should be able to "build itself", so an up-to-date build of the current JDK source is an acceptable alternative. If you are following the <em>N-1</em> rule, make sure you've got the latest update version, since JDK 8 GA might not be able to build JDK 9 on all platforms.</p>
|
||||||
@@ -508,8 +512,8 @@
|
|||||||
<li><code>SPEC_FILTER</code></li>
|
<li><code>SPEC_FILTER</code></li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="running-tests">Running Tests</h2>
|
<h2 id="running-tests">Running Tests</h2>
|
||||||
<p>Most of the JDK tests are using the <a href="http://openjdk.java.net/jtreg">JTReg</a> test framework. Make sure that your configuration knows where to find your installation of JTReg. If this is not picked up automatically, use the <code>--with-jtreg=<path to jtreg home></code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc.</p>
|
<p>Most of the JDK tests are using the <a href="http://openjdk.org/jtreg">JTReg</a> test framework. Make sure that your configuration knows where to find your installation of JTReg. If this is not picked up automatically, use the <code>--with-jtreg=<path to jtreg home></code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc.</p>
|
||||||
<p>The <a href="https://wiki.openjdk.java.net/display/Adoption">Adoption Group</a> provides recent builds of jtreg <a href="https://ci.adoptopenjdk.net/view/Dependencies/job/dependency_pipeline/lastSuccessfulBuild/artifact/jtreg/">here</a>. Download the latest <code>.tar.gz</code> file, unpack it, and point <code>--with-jtreg</code> to the <code>jtreg</code> directory that you just unpacked.</p>
|
<p>The <a href="https://wiki.openjdk.org/display/Adoption">Adoption Group</a> provides recent builds of jtreg <a href="https://ci.adoptopenjdk.net/view/Dependencies/job/dependency_pipeline/lastSuccessfulBuild/artifact/jtreg/">here</a>. Download the latest <code>.tar.gz</code> file, unpack it, and point <code>--with-jtreg</code> to the <code>jtreg</code> directory that you just unpacked.</p>
|
||||||
<p>Building of Hotspot Gtest suite requires the source code of Google Test framework. The top directory, which contains both <code>googletest</code> and <code>googlemock</code> directories, should be specified via <code>--with-gtest</code>. The supported version of Google Test is 1.8.1, whose source code can be obtained:</p>
|
<p>Building of Hotspot Gtest suite requires the source code of Google Test framework. The top directory, which contains both <code>googletest</code> and <code>googlemock</code> directories, should be specified via <code>--with-gtest</code>. The supported version of Google Test is 1.8.1, whose source code can be obtained:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>by downloading and unpacking the source bundle from <a href="https://github.com/google/googletest/releases/tag/release-1.8.1">here</a></li>
|
<li>by downloading and unpacking the source bundle from <a href="https://github.com/google/googletest/releases/tag/release-1.8.1">here</a></li>
|
||||||
@@ -518,6 +522,12 @@
|
|||||||
<p>To execute the most basic tests (tier 1), use:</p>
|
<p>To execute the most basic tests (tier 1), use:</p>
|
||||||
<pre><code>make run-test-tier1</code></pre>
|
<pre><code>make run-test-tier1</code></pre>
|
||||||
<p>For more details on how to run tests, please see <strong>Testing the JDK</strong> (<a href="testing.html">html</a>, <a href="testing.md">markdown</a>).</p>
|
<p>For more details on how to run tests, please see <strong>Testing the JDK</strong> (<a href="testing.html">html</a>, <a href="testing.md">markdown</a>).</p>
|
||||||
|
<h2 id="signing">Signing</h2>
|
||||||
|
<h3 id="macos-1">macOS</h3>
|
||||||
|
<p>Modern versions of macOS require applications to be signed and notarizied before distribution. See Apple's documentation for more background on what this means and how it works. To help support this, the JDK build can be configured to automatically sign all native binaries, and the JDK bundle, with all the options needed for successful notarization, as well as all the entitlements required by the JDK. To enable <code>hardened</code> signing, use configure parameter <code>--with-macosx-codesign=hardened</code> and configure the signing identity you wish to use with <code>--with-macosx-codesign-identity=<identity></code>. The identity refers to a signing identity from Apple that needs to be preinstalled on the build host.</p>
|
||||||
|
<p>When not signing for distribution with the hardened option, the JDK build will still attempt to perform <code>adhoc</code> signing to add the special entitlement <code>com.apple.security.get-task-allow</code> to each binary. This entitlement is required to be able to dump core files from a process. Note that adding this entitlement makes the build invalid for notarization, so it is only added when signing in <code>debug</code> mode. To explicitly enable this kind of adhoc signing, use configure parameter <code>--with-macosx-codesign=debug</code>. It will be enabled by default in most cases.</p>
|
||||||
|
<p>It's also possible to completely disable any explicit codesign operations done by the JDK build using the configure parameter <code>--without-macosx-codesign</code>. The exact behavior then depends on the architecture. For macOS on x64, it (at least at the time of this writing) results in completely unsigned binaries that should still work fine for development and debugging purposes. On aarch64, the Xcode linker will apply a default "adhoc" signing, without any entitlements. Such a build does not allow dumping core files.</p>
|
||||||
|
<p>The default mode "auto" will try for <code>hardened</code> signing if the debug level is <code>release</code> and either the default identity or the specified identity is valid. If hardened isn't possible, then <code>debug</code> signing is chosen if it works. If nothing works, the codesign build step is disabled.</p>
|
||||||
<h2 id="cross-compiling">Cross-compiling</h2>
|
<h2 id="cross-compiling">Cross-compiling</h2>
|
||||||
<p>Cross-compiling means using one platform (the <em>build</em> platform) to generate output that can ran on another platform (the <em>target</em> platform).</p>
|
<p>Cross-compiling means using one platform (the <em>build</em> platform) to generate output that can ran on another platform (the <em>target</em> platform).</p>
|
||||||
<p>The typical reason for cross-compiling is that the build is performed on a more powerful desktop computer, but the resulting binaries will be able to run on a different, typically low-performing system. Most of the complications that arise when building for embedded is due to this separation of <em>build</em> and <em>target</em> systems.</p>
|
<p>The typical reason for cross-compiling is that the build is performed on a more powerful desktop computer, but the resulting binaries will be able to run on a different, typically low-performing system. Most of the complications that arise when building for embedded is due to this separation of <em>build</em> and <em>target</em> systems.</p>
|
||||||
@@ -810,7 +820,7 @@ ls build/linux-aarch64-server-release/</code></pre></li>
|
|||||||
<p><a href="http://github.com/icecc/icecream">icecc/icecream</a> is a simple way to setup a distributed compiler network. If you have multiple machines available for building the JDK, you can drastically cut individual build times by utilizing it.</p>
|
<p><a href="http://github.com/icecc/icecream">icecc/icecream</a> is a simple way to setup a distributed compiler network. If you have multiple machines available for building the JDK, you can drastically cut individual build times by utilizing it.</p>
|
||||||
<p>To use, setup an icecc network, and install icecc on the build machine. Then run <code>configure</code> using <code>--enable-icecc</code>.</p>
|
<p>To use, setup an icecc network, and install icecc on the build machine. Then run <code>configure</code> using <code>--enable-icecc</code>.</p>
|
||||||
<h3 id="using-sjavac">Using sjavac</h3>
|
<h3 id="using-sjavac">Using sjavac</h3>
|
||||||
<p>To speed up Java compilation, especially incremental compilations, you can try the experimental sjavac compiler by using <code>--enable-sjavac</code>.</p>
|
<p>To speed up compilation of Java code, especially during incremental compilations, the sjavac server is automatically enabled in the configuration step by default. To explicitly enable or disable sjavac, use either <code>--enable-javac-server</code> or <code>--disable-javac-server</code>.</p>
|
||||||
<h3 id="building-the-right-target">Building the Right Target</h3>
|
<h3 id="building-the-right-target">Building the Right Target</h3>
|
||||||
<p>Selecting the proper target to build can have dramatic impact on build time. For normal usage, <code>jdk</code> or the default target is just fine. You only need to build <code>images</code> for shipping, or if your tests require it.</p>
|
<p>Selecting the proper target to build can have dramatic impact on build time. For normal usage, <code>jdk</code> or the default target is just fine. You only need to build <code>images</code> for shipping, or if your tests require it.</p>
|
||||||
<p>See also <a href="#using-fine-grained-make-targets">Using Fine-Grained Make Targets</a> on how to build an even smaller subset of the product.</p>
|
<p>See also <a href="#using-fine-grained-make-targets">Using Fine-Grained Make Targets</a> on how to build an even smaller subset of the product.</p>
|
||||||
@@ -886,7 +896,7 @@ spawn failed</code></pre>
|
|||||||
<h4 id="spaces-in-path">Spaces in Path</h4>
|
<h4 id="spaces-in-path">Spaces in Path</h4>
|
||||||
<p>On Windows, when configuring, <code>fixpath.sh</code> may report that some directory names have spaces. Usually, it assumes those directories have <a href="https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-8dot3name">short paths</a>. You can run <code>fsutil file setshortname</code> in <code>cmd</code> on certain directories, such as <code>Microsoft Visual Studio</code> or <code>Windows Kits</code>, to assign arbitrary short paths so <code>configure</code> can access them.</p>
|
<p>On Windows, when configuring, <code>fixpath.sh</code> may report that some directory names have spaces. Usually, it assumes those directories have <a href="https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-8dot3name">short paths</a>. You can run <code>fsutil file setshortname</code> in <code>cmd</code> on certain directories, such as <code>Microsoft Visual Studio</code> or <code>Windows Kits</code>, to assign arbitrary short paths so <code>configure</code> can access them.</p>
|
||||||
<h3 id="getting-help">Getting Help</h3>
|
<h3 id="getting-help">Getting Help</h3>
|
||||||
<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 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.org">build-dev@openjdk.org</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>
|
<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="reproducible-builds">Reproducible Builds</h2>
|
<h2 id="reproducible-builds">Reproducible Builds</h2>
|
||||||
<p>Build reproducibility is the property of getting exactly the same bits out when building, every time, independent on who builds the product, or where. This is for many reasons a harder goal than it initially appears, but it is an important goal, for security reasons and others. Please see <a href="https://reproducible-builds.org">Reproducible Builds</a> for more information about the background and reasons for reproducible builds.</p>
|
<p>Build reproducibility is the property of getting exactly the same bits out when building, every time, independent on who builds the product, or where. This is for many reasons a harder goal than it initially appears, but it is an important goal, for security reasons and others. Please see <a href="https://reproducible-builds.org">Reproducible Builds</a> for more information about the background and reasons for reproducible builds.</p>
|
||||||
@@ -898,13 +908,13 @@ spawn failed</code></pre>
|
|||||||
<pre><code>export SOURCE_DATE_EPOCH=946684800
|
<pre><code>export SOURCE_DATE_EPOCH=946684800
|
||||||
bash configure --with-version-opt=adhoc
|
bash configure --with-version-opt=adhoc
|
||||||
make</code></pre>
|
make</code></pre>
|
||||||
<p>Note that regardless if you specify a source date for <code>configure</code> or not, the JDK build system will set <code>SOURCE_DATE_EPOCH</code> for all build tools when building. If <code>--with-source-date</code> has the value <code>updated</code> (which is the default unless <code>SOURCE_DATE_EPOCH</code> is found by in the environment by <code>configure</code>), the source date value will be determined at build time.</p>
|
<p>Note that regardless if you specify a source date for <code>configure</code> or not, the JDK build system will set <code>SOURCE_DATE_EPOCH</code> for all build tools when building. If <code>--with-source-date</code> has the value <code>current</code> (which is the default unless <code>SOURCE_DATE_EPOCH</code> is found by in the environment by <code>configure</code>), the source date value will be determined at configure time.</p>
|
||||||
<p>There are several aspects of reproducible builds that can be individually adjusted by <code>configure</code> arguments. If any of these are given, they will override the value derived from <code>SOURCE_DATE_EPOCH</code>. These arguments are:</p>
|
<p>There are several aspects of reproducible builds that can be individually adjusted by <code>configure</code> arguments. If any of these are given, they will override the value derived from <code>SOURCE_DATE_EPOCH</code>. These arguments are:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p><code>--with-source-date</code></p>
|
<li><p><code>--with-source-date</code></p>
|
||||||
<p>This option controls how the JDK build sets <code>SOURCE_DATE_EPOCH</code> when building. It can be set to a value describing a date, either an epoch based timestamp as an integer, or a valid ISO-8601 date.</p>
|
<p>This option controls how the JDK build sets <code>SOURCE_DATE_EPOCH</code> when building. It can be set to a value describing a date, either an epoch based timestamp as an integer, or a valid ISO-8601 date.</p>
|
||||||
<p>It can also be set to one of the special values <code>current</code>, <code>updated</code> or <code>version</code>. <code>current</code> means that the time of running <code>configure</code> will be used. <code>version</code> will use the nominal release date for the current JDK version. <code>updated</code>, which means that <code>SOURCE_DATE_EPOCH</code> will be set to the current time each time you are running <code>make</code>. All choices, except for <code>updated</code>, will set a fixed value for the source date timestamp.</p>
|
<p>It can also be set to one of the special values <code>current</code>, <code>updated</code> or <code>version</code>. <code>current</code> means that the time of running <code>configure</code> will be used. <code>version</code> will use the nominal release date for the current JDK version. <code>updated</code>, which means that <code>SOURCE_DATE_EPOCH</code> will be set to the current time each time you are running <code>make</code>. All choices, except for <code>updated</code>, will set a fixed value for the source date timestamp.</p>
|
||||||
<p>When <code>SOURCE_DATE_EPOCH</code> is set, the default value for <code>--with-source-date</code> will be the value given by <code>SOURCE_DATE_EPOCH</code>. Otherwise, the default value is <code>updated</code>.</p></li>
|
<p>When <code>SOURCE_DATE_EPOCH</code> is set, the default value for <code>--with-source-date</code> will be the value given by <code>SOURCE_DATE_EPOCH</code>. Otherwise, the default value is <code>current</code>.</p></li>
|
||||||
<li><p><code>--with-hotspot-build-time</code></p>
|
<li><p><code>--with-hotspot-build-time</code></p>
|
||||||
<p>This option controls the build time string that will be included in the hotspot library (<code>libjvm.so</code> or <code>jvm.dll</code>). When the source date is fixed (e.g. by setting <code>SOURCE_DATE_EPOCH</code>), the default value for <code>--with-hotspot-build-time</code> will be an ISO 8601 representation of that time stamp. Otherwise the default value will be the current time when building hotspot.</p></li>
|
<p>This option controls the build time string that will be included in the hotspot library (<code>libjvm.so</code> or <code>jvm.dll</code>). When the source date is fixed (e.g. by setting <code>SOURCE_DATE_EPOCH</code>), the default value for <code>--with-hotspot-build-time</code> will be an ISO 8601 representation of that time stamp. Otherwise the default value will be the current time when building hotspot.</p></li>
|
||||||
<li><p><code>--with-copyright-year</code></p>
|
<li><p><code>--with-copyright-year</code></p>
|
||||||
@@ -1027,11 +1037,13 @@ test-support/</code></pre>
|
|||||||
<pre><code>make COMPARE_BUILD=CONF=--enable-new-hotspot-feature:MAKE=hotspot</code></pre>
|
<pre><code>make COMPARE_BUILD=CONF=--enable-new-hotspot-feature:MAKE=hotspot</code></pre>
|
||||||
<p>See <code>make/InitSupport.gmk</code> for details on how to use <code>COMPARE_BUILD</code>.</p>
|
<p>See <code>make/InitSupport.gmk</code> for details on how to use <code>COMPARE_BUILD</code>.</p>
|
||||||
<p>To analyze build performance, run with <code>LOG=trace</code> and check <code>$BUILD/build-trace-time.log</code>. Use <code>JOBS=1</code> to avoid parallelism.</p>
|
<p>To analyze build performance, run with <code>LOG=trace</code> and check <code>$BUILD/build-trace-time.log</code>. Use <code>JOBS=1</code> to avoid parallelism.</p>
|
||||||
<p>Please check that you adhere to the <a href="http://openjdk.java.net/groups/build/doc/code-conventions.html">Code Conventions for the Build System</a> before submitting patches.</p>
|
<p>Please check that you adhere to the <a href="http://openjdk.org/groups/build/doc/code-conventions.html">Code Conventions for the Build System</a> before submitting patches.</p>
|
||||||
<h2 id="contributing-to-the-jdk">Contributing to the JDK</h2>
|
<h2 id="contributing-to-the-jdk">Contributing to the JDK</h2>
|
||||||
<p>So, now you've built your JDK, and made your first patch, and want to contribute it back to the OpenJDK Community.</p>
|
<p>So, now you've built your JDK, and made your first patch, and want to contribute it back to the OpenJDK Community.</p>
|
||||||
<p>First of all: Thank you! We gladly welcome your contribution. However, please bear in mind that the JDK is a massive project, and we must ask you to follow our rules and guidelines to be able to accept your contribution.</p>
|
<p>First of all: Thank you! We gladly welcome your contribution. However, please bear in mind that the JDK is a massive project, and we must ask you to follow our rules and guidelines to be able to accept your contribution.</p>
|
||||||
<p>The official place to start is the <a href="http://openjdk.java.net/contribute/">'How to contribute' page</a>. There is also an official (but somewhat outdated and skimpy on details) <a href="http://openjdk.java.net/guide/">Developer's Guide</a>.</p>
|
<p>The official place to start is the <a href="http://openjdk.org/contribute/">'How to contribute' page</a>. There is also an official (but somewhat outdated and skimpy on details) <a href="http://openjdk.org/guide/">Developer's Guide</a>.</p>
|
||||||
<p>If this seems overwhelming to you, the Adoption Group is there to help you! A good place to start is their <a href="https://wiki.openjdk.java.net/display/Adoption/New+Contributor">'New Contributor' page</a>, or start reading the comprehensive <a href="https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/">Getting Started Kit</a>. The Adoption Group will also happily answer any questions you have about contributing. Contact them by <a href="http://mail.openjdk.java.net/mailman/listinfo/adoption-discuss">mail</a> or <a href="http://openjdk.java.net/irc/">IRC</a>.</p>
|
<p>If this seems overwhelming to you, the Adoption Group is there to help you! A good place to start is their <a href="https://wiki.openjdk.org/display/Adoption/New+Contributor">'New Contributor' page</a>, or start reading the comprehensive <a href="https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/">Getting Started Kit</a>. The Adoption Group will also happily answer any questions you have about contributing. Contact them by <a href="http://mail.openjdk.org/mailman/listinfo/adoption-discuss">mail</a> or <a href="http://openjdk.org/irc/">IRC</a>.</p>
|
||||||
|
<h2 id="editing-this-document">Editing this document</h2>
|
||||||
|
<p>If you want to contribute changes to this document, edit <code>doc/building.md</code> and then run <code>make update-build-docs</code> to generate the same changes in <code>doc/building.html</code>.</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ 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.
|
on Windows) and cloned the top-level JDK repository that you want to build.
|
||||||
|
|
||||||
1. [Get the complete source code](#getting-the-source-code): \
|
1. [Get the complete source code](#getting-the-source-code): \
|
||||||
`git clone https://git.openjdk.java.net/jdk/`
|
`git clone https://git.openjdk.org/jdk/`
|
||||||
|
|
||||||
2. [Run configure](#running-configure): \
|
2. [Run configure](#running-configure): \
|
||||||
`bash configure`
|
`bash configure`
|
||||||
@@ -40,14 +40,14 @@ reasonably powerful hardware.
|
|||||||
|
|
||||||
If you just want to use the JDK and not build it yourself, this document is not
|
If you just want to use the JDK and not build it yourself, this document is not
|
||||||
for you. See for instance [OpenJDK installation](
|
for you. See for instance [OpenJDK installation](
|
||||||
http://openjdk.java.net/install) for some methods of installing a prebuilt
|
http://openjdk.org/install) for some methods of installing a prebuilt
|
||||||
JDK.
|
JDK.
|
||||||
|
|
||||||
## Getting the Source Code
|
## Getting the Source Code
|
||||||
|
|
||||||
Make sure you are getting the correct version. As of JDK 10, the source is no
|
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
|
longer split into separate repositories so you only need to clone one single
|
||||||
repository. At the [OpenJDK Git site](https://git.openjdk.java.net/) you
|
repository. At the [OpenJDK Git site](https://git.openjdk.org/) you
|
||||||
can see a list of all available repositories. If you want to build an older version,
|
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 `jdk11u` repo, which contains
|
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.
|
incremental updates, instead of the `jdk11` repo, which was frozen at JDK 11 GA.
|
||||||
@@ -96,7 +96,7 @@ on where and how to check out the source code.
|
|||||||
Cygwin paths (which are used throughout the JDK build system).
|
Cygwin paths (which are used throughout the JDK build system).
|
||||||
However, it does not currently work well with the Skara CLI tooling.
|
However, it does not currently work well with the Skara CLI tooling.
|
||||||
Please see the [Skara wiki on Git clients](
|
Please see the [Skara wiki on Git clients](
|
||||||
https://wiki.openjdk.java.net/display/SKARA/Skara#Skara-Git) for
|
https://wiki.openjdk.org/display/SKARA/Skara#Skara-Git) for
|
||||||
up-to-date information about the Skara git client support.
|
up-to-date information about the Skara git client support.
|
||||||
|
|
||||||
* The [Git for Windows](https://gitforwindows.org) client has issues
|
* The [Git for Windows](https://gitforwindows.org) client has issues
|
||||||
@@ -173,7 +173,7 @@ used at Oracle, where header files and external libraries from an older version
|
|||||||
are used when building on a more modern version of the OS.
|
are used when building on a more modern version of the OS.
|
||||||
|
|
||||||
The Build Group has a wiki page with [Supported Build Platforms](
|
The Build Group has a wiki page with [Supported Build Platforms](
|
||||||
https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms). From
|
https://wiki.openjdk.org/display/Build/Supported+Build+Platforms). From
|
||||||
time to time, this is updated by contributors to list successes or failures of
|
time to time, this is updated by contributors to list successes or failures of
|
||||||
building on different platforms.
|
building on different platforms.
|
||||||
|
|
||||||
@@ -303,7 +303,7 @@ sudo apk add build-base bash grep zip
|
|||||||
### AIX
|
### AIX
|
||||||
|
|
||||||
Please consult the AIX section of the [Supported Build Platforms](
|
Please consult the AIX section of the [Supported Build Platforms](
|
||||||
https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms) OpenJDK
|
https://wiki.openjdk.org/display/Build/Supported+Build+Platforms) OpenJDK
|
||||||
Build Wiki page for details about which versions of AIX are supported.
|
Build Wiki page for details about which versions of AIX are supported.
|
||||||
|
|
||||||
## Native Compiler (Toolchain) Requirements
|
## Native Compiler (Toolchain) Requirements
|
||||||
@@ -382,14 +382,14 @@ available for this update.
|
|||||||
|
|
||||||
### Microsoft Visual Studio
|
### Microsoft Visual Studio
|
||||||
|
|
||||||
For aarch64 machines running Windows the minimum accepted version is Visual Studio 2019
|
The minimum accepted version is Visual Studio 2019 version 16.8. (Note that this
|
||||||
(16.8 or higher). For all other platforms the minimum accepted version of
|
version is often presented as "MSVC 14.28", and reported by cl.exe as 19.28.)
|
||||||
Visual Studio is 2017. Older versions will not be accepted by `configure` and will
|
Older versions will not be accepted by `configure` and will not work. The
|
||||||
not work. For all platforms the maximum accepted version of Visual Studio is 2022.
|
maximum accepted version of Visual Studio is 2022.
|
||||||
|
|
||||||
If you have multiple versions of Visual Studio installed, `configure` will by
|
If you have multiple versions of Visual Studio installed, `configure` will by
|
||||||
default pick the latest. You can request a specific version to be used by
|
default pick the latest. You can request a specific version to be used by
|
||||||
setting `--with-toolchain-version`, e.g. `--with-toolchain-version=2017`.
|
setting `--with-toolchain-version`, e.g. `--with-toolchain-version=2022`.
|
||||||
|
|
||||||
If you have Visual Studio installed but `configure` fails to detect it, it may
|
If you have Visual Studio installed but `configure` fails to detect it, it may
|
||||||
be because of [spaces in path](#spaces-in-path).
|
be because of [spaces in path](#spaces-in-path).
|
||||||
@@ -397,7 +397,7 @@ be because of [spaces in path](#spaces-in-path).
|
|||||||
### IBM XL C/C++
|
### IBM XL C/C++
|
||||||
|
|
||||||
Please consult the AIX section of the [Supported Build Platforms](
|
Please consult the AIX section of the [Supported Build Platforms](
|
||||||
https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms) OpenJDK
|
https://wiki.openjdk.org/display/Build/Supported+Build+Platforms) OpenJDK
|
||||||
Build Wiki page for details about which versions of XLC are supported.
|
Build Wiki page for details about which versions of XLC are supported.
|
||||||
|
|
||||||
|
|
||||||
@@ -848,14 +848,14 @@ Suggestions for Advanced Users](#hints-and-suggestions-for-advanced-users) and
|
|||||||
|
|
||||||
## Running Tests
|
## Running Tests
|
||||||
|
|
||||||
Most of the JDK tests are using the [JTReg](http://openjdk.java.net/jtreg)
|
Most of the JDK tests are using the [JTReg](http://openjdk.org/jtreg)
|
||||||
test framework. Make sure that your configuration knows where to find your
|
test framework. Make sure that your configuration knows where to find your
|
||||||
installation of JTReg. If this is not picked up automatically, use the
|
installation of JTReg. If this is not picked up automatically, use the
|
||||||
`--with-jtreg=<path to jtreg home>` option to point to the JTReg framework.
|
`--with-jtreg=<path to jtreg home>` option to point to the JTReg framework.
|
||||||
Note that this option should point to the JTReg home, i.e. the top directory,
|
Note that this option should point to the JTReg home, i.e. the top directory,
|
||||||
containing `lib/jtreg.jar` etc.
|
containing `lib/jtreg.jar` etc.
|
||||||
|
|
||||||
The [Adoption Group](https://wiki.openjdk.java.net/display/Adoption) provides
|
The [Adoption Group](https://wiki.openjdk.org/display/Adoption) provides
|
||||||
recent builds of jtreg [here](
|
recent builds of jtreg [here](
|
||||||
https://ci.adoptopenjdk.net/view/Dependencies/job/dependency_pipeline/lastSuccessfulBuild/artifact/jtreg/).
|
https://ci.adoptopenjdk.net/view/Dependencies/job/dependency_pipeline/lastSuccessfulBuild/artifact/jtreg/).
|
||||||
Download the latest `.tar.gz` file, unpack it, and point `--with-jtreg` to the
|
Download the latest `.tar.gz` file, unpack it, and point `--with-jtreg` to the
|
||||||
@@ -877,6 +877,42 @@ make run-test-tier1
|
|||||||
For more details on how to run tests, please see **Testing the JDK**
|
For more details on how to run tests, please see **Testing the JDK**
|
||||||
([html](testing.html), [markdown](testing.md)).
|
([html](testing.html), [markdown](testing.md)).
|
||||||
|
|
||||||
|
## Signing
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
|
||||||
|
Modern versions of macOS require applications to be signed and notarizied before
|
||||||
|
distribution. See Apple's documentation for more background on what this means
|
||||||
|
and how it works. To help support this, the JDK build can be configured to
|
||||||
|
automatically sign all native binaries, and the JDK bundle, with all the options
|
||||||
|
needed for successful notarization, as well as all the entitlements required by
|
||||||
|
the JDK. To enable `hardened` signing, use configure parameter
|
||||||
|
`--with-macosx-codesign=hardened` and configure the signing identity you wish to
|
||||||
|
use with `--with-macosx-codesign-identity=<identity>`. The identity refers to a
|
||||||
|
signing identity from Apple that needs to be preinstalled on the build host.
|
||||||
|
|
||||||
|
When not signing for distribution with the hardened option, the JDK build will
|
||||||
|
still attempt to perform `adhoc` signing to add the special entitlement
|
||||||
|
`com.apple.security.get-task-allow` to each binary. This entitlement is required
|
||||||
|
to be able to dump core files from a process. Note that adding this entitlement
|
||||||
|
makes the build invalid for notarization, so it is only added when signing in
|
||||||
|
`debug` mode. To explicitly enable this kind of adhoc signing, use configure
|
||||||
|
parameter `--with-macosx-codesign=debug`. It will be enabled by default in most
|
||||||
|
cases.
|
||||||
|
|
||||||
|
It's also possible to completely disable any explicit codesign operations done
|
||||||
|
by the JDK build using the configure parameter `--without-macosx-codesign`.
|
||||||
|
The exact behavior then depends on the architecture. For macOS on x64, it (at
|
||||||
|
least at the time of this writing) results in completely unsigned binaries that
|
||||||
|
should still work fine for development and debugging purposes. On aarch64, the
|
||||||
|
Xcode linker will apply a default "adhoc" signing, without any entitlements.
|
||||||
|
Such a build does not allow dumping core files.
|
||||||
|
|
||||||
|
The default mode "auto" will try for `hardened` signing if the debug level is
|
||||||
|
`release` and either the default identity or the specified identity is valid.
|
||||||
|
If hardened isn't possible, then `debug` signing is chosen if it works. If
|
||||||
|
nothing works, the codesign build step is disabled.
|
||||||
|
|
||||||
## Cross-compiling
|
## Cross-compiling
|
||||||
|
|
||||||
Cross-compiling means using one platform (the *build* platform) to generate
|
Cross-compiling means using one platform (the *build* platform) to generate
|
||||||
@@ -1296,8 +1332,10 @@ run `configure` using `--enable-icecc`.
|
|||||||
|
|
||||||
### Using sjavac
|
### Using sjavac
|
||||||
|
|
||||||
To speed up Java compilation, especially incremental compilations, you can try
|
To speed up compilation of Java code, especially during incremental compilations,
|
||||||
the experimental sjavac compiler by using `--enable-sjavac`.
|
the sjavac server is automatically enabled in the configuration step by default.
|
||||||
|
To explicitly enable or disable sjavac, use either `--enable-javac-server`
|
||||||
|
or `--disable-javac-server`.
|
||||||
|
|
||||||
### Building the Right Target
|
### Building the Right Target
|
||||||
|
|
||||||
@@ -1510,7 +1548,7 @@ You can run `fsutil file setshortname` in `cmd` on certain directories, such as
|
|||||||
|
|
||||||
If none of the suggestions in this document helps you, or if you find what you
|
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
|
believe is a bug in the build system, please contact the Build Group by sending
|
||||||
a mail to [build-dev@openjdk.java.net](mailto:build-dev@openjdk.java.net).
|
a mail to [build-dev@openjdk.org](mailto:build-dev@openjdk.org).
|
||||||
Please include the relevant parts of the configure and/or build log.
|
Please include the relevant parts of the configure and/or build log.
|
||||||
|
|
||||||
If you need general help or advice about developing for the JDK, you can also
|
If you need general help or advice about developing for the JDK, you can also
|
||||||
@@ -1557,9 +1595,9 @@ make
|
|||||||
|
|
||||||
Note that regardless if you specify a source date for `configure` or not, the
|
Note that regardless if you specify a source date for `configure` or not, the
|
||||||
JDK build system will set `SOURCE_DATE_EPOCH` for all build tools when building.
|
JDK build system will set `SOURCE_DATE_EPOCH` for all build tools when building.
|
||||||
If `--with-source-date` has the value `updated` (which is the default unless
|
If `--with-source-date` has the value `current` (which is the default unless
|
||||||
`SOURCE_DATE_EPOCH` is found by in the environment by `configure`), the source
|
`SOURCE_DATE_EPOCH` is found by in the environment by `configure`), the source
|
||||||
date value will be determined at build time.
|
date value will be determined at configure time.
|
||||||
|
|
||||||
There are several aspects of reproducible builds that can be individually
|
There are several aspects of reproducible builds that can be individually
|
||||||
adjusted by `configure` arguments. If any of these are given, they will override
|
adjusted by `configure` arguments. If any of these are given, they will override
|
||||||
@@ -1580,7 +1618,7 @@ the value derived from `SOURCE_DATE_EPOCH`. These arguments are:
|
|||||||
|
|
||||||
When `SOURCE_DATE_EPOCH` is set, the default value for `--with-source-date`
|
When `SOURCE_DATE_EPOCH` is set, the default value for `--with-source-date`
|
||||||
will be the value given by `SOURCE_DATE_EPOCH`. Otherwise, the default value
|
will be the value given by `SOURCE_DATE_EPOCH`. Otherwise, the default value
|
||||||
is `updated`.
|
is `current`.
|
||||||
|
|
||||||
* `--with-hotspot-build-time`
|
* `--with-hotspot-build-time`
|
||||||
|
|
||||||
@@ -1920,7 +1958,7 @@ To analyze build performance, run with `LOG=trace` and check `$BUILD/build-trace
|
|||||||
Use `JOBS=1` to avoid parallelism.
|
Use `JOBS=1` to avoid parallelism.
|
||||||
|
|
||||||
Please check that you adhere to the [Code Conventions for the Build System](
|
Please check that you adhere to the [Code Conventions for the Build System](
|
||||||
http://openjdk.java.net/groups/build/doc/code-conventions.html) before
|
http://openjdk.org/groups/build/doc/code-conventions.html) before
|
||||||
submitting patches.
|
submitting patches.
|
||||||
|
|
||||||
## Contributing to the JDK
|
## Contributing to the JDK
|
||||||
@@ -1933,19 +1971,25 @@ However, please bear in mind that the JDK is a massive project, and we must ask
|
|||||||
you to follow our rules and guidelines to be able to accept your contribution.
|
you to follow our rules and guidelines to be able to accept your contribution.
|
||||||
|
|
||||||
The official place to start is the ['How to contribute' page](
|
The official place to start is the ['How to contribute' page](
|
||||||
http://openjdk.java.net/contribute/). There is also an official (but somewhat
|
http://openjdk.org/contribute/). There is also an official (but somewhat
|
||||||
outdated and skimpy on details) [Developer's Guide](
|
outdated and skimpy on details) [Developer's Guide](
|
||||||
http://openjdk.java.net/guide/).
|
http://openjdk.org/guide/).
|
||||||
|
|
||||||
If this seems overwhelming to you, the Adoption Group is there to help you! A
|
If this seems overwhelming to you, the Adoption Group is there to help you! A
|
||||||
good place to start is their ['New Contributor' page](
|
good place to start is their ['New Contributor' page](
|
||||||
https://wiki.openjdk.java.net/display/Adoption/New+Contributor), or start
|
https://wiki.openjdk.org/display/Adoption/New+Contributor), or start
|
||||||
reading the comprehensive [Getting Started Kit](
|
reading the comprehensive [Getting Started Kit](
|
||||||
https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/). The
|
https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/). The
|
||||||
Adoption Group will also happily answer any questions you have about
|
Adoption Group will also happily answer any questions you have about
|
||||||
contributing. Contact them by [mail](
|
contributing. Contact them by [mail](
|
||||||
http://mail.openjdk.java.net/mailman/listinfo/adoption-discuss) or [IRC](
|
http://mail.openjdk.org/mailman/listinfo/adoption-discuss) or [IRC](
|
||||||
http://openjdk.java.net/irc/).
|
http://openjdk.org/irc/).
|
||||||
|
|
||||||
|
## Editing this document
|
||||||
|
|
||||||
|
If you want to contribute changes to this document, edit `doc/building.md` and
|
||||||
|
then run `make update-build-docs` to generate the same changes in
|
||||||
|
`doc/building.html`.
|
||||||
|
|
||||||
---
|
---
|
||||||
# Override styles from the base CSS file that are not ideal for this document.
|
# Override styles from the base CSS file that are not ideal for this document.
|
||||||
|
|||||||
@@ -68,8 +68,8 @@
|
|||||||
<h3 id="counterexamples-and-updates">Counterexamples and Updates</h3>
|
<h3 id="counterexamples-and-updates">Counterexamples and Updates</h3>
|
||||||
<p>Many of the guidelines mentioned here have (sometimes widespread) counterexamples in the HotSpot code base. Finding a counterexample is not sufficient justification for new code to follow the counterexample as a precedent, since readers of your code will rightfully expect your code to follow the greater bulk of precedents documented here.</p>
|
<p>Many of the guidelines mentioned here have (sometimes widespread) counterexamples in the HotSpot code base. Finding a counterexample is not sufficient justification for new code to follow the counterexample as a precedent, since readers of your code will rightfully expect your code to follow the greater bulk of precedents documented here.</p>
|
||||||
<p>Occasionally a guideline mentioned here may be just out of synch with the actual HotSpot code base. If you find that a guideline is consistently contradicted by a large number of counterexamples, please bring it up for discussion and possible change. The architectural rule, of course, is "When in Rome do as the Romans". Sometimes in the suburbs of Rome the rules are a little different; these differences can be pointed out here.</p>
|
<p>Occasionally a guideline mentioned here may be just out of synch with the actual HotSpot code base. If you find that a guideline is consistently contradicted by a large number of counterexamples, please bring it up for discussion and possible change. The architectural rule, of course, is "When in Rome do as the Romans". Sometimes in the suburbs of Rome the rules are a little different; these differences can be pointed out here.</p>
|
||||||
<p>Proposed changes should be discussed on the <a href="mailto:hotspot-dev@openjdk.java.net">HotSpot Developers</a> mailing list. Changes are likely to be cautious and incremental, since HotSpot coders have been using these guidelines for years.</p>
|
<p>Proposed changes should be discussed on the <a href="mailto:hotspot-dev@openjdk.org">HotSpot Developers</a> mailing list. Changes are likely to be cautious and incremental, since HotSpot coders have been using these guidelines for years.</p>
|
||||||
<p>Substantive changes are approved by <a href="https://www.rfc-editor.org/rfc/rfc7282.html">rough consensus</a> of the <a href="https://openjdk.java.net/census#hotspot">HotSpot Group</a> Members. The Group Lead determines whether consensus has been reached.</p>
|
<p>Substantive changes are approved by <a href="https://www.rfc-editor.org/rfc/rfc7282.html">rough consensus</a> of the <a href="https://openjdk.org/census#hotspot">HotSpot Group</a> Members. The Group Lead determines whether consensus has been reached.</p>
|
||||||
<p>Editorial changes (changes that only affect the description of HotSpot style, not its substance) do not require the full consensus gathering process. The normal HotSpot pull request process may be used for editorial changes, with the additional requirement that the requisite reviewers are also HotSpot Group Members.</p>
|
<p>Editorial changes (changes that only affect the description of HotSpot style, not its substance) do not require the full consensus gathering process. The normal HotSpot pull request process may be used for editorial changes, with the additional requirement that the requisite reviewers are also HotSpot Group Members.</p>
|
||||||
<h2 id="structure-and-formatting">Structure and Formatting</h2>
|
<h2 id="structure-and-formatting">Structure and Formatting</h2>
|
||||||
<h3 id="factoring-and-class-design">Factoring and Class Design</h3>
|
<h3 id="factoring-and-class-design">Factoring and Class Design</h3>
|
||||||
@@ -238,7 +238,7 @@ while ( test_foo(args...) ) { // No, excess spaces around control</code></pre></
|
|||||||
<p>Some reasons for this include</p>
|
<p>Some reasons for this include</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p>Exceptions. Perhaps the largest core issue with adopting the use of Standard Library facilities is exceptions. HotSpot does not use exceptions and, for platforms which allow doing so, builds with them turned off. Many Standard Library facilities implicitly or explicitly use exceptions.</p></li>
|
<li><p>Exceptions. Perhaps the largest core issue with adopting the use of Standard Library facilities is exceptions. HotSpot does not use exceptions and, for platforms which allow doing so, builds with them turned off. Many Standard Library facilities implicitly or explicitly use exceptions.</p></li>
|
||||||
<li><p><code>assert</code>. An issue that is quickly encountered is the <code>assert</code> macro name collision (<a href="https://bugs.openjdk.java.net/browse/JDK-8007770">JDK-8007770</a>). Some mechanism for addressing this would be needed before much of the Standard Library could be used. (Not all Standard Library implementations use assert in header files, but some do.)</p></li>
|
<li><p><code>assert</code>. An issue that is quickly encountered is the <code>assert</code> macro name collision (<a href="https://bugs.openjdk.org/browse/JDK-8007770">JDK-8007770</a>). Some mechanism for addressing this would be needed before much of the Standard Library could be used. (Not all Standard Library implementations use assert in header files, but some do.)</p></li>
|
||||||
<li><p>Memory allocation. HotSpot requires explicit control over where allocations occur. The C++98/03 <code>std::allocator</code> class is too limited to support our usage. (Changes in more recent Standards may remove this limitation.)</p></li>
|
<li><p>Memory allocation. HotSpot requires explicit control over where allocations occur. The C++98/03 <code>std::allocator</code> class is too limited to support our usage. (Changes in more recent Standards may remove this limitation.)</p></li>
|
||||||
<li><p>Implementation vagaries. Bugs, or simply different implementation choices, can lead to different behaviors among the various Standard Libraries we need to deal with.</p></li>
|
<li><p>Implementation vagaries. Bugs, or simply different implementation choices, can lead to different behaviors among the various Standard Libraries we need to deal with.</p></li>
|
||||||
<li><p>Inconsistent naming conventions. HotSpot and the C++ Standard use different naming conventions. The coexistence of those different conventions might appear jarring and reduce readability.</p></li>
|
<li><p>Inconsistent naming conventions. HotSpot and the C++ Standard use different naming conventions. The coexistence of those different conventions might appear jarring and reduce readability.</p></li>
|
||||||
@@ -272,7 +272,7 @@ while ( test_foo(args...) ) { // No, excess spaces around control</code></pre></
|
|||||||
<p>Due to bugs in certain (very old) compilers, there is widespread use of enums and avoidance of in-class initialization of static integral constant members. Compilers having such bugs are no longer supported. Except where an enum is semantically appropriate, new code should use integral constants.</p>
|
<p>Due to bugs in certain (very old) compilers, there is widespread use of enums and avoidance of in-class initialization of static integral constant members. Compilers having such bugs are no longer supported. Except where an enum is semantically appropriate, new code should use integral constants.</p>
|
||||||
<h3 id="thread_local">thread_local</h3>
|
<h3 id="thread_local">thread_local</h3>
|
||||||
<p>Avoid use of <code>thread_local</code> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm">n2659</a>); and instead, use the HotSpot macro <code>THREAD_LOCAL</code>, for which the initializer must be a constant expression. When <code>thread_local</code> must be used, use the Hotspot macro <code>APPROVED_CPP_THREAD_LOCAL</code> to indicate that the use has been given appropriate consideration.</p>
|
<p>Avoid use of <code>thread_local</code> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm">n2659</a>); and instead, use the HotSpot macro <code>THREAD_LOCAL</code>, for which the initializer must be a constant expression. When <code>thread_local</code> must be used, use the Hotspot macro <code>APPROVED_CPP_THREAD_LOCAL</code> to indicate that the use has been given appropriate consideration.</p>
|
||||||
<p>As was discussed in the review for <a href="https://mail.openjdk.java.net/pipermail/hotspot-dev/2019-September/039487.html">JDK-8230877</a>, <code>thread_local</code> allows dynamic initialization and destruction semantics. However, that support requires a run-time penalty for references to non-function-local <code>thread_local</code> variables defined in a different translation unit, even if they don't need dynamic initialization. Dynamic initialization and destruction of non-local <code>thread_local</code> variables also has the same ordering problems as for ordinary non-local variables. So we avoid use of <code>thread_local</code> in general, limiting its use to only those cases where dynamic initialization or destruction are essential. See <a href="https://bugs.openjdk.java.net/browse/JDK-8282469">JDK-8282469</a> for further discussion.</p>
|
<p>As was discussed in the review for <a href="https://mail.openjdk.org/pipermail/hotspot-dev/2019-September/039487.html">JDK-8230877</a>, <code>thread_local</code> allows dynamic initialization and destruction semantics. However, that support requires a run-time penalty for references to non-function-local <code>thread_local</code> variables defined in a different translation unit, even if they don't need dynamic initialization. Dynamic initialization and destruction of non-local <code>thread_local</code> variables also has the same ordering problems as for ordinary non-local variables. So we avoid use of <code>thread_local</code> in general, limiting its use to only those cases where dynamic initialization or destruction are essential. See <a href="https://bugs.openjdk.org/browse/JDK-8282469">JDK-8282469</a> for further discussion.</p>
|
||||||
<h3 id="nullptr">nullptr</h3>
|
<h3 id="nullptr">nullptr</h3>
|
||||||
<p>Prefer <code>nullptr</code> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">n2431</a>) to <code>NULL</code>. Don't use (constexpr or literal) 0 for pointers.</p>
|
<p>Prefer <code>nullptr</code> (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">n2431</a>) to <code>NULL</code>. Don't use (constexpr or literal) 0 for pointers.</p>
|
||||||
<p>For historical reasons there are widespread uses of both <code>NULL</code> and of integer 0 as a pointer value.</p>
|
<p>For historical reasons there are widespread uses of both <code>NULL</code> and of integer 0 as a pointer value.</p>
|
||||||
@@ -448,7 +448,6 @@ while ( test_foo(args...) ) { // No, excess spaces around control</code></pre></
|
|||||||
<li><p><code>[[deprecated]]</code> attribute (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html">n3760</a>) — Not relevant in HotSpot code.</p></li>
|
<li><p><code>[[deprecated]]</code> attribute (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html">n3760</a>) — Not relevant in HotSpot code.</p></li>
|
||||||
<li><p>Avoid most operator overloading, preferring named functions. When operator overloading is used, ensure the semantics conform to the normal expected behavior of the operation.</p></li>
|
<li><p>Avoid most operator overloading, preferring named functions. When operator overloading is used, ensure the semantics conform to the normal expected behavior of the operation.</p></li>
|
||||||
<li><p>Avoid most implicit conversion constructors and (implicit or explicit) conversion operators. (Note that conversion to <code>bool</code> isn't needed in HotSpot code because of the "no implicit boolean" guideline.)</p></li>
|
<li><p>Avoid most implicit conversion constructors and (implicit or explicit) conversion operators. (Note that conversion to <code>bool</code> isn't needed in HotSpot code because of the "no implicit boolean" guideline.)</p></li>
|
||||||
<li><p>Avoid covariant return types.</p></li>
|
|
||||||
<li><p>Avoid <code>goto</code> statements.</p></li>
|
<li><p>Avoid <code>goto</code> statements.</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3 id="undecided-features">Undecided Features</h3>
|
<h3 id="undecided-features">Undecided Features</h3>
|
||||||
|
|||||||
@@ -55,13 +55,13 @@ suburbs of Rome the rules are a little different; these differences
|
|||||||
can be pointed out here.
|
can be pointed out here.
|
||||||
|
|
||||||
Proposed changes should be discussed on the
|
Proposed changes should be discussed on the
|
||||||
[HotSpot Developers](mailto:hotspot-dev@openjdk.java.net) mailing
|
[HotSpot Developers](mailto:hotspot-dev@openjdk.org) mailing
|
||||||
list. Changes are likely to be cautious and incremental, since HotSpot
|
list. Changes are likely to be cautious and incremental, since HotSpot
|
||||||
coders have been using these guidelines for years.
|
coders have been using these guidelines for years.
|
||||||
|
|
||||||
Substantive changes are approved by
|
Substantive changes are approved by
|
||||||
[rough consensus](https://www.rfc-editor.org/rfc/rfc7282.html) of
|
[rough consensus](https://www.rfc-editor.org/rfc/rfc7282.html) of
|
||||||
the [HotSpot Group](https://openjdk.java.net/census#hotspot) Members.
|
the [HotSpot Group](https://openjdk.org/census#hotspot) Members.
|
||||||
The Group Lead determines whether consensus has been reached.
|
The Group Lead determines whether consensus has been reached.
|
||||||
|
|
||||||
Editorial changes (changes that only affect the description of HotSpot
|
Editorial changes (changes that only affect the description of HotSpot
|
||||||
@@ -550,7 +550,7 @@ turned off. Many Standard Library facilities implicitly or explicitly
|
|||||||
use exceptions.
|
use exceptions.
|
||||||
|
|
||||||
* `assert`. An issue that is quickly encountered is the `assert` macro name
|
* `assert`. An issue that is quickly encountered is the `assert` macro name
|
||||||
collision ([JDK-8007770](https://bugs.openjdk.java.net/browse/JDK-8007770)).
|
collision ([JDK-8007770](https://bugs.openjdk.org/browse/JDK-8007770)).
|
||||||
Some mechanism for addressing this would be needed before much of the
|
Some mechanism for addressing this would be needed before much of the
|
||||||
Standard Library could be used. (Not all Standard Library implementations
|
Standard Library could be used. (Not all Standard Library implementations
|
||||||
use assert in header files, but some do.)
|
use assert in header files, but some do.)
|
||||||
@@ -661,7 +661,7 @@ be a constant expression. When `thread_local` must be used, use the Hotspot macr
|
|||||||
consideration.
|
consideration.
|
||||||
|
|
||||||
As was discussed in the review for
|
As was discussed in the review for
|
||||||
[JDK-8230877](https://mail.openjdk.java.net/pipermail/hotspot-dev/2019-September/039487.html),
|
[JDK-8230877](https://mail.openjdk.org/pipermail/hotspot-dev/2019-September/039487.html),
|
||||||
`thread_local` allows dynamic initialization and destruction
|
`thread_local` allows dynamic initialization and destruction
|
||||||
semantics. However, that support requires a run-time penalty for
|
semantics. However, that support requires a run-time penalty for
|
||||||
references to non-function-local `thread_local` variables defined in a
|
references to non-function-local `thread_local` variables defined in a
|
||||||
@@ -671,7 +671,7 @@ non-local `thread_local` variables also has the same ordering
|
|||||||
problems as for ordinary non-local variables. So we avoid use of
|
problems as for ordinary non-local variables. So we avoid use of
|
||||||
`thread_local` in general, limiting its use to only those cases where dynamic
|
`thread_local` in general, limiting its use to only those cases where dynamic
|
||||||
initialization or destruction are essential. See
|
initialization or destruction are essential. See
|
||||||
[JDK-8282469](https://bugs.openjdk.java.net/browse/JDK-8282469)
|
[JDK-8282469](https://bugs.openjdk.org/browse/JDK-8282469)
|
||||||
for further discussion.
|
for further discussion.
|
||||||
|
|
||||||
### nullptr
|
### nullptr
|
||||||
@@ -1120,8 +1120,6 @@ normal expected behavior of the operation.
|
|||||||
conversion operators. (Note that conversion to `bool` isn't needed
|
conversion operators. (Note that conversion to `bool` isn't needed
|
||||||
in HotSpot code because of the "no implicit boolean" guideline.)
|
in HotSpot code because of the "no implicit boolean" guideline.)
|
||||||
|
|
||||||
* Avoid covariant return types.
|
|
||||||
|
|
||||||
* Avoid `goto` statements.
|
* Avoid `goto` statements.
|
||||||
|
|
||||||
### Undecided Features
|
### Undecided Features
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
<li><a href="#pkcs11-tests">PKCS11 Tests</a></li>
|
<li><a href="#pkcs11-tests">PKCS11 Tests</a></li>
|
||||||
<li><a href="#client-ui-tests">Client UI Tests</a></li>
|
<li><a href="#client-ui-tests">Client UI Tests</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
<li><a href="#editing-this-document">Editing this document</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<h2 id="using-make-test-the-run-test-framework">Using "make test" (the run-test framework)</h2>
|
<h2 id="using-make-test-the-run-test-framework">Using "make test" (the run-test framework)</h2>
|
||||||
@@ -64,6 +65,9 @@ $ make exploded-test TEST=tier2</code></pre>
|
|||||||
<h3 id="configuration">Configuration</h3>
|
<h3 id="configuration">Configuration</h3>
|
||||||
<p>To be able to run JTReg tests, <code>configure</code> needs to know where to find the JTReg test framework. If it is not picked up automatically by configure, use the <code>--with-jtreg=<path to jtreg home></code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc. (An alternative is to set the <code>JT_HOME</code> environment variable to point to the JTReg home before running <code>configure</code>.)</p>
|
<p>To be able to run JTReg tests, <code>configure</code> needs to know where to find the JTReg test framework. If it is not picked up automatically by configure, use the <code>--with-jtreg=<path to jtreg home></code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc. (An alternative is to set the <code>JT_HOME</code> environment variable to point to the JTReg home before running <code>configure</code>.)</p>
|
||||||
<p>To be able to run microbenchmarks, <code>configure</code> needs to know where to find the JMH dependency. Use <code>--with-jmh=<path to JMH jars></code> to point to a directory containing the core JMH and transitive dependencies. The recommended dependencies can be retrieved by running <code>sh make/devkit/createJMHBundle.sh</code>, after which <code>--with-jmh=build/jmh/jars</code> should work.</p>
|
<p>To be able to run microbenchmarks, <code>configure</code> needs to know where to find the JMH dependency. Use <code>--with-jmh=<path to JMH jars></code> to point to a directory containing the core JMH and transitive dependencies. The recommended dependencies can be retrieved by running <code>sh make/devkit/createJMHBundle.sh</code>, after which <code>--with-jmh=build/jmh/jars</code> should work.</p>
|
||||||
|
<p>When tests fail or timeout, jtreg runs its failure handler to capture necessary data from the system where the test was run. This data can then be used to analyze the test failures. Collecting this data involves running various commands (which are listed in files residing in <code>test/failure_handler/src/share/conf</code>) and some of these commands use <code>sudo</code>. If the system's <code>sudoers</code> file isn't configured to allow running these commands, then it can result in password being prompted during the failure handler execution. Typically, when running locally, collecting this additional data isn't always necessary. To disable running the failure handler, use <code>--enable-jtreg-failure-handler=no</code> when running <code>configure</code>. If, however, you want to let the failure handler to run and don't want to be prompted for sudo password, then you can configure your <code>sudoers</code> file appropriately. Please read the necessary documentation of your operating system to see how to do that; here we only show one possible way of doing that - edit the <code>/etc/sudoers.d/sudoers</code> file to include the following line:</p>
|
||||||
|
<pre><code>johndoe ALL=(ALL) NOPASSWD: /sbin/dmesg</code></pre>
|
||||||
|
<p>This line configures <code>sudo</code> to <em>not</em> prompt for password for the <code>/sbin/dmesg</code> command (this is one of the commands that is listed in the files at <code>test/failure_handler/src/share/conf</code>), for the user <code>johndoe</code>. Here <code>johndoe</code> is the user account under which the jtreg tests are run. Replace the username with a relevant user account of your system.</p>
|
||||||
<h2 id="test-selection">Test selection</h2>
|
<h2 id="test-selection">Test selection</h2>
|
||||||
<p>All functionality is available using the <code>test</code> make target. In this use case, the test or tests to be executed is controlled using the <code>TEST</code> variable. To speed up subsequent test runs with no source code changes, <code>test-only</code> can be used instead, which do not depend on the source and test image build.</p>
|
<p>All functionality is available using the <code>test</code> make target. In this use case, the test or tests to be executed is controlled using the <code>TEST</code> variable. To speed up subsequent test runs with no source code changes, <code>test-only</code> can be used instead, which do not depend on the source and test image build.</p>
|
||||||
<p>For some common top-level tests, direct make targets have been generated. This includes all JTReg test groups, the hotspot gtest, and custom tests (if present). This means that <code>make test-tier1</code> is equivalent to <code>make test TEST="tier1"</code>, but the latter is more tab-completion friendly. For more complex test runs, the <code>test TEST="x"</code> solution needs to be used.</p>
|
<p>For some common top-level tests, direct make targets have been generated. This includes all JTReg test groups, the hotspot gtest, and custom tests (if present). This means that <code>make test-tier1</code> is equivalent to <code>make test TEST="tier1"</code>, but the latter is more tab-completion friendly. For more complex test runs, the <code>test TEST="x"</code> solution needs to be used.</p>
|
||||||
@@ -82,7 +86,7 @@ $ make exploded-test TEST=tier2</code></pre>
|
|||||||
<li><p><code>tier4</code>: This test group includes every other test not covered by previous tiers. It includes, for example, <code>vmTestbase</code> suites for Hotspot, which run for many hours even on large machines. It also runs GUI tests, so the same <code>TEST_JOBS</code> and <code>JTREG_KEYWORDS</code> caveats apply.</p></li>
|
<li><p><code>tier4</code>: This test group includes every other test not covered by previous tiers. It includes, for example, <code>vmTestbase</code> suites for Hotspot, which run for many hours even on large machines. It also runs GUI tests, so the same <code>TEST_JOBS</code> and <code>JTREG_KEYWORDS</code> caveats apply.</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3 id="jtreg">JTReg</h3>
|
<h3 id="jtreg">JTReg</h3>
|
||||||
<p>JTReg tests can be selected either by picking a JTReg test group, or a selection of files or directories containing JTReg tests.</p>
|
<p>JTReg tests can be selected either by picking a JTReg test group, or a selection of files or directories containing JTReg tests. Documentation can be found at <a href="https://openjdk.org/jtreg/">https://openjdk.org/jtreg/</a>, note especially the extensive <a href="https://openjdk.org/jtreg/faq.html">FAQ</a>.</p>
|
||||||
<p>JTReg test groups can be specified either without a test root, e.g. <code>:tier1</code> (or <code>tier1</code>, the initial colon is optional), or with, e.g. <code>hotspot:tier1</code>, <code>test/jdk:jdk_util</code> or <code>$(TOPDIR)/test/hotspot/jtreg:hotspot_all</code>. The test root can be specified either as an absolute path, or a path relative to the JDK top directory, or the <code>test</code> directory. For simplicity, the hotspot JTReg test root, which really is <code>hotspot/jtreg</code> can be abbreviated as just <code>hotspot</code>.</p>
|
<p>JTReg test groups can be specified either without a test root, e.g. <code>:tier1</code> (or <code>tier1</code>, the initial colon is optional), or with, e.g. <code>hotspot:tier1</code>, <code>test/jdk:jdk_util</code> or <code>$(TOPDIR)/test/hotspot/jtreg:hotspot_all</code>. The test root can be specified either as an absolute path, or a path relative to the JDK top directory, or the <code>test</code> directory. For simplicity, the hotspot JTReg test root, which really is <code>hotspot/jtreg</code> can be abbreviated as just <code>hotspot</code>.</p>
|
||||||
<p>When specified without a test root, all matching groups from all test roots will be added. Otherwise, only the group from the specified test root will be added.</p>
|
<p>When specified without a test root, all matching groups from all test roots will be added. Otherwise, only the group from the specified test root will be added.</p>
|
||||||
<p>Individual JTReg tests or directories containing JTReg tests can also be specified, like <code>test/hotspot/jtreg/native_sanity/JniVersion.java</code> or <code>hotspot/jtreg/native_sanity</code>. Just like for test root selection, you can either specify an absolute path (which can even point to JTReg tests outside the source tree), or a path relative to either the JDK top directory or the <code>test</code> directory. <code>hotspot</code> can be used as an alias for <code>hotspot/jtreg</code> here as well.</p>
|
<p>Individual JTReg tests or directories containing JTReg tests can also be specified, like <code>test/hotspot/jtreg/native_sanity/JniVersion.java</code> or <code>hotspot/jtreg/native_sanity</code>. Just like for test root selection, you can either specify an absolute path (which can even point to JTReg tests outside the source tree), or a path relative to either the JDK top directory or the <code>test</code> directory. <code>hotspot</code> can be used as an alias for <code>hotspot/jtreg</code> here as well.</p>
|
||||||
@@ -251,5 +255,7 @@ $ make test JTREG="VM_OPTIONS=-Duser.language=en -Duser.country=US" TE
|
|||||||
<h4 id="windows">Windows</h4>
|
<h4 id="windows">Windows</h4>
|
||||||
<p>Type <code>gpedit</code> in the Search and then click Edit group policy; navigate to User Configuration -> Administrative Templates -> Windows Components -> File Explorer; in the right-side pane look for "Turn off Windows key hotkeys" and double click on it; enable or disable hotkeys.</p>
|
<p>Type <code>gpedit</code> in the Search and then click Edit group policy; navigate to User Configuration -> Administrative Templates -> Windows Components -> File Explorer; in the right-side pane look for "Turn off Windows key hotkeys" and double click on it; enable or disable hotkeys.</p>
|
||||||
<p>Note: restart is required to make the settings take effect.</p>
|
<p>Note: restart is required to make the settings take effect.</p>
|
||||||
|
<h2 id="editing-this-document">Editing this document</h2>
|
||||||
|
<p>If you want to contribute changes to this document, edit <code>doc/testing.md</code> and then run <code>make update-build-docs</code> to generate the same changes in <code>doc/testing.html</code>.</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -43,6 +43,31 @@ containing the core JMH and transitive dependencies. The recommended
|
|||||||
dependencies can be retrieved by running `sh make/devkit/createJMHBundle.sh`,
|
dependencies can be retrieved by running `sh make/devkit/createJMHBundle.sh`,
|
||||||
after which `--with-jmh=build/jmh/jars` should work.
|
after which `--with-jmh=build/jmh/jars` should work.
|
||||||
|
|
||||||
|
When tests fail or timeout, jtreg runs its failure handler to capture necessary
|
||||||
|
data from the system where the test was run. This data can then be used to
|
||||||
|
analyze the test failures. Collecting this data involves running various commands
|
||||||
|
(which are listed in files residing in `test/failure_handler/src/share/conf`)
|
||||||
|
and some of these commands use `sudo`. If the system's `sudoers` file isn't
|
||||||
|
configured to allow running these commands, then it can result in password being
|
||||||
|
prompted during the failure handler execution. Typically, when running locally,
|
||||||
|
collecting this additional data isn't always necessary. To disable running the
|
||||||
|
failure handler, use `--enable-jtreg-failure-handler=no` when running `configure`.
|
||||||
|
If, however, you want to let the failure handler to run and don't want to be
|
||||||
|
prompted for sudo password, then you can configure your `sudoers` file
|
||||||
|
appropriately. Please read the necessary documentation of your operating system
|
||||||
|
to see how to do that; here we only show one possible way of doing that - edit
|
||||||
|
the `/etc/sudoers.d/sudoers` file to include the following line:
|
||||||
|
|
||||||
|
```
|
||||||
|
johndoe ALL=(ALL) NOPASSWD: /sbin/dmesg
|
||||||
|
```
|
||||||
|
|
||||||
|
This line configures `sudo` to _not_ prompt for password for the `/sbin/dmesg`
|
||||||
|
command (this is one of the commands that is listed in the files
|
||||||
|
at `test/failure_handler/src/share/conf`), for the user `johndoe`. Here `johndoe`
|
||||||
|
is the user account under which the jtreg tests are run. Replace the username
|
||||||
|
with a relevant user account of your system.
|
||||||
|
|
||||||
## Test selection
|
## Test selection
|
||||||
|
|
||||||
All functionality is available using the `test` make target. In this use case,
|
All functionality is available using the `test` make target. In this use case,
|
||||||
@@ -113,7 +138,9 @@ apply.
|
|||||||
### JTReg
|
### JTReg
|
||||||
|
|
||||||
JTReg tests can be selected either by picking a JTReg test group, or a selection
|
JTReg tests can be selected either by picking a JTReg test group, or a selection
|
||||||
of files or directories containing JTReg tests.
|
of files or directories containing JTReg tests. Documentation can be found at
|
||||||
|
[https://openjdk.org/jtreg/](https://openjdk.org/jtreg/), note especially the
|
||||||
|
extensive [FAQ](https://openjdk.org/jtreg/faq.html).
|
||||||
|
|
||||||
JTReg test groups can be specified either without a test root, e.g. `:tier1`
|
JTReg test groups can be specified either without a test root, e.g. `:tier1`
|
||||||
(or `tier1`, the initial colon is optional), or with, e.g. `hotspot:tier1`,
|
(or `tier1`, the initial colon is optional), or with, e.g. `hotspot:tier1`,
|
||||||
@@ -578,6 +605,12 @@ double click on it; enable or disable hotkeys.
|
|||||||
|
|
||||||
Note: restart is required to make the settings take effect.
|
Note: restart is required to make the settings take effect.
|
||||||
|
|
||||||
|
## Editing this document
|
||||||
|
|
||||||
|
If you want to contribute changes to this document, edit `doc/testing.md` and
|
||||||
|
then run `make update-build-docs` to generate the same changes in
|
||||||
|
`doc/testing.html`.
|
||||||
|
|
||||||
---
|
---
|
||||||
# Override some definitions in the global css file that are not optimal for
|
# Override some definitions in the global css file that are not optimal for
|
||||||
# this document.
|
# this document.
|
||||||
|
|||||||
@@ -278,16 +278,7 @@ ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
|||||||
$(SYMBOLS_EXCLUDE_PATTERN), \
|
$(SYMBOLS_EXCLUDE_PATTERN), \
|
||||||
$(ALL_JRE_FILES))
|
$(ALL_JRE_FILES))
|
||||||
|
|
||||||
# On Macosx release builds, when there is a code signing certificate available,
|
ifeq ($(MACOSX_CODESIGN_MODE), hardened)
|
||||||
# the final bundle layout can be signed.
|
|
||||||
SIGN_BUNDLE := false
|
|
||||||
ifeq ($(call isTargetOs, macosx)+$(DEBUG_LEVEL), true+release)
|
|
||||||
ifneq ($(CODESIGN), )
|
|
||||||
SIGN_BUNDLE := true
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(SIGN_BUNDLE), true)
|
|
||||||
# Macosx release build and code signing available.
|
# Macosx release build and code signing available.
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ $(eval $(call SetupBuildDemo, Font2DTest, \
|
|||||||
$(eval $(call SetupBuildDemo, J2Ddemo, \
|
$(eval $(call SetupBuildDemo, J2Ddemo, \
|
||||||
DEMO_SUBDIR := jfc, \
|
DEMO_SUBDIR := jfc, \
|
||||||
MAIN_CLASS := java2d.J2Ddemo, \
|
MAIN_CLASS := java2d.J2Ddemo, \
|
||||||
DISABLED_WARNINGS := rawtypes deprecation unchecked cast, \
|
DISABLED_WARNINGS := rawtypes deprecation unchecked cast lossy-conversions, \
|
||||||
JAR_NAME := J2Ddemo, \
|
JAR_NAME := J2Ddemo, \
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -48,6 +48,30 @@ $(BUILDTOOLS_OUTPUTDIR)/gensrc/%.interim/module-info.java: \
|
|||||||
TARGETS += $(patsubst %, $(BUILDTOOLS_OUTPUTDIR)/gensrc/%/module-info.java, \
|
TARGETS += $(patsubst %, $(BUILDTOOLS_OUTPUTDIR)/gensrc/%/module-info.java, \
|
||||||
$(INTERIM_LANGTOOLS_MODULES))
|
$(INTERIM_LANGTOOLS_MODULES))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Generate interim versions of the ToolProvider.java files for the interim
|
||||||
|
# langtools modules, which will allow to load javac from the interim
|
||||||
|
# jdk.compiler.
|
||||||
|
|
||||||
|
INTERIM_TOOL_PROVIDER_PATTERN := \
|
||||||
|
$(foreach m, $(INTERIM_LANGTOOLS_BASE_MODULES), -e 's/"$m"/"$m.interim"/g')
|
||||||
|
|
||||||
|
$(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java: \
|
||||||
|
$(TOPDIR)/src/java.compiler/share/classes/javax/tools/ToolProvider.java
|
||||||
|
$(call LogInfo, Generating ToolProvider.java for java.compiler.interim)
|
||||||
|
$(call MakeDir, $(@D))
|
||||||
|
$(SED) $(INTERIM_TOOL_PROVIDER_PATTERN) $< > $@
|
||||||
|
|
||||||
|
java.compiler.interim_EXTRA_FILES := \
|
||||||
|
$(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java
|
||||||
|
|
||||||
|
TARGETS += $(BUILDTOOLS_OUTPUTDIR)/gensrc/java.compiler.interim/javax/tools/ToolProvider.java
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Use the up-to-date PreviewFeature.java and NoPreview.java from the current
|
||||||
|
# sources, instead of the versions from the boot JDK, as javac may be referring
|
||||||
|
# to constants from the up-to-date versions.
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles, COPY_PREVIEW_FEATURES, \
|
$(eval $(call SetupCopyFiles, COPY_PREVIEW_FEATURES, \
|
||||||
FILES := $(TOPDIR)/src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java \
|
FILES := $(TOPDIR)/src/java.base/share/classes/jdk/internal/javac/PreviewFeature.java \
|
||||||
$(TOPDIR)/src/java.base/share/classes/jdk/internal/javac/NoPreview.java, \
|
$(TOPDIR)/src/java.base/share/classes/jdk/internal/javac/NoPreview.java, \
|
||||||
@@ -73,8 +97,10 @@ define SetupInterimModule
|
|||||||
$(TOPDIR)/src/$1/share/classes, \
|
$(TOPDIR)/src/$1/share/classes, \
|
||||||
EXCLUDES := sun javax/tools/snippet-files, \
|
EXCLUDES := sun javax/tools/snippet-files, \
|
||||||
EXCLUDE_FILES := $(TOPDIR)/src/$1/share/classes/module-info.java \
|
EXCLUDE_FILES := $(TOPDIR)/src/$1/share/classes/module-info.java \
|
||||||
|
$(TOPDIR)/src/$1/share/classes/javax/tools/ToolProvider.java \
|
||||||
Standard.java, \
|
Standard.java, \
|
||||||
EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim/module-info.java, \
|
EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim/module-info.java \
|
||||||
|
$($1.interim_EXTRA_FILES), \
|
||||||
COPY := .gif .png .xml .css .svg .js .js.template .txt javax.tools.JavaCompilerTool, \
|
COPY := .gif .png .xml .css .svg .js .js.template .txt javax.tools.JavaCompilerTool, \
|
||||||
BIN := $(BUILDTOOLS_OUTPUTDIR)/interim_langtools_modules/$1.interim, \
|
BIN := $(BUILDTOOLS_OUTPUTDIR)/interim_langtools_modules/$1.interim, \
|
||||||
DISABLED_WARNINGS := module options, \
|
DISABLED_WARNINGS := module options, \
|
||||||
|
|||||||
@@ -121,8 +121,8 @@ TARGETS += $($(MODULE))
|
|||||||
# Since the other modules are declared in different invocations of this file,
|
# Since the other modules are declared in different invocations of this file,
|
||||||
# use the macro to find the correct target file to depend on.
|
# use the macro to find the correct target file to depend on.
|
||||||
# Only the javac compilation actually depends on other modules so limit
|
# Only the javac compilation actually depends on other modules so limit
|
||||||
# dependency declaration to that by using the *_COMPILE_TARGET variable.
|
# dependency declaration to that by using the *_MODFILELIST variable.
|
||||||
$($(MODULE)_COMPILE_TARGET): $(foreach d, $(call FindDepsForModule, $(MODULE)), \
|
$($(MODULE)_MODFILELIST): $(foreach d, $(call FindDepsForModule, $(MODULE)), \
|
||||||
$(call SetupJavaCompilationApiTarget, $d, \
|
$(call SetupJavaCompilationApiTarget, $d, \
|
||||||
$(if $($d_BIN), $($d_BIN), $(JDK_OUTPUTDIR)/modules/$d)))
|
$(if $($d_BIN), $($d_BIN), $(JDK_OUTPUTDIR)/modules/$d)))
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -77,6 +77,13 @@ $(eval $(call SetupJavaCompilation, COMPILE_DEPEND, \
|
|||||||
INCLUDES := build/tools/depend, \
|
INCLUDES := build/tools/depend, \
|
||||||
BIN := $(BUILDTOOLS_OUTPUTDIR)/depend, \
|
BIN := $(BUILDTOOLS_OUTPUTDIR)/depend, \
|
||||||
DISABLED_WARNINGS := options, \
|
DISABLED_WARNINGS := options, \
|
||||||
|
JAVAC_FLAGS := \
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED \
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED, \
|
||||||
))
|
))
|
||||||
|
|
||||||
DEPEND_SERVICE_PROVIDER := $(BUILDTOOLS_OUTPUTDIR)/depend/META-INF/services/com.sun.source.util.Plugin
|
DEPEND_SERVICE_PROVIDER := $(BUILDTOOLS_OUTPUTDIR)/depend/META-INF/services/com.sun.source.util.Plugin
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -226,11 +226,18 @@ else
|
|||||||
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.debuginfo,*.dSYM/**,*.dSYM}'
|
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.debuginfo,*.dSYM/**,*.dSYM}'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# For reproducible builds specify the jmod --date using SOURCE_DATE in ISO-8601
|
# Unless we are creating a very large module, use the small tool JVM options
|
||||||
ifeq ($(ENABLE_REPRODUCIBLE_BUILD), true)
|
JMOD_SMALL_FLAGS :=
|
||||||
JMOD_SOURCE_DATE := --date $(SOURCE_DATE_ISO_8601)
|
ifeq ($(findstring $(MODULE), java.base java.desktop jdk.localedata), )
|
||||||
|
JMOD_SMALL_FLAGS += $(JAVA_TOOL_FLAGS_SMALL)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(INTERIM_JMOD), true)
|
||||||
|
# Interim JMODs are not shipped anywhere, so there is no reason
|
||||||
|
# to compress them at all.
|
||||||
|
JMOD_FLAGS += --compress zip-0
|
||||||
else
|
else
|
||||||
JMOD_SOURCE_DATE :=
|
JMOD_FLAGS += --compress $(JMOD_COMPRESS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Create jmods in the support dir and then move them into place to keep the
|
# Create jmods in the support dir and then move them into place to keep the
|
||||||
@@ -241,10 +248,10 @@ $(eval $(call SetupExecute, create_$(JMOD_FILE), \
|
|||||||
OUTPUT_FILE := $(JMODS_DIR)/$(JMOD_FILE), \
|
OUTPUT_FILE := $(JMODS_DIR)/$(JMOD_FILE), \
|
||||||
SUPPORT_DIR := $(JMODS_SUPPORT_DIR), \
|
SUPPORT_DIR := $(JMODS_SUPPORT_DIR), \
|
||||||
PRE_COMMAND := $(RM) $(JMODS_DIR)/$(JMOD_FILE) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
|
PRE_COMMAND := $(RM) $(JMODS_DIR)/$(JMOD_FILE) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
|
||||||
COMMAND := $(JMOD) create --module-version $(VERSION_SHORT) \
|
COMMAND := $(JMOD) $(JMOD_SMALL_FLAGS) create --module-version $(VERSION_SHORT) \
|
||||||
--target-platform '$(OPENJDK_MODULE_TARGET_PLATFORM)' \
|
--target-platform '$(OPENJDK_MODULE_TARGET_PLATFORM)' \
|
||||||
--module-path $(JMODS_DIR) $(JMOD_FLAGS) \
|
--module-path $(JMODS_DIR) $(JMOD_FLAGS) \
|
||||||
$(JMOD_SOURCE_DATE) \
|
--date $(SOURCE_DATE_ISO_8601) \
|
||||||
$(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
|
$(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
|
||||||
POST_COMMAND := $(MV) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE) $(JMODS_DIR)/$(JMOD_FILE), \
|
POST_COMMAND := $(MV) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE) $(JMODS_DIR)/$(JMOD_FILE), \
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -69,8 +69,6 @@ JAVADOC_TAGS := \
|
|||||||
-tag beaninfo:X \
|
-tag beaninfo:X \
|
||||||
-tag revised:X \
|
-tag revised:X \
|
||||||
-tag since.unbundled:X \
|
-tag since.unbundled:X \
|
||||||
-tag spec:X \
|
|
||||||
-tag specdefault:X \
|
|
||||||
-tag Note:X \
|
-tag Note:X \
|
||||||
-tag ToDo:X \
|
-tag ToDo:X \
|
||||||
-tag 'apiNote:a:API Note:' \
|
-tag 'apiNote:a:API Note:' \
|
||||||
@@ -86,6 +84,7 @@ JAVADOC_TAGS := \
|
|||||||
-tag since \
|
-tag since \
|
||||||
-tag serialData \
|
-tag serialData \
|
||||||
-tag factory \
|
-tag factory \
|
||||||
|
-tag spec \
|
||||||
-tag see \
|
-tag see \
|
||||||
-taglet build.tools.taglet.ExtLink \
|
-taglet build.tools.taglet.ExtLink \
|
||||||
-taglet build.tools.taglet.Incubating \
|
-taglet build.tools.taglet.Incubating \
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ epilogue: check-bad-file-names
|
|||||||
$(ECHO) '* The build README (doc/building.md) is a great source of information,'
|
$(ECHO) '* The build README (doc/building.md) is a great source of information,'
|
||||||
$(ECHO) 'especially the chapter "Fixing Unexpected Build Failures". Check it out!'
|
$(ECHO) 'especially the chapter "Fixing Unexpected Build Failures". Check it out!'
|
||||||
$(ECHO)
|
$(ECHO)
|
||||||
$(ECHO) '* If you still need assistance please contact build-dev@openjdk.java.net.'
|
$(ECHO) '* If you still need assistance please contact build-dev@openjdk.org.'
|
||||||
$(ECHO)
|
$(ECHO)
|
||||||
|
|
||||||
TARGETS += epilogue
|
TARGETS += epilogue
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -114,67 +114,66 @@ $(eval $(call SetupExecute, jlink_jre, \
|
|||||||
|
|
||||||
JLINK_JRE_TARGETS := $(jlink_jre)
|
JLINK_JRE_TARGETS := $(jlink_jre)
|
||||||
|
|
||||||
ifeq ($(BUILD_CDS_ARCHIVE), true)
|
# Optimize CDS shared heap for small heap sizes, which are typically used
|
||||||
|
# for small cloud-based apps that have the most critical start-up requirement.
|
||||||
|
# The trade-off is that when larger heap sizes are used, the shared heap
|
||||||
|
# may need to be relocated at runtime.
|
||||||
|
CDS_DUMP_FLAGS = -Xmx128M -Xms128M
|
||||||
|
|
||||||
|
# Helper function for creating the CDS archives for the JDK and JRE
|
||||||
|
#
|
||||||
|
# Param1 - VM variant (e.g., server, client, zero, ...)
|
||||||
|
# Param2 - _nocoops, or empty
|
||||||
|
define CreateCDSArchive
|
||||||
|
$1_$2_DUMP_EXTRA_ARG := $(if $(filter _nocoops, $2),-XX:-UseCompressedOops,)
|
||||||
|
$1_$2_DUMP_TYPE := $(if $(filter _nocoops, $2),-NOCOOPS,)
|
||||||
|
|
||||||
|
# Only G1 supports dumping the shared heap, so explicitly use G1 if the JVM supports it.
|
||||||
|
$1_$2_CDS_DUMP_FLAGS := $(CDS_DUMP_FLAGS) $(if $(filter g1gc, $(JVM_FEATURES_$1)),-XX:+UseG1GC)
|
||||||
|
|
||||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
CDS_ARCHIVE := bin/server/classes.jsa
|
$1_$2_CDS_ARCHIVE := bin/$1/classes$2.jsa
|
||||||
CDS_NOCOOPS_ARCHIVE := bin/server/classes_nocoops.jsa
|
|
||||||
else
|
else
|
||||||
CDS_ARCHIVE := lib/server/classes.jsa
|
$1_$2_CDS_ARCHIVE := lib/$1/classes$2.jsa
|
||||||
CDS_NOCOOPS_ARCHIVE := lib/server/classes_nocoops.jsa
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(eval $(call SetupExecute, gen_cds_archive_jdk, \
|
$$(eval $$(call SetupExecute, $1_$2_gen_cds_archive_jdk, \
|
||||||
WARN := Creating CDS archive for jdk image, \
|
WARN := Creating CDS$$($1_$2_DUMP_TYPE) archive for jdk image for $1, \
|
||||||
DEPS := $(jlink_jdk), \
|
INFO := Using CDS flags for $1: $$($1_$2_CDS_DUMP_FLAGS), \
|
||||||
OUTPUT_FILE := $(JDK_IMAGE_DIR)/$(CDS_ARCHIVE), \
|
DEPS := $$(jlink_jdk), \
|
||||||
SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/images/jdk, \
|
OUTPUT_FILE := $$(JDK_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE), \
|
||||||
COMMAND := $(FIXPATH) $(JDK_IMAGE_DIR)/bin/java -Xshare:dump \
|
SUPPORT_DIR := $$(SUPPORT_OUTPUTDIR)/images/jdk, \
|
||||||
-XX:SharedArchiveFile=$(JDK_IMAGE_DIR)/$(CDS_ARCHIVE) \
|
COMMAND := $$(FIXPATH) $$(JDK_IMAGE_DIR)/bin/java -Xshare:dump \
|
||||||
-Xmx128M -Xms128M $(LOG_INFO), \
|
-XX:SharedArchiveFile=$$(JDK_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE) \
|
||||||
|
-$1 $$($1_$2_DUMP_EXTRA_ARG) $$($1_$2_CDS_DUMP_FLAGS) $$(LOG_INFO), \
|
||||||
))
|
))
|
||||||
|
|
||||||
JDK_TARGETS += $(gen_cds_archive_jdk)
|
JDK_TARGETS += $$($1_$2_gen_cds_archive_jdk)
|
||||||
|
|
||||||
$(eval $(call SetupExecute, gen_cds_archive_jre, \
|
$$(eval $$(call SetupExecute, $1_$2_gen_cds_archive_jre, \
|
||||||
WARN := Creating CDS archive for jre image, \
|
WARN := Creating CDS$$($1_$2_DUMP_TYPE) archive for jre image for $1, \
|
||||||
DEPS := $(jlink_jre), \
|
INFO := Using CDS flags for $1: $$($1_$2_CDS_DUMP_FLAGS), \
|
||||||
OUTPUT_FILE := $(JRE_IMAGE_DIR)/$(CDS_ARCHIVE), \
|
DEPS := $$(jlink_jre), \
|
||||||
SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/images/jre, \
|
OUTPUT_FILE := $$(JRE_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE), \
|
||||||
COMMAND := $(FIXPATH) $(JRE_IMAGE_DIR)/bin/java -Xshare:dump \
|
SUPPORT_DIR := $$(SUPPORT_OUTPUTDIR)/images/jre, \
|
||||||
-XX:SharedArchiveFile=$(JRE_IMAGE_DIR)/$(CDS_ARCHIVE) \
|
COMMAND := $$(FIXPATH) $$(JRE_IMAGE_DIR)/bin/java -Xshare:dump \
|
||||||
-Xmx128M -Xms128M $(LOG_INFO), \
|
-XX:SharedArchiveFile=$$(JRE_IMAGE_DIR)/$$($1_$2_CDS_ARCHIVE) \
|
||||||
|
-$1 $$($1_$2_DUMP_EXTRA_ARG) $$($1_$2_CDS_DUMP_FLAGS) $$(LOG_INFO), \
|
||||||
))
|
))
|
||||||
|
|
||||||
JRE_TARGETS += $(gen_cds_archive_jre)
|
JRE_TARGETS += $$($1_$2_gen_cds_archive_jre)
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(BUILD_CDS_ARCHIVE), true)
|
||||||
|
$(foreach v, $(JVM_VARIANTS), \
|
||||||
|
$(eval $(call CreateCDSArchive,$v,)) \
|
||||||
|
)
|
||||||
|
|
||||||
ifeq ($(call isTargetCpuBits, 64), true)
|
ifeq ($(call isTargetCpuBits, 64), true)
|
||||||
$(eval $(call SetupExecute, gen_cds_nocoops_archive_jdk, \
|
$(foreach v, $(JVM_VARIANTS), \
|
||||||
WARN := Creating CDS-NOCOOPS archive for jdk image, \
|
$(eval $(call CreateCDSArchive,$v,_nocoops)) \
|
||||||
DEPS := $(jlink_jdk), \
|
)
|
||||||
OUTPUT_FILE := $(JDK_IMAGE_DIR)/$(CDS_NOCOOPS_ARCHIVE), \
|
|
||||||
SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/images/jdk, \
|
|
||||||
COMMAND := $(FIXPATH) $(JDK_IMAGE_DIR)/bin/java -Xshare:dump \
|
|
||||||
-XX:SharedArchiveFile=$(JDK_IMAGE_DIR)/$(CDS_NOCOOPS_ARCHIVE) \
|
|
||||||
-XX:-UseCompressedOops \
|
|
||||||
-Xmx128M -Xms128M $(LOG_INFO), \
|
|
||||||
))
|
|
||||||
|
|
||||||
JDK_TARGETS += $(gen_cds_nocoops_archive_jdk)
|
|
||||||
|
|
||||||
$(eval $(call SetupExecute, gen_cds_nocoops_archive_jre, \
|
|
||||||
WARN := Creating CDS-NOCOOPS archive for jre image, \
|
|
||||||
DEPS := $(jlink_jre), \
|
|
||||||
OUTPUT_FILE := $(JRE_IMAGE_DIR)/$(CDS_NOCOOPS_ARCHIVE), \
|
|
||||||
SUPPORT_DIR := $(SUPPORT_OUTPUTDIR)/images/jre, \
|
|
||||||
COMMAND := $(FIXPATH) $(JRE_IMAGE_DIR)/bin/java -Xshare:dump \
|
|
||||||
-XX:SharedArchiveFile=$(JRE_IMAGE_DIR)/$(CDS_NOCOOPS_ARCHIVE) \
|
|
||||||
-XX:-UseCompressedOops \
|
|
||||||
-Xmx128M -Xms128M $(LOG_INFO), \
|
|
||||||
))
|
|
||||||
|
|
||||||
JRE_TARGETS += $(gen_cds_nocoops_archive_jre)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -48,6 +48,7 @@ JIMAGE_PKGS := \
|
|||||||
|
|
||||||
$(eval $(call SetupJavaCompilation, BUILD_JRTFS, \
|
$(eval $(call SetupJavaCompilation, BUILD_JRTFS, \
|
||||||
COMPILER := bootjdk, \
|
COMPILER := bootjdk, \
|
||||||
|
DISABLED_WARNINGS := options, \
|
||||||
TARGET_RELEASE := $(TARGET_RELEASE_JDK8), \
|
TARGET_RELEASE := $(TARGET_RELEASE_JDK8), \
|
||||||
SRC := $(TOPDIR)/src/java.base/share/classes, \
|
SRC := $(TOPDIR)/src/java.base/share/classes, \
|
||||||
EXCLUDE_FILES := module-info.java, \
|
EXCLUDE_FILES := module-info.java, \
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -349,13 +349,24 @@ ExpandJtregPath = \
|
|||||||
)) \
|
)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# with test id: dir/Test.java#selection -> Test.java#selection -> .java#selection -> #selection
|
||||||
|
# without: dir/Test.java -> Test.java -> .java -> <<empty string>>
|
||||||
|
TestID = \
|
||||||
|
$(subst .java,,$(suffix $(notdir $1)))
|
||||||
|
|
||||||
|
# The test id starting with a hash (#testid) will be stripped by all
|
||||||
|
# evals in ParseJtregTestSelectionInner and will be reinserted by calling
|
||||||
|
# TestID (if it is present).
|
||||||
|
ParseJtregTestSelection = \
|
||||||
|
$(call IfAppend, $(call ParseJtregTestSelectionInner, $1), $(call TestID, $1))
|
||||||
|
|
||||||
# Helper function to determine if a test specification is a Jtreg test
|
# Helper function to determine if a test specification is a Jtreg test
|
||||||
#
|
#
|
||||||
# It is a Jtreg test if it optionally begins with jtreg:, and then is either
|
# It is a Jtreg test if it optionally begins with jtreg:, and then is either
|
||||||
# an unspecified group name (possibly prefixed by :), or a group in a
|
# an unspecified group name (possibly prefixed by :), or a group in a
|
||||||
# specified test root, or a path to a test or test directory,
|
# specified test root, or a path to a test or test directory,
|
||||||
# either absolute or relative to any of the TEST_BASEDIRS or test roots.
|
# either absolute or relative to any of the TEST_BASEDIRS or test roots.
|
||||||
define ParseJtregTestSelection
|
define ParseJtregTestSelectionInner
|
||||||
$(eval TEST_NAME := $(strip $(patsubst jtreg:%, %, $1))) \
|
$(eval TEST_NAME := $(strip $(patsubst jtreg:%, %, $1))) \
|
||||||
$(if $(or $(findstring :, $(TEST_NAME)), $(findstring /, $(TEST_NAME))), , \
|
$(if $(or $(findstring :, $(TEST_NAME)), $(findstring /, $(TEST_NAME))), , \
|
||||||
$(eval TEST_NAME := :$(TEST_NAME)) \
|
$(eval TEST_NAME := :$(TEST_NAME)) \
|
||||||
@@ -419,28 +430,19 @@ ifeq ($(TEST), )
|
|||||||
$(error Cannot continue)
|
$(error Cannot continue)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ParseTestSelection = \
|
||||||
|
$(strip $(or \
|
||||||
|
$(call ParseCustomTestSelection, $1) \
|
||||||
|
$(call ParseGtestTestSelection, $1) \
|
||||||
|
$(call ParseMicroTestSelection, $1) \
|
||||||
|
$(call ParseJtregTestSelection, $1) \
|
||||||
|
$(call ParseSpecialTestSelection, $1) \
|
||||||
|
))
|
||||||
|
|
||||||
# Now intelligently convert the test selection given by the user in TEST
|
# Now intelligently convert the test selection given by the user in TEST
|
||||||
# into a list of fully qualified test descriptors of the tests to run.
|
# into a list of fully qualified test descriptors of the tests to run.
|
||||||
TESTS_TO_RUN :=
|
TESTS_TO_RUN := $(strip $(foreach test, $(TEST), $(call ParseTestSelection, $(test))))
|
||||||
$(foreach test, $(TEST), \
|
UNKNOWN_TEST := $(strip $(foreach test, $(TEST), $(if $(call ParseTestSelection, $(test)), , $(test))))
|
||||||
$(eval PARSED_TESTS := $(call ParseCustomTestSelection, $(test))) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseGtestTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseMicroTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseJtregTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval PARSED_TESTS += $(call ParseSpecialTestSelection, $(test))) \
|
|
||||||
) \
|
|
||||||
$(if $(strip $(PARSED_TESTS)), , \
|
|
||||||
$(eval UNKNOWN_TEST := $(test)) \
|
|
||||||
) \
|
|
||||||
$(eval TESTS_TO_RUN += $(PARSED_TESTS)) \
|
|
||||||
)
|
|
||||||
|
|
||||||
ifneq ($(UNKNOWN_TEST), )
|
ifneq ($(UNKNOWN_TEST), )
|
||||||
$(info Unknown test selection: '$(UNKNOWN_TEST)')
|
$(info Unknown test selection: '$(UNKNOWN_TEST)')
|
||||||
@@ -448,9 +450,6 @@ ifneq ($(UNKNOWN_TEST), )
|
|||||||
$(error Cannot continue)
|
$(error Cannot continue)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
TESTS_TO_RUN := $(strip $(TESTS_TO_RUN))
|
|
||||||
|
|
||||||
|
|
||||||
# Present the result of our parsing to the user
|
# Present the result of our parsing to the user
|
||||||
$(info Test selection '$(TEST)', will run:)
|
$(info Test selection '$(TEST)', will run:)
|
||||||
$(foreach test, $(TESTS_TO_RUN), $(info * $(test)))
|
$(foreach test, $(TESTS_TO_RUN), $(info * $(test)))
|
||||||
@@ -786,6 +785,8 @@ define SetupRunJtregTestBody
|
|||||||
# symbol lookup in hserr files
|
# symbol lookup in hserr files
|
||||||
ifeq ($$(call isTargetOs, windows), true)
|
ifeq ($$(call isTargetOs, windows), true)
|
||||||
$1_JTREG_BASIC_OPTIONS += -e:_NT_SYMBOL_PATH
|
$1_JTREG_BASIC_OPTIONS += -e:_NT_SYMBOL_PATH
|
||||||
|
else ifeq ($$(call isTargetOs, linux), true)
|
||||||
|
$1_JTREG_BASIC_OPTIONS += -e:_JVM_DWARF_PATH=$$(SYMBOLS_IMAGE_DIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += \
|
$1_JTREG_BASIC_OPTIONS += \
|
||||||
@@ -853,7 +854,7 @@ define SetupRunJtregTestBody
|
|||||||
-dir:$$(JTREG_TOPDIR) \
|
-dir:$$(JTREG_TOPDIR) \
|
||||||
-reportDir:$$($1_TEST_RESULTS_DIR) \
|
-reportDir:$$($1_TEST_RESULTS_DIR) \
|
||||||
-workDir:$$($1_TEST_SUPPORT_DIR) \
|
-workDir:$$($1_TEST_SUPPORT_DIR) \
|
||||||
-status:$$$${JTREG_STATUS} \
|
$$$${JTREG_STATUS} \
|
||||||
$$(JTREG_OPTIONS) \
|
$$(JTREG_OPTIONS) \
|
||||||
$$(JTREG_FAILURE_HANDLER_OPTIONS) \
|
$$(JTREG_FAILURE_HANDLER_OPTIONS) \
|
||||||
$$(JTREG_COV_OPTIONS) \
|
$$(JTREG_COV_OPTIONS) \
|
||||||
@@ -1184,13 +1185,11 @@ ifeq ($(TEST_OPTS_JCOV), true)
|
|||||||
JCOV_SOURCE_DIFF := $(JCOV_OUTPUT_DIR)/source_diff
|
JCOV_SOURCE_DIFF := $(JCOV_OUTPUT_DIR)/source_diff
|
||||||
JCOV_DIFF_COVERAGE_REPORT := $(JCOV_OUTPUT_DIR)/diff_coverage_report
|
JCOV_DIFF_COVERAGE_REPORT := $(JCOV_OUTPUT_DIR)/diff_coverage_report
|
||||||
|
|
||||||
ifneq ($(and $(HG), $(wildcard $(TOPDIR)/.hg)), )
|
ifneq ($(and $(GIT), $(wildcard $(TOPDIR)/.git)), )
|
||||||
DIFF_COMMAND := $(HG) -R $(TOPDIR) diff -r $(TEST_OPTS_JCOV_DIFF_CHANGESET) > $(JCOV_SOURCE_DIFF)
|
|
||||||
else ifneq ($(and $(GIT), $(wildcard $(TOPDIR)/.git)), )
|
|
||||||
DIFF_COMMAND := $(GIT) -C $(TOPDIR) diff $(TEST_OPTS_JCOV_DIFF_CHANGESET) > $(JCOV_SOURCE_DIFF)
|
DIFF_COMMAND := $(GIT) -C $(TOPDIR) diff $(TEST_OPTS_JCOV_DIFF_CHANGESET) > $(JCOV_SOURCE_DIFF)
|
||||||
else
|
else
|
||||||
$(info Error: Must be either hg or git source tree for diff coverage.)
|
$(info Error: Must be a git source tree for diff coverage.)
|
||||||
$(error Neither hg nor git source tree.)
|
$(error No git source tree.)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
jcov-gen-diffcoverage: jcov-stop-grabber
|
jcov-gen-diffcoverage: jcov-stop-grabber
|
||||||
|
|||||||
@@ -169,7 +169,6 @@ ZIPEXE := zip
|
|||||||
UNZIP := unzip
|
UNZIP := unzip
|
||||||
EXPR := expr
|
EXPR := expr
|
||||||
FILE := file
|
FILE := file
|
||||||
HG := hg
|
|
||||||
ULIMIT := ulimit
|
ULIMIT := ulimit
|
||||||
|
|
||||||
ifeq ($(OPENJDK_BUILD_OS), windows)
|
ifeq ($(OPENJDK_BUILD_OS), windows)
|
||||||
|
|||||||
@@ -42,11 +42,7 @@ $(eval $(call IncludeCustomExtension, SourceRevision-pre.gmk))
|
|||||||
STORED_SOURCE_REVISION := $(TOPDIR)/.src-rev
|
STORED_SOURCE_REVISION := $(TOPDIR)/.src-rev
|
||||||
|
|
||||||
USE_SCM := false
|
USE_SCM := false
|
||||||
ifneq ($(and $(HG), $(wildcard $(TOPDIR)/.hg)), )
|
ifneq ($(and $(GIT), $(wildcard $(TOPDIR)/.git)), )
|
||||||
USE_SCM := true
|
|
||||||
SCM_DIR := .hg
|
|
||||||
ID_COMMAND := $(PRINTF) "hg:%s" "$$($(HG) id -i)"
|
|
||||||
else ifneq ($(and $(GIT), $(wildcard $(TOPDIR)/.git)), )
|
|
||||||
USE_SCM := true
|
USE_SCM := true
|
||||||
SCM_DIR := .git
|
SCM_DIR := .git
|
||||||
ID_COMMAND := $(PRINTF) "git:%s%s\n" \
|
ID_COMMAND := $(PRINTF) "git:%s%s\n" \
|
||||||
@@ -85,7 +81,7 @@ ifeq ($(USE_SCM), true)
|
|||||||
REPO_REVISIONS += $$(SUPPORT_OUTPUTDIR)/src-rev/$$($1_FILENAME)
|
REPO_REVISIONS += $$(SUPPORT_OUTPUTDIR)/src-rev/$$($1_FILENAME)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Setup rules for all repos. This makes sure all the "hg id" calls are made
|
# Setup rules for all repos. This makes sure all the "git log" calls are made
|
||||||
# in parallel.
|
# in parallel.
|
||||||
$(foreach repo, $(call FindAllReposRel), \
|
$(foreach repo, $(call FindAllReposRel), \
|
||||||
$(eval $(call SetupGetRevisionForRepo, $(repo))) \
|
$(eval $(call SetupGetRevisionForRepo, $(repo))) \
|
||||||
|
|||||||
@@ -453,7 +453,7 @@ AC_DEFUN_ONCE([BASIC_CHECK_SRC_PERMS],
|
|||||||
# in the source tree when configure runs
|
# in the source tree when configure runs
|
||||||
file_to_test="$TOPDIR/Makefile"
|
file_to_test="$TOPDIR/Makefile"
|
||||||
if test `$STAT -c '%a' "$file_to_test"` -lt 400; then
|
if test `$STAT -c '%a' "$file_to_test"` -lt 400; then
|
||||||
AC_MSG_ERROR([Bad file permissions on src files. This is usually caused by cloning the repositories with a non cygwin hg in a directory not created in cygwin.])
|
AC_MSG_ERROR([Bad file permissions on src files. This is usually caused by cloning the repositories with non cygwin tools in a directory not created in cygwin.])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -342,7 +342,6 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
|||||||
|
|
||||||
UTIL_LOOKUP_PROGS(READELF, greadelf readelf)
|
UTIL_LOOKUP_PROGS(READELF, greadelf readelf)
|
||||||
UTIL_LOOKUP_PROGS(DOT, dot)
|
UTIL_LOOKUP_PROGS(DOT, dot)
|
||||||
UTIL_LOOKUP_PROGS(HG, hg)
|
|
||||||
UTIL_LOOKUP_PROGS(STAT, stat)
|
UTIL_LOOKUP_PROGS(STAT, stat)
|
||||||
UTIL_LOOKUP_PROGS(TIME, time)
|
UTIL_LOOKUP_PROGS(TIME, time)
|
||||||
UTIL_LOOKUP_PROGS(FLOCK, flock)
|
UTIL_LOOKUP_PROGS(FLOCK, flock)
|
||||||
@@ -376,41 +375,6 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
|||||||
UTIL_REQUIRE_PROGS(MIG, mig)
|
UTIL_REQUIRE_PROGS(MIG, mig)
|
||||||
UTIL_REQUIRE_PROGS(XATTR, xattr)
|
UTIL_REQUIRE_PROGS(XATTR, xattr)
|
||||||
UTIL_LOOKUP_PROGS(CODESIGN, codesign)
|
UTIL_LOOKUP_PROGS(CODESIGN, codesign)
|
||||||
|
|
||||||
# Check for user provided code signing identity.
|
|
||||||
UTIL_ARG_WITH(NAME: macosx-codesign-identity, TYPE: string,
|
|
||||||
DEFAULT: openjdk_codesign, CHECK_VALUE: UTIL_CHECK_STRING_NON_EMPTY,
|
|
||||||
DESC: [specify the macosx code signing identity],
|
|
||||||
CHECKING_MSG: [for macosx code signing identity]
|
|
||||||
)
|
|
||||||
AC_SUBST(MACOSX_CODESIGN_IDENTITY)
|
|
||||||
|
|
||||||
if test "x$CODESIGN" != "x"; then
|
|
||||||
# Verify that the codesign certificate is present
|
|
||||||
AC_MSG_CHECKING([if codesign certificate is present])
|
|
||||||
$RM codesign-testfile
|
|
||||||
$TOUCH codesign-testfile
|
|
||||||
$CODESIGN -s "$MACOSX_CODESIGN_IDENTITY" codesign-testfile 2>&AS_MESSAGE_LOG_FD \
|
|
||||||
>&AS_MESSAGE_LOG_FD || CODESIGN=
|
|
||||||
$RM codesign-testfile
|
|
||||||
if test "x$CODESIGN" = x; then
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
# Verify that the codesign has --option runtime
|
|
||||||
AC_MSG_CHECKING([if codesign has --option runtime])
|
|
||||||
$RM codesign-testfile
|
|
||||||
$TOUCH codesign-testfile
|
|
||||||
$CODESIGN --option runtime -s "$MACOSX_CODESIGN_IDENTITY" codesign-testfile \
|
|
||||||
2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD || CODESIGN=
|
|
||||||
$RM codesign-testfile
|
|
||||||
if test "x$CODESIGN" = x; then
|
|
||||||
AC_MSG_ERROR([codesign does not have --option runtime. macOS 10.13.6 and above is required.])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
UTIL_REQUIRE_PROGS(SETFILE, SetFile)
|
UTIL_REQUIRE_PROGS(SETFILE, SetFile)
|
||||||
fi
|
fi
|
||||||
if ! test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
if ! test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -40,6 +40,7 @@ export AWK="@AWK@"
|
|||||||
export BASH="@BASH@"
|
export BASH="@BASH@"
|
||||||
export CAT="@CAT@"
|
export CAT="@CAT@"
|
||||||
export CMP="@CMP@"
|
export CMP="@CMP@"
|
||||||
|
export CODESIGN="@CODESIGN@"
|
||||||
export CP="@CP@"
|
export CP="@CP@"
|
||||||
export CUT="@CUT@"
|
export CUT="@CUT@"
|
||||||
export DIFF="@DIFF@"
|
export DIFF="@DIFF@"
|
||||||
@@ -92,7 +93,6 @@ if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
|||||||
export PATH="$PATH:@TOOLCHAIN_PATH@"
|
export PATH="$PATH:@TOOLCHAIN_PATH@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export HOTSPOT_BUILD_TIME="@HOTSPOT_BUILD_TIME@"
|
|
||||||
export USE_PRECOMPILED_HEADER="@USE_PRECOMPILED_HEADER@"
|
export USE_PRECOMPILED_HEADER="@USE_PRECOMPILED_HEADER@"
|
||||||
|
|
||||||
# Now locate the main script and run it.
|
# Now locate the main script and run it.
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
|
|
||||||
AC_PREREQ([2.69])
|
AC_PREREQ([2.69])
|
||||||
AC_INIT(OpenJDK, openjdk, build-dev@openjdk.java.net,,http://openjdk.java.net)
|
AC_INIT(OpenJDK, openjdk, build-dev@openjdk.org,,https://openjdk.org)
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR([$TOPDIR/make/autoconf/build-aux])
|
AC_CONFIG_AUX_DIR([$TOPDIR/make/autoconf/build-aux])
|
||||||
m4_include([build-aux/pkg.m4])
|
m4_include([build-aux/pkg.m4])
|
||||||
@@ -133,6 +133,7 @@ BASIC_SETUP_DEFAULT_LOG
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# We need build & target for this.
|
# We need build & target for this.
|
||||||
|
JDKOPT_SETUP_JMOD_OPTIONS
|
||||||
JDKOPT_SETUP_JLINK_OPTIONS
|
JDKOPT_SETUP_JLINK_OPTIONS
|
||||||
JDKVER_SETUP_JDK_VERSION_NUMBERS
|
JDKVER_SETUP_JDK_VERSION_NUMBERS
|
||||||
|
|
||||||
@@ -191,18 +192,15 @@ TOOLCHAIN_POST_DETECTION
|
|||||||
TOOLCHAIN_SETUP_BUILD_COMPILERS
|
TOOLCHAIN_SETUP_BUILD_COMPILERS
|
||||||
TOOLCHAIN_MISC_CHECKS
|
TOOLCHAIN_MISC_CHECKS
|
||||||
|
|
||||||
# Setup the JTReg Regression Test Harness.
|
|
||||||
TOOLCHAIN_SETUP_JTREG
|
|
||||||
|
|
||||||
# Setup the Java Microbenchmark Harness (JMH)
|
|
||||||
LIB_TESTS_SETUP_JMH
|
|
||||||
|
|
||||||
# Setup Jib dependency tool
|
|
||||||
TOOLCHAIN_SETUP_JIB
|
|
||||||
|
|
||||||
# After toolchain setup, we need to process some flags to be able to continue.
|
# After toolchain setup, we need to process some flags to be able to continue.
|
||||||
FLAGS_POST_TOOLCHAIN
|
FLAGS_POST_TOOLCHAIN
|
||||||
|
|
||||||
|
# Setup the tools needed to test the JDK (JTReg Regression Test Harness,
|
||||||
|
# Java Microbenchmark Harness (JMH) and the Jib dependency tool).
|
||||||
|
LIB_TESTS_SETUP_JTREG
|
||||||
|
LIB_TESTS_SETUP_JMH
|
||||||
|
LIB_TESTS_SETUP_JIB
|
||||||
|
|
||||||
# Now we can test some aspects on the target using configure macros.
|
# Now we can test some aspects on the target using configure macros.
|
||||||
PLATFORM_SETUP_OPENJDK_TARGET_BITS
|
PLATFORM_SETUP_OPENJDK_TARGET_BITS
|
||||||
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
|
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
|
||||||
@@ -243,12 +241,14 @@ HOTSPOT_SETUP_MISC
|
|||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER
|
LIB_TESTS_ENABLE_DISABLE_FAILURE_HANDLER
|
||||||
|
|
||||||
JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
|
JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
|
||||||
JDKOPT_EXCLUDE_TRANSLATIONS
|
JDKOPT_EXCLUDE_TRANSLATIONS
|
||||||
JDKOPT_ENABLE_DISABLE_MANPAGES
|
JDKOPT_ENABLE_DISABLE_MANPAGES
|
||||||
JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE
|
JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE
|
||||||
JDKOPT_ENABLE_DISABLE_COMPATIBLE_CDS_ALIGNMENT
|
JDKOPT_ENABLE_DISABLE_COMPATIBLE_CDS_ALIGNMENT
|
||||||
|
JDKOPT_SETUP_MACOSX_SIGNING
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -113,9 +113,21 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
|
|||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CFLAGS_DEBUG_SYMBOLS="-g"
|
CFLAGS_DEBUG_SYMBOLS="-g -gdwarf-4"
|
||||||
ASFLAGS_DEBUG_SYMBOLS="-g"
|
ASFLAGS_DEBUG_SYMBOLS="-g"
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
|
if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
|
||||||
|
# Check if compiler supports -fdebug-prefix-map. If so, use that to make
|
||||||
|
# the debug symbol paths resolve to paths relative to the workspace root.
|
||||||
|
workspace_root_trailing_slash="${WORKSPACE_ROOT%/}/"
|
||||||
|
DEBUG_PREFIX_CFLAGS="-fdebug-prefix-map=${workspace_root_trailing_slash}="
|
||||||
|
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${DEBUG_PREFIX_CFLAGS}],
|
||||||
|
IF_FALSE: [
|
||||||
|
DEBUG_PREFIX_CFLAGS=
|
||||||
|
]
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
CFLAGS_DEBUG_SYMBOLS="-g"
|
CFLAGS_DEBUG_SYMBOLS="-g"
|
||||||
ASFLAGS_DEBUG_SYMBOLS="-g"
|
ASFLAGS_DEBUG_SYMBOLS="-g"
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||||
@@ -155,11 +167,7 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
|||||||
CFLAGS_WARNINGS_ARE_ERRORS="-WX"
|
CFLAGS_WARNINGS_ARE_ERRORS="-WX"
|
||||||
|
|
||||||
WARNINGS_ENABLE_ALL="-W3"
|
WARNINGS_ENABLE_ALL="-W3"
|
||||||
DISABLED_WARNINGS="4800"
|
DISABLED_WARNINGS="4800 5105"
|
||||||
if test "x$TOOLCHAIN_VERSION" = x2017; then
|
|
||||||
# VS2017 incorrectly triggers this warning for constexpr
|
|
||||||
DISABLED_WARNINGS="$DISABLED_WARNINGS 4307"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
gcc)
|
gcc)
|
||||||
@@ -522,25 +530,15 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
TOOLCHAIN_CFLAGS_JVM="-qtbtable=full -qtune=balanced \
|
TOOLCHAIN_CFLAGS_JVM="-qtbtable=full -qtune=balanced \
|
||||||
-qalias=noansi -qstrict -qtls=default -qnortti -qnoeh -qignerrno -qstackprotect"
|
-qalias=noansi -qstrict -qtls=default -qnortti -qnoeh -qignerrno -qstackprotect"
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||||
TOOLCHAIN_CFLAGS_JVM="-nologo -MD -Zc:strictStrings -MP"
|
TOOLCHAIN_CFLAGS_JVM="-nologo -MD -Zc:preprocessor -Zc:strictStrings -MP"
|
||||||
TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:strictStrings -Zc:wchar_t-"
|
TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:preprocessor -Zc:strictStrings -Zc:wchar_t-"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# CFLAGS C language level for JDK sources (hotspot only uses C++)
|
# CFLAGS C language level for JDK sources (hotspot only uses C++)
|
||||||
# Ideally we would have a common level across all toolchains so that all sources
|
|
||||||
# are sure to conform to the same standard. Unfortunately neither our sources nor
|
|
||||||
# our toolchains are in a condition to support that. But what we loosely aim for is
|
|
||||||
# C99 level.
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xxlc; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||||
# Explicitly set C99. clang and xlclang support the same flag.
|
LANGSTD_CFLAGS="-std=c11"
|
||||||
LANGSTD_CFLAGS="-std=c99"
|
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||||
# MSVC doesn't support C99/C11 explicitly, unless you compile as C++:
|
LANGSTD_CFLAGS="-std:c11"
|
||||||
# LANGSTD_CFLAGS="-TP"
|
|
||||||
# but that requires numerous changes to the sources files. So we are limited
|
|
||||||
# to C89/C90 plus whatever extensions Visual Studio has decided to implement.
|
|
||||||
# This is the lowest bar for shared code.
|
|
||||||
LANGSTD_CFLAGS=""
|
|
||||||
fi
|
fi
|
||||||
TOOLCHAIN_CFLAGS_JDK_CONLY="$LANGSTD_CFLAGS $TOOLCHAIN_CFLAGS_JDK_CONLY"
|
TOOLCHAIN_CFLAGS_JDK_CONLY="$LANGSTD_CFLAGS $TOOLCHAIN_CFLAGS_JDK_CONLY"
|
||||||
|
|
||||||
@@ -774,10 +772,8 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
|||||||
$1_TOOLCHAIN_CFLAGS="${NO_DELETE_NULL_POINTER_CHECKS_CFLAG}"
|
$1_TOOLCHAIN_CFLAGS="${NO_DELETE_NULL_POINTER_CHECKS_CFLAG}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft && test "x$ENABLE_REPRODUCIBLE_BUILD" = xtrue; then
|
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||||
# Enabling deterministic creates warnings if __DATE__ or __TIME__ are
|
REPRODUCIBLE_CFLAGS="-experimental:deterministic"
|
||||||
# used, and since we are, silence that warning.
|
|
||||||
REPRODUCIBLE_CFLAGS="-experimental:deterministic -wd5048"
|
|
||||||
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${REPRODUCIBLE_CFLAGS}],
|
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${REPRODUCIBLE_CFLAGS}],
|
||||||
PREFIX: $3,
|
PREFIX: $3,
|
||||||
IF_FALSE: [
|
IF_FALSE: [
|
||||||
@@ -804,8 +800,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
|||||||
FILE_MACRO_CFLAGS=
|
FILE_MACRO_CFLAGS=
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft &&
|
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||||
test "x$ENABLE_REPRODUCIBLE_BUILD" = xtrue; then
|
|
||||||
# There is a known issue with the pathmap if the mapping is made to the
|
# 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.
|
# empty string. Add a minimal string "s" as prefix to work around this.
|
||||||
# PATHMAP_FLAGS is also added to LDFLAGS in flags-ldflags.m4.
|
# PATHMAP_FLAGS is also added to LDFLAGS in flags-ldflags.m4.
|
||||||
|
|||||||
@@ -128,10 +128,13 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$ENABLE_REPRODUCIBLE_BUILD" = "xtrue"; then
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||||
REPRODUCIBLE_LDFLAGS="-experimental:deterministic"
|
REPRODUCIBLE_LDFLAGS="-experimental:deterministic"
|
||||||
fi
|
FLAGS_LINKER_CHECK_ARGUMENTS(ARGUMENT: [$REPRODUCIBLE_LDFLAGS],
|
||||||
|
IF_FALSE: [
|
||||||
|
REPRODUCIBLE_LDFLAGS=
|
||||||
|
]
|
||||||
|
)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
|
if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
|
||||||
|
|||||||
@@ -472,6 +472,31 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD],
|
|||||||
AC_SUBST(STATIC_BUILD)
|
AC_SUBST(STATIC_BUILD)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# jmod options.
|
||||||
|
#
|
||||||
|
AC_DEFUN_ONCE([JDKOPT_SETUP_JMOD_OPTIONS],
|
||||||
|
[
|
||||||
|
# Final JMODs are recompiled often during development, and java.base JMOD
|
||||||
|
# includes the JVM libraries. In release mode, prefer to compress JMODs fully.
|
||||||
|
# In debug mode, pay with a little extra space, but win a lot of CPU time back
|
||||||
|
# with the lightest (but still some) compression.
|
||||||
|
if test "x$DEBUG_LEVEL" = xrelease; then
|
||||||
|
DEFAULT_JMOD_COMPRESS="zip-6"
|
||||||
|
else
|
||||||
|
DEFAULT_JMOD_COMPRESS="zip-1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
UTIL_ARG_WITH(NAME: jmod-compress, TYPE: literal,
|
||||||
|
VALID_VALUES: [zip-0 zip-1 zip-2 zip-3 zip-4 zip-5 zip-6 zip-7 zip-8 zip-9],
|
||||||
|
DEFAULT: $DEFAULT_JMOD_COMPRESS,
|
||||||
|
CHECKING_MSG: [for JMOD compression type],
|
||||||
|
DESC: [specify JMOD compression type (zip-[0-9])]
|
||||||
|
)
|
||||||
|
AC_SUBST(JMOD_COMPRESS)
|
||||||
|
])
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# jlink options.
|
# jlink options.
|
||||||
@@ -486,29 +511,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS],
|
|||||||
AC_SUBST(JLINK_KEEP_PACKAGED_MODULES)
|
AC_SUBST(JLINK_KEEP_PACKAGED_MODULES)
|
||||||
])
|
])
|
||||||
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Check if building of the jtreg failure handler should be enabled.
|
|
||||||
#
|
|
||||||
AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER],
|
|
||||||
[
|
|
||||||
UTIL_ARG_ENABLE(NAME: jtreg-failure-handler, DEFAULT: auto,
|
|
||||||
RESULT: BUILD_FAILURE_HANDLER,
|
|
||||||
DESC: [enable building of the jtreg failure handler],
|
|
||||||
DEFAULT_DESC: [enabled if jtreg is present],
|
|
||||||
CHECKING_MSG: [if the jtreg failure handler should be built],
|
|
||||||
CHECK_AVAILABLE: [
|
|
||||||
AC_MSG_CHECKING([if the jtreg failure handler is available])
|
|
||||||
if test "x$JT_HOME" != "x"; then
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
else
|
|
||||||
AVAILABLE=false
|
|
||||||
AC_MSG_RESULT([no (jtreg not present)])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
AC_SUBST(BUILD_FAILURE_HANDLER)
|
|
||||||
])
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Enable or disable generation of the classlist at build time
|
# Enable or disable generation of the classlist at build time
|
||||||
@@ -648,7 +650,7 @@ AC_DEFUN([JDKOPT_ALLOW_ABSOLUTE_PATHS_IN_OUTPUT],
|
|||||||
AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
||||||
[
|
[
|
||||||
AC_ARG_WITH([source-date], [AS_HELP_STRING([--with-source-date],
|
AC_ARG_WITH([source-date], [AS_HELP_STRING([--with-source-date],
|
||||||
[how to set SOURCE_DATE_EPOCH ('updated', 'current', 'version' a timestamp or an ISO-8601 date) @<:@updated/value of SOURCE_DATE_EPOCH@:>@])],
|
[how to set SOURCE_DATE_EPOCH ('updated', 'current', 'version' a timestamp or an ISO-8601 date) @<:@current/value of SOURCE_DATE_EPOCH@:>@])],
|
||||||
[with_source_date_present=true], [with_source_date_present=false])
|
[with_source_date_present=true], [with_source_date_present=false])
|
||||||
|
|
||||||
if test "x$SOURCE_DATE_EPOCH" != x && test "x$with_source_date" != x; then
|
if test "x$SOURCE_DATE_EPOCH" != x && test "x$with_source_date" != x; then
|
||||||
@@ -665,9 +667,9 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
|||||||
with_source_date_present=true
|
with_source_date_present=true
|
||||||
AC_MSG_RESULT([$SOURCE_DATE, from SOURCE_DATE_EPOCH])
|
AC_MSG_RESULT([$SOURCE_DATE, from SOURCE_DATE_EPOCH])
|
||||||
else
|
else
|
||||||
# Tell the makefiles to update at each build
|
# Tell makefiles to take the time from configure
|
||||||
SOURCE_DATE=updated
|
SOURCE_DATE=$($DATE +"%s")
|
||||||
AC_MSG_RESULT([determined at build time (default)])
|
AC_MSG_RESULT([$SOURCE_DATE, from 'current' (default)])
|
||||||
fi
|
fi
|
||||||
elif test "x$with_source_date" = xupdated; then
|
elif test "x$with_source_date" = xupdated; then
|
||||||
SOURCE_DATE=updated
|
SOURCE_DATE=updated
|
||||||
@@ -713,30 +715,111 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
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 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-build])
|
|
||||||
AC_MSG_NOTICE([with --disable-absolute-paths-in-output.])
|
|
||||||
AC_MSG_ERROR([Cannot continue])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(SOURCE_DATE)
|
AC_SUBST(SOURCE_DATE)
|
||||||
AC_SUBST(ENABLE_REPRODUCIBLE_BUILD)
|
|
||||||
AC_SUBST(ISO_8601_FORMAT_STRING)
|
AC_SUBST(ISO_8601_FORMAT_STRING)
|
||||||
AC_SUBST(SOURCE_DATE_ISO_8601)
|
AC_SUBST(SOURCE_DATE_ISO_8601)
|
||||||
|
|
||||||
|
UTIL_DEPRECATED_ARG_ENABLE(reproducible-build)
|
||||||
|
])
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Setup signing on macOS. This can either be setup to sign with a real identity
|
||||||
|
# and enabling the hardened runtime, or it can simply add the debug entitlement
|
||||||
|
# com.apple.security.get-task-allow without actually signing any binaries. The
|
||||||
|
# latter is needed to be able to debug processes and dump core files on modern
|
||||||
|
# versions of macOS. It can also be skipped completely.
|
||||||
|
#
|
||||||
|
# Check if codesign will run with the given parameters
|
||||||
|
# $1: Parameters to run with
|
||||||
|
# $2: Checking message
|
||||||
|
# Sets CODESIGN_SUCCESS=true/false
|
||||||
|
AC_DEFUN([JDKOPT_CHECK_CODESIGN_PARAMS],
|
||||||
|
[
|
||||||
|
PARAMS="$1"
|
||||||
|
MESSAGE="$2"
|
||||||
|
CODESIGN_TESTFILE="$CONFIGURESUPPORT_OUTPUTDIR/codesign-testfile"
|
||||||
|
$RM "$CODESIGN_TESTFILE"
|
||||||
|
$TOUCH "$CODESIGN_TESTFILE"
|
||||||
|
CODESIGN_SUCCESS=false
|
||||||
|
$CODESIGN $PARAMS "$CODESIGN_TESTFILE" 2>&AS_MESSAGE_LOG_FD \
|
||||||
|
>&AS_MESSAGE_LOG_FD && CODESIGN_SUCCESS=true
|
||||||
|
$RM "$CODESIGN_TESTFILE"
|
||||||
|
AC_MSG_CHECKING([$MESSAGE])
|
||||||
|
if test "x$CODESIGN_SUCCESS" = "xtrue"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([JDKOPT_CHECK_CODESIGN_HARDENED],
|
||||||
|
[
|
||||||
|
JDKOPT_CHECK_CODESIGN_PARAMS([-s "$MACOSX_CODESIGN_IDENTITY" --option runtime],
|
||||||
|
[if codesign with hardened runtime is possible])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([JDKOPT_CHECK_CODESIGN_DEBUG],
|
||||||
|
[
|
||||||
|
JDKOPT_CHECK_CODESIGN_PARAMS([-s -], [if debug mode codesign is possible])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([JDKOPT_SETUP_MACOSX_SIGNING],
|
||||||
|
[
|
||||||
|
ENABLE_CODESIGN=false
|
||||||
|
if test "x$OPENJDK_TARGET_OS" = "xmacosx" && test "x$CODESIGN" != "x"; then
|
||||||
|
|
||||||
|
UTIL_ARG_WITH(NAME: macosx-codesign, TYPE: literal, OPTIONAL: true,
|
||||||
|
VALID_VALUES: [hardened debug auto], DEFAULT: auto,
|
||||||
|
ENABLED_DEFAULT: true,
|
||||||
|
CHECKING_MSG: [for macosx code signing mode],
|
||||||
|
DESC: [set the macosx code signing mode (hardened, debug, auto)]
|
||||||
|
)
|
||||||
|
|
||||||
|
MACOSX_CODESIGN_MODE=disabled
|
||||||
|
if test "x$MACOSX_CODESIGN_ENABLED" = "xtrue"; then
|
||||||
|
|
||||||
|
# Check for user provided code signing identity.
|
||||||
|
UTIL_ARG_WITH(NAME: macosx-codesign-identity, TYPE: string,
|
||||||
|
DEFAULT: openjdk_codesign, CHECK_VALUE: UTIL_CHECK_STRING_NON_EMPTY,
|
||||||
|
DESC: [specify the macosx code signing identity],
|
||||||
|
CHECKING_MSG: [for macosx code signing identity]
|
||||||
|
)
|
||||||
|
AC_SUBST(MACOSX_CODESIGN_IDENTITY)
|
||||||
|
|
||||||
|
if test "x$MACOSX_CODESIGN" = "xauto"; then
|
||||||
|
# Only try to default to hardened signing on release builds
|
||||||
|
if test "x$DEBUG_LEVEL" = "xrelease"; then
|
||||||
|
JDKOPT_CHECK_CODESIGN_HARDENED
|
||||||
|
if test "x$CODESIGN_SUCCESS" = "xtrue"; then
|
||||||
|
MACOSX_CODESIGN_MODE=hardened
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x$MACOSX_CODESIGN_MODE" = "xdisabled"; then
|
||||||
|
JDKOPT_CHECK_CODESIGN_DEBUG
|
||||||
|
if test "x$CODESIGN_SUCCESS" = "xtrue"; then
|
||||||
|
MACOSX_CODESIGN_MODE=debug
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_MSG_CHECKING([for macosx code signing mode])
|
||||||
|
AC_MSG_RESULT([$MACOSX_CODESIGN_MODE])
|
||||||
|
elif test "x$MACOSX_CODESIGN" = "xhardened"; then
|
||||||
|
JDKOPT_CHECK_CODESIGN_HARDENED
|
||||||
|
if test "x$CODESIGN_SUCCESS" = "xfalse"; then
|
||||||
|
AC_MSG_ERROR([Signing with hardened runtime is not possible])
|
||||||
|
fi
|
||||||
|
MACOSX_CODESIGN_MODE=hardened
|
||||||
|
elif test "x$MACOSX_CODESIGN" = "xdebug"; then
|
||||||
|
JDKOPT_CHECK_CODESIGN_DEBUG
|
||||||
|
if test "x$CODESIGN_SUCCESS" = "xfalse"; then
|
||||||
|
AC_MSG_ERROR([Signing in debug mode is not possible])
|
||||||
|
fi
|
||||||
|
MACOSX_CODESIGN_MODE=debug
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([unknown value for --with-macosx-codesign: $MACOSX_CODESIGN])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_SUBST(MACOSX_CODESIGN_IDENTITY)
|
||||||
|
AC_SUBST(MACOSX_CODESIGN_MODE)
|
||||||
|
fi
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -275,6 +275,8 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_JVMCI],
|
|||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
|
elif test "x$OPENJDK_TARGET_CPU" = "xriscv64"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
|
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
|
||||||
AVAILABLE=false
|
AVAILABLE=false
|
||||||
@@ -410,7 +412,7 @@ AC_DEFUN([JVM_FEATURES_PREPARE_VARIANT],
|
|||||||
elif test "x$variant" = "xcore"; then
|
elif test "x$variant" = "xcore"; then
|
||||||
JVM_FEATURES_VARIANT_UNAVAILABLE="cds minimal zero"
|
JVM_FEATURES_VARIANT_UNAVAILABLE="cds minimal zero"
|
||||||
elif test "x$variant" = "xzero"; then
|
elif test "x$variant" = "xzero"; then
|
||||||
JVM_FEATURES_VARIANT_UNAVAILABLE="cds compiler1 compiler2 \
|
JVM_FEATURES_VARIANT_UNAVAILABLE="compiler1 compiler2 \
|
||||||
jvmci minimal zgc"
|
jvmci minimal zgc"
|
||||||
else
|
else
|
||||||
JVM_FEATURES_VARIANT_UNAVAILABLE="minimal zero"
|
JVM_FEATURES_VARIANT_UNAVAILABLE="minimal zero"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -23,6 +23,13 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup libraries and functionalities needed to test the JDK.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Minimum supported version
|
||||||
|
JTREG_MINIMUM_VERSION=7
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
# Setup and check for gtest framework source files
|
# Setup and check for gtest framework source files
|
||||||
@@ -118,3 +125,163 @@ AC_DEFUN_ONCE([LIB_TESTS_SETUP_JMH],
|
|||||||
AC_SUBST(JMH_COMMONS_MATH_JAR)
|
AC_SUBST(JMH_COMMONS_MATH_JAR)
|
||||||
AC_SUBST(JMH_VERSION)
|
AC_SUBST(JMH_VERSION)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# Setup the JTReg Regression Test Harness.
|
||||||
|
AC_DEFUN_ONCE([LIB_TESTS_SETUP_JTREG],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
|
||||||
|
[Regression Test Harness @<:@probed@:>@])])
|
||||||
|
|
||||||
|
if test "x$with_jtreg" = xno; then
|
||||||
|
# jtreg disabled
|
||||||
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
|
AC_MSG_RESULT([no, disabled])
|
||||||
|
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
|
||||||
|
if test -d "$with_jtreg"; then
|
||||||
|
# An explicit path is specified, use it.
|
||||||
|
JT_HOME="$with_jtreg"
|
||||||
|
else
|
||||||
|
case "$with_jtreg" in
|
||||||
|
*.zip )
|
||||||
|
JTREG_SUPPORT_DIR=$CONFIGURESUPPORT_OUTPUTDIR/jtreg
|
||||||
|
$RM -rf $JTREG_SUPPORT_DIR
|
||||||
|
$MKDIR -p $JTREG_SUPPORT_DIR
|
||||||
|
$UNZIP -qq -d $JTREG_SUPPORT_DIR $with_jtreg
|
||||||
|
|
||||||
|
# Try to find jtreg to determine JT_HOME path
|
||||||
|
JTREG_PATH=`$FIND $JTREG_SUPPORT_DIR | $GREP "/bin/jtreg"`
|
||||||
|
if test "x$JTREG_PATH" != x; then
|
||||||
|
JT_HOME=$($DIRNAME $($DIRNAME $JTREG_PATH))
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
UTIL_FIXUP_PATH([JT_HOME])
|
||||||
|
if test ! -d "$JT_HOME"; then
|
||||||
|
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
|
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
|
AC_MSG_RESULT([$JT_HOME])
|
||||||
|
else
|
||||||
|
# Try to locate jtreg using the JT_HOME environment variable
|
||||||
|
if test "x$JT_HOME" != x; then
|
||||||
|
# JT_HOME set in environment, use it
|
||||||
|
if test ! -d "$JT_HOME"; then
|
||||||
|
AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
|
||||||
|
JT_HOME=
|
||||||
|
else
|
||||||
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
|
AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
|
||||||
|
JT_HOME=
|
||||||
|
else
|
||||||
|
AC_MSG_NOTICE([Located jtreg using JT_HOME from environment])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
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_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)`
|
||||||
|
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
||||||
|
AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
|
||||||
|
JT_HOME=
|
||||||
|
else
|
||||||
|
AC_MSG_NOTICE([Located jtreg using jtreg executable in path])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for jtreg test harness])
|
||||||
|
if test "x$JT_HOME" != x; then
|
||||||
|
AC_MSG_RESULT([$JT_HOME])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no, not found])
|
||||||
|
|
||||||
|
if test "x$with_jtreg" = xyes; then
|
||||||
|
AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
UTIL_FIXUP_PATH(JT_HOME)
|
||||||
|
AC_SUBST(JT_HOME)
|
||||||
|
|
||||||
|
# Verify jtreg version
|
||||||
|
if test "x$JT_HOME" != x; then
|
||||||
|
AC_MSG_CHECKING([jtreg version number])
|
||||||
|
# jtreg -version looks like this: "jtreg 6.1+1-19"
|
||||||
|
# Extract actual version part ("6.1" in this case)
|
||||||
|
jtreg_version_full=`$JAVA -jar $JT_HOME/lib/jtreg.jar -version | $HEAD -n 1 | $CUT -d ' ' -f 2`
|
||||||
|
jtreg_version=${jtreg_version_full/%+*}
|
||||||
|
AC_MSG_RESULT([$jtreg_version])
|
||||||
|
|
||||||
|
# This is a simplified version of TOOLCHAIN_CHECK_COMPILER_VERSION
|
||||||
|
comparable_actual_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$jtreg_version"`
|
||||||
|
comparable_minimum_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$JTREG_MINIMUM_VERSION"`
|
||||||
|
if test $comparable_actual_version -lt $comparable_minimum_version ; then
|
||||||
|
AC_MSG_ERROR([jtreg version is too old, at least version $JTREG_MINIMUM_VERSION is required])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
# Setup the JIB dependency resolver
|
||||||
|
AC_DEFUN_ONCE([LIB_TESTS_SETUP_JIB],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(jib, [AS_HELP_STRING([--with-jib],
|
||||||
|
[Jib dependency management tool @<:@not used@:>@])])
|
||||||
|
|
||||||
|
if test "x$with_jib" = xno || test "x$with_jib" = x; then
|
||||||
|
# jib disabled
|
||||||
|
AC_MSG_CHECKING([for jib])
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
elif test "x$with_jib" = xyes; then
|
||||||
|
AC_MSG_ERROR([Must supply a value to --with-jib])
|
||||||
|
else
|
||||||
|
JIB_HOME="${with_jib}"
|
||||||
|
AC_MSG_CHECKING([for jib])
|
||||||
|
AC_MSG_RESULT(${JIB_HOME})
|
||||||
|
if test ! -d "${JIB_HOME}"; then
|
||||||
|
AC_MSG_ERROR([--with-jib must be a directory])
|
||||||
|
fi
|
||||||
|
JIB_JAR=$(ls ${JIB_HOME}/lib/jib-*.jar)
|
||||||
|
if test ! -f "${JIB_JAR}"; then
|
||||||
|
AC_MSG_ERROR([Could not find jib jar file in ${JIB_HOME}])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(JIB_HOME)
|
||||||
|
])
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Check if building of the jtreg failure handler should be enabled.
|
||||||
|
#
|
||||||
|
AC_DEFUN_ONCE([LIB_TESTS_ENABLE_DISABLE_FAILURE_HANDLER],
|
||||||
|
[
|
||||||
|
UTIL_ARG_ENABLE(NAME: jtreg-failure-handler, DEFAULT: auto,
|
||||||
|
RESULT: BUILD_FAILURE_HANDLER,
|
||||||
|
DESC: [enable building of the jtreg failure handler],
|
||||||
|
DEFAULT_DESC: [enabled if jtreg is present],
|
||||||
|
CHECKING_MSG: [if the jtreg failure handler should be built],
|
||||||
|
CHECK_AVAILABLE: [
|
||||||
|
AC_MSG_CHECKING([if the jtreg failure handler is available])
|
||||||
|
if test "x$JT_HOME" != "x"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AVAILABLE=false
|
||||||
|
AC_MSG_RESULT([no (jtreg not present)])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
AC_SUBST(BUILD_FAILURE_HANDLER)
|
||||||
|
])
|
||||||
|
|||||||
91
make/autoconf/lib-wayland.m4
Normal file
91
make/autoconf/lib-wayland.m4
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# Copyright (c) 2021, JetBrains s.r.o.. 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup wayland
|
||||||
|
################################################################################
|
||||||
|
AC_DEFUN_ONCE([LIB_SETUP_WAYLAND],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(wayland, [AS_HELP_STRING([--with-wayland],
|
||||||
|
[specify prefix directory for the wayland package
|
||||||
|
(expecting the headers under PATH/include)])])
|
||||||
|
AC_ARG_WITH(wayland-include, [AS_HELP_STRING([--with-wayland-include],
|
||||||
|
[specify directory for the wayland include files])])
|
||||||
|
|
||||||
|
if test "x$NEEDS_LIB_WAYLAND" = xfalse; then
|
||||||
|
if (test "x${with_wayland}" != x && test "x${with_wayland}" != xno) || \
|
||||||
|
(test "x${with_wayland_include}" != x && test "x${with_wayland_include}" != xno); then
|
||||||
|
AC_MSG_WARN([[wayland not used, so --with-wayland[-*] is ignored]])
|
||||||
|
fi
|
||||||
|
WAYLAND_CFLAGS=
|
||||||
|
WAYLAND_LIBS=
|
||||||
|
else
|
||||||
|
WAYLAND_FOUND=no
|
||||||
|
|
||||||
|
if test "x${with_wayland}" = xno || test "x${with_wayland_include}" = xno; then
|
||||||
|
AC_MSG_ERROR([It is not possible to disable the use of wayland. Remove the --without-wayland option.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x${with_wayland}" != x; then
|
||||||
|
AC_MSG_CHECKING([for wayland headers])
|
||||||
|
if test -s "${with_wayland}/include/wayland-client.h"; then
|
||||||
|
WAYLAND_CFLAGS="-I${with_wayland}/include"
|
||||||
|
WAYLAND_LIBS="-L${with_wayland}/lib -lwayland-client"
|
||||||
|
|
||||||
|
WAYLAND_FOUND=yes
|
||||||
|
AC_MSG_RESULT([$WAYLAND_FOUND])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Can't find 'include/wayland-client.h' under ${with_wayland} given with the --with-wayland option.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x${with_wayland_include}" != x; then
|
||||||
|
AC_MSG_CHECKING([for wayland headers])
|
||||||
|
if test -s "${with_wayland_include}/wayland-client.h"; then
|
||||||
|
WAYLAND_CFLAGS="-I${with_wayland_include}"
|
||||||
|
WAYLAND_FOUND=yes
|
||||||
|
AC_MSG_RESULT([$WAYLAND_FOUND])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Can't find 'wayland-client.h' under ${with_wayland_include} given with the --with-wayland-include option.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x$WAYLAND_FOUND" = xno; then
|
||||||
|
# Are the wayland headers installed in the default /usr/include location?
|
||||||
|
AC_CHECK_HEADERS([wayland-client.h], [
|
||||||
|
WAYLAND_FOUND=yes
|
||||||
|
WAYLAND_CFLAGS=
|
||||||
|
WAYLAND_LIBS="-lwayland-client"
|
||||||
|
DEFAULT_WAYLAND=yes
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
if test "x$WAYLAND_FOUND" = xno; then
|
||||||
|
HELP_MSG_MISSING_DEPENDENCY([wayland])
|
||||||
|
AC_MSG_ERROR([Could not find wayland! $HELP_MSG ])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(WAYLAND_CFLAGS)
|
||||||
|
AC_SUBST(WAYLAND_LIBS)
|
||||||
|
])
|
||||||
@@ -33,6 +33,7 @@ m4_include([lib-freetype.m4])
|
|||||||
m4_include([lib-hsdis.m4])
|
m4_include([lib-hsdis.m4])
|
||||||
m4_include([lib-std.m4])
|
m4_include([lib-std.m4])
|
||||||
m4_include([lib-x11.m4])
|
m4_include([lib-x11.m4])
|
||||||
|
m4_include([lib-wayland.m4])
|
||||||
|
|
||||||
m4_include([lib-tests.m4])
|
m4_include([lib-tests.m4])
|
||||||
|
|
||||||
@@ -41,14 +42,20 @@ m4_include([lib-tests.m4])
|
|||||||
################################################################################
|
################################################################################
|
||||||
AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
|
AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
|
||||||
[
|
[
|
||||||
# Check if X11 is needed
|
# Check if X11 and wayland is needed
|
||||||
if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||||
# No X11 support on windows or macosx
|
# No X11 and wayland support on windows or macosx
|
||||||
NEEDS_LIB_X11=false
|
NEEDS_LIB_X11=false
|
||||||
|
NEEDS_LIB_WAYLAND=false
|
||||||
|
elif test "x$ENABLE_HEADLESS_ONLY" = xtrue; then
|
||||||
|
# No X11 support needed when building headless only
|
||||||
|
NEEDS_LIB_X11=false
|
||||||
|
NEEDS_LIB_WAYLAND=false
|
||||||
else
|
else
|
||||||
# All other instances need X11, even if building headless only, libawt still
|
# All other instances need X11 and wayland, even if building headless only, libawt still
|
||||||
# needs X11 headers.
|
# needs X11 headers.
|
||||||
NEEDS_LIB_X11=true
|
NEEDS_LIB_X11=true
|
||||||
|
NEEDS_LIB_WAYLAND=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if fontconfig is needed
|
# Check if fontconfig is needed
|
||||||
@@ -105,6 +112,7 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
|
|||||||
LIB_SETUP_LIBFFI
|
LIB_SETUP_LIBFFI
|
||||||
LIB_SETUP_MISC_LIBS
|
LIB_SETUP_MISC_LIBS
|
||||||
LIB_SETUP_X11
|
LIB_SETUP_X11
|
||||||
|
LIB_SETUP_WAYLAND
|
||||||
|
|
||||||
LIB_TESTS_SETUP_GTEST
|
LIB_TESTS_SETUP_GTEST
|
||||||
|
|
||||||
|
|||||||
@@ -129,7 +129,6 @@ RELEASE_FILE_OS_ARCH:=@RELEASE_FILE_OS_ARCH@
|
|||||||
RELEASE_FILE_LIBC:=@RELEASE_FILE_LIBC@
|
RELEASE_FILE_LIBC:=@RELEASE_FILE_LIBC@
|
||||||
|
|
||||||
SOURCE_DATE := @SOURCE_DATE@
|
SOURCE_DATE := @SOURCE_DATE@
|
||||||
ENABLE_REPRODUCIBLE_BUILD := @ENABLE_REPRODUCIBLE_BUILD@
|
|
||||||
ISO_8601_FORMAT_STRING := @ISO_8601_FORMAT_STRING@
|
ISO_8601_FORMAT_STRING := @ISO_8601_FORMAT_STRING@
|
||||||
|
|
||||||
ifneq ($(SOURCE_DATE), updated)
|
ifneq ($(SOURCE_DATE), updated)
|
||||||
@@ -454,13 +453,15 @@ endif
|
|||||||
# Necessary additional compiler flags to compile X11
|
# Necessary additional compiler flags to compile X11
|
||||||
X_CFLAGS:=@X_CFLAGS@
|
X_CFLAGS:=@X_CFLAGS@
|
||||||
X_LIBS:=@X_LIBS@
|
X_LIBS:=@X_LIBS@
|
||||||
|
WAYLAND_CFLAGS:=@WAYLAND_CFLAGS@
|
||||||
|
WAYLAND_LIBS:=@WAYLAND_LIBS@
|
||||||
# The lowest required version of macosx
|
# The lowest required version of macosx
|
||||||
MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
|
MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
|
||||||
# The highest allowed version of macosx
|
# The highest allowed version of macosx
|
||||||
MACOSX_VERSION_MAX=@MACOSX_VERSION_MAX@
|
MACOSX_VERSION_MAX=@MACOSX_VERSION_MAX@
|
||||||
|
|
||||||
# The macosx code signing identity to use
|
# The macosx code signing configuration
|
||||||
|
MACOSX_CODESIGN_MODE:=@MACOSX_CODESIGN_MODE@
|
||||||
MACOSX_CODESIGN_IDENTITY=@MACOSX_CODESIGN_IDENTITY@
|
MACOSX_CODESIGN_IDENTITY=@MACOSX_CODESIGN_IDENTITY@
|
||||||
|
|
||||||
# Toolchain type: gcc, clang, xlc, microsoft...
|
# Toolchain type: gcc, clang, xlc, microsoft...
|
||||||
@@ -665,7 +666,7 @@ JAVAC = $(JAVAC_CMD)
|
|||||||
JAVADOC = $(JAVADOC_CMD)
|
JAVADOC = $(JAVADOC_CMD)
|
||||||
JAR = $(JAR_CMD)
|
JAR = $(JAR_CMD)
|
||||||
JLINK = $(JLINK_CMD)
|
JLINK = $(JLINK_CMD)
|
||||||
JMOD = $(JMOD_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
JMOD = $(JMOD_CMD)
|
||||||
|
|
||||||
BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
|
BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
|
||||||
BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
|
BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
|
||||||
@@ -702,6 +703,7 @@ JAVADOC_MAIN_CLASS = -m jdk.javadoc.interim/jdk.javadoc.internal.tool.Main
|
|||||||
NEW_JAVAC = $(INTERIM_LANGTOOLS_ARGS) $(JAVAC_MAIN_CLASS)
|
NEW_JAVAC = $(INTERIM_LANGTOOLS_ARGS) $(JAVAC_MAIN_CLASS)
|
||||||
NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) $(JAVADOC_MAIN_CLASS)
|
NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) $(JAVADOC_MAIN_CLASS)
|
||||||
|
|
||||||
|
JMOD_COMPRESS:=@JMOD_COMPRESS@
|
||||||
JLINK_KEEP_PACKAGED_MODULES:=@JLINK_KEEP_PACKAGED_MODULES@
|
JLINK_KEEP_PACKAGED_MODULES:=@JLINK_KEEP_PACKAGED_MODULES@
|
||||||
|
|
||||||
RCFLAGS := @RCFLAGS@
|
RCFLAGS := @RCFLAGS@
|
||||||
@@ -768,7 +770,6 @@ READELF:=@READELF@
|
|||||||
EXPR:=@EXPR@
|
EXPR:=@EXPR@
|
||||||
FILE:=@FILE@
|
FILE:=@FILE@
|
||||||
DOT:=@DOT@
|
DOT:=@DOT@
|
||||||
HG:=@HG@
|
|
||||||
GIT:=@GIT@
|
GIT:=@GIT@
|
||||||
OBJCOPY:=@OBJCOPY@
|
OBJCOPY:=@OBJCOPY@
|
||||||
SETFILE:=@SETFILE@
|
SETFILE:=@SETFILE@
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
|
|||||||
# Minimum supported versions, empty means unspecified
|
# Minimum supported versions, empty means unspecified
|
||||||
TOOLCHAIN_MINIMUM_VERSION_clang="3.5"
|
TOOLCHAIN_MINIMUM_VERSION_clang="3.5"
|
||||||
TOOLCHAIN_MINIMUM_VERSION_gcc="6.0"
|
TOOLCHAIN_MINIMUM_VERSION_gcc="6.0"
|
||||||
TOOLCHAIN_MINIMUM_VERSION_microsoft="19.10.0.0" # VS2017
|
TOOLCHAIN_MINIMUM_VERSION_microsoft="19.28.0.0" # VS2019 16.8, aka MSVC 14.28
|
||||||
TOOLCHAIN_MINIMUM_VERSION_xlc=""
|
TOOLCHAIN_MINIMUM_VERSION_xlc=""
|
||||||
|
|
||||||
# Minimum supported linker versions, empty means unspecified
|
# Minimum supported linker versions, empty means unspecified
|
||||||
@@ -972,123 +972,3 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
|
AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
|
||||||
])
|
])
|
||||||
|
|
||||||
# Setup the JTReg Regression Test Harness.
|
|
||||||
AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
|
|
||||||
[
|
|
||||||
AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
|
|
||||||
[Regression Test Harness @<:@probed@:>@])])
|
|
||||||
|
|
||||||
if test "x$with_jtreg" = xno; then
|
|
||||||
# jtreg disabled
|
|
||||||
AC_MSG_CHECKING([for jtreg test harness])
|
|
||||||
AC_MSG_RESULT([no, disabled])
|
|
||||||
elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
|
|
||||||
if test -d "$with_jtreg"; then
|
|
||||||
# An explicit path is specified, use it.
|
|
||||||
JT_HOME="$with_jtreg"
|
|
||||||
else
|
|
||||||
case "$with_jtreg" in
|
|
||||||
*.zip )
|
|
||||||
JTREG_SUPPORT_DIR=$CONFIGURESUPPORT_OUTPUTDIR/jtreg
|
|
||||||
$RM -rf $JTREG_SUPPORT_DIR
|
|
||||||
$MKDIR -p $JTREG_SUPPORT_DIR
|
|
||||||
$UNZIP -qq -d $JTREG_SUPPORT_DIR $with_jtreg
|
|
||||||
|
|
||||||
# Try to find jtreg to determine JT_HOME path
|
|
||||||
JTREG_PATH=`$FIND $JTREG_SUPPORT_DIR | $GREP "/bin/jtreg"`
|
|
||||||
if test "x$JTREG_PATH" != x; then
|
|
||||||
JT_HOME=$($DIRNAME $($DIRNAME $JTREG_PATH))
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
UTIL_FIXUP_PATH([JT_HOME])
|
|
||||||
if test ! -d "$JT_HOME"; then
|
|
||||||
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
|
||||||
AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for jtreg test harness])
|
|
||||||
AC_MSG_RESULT([$JT_HOME])
|
|
||||||
else
|
|
||||||
# Try to locate jtreg using the JT_HOME environment variable
|
|
||||||
if test "x$JT_HOME" != x; then
|
|
||||||
# JT_HOME set in environment, use it
|
|
||||||
if test ! -d "$JT_HOME"; then
|
|
||||||
AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
|
|
||||||
JT_HOME=
|
|
||||||
else
|
|
||||||
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
|
||||||
AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
|
|
||||||
JT_HOME=
|
|
||||||
else
|
|
||||||
AC_MSG_NOTICE([Located jtreg using JT_HOME from environment])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
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_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)`
|
|
||||||
if test ! -e "$JT_HOME/lib/jtreg.jar"; then
|
|
||||||
AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
|
|
||||||
JT_HOME=
|
|
||||||
else
|
|
||||||
AC_MSG_NOTICE([Located jtreg using jtreg executable in path])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for jtreg test harness])
|
|
||||||
if test "x$JT_HOME" != x; then
|
|
||||||
AC_MSG_RESULT([$JT_HOME])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no, not found])
|
|
||||||
|
|
||||||
if test "x$with_jtreg" = xyes; then
|
|
||||||
AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
UTIL_FIXUP_PATH(JT_HOME)
|
|
||||||
AC_SUBST(JT_HOME)
|
|
||||||
])
|
|
||||||
|
|
||||||
# Setup the JIB dependency resolver
|
|
||||||
AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JIB],
|
|
||||||
[
|
|
||||||
AC_ARG_WITH(jib, [AS_HELP_STRING([--with-jib],
|
|
||||||
[Jib dependency management tool @<:@not used@:>@])])
|
|
||||||
|
|
||||||
if test "x$with_jib" = xno || test "x$with_jib" = x; then
|
|
||||||
# jib disabled
|
|
||||||
AC_MSG_CHECKING([for jib])
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
elif test "x$with_jib" = xyes; then
|
|
||||||
AC_MSG_ERROR([Must supply a value to --with-jib])
|
|
||||||
else
|
|
||||||
JIB_HOME="${with_jib}"
|
|
||||||
AC_MSG_CHECKING([for jib])
|
|
||||||
AC_MSG_RESULT(${JIB_HOME})
|
|
||||||
if test ! -d "${JIB_HOME}"; then
|
|
||||||
AC_MSG_ERROR([--with-jib must be a directory])
|
|
||||||
fi
|
|
||||||
JIB_JAR=$(ls ${JIB_HOME}/lib/jib-*.jar)
|
|
||||||
if test ! -f "${JIB_JAR}"; then
|
|
||||||
AC_MSG_ERROR([Could not find jib jar file in ${JIB_HOME}])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(JIB_HOME)
|
|
||||||
])
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -25,21 +25,7 @@
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# The order of these defines the priority by which we try to find them.
|
# The order of these defines the priority by which we try to find them.
|
||||||
VALID_VS_VERSIONS="2019 2017 2022"
|
VALID_VS_VERSIONS="2022 2019"
|
||||||
|
|
||||||
VS_DESCRIPTION_2017="Microsoft Visual Studio 2017"
|
|
||||||
VS_VERSION_INTERNAL_2017=141
|
|
||||||
VS_MSVCR_2017=vcruntime140.dll
|
|
||||||
VS_MSVCP_2017=msvcp140.dll
|
|
||||||
VS_ENVVAR_2017="VS150COMNTOOLS"
|
|
||||||
VS_USE_UCRT_2017="true"
|
|
||||||
VS_VS_INSTALLDIR_2017="Microsoft Visual Studio/2017"
|
|
||||||
VS_EDITIONS_2017="BuildTools Community Professional Enterprise"
|
|
||||||
VS_SDK_INSTALLDIR_2017=
|
|
||||||
VS_VS_PLATFORM_NAME_2017="v141"
|
|
||||||
VS_SDK_PLATFORM_NAME_2017=
|
|
||||||
VS_SUPPORTED_2017=true
|
|
||||||
VS_TOOLSET_SUPPORTED_2017=true
|
|
||||||
|
|
||||||
VS_DESCRIPTION_2019="Microsoft Visual Studio 2019"
|
VS_DESCRIPTION_2019="Microsoft Visual Studio 2019"
|
||||||
VS_VERSION_INTERNAL_2019=142
|
VS_VERSION_INTERNAL_2019=142
|
||||||
@@ -84,7 +70,7 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
|||||||
UTIL_FIXUP_PATH(VS_BASE, NOFAIL)
|
UTIL_FIXUP_PATH(VS_BASE, NOFAIL)
|
||||||
|
|
||||||
if test "x$VS_BASE" != x && test -d "$VS_BASE"; then
|
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.
|
# In VS 2019, the default installation is in a subdir named after the edition.
|
||||||
# Find the first one present and use that.
|
# Find the first one present and use that.
|
||||||
if test "x$VS_EDITIONS" != x; then
|
if test "x$VS_EDITIONS" != x; then
|
||||||
for edition in $VS_EDITIONS; do
|
for edition in $VS_EDITIONS; do
|
||||||
@@ -97,20 +83,18 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
|||||||
|
|
||||||
AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD])
|
AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD])
|
||||||
if test "x$TARGET_CPU" = xx86; then
|
if test "x$TARGET_CPU" = xx86; then
|
||||||
VCVARSFILES="vc/bin/vcvars32.bat vc/auxiliary/build/vcvars32.bat"
|
VCVARSFILES="vcvars32.bat vcvarsamd64_x86.bat"
|
||||||
elif test "x$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 \
|
VCVARSFILES="vcvars64.bat vcvarsx86_amd64.bat"
|
||||||
vc/auxiliary/build/vcvarsx86_amd64.bat vc/auxiliary/build/vcvars64.bat"
|
|
||||||
elif test "x$TARGET_CPU" = xaarch64; then
|
elif test "x$TARGET_CPU" = xaarch64; then
|
||||||
# for host x86-64, target aarch64
|
# for host x86-64, target aarch64
|
||||||
# aarch64 requires Visual Studio 16.8 or higher
|
# aarch64 requires Visual Studio 16.8 or higher
|
||||||
VCVARSFILES="vc/auxiliary/build/vcvarsamd64_arm64.bat \
|
VCVARSFILES="vcvarsamd64_arm64.bat vcvarsx86_arm64.bat"
|
||||||
vc/auxiliary/build/vcvarsx86_arm64.bat"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for VCVARSFILE in $VCVARSFILES; do
|
for VCVARSFILE in $VCVARSFILES; do
|
||||||
if test -f "$VS_BASE/$VCVARSFILE"; then
|
if test -f "$VS_BASE/vc/auxiliary/build/$VCVARSFILE"; then
|
||||||
VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
|
VS_ENV_CMD="$VS_BASE/vc/auxiliary/build/$VCVARSFILE"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -172,11 +156,9 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT],
|
|||||||
# build environment and assigns it to VS_ENV_CMD
|
# build environment and assigns it to VS_ENV_CMD
|
||||||
AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
||||||
[
|
[
|
||||||
# VS2017 provides the option to install previous minor versions of the MSVC
|
# Since VS2017 MS provides the option to install previous minor versions of
|
||||||
# toolsets. It is not possible to directly download earlier minor versions of
|
# the toolset. In order to build with a previous minor compiler toolset
|
||||||
# VS2017 and in order to build with a previous minor compiler toolset version,
|
# version, pass -vcvars_ver=<toolset_version> argument to vcvarsall.bat.
|
||||||
# it is now possible to compile with earlier minor versions by passing
|
|
||||||
# -vcvars_ver=<toolset_version> argument to vcvarsall.bat.
|
|
||||||
AC_ARG_WITH(msvc-toolset-version, [AS_HELP_STRING([--with-msvc-toolset-version],
|
AC_ARG_WITH(msvc-toolset-version, [AS_HELP_STRING([--with-msvc-toolset-version],
|
||||||
[specific MSVC toolset version to use, passed as -vcvars_ver argument to
|
[specific MSVC toolset version to use, passed as -vcvars_ver argument to
|
||||||
pass to vcvarsall.bat (Windows only)])])
|
pass to vcvarsall.bat (Windows only)])])
|
||||||
@@ -494,14 +476,9 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
|||||||
|
|
||||||
if test "x$MSVC_DLL" = x; then
|
if test "x$MSVC_DLL" = x; then
|
||||||
if test "x$VCINSTALLDIR" != x; then
|
if test "x$VCINSTALLDIR" != x; then
|
||||||
if test "$VS_VERSION" -lt 2017; then
|
# Probe: Using well-known location
|
||||||
# Probe: Using well-known location from Visual Studio 12.0 and older
|
|
||||||
POSSIBLE_MSVC_DLL="$VCINSTALLDIR/redist/$vs_target_cpu/microsoft.vc${VS_VERSION_INTERNAL}.crt/$DLL_NAME"
|
|
||||||
else
|
|
||||||
# Probe: Using well-known location from VS 2017 and VS 2019
|
|
||||||
POSSIBLE_MSVC_DLL="`ls $VCToolsRedistDir/$vs_target_cpu/microsoft.vc${VS_VERSION_INTERNAL}.crt/$DLL_NAME 2> /dev/null`"
|
POSSIBLE_MSVC_DLL="`ls $VCToolsRedistDir/$vs_target_cpu/microsoft.vc${VS_VERSION_INTERNAL}.crt/$DLL_NAME 2> /dev/null`"
|
||||||
fi
|
# If the above finds more than one file, loop over them.
|
||||||
# In case any of the above finds more than one file, loop over them.
|
|
||||||
for possible_msvc_dll in $POSSIBLE_MSVC_DLL; do
|
for possible_msvc_dll in $POSSIBLE_MSVC_DLL; do
|
||||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$possible_msvc_dll],
|
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$possible_msvc_dll],
|
||||||
[well-known location in VCINSTALLDIR])
|
[well-known location in VCINSTALLDIR])
|
||||||
|
|||||||
@@ -223,11 +223,9 @@ define SetupJarArchiveBody
|
|||||||
# If reproducible build and the boot jdk jar supports --date option
|
# If reproducible build and the boot jdk jar supports --date option
|
||||||
# then specify the --date using SOURCE_DATE in ISO-8601
|
# then specify the --date using SOURCE_DATE in ISO-8601
|
||||||
$1_JAR_OPTIONS :=
|
$1_JAR_OPTIONS :=
|
||||||
ifeq ($$(ENABLE_REPRODUCIBLE_BUILD), true)
|
|
||||||
ifeq ($$(BOOT_JDK_JAR_SUPPORTS_DATE), true)
|
ifeq ($$(BOOT_JDK_JAR_SUPPORTS_DATE), true)
|
||||||
$1_JAR_OPTIONS += --date $(SOURCE_DATE_ISO_8601)
|
$1_JAR_OPTIONS += --date $(SOURCE_DATE_ISO_8601)
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
ifneq (,$$($1_CHECK_COMPRESS_JAR))
|
ifneq (,$$($1_CHECK_COMPRESS_JAR))
|
||||||
ifneq ($(COMPRESS_JARS), true)
|
ifneq ($(COMPRESS_JARS), true)
|
||||||
$1_JAR_OPTIONS += --no-compress
|
$1_JAR_OPTIONS += --no-compress
|
||||||
|
|||||||
@@ -402,8 +402,11 @@ define SetupJavaCompilationBody
|
|||||||
|
|
||||||
$1_COMPILE_TARGET := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_batch
|
$1_COMPILE_TARGET := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_batch
|
||||||
$1_FILELIST := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_batch.filelist
|
$1_FILELIST := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_batch.filelist
|
||||||
|
$1_MODFILELIST := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_batch.modfiles
|
||||||
|
$1_MODFILELIST_FIXED := $$($1_MODFILELIST).fixed
|
||||||
|
|
||||||
$1_API_TARGET := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi
|
$1_API_TARGET := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi
|
||||||
|
$1_API_INTERNAL := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_internalapi
|
||||||
|
|
||||||
# Put headers in a temp dir to filter out those that actually
|
# Put headers in a temp dir to filter out those that actually
|
||||||
# changed before copying them to the real header dir.
|
# changed before copying them to the real header dir.
|
||||||
@@ -437,6 +440,8 @@ define SetupJavaCompilationBody
|
|||||||
$1_API_DIGEST_FLAGS := \
|
$1_API_DIGEST_FLAGS := \
|
||||||
-classpath $$(BUILDTOOLS_OUTPUTDIR)/depend \
|
-classpath $$(BUILDTOOLS_OUTPUTDIR)/depend \
|
||||||
-Xplugin:"depend $$($1_API_TARGET)" \
|
-Xplugin:"depend $$($1_API_TARGET)" \
|
||||||
|
"-XDinternalAPIPath=$$($1_API_INTERNAL)" \
|
||||||
|
"-XDLOG_LEVEL=$(LOG_LEVEL)" \
|
||||||
#
|
#
|
||||||
|
|
||||||
$1_EXTRA_DEPS := $$(BUILDTOOLS_OUTPUTDIR)/depend/_the.COMPILE_DEPEND_batch
|
$1_EXTRA_DEPS := $$(BUILDTOOLS_OUTPUTDIR)/depend/_the.COMPILE_DEPEND_batch
|
||||||
@@ -447,16 +452,39 @@ define SetupJavaCompilationBody
|
|||||||
# list of files.
|
# list of files.
|
||||||
$$($1_FILELIST): $$($1_SRCS) $$($1_VARDEPS_FILE)
|
$$($1_FILELIST): $$($1_SRCS) $$($1_VARDEPS_FILE)
|
||||||
$$(call MakeDir, $$(@D))
|
$$(call MakeDir, $$(@D))
|
||||||
$$(call LogWarn, Compiling $$(words $$($1_SRCS)) files for $1)
|
$$(call LogWarn, Compiling up to $$(words $$($1_SRCS)) files for $1)
|
||||||
$$(eval $$(call ListPathsSafely, $1_SRCS, $$($1_FILELIST)))
|
$$(eval $$(call ListPathsSafely, $1_SRCS, $$($1_FILELIST)))
|
||||||
|
|
||||||
|
# Create a $$($1_MODFILELIST) file with significant modified dependencies
|
||||||
|
# (either sources files or the other mark dependencies).
|
||||||
|
# It is then sent using a side-channel
|
||||||
|
# to the custom Depend plugin. The Depend plugin will check the provided list
|
||||||
|
# of modified files, and if none of the Java source files is changed in a way
|
||||||
|
# observable from outside of the file, and the list of modified files does
|
||||||
|
# not include a non-Java source file, it will only compile the modified files.
|
||||||
|
# Otherwise, all module's sources will be compiled. If a non-Java file is included,
|
||||||
|
# it will be considered to be a significant change, and all module source will
|
||||||
|
# be recompiled
|
||||||
|
$$($1_MODFILELIST): $$($1_SRCS) $$($1_DEPENDS) \
|
||||||
|
$$($1_VARDEPS_FILE) $$($1_EXTRA_DEPS) $$($1_JAVAC_SERVER_CONFIG)
|
||||||
|
$$(eval $1_MODFILES := $$?)
|
||||||
|
$$(eval $$(call ListPathsSafely, $1_MODFILES, $$($1_MODFILELIST)))
|
||||||
|
|
||||||
|
# Convert the paths in the MODFILELIST file to Windows-style paths
|
||||||
|
# on Windows. This is needed because javac operates on Windows-style paths
|
||||||
|
# when running on Windows. On other platforms this just copies the MODFILELIST file.
|
||||||
|
$$($1_MODFILELIST_FIXED): $$($1_MODFILELIST)
|
||||||
|
$$(call FixPathFile, $$($1_MODFILELIST), $$($1_MODFILELIST_FIXED))
|
||||||
|
|
||||||
# Do the actual compilation
|
# Do the actual compilation
|
||||||
$$($1_COMPILE_TARGET): $$($1_SRCS) $$($1_FILELIST) $$($1_DEPENDS) \
|
$$($1_COMPILE_TARGET): $$($1_SRCS) $$($1_FILELIST) $$($1_DEPENDS) \
|
||||||
$$($1_VARDEPS_FILE) $$($1_EXTRA_DEPS) $$($1_JAVAC_SERVER_CONFIG)
|
$$($1_VARDEPS_FILE) $$($1_EXTRA_DEPS) $$($1_JAVAC_SERVER_CONFIG) \
|
||||||
|
$$($1_MODFILELIST_FIXED)
|
||||||
$$(call MakeDir, $$(@D))
|
$$(call MakeDir, $$(@D))
|
||||||
$$(call ExecuteWithLog, $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$$($1_SAFE_NAME)_batch, \
|
$$(call ExecuteWithLog, $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$$($1_SAFE_NAME)_batch, \
|
||||||
$$($1_JAVAC_CMD) $$($1_FLAGS) \
|
$$($1_JAVAC_CMD) $$($1_FLAGS) \
|
||||||
$$($1_API_DIGEST_FLAGS) \
|
$$($1_API_DIGEST_FLAGS) \
|
||||||
|
-XDmodifiedInputs=$$($1_MODFILELIST_FIXED) \
|
||||||
-d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_FILELIST)) && \
|
-d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_FILELIST)) && \
|
||||||
$(TOUCH) $$@
|
$(TOUCH) $$@
|
||||||
|
|
||||||
|
|||||||
@@ -127,14 +127,13 @@ endef
|
|||||||
# the build was created from
|
# the build was created from
|
||||||
SOURCE_REVISION_TRACKER := $(SUPPORT_OUTPUTDIR)/src-rev/source-revision-tracker
|
SOURCE_REVISION_TRACKER := $(SUPPORT_OUTPUTDIR)/src-rev/source-revision-tracker
|
||||||
|
|
||||||
# Locate all hg repositories included in the forest, as absolute paths
|
# Locate all sourcecode repositories included in the forest, as absolute paths
|
||||||
FindAllReposAbs = \
|
FindAllReposAbs = \
|
||||||
$(strip $(sort $(dir $(filter-out $(TOPDIR)/build/%, $(wildcard \
|
$(strip $(sort $(dir $(filter-out $(TOPDIR)/build/%, $(wildcard \
|
||||||
$(addprefix $(TOPDIR)/, .hg */.hg */*/.hg */*/*/.hg */*/*/*/.hg) \
|
|
||||||
$(addprefix $(TOPDIR)/, .git */.git */*/.git */*/*/.git */*/*/*/.git) \
|
$(addprefix $(TOPDIR)/, .git */.git */*/.git */*/*/.git */*/*/*/.git) \
|
||||||
)))))
|
)))))
|
||||||
|
|
||||||
# Locate all hg repositories included in the forest, as relative paths
|
# Locate all sourcecode repositories included in the forest, as relative paths
|
||||||
FindAllReposRel = \
|
FindAllReposRel = \
|
||||||
$(strip $(subst $(TOPDIR)/,.,$(patsubst $(TOPDIR)/%/, %, $(FindAllReposAbs))))
|
$(strip $(subst $(TOPDIR)/,.,$(patsubst $(TOPDIR)/%/, %, $(FindAllReposAbs))))
|
||||||
|
|
||||||
@@ -443,12 +442,23 @@ endif
|
|||||||
# list.
|
# list.
|
||||||
# This is normally not needed since we use the FIXPATH prefix for command lines,
|
# This is normally not needed since we use the FIXPATH prefix for command lines,
|
||||||
# but might be needed in certain circumstances.
|
# but might be needed in certain circumstances.
|
||||||
|
#
|
||||||
|
# FixPathFile is the file version of FixPath. It instead takes a file with paths in $1
|
||||||
|
# and outputs the 'fixed' paths into the file in $2. If the file in $2 already exists
|
||||||
|
# it is overwritten.
|
||||||
|
# On non-Windows platforms this instead does a copy, so that $2 can still be used
|
||||||
|
# as a depenendency of a make rule, instead of having to conditionally depend on
|
||||||
|
# $1 instead, based on the target platform.
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
FixPath = \
|
FixPath = \
|
||||||
$(strip $(subst \,\\, $(shell $(FIXPATH_BASE) print $(patsubst $(FIXPATH), , $1))))
|
$(strip $(subst \,\\, $(shell $(FIXPATH_BASE) print $(patsubst $(FIXPATH), , $1))))
|
||||||
|
FixPathFile = \
|
||||||
|
$(shell $(FIXPATH_BASE) convert $1 $2)
|
||||||
else
|
else
|
||||||
FixPath = \
|
FixPath = \
|
||||||
$1
|
$1
|
||||||
|
FixPathFile = \
|
||||||
|
$(shell $(CP) $1 $2)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
@@ -267,10 +267,15 @@ endif
|
|||||||
# specialized file is found, returns the default file.
|
# specialized file is found, returns the default file.
|
||||||
# $1 Executable to find entitlements file for.
|
# $1 Executable to find entitlements file for.
|
||||||
ENTITLEMENTS_DIR := $(TOPDIR)/make/data/macosxsigning
|
ENTITLEMENTS_DIR := $(TOPDIR)/make/data/macosxsigning
|
||||||
DEFAULT_ENTITLEMENTS_FILE := $(ENTITLEMENTS_DIR)/default.plist
|
ifeq ($(MACOSX_CODESIGN_MODE), debug)
|
||||||
|
CODESIGN_PLIST_SUFFIX := -debug
|
||||||
|
else
|
||||||
|
CODESIGN_PLIST_SUFFIX :=
|
||||||
|
endif
|
||||||
|
DEFAULT_ENTITLEMENTS_FILE := $(ENTITLEMENTS_DIR)/default$(CODESIGN_PLIST_SUFFIX).plist
|
||||||
|
|
||||||
GetEntitlementsFile = \
|
GetEntitlementsFile = \
|
||||||
$(foreach f, $(ENTITLEMENTS_DIR)/$(strip $(notdir $1)).plist, \
|
$(foreach f, $(ENTITLEMENTS_DIR)/$(strip $(notdir $1))$(CODESIGN_PLIST_SUFFIX).plist, \
|
||||||
$(if $(wildcard $f), $f, $(DEFAULT_ENTITLEMENTS_FILE)) \
|
$(if $(wildcard $f), $f, $(DEFAULT_ENTITLEMENTS_FILE)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -338,10 +343,15 @@ define SetupCompileNativeFileBody
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(DISABLE_WARNING_PREFIX), )
|
||||||
|
$1_WARNINGS_FLAGS := $$(addprefix $(DISABLE_WARNING_PREFIX), \
|
||||||
|
$$($$($1_BASE)_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)_$$($1_FILENAME)))
|
||||||
|
endif
|
||||||
|
|
||||||
$1_BASE_CFLAGS := $$($$($1_BASE)_CFLAGS) $$($$($1_BASE)_EXTRA_CFLAGS) \
|
$1_BASE_CFLAGS := $$($$($1_BASE)_CFLAGS) $$($$($1_BASE)_EXTRA_CFLAGS) \
|
||||||
$$($$($1_BASE)_SYSROOT_CFLAGS)
|
$$($$($1_BASE)_SYSROOT_CFLAGS) $$($1_WARNINGS_FLAGS)
|
||||||
$1_BASE_CXXFLAGS := $$($$($1_BASE)_CXXFLAGS) $$($$($1_BASE)_EXTRA_CXXFLAGS) \
|
$1_BASE_CXXFLAGS := $$($$($1_BASE)_CXXFLAGS) $$($$($1_BASE)_EXTRA_CXXFLAGS) \
|
||||||
$$($$($1_BASE)_SYSROOT_CFLAGS) $$($1_EXTRA_CXXFLAGS)
|
$$($$($1_BASE)_SYSROOT_CFLAGS) $$($1_EXTRA_CXXFLAGS) $$($1_WARNINGS_FLAGS)
|
||||||
$1_BASE_ASFLAGS := $$($$($1_BASE)_ASFLAGS) $$($$($1_BASE)_EXTRA_ASFLAGS)
|
$1_BASE_ASFLAGS := $$($$($1_BASE)_ASFLAGS) $$($$($1_BASE)_EXTRA_ASFLAGS)
|
||||||
|
|
||||||
ifneq ($$(filter %.c, $$($1_FILENAME)), )
|
ifneq ($$(filter %.c, $$($1_FILENAME)), )
|
||||||
@@ -359,9 +369,9 @@ define SetupCompileNativeFileBody
|
|||||||
$1_FLAGS := $(BASIC_ASFLAGS) $$($1_BASE_ASFLAGS)
|
$1_FLAGS := $(BASIC_ASFLAGS) $$($1_BASE_ASFLAGS)
|
||||||
$1_COMPILER := $(AS)
|
$1_COMPILER := $(AS)
|
||||||
|
|
||||||
# gcc assembly files must contain an appropriate relative .file
|
# gcc or clang assembly files must contain an appropriate relative .file
|
||||||
# path for reproducible builds.
|
# path for reproducible builds.
|
||||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
ifneq ($(findstring $(TOOLCHAIN_TYPE), gcc clang), )
|
||||||
# If no absolute paths allowed, work out relative source file path
|
# If no absolute paths allowed, work out relative source file path
|
||||||
# for assembly .file substitution, otherwise use full file path
|
# for assembly .file substitution, otherwise use full file path
|
||||||
ifeq ($(ALLOW_ABSOLUTE_PATHS_IN_OUTPUT), false)
|
ifeq ($(ALLOW_ABSOLUTE_PATHS_IN_OUTPUT), false)
|
||||||
@@ -403,12 +413,11 @@ define SetupCompileNativeFileBody
|
|||||||
$1_OBJ_DEPS := $$($1_SRC_FILE) $$($$($1_BASE)_COMPILE_VARDEPS_FILE) \
|
$1_OBJ_DEPS := $$($1_SRC_FILE) $$($$($1_BASE)_COMPILE_VARDEPS_FILE) \
|
||||||
$$($$($1_BASE)_EXTRA_DEPS) $$($1_VARDEPS_FILE)
|
$$($$($1_BASE)_EXTRA_DEPS) $$($1_VARDEPS_FILE)
|
||||||
$1_COMPILE_OPTIONS := $$($1_FLAGS) $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE)
|
$1_COMPILE_OPTIONS := $$($1_FLAGS) $(CC_OUT_OPTION)$$($1_OBJ) $$($1_SRC_FILE)
|
||||||
# For reproducible builds with gcc ensure random symbol generation is seeded deterministically
|
# For reproducible builds with gcc and clang ensure random symbol generation is
|
||||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
# seeded deterministically
|
||||||
ifeq ($$(ENABLE_REPRODUCIBLE_BUILD), true)
|
ifneq ($(findstring $(TOOLCHAIN_TYPE), gcc clang), )
|
||||||
$1_COMPILE_OPTIONS += -frandom-seed="$$($1_FILENAME)"
|
$1_COMPILE_OPTIONS += -frandom-seed="$$($1_FILENAME)"
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
$$($1_OBJ_JSON): $$($1_OBJ_DEPS)
|
$$($1_OBJ_JSON): $$($1_OBJ_DEPS)
|
||||||
$$(call WriteCompileCommandsFragment, $$@, $$(PWD), $$($1_SRC_FILE), \
|
$$(call WriteCompileCommandsFragment, $$@, $$(PWD), $$($1_SRC_FILE), \
|
||||||
@@ -803,7 +812,7 @@ define SetupNativeCompilationBody
|
|||||||
ifeq ($(TOOLCHAIN_TYPE), microsoft)
|
ifeq ($(TOOLCHAIN_TYPE), microsoft)
|
||||||
$1_PCH_FILE := $$($1_OBJECT_DIR)/$1.pch
|
$1_PCH_FILE := $$($1_OBJECT_DIR)/$1.pch
|
||||||
$1_GENERATED_PCH_SRC := $$($1_OBJECT_DIR)/$1_pch.cpp
|
$1_GENERATED_PCH_SRC := $$($1_OBJECT_DIR)/$1_pch.cpp
|
||||||
$1_GENERATED_PCH_OBJ := $$($1_OBJECT_DIR)/$1_pch.obj
|
$1_GENERATED_PCH_OBJ := $$($1_OBJECT_DIR)/$1_pch$(OBJ_SUFFIX)
|
||||||
|
|
||||||
$$(eval $$(call SetupCompileNativeFile, $1_$$(notdir $$($1_GENERATED_PCH_SRC)), \
|
$$(eval $$(call SetupCompileNativeFile, $1_$$(notdir $$($1_GENERATED_PCH_SRC)), \
|
||||||
FILE := $$($1_GENERATED_PCH_SRC), \
|
FILE := $$($1_GENERATED_PCH_SRC), \
|
||||||
@@ -910,15 +919,15 @@ define SetupNativeCompilationBody
|
|||||||
# For some unknown reason, in this case CL actually outputs the show
|
# For some unknown reason, in this case CL actually outputs the show
|
||||||
# includes to stderr so need to redirect it to hide the output from the
|
# includes to stderr so need to redirect it to hide the output from the
|
||||||
# main log.
|
# main log.
|
||||||
$$(call ExecuteWithLog, $$($1_RES_DEPS_FILE).obj, \
|
$$(call ExecuteWithLog, $$($1_RES_DEPS_FILE)$(OBJ_SUFFIX), \
|
||||||
$$($1_CC) $$(filter-out -l%, $$($1_RCFLAGS)) \
|
$$($1_CC) $$(filter-out -l%, $$($1_RCFLAGS)) \
|
||||||
$$($1_SYSROOT_CFLAGS) -showIncludes -nologo -TC \
|
$$($1_SYSROOT_CFLAGS) -showIncludes -nologo -TC \
|
||||||
$(CC_OUT_OPTION)$$($1_RES_DEPS_FILE).obj -P -Fi$$($1_RES_DEPS_FILE).pp \
|
$(CC_OUT_OPTION)$$($1_RES_DEPS_FILE)$(OBJ_SUFFIX) -P -Fi$$($1_RES_DEPS_FILE).pp \
|
||||||
$$($1_VERSIONINFO_RESOURCE)) 2>&1 \
|
$$($1_VERSIONINFO_RESOURCE)) 2>&1 \
|
||||||
| $(TR) -d '\r' | $(GREP) -v -e "^Note: including file:" \
|
| $(TR) -d '\r' | $(GREP) -v -e "^Note: including file:" \
|
||||||
-e "^$$(notdir $$($1_VERSIONINFO_RESOURCE))$$$$" || test "$$$$?" = "1" ; \
|
-e "^$$(notdir $$($1_VERSIONINFO_RESOURCE))$$$$" || test "$$$$?" = "1" ; \
|
||||||
$(ECHO) $$($1_RES): \\ > $$($1_RES_DEPS_FILE) ; \
|
$(ECHO) $$($1_RES): \\ > $$($1_RES_DEPS_FILE) ; \
|
||||||
$(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_RES_DEPS_FILE).obj.log \
|
$(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_RES_DEPS_FILE)$(OBJ_SUFFIX).log \
|
||||||
>> $$($1_RES_DEPS_FILE) ; \
|
>> $$($1_RES_DEPS_FILE) ; \
|
||||||
$(ECHO) >> $$($1_RES_DEPS_FILE) ;\
|
$(ECHO) >> $$($1_RES_DEPS_FILE) ;\
|
||||||
$(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_RES_DEPS_FILE) \
|
$(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_RES_DEPS_FILE) \
|
||||||
@@ -1205,11 +1214,16 @@ define SetupNativeCompilationBody
|
|||||||
$$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_NAME).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1
|
$$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_NAME).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
# This only works if the openjdk_codesign identity is present on the system. Let
|
# On macosx, optionally run codesign on every binary.
|
||||||
# silently fail otherwise.
|
# Remove signature explicitly first to avoid warnings if the linker
|
||||||
ifneq ($(CODESIGN), )
|
# added a default adhoc signature.
|
||||||
|
ifeq ($(MACOSX_CODESIGN_MODE), hardened)
|
||||||
|
$(CODESIGN) --remove-signature $$@
|
||||||
$(CODESIGN) -f -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
$(CODESIGN) -f -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
||||||
--entitlements $$(call GetEntitlementsFile, $$@) $$@
|
--entitlements $$(call GetEntitlementsFile, $$@) $$@
|
||||||
|
else ifeq ($(MACOSX_CODESIGN_MODE), debug)
|
||||||
|
$(CODESIGN) --remove-signature $$@
|
||||||
|
$(CODESIGN) -f -s - --entitlements $$(call GetEntitlementsFile, $$@) $$@
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -68,6 +68,12 @@ _sequence-do = \
|
|||||||
$(words $(SEQUENCE_COUNT)) \
|
$(words $(SEQUENCE_COUNT)) \
|
||||||
$(call _sequence-do,$1))
|
$(call _sequence-do,$1))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Strip both arguments. Append the first argument to the second argument. If the
|
||||||
|
# first argument is empty, return the empty string.
|
||||||
|
IfAppend = \
|
||||||
|
$(if $(strip $1),$(strip $1)$(strip $2),)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Replace question marks with space in string. This macro needs to be called on
|
# Replace question marks with space in string. This macro needs to be called on
|
||||||
# files from FindFiles in case any of them contains space in their file name,
|
# files from FindFiles in case any of them contains space in their file name,
|
||||||
@@ -367,6 +373,9 @@ isBuildCpu = \
|
|||||||
isBuildCpuArch = \
|
isBuildCpuArch = \
|
||||||
$(strip $(if $(filter $(OPENJDK_BUILD_CPU_ARCH), $1), true, false))
|
$(strip $(if $(filter $(OPENJDK_BUILD_CPU_ARCH), $1), true, false))
|
||||||
|
|
||||||
|
isCompiler = \
|
||||||
|
$(strip $(if $(filter $(TOOLCHAIN_TYPE), $1), true, false))
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Converts a space separated list to a comma separated list.
|
# Converts a space separated list to a comma separated list.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -54,7 +54,7 @@ endif
|
|||||||
# FOLLOW_SYMLINKS - Set to explicitly follow symlinks. Affects performance of
|
# FOLLOW_SYMLINKS - Set to explicitly follow symlinks. Affects performance of
|
||||||
# finding files.
|
# finding files.
|
||||||
# ZIP_OPTIONS extra options to pass to zip
|
# ZIP_OPTIONS extra options to pass to zip
|
||||||
# REPRODUCIBLE override ENABLE_REPRODUCIBLE_BUILD (to make zip reproducible or not)
|
# REPRODUCIBLE set to false to disable the step that makes zip reproducible
|
||||||
|
|
||||||
SetupZipArchive = $(NamedParamsMacroTemplate)
|
SetupZipArchive = $(NamedParamsMacroTemplate)
|
||||||
define SetupZipArchiveBody
|
define SetupZipArchiveBody
|
||||||
@@ -130,7 +130,7 @@ define SetupZipArchiveBody
|
|||||||
)
|
)
|
||||||
|
|
||||||
ifeq ($$($1_REPRODUCIBLE), )
|
ifeq ($$($1_REPRODUCIBLE), )
|
||||||
$1_REPRODUCIBLE := $$(ENABLE_REPRODUCIBLE_BUILD)
|
$1_REPRODUCIBLE := true
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Use a slightly shorter name for logging, but with enough path to identify this zip.
|
# Use a slightly shorter name for logging, but with enough path to identify this zip.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -29,7 +29,7 @@ PRODUCT_SUFFIX="Runtime Environment"
|
|||||||
JDK_RC_PLATFORM_NAME=Platform
|
JDK_RC_PLATFORM_NAME=Platform
|
||||||
COMPANY_NAME=N/A
|
COMPANY_NAME=N/A
|
||||||
HOTSPOT_VM_DISTRO="OpenJDK"
|
HOTSPOT_VM_DISTRO="OpenJDK"
|
||||||
VENDOR_URL=https://openjdk.java.net/
|
VENDOR_URL=https://openjdk.org/
|
||||||
VENDOR_URL_BUG=https://bugreport.java.com/bugreport/
|
VENDOR_URL_BUG=https://bugreport.java.com/bugreport/
|
||||||
VENDOR_URL_VM_BUG=https://bugreport.java.com/bugreport/crash.jsp
|
VENDOR_URL_VM_BUG=https://bugreport.java.com/bugreport/crash.jsp
|
||||||
|
|
||||||
|
|||||||
@@ -26,16 +26,16 @@
|
|||||||
# Versions and download locations for dependencies used by GitHub Actions (GHA)
|
# Versions and download locations for dependencies used by GitHub Actions (GHA)
|
||||||
|
|
||||||
GTEST_VERSION=1.8.1
|
GTEST_VERSION=1.8.1
|
||||||
JTREG_VERSION=6.1+2
|
JTREG_VERSION=7+1
|
||||||
|
|
||||||
LINUX_X64_BOOT_JDK_EXT=tar.gz
|
LINUX_X64_BOOT_JDK_EXT=tar.gz
|
||||||
LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk18/43f95e8614114aeaa8e8a5fcf20a682d/36/GPL/openjdk-18_linux-x64_bin.tar.gz
|
LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk19/877d6127e982470ba2a7faa31cc93d04/36/GPL/openjdk-19_linux-x64_bin.tar.gz
|
||||||
LINUX_X64_BOOT_JDK_SHA256=0f60aef7b8504983d6e374fe94d09a7bedcf05ec559e812d801a33bd4ebd23d0
|
LINUX_X64_BOOT_JDK_SHA256=f47aba585cfc9ecff1ed8e023524e8309f4315ed8b80100b40c7dcc232c12f96
|
||||||
|
|
||||||
MACOS_X64_BOOT_JDK_EXT=tar.gz
|
MACOS_X64_BOOT_JDK_EXT=tar.gz
|
||||||
MACOS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk18/43f95e8614114aeaa8e8a5fcf20a682d/36/GPL/openjdk-18_macos-x64_bin.tar.gz
|
MACOS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk19/877d6127e982470ba2a7faa31cc93d04/36/GPL/openjdk-19_macos-x64_bin.tar.gz
|
||||||
MACOS_X64_BOOT_JDK_SHA256=527b61b4265caf45cdcbacfcf8fbcd0b4b280bede1eff32a5b252d855ff0534b
|
MACOS_X64_BOOT_JDK_SHA256=bfd33f5b2590fd552ae2d9231340c6b4704a872f927dce1c52860b78c49a5a11
|
||||||
|
|
||||||
WINDOWS_X64_BOOT_JDK_EXT=zip
|
WINDOWS_X64_BOOT_JDK_EXT=zip
|
||||||
WINDOWS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk18/43f95e8614114aeaa8e8a5fcf20a682d/36/GPL/openjdk-18_windows-x64_bin.zip
|
WINDOWS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk19/877d6127e982470ba2a7faa31cc93d04/36/GPL/openjdk-19_windows-x64_bin.zip
|
||||||
WINDOWS_X64_BOOT_JDK_SHA256=a5b91d4c12752d44aa75df70ae3e2311287b3e60c288b07dade106376c688277
|
WINDOWS_X64_BOOT_JDK_SHA256=8fabcee7c4e8d3b53486777ecd27bb906d67d7c1efd1bf22a8290cf659afa487
|
||||||
|
|||||||
@@ -254,12 +254,7 @@ var getJibProfilesCommon = function (input, data) {
|
|||||||
"--disable-jvm-feature-shenandoahgc",
|
"--disable-jvm-feature-shenandoahgc",
|
||||||
versionArgs(input, common))
|
versionArgs(input, common))
|
||||||
};
|
};
|
||||||
// Extra settings for release profiles
|
|
||||||
common.release_profile_base = {
|
|
||||||
configure_args: [
|
|
||||||
"--enable-reproducible-build",
|
|
||||||
],
|
|
||||||
};
|
|
||||||
// Extra settings for debug profiles
|
// Extra settings for debug profiles
|
||||||
common.debug_suffix = "-debug";
|
common.debug_suffix = "-debug";
|
||||||
common.debug_profile_base = {
|
common.debug_profile_base = {
|
||||||
@@ -393,7 +388,7 @@ var getJibProfilesCommon = function (input, data) {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
common.boot_jdk_version = "18";
|
common.boot_jdk_version = "19";
|
||||||
common.boot_jdk_build_number = "36";
|
common.boot_jdk_build_number = "36";
|
||||||
common.boot_jdk_home = input.get("boot_jdk", "install_path") + "/jdk-"
|
common.boot_jdk_home = input.get("boot_jdk", "install_path") + "/jdk-"
|
||||||
+ common.boot_jdk_version
|
+ common.boot_jdk_version
|
||||||
@@ -558,7 +553,7 @@ var getJibProfilesProfiles = function (input, common, data) {
|
|||||||
"ANT_HOME": input.get("ant", "home_path")
|
"ANT_HOME": input.get("ant", "home_path")
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
[ "linux-x64", "macosx-x64", "windows-x64", "linux-aarch64"]
|
[ "linux-x64", "macosx-aarch64", "macosx-x64", "windows-x64", "linux-aarch64"]
|
||||||
.forEach(function (name) {
|
.forEach(function (name) {
|
||||||
var maketestName = name + "-testmake";
|
var maketestName = name + "-testmake";
|
||||||
profiles[maketestName] = concatObjects(profiles[name], testmakeBase);
|
profiles[maketestName] = concatObjects(profiles[name], testmakeBase);
|
||||||
@@ -854,13 +849,6 @@ 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
|
// Artifacts of JCov profiles
|
||||||
[ "linux-aarch64", "linux-x64", "macosx-x64", "macosx-aarch64", "windows-x64" ]
|
[ "linux-aarch64", "linux-x64", "macosx-x64", "macosx-aarch64", "windows-x64" ]
|
||||||
.forEach(function (name) {
|
.forEach(function (name) {
|
||||||
@@ -955,7 +943,7 @@ var getJibProfilesProfiles = function (input, common, data) {
|
|||||||
target_cpu: input.build_cpu,
|
target_cpu: input.build_cpu,
|
||||||
dependencies: [
|
dependencies: [
|
||||||
"jtreg", "gnumake", "boot_jdk", "devkit", "jib", "jcov", testedProfileJdk,
|
"jtreg", "gnumake", "boot_jdk", "devkit", "jib", "jcov", testedProfileJdk,
|
||||||
testedProfileTest
|
testedProfileTest, testedProfile + ".jdk_symbols",
|
||||||
],
|
],
|
||||||
src: "src.conf",
|
src: "src.conf",
|
||||||
make_args: testOnlyMake,
|
make_args: testOnlyMake,
|
||||||
@@ -963,7 +951,8 @@ var getJibProfilesProfiles = function (input, common, data) {
|
|||||||
"BOOT_JDK": common.boot_jdk_home,
|
"BOOT_JDK": common.boot_jdk_home,
|
||||||
"JT_HOME": input.get("jtreg", "home_path"),
|
"JT_HOME": input.get("jtreg", "home_path"),
|
||||||
"JDK_IMAGE_DIR": input.get(testedProfileJdk, "home_path"),
|
"JDK_IMAGE_DIR": input.get(testedProfileJdk, "home_path"),
|
||||||
"TEST_IMAGE_DIR": input.get(testedProfileTest, "home_path")
|
"TEST_IMAGE_DIR": input.get(testedProfileTest, "home_path"),
|
||||||
|
"SYMBOLS_IMAGE_DIR": input.get(testedProfile + ".jdk_symbols", "home_path")
|
||||||
},
|
},
|
||||||
labels: "test"
|
labels: "test"
|
||||||
}
|
}
|
||||||
@@ -1003,17 +992,6 @@ var getJibProfilesProfiles = function (input, common, data) {
|
|||||||
profiles["run-test"] = concatObjects(profiles["run-test"], macosxRunTestExtra);
|
profiles["run-test"] = concatObjects(profiles["run-test"], macosxRunTestExtra);
|
||||||
profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"], macosxRunTestExtra);
|
profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"], macosxRunTestExtra);
|
||||||
}
|
}
|
||||||
// On windows we want the debug symbols available at test time
|
|
||||||
if (input.build_os == "windows") {
|
|
||||||
windowsRunTestPrebuiltExtra = {
|
|
||||||
dependencies: [ testedProfile + ".jdk_symbols" ],
|
|
||||||
environment: {
|
|
||||||
"SYMBOLS_IMAGE_DIR": input.get(testedProfile + ".jdk_symbols", "home_path"),
|
|
||||||
}
|
|
||||||
};
|
|
||||||
profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"],
|
|
||||||
windowsRunTestPrebuiltExtra);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The profile run-test-prebuilt defines src.conf as the src bundle. When
|
// The profile run-test-prebuilt defines src.conf as the src bundle. When
|
||||||
// running in Mach 5, this reduces the time it takes to populate the
|
// running in Mach 5, this reduces the time it takes to populate the
|
||||||
@@ -1153,9 +1131,9 @@ var getJibProfilesDependencies = function (input, common) {
|
|||||||
jtreg: {
|
jtreg: {
|
||||||
server: "jpg",
|
server: "jpg",
|
||||||
product: "jtreg",
|
product: "jtreg",
|
||||||
version: "6.1",
|
version: "7",
|
||||||
build_number: "1",
|
build_number: "1",
|
||||||
file: "bundles/jtreg-6.1+1.zip",
|
file: "bundles/jtreg-7+1.zip",
|
||||||
environment_name: "JT_HOME",
|
environment_name: "JT_HOME",
|
||||||
environment_path: input.get("jtreg", "home_path") + "/bin",
|
environment_path: input.get("jtreg", "home_path") + "/bin",
|
||||||
configure_args: "--with-jtreg=" + input.get("jtreg", "home_path"),
|
configure_args: "--with-jtreg=" + input.get("jtreg", "home_path"),
|
||||||
@@ -1164,12 +1142,12 @@ var getJibProfilesDependencies = function (input, common) {
|
|||||||
jmh: {
|
jmh: {
|
||||||
organization: common.organization,
|
organization: common.organization,
|
||||||
ext: "tar.gz",
|
ext: "tar.gz",
|
||||||
revision: "1.34+1.0"
|
revision: "1.35+1.0"
|
||||||
},
|
},
|
||||||
|
|
||||||
jcov: {
|
jcov: {
|
||||||
organization: common.organization,
|
organization: common.organization,
|
||||||
revision: "3.0-12-jdk-asm+1.0",
|
revision: "3.0-13-jdk-asm+1.0",
|
||||||
ext: "zip",
|
ext: "zip",
|
||||||
environment_name: "JCOV_HOME",
|
environment_name: "JCOV_HOME",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -37,6 +37,6 @@ DEFAULT_VERSION_DATE=2023-03-21
|
|||||||
DEFAULT_VERSION_CLASSFILE_MAJOR=64 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
DEFAULT_VERSION_CLASSFILE_MAJOR=64 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||||
DEFAULT_VERSION_DOCS_API_SINCE=11
|
DEFAULT_VERSION_DOCS_API_SINCE=11
|
||||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="18 19 20"
|
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="19 20"
|
||||||
DEFAULT_JDK_SOURCE_TARGET_VERSION=20
|
DEFAULT_JDK_SOURCE_TARGET_VERSION=20
|
||||||
DEFAULT_PROMOTED_VERSION_PRE=ea
|
DEFAULT_PROMOTED_VERSION_PRE=ea
|
||||||
|
|||||||
@@ -4,7 +4,9 @@
|
|||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
# published by the Free Software Foundation.
|
# 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
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
1
make/data/charsetmapping/IBM864.c2b
Normal file
1
make/data/charsetmapping/IBM864.c2b
Normal file
@@ -0,0 +1 @@
|
|||||||
|
0x25 U+0025
|
||||||
@@ -81,6 +81,7 @@ JVM_GetClassDeclaredConstructors
|
|||||||
JVM_GetClassDeclaredFields
|
JVM_GetClassDeclaredFields
|
||||||
JVM_GetClassDeclaredMethods
|
JVM_GetClassDeclaredMethods
|
||||||
JVM_GetClassFieldsCount
|
JVM_GetClassFieldsCount
|
||||||
|
JVM_GetClassFileVersion
|
||||||
JVM_GetClassInterfaces
|
JVM_GetClassInterfaces
|
||||||
JVM_GetClassMethodsCount
|
JVM_GetClassMethodsCount
|
||||||
JVM_GetClassModifiers
|
JVM_GetClassModifiers
|
||||||
@@ -193,7 +194,6 @@ JVM_RegisterLambdaProxyClassForArchiving
|
|||||||
JVM_RegisterSignal
|
JVM_RegisterSignal
|
||||||
JVM_ReleaseUTF
|
JVM_ReleaseUTF
|
||||||
JVM_ReportFinalizationComplete
|
JVM_ReportFinalizationComplete
|
||||||
JVM_ResumeThread
|
|
||||||
JVM_ExtentLocalCache
|
JVM_ExtentLocalCache
|
||||||
JVM_SetExtentLocalCache
|
JVM_SetExtentLocalCache
|
||||||
JVM_SetArrayElement
|
JVM_SetArrayElement
|
||||||
@@ -204,9 +204,7 @@ JVM_SetStackWalkContinuation
|
|||||||
JVM_SetThreadPriority
|
JVM_SetThreadPriority
|
||||||
JVM_Sleep
|
JVM_Sleep
|
||||||
JVM_StartThread
|
JVM_StartThread
|
||||||
JVM_StopThread
|
|
||||||
JVM_SupportsCX8
|
JVM_SupportsCX8
|
||||||
JVM_SuspendThread
|
|
||||||
JVM_TotalMemory
|
JVM_TotalMemory
|
||||||
JVM_UnloadLibrary
|
JVM_UnloadLibrary
|
||||||
JVM_WaitForReferencePendingList
|
JVM_WaitForReferencePendingList
|
||||||
@@ -226,4 +224,5 @@ JVM_VirtualThreadMountBegin
|
|||||||
JVM_VirtualThreadMountEnd
|
JVM_VirtualThreadMountEnd
|
||||||
JVM_VirtualThreadUnmountBegin
|
JVM_VirtualThreadUnmountBegin
|
||||||
JVM_VirtualThreadUnmountEnd
|
JVM_VirtualThreadUnmountEnd
|
||||||
|
JVM_VirtualThreadHideFrames
|
||||||
#
|
#
|
||||||
|
|||||||
18
make/data/macosxsigning/default-debug.plist
Normal file
18
make/data/macosxsigning/default-debug.plist
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?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.disable-library-validation</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.debugger</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.get-task-allow</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
20
make/data/macosxsigning/java-debug.plist
Normal file
20
make/data/macosxsigning/java-debug.plist
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?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.disable-library-validation</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.cs.debugger</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.device.audio-input</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.get-task-allow</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
JMH_VERSION=1.35
|
JMH_VERSION=1.35
|
||||||
COMMONS_MATH3_VERSION=3.2
|
COMMONS_MATH3_VERSION=3.2
|
||||||
JOPT_SIMPLE_VERSION=4.6
|
JOPT_SIMPLE_VERSION=5.0.4
|
||||||
|
|
||||||
BUNDLE_NAME=jmh-$JMH_VERSION.tar.gz
|
BUNDLE_NAME=jmh-$JMH_VERSION.tar.gz
|
||||||
|
|
||||||
|
|||||||
@@ -142,8 +142,7 @@ ifeq ($(call check-jvm-feature, compiler2), true)
|
|||||||
|
|
||||||
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
||||||
AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
|
AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
|
||||||
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_CPU_ARCH)_neon.ad \
|
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_CPU_ARCH)_vector.ad \
|
||||||
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_CPU_ARCH)_sve.ad \
|
|
||||||
)))
|
)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,10 @@ ifeq ($(VERSION_BUILD), )
|
|||||||
VERSION_BUILD := 0
|
VERSION_BUILD := 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(HOTSPOT_BUILD_TIME), )
|
||||||
|
HOTSPOT_BUILD_TIME := $(call EpochToISO8601, $(shell $(DATE) +"%s"))
|
||||||
|
endif
|
||||||
|
|
||||||
CFLAGS_VM_VERSION := \
|
CFLAGS_VM_VERSION := \
|
||||||
$(VERSION_CFLAGS) \
|
$(VERSION_CFLAGS) \
|
||||||
-DHOTSPOT_VERSION_STRING='"$(VERSION_STRING)"' \
|
-DHOTSPOT_VERSION_STRING='"$(VERSION_STRING)"' \
|
||||||
@@ -73,12 +77,9 @@ CFLAGS_VM_VERSION := \
|
|||||||
-DHOTSPOT_BUILD_USER='"$(USERNAME)"' \
|
-DHOTSPOT_BUILD_USER='"$(USERNAME)"' \
|
||||||
-DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"' \
|
-DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"' \
|
||||||
-DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \
|
-DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \
|
||||||
|
-DHOTSPOT_BUILD_TIME='"$(HOTSPOT_BUILD_TIME)"' \
|
||||||
#
|
#
|
||||||
|
|
||||||
ifneq ($(HOTSPOT_BUILD_TIME), )
|
|
||||||
CFLAGS_VM_VERSION += -DHOTSPOT_BUILD_TIME='"$(HOTSPOT_BUILD_TIME)"'
|
|
||||||
endif
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Disabled warnings
|
# Disabled warnings
|
||||||
|
|
||||||
|
|||||||
@@ -120,12 +120,8 @@ endif
|
|||||||
ifneq ($(call check-jvm-feature, cds), true)
|
ifneq ($(call check-jvm-feature, cds), true)
|
||||||
JVM_CFLAGS_FEATURES += -DINCLUDE_CDS=0
|
JVM_CFLAGS_FEATURES += -DINCLUDE_CDS=0
|
||||||
JVM_EXCLUDE_FILES += \
|
JVM_EXCLUDE_FILES += \
|
||||||
cdsProtectionDomain.cpp \
|
|
||||||
classLoaderDataShared.cpp \
|
classLoaderDataShared.cpp \
|
||||||
classLoaderExt.cpp \
|
classLoaderExt.cpp \
|
||||||
dumpTimeSharedClassInfo.cpp \
|
|
||||||
lambdaProxyClassDictionary.cpp \
|
|
||||||
runTimeSharedClassInfo.cpp \
|
|
||||||
systemDictionaryShared.cpp
|
systemDictionaryShared.cpp
|
||||||
JVM_EXCLUDE_PATTERNS += cds/
|
JVM_EXCLUDE_PATTERNS += cds/
|
||||||
endif
|
endif
|
||||||
@@ -169,12 +165,13 @@ endif
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
ifeq ($(call check-jvm-feature, link-time-opt), true)
|
ifeq ($(call check-jvm-feature, link-time-opt), true)
|
||||||
# NOTE: Disable automatic opimization level and let the explicit cflag control
|
# Set JVM_OPTIMIZATION directly so other jvm-feature flags can override it
|
||||||
# optimization level instead. This activates O3 on slowdebug builds, just
|
# later on if desired
|
||||||
# like the old build, but it's probably not right.
|
JVM_OPTIMIZATION := HIGHEST_JVM
|
||||||
JVM_OPTIMIZATION :=
|
ifeq ($(call isCompiler, gcc), true)
|
||||||
JVM_CFLAGS_FEATURES += -O3 -flto
|
JVM_CFLAGS_FEATURES += -flto -fuse-linker-plugin
|
||||||
JVM_LDFLAGS_FEATURES += -O3 -flto -fuse-linker-plugin -fno-strict-aliasing
|
JVM_LDFLAGS_FEATURES += -flto -fuse-linker-plugin -fno-strict-aliasing
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(call check-jvm-feature, opt-size), true)
|
ifeq ($(call check-jvm-feature, opt-size), true)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ endif
|
|||||||
# platform dependent.
|
# platform dependent.
|
||||||
|
|
||||||
ifeq ($(call isTargetOs, linux), true)
|
ifeq ($(call isTargetOs, linux), true)
|
||||||
DUMP_SYMBOLS_CMD := $(NM) --defined-only *.o
|
DUMP_SYMBOLS_CMD := $(NM) --defined-only *$(OBJ_SUFFIX)
|
||||||
ifneq ($(FILTER_SYMBOLS_PATTERN), )
|
ifneq ($(FILTER_SYMBOLS_PATTERN), )
|
||||||
FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
|
FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
|
||||||
endif
|
endif
|
||||||
@@ -67,7 +67,7 @@ ifeq ($(call isTargetOs, linux), true)
|
|||||||
else ifeq ($(call isTargetOs, macosx), true)
|
else ifeq ($(call isTargetOs, macosx), true)
|
||||||
# nm on macosx prints out "warning: nm: no name list" to stderr for
|
# nm on macosx prints out "warning: nm: no name list" to stderr for
|
||||||
# files without symbols. Hide this, even at the expense of hiding real errors.
|
# files without symbols. Hide this, even at the expense of hiding real errors.
|
||||||
DUMP_SYMBOLS_CMD := $(NM) -Uj *.o 2> /dev/null
|
DUMP_SYMBOLS_CMD := $(NM) -Uj *$(OBJ_SUFFIX) 2> /dev/null
|
||||||
ifneq ($(FILTER_SYMBOLS_PATTERN), )
|
ifneq ($(FILTER_SYMBOLS_PATTERN), )
|
||||||
FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
|
FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
|
||||||
endif
|
endif
|
||||||
@@ -89,7 +89,7 @@ else ifeq ($(call isTargetOs, aix), true)
|
|||||||
# which may be installed under /opt/freeware/bin. So better use an absolute path here!
|
# which may be installed under /opt/freeware/bin. So better use an absolute path here!
|
||||||
# NM=/usr/bin/nm
|
# NM=/usr/bin/nm
|
||||||
|
|
||||||
DUMP_SYMBOLS_CMD := $(NM) -X64 -B -C *.o
|
DUMP_SYMBOLS_CMD := $(NM) -X64 -B -C *$(OBJ_SUFFIX)
|
||||||
FILTER_SYMBOLS_AWK_SCRIPT := \
|
FILTER_SYMBOLS_AWK_SCRIPT := \
|
||||||
'{ \
|
'{ \
|
||||||
if (($$2="d" || $$2="D") && ($$3 ~ /^__vft/ || $$3 ~ /^gHotSpotVM/)) print $$3; \
|
if (($$2="d" || $$2="D") && ($$3 ~ /^__vft/ || $$3 ~ /^gHotSpotVM/)) print $$3; \
|
||||||
@@ -98,7 +98,7 @@ else ifeq ($(call isTargetOs, aix), true)
|
|||||||
}'
|
}'
|
||||||
|
|
||||||
else ifeq ($(call isTargetOs, windows), true)
|
else ifeq ($(call isTargetOs, windows), true)
|
||||||
DUMP_SYMBOLS_CMD := $(DUMPBIN) -symbols *.obj
|
DUMP_SYMBOLS_CMD := $(DUMPBIN) -symbols *$(OBJ_SUFFIX)
|
||||||
|
|
||||||
# The following lines create a list of vftable symbols to be filtered out of
|
# The following lines create a list of vftable symbols to be filtered out of
|
||||||
# the mapfile. Removing this line causes the linker to complain about too many
|
# the mapfile. Removing this line causes the linker to complain about too many
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import java.util.Formatter;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -70,7 +69,6 @@ class ResourceBundleGenerator implements BundleGenerator {
|
|||||||
private static final String META_VALUE_PREFIX = "metaValue_";
|
private static final String META_VALUE_PREFIX = "metaValue_";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void generateBundle(String packageName, String baseName, String localeID, boolean useJava,
|
public void generateBundle(String packageName, String baseName, String localeID, boolean useJava,
|
||||||
Map<String, ?> map, BundleType type) throws IOException {
|
Map<String, ?> map, BundleType type) throws IOException {
|
||||||
String suffix = useJava ? ".java" : ".properties";
|
String suffix = useJava ? ".java" : ".properties";
|
||||||
@@ -144,57 +142,35 @@ class ResourceBundleGenerator implements BundleGenerator {
|
|||||||
map = newMap;
|
map = newMap;
|
||||||
} else {
|
} else {
|
||||||
// generic reduction of duplicated values
|
// generic reduction of duplicated values
|
||||||
Map<String, Object> newMap = null;
|
Map<String, Object> newMap = new LinkedHashMap<>(map);
|
||||||
for (String key : map.keySet()) {
|
Map<BundleEntryValue, BundleEntryValue> dedup = new HashMap<>(map.size());
|
||||||
Object val = map.get(key);
|
|
||||||
String metaVal = null;
|
|
||||||
|
|
||||||
for (Map.Entry<String, ?> entry : map.entrySet()) {
|
for (Map.Entry<String, ?> entry : map.entrySet()) {
|
||||||
String k = entry.getKey();
|
String key = entry.getKey();
|
||||||
if (!k.equals(key) &&
|
Object val = entry.getValue();
|
||||||
Objects.deepEquals(val, entry.getValue()) &&
|
BundleEntryValue newEntry = new BundleEntryValue(key, val);
|
||||||
!(Objects.nonNull(newMap) && newMap.containsKey(k))) {
|
BundleEntryValue oldEntry = dedup.putIfAbsent(newEntry, newEntry);
|
||||||
if (Objects.isNull(newMap)) {
|
if (oldEntry != null) {
|
||||||
newMap = new HashMap<>();
|
if (oldEntry.meta()) {
|
||||||
|
if (fmt == null) {
|
||||||
fmt = new Formatter();
|
fmt = new Formatter();
|
||||||
}
|
}
|
||||||
|
String metaVal = oldEntry.metaKey();
|
||||||
if (Objects.isNull(metaVal)) {
|
if (val instanceof String[] values) {
|
||||||
metaVal = META_VALUE_PREFIX + key.replaceAll("[\\.-]", "_");
|
|
||||||
|
|
||||||
if (val instanceof String[]) {
|
|
||||||
fmt.format(" final String[] %s = new String[] {\n", metaVal);
|
fmt.format(" final String[] %s = new String[] {\n", metaVal);
|
||||||
for (String s : (String[]) val) {
|
for (String s : values) {
|
||||||
fmt.format(" \"%s\",\n", CLDRConverter.saveConvert(s, useJava));
|
|
||||||
}
|
|
||||||
fmt.format(" };\n");
|
|
||||||
} else if (val instanceof List) {
|
|
||||||
fmt.format(" final String[] %s = new String[] {\n", metaVal);
|
|
||||||
for (String s : (List<String>) val) {
|
|
||||||
fmt.format(" \"%s\",\n", CLDRConverter.saveConvert(s, useJava));
|
fmt.format(" \"%s\",\n", CLDRConverter.saveConvert(s, useJava));
|
||||||
}
|
}
|
||||||
fmt.format(" };\n");
|
fmt.format(" };\n");
|
||||||
} else {
|
} else {
|
||||||
fmt.format(" final String %s = \"%s\";\n", metaVal, CLDRConverter.saveConvert((String)val, useJava));
|
fmt.format(" final String %s = \"%s\";\n", metaVal, CLDRConverter.saveConvert((String)val, useJava));
|
||||||
}
|
}
|
||||||
|
newMap.put(oldEntry.key, oldEntry.metaKey());
|
||||||
}
|
}
|
||||||
|
newMap.put(key, oldEntry.metaKey());
|
||||||
newMap.put(k, metaVal);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Objects.nonNull(metaVal)) {
|
|
||||||
newMap.put(key, metaVal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Objects.nonNull(newMap)) {
|
|
||||||
for (String key : map.keySet()) {
|
|
||||||
newMap.putIfAbsent(key, map.get(key));
|
|
||||||
}
|
|
||||||
map = newMap;
|
map = newMap;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
try (PrintWriter out = new PrintWriter(file, encoding)) {
|
try (PrintWriter out = new PrintWriter(file, encoding)) {
|
||||||
// Output copyright headers
|
// Output copyright headers
|
||||||
@@ -247,6 +223,58 @@ class ResourceBundleGenerator implements BundleGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class BundleEntryValue {
|
||||||
|
private final String key;
|
||||||
|
private final Object value;
|
||||||
|
private final int hashCode;
|
||||||
|
private String metaKey;
|
||||||
|
|
||||||
|
BundleEntryValue(String key, Object value) {
|
||||||
|
this.key = Objects.requireNonNull(key);
|
||||||
|
this.value = Objects.requireNonNull(value);
|
||||||
|
if (value instanceof String) {
|
||||||
|
hashCode = value.hashCode();
|
||||||
|
} else if (value instanceof String[] arr) {
|
||||||
|
hashCode = Arrays.hashCode(arr);
|
||||||
|
} else {
|
||||||
|
throw new InternalError("Expected a string or a string array");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mark the entry as meta
|
||||||
|
* @return true if the entry was not meta before, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean meta() {
|
||||||
|
if (metaKey == null) {
|
||||||
|
metaKey = META_VALUE_PREFIX + key.replaceAll("[\\.-]", "_");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String metaKey() {
|
||||||
|
return metaKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return hashCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj instanceof BundleEntryValue entry) {
|
||||||
|
if (value instanceof String s) {
|
||||||
|
return s.equals(entry.value);
|
||||||
|
} else if (entry.value instanceof String[] otherVal) {
|
||||||
|
return Arrays.equals((String[]) value, otherVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generateMetaInfo(Map<String, SortedSet<String>> metaInfo) throws IOException {
|
public void generateMetaInfo(Map<String, SortedSet<String>> metaInfo) throws IOException {
|
||||||
String dirName = CLDRConverter.DESTINATION_DIR + File.separator + "sun" + File.separator + "util" +
|
String dirName = CLDRConverter.DESTINATION_DIR + File.separator + "sun" + File.separator + "util" +
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -24,6 +24,17 @@
|
|||||||
*/
|
*/
|
||||||
package build.tools.depend;
|
package build.tools.depend;
|
||||||
|
|
||||||
|
import com.sun.source.tree.ClassTree;
|
||||||
|
import com.sun.source.tree.CompilationUnitTree;
|
||||||
|
import com.sun.source.tree.IdentifierTree;
|
||||||
|
import com.sun.source.tree.ImportTree;
|
||||||
|
import com.sun.source.tree.LiteralTree;
|
||||||
|
import com.sun.source.tree.MemberReferenceTree;
|
||||||
|
import com.sun.source.tree.MemberSelectTree;
|
||||||
|
import com.sun.source.tree.MethodTree;
|
||||||
|
import com.sun.source.tree.ModifiersTree;
|
||||||
|
import com.sun.source.tree.Tree;
|
||||||
|
import com.sun.source.tree.VariableTree;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@@ -86,8 +97,37 @@ import com.sun.source.util.TaskEvent;
|
|||||||
import com.sun.source.util.TaskEvent.Kind;
|
import com.sun.source.util.TaskEvent.Kind;
|
||||||
import com.sun.source.util.TaskListener;
|
import com.sun.source.util.TaskListener;
|
||||||
import com.sun.source.util.TreePath;
|
import com.sun.source.util.TreePath;
|
||||||
|
import com.sun.source.util.TreeScanner;
|
||||||
import com.sun.source.util.Trees;
|
import com.sun.source.util.Trees;
|
||||||
|
import com.sun.tools.javac.api.BasicJavacTask;
|
||||||
|
import com.sun.tools.javac.code.Flags;
|
||||||
|
import com.sun.tools.javac.main.JavaCompiler;
|
||||||
|
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
|
||||||
|
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
|
||||||
|
import com.sun.tools.javac.util.Context;
|
||||||
|
import com.sun.tools.javac.util.Context.Key;
|
||||||
|
import com.sun.tools.javac.util.ListBuffer;
|
||||||
|
import com.sun.tools.javac.util.Options;
|
||||||
|
import com.sun.tools.javac.util.StringUtils;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.InvocationHandler;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.lang.reflect.Proxy;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.IdentityHashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
import javax.lang.model.element.ElementKind;
|
import javax.lang.model.element.ElementKind;
|
||||||
|
import javax.lang.model.element.Name;
|
||||||
|
import javax.tools.ForwardingJavaFileManager;
|
||||||
|
import javax.tools.JavaFileManager;
|
||||||
|
import javax.tools.StandardLocation;
|
||||||
|
import javax.tools.ToolProvider;
|
||||||
|
|
||||||
public class Depend implements Plugin {
|
public class Depend implements Plugin {
|
||||||
|
|
||||||
@@ -98,6 +138,45 @@ public class Depend implements Plugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(JavacTask jt, String... args) {
|
public void init(JavacTask jt, String... args) {
|
||||||
|
addExports();
|
||||||
|
|
||||||
|
AtomicBoolean noApiChange = new AtomicBoolean();
|
||||||
|
try {
|
||||||
|
Context context = ((BasicJavacTask) jt).getContext();
|
||||||
|
Options options = Options.instance(context);
|
||||||
|
String modifiedInputs = options.get("modifiedInputs");
|
||||||
|
if (modifiedInputs == null) {
|
||||||
|
throw new IllegalStateException("Expected modifiedInputs to be set using -XDmodifiedInputs=<list-of-files>");
|
||||||
|
}
|
||||||
|
String logLevel = options.get("LOG_LEVEL");
|
||||||
|
boolean debug = "trace".equals(logLevel) || "debug".equals(logLevel);
|
||||||
|
String internalAPIPath = options.get("internalAPIPath");
|
||||||
|
if (internalAPIPath == null) {
|
||||||
|
throw new IllegalStateException("Expected internalAPIPath to be set using -XDinternalAPIPath=<internal-API-path>");
|
||||||
|
}
|
||||||
|
Set<Path> modified = Files.readAllLines(Paths.get(modifiedInputs)).stream()
|
||||||
|
.map(Paths::get)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
Path internalAPIDigestFile = Paths.get(internalAPIPath);
|
||||||
|
JavaCompiler compiler = JavaCompiler.instance(context);
|
||||||
|
Class<?> initialFileParserIntf = Class.forName("com.sun.tools.javac.main.JavaCompiler$InitialFileParserIntf");
|
||||||
|
Class<?> initialFileParser = Class.forName("com.sun.tools.javac.main.JavaCompiler$InitialFileParser");
|
||||||
|
Field initialParserKeyField = initialFileParser.getDeclaredField("initialParserKey");
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Key<Object> key = (Key<Object>) initialParserKeyField.get(null);
|
||||||
|
Object initialParserInstance =
|
||||||
|
Proxy.newProxyInstance(Depend.class.getClassLoader(),
|
||||||
|
new Class<?>[] {initialFileParserIntf},
|
||||||
|
new FilteredInitialFileParser(compiler,
|
||||||
|
modified,
|
||||||
|
internalAPIDigestFile,
|
||||||
|
noApiChange,
|
||||||
|
debug));
|
||||||
|
context.<Object>put(key, initialParserInstance);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
throw new IllegalStateException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
jt.addTaskListener(new TaskListener() {
|
jt.addTaskListener(new TaskListener() {
|
||||||
private final Map<ModuleElement, Set<PackageElement>> apiPackages = new HashMap<>();
|
private final Map<ModuleElement, Set<PackageElement>> apiPackages = new HashMap<>();
|
||||||
private final MessageDigest apiHash;
|
private final MessageDigest apiHash;
|
||||||
@@ -134,7 +213,7 @@ public class Depend implements Plugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (te.getKind() == Kind.COMPILATION) {
|
if (te.getKind() == Kind.COMPILATION && !noApiChange.get()) {
|
||||||
String previousSignature = null;
|
String previousSignature = null;
|
||||||
File digestFile = new File(args[0]);
|
File digestFile = new File(args[0]);
|
||||||
try (InputStream in = new FileInputStream(digestFile)) {
|
try (InputStream in = new FileInputStream(digestFile)) {
|
||||||
@@ -156,6 +235,116 @@ public class Depend implements Plugin {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addExports() {
|
||||||
|
var systemCompiler = ToolProvider.getSystemJavaCompiler();
|
||||||
|
try (JavaFileManager jfm = systemCompiler.getStandardFileManager(null, null, null)) {
|
||||||
|
JavaFileManager fm = new ForwardingJavaFileManager<JavaFileManager>(jfm) {
|
||||||
|
@Override
|
||||||
|
public ClassLoader getClassLoader(JavaFileManager.Location location) {
|
||||||
|
if (location == StandardLocation.CLASS_PATH) {
|
||||||
|
return Depend.class.getClassLoader();
|
||||||
|
}
|
||||||
|
return super.getClassLoader(location);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
((JavacTask) systemCompiler.getTask(null, fm, null,
|
||||||
|
List.of("-proc:only", "-XDaccessInternalAPI=true"),
|
||||||
|
List.of("java.lang.Object"), null))
|
||||||
|
.analyze();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new IllegalStateException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private com.sun.tools.javac.util.List<JCCompilationUnit> doFilteredParse(
|
||||||
|
JavaCompiler compiler, Iterable<JavaFileObject> fileObjects, Set<Path> modified,
|
||||||
|
Path internalAPIDigestFile, AtomicBoolean noApiChange,
|
||||||
|
boolean debug) {
|
||||||
|
Map<String, String> internalAPI = new LinkedHashMap<>();
|
||||||
|
if (Files.isReadable(internalAPIDigestFile)) {
|
||||||
|
try {
|
||||||
|
Files.readAllLines(internalAPIDigestFile, StandardCharsets.UTF_8)
|
||||||
|
.forEach(line -> {
|
||||||
|
String[] keyAndValue = line.split("=");
|
||||||
|
internalAPI.put(keyAndValue[0], keyAndValue[1]);
|
||||||
|
});
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new IllegalStateException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Map<JavaFileObject, JCCompilationUnit> files2CUT = new IdentityHashMap<>();
|
||||||
|
boolean fullRecompile = modified.stream()
|
||||||
|
.map(Path::toString)
|
||||||
|
.anyMatch(f -> !StringUtils.toLowerCase(f).endsWith(".java"));
|
||||||
|
ListBuffer<JCCompilationUnit> result = new ListBuffer<>();
|
||||||
|
for (JavaFileObject jfo : fileObjects) {
|
||||||
|
if (modified.contains(Path.of(jfo.getName()))) {
|
||||||
|
JCCompilationUnit parsed = compiler.parse(jfo);
|
||||||
|
files2CUT.put(jfo, parsed);
|
||||||
|
String currentSignature = treeDigest(parsed);
|
||||||
|
if (!currentSignature.equals(internalAPI.get(jfo.getName()))) {
|
||||||
|
fullRecompile |= true;
|
||||||
|
internalAPI.put(jfo.getName(), currentSignature);
|
||||||
|
}
|
||||||
|
result.add(parsed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fullRecompile) {
|
||||||
|
for (JavaFileObject jfo : fileObjects) {
|
||||||
|
if (!modified.contains(Path.of(jfo.getName()))) {
|
||||||
|
JCCompilationUnit parsed = files2CUT.get(jfo);
|
||||||
|
if (parsed == null) {
|
||||||
|
parsed = compiler.parse(jfo);
|
||||||
|
internalAPI.put(jfo.getName(), treeDigest(parsed));
|
||||||
|
}
|
||||||
|
result.add(parsed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try (OutputStream out = Files.newOutputStream(internalAPIDigestFile)) {
|
||||||
|
String hashes = internalAPI.entrySet()
|
||||||
|
.stream()
|
||||||
|
.map(e -> e.getKey() + "=" + e.getValue())
|
||||||
|
.collect(Collectors.joining("\n"));
|
||||||
|
out.write(hashes.getBytes(StandardCharsets.UTF_8));
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new IllegalStateException(ex);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
noApiChange.set(true);
|
||||||
|
}
|
||||||
|
if (debug) {
|
||||||
|
long allJavaInputs = StreamSupport.stream(fileObjects.spliterator(), false).count();
|
||||||
|
String module = StreamSupport.stream(fileObjects.spliterator(), false)
|
||||||
|
.map(fo -> fo.toUri().toString())
|
||||||
|
.filter(path -> path.contains("/share/classes/"))
|
||||||
|
.map(path -> path.substring(0, path.indexOf("/share/classes/")))
|
||||||
|
.map(path -> path.substring(path.lastIndexOf("/") + 1))
|
||||||
|
.findAny()
|
||||||
|
.orElseGet(() -> "unknown");
|
||||||
|
String nonJavaModifiedFiles = modified.stream()
|
||||||
|
.map(Path::toString)
|
||||||
|
.filter(f -> !StringUtils.toLowerCase(f)
|
||||||
|
.endsWith(".java"))
|
||||||
|
.collect(Collectors.joining(", "));
|
||||||
|
System.err.println("compiling module: " + module +
|
||||||
|
", all Java inputs: " + allJavaInputs +
|
||||||
|
", modified files (Java or non-Java): " + modified.size() +
|
||||||
|
", full recompile: " + fullRecompile +
|
||||||
|
", non-Java modified files: " + nonJavaModifiedFiles);
|
||||||
|
}
|
||||||
|
return result.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String treeDigest(JCCompilationUnit cu) {
|
||||||
|
try {
|
||||||
|
TreeVisitor v = new TreeVisitor(MessageDigest.getInstance("MD5"));
|
||||||
|
v.scan(cu, null);
|
||||||
|
return Depend.this.toString(v.apiHash.digest());
|
||||||
|
} catch (NoSuchAlgorithmException ex) {
|
||||||
|
throw new IllegalStateException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
private String toString(byte[] digest) {
|
private String toString(byte[] digest) {
|
||||||
return HexFormat.of().withUpperCase().formatHex(digest);
|
return HexFormat.of().withUpperCase().formatHex(digest);
|
||||||
}
|
}
|
||||||
@@ -537,4 +726,192 @@ public class Depend implements Plugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final class TreeVisitor extends TreeScanner<Void, Void> {
|
||||||
|
|
||||||
|
private final Set<Name> seenIdentifiers = new HashSet<>();
|
||||||
|
private final MessageDigest apiHash;
|
||||||
|
private final Charset utf8;
|
||||||
|
|
||||||
|
public TreeVisitor(MessageDigest apiHash) {
|
||||||
|
this.apiHash = apiHash;
|
||||||
|
utf8 = Charset.forName("UTF-8");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void update(CharSequence data) {
|
||||||
|
apiHash.update(data.toString().getBytes(utf8));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void scan(Tree tree, Void p) {
|
||||||
|
update("(");
|
||||||
|
if (tree != null) {
|
||||||
|
update(tree.getKind().name());
|
||||||
|
};
|
||||||
|
super.scan(tree, p);
|
||||||
|
update(")");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitCompilationUnit(CompilationUnitTree node, Void p) {
|
||||||
|
seenIdentifiers.clear();
|
||||||
|
scan(node.getPackage(), p);
|
||||||
|
scan(node.getTypeDecls(), p);
|
||||||
|
scan(((JCCompilationUnit) node).getModuleDecl(), p);
|
||||||
|
List<ImportTree> importantImports = new ArrayList<>();
|
||||||
|
for (ImportTree imp : node.getImports()) {
|
||||||
|
Tree t = imp.getQualifiedIdentifier();
|
||||||
|
if (t.getKind() == Tree.Kind.MEMBER_SELECT) {
|
||||||
|
Name member = ((MemberSelectTree) t).getIdentifier();
|
||||||
|
if (member.contentEquals("*") || seenIdentifiers.contains(member)) {
|
||||||
|
importantImports.add(imp);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//should not happen, possibly erroneous source?
|
||||||
|
importantImports.add(imp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
importantImports.sort((imp1, imp2) -> {
|
||||||
|
if (imp1.isStatic() ^ imp2.isStatic()) {
|
||||||
|
return imp1.isStatic() ? -1 : 1;
|
||||||
|
} else {
|
||||||
|
return imp1.getQualifiedIdentifier().toString().compareTo(imp2.getQualifiedIdentifier().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
scan(importantImports, p);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitIdentifier(IdentifierTree node, Void p) {
|
||||||
|
update(node.getName());
|
||||||
|
seenIdentifiers.add(node.getName());
|
||||||
|
return super.visitIdentifier(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitMemberSelect(MemberSelectTree node, Void p) {
|
||||||
|
update(node.getIdentifier());
|
||||||
|
return super.visitMemberSelect(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitMemberReference(MemberReferenceTree node, Void p) {
|
||||||
|
update(node.getName());
|
||||||
|
return super.visitMemberReference(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void scan(Iterable<? extends Tree> nodes, Void p) {
|
||||||
|
update("(");
|
||||||
|
super.scan(nodes, p);
|
||||||
|
update(")");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitClass(ClassTree node, Void p) {
|
||||||
|
update(node.getSimpleName());
|
||||||
|
scan(node.getModifiers(), p);
|
||||||
|
scan(node.getTypeParameters(), p);
|
||||||
|
scan(node.getExtendsClause(), p);
|
||||||
|
scan(node.getImplementsClause(), p);
|
||||||
|
scan(node.getMembers()
|
||||||
|
.stream()
|
||||||
|
.filter(this::importantMember)
|
||||||
|
.collect(Collectors.toList()),
|
||||||
|
p);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean importantMember(Tree m) {
|
||||||
|
return switch (m.getKind()) {
|
||||||
|
case ANNOTATION_TYPE, CLASS, ENUM, INTERFACE, RECORD ->
|
||||||
|
!isPrivate(((ClassTree) m).getModifiers());
|
||||||
|
case METHOD ->
|
||||||
|
!isPrivate(((MethodTree) m).getModifiers());
|
||||||
|
case VARIABLE ->
|
||||||
|
!isPrivate(((VariableTree) m).getModifiers()) ||
|
||||||
|
isRecordComponent((VariableTree) m);
|
||||||
|
case BLOCK -> false;
|
||||||
|
default -> throw new IllegalStateException("Unexpected tree kind: " + m.getKind());
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isPrivate(ModifiersTree mt) {
|
||||||
|
return mt.getFlags().contains(Modifier.PRIVATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isRecordComponent(VariableTree vt) {
|
||||||
|
return (((JCVariableDecl) vt).mods.flags & Flags.RECORD) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitVariable(VariableTree node, Void p) {
|
||||||
|
update(node.getName());
|
||||||
|
return super.visitVariable(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitMethod(MethodTree node, Void p) {
|
||||||
|
update(node.getName());
|
||||||
|
scan(node.getModifiers(), p);
|
||||||
|
scan(node.getReturnType(), p);
|
||||||
|
scan(node.getTypeParameters(), p);
|
||||||
|
scan(node.getParameters(), p);
|
||||||
|
scan(node.getReceiverParameter(), p);
|
||||||
|
scan(node.getThrows(), p);
|
||||||
|
scan(node.getDefaultValue(), p);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitLiteral(LiteralTree node, Void p) {
|
||||||
|
update(String.valueOf(node.getValue()));
|
||||||
|
return super.visitLiteral(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitModifiers(ModifiersTree node, Void p) {
|
||||||
|
update(node.getFlags().toString());
|
||||||
|
return super.visitModifiers(node, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private class FilteredInitialFileParser implements InvocationHandler {
|
||||||
|
|
||||||
|
private final JavaCompiler compiler;
|
||||||
|
private final Set<Path> modified;
|
||||||
|
private final Path internalAPIDigestFile;
|
||||||
|
private final AtomicBoolean noApiChange;
|
||||||
|
private final boolean debug;
|
||||||
|
|
||||||
|
public FilteredInitialFileParser(JavaCompiler compiler,
|
||||||
|
Set<Path> modified,
|
||||||
|
Path internalAPIDigestFile,
|
||||||
|
AtomicBoolean noApiChange,
|
||||||
|
boolean debug) {
|
||||||
|
this.compiler = compiler;
|
||||||
|
this.modified = modified;
|
||||||
|
this.internalAPIDigestFile = internalAPIDigestFile;
|
||||||
|
this.noApiChange = noApiChange;
|
||||||
|
this.debug = debug;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||||
|
return switch (method.getName()) {
|
||||||
|
case "parse" -> doFilteredParse(compiler,
|
||||||
|
(Iterable<JavaFileObject>) args[0],
|
||||||
|
modified,
|
||||||
|
internalAPIDigestFile,
|
||||||
|
noApiChange,
|
||||||
|
debug);
|
||||||
|
default -> throw new UnsupportedOperationException();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -52,6 +52,8 @@ public class DependTest {
|
|||||||
test.testModules();
|
test.testModules();
|
||||||
test.testAnnotations();
|
test.testAnnotations();
|
||||||
test.testRecords();
|
test.testRecords();
|
||||||
|
test.testImports();
|
||||||
|
test.testModifiers();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMethods() throws Exception {
|
public void testMethods() throws Exception {
|
||||||
@@ -145,7 +147,8 @@ public class DependTest {
|
|||||||
"@SuppressWarnings(\"any\")\n" +
|
"@SuppressWarnings(\"any\")\n" +
|
||||||
"public class Test {\n" +
|
"public class Test {\n" +
|
||||||
"}",
|
"}",
|
||||||
false);
|
false,
|
||||||
|
true); //Tree hash does not tolerate undocumented annotations
|
||||||
doOrdinaryTest("package test;" +
|
doOrdinaryTest("package test;" +
|
||||||
"public class Test {\n" +
|
"public class Test {\n" +
|
||||||
"}",
|
"}",
|
||||||
@@ -156,6 +159,83 @@ public class DependTest {
|
|||||||
true);
|
true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testImports() throws Exception {
|
||||||
|
doOrdinaryTest("package test;" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
"}",
|
||||||
|
"package test;" +
|
||||||
|
"import java.util.List;\n" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
" private List l;\n" +
|
||||||
|
"}",
|
||||||
|
false);
|
||||||
|
doOrdinaryTest("package test;" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
"}",
|
||||||
|
"package test;" +
|
||||||
|
"import java.util.List;\n" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
" public List l;\n" +
|
||||||
|
"}",
|
||||||
|
true);
|
||||||
|
doOrdinaryTest("package test;" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
"}",
|
||||||
|
"package test;" +
|
||||||
|
"import java.util.List;\n" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
" List l;\n" +
|
||||||
|
"}",
|
||||||
|
false,
|
||||||
|
true);
|
||||||
|
doOrdinaryTest("package test;" +
|
||||||
|
"import java.util.*;\n" +
|
||||||
|
"public abstract class Test implements List {\n" +
|
||||||
|
"}\n" +
|
||||||
|
"class H {\n" +
|
||||||
|
" public interface List {}\n" +
|
||||||
|
"}",
|
||||||
|
"package test;" +
|
||||||
|
"import java.util.*;\n" +
|
||||||
|
"import test.H.List;\n" +
|
||||||
|
"public abstract class Test implements List {\n" +
|
||||||
|
"}\n" +
|
||||||
|
"class H {\n" +
|
||||||
|
" public interface List {}\n" +
|
||||||
|
"}",
|
||||||
|
true);
|
||||||
|
doOrdinaryTest("package test;" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
"}",
|
||||||
|
"package test;" +
|
||||||
|
"import java.util.*;\n" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
"}",
|
||||||
|
false,
|
||||||
|
true);
|
||||||
|
doOrdinaryTest("package test;" +
|
||||||
|
"import java.util.*;\n" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
"}",
|
||||||
|
"package test;" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
"}",
|
||||||
|
false,
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testModifiers() throws Exception {
|
||||||
|
doOrdinaryTest("package test;" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
" String l;\n" +
|
||||||
|
"}",
|
||||||
|
"package test;" +
|
||||||
|
"public class Test {\n" +
|
||||||
|
" public String l;\n" +
|
||||||
|
"}",
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
|
||||||
public void testModules() throws Exception {
|
public void testModules() throws Exception {
|
||||||
doModuleTest("module m { }",
|
doModuleTest("module m { }",
|
||||||
"module m { requires java.compiler; }",
|
"module m { requires java.compiler; }",
|
||||||
@@ -199,11 +279,13 @@ public class DependTest {
|
|||||||
doOrdinaryTest("package test; public record Test (int x, int y) { }",
|
doOrdinaryTest("package test; public record Test (int x, int y) { }",
|
||||||
"package test; public record Test (int x, int y) {" +
|
"package test; public record Test (int x, int y) {" +
|
||||||
"public Test { } }", // compact ctr
|
"public Test { } }", // compact ctr
|
||||||
false);
|
false,
|
||||||
|
true);
|
||||||
doOrdinaryTest("package test; public record Test (int x, int y) { }",
|
doOrdinaryTest("package test; public record Test (int x, int y) { }",
|
||||||
"package test; public record Test (int x, int y) {" +
|
"package test; public record Test (int x, int y) {" +
|
||||||
"public Test (int x, int y) { this.x=x; this.y=y;} }", // canonical ctr
|
"public Test (int x, int y) { this.x=x; this.y=y;} }", // canonical ctr
|
||||||
false);
|
false,
|
||||||
|
true);
|
||||||
doOrdinaryTest("package test; public record Test (int x, int y) { }",
|
doOrdinaryTest("package test; public record Test (int x, int y) { }",
|
||||||
"package test; public record Test (int y, int x) { }", // reverse
|
"package test; public record Test (int y, int x) { }", // reverse
|
||||||
true);
|
true);
|
||||||
@@ -227,6 +309,7 @@ public class DependTest {
|
|||||||
private Path scratchServices;
|
private Path scratchServices;
|
||||||
private Path scratchClasses;
|
private Path scratchClasses;
|
||||||
private Path apiHash;
|
private Path apiHash;
|
||||||
|
private Path treeHash;
|
||||||
|
|
||||||
private void setupClass() throws IOException {
|
private void setupClass() throws IOException {
|
||||||
depend = Paths.get(Depend.class.getProtectionDomain().getCodeSource().getLocation().getPath());
|
depend = Paths.get(Depend.class.getProtectionDomain().getCodeSource().getLocation().getPath());
|
||||||
@@ -244,34 +327,53 @@ public class DependTest {
|
|||||||
Files.createDirectories(scratchClasses);
|
Files.createDirectories(scratchClasses);
|
||||||
|
|
||||||
apiHash = scratch.resolve("api");
|
apiHash = scratch.resolve("api");
|
||||||
|
treeHash = scratch.resolve("tree");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doOrdinaryTest(String codeBefore, String codeAfter, boolean hashChangeExpected) throws Exception {
|
private void doOrdinaryTest(String codeBefore, String codeAfter, boolean hashChangeExpected) throws Exception {
|
||||||
|
doOrdinaryTest(codeBefore, codeAfter, hashChangeExpected, hashChangeExpected);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doOrdinaryTest(String codeBefore, String codeAfter, boolean apiHashChangeExpected, boolean treeHashChangeExpected) throws Exception {
|
||||||
List<String> options =
|
List<String> options =
|
||||||
Arrays.asList("-d", scratchClasses.toString(),
|
Arrays.asList("-d", scratchClasses.toString(),
|
||||||
"-processorpath", depend.toString() + File.pathSeparator + scratchServices.toString(),
|
"-processorpath", depend.toString() + File.pathSeparator + scratchServices.toString(),
|
||||||
"-Xplugin:depend " + apiHash.toString());
|
"-Xplugin:depend " + apiHash.toString() + " " + treeHash.toString(),
|
||||||
|
"-XDmodifiedInputs=build-all");
|
||||||
List<TestJavaFileObject> beforeFiles =
|
List<TestJavaFileObject> beforeFiles =
|
||||||
Arrays.asList(new TestJavaFileObject("module-info", "module m { exports test; }"),
|
Arrays.asList(new TestJavaFileObject("module-info", "module m { exports test; }"),
|
||||||
new TestJavaFileObject("test.Test", codeBefore));
|
new TestJavaFileObject("test.Test", codeBefore));
|
||||||
compiler.getTask(null, null, null, options, null, beforeFiles).call();
|
compiler.getTask(null, null, null, options, null, beforeFiles).call();
|
||||||
byte[] originalHash = Files.readAllBytes(apiHash);
|
byte[] originalApiHash = Files.readAllBytes(apiHash);
|
||||||
|
byte[] originalTreeHash = Files.readAllBytes(treeHash);
|
||||||
List<TestJavaFileObject> afterFiles =
|
List<TestJavaFileObject> afterFiles =
|
||||||
Arrays.asList(new TestJavaFileObject("module-info", "module m { exports test; }"),
|
Arrays.asList(new TestJavaFileObject("module-info", "module m { exports test; }"),
|
||||||
new TestJavaFileObject("test.Test", codeAfter));
|
new TestJavaFileObject("test.Test", codeAfter));
|
||||||
compiler.getTask(null, null, null, options, null, afterFiles).call();
|
compiler.getTask(null, null, null, options, null, afterFiles).call();
|
||||||
byte[] newHash = Files.readAllBytes(apiHash);
|
byte[] newApiHash = Files.readAllBytes(apiHash);
|
||||||
|
byte[] newTreeHash = Files.readAllBytes(treeHash);
|
||||||
|
|
||||||
if (Arrays.equals(originalHash, newHash) ^ !hashChangeExpected) {
|
if (Arrays.equals(originalApiHash, newApiHash) ^ !apiHashChangeExpected) {
|
||||||
throw new AssertionError("Unexpected hash state.");
|
throw new AssertionError("Unexpected API hash state.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Arrays.equals(originalTreeHash, newTreeHash) ^ !treeHashChangeExpected) {
|
||||||
|
throw new AssertionError("Unexpected Tree hash state, " +
|
||||||
|
"original: " + new String(originalTreeHash) +
|
||||||
|
", new: " + new String(newTreeHash));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doModuleTest(String codeBefore, String codeAfter, boolean hashChangeExpected) throws Exception {
|
private void doModuleTest(String codeBefore, String codeAfter, boolean hashChangeExpected) throws Exception {
|
||||||
|
doModuleTest(codeBefore, codeAfter, hashChangeExpected, hashChangeExpected);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doModuleTest(String codeBefore, String codeAfter, boolean apiHashChangeExpected, boolean treeHashChangeExpected) throws Exception {
|
||||||
List<String> options =
|
List<String> options =
|
||||||
Arrays.asList("-d", scratchClasses.toString(),
|
Arrays.asList("-d", scratchClasses.toString(),
|
||||||
"-processorpath", depend.toString() + File.pathSeparator + scratchServices.toString(),
|
"-processorpath", depend.toString() + File.pathSeparator + scratchServices.toString(),
|
||||||
"-Xplugin:depend " + apiHash.toString());
|
"-Xplugin:depend " + apiHash.toString() + " " + treeHash.toString(),
|
||||||
|
"-XDmodifiedInputs=build-all");
|
||||||
List<TestJavaFileObject> beforeFiles =
|
List<TestJavaFileObject> beforeFiles =
|
||||||
Arrays.asList(new TestJavaFileObject("module-info", codeBefore),
|
Arrays.asList(new TestJavaFileObject("module-info", codeBefore),
|
||||||
new TestJavaFileObject("test.Test1", "package test; public interface Test1 {}"),
|
new TestJavaFileObject("test.Test1", "package test; public interface Test1 {}"),
|
||||||
@@ -279,7 +381,8 @@ public class DependTest {
|
|||||||
new TestJavaFileObject("test.TestImpl1", "package test; public class TestImpl1 implements Test1, Test2 {}"),
|
new TestJavaFileObject("test.TestImpl1", "package test; public class TestImpl1 implements Test1, Test2 {}"),
|
||||||
new TestJavaFileObject("test.TestImpl2", "package test; public class TestImpl2 implements Test1, Test2 {}"));
|
new TestJavaFileObject("test.TestImpl2", "package test; public class TestImpl2 implements Test1, Test2 {}"));
|
||||||
compiler.getTask(null, null, null, options, null, beforeFiles).call();
|
compiler.getTask(null, null, null, options, null, beforeFiles).call();
|
||||||
byte[] originalHash = Files.readAllBytes(apiHash);
|
byte[] originalApiHash = Files.readAllBytes(apiHash);
|
||||||
|
byte[] originalTreeHash = Files.readAllBytes(treeHash);
|
||||||
List<TestJavaFileObject> afterFiles =
|
List<TestJavaFileObject> afterFiles =
|
||||||
Arrays.asList(new TestJavaFileObject("module-info", codeAfter),
|
Arrays.asList(new TestJavaFileObject("module-info", codeAfter),
|
||||||
new TestJavaFileObject("test.Test1", "package test; public interface Test1 {}"),
|
new TestJavaFileObject("test.Test1", "package test; public interface Test1 {}"),
|
||||||
@@ -287,10 +390,17 @@ public class DependTest {
|
|||||||
new TestJavaFileObject("test.TestImpl1", "package test; public class TestImpl1 implements Test1, Test2 {}"),
|
new TestJavaFileObject("test.TestImpl1", "package test; public class TestImpl1 implements Test1, Test2 {}"),
|
||||||
new TestJavaFileObject("test.TestImpl2", "package test; public class TestImpl2 implements Test1, Test2 {}"));
|
new TestJavaFileObject("test.TestImpl2", "package test; public class TestImpl2 implements Test1, Test2 {}"));
|
||||||
compiler.getTask(null, null, null, options, null, afterFiles).call();
|
compiler.getTask(null, null, null, options, null, afterFiles).call();
|
||||||
byte[] newHash = Files.readAllBytes(apiHash);
|
byte[] newApiHash = Files.readAllBytes(apiHash);
|
||||||
|
byte[] newTreeHash = Files.readAllBytes(treeHash);
|
||||||
|
|
||||||
if (Arrays.equals(originalHash, newHash) ^ !hashChangeExpected) {
|
if (Arrays.equals(originalApiHash, newApiHash) ^ !apiHashChangeExpected) {
|
||||||
throw new AssertionError("Unexpected hash state.");
|
throw new AssertionError("Unexpected API hash state.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Arrays.equals(originalTreeHash, newTreeHash) ^ !treeHashChangeExpected) {
|
||||||
|
throw new AssertionError("Unexpected Tree hash state, " +
|
||||||
|
"original: " + new String(originalTreeHash) +
|
||||||
|
", new: " + new String(newTreeHash));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,18 +30,9 @@ import java.io.DataOutputStream;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.BufferedInputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.util.BitSet;
|
|
||||||
import java.util.StringTokenizer;
|
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.zip.DeflaterOutputStream;
|
|
||||||
import java.util.zip.Deflater;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The representation of an SGML DTD. This is produced by the DTDParser.
|
* The representation of an SGML DTD. This is produced by the DTDParser.
|
||||||
@@ -58,8 +49,7 @@ import java.net.URL;
|
|||||||
* @author Arthur van Hoff
|
* @author Arthur van Hoff
|
||||||
* @author Guy Abossolo Foh
|
* @author Guy Abossolo Foh
|
||||||
*/
|
*/
|
||||||
public
|
public class DTDBuilder extends DTD {
|
||||||
class DTDBuilder extends DTD {
|
|
||||||
|
|
||||||
static PublicMapping mapping = null;
|
static PublicMapping mapping = null;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -919,8 +919,6 @@ class DTDParser implements DTDConstants {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
error("exception", e.getClass().getName(), e.getMessage());
|
error("exception", e.getClass().getName(), e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (ThreadDeath e) {
|
|
||||||
error("terminated");
|
|
||||||
}
|
}
|
||||||
return (nerrors > 0) ? null : dtd;
|
return (nerrors > 0) ? null : dtd;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -94,25 +94,20 @@ public class GenerateBreakIteratorData {
|
|||||||
rules = (ResourceBundle) Class.forName(
|
rules = (ResourceBundle) Class.forName(
|
||||||
localizedBundleName("sun.text.resources", "BreakIteratorRules")).getDeclaredConstructor().newInstance();
|
localizedBundleName("sun.text.resources", "BreakIteratorRules")).getDeclaredConstructor().newInstance();
|
||||||
|
|
||||||
if (info.containsKey("CharacterData")) {
|
|
||||||
generateDataFile(info.getString("CharacterData"),
|
|
||||||
rules.getString("CharacterBreakRules"),
|
|
||||||
classNames[0]);
|
|
||||||
}
|
|
||||||
if (info.containsKey("WordData")) {
|
if (info.containsKey("WordData")) {
|
||||||
generateDataFile(info.getString("WordData"),
|
generateDataFile(info.getString("WordData"),
|
||||||
rules.getString("WordBreakRules"),
|
rules.getString("WordBreakRules"),
|
||||||
classNames[1]);
|
classNames[0]);
|
||||||
}
|
}
|
||||||
if (info.containsKey("LineData")) {
|
if (info.containsKey("LineData")) {
|
||||||
generateDataFile(info.getString("LineData"),
|
generateDataFile(info.getString("LineData"),
|
||||||
rules.getString("LineBreakRules"),
|
rules.getString("LineBreakRules"),
|
||||||
classNames[2]);
|
classNames[1]);
|
||||||
}
|
}
|
||||||
if (info.containsKey("SentenceData")) {
|
if (info.containsKey("SentenceData")) {
|
||||||
generateDataFile(info.getString("SentenceData"),
|
generateDataFile(info.getString("SentenceData"),
|
||||||
rules.getString("SentenceBreakRules"),
|
rules.getString("SentenceBreakRules"),
|
||||||
classNames[3]);
|
classNames[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -56,7 +56,7 @@ public class Incubating implements Taglet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static final String MESSAGE =
|
private static final String MESSAGE =
|
||||||
"<BR><b><a href=\"http://openjdk.java.net/jeps/11\">Incubating Feature.</a>"
|
"<BR><b><a href=\"https://openjdk.org/jeps/11\">Incubating Feature.</a>"
|
||||||
+ " Will be removed in a future release.</b>";
|
+ " Will be removed in a future release.</b>";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ ifeq ($(call isTargetOs, macosx aix linux), true)
|
|||||||
SRC := $(TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
|
SRC := $(TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
|
||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
CFLAGS := $(CFLAGS_JDKEXE) -I$(TOPDIR)/src/$(MODULE)/unix/native/libjava, \
|
CFLAGS := $(CFLAGS_JDKEXE) -I$(TOPDIR)/src/$(MODULE)/unix/native/libjava, \
|
||||||
EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o, \
|
EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc$(OBJ_SUFFIX), \
|
||||||
LDFLAGS := $(LDFLAGS_JDKEXE), \
|
LDFLAGS := $(LDFLAGS_JDKEXE), \
|
||||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
|
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -43,10 +43,13 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
|
|||||||
NAME := net, \
|
NAME := net, \
|
||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
CFLAGS := $(CFLAGS_JDKLIB), \
|
CFLAGS := $(CFLAGS_JDKLIB), \
|
||||||
DISABLED_WARNINGS_gcc := format-nonliteral unused-function, \
|
DISABLED_WARNINGS_gcc_net_util_md.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_clang := parentheses-equality constant-logical-operand \
|
DISABLED_WARNINGS_gcc_NetworkInterface.c := unused-function, \
|
||||||
format-nonliteral undef, \
|
DISABLED_WARNINGS_clang_net_util_md.c := format-nonliteral, \
|
||||||
DISABLED_WARNINGS_microsoft := 4244 4047 4133 4996, \
|
DISABLED_WARNINGS_microsoft_InetAddress.c := 4244, \
|
||||||
|
DISABLED_WARNINGS_microsoft_NetworkInterface.c := 4133, \
|
||||||
|
DISABLED_WARNINGS_microsoft_NetworkInterface_winXP.c := 4133, \
|
||||||
|
DISABLED_WARNINGS_microsoft_ResolverConfigurationImpl.c := 4996, \
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
LDFLAGS_windows := -delayload:secur32.dll -delayload:iphlpapi.dll, \
|
LDFLAGS_windows := -delayload:secur32.dll -delayload:iphlpapi.dll, \
|
||||||
@@ -70,8 +73,6 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBNIO, \
|
|||||||
OPTIMIZATION := HIGH, \
|
OPTIMIZATION := HIGH, \
|
||||||
WARNINGS_AS_ERRORS_xlc := false, \
|
WARNINGS_AS_ERRORS_xlc := false, \
|
||||||
CFLAGS := $(CFLAGS_JDKLIB), \
|
CFLAGS := $(CFLAGS_JDKLIB), \
|
||||||
DISABLED_WARNINGS_gcc := undef, \
|
|
||||||
DISABLED_WARNINGS_clang := undef, \
|
|
||||||
EXTRA_HEADER_DIRS := \
|
EXTRA_HEADER_DIRS := \
|
||||||
libnio/ch \
|
libnio/ch \
|
||||||
libnio/fs \
|
libnio/fs \
|
||||||
@@ -101,8 +102,7 @@ ifeq ($(call isTargetOs, macosx), true)
|
|||||||
NAME := osxsecurity, \
|
NAME := osxsecurity, \
|
||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
CFLAGS := $(CFLAGS_JDKLIB), \
|
CFLAGS := $(CFLAGS_JDKLIB), \
|
||||||
DISABLED_WARNINGS_clang := deprecated-declarations \
|
DISABLED_WARNINGS_clang_KeystoreImpl.m := deprecated-declarations, \
|
||||||
missing-method-return-type, \
|
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
|
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
@@ -130,7 +130,6 @@ ifeq ($(call isTargetOsType, unix), true)
|
|||||||
NAME := jsig, \
|
NAME := jsig, \
|
||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJSIG_CFLAGS), \
|
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJSIG_CFLAGS), \
|
||||||
DISABLED_WARNINGS_gcc := undef, \
|
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
LIBS_linux := $(LIBDL), \
|
LIBS_linux := $(LIBDL), \
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ GENDATA_TZDB :=
|
|||||||
#
|
#
|
||||||
TZDATA_DIR := $(MODULE_SRC)/share/data/tzdata
|
TZDATA_DIR := $(MODULE_SRC)/share/data/tzdata
|
||||||
TZDATA_TZFILE := africa antarctica asia australasia europe northamerica southamerica backward etcetera gmt jdk11_backward
|
TZDATA_TZFILE := africa antarctica asia australasia europe northamerica southamerica backward etcetera gmt jdk11_backward
|
||||||
TZDATA_TZFILES := $(addprefix $(TZDATA_DIR)/,$(TZDATA_TZFILE))
|
TZDATA_TZFILES := $(wildcard $(TZDATA_DIR)/*)
|
||||||
|
|
||||||
GENDATA_TZDB_DAT := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/tzdb.dat
|
GENDATA_TZDB_DAT := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/tzdb.dat
|
||||||
|
|
||||||
|
|||||||
@@ -24,12 +24,12 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rules to create $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/util/regex/EmojiData.java
|
# Rules to create $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/util/regex/EmojiData.java
|
||||||
#
|
#
|
||||||
|
|
||||||
GENSRC_EMOJIDATA := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/util/regex/EmojiData.java
|
GENSRC_EMOJIDATA := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/util/regex/EmojiData.java
|
||||||
|
|
||||||
EMOJIDATATEMP = $(MODULE_SRC)/share/classes/java/util/regex/EmojiData.java.template
|
EMOJIDATATEMP = $(MODULE_SRC)/share/classes/jdk/internal/util/regex/EmojiData.java.template
|
||||||
UNICODEDATA = $(MODULE_SRC)/share/data/unicodedata
|
UNICODEDATA = $(MODULE_SRC)/share/data/unicodedata
|
||||||
|
|
||||||
$(GENSRC_EMOJIDATA): $(BUILD_TOOLS_JDK) $(EMOJIDATATEMP) $(UNICODEDATA)/emoji/emoji-data.txt
|
$(GENSRC_EMOJIDATA): $(BUILD_TOOLS_JDK) $(EMOJIDATATEMP) $(UNICODEDATA)/emoji/emoji-data.txt
|
||||||
|
|||||||
@@ -48,9 +48,14 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
|
|||||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
|
CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
|
||||||
CFLAGS_windows_debug := -DLOGGING, \
|
CFLAGS_windows_debug := -DLOGGING, \
|
||||||
CFLAGS_aix := -qfloat=nomaf, \
|
CFLAGS_aix := -qfloat=nomaf, \
|
||||||
DISABLED_WARNINGS_gcc := sign-compare misleading-indentation array-bounds, \
|
DISABLED_WARNINGS_gcc := sign-compare, \
|
||||||
DISABLED_WARNINGS_clang := sign-compare misleading-indentation, \
|
DISABLED_WARNINGS_gcc_k_rem_pio2.c := maybe-uninitialized, \
|
||||||
DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
|
DISABLED_WARNINGS_clang := sign-compare, \
|
||||||
|
DISABLED_WARNINGS_microsoft := 4146, \
|
||||||
|
DISABLED_WARNINGS_microsoft_e_exp.c := 4244, \
|
||||||
|
DISABLED_WARNINGS_microsoft_s_ceil.c := 4018, \
|
||||||
|
DISABLED_WARNINGS_microsoft_s_expm1.c := 4244, \
|
||||||
|
DISABLED_WARNINGS_microsoft_s_floor.c := 4018, \
|
||||||
ARFLAGS := $(ARFLAGS), \
|
ARFLAGS := $(ARFLAGS), \
|
||||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
||||||
))
|
))
|
||||||
@@ -93,7 +98,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJAVA, \
|
|||||||
jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \
|
jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \
|
||||||
EXTRA_HEADER_DIRS := libfdlibm, \
|
EXTRA_HEADER_DIRS := libfdlibm, \
|
||||||
WARNINGS_AS_ERRORS_xlc := false, \
|
WARNINGS_AS_ERRORS_xlc := false, \
|
||||||
DISABLED_WARNINGS_gcc := unused-result unused-function, \
|
DISABLED_WARNINGS_gcc_ProcessImpl_md.c := unused-result, \
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \
|
LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \
|
||||||
@@ -134,8 +139,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBZIP, \
|
|||||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||||
$(LIBZ_CFLAGS), \
|
$(LIBZ_CFLAGS), \
|
||||||
CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
|
CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
|
||||||
DISABLED_WARNINGS_gcc := unused-function implicit-fallthrough, \
|
DISABLED_WARNINGS_gcc_zip_util.c := unused-function, \
|
||||||
DISABLED_WARNINGS_clang := format-nonliteral, \
|
DISABLED_WARNINGS_clang_gzwrite.c := format-nonliteral, \
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
LIBS_unix := -ljvm -ljava $(LIBZ_LIBS), \
|
LIBS_unix := -ljvm -ljava $(LIBZ_LIBS), \
|
||||||
@@ -172,8 +177,10 @@ ifeq ($(call isTargetOs, macosx), true)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
# Supply the name of the C runtime lib.
|
# Supply the name of the C runtime libs.
|
||||||
|
ifneq ($(MSVCR_DLL), )
|
||||||
LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"'
|
LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"'
|
||||||
|
endif
|
||||||
ifneq ($(VCRUNTIME_1_DLL), )
|
ifneq ($(VCRUNTIME_1_DLL), )
|
||||||
LIBJLI_CFLAGS += -DVCRUNTIME_1_DLL_NAME='"$(notdir $(VCRUNTIME_1_DLL))"'
|
LIBJLI_CFLAGS += -DVCRUNTIME_1_DLL_NAME='"$(notdir $(VCRUNTIME_1_DLL))"'
|
||||||
endif
|
endif
|
||||||
@@ -203,8 +210,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \
|
|||||||
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
|
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
|
||||||
OPTIMIZATION := HIGH, \
|
OPTIMIZATION := HIGH, \
|
||||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
|
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
|
||||||
DISABLED_WARNINGS_gcc := unused-function implicit-fallthrough, \
|
DISABLED_WARNINGS_gcc := unused-function, \
|
||||||
DISABLED_WARNINGS_clang := sometimes-uninitialized format-nonliteral, \
|
DISABLED_WARNINGS_clang := format-nonliteral, \
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
LIBS_unix := $(LIBZ_LIBS), \
|
LIBS_unix := $(LIBZ_LIBS), \
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_java += lossy-conversions
|
||||||
DOCLINT += -Xdoclint:all/protected \
|
DOCLINT += -Xdoclint:all/protected \
|
||||||
'-Xdoclint/package:java.*,javax.*'
|
'-Xdoclint/package:java.*,javax.*'
|
||||||
COPY += .gif .png .wav .txt .xml .css .pf
|
COPY += .gif .png .wav .txt .xml .css .pf
|
||||||
|
|||||||
@@ -103,7 +103,6 @@ LIBAWT_EXTRA_HEADER_DIRS := \
|
|||||||
libmlib_image \
|
libmlib_image \
|
||||||
include \
|
include \
|
||||||
java.base:libjava \
|
java.base:libjava \
|
||||||
java.base:include \
|
|
||||||
#
|
#
|
||||||
|
|
||||||
LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES $(X_CFLAGS)
|
LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES $(X_CFLAGS)
|
||||||
@@ -191,7 +190,7 @@ ifeq ($(call isTargetOs, windows macosx), false)
|
|||||||
common/font \
|
common/font \
|
||||||
#
|
#
|
||||||
|
|
||||||
LIBAWT_XAWT_EXCLUDES := medialib debug
|
LIBAWT_XAWT_EXCLUDES := medialib debug wl vulkan
|
||||||
|
|
||||||
LIBAWT_XAWT_EXTRA_HEADER_DIRS := \
|
LIBAWT_XAWT_EXTRA_HEADER_DIRS := \
|
||||||
$(LIBAWT_DEFAULT_HEADER_DIRS) \
|
$(LIBAWT_DEFAULT_HEADER_DIRS) \
|
||||||
@@ -263,6 +262,89 @@ endif
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, windows macosx), false)
|
||||||
|
ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||||
|
|
||||||
|
LIBAWT_WLAWT_EXTRA_SRC := \
|
||||||
|
common/awt \
|
||||||
|
common/java2d \
|
||||||
|
common/font \
|
||||||
|
#
|
||||||
|
|
||||||
|
LIBAWT_WLAWT_EXCLUDES := medialib debug opengl x11
|
||||||
|
LIBAWT_WLAWT_EXCLUDE_FILES := common/awt/X11Color.c common/awt/awt_Font.c
|
||||||
|
|
||||||
|
LIBAWT_WLAWT_EXTRA_HEADER_DIRS := \
|
||||||
|
$(LIBAWT_DEFAULT_HEADER_DIRS) \
|
||||||
|
libawt_wlawt/awt \
|
||||||
|
include \
|
||||||
|
common/awt/debug \
|
||||||
|
common/awt/systemscale \
|
||||||
|
common/font \
|
||||||
|
common/java2d/wl \
|
||||||
|
common/java2d/vulkan \
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable 'wakefield' extension for java.awt.Robot support
|
||||||
|
WAKEFIELD_ROBOT_CFLAGS=-DWAKEFIELD_ROBOT
|
||||||
|
|
||||||
|
LIBAWT_WLAWT_CFLAGS += -DWLAWT \
|
||||||
|
$(WAKEFIELD_ROBOT_CFLAGS) \
|
||||||
|
$(FONTCONFIG_CFLAGS) \
|
||||||
|
$(CUPS_CFLAGS)
|
||||||
|
|
||||||
|
LIBAWT_WLAWT_LIBS := $(LIBM) -lawt $(WAYLAND_LIBS) $(LIBDL) -ljava -ljvm -lrt
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, linux), true)
|
||||||
|
LIBAWT_WLAWT_LIBS += -lpthread
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||||
|
# Turn off all warnings for the following files since they contain warnings
|
||||||
|
# that cannot be turned of individually.
|
||||||
|
# redefining a macro
|
||||||
|
BUILD_LIBAWT_WLAWT_awt_Font.c_CFLAGS := -w
|
||||||
|
# initializing a declared 'extern'
|
||||||
|
BUILD_LIBAWT_WLAWT_debug_mem.c_CFLAGS := -w
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(eval $(call SetupJdkLibrary, BUILD_LIBAWT_WLAWT, \
|
||||||
|
NAME := awt_wlawt, \
|
||||||
|
EXCLUDE_FILES := $(LIBAWT_WLAWT_EXCLUDE_FILES), \
|
||||||
|
EXTRA_SRC := $(LIBAWT_WLAWT_EXTRA_SRC), \
|
||||||
|
EXTRA_HEADER_DIRS := $(LIBAWT_WLAWT_EXTRA_HEADER_DIRS), \
|
||||||
|
EXCLUDES := $(LIBAWT_WLAWT_EXCLUDES), \
|
||||||
|
OPTIMIZATION := LOW, \
|
||||||
|
CXXFLAGS := $(CXXFLAGS_JDKLIB), \
|
||||||
|
CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_WLAWT_CFLAGS), \
|
||||||
|
WARNINGS_AS_ERRORS_xlc := false, \
|
||||||
|
DISABLED_WARNINGS_C_gcc := type-limits pointer-to-int-cast \
|
||||||
|
unused-result maybe-uninitialized format \
|
||||||
|
format-security int-to-pointer-cast parentheses \
|
||||||
|
implicit-fallthrough undef unused-function, \
|
||||||
|
DISABLED_WARNINGS_CXX_gcc := type-limits \
|
||||||
|
unused-result maybe-uninitialized format \
|
||||||
|
format-security parentheses \
|
||||||
|
implicit-fallthrough undef unused-function error, \
|
||||||
|
DISABLED_WARNINGS_clang := parentheses format undef \
|
||||||
|
logical-op-parentheses format-nonliteral int-conversion, \
|
||||||
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
|
$(call SET_SHARED_LIBRARY_ORIGIN) \
|
||||||
|
-L$(INSTALL_LIBRARIES_HERE), \
|
||||||
|
LIBS := $(LIBAWT_WLAWT_LIBS), \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(BUILD_LIBAWT_WLAWT): $(call FindLib, java.base, java)
|
||||||
|
|
||||||
|
$(BUILD_LIBAWT_WLAWT): $(BUILD_LIBAWT)
|
||||||
|
|
||||||
|
TARGETS += $(BUILD_LIBAWT_WLAWT)
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
# The fast floor code loses precision.
|
# The fast floor code loses precision.
|
||||||
LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR
|
LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR
|
||||||
|
|
||||||
@@ -368,6 +450,7 @@ ifeq ($(call isTargetOs, windows macosx), false)
|
|||||||
common/awt/debug \
|
common/awt/debug \
|
||||||
common/font \
|
common/font \
|
||||||
common/java2d/opengl \
|
common/java2d/opengl \
|
||||||
|
common/java2d/vulkan \
|
||||||
#
|
#
|
||||||
|
|
||||||
LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \
|
LIBAWT_HEADLESS_CFLAGS := $(CUPS_CFLAGS) $(FONTCONFIG_CFLAGS) $(X_CFLAGS) \
|
||||||
@@ -380,8 +463,13 @@ ifeq ($(call isTargetOs, windows macosx), false)
|
|||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||||
$(LIBAWT_HEADLESS_CFLAGS), \
|
$(LIBAWT_HEADLESS_CFLAGS), \
|
||||||
|
CXXFLAGS := $(CXXFLAGS_JDKLIB), \
|
||||||
EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \
|
EXTRA_HEADER_DIRS := $(LIBAWT_HEADLESS_EXTRA_HEADER_DIRS), \
|
||||||
DISABLED_WARNINGS_gcc := unused-function, \
|
DISABLED_WARNINGS_gcc := unused-function, \
|
||||||
|
DISABLED_WARNINGS_CXX_gcc := type-limits \
|
||||||
|
unused-result maybe-uninitialized format \
|
||||||
|
format-security parentheses \
|
||||||
|
implicit-fallthrough undef unused-function error, \
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
|
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
|
||||||
@@ -493,13 +581,9 @@ ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
|
|
||||||
X11TextRenderer.c
|
|
||||||
LIBFONTMANAGER_OPTIMIZATION := HIGHEST
|
LIBFONTMANAGER_OPTIMIZATION := HIGHEST
|
||||||
else ifeq ($(call isTargetOs, macosx), true)
|
else ifeq ($(call isTargetOs, macosx), true)
|
||||||
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
|
LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
|
||||||
X11TextRenderer.c \
|
|
||||||
fontpath.c \
|
|
||||||
lcdglyph.c
|
lcdglyph.c
|
||||||
else
|
else
|
||||||
LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
|
LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \
|
||||||
@@ -524,7 +608,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
|
|||||||
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
|
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
|
||||||
EXTRA_SRC := $(LIBFONTMANAGER_EXTRA_SRC), \
|
EXTRA_SRC := $(LIBFONTMANAGER_EXTRA_SRC), \
|
||||||
WARNINGS_AS_ERRORS_xlc := false, \
|
WARNINGS_AS_ERRORS_xlc := false, \
|
||||||
DISABLED_WARNINGS_gcc := $(HARFBUZZ_DISABLED_WARNINGS_gcc), \
|
DISABLED_WARNINGS_gcc := $(HARFBUZZ_DISABLED_WARNINGS_gcc) unused-result, \
|
||||||
DISABLED_WARNINGS_CXX_gcc := $(HARFBUZZ_DISABLED_WARNINGS_CXX_gcc), \
|
DISABLED_WARNINGS_CXX_gcc := $(HARFBUZZ_DISABLED_WARNINGS_CXX_gcc), \
|
||||||
DISABLED_WARNINGS_clang := $(HARFBUZZ_DISABLED_WARNINGS_clang), \
|
DISABLED_WARNINGS_clang := $(HARFBUZZ_DISABLED_WARNINGS_clang), \
|
||||||
DISABLED_WARNINGS_microsoft := $(HARFBUZZ_DISABLED_WARNINGS_microsoft), \
|
DISABLED_WARNINGS_microsoft := $(HARFBUZZ_DISABLED_WARNINGS_microsoft), \
|
||||||
@@ -554,6 +638,51 @@ TARGETS += $(BUILD_LIBFONTMANAGER)
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, windows macosx), false)
|
||||||
|
ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||||
|
|
||||||
|
LIBFONTMANAGER_XAWT_EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES)
|
||||||
|
LIBFONTMANAGER_XAWT_CFLAGS := $(LIBFONTMANAGER_CFLAGS)
|
||||||
|
LIBFONTMANAGER_XAWT_OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION)
|
||||||
|
LIBFONTMANAGER_XAWT_EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS) \
|
||||||
|
libfontmanager
|
||||||
|
LIBFONTMANAGER_XAWT_EXTRA_SRC :=
|
||||||
|
|
||||||
|
$(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER_XAWT, \
|
||||||
|
NAME := fontmanager_xawt, \
|
||||||
|
EXCLUDE_FILES := $(LIBFONTMANAGER_XAWT_EXCLUDE_FILES) \
|
||||||
|
AccelGlyphCache.c, \
|
||||||
|
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
|
||||||
|
CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_XAWT_CFLAGS), \
|
||||||
|
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_XAWT_CFLAGS), \
|
||||||
|
OPTIMIZATION := $(LIBFONTMANAGER_XAWT_OPTIMIZATION), \
|
||||||
|
CFLAGS_windows = -DCC_NOEX, \
|
||||||
|
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_XAWT_EXTRA_HEADER_DIRS), \
|
||||||
|
EXTRA_SRC := $(LIBFONTMANAGER_XAWT_EXTRA_SRC), \
|
||||||
|
WARNINGS_AS_ERRORS_xlc := false, \
|
||||||
|
DISABLED_WARNINGS_gcc := $(HARFBUZZ_DISABLED_WARNINGS_gcc), \
|
||||||
|
DISABLED_WARNINGS_CXX_gcc := $(HARFBUZZ_DISABLED_WARNINGS_CXX_gcc), \
|
||||||
|
DISABLED_WARNINGS_clang := $(HARFBUZZ_DISABLED_WARNINGS_clang), \
|
||||||
|
DISABLED_WARNINGS_microsoft := $(HARFBUZZ_DISABLED_WARNINGS_microsoft), \
|
||||||
|
LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
|
||||||
|
$(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
|
||||||
|
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||||
|
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
|
||||||
|
LDFLAGS_aix := -Wl$(COMMA)-berok, \
|
||||||
|
LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
|
||||||
|
LIBS_unix := -lfontmanager -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(BUILD_LIBFONTMANAGER_XAWT): $(BUILD_LIBFONTMANAGER)
|
||||||
|
$(BUILD_LIBFONTMANAGER_XAWT): $(BUILD_LIBAWT_XAWT)
|
||||||
|
|
||||||
|
TARGETS += $(BUILD_LIBFONTMANAGER_XAWT)
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
|
||||||
LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE
|
LIBJAWT_CFLAGS := -EHsc -DUNICODE -D_UNICODE
|
||||||
@@ -565,7 +694,6 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
libawt/java2d \
|
libawt/java2d \
|
||||||
libawt/java2d/windows \
|
libawt/java2d/windows \
|
||||||
libawt/windows \
|
libawt/windows \
|
||||||
java.base:include \
|
|
||||||
java.base:libjava \
|
java.base:libjava \
|
||||||
#
|
#
|
||||||
|
|
||||||
@@ -732,7 +860,6 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
|||||||
|
|
||||||
LIBSPLASHSCREEN_HEADER_DIRS += \
|
LIBSPLASHSCREEN_HEADER_DIRS += \
|
||||||
libosxapp \
|
libosxapp \
|
||||||
java.base:include \
|
|
||||||
java.base:libjava \
|
java.base:libjava \
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -40,6 +40,19 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJ2GSS, \
|
|||||||
|
|
||||||
TARGETS += $(BUILD_LIBJ2GSS)
|
TARGETS += $(BUILD_LIBJ2GSS)
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
$(eval $(call SetupJdkLibrary, BUILD_LIBSSPI_BRIDGE, \
|
||||||
|
NAME := sspi_bridge, \
|
||||||
|
OPTIMIZATION := LOW, \
|
||||||
|
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||||
|
-I$(TOPDIR)/src/java.security.jgss/share/native/libj2gss, \
|
||||||
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
|
$(call SET_SHARED_LIBRARY_ORIGIN) \
|
||||||
|
))
|
||||||
|
|
||||||
|
TARGETS += $(BUILD_LIBSSPI_BRIDGE)
|
||||||
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
ifneq ($(BUILD_CRYPTO), false)
|
ifneq ($(BUILD_CRYPTO), false)
|
||||||
@@ -57,17 +70,6 @@ ifneq ($(BUILD_CRYPTO), false)
|
|||||||
))
|
))
|
||||||
|
|
||||||
TARGETS += $(BUILD_LIBW2K_LSA_AUTH)
|
TARGETS += $(BUILD_LIBW2K_LSA_AUTH)
|
||||||
|
|
||||||
$(eval $(call SetupJdkLibrary, BUILD_LIBSSPI_BRIDGE, \
|
|
||||||
NAME := sspi_bridge, \
|
|
||||||
OPTIMIZATION := LOW, \
|
|
||||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
|
||||||
-I$(TOPDIR)/src/java.security.jgss/share/native/libj2gss, \
|
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
|
||||||
$(call SET_SHARED_LIBRARY_ORIGIN) \
|
|
||||||
))
|
|
||||||
|
|
||||||
TARGETS += $(BUILD_LIBSSPI_BRIDGE)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(call isTargetOs, macosx), true)
|
ifeq ($(call isTargetOs, macosx), true)
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
DISABLED_WARNINGS_java += lossy-conversions
|
||||||
DOCLINT += -Xdoclint:all/protected \
|
DOCLINT += -Xdoclint:all/protected \
|
||||||
'-Xdoclint/package:$(call CommaList, javax.xml.catalog javax.xml.datatype \
|
'-Xdoclint/package:$(call CommaList, javax.xml.catalog javax.xml.datatype \
|
||||||
javax.xml.transform javax.xml.validation javax.xml.xpath)'
|
javax.xml.transform javax.xml.validation javax.xml.xpath)'
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
-DACCESSBRIDGE_ARCH_$2, \
|
-DACCESSBRIDGE_ARCH_$2, \
|
||||||
EXTRA_HEADER_DIRS := \
|
EXTRA_HEADER_DIRS := \
|
||||||
include/bridge \
|
include/bridge \
|
||||||
java.base:include \
|
|
||||||
java.desktop:include, \
|
java.desktop:include, \
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB), \
|
LDFLAGS := $(LDFLAGS_JDKLIB), \
|
||||||
LIBS := kernel32.lib user32.lib gdi32.lib \
|
LIBS := kernel32.lib user32.lib gdi32.lib \
|
||||||
@@ -72,8 +71,7 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||||
-DACCESSBRIDGE_ARCH_$2, \
|
-DACCESSBRIDGE_ARCH_$2, \
|
||||||
EXTRA_HEADER_DIRS := \
|
EXTRA_HEADER_DIRS := \
|
||||||
include/bridge \
|
include/bridge, \
|
||||||
java.base:include, \
|
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||||
-def:$(ACCESSIBILITY_SRCDIR)/libwindowsaccessbridge/WinAccessBridge.DEF, \
|
-def:$(ACCESSIBILITY_SRCDIR)/libwindowsaccessbridge/WinAccessBridge.DEF, \
|
||||||
LIBS := kernel32.lib user32.lib gdi32.lib \
|
LIBS := kernel32.lib user32.lib gdi32.lib \
|
||||||
|
|||||||
@@ -29,16 +29,10 @@ include LibCommon.gmk
|
|||||||
|
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
|
||||||
CFLAGS_LIBDT_SHMEM := $(CFLAGS_JDKLIB)
|
|
||||||
|
|
||||||
ifneq ($(HOTSPOT_BUILD_TIME), )
|
|
||||||
CFLAGS_LIBDT_SHMEM += -DSHMEM_BUILD_TIME='"$(HOTSPOT_BUILD_TIME)"'
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(eval $(call SetupJdkLibrary, BUILD_LIBDT_SHMEM, \
|
$(eval $(call SetupJdkLibrary, BUILD_LIBDT_SHMEM, \
|
||||||
NAME := dt_shmem, \
|
NAME := dt_shmem, \
|
||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
CFLAGS := $(CFLAGS_LIBDT_SHMEM), \
|
CFLAGS := $(CFLAGS_JDKLIB), \
|
||||||
EXTRA_HEADER_DIRS := \
|
EXTRA_HEADER_DIRS := \
|
||||||
jdk.jdwp.agent:include \
|
jdk.jdwp.agent:include \
|
||||||
jdk.jdwp.agent:libjdwp/export, \
|
jdk.jdwp.agent:libjdwp/export, \
|
||||||
|
|||||||
@@ -129,6 +129,10 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
|
|
||||||
JPACKAGE_TARGETS += $(BUILD_LIB_JPACKAGE)
|
JPACKAGE_TARGETS += $(BUILD_LIB_JPACKAGE)
|
||||||
|
|
||||||
|
JPACKAGE_WIXHELPER_SRC := \
|
||||||
|
$(call FindSrcDirsForComponent, jdk.jpackage, libwixhelper) \
|
||||||
|
$(call FindSrcDirsForComponent, jdk.jpackage, common)
|
||||||
|
|
||||||
# Build Wix custom action helper
|
# Build Wix custom action helper
|
||||||
# Output library in resources dir, and symbols in the object dir
|
# Output library in resources dir, and symbols in the object dir
|
||||||
$(eval $(call SetupJdkLibrary, BUILD_LIB_WIXHELPER, \
|
$(eval $(call SetupJdkLibrary, BUILD_LIB_WIXHELPER, \
|
||||||
@@ -136,11 +140,12 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
OUTPUT_DIR := $(JPACKAGE_OUTPUT_DIR), \
|
OUTPUT_DIR := $(JPACKAGE_OUTPUT_DIR), \
|
||||||
SYMBOLS_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libwixhelper, \
|
SYMBOLS_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libwixhelper, \
|
||||||
OPTIMIZATION := LOW, \
|
OPTIMIZATION := LOW, \
|
||||||
|
SRC := $(JPACKAGE_WIXHELPER_SRC), \
|
||||||
CXXFLAGS := $(call JpackageWithStaticCrt, $(CXXFLAGS_JDKLIB)) \
|
CXXFLAGS := $(call JpackageWithStaticCrt, $(CXXFLAGS_JDKLIB)) \
|
||||||
$(JPACKAGE_CXXFLAGS_windows), \
|
$(addprefix -I, $(JPACKAGE_WIXHELPER_SRC)) $(JPACKAGE_CXXFLAGS_windows), \
|
||||||
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \
|
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \
|
||||||
LIBS := $(LIBCXX), \
|
LIBS := $(LIBCXX), \
|
||||||
LIBS_windows := msi.lib Shlwapi.lib User32.lib, \
|
LIBS_windows := User32.lib, \
|
||||||
))
|
))
|
||||||
|
|
||||||
JPACKAGE_TARGETS += $(BUILD_LIB_WIXHELPER)
|
JPACKAGE_TARGETS += $(BUILD_LIB_WIXHELPER)
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
|||||||
LDD_CMD="$OTOOL -L"
|
LDD_CMD="$OTOOL -L"
|
||||||
DIS_CMD="$OTOOL -v -V -t"
|
DIS_CMD="$OTOOL -v -V -t"
|
||||||
STAT_PRINT_SIZE="-f %z"
|
STAT_PRINT_SIZE="-f %z"
|
||||||
|
STRIP="$STRIP -no_code_signature_warning"
|
||||||
elif [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
elif [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
||||||
FULLDUMP_CMD="$DUMPBIN -all"
|
FULLDUMP_CMD="$DUMPBIN -all"
|
||||||
LDD_CMD="$DUMPBIN -dependents"
|
LDD_CMD="$DUMPBIN -dependents"
|
||||||
@@ -674,14 +675,22 @@ compare_bin_file() {
|
|||||||
ORIG_THIS_FILE="$THIS_FILE"
|
ORIG_THIS_FILE="$THIS_FILE"
|
||||||
ORIG_OTHER_FILE="$OTHER_FILE"
|
ORIG_OTHER_FILE="$OTHER_FILE"
|
||||||
|
|
||||||
if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then
|
if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]] \
|
||||||
|
|| [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||||
THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME
|
THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME
|
||||||
OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME
|
OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME
|
||||||
$MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other
|
$MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other
|
||||||
$CP $THIS_FILE $THIS_STRIPPED_FILE
|
$CP $THIS_FILE $THIS_STRIPPED_FILE
|
||||||
$CP $OTHER_FILE $OTHER_STRIPPED_FILE
|
$CP $OTHER_FILE $OTHER_STRIPPED_FILE
|
||||||
|
if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then
|
||||||
$STRIP $THIS_STRIPPED_FILE
|
$STRIP $THIS_STRIPPED_FILE
|
||||||
$STRIP $OTHER_STRIPPED_FILE
|
$STRIP $OTHER_STRIPPED_FILE
|
||||||
|
fi
|
||||||
|
# On macosx, always remove any signature before comparing
|
||||||
|
if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||||
|
$CODESIGN --remove-signature $THIS_STRIPPED_FILE
|
||||||
|
$CODESIGN --remove-signature $OTHER_STRIPPED_FILE
|
||||||
|
fi
|
||||||
THIS_FILE="$THIS_STRIPPED_FILE"
|
THIS_FILE="$THIS_STRIPPED_FILE"
|
||||||
OTHER_FILE="$OTHER_STRIPPED_FILE"
|
OTHER_FILE="$OTHER_STRIPPED_FILE"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -36,7 +36,7 @@ fi
|
|||||||
# Diff exceptions
|
# Diff exceptions
|
||||||
|
|
||||||
if [ "$OPENJDK_TARGET_OS" = "linux" ]; then
|
if [ "$OPENJDK_TARGET_OS" = "linux" ]; then
|
||||||
if [ "$HOTSPOT_BUILD_TIME" = "" -o "$USE_PRECOMPILED_HEADER" = "true" ]; then
|
if [ "$USE_PRECOMPILED_HEADER" = "true" ]; then
|
||||||
ACCEPTED_BIN_DIFF="
|
ACCEPTED_BIN_DIFF="
|
||||||
./lib/server/libjvm.so
|
./lib/server/libjvm.so
|
||||||
./hotspot/gtest/server/libjvm.so
|
./hotspot/gtest/server/libjvm.so
|
||||||
|
|||||||
@@ -148,14 +148,13 @@ function import_path() {
|
|||||||
if [[ "$path" != "" ]]; then
|
if [[ "$path" != "" ]]; then
|
||||||
# Store current unix path
|
# Store current unix path
|
||||||
unixpath="$path"
|
unixpath="$path"
|
||||||
# Now turn it into a windows path
|
# If $unixpath does not exist, add .exe (needed on WSL)
|
||||||
winpath="$($PATHTOOL -w "$path" 2>/dev/null)"
|
if [[ ! -e "$unixpath" ]]; then
|
||||||
# If it fails, try again with an added .exe (needed on WSL)
|
|
||||||
if [[ $? -ne 0 ]]; then
|
|
||||||
unixpath="$unixpath.exe"
|
unixpath="$unixpath.exe"
|
||||||
winpath="$($PATHTOOL -w "$unixpath" 2>/dev/null)"
|
|
||||||
fi
|
fi
|
||||||
if [[ $? -eq 0 ]]; then
|
# Now turn it into a windows path
|
||||||
|
winpath="$($PATHTOOL -w "$unixpath" 2>/dev/null)"
|
||||||
|
if [[ $? -eq 0 && -e "$unixpath" ]]; then
|
||||||
if [[ ! "$winpath" =~ ^"$ENVROOT"\\.*$ ]] ; then
|
if [[ ! "$winpath" =~ ^"$ENVROOT"\\.*$ ]] ; then
|
||||||
# If it is not in envroot, it's a generic windows path
|
# If it is not in envroot, it's a generic windows path
|
||||||
if [[ ! $winpath =~ ^[-_.:\\a-zA-Z0-9]*$ ]] ; then
|
if [[ ! $winpath =~ ^[-_.:\\a-zA-Z0-9]*$ ]] ; then
|
||||||
@@ -353,6 +352,21 @@ function convert_path() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Treat $1 as name of a file containing paths. Convert those paths to Windows style,
|
||||||
|
# and output them to the file specified by $2.
|
||||||
|
# If the output file already exists, it is overwritten.
|
||||||
|
function convert_file() {
|
||||||
|
infile="$1"
|
||||||
|
outfile="$2"
|
||||||
|
if [[ -e $outfile ]] ; then
|
||||||
|
rm $outfile
|
||||||
|
fi
|
||||||
|
while read line; do
|
||||||
|
convert_path "$line"
|
||||||
|
echo "$result" >> $outfile
|
||||||
|
done < $infile
|
||||||
|
}
|
||||||
|
|
||||||
# Treat $1 as name of a file containing paths. Convert those paths to Windows style,
|
# Treat $1 as name of a file containing paths. Convert those paths to Windows style,
|
||||||
# in a new temporary file, and return a string "@<temp file>" pointing to that
|
# in a new temporary file, and return a string "@<temp file>" pointing to that
|
||||||
# new file.
|
# new file.
|
||||||
@@ -499,6 +513,8 @@ if [[ "$ACTION" == "import" ]] ; then
|
|||||||
elif [[ "$ACTION" == "print" ]] ; then
|
elif [[ "$ACTION" == "print" ]] ; then
|
||||||
print_command_line "$@"
|
print_command_line "$@"
|
||||||
echo "$result"
|
echo "$result"
|
||||||
|
elif [[ "$ACTION" == "convert" ]] ; then
|
||||||
|
convert_file "$@"
|
||||||
elif [[ "$ACTION" == "exec" ]] ; then
|
elif [[ "$ACTION" == "exec" ]] ; then
|
||||||
exec_command_line "$@"
|
exec_command_line "$@"
|
||||||
# Propagate exit code
|
# Propagate exit code
|
||||||
|
|||||||
@@ -874,9 +874,11 @@ BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exesigtest := -ljvm
|
|||||||
|
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
|
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
|
||||||
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c libTestJNI.c
|
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c libTestJNI.c libCompleteExit.c libTestPsig.c
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit := jvm.lib
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit := jvm.lib
|
||||||
|
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exedaemonDestroy := jvm.lib
|
||||||
else
|
else
|
||||||
|
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exedaemonDestroy := -ljvm
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libbootclssearch_agent += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libbootclssearch_agent += -lpthread
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libsystemclssearch_agent += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libsystemclssearch_agent += -lpthread
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetsysprop001 += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetsysprop001 += -lpthread
|
||||||
@@ -1512,6 +1514,7 @@ else
|
|||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetphase002 += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetphase002 += -lpthread
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libterminatedThread += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libterminatedThread += -lpthread
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit += -ljvm
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit += -ljvm
|
||||||
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libCompleteExit += -lpthread
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# This evaluation is expensive and should only be done if this target was
|
# This evaluation is expensive and should only be done if this target was
|
||||||
|
|||||||
@@ -53,9 +53,13 @@ BUILD_JDK_JTREG_EXECUTABLES_CFLAGS_exeJliLaunchTest := \
|
|||||||
-I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \
|
-I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \
|
||||||
-I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli
|
-I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli
|
||||||
|
|
||||||
|
TEST_LIB_NATIVE_SRC := $(TOPDIR)/test/lib/native
|
||||||
|
|
||||||
# Platform specific setup
|
# Platform specific setup
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
BUILD_JDK_JTREG_EXCLUDE += libDirectIO.c libInheritedChannel.c exelauncher.c
|
BUILD_JDK_JTREG_EXCLUDE += libDirectIO.c libInheritedChannel.c \
|
||||||
|
libExplicitAttach.c libImplicitAttach.c \
|
||||||
|
exelauncher.c
|
||||||
|
|
||||||
WIN_LIB_JAVA := $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib
|
WIN_LIB_JAVA := $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libstringPlatformChars := $(WIN_LIB_JAVA)
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libstringPlatformChars := $(WIN_LIB_JAVA)
|
||||||
@@ -65,25 +69,36 @@ ifeq ($(call isTargetOs, windows), true)
|
|||||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerTest := $(LIBCXX) jvm.lib
|
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerTest := $(LIBCXX) jvm.lib
|
||||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exerevokeall := advapi32.lib
|
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exerevokeall := advapi32.lib
|
||||||
BUILD_JDK_JTREG_EXECUTABLES_CFLAGS_exeNullCallerTest := /EHsc
|
BUILD_JDK_JTREG_EXECUTABLES_CFLAGS_exeNullCallerTest := /EHsc
|
||||||
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncStackWalk := /EHsc
|
|
||||||
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncInvokers := /EHsc
|
# java.lang.foreign tests
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerUnnamed := /EHsc
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncStackWalk := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerModule := /EHsc
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libLinkerInvokerUnnamed := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLoaderLookupInvoker := /EHsc
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libLinkerInvokerModule := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncStackWalk := $(LIBCXX)
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libLoaderLookupInvoker := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncInvokers := $(LIBCXX)
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncInvokers := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerUnnamed := $(LIBCXX)
|
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerModule := $(LIBCXX)
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTracePinnedThreads := jvm.lib
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLoaderLookupInvoker := $(LIBCXX)
|
|
||||||
else
|
else
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libstringPlatformChars := -ljava
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libstringPlatformChars := -ljava
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libDirectIO := -ljava
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libDirectIO := -ljava
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libNativeThread := -pthread
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libNativeThread := -pthread
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncStackWalk := $(LIBCXX) -pthread
|
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncInvokers := $(LIBCXX) -pthread
|
# java.lang.foreign tests
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerUnnamed := $(LIBCXX) -pthread
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncStackWalk := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerModule := $(LIBCXX) -pthread
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncStackWalk := -pthread
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLoaderLookupInvoker := $(LIBCXX) -pthread
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncInvokers := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncInvokers := -pthread
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libLinkerInvokerUnnamed := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerUnnamed := -pthread
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libLinkerInvokerModule := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLinkerInvokerModule := -pthread
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libLoaderLookupInvoker := -I$(TEST_LIB_NATIVE_SRC)
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libLoaderLookupInvoker := -pthread
|
||||||
|
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libExplicitAttach := -ljvm
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libExplicitAttach := -pthread
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libImplicitAttach := -pthread
|
||||||
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTracePinnedThreads := -ljvm
|
||||||
BUILD_JDK_JTREG_EXCLUDE += exerevokeall.c
|
BUILD_JDK_JTREG_EXCLUDE += exerevokeall.c
|
||||||
ifeq ($(call isTargetOs, linux), true)
|
ifeq ($(call isTargetOs, linux), true)
|
||||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libInheritedChannel := -ljava
|
BUILD_JDK_JTREG_LIBRARIES_LIBS_libInheritedChannel := -ljava
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ the methods in the CustomControlsContext interface.
|
|||||||
|
|
||||||
Here are some resources for learning about and using the Java2D(TM)
|
Here are some resources for learning about and using the Java2D(TM)
|
||||||
|
|
||||||
OpenJDK group page: http://openjdk.java.net/groups/2d/
|
OpenJDK group page: https://openjdk.org/groups/2d/
|
||||||
|
|
||||||
Learning Java 2D: http://www.oracle.com/technetwork/articles/java/java2dpart1-137217.html
|
Learning Java 2D: http://www.oracle.com/technetwork/articles/java/java2dpart1-137217.html
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
6491
src/hotspot/cpu/aarch64/aarch64_vector.ad
Normal file
6491
src/hotspot/cpu/aarch64/aarch64_vector.ad
Normal file
File diff suppressed because it is too large
Load Diff
4841
src/hotspot/cpu/aarch64/aarch64_vector_ad.m4
Normal file
4841
src/hotspot/cpu/aarch64/aarch64_vector_ad.m4
Normal file
File diff suppressed because it is too large
Load Diff
@@ -90,7 +90,7 @@ int AbstractInterpreter::size_activation(int max_stack,
|
|||||||
// for the callee's params we only need to account for the extra
|
// for the callee's params we only need to account for the extra
|
||||||
// locals.
|
// locals.
|
||||||
int size = overhead +
|
int size = overhead +
|
||||||
(callee_locals - callee_params) +
|
(callee_locals - callee_params) * Interpreter::stackElementWords +
|
||||||
monitors * frame::interpreter_frame_monitor_size() +
|
monitors * frame::interpreter_frame_monitor_size() +
|
||||||
// On the top frame, at all times SP <= ESP, and SP is
|
// On the top frame, at all times SP <= ESP, and SP is
|
||||||
// 16-aligned. We ensure this by adjusting SP on method
|
// 16-aligned. We ensure this by adjusting SP on method
|
||||||
@@ -135,7 +135,7 @@ void AbstractInterpreter::layout_activation(Method* method,
|
|||||||
// NOTE the difference in using sender_sp and
|
// NOTE the difference in using sender_sp and
|
||||||
// interpreter_frame_sender_sp interpreter_frame_sender_sp is
|
// interpreter_frame_sender_sp interpreter_frame_sender_sp is
|
||||||
// the original sp of the caller (the unextended_sp) and
|
// the original sp of the caller (the unextended_sp) and
|
||||||
// sender_sp is fp+8/16 (32bit/64bit) XXX
|
// sender_sp is fp+16
|
||||||
//
|
//
|
||||||
// The interpreted method entry on AArch64 aligns SP to 16 bytes
|
// The interpreted method entry on AArch64 aligns SP to 16 bytes
|
||||||
// before generating the fixed part of the activation frame. So there
|
// before generating the fixed part of the activation frame. So there
|
||||||
@@ -165,6 +165,19 @@ void AbstractInterpreter::layout_activation(Method* method,
|
|||||||
popframe_extra_args;
|
popframe_extra_args;
|
||||||
interpreter_frame->interpreter_frame_set_last_sp(esp);
|
interpreter_frame->interpreter_frame_set_last_sp(esp);
|
||||||
|
|
||||||
|
// We have to add extra reserved slots to max_stack. There are 3 users of the extra slots,
|
||||||
|
// none of which are at the same time, so we just need to make sure there is enough room
|
||||||
|
// for the biggest user:
|
||||||
|
// -reserved slot for exception handler
|
||||||
|
// -reserved slots for JSR292. Method::extra_stack_entries() is the size.
|
||||||
|
// -reserved slots for TraceBytecodes
|
||||||
|
int max_stack = method->constMethod()->max_stack() + MAX2(3, Method::extra_stack_entries());
|
||||||
|
intptr_t* extended_sp = (intptr_t*) monbot -
|
||||||
|
(max_stack * Interpreter::stackElementWords) -
|
||||||
|
popframe_extra_args;
|
||||||
|
extended_sp = align_down(extended_sp, StackAlignmentInBytes);
|
||||||
|
interpreter_frame->interpreter_frame_set_extended_sp(extended_sp);
|
||||||
|
|
||||||
// All frames but the initial (oldest) interpreter frame we fill in have
|
// All frames but the initial (oldest) interpreter frame we fill in have
|
||||||
// a value for sender_sp that allows walking the stack but isn't
|
// a value for sender_sp that allows walking the stack but isn't
|
||||||
// truly correct. Correct the value here.
|
// truly correct. Correct the value here.
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
#include "memory/resourceArea.hpp"
|
#include "memory/resourceArea.hpp"
|
||||||
|
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
const uintptr_t Assembler::asm_bp = 0x00007fffee09ac88;
|
const uintptr_t Assembler::asm_bp = 0x0000ffffac221240;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static float unpack(unsigned value);
|
static float unpack(unsigned value);
|
||||||
@@ -155,10 +155,6 @@ void Address::lea(MacroAssembler *as, Register r) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Assembler::adrp(Register reg1, const Address &dest, uint64_t &byte_offset) {
|
|
||||||
ShouldNotReachHere();
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef __
|
#undef __
|
||||||
|
|
||||||
#define starti Instruction_aarch64 current_insn(this);
|
#define starti Instruction_aarch64 current_insn(this);
|
||||||
@@ -189,7 +185,7 @@ void Assembler::adrp(Register reg1, const Address &dest, uint64_t &byte_offset)
|
|||||||
offset >>= 2;
|
offset >>= 2;
|
||||||
starti;
|
starti;
|
||||||
f(1, 31), f(offset_lo, 30, 29), f(0b10000, 28, 24), sf(offset, 23, 5);
|
f(1, 31), f(offset_lo, 30, 29), f(0b10000, 28, 24), sf(offset, 23, 5);
|
||||||
rf(Rd, 0);
|
zrf(Rd, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// An "all-purpose" add/subtract immediate, per ARM documentation:
|
// An "all-purpose" add/subtract immediate, per ARM documentation:
|
||||||
|
|||||||
@@ -62,23 +62,23 @@ class Argument {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_DECLARATION(Register, c_rarg0, r0);
|
constexpr Register c_rarg0 = r0;
|
||||||
REGISTER_DECLARATION(Register, c_rarg1, r1);
|
constexpr Register c_rarg1 = r1;
|
||||||
REGISTER_DECLARATION(Register, c_rarg2, r2);
|
constexpr Register c_rarg2 = r2;
|
||||||
REGISTER_DECLARATION(Register, c_rarg3, r3);
|
constexpr Register c_rarg3 = r3;
|
||||||
REGISTER_DECLARATION(Register, c_rarg4, r4);
|
constexpr Register c_rarg4 = r4;
|
||||||
REGISTER_DECLARATION(Register, c_rarg5, r5);
|
constexpr Register c_rarg5 = r5;
|
||||||
REGISTER_DECLARATION(Register, c_rarg6, r6);
|
constexpr Register c_rarg6 = r6;
|
||||||
REGISTER_DECLARATION(Register, c_rarg7, r7);
|
constexpr Register c_rarg7 = r7;
|
||||||
|
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg0, v0);
|
constexpr FloatRegister c_farg0 = v0;
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg1, v1);
|
constexpr FloatRegister c_farg1 = v1;
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg2, v2);
|
constexpr FloatRegister c_farg2 = v2;
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg3, v3);
|
constexpr FloatRegister c_farg3 = v3;
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg4, v4);
|
constexpr FloatRegister c_farg4 = v4;
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg5, v5);
|
constexpr FloatRegister c_farg5 = v5;
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg6, v6);
|
constexpr FloatRegister c_farg6 = v6;
|
||||||
REGISTER_DECLARATION(FloatRegister, c_farg7, v7);
|
constexpr FloatRegister c_farg7 = v7;
|
||||||
|
|
||||||
// Symbolically name the register arguments used by the Java calling convention.
|
// Symbolically name the register arguments used by the Java calling convention.
|
||||||
// We have control over the convention for java so we can do what we please.
|
// We have control over the convention for java so we can do what we please.
|
||||||
@@ -96,25 +96,25 @@ REGISTER_DECLARATION(FloatRegister, c_farg7, v7);
|
|||||||
// |--------------------------------------------------------------------|
|
// |--------------------------------------------------------------------|
|
||||||
|
|
||||||
|
|
||||||
REGISTER_DECLARATION(Register, j_rarg0, c_rarg1);
|
constexpr Register j_rarg0 = c_rarg1;
|
||||||
REGISTER_DECLARATION(Register, j_rarg1, c_rarg2);
|
constexpr Register j_rarg1 = c_rarg2;
|
||||||
REGISTER_DECLARATION(Register, j_rarg2, c_rarg3);
|
constexpr Register j_rarg2 = c_rarg3;
|
||||||
REGISTER_DECLARATION(Register, j_rarg3, c_rarg4);
|
constexpr Register j_rarg3 = c_rarg4;
|
||||||
REGISTER_DECLARATION(Register, j_rarg4, c_rarg5);
|
constexpr Register j_rarg4 = c_rarg5;
|
||||||
REGISTER_DECLARATION(Register, j_rarg5, c_rarg6);
|
constexpr Register j_rarg5 = c_rarg6;
|
||||||
REGISTER_DECLARATION(Register, j_rarg6, c_rarg7);
|
constexpr Register j_rarg6 = c_rarg7;
|
||||||
REGISTER_DECLARATION(Register, j_rarg7, c_rarg0);
|
constexpr Register j_rarg7 = c_rarg0;
|
||||||
|
|
||||||
// Java floating args are passed as per C
|
// Java floating args are passed as per C
|
||||||
|
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg0, v0);
|
constexpr FloatRegister j_farg0 = v0;
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg1, v1);
|
constexpr FloatRegister j_farg1 = v1;
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg2, v2);
|
constexpr FloatRegister j_farg2 = v2;
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg3, v3);
|
constexpr FloatRegister j_farg3 = v3;
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg4, v4);
|
constexpr FloatRegister j_farg4 = v4;
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg5, v5);
|
constexpr FloatRegister j_farg5 = v5;
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg6, v6);
|
constexpr FloatRegister j_farg6 = v6;
|
||||||
REGISTER_DECLARATION(FloatRegister, j_farg7, v7);
|
constexpr FloatRegister j_farg7 = v7;
|
||||||
|
|
||||||
// registers used to hold VM data either temporarily within a method
|
// registers used to hold VM data either temporarily within a method
|
||||||
// or across method calls
|
// or across method calls
|
||||||
@@ -123,38 +123,28 @@ REGISTER_DECLARATION(FloatRegister, j_farg7, v7);
|
|||||||
|
|
||||||
// r8 is used for indirect result location return
|
// r8 is used for indirect result location return
|
||||||
// we use it and r9 as scratch registers
|
// we use it and r9 as scratch registers
|
||||||
REGISTER_DECLARATION(Register, rscratch1, r8);
|
constexpr Register rscratch1 = r8;
|
||||||
REGISTER_DECLARATION(Register, rscratch2, r9);
|
constexpr Register rscratch2 = r9;
|
||||||
|
|
||||||
// current method -- must be in a call-clobbered register
|
// current method -- must be in a call-clobbered register
|
||||||
REGISTER_DECLARATION(Register, rmethod, r12);
|
constexpr Register rmethod = r12;
|
||||||
|
|
||||||
// non-volatile (callee-save) registers are r16-29
|
// non-volatile (callee-save) registers are r16-29
|
||||||
// of which the following are dedicated global state
|
// of which the following are dedicated global state
|
||||||
|
|
||||||
// link register
|
constexpr Register lr = r30; // link register
|
||||||
REGISTER_DECLARATION(Register, lr, r30);
|
constexpr Register rfp = r29; // frame pointer
|
||||||
// frame pointer
|
constexpr Register rthread = r28; // current thread
|
||||||
REGISTER_DECLARATION(Register, rfp, r29);
|
constexpr Register rheapbase = r27; // base of heap
|
||||||
// current thread
|
constexpr Register rcpool = r26; // constant pool cache
|
||||||
REGISTER_DECLARATION(Register, rthread, r28);
|
constexpr Register rlocals = r24; // locals on stack
|
||||||
// base of heap
|
constexpr Register rbcp = r22; // bytecode pointer
|
||||||
REGISTER_DECLARATION(Register, rheapbase, r27);
|
constexpr Register rdispatch = r21; // dispatch table base
|
||||||
// constant pool cache
|
constexpr Register esp = r20; // Java expression stack pointer
|
||||||
REGISTER_DECLARATION(Register, rcpool, r26);
|
constexpr Register r19_sender_sp = r19; // sender's SP while in interpreter
|
||||||
// monitors allocated on stack
|
|
||||||
REGISTER_DECLARATION(Register, rmonitors, r25);
|
|
||||||
// locals on stack
|
|
||||||
REGISTER_DECLARATION(Register, rlocals, r24);
|
|
||||||
// bytecode pointer
|
|
||||||
REGISTER_DECLARATION(Register, rbcp, r22);
|
|
||||||
// Dispatch table base
|
|
||||||
REGISTER_DECLARATION(Register, rdispatch, r21);
|
|
||||||
// Java stack pointer
|
|
||||||
REGISTER_DECLARATION(Register, esp, r20);
|
|
||||||
|
|
||||||
// Preserved predicate register with all elements set TRUE.
|
// Preserved predicate register with all elements set TRUE.
|
||||||
REGISTER_DECLARATION(PRegister, ptrue, p7);
|
constexpr PRegister ptrue = p7;
|
||||||
|
|
||||||
#define assert_cond(ARG1) assert(ARG1, #ARG1)
|
#define assert_cond(ARG1) assert(ARG1, #ARG1)
|
||||||
|
|
||||||
@@ -218,7 +208,7 @@ public:
|
|||||||
return extend(uval, msb - lsb);
|
return extend(uval, msb - lsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void patch(address a, int msb, int lsb, uint64_t val) {
|
static ALWAYSINLINE void patch(address a, int msb, int lsb, uint64_t val) {
|
||||||
int nbits = msb - lsb + 1;
|
int nbits = msb - lsb + 1;
|
||||||
guarantee(val < (1ULL << nbits), "Field too big for insn");
|
guarantee(val < (1ULL << nbits), "Field too big for insn");
|
||||||
assert_cond(msb >= lsb);
|
assert_cond(msb >= lsb);
|
||||||
@@ -275,29 +265,29 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void rf(Register r, int lsb) {
|
void rf(Register r, int lsb) {
|
||||||
f(r->encoding_nocheck(), lsb + 4, lsb);
|
f(r->raw_encoding(), lsb + 4, lsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
// reg|ZR
|
// reg|ZR
|
||||||
void zrf(Register r, int lsb) {
|
void zrf(Register r, int lsb) {
|
||||||
f(r->encoding_nocheck() - (r == zr), lsb + 4, lsb);
|
f(r->raw_encoding() - (r == zr), lsb + 4, lsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
// reg|SP
|
// reg|SP
|
||||||
void srf(Register r, int lsb) {
|
void srf(Register r, int lsb) {
|
||||||
f(r == sp ? 31 : r->encoding_nocheck(), lsb + 4, lsb);
|
f(r == sp ? 31 : r->raw_encoding(), lsb + 4, lsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rf(FloatRegister r, int lsb) {
|
void rf(FloatRegister r, int lsb) {
|
||||||
f(r->encoding_nocheck(), lsb + 4, lsb);
|
f(r->raw_encoding(), lsb + 4, lsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void prf(PRegister r, int lsb) {
|
void prf(PRegister r, int lsb) {
|
||||||
f(r->encoding_nocheck(), lsb + 3, lsb);
|
f(r->raw_encoding(), lsb + 3, lsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pgrf(PRegister r, int lsb) {
|
void pgrf(PRegister r, int lsb) {
|
||||||
f(r->encoding_nocheck(), lsb + 2, lsb);
|
f(r->raw_encoding(), lsb + 2, lsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned get(int msb = 31, int lsb = 0) {
|
unsigned get(int msb = 31, int lsb = 0) {
|
||||||
@@ -327,7 +317,7 @@ class Post : public PrePost {
|
|||||||
Register _idx;
|
Register _idx;
|
||||||
bool _is_postreg;
|
bool _is_postreg;
|
||||||
public:
|
public:
|
||||||
Post(Register reg, int o) : PrePost(reg, o) { _idx = NULL; _is_postreg = false; }
|
Post(Register reg, int o) : PrePost(reg, o) { _idx = noreg; _is_postreg = false; }
|
||||||
Post(Register reg, Register idx) : PrePost(reg, 0) { _idx = idx; _is_postreg = true; }
|
Post(Register reg, Register idx) : PrePost(reg, 0) { _idx = idx; _is_postreg = true; }
|
||||||
Register idx_reg() { return _idx; }
|
Register idx_reg() { return _idx; }
|
||||||
bool is_postreg() {return _is_postreg; }
|
bool is_postreg() {return _is_postreg; }
|
||||||
@@ -625,8 +615,7 @@ class InternalAddress: public Address {
|
|||||||
InternalAddress(address target) : Address(target, relocInfo::internal_word_type) {}
|
InternalAddress(address target) : Address(target, relocInfo::internal_word_type) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
const int FPUStateSizeInWords = FloatRegisterImpl::number_of_registers *
|
const int FPUStateSizeInWords = FloatRegister::number_of_registers * FloatRegister::save_slots_per_register;
|
||||||
FloatRegisterImpl::save_slots_per_register;
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
PLDL1KEEP = 0b00000, PLDL1STRM, PLDL2KEEP, PLDL2STRM, PLDL3KEEP, PLDL3STRM,
|
PLDL1KEEP = 0b00000, PLDL1STRM, PLDL2KEEP, PLDL2STRM, PLDL3KEEP, PLDL3STRM,
|
||||||
@@ -716,7 +705,7 @@ public:
|
|||||||
wrap_label(Rd, L, &Assembler::_adrp);
|
wrap_label(Rd, L, &Assembler::_adrp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void adrp(Register Rd, const Address &dest, uint64_t &offset);
|
void adrp(Register Rd, const Address &dest, uint64_t &offset) = delete;
|
||||||
|
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
@@ -1230,10 +1219,11 @@ public:
|
|||||||
INSN4(stlxpw, word, 0b001, 1);
|
INSN4(stlxpw, word, 0b001, 1);
|
||||||
INSN2(ldxrw, word, 0b010, 0);
|
INSN2(ldxrw, word, 0b010, 0);
|
||||||
INSN2(ldaxrw, word, 0b010, 1);
|
INSN2(ldaxrw, word, 0b010, 1);
|
||||||
INSN_FOO(ldxpw, word, 0b011, 0);
|
|
||||||
INSN_FOO(ldaxpw, word, 0b011, 1);
|
|
||||||
INSN2(stlrw, word, 0b100, 1);
|
INSN2(stlrw, word, 0b100, 1);
|
||||||
INSN2(ldarw, word, 0b110, 1);
|
INSN2(ldarw, word, 0b110, 1);
|
||||||
|
// pairs of words
|
||||||
|
INSN_FOO(ldxpw, word, 0b011, 0);
|
||||||
|
INSN_FOO(ldaxpw, word, 0b011, 1);
|
||||||
|
|
||||||
// xwords
|
// xwords
|
||||||
INSN3(stxr, xword, 0b000, 0);
|
INSN3(stxr, xword, 0b000, 0);
|
||||||
@@ -1242,10 +1232,11 @@ public:
|
|||||||
INSN4(stlxp, xword, 0b001, 1);
|
INSN4(stlxp, xword, 0b001, 1);
|
||||||
INSN2(ldxr, xword, 0b010, 0);
|
INSN2(ldxr, xword, 0b010, 0);
|
||||||
INSN2(ldaxr, xword, 0b010, 1);
|
INSN2(ldaxr, xword, 0b010, 1);
|
||||||
INSN_FOO(ldxp, xword, 0b011, 0);
|
|
||||||
INSN_FOO(ldaxp, xword, 0b011, 1);
|
|
||||||
INSN2(stlr, xword, 0b100, 1);
|
INSN2(stlr, xword, 0b100, 1);
|
||||||
INSN2(ldar, xword, 0b110, 1);
|
INSN2(ldar, xword, 0b110, 1);
|
||||||
|
// pairs of xwords
|
||||||
|
INSN_FOO(ldxp, xword, 0b011, 0);
|
||||||
|
INSN_FOO(ldaxp, xword, 0b011, 1);
|
||||||
|
|
||||||
#undef INSN2
|
#undef INSN2
|
||||||
#undef INSN3
|
#undef INSN3
|
||||||
@@ -1855,7 +1846,7 @@ void mvnw(Register Rd, Register Rm,
|
|||||||
|
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
// (2 sources)
|
// Data-processing (2 source)
|
||||||
#define INSN(NAME, op29, opcode) \
|
#define INSN(NAME, op29, opcode) \
|
||||||
void NAME(Register Rd, Register Rn, Register Rm) { \
|
void NAME(Register Rd, Register Rn, Register Rm) { \
|
||||||
starti; \
|
starti; \
|
||||||
@@ -1879,7 +1870,7 @@ void mvnw(Register Rd, Register Rm,
|
|||||||
|
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
// (3 sources)
|
// Data-processing (3 source)
|
||||||
void data_processing(unsigned op54, unsigned op31, unsigned o0,
|
void data_processing(unsigned op54, unsigned op31, unsigned o0,
|
||||||
Register Rd, Register Rn, Register Rm,
|
Register Rd, Register Rn, Register Rm,
|
||||||
Register Ra) {
|
Register Ra) {
|
||||||
@@ -1930,32 +1921,18 @@ void mvnw(Register Rd, Register Rm,
|
|||||||
data_processing(op31, type, opcode, Vd, Vn); \
|
data_processing(op31, type, opcode, Vd, Vn); \
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
INSN(fmovs, 0b000, 0b00, 0b000000);
|
||||||
INSN(i_fmovs, 0b000, 0b00, 0b000000);
|
|
||||||
public:
|
|
||||||
INSN(fabss, 0b000, 0b00, 0b000001);
|
INSN(fabss, 0b000, 0b00, 0b000001);
|
||||||
INSN(fnegs, 0b000, 0b00, 0b000010);
|
INSN(fnegs, 0b000, 0b00, 0b000010);
|
||||||
INSN(fsqrts, 0b000, 0b00, 0b000011);
|
INSN(fsqrts, 0b000, 0b00, 0b000011);
|
||||||
INSN(fcvts, 0b000, 0b00, 0b000101); // Single-precision to double-precision
|
INSN(fcvts, 0b000, 0b00, 0b000101); // Single-precision to double-precision
|
||||||
|
|
||||||
private:
|
INSN(fmovd, 0b000, 0b01, 0b000000);
|
||||||
INSN(i_fmovd, 0b000, 0b01, 0b000000);
|
|
||||||
public:
|
|
||||||
INSN(fabsd, 0b000, 0b01, 0b000001);
|
INSN(fabsd, 0b000, 0b01, 0b000001);
|
||||||
INSN(fnegd, 0b000, 0b01, 0b000010);
|
INSN(fnegd, 0b000, 0b01, 0b000010);
|
||||||
INSN(fsqrtd, 0b000, 0b01, 0b000011);
|
INSN(fsqrtd, 0b000, 0b01, 0b000011);
|
||||||
INSN(fcvtd, 0b000, 0b01, 0b000100); // Double-precision to single-precision
|
INSN(fcvtd, 0b000, 0b01, 0b000100); // Double-precision to single-precision
|
||||||
|
|
||||||
void fmovd(FloatRegister Vd, FloatRegister Vn) {
|
|
||||||
assert(Vd != Vn, "should be");
|
|
||||||
i_fmovd(Vd, Vn);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fmovs(FloatRegister Vd, FloatRegister Vn) {
|
|
||||||
assert(Vd != Vn, "should be");
|
|
||||||
i_fmovs(Vd, Vn);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void _fcvt_narrow_extend(FloatRegister Vd, SIMD_Arrangement Ta,
|
void _fcvt_narrow_extend(FloatRegister Vd, SIMD_Arrangement Ta,
|
||||||
FloatRegister Vn, SIMD_Arrangement Tb, bool do_extend) {
|
FloatRegister Vn, SIMD_Arrangement Tb, bool do_extend) {
|
||||||
@@ -2072,7 +2049,7 @@ public:
|
|||||||
|
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
// Floating-point<->integer conversions
|
// Conversion between floating-point and integer
|
||||||
void float_int_convert(unsigned sflag, unsigned ftype,
|
void float_int_convert(unsigned sflag, unsigned ftype,
|
||||||
unsigned rmode, unsigned opcode,
|
unsigned rmode, unsigned opcode,
|
||||||
Register Rd, Register Rn) {
|
Register Rd, Register Rn) {
|
||||||
@@ -2242,6 +2219,8 @@ public:
|
|||||||
movi(Vn, T1D, 0);
|
movi(Vn, T1D, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Floating-point data-processing (1 source)
|
||||||
|
|
||||||
// Floating-point rounding
|
// Floating-point rounding
|
||||||
// type: half-precision = 11
|
// type: half-precision = 11
|
||||||
// single = 00
|
// single = 00
|
||||||
@@ -2429,6 +2408,7 @@ public:
|
|||||||
|
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
|
// Advanced SIMD three different
|
||||||
#define INSN(NAME, opc, opc2, acceptT2D) \
|
#define INSN(NAME, opc, opc2, acceptT2D) \
|
||||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm) { \
|
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm) { \
|
||||||
guarantee(T != T1Q && T != T1D, "incorrect arrangement"); \
|
guarantee(T != T1Q && T != T1D, "incorrect arrangement"); \
|
||||||
@@ -2573,6 +2553,7 @@ public:
|
|||||||
INSN(fcmeq, 0, 0, 0b111001);
|
INSN(fcmeq, 0, 0, 0b111001);
|
||||||
INSN(fcmgt, 1, 1, 0b111001);
|
INSN(fcmgt, 1, 1, 0b111001);
|
||||||
INSN(fcmge, 1, 0, 0b111001);
|
INSN(fcmge, 1, 0, 0b111001);
|
||||||
|
INSN(facgt, 1, 1, 0b111011);
|
||||||
|
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
@@ -3161,6 +3142,7 @@ public:
|
|||||||
sve_predicate_reg_insn(op1, op2, Zd_or_Zdn_or_Vd, T, Pg, Zn_or_Zm); \
|
sve_predicate_reg_insn(op1, op2, Zd_or_Zdn_or_Vd, T, Pg, Zn_or_Zm); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INSN(sve_fabd, 0b01100101, 0b001000100); // floating-point absolute difference
|
||||||
INSN(sve_fabs, 0b00000100, 0b011100101);
|
INSN(sve_fabs, 0b00000100, 0b011100101);
|
||||||
INSN(sve_fadd, 0b01100101, 0b000000100);
|
INSN(sve_fadd, 0b01100101, 0b000000100);
|
||||||
INSN(sve_fadda, 0b01100101, 0b011000001); // add strictly-ordered reduction to scalar Vd
|
INSN(sve_fadda, 0b01100101, 0b011000001); // add strictly-ordered reduction to scalar Vd
|
||||||
@@ -3519,18 +3501,22 @@ public:
|
|||||||
void NAME(Condition cond, PRegister Pd, SIMD_RegVariant T, PRegister Pg, \
|
void NAME(Condition cond, PRegister Pd, SIMD_RegVariant T, PRegister Pg, \
|
||||||
FloatRegister Zn, FloatRegister Zm) { \
|
FloatRegister Zn, FloatRegister Zm) { \
|
||||||
starti; \
|
starti; \
|
||||||
if (fp == 0) { \
|
|
||||||
assert(T != Q, "invalid size"); \
|
assert(T != Q, "invalid size"); \
|
||||||
|
bool is_absolute = op2 == 0b11; \
|
||||||
|
if (fp == 1) { \
|
||||||
|
assert(T != B, "invalid size"); \
|
||||||
|
if (is_absolute) { \
|
||||||
|
assert(cond == GT || cond == GE, "invalid condition for fac"); \
|
||||||
} else { \
|
} else { \
|
||||||
assert(T != B && T != Q, "invalid size"); \
|
|
||||||
assert(cond != HI && cond != HS, "invalid condition for fcm"); \
|
assert(cond != HI && cond != HS, "invalid condition for fcm"); \
|
||||||
} \
|
} \
|
||||||
|
} \
|
||||||
int cond_op; \
|
int cond_op; \
|
||||||
switch(cond) { \
|
switch(cond) { \
|
||||||
case EQ: cond_op = (op2 << 2) | 0b10; break; \
|
case EQ: cond_op = (op2 << 2) | 0b10; break; \
|
||||||
case NE: cond_op = (op2 << 2) | 0b11; break; \
|
case NE: cond_op = (op2 << 2) | 0b11; break; \
|
||||||
case GE: cond_op = (op2 << 2) | 0b00; break; \
|
case GE: cond_op = (op2 << 2) | (is_absolute ? 0b01 : 0b00); break; \
|
||||||
case GT: cond_op = (op2 << 2) | 0b01; break; \
|
case GT: cond_op = (op2 << 2) | (is_absolute ? 0b11 : 0b01); break; \
|
||||||
case HI: cond_op = 0b0001; break; \
|
case HI: cond_op = 0b0001; break; \
|
||||||
case HS: cond_op = 0b0000; break; \
|
case HS: cond_op = 0b0000; break; \
|
||||||
default: \
|
default: \
|
||||||
@@ -3540,8 +3526,9 @@ public:
|
|||||||
pgrf(Pg, 10), rf(Zn, 5), f(cond_op & 1, 4), prf(Pd, 0); \
|
pgrf(Pg, 10), rf(Zn, 5), f(cond_op & 1, 4), prf(Pd, 0); \
|
||||||
}
|
}
|
||||||
|
|
||||||
INSN(sve_cmp, 0b00100100, 0b10, 0);
|
INSN(sve_cmp, 0b00100100, 0b10, 0); // Integer compare vectors
|
||||||
INSN(sve_fcm, 0b01100101, 0b01, 1);
|
INSN(sve_fcm, 0b01100101, 0b01, 1); // Floating-point compare vectors
|
||||||
|
INSN(sve_fac, 0b01100101, 0b11, 1); // Floating-point absolute compare vectors
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
// SVE Integer Compare - Signed Immediate
|
// SVE Integer Compare - Signed Immediate
|
||||||
@@ -3642,20 +3629,27 @@ void sve_fcm(Condition cond, PRegister Pd, SIMD_RegVariant T,
|
|||||||
INSN(sve_uzp2, 0b1); // Concatenate odd elements from two predicates
|
INSN(sve_uzp2, 0b1); // Concatenate odd elements from two predicates
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
// Predicate counted loop (SVE) (32-bit variants are not included)
|
// SVE integer compare scalar count and limit
|
||||||
#define INSN(NAME, decode) \
|
#define INSN(NAME, sf, op) \
|
||||||
void NAME(PRegister Pd, SIMD_RegVariant T, Register Rn, Register Rm) { \
|
void NAME(PRegister Pd, SIMD_RegVariant T, Register Rn, Register Rm) { \
|
||||||
starti; \
|
starti; \
|
||||||
assert(T != Q, "invalid register variant"); \
|
assert(T != Q, "invalid register variant"); \
|
||||||
f(0b00100101, 31, 24), f(T, 23, 22), f(1, 21), \
|
f(0b00100101, 31, 24), f(T, 23, 22), f(1, 21), \
|
||||||
zrf(Rm, 16), f(0, 15, 13), f(1, 12), f(decode >> 1, 11, 10), \
|
zrf(Rm, 16), f(0, 15, 13), f(sf, 12), f(op >> 1, 11, 10), \
|
||||||
zrf(Rn, 5), f(decode & 1, 4), prf(Pd, 0); \
|
zrf(Rn, 5), f(op & 1, 4), prf(Pd, 0); \
|
||||||
}
|
}
|
||||||
|
// While incrementing signed scalar less than scalar
|
||||||
INSN(sve_whilelt, 0b010); // While incrementing signed scalar less than scalar
|
INSN(sve_whileltw, 0b0, 0b010);
|
||||||
INSN(sve_whilele, 0b011); // While incrementing signed scalar less than or equal to scalar
|
INSN(sve_whilelt, 0b1, 0b010);
|
||||||
INSN(sve_whilelo, 0b110); // While incrementing unsigned scalar lower than scalar
|
// While incrementing signed scalar less than or equal to scalar
|
||||||
INSN(sve_whilels, 0b111); // While incrementing unsigned scalar lower than or the same as scalar
|
INSN(sve_whilelew, 0b0, 0b011);
|
||||||
|
INSN(sve_whilele, 0b1, 0b011);
|
||||||
|
// While incrementing unsigned scalar lower than scalar
|
||||||
|
INSN(sve_whilelow, 0b0, 0b110);
|
||||||
|
INSN(sve_whilelo, 0b1, 0b110);
|
||||||
|
// While incrementing unsigned scalar lower than or the same as scalar
|
||||||
|
INSN(sve_whilelsw, 0b0, 0b111);
|
||||||
|
INSN(sve_whilels, 0b1, 0b111);
|
||||||
#undef INSN
|
#undef INSN
|
||||||
|
|
||||||
// SVE predicate reverse
|
// SVE predicate reverse
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ void SimpleExceptionStub::emit_code(LIR_Assembler* ce) {
|
|||||||
if (_obj->is_cpu_register()) {
|
if (_obj->is_cpu_register()) {
|
||||||
__ mov(rscratch1, _obj->as_register());
|
__ mov(rscratch1, _obj->as_register());
|
||||||
}
|
}
|
||||||
__ far_call(RuntimeAddress(Runtime1::entry_for(_stub)), NULL, rscratch2);
|
__ far_call(RuntimeAddress(Runtime1::entry_for(_stub)), rscratch2);
|
||||||
ce->add_call_info_here(_info);
|
ce->add_call_info_here(_info);
|
||||||
debug_only(__ should_not_reach_here());
|
debug_only(__ should_not_reach_here());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ enum {
|
|||||||
|
|
||||||
// registers
|
// registers
|
||||||
enum {
|
enum {
|
||||||
pd_nof_cpu_regs_frame_map = RegisterImpl::number_of_registers, // number of registers used during code emission
|
pd_nof_cpu_regs_frame_map = Register::number_of_registers, // number of GP registers used during code emission
|
||||||
pd_nof_fpu_regs_frame_map = FloatRegisterImpl::number_of_registers, // number of registers used during code emission
|
pd_nof_fpu_regs_frame_map = FloatRegister::number_of_registers, // number of FP registers used during code emission
|
||||||
|
|
||||||
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1), // number of registers killed by calls
|
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1), // number of registers killed by calls
|
||||||
pd_nof_caller_save_fpu_regs_frame_map = 32, // number of registers killed by calls
|
pd_nof_caller_save_fpu_regs_frame_map = 32, // number of registers killed by calls
|
||||||
|
|||||||
@@ -282,10 +282,9 @@ void LIR_Assembler::osr_entry() {
|
|||||||
__ bind(L);
|
__ bind(L);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
__ ldr(r19, Address(OSR_buf, slot_offset + 0));
|
__ ldp(r19, r20, Address(OSR_buf, slot_offset));
|
||||||
__ str(r19, frame_map()->address_for_monitor_lock(i));
|
__ str(r19, frame_map()->address_for_monitor_lock(i));
|
||||||
__ ldr(r19, Address(OSR_buf, slot_offset + 1*BytesPerWord));
|
__ str(r20, frame_map()->address_for_monitor_object(i));
|
||||||
__ str(r19, frame_map()->address_for_monitor_object(i));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -332,7 +331,7 @@ void LIR_Assembler::jobject2reg(jobject o, Register reg) {
|
|||||||
if (o == NULL) {
|
if (o == NULL) {
|
||||||
__ mov(reg, zr);
|
__ mov(reg, zr);
|
||||||
} else {
|
} else {
|
||||||
__ movoop(reg, o, /*immediate*/true);
|
__ movoop(reg, o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,7 +437,6 @@ int LIR_Assembler::emit_unwind_handler() {
|
|||||||
__ unlock_object(r5, r4, r0, *stub->entry());
|
__ unlock_object(r5, r4, r0, *stub->entry());
|
||||||
}
|
}
|
||||||
__ bind(*stub->continuation());
|
__ bind(*stub->continuation());
|
||||||
__ dec_held_monitor_count(rthread);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (compilation()->env()->dtrace_method_probes()) {
|
if (compilation()->env()->dtrace_method_probes()) {
|
||||||
@@ -2559,6 +2557,10 @@ void LIR_Assembler::emit_lock(LIR_OpLock* op) {
|
|||||||
Register hdr = op->hdr_opr()->as_register();
|
Register hdr = op->hdr_opr()->as_register();
|
||||||
Register lock = op->lock_opr()->as_register();
|
Register lock = op->lock_opr()->as_register();
|
||||||
if (UseHeavyMonitors) {
|
if (UseHeavyMonitors) {
|
||||||
|
if (op->info() != NULL) {
|
||||||
|
add_debug_info_for_null_check_here(op->info());
|
||||||
|
__ null_check(obj, -1);
|
||||||
|
}
|
||||||
__ b(*op->stub()->entry());
|
__ b(*op->stub()->entry());
|
||||||
} else if (op->code() == lir_lock) {
|
} else if (op->code() == lir_lock) {
|
||||||
assert(BasicLock::displaced_header_offset_in_bytes() == 0, "lock_reg must point to the displaced header");
|
assert(BasicLock::displaced_header_offset_in_bytes() == 0, "lock_reg must point to the displaced header");
|
||||||
@@ -2574,18 +2576,7 @@ void LIR_Assembler::emit_lock(LIR_OpLock* op) {
|
|||||||
} else {
|
} else {
|
||||||
Unimplemented();
|
Unimplemented();
|
||||||
}
|
}
|
||||||
if (op->code() == lir_lock) {
|
|
||||||
// If deoptimization happens in Runtime1::monitorenter, inc_held_monitor_count after backing from slowpath
|
|
||||||
// will be skipped. Solution is:
|
|
||||||
// 1. Increase only in fastpath
|
|
||||||
// 2. Runtime1::monitorenter increase count after locking
|
|
||||||
__ inc_held_monitor_count(rthread);
|
|
||||||
}
|
|
||||||
__ bind(*op->stub()->continuation());
|
__ bind(*op->stub()->continuation());
|
||||||
if (op->code() == lir_unlock) {
|
|
||||||
// unlock in slowpath is JRT_Leaf stub, no deoptimization can happen
|
|
||||||
__ dec_held_monitor_count(rthread);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LIR_Assembler::emit_load_klass(LIR_OpLoadKlass* op) {
|
void LIR_Assembler::emit_load_klass(LIR_OpLoadKlass* op) {
|
||||||
@@ -2699,7 +2690,7 @@ void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
|
|||||||
assert_different_registers(val, crc, res);
|
assert_different_registers(val, crc, res);
|
||||||
uint64_t offset;
|
uint64_t offset;
|
||||||
__ adrp(res, ExternalAddress(StubRoutines::crc_table_addr()), offset);
|
__ adrp(res, ExternalAddress(StubRoutines::crc_table_addr()), offset);
|
||||||
if (offset) __ add(res, res, offset);
|
__ add(res, res, offset);
|
||||||
|
|
||||||
__ mvnw(crc, crc); // ~crc
|
__ mvnw(crc, crc); // ~crc
|
||||||
__ update_byte_crc32(crc, val, res);
|
__ update_byte_crc32(crc, val, res);
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "ci/ciArray.hpp"
|
#include "ci/ciArray.hpp"
|
||||||
#include "ci/ciObjArrayKlass.hpp"
|
#include "ci/ciObjArrayKlass.hpp"
|
||||||
#include "ci/ciTypeArrayKlass.hpp"
|
#include "ci/ciTypeArrayKlass.hpp"
|
||||||
|
#include "compiler/compilerDefinitions.inline.hpp"
|
||||||
#include "runtime/sharedRuntime.hpp"
|
#include "runtime/sharedRuntime.hpp"
|
||||||
#include "runtime/stubRoutines.hpp"
|
#include "runtime/stubRoutines.hpp"
|
||||||
#include "utilities/powerOfTwo.hpp"
|
#include "utilities/powerOfTwo.hpp"
|
||||||
@@ -338,18 +339,6 @@ void LIRGenerator::do_MonitorExit(MonitorExit* x) {
|
|||||||
monitor_exit(obj_temp, lock, syncTempOpr(), LIR_OprFact::illegalOpr, x->monitor_no());
|
monitor_exit(obj_temp, lock, syncTempOpr(), LIR_OprFact::illegalOpr, x->monitor_no());
|
||||||
}
|
}
|
||||||
|
|
||||||
void LIRGenerator::do_continuation_doYield(Intrinsic* x) {
|
|
||||||
BasicTypeList signature(0);
|
|
||||||
CallingConvention* cc = frame_map()->java_calling_convention(&signature, true);
|
|
||||||
|
|
||||||
const LIR_Opr result_reg = result_register_for(x->type());
|
|
||||||
address entry = StubRoutines::cont_doYield();
|
|
||||||
LIR_Opr result = rlock_result(x);
|
|
||||||
CodeEmitInfo* info = state_for(x, x->state());
|
|
||||||
__ call_runtime(entry, LIR_OprFact::illegalOpr, result_reg, cc->args(), info);
|
|
||||||
__ move(result_reg, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LIRGenerator::do_NegateOp(NegateOp* x) {
|
void LIRGenerator::do_NegateOp(NegateOp* x) {
|
||||||
|
|
||||||
LIRItem from(x->x(), this);
|
LIRItem from(x->x(), this);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user