mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-11 20:09:44 +01:00
Compare commits
2292 Commits
windows-to
...
1584
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dec27719cf | ||
|
|
c4fb2e5e55 | ||
|
|
9fdc75969b | ||
|
|
c2cdacaddd | ||
|
|
2e925883d5 | ||
|
|
a156c6b9bf | ||
|
|
75335543f2 | ||
|
|
c9143a3b22 | ||
|
|
8361529140 | ||
|
|
2988403307 | ||
|
|
43fdd6cd26 | ||
|
|
9e16583b83 | ||
|
|
390fc567ef | ||
|
|
3674766d65 | ||
|
|
3b0708af7d | ||
|
|
995e2643c6 | ||
|
|
ff7ca94ca3 | ||
|
|
4a393c0243 | ||
|
|
b4316f0317 | ||
|
|
404a4329c7 | ||
|
|
504f91d4d1 | ||
|
|
0895519455 | ||
|
|
ba57c58ac7 | ||
|
|
9d7b365b76 | ||
|
|
84baaca0e7 | ||
|
|
555feccdb1 | ||
|
|
fc6d53e035 | ||
|
|
3b62f02c8a | ||
|
|
4f93d1c06e | ||
|
|
d85849294a | ||
|
|
65fd106b1a | ||
|
|
888350261c | ||
|
|
923a103580 | ||
|
|
2797ba7b4a | ||
|
|
8be8b407c9 | ||
|
|
ff4546ee49 | ||
|
|
6c9bc39e15 | ||
|
|
5e0f7c7a2b | ||
|
|
b7b0c8be3b | ||
|
|
34472d7aaa | ||
|
|
c607177336 | ||
|
|
9be32d1854 | ||
|
|
ec223b32be | ||
|
|
fe329e72bc | ||
|
|
2918bd4f51 | ||
|
|
48fbbd929e | ||
|
|
fa340f35b0 | ||
|
|
e1bea797be | ||
|
|
a2a2572f78 | ||
|
|
7b992c7cd7 | ||
|
|
8678f41971 | ||
|
|
752c0e5a49 | ||
|
|
3ea7913eaf | ||
|
|
9b4f72ad18 | ||
|
|
d5fa37b63f | ||
|
|
6a42bb54bd | ||
|
|
3b03c698ce | ||
|
|
a56060d465 | ||
|
|
97ddad2e99 | ||
|
|
01ea54d751 | ||
|
|
cad1ad4ba1 | ||
|
|
c0be778e20 | ||
|
|
0b659fef1b | ||
|
|
e62fb2762f | ||
|
|
90fff7bb1e | ||
|
|
f117b0e8ff | ||
|
|
5a2da540da | ||
|
|
23a7dbd486 | ||
|
|
104ef7a512 | ||
|
|
55c667055e | ||
|
|
bc024f9af1 | ||
|
|
dbcbc5cf36 | ||
|
|
19aa9c5ab2 | ||
|
|
4038661a40 | ||
|
|
f3f243e15e | ||
|
|
967eca8d1d | ||
|
|
c011487364 | ||
|
|
e90312b97a | ||
|
|
3cc4c7947b | ||
|
|
92948257a6 | ||
|
|
fcd5fd2fe9 | ||
|
|
403ad1569a | ||
|
|
01ad15e61c | ||
|
|
f10e324538 | ||
|
|
7d8cc524ca | ||
|
|
74252c6df6 | ||
|
|
7b3fa30b6b | ||
|
|
90f1b0812e | ||
|
|
a7a678d491 | ||
|
|
7998f964fa | ||
|
|
04ab8b2f04 | ||
|
|
3b9e5c41db | ||
|
|
e7009db076 | ||
|
|
43ac82fc82 | ||
|
|
9e6d718281 | ||
|
|
14d64f6e0a | ||
|
|
744d5d12d0 | ||
|
|
292902fa77 | ||
|
|
3820e0b62a | ||
|
|
8c55979d40 | ||
|
|
5c275d0a0c | ||
|
|
ce154c9ad4 | ||
|
|
6d6ab9dfd9 | ||
|
|
16158c2eef | ||
|
|
f4d0b285c3 | ||
|
|
071c02b771 | ||
|
|
448fa17a19 | ||
|
|
bfb3674430 | ||
|
|
95857dcfaf | ||
|
|
5520a4df6d | ||
|
|
e906af61a5 | ||
|
|
750fbac5eb | ||
|
|
c5f48bf2cf | ||
|
|
630fe55f4b | ||
|
|
1084ca8699 | ||
|
|
9d5c1c0c7e | ||
|
|
352882d1dc | ||
|
|
500634c24c | ||
|
|
49822836b8 | ||
|
|
fb9c2372f6 | ||
|
|
9e669bf6b7 | ||
|
|
6d2a2255f9 | ||
|
|
e22809895c | ||
|
|
5339faf796 | ||
|
|
9ee13893b0 | ||
|
|
3808264809 | ||
|
|
b8929acd83 | ||
|
|
f203865ad7 | ||
|
|
3c53281d4a | ||
|
|
add8207c6f | ||
|
|
f3dd1882e0 | ||
|
|
8cbf021a42 | ||
|
|
69c0011bad | ||
|
|
4be94ec941 | ||
|
|
21117cb19e | ||
|
|
a9367e1c03 | ||
|
|
efeb4ae758 | ||
|
|
94f8e8c89f | ||
|
|
700429b2a7 | ||
|
|
7526030be1 | ||
|
|
c2a8422d7f | ||
|
|
9e21248180 | ||
|
|
cd103bbab8 | ||
|
|
44fc8d89d3 | ||
|
|
0a01980897 | ||
|
|
7d74096fbc | ||
|
|
2220a431e0 | ||
|
|
e74bee8349 | ||
|
|
50483f3c81 | ||
|
|
8387ea9380 | ||
|
|
60d66beaf7 | ||
|
|
56acccd6a6 | ||
|
|
f6d3a8b591 | ||
|
|
db9b7f2787 | ||
|
|
25e7ea9c8b | ||
|
|
d5523eb04d | ||
|
|
b4d463e431 | ||
|
|
565ff2f838 | ||
|
|
4d8238cd7b | ||
|
|
a26821d6e2 | ||
|
|
0f9df78ac9 | ||
|
|
abfc410137 | ||
|
|
56c8a4b903 | ||
|
|
d3f7396d47 | ||
|
|
78e8501e6f | ||
|
|
7c281c4e71 | ||
|
|
5aac53496f | ||
|
|
be5409fd7e | ||
|
|
853c9a1c18 | ||
|
|
d5bb0ebb7e | ||
|
|
77dc0c8a0d | ||
|
|
0f4ce76379 | ||
|
|
7aae705e03 | ||
|
|
257c2089b9 | ||
|
|
4673cad7a7 | ||
|
|
070af3dd26 | ||
|
|
88a99dacaa | ||
|
|
a74d89f57b | ||
|
|
daf57531ef | ||
|
|
875447134f | ||
|
|
d0d25416fc | ||
|
|
e36b430f9a | ||
|
|
8a6d4acb9f | ||
|
|
71181df1ac | ||
|
|
2f663089b0 | ||
|
|
a16fcfdf93 | ||
|
|
f22e1413f4 | ||
|
|
521828f6d1 | ||
|
|
7229b67238 | ||
|
|
cb7f1ffe07 | ||
|
|
7513798519 | ||
|
|
8939e85fb2 | ||
|
|
35cab2f35d | ||
|
|
bc95f47b02 | ||
|
|
2706d5cb2b | ||
|
|
80be66ba39 | ||
|
|
d38ecb09d1 | ||
|
|
9adaec3e08 | ||
|
|
e1738f3d47 | ||
|
|
a07704dcde | ||
|
|
c5ec465255 | ||
|
|
910d41f4f8 | ||
|
|
f20aec9544 | ||
|
|
d0ff9f7830 | ||
|
|
5be0724dda | ||
|
|
71bf0b2560 | ||
|
|
40ec3a2df9 | ||
|
|
1a889b37c0 | ||
|
|
3d4a4b22b9 | ||
|
|
579c394338 | ||
|
|
2efe368304 | ||
|
|
df62d74c8f | ||
|
|
53b11621ca | ||
|
|
cdbc7c5ef6 | ||
|
|
64d5b87d66 | ||
|
|
1272dd6232 | ||
|
|
85a7a9efb2 | ||
|
|
eef6aa8e58 | ||
|
|
11f619cc8b | ||
|
|
e11674028b | ||
|
|
4895f13846 | ||
|
|
88b60f34ec | ||
|
|
7acf76118c | ||
|
|
a6b6b17282 | ||
|
|
85ba8dd702 | ||
|
|
38ddd2a2cd | ||
|
|
89a087236a | ||
|
|
224fa7de7d | ||
|
|
990802f817 | ||
|
|
6c186a9959 | ||
|
|
cf03ac79a4 | ||
|
|
9a78559379 | ||
|
|
2a455e32ea | ||
|
|
4d1917144c | ||
|
|
03d9a10203 | ||
|
|
46bc0d7b50 | ||
|
|
f388b74894 | ||
|
|
bd0c3e2eb0 | ||
|
|
f002bd9ae6 | ||
|
|
963e4ddaba | ||
|
|
6e7767c92a | ||
|
|
f8f9621456 | ||
|
|
6671330e27 | ||
|
|
ce5d7b61a2 | ||
|
|
1710c8869f | ||
|
|
1ae8aba390 | ||
|
|
371ceba9ab | ||
|
|
695abc55e5 | ||
|
|
0b12caa57b | ||
|
|
c9f8cd4421 | ||
|
|
44228aa152 | ||
|
|
1801b1f7d6 | ||
|
|
3107c6adbc | ||
|
|
e8e2ccc347 | ||
|
|
54a0e73af1 | ||
|
|
0979d4f31b | ||
|
|
8be76d512c | ||
|
|
10ffe89144 | ||
|
|
b0e6a142bc | ||
|
|
ee1b5a8eec | ||
|
|
ede272d863 | ||
|
|
1cf05bcb67 | ||
|
|
f32b2bccc3 | ||
|
|
de8c05df2a | ||
|
|
a82f6ed257 | ||
|
|
75558a1f13 | ||
|
|
0b23870353 | ||
|
|
3d9761fe49 | ||
|
|
b361e49c5d | ||
|
|
1b4521f76e | ||
|
|
578c46d142 | ||
|
|
8b938e54a8 | ||
|
|
63a2f90347 | ||
|
|
0dbd0d0d9e | ||
|
|
5eea5ec4c4 | ||
|
|
04536355c3 | ||
|
|
0e2c5fff47 | ||
|
|
972b5a8bc1 | ||
|
|
70965577c5 | ||
|
|
d1b89469dd | ||
|
|
7a1da1450c | ||
|
|
1c855a3f78 | ||
|
|
d298ac8fcb | ||
|
|
e0f416a338 | ||
|
|
06cff86e4b | ||
|
|
b89faecc44 | ||
|
|
4fa4b49893 | ||
|
|
eda0c03828 | ||
|
|
d975512709 | ||
|
|
98022ef10f | ||
|
|
f60744a073 | ||
|
|
1d260966a9 | ||
|
|
030badde79 | ||
|
|
8dcb78499d | ||
|
|
a9996adfe0 | ||
|
|
f75bbf78b7 | ||
|
|
1f3e9d5788 | ||
|
|
2c94df2c6e | ||
|
|
e6b04f49a7 | ||
|
|
418536236c | ||
|
|
5bbd7111dc | ||
|
|
c96537700e | ||
|
|
9d2cd63c99 | ||
|
|
5159453642 | ||
|
|
2ff1def28c | ||
|
|
a102540dc8 | ||
|
|
76dbf04010 | ||
|
|
8b3a1a7fec | ||
|
|
67e137705d | ||
|
|
026be596a2 | ||
|
|
363dde6d63 | ||
|
|
3802d6d3de | ||
|
|
481be2e7d2 | ||
|
|
fb951c5840 | ||
|
|
e83d029605 | ||
|
|
4f45175c4e | ||
|
|
837ebbeebf | ||
|
|
008d0b3165 | ||
|
|
133c22376c | ||
|
|
9b93e0a26c | ||
|
|
599e47907e | ||
|
|
66dc0156fb | ||
|
|
f9e9170415 | ||
|
|
9caca35a6f | ||
|
|
0c3b4bf9b7 | ||
|
|
216bf92575 | ||
|
|
4c6f3e4510 | ||
|
|
8d74e8e30b | ||
|
|
f4a8e51d4a | ||
|
|
db9032755a | ||
|
|
db017fbd56 | ||
|
|
479ceadb35 | ||
|
|
ad1d5061a9 | ||
|
|
ff0a538ebd | ||
|
|
c81adfed61 | ||
|
|
2ccf6b65a7 | ||
|
|
a34eeb7735 | ||
|
|
ba6b9c085e | ||
|
|
04f1cf9b47 | ||
|
|
80c6e03ec4 | ||
|
|
9001a78701 | ||
|
|
703cab8d0d | ||
|
|
3c9cdc9251 | ||
|
|
032805520d | ||
|
|
b37f7cfdb1 | ||
|
|
3668d631ca | ||
|
|
7fa3ea24ac | ||
|
|
8a521cbf64 | ||
|
|
fe9601aa6d | ||
|
|
65e8162d67 | ||
|
|
b99be427ce | ||
|
|
6b3b011d0b | ||
|
|
b53ef867e4 | ||
|
|
215fd32738 | ||
|
|
921603e356 | ||
|
|
542ee611fc | ||
|
|
99a8e45598 | ||
|
|
f096bd2b0d | ||
|
|
26dd87ab7c | ||
|
|
a6ea081ba2 | ||
|
|
2e87610593 | ||
|
|
1c336fc03a | ||
|
|
8eafcaab24 | ||
|
|
c096f12994 | ||
|
|
5cfc8b3629 | ||
|
|
65b3d32eca | ||
|
|
61de3c3065 | ||
|
|
3b101f673b | ||
|
|
bd79159249 | ||
|
|
ca4425cb21 | ||
|
|
b386e44bf5 | ||
|
|
03995a0327 | ||
|
|
bd6a088aaf | ||
|
|
c2582f8e03 | ||
|
|
c122e27068 | ||
|
|
52a2428c28 | ||
|
|
87b60afdf7 | ||
|
|
10069846d5 | ||
|
|
f06f9fe734 | ||
|
|
348e538d10 | ||
|
|
5b9ff9a29e | ||
|
|
62b04983f2 | ||
|
|
c40b9c8b9e | ||
|
|
46dfaeecc9 | ||
|
|
e03c9829e3 | ||
|
|
97c0e96a5a | ||
|
|
2b559a30df | ||
|
|
73b4a7e79e | ||
|
|
7d8aeaf7de | ||
|
|
94390c3f1e | ||
|
|
78d509ac0f | ||
|
|
0b6238990b | ||
|
|
c0e4afcddd | ||
|
|
be6a2c4f0c | ||
|
|
0b8ff1a7e6 | ||
|
|
63134e091b | ||
|
|
50ab4690de | ||
|
|
c790bf3ebc | ||
|
|
746affd753 | ||
|
|
e766df4bcc | ||
|
|
847705dc96 | ||
|
|
f10e7aca70 | ||
|
|
9ee1550815 | ||
|
|
1de6eed0e1 | ||
|
|
78510922c5 | ||
|
|
41de3a4cb1 | ||
|
|
304eb7f919 | ||
|
|
442bb7eecc | ||
|
|
09941119e1 | ||
|
|
e3aaff5db4 | ||
|
|
99242748ee | ||
|
|
c1f4b0ca72 | ||
|
|
553e5ca631 | ||
|
|
aee4b48d20 | ||
|
|
bef85f8cea | ||
|
|
0161050077 | ||
|
|
a7c8b0b535 | ||
|
|
985a1c8426 | ||
|
|
2106b67380 | ||
|
|
58493967cd | ||
|
|
2c82032f4c | ||
|
|
c571f300c6 | ||
|
|
9d8b89962f | ||
|
|
af014f4c2d | ||
|
|
b1c1b24890 | ||
|
|
0c2b6e1c04 | ||
|
|
44d8b28b0b | ||
|
|
bd43a4298c | ||
|
|
0ed7deabaa | ||
|
|
56629e4c90 | ||
|
|
11732c2469 | ||
|
|
c356f37efc | ||
|
|
d987707b0d | ||
|
|
29a0e37cb2 | ||
|
|
9397a10682 | ||
|
|
5f0af9b0f7 | ||
|
|
2af72dec9c | ||
|
|
73802596bf | ||
|
|
10a677632d | ||
|
|
7dc0618259 | ||
|
|
3f4e205ed7 | ||
|
|
a9320f9a7c | ||
|
|
f2157fc2a3 | ||
|
|
10a904bd65 | ||
|
|
478314786d | ||
|
|
87b4f75c81 | ||
|
|
3cb8a371cf | ||
|
|
2be0650a3c | ||
|
|
38f59e7a39 | ||
|
|
9cae35c8fe | ||
|
|
d56539e2ef | ||
|
|
894c226ce0 | ||
|
|
8ad2c4c130 | ||
|
|
513fce6d1f | ||
|
|
6ce327bba0 | ||
|
|
a5182b1bc8 | ||
|
|
81e42d8949 | ||
|
|
534de1d9d3 | ||
|
|
d26d470f41 | ||
|
|
6ecddfb581 | ||
|
|
382093e49b | ||
|
|
de1b27c174 | ||
|
|
d0445b53b8 | ||
|
|
7c49be5fbf | ||
|
|
14bd84f9b6 | ||
|
|
4775d5b564 | ||
|
|
24d1124689 | ||
|
|
dc80bc7a42 | ||
|
|
913c60c2e3 | ||
|
|
20e6a76d22 | ||
|
|
67fa05a1d2 | ||
|
|
b101e233a0 | ||
|
|
dcecd60677 | ||
|
|
085a4aadcb | ||
|
|
f25553eb0b | ||
|
|
7debe89a72 | ||
|
|
7ac0ac677b | ||
|
|
c00a394007 | ||
|
|
98ec465085 | ||
|
|
6dd3a81c0b | ||
|
|
f8d939adaf | ||
|
|
2fbb8399e2 | ||
|
|
6f149720d0 | ||
|
|
f777d886f5 | ||
|
|
ce51e61fb4 | ||
|
|
79f7442e0f | ||
|
|
10e00dd573 | ||
|
|
797483db7f | ||
|
|
9263119a35 | ||
|
|
d121ff949d | ||
|
|
a06c43399c | ||
|
|
6acc706e26 | ||
|
|
94d5941cc1 | ||
|
|
e05c7d817c | ||
|
|
7f8de5ab98 | ||
|
|
5921410376 | ||
|
|
c0452cc7c5 | ||
|
|
e8f3d2efca | ||
|
|
e6d2594fea | ||
|
|
24e40f463e | ||
|
|
66c9c759a3 | ||
|
|
4f90bf87af | ||
|
|
86961069ef | ||
|
|
32d1f9a117 | ||
|
|
2da1b23e0a | ||
|
|
10fc5ddab4 | ||
|
|
6589997f4f | ||
|
|
b335abd5ba | ||
|
|
22a7c3d601 | ||
|
|
dfaaa4bad2 | ||
|
|
6cf1b086b9 | ||
|
|
3d7f44bda6 | ||
|
|
4c1cb2b327 | ||
|
|
94e531fafc | ||
|
|
34482f2d45 | ||
|
|
ba756da969 | ||
|
|
dded997fe2 | ||
|
|
e4cba90584 | ||
|
|
1ad4bb39b8 | ||
|
|
d9e062c03e | ||
|
|
30be19ce1b | ||
|
|
5f619d4a4d | ||
|
|
c1e592568f | ||
|
|
ae7be26205 | ||
|
|
6ab515ca7f | ||
|
|
7908ea4a00 | ||
|
|
87a402cce6 | ||
|
|
da219becdc | ||
|
|
54d6fe8a30 | ||
|
|
8b674ce700 | ||
|
|
fd882abe71 | ||
|
|
cee0a5a21b | ||
|
|
08d859c5e1 | ||
|
|
96f470b00d | ||
|
|
98fd06a58d | ||
|
|
2d7662cef9 | ||
|
|
bb5b8a47d2 | ||
|
|
ba0b40f364 | ||
|
|
d71e96da19 | ||
|
|
91cff3e686 | ||
|
|
da5cfa80d9 | ||
|
|
739a0d94ed | ||
|
|
e4a59bd712 | ||
|
|
6ebab37627 | ||
|
|
2437c2b79e | ||
|
|
9c64f005d4 | ||
|
|
13ff94ac5d | ||
|
|
9e3413ee97 | ||
|
|
efd9998e42 | ||
|
|
6dce86ebc4 | ||
|
|
6a5e116ae0 | ||
|
|
1aba60c958 | ||
|
|
ccc74a719c | ||
|
|
1d46c49052 | ||
|
|
7fe093cf22 | ||
|
|
02d123c56a | ||
|
|
fc9d253d07 | ||
|
|
a57acf85d5 | ||
|
|
e1ef260c8d | ||
|
|
5cb8539ef7 | ||
|
|
c2832bdca3 | ||
|
|
341d176e43 | ||
|
|
094ac647d8 | ||
|
|
f2ac092d37 | ||
|
|
fae5f81fdd | ||
|
|
0c621e96a6 | ||
|
|
b845d916f0 | ||
|
|
521c6e6b50 | ||
|
|
c783454707 | ||
|
|
cc127b2513 | ||
|
|
fdc81b4580 | ||
|
|
8fe37f1355 | ||
|
|
7c7689c284 | ||
|
|
7149dc2118 | ||
|
|
aba4cf9326 | ||
|
|
28110a97bd | ||
|
|
42d0b2714f | ||
|
|
659a86e3a4 | ||
|
|
cbb3a98a03 | ||
|
|
0534cff8c3 | ||
|
|
1e6d3bd27a | ||
|
|
ea8bf3a792 | ||
|
|
4a4ca84e39 | ||
|
|
29c749a870 | ||
|
|
65c673e873 | ||
|
|
39a5127d8f | ||
|
|
14bf91f59b | ||
|
|
ece7a22aed | ||
|
|
5edf0a5a18 | ||
|
|
1c12fa294a | ||
|
|
03c19f4da7 | ||
|
|
a2dd176afa | ||
|
|
d6f2d66235 | ||
|
|
7c718843a3 | ||
|
|
73b7915762 | ||
|
|
e29237b197 | ||
|
|
60fb3522a9 | ||
|
|
24a1d8e195 | ||
|
|
d71b35062c | ||
|
|
78895cf47f | ||
|
|
8c44afebf9 | ||
|
|
e228d72cfb | ||
|
|
51719b3e8c | ||
|
|
24960a2c2a | ||
|
|
88e7487067 | ||
|
|
a8922e6e16 | ||
|
|
a7083a3b57 | ||
|
|
05b6cf6205 | ||
|
|
57ee4e4733 | ||
|
|
a5d280c81f | ||
|
|
9165fafc08 | ||
|
|
30c9dc3799 | ||
|
|
3a97a8e4ab | ||
|
|
ba8b830efb | ||
|
|
4ec99bd75c | ||
|
|
12ff105a3d | ||
|
|
428e88994d | ||
|
|
76351ec45e | ||
|
|
50b24a147b | ||
|
|
e00b5ee977 | ||
|
|
ddda860f42 | ||
|
|
18580ed527 | ||
|
|
1c2bf33db2 | ||
|
|
45cf0422f9 | ||
|
|
515e38030d | ||
|
|
470c3bd1b5 | ||
|
|
ee298f5287 | ||
|
|
a7fd723e43 | ||
|
|
7e6db54f77 | ||
|
|
88ead5d9e3 | ||
|
|
eeef67a335 | ||
|
|
f1dd523ba8 | ||
|
|
84ff4eab21 | ||
|
|
0e7f9ce4ca | ||
|
|
1714d7b627 | ||
|
|
95be4351d4 | ||
|
|
8e6710213e | ||
|
|
1fe160783a | ||
|
|
a84736ebcc | ||
|
|
f02e31a440 | ||
|
|
809ae5fedc | ||
|
|
8a58a000e3 | ||
|
|
bfc6ed7f6e | ||
|
|
3dbd4af7ae | ||
|
|
2d9fb9e7b8 | ||
|
|
f37901ffb0 | ||
|
|
e15dad041c | ||
|
|
580a370d19 | ||
|
|
7642ffdd5a | ||
|
|
d8443a1cbe | ||
|
|
0718402ff5 | ||
|
|
4281b031e6 | ||
|
|
d2ee9bd66e | ||
|
|
bf7d47e3bf | ||
|
|
4b519165aa | ||
|
|
ca1ab64827 | ||
|
|
c18cb04d88 | ||
|
|
3b7443c997 | ||
|
|
5fead08584 | ||
|
|
598cf7049c | ||
|
|
8a8349defe | ||
|
|
bc4b8e593c | ||
|
|
b67de1a1e3 | ||
|
|
370727ad41 | ||
|
|
48cc9e5374 | ||
|
|
510fab2c07 | ||
|
|
aea9725329 | ||
|
|
1bc60057f4 | ||
|
|
81649c99de | ||
|
|
d2cadcef11 | ||
|
|
ac4e1f5be0 | ||
|
|
5d545329ad | ||
|
|
9e8db31e71 | ||
|
|
f8d7b9e0b9 | ||
|
|
9c6f6f2a12 | ||
|
|
3e8f36e723 | ||
|
|
db476a1787 | ||
|
|
740e6c6534 | ||
|
|
f317336a65 | ||
|
|
49c7d75922 | ||
|
|
06e1ffdccb | ||
|
|
9398632bdb | ||
|
|
c762636c1a | ||
|
|
8e9b28f521 | ||
|
|
00c3e8774a | ||
|
|
cfd633b9fe | ||
|
|
79371ddf34 | ||
|
|
73ac0cc856 | ||
|
|
9718b44236 | ||
|
|
3d9a4eef55 | ||
|
|
6ef822dd72 | ||
|
|
20750eaf89 | ||
|
|
072d69f050 | ||
|
|
4754d939e5 | ||
|
|
9c5d643170 | ||
|
|
c811c295c2 | ||
|
|
20fe78b650 | ||
|
|
9d86b4d235 | ||
|
|
0a9f16dc90 | ||
|
|
53489fab27 | ||
|
|
92b00d50b5 | ||
|
|
2e0b486c59 | ||
|
|
9b7113a6cf | ||
|
|
8dc3fcd392 | ||
|
|
4deb3bbe61 | ||
|
|
eda8e4d50e | ||
|
|
84d4918aa2 | ||
|
|
c8d46c2c23 | ||
|
|
f8c0077b2f | ||
|
|
1437ff8717 | ||
|
|
93cbab2f2d | ||
|
|
dd055b5970 | ||
|
|
2c8cdb221b | ||
|
|
d34d6528fe | ||
|
|
1d525a2d2f | ||
|
|
3038fc95c6 | ||
|
|
10a30e2135 | ||
|
|
b46c4429b4 | ||
|
|
e51648f368 | ||
|
|
235dbdc3f0 | ||
|
|
c8f68f23d9 | ||
|
|
5cc0870756 | ||
|
|
a50a5f1bea | ||
|
|
95a47810d5 | ||
|
|
8cb0377a31 | ||
|
|
66ad6472ae | ||
|
|
0a37bf022c | ||
|
|
bed977e88e | ||
|
|
04246aac57 | ||
|
|
cd5682f5b9 | ||
|
|
bad748e3d0 | ||
|
|
176016c7db | ||
|
|
98a9219c23 | ||
|
|
697259b968 | ||
|
|
010f6fc951 | ||
|
|
e8bbd8ffdd | ||
|
|
cd6dd5c3cf | ||
|
|
f9a5f5e009 | ||
|
|
8b8d0ccb9a | ||
|
|
c21fec4119 | ||
|
|
0fa5500adf | ||
|
|
9f835d753e | ||
|
|
387470fc07 | ||
|
|
72a9541a6c | ||
|
|
b7cde4fd05 | ||
|
|
e89ed58cfa | ||
|
|
cd863bac0d | ||
|
|
e94f6057a4 | ||
|
|
e30ef51d71 | ||
|
|
acd7e3b2da | ||
|
|
83f1177a90 | ||
|
|
5e7e8fcc97 | ||
|
|
504c17b3b0 | ||
|
|
ca9d268797 | ||
|
|
967e760aa0 | ||
|
|
8bed43092c | ||
|
|
89e519a4ef | ||
|
|
44bafba5fe | ||
|
|
5acc7680a1 | ||
|
|
7408fa9ed9 | ||
|
|
fb12c14831 | ||
|
|
7bf8eb1eb9 | ||
|
|
1c1f5fd22f | ||
|
|
a5543e7396 | ||
|
|
d22040a4cd | ||
|
|
5b66b914fd | ||
|
|
bb41825c5b | ||
|
|
7802653d57 | ||
|
|
f1289c29b9 | ||
|
|
e540ba996f | ||
|
|
f0f38dfde8 | ||
|
|
3ff5734088 | ||
|
|
098d97bd64 | ||
|
|
f40d642800 | ||
|
|
9891148867 | ||
|
|
ed95bcd45a | ||
|
|
899a28c552 | ||
|
|
e101be357c | ||
|
|
da443a34b4 | ||
|
|
89da1e8daf | ||
|
|
0f1f77659c | ||
|
|
905ff191da | ||
|
|
c9e0ac1f9f | ||
|
|
a26ac2cad8 | ||
|
|
26d260a938 | ||
|
|
51b08ef9b3 | ||
|
|
45e863a853 | ||
|
|
d252c95851 | ||
|
|
8b7722cd74 | ||
|
|
ef6c86a47e | ||
|
|
46082dba1a | ||
|
|
308588eec5 | ||
|
|
7701382ce3 | ||
|
|
7a4385aefa | ||
|
|
697645c757 | ||
|
|
79ac49a4cc | ||
|
|
ef7399d356 | ||
|
|
17f5bc5b98 | ||
|
|
8c49afc8f0 | ||
|
|
1ef499823d | ||
|
|
5094b9b5ee | ||
|
|
37896f558c | ||
|
|
07281583bd | ||
|
|
a7108cbfc5 | ||
|
|
256eb1a6aa | ||
|
|
6e1d1b3a9b | ||
|
|
f523654c21 | ||
|
|
a0b9796b9f | ||
|
|
2d2730faf8 | ||
|
|
83a7c4beda | ||
|
|
09cb3da751 | ||
|
|
a1507f6e90 | ||
|
|
ae7606fe6c | ||
|
|
05b36c091c | ||
|
|
90dc74e1b9 | ||
|
|
3e3444472e | ||
|
|
503586a51c | ||
|
|
a327489b0f | ||
|
|
f99295be02 | ||
|
|
564c903844 | ||
|
|
1ea536d294 | ||
|
|
e5d9e1a4f8 | ||
|
|
70723e80ce | ||
|
|
55ba81e3d4 | ||
|
|
62057eadd5 | ||
|
|
b14e837e87 | ||
|
|
868a4b8348 | ||
|
|
e3a31d2bbd | ||
|
|
0a50aad915 | ||
|
|
43c4798b50 | ||
|
|
d956cd691a | ||
|
|
51f5bc0aae | ||
|
|
03c98cd7b0 | ||
|
|
175fceb89e | ||
|
|
80c4abef7b | ||
|
|
88f949d66f | ||
|
|
19da89a193 | ||
|
|
8cab555838 | ||
|
|
72a8d326e3 | ||
|
|
710c814a3d | ||
|
|
f12a95f6cd | ||
|
|
980226f337 | ||
|
|
8a22af8929 | ||
|
|
a9507bbe7a | ||
|
|
7b06c4f724 | ||
|
|
dcf11b2f29 | ||
|
|
8089f329af | ||
|
|
20ec00a07e | ||
|
|
e7ff20c013 | ||
|
|
44e6abfbc3 | ||
|
|
9d174c2b84 | ||
|
|
f85669d99e | ||
|
|
7bf0cd4cf8 | ||
|
|
024b17cd07 | ||
|
|
dccbd0645a | ||
|
|
cbd80b1dff | ||
|
|
e97f001647 | ||
|
|
288cb01d1e | ||
|
|
58e50eade3 | ||
|
|
b5bfaf2468 | ||
|
|
60b928fe4c | ||
|
|
c2f5f25ee6 | ||
|
|
e16a88ee6c | ||
|
|
7f90bbf2fc | ||
|
|
6e6d2b85d4 | ||
|
|
fd99818ccd | ||
|
|
8c43f76d41 | ||
|
|
77b9fb7dae | ||
|
|
e390eafb22 | ||
|
|
f65a021bf0 | ||
|
|
0d12b95241 | ||
|
|
fbf2030820 | ||
|
|
d131ad342c | ||
|
|
793e0ddfa6 | ||
|
|
bee394f465 | ||
|
|
bf58975c4e | ||
|
|
3616dee7a0 | ||
|
|
76af57e5d9 | ||
|
|
f93f4ab75e | ||
|
|
ad19522db0 | ||
|
|
b26694a0f9 | ||
|
|
36ab405269 | ||
|
|
4620397dbe | ||
|
|
a42c526b18 | ||
|
|
14c7fe0b61 | ||
|
|
e6cfd63ecd | ||
|
|
b625ec36f2 | ||
|
|
9f8b577206 | ||
|
|
00e9dff047 | ||
|
|
4defecb1ea | ||
|
|
ea22d2debd | ||
|
|
4d9f67b93b | ||
|
|
aae6ac4f69 | ||
|
|
f3765eca39 | ||
|
|
9350c687e0 | ||
|
|
af7e73eb27 | ||
|
|
48341a9b4f | ||
|
|
7781717e37 | ||
|
|
6f7c21121a | ||
|
|
ac7bb087e4 | ||
|
|
ce59727cb2 | ||
|
|
f2da7b5e8c | ||
|
|
d8dc0ea467 | ||
|
|
1f39a87a62 | ||
|
|
b11f050cfd | ||
|
|
ff039d5fe4 | ||
|
|
9f836984f1 | ||
|
|
56fd51cd53 | ||
|
|
282c7b3195 | ||
|
|
0eeb0f5772 | ||
|
|
d9cc1dae70 | ||
|
|
ece8fcc91b | ||
|
|
4d01f061fb | ||
|
|
8318f44a43 | ||
|
|
75f5e42208 | ||
|
|
85da04fb94 | ||
|
|
5c79be3ac4 | ||
|
|
92e0697af3 | ||
|
|
ac1091da41 | ||
|
|
a78c0a9dbb | ||
|
|
728f1ee8b2 | ||
|
|
792e69edc6 | ||
|
|
27c4c1ae43 | ||
|
|
6a410fc890 | ||
|
|
155efb6dce | ||
|
|
fa1e491340 | ||
|
|
35ecf979a3 | ||
|
|
f32fefb57a | ||
|
|
ea9a7e808c | ||
|
|
42b2ce754a | ||
|
|
ece3569549 | ||
|
|
73d45929ea | ||
|
|
a2fc77de24 | ||
|
|
310f6de15a | ||
|
|
22d21b77a7 | ||
|
|
1039a2a78c | ||
|
|
c5525de5f0 | ||
|
|
d5b5777bed | ||
|
|
c5be925d70 | ||
|
|
3336e5a993 | ||
|
|
f1b9ac5b74 | ||
|
|
71417ea192 | ||
|
|
72a603ebfb | ||
|
|
b02e5c6dbb | ||
|
|
292903d050 | ||
|
|
14f80f197a | ||
|
|
301391b751 | ||
|
|
9366c54ad3 | ||
|
|
36272958ae | ||
|
|
51aaccc7b6 | ||
|
|
5aecb93b5e | ||
|
|
110ad3d6dc | ||
|
|
eb335668c7 | ||
|
|
5edbfcd631 | ||
|
|
34f48c3c25 | ||
|
|
1a908f2143 | ||
|
|
d5b78cd8c4 | ||
|
|
d00809040a | ||
|
|
83e3a4f792 | ||
|
|
872a3be669 | ||
|
|
6d53cf16f8 | ||
|
|
c9d3a45626 | ||
|
|
939d481396 | ||
|
|
569ede41a0 | ||
|
|
2b4e4637e6 | ||
|
|
511f78097c | ||
|
|
db08174fd1 | ||
|
|
01dd0e2432 | ||
|
|
4ed81251c5 | ||
|
|
0cb7085706 | ||
|
|
5cb460ee1d | ||
|
|
dcabdc3f8c | ||
|
|
9c82b4a1fa | ||
|
|
6c1953558c | ||
|
|
b3819957e5 | ||
|
|
74a916cc26 | ||
|
|
e9e9a2b097 | ||
|
|
c1a84aca31 | ||
|
|
622fbd4f12 | ||
|
|
82d723bfe2 | ||
|
|
4efed15025 | ||
|
|
457295440e | ||
|
|
81330e61e0 | ||
|
|
0c8610cf4d | ||
|
|
586dfe6b76 | ||
|
|
35af20e342 | ||
|
|
d56e6f97a7 | ||
|
|
7e571bb76b | ||
|
|
de1643f260 | ||
|
|
36e4dd081b | ||
|
|
e2c56236da | ||
|
|
32394a0091 | ||
|
|
3a2177dcd5 | ||
|
|
b66a21a9d1 | ||
|
|
f5b6222835 | ||
|
|
557b87f774 | ||
|
|
bf3e1c0c31 | ||
|
|
b20c56ff3e | ||
|
|
a507cab6d3 | ||
|
|
35fc070473 | ||
|
|
1813c24330 | ||
|
|
76bdaf1131 | ||
|
|
fcc56cc8a2 | ||
|
|
1a9838082e | ||
|
|
d60027e12b | ||
|
|
bd27263ec7 | ||
|
|
27eafd8a53 | ||
|
|
96da1139c0 | ||
|
|
668570bc61 | ||
|
|
d3ec3d899d | ||
|
|
d1479872f2 | ||
|
|
e8e4741bb0 | ||
|
|
33db034d49 | ||
|
|
6a85e88e94 | ||
|
|
8b7ad2e58f | ||
|
|
696a9a4128 | ||
|
|
54bb49caeb | ||
|
|
9c0afe3a7d | ||
|
|
6dd334f9f0 | ||
|
|
96dd8fcf48 | ||
|
|
9b960dd02a | ||
|
|
6b7d5fd58c | ||
|
|
ebcdeb7d80 | ||
|
|
67870df19e | ||
|
|
afd19dbefd | ||
|
|
a55097289b | ||
|
|
8de39b80cd | ||
|
|
0f038754e5 | ||
|
|
4aa278e4a0 | ||
|
|
e3562ecc99 | ||
|
|
b62d47da9c | ||
|
|
715e8d345a | ||
|
|
e748f39e20 | ||
|
|
428ade4fd8 | ||
|
|
e28ff71e97 | ||
|
|
f826eb992e | ||
|
|
ba3f14c83a | ||
|
|
82a3601748 | ||
|
|
eeab5252e6 | ||
|
|
838bbedd1a | ||
|
|
0e4ad056dd | ||
|
|
89163e73d0 | ||
|
|
665ebc5d47 | ||
|
|
32b1c35305 | ||
|
|
55c7be5fe9 | ||
|
|
5017e2e385 | ||
|
|
492c217125 | ||
|
|
269c9580fb | ||
|
|
5f691bb788 | ||
|
|
bcdd2242ef | ||
|
|
faee138574 | ||
|
|
fb69e212ba | ||
|
|
d8cc648a18 | ||
|
|
15d2b6217d | ||
|
|
b92f4a73b4 | ||
|
|
5f0e3bcd37 | ||
|
|
e6f336ae8b | ||
|
|
7c0f78edf1 | ||
|
|
a2ba1bd211 | ||
|
|
c95adeb8f2 | ||
|
|
c30306f779 | ||
|
|
ad8ac1f3bc | ||
|
|
63719b57ed | ||
|
|
0f775c6d66 | ||
|
|
523d80cafd | ||
|
|
ca48245ee3 | ||
|
|
fd6991529e | ||
|
|
1e04518d5c | ||
|
|
5953202a7e | ||
|
|
e333be38f4 | ||
|
|
c1bca14fd3 | ||
|
|
57bbddf071 | ||
|
|
9f930e3748 | ||
|
|
64f610b58e | ||
|
|
ed52fde57d | ||
|
|
f517bb3380 | ||
|
|
7beb75ccec | ||
|
|
f8ff966477 | ||
|
|
c9a79afe07 | ||
|
|
2834f4adb0 | ||
|
|
6d10730d00 | ||
|
|
abf2d7d74c | ||
|
|
be2bbc2f48 | ||
|
|
dbf75d0e56 | ||
|
|
60118a409e | ||
|
|
a08aa25531 | ||
|
|
ce61762e04 | ||
|
|
1c244b7bc0 | ||
|
|
b8b35ffb01 | ||
|
|
24418db7cd | ||
|
|
93c5a7b606 | ||
|
|
c61033caba | ||
|
|
b04998a70a | ||
|
|
5e281062c3 | ||
|
|
784be32b7e | ||
|
|
783a80c6c6 | ||
|
|
9796449910 | ||
|
|
381d62cc37 | ||
|
|
11ad64ffa3 | ||
|
|
1d0182f137 | ||
|
|
d1d9055e51 | ||
|
|
3767fcae50 | ||
|
|
1aa7603700 | ||
|
|
628e62978b | ||
|
|
8949ef0d15 | ||
|
|
75d8c71dd8 | ||
|
|
d931e3ceb9 | ||
|
|
01d727e6a3 | ||
|
|
e7ac29729c | ||
|
|
bb6e1641db | ||
|
|
703ed01dd0 | ||
|
|
77eaa99d36 | ||
|
|
b6fbcf5b0c | ||
|
|
aaa8cec640 | ||
|
|
ad409b4370 | ||
|
|
eab96a58e3 | ||
|
|
345329a74c | ||
|
|
60ce8b7256 | ||
|
|
db4eb3fbc2 | ||
|
|
109422a2de | ||
|
|
a6f33217c4 | ||
|
|
7cd6ae51b8 | ||
|
|
504dcf5a5e | ||
|
|
54219be493 | ||
|
|
d252dbfe54 | ||
|
|
130f7b7ae8 | ||
|
|
c21000efc0 | ||
|
|
d8e5df1778 | ||
|
|
1995bf0bf3 | ||
|
|
e6126eeab5 | ||
|
|
3cf320fe7b | ||
|
|
2d6da4f86b | ||
|
|
089ca96153 | ||
|
|
3f3902cb8e | ||
|
|
a16dc710c3 | ||
|
|
dec592bc63 | ||
|
|
e88af15954 | ||
|
|
3923f17212 | ||
|
|
6508bfc82b | ||
|
|
983b6a9135 | ||
|
|
9f4d3c61d1 | ||
|
|
308aa701d3 | ||
|
|
6c147f3202 | ||
|
|
0eb6d3d068 | ||
|
|
8f175ec887 | ||
|
|
850fb572dc | ||
|
|
7df7269780 | ||
|
|
96adcfc0e6 | ||
|
|
1415d66d15 | ||
|
|
4dd1c56feb | ||
|
|
2ee02a5ed7 | ||
|
|
329ff5ce0b | ||
|
|
759f8d8557 | ||
|
|
a56d0c87a9 | ||
|
|
13be5a2e39 | ||
|
|
73035bd402 | ||
|
|
1bd454ad99 | ||
|
|
928ed232a4 | ||
|
|
ab62dfba6a | ||
|
|
37e74b13fc | ||
|
|
27ffdd6fe9 | ||
|
|
da80c80707 | ||
|
|
3e853f2f4c | ||
|
|
b28939a548 | ||
|
|
820fbcbdf6 | ||
|
|
fef8cb45fe | ||
|
|
1c6eb891ef | ||
|
|
ebef5bf7ec | ||
|
|
db9fc47477 | ||
|
|
52cbb297dc | ||
|
|
6c2bd656f1 | ||
|
|
31a0a57dee | ||
|
|
88c971be72 | ||
|
|
085bed455d | ||
|
|
9349638970 | ||
|
|
49aec1efde | ||
|
|
6409588457 | ||
|
|
41e1a5d6c1 | ||
|
|
3862142d01 | ||
|
|
07be678e25 | ||
|
|
c72af0cee5 | ||
|
|
5df643d04e | ||
|
|
0bc8232032 | ||
|
|
cde7b3f860 | ||
|
|
ea60706eff | ||
|
|
a15ef6ed59 | ||
|
|
224a2c43f7 | ||
|
|
6dc5e764b0 | ||
|
|
a9dbc61644 | ||
|
|
5229cca547 | ||
|
|
7ea0f008de | ||
|
|
4cf5e2f0b0 | ||
|
|
80e71249e3 | ||
|
|
d7b4371ce4 | ||
|
|
a49cdc263a | ||
|
|
c1e0caa438 | ||
|
|
d7224e65e9 | ||
|
|
4288e6c1d2 | ||
|
|
1745ce9ad6 | ||
|
|
7855f376bd | ||
|
|
e6bbc1dabb | ||
|
|
66a2ce65ca | ||
|
|
96da61ce76 | ||
|
|
ae119ccb19 | ||
|
|
19b7a1709e | ||
|
|
0c7166bc86 | ||
|
|
a82e688e2e | ||
|
|
68f1581b9d | ||
|
|
415291c6f8 | ||
|
|
85190f9fe4 | ||
|
|
818e27b601 | ||
|
|
7703e1a727 | ||
|
|
2bad2cacb1 | ||
|
|
174dd44035 | ||
|
|
7ac4d6f69d | ||
|
|
c6efef034d | ||
|
|
46f0f52488 | ||
|
|
1ff85bf395 | ||
|
|
bcfce6efc6 | ||
|
|
646bafff37 | ||
|
|
3ebc9196f5 | ||
|
|
bcd9451b67 | ||
|
|
4677d5e443 | ||
|
|
66489f122b | ||
|
|
7f485ee001 | ||
|
|
df7acd9d39 | ||
|
|
9d01f76bfb | ||
|
|
d9a329ec3c | ||
|
|
50f9a84298 | ||
|
|
d297222ef2 | ||
|
|
ee10f53b5f | ||
|
|
7821feec6e | ||
|
|
5eb2fbf2b8 | ||
|
|
7978a32526 | ||
|
|
372e5ca453 | ||
|
|
e90174abd2 | ||
|
|
ca2aee9530 | ||
|
|
ce5a3f39a5 | ||
|
|
af0ae4cc4f | ||
|
|
a9e8caa182 | ||
|
|
c74cf2f0c2 | ||
|
|
db7fe94ad2 | ||
|
|
b39b452039 | ||
|
|
5527b818e4 | ||
|
|
abc6293c34 | ||
|
|
b5ca899872 | ||
|
|
8e086d5477 | ||
|
|
667fc27658 | ||
|
|
7c9b7e03a6 | ||
|
|
b3e9e81328 | ||
|
|
337fbe0dae | ||
|
|
fd746c33e9 | ||
|
|
243d3e0f1c | ||
|
|
825ff00812 | ||
|
|
46d0403e15 | ||
|
|
47d297b9a3 | ||
|
|
099270a5c9 | ||
|
|
1aa0a01c91 | ||
|
|
2bc1d98b06 | ||
|
|
d614975eff | ||
|
|
6528621eb0 | ||
|
|
f005c8ea62 | ||
|
|
d82123f824 | ||
|
|
571d28dbe5 | ||
|
|
7f53812d25 | ||
|
|
db88072d37 | ||
|
|
cf7e7e90c2 | ||
|
|
b8d31fd8c2 | ||
|
|
31f6a8aa3d | ||
|
|
4445de16a5 | ||
|
|
09b0950a9b | ||
|
|
8cfa3cc5f0 | ||
|
|
24b0efc7fd | ||
|
|
71558692bd | ||
|
|
dcd4e16ba0 | ||
|
|
b226b22d45 | ||
|
|
3c2c83194d | ||
|
|
680cf862d6 | ||
|
|
791ac89003 | ||
|
|
4d70ec1f6d | ||
|
|
e2321b4c98 | ||
|
|
d8722777b3 | ||
|
|
860983aad9 | ||
|
|
969116c611 | ||
|
|
e0751412e2 | ||
|
|
3f2396a35e | ||
|
|
28719e7e95 | ||
|
|
639ce8fc97 | ||
|
|
78012defd0 | ||
|
|
afa4131515 | ||
|
|
b3cc2766f5 | ||
|
|
f0b35bada3 | ||
|
|
3a38d8b0e8 | ||
|
|
9efb5e21cb | ||
|
|
640f5c214c | ||
|
|
76d4e3642d | ||
|
|
c1996d3095 | ||
|
|
5795534d86 | ||
|
|
d5b5fef68c | ||
|
|
cd230124b9 | ||
|
|
1aaadd93da | ||
|
|
8173be0201 | ||
|
|
4e27f3d26a | ||
|
|
cd7889a0f4 | ||
|
|
5c27fbd8ed | ||
|
|
287c328461 | ||
|
|
1a29c437f0 | ||
|
|
d6810fe3e3 | ||
|
|
00f9d0541a | ||
|
|
e0ecc0cfdd | ||
|
|
08f26a7609 | ||
|
|
cf1912ea68 | ||
|
|
ec79841749 | ||
|
|
af050b51b6 | ||
|
|
417326f95a | ||
|
|
aa50bd3e06 | ||
|
|
a01809a2cc | ||
|
|
2afbe66adb | ||
|
|
5ab4e8db10 | ||
|
|
90ffebae8f | ||
|
|
624adb11d7 | ||
|
|
4a23523d3c | ||
|
|
4f325f13c3 | ||
|
|
adf17e859b | ||
|
|
a8ed449621 | ||
|
|
2f85950163 | ||
|
|
62797397b9 | ||
|
|
c9ec72480b | ||
|
|
7d1af5ee29 | ||
|
|
38b5a08a5f | ||
|
|
ea49ade0eb | ||
|
|
4b7f2de1e7 | ||
|
|
af7a0ffc10 | ||
|
|
a16e91349f | ||
|
|
d5309df76b | ||
|
|
3d7b891e62 | ||
|
|
41fa83f047 | ||
|
|
68fd5cc6fe | ||
|
|
ee82fd98e0 | ||
|
|
558933de80 | ||
|
|
6a0d07d930 | ||
|
|
4b9738b5bb | ||
|
|
cbf10d28a8 | ||
|
|
5408d888a3 | ||
|
|
0fa3f55081 | ||
|
|
50afb69bf3 | ||
|
|
6d14e4b5e8 | ||
|
|
09c5c519d8 | ||
|
|
3afadfa003 | ||
|
|
78d8e40ca3 | ||
|
|
52bf44e728 | ||
|
|
7c59939116 | ||
|
|
0a8e30c717 | ||
|
|
36cf6f0975 | ||
|
|
a0d4441b62 | ||
|
|
ca1df1b168 | ||
|
|
fa8f258c90 | ||
|
|
c9db1cc0f1 | ||
|
|
627d7976ac | ||
|
|
52a169c393 | ||
|
|
d9785fb625 | ||
|
|
7854cd4495 | ||
|
|
ddd9ac0ee9 | ||
|
|
d1b4b2438f | ||
|
|
68790e7c79 | ||
|
|
70fdf7b6e6 | ||
|
|
3673a71f12 | ||
|
|
53ada30aa3 | ||
|
|
4dfc03e500 | ||
|
|
0596d0ab64 | ||
|
|
2265a2a470 | ||
|
|
4035179d26 | ||
|
|
d975743a91 | ||
|
|
fea4cc4922 | ||
|
|
712acec624 | ||
|
|
2752a7ef6f | ||
|
|
013381892c | ||
|
|
9841bda9ff | ||
|
|
2a892925b9 | ||
|
|
adff077c30 | ||
|
|
ba9def2d45 | ||
|
|
09c6c67640 | ||
|
|
776e4e44a1 | ||
|
|
af72873ce3 | ||
|
|
4bc44c7ab8 | ||
|
|
31e065dee2 | ||
|
|
80606e79de | ||
|
|
d62f8663e4 | ||
|
|
5dd532c468 | ||
|
|
88767d1951 | ||
|
|
cdfa6a995a | ||
|
|
6c76c6b994 | ||
|
|
3b52f2b30e | ||
|
|
8de16a2732 | ||
|
|
34cd1b08f2 | ||
|
|
9357e9872c | ||
|
|
a57ed60b88 | ||
|
|
3f5ee10c34 | ||
|
|
4f17e1b965 | ||
|
|
ab97d74692 | ||
|
|
e30a309f92 | ||
|
|
703d77a927 | ||
|
|
2f1d317d87 | ||
|
|
f7b4c42e1d | ||
|
|
21af1eba85 | ||
|
|
72b0add80c | ||
|
|
67b174dc8c | ||
|
|
a41a59a57b | ||
|
|
9c8cffee50 | ||
|
|
d9ff151211 | ||
|
|
0917d89523 | ||
|
|
71e2a8d8ad | ||
|
|
7d5ac56b6c | ||
|
|
2ca834c18e | ||
|
|
78bd1bbeae | ||
|
|
82e6ed7c0b | ||
|
|
4c6aa2945a | ||
|
|
dc85bb1eab | ||
|
|
89c80c157c | ||
|
|
b8e86892f2 | ||
|
|
5d97e2253c | ||
|
|
9c3912fe1f | ||
|
|
c1d644a004 | ||
|
|
87ad6ac3a0 | ||
|
|
f016970f5a | ||
|
|
71dbebd5f5 | ||
|
|
ff2936c6fb | ||
|
|
8a789e04e9 | ||
|
|
eaed7de6bb | ||
|
|
803ee2f2b5 | ||
|
|
356121b18f | ||
|
|
8bd8d2d132 | ||
|
|
9adf77a512 | ||
|
|
73b45fb899 | ||
|
|
66381f0dec | ||
|
|
87525d1d2a | ||
|
|
81d2156fb1 | ||
|
|
916e68b5b4 | ||
|
|
5016db518a | ||
|
|
9154a8faef | ||
|
|
764ac0decb | ||
|
|
fe293f0126 | ||
|
|
2620c62848 | ||
|
|
c0c0a96cf4 | ||
|
|
1af5dd4aae | ||
|
|
15c4ce1d3e | ||
|
|
be6895a20b | ||
|
|
a367f18492 | ||
|
|
dc24658b31 | ||
|
|
a80d45eb31 | ||
|
|
404ff84565 | ||
|
|
2dea81a904 | ||
|
|
6974131eec | ||
|
|
33a8c95d39 | ||
|
|
5ef4cceb33 | ||
|
|
c64faba66e | ||
|
|
c0fd2daf5c | ||
|
|
2d164c9914 | ||
|
|
9f91fe91f5 | ||
|
|
caf366f6f3 | ||
|
|
12a9361f7c | ||
|
|
8904e07b7d | ||
|
|
bf1b017af4 | ||
|
|
e67b5fb257 | ||
|
|
7e7b5ccd13 | ||
|
|
28b0dbf18c | ||
|
|
9de2d941ef | ||
|
|
e9fa7a0882 | ||
|
|
4f60efebe2 | ||
|
|
cfc3e87f2a | ||
|
|
4c42f75021 | ||
|
|
79260bc482 | ||
|
|
e03fb4aac0 | ||
|
|
c5ec83e083 | ||
|
|
264802cf4b | ||
|
|
16ca839ed3 | ||
|
|
afb3303db5 | ||
|
|
9f77b65a52 | ||
|
|
08f9ba66f9 | ||
|
|
39c879f9ad | ||
|
|
aef29fa705 | ||
|
|
ab073976c4 | ||
|
|
2491078e1f | ||
|
|
59bcae0bff | ||
|
|
fc8d9c87d4 | ||
|
|
127a2deddf | ||
|
|
efc504f504 | ||
|
|
25d3c699eb | ||
|
|
f4227faf12 | ||
|
|
a5adc725df | ||
|
|
bfab6a9364 | ||
|
|
38f396900c | ||
|
|
861f73c393 | ||
|
|
561a7b8def | ||
|
|
cf3a605a0e | ||
|
|
7b9a7df27a | ||
|
|
eb40ba199b | ||
|
|
f0385f01ec | ||
|
|
ff7d7bd43c | ||
|
|
82f7e549ff | ||
|
|
f8cb5e054b | ||
|
|
6ef9435c21 | ||
|
|
375a012a26 | ||
|
|
6511ecfac4 | ||
|
|
723af168a0 | ||
|
|
54565c619d | ||
|
|
8c42f06815 | ||
|
|
7569fd0bcd | ||
|
|
e10b2a467e | ||
|
|
6f5abe0185 | ||
|
|
80333614e2 | ||
|
|
a8dd501fb2 | ||
|
|
68231ced3f | ||
|
|
a1729c30d9 | ||
|
|
dde28c2dad | ||
|
|
0dd7e6f7a8 | ||
|
|
0ee4046adb | ||
|
|
efb4f9926a | ||
|
|
89bac530b9 | ||
|
|
3b2d324d98 | ||
|
|
0f41a5b833 | ||
|
|
c2835d836c | ||
|
|
caf1c6347a | ||
|
|
b0443eb9c0 | ||
|
|
058208e16d | ||
|
|
b6f3bd8c8c | ||
|
|
acf804d20a | ||
|
|
718e099e9d | ||
|
|
4af7092f83 | ||
|
|
2ff44a1671 | ||
|
|
2990aa1964 | ||
|
|
add8cde7e9 | ||
|
|
b59e5fc306 | ||
|
|
59c0a7b335 | ||
|
|
a2cfc31f4a | ||
|
|
0061c1a8b5 | ||
|
|
33addafe05 | ||
|
|
b696b0ffca | ||
|
|
2d9d8009c4 | ||
|
|
11f4f1f151 | ||
|
|
e943bb77d0 | ||
|
|
fb9bc7adfb | ||
|
|
560520877f | ||
|
|
d805574217 | ||
|
|
62490c7387 | ||
|
|
2008716692 | ||
|
|
ffb415143a | ||
|
|
4606544b93 | ||
|
|
2f9060fff7 | ||
|
|
47a59d4cf7 | ||
|
|
d620f89726 | ||
|
|
0d5f4a45b6 | ||
|
|
33e207b792 | ||
|
|
de3d9de26f | ||
|
|
cea6bd5d0b | ||
|
|
5cebbb80d6 | ||
|
|
a5c225b3d4 | ||
|
|
9075bfc468 | ||
|
|
5aa2bdef67 | ||
|
|
a0cfda673b | ||
|
|
5a37107d90 | ||
|
|
e86c694176 | ||
|
|
5eb55ccb7d | ||
|
|
3be33c24eb | ||
|
|
5e6ea5b7d3 | ||
|
|
b170657293 | ||
|
|
46c2608228 | ||
|
|
62b96e3966 | ||
|
|
b2680a62ad | ||
|
|
bae72e3a96 | ||
|
|
bf43810d56 | ||
|
|
25a8702317 | ||
|
|
5fe3b55ef8 | ||
|
|
2447ee6729 | ||
|
|
97901fa909 | ||
|
|
245ea71185 | ||
|
|
c80dff1f12 | ||
|
|
48fc7bfe4c | ||
|
|
5569f3aeb6 | ||
|
|
cc4ac7ee85 | ||
|
|
0909fce097 | ||
|
|
c38ea39bbe | ||
|
|
81883294d8 | ||
|
|
fa8d9029fe | ||
|
|
a4bb2f47aa | ||
|
|
a9b9328252 | ||
|
|
8d3941cbcb | ||
|
|
96ac35d699 | ||
|
|
698ab6fe15 | ||
|
|
60fbf81d2b | ||
|
|
17346b61bb | ||
|
|
72434a30ed | ||
|
|
98c20f5872 | ||
|
|
f79d1b57f0 | ||
|
|
9159f89dfa | ||
|
|
97de942a66 | ||
|
|
213614590f | ||
|
|
40d00cb735 | ||
|
|
fd3a23d87d | ||
|
|
3585476b88 | ||
|
|
bb0883fc21 | ||
|
|
92362fa6b9 | ||
|
|
74e3269b24 | ||
|
|
91050d029e | ||
|
|
3635eebb17 | ||
|
|
1ea18f7c0f | ||
|
|
2a0a212f9a | ||
|
|
3904664dce | ||
|
|
3d730556e2 | ||
|
|
009810646c | ||
|
|
dc255c55b4 | ||
|
|
dd6f224327 | ||
|
|
3722df0853 | ||
|
|
6a6b32f053 | ||
|
|
86ca482b0b | ||
|
|
42be50924e | ||
|
|
e04fef9581 | ||
|
|
f60adac49c | ||
|
|
04f5ec40c3 | ||
|
|
edf377c204 | ||
|
|
22d64101b6 | ||
|
|
7fe46f7666 | ||
|
|
353624f1c2 | ||
|
|
2a5f45c567 | ||
|
|
1cb3bc25c6 | ||
|
|
5d20ec30d7 | ||
|
|
9773c4b786 | ||
|
|
a25a446f84 | ||
|
|
94ff4c8db5 | ||
|
|
60dcdc3edb | ||
|
|
fabb0ef729 | ||
|
|
1afb13bb99 | ||
|
|
a27e1b1ee6 | ||
|
|
338c006e28 | ||
|
|
4f15cc2fa6 | ||
|
|
405eec558f | ||
|
|
e73b9b0174 | ||
|
|
14a6a74c55 | ||
|
|
622562faa3 | ||
|
|
a27bb38f53 | ||
|
|
c94c48de71 | ||
|
|
1ddd82e7ae | ||
|
|
13eb920830 | ||
|
|
55d001ae88 | ||
|
|
c6a2df3514 | ||
|
|
c690686d1d | ||
|
|
7c9a9f0c42 | ||
|
|
e8ec00f9b4 | ||
|
|
226b019ca3 | ||
|
|
5697bbd861 | ||
|
|
d78caa00d9 | ||
|
|
0fa3015ff5 | ||
|
|
0b6789c231 | ||
|
|
6d44395f78 | ||
|
|
4f2b1cc1b0 | ||
|
|
a7fd30518f | ||
|
|
32b14163ec | ||
|
|
f25c10dcc6 | ||
|
|
2156f7d402 | ||
|
|
957aea8d3e | ||
|
|
bd6ce25302 | ||
|
|
f2cf0fd440 | ||
|
|
a08b065749 | ||
|
|
a297314933 | ||
|
|
dcbbe655f5 | ||
|
|
ab2fd95872 | ||
|
|
5f8f31cf0c | ||
|
|
cf1112a1cb | ||
|
|
b40236cf49 | ||
|
|
3db26f1f66 | ||
|
|
728400c64e | ||
|
|
20d7648a39 | ||
|
|
ef40e4826d | ||
|
|
c335c741c4 | ||
|
|
8e3868bb4d | ||
|
|
45ed9508af | ||
|
|
932e46f1bd | ||
|
|
96ce5882f4 | ||
|
|
999e4853c4 | ||
|
|
fc1c7db7bd | ||
|
|
0157853f41 | ||
|
|
ef3e5297c6 | ||
|
|
96c4302c11 | ||
|
|
5c5c5b56dd | ||
|
|
07fb6c6451 | ||
|
|
a488ed3a63 | ||
|
|
0815e38add | ||
|
|
93e146a9e2 | ||
|
|
523d7bc43d | ||
|
|
1991df3d93 | ||
|
|
a6080be8fb | ||
|
|
3b0b45c877 | ||
|
|
e2635baada | ||
|
|
afbee165de | ||
|
|
b7d07956af | ||
|
|
99639a817f | ||
|
|
9ac6ebb845 | ||
|
|
cba51c4f2e | ||
|
|
208cc1efeb | ||
|
|
2f159022be | ||
|
|
f63195b311 | ||
|
|
fcf76b8dd5 | ||
|
|
db73257689 | ||
|
|
98d37bf202 | ||
|
|
b11198ba11 | ||
|
|
f2d5ae698a | ||
|
|
38c89a5c53 | ||
|
|
8056459611 | ||
|
|
41c4cca03f | ||
|
|
72821c3537 | ||
|
|
645795502d | ||
|
|
fc04378e18 | ||
|
|
d0b371bf3d | ||
|
|
d30ad7f4d5 | ||
|
|
d2222b8e44 | ||
|
|
8260840c79 | ||
|
|
6380c6732a | ||
|
|
71c55d22f9 | ||
|
|
4196fb6da5 | ||
|
|
fc0984d4a5 | ||
|
|
9f4f55fb95 | ||
|
|
2aa05bc998 | ||
|
|
5807c3e00d | ||
|
|
e7199d3e90 | ||
|
|
f3eb61391b | ||
|
|
4a3ba95063 | ||
|
|
e311789396 | ||
|
|
f57bc13d47 | ||
|
|
4d0b9d556d | ||
|
|
a883c43f16 | ||
|
|
abce4f395c | ||
|
|
5bd967a0b2 | ||
|
|
bcb6da2141 | ||
|
|
8462373f69 | ||
|
|
2d8d999aae | ||
|
|
0200bb9844 | ||
|
|
bb3a29fd7a | ||
|
|
7c3815fff5 | ||
|
|
03b7dc9398 | ||
|
|
b84647c145 | ||
|
|
899fe1c183 | ||
|
|
030088a20f | ||
|
|
cf2ffdb4ac | ||
|
|
808948cdb5 | ||
|
|
d4f542f35a | ||
|
|
9a87eb6a46 | ||
|
|
44068174b7 | ||
|
|
3f7790cec7 | ||
|
|
a23921e59e | ||
|
|
7ff24343bc | ||
|
|
890d41ea0d | ||
|
|
cbfc1b3323 | ||
|
|
428026ceed | ||
|
|
aa63381f2c | ||
|
|
1c2ee43220 | ||
|
|
fd68e7b85b | ||
|
|
a8de4a9d70 | ||
|
|
366377f740 | ||
|
|
cca96f8bfd | ||
|
|
897c6aa15e | ||
|
|
5db557a43e | ||
|
|
332bfe57e9 | ||
|
|
92cd17a819 | ||
|
|
01ca066b12 | ||
|
|
433d15d740 | ||
|
|
64b5b301ac | ||
|
|
278ed4e5c6 | ||
|
|
12a46a64f2 | ||
|
|
be42f1e20d | ||
|
|
eebeef97c8 | ||
|
|
f22f82c584 | ||
|
|
7c694806dd | ||
|
|
d3c297850e | ||
|
|
1a7d83d7ba | ||
|
|
350dfc1510 | ||
|
|
f3e2dc643b | ||
|
|
070697d518 | ||
|
|
355740f62e | ||
|
|
748b0a69a8 | ||
|
|
b7ff38e669 | ||
|
|
085c9feeca | ||
|
|
5fca02ea0c | ||
|
|
d8725e27d4 | ||
|
|
4b9df72b42 | ||
|
|
1aa4f75e8a | ||
|
|
2315f46feb | ||
|
|
b641992810 | ||
|
|
f583b1716c | ||
|
|
9b9a4287ff | ||
|
|
5dc0f41370 | ||
|
|
1558ec7ee9 | ||
|
|
4e4eae71f5 | ||
|
|
892277da5f | ||
|
|
852c29fd21 | ||
|
|
d59ff38178 | ||
|
|
52c1608601 | ||
|
|
5c708d5291 | ||
|
|
a2a1c58ba5 | ||
|
|
0db347ed3b | ||
|
|
d7e378c704 | ||
|
|
179fcd7bba | ||
|
|
7357529794 | ||
|
|
d15790b1a2 | ||
|
|
41b4a291da | ||
|
|
ecc31f2ca7 | ||
|
|
6d237ac653 | ||
|
|
5b549c8bbb | ||
|
|
e87ef42ad5 | ||
|
|
3da9c3e04d | ||
|
|
191513bdd5 | ||
|
|
15cf6fc02a | ||
|
|
0eecd137b1 | ||
|
|
0c64716eb5 | ||
|
|
d314e22a0f | ||
|
|
3a4d69f5f3 | ||
|
|
b7f392bebf | ||
|
|
cdfbf233ee | ||
|
|
ba7a4a4703 | ||
|
|
3b67eefd91 | ||
|
|
9ed054c277 | ||
|
|
93500e1787 | ||
|
|
467c36ad0a | ||
|
|
5f805555b8 | ||
|
|
b3cd894715 | ||
|
|
a37852ce5b | ||
|
|
4ef91e7719 | ||
|
|
56a2bd226c | ||
|
|
5c84c58d2e | ||
|
|
d88c26b3b6 | ||
|
|
84a3c800c9 | ||
|
|
e26685d09a | ||
|
|
cf8960ff4d | ||
|
|
1f716d6c8d | ||
|
|
b4a552301a | ||
|
|
33c882ecb9 | ||
|
|
dd1334a352 | ||
|
|
bab3f47f70 | ||
|
|
d0c367b31f | ||
|
|
e875bf72c9 | ||
|
|
3c55329056 | ||
|
|
a3e3c23cb1 | ||
|
|
fa961d1769 | ||
|
|
44cf597dc9 | ||
|
|
2e3d5300bd | ||
|
|
cb80ce396b | ||
|
|
900ae19a31 | ||
|
|
72f742d99b | ||
|
|
d7dbec973c | ||
|
|
266309ea51 | ||
|
|
9dfc4da688 | ||
|
|
7f134e331a | ||
|
|
87f9c8a005 | ||
|
|
d4faba8e34 | ||
|
|
727cb87c4d | ||
|
|
9d568c7811 | ||
|
|
529a188b8b | ||
|
|
02fad83ca3 | ||
|
|
41578a40b5 | ||
|
|
231315cd11 | ||
|
|
4e1f5a43b3 | ||
|
|
45aae6f25c | ||
|
|
9d0b715ddf | ||
|
|
ff2e915371 | ||
|
|
f2ee9a2e2a | ||
|
|
b51254a975 | ||
|
|
6003abc15f | ||
|
|
b6583d0a71 | ||
|
|
d75142e9dc | ||
|
|
ec88122f13 | ||
|
|
59be7ec370 | ||
|
|
57ff1dba25 | ||
|
|
f5fb718c86 | ||
|
|
d1b5e75f13 | ||
|
|
b9d3ad70d7 | ||
|
|
cb653e6a5d | ||
|
|
1c6c53eb2c | ||
|
|
6d8d933e97 | ||
|
|
0dc2c5ca69 | ||
|
|
586e2845dd | ||
|
|
fdca477148 | ||
|
|
49895b3e2f | ||
|
|
5301d56ae2 | ||
|
|
1eff1948a5 | ||
|
|
547aa5d178 | ||
|
|
0babe0f639 | ||
|
|
8b027c4fbf | ||
|
|
b46e74fe6f | ||
|
|
a855f3b835 | ||
|
|
10d38be7e7 | ||
|
|
08d1926f8b | ||
|
|
bbdc159762 | ||
|
|
bba297b4a4 | ||
|
|
671af4a48c | ||
|
|
27e287978d | ||
|
|
7d79c451ab | ||
|
|
f45f84d7ed | ||
|
|
06b0d02208 | ||
|
|
bc09aadadb | ||
|
|
dda7f3d871 | ||
|
|
7f025f4e16 | ||
|
|
1e904db3b0 | ||
|
|
c013b03300 | ||
|
|
08aa0852b7 | ||
|
|
23f2c1c42d | ||
|
|
53744bf65f | ||
|
|
430fdb17a8 | ||
|
|
b37fdd89bf | ||
|
|
e57bae4f66 | ||
|
|
0587074d61 | ||
|
|
a6e441828a | ||
|
|
cbb148dff4 | ||
|
|
1f4ab12fbb | ||
|
|
0f895bf1b2 | ||
|
|
05af375909 | ||
|
|
92606f2c7f | ||
|
|
2d587b3728 | ||
|
|
48468b08d0 | ||
|
|
31b590c16c | ||
|
|
78bdb2e198 | ||
|
|
c64c10cbf0 | ||
|
|
ae91e1d7f1 | ||
|
|
ca2209dd48 | ||
|
|
354855edc2 | ||
|
|
98087b0773 | ||
|
|
3dfb0aa16a | ||
|
|
18b9bf5b0b | ||
|
|
6f4a13e46f | ||
|
|
eacfb7f301 | ||
|
|
42a8da52d1 | ||
|
|
e8c2761f5b | ||
|
|
0c911b6ffe | ||
|
|
06086f4a7e | ||
|
|
0330cab60b | ||
|
|
a4b373e631 | ||
|
|
1f6b342856 | ||
|
|
175a0b3a13 | ||
|
|
b31a41fb2f | ||
|
|
5e77712607 | ||
|
|
95131842f1 | ||
|
|
1d8cd6505e | ||
|
|
dde8100af9 | ||
|
|
1a8361f8d1 | ||
|
|
4b21be5814 | ||
|
|
cde27e425b | ||
|
|
71e46c4318 | ||
|
|
ef559ffd56 | ||
|
|
71336b75f0 | ||
|
|
2aa28b4ed4 | ||
|
|
c5a210aaaf | ||
|
|
43013180d6 | ||
|
|
fbc4b4c665 | ||
|
|
b5bba8ea40 | ||
|
|
f8aab69542 | ||
|
|
bd0b23b658 | ||
|
|
879773164f | ||
|
|
0e71f74d71 | ||
|
|
d4ec5a832c | ||
|
|
27b2606b4d | ||
|
|
e650919a59 | ||
|
|
12191c9bce | ||
|
|
9084b24162 | ||
|
|
7411ddf127 | ||
|
|
102d54732b | ||
|
|
276971e4fa | ||
|
|
7f6d996caf | ||
|
|
d5ee71294d | ||
|
|
9901421af3 | ||
|
|
8cc97c6045 | ||
|
|
3f47742f62 | ||
|
|
ed4ae15cf8 | ||
|
|
0ab0134dd5 | ||
|
|
14f0820ea4 | ||
|
|
1158496e83 | ||
|
|
24e6cfae03 | ||
|
|
61d09e90db | ||
|
|
19ef68d422 | ||
|
|
c000469738 | ||
|
|
58c295fe50 | ||
|
|
c9b31e318f | ||
|
|
bae167a609 | ||
|
|
1f3187a64e | ||
|
|
a84c3e58fd | ||
|
|
451349a83a | ||
|
|
1191071c97 | ||
|
|
845abd8827 | ||
|
|
5c10bb898c | ||
|
|
fc58e2f9f5 | ||
|
|
a05e19384d | ||
|
|
96071d26df | ||
|
|
30fc90d18b | ||
|
|
8066115162 | ||
|
|
84efcadaef | ||
|
|
f549b9e6e1 | ||
|
|
a639457de2 | ||
|
|
ee06dfa001 | ||
|
|
50a2759494 | ||
|
|
fa52b57aaf | ||
|
|
6e93c2ff06 | ||
|
|
934b08f5cd | ||
|
|
cf808f7f30 | ||
|
|
073273e07b | ||
|
|
8830a96a5b | ||
|
|
3a638115eb | ||
|
|
e30e3208ea | ||
|
|
5d41473916 | ||
|
|
41f9b781b3 | ||
|
|
0b4e78a254 | ||
|
|
d36b532d81 | ||
|
|
84d66f3db3 | ||
|
|
4c3a88527b | ||
|
|
1613d1c3d6 | ||
|
|
d88f30eb3d | ||
|
|
d1a6f6e0cb | ||
|
|
5a67563b9c | ||
|
|
632ecffb12 | ||
|
|
2d8557b92e | ||
|
|
a2d358d896 | ||
|
|
06f2989b91 | ||
|
|
b3a8ec4cd6 | ||
|
|
a01f2b150a | ||
|
|
e7de300e73 | ||
|
|
8ed35599f3 | ||
|
|
32fdadd613 | ||
|
|
abd2afe1f5 | ||
|
|
789cde0a48 | ||
|
|
4a716e2bd5 | ||
|
|
3426afe277 | ||
|
|
2c2a107579 | ||
|
|
0e5f9c8398 | ||
|
|
e01762e302 | ||
|
|
7e6d43f2e0 | ||
|
|
4feb1771cd | ||
|
|
ad589e3b4c | ||
|
|
b19e4e7e32 | ||
|
|
31b44bf445 | ||
|
|
faa4d7370d | ||
|
|
8104d8dd82 | ||
|
|
5b11fae577 | ||
|
|
1b1ee81b21 | ||
|
|
87efc9126a | ||
|
|
d7c34d2bcc | ||
|
|
a7cf6a8277 | ||
|
|
8e94d9247e | ||
|
|
e76ae699d3 | ||
|
|
5a324e6eae | ||
|
|
10e4cc830d | ||
|
|
59ae671635 | ||
|
|
980886ace9 | ||
|
|
74e6b1d499 | ||
|
|
171853966e | ||
|
|
9082655773 | ||
|
|
b46b385c97 | ||
|
|
c415d45310 | ||
|
|
5c26690e26 | ||
|
|
9f4825e253 | ||
|
|
32ac71c499 | ||
|
|
101cd5996c | ||
|
|
0359fc6005 | ||
|
|
1064cda1bd | ||
|
|
33465f55e9 | ||
|
|
0e0762b050 | ||
|
|
262666e870 | ||
|
|
88be2910ce | ||
|
|
c75fb10878 | ||
|
|
20ed2bda8e | ||
|
|
0300ab165a | ||
|
|
8fe3161d7e | ||
|
|
610d83566b | ||
|
|
620deb17d4 | ||
|
|
c781a9f263 | ||
|
|
ff3df98fdf | ||
|
|
976cf67f3f | ||
|
|
cd2cea1e6f | ||
|
|
49820156ad | ||
|
|
cafadfe2fc | ||
|
|
0bd132ffb4 | ||
|
|
09c387dd3a | ||
|
|
b6284527df | ||
|
|
1fa5608196 | ||
|
|
f83757e077 | ||
|
|
7ba305cd72 | ||
|
|
fd33162fc5 | ||
|
|
7194705ba6 | ||
|
|
1bef94548a | ||
|
|
e6ceb0fe6a | ||
|
|
2f52b1143b | ||
|
|
d4798270c1 | ||
|
|
e6ecc6977e | ||
|
|
54594a3a5a | ||
|
|
c9ae2287e7 | ||
|
|
6a0075a0d9 | ||
|
|
131c15e84a | ||
|
|
139cef3f71 | ||
|
|
29dcde44a9 | ||
|
|
0be3a3d510 | ||
|
|
41f7f7ec92 | ||
|
|
194ff2a76c | ||
|
|
6c6ebdfe5c | ||
|
|
6153b10950 | ||
|
|
530914ca89 | ||
|
|
e5113d0e43 | ||
|
|
0d8c2743b8 | ||
|
|
be9046a53e | ||
|
|
e65e644a0f | ||
|
|
f8d10b4428 | ||
|
|
c775ddc60a | ||
|
|
4aef972c9f | ||
|
|
0c2b9693a2 | ||
|
|
e1391531d8 | ||
|
|
d6b010d653 | ||
|
|
eaf5d37349 | ||
|
|
5c230b3b50 | ||
|
|
2adb57d11e | ||
|
|
47f5eccb68 | ||
|
|
e80dcbc58d | ||
|
|
7864dbf77b | ||
|
|
57add311ce | ||
|
|
ccdec15cf8 | ||
|
|
78a3117309 | ||
|
|
934b31bb1f | ||
|
|
7dfb4e1422 | ||
|
|
849ccb0f71 | ||
|
|
23635b2c44 | ||
|
|
0da8b2e292 | ||
|
|
fd962940f0 | ||
|
|
d44fd1fc25 | ||
|
|
c6e27a2803 | ||
|
|
f8d3ac276a | ||
|
|
2963e93679 | ||
|
|
e8f49f1c08 | ||
|
|
27ebcae325 | ||
|
|
eff0d1b71b | ||
|
|
56c966e762 | ||
|
|
63e4311f2e | ||
|
|
ae26ba75f9 | ||
|
|
8b929de8d4 | ||
|
|
5839e78f3e | ||
|
|
549fdb70a7 | ||
|
|
07d0133874 | ||
|
|
61a4546299 | ||
|
|
f90998904e | ||
|
|
72b5b8fe0b | ||
|
|
1e549d3f92 | ||
|
|
b1a2d8708a | ||
|
|
f1c036af5f | ||
|
|
ac5e1d600c | ||
|
|
a6d9a208f2 | ||
|
|
4e995ce9d1 | ||
|
|
9dee330c79 | ||
|
|
fdc03195eb | ||
|
|
67ed8faeec | ||
|
|
536200abd3 | ||
|
|
37fa50ad95 | ||
|
|
9c5d154d85 | ||
|
|
1dbb83d6ec | ||
|
|
896fe14e07 | ||
|
|
3574794cea | ||
|
|
ba91288a28 | ||
|
|
ed44eb9758 | ||
|
|
5f32cecaf1 | ||
|
|
cca764cceb | ||
|
|
fd530693a7 | ||
|
|
ed6fba57ee | ||
|
|
d0b47d84dd | ||
|
|
23bcfb1622 | ||
|
|
b8fca4849f | ||
|
|
f3610a5923 | ||
|
|
aa0e1862af | ||
|
|
cae492bf2c | ||
|
|
9ce169d3f0 | ||
|
|
958579aa25 | ||
|
|
1d9f47e5b1 | ||
|
|
c3d8700c8c | ||
|
|
f5d33c65a9 | ||
|
|
8b940e1571 | ||
|
|
b39decf7e5 | ||
|
|
8064329207 | ||
|
|
9af589e612 | ||
|
|
2edd846525 | ||
|
|
4f861ec281 | ||
|
|
b698664672 | ||
|
|
9acfc97d0a | ||
|
|
9ee5c461a3 | ||
|
|
afc75a9be5 | ||
|
|
4c3cd262eb | ||
|
|
d58f2786e0 | ||
|
|
07f40b07fe | ||
|
|
05fa67b8aa | ||
|
|
bb0a118507 | ||
|
|
b440240952 | ||
|
|
f593eedf20 | ||
|
|
38ca7f71fa | ||
|
|
00b69ecc81 | ||
|
|
d7590fb32f | ||
|
|
c61023ee9d | ||
|
|
f47afca78a | ||
|
|
d9ddb3e20b | ||
|
|
6f692c140d | ||
|
|
905d073f20 | ||
|
|
64a8947f2c | ||
|
|
9257edcd56 | ||
|
|
a04e50c329 | ||
|
|
84bfbbb5c9 | ||
|
|
c16692d216 | ||
|
|
63803b0322 | ||
|
|
58d18a3f0e | ||
|
|
d988aa4291 | ||
|
|
cf1d91b771 | ||
|
|
ed6dd0063c | ||
|
|
2485fd3607 | ||
|
|
4e678448cc | ||
|
|
e47b5a7cce | ||
|
|
11525a9f35 | ||
|
|
cb6a1b8ab4 | ||
|
|
6b97023215 | ||
|
|
d5af21716b | ||
|
|
069a255c6b | ||
|
|
8d20f0cbcf | ||
|
|
cb086a6016 | ||
|
|
3c65b74093 | ||
|
|
7892c95c0b | ||
|
|
8865a01155 | ||
|
|
2b7bea7f17 | ||
|
|
481b87fbfa | ||
|
|
292eb6d30b | ||
|
|
0183200122 | ||
|
|
25c9571a16 | ||
|
|
f2cef3852a | ||
|
|
2699b817ca | ||
|
|
ba1180e7a8 | ||
|
|
eefbab5cbd | ||
|
|
be146bff04 | ||
|
|
820f0b9976 | ||
|
|
12d30d9e28 | ||
|
|
bd821c49f8 | ||
|
|
882499cc66 | ||
|
|
9bfe5d8b56 | ||
|
|
a0ac78c60f | ||
|
|
5d6fcc8939 | ||
|
|
4b9128c444 | ||
|
|
d448321ce9 | ||
|
|
680dadbbe8 | ||
|
|
6c0d706cd9 | ||
|
|
fe75742083 | ||
|
|
ba595302f4 | ||
|
|
7de747cf61 | ||
|
|
539b211b99 | ||
|
|
e776046f66 | ||
|
|
837953074c | ||
|
|
45cb20c9e8 | ||
|
|
426d5f0163 | ||
|
|
e8927ecf51 | ||
|
|
14d9cd0813 | ||
|
|
63841c1861 | ||
|
|
d514f7a982 | ||
|
|
1e9497ddc3 | ||
|
|
dcea5e874d | ||
|
|
7354925566 | ||
|
|
3368768244 | ||
|
|
bd56abc4c3 | ||
|
|
7be5045cbb | ||
|
|
5e0a9f5993 | ||
|
|
915d369d98 | ||
|
|
7d65accaf6 | ||
|
|
78363232b3 | ||
|
|
8fb2341ea8 | ||
|
|
3a79870da8 | ||
|
|
2adf5275f1 | ||
|
|
bfa2d814f8 | ||
|
|
4f44b37f08 | ||
|
|
36e8544049 | ||
|
|
bc0d725f0e | ||
|
|
4858f29ec5 | ||
|
|
31d8ae741b | ||
|
|
7ce0f79561 | ||
|
|
18d2a918c0 | ||
|
|
7ae706b629 | ||
|
|
cf997f71c6 | ||
|
|
308f7ecb12 | ||
|
|
418d5fd97e | ||
|
|
788e078f64 | ||
|
|
9094054cdc | ||
|
|
09eabbd567 | ||
|
|
a00074a86c | ||
|
|
7852ae4321 | ||
|
|
7546a15bf6 | ||
|
|
c00e904304 | ||
|
|
c8ad353f45 | ||
|
|
57162c91c3 | ||
|
|
cab3f28907 | ||
|
|
5d7fd2e1e5 | ||
|
|
623a029e3b |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -24,3 +24,4 @@ test/nashorn/lib
|
|||||||
NashornProfile.txt
|
NashornProfile.txt
|
||||||
**/JTreport/**
|
**/JTreport/**
|
||||||
**/JTwork/**
|
**/JTwork/**
|
||||||
|
/jb/project/java-gradle/.idea/workspace.xml
|
||||||
|
|||||||
68
.hgtags
68
.hgtags
@@ -565,3 +565,71 @@ deaef57bf366fdab908b97a9760d0fa6e273abcd jdk-11.0.5+6
|
|||||||
ee7128cf507a670ae84841b202a7a06711608359 jdk-11.0.5+9
|
ee7128cf507a670ae84841b202a7a06711608359 jdk-11.0.5+9
|
||||||
6385eb06af947d8ec5fd51a4733bc8187efb88b5 jdk-11.0.5+10
|
6385eb06af947d8ec5fd51a4733bc8187efb88b5 jdk-11.0.5+10
|
||||||
6385eb06af947d8ec5fd51a4733bc8187efb88b5 jdk-11.0.5-ga
|
6385eb06af947d8ec5fd51a4733bc8187efb88b5 jdk-11.0.5-ga
|
||||||
|
6eb89e59a06a2f83f7fe0399da4bf4ca638d46f3 jdk-11.0.6+1
|
||||||
|
8d3e0c2c009815cae59ad3c9bf9e4b1f090efc8b jdk-11.0.6+2
|
||||||
|
f8b2e95a1d41585a757729ed28ce35d43aba1b3f jdk-11.0.6+3
|
||||||
|
577a1fc440666e3c0724e07f6a8d736b2c7905cf jdk-11.0.6+4
|
||||||
|
bfce7426e091127450a70b7d07941c0f9e02d347 jdk-11.0.6+5
|
||||||
|
aa260c24480a2bd7d21ad1c863e6fe9a3973011e jdk-11.0.6+6
|
||||||
|
42500af9232ed5b2990ff618a1e92ef6ccc0b9af jdk-11.0.6+7
|
||||||
|
0c54fb645a7388cb7e3d587b4df75a2edd7826e2 jdk-11.0.6+8
|
||||||
|
1859de77ee6cd7e10ac0b9e71027d9f974a6e481 jdk-11.0.6+9
|
||||||
|
837b7afec083aaddeef0a6c3e6501b2200eaf1d4 jdk-11.0.6+10
|
||||||
|
837b7afec083aaddeef0a6c3e6501b2200eaf1d4 jdk-11.0.6-ga
|
||||||
|
8cdfd6139b1efc9064b10f24a82848b1bb4a0550 jdk-11.0.7+1
|
||||||
|
15cc1c8a63718c394e9cd1f35d735bb74a850084 jdk-11.0.7+2
|
||||||
|
f2d8162261ae3c1e50eb0667b3c9669caa67c652 jdk-11.0.7+3
|
||||||
|
d3d1f7f67de13fd5c227424b9ddc514c0ca32aff jdk-11.0.7+4
|
||||||
|
f03574cfc0d728ca7b5146ca22c707717f9f899f jdk-11.0.7+5
|
||||||
|
17d2e0c27889a00a3df7de9bcea0e8caf0d1771a jdk-11.0.7+6
|
||||||
|
f56b853d452bd339e3f4360cf4be42cc90f9284c jdk-11.0.7+7
|
||||||
|
3c570d183ab2afc0b204a8e980be69e7fbe761ef jdk-11.0.7+8
|
||||||
|
7201cd0c64776aa574d252b03a4c92b25d0a7d7f jdk-11.0.7+9
|
||||||
|
44ce940b344b9f240be4807f5b8f06e178e3aecd jdk-11.0.7+10
|
||||||
|
44ce940b344b9f240be4807f5b8f06e178e3aecd jdk-11.0.7-ga
|
||||||
|
2eb415c82056bdc308d23ee6761f422de46dc5e5 jdk-11.0.8+1
|
||||||
|
88eaa453331e9aeca979d58509538ebb74831ce4 jdk-11.0.8+2
|
||||||
|
2c0c9cfe2a4e1340f7db106e2220dbd0d5b86092 jdk-11.0.8+3
|
||||||
|
aa6c93b4f1acf4166d74d0252b35c53ad71d8540 jdk-11.0.8+4
|
||||||
|
8df1a601187c0b4cb9e525075bd7b85ee3d72595 jdk-11.0.8+5
|
||||||
|
e42c6d1a1993c720a4643140190bb1ba6f1bbf9f jdk-11.0.8+6
|
||||||
|
46d4984bb3c6dd1b0f5135505b77921d23c69841 jdk-11.0.8+7
|
||||||
|
40b646e9d8fbb2d70992b61e4f4b08ca5652c907 jdk-11.0.8+8
|
||||||
|
59f8565ee5e224697a9e09ee2c557836733bc579 jdk-11.0.8+9
|
||||||
|
0b0d55cb09b29360ab254edeef32a3b386e9713e jdk-11.0.8+10
|
||||||
|
0b0d55cb09b29360ab254edeef32a3b386e9713e jdk-11.0.8-ga
|
||||||
|
5cc275af8419178813299cc0ed81a2a85dadfdcd jdk-11.0.9+1
|
||||||
|
3112657edde9491fb83f098f1a8b7e9275bcb2f7 jdk-11.0.9+2
|
||||||
|
d8a0513b92ee262d4e64c1e13d43e1b3f3e5c5d5 jdk-11.0.9+3
|
||||||
|
cb299db4a5698b814f6b3ba1f3d73d01f6a0e1f6 jdk-11.0.9+4
|
||||||
|
55237fa85afb404bc0dc0f4948a6459d8d3e5dac jdk-11.0.9+5
|
||||||
|
c07e785e36f587b95e151de382844cea3d1a5868 jdk-11.0.9+6
|
||||||
|
1ba4c16a8afa3f5aaa7830fc1f14a0137cc2553b jdk-11.0.9+7
|
||||||
|
8711e8554e15ae2fa38718d5c7dc858da10e8a4a jdk-11.0.9+8
|
||||||
|
e872676174c7f171a9864becba83cb783cfec9d0 jdk-11.0.9+9
|
||||||
|
6ac1b68e7c0034e08a96d7d37e93e5075a6e8d61 jdk-11.0.9+10
|
||||||
|
4397fa4529b2794ddcdf3445c0611fe383243fb4 jdk-11.0.9+11
|
||||||
|
4397fa4529b2794ddcdf3445c0611fe383243fb4 jdk-11.0.9-ga
|
||||||
|
4fd46d208f0a4b55924af8e0c2fb6bcf46e18ec6 jdk-11.0.9.1+0
|
||||||
|
27723943c0dd65a191cbefe031cec001521e4b13 jdk-11.0.9.1+1
|
||||||
|
31affc22b3b5f5d43783ffadf57f22848bad9db8 jdk-11.0.9.1-ga
|
||||||
|
f3168de4eb0dd74bf8e81537f62742bde5e412c3 jdk-11.0.10+1
|
||||||
|
a35aa07b57bab3690224e3af939ee085d50eb476 jdk-11.0.10+2
|
||||||
|
bca12c00a776f8cee7a0eeaf788499b9eab9cf9d jdk-11.0.10+3
|
||||||
|
9504fa6f98f5aad0aa1ac36d5bff3260a32020c8 jdk-11.0.10+4
|
||||||
|
5f5c3544ccb4d0bbc638e665524b292860dd9515 jdk-11.0.10+5
|
||||||
|
4b9bc2a1dde0631958393125997855382325964d jdk-11.0.10+6
|
||||||
|
c45f74d45787a857d35b5a66c9b0304c91a9c5d0 jdk-11.0.10+7
|
||||||
|
43428f69099f6f87f6e1922deacbf13e1adb751f jdk-11.0.10+8
|
||||||
|
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10+9
|
||||||
|
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10-ga
|
||||||
|
4ed322bf6b0098353ceaecf35662fadf457cd81d jdk-11.0.11+1
|
||||||
|
b68647c6ecc1e73111d8047448d75966f255460f jdk-11.0.11+2
|
||||||
|
14cc036b17a5f4be5b0643e6b24ed32563684ab9 jdk-11.0.11+3
|
||||||
|
c4405735470a92e2c45490b89a8099252f3481d2 jdk-11.0.11+4
|
||||||
|
38430a8a4488582612c6a87ab58d109cc5217e8b jdk-11.0.11+5
|
||||||
|
e41ae00add1d76a8f25adb558933382947ea840d jdk-11.0.11+6
|
||||||
|
14f9928caac31368d27f13e4e21ca25c1e0be950 jdk-11.0.11+7
|
||||||
|
9f0347b029d3a0349f23befcfb68ee02d85d9034 jdk-11.0.11+8
|
||||||
|
15862747ee15445292b4b9949b4f0f4badba4812 jdk-11.0.11+9
|
||||||
|
15862747ee15445292b4b9949b4f0f4badba4812 jdk-11.0.11-ga
|
||||||
|
|||||||
6
.idea/copyright/JetBrains.xml
generated
6
.idea/copyright/JetBrains.xml
generated
@@ -1,9 +1,7 @@
|
|||||||
<component name="CopyrightManager">
|
<component name="CopyrightManager">
|
||||||
<copyright>
|
<copyright>
|
||||||
<option name="notice" value="Copyright 2000-&#36;today.year JetBrains s.r.o. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." />
|
<option name="allowReplaceRegexp" value="JetBrains" />
|
||||||
<option name="keyword" value="Copyright" />
|
<option name="notice" value="Copyright 2000-&#36;today.year JetBrains s.r.o. 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. 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." />
|
||||||
<option name="allowReplaceKeyword" value="JetBrains" />
|
|
||||||
<option name="myName" value="JetBrains" />
|
<option name="myName" value="JetBrains" />
|
||||||
<option name="myLocal" value="true" />
|
|
||||||
</copyright>
|
</copyright>
|
||||||
</component>
|
</component>
|
||||||
14
.idea/vcs.xml
generated
14
.idea/vcs.xml
generated
@@ -1,5 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="IssueNavigationConfiguration">
|
||||||
|
<option name="links">
|
||||||
|
<list>
|
||||||
|
<IssueNavigationLink>
|
||||||
|
<option name="issueRegexp" value="[A-Z]+\-\d+" />
|
||||||
|
<option name="linkRegexp" value="http://youtrack.jetbrains.com/issue/$0" />
|
||||||
|
</IssueNavigationLink>
|
||||||
|
<IssueNavigationLink>
|
||||||
|
<option name="issueRegexp" value="^(\d+)\:" />
|
||||||
|
<option name="linkRegexp" value="https://bugs.openjdk.java.net/browse/JDK-$1" />
|
||||||
|
</IssueNavigationLink>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
147
README.md
147
README.md
@@ -1,94 +1,145 @@
|
|||||||
[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
|
[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
|
||||||
|
|
||||||
# Downloads
|
# Welcome to JetBrains Runtime!
|
||||||
|
|
||||||
|Windows-x64 |macOS |Linux-x64 |
|
JetBrains Runtime is a fork of [OpenJDK](https://github.com/openjdk/jdk) available for Windows, Mac OS X, and Linux.
|
||||||
|-------------|-------------|-------------|
|
It includes a number enhancements in font rendering, HiDPI support, ligatures, performance improvements, and bugfixes.
|
||||||
|<a href="https://bintray.com/jetbrains/intellij-jdk/openjdk9-windows-x64/_latestVersion"> <img src="https://api.bintray.com/packages/jetbrains/intellij-jdk/openjdk9-windows-x64/images/download.svg"/></a>|<a href="https://bintray.com/jetbrains/intellij-jdk/openjdk9-osx-x64/_latestVersion"> <img src="https://api.bintray.com/packages/jetbrains/intellij-jdk/openjdk9-osx-x64/images/download.svg"/></a>|<a href="https://bintray.com/jetbrains/intellij-jdk/openjdk9-linux-x64/_latestVersion"><img src="https://api.bintray.com/packages/jetbrains/intellij-jdk/openjdk9-linux-x64/images/download.svg"/></a>|
|
|
||||||
|
|
||||||
|
## Releases
|
||||||
|
Download the latest releases of JetBrains Runtime to use with JetBrains IDEs. The full list
|
||||||
|
can be found on the [releases page](https://github.com/JetBrains/JetBrainsRuntime/releases).
|
||||||
|
|
||||||
# How JetBrains Runtime is organised
|
| IDE Version | Latest JBR | Date Released |
|
||||||
## Workspaces
|
| --- | --- | --- |
|
||||||
|
| 2021.2 | [11_0_11-b1504.13](https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jb11_0_11-b1504.13) | 19-Jul-2021 |
|
||||||
|
| 2021.1 | [11.0.11+9-b1341.60](https://confluence.jetbrains.com/pages/viewpage.action?pageId=218857477) | 15-Jun-2021 |
|
||||||
|
| 2020.3 | [11_0_11-b1145.115](https://confluence.jetbrains.com/pages/viewpage.action?pageId=219349001) | 21-Jun-2021 |
|
||||||
|
|
||||||
[github.com/JetBrains/JetBrainsRuntime](https://github.com/JetBrains/JetBrainsRuntime)
|
## Contents
|
||||||
|
- [Welcome to JetBrains Runtime](#jetbrains-runtime)
|
||||||
|
- [Products Built on JetBrains Runtime](#products-built-on-jetbrains-runtime)
|
||||||
|
- [Getting Sources](#getting-sources)
|
||||||
|
- [macOS, Linux](#macos-linux)
|
||||||
|
- [Windows](#sources-windows)
|
||||||
|
- [Configuring the Build Environment](#configuring-the-build-environment)
|
||||||
|
- [Linux (Docker)](#linux-docker)
|
||||||
|
- [Ubuntu Linux](#ubuntu-linux)
|
||||||
|
- [Windows](#build-windows)
|
||||||
|
- [macOS](#macos)
|
||||||
|
- [Contributing](#contributing)
|
||||||
|
- [Resources](#resources)
|
||||||
|
|
||||||
## Getting sources
|
## Products Built on JetBrains Runtime
|
||||||
__OSX, Linux:__
|
* [Android Studio](https://developer.android.com/studio). The official IDE for Google's Android operating system.
|
||||||
|
* [CLion](https://www.jetbrains.com/clion/). A cross-platform IDE for C and C++ from JetBrains.
|
||||||
|
* [DataGrip](https://www.jetbrains.com/datagrip/). The IDE for Databases and SQL from JetBrains.
|
||||||
|
* [GoLand](https://www.jetbrains.com/go/). The cross-platform Go IDE from JetBrains.
|
||||||
|
* [IntelliJ IDEA](https://www.jetbrains.com/idea/). The IDE for JVM from JetBrains.
|
||||||
|
* [JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html). The Java profiler.
|
||||||
|
* [PhpStorm](https://www.jetbrains.com/phpstorm/). The PHP IDE from JetBrains.
|
||||||
|
* [PyCharm](https://www.jetbrains.com/pycharm/). The Python IDE from JetBrains.
|
||||||
|
* [Rider](https://www.jetbrains.com/rider/). The cross-platform .NET IDE from JetBrains.
|
||||||
|
* [RubyMine](https://www.jetbrains.com/ruby/). The Ruby and Rails IDE from JetBrains.
|
||||||
|
* [WebStorm](https://www.jetbrains.com/webstorm/). The JavaScript IDE from JetBrains.
|
||||||
|
* [YourKit](https://www.yourkit.com/). Java and .NET profilers.
|
||||||
|
|
||||||
|
## Getting Sources
|
||||||
|
### macOS, Linux
|
||||||
```
|
```
|
||||||
git config --global core.autocrlf input
|
git config --global core.autocrlf input
|
||||||
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
||||||
```
|
```
|
||||||
|
|
||||||
__Windows:__
|
### Windows
|
||||||
|
<a name="sources-windows"></a>
|
||||||
```
|
```
|
||||||
git config --global core.autocrlf false
|
git config --global core.autocrlf false
|
||||||
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
||||||
```
|
```
|
||||||
|
|
||||||
# Configure Local Build Environment
|
## Configuring the Build Environment
|
||||||
[OpenJDK build docs](http://hg.openjdk.java.net/jdk/jdk11/raw-file/tip/doc/building.html)
|
Here are quick per-platform instructions for those who can't wait to get started.
|
||||||
Tip for all platforms: run ./configure and check output.
|
Please refer to [OpenJDK build docs](http://hg.openjdk.java.net/jdk/jdk11/raw-file/tip/doc/building.html) for in-depth
|
||||||
Usually, it has meaningful advice how to solve your problem.
|
coverage of all the details.
|
||||||
|
|
||||||
## Linux (docker)
|
> **_TIP:_** To get a preliminary report of what's missing, run `./configure` and check its output.
|
||||||
|
> It would usually have a meaningful advice on how to solve the problem.
|
||||||
|
|
||||||
|
### Linux (Docker)
|
||||||
|
Create a container:
|
||||||
```
|
```
|
||||||
$ cd jb/project/docker
|
$ cd jb/project/docker
|
||||||
$ docker build .
|
$ docker build .
|
||||||
...
|
...
|
||||||
Successfully built 942ea9900054
|
Successfully built 942ea9900054
|
||||||
|
```
|
||||||
|
Run these commands in the new container:
|
||||||
|
```
|
||||||
$ docker run -v `pwd`../../../../:/JetBrainsRuntime -it 942ea9900054
|
$ docker run -v `pwd`../../../../:/JetBrainsRuntime -it 942ea9900054
|
||||||
|
|
||||||
# cd /JetBrainsRuntime
|
# cd /JetBrainsRuntime
|
||||||
# sh ./configure
|
# sh ./configure
|
||||||
# make images CONF=linux-x86_64-normal-server-release
|
# make images CONF=linux-x86_64-normal-server-release
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Linux (Ubuntu 18.10 desktop)
|
### Ubuntu Linux
|
||||||
|
Install the necessary tools, libraries, and headers with:
|
||||||
|
```
|
||||||
|
$ sudo apt-get install autoconf make build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev \
|
||||||
|
libxt-dev libxrandr-dev libcups2-dev libfontconfig1-dev libasound2-dev \
|
||||||
|
openjdk-11-jdk
|
||||||
|
```
|
||||||
|
Then run the following:
|
||||||
```
|
```
|
||||||
$ sudo apt-get install autoconf make build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libxrandr-dev libcups2-dev libfontconfig1-dev libasound2-dev
|
|
||||||
|
|
||||||
$ cd JetBrainsRuntime
|
$ cd JetBrainsRuntime
|
||||||
$ sh ./configure --disable-warnings-as-errors
|
$ sh ./configure --disable-warnings-as-errors
|
||||||
$ make images
|
$ make images
|
||||||
```
|
```
|
||||||
|
|
||||||
## Windows
|
### Windows
|
||||||
Install:
|
<a name="build-windows"></a>
|
||||||
|
Install the following:
|
||||||
|
* [Cygwin x64](http://www.cygwin.com/).
|
||||||
|
Required packages: `autoconf`, `binutils`, `cpio`, `diffutils`, `file`, `gawk`, `gcc-core`, `make`, `m4`, `unzip`, `zip`.
|
||||||
|
Install those together with Cygwin.
|
||||||
|
* [Visual Studio compiler toolset](https://visualstudio.microsoft.com/downloads/).
|
||||||
|
Install with the desktop development kit, which includes Windows SDK and compilers.
|
||||||
|
Visual Studio 2015 is supported by default.
|
||||||
|
* [Java 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html).
|
||||||
|
If you have problems while configuring, read [Java tips on Cygwin](http://horstmann.com/articles/cygwin-tips.html).
|
||||||
|
|
||||||
* [Cygwin x64](http://www.cygwin.com/)
|
From the command line:
|
||||||
Required packages: autoconf, binutils, cpio, diffutils, file, gawk, gcc-core, make, m4, unzip, zip.
|
|
||||||
**Install them while installing cygwin**.
|
|
||||||
* Visual Studio compiler toolset [Download](https://visualstudio.microsoft.com/downloads/)
|
|
||||||
Visual Studio 2015 has support by default.
|
|
||||||
**Install with desktop development kit, it includes Windows SDK and compilers**.
|
|
||||||
* [Java 11](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
|
||||||
If you have problems while configuring [read java tips on cygwin](http://horstmann.com/articles/cygwin-tips.html)
|
|
||||||
|
|
||||||
From command line
|
|
||||||
```
|
```
|
||||||
"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
||||||
"c:\Program_Files\cygwin64\bin\mintty.exe" /bin/bash -l
|
"c:\Program_Files\cygwin64\bin\mintty.exe" /bin/bash -l
|
||||||
```
|
```
|
||||||
First command will set env vars, the second will run cygwin shell with proper environment.
|
The first command sets up environment variables, the second starts a Cygwin shell with the proper environment.
|
||||||
In cygwin shell
|
|
||||||
```
|
In the Cygwin shell:
|
||||||
cd JetBrainsRuntime
|
```
|
||||||
./configure --disable-warnings-as-errors
|
$ cd JetBrainsRuntime
|
||||||
make images
|
$ bash configure --enable-option-checking=fatal --with-toolchain-version=2015 \
|
||||||
|
--with-boot-jdk="/cygdrive/c/Program Files/Java/jdk-11.0.5" --disable-warnings-as-errors
|
||||||
|
$ make images
|
||||||
```
|
```
|
||||||
|
|
||||||
## OSX
|
### macOS
|
||||||
|
Install the following:
|
||||||
install Xcode console tools, autoconf (via homebrew)
|
* Xcode command line developer tools and `autoconf` via [Homebrew](getDpiInfo).
|
||||||
|
* [Java 11](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html).
|
||||||
run
|
|
||||||
|
|
||||||
|
From the command line:
|
||||||
```
|
```
|
||||||
sh ./configure --prefix=$(pwd)/build --disable-warnings-as-errors
|
$ cd JetBrainsRuntime
|
||||||
make images
|
$ sh ./configure --prefix=$(pwd)/build --disable-warnings-as-errors
|
||||||
|
$ make images
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contribution
|
## Contributing
|
||||||
We will be happy to receive your pull requests. Before you submit one, please sign our Contributor License Agreement (CLA) https://www.jetbrains.com/agreements/cla/
|
We are happy to receive your pull requests!
|
||||||
|
Before you submit one, please sign our [Contributor License Agreement (CLA)](https://www.jetbrains.com/agreements/cla/).
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
* [JetBrains Runtime on github](https://github.com/JetBrains/JetBrainsRuntime).
|
||||||
|
* [OpenJDK build instructions](http://hg.openjdk.java.net/jdk/jdk11/raw-file/tip/doc/building.html).
|
||||||
|
* [OpenJDK test instructions](http://hg.openjdk.java.net/jdk/jdk11/raw-file/tip/doc/building.html#running-tests).
|
||||||
|
* [How to develop OpenJDK with CLion](https://blog.jetbrains.com/clion/2020/03/openjdk-with-clion/).
|
||||||
|
|||||||
@@ -68,10 +68,12 @@
|
|||||||
</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="#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="#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>
|
||||||
<li><a href="#specifying-the-target-platform">Specifying the Target Platform</a></li>
|
<li><a href="#specifying-the-target-platform">Specifying the Target Platform</a></li>
|
||||||
<li><a href="#toolchain-considerations">Toolchain Considerations</a></li>
|
<li><a href="#toolchain-considerations">Toolchain Considerations</a></li>
|
||||||
<li><a href="#native-libraries">Native Libraries</a></li>
|
<li><a href="#native-libraries">Native Libraries</a></li>
|
||||||
|
<li><a href="#creating-and-using-sysroots-with-qemu-deboostrap">Creating And Using Sysroots With qemu-deboostrap</a></li>
|
||||||
<li><a href="#building-for-armaarch64">Building for ARM/aarch64</a></li>
|
<li><a href="#building-for-armaarch64">Building for ARM/aarch64</a></li>
|
||||||
<li><a href="#verifying-the-build">Verifying the Build</a></li>
|
<li><a href="#verifying-the-build">Verifying the Build</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
@@ -277,7 +279,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">Windows</td>
|
<td style="text-align: left;">Windows</td>
|
||||||
<td style="text-align: left;">Microsoft Visual Studio 2017 update 15.5.5</td>
|
<td style="text-align: left;">Microsoft Visual Studio 2017 update 15.9.16</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -369,10 +371,10 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
|
|||||||
<p>On Linux you can also get a JDK from the Linux distribution. On apt-based distros (like Debian and Ubuntu), <code>sudo apt-get install openjdk-<VERSION>-jdk</code> is typically enough to install a JDK <VERSION>. On rpm-based distros (like Fedora and Red Hat), try <code>sudo yum install java-<VERSION>-openjdk-devel</code>.</p>
|
<p>On Linux you can also get a JDK from the Linux distribution. On apt-based distros (like Debian and Ubuntu), <code>sudo apt-get install openjdk-<VERSION>-jdk</code> is typically enough to install a JDK <VERSION>. On rpm-based distros (like Fedora and Red Hat), try <code>sudo yum install java-<VERSION>-openjdk-devel</code>.</p>
|
||||||
<h2 id="external-library-requirements">External Library Requirements</h2>
|
<h2 id="external-library-requirements">External Library Requirements</h2>
|
||||||
<p>Different platforms require different external libraries. In general, libraries are not optional - that is, they are either required or not used.</p>
|
<p>Different platforms require different external libraries. In general, libraries are not optional - that is, they are either required or not used.</p>
|
||||||
<p>If a required library is not detected by <code>configure</code>, you need to provide the path to it. There are two forms of the <code>configure</code> arguments to point to an external library: <code>--with-<LIB>=<path></code> or <code>--with-<LIB>-include=<path to include> --with-<LIB>-lib=<path to lib></code>. The first variant is more concise, but require the include files an library files to reside in a default hierarchy under this directory. In most cases, it works fine.</p>
|
<p>If a required library is not detected by <code>configure</code>, you need to provide the path to it. There are two forms of the <code>configure</code> arguments to point to an external library: <code>--with-<LIB>=<path></code> or <code>--with-<LIB>-include=<path to include> --with-<LIB>-lib=<path to lib></code>. The first variant is more concise, but require the include files and library files to reside in a default hierarchy under this directory. In most cases, it works fine.</p>
|
||||||
<p>As a fallback, the second version allows you to point to the include directory and the lib directory separately.</p>
|
<p>As a fallback, the second version allows you to point to the include directory and the lib directory separately.</p>
|
||||||
<h3 id="freetype">FreeType</h3>
|
<h3 id="freetype">FreeType</h3>
|
||||||
<p>FreeType2 from <a href="http://www.freetype.org/">The FreeType Project</a> is not required on any platform. The exception is on Unix-based platforms when configuring such that the build artifacts will reference a system installed library, rather than bundling the JDK’s own copy.</p>
|
<p>FreeType2 from <a href="http://www.freetype.org/">The FreeType Project</a> is not required on any platform. The exception is on Unix-based platforms when configuring such that the build artifacts will reference a system installed library, rather than bundling the JDK's own copy.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>To install on an apt-based Linux, try running <code>sudo apt-get install libfreetype6-dev</code>.</li>
|
<li>To install on an apt-based Linux, try running <code>sudo apt-get install libfreetype6-dev</code>.</li>
|
||||||
<li>To install on an rpm-based Linux, try running <code>sudo yum install freetype-devel</code>.</li>
|
<li>To install on an rpm-based Linux, try running <code>sudo yum install freetype-devel</code>.</li>
|
||||||
@@ -433,7 +435,7 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
|
|||||||
<p>To build the JDK, you need a "configuration", which consists of a directory where to store the build output, coupled with information about the platform, the specific build machine, and choices that affect how the JDK is built.</p>
|
<p>To build the JDK, you need a "configuration", which consists of a directory where to store the build output, coupled with information about the platform, the specific build machine, and choices that affect how the JDK is built.</p>
|
||||||
<p>The configuration is created by the <code>configure</code> script. The basic invocation of the <code>configure</code> script looks like this:</p>
|
<p>The configuration is created by the <code>configure</code> script. The basic invocation of the <code>configure</code> script looks like this:</p>
|
||||||
<pre><code>bash configure [options]</code></pre>
|
<pre><code>bash configure [options]</code></pre>
|
||||||
<p>This will create an output directory containing the configuration and setup an area for the build result. This directory typically looks like <code>build/linux-x64-normal-server-release</code>, but the actual name depends on your specific configuration. (It can also be set directly, see <a href="#using-multiple-configurations">Using Multiple Configurations</a>). This directory is referred to as <code>$BUILD</code> in this documentation.</p>
|
<p>This will create an output directory containing the configuration and setup an area for the build result. This directory typically looks like <code>build/linux-x64-server-release</code>, but the actual name depends on your specific configuration. (It can also be set directly, see <a href="#using-multiple-configurations">Using Multiple Configurations</a>). This directory is referred to as <code>$BUILD</code> in this documentation.</p>
|
||||||
<p><code>configure</code> will try to figure out what system you are running on and where all necessary build components are. If you have all prerequisites for building installed, it should find everything. If it fails to detect any component automatically, it will exit and inform you about the problem.</p>
|
<p><code>configure</code> will try to figure out what system you are running on and where all necessary build components are. If you have all prerequisites for building installed, it should find everything. If it fails to detect any component automatically, it will exit and inform you about the problem.</p>
|
||||||
<p>Some command line examples:</p>
|
<p>Some command line examples:</p>
|
||||||
<ul>
|
<ul>
|
||||||
@@ -565,6 +567,47 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
|
|||||||
<p>This requires a more complex setup and build procedure. This section assumes you are familiar with cross-compiling in general, and will only deal with the particularities of cross-compiling the JDK. If you are new to cross-compiling, please see the <a href="https://en.wikipedia.org/wiki/Cross_compiler#External_links">external links at Wikipedia</a> for a good start on reading materials.</p>
|
<p>This requires a more complex setup and build procedure. This section assumes you are familiar with cross-compiling in general, and will only deal with the particularities of cross-compiling the JDK. If you are new to cross-compiling, please see the <a href="https://en.wikipedia.org/wiki/Cross_compiler#External_links">external links at Wikipedia</a> for a good start on reading materials.</p>
|
||||||
<p>Cross-compiling the JDK requires you to be able to build both for the build platform and for the target platform. The reason for the former is that we need to build and execute tools during the build process, both native tools and Java tools.</p>
|
<p>Cross-compiling the JDK requires you to be able to build both for the build platform and for the target platform. The reason for the former is that we need to build and execute tools during the build process, both native tools and Java tools.</p>
|
||||||
<p>If all you want to do is to compile a 32-bit version, for the same OS, on a 64-bit machine, consider using <code>--with-target-bits=32</code> instead of doing a full-blown cross-compilation. (While this surely is possible, it's a lot more work and will take much longer to build.)</p>
|
<p>If all you want to do is to compile a 32-bit version, for the same OS, on a 64-bit machine, consider using <code>--with-target-bits=32</code> instead of doing a full-blown cross-compilation. (While this surely is possible, it's a lot more work and will take much longer to build.)</p>
|
||||||
|
<h3 id="cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</h3>
|
||||||
|
<p>The OpenJDK build system provides out-of-the box support for creating and using so called devkits. A <code>devkit</code> is basically a collection of a cross-compiling toolchain and a sysroot environment which can easily be used together with the <code>--with-devkit</code> configure option to cross compile the OpenJDK. On Linux/x86_64, the following command:</p>
|
||||||
|
<pre><code>bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64-linux-gnu && make</code></pre>
|
||||||
|
<p>will configure and build OpenJDK for Linux/ppc64 assuming that <code><devkit-path></code> points to a Linux/x86_64 to Linux/ppc64 devkit.</p>
|
||||||
|
<p>Devkits can be created from the <code>make/devkit</code> directory by executing:</p>
|
||||||
|
<pre><code>make [ TARGETS="<TARGET_TRIPLET>+" ] [ BASE_OS=<OS> ] [ BASE_OS_VERSION=<VER> ]</code></pre>
|
||||||
|
<p>where <code>TARGETS</code> contains one or more <code>TARGET_TRIPLET</code>s of the form described in <a href="https://sourceware.org/autobook/autobook/autobook_17.html">section 3.4 of the GNU Autobook</a>. If no targets are given, a native toolchain for the current platform will be created. Currently, at least the following targets are known to work:</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr class="header">
|
||||||
|
<th style="text-align: left;">Supported devkit targets</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td style="text-align: left;">x86_64-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td style="text-align: left;">aarch64-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td style="text-align: left;">arm-linux-gnueabihf</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td style="text-align: left;">ppc64-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td style="text-align: left;">ppc64le-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td style="text-align: left;">s390x-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p><code>BASE_OS</code> must be one of "OEL6" for Oracle Enterprise Linux 6 or "Fedora" (if not specified "OEL6" will be the default). If the base OS is "Fedora" the corresponding Fedora release can be specified with the help of the <code>BASE_OS_VERSION</code> option (with "27" as default version). If the build is successful, the new devkits can be found in the <code>build/devkit/result</code> subdirectory:</p>
|
||||||
|
<pre><code>cd make/devkit
|
||||||
|
make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
|
||||||
|
ls -1 ../../build/devkit/result/
|
||||||
|
x86_64-linux-gnu-to-aarch64-linux-gnu
|
||||||
|
x86_64-linux-gnu-to-ppc64le-linux-gnu</code></pre>
|
||||||
|
<p>Notice that devkits are not only useful for targeting different build platforms. Because they contain the full build dependencies for a system (i.e. compiler and root file system), they can easily be used to build well-known, reliable and reproducible build environments. You can for example create and use a devkit with GCC 7.3 and a Fedora 12 sysroot environment (with glibc 2.11) on Ubuntu 14.04 (which doesn't have GCC 7.3 by default) to produce OpenJDK binaries which will run on all Linux systems with runtime libraries newer than the ones from Fedora 12 (e.g. Ubuntu 16.04, SLES 11 or RHEL 6).</p>
|
||||||
<h3 id="boot-jdk-and-build-jdk">Boot JDK and Build JDK</h3>
|
<h3 id="boot-jdk-and-build-jdk">Boot JDK and Build JDK</h3>
|
||||||
<p>When cross-compiling, make sure you use a boot JDK that runs on the <em>build</em> system, and not on the <em>target</em> system.</p>
|
<p>When cross-compiling, make sure you use a boot JDK that runs on the <em>build</em> system, and not on the <em>target</em> system.</p>
|
||||||
<p>To be able to build, we need a "Build JDK", which is a JDK built from the current sources (that is, the same as the end result of the entire build process), but able to run on the <em>build</em> system, and not the <em>target</em> system. (In contrast, the Boot JDK should be from an older release, e.g. JDK 8 when building JDK 9.)</p>
|
<p>To be able to build, we need a "Build JDK", which is a JDK built from the current sources (that is, the same as the end result of the entire build process), but able to run on the <em>build</em> system, and not the <em>target</em> system. (In contrast, the Boot JDK should be from an older release, e.g. JDK 8 when building JDK 9.)</p>
|
||||||
@@ -634,6 +677,72 @@ cp: cannot stat `arm-linux-gnueabihf/libSM.so': No such file or directory
|
|||||||
cp: cannot stat `arm-linux-gnueabihf/libXt.so': No such file or directory</code></pre></li>
|
cp: cannot stat `arm-linux-gnueabihf/libXt.so': No such file or directory</code></pre></li>
|
||||||
<li><p>If the X11 libraries are not properly detected by <code>configure</code>, you can point them out by <code>--with-x</code>.</p></li>
|
<li><p>If the X11 libraries are not properly detected by <code>configure</code>, you can point them out by <code>--with-x</code>.</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<h3 id="creating-and-using-sysroots-with-qemu-deboostrap">Creating And Using Sysroots With qemu-deboostrap</h3>
|
||||||
|
<p>Fortunately, you can create sysroots for foreign architectures with tools provided by your OS. On Debian/Ubuntu systems, one could use <code>qemu-deboostrap</code> to create the <em>target</em> system chroot, which would have the native libraries and headers specific to that <em>target</em> system. After that, we can use the cross-compiler on the <em>build</em> system, pointing into chroot to get the build dependencies right. This allows building for foreign architectures with native compilation speed.</p>
|
||||||
|
<p>For example, cross-compiling to AArch64 from x86_64 could be done like this:</p>
|
||||||
|
<ul>
|
||||||
|
<li><p>Install cross-compiler on the <em>build</em> system:</p>
|
||||||
|
<pre><code>apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu</code></pre></li>
|
||||||
|
<li><p>Create chroot on the <em>build</em> system, configuring it for <em>target</em> system:</p>
|
||||||
|
<pre><code>sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||||
|
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||||
|
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/</code></pre></li>
|
||||||
|
<li><p>Configure and build with newly created chroot as sysroot/toolchain-path:</p>
|
||||||
|
<pre><code>CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||||
|
make images
|
||||||
|
ls build/linux-aarch64-normal-server-release/</code></pre></li>
|
||||||
|
</ul>
|
||||||
|
<p>The build does not create new files in that chroot, so it can be reused for multiple builds without additional cleanup.</p>
|
||||||
|
<p>Architectures that are known to successfully cross-compile like this are:</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr class="header">
|
||||||
|
<th style="text-align: left;">Target</th>
|
||||||
|
<th style="text-align: left;"><code>CC</code></th>
|
||||||
|
<th style="text-align: left;"><code>CXX</code></th>
|
||||||
|
<th style="text-align: left;"><code>--arch=...</code></th>
|
||||||
|
<th style="text-align: left;"><code>--openjdk-target=...</code></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td style="text-align: left;">x86</td>
|
||||||
|
<td style="text-align: left;">default</td>
|
||||||
|
<td style="text-align: left;">default</td>
|
||||||
|
<td style="text-align: left;">i386</td>
|
||||||
|
<td style="text-align: left;">i386-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td style="text-align: left;">armhf</td>
|
||||||
|
<td style="text-align: left;">gcc-arm-linux-gnueabihf</td>
|
||||||
|
<td style="text-align: left;">g++-arm-linux-gnueabihf</td>
|
||||||
|
<td style="text-align: left;">armhf</td>
|
||||||
|
<td style="text-align: left;">arm-linux-gnueabihf</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td style="text-align: left;">aarch64</td>
|
||||||
|
<td style="text-align: left;">gcc-aarch64-linux-gnu</td>
|
||||||
|
<td style="text-align: left;">g++-aarch64-linux-gnu</td>
|
||||||
|
<td style="text-align: left;">arm64</td>
|
||||||
|
<td style="text-align: left;">aarch64-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td style="text-align: left;">ppc64el</td>
|
||||||
|
<td style="text-align: left;">gcc-powerpc64le-linux-gnu</td>
|
||||||
|
<td style="text-align: left;">g++-powerpc64le-linux-gnu</td>
|
||||||
|
<td style="text-align: left;">ppc64el</td>
|
||||||
|
<td style="text-align: left;">powerpc64le-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td style="text-align: left;">s390x</td>
|
||||||
|
<td style="text-align: left;">gcc-s390x-linux-gnu</td>
|
||||||
|
<td style="text-align: left;">g++-s390x-linux-gnu</td>
|
||||||
|
<td style="text-align: left;">s390x</td>
|
||||||
|
<td style="text-align: left;">s390x-linux-gnu</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>Additional architectures might be supported by Debian/Ubuntu Ports.</p>
|
||||||
<h3 id="building-for-armaarch64">Building for ARM/aarch64</h3>
|
<h3 id="building-for-armaarch64">Building for ARM/aarch64</h3>
|
||||||
<p>A common cross-compilation target is the ARM CPU. When building for ARM, it is useful to set the ABI profile. A number of pre-defined ABI profiles are available using <code>--with-abi-profile</code>: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer properly supported by the JDK.</p>
|
<p>A common cross-compilation target is the ARM CPU. When building for ARM, it is useful to set the ABI profile. A number of pre-defined ABI profiles are available using <code>--with-abi-profile</code>: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer properly supported by the JDK.</p>
|
||||||
<p>The JDK contains two different ports for the aarch64 platform, one is the original aarch64 port from the <a href="http://openjdk.java.net/projects/aarch64-port">AArch64 Port Project</a> and one is a 64-bit version of the Oracle contributed ARM port. When targeting aarch64, by the default the original aarch64 port is used. To select the Oracle ARM 64 port, use <code>--with-cpu-port=arm64</code>. Also set the corresponding value (<code>aarch64</code> or <code>arm64</code>) to --with-abi-profile, to ensure a consistent build.</p>
|
<p>The JDK contains two different ports for the aarch64 platform, one is the original aarch64 port from the <a href="http://openjdk.java.net/projects/aarch64-port">AArch64 Port Project</a> and one is a 64-bit version of the Oracle contributed ARM port. When targeting aarch64, by the default the original aarch64 port is used. To select the Oracle ARM 64 port, use <code>--with-cpu-port=arm64</code>. Also set the corresponding value (<code>aarch64</code> or <code>arm64</code>) to --with-abi-profile, to ensure a consistent build.</p>
|
||||||
@@ -743,7 +852,12 @@ cannot create ... Permission denied
|
|||||||
spawn failed</code></pre>
|
spawn failed</code></pre>
|
||||||
<p>This can be a sign of a Cygwin problem. See the information about solving problems in the <a href="#cygwin">Cygwin</a> section. Rebooting the computer might help temporarily.</p>
|
<p>This can be a sign of a Cygwin problem. See the information about solving problems in the <a href="#cygwin">Cygwin</a> section. Rebooting the computer might help temporarily.</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 <script type="text/javascript">
|
||||||
|
<!--
|
||||||
|
h='openjdk.java.net';a='@';n='build-dev';e=n+a+h;
|
||||||
|
document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+e+'<\/'+'a'+'>');
|
||||||
|
// -->
|
||||||
|
</script><noscript>build-dev at openjdk dot java dot net</noscript>. 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="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
|
<h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
|
||||||
<h3 id="setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</h3>
|
<h3 id="setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</h3>
|
||||||
|
|||||||
115
doc/building.md
115
doc/building.md
@@ -293,7 +293,7 @@ issues.
|
|||||||
Linux gcc 7.3.0
|
Linux gcc 7.3.0
|
||||||
macOS Apple Xcode 9.4 (using clang 9.1.0)
|
macOS Apple Xcode 9.4 (using clang 9.1.0)
|
||||||
Solaris Oracle Solaris Studio 12.4 (with compiler version 5.13)
|
Solaris Oracle Solaris Studio 12.4 (with compiler version 5.13)
|
||||||
Windows Microsoft Visual Studio 2017 update 15.5.5
|
Windows Microsoft Visual Studio 2017 update 15.9.16
|
||||||
|
|
||||||
### gcc
|
### gcc
|
||||||
|
|
||||||
@@ -436,8 +436,8 @@ If a required library is not detected by `configure`, you need to provide the
|
|||||||
path to it. There are two forms of the `configure` arguments to point to an
|
path to it. There are two forms of the `configure` arguments to point to an
|
||||||
external library: `--with-<LIB>=<path>` or `--with-<LIB>-include=<path to
|
external library: `--with-<LIB>=<path>` or `--with-<LIB>-include=<path to
|
||||||
include> --with-<LIB>-lib=<path to lib>`. The first variant is more concise,
|
include> --with-<LIB>-lib=<path to lib>`. The first variant is more concise,
|
||||||
but require the include files an library files to reside in a default hierarchy
|
but require the include files and library files to reside in a default
|
||||||
under this directory. In most cases, it works fine.
|
hierarchy under this directory. In most cases, it works fine.
|
||||||
|
|
||||||
As a fallback, the second version allows you to point to the include directory
|
As a fallback, the second version allows you to point to the include directory
|
||||||
and the lib directory separately.
|
and the lib directory separately.
|
||||||
@@ -447,7 +447,7 @@ and the lib directory separately.
|
|||||||
FreeType2 from [The FreeType Project](http://www.freetype.org/) is not required
|
FreeType2 from [The FreeType Project](http://www.freetype.org/) is not required
|
||||||
on any platform. The exception is on Unix-based platforms when configuring such
|
on any platform. The exception is on Unix-based platforms when configuring such
|
||||||
that the build artifacts will reference a system installed library,
|
that the build artifacts will reference a system installed library,
|
||||||
rather than bundling the JDK’s own copy.
|
rather than bundling the JDK's own copy.
|
||||||
|
|
||||||
* To install on an apt-based Linux, try running `sudo apt-get install
|
* To install on an apt-based Linux, try running `sudo apt-get install
|
||||||
libfreetype6-dev`.
|
libfreetype6-dev`.
|
||||||
@@ -586,8 +586,8 @@ bash configure [options]
|
|||||||
|
|
||||||
This will create an output directory containing the configuration and setup an
|
This will create an output directory containing the configuration and setup an
|
||||||
area for the build result. This directory typically looks like
|
area for the build result. This directory typically looks like
|
||||||
`build/linux-x64-normal-server-release`, but the actual name depends on your
|
`build/linux-x64-server-release`, but the actual name depends on your specific
|
||||||
specific configuration. (It can also be set directly, see [Using Multiple
|
configuration. (It can also be set directly, see [Using Multiple
|
||||||
Configurations](#using-multiple-configurations)). This directory is referred to
|
Configurations](#using-multiple-configurations)). This directory is referred to
|
||||||
as `$BUILD` in this documentation.
|
as `$BUILD` in this documentation.
|
||||||
|
|
||||||
@@ -875,6 +875,64 @@ If all you want to do is to compile a 32-bit version, for the same OS, on a
|
|||||||
full-blown cross-compilation. (While this surely is possible, it's a lot more
|
full-blown cross-compilation. (While this surely is possible, it's a lot more
|
||||||
work and will take much longer to build.)
|
work and will take much longer to build.)
|
||||||
|
|
||||||
|
### Cross compiling the easy way with OpenJDK devkits
|
||||||
|
|
||||||
|
The OpenJDK build system provides out-of-the box support for creating and using
|
||||||
|
so called devkits. A `devkit` is basically a collection of a cross-compiling
|
||||||
|
toolchain and a sysroot environment which can easily be used together with the
|
||||||
|
`--with-devkit` configure option to cross compile the OpenJDK. On Linux/x86_64,
|
||||||
|
the following command:
|
||||||
|
```
|
||||||
|
bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64-linux-gnu && make
|
||||||
|
```
|
||||||
|
|
||||||
|
will configure and build OpenJDK for Linux/ppc64 assuming that `<devkit-path>`
|
||||||
|
points to a Linux/x86_64 to Linux/ppc64 devkit.
|
||||||
|
|
||||||
|
Devkits can be created from the `make/devkit` directory by executing:
|
||||||
|
```
|
||||||
|
make [ TARGETS="<TARGET_TRIPLET>+" ] [ BASE_OS=<OS> ] [ BASE_OS_VERSION=<VER> ]
|
||||||
|
```
|
||||||
|
|
||||||
|
where `TARGETS` contains one or more `TARGET_TRIPLET`s of the form
|
||||||
|
described in [section 3.4 of the GNU Autobook](
|
||||||
|
https://sourceware.org/autobook/autobook/autobook_17.html). If no
|
||||||
|
targets are given, a native toolchain for the current platform will be
|
||||||
|
created. Currently, at least the following targets are known to work:
|
||||||
|
|
||||||
|
Supported devkit targets
|
||||||
|
------------------------
|
||||||
|
x86_64-linux-gnu
|
||||||
|
aarch64-linux-gnu
|
||||||
|
arm-linux-gnueabihf
|
||||||
|
ppc64-linux-gnu
|
||||||
|
ppc64le-linux-gnu
|
||||||
|
s390x-linux-gnu
|
||||||
|
|
||||||
|
`BASE_OS` must be one of "OEL6" for Oracle Enterprise Linux 6 or
|
||||||
|
"Fedora" (if not specified "OEL6" will be the default). If the base OS
|
||||||
|
is "Fedora" the corresponding Fedora release can be specified with the
|
||||||
|
help of the `BASE_OS_VERSION` option (with "27" as default version).
|
||||||
|
If the build is successful, the new devkits can be found in the
|
||||||
|
`build/devkit/result` subdirectory:
|
||||||
|
```
|
||||||
|
cd make/devkit
|
||||||
|
make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
|
||||||
|
ls -1 ../../build/devkit/result/
|
||||||
|
x86_64-linux-gnu-to-aarch64-linux-gnu
|
||||||
|
x86_64-linux-gnu-to-ppc64le-linux-gnu
|
||||||
|
```
|
||||||
|
|
||||||
|
Notice that devkits are not only useful for targeting different build
|
||||||
|
platforms. Because they contain the full build dependencies for a
|
||||||
|
system (i.e. compiler and root file system), they can easily be used
|
||||||
|
to build well-known, reliable and reproducible build environments. You
|
||||||
|
can for example create and use a devkit with GCC 7.3 and a Fedora 12
|
||||||
|
sysroot environment (with glibc 2.11) on Ubuntu 14.04 (which doesn't
|
||||||
|
have GCC 7.3 by default) to produce OpenJDK binaries which will run on
|
||||||
|
all Linux systems with runtime libraries newer than the ones from
|
||||||
|
Fedora 12 (e.g. Ubuntu 16.04, SLES 11 or RHEL 6).
|
||||||
|
|
||||||
### Boot JDK and Build JDK
|
### Boot JDK and Build JDK
|
||||||
|
|
||||||
When cross-compiling, make sure you use a boot JDK that runs on the *build*
|
When cross-compiling, make sure you use a boot JDK that runs on the *build*
|
||||||
@@ -1018,6 +1076,51 @@ Note that X11 is needed even if you only want to build a headless JDK.
|
|||||||
* If the X11 libraries are not properly detected by `configure`, you can
|
* If the X11 libraries are not properly detected by `configure`, you can
|
||||||
point them out by `--with-x`.
|
point them out by `--with-x`.
|
||||||
|
|
||||||
|
### Creating And Using Sysroots With qemu-deboostrap
|
||||||
|
|
||||||
|
Fortunately, you can create sysroots for foreign architectures with tools
|
||||||
|
provided by your OS. On Debian/Ubuntu systems, one could use `qemu-deboostrap` to
|
||||||
|
create the *target* system chroot, which would have the native libraries and headers
|
||||||
|
specific to that *target* system. After that, we can use the cross-compiler on the *build*
|
||||||
|
system, pointing into chroot to get the build dependencies right. This allows building
|
||||||
|
for foreign architectures with native compilation speed.
|
||||||
|
|
||||||
|
For example, cross-compiling to AArch64 from x86_64 could be done like this:
|
||||||
|
|
||||||
|
* Install cross-compiler on the *build* system:
|
||||||
|
```
|
||||||
|
apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
|
||||||
|
```
|
||||||
|
|
||||||
|
* Create chroot on the *build* system, configuring it for *target* system:
|
||||||
|
```
|
||||||
|
sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||||
|
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||||
|
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/
|
||||||
|
```
|
||||||
|
|
||||||
|
* Configure and build with newly created chroot as sysroot/toolchain-path:
|
||||||
|
```
|
||||||
|
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||||
|
make images
|
||||||
|
ls build/linux-aarch64-normal-server-release/
|
||||||
|
```
|
||||||
|
|
||||||
|
The build does not create new files in that chroot, so it can be reused for multiple builds
|
||||||
|
without additional cleanup.
|
||||||
|
|
||||||
|
Architectures that are known to successfully cross-compile like this are:
|
||||||
|
|
||||||
|
Target `CC` `CXX` `--arch=...` `--openjdk-target=...`
|
||||||
|
------------ ------------------------- --------------------------- ------------ ----------------------
|
||||||
|
x86 default default i386 i386-linux-gnu
|
||||||
|
armhf gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf armhf arm-linux-gnueabihf
|
||||||
|
aarch64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu arm64 aarch64-linux-gnu
|
||||||
|
ppc64el gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu ppc64el powerpc64le-linux-gnu
|
||||||
|
s390x gcc-s390x-linux-gnu g++-s390x-linux-gnu s390x s390x-linux-gnu
|
||||||
|
|
||||||
|
Additional architectures might be supported by Debian/Ubuntu Ports.
|
||||||
|
|
||||||
### Building for ARM/aarch64
|
### Building for ARM/aarch64
|
||||||
|
|
||||||
A common cross-compilation target is the ARM CPU. When building for ARM, it is
|
A common cross-compilation target is the ARM CPU. When building for ARM, it is
|
||||||
|
|||||||
54
doc/ide.html
Normal file
54
doc/ide.html
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="generator" content="pandoc" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||||
|
<title>IDE support in the JDK</title>
|
||||||
|
<style type="text/css">
|
||||||
|
code{white-space: pre-wrap;}
|
||||||
|
span.smallcaps{font-variant: small-caps;}
|
||||||
|
span.underline{text-decoration: underline;}
|
||||||
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||||
|
</style>
|
||||||
|
<link rel="stylesheet" href="../make/data/docs-resources/resources/jdk-default.css" />
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header id="title-block-header">
|
||||||
|
<h1 class="title">IDE support in the JDK</h1>
|
||||||
|
</header>
|
||||||
|
<nav id="TOC">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#introduction">Introduction</a><ul>
|
||||||
|
<li><a href="#ide-support-for-native-code">IDE support for native code</a></li>
|
||||||
|
<li><a href="#ide-support-for-java-code">IDE support for Java code</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<h2 id="introduction">Introduction</h2>
|
||||||
|
<p>When you are familiar with building and testing the JDK, you may want to configure an IDE to work with the source code. The instructions differ a bit depending on whether you are interested in working with the native (C/C++) or the Java code.</p>
|
||||||
|
<h3 id="ide-support-for-native-code">IDE support for native code</h3>
|
||||||
|
<p>There are a few ways to generate IDE configuration for the native sources, depending on which IDE to use.</p>
|
||||||
|
<h4 id="visual-studio-code">Visual Studio Code</h4>
|
||||||
|
<p>The make system can generate a <a href="https://code.visualstudio.com">Visual Studio Code</a> workspace that has C/C++ source indexing configured correctly, as well as launcher targets for tests and the Java launcher. After configuring, a workspace for the configuration can be generated using:</p>
|
||||||
|
<pre class="shell"><code>make vscode-project</code></pre>
|
||||||
|
<p>This creates a file called <code>jdk.code-workspace</code> in the build output folder. The full location will be printed after the workspace has been generated. To use it, choose <code>File -> Open Workspace...</code> in Visual Studio Code.</p>
|
||||||
|
<h5 id="alternative-indexers">Alternative indexers</h5>
|
||||||
|
<p>The main <code>vscode-project</code> target configures the default C++ support in Visual Studio Code. There are also other source indexers that can be installed, that may provide additional features. It's currently possible to generate configuration for two such indexers, <a href="https://clang.llvm.org/extra/clangd/">clangd</a> and <a href="https://github.com/Andersbakken/rtags">rtags</a>. These can be configured by appending the name of the indexer to the make target, such as:</p>
|
||||||
|
<pre class="shell"><code>make vscode-project-clangd</code></pre>
|
||||||
|
<p>Additional instructions for configuring the given indexer will be displayed after the workspace has been generated.</p>
|
||||||
|
<h4 id="visual-studio">Visual Studio</h4>
|
||||||
|
<p>This section is a work in progress.</p>
|
||||||
|
<pre class="shell"><code>make ide-project</code></pre>
|
||||||
|
<h4 id="compilation-database">Compilation Database</h4>
|
||||||
|
<p>The make system can generate generic native code indexing support in the form of a <a href="https://clang.llvm.org/docs/JSONCompilationDatabase.html">Compilation Database</a> that can be used by many different IDEs and source code indexers.</p>
|
||||||
|
<pre class="shell"><code>make compile-commands</code></pre>
|
||||||
|
<p>It's also possible to generate the Compilation Database for the HotSpot source code only, which is a bit faster as it includes less information.</p>
|
||||||
|
<pre class="shell"><code>make compile-commands-hotspot</code></pre>
|
||||||
|
<h3 id="ide-support-for-java-code">IDE support for Java code</h3>
|
||||||
|
<p>This section is a work in progress.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
73
doc/ide.md
Normal file
73
doc/ide.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
% IDE support in the JDK
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
When you are familiar with building and testing the JDK, you may want to
|
||||||
|
configure an IDE to work with the source code. The instructions differ a bit
|
||||||
|
depending on whether you are interested in working with the native (C/C++) or
|
||||||
|
the Java code.
|
||||||
|
|
||||||
|
### IDE support for native code
|
||||||
|
|
||||||
|
There are a few ways to generate IDE configuration for the native sources,
|
||||||
|
depending on which IDE to use.
|
||||||
|
|
||||||
|
#### Visual Studio Code
|
||||||
|
|
||||||
|
The make system can generate a [Visual Studio Code](https://code.visualstudio.com)
|
||||||
|
workspace that has C/C++ source indexing configured correctly, as well as
|
||||||
|
launcher targets for tests and the Java launcher. After configuring, a workspace
|
||||||
|
for the configuration can be generated using:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make vscode-project
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates a file called `jdk.code-workspace` in the build output folder. The
|
||||||
|
full location will be printed after the workspace has been generated. To use it,
|
||||||
|
choose `File -> Open Workspace...` in Visual Studio Code.
|
||||||
|
|
||||||
|
##### Alternative indexers
|
||||||
|
|
||||||
|
The main `vscode-project` target configures the default C++ support in Visual
|
||||||
|
Studio Code. There are also other source indexers that can be installed, that
|
||||||
|
may provide additional features. It's currently possible to generate
|
||||||
|
configuration for two such indexers, [clangd](https://clang.llvm.org/extra/clangd/)
|
||||||
|
and [rtags](https://github.com/Andersbakken/rtags). These can be configured by
|
||||||
|
appending the name of the indexer to the make target, such as:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make vscode-project-clangd
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional instructions for configuring the given indexer will be displayed
|
||||||
|
after the workspace has been generated.
|
||||||
|
|
||||||
|
#### Visual Studio
|
||||||
|
|
||||||
|
This section is a work in progress.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make ide-project
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Compilation Database
|
||||||
|
|
||||||
|
The make system can generate generic native code indexing support in the form of
|
||||||
|
a [Compilation Database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
||||||
|
that can be used by many different IDEs and source code indexers.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make compile-commands
|
||||||
|
```
|
||||||
|
|
||||||
|
It's also possible to generate the Compilation Database for the HotSpot source
|
||||||
|
code only, which is a bit faster as it includes less information.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make compile-commands-hotspot
|
||||||
|
```
|
||||||
|
|
||||||
|
### IDE support for Java code
|
||||||
|
|
||||||
|
This section is a work in progress.
|
||||||
@@ -11,14 +11,14 @@
|
|||||||
span.underline{text-decoration: underline;}
|
span.underline{text-decoration: underline;}
|
||||||
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||||
</style>
|
</style>
|
||||||
<link rel="stylesheet" href="../make/data/docs-resources/resources/jdk-default.css">
|
<link rel="stylesheet" href="../make/data/docs-resources/resources/jdk-default.css" />
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
<style type="text/css">pre, code, tt { color: #1d6ae5; }</style>
|
<style type="text/css">pre, code, tt { color: #1d6ae5; }</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header id="title-block-header">
|
||||||
<h1 class="title">Testing the JDK</h1>
|
<h1 class="title">Testing the JDK</h1>
|
||||||
</header>
|
</header>
|
||||||
<nav id="TOC">
|
<nav id="TOC">
|
||||||
@@ -32,11 +32,13 @@
|
|||||||
</ul></li>
|
</ul></li>
|
||||||
<li><a href="#test-results-and-summary">Test results and summary</a></li>
|
<li><a href="#test-results-and-summary">Test results and summary</a></li>
|
||||||
<li><a href="#test-suite-control">Test suite control</a><ul>
|
<li><a href="#test-suite-control">Test suite control</a><ul>
|
||||||
|
<li><a href="#general-keywords-test_opts">General keywords (TEST_OPTS)</a></li>
|
||||||
<li><a href="#jtreg-keywords">JTReg keywords</a></li>
|
<li><a href="#jtreg-keywords">JTReg keywords</a></li>
|
||||||
<li><a href="#gtest-keywords">Gtest keywords</a></li>
|
<li><a href="#gtest-keywords">Gtest keywords</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
<li><a href="#notes-for-specific-tests">Notes for Specific Tests</a><ul>
|
<li><a href="#notes-for-specific-tests">Notes for Specific Tests</a><ul>
|
||||||
<li><a href="#docker-tests">Docker Tests</a></li>
|
<li><a href="#docker-tests">Docker Tests</a></li>
|
||||||
|
<li><a href="#client-ui-tests">Client UI Tests</a></li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -89,11 +91,24 @@ TEST FAILURE</code></pre>
|
|||||||
<p>To separate multiple keyword=value pairs, use <code>;</code> (semicolon). Since the shell normally eats <code>;</code>, the recommended usage is to write the assignment inside qoutes, e.g. <code>JTREG="...;..."</code>. This will also make sure spaces are preserved, as in <code>JTREG="VM_OPTIONS=-XshowSettings -Xlog:gc+ref=debug"</code>.</p>
|
<p>To separate multiple keyword=value pairs, use <code>;</code> (semicolon). Since the shell normally eats <code>;</code>, the recommended usage is to write the assignment inside qoutes, e.g. <code>JTREG="...;..."</code>. This will also make sure spaces are preserved, as in <code>JTREG="VM_OPTIONS=-XshowSettings -Xlog:gc+ref=debug"</code>.</p>
|
||||||
<p>(Other ways are possible, e.g. using backslash: <code>JTREG=JOBS=1\;TIMEOUT=8</code>. Also, as a special technique, the string <code>%20</code> will be replaced with space for certain options, e.g. <code>JTREG=VM_OPTIONS=-XshowSettings%20-Xlog:gc+ref=debug</code>. This can be useful if you have layers of scripts and have trouble getting proper quoting of command line arguments through.)</p>
|
<p>(Other ways are possible, e.g. using backslash: <code>JTREG=JOBS=1\;TIMEOUT=8</code>. Also, as a special technique, the string <code>%20</code> will be replaced with space for certain options, e.g. <code>JTREG=VM_OPTIONS=-XshowSettings%20-Xlog:gc+ref=debug</code>. This can be useful if you have layers of scripts and have trouble getting proper quoting of command line arguments through.)</p>
|
||||||
<p>As far as possible, the names of the keywords have been standardized between test suites.</p>
|
<p>As far as possible, the names of the keywords have been standardized between test suites.</p>
|
||||||
<h3 id="jtreg-keywords">JTReg keywords</h3>
|
<h3 id="general-keywords-test_opts">General keywords (TEST_OPTS)</h3>
|
||||||
|
<p>Some keywords are valid across different test suites. If you want to run tests from multiple test suites, or just don’t want to care which test suite specific control variable to use, then you can use the general TEST_OPTS control variable.</p>
|
||||||
|
<p>There are also some keywords that applies globally to the test runner system, not to any specific test suites. These are also available as TEST_OPTS keywords.</p>
|
||||||
<h4 id="jobs">JOBS</h4>
|
<h4 id="jobs">JOBS</h4>
|
||||||
|
<p>Currently only applies to JTReg.</p>
|
||||||
|
<h4 id="timeout_factor">TIMEOUT_FACTOR</h4>
|
||||||
|
<p>Currently only applies to JTReg.</p>
|
||||||
|
<h4 id="vm_options">VM_OPTIONS</h4>
|
||||||
|
<p>Applies to JTReg, GTest and Micro.</p>
|
||||||
|
<h4 id="java_options">JAVA_OPTIONS</h4>
|
||||||
|
<p>Applies to JTReg, GTest and Micro.</p>
|
||||||
|
<h4 id="aot_modules">AOT_MODULES</h4>
|
||||||
|
<p>Applies to JTReg and GTest.</p>
|
||||||
|
<h3 id="jtreg-keywords">JTReg keywords</h3>
|
||||||
|
<h4 id="jobs-1">JOBS</h4>
|
||||||
<p>The test concurrency (<code>-concurrency</code>).</p>
|
<p>The test concurrency (<code>-concurrency</code>).</p>
|
||||||
<p>Defaults to TEST_JOBS (if set by <code>--with-test-jobs=</code>), otherwise it defaults to JOBS, except for Hotspot, where the default is <em>number of CPU cores/2</em>, but never more than 12.</p>
|
<p>Defaults to TEST_JOBS (if set by <code>--with-test-jobs=</code>), otherwise it defaults to JOBS, except for Hotspot, where the default is <em>number of CPU cores/2</em>, but never more than 12.</p>
|
||||||
<h4 id="timeout">TIMEOUT</h4>
|
<h4 id="timeout_factor-1">TIMEOUT_FACTOR</h4>
|
||||||
<p>The timeout factor (<code>-timeoutFactor</code>).</p>
|
<p>The timeout factor (<code>-timeoutFactor</code>).</p>
|
||||||
<p>Defaults to 4.</p>
|
<p>Defaults to 4.</p>
|
||||||
<h4 id="test_mode">TEST_MODE</h4>
|
<h4 id="test_mode">TEST_MODE</h4>
|
||||||
@@ -112,13 +127,21 @@ TEST FAILURE</code></pre>
|
|||||||
<p>Limit memory consumption (<code>-Xmx</code> and <code>-vmoption:-Xmx</code>, or none).</p>
|
<p>Limit memory consumption (<code>-Xmx</code> and <code>-vmoption:-Xmx</code>, or none).</p>
|
||||||
<p>Limit memory consumption for JTReg test framework and VM under test. Set to 0 to disable the limits.</p>
|
<p>Limit memory consumption for JTReg test framework and VM under test. Set to 0 to disable the limits.</p>
|
||||||
<p>Defaults to 512m, except for hotspot, where it defaults to 0 (no limit).</p>
|
<p>Defaults to 512m, except for hotspot, where it defaults to 0 (no limit).</p>
|
||||||
|
<h4 id="keywords">KEYWORDS</h4>
|
||||||
|
<p>JTReg kewords sent to JTReg using <code>-k</code>. Please be careful in making sure that spaces and special characters (like <code>!</code>) are properly quoted. To avoid some issues, the special value <code>%20</code> can be used instead of space.</p>
|
||||||
|
<h4 id="extra_problem_lists">EXTRA_PROBLEM_LISTS</h4>
|
||||||
|
<p>Use additional problem lists file or files, in addition to the default ProblemList.txt located at the JTReg test roots.</p>
|
||||||
|
<p>If multiple file names are specified, they should be separated by space (or, to help avoid quoting issues, the special value <code>%20</code>).</p>
|
||||||
|
<p>The file names should be either absolute, or relative to the JTReg test root of the tests to be run.</p>
|
||||||
<h4 id="options">OPTIONS</h4>
|
<h4 id="options">OPTIONS</h4>
|
||||||
<p>Additional options to the JTReg test framework.</p>
|
<p>Additional options to the JTReg test framework.</p>
|
||||||
<p>Use <code>JTREG="OPTIONS=--help all"</code> to see all available JTReg options.</p>
|
<p>Use <code>JTREG="OPTIONS=--help all"</code> to see all available JTReg options.</p>
|
||||||
<h4 id="java_options">JAVA_OPTIONS</h4>
|
<h4 id="java_options-1">JAVA_OPTIONS</h4>
|
||||||
<p>Additional Java options to JTReg (<code>-javaoption</code>).</p>
|
<p>Additional Java options to JTReg (<code>-javaoption</code>).</p>
|
||||||
<h4 id="vm_options">VM_OPTIONS</h4>
|
<h4 id="vm_options-1">VM_OPTIONS</h4>
|
||||||
<p>Additional VM options to JTReg (<code>-vmoption</code>).</p>
|
<p>Additional VM options to JTReg (<code>-vmoption</code>).</p>
|
||||||
|
<h4 id="aot_modules-1">AOT_MODULES</h4>
|
||||||
|
<p>Generate AOT modules before testing for the specified module, or set of modules. If multiple modules are specified, they should be separated by space (or, to help avoid quoting issues, the special value <code>%20</code>).</p>
|
||||||
<h3 id="gtest-keywords">Gtest keywords</h3>
|
<h3 id="gtest-keywords">Gtest keywords</h3>
|
||||||
<h4 id="repeat">REPEAT</h4>
|
<h4 id="repeat">REPEAT</h4>
|
||||||
<p>The number of times to repeat the tests (<code>--gtest_repeat</code>).</p>
|
<p>The number of times to repeat the tests (<code>--gtest_repeat</code>).</p>
|
||||||
@@ -126,11 +149,23 @@ TEST FAILURE</code></pre>
|
|||||||
<h4 id="options-1">OPTIONS</h4>
|
<h4 id="options-1">OPTIONS</h4>
|
||||||
<p>Additional options to the Gtest test framework.</p>
|
<p>Additional options to the Gtest test framework.</p>
|
||||||
<p>Use <code>GTEST="OPTIONS=--help"</code> to see all available Gtest options.</p>
|
<p>Use <code>GTEST="OPTIONS=--help"</code> to see all available Gtest options.</p>
|
||||||
|
<h4 id="aot_modules-2">AOT_MODULES</h4>
|
||||||
|
<p>Generate AOT modules before testing for the specified module, or set of modules. If multiple modules are specified, they should be separated by space (or, to help avoid quoting issues, the special value <code>%20</code>).</p>
|
||||||
<h2 id="notes-for-specific-tests">Notes for Specific Tests</h2>
|
<h2 id="notes-for-specific-tests">Notes for Specific Tests</h2>
|
||||||
<h3 id="docker-tests">Docker Tests</h3>
|
<h3 id="docker-tests">Docker Tests</h3>
|
||||||
<p>Docker tests with default parameters may fail on systems with glibc versions not compatible with the one used in the default docker image (e.g., Oracle Linux 7.6 for x86). For example, they pass on Ubuntu 16.04 but fail on Ubuntu 18.04 if run like this on x86:</p>
|
<p>Docker tests with default parameters may fail on systems with glibc versions not compatible with the one used in the default docker image (e.g., Oracle Linux 7.6 for x86). For example, they pass on Ubuntu 16.04 but fail on Ubuntu 18.04 if run like this on x86:</p>
|
||||||
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker"</code></pre>
|
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker"</code></pre>
|
||||||
<p>To run these tests correctly, additional parameters for the correct docker image are required on Ubuntu 18.04 by using <code>JAVA_OPTIONS</code>.</p>
|
<p>To run these tests correctly, additional parameters for the correct docker image are required on Ubuntu 18.04 by using <code>JAVA_OPTIONS</code>.</p>
|
||||||
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"</code></pre>
|
<pre><code>$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"</code></pre>
|
||||||
|
<h3 id="client-ui-tests">Client UI Tests</h3>
|
||||||
|
<p>Some Client UI tests use key sequences which may be reserved by the operating system. Usually that causes the test failure. So it is highly recommended to disable system key shortcuts prior testing. The steps to access and disable system key shortcuts for various platforms are provided below.</p>
|
||||||
|
<h4 id="macos">MacOS</h4>
|
||||||
|
<p>Choose Apple menu; System Preferences, click Keyboard, then click Shortcuts; select or deselect desired shortcut.</p>
|
||||||
|
<p>For example, test/jdk/javax/swing/TooltipManager/JMenuItemToolTipKeyBindingsTest/JMenuItemToolTipKeyBindingsTest.java fails on MacOS because it uses <code>CTRL + F1</code> key sequence to show or hide tooltip message but the key combination is reserved by the operating system. To run the test correctly the default global key shortcut should be disabled using the steps described above, and then deselect “Turn keyboard access on or off” option which is responsible for <code>CTRL + F1</code> combination.</p>
|
||||||
|
<h4 id="linux">Linux</h4>
|
||||||
|
<p>Open the Activities overview and start typing Settings; Choose Settings, click Devices, then click Keyboard; set or override desired shortcut.</p>
|
||||||
|
<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>Note: restart is required to make the settings take effect.</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -162,6 +162,35 @@ proper quoting of command line arguments through.)
|
|||||||
As far as possible, the names of the keywords have been standardized between
|
As far as possible, the names of the keywords have been standardized between
|
||||||
test suites.
|
test suites.
|
||||||
|
|
||||||
|
### General keywords (TEST_OPTS)
|
||||||
|
|
||||||
|
Some keywords are valid across different test suites. If you want to run
|
||||||
|
tests from multiple test suites, or just don't want to care which test suite specific
|
||||||
|
control variable to use, then you can use the general TEST_OPTS control variable.
|
||||||
|
|
||||||
|
There are also some keywords that applies globally to the test runner system,
|
||||||
|
not to any specific test suites. These are also available as TEST_OPTS keywords.
|
||||||
|
|
||||||
|
#### JOBS
|
||||||
|
|
||||||
|
Currently only applies to JTReg.
|
||||||
|
|
||||||
|
#### TIMEOUT_FACTOR
|
||||||
|
|
||||||
|
Currently only applies to JTReg.
|
||||||
|
|
||||||
|
#### VM_OPTIONS
|
||||||
|
|
||||||
|
Applies to JTReg, GTest and Micro.
|
||||||
|
|
||||||
|
#### JAVA_OPTIONS
|
||||||
|
|
||||||
|
Applies to JTReg, GTest and Micro.
|
||||||
|
|
||||||
|
#### AOT_MODULES
|
||||||
|
|
||||||
|
Applies to JTReg and GTest.
|
||||||
|
|
||||||
### JTReg keywords
|
### JTReg keywords
|
||||||
|
|
||||||
#### JOBS
|
#### JOBS
|
||||||
@@ -171,7 +200,7 @@ Defaults to TEST_JOBS (if set by `--with-test-jobs=`), otherwise it defaults to
|
|||||||
JOBS, except for Hotspot, where the default is *number of CPU cores/2*, but
|
JOBS, except for Hotspot, where the default is *number of CPU cores/2*, but
|
||||||
never more than 12.
|
never more than 12.
|
||||||
|
|
||||||
#### TIMEOUT
|
#### TIMEOUT_FACTOR
|
||||||
The timeout factor (`-timeoutFactor`).
|
The timeout factor (`-timeoutFactor`).
|
||||||
|
|
||||||
Defaults to 4.
|
Defaults to 4.
|
||||||
@@ -205,6 +234,24 @@ to disable the limits.
|
|||||||
|
|
||||||
Defaults to 512m, except for hotspot, where it defaults to 0 (no limit).
|
Defaults to 512m, except for hotspot, where it defaults to 0 (no limit).
|
||||||
|
|
||||||
|
#### KEYWORDS
|
||||||
|
|
||||||
|
JTReg kewords sent to JTReg using `-k`. Please be careful in making sure that
|
||||||
|
spaces and special characters (like `!`) are properly quoted. To avoid some
|
||||||
|
issues, the special value `%20` can be used instead of space.
|
||||||
|
|
||||||
|
#### EXTRA_PROBLEM_LISTS
|
||||||
|
|
||||||
|
Use additional problem lists file or files, in addition to the default
|
||||||
|
ProblemList.txt located at the JTReg test roots.
|
||||||
|
|
||||||
|
If multiple file names are specified, they should be separated by space (or, to
|
||||||
|
help avoid quoting issues, the special value `%20`).
|
||||||
|
|
||||||
|
The file names should be either absolute, or relative to the JTReg test root of
|
||||||
|
the tests to be run.
|
||||||
|
|
||||||
|
|
||||||
#### OPTIONS
|
#### OPTIONS
|
||||||
Additional options to the JTReg test framework.
|
Additional options to the JTReg test framework.
|
||||||
|
|
||||||
@@ -216,6 +263,12 @@ Additional Java options to JTReg (`-javaoption`).
|
|||||||
#### VM_OPTIONS
|
#### VM_OPTIONS
|
||||||
Additional VM options to JTReg (`-vmoption`).
|
Additional VM options to JTReg (`-vmoption`).
|
||||||
|
|
||||||
|
#### AOT_MODULES
|
||||||
|
|
||||||
|
Generate AOT modules before testing for the specified module, or set of
|
||||||
|
modules. If multiple modules are specified, they should be separated by space
|
||||||
|
(or, to help avoid quoting issues, the special value `%20`).
|
||||||
|
|
||||||
### Gtest keywords
|
### Gtest keywords
|
||||||
|
|
||||||
#### REPEAT
|
#### REPEAT
|
||||||
@@ -230,6 +283,12 @@ Additional options to the Gtest test framework.
|
|||||||
|
|
||||||
Use `GTEST="OPTIONS=--help"` to see all available Gtest options.
|
Use `GTEST="OPTIONS=--help"` to see all available Gtest options.
|
||||||
|
|
||||||
|
#### AOT_MODULES
|
||||||
|
|
||||||
|
Generate AOT modules before testing for the specified module, or set of
|
||||||
|
modules. If multiple modules are specified, they should be separated by space
|
||||||
|
(or, to help avoid quoting issues, the special value `%20`).
|
||||||
|
|
||||||
## Notes for Specific Tests
|
## Notes for Specific Tests
|
||||||
|
|
||||||
### Docker Tests
|
### Docker Tests
|
||||||
@@ -245,6 +304,35 @@ required on Ubuntu 18.04 by using `JAVA_OPTIONS`.
|
|||||||
|
|
||||||
$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"
|
$ make run-test TEST="jtreg:test/hotspot/jtreg/containers/docker" JTREG="JAVA_OPTIONS=-Djdk.test.docker.image.name=ubuntu -Djdk.test.docker.image.version=latest"
|
||||||
|
|
||||||
|
### Client UI Tests
|
||||||
|
|
||||||
|
Some Client UI tests use key sequences which may be reserved by the operating
|
||||||
|
system. Usually that causes the test failure. So it is highly recommended to disable
|
||||||
|
system key shortcuts prior testing. The steps to access and disable system key shortcuts
|
||||||
|
for various platforms are provided below.
|
||||||
|
|
||||||
|
#### MacOS
|
||||||
|
Choose Apple menu; System Preferences, click Keyboard, then click Shortcuts;
|
||||||
|
select or deselect desired shortcut.
|
||||||
|
|
||||||
|
For example, test/jdk/javax/swing/TooltipManager/JMenuItemToolTipKeyBindingsTest/JMenuItemToolTipKeyBindingsTest.java fails
|
||||||
|
on MacOS because it uses `CTRL + F1` key sequence to show or hide tooltip message
|
||||||
|
but the key combination is reserved by the operating system. To run the test correctly
|
||||||
|
the default global key shortcut should be disabled using the steps described above, and then deselect
|
||||||
|
"Turn keyboard access on or off" option which is responsible for `CTRL + F1` combination.
|
||||||
|
|
||||||
|
#### Linux
|
||||||
|
Open the Activities overview and start typing Settings; Choose Settings, click Devices,
|
||||||
|
then click Keyboard; set or override desired shortcut.
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
Type `gpedit` 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.
|
||||||
|
|
||||||
|
Note: restart is required to make the settings take effect.
|
||||||
|
|
||||||
---
|
---
|
||||||
# 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.
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
# jetbrains/runtime:jbr11env
|
# jetbrains/runtime:jbr11dev8env
|
||||||
FROM centos:7
|
FROM centos:7
|
||||||
|
RUN yum -y install centos-release-scl
|
||||||
RUN yum -y install zip bzip2 unzip tar wget make autoconf automake libtool gcc gcc-c++ libstdc++-devel alsa-devel cups-devel xorg-x11-devel libjpeg62-devel giflib-devel freetype-devel file which libXtst-devel libXt-devel libXrender-devel alsa-lib-devel fontconfig-devel libXrandr-devel libXi-devel
|
RUN yum -y install devtoolset-8
|
||||||
|
RUN yum -y install zip bzip2 unzip tar wget make autoconf automake libtool alsa-devel cups-devel xorg-x11-devel libjpeg62-devel giflib-devel freetype-devel file which libXtst-devel libXt-devel libXrender-devel alsa-lib-devel fontconfig-devel libXrandr-devel libXi-devel git
|
||||||
# Install Java 11
|
# Install Java 11
|
||||||
RUN wget https://bintray.com/jetbrains/intellij-jbr/download_file?file_path=jbrsdk-11_0_3-linux-x64-b360.2.tar.gz \
|
RUN wget https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz \
|
||||||
-O - | tar xz -C /
|
-O - | tar xz -C /
|
||||||
ENV JAVA_HOME /jbrsdk
|
ENV JAVA_HOME /zulu11.45.27-ca-jdk11.0.10-linux_x64
|
||||||
ENV PATH $JAVA_HOME/bin:$PATH
|
ENV PATH $JAVA_HOME/bin:/opt/rh/devtoolset-8/root/usr/bin:$PATH
|
||||||
|
RUN git config --global user.email "teamcity@buildserver.intellij.net"
|
||||||
|
RUN git config --global user.name "builduser"
|
||||||
|
|||||||
7
jb/project/docker/Dockerfile.x86
Normal file
7
jb/project/docker/Dockerfile.x86
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
FROM i386/ubuntu:xenial
|
||||||
|
|
||||||
|
RUN linux32 apt-get update && apt-get install -y --no-install-recommends apt-utils
|
||||||
|
COPY jbrsdk-11.0.5-b1 /jbrsdk-11.0.5-b1
|
||||||
|
RUN linux32 apt-get -y install file build-essential zip unzip curl libx11-dev libxext-dev \
|
||||||
|
libxrender-dev libxrandr-dev libxtst-dev libxt-dev libcups2-dev libasound2-data \
|
||||||
|
libpng12-0 libasound2 libfreetype6 libfontconfig1-dev libasound2-dev autoconf
|
||||||
@@ -495,7 +495,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/cpu/aarch64/vtableStubs_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/vtableStubs_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/relocInfo_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/relocInfo_aarch64.hpp
|
||||||
../../../src/hotspot/cpu/aarch64/vm_version_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/vm_version_aarch64.hpp
|
||||||
../../../src/hotspot/cpu/aarch64/cpustate_aarch64.hpp
|
|
||||||
../../../src/hotspot/cpu/aarch64/immediate_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/immediate_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/vmreg_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/vmreg_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/jniFastGetField_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/jniFastGetField_aarch64.cpp
|
||||||
@@ -520,7 +519,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/cpu/aarch64/c1_FrameMap_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/c1_FrameMap_aarch64.hpp
|
||||||
../../../src/hotspot/cpu/aarch64/templateTable_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/templateTable_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/vmStructs_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/vmStructs_aarch64.hpp
|
||||||
../../../src/hotspot/cpu/aarch64/decode_aarch64.hpp
|
|
||||||
../../../src/hotspot/cpu/aarch64/c1_CodeStubs_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/c1_CodeStubs_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp
|
||||||
../../../src/hotspot/cpu/aarch64/codeBuffer_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/codeBuffer_aarch64.hpp
|
||||||
@@ -529,7 +527,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/cpu/aarch64/assembler_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/assembler_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/register_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/register_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/vm_version_ext_aarch64.cpp
|
../../../src/hotspot/cpu/aarch64/vm_version_ext_aarch64.cpp
|
||||||
../../../src/hotspot/cpu/aarch64/aarch64_call.cpp
|
|
||||||
../../../src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
|
||||||
../../../src/hotspot/cpu/aarch64/bytecodes_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/bytecodes_aarch64.hpp
|
||||||
../../../src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp
|
../../../src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp
|
||||||
@@ -1175,13 +1172,11 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.hpp
|
../../../src/hotspot/share/jfr/recorder/stringpool/jfrStringPoolBuffer.hpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.cpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.cpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.hpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.hpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkSizeNotifier.hpp
|
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkState.hpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkState.hpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrRepository.cpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrRepository.cpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkState.cpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkState.cpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrRepository.hpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrRepository.hpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.hpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkWriter.hpp
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrChunkSizeNotifier.cpp
|
|
||||||
../../../src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp
|
../../../src/hotspot/share/jfr/recorder/repository/jfrEmergencyDump.cpp
|
||||||
../../../src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointBlob.hpp
|
../../../src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointBlob.hpp
|
||||||
../../../src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp
|
../../../src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.cpp
|
||||||
@@ -1254,7 +1249,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleDescription.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleDescription.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/leakProfiler.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/leakProfiler.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/emitEventOperation.hpp
|
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/sampling/sampleList.cpp
|
../../../src/hotspot/share/jfr/leakprofiler/sampling/sampleList.cpp
|
||||||
@@ -1270,7 +1264,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/share/jfr/leakprofiler/utilities/rootType.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/utilities/rootType.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/utilities/unifiedOop.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/utilities/unifiedOop.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/startOperation.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/startOperation.hpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/emitEventOperation.cpp
|
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp
|
../../../src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/chains/rootSetClosure.cpp
|
../../../src/hotspot/share/jfr/leakprofiler/chains/rootSetClosure.cpp
|
||||||
../../../src/hotspot/share/jfr/leakprofiler/chains/edge.hpp
|
../../../src/hotspot/share/jfr/leakprofiler/chains/edge.hpp
|
||||||
@@ -1481,7 +1474,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/share/runtime/basicLock.hpp
|
../../../src/hotspot/share/runtime/basicLock.hpp
|
||||||
../../../src/hotspot/share/runtime/compilationPolicy.cpp
|
../../../src/hotspot/share/runtime/compilationPolicy.cpp
|
||||||
../../../src/hotspot/share/runtime/java.hpp
|
../../../src/hotspot/share/runtime/java.hpp
|
||||||
../../../src/hotspot/share/runtime/simpleThresholdPolicy.cpp
|
|
||||||
../../../src/hotspot/share/runtime/objectMonitor.inline.hpp
|
../../../src/hotspot/share/runtime/objectMonitor.inline.hpp
|
||||||
../../../src/hotspot/share/runtime/mutexLocker.cpp
|
../../../src/hotspot/share/runtime/mutexLocker.cpp
|
||||||
../../../src/hotspot/share/runtime/serviceThread.cpp
|
../../../src/hotspot/share/runtime/serviceThread.cpp
|
||||||
@@ -1524,7 +1516,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/share/runtime/compilationPolicy.hpp
|
../../../src/hotspot/share/runtime/compilationPolicy.hpp
|
||||||
../../../src/hotspot/share/runtime/basicLock.cpp
|
../../../src/hotspot/share/runtime/basicLock.cpp
|
||||||
../../../src/hotspot/share/runtime/java.cpp
|
../../../src/hotspot/share/runtime/java.cpp
|
||||||
../../../src/hotspot/share/runtime/simpleThresholdPolicy.hpp
|
|
||||||
../../../src/hotspot/share/runtime/perfData.inline.hpp
|
../../../src/hotspot/share/runtime/perfData.inline.hpp
|
||||||
../../../src/hotspot/share/runtime/statSampler.hpp
|
../../../src/hotspot/share/runtime/statSampler.hpp
|
||||||
../../../src/hotspot/share/runtime/vm_operations.cpp
|
../../../src/hotspot/share/runtime/vm_operations.cpp
|
||||||
@@ -1557,7 +1548,6 @@ set(SOURCE_FILES
|
|||||||
../../../src/hotspot/share/runtime/handshake.hpp
|
../../../src/hotspot/share/runtime/handshake.hpp
|
||||||
../../../src/hotspot/share/runtime/thread.inline.hpp
|
../../../src/hotspot/share/runtime/thread.inline.hpp
|
||||||
../../../src/hotspot/share/runtime/perfMemory.hpp
|
../../../src/hotspot/share/runtime/perfMemory.hpp
|
||||||
../../../src/hotspot/share/runtime/simpleThresholdPolicy.inline.hpp
|
|
||||||
../../../src/hotspot/share/runtime/javaCalls.cpp
|
../../../src/hotspot/share/runtime/javaCalls.cpp
|
||||||
../../../src/hotspot/share/runtime/reflection.cpp
|
../../../src/hotspot/share/runtime/reflection.cpp
|
||||||
../../../src/hotspot/share/runtime/icache.cpp
|
../../../src/hotspot/share/runtime/icache.cpp
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
set(CMAKE_CXX_STANDARD 98)
|
set(CMAKE_CXX_STANDARD 98)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -D_REENTRANT -DVM_LITTLE_ENDIAN -D_LP64 -DTARGET_ARCH_x86 ")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -D_REENTRANT -DVM_LITTLE_ENDIAN -D_LP64 -DTARGET_ARCH_x86 ")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DINCLUDE_SUFFIX_CPU=_x86 -DAMD64 -DHOTSPOT_LIB_ARCH='amd64' -DCOMPILER1 -DCOMPILER2")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DINCLUDE_SUFFIX_CPU=_x86 -DAMD64 -DHOTSPOT_LIB_ARCH='amd64' -DCOMPILER1 -DCOMPILER2")
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFT2_BUILD_LIBRARY")
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTARGET_COMPILER_gcc")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTARGET_COMPILER_gcc")
|
||||||
@@ -16,15 +17,55 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_ALLBSD_SOURCE -DTARGET_OS_FAMILY_bsd")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_ALLBSD_SOURCE -DTARGET_OS_FAMILY_bsd")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if ("${CMAKE_SYSTEM_NAME}" MATCHES "CYGWIN") #not shure about TARGET_COMPILER
|
if ("${CMAKE_SYSTEM_NAME}" MATCHES "CYGWIN") #not sure about TARGET_COMPILER
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTARGET_COMPILER_visCPP -DWIN64 -D_WINDOWS -DTARGET_OS_FAMILY_windows")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTARGET_COMPILER_visCPP -DWIN64 -D_WINDOWS -DTARGET_OS_FAMILY_windows")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
add_custom_target(configure
|
add_custom_target(configure
|
||||||
COMMAND bash configure
|
COMMAND bash configure --disable-warnings-as-errors
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../)
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../)
|
||||||
|
|
||||||
add_custom_target(build_images
|
add_custom_target(configure_debug
|
||||||
COMMAND make COMPILER_WARNINGS_FATAL=false images
|
COMMAND bash configure --disable-warnings-as-errors --enable-debug
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../)
|
||||||
|
|
||||||
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
|
set(JDK_RELEASE_TARGET "linux-x86_64-normal-server-release")
|
||||||
|
set(JDK_DEBUG_TARGET "linux-x86_64-normal-server-fastdebug")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
|
set(JDK_RELEASE_TARGET "macosx-x86_64-normal-server-release")
|
||||||
|
set(JDK_DEBUG_TARGET "macosx-x86_64-normal-server-fastdebug")
|
||||||
|
add_compile_definitions(MACOSX)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
add_custom_target(build
|
||||||
|
COMMAND make CONF=${JDK_RELEASE_TARGET}
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../
|
||||||
DEPENDS ${SOURCE_FILES})
|
DEPENDS ${SOURCE_FILES})
|
||||||
|
|
||||||
|
add_custom_target(build_images
|
||||||
|
COMMAND make images CONF=${JDK_RELEASE_TARGET}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../
|
||||||
|
DEPENDS ${SOURCE_FILES})
|
||||||
|
|
||||||
|
add_custom_target(build_debug
|
||||||
|
COMMAND make CONF=${JDK_DEBUG_TARGET}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../
|
||||||
|
DEPENDS ${SOURCE_FILES})
|
||||||
|
|
||||||
|
add_custom_target(build_images_debug
|
||||||
|
COMMAND make images CONF=${JDK_DEBUG_TARGET}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../
|
||||||
|
DEPENDS ${SOURCE_FILES})
|
||||||
|
|
||||||
|
add_custom_target(make_clean
|
||||||
|
COMMAND make clean CONF=${JDK_RELEASE_TARGET}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../
|
||||||
|
DEPENDS ${SOURCE_FILES})
|
||||||
|
|
||||||
|
add_custom_target(make_clean_debug
|
||||||
|
COMMAND make clean CONF=${JDK_DEBUG_TARGET}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../../
|
||||||
|
DEPENDS ${SOURCE_FILES})
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ include(../java-common.cmake)
|
|||||||
include_directories(
|
include_directories(
|
||||||
../../../src/java.base/share/native/include
|
../../../src/java.base/share/native/include
|
||||||
../../../src/java.base/share/native/libjava
|
../../../src/java.base/share/native/libjava
|
||||||
|
../../../src/java.base/share/native/libzip/zlib
|
||||||
../../../src/java.desktop/share/native/common
|
../../../src/java.desktop/share/native/common
|
||||||
../../../src/java.desktop/share/native/common/awt/debug
|
../../../src/java.desktop/share/native/common/awt/debug
|
||||||
../../../src/java.desktop/share/native/common/font
|
../../../src/java.desktop/share/native/common/font
|
||||||
@@ -58,6 +59,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
|||||||
../../../src/java.desktop/unix/native/common/font
|
../../../src/java.desktop/unix/native/common/font
|
||||||
../../../src/java.desktop/unix/native/common/java2d/opengl
|
../../../src/java.desktop/unix/native/common/java2d/opengl
|
||||||
../../../src/java.desktop/unix/native/common/java2d/opengl/J2D_GL
|
../../../src/java.desktop/unix/native/common/java2d/opengl/J2D_GL
|
||||||
|
../../../src/java.desktop/unix/native/common/java2d/x11
|
||||||
../../../src/java.desktop/unix/native/common
|
../../../src/java.desktop/unix/native/common
|
||||||
../../../src/java.desktop/unix/native/include
|
../../../src/java.desktop/unix/native/include
|
||||||
../../../src/java.desktop/unix/native/libawt/java2d
|
../../../src/java.desktop/unix/native/libawt/java2d
|
||||||
@@ -192,16 +194,19 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/config
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftmodule.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/config/ftmodule.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftcolor.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/internal.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/internal.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h
|
||||||
@@ -216,13 +221,13 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/fthash.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/fthash.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h
|
||||||
@@ -272,6 +277,8 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h
|
../../../src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/include/ft2build.h
|
../../../src/java.desktop/share/native/libfreetype/include/ft2build.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/type1
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1objs.c
|
../../../src/java.desktop/share/native/libfreetype/src/type1/t1objs.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1load.h
|
../../../src/java.desktop/share/native/libfreetype/src/type1/t1load.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1afm.h
|
../../../src/java.desktop/share/native/libfreetype/src/type1/t1afm.h
|
||||||
@@ -286,40 +293,42 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1driver.c
|
../../../src/java.desktop/share/native/libfreetype/src/type1/t1driver.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1parse.c
|
../../../src/java.desktop/share/native/libfreetype/src/type1/t1parse.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/type1/t1gload.h
|
../../../src/java.desktop/share/native/libfreetype/src/type1/t1gload.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/smooth
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c
|
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h
|
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftspic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h
|
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h
|
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftspic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c
|
../../../src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/cff
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffload.h
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffload.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffgload.c
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffgload.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffparse.h
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffparse.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffpic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffparse.c
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffparse.c
|
||||||
@@ -327,10 +336,10 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffgload.h
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffgload.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffload.c
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffload.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffpic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h
|
../../../src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/psaux
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psarrst.h
|
../../../src/java.desktop/share/native/libfreetype/src/psaux/psarrst.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psstack.h
|
../../../src/java.desktop/share/native/libfreetype/src/psaux/psstack.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h
|
../../../src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h
|
||||||
@@ -367,6 +376,7 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c
|
../../../src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h
|
../../../src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psaux/psread.h
|
../../../src/java.desktop/share/native/libfreetype/src/psaux/psread.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/cid
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h
|
../../../src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidriver.c
|
../../../src/java.desktop/share/native/libfreetype/src/cid/cidriver.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidparse.c
|
../../../src/java.desktop/share/native/libfreetype/src/cid/cidparse.c
|
||||||
@@ -379,11 +389,12 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidparse.h
|
../../../src/java.desktop/share/native/libfreetype/src/cid/cidparse.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c
|
../../../src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/cid/cidload.h
|
../../../src/java.desktop/share/native/libfreetype/src/cid/cidload.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/autofit
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afindic.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afindic.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwarp.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwarp.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afpic.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afblue.cin
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcover.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcover.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwrtsys.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwrtsys.h
|
||||||
@@ -396,10 +407,10 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afranges.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afranges.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afindic.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afindic.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afpic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwarp.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afwarp.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c
|
||||||
@@ -409,64 +420,58 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afranges.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afranges.h
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afblue.hin
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afloader.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afloader.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afangles.h
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afangles.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/autofit/afhints.c
|
../../../src/java.desktop/share/native/libfreetype/src/autofit/afhints.c
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c
|
../../../src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/truetype
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttpic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c
|
../../../src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/raster
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h
|
../../../src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h
|
../../../src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/rastpic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h
|
../../../src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftraster.h
|
../../../src/java.desktop/share/native/libfreetype/src/raster/ftraster.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/rastpic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftraster.c
|
../../../src/java.desktop/share/native/libfreetype/src/raster/ftraster.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c
|
../../../src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c
|
||||||
|
../../../src/java.desktop/share/native/libfreetype/src/psnames
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h
|
../../../src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c
|
../../../src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/pspic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/pstables.h
|
../../../src/java.desktop/share/native/libfreetype/src/psnames/pstables.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h
|
../../../src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/psnames/pspic.c
|
../../../src/java.desktop/share/native/libfreetype/src/base
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftobjs.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftobjs.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftinit.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftinit.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftapi.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/fthash.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/fthash.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/basepic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftpic.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftcid.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftcid.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/md5.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftglyph.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftglyph.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftsystem.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftsystem.c
|
||||||
@@ -480,11 +485,9 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftsnames.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftsnames.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftdebug.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftdebug.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftmm.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftmm.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/basepic.h
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftbase.h
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftbase.h
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftfstype.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftfstype.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/fttrigon.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/fttrigon.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/md5.c
|
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftbbox.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftbbox.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftstroke.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftstroke.c
|
||||||
../../../src/java.desktop/share/native/libfreetype/src/base/ftgasp.c
|
../../../src/java.desktop/share/native/libfreetype/src/base/ftgasp.c
|
||||||
@@ -742,38 +745,214 @@ set(SOURCE_FILES
|
|||||||
../../../src/java.desktop/share/native/libjavajpeg/jidctred.c
|
../../../src/java.desktop/share/native/libjavajpeg/jidctred.c
|
||||||
../../../src/java.desktop/share/native/libjavajpeg/jpegint.h
|
../../../src/java.desktop/share/native/libjavajpeg/jpegint.h
|
||||||
../../../src/java.desktop/share/native/libjavajpeg/jdpostct.c
|
../../../src/java.desktop/share/native/libjavajpeg/jdpostct.c
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager
|
||||||
../../../src/java.desktop/share/native/libfontmanager/DrawGlyphList.c
|
../../../src/java.desktop/share/native/libfontmanager/DrawGlyphList.c
|
||||||
../../../src/java.desktop/share/native/libfontmanager/HBShaper.c
|
../../../src/java.desktop/share/native/libfontmanager/HBShaper.c
|
||||||
../../../src/java.desktop/share/native/libfontmanager/scriptMapping.c
|
../../../src/java.desktop/share/native/libfontmanager/scriptMapping.c
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-fdsc-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-post-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-machine.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-type.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-plan.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-common.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-machine.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-base-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-head-table.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-win1256.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper-list.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff-interp-common.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-post-macroman.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-deprecated.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-version.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-version.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-stat-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name-language.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-ltag-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat.h
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff-interp-cs-common.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-kern.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff-common.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-default.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.h
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff1-table.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-just-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-colr-table.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-deprecated.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-deprecated.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff1.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-kerx-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-vorg-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-table.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-kern-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-serialize.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name-language.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gpos-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-avar-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff-common.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-fallback-shape.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff1-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-string-array.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff1.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-lcar-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-hvar-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gsubgpos.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-static.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.c
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.c
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.h
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn_db.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn_db.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-morx-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff2-interp-cs.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer-machine.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-thai.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-hhea-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-mvar-table.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-plan.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-os2-unicode-ranges.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-warning.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-hdmx-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-khmer.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff-common.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gdef-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-glyf-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-glyf.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff2-table.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-sbix-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode-emoji-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-feat-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-object.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-gasp-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-deserialize-json.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-vector.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar-machine.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-debug.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-vowel-constraints.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-iter.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-face.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-trak-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff1-interp-cs.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-hmtx-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-ankr-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cff-interp-dict-common.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-map.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-common.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-input.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-cbdt-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-cpal-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff2.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-utf.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hebrew.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-map.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-fvar-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-map.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-map.h
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-jstf-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-mutex.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-os2-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-face.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gsub-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-input.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-math-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cmap-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-layout-bsln-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-aat-map.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-maxp-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-deserialize-text.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-map.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-cff2.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-array.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hangul.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-null.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cff2-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset-glyf.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set-digest.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-file.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-machinery.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-subset.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-color-svg-table.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-dsalgs.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-table.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-math.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-math.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-math.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.h
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.hh
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-vowel-constraints.cc
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper-impl.hh
|
||||||
../../../src/java.desktop/share/native/libfontmanager/glyphblitting.h
|
../../../src/java.desktop/share/native/libfontmanager/glyphblitting.h
|
||||||
../../../src/java.desktop/share/native/libfontmanager/hb-jdk.h
|
../../../src/java.desktop/share/native/libfontmanager/hb-jdk.h
|
||||||
../../../src/java.desktop/share/native/libfontmanager/fontconfig.h
|
../../../src/java.desktop/share/native/libfontmanager/fontconfig.h
|
||||||
|
../../../src/java.desktop/share/native/libfontmanager/hb-jdk-font.cc
|
||||||
../../../src/java.desktop/share/native/libfontmanager/freetypeScaler.c
|
../../../src/java.desktop/share/native/libfontmanager/freetypeScaler.c
|
||||||
../../../src/java.desktop/share/native/libfontmanager/scriptMapping.h
|
../../../src/java.desktop/share/native/libfontmanager/scriptMapping.h
|
||||||
../../../src/java.desktop/share/native/libfontmanager/ColorGlyphSurfaceData.c
|
../../../src/java.desktop/share/native/libfontmanager/ColorGlyphSurfaceData.c
|
||||||
@@ -849,7 +1028,10 @@ set(SOURCE_FILES
|
|||||||
../../../src/jdk.jdwp.agent/share/native/include/jdwpTransport.h
|
../../../src/jdk.jdwp.agent/share/native/include/jdwpTransport.h
|
||||||
../../../src/hotspot/share/include/jmm.h
|
../../../src/hotspot/share/include/jmm.h
|
||||||
../../../src/java.base/share/native/include/jni.h
|
../../../src/java.base/share/native/include/jni.h
|
||||||
../../../src/java.base/share/native/include/jvmticmlr.h)
|
../../../src/java.base/share/native/include/jvmticmlr.h
|
||||||
|
../../../src/java.base/share/native/libzip/zlib/zutil.c
|
||||||
|
../../../src/java.base/share/native/libzip/zlib/inflate.c)
|
||||||
|
|
||||||
|
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
set(SOURCE_FILES
|
set(SOURCE_FILES
|
||||||
@@ -911,7 +1093,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|||||||
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/CFileDialog.h
|
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/CFileDialog.h
|
||||||
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.h
|
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.h
|
||||||
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.h
|
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.h
|
||||||
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsConfig.m
|
|
||||||
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/CDesktopPeer.m
|
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/CDesktopPeer.m
|
||||||
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/PrintModel.h
|
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/PrintModel.h
|
||||||
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/CTrayIcon.m
|
../../../src/java.desktop/macosx/native/libawt_lwawt/awt/CTrayIcon.m
|
||||||
@@ -1149,10 +1330,8 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
|||||||
../../../src/java.desktop/unix/native/libawt/awt/awt_Mlib.c
|
../../../src/java.desktop/unix/native/libawt/awt/awt_Mlib.c
|
||||||
../../../src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c
|
../../../src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c
|
||||||
../../../src/java.desktop/unix/native/libawt/awt/initIDs.c
|
../../../src/java.desktop/unix/native/libawt/awt/initIDs.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRBackendNative.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRSurfaceData.c
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/randr.h
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/list.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/list.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_DrawingSurface.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_DrawingSurface.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKStyle.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKStyle.c
|
||||||
@@ -1167,8 +1346,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
|||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/multi_font.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/multi_font.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/multiVis.h
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/multiVis.h
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/Xrandr.h
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/robot_common.c
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_util.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_util.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/list.h
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/list.h
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h
|
||||||
@@ -1176,24 +1353,15 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux"
|
|||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.h
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.h
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/HPkeysym.h
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/canvas.h
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/canvas.h
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/multi_font.h
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/multi_font.h
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/robot_common.h
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
|
../../../src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/awt_Desktop.c
|
../../../src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRBackendNative.c
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/awt_Taskbar.c
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/gnome_interface.c
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/gnome_interface.h
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/awt_Taskbar.h
|
|
||||||
../../../src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c
|
|
||||||
../../../src/java.desktop/unix/native/libfontmanager/X11FontScaler.c
|
../../../src/java.desktop/unix/native/libfontmanager/X11FontScaler.c
|
||||||
../../../src/java.desktop/unix/native/libfontmanager/X11TextRenderer.c
|
../../../src/java.desktop/unix/native/libfontmanager/X11TextRenderer.c
|
||||||
../../../src/java.desktop/unix/native/libsplashscreen/splashscreen_config.h
|
../../../src/java.desktop/unix/native/libsplashscreen/splashscreen_config.h
|
||||||
|
|||||||
16
jb/project/tools/common.sh
Normal file
16
jb/project/tools/common.sh
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
VENDOR_NAME="JetBrains s.r.o."
|
||||||
|
VENDOR_VERSION_STRING="JBR-${JBSDK_VERSION_WITH_DOTS}.${JDK_BUILD_NUMBER}-${build_number}"
|
||||||
|
[ -z ${bundle_type} ] || VENDOR_VERSION_STRING="${VENDOR_VERSION_STRING}-${bundle_type}"
|
||||||
|
|
||||||
|
do_reset_changes=0
|
||||||
|
do_reset_dcevm=0
|
||||||
|
HEAD_REVISION=0
|
||||||
|
|
||||||
|
function do_exit() {
|
||||||
|
exit_code=$1
|
||||||
|
[ $do_reset_changes -eq 1 ] && git checkout HEAD modules.list src/java.desktop/share/classes/module-info.java
|
||||||
|
if [ $do_reset_dcevm -eq 1 ]; then
|
||||||
|
[ ! -z $HEAD_REVISION ] && git reset --hard $HEAD_REVISION
|
||||||
|
fi
|
||||||
|
exit $exit_code
|
||||||
|
}
|
||||||
86
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
86
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
@@ -0,0 +1,86 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||||
|
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to bu built; possible values:
|
||||||
|
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
|
||||||
|
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||||
|
|
||||||
|
source jb/project/tools/common.sh
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||||
|
|
||||||
|
sh configure \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
--with-debug-level=release \
|
||||||
|
--with-vendor-name="${VENDOR_NAME}" \
|
||||||
|
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
--with-import-modules=./modular-sdk \
|
||||||
|
--with-boot-jdk=amazon-corretto-11.0.5.10.1-linux-aarch64 \
|
||||||
|
--enable-cds=yes || exit $?
|
||||||
|
make clean CONF=linux-aarch64-normal-server-release || exit $?
|
||||||
|
make images CONF=linux-aarch64-normal-server-release test-image || exit $?
|
||||||
|
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-linux-aarch64-b${build_number}
|
||||||
|
BASE_DIR=build/linux-aarch64-normal-server-release/images
|
||||||
|
JSDK=${BASE_DIR}/jdk
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
echo Fixing permissions
|
||||||
|
chmod -R a+r $JSDK
|
||||||
|
|
||||||
|
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||||
|
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||||
|
|
||||||
|
echo Creating $JBSDK.tar.gz ...
|
||||||
|
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/release > release
|
||||||
|
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/release
|
||||||
|
|
||||||
|
tar -pcf $JBSDK.tar \
|
||||||
|
--exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||||
|
-C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||||
|
gzip $JBSDK.tar || exit $?
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr
|
||||||
|
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||||
|
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||||
|
|
||||||
|
JBR=$JBR_BASE_NAME-linux-aarch64-b$build_number
|
||||||
|
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.aarch64
|
||||||
|
echo Running jlink....
|
||||||
|
${JSDK}/bin/jlink \
|
||||||
|
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||||
|
--add-modules $(xargs < modules.list.aarch64 | sed s/" "//g | sed s/,$//g) \
|
||||||
|
--output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||||
|
|
||||||
|
echo Modifying release info ...
|
||||||
|
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||||
|
|
||||||
|
echo Creating $JBR.tar.gz ...
|
||||||
|
tar -pcf $JBR.tar -C $BASE_DIR ${JBR_BUNDLE} || exit $?
|
||||||
|
gzip $JBR.tar || exit $?
|
||||||
|
|
||||||
|
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-aarch64-b$build_number
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' test || exit $?
|
||||||
|
gzip $JBRSDK_TEST.tar || exit $?
|
||||||
154
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
154
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,154 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built; possible values:
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# dcevm - the release bundles with dcevm patches
|
||||||
|
# nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
|
||||||
|
# By default imported modules should be located in ./modular-sdk
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_linux_x64
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
bundle_type=$4
|
||||||
|
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||||
|
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=./modular-sdk}"
|
||||||
|
JCEF_PATH=${JCEF_PATH:=./jcef_linux_x64}
|
||||||
|
|
||||||
|
source jb/project/tools/common.sh
|
||||||
|
|
||||||
|
function create_jbr {
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr_${bundle_type}
|
||||||
|
|
||||||
|
case "${bundle_type}" in
|
||||||
|
"jcef" | "dcevm" | "nomod" | "fd")
|
||||||
|
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
cat modules.list > modules_tmp.list
|
||||||
|
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||||
|
|
||||||
|
JBR=${JBR_BASE_NAME}-linux-x64-b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink....
|
||||||
|
$JSDK/bin/jlink \
|
||||||
|
--module-path $JSDK/jmods --no-man-pages --compress=2 \
|
||||||
|
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output $BASE_DIR/$JBR_BUNDLE || do_exit $?
|
||||||
|
|
||||||
|
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
|
||||||
|
cp -R $BASE_DIR/$JBR_BUNDLE $BASE_DIR/jbr
|
||||||
|
rsync -av ${JCEF_PATH}/ $BASE_DIR/$JBR_BUNDLE/lib --exclude="modular-sdk" || do_exit $?
|
||||||
|
fi
|
||||||
|
grep -v "^JAVA_VERSION" $JSDK/release | grep -v "^MODULES" >> $BASE_DIR/$JBR_BUNDLE/release
|
||||||
|
|
||||||
|
echo Creating ${JBR}.tar.gz ...
|
||||||
|
rm -rf ${BASE_DIR}/jbr
|
||||||
|
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||||
|
tar -pcf ${JBR}.tar -C ${BASE_DIR} jbr || do_exit $?
|
||||||
|
gzip -f ${JBR}.tar || do_exit $?
|
||||||
|
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||||
|
}
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=linux-x86_64-normal-server-release
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-b${build_number}
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
;;
|
||||||
|
"dcevm")
|
||||||
|
HEAD_REVISION=$(git rev-parse HEAD)
|
||||||
|
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
|
||||||
|
do_reset_dcevm=1
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
;;
|
||||||
|
"nomod")
|
||||||
|
WITH_IMPORT_MODULES=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=linux-x86_64-normal-server-fastdebug
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-fastdebug-b${build_number}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
sh configure \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="${VENDOR_NAME}" \
|
||||||
|
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
$WITH_IMPORT_MODULES \
|
||||||
|
--enable-cds=yes || do_exit $?
|
||||||
|
|
||||||
|
make clean images CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
|
||||||
|
JSDK=build/${RELEASE_NAME}/images/jdk
|
||||||
|
|
||||||
|
echo Fixing permissions
|
||||||
|
chmod -R a+r $JSDK
|
||||||
|
|
||||||
|
BASE_DIR=build/${RELEASE_NAME}/images
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE}
|
||||||
|
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || do_exit $?
|
||||||
|
|
||||||
|
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
|
||||||
|
rsync -av ${JCEF_PATH}/ $BASE_DIR/$JBRSDK_BUNDLE/lib --exclude="modular-sdk" || do_exit $?
|
||||||
|
fi
|
||||||
|
if [ "${bundle_type}" == "jcef" ] || [ "${bundle_type}" == "fd" ]; then
|
||||||
|
echo Creating $JBSDK.tar.gz ...
|
||||||
|
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/release > release
|
||||||
|
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/release
|
||||||
|
|
||||||
|
tar -pcf ${JBSDK}.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||||
|
-C ${BASE_DIR} ${JBRSDK_BUNDLE} || do_exit $?
|
||||||
|
gzip -f ${JBSDK}.tar || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_jbr || do_exit $?
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
make test-image CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
|
||||||
|
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-x64-b$build_number
|
||||||
|
|
||||||
|
echo Creating $JBSDK_TEST.tar.gz ...
|
||||||
|
tar -pcf ${JBRSDK_TEST}.tar -C ${BASE_DIR} --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
gzip -f ${JBRSDK_TEST}.tar || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
82
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
82
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||||
|
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to bu built; possible values:
|
||||||
|
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
|
||||||
|
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||||
|
|
||||||
|
source jb/project/tools/common.sh
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||||
|
|
||||||
|
linux32 bash configure \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
--with-debug-level=release \
|
||||||
|
--with-vendor-name="${VENDOR_NAME}" \
|
||||||
|
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=$JDK_BUILD_NUMBER \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
--with-boot-jdk=/jbrsdk-11.0.5-b1 \
|
||||||
|
--enable-cds=yes || exit $?
|
||||||
|
make clean CONF=linux-x86-normal-server-release || exit $?
|
||||||
|
make images CONF=linux-x86-normal-server-release test-image || exit $?
|
||||||
|
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-linux-x86-b${build_number}
|
||||||
|
BASE_DIR=build/linux-x86-normal-server-release/images
|
||||||
|
JSDK=${BASE_DIR}/jdk
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
echo Fixing permissions
|
||||||
|
chmod -R a+r $JSDK
|
||||||
|
|
||||||
|
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||||
|
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||||
|
|
||||||
|
echo Creating $JBSDK.tar.gz ...
|
||||||
|
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/release > release
|
||||||
|
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/release
|
||||||
|
|
||||||
|
tar -pcf $JBSDK.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man -C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||||
|
gzip $JBSDK.tar || exit $?
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr
|
||||||
|
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||||
|
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||||
|
|
||||||
|
JBR=$JBR_BASE_NAME-linux-x86-b$build_number
|
||||||
|
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.x86
|
||||||
|
echo Running jlink....
|
||||||
|
${JSDK}/bin/jlink \
|
||||||
|
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||||
|
--add-modules $(xargs < modules.list.x86 | sed s/" "//g | sed s/,$//g) --output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||||
|
|
||||||
|
echo Modifying release info ...
|
||||||
|
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||||
|
|
||||||
|
echo Creating $JBR.tar.gz ...
|
||||||
|
tar -pcf $JBR.tar -C $BASE_DIR $JBR_BUNDLE || exit $?
|
||||||
|
gzip $JBR.tar || exit $?
|
||||||
|
|
||||||
|
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-x86-b$build_number
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' --exclude='test/hotspot/gtest' test || exit $?
|
||||||
|
gzip $JBRSDK_TEST.tar || exit $?
|
||||||
218
jb/project/tools/mac/scripts/mkimages.sh
Executable file
218
jb/project/tools/mac/scripts/mkimages.sh
Executable file
@@ -0,0 +1,218 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built; possible values:
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# dcevm - the release bundles with dcevm patches
|
||||||
|
# nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
|
||||||
|
# By default imported modules should be located in ./modular-sdk
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_mac
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
bundle_type=$4
|
||||||
|
architecture=$5 # aarch64 or x64
|
||||||
|
enable_aot=$6 # temporary param for building test jre with aot under aarch64
|
||||||
|
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||||
|
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=./modular-sdk}"
|
||||||
|
JCEF_PATH=${JCEF_PATH:=./jcef_mac}
|
||||||
|
architecture=${architecture:=x64}
|
||||||
|
|
||||||
|
source jb/project/tools/common.sh
|
||||||
|
|
||||||
|
function copyJNF {
|
||||||
|
__contents_dir=$1
|
||||||
|
mkdir -p ${__contents_dir}/Frameworks
|
||||||
|
cp -Rp Frameworks/JavaNativeFoundation.framework ${__contents_dir}/Frameworks
|
||||||
|
}
|
||||||
|
function create_jbr {
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr_${bundle_type}
|
||||||
|
|
||||||
|
case "${bundle_type}" in
|
||||||
|
"jcef" | "dcevm" | "nomod" | "fd")
|
||||||
|
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [[ "${architecture}" == *aarch64* ]] && [[ "${enable_aot}" != *enable_aot* ]]; then
|
||||||
|
# aot isn't supported yet, so remove dependent modules
|
||||||
|
echo "Exclude jdk.internal.vm.compiler and jdk.aot (because aot not supported yet)"
|
||||||
|
cat modules.list | \
|
||||||
|
grep -v "jdk.internal.vm.compiler\|jdk.aot" \
|
||||||
|
> modules_tmp.list
|
||||||
|
else
|
||||||
|
cat modules.list > modules_tmp.list
|
||||||
|
fi
|
||||||
|
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||||
|
|
||||||
|
JRE_CONTENTS=${BASE_DIR}/${JBR_BUNDLE}/Contents
|
||||||
|
JRE_HOME=${JRE_CONTENTS}/Home
|
||||||
|
if [ -d "${JRE_CONTENTS}" ]; then
|
||||||
|
rm -rf ${JRE_CONTENTS}
|
||||||
|
fi
|
||||||
|
mkdir -p ${JRE_CONTENTS}
|
||||||
|
|
||||||
|
JBR=${JBR_BASE_NAME}-osx-${architecture}-b${build_number}
|
||||||
|
|
||||||
|
echo Running jlink....
|
||||||
|
${BASE_DIR}/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
|
||||||
|
--module-path ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/jmods --no-man-pages --compress=2 \
|
||||||
|
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JRE_HOME} || do_exit $?
|
||||||
|
grep -v "^JAVA_VERSION" ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release | grep -v "^MODULES" >> ${JRE_HOME}/release
|
||||||
|
cp -R ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/MacOS ${JRE_CONTENTS}
|
||||||
|
cp ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Info.plist ${JRE_CONTENTS}
|
||||||
|
|
||||||
|
rm -rf ${JRE_CONTENTS}/Frameworks || do_exit $?
|
||||||
|
if [[ "${architecture}" == *aarch64* ]]; then
|
||||||
|
# we can't notarize this library as usual framework (with headers and tbd-file)
|
||||||
|
# but single library notarizes correctly
|
||||||
|
copyJNF ${JRE_CONTENTS}
|
||||||
|
fi
|
||||||
|
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
|
||||||
|
cp -a ${JCEF_PATH}/Frameworks ${JRE_CONTENTS} || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Creating ${JBR}.tar.gz ...
|
||||||
|
rm -rf ${BASE_DIR}/jbr
|
||||||
|
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||||
|
|
||||||
|
COPYFILE_DISABLE=1 tar -pczf ${JBR}.tar.gz --exclude='*.dSYM' --exclude='man' -C ${BASE_DIR} jbr || do_exit $?
|
||||||
|
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||||
|
}
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
CONF_ARCHITECTURE=x86_64
|
||||||
|
if [[ "${architecture}" == *aarch64* ]]; then
|
||||||
|
CONF_ARCHITECTURE=aarch64
|
||||||
|
fi
|
||||||
|
CONF_NAME=macosx-${CONF_ARCHITECTURE}-normal-server-release
|
||||||
|
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-osx-${architecture}-b${build_number}
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
;;
|
||||||
|
"dcevm")
|
||||||
|
HEAD_REVISION=$(git rev-parse HEAD)
|
||||||
|
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
|
||||||
|
do_reset_dcevm=1
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
;;
|
||||||
|
"nomod")
|
||||||
|
WITH_IMPORT_MODULES=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
CONF_NAME=macosx-${CONF_ARCHITECTURE}-normal-server-fastdebug
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-osx-${architecture}-fastdebug-b${build_number}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ "${architecture}" == *aarch64* ]]; then
|
||||||
|
# NOTE: aot, cds aren't supported yet
|
||||||
|
WITH_JVM_FEATURES="--with-jvm-features=-aot"
|
||||||
|
if [[ "${enable_aot}" == *enable_aot* ]]; then
|
||||||
|
echo "Enable unstable jvm feature: AOT"
|
||||||
|
WITH_JVM_FEATURES=""
|
||||||
|
fi
|
||||||
|
sh configure \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="${VENDOR_NAME}" \
|
||||||
|
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
$WITH_IMPORT_MODULES \
|
||||||
|
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
|
||||||
|
--disable-hotspot-gtest --disable-javac-server --disable-full-docs --disable-manpages \
|
||||||
|
--enable-cds=no \
|
||||||
|
$WITH_JVM_FEATURES \
|
||||||
|
--with-extra-cflags="-F$(pwd)/Frameworks" \
|
||||||
|
--with-extra-cxxflags="-F$(pwd)/Frameworks" \
|
||||||
|
--with-extra-ldflags="-F$(pwd)/Frameworks" || do_exit $?
|
||||||
|
else
|
||||||
|
sh configure \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="${VENDOR_NAME}" \
|
||||||
|
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
$WITH_IMPORT_MODULES \
|
||||||
|
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
|
||||||
|
--enable-cds=yes || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
make clean CONF=$CONF_NAME || do_exit $?
|
||||||
|
make images CONF=$CONF_NAME || do_exit $?
|
||||||
|
|
||||||
|
JSDK=build/${CONF_NAME}/images/jdk-bundle
|
||||||
|
|
||||||
|
BASE_DIR=jre
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
rm -rf $BASE_DIR
|
||||||
|
mkdir $BASE_DIR || do_exit $?
|
||||||
|
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || do_exit $?
|
||||||
|
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
|
||||||
|
cp -a ${JCEF_PATH}/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/
|
||||||
|
fi
|
||||||
|
if [ "${bundle_type}" == "jcef" ] || [ "${bundle_type}" == "fd" ]; then
|
||||||
|
echo Creating $JBSDK.tar.gz ...
|
||||||
|
if [[ "${architecture}" == *aarch64* ]]; then
|
||||||
|
copyJNF $BASE_DIR/$JBRSDK_BUNDLE/Contents
|
||||||
|
fi
|
||||||
|
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release > release
|
||||||
|
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release
|
||||||
|
[ -f "${JBSDK}.tar.gz" ] && rm "${JBSDK}.tar.gz"
|
||||||
|
COPYFILE_DISABLE=1 tar -pczf ${JBSDK}.tar.gz -C ${BASE_DIR} \
|
||||||
|
--exclude='.DS_Store' --exclude='*~' \
|
||||||
|
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
|
||||||
|
${JBRSDK_BUNDLE} || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_jbr || do_exit $?
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
make test-image CONF=$CONF_NAME || do_exit $?
|
||||||
|
|
||||||
|
JBRSDK_TEST=$JBRSDK_BASE_NAME-osx-test-${architecture}-b$build_number
|
||||||
|
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
[ -f "${JBRSDK_TEST}.tar.gz" ] && rm "${JBRSDK_TEST}.tar.gz"
|
||||||
|
COPYFILE_DISABLE=1 tar -pczf ${JBRSDK_TEST}.tar.gz -C build/${CONF_NAME}/images \
|
||||||
|
--exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
@@ -58,7 +58,7 @@ file="$APP_NAME.zip"
|
|||||||
|
|
||||||
log "Zipping $file..."
|
log "Zipping $file..."
|
||||||
rm -rf "$file"
|
rm -rf "$file"
|
||||||
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY/Contents" "$file"
|
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY" "$file"
|
||||||
|
|
||||||
log "Notarizing $file..."
|
log "Notarizing $file..."
|
||||||
rm -rf "altool.init.out" "altool.check.out"
|
rm -rf "altool.init.out" "altool.check.out"
|
||||||
|
|||||||
@@ -30,12 +30,26 @@ for f in \
|
|||||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||||
find "$APP_DIRECTORY/$f" \
|
find "$APP_DIRECTORY/$f" \
|
||||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||||
-exec codesign --timestamp \
|
-exec codesign --timestamp --force \
|
||||||
-v -s "$JB_CERT" --options=runtime \
|
-v -s "$JB_CERT" --options=runtime \
|
||||||
--entitlements entitlements.xml {} \;
|
--entitlements entitlements.xml {} \;
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ -d "$APP_DIRECTORY/Contents/Frameworks" ]; then
|
||||||
|
log "Signing frameworks..."
|
||||||
|
for f in $APP_DIRECTORY/Contents/Frameworks/*; do
|
||||||
|
find "$f" \
|
||||||
|
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" \) \
|
||||||
|
-exec codesign --timestamp --force \
|
||||||
|
-v -s "$JB_CERT" \
|
||||||
|
--entitlements entitlements.xml {} \;
|
||||||
|
codesign --timestamp --force \
|
||||||
|
-v -s "$JB_CERT" --options=runtime \
|
||||||
|
--entitlements entitlements.xml "$f"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
log "Signing libraries in jars in $PWD"
|
log "Signing libraries in jars in $PWD"
|
||||||
|
|
||||||
# todo: add set -euo pipefail; into the inner sh -c
|
# todo: add set -euo pipefail; into the inner sh -c
|
||||||
@@ -54,7 +68,7 @@ find "$APP_DIRECTORY" -name '*.jar' \
|
|||||||
|
|
||||||
find jarfolder \
|
find jarfolder \
|
||||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "jattach" \) \
|
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "jattach" \) \
|
||||||
-exec codesign --timestamp \
|
-exec codesign --timestamp --force \
|
||||||
-v -s "$JB_CERT" --options=runtime \
|
-v -s "$JB_CERT" --options=runtime \
|
||||||
--entitlements entitlements.xml {} \;
|
--entitlements entitlements.xml {} \;
|
||||||
|
|
||||||
@@ -70,7 +84,7 @@ for f in \
|
|||||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||||
find "$APP_DIRECTORY/$f" \
|
find "$APP_DIRECTORY/$f" \
|
||||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||||
-exec codesign --timestamp \
|
-exec codesign --timestamp --force \
|
||||||
-v -s "$JB_CERT" --options=runtime \
|
-v -s "$JB_CERT" --options=runtime \
|
||||||
--entitlements entitlements.xml {} \;
|
--entitlements entitlements.xml {} \;
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash -x
|
||||||
|
|
||||||
#immediately exit script with an error if a command fails
|
#immediately exit script with an error if a command fails
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
@@ -32,16 +32,14 @@ mkdir "$BACKUP_JMODS"
|
|||||||
|
|
||||||
log "Unzipping $INPUT_FILE to $EXPLODED ..."
|
log "Unzipping $INPUT_FILE to $EXPLODED ..."
|
||||||
tar -xzvf "$INPUT_FILE" --directory $EXPLODED
|
tar -xzvf "$INPUT_FILE" --directory $EXPLODED
|
||||||
rm "$INPUT_FILE"
|
|
||||||
BUILD_NAME="$(ls "$EXPLODED")"
|
BUILD_NAME="$(ls "$EXPLODED")"
|
||||||
|
sed -i '' s/BNDL/APPL/ $EXPLODED/$BUILD_NAME/Contents/Info.plist
|
||||||
|
rm -f $EXPLODED/$BUILD_NAME/Contents/CodeResources
|
||||||
|
rm "$INPUT_FILE"
|
||||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
|
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
|
||||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
|
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
|
||||||
fi
|
fi
|
||||||
if test -f $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib; then
|
|
||||||
mv $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib $BACKUP_JMODS
|
|
||||||
fi
|
|
||||||
|
|
||||||
#log "$INPUT_FILE unzipped and removed"
|
|
||||||
log "$INPUT_FILE extracted and removed"
|
log "$INPUT_FILE extracted and removed"
|
||||||
|
|
||||||
APPLICATION_PATH="$EXPLODED/$BUILD_NAME"
|
APPLICATION_PATH="$EXPLODED/$BUILD_NAME"
|
||||||
@@ -125,15 +123,12 @@ log "Zipping $BUILD_NAME to $INPUT_FILE ..."
|
|||||||
(
|
(
|
||||||
#cd "$EXPLODED"
|
#cd "$EXPLODED"
|
||||||
#ditto -c -k --sequesterRsrc --keepParent "$BUILD_NAME" "../$INPUT_FILE"
|
#ditto -c -k --sequesterRsrc --keepParent "$BUILD_NAME" "../$INPUT_FILE"
|
||||||
if test ! -z $(ls $BACKUP_JMODS/libjli.dylib); then
|
|
||||||
mv $BACKUP_JMODS/libjli.dylib $EXPLODED/$BUILD_NAME/Contents/MacOS
|
|
||||||
fi
|
|
||||||
if test -d $BACKUP_JMODS/jmods; then
|
if test -d $BACKUP_JMODS/jmods; then
|
||||||
mv $BACKUP_JMODS/jmods $EXPLODED/$BUILD_NAME/Contents/Home
|
mv $BACKUP_JMODS/jmods $EXPLODED/$BUILD_NAME/Contents/Home
|
||||||
fi
|
fi
|
||||||
|
|
||||||
COPYFILE_DISABLE=1 tar -pczf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
|
tar -pczvf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
|
||||||
log "Finished zipping"
|
log "Finished zipping"
|
||||||
)
|
)
|
||||||
rm -rf "$EXPLODED"
|
rm -rf "$EXPLODED"
|
||||||
log "Done"
|
log "Done"
|
||||||
30
jb/project/tools/patches/add_jcef_module.patch
Normal file
30
jb/project/tools/patches/add_jcef_module.patch
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
diff --git modules.list modules.list
|
||||||
|
index 33375b527c4..76539cbc0e0 100644
|
||||||
|
--- modules.list
|
||||||
|
+++ modules.list
|
||||||
|
@@ -55,4 +55,7 @@ jdk.unsupported,
|
||||||
|
jdk.xml.dom,
|
||||||
|
jdk.zipfs,
|
||||||
|
jdk.hotspot.agent,
|
||||||
|
-jdk.jcmd
|
||||||
|
+jdk.jcmd,
|
||||||
|
+jcef,
|
||||||
|
+gluegen.rt,
|
||||||
|
+jogl.all
|
||||||
|
diff --git src/java.desktop/share/classes/module-info.java src/java.desktop/share/classes/module-info.java
|
||||||
|
index b663b382f52..3e9acdc0c27 100644
|
||||||
|
--- src/java.desktop/share/classes/module-info.java
|
||||||
|
+++ src/java.desktop/share/classes/module-info.java
|
||||||
|
@@ -109,7 +109,11 @@ module java.desktop {
|
||||||
|
// see make/GensrcModuleInfo.gmk
|
||||||
|
exports sun.awt to
|
||||||
|
jdk.accessibility,
|
||||||
|
- jdk.unsupported.desktop;
|
||||||
|
+ jdk.unsupported.desktop,
|
||||||
|
+ jcef,
|
||||||
|
+ jogl.all;
|
||||||
|
+
|
||||||
|
+ exports java.awt.peer to jcef;
|
||||||
|
|
||||||
|
exports java.awt.dnd.peer to jdk.unsupported.desktop;
|
||||||
|
exports sun.awt.dnd to jdk.unsupported.desktop;
|
||||||
5107
jb/project/tools/patches/dcevm/0001-Apply-basic-dcevm11-patch.patch
Normal file
5107
jb/project/tools/patches/dcevm/0001-Apply-basic-dcevm11-patch.patch
Normal file
File diff suppressed because it is too large
Load Diff
1602
jb/project/tools/patches/dcevm/0002-dcevm11-fixes.patch
Normal file
1602
jb/project/tools/patches/dcevm/0002-dcevm11-fixes.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,488 @@
|
|||||||
|
From caa877d9126bd91d6719675a83928ba01bffb69a Mon Sep 17 00:00:00 2001
|
||||||
|
From: skybber <lada.dvorak7@gmail.com>
|
||||||
|
Date: Wed, 12 Dec 2018 19:38:28 +0100
|
||||||
|
Subject: [PATCH 03/28] Support for Concurrent Mark Sweep (CMS) collector
|
||||||
|
|
||||||
|
---
|
||||||
|
.../share/gc/cms/compactibleFreeListSpace.cpp | 139 ++++++++++++------
|
||||||
|
.../share/gc/cms/compactibleFreeListSpace.hpp | 5 +-
|
||||||
|
.../gc/cms/concurrentMarkSweepThread.cpp | 10 +-
|
||||||
|
src/hotspot/share/gc/serial/markSweep.cpp | 2 +-
|
||||||
|
src/hotspot/share/gc/shared/gcConfig.cpp | 2 +-
|
||||||
|
src/hotspot/share/gc/shared/space.cpp | 16 +-
|
||||||
|
src/hotspot/share/gc/shared/space.hpp | 6 +-
|
||||||
|
src/hotspot/share/gc/shared/space.inline.hpp | 16 +-
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.cpp | 12 +-
|
||||||
|
src/hotspot/share/runtime/arguments.cpp | 6 +-
|
||||||
|
10 files changed, 135 insertions(+), 79 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
|
||||||
|
index 4c9918627a2..f335173576f 100644
|
||||||
|
--- a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp
|
||||||
|
@@ -376,55 +376,58 @@ CompactibleFreeListSpace::CompactibleFreeListSpace(BlockOffsetSharedArray* bs, M
|
||||||
|
_used_stable = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#define forward_compact_top_DEFN() \
|
||||||
|
+ assert(this == cp->space, "'this' should be current compaction space."); \
|
||||||
|
+ size_t compaction_max_size = pointer_delta(end(), compact_top); \
|
||||||
|
+ assert(adjustObjectSize(size) == cp->space->adjust_object_size_v(size), \
|
||||||
|
+ "virtual adjustObjectSize_v() method is not correct"); \
|
||||||
|
+ size_t adjusted_size = adjustObjectSize(size); \
|
||||||
|
+ assert(compaction_max_size >= MinChunkSize || compaction_max_size == 0, \
|
||||||
|
+ "no small fragments allowed"); \
|
||||||
|
+ assert(minimum_free_block_size() == MinChunkSize, \
|
||||||
|
+ "for de-virtualized reference below"); \
|
||||||
|
+ /* Can't leave a nonzero size, residual fragment smaller than MinChunkSize */ \
|
||||||
|
+ if (adjusted_size + MinChunkSize > compaction_max_size && \
|
||||||
|
+ adjusted_size != compaction_max_size) { \
|
||||||
|
+ do { \
|
||||||
|
+ /* switch to next compaction space*/ \
|
||||||
|
+ cp->space->set_compaction_top(compact_top); \
|
||||||
|
+ cp->space = cp->space->next_compaction_space(); \
|
||||||
|
+ if (cp->space == NULL) { \
|
||||||
|
+ cp->gen = CMSHeap::heap()->young_gen(); \
|
||||||
|
+ assert(cp->gen != NULL, "compaction must succeed"); \
|
||||||
|
+ cp->space = cp->gen->first_compaction_space(); \
|
||||||
|
+ assert(cp->space != NULL, "generation must have a first compaction space"); \
|
||||||
|
+ } \
|
||||||
|
+ compact_top = cp->space->bottom(); \
|
||||||
|
+ cp->space->set_compaction_top(compact_top); \
|
||||||
|
+ /* The correct adjusted_size may not be the same as that for this method */ \
|
||||||
|
+ /* (i.e., cp->space may no longer be "this" so adjust the size again. */ \
|
||||||
|
+ /* Use the virtual method which is not used above to save the virtual */ \
|
||||||
|
+ /* dispatch. */ \
|
||||||
|
+ adjusted_size = cp->space->adjust_object_size_v(size); \
|
||||||
|
+ compaction_max_size = pointer_delta(cp->space->end(), compact_top); \
|
||||||
|
+ assert(cp->space->minimum_free_block_size() == 0, "just checking"); \
|
||||||
|
+ } while (adjusted_size > compaction_max_size); \
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+
|
||||||
|
HeapWord* CompactibleFreeListSpace::forward_compact_top(size_t size,
|
||||||
|
CompactPoint* cp, HeapWord* compact_top) {
|
||||||
|
- ShouldNotReachHere();
|
||||||
|
- return NULL;
|
||||||
|
+ forward_compact_top_DEFN()
|
||||||
|
+ return compact_top;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Like CompactibleSpace forward() but always calls cross_threshold() to
|
||||||
|
// update the block offset table. Removed initialize_threshold call because
|
||||||
|
// CFLS does not use a block offset array for contiguous spaces.
|
||||||
|
HeapWord* CompactibleFreeListSpace::forward(oop q, size_t size,
|
||||||
|
- CompactPoint* cp, HeapWord* compact_top) {
|
||||||
|
- // q is alive
|
||||||
|
- // First check if we should switch compaction space
|
||||||
|
- assert(this == cp->space, "'this' should be current compaction space.");
|
||||||
|
- size_t compaction_max_size = pointer_delta(end(), compact_top);
|
||||||
|
- assert(adjustObjectSize(size) == cp->space->adjust_object_size_v(size),
|
||||||
|
- "virtual adjustObjectSize_v() method is not correct");
|
||||||
|
- size_t adjusted_size = adjustObjectSize(size);
|
||||||
|
- assert(compaction_max_size >= MinChunkSize || compaction_max_size == 0,
|
||||||
|
- "no small fragments allowed");
|
||||||
|
- assert(minimum_free_block_size() == MinChunkSize,
|
||||||
|
- "for de-virtualized reference below");
|
||||||
|
- // Can't leave a nonzero size, residual fragment smaller than MinChunkSize
|
||||||
|
- if (adjusted_size + MinChunkSize > compaction_max_size &&
|
||||||
|
- adjusted_size != compaction_max_size) {
|
||||||
|
- do {
|
||||||
|
- // switch to next compaction space
|
||||||
|
- cp->space->set_compaction_top(compact_top);
|
||||||
|
- cp->space = cp->space->next_compaction_space();
|
||||||
|
- if (cp->space == NULL) {
|
||||||
|
- cp->gen = CMSHeap::heap()->young_gen();
|
||||||
|
- assert(cp->gen != NULL, "compaction must succeed");
|
||||||
|
- cp->space = cp->gen->first_compaction_space();
|
||||||
|
- assert(cp->space != NULL, "generation must have a first compaction space");
|
||||||
|
- }
|
||||||
|
- compact_top = cp->space->bottom();
|
||||||
|
- cp->space->set_compaction_top(compact_top);
|
||||||
|
- // The correct adjusted_size may not be the same as that for this method
|
||||||
|
- // (i.e., cp->space may no longer be "this" so adjust the size again.
|
||||||
|
- // Use the virtual method which is not used above to save the virtual
|
||||||
|
- // dispatch.
|
||||||
|
- adjusted_size = cp->space->adjust_object_size_v(size);
|
||||||
|
- compaction_max_size = pointer_delta(cp->space->end(), compact_top);
|
||||||
|
- assert(cp->space->minimum_free_block_size() == 0, "just checking");
|
||||||
|
- } while (adjusted_size > compaction_max_size);
|
||||||
|
- }
|
||||||
|
+ CompactPoint* cp, HeapWord* compact_top, bool force_forward) {
|
||||||
|
+ forward_compact_top_DEFN()
|
||||||
|
|
||||||
|
// store the forwarding pointer into the mark word
|
||||||
|
- if ((HeapWord*)q != compact_top) {
|
||||||
|
+ // the size of object changed for: new_version() != NULL
|
||||||
|
+ if (force_forward || (HeapWord*)q != compact_top || q->klass()->new_version() != NULL) {
|
||||||
|
q->forward_to(oop(compact_top));
|
||||||
|
assert(q->is_gc_marked(), "encoding the pointer should preserve the mark");
|
||||||
|
} else {
|
||||||
|
@@ -2209,13 +2212,60 @@ CompactibleFreeListSpace::refillLinearAllocBlock(LinearAllocBlock* blk) {
|
||||||
|
|
||||||
|
// Support for compaction
|
||||||
|
void CompactibleFreeListSpace::prepare_for_compaction(CompactPoint* cp) {
|
||||||
|
- scan_and_forward(this, cp, false);
|
||||||
|
- // of the free lists doesn't work after.
|
||||||
|
+ if (!Universe::is_redefining_gc_run()) {
|
||||||
|
+ scan_and_forward(this, cp, false);
|
||||||
|
+ } else {
|
||||||
|
+ // Redefinition run
|
||||||
|
+ scan_and_forward(this, cp, true);
|
||||||
|
+ }
|
||||||
|
// Prepare_for_compaction() uses the space between live objects
|
||||||
|
// so that later phase can skip dead space quickly. So verification
|
||||||
|
// of the free lists doesn't work after.
|
||||||
|
}
|
||||||
|
|
||||||
|
+bool CompactibleFreeListSpace::must_rescue(oop old_obj, oop new_obj) {
|
||||||
|
+ // Only redefined objects can have the need to be rescued.
|
||||||
|
+ if (oop(old_obj)->klass()->new_version() == NULL) return false;
|
||||||
|
+
|
||||||
|
+ int new_size = adjustObjectSize(old_obj->size_given_klass(oop(old_obj)->klass()->new_version()));
|
||||||
|
+ int original_size = adjustObjectSize(old_obj->size());
|
||||||
|
+
|
||||||
|
+ Generation* tenured_gen = CMSHeap::heap()->old_gen();
|
||||||
|
+ bool old_in_tenured = tenured_gen->is_in_reserved(old_obj);
|
||||||
|
+ bool new_in_tenured = tenured_gen->is_in_reserved(new_obj);
|
||||||
|
+ if (old_in_tenured == new_in_tenured) {
|
||||||
|
+ // Rescue if object may overlap with a higher memory address.
|
||||||
|
+ bool overlap = ((HeapWord*)old_obj + original_size < (HeapWord*)new_obj + new_size);
|
||||||
|
+ if (old_in_tenured) {
|
||||||
|
+ // Old and new address are in same space, so just compare the address.
|
||||||
|
+ // Must rescue if object moves towards the top of the space.
|
||||||
|
+ assert(space_index(old_obj) == space_index(new_obj), "old_obj and new_obj must be in same space");
|
||||||
|
+ } else {
|
||||||
|
+ // In the new generation, eden is located before the from space, so a
|
||||||
|
+ // simple pointer comparison is sufficient.
|
||||||
|
+ assert(CMSHeap::heap()->young_gen()->is_in_reserved(old_obj), "old_obj must be in DefNewGeneration");
|
||||||
|
+ assert(CMSHeap::heap()->young_gen()->is_in_reserved(new_obj), "new_obj must be in DefNewGeneration");
|
||||||
|
+ assert(overlap == (space_index(old_obj) < space_index(new_obj)), "slow and fast computation must yield same result");
|
||||||
|
+ }
|
||||||
|
+ return overlap;
|
||||||
|
+
|
||||||
|
+ } else {
|
||||||
|
+ assert(space_index(old_obj) != space_index(new_obj), "old_obj and new_obj must be in different spaces");
|
||||||
|
+ if (new_in_tenured) {
|
||||||
|
+ // Must never rescue when moving from the new into the old generation.
|
||||||
|
+ assert(CMSHeap::heap()->young_gen()->is_in_reserved(old_obj), "old_obj must be in DefNewGeneration");
|
||||||
|
+ assert(space_index(old_obj) > space_index(new_obj), "must be");
|
||||||
|
+ return false;
|
||||||
|
+
|
||||||
|
+ } else /* if (tenured_gen->is_in_reserved(old_obj)) */ {
|
||||||
|
+ // Must always rescue when moving from the old into the new generation.
|
||||||
|
+ assert(CMSHeap::heap()->young_gen()->is_in_reserved(new_obj), "new_obj must be in DefNewGeneration");
|
||||||
|
+ assert(space_index(old_obj) < space_index(new_obj), "must be");
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void CompactibleFreeListSpace::adjust_pointers() {
|
||||||
|
// In other versions of adjust_pointers(), a bail out
|
||||||
|
// based on the amount of live data in the generation
|
||||||
|
@@ -2228,7 +2278,12 @@ void CompactibleFreeListSpace::adjust_pointers() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void CompactibleFreeListSpace::compact() {
|
||||||
|
- scan_and_compact(this, false);
|
||||||
|
+ if(!Universe::is_redefining_gc_run()) {
|
||||||
|
+ scan_and_compact(this, false);
|
||||||
|
+ } else {
|
||||||
|
+ // Redefinition run
|
||||||
|
+ scan_and_compact(this, true);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fragmentation metric = 1 - [sum of (fbs**2) / (sum of fbs)**2]
|
||||||
|
diff --git a/src/hotspot/share/gc/cms/compactibleFreeListSpace.hpp b/src/hotspot/share/gc/cms/compactibleFreeListSpace.hpp
|
||||||
|
index 9fd2ea58320..d29b81f6fca 100644
|
||||||
|
--- a/src/hotspot/share/gc/cms/compactibleFreeListSpace.hpp
|
||||||
|
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.hpp
|
||||||
|
@@ -201,7 +201,7 @@ class CompactibleFreeListSpace: public CompactibleSpace {
|
||||||
|
// Support for compacting cms
|
||||||
|
HeapWord* cross_threshold(HeapWord* start, HeapWord* end);
|
||||||
|
HeapWord* forward_compact_top(size_t size, CompactPoint* cp, HeapWord* compact_top);
|
||||||
|
- HeapWord* forward(oop q, size_t size, CompactPoint* cp, HeapWord* compact_top);
|
||||||
|
+ HeapWord* forward(oop q, size_t size, CompactPoint* cp, HeapWord* compact_top, bool force_forward);
|
||||||
|
|
||||||
|
// Initialization helpers.
|
||||||
|
void initializeIndexedFreeListArray();
|
||||||
|
@@ -576,6 +576,9 @@ class CompactibleFreeListSpace: public CompactibleSpace {
|
||||||
|
|
||||||
|
// Support for compaction.
|
||||||
|
void prepare_for_compaction(CompactPoint* cp);
|
||||||
|
+
|
||||||
|
+ bool must_rescue(oop old_obj, oop new_obj);
|
||||||
|
+
|
||||||
|
void adjust_pointers();
|
||||||
|
void compact();
|
||||||
|
// Reset the space to reflect the fact that a compaction of the
|
||||||
|
diff --git a/src/hotspot/share/gc/cms/concurrentMarkSweepThread.cpp b/src/hotspot/share/gc/cms/concurrentMarkSweepThread.cpp
|
||||||
|
index 3ada5755875..b6e930922d7 100644
|
||||||
|
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepThread.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepThread.cpp
|
||||||
|
@@ -78,10 +78,12 @@ void ConcurrentMarkSweepThread::run_service() {
|
||||||
|
while (!should_terminate()) {
|
||||||
|
sleepBeforeNextCycle();
|
||||||
|
if (should_terminate()) break;
|
||||||
|
- GCIdMark gc_id_mark;
|
||||||
|
- GCCause::Cause cause = _collector->_full_gc_requested ?
|
||||||
|
- _collector->_full_gc_cause : GCCause::_cms_concurrent_mark;
|
||||||
|
- _collector->collect_in_background(cause);
|
||||||
|
+ if (!Universe::is_redefining_gc_run()) {
|
||||||
|
+ GCIdMark gc_id_mark;
|
||||||
|
+ GCCause::Cause cause = _collector->_full_gc_requested ?
|
||||||
|
+ _collector->_full_gc_cause : GCCause::_cms_concurrent_mark;
|
||||||
|
+ _collector->collect_in_background(cause);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that the state of any protocol for synchronization
|
||||||
|
diff --git a/src/hotspot/share/gc/serial/markSweep.cpp b/src/hotspot/share/gc/serial/markSweep.cpp
|
||||||
|
index d0ff86c8215..b4ed59f020c 100644
|
||||||
|
--- a/src/hotspot/share/gc/serial/markSweep.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/serial/markSweep.cpp
|
||||||
|
@@ -247,7 +247,7 @@ void MarkSweep::copy_rescued_objects_back() {
|
||||||
|
|
||||||
|
FREE_RESOURCE_ARRAY(HeapWord, rescued_ptr, size);
|
||||||
|
|
||||||
|
- new_obj->init_mark();
|
||||||
|
+ new_obj->init_mark_raw();
|
||||||
|
assert(oopDesc::is_oop(new_obj), "must be a valid oop");
|
||||||
|
}
|
||||||
|
_rescued_oops->clear();
|
||||||
|
diff --git a/src/hotspot/share/gc/shared/gcConfig.cpp b/src/hotspot/share/gc/shared/gcConfig.cpp
|
||||||
|
index 9779df92447..adb0f5dd25c 100644
|
||||||
|
--- a/src/hotspot/share/gc/shared/gcConfig.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/shared/gcConfig.cpp
|
||||||
|
@@ -106,7 +106,7 @@ void GCConfig::fail_if_unsupported_gc_is_selected() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void GCConfig::select_gc_ergonomically() {
|
||||||
|
- if (AllowEnhancedClassRedefinition) {
|
||||||
|
+ if (AllowEnhancedClassRedefinition && !UseConcMarkSweepGC) {
|
||||||
|
// Enhanced class redefinition only supports serial GC at the moment
|
||||||
|
FLAG_SET_ERGO(bool, UseSerialGC, true);
|
||||||
|
} else if (os::is_server_class_machine()) {
|
||||||
|
diff --git a/src/hotspot/share/gc/shared/space.cpp b/src/hotspot/share/gc/shared/space.cpp
|
||||||
|
index bc0dd1980db..56b144b46f1 100644
|
||||||
|
--- a/src/hotspot/share/gc/shared/space.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/shared/space.cpp
|
||||||
|
@@ -388,11 +388,11 @@ HeapWord* CompactibleSpace::forward_compact_top(size_t size, CompactPoint* cp, H
|
||||||
|
}
|
||||||
|
|
||||||
|
HeapWord* CompactibleSpace::forward(oop q, size_t size,
|
||||||
|
- CompactPoint* cp, HeapWord* compact_top) {
|
||||||
|
+ CompactPoint* cp, HeapWord* compact_top, bool force_forward) {
|
||||||
|
compact_top = forward_compact_top(size, cp, compact_top);
|
||||||
|
|
||||||
|
// store the forwarding pointer into the mark word
|
||||||
|
- if ((HeapWord*)q != compact_top || (size_t)q->size() != size) {
|
||||||
|
+ if (force_forward || (HeapWord*)q != compact_top || (size_t)q->size() != size) {
|
||||||
|
q->forward_to(oop(compact_top));
|
||||||
|
assert(q->is_gc_marked(), "encoding the pointer should preserve the mark");
|
||||||
|
} else {
|
||||||
|
@@ -514,7 +514,7 @@ bool CompactibleSpace::must_rescue(oop old_obj, oop new_obj) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
assert(space_index(old_obj) != space_index(new_obj), "old_obj and new_obj must be in different spaces");
|
||||||
|
- if (tenured_gen->is_in_reserved(new_obj)) {
|
||||||
|
+ if (new_in_tenured) {
|
||||||
|
// Must never rescue when moving from the new into the old generation.
|
||||||
|
assert(GenCollectedHeap::heap()->young_gen()->is_in_reserved(old_obj), "old_obj must be in DefNewGeneration");
|
||||||
|
assert(space_index(old_obj) > space_index(new_obj), "must be");
|
||||||
|
@@ -858,14 +858,14 @@ void OffsetTableContigSpace::verify() const {
|
||||||
|
// Compute the forward sizes and leave out objects whose position could
|
||||||
|
// possibly overlap other objects.
|
||||||
|
HeapWord* CompactibleSpace::forward_with_rescue(HeapWord* q, size_t size,
|
||||||
|
- CompactPoint* cp, HeapWord* compact_top) {
|
||||||
|
+ CompactPoint* cp, HeapWord* compact_top, bool force_forward) {
|
||||||
|
size_t forward_size = size;
|
||||||
|
|
||||||
|
// (DCEVM) There is a new version of the class of q => different size
|
||||||
|
if (oop(q)->klass()->new_version() != NULL) {
|
||||||
|
|
||||||
|
size_t new_size = oop(q)->size_given_klass(oop(q)->klass()->new_version());
|
||||||
|
- assert(size != new_size, "instances without changed size have to be updated prior to GC run");
|
||||||
|
+ // assert(size != new_size, "instances without changed size have to be updated prior to GC run");
|
||||||
|
forward_size = new_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -879,7 +879,7 @@ HeapWord* CompactibleSpace::forward_with_rescue(HeapWord* q, size_t size,
|
||||||
|
return compact_top;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return forward(oop(q), forward_size, cp, compact_top);
|
||||||
|
+ return forward(oop(q), forward_size, cp, compact_top, force_forward);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute the forwarding addresses for the objects that need to be rescued.
|
||||||
|
@@ -895,11 +895,11 @@ HeapWord* CompactibleSpace::forward_rescued(CompactPoint* cp, HeapWord* compact_
|
||||||
|
// (DCEVM) There is a new version of the class of q => different size
|
||||||
|
if (oop(q)->klass()->new_version() != NULL) {
|
||||||
|
size_t new_size = oop(q)->size_given_klass(oop(q)->klass()->new_version());
|
||||||
|
- assert(size != new_size, "instances without changed size have to be updated prior to GC run");
|
||||||
|
+ // assert(size != new_size, "instances without changed size have to be updated prior to GC run");
|
||||||
|
size = new_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
- compact_top = cp->space->forward(oop(q), size, cp, compact_top);
|
||||||
|
+ compact_top = cp->space->forward(oop(q), size, cp, compact_top, true);
|
||||||
|
assert(compact_top <= end(), "must not write over end of space!");
|
||||||
|
}
|
||||||
|
MarkSweep::_rescued_oops->clear();
|
||||||
|
diff --git a/src/hotspot/share/gc/shared/space.hpp b/src/hotspot/share/gc/shared/space.hpp
|
||||||
|
index 8eb5669fb79..901c89d8a30 100644
|
||||||
|
--- a/src/hotspot/share/gc/shared/space.hpp
|
||||||
|
+++ b/src/hotspot/share/gc/shared/space.hpp
|
||||||
|
@@ -421,7 +421,7 @@ public:
|
||||||
|
virtual void prepare_for_compaction(CompactPoint* cp) = 0;
|
||||||
|
// MarkSweep support phase3
|
||||||
|
DEBUG_ONLY(int space_index(oop obj));
|
||||||
|
- bool must_rescue(oop old_obj, oop new_obj);
|
||||||
|
+ virtual bool must_rescue(oop old_obj, oop new_obj);
|
||||||
|
HeapWord* rescue(HeapWord* old_obj);
|
||||||
|
virtual void adjust_pointers();
|
||||||
|
// MarkSweep support phase4
|
||||||
|
@@ -452,11 +452,11 @@ public:
|
||||||
|
// function of the then-current compaction space, and updates "cp->threshold
|
||||||
|
// accordingly".
|
||||||
|
virtual HeapWord* forward(oop q, size_t size, CompactPoint* cp,
|
||||||
|
- HeapWord* compact_top);
|
||||||
|
+ HeapWord* compact_top, bool force_forward);
|
||||||
|
// (DCEVM) same as forwad, but can rescue objects. Invoked only during
|
||||||
|
// redefinition runs
|
||||||
|
HeapWord* forward_with_rescue(HeapWord* q, size_t size, CompactPoint* cp,
|
||||||
|
- HeapWord* compact_top);
|
||||||
|
+ HeapWord* compact_top, bool force_forward);
|
||||||
|
|
||||||
|
HeapWord* forward_rescued(CompactPoint* cp, HeapWord* compact_top);
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/gc/shared/space.inline.hpp b/src/hotspot/share/gc/shared/space.inline.hpp
|
||||||
|
index 6b109fcd2e5..8c255d6d428 100644
|
||||||
|
--- a/src/hotspot/share/gc/shared/space.inline.hpp
|
||||||
|
+++ b/src/hotspot/share/gc/shared/space.inline.hpp
|
||||||
|
@@ -163,6 +163,8 @@ inline void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* c
|
||||||
|
HeapWord* cur_obj = space->bottom();
|
||||||
|
HeapWord* scan_limit = space->scan_limit();
|
||||||
|
|
||||||
|
+ bool force_forward = false;
|
||||||
|
+
|
||||||
|
while (cur_obj < scan_limit) {
|
||||||
|
assert(!space->scanned_block_is_obj(cur_obj) ||
|
||||||
|
oop(cur_obj)->mark_raw()->is_marked() || oop(cur_obj)->mark_raw()->is_unlocked() ||
|
||||||
|
@@ -174,14 +176,15 @@ inline void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* c
|
||||||
|
size_t size = space->scanned_block_size(cur_obj);
|
||||||
|
|
||||||
|
if (redefinition_run) {
|
||||||
|
- compact_top = cp->space->forward_with_rescue(cur_obj, size, cp, compact_top);
|
||||||
|
+ compact_top = cp->space->forward_with_rescue(cur_obj, size, cp, compact_top, force_forward);
|
||||||
|
if (first_dead == NULL && oop(cur_obj)->is_gc_marked()) {
|
||||||
|
/* Was moved (otherwise, forward would reset mark),
|
||||||
|
set first_dead to here */
|
||||||
|
first_dead = cur_obj;
|
||||||
|
+ force_forward = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- compact_top = cp->space->forward(oop(cur_obj), size, cp, compact_top);
|
||||||
|
+ compact_top = cp->space->forward(oop(cur_obj), size, cp, compact_top, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_obj += size;
|
||||||
|
@@ -197,9 +200,9 @@ inline void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* c
|
||||||
|
|
||||||
|
// see if we might want to pretend this object is alive so that
|
||||||
|
// we don't have to compact quite as often.
|
||||||
|
- if (cur_obj == compact_top && dead_spacer.insert_deadspace(cur_obj, end)) {
|
||||||
|
+ if (!redefinition_run && cur_obj == compact_top && dead_spacer.insert_deadspace(cur_obj, end)) {
|
||||||
|
oop obj = oop(cur_obj);
|
||||||
|
- compact_top = cp->space->forward(obj, obj->size(), cp, compact_top);
|
||||||
|
+ compact_top = cp->space->forward(obj, obj->size(), cp, compact_top, force_forward);
|
||||||
|
end_of_live = end;
|
||||||
|
} else {
|
||||||
|
// otherwise, it really is a free region.
|
||||||
|
@@ -352,7 +355,7 @@ inline void CompactibleSpace::scan_and_compact(SpaceType* space, bool redefiniti
|
||||||
|
HeapWord* compaction_top = (HeapWord*)oop(cur_obj)->forwardee();
|
||||||
|
|
||||||
|
if (redefinition_run && space->must_rescue(oop(cur_obj), oop(cur_obj)->forwardee())) {
|
||||||
|
- space->rescue(cur_obj);
|
||||||
|
+ space->rescue(cur_obj);
|
||||||
|
debug_only(Copy::fill_to_words(cur_obj, size, 0));
|
||||||
|
cur_obj += size;
|
||||||
|
continue;
|
||||||
|
@@ -362,8 +365,7 @@ inline void CompactibleSpace::scan_and_compact(SpaceType* space, bool redefiniti
|
||||||
|
Prefetch::write(compaction_top, copy_interval);
|
||||||
|
|
||||||
|
// copy object and reinit its mark
|
||||||
|
- assert(cur_obj != compaction_top || oop(cur_obj)->klass()->new_version() != NULL,
|
||||||
|
- "everything in this pass should be moving");
|
||||||
|
+ assert(redefinition_run || cur_obj != compaction_top, "everything in this pass should be moving");
|
||||||
|
if (redefinition_run && oop(cur_obj)->klass()->new_version() != NULL) {
|
||||||
|
Klass* new_version = oop(cur_obj)->klass()->new_version();
|
||||||
|
if (new_version->update_information() == NULL) {
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index 92ce6c27b8a..41e82ae7a69 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -54,6 +54,7 @@
|
||||||
|
#include "prims/jvmtiThreadState.inline.hpp"
|
||||||
|
#include "utilities/events.hpp"
|
||||||
|
#include "oops/constantPool.inline.hpp"
|
||||||
|
+#include "gc/cms/cmsHeap.hpp"
|
||||||
|
|
||||||
|
Array<Method*>* VM_EnhancedRedefineClasses::_old_methods = NULL;
|
||||||
|
Array<Method*>* VM_EnhancedRedefineClasses::_new_methods = NULL;
|
||||||
|
@@ -416,13 +417,11 @@ public:
|
||||||
|
Klass* new_klass = obj->klass()->new_version();
|
||||||
|
|
||||||
|
if (new_klass->update_information() != NULL) {
|
||||||
|
- int size_diff = obj->size() - obj->size_given_klass(new_klass);
|
||||||
|
-
|
||||||
|
- // Either new size is bigger or gap is to small to be filled
|
||||||
|
- if (size_diff < 0 || (size_diff > 0 && (size_t) size_diff < CollectedHeap::min_fill_size())) {
|
||||||
|
+ if (obj->size() - obj->size_given_klass(new_klass) != 0) {
|
||||||
|
// We need an instance update => set back to old klass
|
||||||
|
_needs_instance_update = true;
|
||||||
|
} else {
|
||||||
|
+ // Either new size is bigger or gap is to small to be filled
|
||||||
|
oop src = obj;
|
||||||
|
if (new_klass->is_copying_backwards()) {
|
||||||
|
copy_to_tmp(obj);
|
||||||
|
@@ -432,11 +431,6 @@ public:
|
||||||
|
// FIXME: instance updates...
|
||||||
|
//guarantee(false, "instance updates!");
|
||||||
|
MarkSweep::update_fields(obj, src, new_klass->update_information());
|
||||||
|
-
|
||||||
|
- if (size_diff > 0) {
|
||||||
|
- HeapWord* dead_space = ((HeapWord *)obj) + obj->size();
|
||||||
|
- CollectedHeap::fill_with_object(dead_space, size_diff);
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
obj->set_klass(obj->klass()->new_version());
|
||||||
|
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
index a11dfe48dd6..013ba213c00 100644
|
||||||
|
--- a/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
@@ -2045,14 +2045,14 @@ bool Arguments::check_gc_consistency() {
|
||||||
|
if (AllowEnhancedClassRedefinition) {
|
||||||
|
// Must use serial GC. This limitation applies because the instance size changing GC modifications
|
||||||
|
// are only built into the mark and compact algorithm.
|
||||||
|
- if (!UseSerialGC && i >= 1) {
|
||||||
|
+ if ((!UseSerialGC && !UseConcMarkSweepGC) && i >= 1) {
|
||||||
|
jio_fprintf(defaultStream::error_stream(),
|
||||||
|
- "Must use the serial GC with enhanced class redefinition\n");
|
||||||
|
+ "Must use the serial or concurrent mark sweep GC with enhanced class redefinition.\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (i > 1) {
|
||||||
|
+ if (i > 2) {
|
||||||
|
jio_fprintf(defaultStream::error_stream(),
|
||||||
|
"Conflicting collector combinations in option list; "
|
||||||
|
"please refer to the release notes for the combinations "
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
From 93373779a1d44181ca07498faa8a0e8d7fc6b608 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <vladimir.dvorak@mailprofiler.com>
|
||||||
|
Date: Wed, 11 Mar 2020 14:19:34 +0100
|
||||||
|
Subject: [PATCH 04/28] Fix class cast exception on redefinition of class A,
|
||||||
|
that is superclass of B that has anonymous class C
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/oops/instanceKlass.cpp | 5 ++++-
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
index c28ed956ccf..7eb1b01c785 100644
|
||||||
|
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
@@ -788,7 +788,10 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
|
||||||
|
|
||||||
|
if (!is_linked()) {
|
||||||
|
if (!is_rewritten()) {
|
||||||
|
- {
|
||||||
|
+ // (DCEVM): If class A is being redefined and class B->A (B is extended from A) and B is host class of anonymous class C
|
||||||
|
+ // then second redefinition fails with cannot cast klass exception. So we currently turn off bytecode verification
|
||||||
|
+ // on redefinition.
|
||||||
|
+ if (!AllowEnhancedClassRedefinition || !newest_version()->is_redefining()) {
|
||||||
|
bool verify_ok = verify_code(throw_verifyerror, THREAD);
|
||||||
|
if (!verify_ok) {
|
||||||
|
return false;
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,655 @@
|
|||||||
|
From c8850725d4c84f93beaee3c05f9d8f9862fe6159 Mon Sep 17 00:00:00 2001
|
||||||
|
From: skybber <lada.dvorak7@gmail.com>
|
||||||
|
Date: Thu, 15 Nov 2018 03:20:08 +0700
|
||||||
|
Subject: [PATCH 05/28] HotswapAgent integration
|
||||||
|
|
||||||
|
It include:
|
||||||
|
|
||||||
|
- option to compile DCEVM only version with -DDCEVM_ONLY added
|
||||||
|
to CFLAGS (bash configure --with-extra-cflags="-DDCEVM_ONLY"), by
|
||||||
|
default compilation goes with HotswapAgent
|
||||||
|
|
||||||
|
Allow ha class initializer calls
|
||||||
|
|
||||||
|
Add --add-opens for necessary modules/packages
|
||||||
|
- java.base/java.lang - for reflection access to Proxy.proxyCache
|
||||||
|
- java.base/jdk.internal.loader - for access proxyCache class
|
||||||
|
- java.desktop/java.beans - for reflection access to Introspector
|
||||||
|
- java.desktop/com.sun.beans
|
||||||
|
- java.base/java.io
|
||||||
|
- com.sun.beans.util
|
||||||
|
|
||||||
|
Open jdk module to access ClassInfo.CACHE
|
||||||
|
|
||||||
|
- be quiet if HotswapAgent is not found in lib/, it is compatible with
|
||||||
|
old DCEVM
|
||||||
|
- disable HotswapAgent for -Xshare:dump
|
||||||
|
- disable HotswapAgent in jvm tools
|
||||||
|
- disable HotswapAgent in keytool
|
||||||
|
---
|
||||||
|
make/launcher/Launcher-java.base.gmk | 1 +
|
||||||
|
make/launcher/Launcher-java.rmi.gmk | 2 +
|
||||||
|
make/launcher/Launcher-java.scripting.gmk | 3 +-
|
||||||
|
make/launcher/Launcher-java.security.jgss.gmk | 3 +
|
||||||
|
make/launcher/Launcher-jdk.aot.gmk | 2 +
|
||||||
|
make/launcher/Launcher-jdk.compiler.gmk | 5 +-
|
||||||
|
make/launcher/Launcher-jdk.hotspot.agent.gmk | 1 +
|
||||||
|
make/launcher/Launcher-jdk.jartool.gmk | 2 +
|
||||||
|
make/launcher/Launcher-jdk.javadoc.gmk | 3 +-
|
||||||
|
make/launcher/Launcher-jdk.jcmd.gmk | 13 +++-
|
||||||
|
make/launcher/Launcher-jdk.jconsole.gmk | 1 +
|
||||||
|
make/launcher/Launcher-jdk.jdeps.gmk | 3 +
|
||||||
|
make/launcher/Launcher-jdk.jdi.gmk | 1 +
|
||||||
|
make/launcher/Launcher-jdk.jlink.gmk | 5 +-
|
||||||
|
make/launcher/Launcher-jdk.jshell.gmk | 1 +
|
||||||
|
make/launcher/Launcher-jdk.jstatd.gmk | 1 +
|
||||||
|
make/launcher/Launcher-jdk.pack.gmk | 1 +
|
||||||
|
make/launcher/Launcher-jdk.rmic.gmk | 1 +
|
||||||
|
.../Launcher-jdk.scripting.nashorn.shell.gmk | 3 +-
|
||||||
|
src/hotspot/share/classfile/vmSymbols.hpp | 1 +
|
||||||
|
.../share/interpreter/linkResolver.cpp | 2 +-
|
||||||
|
src/hotspot/share/runtime/arguments.cpp | 67 +++++++++++++++++++
|
||||||
|
src/hotspot/share/runtime/arguments.hpp | 3 +
|
||||||
|
src/hotspot/share/runtime/globals.hpp | 12 +++-
|
||||||
|
.../sun/beans/introspect/package-info.java | 26 +++++++
|
||||||
|
.../classes/com/sun/beans/package-info.java | 26 +++++++
|
||||||
|
.../com/sun/beans/util/package-info.java | 26 +++++++
|
||||||
|
.../share/classes/module-info.java | 3 +
|
||||||
|
28 files changed, 208 insertions(+), 10 deletions(-)
|
||||||
|
create mode 100644 src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
|
||||||
|
create mode 100644 src/java.desktop/share/classes/com/sun/beans/package-info.java
|
||||||
|
create mode 100644 src/java.desktop/share/classes/com/sun/beans/util/package-info.java
|
||||||
|
|
||||||
|
diff --git a/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
|
||||||
|
index f6d4aa28fe6..38ba29530d8 100644
|
||||||
|
--- a/make/launcher/Launcher-java.base.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.base.gmk
|
||||||
|
@@ -52,6 +52,7 @@ endif
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, keytool, \
|
||||||
|
MAIN_CLASS := sun.security.tools.keytool.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
diff --git a/make/launcher/Launcher-java.rmi.gmk b/make/launcher/Launcher-java.rmi.gmk
|
||||||
|
index a69a90bcc81..07046232275 100644
|
||||||
|
--- a/make/launcher/Launcher-java.rmi.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.rmi.gmk
|
||||||
|
@@ -27,8 +27,10 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, rmid, \
|
||||||
|
MAIN_CLASS := sun.rmi.server.Activation, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, rmiregistry, \
|
||||||
|
MAIN_CLASS := sun.rmi.registry.RegistryImpl, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-java.scripting.gmk b/make/launcher/Launcher-java.scripting.gmk
|
||||||
|
index 057d2bf3aca..cf100e20789 100644
|
||||||
|
--- a/make/launcher/Launcher-java.scripting.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.scripting.gmk
|
||||||
|
@@ -27,5 +27,6 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jrunscript, \
|
||||||
|
MAIN_CLASS := com.sun.tools.script.shell.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-java.security.jgss.gmk b/make/launcher/Launcher-java.security.jgss.gmk
|
||||||
|
index 7411e1a21c4..2b856bfccb4 100644
|
||||||
|
--- a/make/launcher/Launcher-java.security.jgss.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.security.jgss.gmk
|
||||||
|
@@ -28,13 +28,16 @@ include LauncherCommon.gmk
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
$(eval $(call SetupBuildLauncher, kinit, \
|
||||||
|
MAIN_CLASS := sun.security.krb5.internal.tools.Kinit, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, klist, \
|
||||||
|
MAIN_CLASS := sun.security.krb5.internal.tools.Klist, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, ktab, \
|
||||||
|
MAIN_CLASS := sun.security.krb5.internal.tools.Ktab, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
endif
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.aot.gmk b/make/launcher/Launcher-jdk.aot.gmk
|
||||||
|
index 10717a5e1c5..2c52c31a555 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.aot.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.aot.gmk
|
||||||
|
@@ -31,6 +31,7 @@ include LauncherCommon.gmk
|
||||||
|
$(eval $(call SetupBuildLauncher, jaotc, \
|
||||||
|
MAIN_CLASS := jdk.tools.jaotc.Main, \
|
||||||
|
EXTRA_JAVA_ARGS := -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI \
|
||||||
|
+ -XX:+DisableHotswapAgent \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
@@ -40,6 +41,7 @@ $(eval $(call SetupBuildLauncher, jaotc, \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
, \
|
||||||
|
JAVA_ARGS := --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
+ -XX:+DisableHotswapAgent \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.compiler.gmk b/make/launcher/Launcher-jdk.compiler.gmk
|
||||||
|
index f71c37adf74..744969546de 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.compiler.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.compiler.gmk
|
||||||
|
@@ -27,12 +27,14 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, javac, \
|
||||||
|
MAIN_CLASS := com.sun.tools.javac.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, serialver, \
|
||||||
|
MAIN_CLASS := sun.tools.serialver.SerialVer, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
@@ -41,6 +43,7 @@ ifeq ($(ENABLE_SJAVAC), yes)
|
||||||
|
# into any real images
|
||||||
|
$(eval $(call SetupBuildLauncher, sjavac, \
|
||||||
|
MAIN_CLASS := com.sun.tools.sjavac.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
OUTPUT_DIR := $(JDK_OUTPUTDIR)/bin, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.hotspot.agent.gmk b/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||||
|
index 76da3600368..9f12b05b172 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||||
|
@@ -27,5 +27,6 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jhsdb, \
|
||||||
|
MAIN_CLASS := sun.jvm.hotspot.SALauncher, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jartool.gmk b/make/launcher/Launcher-jdk.jartool.gmk
|
||||||
|
index f74e82bfdae..647d82b65b1 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jartool.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jartool.gmk
|
||||||
|
@@ -27,8 +27,10 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jar, \
|
||||||
|
MAIN_CLASS := sun.tools.jar.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jarsigner, \
|
||||||
|
MAIN_CLASS := sun.security.tools.jarsigner.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.javadoc.gmk b/make/launcher/Launcher-jdk.javadoc.gmk
|
||||||
|
index 889028a2b17..c3d2093be04 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.javadoc.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.javadoc.gmk
|
||||||
|
@@ -27,6 +27,7 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, javadoc, \
|
||||||
|
MAIN_CLASS := jdk.javadoc.internal.tool.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jcmd.gmk b/make/launcher/Launcher-jdk.jcmd.gmk
|
||||||
|
index 7117fa78059..761a52d8466 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jcmd.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jcmd.gmk
|
||||||
|
@@ -30,6 +30,7 @@ $(eval $(call SetupBuildLauncher, jinfo, \
|
||||||
|
JAVA_ARGS := \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
@@ -37,28 +38,36 @@ $(eval $(call SetupBuildLauncher, jmap, \
|
||||||
|
MAIN_CLASS := sun.tools.jmap.JMap, \
|
||||||
|
JAVA_ARGS := \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||||
|
- -Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||||
|
+ -Dsun.jvm.hotspot.debugger.useWindbgDebugger \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jps, \
|
||||||
|
MAIN_CLASS := sun.tools.jps.Jps, \
|
||||||
|
+ JAVA_ARGS := \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jstack, \
|
||||||
|
MAIN_CLASS := sun.tools.jstack.JStack, \
|
||||||
|
JAVA_ARGS := \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||||
|
- -Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||||
|
+ -Dsun.jvm.hotspot.debugger.useWindbgDebugger \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jstat, \
|
||||||
|
MAIN_CLASS := sun.tools.jstat.Jstat, \
|
||||||
|
+ JAVA_ARGS := \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jcmd, \
|
||||||
|
MAIN_CLASS := sun.tools.jcmd.JCmd, \
|
||||||
|
+ JAVA_ARGS := \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
# Hook to include the corresponding custom file, if present.
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jconsole.gmk b/make/launcher/Launcher-jdk.jconsole.gmk
|
||||||
|
index 575b9e0595b..2f442f69113 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jconsole.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jconsole.gmk
|
||||||
|
@@ -30,6 +30,7 @@ $(eval $(call SetupBuildLauncher, jconsole, \
|
||||||
|
JAVA_ARGS := --add-opens java.base/java.io=jdk.jconsole \
|
||||||
|
-Djconsole.showOutputViewer \
|
||||||
|
-Djdk.attach.allowAttachSelf=true, \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS_windows := -DJAVAW, \
|
||||||
|
LIBS_windows := user32.lib, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jdeps.gmk b/make/launcher/Launcher-jdk.jdeps.gmk
|
||||||
|
index 217523c48cc..5448278dae7 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jdeps.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jdeps.gmk
|
||||||
|
@@ -27,15 +27,18 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, javap, \
|
||||||
|
MAIN_CLASS := com.sun.tools.javap.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jdeps, \
|
||||||
|
MAIN_CLASS := com.sun.tools.jdeps.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jdeprscan, \
|
||||||
|
MAIN_CLASS := com.sun.tools.jdeprscan.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jdi.gmk b/make/launcher/Launcher-jdk.jdi.gmk
|
||||||
|
index fcce98cf430..27bd448e3ae 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jdi.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jdi.gmk
|
||||||
|
@@ -27,4 +27,5 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jdb, \
|
||||||
|
MAIN_CLASS := com.sun.tools.example.debug.tty.TTY, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jlink.gmk b/make/launcher/Launcher-jdk.jlink.gmk
|
||||||
|
index df2173996d7..9e61edeb2c8 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jlink.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jlink.gmk
|
||||||
|
@@ -27,18 +27,21 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jimage,\
|
||||||
|
MAIN_CLASS := jdk.tools.jimage.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jlink,\
|
||||||
|
MAIN_CLASS := jdk.tools.jlink.internal.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES \
|
||||||
|
-DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jmod,\
|
||||||
|
MAIN_CLASS := jdk.tools.jmod.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES \
|
||||||
|
-DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jshell.gmk b/make/launcher/Launcher-jdk.jshell.gmk
|
||||||
|
index 349eb88e9eb..7287f8f998a 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jshell.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jshell.gmk
|
||||||
|
@@ -27,5 +27,6 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jshell, \
|
||||||
|
MAIN_CLASS := jdk.internal.jshell.tool.JShellToolProvider, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jstatd.gmk b/make/launcher/Launcher-jdk.jstatd.gmk
|
||||||
|
index e9286d63094..e1657910c67 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jstatd.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jstatd.gmk
|
||||||
|
@@ -27,6 +27,7 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jstatd, \
|
||||||
|
MAIN_CLASS := sun.tools.jstatd.Jstatd, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
# Hook to include the corresponding custom file, if present.
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.pack.gmk b/make/launcher/Launcher-jdk.pack.gmk
|
||||||
|
index a93fd2a9017..64bbbb7c949 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.pack.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.pack.gmk
|
||||||
|
@@ -28,6 +28,7 @@ include LauncherCommon.gmk
|
||||||
|
$(eval $(call SetupBuildLauncher, pack200, \
|
||||||
|
MAIN_MODULE := java.base, \
|
||||||
|
MAIN_CLASS := com.sun.java.util.jar.pack.Driver, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.rmic.gmk b/make/launcher/Launcher-jdk.rmic.gmk
|
||||||
|
index d60c3d9b60b..b8a55900b0e 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.rmic.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.rmic.gmk
|
||||||
|
@@ -27,5 +27,6 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, rmic, \
|
||||||
|
MAIN_CLASS := sun.rmi.rmic.Main, \
|
||||||
|
+ JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk b/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||||
|
index 82311e69fd6..bd39f8595b2 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||||
|
@@ -27,6 +27,7 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jjs, \
|
||||||
|
MAIN_CLASS := jdk.nashorn.tools.jjs.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
+ -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES, \
|
||||||
|
))
|
||||||
|
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
index 26ff6ee9853..2409af9b06e 100644
|
||||||
|
--- a/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
@@ -342,6 +342,7 @@
|
||||||
|
/* common method and field names */ \
|
||||||
|
template(object_initializer_name, "<init>") \
|
||||||
|
template(class_initializer_name, "<clinit>") \
|
||||||
|
+ template(ha_class_initializer_name, "$$ha$clinit") \
|
||||||
|
template(println_name, "println") \
|
||||||
|
template(printStackTrace_name, "printStackTrace") \
|
||||||
|
template(main_name, "main") \
|
||||||
|
diff --git a/src/hotspot/share/interpreter/linkResolver.cpp b/src/hotspot/share/interpreter/linkResolver.cpp
|
||||||
|
index 0c24146ff00..9dc184d02f5 100644
|
||||||
|
--- a/src/hotspot/share/interpreter/linkResolver.cpp
|
||||||
|
+++ b/src/hotspot/share/interpreter/linkResolver.cpp
|
||||||
|
@@ -1009,7 +1009,7 @@ void LinkResolver::resolve_field(fieldDescriptor& fd,
|
||||||
|
assert(!m.is_null(), "information about the current method must be available for 'put' bytecodes");
|
||||||
|
bool is_initialized_static_final_update = (byte == Bytecodes::_putstatic &&
|
||||||
|
fd.is_static() &&
|
||||||
|
- !m()->is_static_initializer());
|
||||||
|
+ !(m()->is_static_initializer() || m()->name() == vmSymbols::ha_class_initializer_name()));
|
||||||
|
bool is_initialized_instance_final_update = ((byte == Bytecodes::_putfield || byte == Bytecodes::_nofast_putfield) &&
|
||||||
|
!fd.is_static() &&
|
||||||
|
!m->is_object_initializer());
|
||||||
|
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
index 013ba213c00..2b5ba619f43 100644
|
||||||
|
--- a/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
@@ -3962,6 +3962,8 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
||||||
|
// Set object alignment values.
|
||||||
|
set_object_alignment();
|
||||||
|
|
||||||
|
+ setup_hotswap_agent();
|
||||||
|
+
|
||||||
|
#if !INCLUDE_CDS
|
||||||
|
if (DumpSharedSpaces || RequireSharedSpaces) {
|
||||||
|
jio_fprintf(defaultStream::error_stream(),
|
||||||
|
@@ -4295,3 +4297,68 @@ bool Arguments::copy_expand_pid(const char* src, size_t srclen,
|
||||||
|
*b = '\0';
|
||||||
|
return (p == src_end); // return false if not all of the source was copied
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+void Arguments::setup_hotswap_agent() {
|
||||||
|
+
|
||||||
|
+ if (DumpSharedSpaces)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ if (!AllowEnhancedClassRedefinition)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ // Set HotswapAgent
|
||||||
|
+ if (!DisableHotswapAgent) {
|
||||||
|
+
|
||||||
|
+ char ext_path_str[JVM_MAXPATHLEN];
|
||||||
|
+
|
||||||
|
+ os::jvm_path(ext_path_str, sizeof(ext_path_str));
|
||||||
|
+ for (int i = 0; i < 3; i++) {
|
||||||
|
+ char *end = strrchr(ext_path_str, *os::file_separator());
|
||||||
|
+ if (end != NULL) *end = '\0';
|
||||||
|
+ }
|
||||||
|
+ size_t ext_path_length = strlen(ext_path_str);
|
||||||
|
+ if (ext_path_length >= 3) {
|
||||||
|
+ if (strcmp(ext_path_str + ext_path_length - 3, "lib") != 0) {
|
||||||
|
+ if (ext_path_length < JVM_MAXPATHLEN - 4) {
|
||||||
|
+ jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length, "%slib", os::file_separator());
|
||||||
|
+ ext_path_length += 4;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (ext_path_length < JVM_MAXPATHLEN - 10) {
|
||||||
|
+ jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length,
|
||||||
|
+ "%shotswap%shotswap-agent.jar", os::file_separator(), os::file_separator());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ int fd = ::open(ext_path_str, O_RDONLY);
|
||||||
|
+ if (fd >= 0) {
|
||||||
|
+ os::close(fd);
|
||||||
|
+ size_t length = strlen(ext_path_str) + 1;
|
||||||
|
+ char *options = NEW_C_HEAP_ARRAY(char, length, mtArguments);
|
||||||
|
+ jio_snprintf(options, length, "%s", ext_path_str);
|
||||||
|
+ add_init_agent("instrument", ext_path_str, false);
|
||||||
|
+ jio_fprintf(defaultStream::output_stream(), "Starting HotswapAgent '%s'\n", ext_path_str);
|
||||||
|
+ }
|
||||||
|
+// else
|
||||||
|
+// {
|
||||||
|
+// jio_fprintf(defaultStream::error_stream(), "HotswapAgent not found on path:'%s'\n", ext_path_str);
|
||||||
|
+// }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // TODO: open it only for org.hotswap.agent module
|
||||||
|
+ // Use to access java.lang.reflect.Proxy/proxyCache
|
||||||
|
+ create_numbered_property("jdk.module.addopens", "java.base/java.lang=ALL-UNNAMED", addopens_count++);
|
||||||
|
+ // Class of field java.lang.reflect.Proxy/proxyCache
|
||||||
|
+ create_numbered_property("jdk.module.addopens", "java.base/jdk.internal.loader=ALL-UNNAMED", addopens_count++);
|
||||||
|
+ // Use to access java.io.Reader, java.io.InputStream, java.io.FileInputStream
|
||||||
|
+ create_numbered_property("jdk.module.addopens", "java.base/java.io=ALL-UNNAMED", addopens_count++);
|
||||||
|
+ // java.beans.Introspector access
|
||||||
|
+ create_numbered_property("jdk.module.addopens", "java.desktop/java.beans=ALL-UNNAMED", addopens_count++);
|
||||||
|
+ // java.beans.Introspector access
|
||||||
|
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans=ALL-UNNAMED", addopens_count++);
|
||||||
|
+ // com.sun.beans.introspect.ClassInfo access
|
||||||
|
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans.introspect=ALL-UNNAMED", addopens_count++);
|
||||||
|
+ // com.sun.beans.introspect.util.Cache access
|
||||||
|
+ create_numbered_property("jdk.module.addopens", "java.desktop/com.sun.beans.util=ALL-UNNAMED", addopens_count++);
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
diff --git a/src/hotspot/share/runtime/arguments.hpp b/src/hotspot/share/runtime/arguments.hpp
|
||||||
|
index cc7f71a4404..b2bab2e1f44 100644
|
||||||
|
--- a/src/hotspot/share/runtime/arguments.hpp
|
||||||
|
+++ b/src/hotspot/share/runtime/arguments.hpp
|
||||||
|
@@ -507,6 +507,9 @@ class Arguments : AllStatic {
|
||||||
|
|
||||||
|
static size_t conservative_max_heap_alignment() { return _conservative_max_heap_alignment; }
|
||||||
|
|
||||||
|
+ // Initialize HotswapAgent
|
||||||
|
+ static void setup_hotswap_agent();
|
||||||
|
+
|
||||||
|
// Return the maximum size a heap with compressed oops can take
|
||||||
|
static size_t max_heap_for_compressed_oops();
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
|
||||||
|
index a6c33744760..b8dba232fc1 100644
|
||||||
|
--- a/src/hotspot/share/runtime/globals.hpp
|
||||||
|
+++ b/src/hotspot/share/runtime/globals.hpp
|
||||||
|
@@ -32,6 +32,12 @@
|
||||||
|
|
||||||
|
#include <float.h> // for DBL_MAX
|
||||||
|
|
||||||
|
+#ifdef DCEVM_ONLY
|
||||||
|
+#define DISABLED_HOTSWAP_AGENT true
|
||||||
|
+#else
|
||||||
|
+#define DISABLED_HOTSWAP_AGENT false
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
// The larger HeapWordSize for 64bit requires larger heaps
|
||||||
|
// for the same application running in 64bit. See bug 4967770.
|
||||||
|
// The minimum alignment to a heap word size is done. Other
|
||||||
|
@@ -2678,8 +2684,10 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
|
||||||
|
\
|
||||||
|
product(bool, AllowEnhancedClassRedefinition, true, \
|
||||||
|
"Allow enhanced class redefinition beyond swapping method " \
|
||||||
|
- "bodies")
|
||||||
|
-
|
||||||
|
+ "bodies") \
|
||||||
|
+ \
|
||||||
|
+ product(bool, DisableHotswapAgent, DISABLED_HOTSWAP_AGENT, \
|
||||||
|
+ "Disable integrated Hotswap Agent (HotswapVM only)")
|
||||||
|
#define VM_FLAGS(develop, \
|
||||||
|
develop_pd, \
|
||||||
|
product, \
|
||||||
|
diff --git a/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java b/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..6636e4dd62a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
|
||||||
|
@@ -0,0 +1,26 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
+ *
|
||||||
|
+ * This code is free software; you can redistribute it and/or modify it
|
||||||
|
+ * under the terms of the GNU General Public License version 2 only, as
|
||||||
|
+ * published by the Free Software Foundation. Oracle designates this
|
||||||
|
+ * particular file as subject to the "Classpath" exception as provided
|
||||||
|
+ * by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
+ *
|
||||||
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
+ * accompanied this code).
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License version
|
||||||
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
+ *
|
||||||
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
+ * or visit www.oracle.com if you need additional information or have any
|
||||||
|
+ * questions.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+package com.sun.beans.introspect;
|
||||||
|
diff --git a/src/java.desktop/share/classes/com/sun/beans/package-info.java b/src/java.desktop/share/classes/com/sun/beans/package-info.java
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..5c097eeaa53
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/java.desktop/share/classes/com/sun/beans/package-info.java
|
||||||
|
@@ -0,0 +1,26 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
+ *
|
||||||
|
+ * This code is free software; you can redistribute it and/or modify it
|
||||||
|
+ * under the terms of the GNU General Public License version 2 only, as
|
||||||
|
+ * published by the Free Software Foundation. Oracle designates this
|
||||||
|
+ * particular file as subject to the "Classpath" exception as provided
|
||||||
|
+ * by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
+ *
|
||||||
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
+ * accompanied this code).
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License version
|
||||||
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
+ *
|
||||||
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
+ * or visit www.oracle.com if you need additional information or have any
|
||||||
|
+ * questions.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+package com.sun.beans;
|
||||||
|
diff --git a/src/java.desktop/share/classes/com/sun/beans/util/package-info.java b/src/java.desktop/share/classes/com/sun/beans/util/package-info.java
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..2d5d735ffa8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/java.desktop/share/classes/com/sun/beans/util/package-info.java
|
||||||
|
@@ -0,0 +1,26 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
+ *
|
||||||
|
+ * This code is free software; you can redistribute it and/or modify it
|
||||||
|
+ * under the terms of the GNU General Public License version 2 only, as
|
||||||
|
+ * published by the Free Software Foundation. Oracle designates this
|
||||||
|
+ * particular file as subject to the "Classpath" exception as provided
|
||||||
|
+ * by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
+ *
|
||||||
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
+ * accompanied this code).
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License version
|
||||||
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
+ *
|
||||||
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
+ * or visit www.oracle.com if you need additional information or have any
|
||||||
|
+ * questions.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+package com.sun.beans.util;
|
||||||
|
diff --git a/src/java.desktop/share/classes/module-info.java b/src/java.desktop/share/classes/module-info.java
|
||||||
|
index b663b382f52..2a8f0a67d52 100644
|
||||||
|
--- a/src/java.desktop/share/classes/module-info.java
|
||||||
|
+++ b/src/java.desktop/share/classes/module-info.java
|
||||||
|
@@ -104,6 +104,9 @@ module java.desktop {
|
||||||
|
exports javax.swing.text.rtf;
|
||||||
|
exports javax.swing.tree;
|
||||||
|
exports javax.swing.undo;
|
||||||
|
+ exports com.sun.beans;
|
||||||
|
+ exports com.sun.beans.introspect;
|
||||||
|
+ exports com.sun.beans.util;
|
||||||
|
|
||||||
|
// qualified exports may be inserted at build time
|
||||||
|
// see make/GensrcModuleInfo.gmk
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,258 @@
|
|||||||
|
From 1552e3854e11fb835452aa531ef53b78bb4588a5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sun, 4 Oct 2020 21:12:12 +0200
|
||||||
|
Subject: [PATCH 06/28] Support for Lambda class redefinition
|
||||||
|
|
||||||
|
---
|
||||||
|
.../share/classfile/classLoaderData.cpp | 9 +++
|
||||||
|
.../share/classfile/classLoaderData.hpp | 1 +
|
||||||
|
.../share/classfile/systemDictionary.cpp | 12 +++-
|
||||||
|
.../share/classfile/systemDictionary.hpp | 2 +
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.cpp | 65 +++++++++++++++++--
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.hpp | 1 +
|
||||||
|
.../share/prims/resolvedMethodTable.cpp | 4 +-
|
||||||
|
src/hotspot/share/prims/unsafe.cpp | 1 +
|
||||||
|
8 files changed, 85 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
index ab2615da0ed..1bc67adf5a7 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
@@ -663,6 +663,15 @@ Dictionary* ClassLoaderData::create_dictionary() {
|
||||||
|
return new Dictionary(this, size, resizable);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void ClassLoaderData::exchange_holders(ClassLoaderData* cld) {
|
||||||
|
+ oop holder_oop = _holder.peek();
|
||||||
|
+ _holder.replace(cld->_holder.peek());
|
||||||
|
+ cld->_holder.replace(holder_oop);
|
||||||
|
+ WeakHandle<vm_class_loader_data> exchange = _holder;
|
||||||
|
+ _holder = cld->_holder;
|
||||||
|
+ cld->_holder = exchange;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Tell the GC to keep this klass alive while iterating ClassLoaderDataGraph
|
||||||
|
oop ClassLoaderData::holder_phantom() const {
|
||||||
|
// A klass that was previously considered dead can be looked up in the
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.hpp b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
index 7e357929971..00a84610b43 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
@@ -292,6 +292,7 @@ class ClassLoaderData : public CHeapObj<mtClass> {
|
||||||
|
void accumulate_modified_oops() { if (has_modified_oops()) _accumulated_modified_oops = true; }
|
||||||
|
void clear_accumulated_modified_oops() { _accumulated_modified_oops = false; }
|
||||||
|
bool has_accumulated_modified_oops() { return _accumulated_modified_oops; }
|
||||||
|
+ void exchange_holders(ClassLoaderData* cld);
|
||||||
|
private:
|
||||||
|
|
||||||
|
void unload();
|
||||||
|
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
index 19bc8d9899a..a6a03d3c0e9 100644
|
||||||
|
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
@@ -971,12 +971,16 @@ InstanceKlass* SystemDictionary::parse_stream(Symbol* class_name,
|
||||||
|
Handle protection_domain,
|
||||||
|
ClassFileStream* st,
|
||||||
|
const InstanceKlass* host_klass,
|
||||||
|
+ InstanceKlass* old_klass,
|
||||||
|
GrowableArray<Handle>* cp_patches,
|
||||||
|
TRAPS) {
|
||||||
|
|
||||||
|
EventClassLoad class_load_start_event;
|
||||||
|
|
||||||
|
ClassLoaderData* loader_data;
|
||||||
|
+
|
||||||
|
+ bool is_redefining = (old_klass != NULL);
|
||||||
|
+
|
||||||
|
if (host_klass != NULL) {
|
||||||
|
// Create a new CLD for anonymous class, that uses the same class loader
|
||||||
|
// as the host_klass
|
||||||
|
@@ -1000,8 +1004,12 @@ InstanceKlass* SystemDictionary::parse_stream(Symbol* class_name,
|
||||||
|
protection_domain,
|
||||||
|
host_klass,
|
||||||
|
cp_patches,
|
||||||
|
- false, // pick_newest
|
||||||
|
+ is_redefining, // pick_newest
|
||||||
|
CHECK_NULL);
|
||||||
|
+ if (is_redefining && k != NULL) {
|
||||||
|
+ k->set_redefining(true);
|
||||||
|
+ k->set_old_version(old_klass);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (host_klass != NULL && k != NULL) {
|
||||||
|
// Anonymous classes must update ClassLoaderData holder (was host_klass loader)
|
||||||
|
@@ -1844,7 +1852,7 @@ void SystemDictionary::remove_from_hierarchy(InstanceKlass* k) {
|
||||||
|
k->remove_from_sibling_list();
|
||||||
|
}
|
||||||
|
|
||||||
|
-// (DCEVM)
|
||||||
|
+// (DCEVM)
|
||||||
|
void SystemDictionary::update_constraints_after_redefinition() {
|
||||||
|
constraints()->update_after_redefinition();
|
||||||
|
}
|
||||||
|
diff --git a/src/hotspot/share/classfile/systemDictionary.hpp b/src/hotspot/share/classfile/systemDictionary.hpp
|
||||||
|
index 06f6c869d63..1dbbffa197f 100644
|
||||||
|
--- a/src/hotspot/share/classfile/systemDictionary.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/systemDictionary.hpp
|
||||||
|
@@ -304,6 +304,7 @@ public:
|
||||||
|
protection_domain,
|
||||||
|
st,
|
||||||
|
NULL, // host klass
|
||||||
|
+ NULL, // old class
|
||||||
|
NULL, // cp_patches
|
||||||
|
THREAD);
|
||||||
|
}
|
||||||
|
@@ -312,6 +313,7 @@ public:
|
||||||
|
Handle protection_domain,
|
||||||
|
ClassFileStream* st,
|
||||||
|
const InstanceKlass* host_klass,
|
||||||
|
+ InstanceKlass* old_klass,
|
||||||
|
GrowableArray<Handle>* cp_patches,
|
||||||
|
TRAPS);
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index 41e82ae7a69..b94caa39562 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -488,6 +488,8 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||||
|
ClassLoaderDataGraph::classes_do(&clear_cpool_cache);
|
||||||
|
|
||||||
|
|
||||||
|
+ // SystemDictionary::methods_do(fix_invoke_method);
|
||||||
|
+
|
||||||
|
// JSR-292 support
|
||||||
|
if (_any_class_has_resolved_methods) {
|
||||||
|
bool trace_name_printed = false;
|
||||||
|
@@ -750,12 +752,34 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
|
||||||
|
// load hook event.
|
||||||
|
state->set_class_being_redefined(the_class, _class_load_kind);
|
||||||
|
|
||||||
|
- InstanceKlass* k = SystemDictionary::resolve_from_stream(the_class_sym,
|
||||||
|
- the_class_loader,
|
||||||
|
- protection_domain,
|
||||||
|
- &st,
|
||||||
|
- the_class,
|
||||||
|
- THREAD);
|
||||||
|
+ InstanceKlass* k;
|
||||||
|
+
|
||||||
|
+ if (InstanceKlass::cast(the_class)->is_anonymous()) {
|
||||||
|
+ const InstanceKlass* host_class = the_class->host_klass();
|
||||||
|
+
|
||||||
|
+ // Make sure it's the real host class, not another anonymous class.
|
||||||
|
+ while (host_class != NULL && host_class->is_anonymous()) {
|
||||||
|
+ host_class = host_class->host_klass();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ k = SystemDictionary::parse_stream(the_class_sym,
|
||||||
|
+ the_class_loader,
|
||||||
|
+ protection_domain,
|
||||||
|
+ &st,
|
||||||
|
+ host_class,
|
||||||
|
+ the_class,
|
||||||
|
+ NULL,
|
||||||
|
+ THREAD);
|
||||||
|
+ k->class_loader_data()->exchange_holders(the_class->class_loader_data());
|
||||||
|
+ the_class->class_loader_data()->inc_keep_alive();
|
||||||
|
+ } else {
|
||||||
|
+ k = SystemDictionary::resolve_from_stream(the_class_sym,
|
||||||
|
+ the_class_loader,
|
||||||
|
+ protection_domain,
|
||||||
|
+ &st,
|
||||||
|
+ the_class,
|
||||||
|
+ THREAD);
|
||||||
|
+ }
|
||||||
|
// Clear class_being_redefined just to be sure.
|
||||||
|
state->clear_class_being_redefined();
|
||||||
|
|
||||||
|
@@ -1436,6 +1460,30 @@ void VM_EnhancedRedefineClasses::MethodDataCleaner::do_klass(Klass* k) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+void VM_EnhancedRedefineClasses::fix_invoke_method(Method* method) {
|
||||||
|
+
|
||||||
|
+ constantPoolHandle other_cp = constantPoolHandle(method->constants());
|
||||||
|
+
|
||||||
|
+ for (int i = 0; i < other_cp->length(); i++) {
|
||||||
|
+ if (other_cp->tag_at(i).is_klass()) {
|
||||||
|
+ Klass* klass = other_cp->resolved_klass_at(i);
|
||||||
|
+ if (klass->new_version() != NULL) {
|
||||||
|
+ // Constant pool entry points to redefined class -- update to the new version
|
||||||
|
+ other_cp->klass_at_put(i, klass->newest_version());
|
||||||
|
+ }
|
||||||
|
+ assert(other_cp->resolved_klass_at(i)->new_version() == NULL, "Must be new klass!");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ConstantPoolCache* cp_cache = other_cp->cache();
|
||||||
|
+ if (cp_cache != NULL) {
|
||||||
|
+ cp_cache->clear_entries();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
void VM_EnhancedRedefineClasses::update_jmethod_ids() {
|
||||||
|
for (int j = 0; j < _matching_methods_length; ++j) {
|
||||||
|
Method* old_method = _matching_old_methods[j];
|
||||||
|
@@ -1973,7 +2021,10 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
|
||||||
|
// Find classes not directly redefined, but affected by a redefinition (because one of its supertypes is redefined)
|
||||||
|
AffectedKlassClosure closure(_affected_klasses);
|
||||||
|
// Updated in j10, from original SystemDictionary::classes_do
|
||||||
|
- ClassLoaderDataGraph::dictionary_classes_do(&closure);
|
||||||
|
+
|
||||||
|
+ ClassLoaderDataGraph::classes_do(&closure);
|
||||||
|
+ //ClassLoaderDataGraph::dictionary_classes_do(&closure);
|
||||||
|
+
|
||||||
|
log_trace(redefine, class, load)("%d classes affected", _affected_klasses->length());
|
||||||
|
|
||||||
|
// Sort the affected klasses such that a supertype is always on a smaller array index than its subtype.
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
index 60b62c3170a..d8a11b51fe9 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
@@ -116,6 +116,7 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
|
||||||
|
void rollback();
|
||||||
|
static void mark_as_scavengable(nmethod* nm);
|
||||||
|
static void unpatch_bytecode(Method* method);
|
||||||
|
+ static void fix_invoke_method(Method* method);
|
||||||
|
|
||||||
|
// Figure out which new methods match old methods in name and signature,
|
||||||
|
// which methods have been added, and which are no longer present
|
||||||
|
diff --git a/src/hotspot/share/prims/resolvedMethodTable.cpp b/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
index af2ec48c2e1..7741328979f 100644
|
||||||
|
--- a/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
@@ -200,7 +200,7 @@ void ResolvedMethodTable::print() {
|
||||||
|
|
||||||
|
void ResolvedMethodTable::adjust_method_entries(bool * trace_name_printed) {
|
||||||
|
assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint");
|
||||||
|
- // For each entry in RMT, change to new method
|
||||||
|
+ // For each entry in RMT, change to new methodadjust_method_entries_dcevm
|
||||||
|
for (int i = 0; i < _the_table->table_size(); ++i) {
|
||||||
|
for (ResolvedMethodEntry* entry = _the_table->bucket(i);
|
||||||
|
entry != NULL;
|
||||||
|
@@ -271,6 +271,8 @@ void ResolvedMethodTable::adjust_method_entries_dcevm(bool * trace_name_printed)
|
||||||
|
InstanceKlass* newer_klass = InstanceKlass::cast(old_method->method_holder()->new_version());
|
||||||
|
Method* newer_method = newer_klass->method_with_idnum(old_method->orig_method_idnum());
|
||||||
|
|
||||||
|
+ log_info(redefine, class, load, exceptions)("Adjusting method: '%s' of new class %s", newer_method->name_and_sig_as_C_string(), newer_klass->name()->as_C_string());
|
||||||
|
+
|
||||||
|
assert(newer_klass == newer_method->method_holder(), "call after swapping redefined guts");
|
||||||
|
assert(newer_method != NULL, "method_with_idnum() should not be NULL");
|
||||||
|
assert(old_method != newer_method, "sanity check");
|
||||||
|
diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp
|
||||||
|
index 1983b4f45f0..5e7aca092eb 100644
|
||||||
|
--- a/src/hotspot/share/prims/unsafe.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/unsafe.cpp
|
||||||
|
@@ -820,6 +820,7 @@ Unsafe_DefineAnonymousClass_impl(JNIEnv *env,
|
||||||
|
host_domain,
|
||||||
|
&st,
|
||||||
|
InstanceKlass::cast(host_klass),
|
||||||
|
+ NULL,
|
||||||
|
cp_patches,
|
||||||
|
CHECK_NULL);
|
||||||
|
if (anonk == NULL) {
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
From 83c2efaeb6ea9ee29c6d9eb779991db787c036ac Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sat, 23 May 2020 10:02:15 +0200
|
||||||
|
Subject: [PATCH 07/28] Fix "no original bytecode found" error if method with
|
||||||
|
bkp is missing
|
||||||
|
|
||||||
|
Sometimes IDE can deploy class with erroneous method, such method has
|
||||||
|
n bytecode, but breakpoint position can still exist.
|
||||||
|
---
|
||||||
|
src/hotspot/share/interpreter/bytecodes.cpp | 2 +-
|
||||||
|
.../share/interpreter/interpreterRuntime.cpp | 2 +-
|
||||||
|
src/hotspot/share/oops/method.cpp | 8 ++++----
|
||||||
|
src/hotspot/share/oops/method.hpp | 4 ++--
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.cpp | 18 ++++++++++--------
|
||||||
|
5 files changed, 18 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/interpreter/bytecodes.cpp b/src/hotspot/share/interpreter/bytecodes.cpp
|
||||||
|
index e377e36b88c..262ecc021b2 100644
|
||||||
|
--- a/src/hotspot/share/interpreter/bytecodes.cpp
|
||||||
|
+++ b/src/hotspot/share/interpreter/bytecodes.cpp
|
||||||
|
@@ -84,7 +84,7 @@ Bytecodes::Code Bytecodes::code_at(Method* method, int bci) {
|
||||||
|
Bytecodes::Code Bytecodes::non_breakpoint_code_at(const Method* method, address bcp) {
|
||||||
|
assert(method != NULL, "must have the method for breakpoint conversion");
|
||||||
|
assert(method->contains(bcp), "must be valid bcp in method");
|
||||||
|
- return method->orig_bytecode_at(method->bci_from(bcp));
|
||||||
|
+ return method->orig_bytecode_at(method->bci_from(bcp), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Bytecodes::special_length_at(Bytecodes::Code code, address bcp, address end) {
|
||||||
|
diff --git a/src/hotspot/share/interpreter/interpreterRuntime.cpp b/src/hotspot/share/interpreter/interpreterRuntime.cpp
|
||||||
|
index c25e13d83e8..2a66419908c 100644
|
||||||
|
--- a/src/hotspot/share/interpreter/interpreterRuntime.cpp
|
||||||
|
+++ b/src/hotspot/share/interpreter/interpreterRuntime.cpp
|
||||||
|
@@ -819,7 +819,7 @@ IRT_END
|
||||||
|
// Invokes
|
||||||
|
|
||||||
|
IRT_ENTRY(Bytecodes::Code, InterpreterRuntime::get_original_bytecode_at(JavaThread* thread, Method* method, address bcp))
|
||||||
|
- return method->orig_bytecode_at(method->bci_from(bcp));
|
||||||
|
+ return method->orig_bytecode_at(method->bci_from(bcp), false);
|
||||||
|
IRT_END
|
||||||
|
|
||||||
|
IRT_ENTRY(void, InterpreterRuntime::set_original_bytecode_at(JavaThread* thread, Method* method, address bcp, Bytecodes::Code new_code))
|
||||||
|
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
|
||||||
|
index ed6f769bf1b..031f255e632 100644
|
||||||
|
--- a/src/hotspot/share/oops/method.cpp
|
||||||
|
+++ b/src/hotspot/share/oops/method.cpp
|
||||||
|
@@ -1744,14 +1744,14 @@ bool CompressedLineNumberReadStream::read_pair() {
|
||||||
|
|
||||||
|
#if INCLUDE_JVMTI
|
||||||
|
|
||||||
|
-Bytecodes::Code Method::orig_bytecode_at(int bci) const {
|
||||||
|
+Bytecodes::Code Method::orig_bytecode_at(int bci, bool no_fatal) const {
|
||||||
|
BreakpointInfo* bp = method_holder()->breakpoints();
|
||||||
|
for (; bp != NULL; bp = bp->next()) {
|
||||||
|
if (bp->match(this, bci)) {
|
||||||
|
return bp->orig_bytecode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- {
|
||||||
|
+ if (!no_fatal) {
|
||||||
|
ResourceMark rm;
|
||||||
|
fatal("no original bytecode found in %s at bci %d", name_and_sig_as_C_string(), bci);
|
||||||
|
}
|
||||||
|
@@ -1897,7 +1897,7 @@ BreakpointInfo::BreakpointInfo(Method* m, int bci) {
|
||||||
|
_signature_index = m->signature_index();
|
||||||
|
_orig_bytecode = (Bytecodes::Code) *m->bcp_from(_bci);
|
||||||
|
if (_orig_bytecode == Bytecodes::_breakpoint)
|
||||||
|
- _orig_bytecode = m->orig_bytecode_at(_bci);
|
||||||
|
+ _orig_bytecode = m->orig_bytecode_at(_bci, false);
|
||||||
|
_next = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1906,7 +1906,7 @@ void BreakpointInfo::set(Method* method) {
|
||||||
|
{
|
||||||
|
Bytecodes::Code code = (Bytecodes::Code) *method->bcp_from(_bci);
|
||||||
|
if (code == Bytecodes::_breakpoint)
|
||||||
|
- code = method->orig_bytecode_at(_bci);
|
||||||
|
+ code = method->orig_bytecode_at(_bci, false);
|
||||||
|
assert(orig_bytecode() == code, "original bytecode must be the same");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
diff --git a/src/hotspot/share/oops/method.hpp b/src/hotspot/share/oops/method.hpp
|
||||||
|
index 4533476ff8f..193e1845b23 100644
|
||||||
|
--- a/src/hotspot/share/oops/method.hpp
|
||||||
|
+++ b/src/hotspot/share/oops/method.hpp
|
||||||
|
@@ -230,7 +230,7 @@ class Method : public Metadata {
|
||||||
|
|
||||||
|
// JVMTI breakpoints
|
||||||
|
#if !INCLUDE_JVMTI
|
||||||
|
- Bytecodes::Code orig_bytecode_at(int bci) const {
|
||||||
|
+ Bytecodes::Code orig_bytecode_at(int bci, bool no_fatal) const {
|
||||||
|
ShouldNotReachHere();
|
||||||
|
return Bytecodes::_shouldnotreachhere;
|
||||||
|
}
|
||||||
|
@@ -239,7 +239,7 @@ class Method : public Metadata {
|
||||||
|
};
|
||||||
|
u2 number_of_breakpoints() const {return 0;}
|
||||||
|
#else // !INCLUDE_JVMTI
|
||||||
|
- Bytecodes::Code orig_bytecode_at(int bci) const;
|
||||||
|
+ Bytecodes::Code orig_bytecode_at(int bci, bool no_fatal) const;
|
||||||
|
void set_orig_bytecode_at(int bci, Bytecodes::Code code);
|
||||||
|
void set_breakpoint(int bci);
|
||||||
|
void clear_breakpoint(int bci);
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index b94caa39562..1fbba406087 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -1356,14 +1356,16 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {
|
||||||
|
|
||||||
|
if (code == Bytecodes::_breakpoint) {
|
||||||
|
int bci = method->bci_from(bcp);
|
||||||
|
- code = method->orig_bytecode_at(bci);
|
||||||
|
- java_code = Bytecodes::java_code(code);
|
||||||
|
- if (code != java_code &&
|
||||||
|
- (java_code == Bytecodes::_getfield ||
|
||||||
|
- java_code == Bytecodes::_putfield ||
|
||||||
|
- java_code == Bytecodes::_aload_0)) {
|
||||||
|
- // Let breakpoint table handling unpatch bytecode
|
||||||
|
- method->set_orig_bytecode_at(bci, java_code);
|
||||||
|
+ code = method->orig_bytecode_at(bci, true);
|
||||||
|
+ if (code != Bytecodes::_shouldnotreachhere) {
|
||||||
|
+ java_code = Bytecodes::java_code(code);
|
||||||
|
+ if (code != java_code &&
|
||||||
|
+ (java_code == Bytecodes::_getfield ||
|
||||||
|
+ java_code == Bytecodes::_putfield ||
|
||||||
|
+ java_code == Bytecodes::_aload_0)) {
|
||||||
|
+ // Let breakpoint table handling unpatch bytecode
|
||||||
|
+ method->set_orig_bytecode_at(bci, java_code);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
java_code = Bytecodes::java_code(code);
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
From f9e238b9bf2cc3ae0c437fa3ebb1703c35f575cf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sun, 24 May 2020 12:07:42 +0200
|
||||||
|
Subject: [PATCH 08/28] Replace deleted method with
|
||||||
|
Universe::throw_no_such_method_error
|
||||||
|
|
||||||
|
---
|
||||||
|
.../share/prims/resolvedMethodTable.cpp | 28 +++++++++----------
|
||||||
|
1 file changed, 14 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/prims/resolvedMethodTable.cpp b/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
index 7741328979f..06581643c3b 100644
|
||||||
|
--- a/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
@@ -261,25 +261,25 @@ void ResolvedMethodTable::adjust_method_entries_dcevm(bool * trace_name_printed)
|
||||||
|
|
||||||
|
if (old_method->is_old()) {
|
||||||
|
|
||||||
|
+ InstanceKlass* newer_klass = InstanceKlass::cast(old_method->method_holder()->new_version());
|
||||||
|
+ Method* newer_method;
|
||||||
|
+
|
||||||
|
// Method* new_method;
|
||||||
|
if (old_method->is_deleted()) {
|
||||||
|
- // FIXME:(DCEVM) - check if exception can be thrown
|
||||||
|
- // new_method = Universe::throw_no_such_method_error();
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- InstanceKlass* newer_klass = InstanceKlass::cast(old_method->method_holder()->new_version());
|
||||||
|
- Method* newer_method = newer_klass->method_with_idnum(old_method->orig_method_idnum());
|
||||||
|
+ newer_method = Universe::throw_no_such_method_error();
|
||||||
|
+ } else {
|
||||||
|
+ newer_method = newer_klass->method_with_idnum(old_method->orig_method_idnum());
|
||||||
|
|
||||||
|
- log_info(redefine, class, load, exceptions)("Adjusting method: '%s' of new class %s", newer_method->name_and_sig_as_C_string(), newer_klass->name()->as_C_string());
|
||||||
|
+ log_info(redefine, class, load, exceptions)("Adjusting method: '%s' of new class %s", newer_method->name_and_sig_as_C_string(), newer_klass->name()->as_C_string());
|
||||||
|
|
||||||
|
- assert(newer_klass == newer_method->method_holder(), "call after swapping redefined guts");
|
||||||
|
- assert(newer_method != NULL, "method_with_idnum() should not be NULL");
|
||||||
|
- assert(old_method != newer_method, "sanity check");
|
||||||
|
+ assert(newer_klass == newer_method->method_holder(), "call after swapping redefined guts");
|
||||||
|
+ assert(newer_method != NULL, "method_with_idnum() should not be NULL");
|
||||||
|
+ assert(old_method != newer_method, "sanity check");
|
||||||
|
|
||||||
|
- if (_the_table->lookup(newer_method) != NULL) {
|
||||||
|
- // old method was already adjusted if new method exists in _the_table
|
||||||
|
- continue;
|
||||||
|
+ if (_the_table->lookup(newer_method) != NULL) {
|
||||||
|
+ // old method was already adjusted if new method exists in _the_table
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
java_lang_invoke_ResolvedMethodName::set_vmtarget(mem_name, newer_method);
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
1304
jb/project/tools/patches/dcevm/0009-Support-for-G1-gc.patch
Normal file
1304
jb/project/tools/patches/dcevm/0009-Support-for-G1-gc.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,50 @@
|
|||||||
|
From 8d14e792d9849beedc74de690cf4d208ac384878 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sat, 13 Jun 2020 18:50:59 +0200
|
||||||
|
Subject: [PATCH 10/28] Change log level in advanced redefinition
|
||||||
|
|
||||||
|
- Change log level for "Comparing different class ver.." to debug
|
||||||
|
- Fix adjust_method_entries_dcevm logging levels and severity
|
||||||
|
---
|
||||||
|
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 2 +-
|
||||||
|
src/hotspot/share/prims/resolvedMethodTable.cpp | 4 ++--
|
||||||
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index e67fc2dd58f..5be9bb74305 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -915,7 +915,7 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
|
||||||
|
// Calculated the difference between new and old class (field change, method change, supertype change, ...).
|
||||||
|
int VM_EnhancedRedefineClasses::calculate_redefinition_flags(InstanceKlass* new_class) {
|
||||||
|
int result = Klass::NoRedefinition;
|
||||||
|
- log_info(redefine, class, load)("Comparing different class versions of class %s",new_class->name()->as_C_string());
|
||||||
|
+ log_debug(redefine, class, load)("Comparing different class versions of class %s",new_class->name()->as_C_string());
|
||||||
|
|
||||||
|
assert(new_class->old_version() != NULL, "must have old version");
|
||||||
|
InstanceKlass* the_class = InstanceKlass::cast(new_class->old_version());
|
||||||
|
diff --git a/src/hotspot/share/prims/resolvedMethodTable.cpp b/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
index 06581643c3b..10806bee29b 100644
|
||||||
|
--- a/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/resolvedMethodTable.cpp
|
||||||
|
@@ -270,7 +270,7 @@ void ResolvedMethodTable::adjust_method_entries_dcevm(bool * trace_name_printed)
|
||||||
|
} else {
|
||||||
|
newer_method = newer_klass->method_with_idnum(old_method->orig_method_idnum());
|
||||||
|
|
||||||
|
- log_info(redefine, class, load, exceptions)("Adjusting method: '%s' of new class %s", newer_method->name_and_sig_as_C_string(), newer_klass->name()->as_C_string());
|
||||||
|
+ log_debug(redefine, class, update)("Adjusting method: '%s' of new class %s", newer_method->name_and_sig_as_C_string(), newer_klass->name()->as_C_string());
|
||||||
|
|
||||||
|
assert(newer_klass == newer_method->method_holder(), "call after swapping redefined guts");
|
||||||
|
assert(newer_method != NULL, "method_with_idnum() should not be NULL");
|
||||||
|
@@ -290,7 +290,7 @@ void ResolvedMethodTable::adjust_method_entries_dcevm(bool * trace_name_printed)
|
||||||
|
|
||||||
|
ResourceMark rm;
|
||||||
|
if (!(*trace_name_printed)) {
|
||||||
|
- log_info(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
|
||||||
|
+ log_debug(redefine, class, update)("adjust: name=%s", old_method->method_holder()->external_name());
|
||||||
|
*trace_name_printed = true;
|
||||||
|
}
|
||||||
|
log_debug(redefine, class, update, constantpool)
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
From 5c437ade174426dbaf99a53823597ac7d3b1b4da Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Tue, 6 Oct 2020 22:15:31 +0200
|
||||||
|
Subject: [PATCH 11/28] AllowEnhancedClassRedefinition is false (disabled) by
|
||||||
|
default
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/runtime/globals.hpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
|
||||||
|
index b8dba232fc1..d4453de1ff5 100644
|
||||||
|
--- a/src/hotspot/share/runtime/globals.hpp
|
||||||
|
+++ b/src/hotspot/share/runtime/globals.hpp
|
||||||
|
@@ -2682,7 +2682,7 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
|
||||||
|
experimental(bool, UseFastUnorderedTimeStamps, false, \
|
||||||
|
"Use platform unstable time where supported for timestamps only") \
|
||||||
|
\
|
||||||
|
- product(bool, AllowEnhancedClassRedefinition, true, \
|
||||||
|
+ product(bool, AllowEnhancedClassRedefinition, false, \
|
||||||
|
"Allow enhanced class redefinition beyond swapping method " \
|
||||||
|
"bodies") \
|
||||||
|
\
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
From 8b1c8178e66af30012fdda3e7f1076309daaf6c4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Artem Khvastunov <artem.khvastunov@jetbrains.com>
|
||||||
|
Date: Tue, 14 Apr 2020 19:11:35 +0200
|
||||||
|
Subject: [PATCH 12/28] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
|
||||||
|
|
||||||
|
---
|
||||||
|
jb/project/hotspot-cmake/CMakeLists.txt | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/jb/project/hotspot-cmake/CMakeLists.txt b/jb/project/hotspot-cmake/CMakeLists.txt
|
||||||
|
index 8b552c27206..6516e39058f 100644
|
||||||
|
--- a/jb/project/hotspot-cmake/CMakeLists.txt
|
||||||
|
+++ b/jb/project/hotspot-cmake/CMakeLists.txt
|
||||||
|
@@ -1663,6 +1663,7 @@ set(SOURCE_FILES
|
||||||
|
../../../src/hotspot/share/prims/jvmtiGetLoadedClasses.hpp
|
||||||
|
../../../src/hotspot/share/prims/jvmtiAgentThread.hpp
|
||||||
|
../../../src/hotspot/share/prims/jvmtiCodeBlobEvents.cpp
|
||||||
|
+../../../src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
../../../src/hotspot/share/prims/stackwalk.cpp
|
||||||
|
../../../src/hotspot/share/prims/privilegedStack.hpp
|
||||||
|
../../../src/hotspot/share/prims/jvmtiUtil.hpp
|
||||||
|
@@ -1684,6 +1685,7 @@ set(SOURCE_FILES
|
||||||
|
../../../src/hotspot/share/prims/stackwalk.hpp
|
||||||
|
../../../src/hotspot/share/prims/privilegedStack.cpp
|
||||||
|
../../../src/hotspot/share/prims/jvmtiCodeBlobEvents.hpp
|
||||||
|
+../../../src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
../../../src/hotspot/share/prims/jvmtiUtil.cpp
|
||||||
|
../../../src/hotspot/share/prims/jvmtiEnvBase.cpp
|
||||||
|
../../../src/hotspot/share/prims/methodHandles.cpp
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
From 5e7a1218684556596677f39ae01b2ec13ff68a19 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Mon, 19 Oct 2020 20:00:04 +0200
|
||||||
|
Subject: [PATCH 13/28] Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
|
||||||
|
|
||||||
|
---
|
||||||
|
make/autoconf/version-numbers | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/make/autoconf/version-numbers b/make/autoconf/version-numbers
|
||||||
|
index b9440902d34..c487ac6f047 100644
|
||||||
|
--- a/make/autoconf/version-numbers
|
||||||
|
+++ b/make/autoconf/version-numbers
|
||||||
|
@@ -44,7 +44,7 @@ PRODUCT_NAME=OpenJDK
|
||||||
|
PRODUCT_SUFFIX="Runtime Environment"
|
||||||
|
JDK_RC_PLATFORM_NAME=Platform
|
||||||
|
COMPANY_NAME=N/A
|
||||||
|
-HOTSPOT_VM_DISTRO="OpenJDK"
|
||||||
|
+HOTSPOT_VM_DISTRO="Dynamic Code Evolution"
|
||||||
|
VENDOR_URL=https://openjdk.java.net/
|
||||||
|
VENDOR_URL_BUG=https://bugreport.java.com/bugreport/
|
||||||
|
VENDOR_URL_VM_BUG=https://bugreport.java.com/bugreport/crash.jsp
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
From c2a4abf7d01ecd7bd262e824338d6235a584086b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sun, 11 Oct 2020 10:43:28 +0200
|
||||||
|
Subject: [PATCH 14/28] Fix G1 nmethod registration
|
||||||
|
|
||||||
|
---
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.cpp | 19 ++++++++++++++++---
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.hpp | 3 ++-
|
||||||
|
2 files changed, 18 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index 5be9bb74305..f4bde7504c8 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -217,7 +217,14 @@ void VM_EnhancedRedefineClasses::mark_as_scavengable(nmethod* nm) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-void VM_EnhancedRedefineClasses::mark_as_scavengable_g1(nmethod* nm) {
|
||||||
|
+void VM_EnhancedRedefineClasses::unregister_nmethod_g1(nmethod* nm) {
|
||||||
|
+ // It should work not only for G1 but also for another GCs, but this way is safer now
|
||||||
|
+ if (!nm->is_zombie() && !nm->is_unloaded()) {
|
||||||
|
+ Universe::heap()->unregister_nmethod(nm);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void VM_EnhancedRedefineClasses::register_nmethod_g1(nmethod* nm) {
|
||||||
|
// It should work not only for G1 but also for another GCs, but this way is safer now
|
||||||
|
if (!nm->is_zombie() && !nm->is_unloaded()) {
|
||||||
|
Universe::heap()->register_nmethod(nm);
|
||||||
|
@@ -520,8 +527,9 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||||
|
// For now, mark all nmethod's as scavengable that are not scavengable already
|
||||||
|
if (ScavengeRootsInCode) {
|
||||||
|
if (UseG1GC) {
|
||||||
|
- // this should work also for other GCs
|
||||||
|
- CodeCache::nmethods_do(mark_as_scavengable_g1);
|
||||||
|
+ // G1 holds references to nmethods in regions based on oops values. Since oops in nmethod can be changed in ChangePointers* closures
|
||||||
|
+ // we unregister nmethods from G1 heap, then closures are processed (oops are changed) and finally we register nmethod to G1 again
|
||||||
|
+ CodeCache::nmethods_do(unregister_nmethod_g1);
|
||||||
|
} else {
|
||||||
|
CodeCache::nmethods_do(mark_as_scavengable);
|
||||||
|
}
|
||||||
|
@@ -544,6 +552,11 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||||
|
|
||||||
|
Universe::root_oops_do(&oopClosureNoBarrier);
|
||||||
|
|
||||||
|
+ if (UseG1GC) {
|
||||||
|
+ // this should work also for other GCs
|
||||||
|
+ CodeCache::nmethods_do(register_nmethod_g1);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
}
|
||||||
|
log_trace(redefine, class, obsolete, metadata)("After updating instances");
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
index 9755944d70b..4c0412d343d 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
@@ -116,7 +116,8 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
|
||||||
|
|
||||||
|
void rollback();
|
||||||
|
static void mark_as_scavengable(nmethod* nm);
|
||||||
|
- static void mark_as_scavengable_g1(nmethod* nm);
|
||||||
|
+ static void unregister_nmethod_g1(nmethod* nm);
|
||||||
|
+ static void register_nmethod_g1(nmethod* nm);
|
||||||
|
static void unpatch_bytecode(Method* method);
|
||||||
|
static void fix_invoke_method(Method* method);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
From f0b7253294f14a64a5a4d0ef825e5377da03efa5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Thu, 22 Oct 2020 20:15:20 +0200
|
||||||
|
Subject: [PATCH 15/28] Initialize method's _new_version/_old_version to NULL
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/oops/method.cpp | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
|
||||||
|
index 031f255e632..a9556ecf0c4 100644
|
||||||
|
--- a/src/hotspot/share/oops/method.cpp
|
||||||
|
+++ b/src/hotspot/share/oops/method.cpp
|
||||||
|
@@ -83,7 +83,8 @@ Method* Method::allocate(ClassLoaderData* loader_data,
|
||||||
|
return new (loader_data, size, MetaspaceObj::MethodType, THREAD) Method(cm, access_flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
-Method::Method(ConstMethod* xconst, AccessFlags access_flags) {
|
||||||
|
+Method::Method(ConstMethod* xconst, AccessFlags access_flags) : _new_version(NULL),
|
||||||
|
+ _old_version(NULL) {
|
||||||
|
NoSafepointVerifier no_safepoint;
|
||||||
|
set_constMethod(xconst);
|
||||||
|
set_access_flags(access_flags);
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
From 0550e70425054a77e32fb96770d416b077720857 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Fri, 23 Oct 2020 10:20:26 +0200
|
||||||
|
Subject: [PATCH 16/28] Clear dcevm code separation
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/classfile/systemDictionary.cpp | 4 ++--
|
||||||
|
src/hotspot/share/gc/serial/genMarkSweep.cpp | 8 +++++---
|
||||||
|
src/hotspot/share/interpreter/linkResolver.cpp | 14 ++++++++++----
|
||||||
|
.../instrumentation/jfrEventClassTransformer.cpp | 2 +-
|
||||||
|
src/hotspot/share/oops/instanceKlass.cpp | 10 ++++++----
|
||||||
|
src/hotspot/share/oops/method.cpp | 2 +-
|
||||||
|
src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp | 2 +-
|
||||||
|
src/hotspot/share/runtime/reflection.cpp | 2 +-
|
||||||
|
8 files changed, 27 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
index a6a03d3c0e9..9e0f4dd3c96 100644
|
||||||
|
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
@@ -1152,7 +1152,7 @@ InstanceKlass* SystemDictionary::resolve_from_stream(Symbol* class_name,
|
||||||
|
MutexLocker mu(SystemDictionary_lock, THREAD);
|
||||||
|
|
||||||
|
Klass* check = find_class(h_name, k->class_loader_data());
|
||||||
|
- assert((check == k && !k->is_redefining()) || (k->is_redefining() && check == k->old_version()), "should be present in the dictionary");
|
||||||
|
+ assert(check == k && !k->is_redefining() || k->is_redefining() && check == k->old_version(), "should be present in the dictionary");
|
||||||
|
} );
|
||||||
|
|
||||||
|
return k;
|
||||||
|
@@ -2153,7 +2153,7 @@ void SystemDictionary::check_constraints(unsigned int d_hash,
|
||||||
|
// also hold array classes.
|
||||||
|
|
||||||
|
assert(check->is_instance_klass(), "noninstance in systemdictionary");
|
||||||
|
- if ((defining == true) || ((k != check) && k->old_version() != check)) {
|
||||||
|
+ if ((defining == true) || (k != check && (!AllowEnhancedClassRedefinition || k->old_version() != check))) {
|
||||||
|
throwException = true;
|
||||||
|
ss.print("loader %s", loader_data->loader_name_and_id());
|
||||||
|
ss.print(" attempted duplicate %s definition for %s. (%s)",
|
||||||
|
diff --git a/src/hotspot/share/gc/serial/genMarkSweep.cpp b/src/hotspot/share/gc/serial/genMarkSweep.cpp
|
||||||
|
index b18682f9a12..590b5389b4d 100644
|
||||||
|
--- a/src/hotspot/share/gc/serial/genMarkSweep.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/serial/genMarkSweep.cpp
|
||||||
|
@@ -343,7 +343,9 @@ void GenMarkSweep::mark_sweep_phase4() {
|
||||||
|
|
||||||
|
GenCompactClosure blk;
|
||||||
|
gch->generation_iterate(&blk, true);
|
||||||
|
- DcevmSharedGC::copy_rescued_objects_back(MarkSweep::_rescued_oops, true);
|
||||||
|
- DcevmSharedGC::clear_rescued_objects_resource(MarkSweep::_rescued_oops);
|
||||||
|
- MarkSweep::_rescued_oops = NULL;
|
||||||
|
+ if (AllowEnhancedClassRedefinition) {
|
||||||
|
+ DcevmSharedGC::copy_rescued_objects_back(MarkSweep::_rescued_oops, true);
|
||||||
|
+ DcevmSharedGC::clear_rescued_objects_resource(MarkSweep::_rescued_oops);
|
||||||
|
+ MarkSweep::_rescued_oops = NULL;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/src/hotspot/share/interpreter/linkResolver.cpp b/src/hotspot/share/interpreter/linkResolver.cpp
|
||||||
|
index 9dc184d02f5..bff1c3627b0 100644
|
||||||
|
--- a/src/hotspot/share/interpreter/linkResolver.cpp
|
||||||
|
+++ b/src/hotspot/share/interpreter/linkResolver.cpp
|
||||||
|
@@ -295,8 +295,13 @@ void LinkResolver::check_klass_accessability(Klass* ref_klass, Klass* sel_klass,
|
||||||
|
return; // no relevant check to do
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- Reflection::VerifyClassAccessResults vca_result =
|
||||||
|
- Reflection::verify_class_access(ref_klass->newest_version(), InstanceKlass::cast(base_klass->newest_version()), true);
|
||||||
|
+ Klass* refKlassNewest = ref_klass;
|
||||||
|
+ Klass* baseKlassNewest = base_klass;
|
||||||
|
+ if (AllowEnhancedClassRedefinition) {
|
||||||
|
+ refKlassNewest = ref_klass->newest_version();
|
||||||
|
+ baseKlassNewest = base_klass->newest_version();
|
||||||
|
+ }
|
||||||
|
+ Reflection::VerifyClassAccessResults vca_result = Reflection::verify_class_access(refKlassNewest, InstanceKlass::cast(baseKlassNewest), true);
|
||||||
|
if (vca_result != Reflection::ACCESS_OK) {
|
||||||
|
ResourceMark rm(THREAD);
|
||||||
|
char* msg = Reflection::verify_class_access_msg(ref_klass,
|
||||||
|
@@ -572,7 +577,8 @@ void LinkResolver::check_method_accessability(Klass* ref_klass,
|
||||||
|
// We'll check for the method name first, as that's most likely
|
||||||
|
// to be false (so we'll short-circuit out of these tests).
|
||||||
|
if (sel_method->name() == vmSymbols::clone_name() &&
|
||||||
|
- sel_klass->newest_version() == SystemDictionary::Object_klass()->newest_version() &&
|
||||||
|
+ ( !AllowEnhancedClassRedefinition && sel_klass == SystemDictionary::Object_klass() ||
|
||||||
|
+ AllowEnhancedClassRedefinition && sel_klass->newest_version() == SystemDictionary::Object_klass()->newest_version()) &&
|
||||||
|
resolved_klass->is_array_klass()) {
|
||||||
|
// We need to change "protected" to "public".
|
||||||
|
assert(flags.is_protected(), "clone not protected?");
|
||||||
|
@@ -997,7 +1003,7 @@ void LinkResolver::resolve_field(fieldDescriptor& fd,
|
||||||
|
ResourceMark rm(THREAD);
|
||||||
|
stringStream ss;
|
||||||
|
|
||||||
|
- if (sel_klass != current_klass && sel_klass != current_klass->active_version()) {
|
||||||
|
+ if (sel_klass != current_klass && (!AllowEnhancedClassRedefinition || sel_klass != current_klass->active_version())) {
|
||||||
|
ss.print("Update to %s final field %s.%s attempted from a different class (%s) than the field's declaring class",
|
||||||
|
is_static ? "static" : "non-static", resolved_klass->external_name(), fd.name()->as_C_string(),
|
||||||
|
current_klass->external_name());
|
||||||
|
diff --git a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||||
|
index 61a406377ee..da9df7a21a2 100644
|
||||||
|
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||||
|
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||||
|
@@ -1471,7 +1471,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
|
||||||
|
NULL, // host klass
|
||||||
|
NULL, // cp_patches
|
||||||
|
ClassFileParser::INTERNAL, // internal visibility
|
||||||
|
- false,
|
||||||
|
+ false,
|
||||||
|
THREAD);
|
||||||
|
if (HAS_PENDING_EXCEPTION) {
|
||||||
|
log_pending_exception(PENDING_EXCEPTION);
|
||||||
|
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
index 7eb1b01c785..710e0ddc930 100644
|
||||||
|
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
@@ -178,7 +178,9 @@ bool InstanceKlass::has_nest_member(InstanceKlass* k, TRAPS) const {
|
||||||
|
}
|
||||||
|
|
||||||
|
Klass* k2 = _constants->klass_at(cp_index, CHECK_false);
|
||||||
|
- k2 = k2->newest_version();
|
||||||
|
+ if (AllowEnhancedClassRedefinition) {
|
||||||
|
+ k2 = k2->newest_version();
|
||||||
|
+ }
|
||||||
|
if (k2 == k) {
|
||||||
|
log_trace(class, nestmates)("- class is listed as a nest member");
|
||||||
|
return true;
|
||||||
|
@@ -837,7 +839,7 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
|
||||||
|
#endif
|
||||||
|
set_init_state(linked);
|
||||||
|
// (DCEVM) Must check for old version in order to prevent infinite loops.
|
||||||
|
- if (JvmtiExport::should_post_class_prepare() && old_version() == NULL /* JVMTI deadlock otherwise */) {
|
||||||
|
+ if (JvmtiExport::should_post_class_prepare() && (!AllowEnhancedClassRedefinition || old_version() == NULL) /* JVMTI deadlock otherwise */) {
|
||||||
|
Thread *thread = THREAD;
|
||||||
|
assert(thread->is_Java_thread(), "thread->is_Java_thread()");
|
||||||
|
JvmtiExport::post_class_prepare((JavaThread *) thread, this);
|
||||||
|
@@ -919,7 +921,7 @@ void InstanceKlass::initialize_impl(TRAPS) {
|
||||||
|
// that aren't expected to throw. This would wreak havoc. See 6320309.
|
||||||
|
// (DCEVM) Wait also for the old class version to be fully initialized.
|
||||||
|
while((is_being_initialized() && !is_reentrant_initialization(self))
|
||||||
|
- || (old_version() != NULL && InstanceKlass::cast(old_version())->is_being_initialized())) {
|
||||||
|
+ || (AllowEnhancedClassRedefinition && old_version() != NULL && InstanceKlass::cast(old_version())->is_being_initialized())) {
|
||||||
|
wait = true;
|
||||||
|
ol.waitUninterruptibly(CHECK);
|
||||||
|
}
|
||||||
|
@@ -3617,7 +3619,7 @@ void InstanceKlass::verify_on(outputStream* st) {
|
||||||
|
|
||||||
|
guarantee(sib->is_klass(), "should be klass");
|
||||||
|
// TODO: (DCEVM) explain
|
||||||
|
- guarantee(sib->super() == super || super->newest_version() == SystemDictionary::Object_klass(), "siblings should have same superklass");
|
||||||
|
+ guarantee(sib->super() == super || AllowEnhancedClassRedefinition && super->newest_version() == SystemDictionary::Object_klass(), "siblings should have same superklass");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify implementor fields requires the Compile_lock, but this is sometimes
|
||||||
|
diff --git a/src/hotspot/share/oops/method.cpp b/src/hotspot/share/oops/method.cpp
|
||||||
|
index a9556ecf0c4..6c7edaca67e 100644
|
||||||
|
--- a/src/hotspot/share/oops/method.cpp
|
||||||
|
+++ b/src/hotspot/share/oops/method.cpp
|
||||||
|
@@ -2100,7 +2100,7 @@ void Method::ensure_jmethod_ids(ClassLoaderData* loader_data, int capacity) {
|
||||||
|
// Add a method id to the jmethod_ids
|
||||||
|
jmethodID Method::make_jmethod_id(ClassLoaderData* loader_data, Method* m) {
|
||||||
|
// FIXME: (DCEVM) ???
|
||||||
|
- if (m != m->newest_version()) {
|
||||||
|
+ if (AllowEnhancedClassRedefinition && m != m->newest_version()) {
|
||||||
|
m = m->newest_version();
|
||||||
|
}
|
||||||
|
ClassLoaderData* cld = loader_data;
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
|
||||||
|
index 60604c645ff..325bffb7ad0 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
|
||||||
|
@@ -51,7 +51,7 @@ public:
|
||||||
|
// the new version (SystemDictionary stores only new versions). But the LoadedClassesClosure's functionality was
|
||||||
|
// changed in java8 where jvmtiLoadedClasses collects all classes from all classloaders, therefore we
|
||||||
|
// must use new versions only.
|
||||||
|
- if (k->new_version()==NULL) {
|
||||||
|
+ if (AllowEnhancedClassRedefinition && k->new_version()==NULL) {
|
||||||
|
_classStack.push((jclass) _env->jni_reference(Handle(_cur_thread, k->java_mirror())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/hotspot/share/runtime/reflection.cpp b/src/hotspot/share/runtime/reflection.cpp
|
||||||
|
index ed789b0bc2b..06f60855655 100644
|
||||||
|
--- a/src/hotspot/share/runtime/reflection.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/reflection.cpp
|
||||||
|
@@ -660,7 +660,7 @@ bool Reflection::verify_member_access(const Klass* current_class,
|
||||||
|
TRAPS) {
|
||||||
|
|
||||||
|
// (DCEVM) Decide accessibility based on active version
|
||||||
|
- if (current_class != NULL) {
|
||||||
|
+ if (AllowEnhancedClassRedefinition && current_class != NULL) {
|
||||||
|
current_class = current_class->active_version();
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,160 @@
|
|||||||
|
From fde9f15ed4fdb5139b6b81238d0a667327b552bb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Fri, 23 Oct 2020 11:07:40 +0200
|
||||||
|
Subject: [PATCH 17/28] Fix metadataOnStack bug
|
||||||
|
|
||||||
|
---
|
||||||
|
.../share/classfile/classLoaderData.cpp | 7 +-
|
||||||
|
.../share/classfile/metadataOnStackMark.cpp | 67 ++++++++++---------
|
||||||
|
.../share/classfile/metadataOnStackMark.hpp | 3 +-
|
||||||
|
.../share/prims/jvmtiRedefineClasses.cpp | 2 +-
|
||||||
|
4 files changed, 41 insertions(+), 38 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
index 1bc67adf5a7..bba5ce0511f 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
@@ -1398,13 +1398,10 @@ bool ClassLoaderDataGraph::do_unloading(bool clean_previous_versions) {
|
||||||
|
// Klassesoto delete.
|
||||||
|
|
||||||
|
// FIXME: dcevm - block asserts in MetadataOnStackMark
|
||||||
|
- bool walk_all_metadata = false;
|
||||||
|
- if (!AllowEnhancedClassRedefinition) {
|
||||||
|
- walk_all_metadata = clean_previous_versions &&
|
||||||
|
+ bool walk_all_metadata = clean_previous_versions &&
|
||||||
|
JvmtiExport::has_redefined_a_class() &&
|
||||||
|
InstanceKlass::has_previous_versions_and_reset();
|
||||||
|
- MetadataOnStackMark md_on_stack(walk_all_metadata);
|
||||||
|
- }
|
||||||
|
+ MetadataOnStackMark md_on_stack(walk_all_metadata, AllowEnhancedClassRedefinition);
|
||||||
|
|
||||||
|
// Save previous _unloading pointer for CMS which may add to unloading list before
|
||||||
|
// purging and we don't want to rewalk the previously unloaded class loader data.
|
||||||
|
diff --git a/src/hotspot/share/classfile/metadataOnStackMark.cpp b/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||||
|
index 3a62c789702..9d7bdbde74b 100644
|
||||||
|
--- a/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||||
|
@@ -46,23 +46,25 @@ NOT_PRODUCT(bool MetadataOnStackMark::_is_active = false;)
|
||||||
|
// it. Class unloading only deletes in-error class files, methods created by
|
||||||
|
// the relocator and dummy constant pools. None of these appear anywhere except
|
||||||
|
// in metadata Handles.
|
||||||
|
-MetadataOnStackMark::MetadataOnStackMark(bool redefinition_walk) {
|
||||||
|
+MetadataOnStackMark::MetadataOnStackMark(bool redefinition_walk, bool ignore) : _ignore(ignore) {
|
||||||
|
assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
|
||||||
|
assert(_used_buffers == NULL, "sanity check");
|
||||||
|
assert(!_is_active, "MetadataOnStackMarks do not nest");
|
||||||
|
NOT_PRODUCT(_is_active = true;)
|
||||||
|
|
||||||
|
- Threads::metadata_handles_do(Metadata::mark_on_stack);
|
||||||
|
+ if (!ignore) {
|
||||||
|
+ Threads::metadata_handles_do(Metadata::mark_on_stack);
|
||||||
|
|
||||||
|
- if (redefinition_walk) {
|
||||||
|
- Threads::metadata_do(Metadata::mark_on_stack);
|
||||||
|
- CodeCache::metadata_do(Metadata::mark_on_stack);
|
||||||
|
- CompileBroker::mark_on_stack();
|
||||||
|
- JvmtiCurrentBreakpoints::metadata_do(Metadata::mark_on_stack);
|
||||||
|
- ThreadService::metadata_do(Metadata::mark_on_stack);
|
||||||
|
+ if (redefinition_walk) {
|
||||||
|
+ Threads::metadata_do(Metadata::mark_on_stack);
|
||||||
|
+ CodeCache::metadata_do(Metadata::mark_on_stack);
|
||||||
|
+ CompileBroker::mark_on_stack();
|
||||||
|
+ JvmtiCurrentBreakpoints::metadata_do(Metadata::mark_on_stack);
|
||||||
|
+ ThreadService::metadata_do(Metadata::mark_on_stack);
|
||||||
|
#if INCLUDE_JVMCI
|
||||||
|
- JVMCIRuntime::metadata_do(Metadata::mark_on_stack);
|
||||||
|
+ JVMCIRuntime::metadata_do(Metadata::mark_on_stack);
|
||||||
|
#endif
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -71,32 +73,35 @@ MetadataOnStackMark::~MetadataOnStackMark() {
|
||||||
|
// Unmark everything that was marked. Can't do the same walk because
|
||||||
|
// redefine classes messes up the code cache so the set of methods
|
||||||
|
// might not be the same.
|
||||||
|
- retire_current_buffer();
|
||||||
|
-
|
||||||
|
- MetadataOnStackBuffer* buffer = _used_buffers;
|
||||||
|
- while (buffer != NULL) {
|
||||||
|
- // Clear on stack state for all metadata.
|
||||||
|
- size_t size = buffer->size();
|
||||||
|
- for (size_t i = 0; i < size; i++) {
|
||||||
|
- Metadata* md = buffer->at(i);
|
||||||
|
- md->set_on_stack(false);
|
||||||
|
+ if (!_ignore)
|
||||||
|
+ {
|
||||||
|
+ retire_current_buffer();
|
||||||
|
+
|
||||||
|
+ MetadataOnStackBuffer* buffer = _used_buffers;
|
||||||
|
+ while (buffer != NULL) {
|
||||||
|
+ // Clear on stack state for all metadata.
|
||||||
|
+ size_t size = buffer->size();
|
||||||
|
+ for (size_t i = 0; i < size; i++) {
|
||||||
|
+ Metadata* md = buffer->at(i);
|
||||||
|
+ md->set_on_stack(false);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ MetadataOnStackBuffer* next = buffer->next_used();
|
||||||
|
+
|
||||||
|
+ // Move the buffer to the free list.
|
||||||
|
+ buffer->clear();
|
||||||
|
+ buffer->set_next_used(NULL);
|
||||||
|
+ buffer->set_next_free(_free_buffers);
|
||||||
|
+ _free_buffers = buffer;
|
||||||
|
+
|
||||||
|
+ // Step to next used buffer.
|
||||||
|
+ buffer = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
- MetadataOnStackBuffer* next = buffer->next_used();
|
||||||
|
-
|
||||||
|
- // Move the buffer to the free list.
|
||||||
|
- buffer->clear();
|
||||||
|
- buffer->set_next_used(NULL);
|
||||||
|
- buffer->set_next_free(_free_buffers);
|
||||||
|
- _free_buffers = buffer;
|
||||||
|
+ _used_buffers = NULL;
|
||||||
|
|
||||||
|
- // Step to next used buffer.
|
||||||
|
- buffer = next;
|
||||||
|
+ NOT_PRODUCT(_is_active = false;)
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- _used_buffers = NULL;
|
||||||
|
-
|
||||||
|
- NOT_PRODUCT(_is_active = false;)
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetadataOnStackMark::retire_buffer(MetadataOnStackBuffer* buffer) {
|
||||||
|
diff --git a/src/hotspot/share/classfile/metadataOnStackMark.hpp b/src/hotspot/share/classfile/metadataOnStackMark.hpp
|
||||||
|
index 8da4ac6f92b..6d327ab98f2 100644
|
||||||
|
--- a/src/hotspot/share/classfile/metadataOnStackMark.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/metadataOnStackMark.hpp
|
||||||
|
@@ -47,8 +47,9 @@ class MetadataOnStackMark : public StackObj {
|
||||||
|
static MetadataOnStackBuffer* allocate_buffer();
|
||||||
|
static void retire_buffer(MetadataOnStackBuffer* buffer);
|
||||||
|
|
||||||
|
+ bool _ignore;
|
||||||
|
public:
|
||||||
|
- MetadataOnStackMark(bool redefinition_walk);
|
||||||
|
+ MetadataOnStackMark(bool redefinition_walk, bool ignore);
|
||||||
|
~MetadataOnStackMark();
|
||||||
|
|
||||||
|
static void record(Metadata* m);
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
|
||||||
|
index fb81189d9c2..18bc7f4eea4 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
|
||||||
|
@@ -199,7 +199,7 @@ void VM_RedefineClasses::doit() {
|
||||||
|
|
||||||
|
// Mark methods seen on stack and everywhere else so old methods are not
|
||||||
|
// cleaned up if they're on the stack.
|
||||||
|
- MetadataOnStackMark md_on_stack(true);
|
||||||
|
+ MetadataOnStackMark md_on_stack(true, false);
|
||||||
|
HandleMark hm(thread); // make sure any handles created are deleted
|
||||||
|
// before the stack walk again.
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
From 5b5f620932894e807956b45653d153d001be9fb1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sun, 1 Nov 2020 21:19:00 +0100
|
||||||
|
Subject: [PATCH 18/28] Ignore MetadataOnStackMark if redefining_gc_run
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/classfile/classLoaderData.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
index bba5ce0511f..8b2deb70e1b 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
@@ -1401,7 +1401,7 @@ bool ClassLoaderDataGraph::do_unloading(bool clean_previous_versions) {
|
||||||
|
bool walk_all_metadata = clean_previous_versions &&
|
||||||
|
JvmtiExport::has_redefined_a_class() &&
|
||||||
|
InstanceKlass::has_previous_versions_and_reset();
|
||||||
|
- MetadataOnStackMark md_on_stack(walk_all_metadata, AllowEnhancedClassRedefinition);
|
||||||
|
+ MetadataOnStackMark md_on_stack(walk_all_metadata, Universe::is_redefining_gc_run());
|
||||||
|
|
||||||
|
// Save previous _unloading pointer for CMS which may add to unloading list before
|
||||||
|
// purging and we don't want to rewalk the previously unloaded class loader data.
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
From 29ac3233d58d9a1a30160ae13a895ff70e504022 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Wed, 11 Nov 2020 18:45:15 +0100
|
||||||
|
Subject: [PATCH 19/28] Fix LoadedClassesClosure - fixes problems with remote
|
||||||
|
debugging
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
|
||||||
|
index 325bffb7ad0..30752e37f1c 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiGetLoadedClasses.cpp
|
||||||
|
@@ -51,7 +51,7 @@ public:
|
||||||
|
// the new version (SystemDictionary stores only new versions). But the LoadedClassesClosure's functionality was
|
||||||
|
// changed in java8 where jvmtiLoadedClasses collects all classes from all classloaders, therefore we
|
||||||
|
// must use new versions only.
|
||||||
|
- if (AllowEnhancedClassRedefinition && k->new_version()==NULL) {
|
||||||
|
+ if (!AllowEnhancedClassRedefinition || k->new_version()==NULL) {
|
||||||
|
_classStack.push((jclass) _env->jni_reference(Handle(_cur_thread, k->java_mirror())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
From 99e8f8d420dd09d6fb7f035d4baf7ef4816177e8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
|
||||||
|
Date: Fri, 5 Feb 2021 23:30:49 +0100
|
||||||
|
Subject: [PATCH 20/28] Disable AllowEnhancedClassRedefinition in flight
|
||||||
|
recorder
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/runtime/arguments.cpp | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
index 5053ad7ee61..c5635bb8537 100644
|
||||||
|
--- a/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
@@ -3962,6 +3962,13 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
||||||
|
// Set object alignment values.
|
||||||
|
set_object_alignment();
|
||||||
|
|
||||||
|
+ if (FlightRecorder) {
|
||||||
|
+ if (AllowEnhancedClassRedefinition) {
|
||||||
|
+ warning("EnhancedClassRedefinition was disabled, it is not allowed in FlightRecorder.");
|
||||||
|
+ AllowEnhancedClassRedefinition = false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
setup_hotswap_agent();
|
||||||
|
|
||||||
|
#if !INCLUDE_CDS
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
From 1bb55ff9f91733e45dd6f87eb4201a989b3338e3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
|
||||||
|
Date: Fri, 12 Feb 2021 12:33:11 +0100
|
||||||
|
Subject: [PATCH 21/28] JBR-3106 Check InstanceKlass::has_nestmate_access_to
|
||||||
|
with active classes
|
||||||
|
|
||||||
|
Dcevm can leave old host in nested class if nested class is not
|
||||||
|
redefined together with host class
|
||||||
|
---
|
||||||
|
src/hotspot/share/oops/instanceKlass.cpp | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
index 710e0ddc930..24eb3ed68a6 100644
|
||||||
|
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||||
|
@@ -327,11 +327,21 @@ bool InstanceKlass::has_nestmate_access_to(InstanceKlass* k, TRAPS) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // (DCEVM) cur_host can be old, decide accessibility based on active version
|
||||||
|
+ if (AllowEnhancedClassRedefinition) {
|
||||||
|
+ cur_host = InstanceKlass::cast(cur_host->active_version());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
Klass* k_nest_host = k->nest_host(icce, CHECK_false);
|
||||||
|
if (k_nest_host == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // (DCEVM) k_nest_host can be old, decide accessibility based on active version
|
||||||
|
+ if (AllowEnhancedClassRedefinition) {
|
||||||
|
+ k_nest_host = InstanceKlass::cast(k_nest_host->active_version());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
bool access = (cur_host == k_nest_host);
|
||||||
|
|
||||||
|
if (log_is_enabled(Trace, class, nestmates)) {
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
From 52427060aba227d09dce4bd14410e1e626d64e46 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sun, 7 Feb 2021 12:08:58 +0100
|
||||||
|
Subject: [PATCH 22/28] JBR-3110 Fix assert in MetadataOnStackMark
|
||||||
|
|
||||||
|
Fixed fastdebug tests crashes in redefine gc run
|
||||||
|
---
|
||||||
|
src/hotspot/share/classfile/metadataOnStackMark.cpp | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/metadataOnStackMark.cpp b/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||||
|
index 9d7bdbde74b..66049f11629 100644
|
||||||
|
--- a/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||||
|
@@ -49,10 +49,11 @@ NOT_PRODUCT(bool MetadataOnStackMark::_is_active = false;)
|
||||||
|
MetadataOnStackMark::MetadataOnStackMark(bool redefinition_walk, bool ignore) : _ignore(ignore) {
|
||||||
|
assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
|
||||||
|
assert(_used_buffers == NULL, "sanity check");
|
||||||
|
- assert(!_is_active, "MetadataOnStackMarks do not nest");
|
||||||
|
- NOT_PRODUCT(_is_active = true;)
|
||||||
|
|
||||||
|
if (!ignore) {
|
||||||
|
+ assert(!_is_active, "MetadataOnStackMarks do not nest");
|
||||||
|
+ NOT_PRODUCT(_is_active = true;)
|
||||||
|
+
|
||||||
|
Threads::metadata_handles_do(Metadata::mark_on_stack);
|
||||||
|
|
||||||
|
if (redefinition_walk) {
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
78
jb/project/tools/patches/dcevm/0023-Code-cleanup.patch
Normal file
78
jb/project/tools/patches/dcevm/0023-Code-cleanup.patch
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
From 93cea8d61ef395a1ef9e308b0d3a8f9409b108d0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Fri, 12 Feb 2021 11:27:39 +0100
|
||||||
|
Subject: [PATCH 23/28] Code cleanup
|
||||||
|
|
||||||
|
- Rename confusing method name old_if_redefined to old_if_redefining
|
||||||
|
- Remove unused is_redefining_gc_run
|
||||||
|
---
|
||||||
|
src/hotspot/share/classfile/dictionary.cpp | 6 +++---
|
||||||
|
src/hotspot/share/classfile/dictionary.hpp | 2 +-
|
||||||
|
src/hotspot/share/memory/universe.hpp | 5 -----
|
||||||
|
3 files changed, 4 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/dictionary.cpp b/src/hotspot/share/classfile/dictionary.cpp
|
||||||
|
index dda5188c370..4e361d439f4 100644
|
||||||
|
--- a/src/hotspot/share/classfile/dictionary.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/dictionary.cpp
|
||||||
|
@@ -381,7 +381,7 @@ InstanceKlass* Dictionary::find(unsigned int hash, Symbol* name,
|
||||||
|
int index = hash_to_index(hash);
|
||||||
|
DictionaryEntry* entry = get_entry(index, hash, name);
|
||||||
|
if (entry != NULL && entry->is_valid_protection_domain(protection_domain)) {
|
||||||
|
- return old_if_redefined(entry->instance_klass());
|
||||||
|
+ return old_if_redefining(entry->instance_klass());
|
||||||
|
} else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@@ -394,7 +394,7 @@ InstanceKlass* Dictionary::find_class(int index, unsigned int hash,
|
||||||
|
assert (index == index_for(name), "incorrect index?");
|
||||||
|
|
||||||
|
DictionaryEntry* entry = get_entry(index, hash, name);
|
||||||
|
- return old_if_redefined((entry != NULL) ? entry->instance_klass() : NULL);
|
||||||
|
+ return old_if_redefining((entry != NULL) ? entry->instance_klass() : NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -406,7 +406,7 @@ InstanceKlass* Dictionary::find_shared_class(int index, unsigned int hash,
|
||||||
|
assert (index == index_for(name), "incorrect index?");
|
||||||
|
|
||||||
|
DictionaryEntry* entry = get_entry(index, hash, name);
|
||||||
|
- return old_if_redefined((entry != NULL) ? entry->instance_klass() : NULL);
|
||||||
|
+ return old_if_redefining((entry != NULL) ? entry->instance_klass() : NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/dictionary.hpp b/src/hotspot/share/classfile/dictionary.hpp
|
||||||
|
index 5eaa741d500..f6e08e7bfd5 100644
|
||||||
|
--- a/src/hotspot/share/classfile/dictionary.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/dictionary.hpp
|
||||||
|
@@ -120,7 +120,7 @@ public:
|
||||||
|
void rollback_redefinition();
|
||||||
|
|
||||||
|
// (DCEVM) return old class if redefining in AllowEnhancedClassRedefinition, otherwise return "k"
|
||||||
|
- static InstanceKlass* old_if_redefined(InstanceKlass* k) {
|
||||||
|
+ static InstanceKlass* old_if_redefining(InstanceKlass* k) {
|
||||||
|
return (k != NULL && k->is_redefining()) ? ((InstanceKlass* )k->old_version()) : k;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
diff --git a/src/hotspot/share/memory/universe.hpp b/src/hotspot/share/memory/universe.hpp
|
||||||
|
index b32db16b9cf..742dada0e8f 100644
|
||||||
|
--- a/src/hotspot/share/memory/universe.hpp
|
||||||
|
+++ b/src/hotspot/share/memory/universe.hpp
|
||||||
|
@@ -52,13 +52,8 @@ class LatestMethodCache : public CHeapObj<mtClass> {
|
||||||
|
Klass* _klass;
|
||||||
|
int _method_idnum;
|
||||||
|
|
||||||
|
- static bool _is_redefining_gc_run;
|
||||||
|
-
|
||||||
|
public:
|
||||||
|
|
||||||
|
- static bool is_redefining_gc_run() { return _is_redefining_gc_run; }
|
||||||
|
- static void set_redefining_gc_run(bool b) { _is_redefining_gc_run = b; }
|
||||||
|
-
|
||||||
|
LatestMethodCache() { _klass = NULL; _method_idnum = -1; }
|
||||||
|
~LatestMethodCache() { _klass = NULL; _method_idnum = -1; }
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
From dcb44f0e56dbc63b90d655b694a3f7751744fe53 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sat, 13 Feb 2021 20:47:52 +0100
|
||||||
|
Subject: [PATCH 24/28] JBR-3111 Update class in all dictionaries where it was
|
||||||
|
already defined
|
||||||
|
|
||||||
|
This patch keeps compatibility with std redefinition, that does not
|
||||||
|
create a new Klass, but modifies it, then it is modified in all
|
||||||
|
dictionaries containing this class.
|
||||||
|
---
|
||||||
|
src/hotspot/share/classfile/classLoaderData.cpp | 9 +++++++++
|
||||||
|
src/hotspot/share/classfile/classLoaderData.hpp | 3 +++
|
||||||
|
src/hotspot/share/classfile/dictionary.cpp | 2 +-
|
||||||
|
src/hotspot/share/classfile/dictionary.hpp | 2 +-
|
||||||
|
src/hotspot/share/classfile/systemDictionary.cpp | 4 +++-
|
||||||
|
5 files changed, 17 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
index 8b2deb70e1b..4e06b09e7d5 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
@@ -1274,6 +1274,15 @@ void ClassLoaderDataGraph::rollback_redefinition() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+// (DCEVM) - iterate over all classes in all dictionaries
|
||||||
|
+bool ClassLoaderDataGraph::dictionary_classes_do_update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass) {
|
||||||
|
+ bool ok = false;
|
||||||
|
+ FOR_ALL_DICTIONARY(cld) {
|
||||||
|
+ ok = cld->dictionary()->update_klass(name, k, old_klass) || ok;
|
||||||
|
+ }
|
||||||
|
+ return ok;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Walks all entries in the dictionary including entries initiated by this class loader.
|
||||||
|
void ClassLoaderDataGraph::dictionary_all_entries_do(void f(InstanceKlass*, ClassLoaderData*)) {
|
||||||
|
Thread* thread = Thread::current();
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.hpp b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
index 00a84610b43..16711dca237 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
@@ -130,6 +130,9 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||||
|
// Enhanced class redefinition
|
||||||
|
static void rollback_redefinition();
|
||||||
|
|
||||||
|
+ // Enhanced class redefinition
|
||||||
|
+ static bool dictionary_classes_do_update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass);
|
||||||
|
+
|
||||||
|
// Iterate all classes and their class loaders, including initiating class loaders.
|
||||||
|
static void dictionary_all_entries_do(void f(InstanceKlass*, ClassLoaderData*));
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/dictionary.cpp b/src/hotspot/share/classfile/dictionary.cpp
|
||||||
|
index 4e361d439f4..6c072407fd9 100644
|
||||||
|
--- a/src/hotspot/share/classfile/dictionary.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/dictionary.cpp
|
||||||
|
@@ -345,7 +345,7 @@ DictionaryEntry* Dictionary::get_entry(int index, unsigned int hash,
|
||||||
|
}
|
||||||
|
|
||||||
|
// (DCEVM) replace old_class by new class in dictionary
|
||||||
|
-bool Dictionary::update_klass(unsigned int hash, Symbol* name, ClassLoaderData* loader_data, InstanceKlass* k, InstanceKlass* old_klass) {
|
||||||
|
+bool Dictionary::update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass) {
|
||||||
|
// There are several entries for the same class in the dictionary: One extra entry for each parent classloader of the classloader of the class.
|
||||||
|
bool found = false;
|
||||||
|
for (int index = 0; index < table_size(); index++) {
|
||||||
|
diff --git a/src/hotspot/share/classfile/dictionary.hpp b/src/hotspot/share/classfile/dictionary.hpp
|
||||||
|
index f6e08e7bfd5..2932cc9c320 100644
|
||||||
|
--- a/src/hotspot/share/classfile/dictionary.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/dictionary.hpp
|
||||||
|
@@ -115,7 +115,7 @@ public:
|
||||||
|
void free_entry(DictionaryEntry* entry);
|
||||||
|
|
||||||
|
// Enhanced class redefinition
|
||||||
|
- bool update_klass(unsigned int hash, Symbol* name, ClassLoaderData* loader_data, InstanceKlass* k, InstanceKlass* old_klass);
|
||||||
|
+ bool update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass);
|
||||||
|
|
||||||
|
void rollback_redefinition();
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
index 9e0f4dd3c96..789b5fb1e6d 100644
|
||||||
|
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
@@ -1606,7 +1606,9 @@ void SystemDictionary::define_instance_class(InstanceKlass* k, InstanceKlass* ol
|
||||||
|
Dictionary* dictionary = loader_data->dictionary();
|
||||||
|
unsigned int d_hash = dictionary->compute_hash(name_h);
|
||||||
|
if (is_redefining) {
|
||||||
|
- bool ok = dictionary->update_klass(d_hash, name_h, loader_data, k, old_klass);
|
||||||
|
+ // Update all dictionaries containing old_class to new_class
|
||||||
|
+ // outcome must be same as result of standard redefinition, that does not create a new Klass
|
||||||
|
+ bool ok = ClassLoaderDataGraph::dictionary_classes_do_update_klass(name_h, k, old_klass);
|
||||||
|
assert (ok, "must have found old class and updated!");
|
||||||
|
}
|
||||||
|
check_constraints(d_hash, k, class_loader_h, !is_redefining, CHECK);
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,527 @@
|
|||||||
|
From b9692c48bdbad8474251cfe72ac85e5c7ff2847e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Thu, 18 Jun 2020 18:40:11 +0200
|
||||||
|
Subject: [PATCH 25/28] JBR-3140 - support for modularized HotswapAgent
|
||||||
|
|
||||||
|
Add -XX:HotswapAgent=[disabled,fatjar.core]
|
||||||
|
---
|
||||||
|
make/launcher/Launcher-java.base.gmk | 1 -
|
||||||
|
make/launcher/Launcher-java.rmi.gmk | 2 -
|
||||||
|
make/launcher/Launcher-java.scripting.gmk | 3 +-
|
||||||
|
make/launcher/Launcher-java.security.jgss.gmk | 3 --
|
||||||
|
make/launcher/Launcher-jdk.aot.gmk | 2 -
|
||||||
|
make/launcher/Launcher-jdk.compiler.gmk | 5 +-
|
||||||
|
make/launcher/Launcher-jdk.hotspot.agent.gmk | 1 -
|
||||||
|
make/launcher/Launcher-jdk.jartool.gmk | 2 -
|
||||||
|
make/launcher/Launcher-jdk.javadoc.gmk | 3 +-
|
||||||
|
make/launcher/Launcher-jdk.jcmd.gmk | 13 +----
|
||||||
|
make/launcher/Launcher-jdk.jdeps.gmk | 3 --
|
||||||
|
make/launcher/Launcher-jdk.jdi.gmk | 1 -
|
||||||
|
make/launcher/Launcher-jdk.jlink.gmk | 5 +-
|
||||||
|
make/launcher/Launcher-jdk.jshell.gmk | 1 -
|
||||||
|
make/launcher/Launcher-jdk.jstatd.gmk | 1 -
|
||||||
|
make/launcher/Launcher-jdk.pack.gmk | 1 -
|
||||||
|
make/launcher/Launcher-jdk.rmic.gmk | 1 -
|
||||||
|
.../Launcher-jdk.scripting.nashorn.shell.gmk | 3 +-
|
||||||
|
src/hotspot/share/runtime/arguments.cpp | 48 +++++++++++--------
|
||||||
|
.../runtime/flags/jvmFlagConstraintList.cpp | 23 +++++++++
|
||||||
|
.../runtime/flags/jvmFlagConstraintList.hpp | 1 +
|
||||||
|
.../flags/jvmFlagConstraintsRuntime.cpp | 10 ++++
|
||||||
|
.../flags/jvmFlagConstraintsRuntime.hpp | 1 +
|
||||||
|
src/hotspot/share/runtime/globals.hpp | 12 ++++-
|
||||||
|
24 files changed, 81 insertions(+), 65 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
|
||||||
|
index 38ba29530d8..f6d4aa28fe6 100644
|
||||||
|
--- a/make/launcher/Launcher-java.base.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.base.gmk
|
||||||
|
@@ -52,7 +52,6 @@ endif
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, keytool, \
|
||||||
|
MAIN_CLASS := sun.security.tools.keytool.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
diff --git a/make/launcher/Launcher-java.rmi.gmk b/make/launcher/Launcher-java.rmi.gmk
|
||||||
|
index 07046232275..a69a90bcc81 100644
|
||||||
|
--- a/make/launcher/Launcher-java.rmi.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.rmi.gmk
|
||||||
|
@@ -27,10 +27,8 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, rmid, \
|
||||||
|
MAIN_CLASS := sun.rmi.server.Activation, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, rmiregistry, \
|
||||||
|
MAIN_CLASS := sun.rmi.registry.RegistryImpl, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-java.scripting.gmk b/make/launcher/Launcher-java.scripting.gmk
|
||||||
|
index cf100e20789..057d2bf3aca 100644
|
||||||
|
--- a/make/launcher/Launcher-java.scripting.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.scripting.gmk
|
||||||
|
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jrunscript, \
|
||||||
|
MAIN_CLASS := com.sun.tools.script.shell.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-java.security.jgss.gmk b/make/launcher/Launcher-java.security.jgss.gmk
|
||||||
|
index 2b856bfccb4..7411e1a21c4 100644
|
||||||
|
--- a/make/launcher/Launcher-java.security.jgss.gmk
|
||||||
|
+++ b/make/launcher/Launcher-java.security.jgss.gmk
|
||||||
|
@@ -28,16 +28,13 @@ include LauncherCommon.gmk
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
$(eval $(call SetupBuildLauncher, kinit, \
|
||||||
|
MAIN_CLASS := sun.security.krb5.internal.tools.Kinit, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, klist, \
|
||||||
|
MAIN_CLASS := sun.security.krb5.internal.tools.Klist, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, ktab, \
|
||||||
|
MAIN_CLASS := sun.security.krb5.internal.tools.Ktab, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
endif
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.aot.gmk b/make/launcher/Launcher-jdk.aot.gmk
|
||||||
|
index 2c52c31a555..10717a5e1c5 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.aot.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.aot.gmk
|
||||||
|
@@ -31,7 +31,6 @@ include LauncherCommon.gmk
|
||||||
|
$(eval $(call SetupBuildLauncher, jaotc, \
|
||||||
|
MAIN_CLASS := jdk.tools.jaotc.Main, \
|
||||||
|
EXTRA_JAVA_ARGS := -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI \
|
||||||
|
- -XX:+DisableHotswapAgent \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
@@ -41,7 +40,6 @@ $(eval $(call SetupBuildLauncher, jaotc, \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
, \
|
||||||
|
JAVA_ARGS := --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
- -XX:+DisableHotswapAgent \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.compiler.gmk b/make/launcher/Launcher-jdk.compiler.gmk
|
||||||
|
index 744969546de..f71c37adf74 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.compiler.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.compiler.gmk
|
||||||
|
@@ -27,14 +27,12 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, javac, \
|
||||||
|
MAIN_CLASS := com.sun.tools.javac.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, serialver, \
|
||||||
|
MAIN_CLASS := sun.tools.serialver.SerialVer, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
@@ -43,7 +41,6 @@ ifeq ($(ENABLE_SJAVAC), yes)
|
||||||
|
# into any real images
|
||||||
|
$(eval $(call SetupBuildLauncher, sjavac, \
|
||||||
|
MAIN_CLASS := com.sun.tools.sjavac.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
OUTPUT_DIR := $(JDK_OUTPUTDIR)/bin, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.hotspot.agent.gmk b/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||||
|
index 9f12b05b172..76da3600368 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||||
|
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jhsdb, \
|
||||||
|
MAIN_CLASS := sun.jvm.hotspot.SALauncher, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jartool.gmk b/make/launcher/Launcher-jdk.jartool.gmk
|
||||||
|
index 647d82b65b1..f74e82bfdae 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jartool.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jartool.gmk
|
||||||
|
@@ -27,10 +27,8 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jar, \
|
||||||
|
MAIN_CLASS := sun.tools.jar.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jarsigner, \
|
||||||
|
MAIN_CLASS := sun.security.tools.jarsigner.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.javadoc.gmk b/make/launcher/Launcher-jdk.javadoc.gmk
|
||||||
|
index c3d2093be04..889028a2b17 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.javadoc.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.javadoc.gmk
|
||||||
|
@@ -27,7 +27,6 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, javadoc, \
|
||||||
|
MAIN_CLASS := jdk.javadoc.internal.tool.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jcmd.gmk b/make/launcher/Launcher-jdk.jcmd.gmk
|
||||||
|
index 761a52d8466..7117fa78059 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jcmd.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jcmd.gmk
|
||||||
|
@@ -30,7 +30,6 @@ $(eval $(call SetupBuildLauncher, jinfo, \
|
||||||
|
JAVA_ARGS := \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
@@ -38,36 +37,28 @@ $(eval $(call SetupBuildLauncher, jmap, \
|
||||||
|
MAIN_CLASS := sun.tools.jmap.JMap, \
|
||||||
|
JAVA_ARGS := \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||||
|
- -Dsun.jvm.hotspot.debugger.useWindbgDebugger \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
+ -Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jps, \
|
||||||
|
MAIN_CLASS := sun.tools.jps.Jps, \
|
||||||
|
- JAVA_ARGS := \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jstack, \
|
||||||
|
MAIN_CLASS := sun.tools.jstack.JStack, \
|
||||||
|
JAVA_ARGS := \
|
||||||
|
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||||
|
- -Dsun.jvm.hotspot.debugger.useWindbgDebugger \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
+ -Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||||
|
MACOSX_PRIVILEGED := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jstat, \
|
||||||
|
MAIN_CLASS := sun.tools.jstat.Jstat, \
|
||||||
|
- JAVA_ARGS := \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jcmd, \
|
||||||
|
MAIN_CLASS := sun.tools.jcmd.JCmd, \
|
||||||
|
- JAVA_ARGS := \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
# Hook to include the corresponding custom file, if present.
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jdeps.gmk b/make/launcher/Launcher-jdk.jdeps.gmk
|
||||||
|
index 5448278dae7..217523c48cc 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jdeps.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jdeps.gmk
|
||||||
|
@@ -27,18 +27,15 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, javap, \
|
||||||
|
MAIN_CLASS := com.sun.tools.javap.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jdeps, \
|
||||||
|
MAIN_CLASS := com.sun.tools.jdeps.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jdeprscan, \
|
||||||
|
MAIN_CLASS := com.sun.tools.jdeprscan.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jdi.gmk b/make/launcher/Launcher-jdk.jdi.gmk
|
||||||
|
index 27bd448e3ae..fcce98cf430 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jdi.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jdi.gmk
|
||||||
|
@@ -27,5 +27,4 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jdb, \
|
||||||
|
MAIN_CLASS := com.sun.tools.example.debug.tty.TTY, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jlink.gmk b/make/launcher/Launcher-jdk.jlink.gmk
|
||||||
|
index 9e61edeb2c8..df2173996d7 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jlink.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jlink.gmk
|
||||||
|
@@ -27,21 +27,18 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jimage,\
|
||||||
|
MAIN_CLASS := jdk.tools.jimage.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jlink,\
|
||||||
|
MAIN_CLASS := jdk.tools.jlink.internal.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES \
|
||||||
|
-DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jmod,\
|
||||||
|
MAIN_CLASS := jdk.tools.jmod.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES \
|
||||||
|
-DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jshell.gmk b/make/launcher/Launcher-jdk.jshell.gmk
|
||||||
|
index 7287f8f998a..349eb88e9eb 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jshell.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jshell.gmk
|
||||||
|
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jshell, \
|
||||||
|
MAIN_CLASS := jdk.internal.jshell.tool.JShellToolProvider, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.jstatd.gmk b/make/launcher/Launcher-jdk.jstatd.gmk
|
||||||
|
index e1657910c67..e9286d63094 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.jstatd.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.jstatd.gmk
|
||||||
|
@@ -27,7 +27,6 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jstatd, \
|
||||||
|
MAIN_CLASS := sun.tools.jstatd.Jstatd, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
# Hook to include the corresponding custom file, if present.
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.pack.gmk b/make/launcher/Launcher-jdk.pack.gmk
|
||||||
|
index 64bbbb7c949..a93fd2a9017 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.pack.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.pack.gmk
|
||||||
|
@@ -28,7 +28,6 @@ include LauncherCommon.gmk
|
||||||
|
$(eval $(call SetupBuildLauncher, pack200, \
|
||||||
|
MAIN_MODULE := java.base, \
|
||||||
|
MAIN_CLASS := com.sun.java.util.jar.pack.Driver, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.rmic.gmk b/make/launcher/Launcher-jdk.rmic.gmk
|
||||||
|
index b8a55900b0e..d60c3d9b60b 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.rmic.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.rmic.gmk
|
||||||
|
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, rmic, \
|
||||||
|
MAIN_CLASS := sun.rmi.rmic.Main, \
|
||||||
|
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||||
|
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||||
|
))
|
||||||
|
diff --git a/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk b/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||||
|
index bd39f8595b2..82311e69fd6 100644
|
||||||
|
--- a/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||||
|
+++ b/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||||
|
@@ -27,7 +27,6 @@ include LauncherCommon.gmk
|
||||||
|
|
||||||
|
$(eval $(call SetupBuildLauncher, jjs, \
|
||||||
|
MAIN_CLASS := jdk.nashorn.tools.jjs.Main, \
|
||||||
|
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||||
|
- -XX:+DisableHotswapAgent, \
|
||||||
|
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||||
|
CFLAGS := -DENABLE_ARG_FILES, \
|
||||||
|
))
|
||||||
|
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
index c5635bb8537..d7fee6a8c95 100644
|
||||||
|
--- a/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/arguments.cpp
|
||||||
|
@@ -4310,11 +4310,17 @@ void Arguments::setup_hotswap_agent() {
|
||||||
|
if (DumpSharedSpaces)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (!AllowEnhancedClassRedefinition)
|
||||||
|
+ if (HotswapAgent == NULL || strcmp(HotswapAgent, "disabled") == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ // Force AllowEnhancedClassRedefinition if HA is enabled
|
||||||
|
+ AllowEnhancedClassRedefinition = true;
|
||||||
|
+
|
||||||
|
+ bool ha_fatjar = strcmp(HotswapAgent, "fatjar") == 0;
|
||||||
|
+ bool ha_core = strcmp(HotswapAgent, "core") == 0;
|
||||||
|
+
|
||||||
|
// Set HotswapAgent
|
||||||
|
- if (!DisableHotswapAgent) {
|
||||||
|
+ if (ha_fatjar || ha_core) {
|
||||||
|
|
||||||
|
char ext_path_str[JVM_MAXPATHLEN];
|
||||||
|
|
||||||
|
@@ -4333,23 +4339,27 @@ void Arguments::setup_hotswap_agent() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ext_path_length < JVM_MAXPATHLEN - 10) {
|
||||||
|
- jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length,
|
||||||
|
- "%shotswap%shotswap-agent.jar", os::file_separator(), os::file_separator());
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- int fd = ::open(ext_path_str, O_RDONLY);
|
||||||
|
- if (fd >= 0) {
|
||||||
|
- os::close(fd);
|
||||||
|
- size_t length = strlen(ext_path_str) + 1;
|
||||||
|
- char *options = NEW_C_HEAP_ARRAY(char, length, mtArguments);
|
||||||
|
- jio_snprintf(options, length, "%s", ext_path_str);
|
||||||
|
- add_init_agent("instrument", ext_path_str, false);
|
||||||
|
- jio_fprintf(defaultStream::output_stream(), "Starting HotswapAgent '%s'\n", ext_path_str);
|
||||||
|
- }
|
||||||
|
-// else
|
||||||
|
-// {
|
||||||
|
-// jio_fprintf(defaultStream::error_stream(), "HotswapAgent not found on path:'%s'\n", ext_path_str);
|
||||||
|
-// }
|
||||||
|
+ if (ha_fatjar) {
|
||||||
|
+ jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length,
|
||||||
|
+ "%shotswap%shotswap-agent.jar", os::file_separator(), os::file_separator());
|
||||||
|
+ } else {
|
||||||
|
+ jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length,
|
||||||
|
+ "%shotswap%shotswap-agent-core.jar", os::file_separator(), os::file_separator());
|
||||||
|
+ }
|
||||||
|
+ int fd = ::open(ext_path_str, O_RDONLY);
|
||||||
|
+ if (fd >= 0) {
|
||||||
|
+ os::close(fd);
|
||||||
|
+ size_t length = strlen(ext_path_str) + 1;
|
||||||
|
+ char *options = NEW_C_HEAP_ARRAY(char, length, mtArguments);
|
||||||
|
+ jio_snprintf(options, length, "%s", ext_path_str);
|
||||||
|
+ add_init_agent("instrument", ext_path_str, false);
|
||||||
|
+ jio_fprintf(defaultStream::output_stream(), "Starting HotswapAgent '%s'\n", ext_path_str);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ jio_fprintf(defaultStream::error_stream(), "HotswapAgent not found on path:'%s'!\n", ext_path_str);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: open it only for org.hotswap.agent module
|
||||||
|
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp
|
||||||
|
index 16d8030fd1c..94044c4831c 100644
|
||||||
|
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp
|
||||||
|
@@ -199,6 +199,26 @@ public:
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
+class JVMFlagConstraint_ccstr : public JVMFlagConstraint {
|
||||||
|
+ JVMFlagConstraintFunc_ccstr _constraint;
|
||||||
|
+ const ccstr* _ptr;
|
||||||
|
+
|
||||||
|
+public:
|
||||||
|
+ // the "name" argument must be a string literal
|
||||||
|
+ JVMFlagConstraint_ccstr(const char* name, const ccstr* ptr,
|
||||||
|
+ JVMFlagConstraintFunc_ccstr func,
|
||||||
|
+ ConstraintType type) : JVMFlagConstraint(name, type), _constraint(func), _ptr(ptr) {}
|
||||||
|
+
|
||||||
|
+ JVMFlag::Error apply(bool verbose) {
|
||||||
|
+ ccstr value = *_ptr;
|
||||||
|
+ return _constraint(value, verbose);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ JVMFlag::Error apply_ccstr(ccstr value, bool verbose) {
|
||||||
|
+ return _constraint(value, verbose);
|
||||||
|
+ }
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
// No constraint emitting
|
||||||
|
void emit_constraint_no(...) { /* NOP */ }
|
||||||
|
|
||||||
|
@@ -239,6 +259,9 @@ void emit_constraint_size_t(const char* name, const size_t* ptr, JVMFlagConstrai
|
||||||
|
void emit_constraint_double(const char* name, const double* ptr, JVMFlagConstraintFunc_double func, JVMFlagConstraint::ConstraintType type) {
|
||||||
|
JVMFlagConstraintList::add(new JVMFlagConstraint_double(name, ptr, func, type));
|
||||||
|
}
|
||||||
|
+void emit_constraint_ccstr(const char* name, ccstr* ptr, JVMFlagConstraintFunc_ccstr func, JVMFlagConstraint::ConstraintType type) {
|
||||||
|
+ JVMFlagConstraintList::add(new JVMFlagConstraint_ccstr(name, ptr, func, type));
|
||||||
|
+}
|
||||||
|
|
||||||
|
// Generate code to call emit_constraint_xxx function
|
||||||
|
#define EMIT_CONSTRAINT_PRODUCT_FLAG(type, name, value, doc) ); emit_constraint_##type(#name,&name
|
||||||
|
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp
|
||||||
|
index 9c27f1db955..b644f7b817a 100644
|
||||||
|
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp
|
||||||
|
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp
|
||||||
|
@@ -47,6 +47,7 @@ typedef JVMFlag::Error (*JVMFlagConstraintFunc_uintx)(uintx value, bool verbose)
|
||||||
|
typedef JVMFlag::Error (*JVMFlagConstraintFunc_uint64_t)(uint64_t value, bool verbose);
|
||||||
|
typedef JVMFlag::Error (*JVMFlagConstraintFunc_size_t)(size_t value, bool verbose);
|
||||||
|
typedef JVMFlag::Error (*JVMFlagConstraintFunc_double)(double value, bool verbose);
|
||||||
|
+typedef JVMFlag::Error (*JVMFlagConstraintFunc_ccstr)(ccstr value, bool verbose);
|
||||||
|
|
||||||
|
class JVMFlagConstraint : public CHeapObj<mtArguments> {
|
||||||
|
public:
|
||||||
|
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp
|
||||||
|
index 6559d4252f0..21afac72a2e 100644
|
||||||
|
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp
|
||||||
|
@@ -140,3 +140,13 @@ JVMFlag::Error ThreadLocalHandshakesConstraintFunc(bool value, bool verbose) {
|
||||||
|
}
|
||||||
|
return JVMFlag::SUCCESS;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+JVMFlag::Error HotswapAgentConstraintFunc(char const* value, bool verbose) {
|
||||||
|
+ if (value != NULL) {
|
||||||
|
+ if (strcmp("disabled", value) != 0 && strcmp("fatjar", value) != 0 && strcmp("core", value) != 0 && strcmp("external", value) != 0) {
|
||||||
|
+ JVMFlag::printError(verbose, "HotswapAgent(%s) must be one of disabled,fatjar,core or external.\n", value);
|
||||||
|
+ return JVMFlag::VIOLATES_CONSTRAINT;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return JVMFlag::SUCCESS;
|
||||||
|
+}
|
||||||
|
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp
|
||||||
|
index 8763b83fd37..c9ed15a89e1 100644
|
||||||
|
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp
|
||||||
|
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp
|
||||||
|
@@ -46,5 +46,6 @@ JVMFlag::Error PerfDataSamplingIntervalFunc(intx value, bool verbose);
|
||||||
|
|
||||||
|
JVMFlag::Error ThreadLocalHandshakesConstraintFunc(bool value, bool verbose);
|
||||||
|
|
||||||
|
+JVMFlag::Error HotswapAgentConstraintFunc(char const* value, bool verbose);
|
||||||
|
|
||||||
|
#endif /* SHARE_VM_RUNTIME_JVMFLAGCONSTRAINTSRUNTIME_HPP */
|
||||||
|
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
|
||||||
|
index d4453de1ff5..8c41f0af888 100644
|
||||||
|
--- a/src/hotspot/share/runtime/globals.hpp
|
||||||
|
+++ b/src/hotspot/share/runtime/globals.hpp
|
||||||
|
@@ -2686,8 +2686,16 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
|
||||||
|
"Allow enhanced class redefinition beyond swapping method " \
|
||||||
|
"bodies") \
|
||||||
|
\
|
||||||
|
- product(bool, DisableHotswapAgent, DISABLED_HOTSWAP_AGENT, \
|
||||||
|
- "Disable integrated Hotswap Agent (HotswapVM only)")
|
||||||
|
+ product(ccstr, HotswapAgent, "disabled", \
|
||||||
|
+ "Specify HotswapAgent image to be used." \
|
||||||
|
+ "disabled: hotswap agent is disabled (default)" \
|
||||||
|
+ "fatjar: full HA. Use integrated hotswap-agent.jar" \
|
||||||
|
+ "core: core HA. Use integrated hotswap-agent-core.jar" \
|
||||||
|
+ "external: external HA. use external HA, open required JDK " \
|
||||||
|
+ "modules.") \
|
||||||
|
+ constraint(HotswapAgentConstraintFunc, AfterErgo)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
#define VM_FLAGS(develop, \
|
||||||
|
develop_pd, \
|
||||||
|
product, \
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,333 @@
|
|||||||
|
From f279999a412cc87c6f4a7eed7e1e2ad34655b4fe Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
|
||||||
|
Date: Mon, 8 Mar 2021 02:22:54 +0700
|
||||||
|
Subject: [PATCH 26/28] Support for redefinition of Well Known classses
|
||||||
|
(java.*,jdk.*, sun.*)
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/ci/ciKlass.hpp | 1 +
|
||||||
|
src/hotspot/share/ci/ciObjectFactory.cpp | 34 +++++++++++
|
||||||
|
src/hotspot/share/ci/ciObjectFactory.hpp | 6 ++
|
||||||
|
.../share/classfile/systemDictionary.cpp | 10 +++
|
||||||
|
.../share/classfile/systemDictionary.hpp | 2 +
|
||||||
|
src/hotspot/share/classfile/vmSymbols.hpp | 2 +
|
||||||
|
src/hotspot/share/compiler/compileBroker.cpp | 11 ++++
|
||||||
|
src/hotspot/share/memory/universe.cpp | 8 +++
|
||||||
|
src/hotspot/share/memory/universe.hpp | 3 +
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.cpp | 61 ++++++++++++++++++-
|
||||||
|
.../prims/jvmtiEnhancedRedefineClasses.hpp | 2 +
|
||||||
|
11 files changed, 139 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/ci/ciKlass.hpp b/src/hotspot/share/ci/ciKlass.hpp
|
||||||
|
index 896f489453a..c610c365aba 100644
|
||||||
|
--- a/src/hotspot/share/ci/ciKlass.hpp
|
||||||
|
+++ b/src/hotspot/share/ci/ciKlass.hpp
|
||||||
|
@@ -129,6 +129,7 @@ public:
|
||||||
|
void print_name_on(outputStream* st);
|
||||||
|
|
||||||
|
const char* external_name() const;
|
||||||
|
+ Klass* new_version() { return get_Klass()->new_version(); }
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SHARE_VM_CI_CIKLASS_HPP
|
||||||
|
diff --git a/src/hotspot/share/ci/ciObjectFactory.cpp b/src/hotspot/share/ci/ciObjectFactory.cpp
|
||||||
|
index 66bbe835e7b..107c16fa5cf 100644
|
||||||
|
--- a/src/hotspot/share/ci/ciObjectFactory.cpp
|
||||||
|
+++ b/src/hotspot/share/ci/ciObjectFactory.cpp
|
||||||
|
@@ -70,7 +70,10 @@ GrowableArray<ciMetadata*>* ciObjectFactory::_shared_ci_metadata = NULL;
|
||||||
|
ciSymbol* ciObjectFactory::_shared_ci_symbols[vmSymbols::SID_LIMIT];
|
||||||
|
int ciObjectFactory::_shared_ident_limit = 0;
|
||||||
|
volatile bool ciObjectFactory::_initialized = false;
|
||||||
|
+volatile bool ciObjectFactory::_reinitialize_wk_klasses = false;
|
||||||
|
|
||||||
|
+// TODO: review...
|
||||||
|
+Arena* ciObjectFactory::_initial_arena = NULL;
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
// ciObjectFactory::ciObjectFactory
|
||||||
|
@@ -112,6 +115,7 @@ void ciObjectFactory::initialize() {
|
||||||
|
// compiler thread that initializes the initial ciObjectFactory which
|
||||||
|
// creates the shared ciObjects that all later ciObjectFactories use.
|
||||||
|
Arena* arena = new (mtCompiler) Arena(mtCompiler);
|
||||||
|
+ ciObjectFactory::_initial_arena = arena;
|
||||||
|
ciEnv initial(arena);
|
||||||
|
ciEnv* env = ciEnv::current();
|
||||||
|
env->_factory->init_shared_objects();
|
||||||
|
@@ -120,6 +124,36 @@ void ciObjectFactory::initialize() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
+// (DCEVM) wk classes could be modified
|
||||||
|
+void ciObjectFactory::reinitialize_wk_classes() {
|
||||||
|
+ ASSERT_IN_VM;
|
||||||
|
+ JavaThread* thread = JavaThread::current();
|
||||||
|
+ HandleMark handle_mark(thread);
|
||||||
|
+
|
||||||
|
+ // This Arena is long lived and exists in the resource mark of the
|
||||||
|
+ // compiler thread that initializes the initial ciObjectFactory which
|
||||||
|
+ // creates the shared ciObjects that all later ciObjectFactories use.
|
||||||
|
+ // Arena* arena = new (mtCompiler) Arena(mtCompiler);
|
||||||
|
+ ciEnv initial(ciObjectFactory::_initial_arena);
|
||||||
|
+ ciEnv* env = ciEnv::current();
|
||||||
|
+ env->_factory->do_reinitialize_wk_classes();
|
||||||
|
+ _reinitialize_wk_klasses = false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// (DCEVM) wk classes could be modified
|
||||||
|
+void ciObjectFactory::do_reinitialize_wk_classes() {
|
||||||
|
+#define WK_KLASS_DEFN(name, ignore_s, opt) \
|
||||||
|
+ if (ciEnv::_##name != NULL && ciEnv::_##name->new_version() != NULL) { \
|
||||||
|
+ int old_ident = ciEnv::_##name->ident(); \
|
||||||
|
+ ciEnv::_##name = get_metadata(SystemDictionary::name())->as_instance_klass(); \
|
||||||
|
+ ciEnv::_##name->compute_nonstatic_fields(); \
|
||||||
|
+ ciEnv::_##name->set_ident(old_ident); \
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ WK_KLASSES_DO(WK_KLASS_DEFN)
|
||||||
|
+#undef WK_KLASS_DEFN
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void ciObjectFactory::init_shared_objects() {
|
||||||
|
|
||||||
|
_next_ident = 1; // start numbering CI objects at 1
|
||||||
|
diff --git a/src/hotspot/share/ci/ciObjectFactory.hpp b/src/hotspot/share/ci/ciObjectFactory.hpp
|
||||||
|
index 3e9d48c4cdc..79059f6e2e8 100644
|
||||||
|
--- a/src/hotspot/share/ci/ciObjectFactory.hpp
|
||||||
|
+++ b/src/hotspot/share/ci/ciObjectFactory.hpp
|
||||||
|
@@ -41,9 +41,11 @@ class ciObjectFactory : public ResourceObj {
|
||||||
|
|
||||||
|
private:
|
||||||
|
static volatile bool _initialized;
|
||||||
|
+ static volatile bool _reinitialize_wk_klasses;
|
||||||
|
static GrowableArray<ciMetadata*>* _shared_ci_metadata;
|
||||||
|
static ciSymbol* _shared_ci_symbols[];
|
||||||
|
static int _shared_ident_limit;
|
||||||
|
+ static Arena* _initial_arena;
|
||||||
|
|
||||||
|
Arena* _arena;
|
||||||
|
GrowableArray<ciMetadata*>* _ci_metadata;
|
||||||
|
@@ -89,10 +91,14 @@ private:
|
||||||
|
ciInstance* get_unloaded_instance(ciInstanceKlass* klass);
|
||||||
|
|
||||||
|
static int compare_cimetadata(ciMetadata** a, ciMetadata** b);
|
||||||
|
+ void do_reinitialize_wk_classes();
|
||||||
|
public:
|
||||||
|
static bool is_initialized() { return _initialized; }
|
||||||
|
+ static bool is_reinitialize_wk_klasses() { return _reinitialize_wk_klasses; }
|
||||||
|
+ static void set_reinitialize_wk_klasses() { _reinitialize_wk_klasses = true; }
|
||||||
|
|
||||||
|
static void initialize();
|
||||||
|
+ static void reinitialize_wk_classes();
|
||||||
|
void init_shared_objects();
|
||||||
|
void remove_symbols();
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
index 789b5fb1e6d..25e577a664c 100644
|
||||||
|
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||||
|
@@ -1983,6 +1983,16 @@ bool SystemDictionary::is_well_known_klass(Symbol* class_name) {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+bool SystemDictionary::update_well_known_klass(InstanceKlass* old_klass, InstanceKlass* new_klass) {
|
||||||
|
+ for (int id = FIRST_WKID; id < WKID_LIMIT; id++) {
|
||||||
|
+ if (well_known_klass((WKID) id) == old_klass) {
|
||||||
|
+ *well_known_klass_addr((WKID)id) = new_klass;
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool SystemDictionary::resolve_wk_klass(WKID id, int init_opt, TRAPS) {
|
||||||
|
assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob");
|
||||||
|
int info = wk_init_info[id - FIRST_WKID];
|
||||||
|
diff --git a/src/hotspot/share/classfile/systemDictionary.hpp b/src/hotspot/share/classfile/systemDictionary.hpp
|
||||||
|
index 1dbbffa197f..4220978a025 100644
|
||||||
|
--- a/src/hotspot/share/classfile/systemDictionary.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/systemDictionary.hpp
|
||||||
|
@@ -467,6 +467,8 @@ public:
|
||||||
|
static bool is_well_known_klass(Symbol* class_name);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ static bool update_well_known_klass(InstanceKlass* new_klass, InstanceKlass* old_klass);
|
||||||
|
+
|
||||||
|
// Enhanced class redefinition
|
||||||
|
static void remove_from_hierarchy(InstanceKlass* k);
|
||||||
|
static void update_constraints_after_redefinition();
|
||||||
|
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
index 2409af9b06e..daaa8d12375 100644
|
||||||
|
--- a/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||||
|
@@ -355,6 +355,8 @@
|
||||||
|
template(exit_method_name, "exit") \
|
||||||
|
template(add_method_name, "add") \
|
||||||
|
template(remove_method_name, "remove") \
|
||||||
|
+ template(registerNatives_method_name, "registerNatives") \
|
||||||
|
+ template(initIDs_method_name, "initIDs") \
|
||||||
|
template(parent_name, "parent") \
|
||||||
|
template(threads_name, "threads") \
|
||||||
|
template(groups_name, "groups") \
|
||||||
|
diff --git a/src/hotspot/share/compiler/compileBroker.cpp b/src/hotspot/share/compiler/compileBroker.cpp
|
||||||
|
index 765b8ffa4dc..25271feb41f 100644
|
||||||
|
--- a/src/hotspot/share/compiler/compileBroker.cpp
|
||||||
|
+++ b/src/hotspot/share/compiler/compileBroker.cpp
|
||||||
|
@@ -1877,6 +1877,17 @@ void CompileBroker::compiler_thread_loop() {
|
||||||
|
if (method()->number_of_breakpoints() == 0) {
|
||||||
|
// Compile the method.
|
||||||
|
if ((UseCompiler || AlwaysCompileLoopMethods) && CompileBroker::should_compile_new_jobs()) {
|
||||||
|
+
|
||||||
|
+ // TODO: review usage of CompileThread_lock (DCEVM)
|
||||||
|
+ if (ciObjectFactory::is_reinitialize_wk_klasses())
|
||||||
|
+ {
|
||||||
|
+ ASSERT_IN_VM;
|
||||||
|
+ MutexLocker only_one (CompileThread_lock, thread);
|
||||||
|
+ if (ciObjectFactory::is_reinitialize_wk_klasses()) {
|
||||||
|
+ ciObjectFactory::reinitialize_wk_classes();
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
invoke_compiler_on_method(task);
|
||||||
|
thread->start_idle_timer();
|
||||||
|
} else {
|
||||||
|
diff --git a/src/hotspot/share/memory/universe.cpp b/src/hotspot/share/memory/universe.cpp
|
||||||
|
index 3dc4cc1323c..6b88271b5ef 100644
|
||||||
|
--- a/src/hotspot/share/memory/universe.cpp
|
||||||
|
+++ b/src/hotspot/share/memory/universe.cpp
|
||||||
|
@@ -1030,6 +1030,14 @@ void Universe::initialize_known_methods(TRAPS) {
|
||||||
|
vmSymbols::doStackWalk_signature(), false, CHECK);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void Universe::reinitialize_loader_addClass_method(TRAPS) {
|
||||||
|
+ // Set up method for registering loaded classes in class loader vector
|
||||||
|
+ initialize_known_method(_loader_addClass_cache,
|
||||||
|
+ SystemDictionary::ClassLoader_klass(),
|
||||||
|
+ "addClass",
|
||||||
|
+ vmSymbols::class_void_signature(), false, CHECK);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void universe2_init() {
|
||||||
|
EXCEPTION_MARK;
|
||||||
|
Universe::genesis(CATCH);
|
||||||
|
diff --git a/src/hotspot/share/memory/universe.hpp b/src/hotspot/share/memory/universe.hpp
|
||||||
|
index 742dada0e8f..d1af82b5fa7 100644
|
||||||
|
--- a/src/hotspot/share/memory/universe.hpp
|
||||||
|
+++ b/src/hotspot/share/memory/universe.hpp
|
||||||
|
@@ -349,6 +349,9 @@ class Universe: AllStatic {
|
||||||
|
// Function to initialize these
|
||||||
|
static void initialize_known_methods(TRAPS);
|
||||||
|
|
||||||
|
+ // Enhanced class redefinition
|
||||||
|
+ static void reinitialize_loader_addClass_method(TRAPS);
|
||||||
|
+
|
||||||
|
static oop null_ptr_exception_instance() { return _null_ptr_exception_instance; }
|
||||||
|
static oop arithmetic_exception_instance() { return _arithmetic_exception_instance; }
|
||||||
|
static oop virtual_machine_error_instance() { return _virtual_machine_error_instance; }
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index f4bde7504c8..80d4e68ccae 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -497,6 +497,16 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||||
|
redefine_single_class(_new_classes->at(i), thread);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Update possible redefinition of well-known classes (like ClassLoader)
|
||||||
|
+ for (int i = 0; i < _new_classes->length(); i++) {
|
||||||
|
+ InstanceKlass* cur = _new_classes->at(i);
|
||||||
|
+ if (cur->old_version() != NULL && SystemDictionary::update_well_known_klass(InstanceKlass::cast(cur->old_version()), cur))
|
||||||
|
+ {
|
||||||
|
+ log_trace(redefine, class, obsolete, metadata)("Well known class updated %s", cur->external_name());
|
||||||
|
+ ciObjectFactory::set_reinitialize_wk_klasses();
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// Deoptimize all compiled code that depends on this class (do only once, because it clears whole cache)
|
||||||
|
// if (_max_redefinition_flags > Klass::ModifyClass) {
|
||||||
|
flush_dependent_code(NULL, thread);
|
||||||
|
@@ -672,12 +682,56 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||||
|
_timer_vm_op_doit.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
+void VM_EnhancedRedefineClasses::reinitializeJDKClasses() {
|
||||||
|
+ if (!_new_classes->is_empty()) {
|
||||||
|
+ ResourceMark rm(Thread::current());
|
||||||
|
+
|
||||||
|
+ for (int i = 0; i < _new_classes->length(); i++) {
|
||||||
|
+ InstanceKlass* cur = _new_classes->at(i);
|
||||||
|
+
|
||||||
|
+ if (cur->name()->starts_with("java/") || cur->name()->starts_with("jdk/") || cur->name()->starts_with("sun/")) {
|
||||||
|
+
|
||||||
|
+ if (cur == SystemDictionary::ClassLoader_klass()) {
|
||||||
|
+ // ClassLoader.addClass method is cached in Universe, we must redefine
|
||||||
|
+ Universe::reinitialize_loader_addClass_method(Thread::current());
|
||||||
|
+ log_trace(redefine, class, obsolete, metadata)("Reinitialize ClassLoade addClass method cache.");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // naive assumptions that only JDK classes has native static "registerNative" and "initIDs" methods
|
||||||
|
+ int end;
|
||||||
|
+ Symbol* signature = vmSymbols::registerNatives_method_name();
|
||||||
|
+ int midx = cur->find_method_by_name(signature, &end);
|
||||||
|
+ if (midx == -1) {
|
||||||
|
+ signature = vmSymbols::initIDs_method_name();
|
||||||
|
+ midx = cur->find_method_by_name(signature, &end);
|
||||||
|
+ }
|
||||||
|
+ Method* m = NULL;
|
||||||
|
+ if (midx != -1) {
|
||||||
|
+ m = cur->methods()->at(midx);
|
||||||
|
+ }
|
||||||
|
+ if (m != NULL && m->is_static() && m->is_native()) {
|
||||||
|
+ // call static registerNative if present
|
||||||
|
+ JavaValue result(T_VOID);
|
||||||
|
+ JavaCalls::call_static(&result,
|
||||||
|
+ cur,
|
||||||
|
+ signature,
|
||||||
|
+ vmSymbols::void_method_signature(),
|
||||||
|
+ Thread::current());
|
||||||
|
+ log_trace(redefine, class, obsolete, metadata)("Reregister natives of JDK class %s", cur->external_name());
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Cleanup - runs in JVM thread
|
||||||
|
// - free used memory
|
||||||
|
// - end GC
|
||||||
|
void VM_EnhancedRedefineClasses::doit_epilogue() {
|
||||||
|
VM_GC_Operation::doit_epilogue();
|
||||||
|
|
||||||
|
+ reinitializeJDKClasses();
|
||||||
|
+
|
||||||
|
if (_new_classes != NULL) {
|
||||||
|
delete _new_classes;
|
||||||
|
}
|
||||||
|
@@ -1589,7 +1643,12 @@ void VM_EnhancedRedefineClasses::check_methods_and_mark_as_obsolete() {
|
||||||
|
|
||||||
|
// obsolete methods need a unique idnum so they become new entries in
|
||||||
|
// the jmethodID cache in InstanceKlass
|
||||||
|
- assert(old_method->method_idnum() == new_method->method_idnum(), "must match");
|
||||||
|
+ if (old_method->method_idnum() != new_method->method_idnum()) {
|
||||||
|
+ log_error(redefine, class, normalize)
|
||||||
|
+ ("Method not matched: %d != %d old: %s = new: %s", old_method->method_idnum(), new_method->method_idnum(),
|
||||||
|
+ old_method->name_and_sig_as_C_string(), new_method->name_and_sig_as_C_string());
|
||||||
|
+ // assert(old_method->method_idnum() == new_method->method_idnum(), "must match");
|
||||||
|
+ }
|
||||||
|
// u2 num = InstanceKlass::cast(_the_class_oop)->next_method_idnum();
|
||||||
|
// if (num != ConstMethod::UNSET_IDNUM) {
|
||||||
|
// old_method->set_method_idnum(num);
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
index 4c0412d343d..79ea17b0d47 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||||
|
@@ -141,6 +141,8 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
|
||||||
|
|
||||||
|
void flush_dependent_code(InstanceKlass* k_h, TRAPS);
|
||||||
|
|
||||||
|
+ void reinitializeJDKClasses();
|
||||||
|
+
|
||||||
|
static void check_class(InstanceKlass* k_oop, TRAPS);
|
||||||
|
|
||||||
|
static void dump_methods();
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
From 416d06e7e5f3517e9303b0b5a705888e4db740bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Fri, 19 Mar 2021 19:13:38 +0100
|
||||||
|
Subject: [PATCH 27/28] JBR-3458: Skip dynamic proxy classes based on
|
||||||
|
com.sun.proxy
|
||||||
|
|
||||||
|
---
|
||||||
|
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index 80d4e68ccae..10c375d601c 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -689,7 +689,8 @@ void VM_EnhancedRedefineClasses::reinitializeJDKClasses() {
|
||||||
|
for (int i = 0; i < _new_classes->length(); i++) {
|
||||||
|
InstanceKlass* cur = _new_classes->at(i);
|
||||||
|
|
||||||
|
- if (cur->name()->starts_with("java/") || cur->name()->starts_with("jdk/") || cur->name()->starts_with("sun/")) {
|
||||||
|
+ if ((cur->name()->starts_with("java/") || cur->name()->starts_with("jdk/") || cur->name()->starts_with("sun/"))
|
||||||
|
+ && cur->name()->index_of_at(0, "$$") == -1) { // skip dynamic proxies
|
||||||
|
|
||||||
|
if (cur == SystemDictionary::ClassLoader_klass()) {
|
||||||
|
// ClassLoader.addClass method is cached in Universe, we must redefine
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
From 88e0325768b074607f5f9edfbb7f8e4a76159942 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||||
|
Date: Sat, 20 Mar 2021 20:51:08 +0100
|
||||||
|
Subject: [PATCH 28/28] JBR-3459: Fix race condition in
|
||||||
|
ClassLoaderDataGraph::classes_do
|
||||||
|
|
||||||
|
InstanceKlass in ClassLoaderData can be uninitialized when
|
||||||
|
ClassLoaderDataGraph::classes_do is called. Using
|
||||||
|
ClassLoaderDataGraph::dictionary_classes_do is safe but problem is still
|
||||||
|
persisting with anonymous classes.
|
||||||
|
---
|
||||||
|
src/hotspot/share/classfile/classLoaderData.cpp | 10 ++++++++++
|
||||||
|
src/hotspot/share/classfile/classLoaderData.hpp | 4 ++++
|
||||||
|
.../share/prims/jvmtiEnhancedRedefineClasses.cpp | 13 +++++++++++--
|
||||||
|
3 files changed, 25 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
index 4e06b09e7d5..f319cca3b2b 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||||
|
@@ -1166,6 +1166,16 @@ void ClassLoaderDataGraph::classes_do(KlassClosure* klass_closure) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+void ClassLoaderDataGraph::anonymous_classes_do(KlassClosure* klass_closure) {
|
||||||
|
+ Thread* thread = Thread::current();
|
||||||
|
+ for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
|
||||||
|
+ if (cld->is_anonymous()) {
|
||||||
|
+ Handle holder(thread, cld->holder_phantom());
|
||||||
|
+ cld->classes_do(klass_closure);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void ClassLoaderDataGraph::classes_do(void f(Klass* const)) {
|
||||||
|
Thread* thread = Thread::current();
|
||||||
|
for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
|
||||||
|
diff --git a/src/hotspot/share/classfile/classLoaderData.hpp b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
index 16711dca237..b10fafa01e5 100644
|
||||||
|
--- a/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
+++ b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||||
|
@@ -108,6 +108,10 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||||
|
// for redefinition. These classes are removed during the next class unloading.
|
||||||
|
// Walking the ClassLoaderDataGraph also includes anonymous classes.
|
||||||
|
static void classes_do(KlassClosure* klass_closure);
|
||||||
|
+
|
||||||
|
+ // Enhanced class redefinition
|
||||||
|
+ static void anonymous_classes_do(KlassClosure* klass_closure);
|
||||||
|
+
|
||||||
|
static void classes_do(void f(Klass* const));
|
||||||
|
static void methods_do(void f(Method*));
|
||||||
|
static void modules_do(void f(ModuleEntry*));
|
||||||
|
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
index 10c375d601c..5de5f78aea0 100644
|
||||||
|
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||||
|
@@ -2130,8 +2130,17 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
|
||||||
|
AffectedKlassClosure closure(_affected_klasses);
|
||||||
|
// Updated in j10, from original SystemDictionary::classes_do
|
||||||
|
|
||||||
|
- ClassLoaderDataGraph::classes_do(&closure);
|
||||||
|
- //ClassLoaderDataGraph::dictionary_classes_do(&closure);
|
||||||
|
+ // 0. we can't use ClassLoaderDataGraph::classes_do since classes can be uninitialized in cld,
|
||||||
|
+ // fully initialized class is in system dictionary
|
||||||
|
+ // ClassLoaderDataGraph::classes_do(&closure);
|
||||||
|
+
|
||||||
|
+ // 1. Scan over dictionaries
|
||||||
|
+ ClassLoaderDataGraph::dictionary_classes_do(&closure);
|
||||||
|
+
|
||||||
|
+ // 2. Anonymous class is not in dictionary, we have to iterate anonymous cld directly, but there is race cond...
|
||||||
|
+ // TODO: review ... anonymous class is added to cld before InstanceKlass initialization,
|
||||||
|
+ // find out how to check if the InstanceKlass is initialized
|
||||||
|
+ ClassLoaderDataGraph::anonymous_classes_do(&closure);
|
||||||
|
|
||||||
|
log_trace(redefine, class, load)("%d classes affected", _affected_klasses->length());
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
133
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
133
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,133 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built; possible values:
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# dcevm - the release bundles with dcevm patches
|
||||||
|
# nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
|
||||||
|
# By default imported modules should be located in ./modular-sdk
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_win_x64
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
bundle_type=$4
|
||||||
|
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||||
|
WORK_DIR=$(pwd)
|
||||||
|
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=${WORK_DIR}/modular-sdk}"
|
||||||
|
JCEF_PATH=${JCEF_PATH:=${WORK_DIR}/jcef_win_x64}
|
||||||
|
TOOLCHAIN_VERSION=${TOOLCHAIN_VERSION:=2015}
|
||||||
|
|
||||||
|
source jb/project/tools/common.sh
|
||||||
|
|
||||||
|
function create_jbr {
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr_${bundle_type}
|
||||||
|
|
||||||
|
case "${bundle_type}" in
|
||||||
|
"jcef" | "dcevm" | "nomod" | "fd")
|
||||||
|
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
cat modules.list > modules_tmp.list
|
||||||
|
rm -rf ${JBR_BUNDLE}
|
||||||
|
|
||||||
|
echo Running jlink....
|
||||||
|
${JSDK}/bin/jlink \
|
||||||
|
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||||
|
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JBR_BUNDLE} || do_exit $?
|
||||||
|
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]
|
||||||
|
then
|
||||||
|
rsync -av ${JCEF_PATH}/ ${JBR_BUNDLE}/bin --exclude="modular-sdk" || do_exit $?
|
||||||
|
fi
|
||||||
|
echo Modifying release info ...
|
||||||
|
cat ${JSDK}/release | tr -d '\r' | grep -v 'JAVA_VERSION' | grep -v 'MODULES' >> ${JBR_BUNDLE}/release
|
||||||
|
}
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=windows-x86_64-normal-server-release
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
|
||||||
|
case "$bundle_type" in
|
||||||
|
"jcef")
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
;;
|
||||||
|
"dcevm")
|
||||||
|
HEAD_REVISION=$(git rev-parse HEAD)
|
||||||
|
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
|
||||||
|
do_reset_dcevm=1
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
;;
|
||||||
|
"nomod")
|
||||||
|
WITH_IMPORT_MODULES=""
|
||||||
|
;;
|
||||||
|
"fd")
|
||||||
|
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||||
|
do_reset_changes=1
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=windows-x86_64-normal-server-fastdebug
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}-fastdebug
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-fastdebug-b${build_number}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
sh ./configure \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
$WITH_DEBUG_LEVEL \
|
||||||
|
--with-vendor-name="${VENDOR_NAME}" \
|
||||||
|
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
$WITH_IMPORT_MODULES \
|
||||||
|
--with-toolchain-version=${TOOLCHAIN_VERSION} \
|
||||||
|
--with-boot-jdk=${BOOT_JDK} \
|
||||||
|
--disable-ccache \
|
||||||
|
--enable-cds=yes || do_exit $?
|
||||||
|
|
||||||
|
if [ "${bundle_type}" == "jcef" ]; then
|
||||||
|
make LOG=info clean images test-image CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
else
|
||||||
|
make LOG=info clean images CONF=$RELEASE_NAME || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
JSDK=build/$RELEASE_NAME/images/jdk
|
||||||
|
BASE_DIR=build/$RELEASE_NAME/images
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || do_exit $?
|
||||||
|
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]
|
||||||
|
then
|
||||||
|
rsync -av ${JCEF_PATH}/ ${JBRSDK_BUNDLE}/bin --exclude='modular-sdk' || do_exit $?
|
||||||
|
sed 's/JBR/JBRSDK/g' ${JSDK}/release > release
|
||||||
|
mv release ${JBRSDK_BUNDLE}/release
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_jbr || do_exit $?
|
||||||
|
|
||||||
|
do_exit 0
|
||||||
65
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
65
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||||
|
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to bu built; possible values:
|
||||||
|
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
|
||||||
|
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||||
|
|
||||||
|
source jb/project/tools/common.sh
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||||
|
WORK_DIR=$(pwd)
|
||||||
|
|
||||||
|
PATH="/usr/local/bin:/usr/bin:${PATH}"
|
||||||
|
./configure \
|
||||||
|
--disable-warnings-as-errors \
|
||||||
|
--disable-debug-symbols \
|
||||||
|
--with-target-bits=32 \
|
||||||
|
--with-vendor-name="${VENDOR_NAME}" \
|
||||||
|
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||||
|
--with-jvm-features=shenandoahgc \
|
||||||
|
--with-version-pre= \
|
||||||
|
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||||
|
--with-version-opt=b${build_number} \
|
||||||
|
--with-toolchain-version=2015 \
|
||||||
|
--with-boot-jdk=${BOOT_JDK} \
|
||||||
|
--disable-ccache \
|
||||||
|
--enable-cds=yes || exit 1
|
||||||
|
make clean CONF=windows-x86-normal-server-release || exit 1
|
||||||
|
make LOG=info images CONF=windows-x86-normal-server-release test-image || exit 1
|
||||||
|
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-windows-x86-b${build_number}
|
||||||
|
BASE_DIR=build/windows-x86-normal-server-release/images
|
||||||
|
JSDK=${BASE_DIR}/jdk
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
|
||||||
|
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || exit 1
|
||||||
|
sed 's/JBR/JBRSDK/g' ${JSDK}/release > release
|
||||||
|
mv release ${JBRSDK_BUNDLE}/release
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr
|
||||||
|
rm -rf ${JBR_BUNDLE}
|
||||||
|
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.x86
|
||||||
|
${JSDK}/bin/jlink \
|
||||||
|
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||||
|
--add-modules $(xargs < modules.list.x86 | sed s/" "//g) --output ${JBR_BUNDLE} || exit $?
|
||||||
|
|
||||||
|
echo Modifying release info ...
|
||||||
|
#grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${JBR_BUNDLE}/release
|
||||||
83
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
83
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies major version of OpenJDK e.g. 11_0_6 (instead of dots '.' underbars "_" are used)
|
||||||
|
# JDK_BUILD_NUMBER - specifies update release of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to be built; possible values:
|
||||||
|
# jcef - the release bundles with jcef
|
||||||
|
# dcevm - the release bundles with dcevm patches
|
||||||
|
# nomod - the release bundles without any additional modules (jcef)
|
||||||
|
# fd - the fastdebug bundles which also include the jcef module
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# MODULAR_SDK_PATH - specifies the path to the directory where imported modules are located.
|
||||||
|
# By default imported modules should be located in ./modular-sdk
|
||||||
|
# JCEF_PATH - specifies the path to the directory with JCEF binaries.
|
||||||
|
# By default JCEF binaries should be located in ./jcef_win_x64
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
bundle_type=$4
|
||||||
|
|
||||||
|
source jb/project/tools/common.sh
|
||||||
|
|
||||||
|
function pack_jbr {
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr_${bundle_type}
|
||||||
|
|
||||||
|
case "${bundle_type}" in
|
||||||
|
"jcef" | "dcevm" | "nomod" | "fd")
|
||||||
|
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
JBR=$JBR_BASE_NAME-windows-x64-b$build_number
|
||||||
|
echo Creating $JBR.tar.gz ...
|
||||||
|
chmod -R ug+rwx,o+rx ${BASE_DIR}/${JBR_BUNDLE}
|
||||||
|
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||||
|
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR jbr || do_exit $?
|
||||||
|
}
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||||
|
RELEASE_NAME=windows-x86_64-normal-server-release
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
|
||||||
|
case "$bundle_type" in
|
||||||
|
"fd")
|
||||||
|
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||||
|
RELEASE_NAME=windows-x86_64-normal-server-fastdebug
|
||||||
|
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-fastdebug-b${build_number}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
IMAGES_DIR=build/$RELEASE_NAME/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
BASE_DIR=.
|
||||||
|
|
||||||
|
if [ "${bundle_type}" == "jcef" ] || [ "${bundle_type}" == "fd" ]; then
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
echo Creating $JBSDK.tar.gz ...
|
||||||
|
[ -f "$JBSDK.tar.gz" ] && rm "$JBSDK.tar.gz"
|
||||||
|
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || do_exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
pack_jbr $bundle_type
|
||||||
|
|
||||||
|
if [ "$bundle_type" == "jcef" ]; then
|
||||||
|
JBRSDK_TEST=$JBRSDK_BASE_NAME-windows-test-x64-b$build_number
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || do_exit $?
|
||||||
|
fi
|
||||||
44
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
44
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
|
||||||
|
# The following parameters must be specified:
|
||||||
|
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||||
|
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||||
|
# build_number - specifies the number of JetBrainsRuntime build
|
||||||
|
# bundle_type - specifies bundle to bu built; possible values:
|
||||||
|
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||||
|
#
|
||||||
|
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||||
|
#
|
||||||
|
# $ ./java --version
|
||||||
|
# openjdk 11.0.6 2020-01-14
|
||||||
|
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||||
|
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||||
|
#
|
||||||
|
|
||||||
|
JBSDK_VERSION=$1
|
||||||
|
JDK_BUILD_NUMBER=$2
|
||||||
|
build_number=$3
|
||||||
|
|
||||||
|
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
|
||||||
|
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||||
|
|
||||||
|
IMAGES_DIR=build/windows-x86-normal-server-release/images
|
||||||
|
JSDK=$IMAGES_DIR/jdk
|
||||||
|
JBSDK=$JBRSDK_BASE_NAME-windows-x86-b$build_number
|
||||||
|
BASE_DIR=.
|
||||||
|
|
||||||
|
JBRSDK_BUNDLE=jbrsdk
|
||||||
|
echo Creating $JBSDK.tar.gz ...
|
||||||
|
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || exit 1
|
||||||
|
|
||||||
|
JBR_BUNDLE=jbr
|
||||||
|
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||||
|
|
||||||
|
JBR=$JBR_BASE_NAME-windows-x86-b$build_number
|
||||||
|
echo Creating $JBR.tar.gz ...
|
||||||
|
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR ${JBR_BUNDLE} || exit 1
|
||||||
|
|
||||||
|
JBRSDK_TEST=$JBRSDK_BASE_NAME-windows-test-x86-b$build_number
|
||||||
|
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||||
|
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || exit 1
|
||||||
246
make/Bundles.gmk
246
make/Bundles.gmk
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -50,6 +50,7 @@ $(eval $(call IncludeCustomExtension, Bundles-pre.gmk))
|
|||||||
# files or directories may contain spaces.
|
# files or directories may contain spaces.
|
||||||
# BASE_DIRS : Base directories for the root dir in the bundle.
|
# BASE_DIRS : Base directories for the root dir in the bundle.
|
||||||
# SUBDIR : Optional name of root dir in bundle.
|
# SUBDIR : Optional name of root dir in bundle.
|
||||||
|
# OUTPUTDIR : Optionally override output dir
|
||||||
SetupBundleFile = $(NamedParamsMacroTemplate)
|
SetupBundleFile = $(NamedParamsMacroTemplate)
|
||||||
define SetupBundleFileBody
|
define SetupBundleFileBody
|
||||||
|
|
||||||
@@ -70,8 +71,11 @@ define SetupBundleFileBody
|
|||||||
|
|
||||||
$$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false)
|
$$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false)
|
||||||
|
|
||||||
$(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES)
|
$$(call SetIfEmpty, $1_OUTPUTDIR, $$(BUNDLES_OUTPUTDIR))
|
||||||
# If any of the files contain a space in the file name, CacheFind
|
|
||||||
|
$$($1_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES)
|
||||||
|
$$(call LogWarn, Creating $$($1_BUNDLE_NAME))
|
||||||
|
# If any of the files contain a space in the file name, FindFiles
|
||||||
# will have replaced it with ?. Tar does not accept that so need to
|
# will have replaced it with ?. Tar does not accept that so need to
|
||||||
# switch it back.
|
# switch it back.
|
||||||
$$(foreach d, $$($1_BASE_DIRS), \
|
$$(foreach d, $$($1_BASE_DIRS), \
|
||||||
@@ -121,6 +125,13 @@ define SetupBundleFileBody
|
|||||||
&& $(TAR) cf - -$(TAR_INCLUDE_PARAM) $$($1_$$d_LIST_FILE) \
|
&& $(TAR) cf - -$(TAR_INCLUDE_PARAM) $$($1_$$d_LIST_FILE) \
|
||||||
$(TAR_IGNORE_EXIT_VALUE) ) \
|
$(TAR_IGNORE_EXIT_VALUE) ) \
|
||||||
| ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )$$(NEWLINE) )
|
| ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )$$(NEWLINE) )
|
||||||
|
# Rename stripped pdb files
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS)+$(SHIP_DEBUG_SYMBOLS), windows+public)
|
||||||
|
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.stripped.pdb"`; do \
|
||||||
|
$(ECHO) Renaming $$$${f} to $$$${f%stripped.pdb}pdb $(LOG_INFO); \
|
||||||
|
$(MV) $$$${f} $$$${f%stripped.pdb}pdb; \
|
||||||
|
done
|
||||||
|
endif
|
||||||
# Unzip any zipped debuginfo files
|
# Unzip any zipped debuginfo files
|
||||||
ifeq ($$($1_UNZIP_DEBUGINFO), true)
|
ifeq ($$($1_UNZIP_DEBUGINFO), true)
|
||||||
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \
|
for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \
|
||||||
@@ -137,7 +148,7 @@ define SetupBundleFileBody
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$1 += $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME)
|
$1 += $$($1_OUTPUTDIR)/$$($1_BUNDLE_NAME)
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@@ -152,6 +163,12 @@ ifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release)
|
|||||||
JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home
|
JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home
|
||||||
JDK_BUNDLE_SUBDIR :=
|
JDK_BUNDLE_SUBDIR :=
|
||||||
JRE_BUNDLE_SUBDIR :=
|
JRE_BUNDLE_SUBDIR :=
|
||||||
|
# In certain situations, the JDK_IMAGE_DIR points to an image without the
|
||||||
|
# the symbols and demos. If so, the symobls and demos can be found in a
|
||||||
|
# separate image. These variables allow for overriding from a custom makefile.
|
||||||
|
JDK_SYMBOLS_IMAGE_DIR ?= $(JDK_IMAGE_DIR)
|
||||||
|
JDK_DEMOS_IMAGE_DIR ?= $(JDK_IMAGE_DIR)
|
||||||
|
JDK_DEMOS_IMAGE_HOMEDIR ?= $(JDK_DEMOS_IMAGE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR)/Home
|
||||||
else
|
else
|
||||||
JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
|
JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
|
||||||
JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
|
JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
|
||||||
@@ -161,23 +178,56 @@ else
|
|||||||
JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||||
JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||||
endif
|
endif
|
||||||
|
# In certain situations, the JDK_IMAGE_DIR points to an image without the
|
||||||
|
# the symbols and demos. If so, the symobls and demos can be found in a
|
||||||
|
# separate image. These variables allow for overriding from a custom makefile.
|
||||||
|
JDK_SYMBOLS_IMAGE_DIR ?= $(JDK_IMAGE_DIR)
|
||||||
|
JDK_DEMOS_IMAGE_DIR ?= $(JDK_IMAGE_DIR)
|
||||||
|
JDK_DEMOS_IMAGE_HOMEDIR ?= $(JDK_DEMOS_IMAGE_DIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
ifneq ($(filter product-bundles legacy-bundles, $(MAKECMDGOALS)), )
|
ifneq ($(filter product-bundles% legacy-bundles, $(MAKECMDGOALS)), )
|
||||||
$(eval $(call FillCacheFind, $(IMAGES_OUTPUTDIR)))
|
|
||||||
|
|
||||||
SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map
|
SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.map
|
||||||
|
|
||||||
ALL_JDK_FILES := $(call CacheFind, $(JDK_IMAGE_DIR))
|
# There may be files with spaces in the names, so use ShellFindFiles
|
||||||
|
# explicitly.
|
||||||
|
ALL_JDK_FILES := $(call ShellFindFiles, $(JDK_IMAGE_DIR))
|
||||||
|
ifneq ($(JDK_IMAGE_DIR), $(JDK_SYMBOLS_IMAGE_DIR))
|
||||||
|
ALL_JDK_SYMBOLS_FILES := $(call ShellFindFiles, $(JDK_SYMBOLS_IMAGE_DIR))
|
||||||
|
else
|
||||||
|
ALL_JDK_SYMBOLS_FILES := $(ALL_JDK_FILES)
|
||||||
|
endif
|
||||||
|
ifneq ($(JDK_IMAGE_DIR), $(JDK_DEMOS_IMAGE_DIR))
|
||||||
|
ALL_JDK_DEMOS_FILES := $(call ShellFindFiles, $(JDK_DEMOS_IMAGE_DIR))
|
||||||
|
else
|
||||||
|
ALL_JDK_DEMOS_FILES := $(ALL_JDK_FILES)
|
||||||
|
endif
|
||||||
|
|
||||||
# Create special filter rules when dealing with unzipped .dSYM directories on
|
# Create special filter rules when dealing with unzipped .dSYM directories on
|
||||||
# macosx
|
# macosx
|
||||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||||
ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
|
ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
|
||||||
JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
|
JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
|
||||||
$(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, $(ALL_JDK_FILES))))
|
$(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, \
|
||||||
|
$(ALL_JDK_SYMBOLS_FILES))))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Create special filter rules when dealing with debug symbols on windows
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||||
|
JDK_SYMBOLS_EXCLUDE_PATTERN := %.pdb
|
||||||
|
else
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||||
|
JDK_SYMBOLS_EXCLUDE_PATTERN := \
|
||||||
|
$(filter-out \
|
||||||
|
%.stripped.pdb, \
|
||||||
|
$(filter %.pdb, $(ALL_JDK_FILES)) \
|
||||||
|
)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -190,22 +240,24 @@ ifneq ($(filter product-bundles legacy-bundles, $(MAKECMDGOALS)), )
|
|||||||
, \
|
, \
|
||||||
$(ALL_JDK_FILES) \
|
$(ALL_JDK_FILES) \
|
||||||
)
|
)
|
||||||
|
|
||||||
JDK_SYMBOLS_BUNDLE_FILES := \
|
JDK_SYMBOLS_BUNDLE_FILES := \
|
||||||
$(filter \
|
$(filter \
|
||||||
$(JDK_SYMBOLS_EXCLUDE_PATTERN) \
|
$(JDK_SYMBOLS_EXCLUDE_PATTERN) \
|
||||||
$(SYMBOLS_EXCLUDE_PATTERN) \
|
$(SYMBOLS_EXCLUDE_PATTERN) \
|
||||||
, \
|
, \
|
||||||
$(filter-out \
|
$(filter-out \
|
||||||
$(JDK_IMAGE_HOMEDIR)/demo/% \
|
$(JDK_IMAGE_HOMEDIR)/demo/% %.stripped.pdb \
|
||||||
, \
|
, \
|
||||||
$(ALL_JDK_FILES) \
|
$(ALL_JDK_SYMBOLS_FILES) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
$(call CacheFind, $(SYMBOLS_IMAGE_DIR))
|
$(call FindFiles, $(SYMBOLS_IMAGE_DIR))
|
||||||
|
|
||||||
TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_IMAGE_HOMEDIR)/demo/%, $(ALL_JDK_FILES))
|
TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_DEMOS_IMAGE_HOMEDIR)/demo/%, \
|
||||||
|
$(ALL_JDK_DEMOS_FILES))
|
||||||
|
|
||||||
ALL_JRE_FILES := $(call CacheFind, $(JRE_IMAGE_DIR))
|
ALL_JRE_FILES := $(call ShellFindFiles, $(JRE_IMAGE_DIR))
|
||||||
|
|
||||||
# Create special filter rules when dealing with unzipped .dSYM directories on
|
# Create special filter rules when dealing with unzipped .dSYM directories on
|
||||||
# macosx
|
# macosx
|
||||||
@@ -216,39 +268,128 @@ ifneq ($(filter product-bundles legacy-bundles, $(MAKECMDGOALS)), )
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Create special filter rules when dealing with debug symbols on windows
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||||
|
JRE_SYMBOLS_EXCLUDE_PATTERN := %.pdb
|
||||||
|
else
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), public)
|
||||||
|
JRE_SYMBOLS_EXCLUDE_PATTERN := \
|
||||||
|
$(filter-out \
|
||||||
|
%.stripped.pdb, \
|
||||||
|
$(filter %.pdb, $(ALL_JRE_FILES)) \
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
JRE_BUNDLE_FILES := $(filter-out \
|
JRE_BUNDLE_FILES := $(filter-out \
|
||||||
$(JRE_SYMBOLS_EXCLUDE_PATTERN) \
|
$(JRE_SYMBOLS_EXCLUDE_PATTERN) \
|
||||||
$(SYMBOLS_EXCLUDE_PATTERN), \
|
$(SYMBOLS_EXCLUDE_PATTERN), \
|
||||||
$(ALL_JRE_FILES))
|
$(ALL_JRE_FILES))
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
|
# On Macosx release builds, when there is a code signing certificate available,
|
||||||
BUNDLE_NAME := $(JDK_BUNDLE_NAME), \
|
# the final bundle layout can be signed.
|
||||||
FILES := $(JDK_BUNDLE_FILES), \
|
SIGN_BUNDLE := false
|
||||||
SPECIAL_INCLUDES := $(JDK_SPECIAL_INCLUDES), \
|
ifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release)
|
||||||
BASE_DIRS := $(JDK_IMAGE_DIR), \
|
ifneq ($(CODESIGN), )
|
||||||
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
SIGN_BUNDLE := true
|
||||||
))
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE)
|
ifeq ($(SIGN_BUNDLE), true)
|
||||||
|
# Macosx release build and code signing available.
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
|
################################################################################
|
||||||
BUNDLE_NAME := $(JRE_BUNDLE_NAME), \
|
# JDK bundle
|
||||||
FILES := $(JRE_BUNDLE_FILES), \
|
$(eval $(call SetupCopyFiles, CREATE_JDK_BUNDLE_DIR_SIGNED, \
|
||||||
BASE_DIRS := $(JRE_IMAGE_DIR), \
|
SRC := $(JDK_IMAGE_DIR), \
|
||||||
SUBDIR := $(JRE_BUNDLE_SUBDIR), \
|
FILES := $(JDK_BUNDLE_FILES), \
|
||||||
))
|
DEST := $(JDK_MACOSX_BUNDLE_DIR_SIGNED), \
|
||||||
|
))
|
||||||
|
|
||||||
LEGACY_TARGETS += $(BUILD_JRE_BUNDLE)
|
JDK_SIGNED_CODE_RESOURCES := \
|
||||||
|
$(JDK_MACOSX_BUNDLE_DIR_SIGNED)/$(JDK_MACOSX_CONTENTS_SUBDIR)/_CodeSignature/CodeResources
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_JDK_SYMBOLS_BUNDLE, \
|
$(JDK_SIGNED_CODE_RESOURCES): $(CREATE_JDK_BUNDLE_DIR_SIGNED)
|
||||||
BUNDLE_NAME := $(JDK_SYMBOLS_BUNDLE_NAME), \
|
$(call LogWarn, Signing $(JDK_BUNDLE_NAME))
|
||||||
FILES := $(JDK_SYMBOLS_BUNDLE_FILES), \
|
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" \
|
||||||
BASE_DIRS := $(JDK_IMAGE_DIR) $(wildcard $(SYMBOLS_IMAGE_DIR)), \
|
--timestamp --options runtime --deep --force \
|
||||||
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
$(JDK_MACOSX_BUNDLE_DIR_SIGNED)/$(JDK_MACOSX_BUNDLE_TOP_DIR) $(LOG_DEBUG)
|
||||||
UNZIP_DEBUGINFO := true, \
|
$(TOUCH) $@
|
||||||
))
|
|
||||||
|
|
||||||
PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE)
|
$(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
|
||||||
|
BUNDLE_NAME := $(JDK_BUNDLE_NAME), \
|
||||||
|
FILES := \
|
||||||
|
$(CREATE_JDK_BUNDLE_DIR_SIGNED) \
|
||||||
|
$(JDK_SIGNED_CODE_RESOURCES), \
|
||||||
|
BASE_DIRS := $(JDK_MACOSX_BUNDLE_DIR_SIGNED), \
|
||||||
|
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# JRE bundle
|
||||||
|
$(eval $(call SetupCopyFiles, CREATE_JRE_BUNDLE_DIR_SIGNED, \
|
||||||
|
SRC := $(JRE_IMAGE_DIR), \
|
||||||
|
FILES := $(JRE_BUNDLE_FILES), \
|
||||||
|
DEST := $(JRE_MACOSX_BUNDLE_DIR_SIGNED), \
|
||||||
|
))
|
||||||
|
|
||||||
|
JRE_SIGNED_CODE_RESOURCES := \
|
||||||
|
$(JRE_MACOSX_BUNDLE_DIR_SIGNED)/$(JRE_MACOSX_CONTENTS_SUBDIR)/_CodeSignature/CodeResources
|
||||||
|
|
||||||
|
$(JRE_SIGNED_CODE_RESOURCES): $(CREATE_JRE_BUNDLE_DIR_SIGNED)
|
||||||
|
$(call LogWarn, Signing $(JRE_BUNDLE_NAME))
|
||||||
|
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" \
|
||||||
|
--timestamp --options runtime --deep --force \
|
||||||
|
$(JRE_MACOSX_BUNDLE_DIR_SIGNED)/$(JRE_MACOSX_BUNDLE_TOP_DIR) $(LOG_DEBUG)
|
||||||
|
$(TOUCH) $@
|
||||||
|
|
||||||
|
$(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
|
||||||
|
BUNDLE_NAME := $(JRE_BUNDLE_NAME), \
|
||||||
|
FILES := \
|
||||||
|
$(CREATE_JRE_BUNDLE_DIR_SIGNED) \
|
||||||
|
$(JRE_SIGNED_CODE_RESOURCES), \
|
||||||
|
BASE_DIRS := $(JRE_MACOSX_BUNDLE_DIR_SIGNED), \
|
||||||
|
SUBDIR := $(JRE_BUNDLE_SUBDIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
LEGACY_TARGETS += $(BUILD_JRE_BUNDLE)
|
||||||
|
else
|
||||||
|
# Not a Macosx release build or code signing not available.
|
||||||
|
$(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
|
||||||
|
BUNDLE_NAME := $(JDK_BUNDLE_NAME), \
|
||||||
|
FILES := $(JDK_BUNDLE_FILES), \
|
||||||
|
SPECIAL_INCLUDES := $(JDK_SPECIAL_INCLUDES), \
|
||||||
|
BASE_DIRS := $(JDK_IMAGE_DIR), \
|
||||||
|
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE)
|
||||||
|
|
||||||
|
$(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
|
||||||
|
BUNDLE_NAME := $(JRE_BUNDLE_NAME), \
|
||||||
|
FILES := $(JRE_BUNDLE_FILES), \
|
||||||
|
BASE_DIRS := $(JRE_IMAGE_DIR), \
|
||||||
|
SUBDIR := $(JRE_BUNDLE_SUBDIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
LEGACY_TARGETS += $(BUILD_JRE_BUNDLE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(COPY_DEBUG_SYMBOLS), true)
|
||||||
|
$(eval $(call SetupBundleFile, BUILD_JDK_SYMBOLS_BUNDLE, \
|
||||||
|
BUNDLE_NAME := $(JDK_SYMBOLS_BUNDLE_NAME), \
|
||||||
|
FILES := $(JDK_SYMBOLS_BUNDLE_FILES), \
|
||||||
|
BASE_DIRS := $(JDK_SYMBOLS_IMAGE_DIR) $(wildcard $(SYMBOLS_IMAGE_DIR)), \
|
||||||
|
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
||||||
|
UNZIP_DEBUGINFO := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE)
|
||||||
|
endif
|
||||||
|
|
||||||
# The demo bundle is only created to support client tests. Ideally it should
|
# The demo bundle is only created to support client tests. Ideally it should
|
||||||
# be built with the main test bundle, but since the prerequisites match
|
# be built with the main test bundle, but since the prerequisites match
|
||||||
@@ -256,7 +397,7 @@ ifneq ($(filter product-bundles legacy-bundles, $(MAKECMDGOALS)), )
|
|||||||
$(eval $(call SetupBundleFile, BUILD_TEST_DEMOS_BUNDLE, \
|
$(eval $(call SetupBundleFile, BUILD_TEST_DEMOS_BUNDLE, \
|
||||||
BUNDLE_NAME := $(TEST_DEMOS_BUNDLE_NAME), \
|
BUNDLE_NAME := $(TEST_DEMOS_BUNDLE_NAME), \
|
||||||
FILES := $(TEST_DEMOS_BUNDLE_FILES), \
|
FILES := $(TEST_DEMOS_BUNDLE_FILES), \
|
||||||
BASE_DIRS := $(JDK_IMAGE_DIR), \
|
BASE_DIRS := $(JDK_DEMOS_IMAGE_DIR), \
|
||||||
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
SUBDIR := $(JDK_BUNDLE_SUBDIR), \
|
||||||
))
|
))
|
||||||
|
|
||||||
@@ -266,7 +407,7 @@ endif
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
ifneq ($(filter test-bundles, $(MAKECMDGOALS)), )
|
ifneq ($(filter test-bundles, $(MAKECMDGOALS)), )
|
||||||
TEST_BUNDLE_FILES := $(call CacheFind, $(TEST_IMAGE_DIR))
|
TEST_BUNDLE_FILES := $(call FindFiles, $(TEST_IMAGE_DIR))
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \
|
$(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \
|
||||||
BUNDLE_NAME := $(TEST_BUNDLE_NAME), \
|
BUNDLE_NAME := $(TEST_BUNDLE_NAME), \
|
||||||
@@ -280,7 +421,7 @@ endif
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), )
|
ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), )
|
||||||
DOCS_BUNDLE_FILES := $(call CacheFind, $(DOCS_IMAGE_DIR))
|
DOCS_BUNDLE_FILES := $(call FindFiles, $(DOCS_IMAGE_DIR))
|
||||||
|
|
||||||
$(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \
|
$(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \
|
||||||
BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \
|
BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \
|
||||||
@@ -294,6 +435,27 @@ endif
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
ifneq ($(filter static-libs-bundles, $(MAKECMDGOALS)), )
|
||||||
|
STATIC_LIBS_BUNDLE_FILES := $(call FindFiles, $(STATIC_LIBS_IMAGE_DIR))
|
||||||
|
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release)
|
||||||
|
STATIC_LIBS_BUNDLE_SUBDIR := $(JDK_MACOSX_CONTENTS_SUBDIR)/Home
|
||||||
|
else
|
||||||
|
STATIC_LIBS_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(eval $(call SetupBundleFile, BUILD_STATIC_LIBS_BUNDLE, \
|
||||||
|
BUNDLE_NAME := $(STATIC_LIBS_BUNDLE_NAME), \
|
||||||
|
FILES := $(STATIC_LIBS_BUNDLE_FILES), \
|
||||||
|
BASE_DIRS := $(STATIC_LIBS_IMAGE_DIR), \
|
||||||
|
SUBDIR := $(STATIC_LIBS_BUNDLE_SUBDIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
STATIC_LIBS_TARGETS += $(BUILD_STATIC_LIBS_BUNDLE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
# Hook to include the corresponding custom file, if present.
|
# Hook to include the corresponding custom file, if present.
|
||||||
$(eval $(call IncludeCustomExtension, Bundles.gmk))
|
$(eval $(call IncludeCustomExtension, Bundles.gmk))
|
||||||
|
|
||||||
@@ -303,5 +465,7 @@ product-bundles: $(PRODUCT_TARGETS)
|
|||||||
legacy-bundles: $(LEGACY_TARGETS)
|
legacy-bundles: $(LEGACY_TARGETS)
|
||||||
test-bundles: $(TEST_TARGETS)
|
test-bundles: $(TEST_TARGETS)
|
||||||
docs-bundles: $(DOCS_TARGETS)
|
docs-bundles: $(DOCS_TARGETS)
|
||||||
|
static-libs-bundles: $(STATIC_LIBS_TARGETS)
|
||||||
|
|
||||||
.PHONY: all default product-bundles test-bundles docs-bundles
|
.PHONY: all default product-bundles test-bundles docs-bundles \
|
||||||
|
static-libs-bundles
|
||||||
|
|||||||
60
make/CompileCommands.gmk
Normal file
60
make/CompileCommands.gmk
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
|
include $(SPEC)
|
||||||
|
include MakeBase.gmk
|
||||||
|
|
||||||
|
# When FIXPATH is set, let it process the file to make sure all paths are usable
|
||||||
|
# by system native tools. The FIXPATH tool assumes arguments preceeded by an @
|
||||||
|
# character points to a text file containing further arguments (similar to a
|
||||||
|
# linker). It replaces any such arguments with a different temporary filename,
|
||||||
|
# whose contents has been processed to make any paths native. To obtain a
|
||||||
|
# properly processed compile_commands.json, FIXPATH is then made to invoke an
|
||||||
|
# AWK script with the unprocessed json file as the only argument, prepended with
|
||||||
|
# an @ character. The AWK script simply copies the contents of this processed
|
||||||
|
# file.
|
||||||
|
#
|
||||||
|
# The sed command encloses the fragments inside brackets and removes the final
|
||||||
|
# trailing comma.
|
||||||
|
$(OUTPUTDIR)/compile_commands.json: $(wildcard $(MAKESUPPORT_OUTPUTDIR)/compile-commands/*.json)
|
||||||
|
$(call LogWarn, Updating compile_commands.json)
|
||||||
|
$(RM) $@
|
||||||
|
$(FIND) $(MAKESUPPORT_OUTPUTDIR)/compile-commands/ -name \*.json | \
|
||||||
|
$(SORT) | $(XARGS) $(CAT) >> $@.tmp
|
||||||
|
$(if $(FIXPATH),$(FIXPATH) $(AWK) 'BEGIN { \
|
||||||
|
tmpfile = substr(ARGV[2],2); \
|
||||||
|
cmd = "$(CP) " "\047" tmpfile "\047" " $@.tmp"; \
|
||||||
|
system(cmd); \
|
||||||
|
}' -- @$@.tmp)
|
||||||
|
$(SED) -e '1s/^/[\$(NEWLINE)/' -e '$(DOLLAR)s/,\s\{0,\}$(DOLLAR)/\$(NEWLINE)]/' $@.tmp > $@
|
||||||
|
$(RM) $@.tmp
|
||||||
|
|
||||||
|
TARGETS += $(OUTPUTDIR)/compile_commands.json
|
||||||
|
|
||||||
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2019, 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
|
||||||
@@ -43,7 +43,7 @@ $(eval $(call IncludeCustomExtension, CompileDemos-pre.gmk))
|
|||||||
# Prepare the find cache.
|
# Prepare the find cache.
|
||||||
DEMO_SRC_DIRS += $(TOPDIR)/src/demo
|
DEMO_SRC_DIRS += $(TOPDIR)/src/demo
|
||||||
|
|
||||||
$(eval $(call FillCacheFind, $(wildcard $(DEMO_SRC_DIRS))))
|
$(call FillFindCache, $(DEMO_SRC_DIRS))
|
||||||
|
|
||||||
# Append demo goals to this variable.
|
# Append demo goals to this variable.
|
||||||
TARGETS =
|
TARGETS =
|
||||||
@@ -237,11 +237,11 @@ $(SUPPORT_OUTPUTDIR)/demos/image/nbproject/%: $(DEMO_SHARE_SRC)/nbproject/%
|
|||||||
ifeq ($(OPENJDK_TARGET_OS), solaris)
|
ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||||
TARGETS += $(patsubst $(DEMO_SHARE_SRC)/nbproject/%, \
|
TARGETS += $(patsubst $(DEMO_SHARE_SRC)/nbproject/%, \
|
||||||
$(SUPPORT_OUTPUTDIR)/demos/image/nbproject/%, \
|
$(SUPPORT_OUTPUTDIR)/demos/image/nbproject/%, \
|
||||||
$(call CacheFind, $(DEMO_SHARE_SRC)/nbproject))
|
$(call FindFiles, $(DEMO_SHARE_SRC)/nbproject))
|
||||||
else
|
else
|
||||||
TARGETS += $(patsubst $(DEMO_SHARE_SRC)/nbproject/%, \
|
TARGETS += $(patsubst $(DEMO_SHARE_SRC)/nbproject/%, \
|
||||||
$(SUPPORT_OUTPUTDIR)/demos/image/nbproject/%, \
|
$(SUPPORT_OUTPUTDIR)/demos/image/nbproject/%, \
|
||||||
$(call CacheFind, $(DEMO_SHARE_SRC)/nbproject))
|
$(call FindFiles, $(DEMO_SHARE_SRC)/nbproject))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -250,7 +250,7 @@ ifneq ($(filter images, $(MAKECMDGOALS)), )
|
|||||||
$(eval $(call SetupCopyFiles, COPY_TO_TEST_IMAGE, \
|
$(eval $(call SetupCopyFiles, COPY_TO_TEST_IMAGE, \
|
||||||
SRC := $(SUPPORT_OUTPUTDIR)/demos/image, \
|
SRC := $(SUPPORT_OUTPUTDIR)/demos/image, \
|
||||||
DEST := $(TEST_IMAGE_DIR)/jdk/demos, \
|
DEST := $(TEST_IMAGE_DIR)/jdk/demos, \
|
||||||
FILES := $(call CacheFind, $(SUPPORT_OUTPUTDIR)/demos/image), \
|
FILES := $(call FindFiles, $(SUPPORT_OUTPUTDIR)/demos/image), \
|
||||||
))
|
))
|
||||||
|
|
||||||
IMAGES_TARGETS := $(COPY_TO_TEST_IMAGE)
|
IMAGES_TARGETS := $(COPY_TO_TEST_IMAGE)
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ jdk.jshell_COPY += .jsh .properties
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
jdk.internal.le_COPY += .properties
|
jdk.internal.le_COPY += .properties .caps .txt
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
@@ -644,7 +644,7 @@ endif
|
|||||||
|
|
||||||
ifneq ($(wildcard $(IMPORT_MODULES_CLASSES)/$(MODULE)), )
|
ifneq ($(wildcard $(IMPORT_MODULES_CLASSES)/$(MODULE)), )
|
||||||
$(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker: \
|
$(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker: \
|
||||||
$(call CacheFind, $(IMPORT_MODULES_CLASSES)/$(MODULE))
|
$(call FindFiles, $(IMPORT_MODULES_CLASSES)/$(MODULE))
|
||||||
$(call MakeDir, $(@D))
|
$(call MakeDir, $(@D))
|
||||||
# Do not delete marker and build meta data files
|
# Do not delete marker and build meta data files
|
||||||
$(RM) -r $(filter-out $(@D)/_%, $(wildcard $(@D)/*))
|
$(RM) -r $(filter-out $(@D)/_%, $(wildcard $(@D)/*))
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -39,7 +39,6 @@ $(eval $(call IncludeCustomExtension, CompileTools.gmk))
|
|||||||
# Use += to be able to add to this from a custom extension
|
# Use += to be able to add to this from a custom extension
|
||||||
BUILD_TOOLS_SRC_DIRS += \
|
BUILD_TOOLS_SRC_DIRS += \
|
||||||
$(TOPDIR)/make/jdk/src/classes \
|
$(TOPDIR)/make/jdk/src/classes \
|
||||||
$(BUILDTOOLS_OUTPUTDIR)/interim_cldrconverter_classes \
|
|
||||||
$(BUILDTOOLS_OUTPUTDIR)/interim_tzdb_classes \
|
$(BUILDTOOLS_OUTPUTDIR)/interim_tzdb_classes \
|
||||||
#
|
#
|
||||||
|
|
||||||
@@ -56,6 +55,7 @@ $(eval $(call SetupJavaCompilation,BUILD_TOOLS_JDK, \
|
|||||||
ADD_JAVAC_FLAGS := \
|
ADD_JAVAC_FLAGS := \
|
||||||
--add-exports java.desktop/sun.awt=ALL-UNNAMED \
|
--add-exports java.desktop/sun.awt=ALL-UNNAMED \
|
||||||
--add-exports java.base/sun.text=ALL-UNNAMED \
|
--add-exports java.base/sun.text=ALL-UNNAMED \
|
||||||
|
--add-exports java.base/sun.security.util=ALL-UNNAMED \
|
||||||
, \
|
, \
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2015, 2019, 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
|
||||||
@@ -35,7 +35,7 @@ LIBS_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_LIBS)))
|
|||||||
CMDS_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_CMDS)))
|
CMDS_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_CMDS)))
|
||||||
CONF_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_CONF)))
|
CONF_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_CONF)))
|
||||||
|
|
||||||
$(eval $(call FillCacheFind, $(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR)))
|
$(call FillFindCache, $(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR))
|
||||||
|
|
||||||
ifneq ($(LIBS_DIR), )
|
ifneq ($(LIBS_DIR), )
|
||||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
@@ -45,21 +45,21 @@ ifneq ($(LIBS_DIR), )
|
|||||||
SRC := $(LIBS_DIR), \
|
SRC := $(LIBS_DIR), \
|
||||||
DEST := $(JDK_OUTPUTDIR)/bin, \
|
DEST := $(JDK_OUTPUTDIR)/bin, \
|
||||||
FILES := $(filter $(TO_BIN_FILTER), \
|
FILES := $(filter $(TO_BIN_FILTER), \
|
||||||
$(call CacheFind, $(LIBS_DIR))) \
|
$(call FindFiles, $(LIBS_DIR))) \
|
||||||
))
|
))
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles, COPY_LIBS_TO_LIB, \
|
$(eval $(call SetupCopyFiles, COPY_LIBS_TO_LIB, \
|
||||||
SRC := $(LIBS_DIR), \
|
SRC := $(LIBS_DIR), \
|
||||||
DEST := $(JDK_OUTPUTDIR)/lib, \
|
DEST := $(JDK_OUTPUTDIR)/lib, \
|
||||||
FILES := $(filter-out $(TO_BIN_FILTER), \
|
FILES := $(filter-out $(TO_BIN_FILTER), \
|
||||||
$(call CacheFind, $(LIBS_DIR))) \
|
$(call FindFiles, $(LIBS_DIR))) \
|
||||||
))
|
))
|
||||||
TARGETS += $(COPY_LIBS_TO_BIN) $(COPY_LIBS_TO_LIB)
|
TARGETS += $(COPY_LIBS_TO_BIN) $(COPY_LIBS_TO_LIB)
|
||||||
else
|
else
|
||||||
$(eval $(call SetupCopyFiles, COPY_LIBS, \
|
$(eval $(call SetupCopyFiles, COPY_LIBS, \
|
||||||
SRC := $(LIBS_DIR), \
|
SRC := $(LIBS_DIR), \
|
||||||
DEST := $(JDK_OUTPUTDIR)/lib, \
|
DEST := $(JDK_OUTPUTDIR)/lib, \
|
||||||
FILES := $(filter %$(SHARED_LIBRARY_SUFFIX), $(call CacheFind, $(LIBS_DIR))), \
|
FILES := $(filter %$(SHARED_LIBRARY_SUFFIX), $(call FindFiles, $(LIBS_DIR))), \
|
||||||
))
|
))
|
||||||
|
|
||||||
# Use relative links if the import dir is inside the OUTPUTDIR, otherwise
|
# Use relative links if the import dir is inside the OUTPUTDIR, otherwise
|
||||||
@@ -75,7 +75,7 @@ ifneq ($(LIBS_DIR), )
|
|||||||
$(eval $(call SetupCopyFiles, LINK_LIBS, \
|
$(eval $(call SetupCopyFiles, LINK_LIBS, \
|
||||||
SRC := $(LIBS_DIR), \
|
SRC := $(LIBS_DIR), \
|
||||||
DEST := $(JDK_OUTPUTDIR)/lib, \
|
DEST := $(JDK_OUTPUTDIR)/lib, \
|
||||||
FILES := $(filter-out %$(SHARED_LIBRARY_SUFFIX), $(call CacheFind, $(LIBS_DIR))), \
|
FILES := $(filter-out %$(SHARED_LIBRARY_SUFFIX), $(call FindFiles, $(LIBS_DIR))), \
|
||||||
MACRO := $(LINK_MACRO), \
|
MACRO := $(LINK_MACRO), \
|
||||||
LOG_ACTION := $(LOG_ACTION), \
|
LOG_ACTION := $(LOG_ACTION), \
|
||||||
))
|
))
|
||||||
@@ -87,7 +87,7 @@ ifneq ($(CMDS_DIR), )
|
|||||||
$(eval $(call SetupCopyFiles, COPY_CMDS, \
|
$(eval $(call SetupCopyFiles, COPY_CMDS, \
|
||||||
SRC := $(CMDS_DIR), \
|
SRC := $(CMDS_DIR), \
|
||||||
DEST := $(JDK_OUTPUTDIR)/bin, \
|
DEST := $(JDK_OUTPUTDIR)/bin, \
|
||||||
FILES := $(call CacheFind, $(CMDS_DIR)), \
|
FILES := $(call FindFiles, $(CMDS_DIR)), \
|
||||||
))
|
))
|
||||||
TARGETS += $(COPY_CMDS)
|
TARGETS += $(COPY_CMDS)
|
||||||
endif
|
endif
|
||||||
@@ -96,7 +96,7 @@ ifneq ($(CONF_DIR), )
|
|||||||
$(eval $(call SetupCopyFiles, COPY_CONF, \
|
$(eval $(call SetupCopyFiles, COPY_CONF, \
|
||||||
SRC := $(CONF_DIR), \
|
SRC := $(CONF_DIR), \
|
||||||
DEST := $(JDK_OUTPUTDIR)/lib, \
|
DEST := $(JDK_OUTPUTDIR)/lib, \
|
||||||
FILES := $(call CacheFind, $(CONF_DIR)), \
|
FILES := $(call FindFiles, $(CONF_DIR)), \
|
||||||
))
|
))
|
||||||
TARGETS += $(COPY_CONF)
|
TARGETS += $(COPY_CONF)
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2015, 2019, 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
|
||||||
@@ -39,7 +39,7 @@ MODULES_TO_COPY := $(sort \
|
|||||||
|
|
||||||
COPY_CLASSES_TARGET := $(BUILDJDK_OUTPUTDIR)/jdk/modules/java.base/_the.buildjdk-copy-marker
|
COPY_CLASSES_TARGET := $(BUILDJDK_OUTPUTDIR)/jdk/modules/java.base/_the.buildjdk-copy-marker
|
||||||
|
|
||||||
$(COPY_CLASSES_TARGET): $(call CacheFind, $(wildcard \
|
$(COPY_CLASSES_TARGET): $(call FindFiles, $(wildcard \
|
||||||
$(addprefix $(JDK_OUTPUTDIR)/modules/, $(MODULES_TO_COPY))))
|
$(addprefix $(JDK_OUTPUTDIR)/modules/, $(MODULES_TO_COPY))))
|
||||||
$(ECHO) $(LOG_INFO) "Copying java modules to buildjdk: $(MODULES_TO_COPY)"
|
$(ECHO) $(LOG_INFO) "Copying java modules to buildjdk: $(MODULES_TO_COPY)"
|
||||||
$(RM) -r $(BUILDJDK_OUTPUTDIR)/jdk/modules
|
$(RM) -r $(BUILDJDK_OUTPUTDIR)/jdk/modules
|
||||||
@@ -56,7 +56,7 @@ TARGETS += $(COPY_CLASSES_TARGET)
|
|||||||
$(eval $(call SetupCopyFiles, COPY_SUPPORT_HEADERS, \
|
$(eval $(call SetupCopyFiles, COPY_SUPPORT_HEADERS, \
|
||||||
SRC := $(OUTPUTDIR), \
|
SRC := $(OUTPUTDIR), \
|
||||||
DEST := $(BUILDJDK_OUTPUTDIR), \
|
DEST := $(BUILDJDK_OUTPUTDIR), \
|
||||||
FILES := $(call CacheFind, $(wildcard \
|
FILES := $(call FindFiles, $(wildcard \
|
||||||
$(addprefix $(SUPPORT_OUTPUTDIR)/headers/, $(MODULES_TO_COPY)))), \
|
$(addprefix $(SUPPORT_OUTPUTDIR)/headers/, $(MODULES_TO_COPY)))), \
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
#
|
||||||
|
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -51,33 +52,79 @@ INCLUDE_HEADERS_DIR ?= $(firstword $(wildcard $(addsuffix /$(MODULE), \
|
|||||||
MAN_DIR ?= $(firstword $(wildcard $(addsuffix /$(MODULE), \
|
MAN_DIR ?= $(firstword $(wildcard $(addsuffix /$(MODULE), \
|
||||||
$(SUPPORT_OUTPUTDIR)/modules_man $(IMPORT_MODULES_MAN))))
|
$(SUPPORT_OUTPUTDIR)/modules_man $(IMPORT_MODULES_MAN))))
|
||||||
|
|
||||||
$(eval $(call FillCacheFind, \
|
$(call FillFindCache, \
|
||||||
$(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR) $(CLASSES_DIR) \
|
$(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR) $(CLASSES_DIR) \
|
||||||
))
|
)
|
||||||
|
|
||||||
ifneq ($(LIBS_DIR), )
|
ifneq ($(LIBS_DIR), )
|
||||||
JMOD_FLAGS += --libs $(LIBS_DIR)
|
DEPS += $(call FindFiles, $(LIBS_DIR))
|
||||||
DEPS += $(call CacheFind, $(LIBS_DIR))
|
ifeq ($(OPENJDK_TARGET_OS)+$(SHIP_DEBUG_SYMBOLS), windows+public)
|
||||||
|
# For public debug symbols on Windows, we have to use stripped pdbs and rename them
|
||||||
|
rename_stripped = $(patsubst %.stripped.pdb,%.pdb,$1)
|
||||||
|
LIBS_DIR_FILTERED := $(subst modules_libs,modules_libs_filtered, $(LIBS_DIR))
|
||||||
|
FILES_LIBS := $(filter-out %.pdb, $(call FindFiles, $(LIBS_DIR))) \
|
||||||
|
$(filter %.stripped.pdb, $(call FindFiles, $(LIBS_DIR)))
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_FILTERED_LIBS, \
|
||||||
|
SRC := $(LIBS_DIR), \
|
||||||
|
DEST := $(LIBS_DIR_FILTERED), \
|
||||||
|
FILES := $(FILES_LIBS), \
|
||||||
|
NAME_MACRO := rename_stripped, \
|
||||||
|
))
|
||||||
|
DEPS += $(COPY_FILTERED_LIBS)
|
||||||
|
JMOD_FLAGS += --libs $(LIBS_DIR_FILTERED)
|
||||||
|
else
|
||||||
|
JMOD_FLAGS += --libs $(LIBS_DIR)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
ifneq ($(CMDS_DIR), )
|
ifneq ($(CMDS_DIR), )
|
||||||
JMOD_FLAGS += --cmds $(CMDS_DIR)
|
DEPS += $(call FindFiles, $(CMDS_DIR))
|
||||||
DEPS += $(call CacheFind, $(CMDS_DIR))
|
ifeq ($(OPENJDK_TARGET_OS)+$(SHIP_DEBUG_SYMBOLS), windows+public)
|
||||||
|
# For public debug symbols on Windows, we have to use stripped pdbs, rename them
|
||||||
|
# and filter out a few launcher pdbs where there's a lib that goes by the same name
|
||||||
|
rename_stripped = $(patsubst %.stripped.pdb,%.pdb,$1)
|
||||||
|
CMDS_DIR_FILTERED := $(subst modules_cmds,modules_cmds_filtered, $(CMDS_DIR))
|
||||||
|
FILES_CMDS := $(filter-out %.pdb, $(call FindFiles, $(CMDS_DIR))) \
|
||||||
|
$(filter-out %jimage.stripped.pdb %jpackage.stripped.pdb %java.stripped.pdb, \
|
||||||
|
$(filter %.stripped.pdb, $(call FindFiles, $(CMDS_DIR))))
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_FILTERED_CMDS, \
|
||||||
|
SRC := $(CMDS_DIR), \
|
||||||
|
DEST := $(CMDS_DIR_FILTERED), \
|
||||||
|
FILES := $(FILES_CMDS), \
|
||||||
|
NAME_MACRO := rename_stripped, \
|
||||||
|
))
|
||||||
|
DEPS += $(COPY_FILTERED_CMDS)
|
||||||
|
JMOD_FLAGS += --cmds $(CMDS_DIR_FILTERED)
|
||||||
|
else ifeq ($(OPENJDK_TARGET_OS)+$(SHIP_DEBUG_SYMBOLS), windows+full)
|
||||||
|
# For full debug symbols on Windows, we have to filter out a few launcher pdbs
|
||||||
|
# where there's a lib that goes by the same name
|
||||||
|
CMDS_DIR_FILTERED := $(subst modules_cmds,modules_cmds_filtered, $(CMDS_DIR))
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_FILTERED_CMDS, \
|
||||||
|
SRC := $(CMDS_DIR), \
|
||||||
|
DEST := $(CMDS_DIR_FILTERED), \
|
||||||
|
FILES := $(filter-out %jimage.pdb %jpackage.pdb %java.pdb, \
|
||||||
|
$(call FindFiles, $(CMDS_DIR))), \
|
||||||
|
))
|
||||||
|
DEPS += $(COPY_FILTERED_CMDS)
|
||||||
|
JMOD_FLAGS += --cmds $(CMDS_DIR_FILTERED)
|
||||||
|
else
|
||||||
|
JMOD_FLAGS += --cmds $(CMDS_DIR)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
ifneq ($(CONF_DIR), )
|
ifneq ($(CONF_DIR), )
|
||||||
JMOD_FLAGS += --config $(CONF_DIR)
|
JMOD_FLAGS += --config $(CONF_DIR)
|
||||||
DEPS += $(call CacheFind, $(CONF_DIR))
|
DEPS += $(call FindFiles, $(CONF_DIR))
|
||||||
endif
|
endif
|
||||||
ifneq ($(CLASSES_DIR), )
|
ifneq ($(CLASSES_DIR), )
|
||||||
JMOD_FLAGS += --class-path $(CLASSES_DIR)
|
JMOD_FLAGS += --class-path $(CLASSES_DIR)
|
||||||
DEPS += $(call CacheFind, $(CLASSES_DIR))
|
DEPS += $(call FindFiles, $(CLASSES_DIR))
|
||||||
endif
|
endif
|
||||||
ifneq ($(INCLUDE_HEADERS_DIR), )
|
ifneq ($(INCLUDE_HEADERS_DIR), )
|
||||||
JMOD_FLAGS += --header-files $(INCLUDE_HEADERS_DIR)
|
JMOD_FLAGS += --header-files $(INCLUDE_HEADERS_DIR)
|
||||||
DEPS += $(call CacheFind, $(INCLUDE_HEADERS_DIR))
|
DEPS += $(call FindFiles, $(INCLUDE_HEADERS_DIR))
|
||||||
endif
|
endif
|
||||||
ifneq ($(MAN_DIR), )
|
ifneq ($(MAN_DIR), )
|
||||||
JMOD_FLAGS += --man-pages $(MAN_DIR)
|
JMOD_FLAGS += --man-pages $(MAN_DIR)
|
||||||
DEPS += $(call CacheFind, $(MAN_DIR))
|
DEPS += $(call FindFiles, $(MAN_DIR))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# If a specific modules_legal dir exists for this module, only pick up files
|
# If a specific modules_legal dir exists for this module, only pick up files
|
||||||
@@ -91,7 +138,7 @@ LEGAL_NOTICES := \
|
|||||||
)
|
)
|
||||||
|
|
||||||
LEGAL_NOTICES_PATH := $(call PathList, $(LEGAL_NOTICES))
|
LEGAL_NOTICES_PATH := $(call PathList, $(LEGAL_NOTICES))
|
||||||
DEPS += $(call CacheFind, $(LEGAL_NOTICES))
|
DEPS += $(call FindFiles, $(LEGAL_NOTICES))
|
||||||
|
|
||||||
JMOD_FLAGS += --legal-notices $(LEGAL_NOTICES_PATH)
|
JMOD_FLAGS += --legal-notices $(LEGAL_NOTICES_PATH)
|
||||||
|
|
||||||
@@ -145,7 +192,7 @@ endif
|
|||||||
# the actual command. Filter that out using wildcard before adding to DEPS.
|
# the actual command. Filter that out using wildcard before adding to DEPS.
|
||||||
DEPS += $(wildcard $(JMOD_CMD))
|
DEPS += $(wildcard $(JMOD_CMD))
|
||||||
ifeq ($(EXTERNAL_BUILDJDK), false)
|
ifeq ($(EXTERNAL_BUILDJDK), false)
|
||||||
DEPS += $(call CacheFind, $(JDK_OUTPUTDIR)/modules/jdk.jlink/jdk/tools/jmod)
|
DEPS += $(call FindFiles, $(JDK_OUTPUTDIR)/modules/jdk.jlink/jdk/tools/jmod)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# If creating interim versions of jmods, certain files need to be filtered out
|
# If creating interim versions of jmods, certain files need to be filtered out
|
||||||
@@ -154,7 +201,15 @@ ifeq ($(INTERIM_JMOD), true)
|
|||||||
DEPS := $(filter-out $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/classlist, $(DEPS))
|
DEPS := $(filter-out $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/classlist, $(DEPS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
JMOD_FLAGS += --exclude '**{_the.*,_*.marker,*.diz,*.debuginfo,*.dSYM/**,*.dSYM,*.pdb,*.map}'
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
ifeq ($(SHIP_DEBUG_SYMBOLS), )
|
||||||
|
JMOD_FLAGS += --exclude '**{_the.*,_*.marker,*.diz,*.pdb,*.map}'
|
||||||
|
else
|
||||||
|
JMOD_FLAGS += --exclude '**{_the.*,_*.marker,*.diz,*.map}'
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
JMOD_FLAGS += --exclude '**{_the.*,_*.marker,*.diz,*.debuginfo,*.dSYM/**,*.dSYM}'
|
||||||
|
endif
|
||||||
|
|
||||||
# Create jmods in a temp dir and then move them into place to keep the
|
# Create jmods in a temp dir and then move them into place to keep the
|
||||||
# module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times.
|
# module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times.
|
||||||
|
|||||||
@@ -168,14 +168,6 @@ JAVADOC_TOP := \
|
|||||||
font-family: DejaVu Sans, Arial, Helvetica, sans-serif; \
|
font-family: DejaVu Sans, Arial, Helvetica, sans-serif; \
|
||||||
font-weight: normal;">$(DRAFT_TEXT)</div>
|
font-weight: normal;">$(DRAFT_TEXT)</div>
|
||||||
|
|
||||||
JDK_INDEX_CONTENT := \
|
|
||||||
<!DOCTYPE html> \
|
|
||||||
<html lang="en"> \
|
|
||||||
<head> \
|
|
||||||
<meta http-equiv="refresh" content="0;url=api/index.html"> \
|
|
||||||
</head> \
|
|
||||||
</html>
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# JDK javadoc titles/text snippets
|
# JDK javadoc titles/text snippets
|
||||||
|
|
||||||
@@ -341,7 +333,7 @@ define SetupApiDocsGenerationBody
|
|||||||
$$(SUPPORT_OUTPUTDIR)/docs/$1.vardeps)
|
$$(SUPPORT_OUTPUTDIR)/docs/$1.vardeps)
|
||||||
|
|
||||||
# Get a list of all files in all the source dirs for all included modules
|
# Get a list of all files in all the source dirs for all included modules
|
||||||
$1_SOURCE_DEPS := $$(call CacheFind, $$(wildcard $$(foreach module, \
|
$1_SOURCE_DEPS := $$(call FindFiles, $$(wildcard $$(foreach module, \
|
||||||
$$($1_ALL_MODULES), $$(call FindModuleSrcDirs, $$(module)))))
|
$$($1_ALL_MODULES), $$(call FindModuleSrcDirs, $$(module)))))
|
||||||
|
|
||||||
# Javadoc creates a lot of files but use index.html as a marker
|
# Javadoc creates a lot of files but use index.html as a marker
|
||||||
@@ -485,18 +477,11 @@ $(eval $(call SetupApiDocsGeneration, REFERENCE_API, \
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
JDK_INDEX_HTML := $(DOCS_OUTPUTDIR)/index.html
|
# Copy the global resources, including the top-level redirect index.html
|
||||||
|
|
||||||
$(JDK_INDEX_HTML):
|
|
||||||
$(ECHO) '$(JDK_INDEX_CONTENT)' > $@
|
|
||||||
|
|
||||||
JDK_INDEX_TARGETS += $(JDK_INDEX_HTML)
|
|
||||||
|
|
||||||
# Copy the global resources
|
|
||||||
GLOBAL_SPECS_RESOURCES_DIR := $(TOPDIR)/make/data/docs-resources/
|
GLOBAL_SPECS_RESOURCES_DIR := $(TOPDIR)/make/data/docs-resources/
|
||||||
$(eval $(call SetupCopyFiles, COPY_GLOBAL_RESOURCES, \
|
$(eval $(call SetupCopyFiles, COPY_GLOBAL_RESOURCES, \
|
||||||
SRC := $(GLOBAL_SPECS_RESOURCES_DIR), \
|
SRC := $(GLOBAL_SPECS_RESOURCES_DIR), \
|
||||||
FILES := $(call CacheFind, $(GLOBAL_SPECS_RESOURCES_DIR)), \
|
FILES := $(call FindFiles, $(GLOBAL_SPECS_RESOURCES_DIR)), \
|
||||||
DEST := $(DOCS_OUTPUTDIR), \
|
DEST := $(DOCS_OUTPUTDIR), \
|
||||||
))
|
))
|
||||||
JDK_INDEX_TARGETS += $(COPY_GLOBAL_RESOURCES)
|
JDK_INDEX_TARGETS += $(COPY_GLOBAL_RESOURCES)
|
||||||
@@ -521,10 +506,10 @@ COPY_SPEC_FILTER := %.html %.gif %.jpg %.mib %.css
|
|||||||
$(foreach m, $(ALL_MODULES), \
|
$(foreach m, $(ALL_MODULES), \
|
||||||
$(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
|
$(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
|
||||||
$(foreach d, $(SPECS_$m), \
|
$(foreach d, $(SPECS_$m), \
|
||||||
$(if $(filter $(COPY_SPEC_FILTER), $(call CacheFind, $d)), \
|
$(if $(filter $(COPY_SPEC_FILTER), $(call FindFiles, $d)), \
|
||||||
$(eval $(call SetupCopyFiles, COPY_$m, \
|
$(eval $(call SetupCopyFiles, COPY_$m, \
|
||||||
SRC := $d, \
|
SRC := $d, \
|
||||||
FILES := $(filter $(COPY_SPEC_FILTER), $(call CacheFind, $d)), \
|
FILES := $(filter $(COPY_SPEC_FILTER), $(call FindFiles, $d)), \
|
||||||
DEST := $(DOCS_OUTPUTDIR)/specs/, \
|
DEST := $(DOCS_OUTPUTDIR)/specs/, \
|
||||||
)) \
|
)) \
|
||||||
$(eval JDK_SPECS_TARGETS += $(COPY_$m)) \
|
$(eval JDK_SPECS_TARGETS += $(COPY_$m)) \
|
||||||
@@ -541,11 +526,11 @@ ifeq ($(ENABLE_FULL_DOCS), true)
|
|||||||
$(foreach m, $(ALL_MODULES), \
|
$(foreach m, $(ALL_MODULES), \
|
||||||
$(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
|
$(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
|
||||||
$(foreach d, $(SPECS_$m), \
|
$(foreach d, $(SPECS_$m), \
|
||||||
$(if $(filter %.md, $(call CacheFind, $d)), \
|
$(if $(filter %.md, $(call FindFiles, $d)), \
|
||||||
$(eval $m_$d_NAME := CONVERT_MARKDOWN_$m_$(strip $(call RelativePath, $d, $(TOPDIR)))) \
|
$(eval $m_$d_NAME := CONVERT_MARKDOWN_$m_$(strip $(call RelativePath, $d, $(TOPDIR)))) \
|
||||||
$(eval $(call SetupProcessMarkdown, $($m_$d_NAME), \
|
$(eval $(call SetupProcessMarkdown, $($m_$d_NAME), \
|
||||||
SRC := $d, \
|
SRC := $d, \
|
||||||
FILES := $(filter %.md, $(call CacheFind, $d)), \
|
FILES := $(filter %.md, $(call FindFiles, $d)), \
|
||||||
DEST := $(DOCS_OUTPUTDIR)/specs/, \
|
DEST := $(DOCS_OUTPUTDIR)/specs/, \
|
||||||
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
|
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
|
||||||
)) \
|
)) \
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -84,6 +84,17 @@ $(eval $(call SetupCopyFiles, COPY_CLASSLIST, \
|
|||||||
|
|
||||||
TARGETS += $(COPY_CLASSLIST)
|
TARGETS += $(COPY_CLASSLIST)
|
||||||
|
|
||||||
|
# In case of shipping public debug symbols on windows, there is another temporary
|
||||||
|
# location from where jmods are compiled - need to deploy classlist there, too.
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS)+$(SHIP_DEBUG_SYMBOLS), windows+public)
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_CLASSLIST_TO_FILTERED, \
|
||||||
|
FILES := $(CLASSLIST_FILE), \
|
||||||
|
DEST := $(SUPPORT_OUTPUTDIR)/modules_libs_filtered/java.base, \
|
||||||
|
))
|
||||||
|
|
||||||
|
TARGETS += $(COPY_CLASSLIST_TO_FILTERED)
|
||||||
|
endif
|
||||||
|
|
||||||
# Copy the default_jli_trace.txt file into jdk.jlink
|
# Copy the default_jli_trace.txt file into jdk.jlink
|
||||||
$(eval $(call SetupCopyFiles, COPY_JLI_TRACE, \
|
$(eval $(call SetupCopyFiles, COPY_JLI_TRACE, \
|
||||||
FILES := $(JLI_TRACE_FILE), \
|
FILES := $(JLI_TRACE_FILE), \
|
||||||
|
|||||||
57
make/GraalBuilderImage.gmk
Normal file
57
make/GraalBuilderImage.gmk
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2020, Red Hat Inc.
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
# This makefile creates a jdk image overlayed with statically linked core
|
||||||
|
# libraries.
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
|
include $(SPEC)
|
||||||
|
include MakeBase.gmk
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
TARGETS :=
|
||||||
|
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_JDK_IMG, \
|
||||||
|
SRC := $(JDK_IMAGE_DIR)/, \
|
||||||
|
DEST := $(GRAAL_BUILDER_IMAGE_DIR)/, \
|
||||||
|
FILES := $(call FindFiles, $(JDK_IMAGE_DIR)/), \
|
||||||
|
))
|
||||||
|
TARGETS += $(COPY_JDK_IMG)
|
||||||
|
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_STATIC_LIBS, \
|
||||||
|
SRC := $(STATIC_LIBS_IMAGE_DIR)/lib, \
|
||||||
|
DEST := $(GRAAL_BUILDER_IMAGE_DIR)/lib, \
|
||||||
|
FILES := $(filter %$(STATIC_LIBRARY_SUFFIX), \
|
||||||
|
$(call FindFiles, $(STATIC_LIBS_IMAGE_DIR)/lib)), \
|
||||||
|
))
|
||||||
|
TARGETS += $(COPY_STATIC_LIBS)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
@@ -43,7 +43,7 @@ help:
|
|||||||
$(info $(_) make images # Create a complete jdk image)
|
$(info $(_) make images # Create a complete jdk image)
|
||||||
$(info $(_) # (alias for product-images))
|
$(info $(_) # (alias for product-images))
|
||||||
$(info $(_) make <name>-image # Build just the image for any of: )
|
$(info $(_) make <name>-image # Build just the image for any of: )
|
||||||
$(info $(_) # jdk, test, docs, symbols, legacy-jre)
|
$(info $(_) # jdk, test, docs, symbols, legacy-jre, static-libs)
|
||||||
$(info $(_) make <phase> # Build the specified phase and everything it depends on)
|
$(info $(_) make <phase> # Build the specified phase and everything it depends on)
|
||||||
$(info $(_) # (gensrc, java, copy, libs, launchers, gendata, rmic))
|
$(info $(_) # (gensrc, java, copy, libs, launchers, gendata, rmic))
|
||||||
$(info $(_) make *-only # Applies to most targets and disables building the)
|
$(info $(_) make *-only # Applies to most targets and disables building the)
|
||||||
@@ -119,7 +119,7 @@ print-configurations:
|
|||||||
run-test-prebuilt:
|
run-test-prebuilt:
|
||||||
@( cd $(topdir) && \
|
@( cd $(topdir) && \
|
||||||
$(MAKE) --no-print-directory -r -R -I make/common/ -f make/RunTestsPrebuilt.gmk \
|
$(MAKE) --no-print-directory -r -R -I make/common/ -f make/RunTestsPrebuilt.gmk \
|
||||||
run-test-prebuilt TEST="$(TEST)" )
|
run-test-prebuilt CUSTOM_MAKE_DIR=$(CUSTOM_MAKE_DIR) TEST="$(TEST)" )
|
||||||
|
|
||||||
ALL_GLOBAL_TARGETS := help print-configurations run-test-prebuilt
|
ALL_GLOBAL_TARGETS := help print-configurations run-test-prebuilt
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -276,21 +276,14 @@ endif
|
|||||||
|
|
||||||
ifeq ($(GCOV_ENABLED), true)
|
ifeq ($(GCOV_ENABLED), true)
|
||||||
|
|
||||||
GCOV_FIND_EXPR := -type f -name "*.gcno"
|
$(eval $(call SetupCopyFiles,COPY_GCOV_GCNO, \
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles,COPY_HOTSPOT_GCOV_GCNO, \
|
|
||||||
SRC := $(OUTPUTDIR), \
|
SRC := $(OUTPUTDIR), \
|
||||||
DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
|
DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
|
||||||
FILES := $(shell $(FIND) $(HOTSPOT_OUTPUTDIR) $(GCOV_FIND_EXPR))))
|
FILES := $(call FindFiles, $(HOTSPOT_OUTPUTDIR) \
|
||||||
|
$(SUPPORT_OUTPUTDIR)/native, *.gcno) \
|
||||||
|
))
|
||||||
|
|
||||||
SYMBOLS_TARGETS += $(COPY_HOTSPOT_GCOV_GCNO)
|
SYMBOLS_TARGETS += $(COPY_GCOV_GCNO)
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles,COPY_JDK_GCOV_GCNO, \
|
|
||||||
SRC := $(OUTPUTDIR), \
|
|
||||||
DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
|
|
||||||
FILES := $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/native $(GCOV_FIND_EXPR))))
|
|
||||||
|
|
||||||
SYMBOLS_TARGETS += $(COPY_JDK_GCOV_GCNO)
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -308,6 +301,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
|||||||
else
|
else
|
||||||
LIBS_TARGET_SUBDIR := lib
|
LIBS_TARGET_SUBDIR := lib
|
||||||
endif
|
endif
|
||||||
|
CMDS_TARGET_SUBDIR := bin
|
||||||
|
|
||||||
# Param 1 - dir to find debuginfo files in
|
# Param 1 - dir to find debuginfo files in
|
||||||
FindDebuginfoFiles = \
|
FindDebuginfoFiles = \
|
||||||
@@ -323,13 +317,16 @@ else
|
|||||||
# On Macosx, if debug symbols have not been zipped, find all files inside *.dSYM
|
# On Macosx, if debug symbols have not been zipped, find all files inside *.dSYM
|
||||||
# dirs.
|
# dirs.
|
||||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||||
$(eval $(call FillCacheFind, \
|
$(call FillFindCache, \
|
||||||
$(SUPPORT_OUTPUTDIR)/modules_cmds $(SUPPORT_OUTPUTDIR)/modules_libs))
|
$(SUPPORT_OUTPUTDIR)/modules_libs $(SUPPORT_OUTPUTDIR)/modules_cmds)
|
||||||
FindDebuginfoFiles = \
|
FindDebuginfoFiles = \
|
||||||
$(if $(wildcard $1), $(call containing, .dSYM/, $(call CacheFind, $1)))
|
$(if $(wildcard $1), $(call containing, .dSYM/, $(call FindFiles, $1)))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
FILTERED_PDBS := %jimage.stripped.pdb %jpackage.stripped.pdb %java.stripped.pdb \
|
||||||
|
%jimage.pdb %jpackage.pdb %java.pdb %jimage.map %jpackage.map %java.map
|
||||||
|
|
||||||
# Param 1 - either JDK or JRE
|
# Param 1 - either JDK or JRE
|
||||||
SetupCopyDebuginfo = \
|
SetupCopyDebuginfo = \
|
||||||
$(foreach m, $(ALL_$1_MODULES), \
|
$(foreach m, $(ALL_$1_MODULES), \
|
||||||
@@ -340,6 +337,13 @@ SetupCopyDebuginfo = \
|
|||||||
$(SUPPORT_OUTPUTDIR)/modules_libs/$m), \
|
$(SUPPORT_OUTPUTDIR)/modules_libs/$m), \
|
||||||
)) \
|
)) \
|
||||||
$(eval $1_TARGETS += $$(COPY_$1_LIBS_DEBUGINFO_$m)) \
|
$(eval $1_TARGETS += $$(COPY_$1_LIBS_DEBUGINFO_$m)) \
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_$1_CMDS_DEBUGINFO_$m, \
|
||||||
|
SRC := $(SUPPORT_OUTPUTDIR)/modules_cmds/$m, \
|
||||||
|
DEST := $($1_IMAGE_DIR)/$(CMDS_TARGET_SUBDIR), \
|
||||||
|
FILES := $(filter-out $(FILTERED_PDBS), $(call FindDebuginfoFiles, \
|
||||||
|
$(SUPPORT_OUTPUTDIR)/modules_cmds/$m)), \
|
||||||
|
)) \
|
||||||
|
$(eval $1_TARGETS += $$(COPY_$1_CMDS_DEBUGINFO_$m)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
# No space before argument to avoid having to put $(strip ) everywhere in
|
# No space before argument to avoid having to put $(strip ) everywhere in
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2019, 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,26 +52,24 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
|||||||
$(eval $(call SetupCopyFiles, COPY_JDK_IMAGE, \
|
$(eval $(call SetupCopyFiles, COPY_JDK_IMAGE, \
|
||||||
SRC := $(JDK_IMAGE_DIR), \
|
SRC := $(JDK_IMAGE_DIR), \
|
||||||
DEST := $(JDK_MACOSX_CONTENTS_DIR)/Home, \
|
DEST := $(JDK_MACOSX_CONTENTS_DIR)/Home, \
|
||||||
FILES := $(call CacheFind, $(JDK_IMAGE_DIR)), \
|
FILES := $(call FindFiles, $(JDK_IMAGE_DIR)), \
|
||||||
))
|
))
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles, COPY_JRE_IMAGE, \
|
$(eval $(call SetupCopyFiles, COPY_JRE_IMAGE, \
|
||||||
SRC := $(JRE_IMAGE_DIR), \
|
SRC := $(JRE_IMAGE_DIR), \
|
||||||
DEST := $(JRE_MACOSX_CONTENTS_DIR)/Home, \
|
DEST := $(JRE_MACOSX_CONTENTS_DIR)/Home, \
|
||||||
FILES := $(call CacheFind, $(JRE_IMAGE_DIR)), \
|
FILES := $(call FindFiles, $(JRE_IMAGE_DIR)), \
|
||||||
))
|
))
|
||||||
|
|
||||||
$(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib:
|
$(eval $(call SetupCopyFiles, COPY_LIBJLI_JDK, \
|
||||||
$(call LogInfo, Creating link $(patsubst $(OUTPUTDIR)/%,%,$@))
|
FILES := $(JDK_IMAGE_DIR)/lib/jli/libjli.dylib, \
|
||||||
$(MKDIR) -p $(@D)
|
DEST := $(JDK_MACOSX_CONTENTS_DIR)/MacOS, \
|
||||||
$(RM) $@
|
))
|
||||||
$(LN) -s ../Home/lib/jli/libjli.dylib $@
|
|
||||||
|
|
||||||
$(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib:
|
$(eval $(call SetupCopyFiles, COPY_LIBJLI_JRE, \
|
||||||
$(call LogInfo, Creating link $(patsubst $(OUTPUTDIR)/%,%,$@))
|
FILES := $(JRE_IMAGE_DIR)/lib/jli/libjli.dylib, \
|
||||||
$(MKDIR) -p $(@D)
|
DEST := $(JRE_MACOSX_CONTENTS_DIR)/MacOS, \
|
||||||
$(RM) $@
|
))
|
||||||
$(LN) -s ../Home/lib/jli/libjli.dylib $@
|
|
||||||
|
|
||||||
$(eval $(call SetupTextFileProcessing, BUILD_JDK_PLIST, \
|
$(eval $(call SetupTextFileProcessing, BUILD_JDK_PLIST, \
|
||||||
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JDK-Info.plist, \
|
SOURCE_FILES := $(MACOSX_PLIST_SRC)/JDK-Info.plist, \
|
||||||
@@ -97,13 +95,19 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
|||||||
@@VENDOR@@ => $(BUNDLE_VENDOR) , \
|
@@VENDOR@@ => $(BUNDLE_VENDOR) , \
|
||||||
))
|
))
|
||||||
|
|
||||||
jdk-bundle: $(COPY_JDK_IMAGE) $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \
|
$(SUPPORT_OUTPUTDIR)/images/_jdk_bundle_attribute_set: $(COPY_JDK_IMAGE)
|
||||||
$(BUILD_JDK_PLIST)
|
|
||||||
$(SETFILE) -a B $(dir $(JDK_MACOSX_CONTENTS_DIR))
|
$(SETFILE) -a B $(dir $(JDK_MACOSX_CONTENTS_DIR))
|
||||||
|
$(TOUCH) $@
|
||||||
|
|
||||||
jre-bundle: $(COPY_JRE_IMAGE) $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \
|
$(SUPPORT_OUTPUTDIR)/images/_jre_bundle_attribute_set: $(COPY_JRE_IMAGE)
|
||||||
$(BUILD_JRE_PLIST)
|
|
||||||
$(SETFILE) -a B $(dir $(JRE_MACOSX_CONTENTS_DIR))
|
$(SETFILE) -a B $(dir $(JRE_MACOSX_CONTENTS_DIR))
|
||||||
|
$(TOUCH) $@
|
||||||
|
|
||||||
|
jdk-bundle: $(COPY_JDK_IMAGE) $(COPY_LIBJLI_JDK) \
|
||||||
|
$(BUILD_JDK_PLIST) $(SUPPORT_OUTPUTDIR)/images/_jdk_bundle_attribute_set
|
||||||
|
|
||||||
|
jre-bundle: $(COPY_JRE_IMAGE) $(COPY_LIBJLI_JRE) \
|
||||||
|
$(BUILD_JRE_PLIST) $(SUPPORT_OUTPUTDIR)/images/_jre_bundle_attribute_set
|
||||||
|
|
||||||
else # Not macosx
|
else # Not macosx
|
||||||
|
|
||||||
|
|||||||
170
make/Main.gmk
170
make/Main.gmk
@@ -1,5 +1,5 @@
|
|||||||
#
|
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -78,13 +78,9 @@ ifneq ($(CREATING_BUILDJDK), true)
|
|||||||
interim-rmic:
|
interim-rmic:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
|
||||||
|
|
||||||
interim-cldrconverter:
|
interim-tzdb:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk)
|
|
||||||
|
|
||||||
interim-tzdb:
|
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimTZDB.gmk)
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimTZDB.gmk)
|
||||||
|
|
||||||
|
|
||||||
buildtools-jdk:
|
buildtools-jdk:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsJdk.gmk)
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsJdk.gmk)
|
||||||
|
|
||||||
@@ -96,7 +92,7 @@ interim-tzdb:
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ALL_TARGETS += buildtools-langtools interim-langtools \
|
ALL_TARGETS += buildtools-langtools interim-langtools \
|
||||||
interim-rmic interim-cldrconverter interim-tzdb buildtools-jdk buildtools-modules \
|
interim-rmic interim-tzdb buildtools-jdk buildtools-modules \
|
||||||
buildtools-hotspot
|
buildtools-hotspot
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -140,7 +136,7 @@ ifneq ($(CREATING_BUILDJDK), true)
|
|||||||
define DeclareModuleInfoRecipe
|
define DeclareModuleInfoRecipe
|
||||||
$1-gensrc-moduleinfo:
|
$1-gensrc-moduleinfo:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
|
||||||
-f GensrcModuleInfo.gmk MODULE=$1)
|
-f gensrc/GensrcModuleInfo.gmk MODULE=$1)
|
||||||
|
|
||||||
$1-gensrc: $1-gensrc-moduleinfo
|
$1-gensrc: $1-gensrc-moduleinfo
|
||||||
endef
|
endef
|
||||||
@@ -225,6 +221,21 @@ $(eval $(call DeclareRecipesForPhase, LIBS, \
|
|||||||
|
|
||||||
ALL_TARGETS += $(LIBS_TARGETS)
|
ALL_TARGETS += $(LIBS_TARGETS)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Targets for compiling static versions of certain native libraries. These do
|
||||||
|
# not end up in the jmods or the normal JDK image, but are instead bundled into
|
||||||
|
# a special deliverable.
|
||||||
|
$(eval $(call DeclareRecipesForPhase, STATIC_LIBS, \
|
||||||
|
TARGET_SUFFIX := static-libs, \
|
||||||
|
FILE_PREFIX := Lib, \
|
||||||
|
MAKE_SUBDIR := lib, \
|
||||||
|
CHECK_MODULES := $(ALL_MODULES), \
|
||||||
|
USE_WRAPPER := true, \
|
||||||
|
EXTRA_ARGS := STATIC_LIBS=true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
ALL_TARGETS += $(STATIC_LIBS_TARGETS)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Targets for compiling native executables
|
# Targets for compiling native executables
|
||||||
$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
|
$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
|
||||||
@@ -266,6 +277,52 @@ hotspot-ide-project:
|
|||||||
ALL_TARGETS += $(HOTSPOT_VARIANT_TARGETS) $(HOTSPOT_VARIANT_GENSRC_TARGETS) \
|
ALL_TARGETS += $(HOTSPOT_VARIANT_TARGETS) $(HOTSPOT_VARIANT_GENSRC_TARGETS) \
|
||||||
$(HOTSPOT_VARIANT_LIBS_TARGETS) hotspot-ide-project
|
$(HOTSPOT_VARIANT_LIBS_TARGETS) hotspot-ide-project
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Generate libs and launcher targets for creating compile_commands.json fragments
|
||||||
|
define DeclareCompileCommandsRecipe
|
||||||
|
$1-compile-commands:
|
||||||
|
$$(call LogInfo, Generating compile_commands.json fragments for $1)
|
||||||
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk $1-only \
|
||||||
|
GENERATE_COMPILE_COMMANDS_ONLY=true)
|
||||||
|
|
||||||
|
COMPILE_COMMANDS_TARGETS_$2 += $1-compile-commands
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(foreach t, $(HOTSPOT_VARIANT_LIBS_TARGETS), \
|
||||||
|
$(eval $(call DeclareCompileCommandsRecipe,$t,HOTSPOT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
$(foreach t, $(LIBS_TARGETS) $(LAUNCHER_TARGETS), \
|
||||||
|
$(eval $(call DeclareCompileCommandsRecipe,$t,JDK)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
compile-commands compile-commands-hotspot:
|
||||||
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileCommands.gmk)
|
||||||
|
|
||||||
|
ALL_TARGETS += $(COMPILE_COMMANDS_TARGETS_HOTSPOT) $(COMPILE_COMMANDS_TARGETS_JDK)
|
||||||
|
ALL_TARGETS += compile-commands compile-commands-hotspot
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# VS Code projects
|
||||||
|
vscode-project:
|
||||||
|
+($(CD) $(TOPDIR)/make/vscode && $(MAKE) $(MAKE_ARGS) -f CreateVSCodeProject.gmk \
|
||||||
|
VSCODE_INDEXER=cpptools)
|
||||||
|
|
||||||
|
vscode-project-clangd:
|
||||||
|
+($(CD) $(TOPDIR)/make/vscode && $(MAKE) $(MAKE_ARGS) -f CreateVSCodeProject.gmk \
|
||||||
|
VSCODE_INDEXER=clangd)
|
||||||
|
|
||||||
|
vscode-project-rtags:
|
||||||
|
+($(CD) $(TOPDIR)/make/vscode && $(MAKE) $(MAKE_ARGS) -f CreateVSCodeProject.gmk \
|
||||||
|
VSCODE_INDEXER=rtags)
|
||||||
|
|
||||||
|
vscode-project-ccls:
|
||||||
|
+($(CD) $(TOPDIR)/make/vscode && $(MAKE) $(MAKE_ARGS) -f CreateVSCodeProject.gmk \
|
||||||
|
VSCODE_INDEXER=ccls)
|
||||||
|
|
||||||
|
ALL_TARGETS += vscode-project vscode-project-clangd vscode-project-rtags \
|
||||||
|
vscode-project-ccls
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Build demos targets
|
# Build demos targets
|
||||||
|
|
||||||
@@ -338,6 +395,9 @@ legacy-jre-image:
|
|||||||
symbols-image:
|
symbols-image:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk symbols)
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk symbols)
|
||||||
|
|
||||||
|
static-libs-image:
|
||||||
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f StaticLibsImage.gmk)
|
||||||
|
|
||||||
mac-jdk-bundle:
|
mac-jdk-bundle:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk jdk-bundle)
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk jdk-bundle)
|
||||||
|
|
||||||
@@ -350,10 +410,13 @@ release-file:
|
|||||||
exploded-image-optimize:
|
exploded-image-optimize:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk)
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk)
|
||||||
|
|
||||||
|
graal-builder-image:
|
||||||
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GraalBuilderImage.gmk)
|
||||||
|
|
||||||
ALL_TARGETS += store-source-revision create-source-revision-tracker bootcycle-images zip-security \
|
ALL_TARGETS += store-source-revision create-source-revision-tracker bootcycle-images zip-security \
|
||||||
zip-source jrtfs-jar jdk-image legacy-jre-image \
|
zip-source jrtfs-jar jdk-image legacy-jre-image \
|
||||||
symbols-image mac-jdk-bundle mac-legacy-jre-bundle \
|
symbols-image static-libs-image mac-jdk-bundle mac-legacy-jre-bundle \
|
||||||
release-file exploded-image-optimize
|
release-file exploded-image-optimize graal-builder-image
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Docs targets
|
# Docs targets
|
||||||
@@ -563,8 +626,12 @@ test-jdk-jtreg-native:
|
|||||||
test-make:
|
test-make:
|
||||||
($(CD) $(TOPDIR)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
|
($(CD) $(TOPDIR)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
|
||||||
|
|
||||||
|
test-compile-commands:
|
||||||
|
($(CD) $(TOPDIR)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk test-compile-commands)
|
||||||
|
|
||||||
ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
|
ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
|
||||||
test-hotspot-internal test-hotspot-gtest test-jdk-jtreg-native test-make
|
test-hotspot-internal test-hotspot-gtest test-jdk-jtreg-native test-make \
|
||||||
|
test-compile-commands
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Bundles
|
# Bundles
|
||||||
@@ -581,7 +648,11 @@ test-bundles:
|
|||||||
docs-bundles:
|
docs-bundles:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles)
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles)
|
||||||
|
|
||||||
ALL_TARGETS += product-bundles legacy-bundles test-bundles docs-bundles
|
static-libs-bundles:
|
||||||
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk static-libs-bundles)
|
||||||
|
|
||||||
|
ALL_TARGETS += product-bundles legacy-bundles test-bundles docs-bundles \
|
||||||
|
static-libs-bundles
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Install targets
|
# Install targets
|
||||||
@@ -614,7 +685,7 @@ else
|
|||||||
|
|
||||||
interim-langtools: $(INTERIM_LANGTOOLS_GENSRC_TARGETS)
|
interim-langtools: $(INTERIM_LANGTOOLS_GENSRC_TARGETS)
|
||||||
|
|
||||||
buildtools-jdk: interim-langtools interim-cldrconverter interim-tzdb
|
buildtools-jdk: interim-langtools interim-tzdb
|
||||||
|
|
||||||
buildtools-hotspot: interim-langtools
|
buildtools-hotspot: interim-langtools
|
||||||
|
|
||||||
@@ -636,7 +707,7 @@ else
|
|||||||
|
|
||||||
# Declare dependencies between hotspot-<variant>* targets
|
# Declare dependencies between hotspot-<variant>* targets
|
||||||
$(foreach v, $(JVM_VARIANTS), \
|
$(foreach v, $(JVM_VARIANTS), \
|
||||||
$(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \
|
$(eval hotspot-$v-gensrc: java.base-copy) \
|
||||||
$(eval hotspot-$v-libs: hotspot-$v-gensrc java.base-copy) \
|
$(eval hotspot-$v-libs: hotspot-$v-gensrc java.base-copy) \
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -646,10 +717,14 @@ else
|
|||||||
|
|
||||||
# If not already set, set the JVM variant target so that the JVM will be built.
|
# If not already set, set the JVM variant target so that the JVM will be built.
|
||||||
JVM_MAIN_LIB_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-libs
|
JVM_MAIN_LIB_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-libs
|
||||||
|
JVM_MAIN_GENSRC_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc
|
||||||
|
|
||||||
# Building one JVM variant is enough to start building the other libs
|
# Building one JVM variant is enough to start building the other libs
|
||||||
$(LIBS_TARGETS): $(JVM_MAIN_LIB_TARGETS)
|
$(LIBS_TARGETS): $(JVM_MAIN_LIB_TARGETS)
|
||||||
|
|
||||||
|
# Static libs depend on hotspot gensrc
|
||||||
|
$(STATIC_LIBS_TARGETS): $(JVM_MAIN_GENSRC_TARGETS)
|
||||||
|
|
||||||
$(LAUNCHER_TARGETS): java.base-libs
|
$(LAUNCHER_TARGETS): java.base-libs
|
||||||
|
|
||||||
ifeq ($(STATIC_BUILD), true)
|
ifeq ($(STATIC_BUILD), true)
|
||||||
@@ -698,16 +773,17 @@ else
|
|||||||
# copied and processed.
|
# copied and processed.
|
||||||
java.desktop-gensrc-src: java.base-gensrc java.base-copy
|
java.desktop-gensrc-src: java.base-gensrc java.base-copy
|
||||||
|
|
||||||
# The annotation processing for jdk.internal.vm.ci and jdk.internal.vm.compiler
|
# The annotation processing for jdk.internal.vm.compiler
|
||||||
# needs classes from the current JDK.
|
# and jdk.internal.vm.compiler.management needs classes from the current JDK.
|
||||||
jdk.internal.vm.ci-gensrc-src: $(addsuffix -java, \
|
|
||||||
$(call FindTransitiveDepsForModule, jdk.internal.vm.ci))
|
|
||||||
jdk.internal.vm.compiler-gensrc-src: $(addsuffix -java, \
|
jdk.internal.vm.compiler-gensrc-src: $(addsuffix -java, \
|
||||||
$(call FindTransitiveDepsForModule, jdk.internal.vm.compiler))
|
$(call FindTransitiveDepsForModule, jdk.internal.vm.compiler))
|
||||||
|
jdk.internal.vm.compiler.management-gensrc-src: $(addsuffix -java, \
|
||||||
|
$(call FindTransitiveDepsForModule, jdk.internal.vm.compiler.management))
|
||||||
|
|
||||||
# For jdk.internal.vm.compiler, the gensrc step is generating a module-info.java.extra
|
# For these modules, the gensrc step is generating a module-info.java.extra
|
||||||
# file to be processed by the gensrc-moduleinfo target.
|
# file to be processed by the gensrc-moduleinfo target.
|
||||||
jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-src
|
jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-src
|
||||||
|
jdk.internal.vm.compiler.management-gensrc-moduleinfo: jdk.internal.vm.compiler.management-gensrc-src
|
||||||
|
|
||||||
jdk.jdeps-gendata: java rmic
|
jdk.jdeps-gendata: java rmic
|
||||||
|
|
||||||
@@ -742,6 +818,31 @@ else
|
|||||||
$(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS)))
|
$(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS)))
|
||||||
$(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS)))
|
$(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS)))
|
||||||
|
|
||||||
|
# Setup the minimal set of generated native source dependencies for hotspot
|
||||||
|
$(foreach v, $(JVM_VARIANTS), \
|
||||||
|
$(eval hotspot-$v-libs-compile-commands: hotspot-$v-gensrc) \
|
||||||
|
$(foreach m, $(filter java.desktop jdk.hotspot.agent, $(GENSRC_MODULES)), \
|
||||||
|
$(eval hotspot-$v-libs-compile-commands: $m-gensrc)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
# For the full JDK compile commands, create all possible generated sources
|
||||||
|
$(foreach m, $(GENSRC_MODULES), $(eval $m-libs-compile-commands: $m-gensrc))
|
||||||
|
$(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs-compile-commands: $m-java))
|
||||||
|
|
||||||
|
$(COMPILE_COMMANDS_TARGETS_HOTSPOT): clean-compile-commands
|
||||||
|
$(COMPILE_COMMANDS_TARGETS_JDK): clean-compile-commands
|
||||||
|
compile-commands-hotspot: $(COMPILE_COMMANDS_TARGETS_HOTSPOT)
|
||||||
|
compile-commands: $(COMPILE_COMMANDS_TARGETS_HOTSPOT) $(COMPILE_COMMANDS_TARGETS_JDK)
|
||||||
|
|
||||||
|
# The -static-libs targets depend on -java as well as java.base-copy.
|
||||||
|
$(foreach m, $(filter $(JAVA_MODULES), $(STATIC_LIBS_MODULES)), \
|
||||||
|
$(eval $m-static-libs: $m-java java.base-copy))
|
||||||
|
|
||||||
|
vscode-project: compile-commands
|
||||||
|
vscode-project-clangd: compile-commands
|
||||||
|
vscode-project-rtags: compile-commands
|
||||||
|
vscode-project-ccls: compile-commands
|
||||||
|
|
||||||
# Jmods cannot be created until we have the jmod tool ready to run. During
|
# Jmods cannot be created until we have the jmod tool ready to run. During
|
||||||
# a normal build we run it from the exploded image, but when cross compiling
|
# a normal build we run it from the exploded image, but when cross compiling
|
||||||
# it's run from the buildjdk, which is either created at build time or user
|
# it's run from the buildjdk, which is either created at build time or user
|
||||||
@@ -804,6 +905,10 @@ else
|
|||||||
legacy-jre-image: jmods release-file
|
legacy-jre-image: jmods release-file
|
||||||
symbols-image: $(LIBS_TARGETS) $(LAUNCHER_TARGETS)
|
symbols-image: $(LIBS_TARGETS) $(LAUNCHER_TARGETS)
|
||||||
|
|
||||||
|
static-libs-image: $(STATIC_LIBS_TARGETS)
|
||||||
|
|
||||||
|
graal-builder-image: jdk-image static-libs-image
|
||||||
|
|
||||||
mac-jdk-bundle: jdk-image
|
mac-jdk-bundle: jdk-image
|
||||||
mac-legacy-jre-bundle: legacy-jre-image
|
mac-legacy-jre-bundle: legacy-jre-image
|
||||||
|
|
||||||
@@ -856,6 +961,8 @@ else
|
|||||||
|
|
||||||
test-make: clean-test-make
|
test-make: clean-test-make
|
||||||
|
|
||||||
|
test-compile-commands: compile-commands
|
||||||
|
|
||||||
build-test-lib: exploded-image-optimize
|
build-test-lib: exploded-image-optimize
|
||||||
|
|
||||||
build-test-failure-handler: interim-langtools
|
build-test-failure-handler: interim-langtools
|
||||||
@@ -895,6 +1002,8 @@ else
|
|||||||
|
|
||||||
docs-bundles: docs-image
|
docs-bundles: docs-image
|
||||||
|
|
||||||
|
static-libs-bundles: static-libs-image
|
||||||
|
|
||||||
generate-summary: jmods buildtools-modules
|
generate-summary: jmods buildtools-modules
|
||||||
|
|
||||||
update-x11wrappers: java.base-copy buildtools-jdk
|
update-x11wrappers: java.base-copy buildtools-jdk
|
||||||
@@ -909,6 +1018,10 @@ JVM_TOOLS_TARGETS ?= buildtools-hotspot
|
|||||||
buildtools: buildtools-langtools interim-langtools interim-rmic \
|
buildtools: buildtools-langtools interim-langtools interim-rmic \
|
||||||
buildtools-jdk $(JVM_TOOLS_TARGETS)
|
buildtools-jdk $(JVM_TOOLS_TARGETS)
|
||||||
|
|
||||||
|
# Declare dependencies from hotspot-<variant> targets
|
||||||
|
$(foreach v, $(JVM_VARIANTS), \
|
||||||
|
$(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \
|
||||||
|
)
|
||||||
hotspot: $(HOTSPOT_VARIANT_TARGETS)
|
hotspot: $(HOTSPOT_VARIANT_TARGETS)
|
||||||
|
|
||||||
# Create targets hotspot-libs and hotspot-gensrc.
|
# Create targets hotspot-libs and hotspot-gensrc.
|
||||||
@@ -929,6 +1042,8 @@ rmic: $(RMIC_TARGETS)
|
|||||||
|
|
||||||
libs: $(LIBS_TARGETS)
|
libs: $(LIBS_TARGETS)
|
||||||
|
|
||||||
|
static-libs: $(STATIC_LIBS_TARGETS)
|
||||||
|
|
||||||
launchers: $(LAUNCHER_TARGETS)
|
launchers: $(LAUNCHER_TARGETS)
|
||||||
|
|
||||||
jmods: $(JMOD_TARGETS)
|
jmods: $(JMOD_TARGETS)
|
||||||
@@ -1035,10 +1150,10 @@ test-image: prepare-test-image \
|
|||||||
all-images: product-images test-image docs-image
|
all-images: product-images test-image docs-image
|
||||||
|
|
||||||
# all-bundles packages all our deliverables as tar.gz bundles.
|
# all-bundles packages all our deliverables as tar.gz bundles.
|
||||||
all-bundles: product-bundles test-bundles docs-bundles
|
all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
|
||||||
|
|
||||||
ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
|
ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
|
||||||
copy java rmic libs launchers jmods \
|
copy java rmic libs static-libs launchers jmods \
|
||||||
jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
|
jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
|
||||||
exploded-image-base exploded-image \
|
exploded-image-base exploded-image \
|
||||||
create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \
|
create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \
|
||||||
@@ -1085,12 +1200,15 @@ CLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \
|
|||||||
|
|
||||||
# Remove everything, except the output from configure.
|
# Remove everything, except the output from configure.
|
||||||
clean: $(CLEAN_DIR_TARGETS)
|
clean: $(CLEAN_DIR_TARGETS)
|
||||||
($(CD) $(OUTPUTDIR) && $(RM) -r build*.log*)
|
($(CD) $(OUTPUTDIR) && $(RM) -r build*.log* compile_commands.json)
|
||||||
$(ECHO) Cleaned all build artifacts.
|
$(ECHO) Cleaned all build artifacts.
|
||||||
|
|
||||||
clean-docs:
|
clean-docs:
|
||||||
$(call CleanDocs)
|
$(call CleanDocs)
|
||||||
|
|
||||||
|
clean-compile-commands:
|
||||||
|
$(call CleanMakeSupportDir,compile-commands)
|
||||||
|
|
||||||
$(CLEAN_DIR_TARGETS):
|
$(CLEAN_DIR_TARGETS):
|
||||||
$(call CleanDir,$(patsubst clean-%, %, $@))
|
$(call CleanDir,$(patsubst clean-%, %, $@))
|
||||||
|
|
||||||
@@ -1132,9 +1250,9 @@ dist-clean: clean
|
|||||||
)
|
)
|
||||||
$(ECHO) Cleaned everything, you will have to re-run configure.
|
$(ECHO) Cleaned everything, you will have to re-run configure.
|
||||||
|
|
||||||
ALL_TARGETS += clean clean-docs dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_SUPPORT_DIR_TARGETS) \
|
ALL_TARGETS += clean clean-docs clean-compile-commands dist-clean $(CLEAN_DIR_TARGETS) \
|
||||||
$(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) $(CLEAN_MODULE_TARGETS) \
|
$(CLEAN_SUPPORT_DIR_TARGETS) $(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) \
|
||||||
$(CLEAN_MODULE_PHASE_TARGETS)
|
$(CLEAN_MODULE_TARGETS) $(CLEAN_MODULE_PHASE_TARGETS)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Declare *-only targets for each normal target
|
# Declare *-only targets for each normal target
|
||||||
|
|||||||
@@ -65,6 +65,13 @@ define CleanSupportDir
|
|||||||
@$(PRINTF) " done\n"
|
@$(PRINTF) " done\n"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define CleanMakeSupportDir
|
||||||
|
@$(PRINTF) "Cleaning $(strip $1) make support artifacts ..."
|
||||||
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
|
$(RM) -r $(MAKESUPPORT_OUTPUTDIR)/$(strip $1)
|
||||||
|
@$(PRINTF) " done\n"
|
||||||
|
endef
|
||||||
|
|
||||||
define CleanTest
|
define CleanTest
|
||||||
@$(PRINTF) "Cleaning test $(strip $1) ..."
|
@$(PRINTF) "Cleaning test $(strip $1) ..."
|
||||||
@$(PRINTF) "\n" $(LOG_DEBUG)
|
@$(PRINTF) "\n" $(LOG_DEBUG)
|
||||||
@@ -137,7 +144,7 @@ define DeclareRecipeForModuleMakefile
|
|||||||
$$(addprefix -I, $$(PHASE_MAKEDIRS) \
|
$$(addprefix -I, $$(PHASE_MAKEDIRS) \
|
||||||
$$(addsuffix /$$($1_MAKE_SUBDIR), $$(PHASE_MAKEDIRS)) \
|
$$(addsuffix /$$($1_MAKE_SUBDIR), $$(PHASE_MAKEDIRS)) \
|
||||||
) \
|
) \
|
||||||
MODULE=$2 MAKEFILE_PREFIX=$$($1_FILE_PREFIX))
|
MODULE=$2 MAKEFILE_PREFIX=$$($1_FILE_PREFIX) $$($1_EXTRA_ARGS))
|
||||||
else
|
else
|
||||||
+($(CD) $$(dir $$(firstword $$(wildcard $$(addsuffix \
|
+($(CD) $$(dir $$(firstword $$(wildcard $$(addsuffix \
|
||||||
/$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, $$(PHASE_MAKEDIRS))))) \
|
/$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, $$(PHASE_MAKEDIRS))))) \
|
||||||
@@ -146,7 +153,7 @@ define DeclareRecipeForModuleMakefile
|
|||||||
$$(addprefix -I, $$(PHASE_MAKEDIRS) \
|
$$(addprefix -I, $$(PHASE_MAKEDIRS) \
|
||||||
$$(addsuffix /$$($1_MAKE_SUBDIR), $$(PHASE_MAKEDIRS)) \
|
$$(addsuffix /$$($1_MAKE_SUBDIR), $$(PHASE_MAKEDIRS)) \
|
||||||
) \
|
) \
|
||||||
MODULE=$2 \
|
MODULE=$2 $$($1_EXTRA_ARGS) \
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -186,12 +193,13 @@ endef
|
|||||||
# CHECK_MODULES : List of modules to try
|
# CHECK_MODULES : List of modules to try
|
||||||
# MULTIPLE_MAKEFILES : Set to true to handle makefiles for the same module and
|
# MULTIPLE_MAKEFILES : Set to true to handle makefiles for the same module and
|
||||||
# phase in multiple repos
|
# phase in multiple repos
|
||||||
|
# EXTRA_ARGS : Add extra make args to each makefile call
|
||||||
# Exported variables:
|
# Exported variables:
|
||||||
# $1_MODULES : All modules that had rules generated
|
# $1_MODULES : All modules that had rules generated
|
||||||
# $1_TARGETS : All targets generated
|
# $1_TARGETS : All targets generated
|
||||||
define DeclareRecipesForPhase
|
define DeclareRecipesForPhase
|
||||||
$(foreach i,2 3 4 5 6 7, $(if $(strip $($i)),$(strip $1)_$(strip $($i)))$(NEWLINE))
|
$(foreach i,2 3 4 5 6 7 8, $(if $(strip $($i)),$(strip $1)_$(strip $($i)))$(NEWLINE))
|
||||||
$(if $(8),$(error Internal makefile error: Too many arguments to \
|
$(if $(9),$(error Internal makefile error: Too many arguments to \
|
||||||
DeclareRecipesForPhase, please update MakeHelper.gmk))
|
DeclareRecipesForPhase, please update MakeHelper.gmk))
|
||||||
|
|
||||||
$$(foreach m, $$($(strip $1)_CHECK_MODULES), \
|
$$(foreach m, $$($(strip $1)_CHECK_MODULES), \
|
||||||
|
|||||||
@@ -100,5 +100,9 @@ $(eval $(call SetupCopyFiles, COPY_CONF, \
|
|||||||
$(TARGETS)), \
|
$(TARGETS)), \
|
||||||
))
|
))
|
||||||
|
|
||||||
all: $(TARGETS) $(COPY_LIBS_TO_BIN) $(COPY_LIBS_TO_LIB) \
|
ifeq ($(GENERATE_COMPILE_COMMANDS_ONLY), true)
|
||||||
$(COPY_INCLUDE) $(COPY_CMDS) $(COPY_CONF) $(LINK_LIBS_TO_LIB)
|
all: $(filter $(MAKESUPPORT_OUTPUTDIR)/compile-commands/%, $(TARGETS))
|
||||||
|
else
|
||||||
|
all: $(TARGETS) $(COPY_LIBS_TO_BIN) $(COPY_LIBS_TO_LIB) \
|
||||||
|
$(COPY_INCLUDE) $(COPY_CMDS) $(COPY_CONF) $(LINK_LIBS_TO_LIB)
|
||||||
|
endif
|
||||||
|
|||||||
@@ -82,8 +82,8 @@ ifneq ($(TEST_VM_OPTS), )
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
$(eval $(call ParseKeywordVariable, TEST_OPTS, \
|
$(eval $(call ParseKeywordVariable, TEST_OPTS, \
|
||||||
KEYWORDS := JOBS TIMEOUT, \
|
SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR, \
|
||||||
STRING_KEYWORDS := VM_OPTIONS, \
|
STRING_KEYWORDS := VM_OPTIONS JAVA_OPTIONS AOT_MODULES, \
|
||||||
))
|
))
|
||||||
|
|
||||||
# Helper function to propagate TEST_OPTS values.
|
# Helper function to propagate TEST_OPTS values.
|
||||||
@@ -102,10 +102,14 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
|||||||
ifndef _NT_SYMBOL_PATH
|
ifndef _NT_SYMBOL_PATH
|
||||||
# Can't use PathList here as it adds quotes around the value.
|
# Can't use PathList here as it adds quotes around the value.
|
||||||
_NT_SYMBOL_PATH := \
|
_NT_SYMBOL_PATH := \
|
||||||
$(subst $(SPACE),;, $(foreach p, $(sort $(dir $(wildcard \
|
$(subst $(SPACE),;,$(strip \
|
||||||
$(addprefix $(SYMBOLS_IMAGE_DIR)/bin/, *.pdb */*.pdb)))), $(call FixPath, $p)))
|
$(foreach p, $(sort $(dir $(wildcard \
|
||||||
|
$(addprefix $(SYMBOLS_IMAGE_DIR)/bin/, *.pdb */*.pdb)))), \
|
||||||
|
$(call FixPath, $p) \
|
||||||
|
) \
|
||||||
|
))
|
||||||
export _NT_SYMBOL_PATH
|
export _NT_SYMBOL_PATH
|
||||||
$(info _NT_SYMBOL_PATH $(_NT_SYMBOL_PATH))
|
$(info _NT_SYMBOL_PATH=$(_NT_SYMBOL_PATH))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -137,8 +141,118 @@ ifneq ($(wildcard $(JTREG_FAILURE_HANDLER)), )
|
|||||||
-timeoutHandlerTimeout:0
|
-timeoutHandlerTimeout:0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
GTEST_LAUNCHER_DIRS := $(patsubst %/gtestLauncher, %, $(wildcard $(TEST_IMAGE_DIR)/hotspot/gtest/*/gtestLauncher))
|
GTEST_LAUNCHER_DIRS := $(patsubst %/gtestLauncher, %, \
|
||||||
GTEST_VARIANTS := $(strip $(patsubst $(TEST_IMAGE_DIR)/hotspot/gtest/%, %, $(GTEST_LAUNCHER_DIRS)))
|
$(wildcard $(TEST_IMAGE_DIR)/hotspot/gtest/*/gtestLauncher))
|
||||||
|
GTEST_VARIANTS := $(strip $(patsubst $(TEST_IMAGE_DIR)/hotspot/gtest/%, %, \
|
||||||
|
$(GTEST_LAUNCHER_DIRS)))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Optionally create AOT libraries for specified modules before running tests.
|
||||||
|
# Note, this could not be done during JDK build time.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Note, this could not be done during JDK build time.
|
||||||
|
|
||||||
|
# Parameter 1 is the name of the rule.
|
||||||
|
#
|
||||||
|
# Remaining parameters are named arguments.
|
||||||
|
# MODULE The module to generate a library for
|
||||||
|
# BIN Output directory in which to put the library
|
||||||
|
# VM_OPTIONS List of JVM arguments to use when creating library
|
||||||
|
# OPTIONS_VAR Name of variable to put AOT java options in
|
||||||
|
# PREREQS_VAR Name of variable to put all AOT prerequisite rule targets in
|
||||||
|
# for test rules to depend on
|
||||||
|
#
|
||||||
|
SetupAotModule = $(NamedParamsMacroTemplate)
|
||||||
|
define SetupAotModuleBody
|
||||||
|
$1_AOT_LIB := $$($1_BIN)/$$(call SHARED_LIBRARY,$$($1_MODULE))
|
||||||
|
$1_AOT_CCLIST := $$(wildcard $$(TOPDIR)/test/hotspot/jtreg/compiler/aot/scripts/$$($1_MODULE)-list.txt)
|
||||||
|
|
||||||
|
# Create jaotc flags.
|
||||||
|
# VM flags which don't affect AOT code generation are filtered out:
|
||||||
|
# -Xcomp, -XX:+-TieredCompilation
|
||||||
|
$1_JAOTC_OPTS := \
|
||||||
|
-J-Xmx4g --info \
|
||||||
|
$$(addprefix -J, $$(filter-out -Xcomp %TieredCompilation, $$($1_VM_OPTIONS))) \
|
||||||
|
$$(addprefix --compile-commands$(SPACE), $$($1_AOT_CCLIST)) \
|
||||||
|
--linker-path $$(LD_JAOTC) \
|
||||||
|
#
|
||||||
|
|
||||||
|
ifneq ($$(filter -ea, $$($1_VM_OPTIONS)), )
|
||||||
|
$1_JAOTC_OPTS += --compile-with-assertions
|
||||||
|
endif
|
||||||
|
|
||||||
|
$$($1_AOT_LIB): $$(JDK_IMAGE_DIR)/release \
|
||||||
|
$$(call DependOnVariable, $1_JAOTC_OPTS) \
|
||||||
|
$$(call DependOnVariable, JDK_IMAGE_DIR)
|
||||||
|
$$(call LogWarn, Generating $$(patsubst $$(OUTPUTDIR)/%, %, $$@))
|
||||||
|
$$(call MakeTargetDir)
|
||||||
|
$$(call ExecuteWithLog, $$@, ( \
|
||||||
|
$$(FIXPATH) $$(JDK_IMAGE_DIR)/bin/jaotc \
|
||||||
|
$$($1_JAOTC_OPTS) --output $$@ --module $$($1_MODULE) \
|
||||||
|
))
|
||||||
|
$$(call ExecuteWithLog, $$@.check, ( \
|
||||||
|
$$(FIXPATH) $$(JDK_IMAGE_DIR)/bin/java \
|
||||||
|
$$($1_VM_OPTIONS) -XX:+UnlockDiagnosticVMOptions \
|
||||||
|
-XX:+PrintAOT -XX:+UseAOTStrictLoading \
|
||||||
|
-XX:AOTLibrary=$$@ -version \
|
||||||
|
> $$@.verify-aot \
|
||||||
|
))
|
||||||
|
|
||||||
|
$1_AOT_OPTIONS += -XX:AOTLibrary=$$($1_AOT_LIB)
|
||||||
|
$1_AOT_TARGETS += $$($1_AOT_LIB)
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Parameter 1 is the name of the rule.
|
||||||
|
#
|
||||||
|
# Remaining parameters are named arguments.
|
||||||
|
# MODULES The modules to generate a library for
|
||||||
|
# VM_OPTIONS List of JVM arguments to use when creating libraries
|
||||||
|
#
|
||||||
|
# After calling this, the following variables are defined
|
||||||
|
# $1_AOT_OPTIONS List of all java options needed to use the AOT libraries
|
||||||
|
# $1_AOT_TARGETS List of all targets that the test rule will need to depend on
|
||||||
|
#
|
||||||
|
SetupAot = $(NamedParamsMacroTemplate)
|
||||||
|
define SetupAotBody
|
||||||
|
$$(info Running with AOTd libraries for $$($1_MODULES))
|
||||||
|
# Put aot libraries in a separate directory so they are not deleted between
|
||||||
|
# test runs and may be reused between make invocations.
|
||||||
|
$$(foreach m, $$($1_MODULES), \
|
||||||
|
$$(eval $$(call SetupAotModule, $1_$$m, \
|
||||||
|
MODULE := $$m, \
|
||||||
|
BIN := $$(TEST_SUPPORT_DIR)/aot/$1, \
|
||||||
|
VM_OPTIONS := $$($1_VM_OPTIONS), \
|
||||||
|
)) \
|
||||||
|
$$(eval $1_AOT_OPTIONS += $$($1_$$m_AOT_OPTIONS)) \
|
||||||
|
$$(eval $1_AOT_TARGETS += $$($1_$$m_AOT_TARGETS)) \
|
||||||
|
)
|
||||||
|
endef
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup global test running parameters
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Each factor variable comes in 3 variants. The first one is reserved for users
|
||||||
|
# to use on command line. The other two are for predifined configurations in JDL
|
||||||
|
# and for machine specific configurations respectively.
|
||||||
|
TEST_JOBS_FACTOR ?= 1
|
||||||
|
TEST_JOBS_FACTOR_JDL ?= 1
|
||||||
|
TEST_JOBS_FACTOR_MACHINE ?= 1
|
||||||
|
|
||||||
|
ifeq ($(TEST_JOBS), 0)
|
||||||
|
# Concurrency based on min(cores / 2, 12) * TEST_JOBS_FACTOR
|
||||||
|
TEST_JOBS := $(shell $(AWK) \
|
||||||
|
'BEGIN { \
|
||||||
|
c = $(NUM_CORES) / 2; \
|
||||||
|
if (c > 12) c = 12; \
|
||||||
|
c = c * $(TEST_JOBS_FACTOR); \
|
||||||
|
c = c * $(TEST_JOBS_FACTOR_JDL); \
|
||||||
|
c = c * $(TEST_JOBS_FACTOR_MACHINE); \
|
||||||
|
if (c < 1) c = 1; \
|
||||||
|
printf "%.0f", c; \
|
||||||
|
}')
|
||||||
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Parse control variables
|
# Parse control variables
|
||||||
@@ -147,17 +261,24 @@ GTEST_VARIANTS := $(strip $(patsubst $(TEST_IMAGE_DIR)/hotspot/gtest/%, %, $(GTE
|
|||||||
ifneq ($(TEST_OPTS), )
|
ifneq ($(TEST_OPTS), )
|
||||||
# Inform the user
|
# Inform the user
|
||||||
$(info Running tests using TEST_OPTS control variable '$(TEST_OPTS)')
|
$(info Running tests using TEST_OPTS control variable '$(TEST_OPTS)')
|
||||||
|
|
||||||
$(eval $(call SetTestOpt,VM_OPTIONS,JTREG))
|
|
||||||
$(eval $(call SetTestOpt,VM_OPTIONS,GTEST))
|
|
||||||
|
|
||||||
$(eval $(call SetTestOpt,JOBS,JTREG))
|
|
||||||
$(eval $(call SetTestOpt,TIMEOUT,JTREG))
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(eval $(call SetTestOpt,VM_OPTIONS,JTREG))
|
||||||
|
$(eval $(call SetTestOpt,JAVA_OPTIONS,JTREG))
|
||||||
|
$(eval $(call SetTestOpt,VM_OPTIONS,GTEST))
|
||||||
|
$(eval $(call SetTestOpt,JAVA_OPTIONS,GTEST))
|
||||||
|
|
||||||
|
$(eval $(call SetTestOpt,AOT_MODULES,JTREG))
|
||||||
|
$(eval $(call SetTestOpt,AOT_MODULES,GTEST))
|
||||||
|
|
||||||
|
$(eval $(call SetTestOpt,JOBS,JTREG))
|
||||||
|
$(eval $(call SetTestOpt,TIMEOUT_FACTOR,JTREG))
|
||||||
|
|
||||||
$(eval $(call ParseKeywordVariable, JTREG, \
|
$(eval $(call ParseKeywordVariable, JTREG, \
|
||||||
KEYWORDS := JOBS TIMEOUT TEST_MODE ASSERT VERBOSE RETAIN MAX_MEM, \
|
SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR TEST_MODE ASSERT VERBOSE RETAIN \
|
||||||
STRING_KEYWORDS := OPTIONS JAVA_OPTIONS VM_OPTIONS, \
|
MAX_MEM, \
|
||||||
|
STRING_KEYWORDS := OPTIONS JAVA_OPTIONS VM_OPTIONS KEYWORDS \
|
||||||
|
EXTRA_PROBLEM_LISTS AOT_MODULES, \
|
||||||
))
|
))
|
||||||
|
|
||||||
ifneq ($(JTREG), )
|
ifneq ($(JTREG), )
|
||||||
@@ -166,8 +287,8 @@ ifneq ($(JTREG), )
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
$(eval $(call ParseKeywordVariable, GTEST, \
|
$(eval $(call ParseKeywordVariable, GTEST, \
|
||||||
KEYWORDS := REPEAT, \
|
SINGLE_KEYWORDS := REPEAT, \
|
||||||
STRING_KEYWORDS := OPTIONS VM_OPTIONS, \
|
STRING_KEYWORDS := OPTIONS VM_OPTIONS JAVA_OPTIONS AOT_MODULES, \
|
||||||
))
|
))
|
||||||
|
|
||||||
ifneq ($(GTEST), )
|
ifneq ($(GTEST), )
|
||||||
@@ -305,7 +426,7 @@ endef
|
|||||||
|
|
||||||
# Helper function to determine if a test specification is a special test
|
# Helper function to determine if a test specification is a special test
|
||||||
#
|
#
|
||||||
# It is a special test if it is "special:" followed by a test name.
|
# It is a special test if it is "special:" followed by a test name,
|
||||||
define ParseSpecialTestSelection
|
define ParseSpecialTestSelection
|
||||||
$(if $(filter special:%, $1), \
|
$(if $(filter special:%, $1), \
|
||||||
$1 \
|
$1 \
|
||||||
@@ -396,19 +517,27 @@ define SetupRunGtestTestBody
|
|||||||
$1_GTEST_REPEAT :=--gtest_repeat=$$(GTEST_REPEAT)
|
$1_GTEST_REPEAT :=--gtest_repeat=$$(GTEST_REPEAT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
run-test-$1:
|
ifneq ($$(GTEST_AOT_MODULES), )
|
||||||
|
$$(eval $$(call SetupAot, $1, \
|
||||||
|
MODULES := $$(GTEST_AOT_MODULES), \
|
||||||
|
VM_OPTIONS := $$(GTEST_VM_OPTIONS) $$(GTEST_JAVA_OPTIONS), \
|
||||||
|
))
|
||||||
|
endif
|
||||||
|
|
||||||
|
run-test-$1: $$($1_AOT_TARGETS)
|
||||||
$$(call LogWarn)
|
$$(call LogWarn)
|
||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, ( \
|
||||||
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
|
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
|
||||||
-jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \
|
-jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \
|
||||||
--gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
|
--gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
|
||||||
$$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \
|
$$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \
|
||||||
|
$$(GTEST_JAVA_OPTIONS) $$($1_AOT_OPTIONS) \
|
||||||
> >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \
|
> >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \
|
||||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
)
|
))
|
||||||
|
|
||||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
|
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
|
||||||
|
|
||||||
@@ -475,12 +604,11 @@ define SetupRunJtregTestBody
|
|||||||
|
|
||||||
$1_TEST_NAME := $$(strip $$(patsubst jtreg:%, %, $$($1_TEST)))
|
$1_TEST_NAME := $$(strip $$(patsubst jtreg:%, %, $$($1_TEST)))
|
||||||
|
|
||||||
$1_COMPONENT := \
|
$1_TEST_ROOT := \
|
||||||
$$(strip $$(foreach root, $$(JTREG_TESTROOTS), \
|
$$(strip $$(foreach root, $$(JTREG_TESTROOTS), \
|
||||||
$$(if $$(filter $$(root)%, $$(JTREG_TOPDIR)/$$($1_TEST_NAME)), \
|
$$(if $$(filter $$(root)%, $$(JTREG_TOPDIR)/$$($1_TEST_NAME)), $$(root)) \
|
||||||
$$(lastword $$(subst /, $$(SPACE), $$(root))) \
|
|
||||||
) \
|
|
||||||
))
|
))
|
||||||
|
$1_COMPONENT := $$(lastword $$(subst /, $$(SPACE), $$($1_TEST_ROOT)))
|
||||||
# This will work only as long as just hotspot has the additional "jtreg" directory
|
# This will work only as long as just hotspot has the additional "jtreg" directory
|
||||||
ifeq ($$($1_COMPONENT), jtreg)
|
ifeq ($$($1_COMPONENT), jtreg)
|
||||||
$1_COMPONENT := hotspot
|
$1_COMPONENT := hotspot
|
||||||
@@ -503,6 +631,9 @@ define SetupRunJtregTestBody
|
|||||||
$$(eval $$(call SetJtregValue,$1,JTREG_BASIC_OPTIONS))
|
$$(eval $$(call SetJtregValue,$1,JTREG_BASIC_OPTIONS))
|
||||||
$$(eval $$(call SetJtregValue,$1,JTREG_PROBLEM_LIST))
|
$$(eval $$(call SetJtregValue,$1,JTREG_PROBLEM_LIST))
|
||||||
|
|
||||||
|
# Only the problem list for the current test root should be used.
|
||||||
|
$1_JTREG_PROBLEM_LIST := $$(filter $$($1_TEST_ROOT)%, $$($1_JTREG_PROBLEM_LIST))
|
||||||
|
|
||||||
ifneq ($(TEST_JOBS), 0)
|
ifneq ($(TEST_JOBS), 0)
|
||||||
$$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(TEST_JOBS)))
|
$$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(TEST_JOBS)))
|
||||||
else
|
else
|
||||||
@@ -515,9 +646,9 @@ define SetupRunJtregTestBody
|
|||||||
|
|
||||||
# SPARC is in general slower per core so need to scale up timeouts a bit.
|
# SPARC is in general slower per core so need to scale up timeouts a bit.
|
||||||
ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc)
|
ifeq ($(OPENJDK_TARGET_CPU_ARCH), sparc)
|
||||||
JTREG_TIMEOUT ?= 8
|
JTREG_TIMEOUT_FACTOR ?= 8
|
||||||
else
|
else
|
||||||
JTREG_TIMEOUT ?= 4
|
JTREG_TIMEOUT_FACTOR ?= 4
|
||||||
endif
|
endif
|
||||||
JTREG_VERBOSE ?= fail,error,summary
|
JTREG_VERBOSE ?= fail,error,summary
|
||||||
JTREG_RETAIN ?= fail,error
|
JTREG_RETAIN ?= fail,error
|
||||||
@@ -527,12 +658,16 @@ define SetupRunJtregTestBody
|
|||||||
$1_JTREG_LAUNCHER_OPTIONS += -Xmx$$($1_JTREG_MAX_MEM)
|
$1_JTREG_LAUNCHER_OPTIONS += -Xmx$$($1_JTREG_MAX_MEM)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Make sure the tmp dir is normalized as some tests will react badly otherwise
|
||||||
|
$1_TEST_TMP_DIR := $$(abspath $$($1_TEST_SUPPORT_DIR)/tmp)
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -$$($1_JTREG_TEST_MODE) \
|
$1_JTREG_BASIC_OPTIONS += -$$($1_JTREG_TEST_MODE) \
|
||||||
-verbose:$$(JTREG_VERBOSE) -retain:$$(JTREG_RETAIN) \
|
-verbose:$$(JTREG_VERBOSE) -retain:$$(JTREG_RETAIN) \
|
||||||
-concurrency:$$($1_JTREG_JOBS) -timeoutFactor:$$(JTREG_TIMEOUT) \
|
-concurrency:$$($1_JTREG_JOBS) -timeoutFactor:$$(JTREG_TIMEOUT_FACTOR) \
|
||||||
-vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE)
|
-vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE) \
|
||||||
|
-vmoption:-Djava.io.tmpdir="$$($1_TEST_TMP_DIR)"
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -automatic -keywords:\!ignore -ignore:quiet
|
$1_JTREG_BASIC_OPTIONS += -automatic -ignore:quiet
|
||||||
|
|
||||||
# Make it possible to specify the JIB_DATA_DIR for tests using the
|
# Make it possible to specify the JIB_DATA_DIR for tests using the
|
||||||
# JIB Artifact resolver
|
# JIB Artifact resolver
|
||||||
@@ -562,24 +697,56 @@ define SetupRunJtregTestBody
|
|||||||
$1_JTREG_BASIC_OPTIONS += $$(addprefix -exclude:, $$($1_JTREG_PROBLEM_LIST))
|
$1_JTREG_BASIC_OPTIONS += $$(addprefix -exclude:, $$($1_JTREG_PROBLEM_LIST))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($$(JIB_JAR), )
|
ifneq ($$(JTREG_EXTRA_PROBLEM_LISTS), )
|
||||||
$1_JTREG_BASIC_OPTIONS += -cpa:$$(JIB_JAR)
|
# Accept both absolute paths as well as relative to the current test root.
|
||||||
|
$1_JTREG_BASIC_OPTIONS += $$(addprefix -exclude:, $$(wildcard \
|
||||||
|
$$(JTREG_EXTRA_PROBLEM_LISTS) \
|
||||||
|
$$(addprefix $$($1_TEST_ROOT)/, $$(JTREG_EXTRA_PROBLEM_LISTS)) \
|
||||||
|
))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$1_JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_GRAAL_DIR=${TEST_IMAGE_DIR}/hotspot/jtreg/graal
|
ifneq ($$(JIB_HOME), )
|
||||||
|
$1_JTREG_BASIC_OPTIONS += -e:JIB_HOME=$$(JIB_HOME)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$1_JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_DIR=$(TEST_IMAGE_DIR)
|
||||||
|
$1_JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_GRAAL_DIR=$(TEST_IMAGE_DIR)/hotspot/jtreg/graal
|
||||||
|
|
||||||
ifneq ($$(JTREG_FAILURE_HANDLER_OPTIONS), )
|
ifneq ($$(JTREG_FAILURE_HANDLER_OPTIONS), )
|
||||||
$1_JTREG_LAUNCHER_OPTIONS += -Djava.library.path="$(JTREG_FAILURE_HANDLER_DIR)"
|
$1_JTREG_LAUNCHER_OPTIONS += -Djava.library.path="$(JTREG_FAILURE_HANDLER_DIR)"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($$(JTREG_KEYWORDS), )
|
||||||
|
# The keywords string may contain problematic characters and may be quoted
|
||||||
|
# already when it arrives here. Remove any existing quotes and replace them
|
||||||
|
# with one set of single quotes.
|
||||||
|
$1_JTREG_KEYWORDS := \
|
||||||
|
$$(strip $$(subst $$(SQUOTE),,$$(subst $$(DQUOTE),,$$(JTREG_KEYWORDS))))
|
||||||
|
ifneq ($$($1_JTREG_KEYWORDS), )
|
||||||
|
$1_JTREG_BASIC_OPTIONS += -k:'$$($1_JTREG_KEYWORDS)'
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($$(JTREG_AOT_MODULES), )
|
||||||
|
$$(eval $$(call SetupAot, $1, \
|
||||||
|
MODULES := $$(JTREG_AOT_MODULES), \
|
||||||
|
VM_OPTIONS := $$(JTREG_VM_OPTIONS) $$(JTREG_JAVA_OPTIONS), \
|
||||||
|
))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($$($1_AOT_OPTIONS), )
|
||||||
|
$1_JTREG_BASIC_OPTIONS += -vmoptions:"$$($1_AOT_OPTIONS)"
|
||||||
|
endif
|
||||||
|
|
||||||
clean-workdir-$1:
|
clean-workdir-$1:
|
||||||
$$(RM) -r $$($1_TEST_SUPPORT_DIR)
|
$$(RM) -r $$($1_TEST_SUPPORT_DIR)
|
||||||
|
|
||||||
run-test-$1: clean-workdir-$1
|
run-test-$1: clean-workdir-$1 $$($1_AOT_TARGETS)
|
||||||
$$(call LogWarn)
|
$$(call LogWarn)
|
||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR) \
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, \
|
$$($1_TEST_TMP_DIR))
|
||||||
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, ( \
|
||||||
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
||||||
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
||||||
$$($1_JTREG_BASIC_OPTIONS) \
|
$$($1_JTREG_BASIC_OPTIONS) \
|
||||||
@@ -592,7 +759,7 @@ define SetupRunJtregTestBody
|
|||||||
$$($1_TEST_NAME) \
|
$$($1_TEST_NAME) \
|
||||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
)
|
))
|
||||||
|
|
||||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt
|
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt
|
||||||
|
|
||||||
@@ -662,16 +829,16 @@ define SetupRunSpecialTestBody
|
|||||||
$$(error Invalid special test specification: $$($1_TEST_NAME))
|
$$(error Invalid special test specification: $$($1_TEST_NAME))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
run-test-$1:
|
run-test-$1: $(TEST_PREREQS)
|
||||||
$$(call LogWarn)
|
$$(call LogWarn)
|
||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/test-execution, \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/test-execution, ( \
|
||||||
$$($1_TEST_COMMAND_LINE) \
|
$$($1_TEST_COMMAND_LINE) \
|
||||||
> >($(TEE) $$($1_TEST_RESULTS_DIR)/test-output.txt) \
|
> >($(TEE) $$($1_TEST_RESULTS_DIR)/test-output.txt) \
|
||||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
)
|
))
|
||||||
|
|
||||||
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
|
$1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2017, 2019, 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
|
||||||
@@ -49,10 +49,11 @@ TOPDIR := $(strip $(patsubst %/make/, %, $(dir $(makefile_path))))
|
|||||||
# given.
|
# given.
|
||||||
# Note: No spaces are allowed around the arguments.
|
# Note: No spaces are allowed around the arguments.
|
||||||
#
|
#
|
||||||
# $1: The name of the argument
|
# $1: The name of the variable
|
||||||
# $2: The default value, if any, or OPTIONAL (do not provide a default but
|
# $2: The default value, if any, or OPTIONAL (do not provide a default but
|
||||||
# do not exit if it is missing)
|
# do not exit if it is missing)
|
||||||
# $3: If NO_CHECK, disable checking for target file/directory existence
|
# $3: If NO_CHECK, disable checking for target file/directory existence
|
||||||
|
# If MKDIR, create the default directory
|
||||||
define SetupVariable
|
define SetupVariable
|
||||||
ifeq ($$($1), )
|
ifeq ($$($1), )
|
||||||
ifeq ($2, )
|
ifeq ($2, )
|
||||||
@@ -75,10 +76,17 @@ define SetupVariable
|
|||||||
endif
|
endif
|
||||||
# If $1 has a value (is not optional), and $3 is not set (to NO_CHECK),
|
# If $1 has a value (is not optional), and $3 is not set (to NO_CHECK),
|
||||||
# and if wildcard is empty, then complain that the file is missing.
|
# and if wildcard is empty, then complain that the file is missing.
|
||||||
ifeq ($$(strip $$(if $$($1), , OPTIONAL) $$(wildcard $$($1)) $3), )
|
ifeq ($3, MKDIR)
|
||||||
$$(info Error: Prebuilt variable $1 points to missing file/directory:)
|
ifneq ($$(findstring $$(LOG), info debug trace), )
|
||||||
$$(info '$$($1)')
|
$$(info Creating directory for $1)
|
||||||
$$(error Cannot continue.)
|
endif
|
||||||
|
$$(shell mkdir -p $$($1))
|
||||||
|
else ifneq ($3, NO_CHECK)
|
||||||
|
ifeq ($$(strip $$(if $$($1), , OPTIONAL) $$(wildcard $$($1))), )
|
||||||
|
$$(info Error: Prebuilt variable $1 points to missing file/directory:)
|
||||||
|
$$(info '$$($1)')
|
||||||
|
$$(error Cannot continue.)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@@ -87,12 +95,12 @@ endef
|
|||||||
# $1: The output file name
|
# $1: The output file name
|
||||||
# $2..$N: The lines to output to the file
|
# $2..$N: The lines to output to the file
|
||||||
define CreateNewSpec
|
define CreateNewSpec
|
||||||
$(if $(strip $(27)), \
|
$(if $(strip $(31)), \
|
||||||
$(error Internal makefile error: \
|
$(error Internal makefile error: \
|
||||||
Too many arguments to macro, please update CreateNewSpec in RunTestsPrebuilt.gmk) \
|
Too many arguments to macro, please update CreateNewSpec in RunTestsPrebuilt.gmk) \
|
||||||
) \
|
) \
|
||||||
$(shell $(RM) $1) \
|
$(shell $(RM) $1) \
|
||||||
$(foreach i, $(call sequence, 2, 26), \
|
$(foreach i, $(call sequence, 2, 30), \
|
||||||
$(if $(strip $($i)), \
|
$(if $(strip $($i)), \
|
||||||
$(call AppendFile, $(strip $($i)), $1) \
|
$(call AppendFile, $(strip $($i)), $1) \
|
||||||
) \
|
) \
|
||||||
@@ -106,14 +114,14 @@ endef
|
|||||||
# Verify that user has given correct additional input.
|
# Verify that user has given correct additional input.
|
||||||
|
|
||||||
# These variables are absolutely necessary
|
# These variables are absolutely necessary
|
||||||
$(eval $(call SetupVariable,OUTPUTDIR))
|
$(eval $(call SetupVariable,OUTPUTDIR,$(TOPDIR)/build/run-test-prebuilt,MKDIR))
|
||||||
$(eval $(call SetupVariable,BOOT_JDK))
|
$(eval $(call SetupVariable,BOOT_JDK))
|
||||||
$(eval $(call SetupVariable,JT_HOME))
|
$(eval $(call SetupVariable,JT_HOME))
|
||||||
|
|
||||||
# These can have default values based on the ones above
|
# These can have default values based on the ones above
|
||||||
$(eval $(call SetupVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))
|
$(eval $(call SetupVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))
|
||||||
$(eval $(call SetupVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))
|
$(eval $(call SetupVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))
|
||||||
$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols))
|
$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols,NO_CHECK))
|
||||||
|
|
||||||
# Provide default values for tools that we need
|
# Provide default values for tools that we need
|
||||||
$(eval $(call SetupVariable,MAKE,make,NO_CHECK))
|
$(eval $(call SetupVariable,MAKE,make,NO_CHECK))
|
||||||
@@ -202,8 +210,8 @@ endif
|
|||||||
|
|
||||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
ifeq ($(wildcard $(TEST_IMAGE_DIR)/bin/fixpath.exe), )
|
ifeq ($(wildcard $(TEST_IMAGE_DIR)/bin/fixpath.exe), )
|
||||||
$$(info Error: fixpath is missing from test image '$(TEST_IMAGE_DIR)')
|
$(info Error: fixpath is missing from test image '$(TEST_IMAGE_DIR)')
|
||||||
$$(error Cannot continue.)
|
$(error Cannot continue.)
|
||||||
endif
|
endif
|
||||||
FIXPATH := $(TEST_IMAGE_DIR)/bin/fixpath.exe -c
|
FIXPATH := $(TEST_IMAGE_DIR)/bin/fixpath.exe -c
|
||||||
PATH_SEP:=;
|
PATH_SEP:=;
|
||||||
@@ -214,27 +222,57 @@ endif
|
|||||||
|
|
||||||
# Check number of cores and memory in MB
|
# Check number of cores and memory in MB
|
||||||
ifeq ($(OPENJDK_TARGET_OS), linux)
|
ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||||
NUM_CORES := $(shell $(CAT) /proc/cpuinfo | $(GREP) -c processor)
|
NUM_CORES := $(shell $(CAT) /proc/cpuinfo | $(GREP) -c processor)
|
||||||
MEMORY_SIZE := $(shell \
|
MEMORY_SIZE := $(shell \
|
||||||
$(EXPR) `$(CAT) /proc/meminfo | $(GREP) MemTotal | $(AWK) '{print $$2}'` / 1024 \
|
$(EXPR) `$(CAT) /proc/meminfo | $(GREP) MemTotal | $(AWK) '{print $$2}'` / 1024 \
|
||||||
)
|
)
|
||||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||||
NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
|
NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
|
||||||
MEMORY_SIZE := $(shell $(EXPR) `/usr/sbin/sysctl -n hw.memsize` / 1024 / 1024)
|
MEMORY_SIZE := $(shell $(EXPR) `/usr/sbin/sysctl -n hw.memsize` / 1024 / 1024)
|
||||||
else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||||
NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | $(GREP) -c on-line)
|
NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | $(GREP) -c on-line)
|
||||||
MEMORY_SIZE := $(shell \
|
MEMORY_SIZE := $(shell \
|
||||||
/usr/sbin/prtconf 2> /dev/null | $(GREP) "^Memory [Ss]ize" | $(AWK) '{print $$3}' \
|
/usr/sbin/prtconf 2> /dev/null | $(GREP) "^Memory [Ss]ize" | $(AWK) '{print $$3}' \
|
||||||
)
|
)
|
||||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
NUM_CORES := $(NUMBER_OF_PROCESSORS)
|
NUM_CORES := $(NUMBER_OF_PROCESSORS)
|
||||||
MEMORY_SIZE := $(shell \
|
MEMORY_SIZE := $(shell \
|
||||||
$(EXPR) `wmic computersystem get totalphysicalmemory -value | $(GREP) = \
|
$(EXPR) `wmic computersystem get totalphysicalmemory -value \
|
||||||
|
| $(GREP) = | $(SED) 's/\\r//g' \
|
||||||
| $(CUT) -d "=" -f 2-` / 1024 / 1024 \
|
| $(CUT) -d "=" -f 2-` / 1024 / 1024 \
|
||||||
)
|
)
|
||||||
|
endif
|
||||||
|
ifeq ($(NUM_CORES), )
|
||||||
|
$(warn Could not find number of CPUs, assuming 1)
|
||||||
|
NUM_CORES := 1
|
||||||
|
endif
|
||||||
|
ifeq ($(MEMORY_SIZE), )
|
||||||
|
$(warn Could not find memory size, assuming 1024 MB)
|
||||||
|
MEMORY_SIZE := 1024
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Setup LD for AOT support
|
||||||
|
ifneq ($(DEVKIT_HOME), )
|
||||||
|
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
LD_JAOTC := $(DEVKIT_HOME)/VC/bin/x64/link.exe
|
||||||
|
LIBRARY_PREFIX :=
|
||||||
|
SHARED_LIBRARY_SUFFIX := .dll
|
||||||
|
else ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||||
|
LD_JAOTC := $(DEVKIT_HOME)/bin/ld
|
||||||
|
LIBRARY_PREFIX := lib
|
||||||
|
SHARED_LIBRARY_SUFFIX := .so
|
||||||
|
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||||
|
LD_JAOTC := $(DEVKIT_HOME)/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
|
||||||
|
LIBRARY_PREFIX := lib
|
||||||
|
SHARED_LIBRARY_SUFFIX := .dylib
|
||||||
|
else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||||
|
# Prefer system linker for AOT on Solaris.
|
||||||
|
LD_JAOTC := ld
|
||||||
|
LIBRARY_PREFIX := lib
|
||||||
|
SHARED_LIBRARY_SUFFIX := .so
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
NUM_CORES := 1
|
LD := ld
|
||||||
MEMORY_SIZE := 1024
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -273,6 +311,9 @@ $(call CreateNewSpec, $(NEW_SPEC), \
|
|||||||
OPENJDK_TARGET_CPU_ENDIAN := $(OPENJDK_TARGET_CPU_ENDIAN), \
|
OPENJDK_TARGET_CPU_ENDIAN := $(OPENJDK_TARGET_CPU_ENDIAN), \
|
||||||
NUM_CORES := $(NUM_CORES), \
|
NUM_CORES := $(NUM_CORES), \
|
||||||
MEMORY_SIZE := $(MEMORY_SIZE), \
|
MEMORY_SIZE := $(MEMORY_SIZE), \
|
||||||
|
LD_JAOTC := $(LD_JAOTC), \
|
||||||
|
LIBRARY_PREFIX := $(LIBRARY_PREFIX), \
|
||||||
|
SHARED_LIBRARY_SUFFIX := $(SHARED_LIBRARY_SUFFIX), \
|
||||||
include $(TOPDIR)/make/RunTestsPrebuiltSpec.gmk, \
|
include $(TOPDIR)/make/RunTestsPrebuiltSpec.gmk, \
|
||||||
$(CUSTOM_NEW_SPEC_LINE), \
|
$(CUSTOM_NEW_SPEC_LINE), \
|
||||||
)
|
)
|
||||||
@@ -289,9 +330,6 @@ run-test-prebuilt:
|
|||||||
@$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error
|
@$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error
|
||||||
@cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -f make/RunTests.gmk run-test \
|
@cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -f make/RunTests.gmk run-test \
|
||||||
TEST="$(TEST)"
|
TEST="$(TEST)"
|
||||||
@if test -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error ; then \
|
|
||||||
exit 1 ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
all: run-test-prebuilt
|
all: run-test-prebuilt
|
||||||
|
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ JLINK := $(FIXPATH) $(JLINK_CMD)
|
|||||||
JMOD := $(FIXPATH) $(JMOD_CMD)
|
JMOD := $(FIXPATH) $(JMOD_CMD)
|
||||||
JARSIGNER := $(FIXPATH) $(JARSIGNER_CMD)
|
JARSIGNER := $(FIXPATH) $(JARSIGNER_CMD)
|
||||||
|
|
||||||
BUILD_JAVA := $(JAVA)
|
BUILD_JAVA := $(JDK_IMAGE_DIR)/bin/JAVA
|
||||||
################################################################################
|
################################################################################
|
||||||
# Some common tools. Assume most common name and no path.
|
# Some common tools. Assume most common name and no path.
|
||||||
AWK := awk
|
AWK := awk
|
||||||
@@ -172,3 +172,21 @@ UNZIP := unzip
|
|||||||
EXPR := expr
|
EXPR := expr
|
||||||
FILE := file
|
FILE := file
|
||||||
HG := hg
|
HG := hg
|
||||||
|
|
||||||
|
# On Solaris gnu versions of some tools are required.
|
||||||
|
ifeq ($(OPENJDK_BUILD_OS), solaris)
|
||||||
|
AWK := gawk
|
||||||
|
GREP := ggrep
|
||||||
|
EGREP := ggrep -E
|
||||||
|
FGREP := grep -F
|
||||||
|
SED := gsed
|
||||||
|
TAR := gtar
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(OPENJDK_BUILD_OS), windows)
|
||||||
|
CYGPATH := cygpath
|
||||||
|
endif
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Simple macros from spec.gmk.in
|
||||||
|
SHARED_LIBRARY=$(LIBRARY_PREFIX)$1$(SHARED_LIBRARY_SUFFIX)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2019, 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,30 +23,34 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# This makefile creates an image of the optional static versions of certain JDK
|
||||||
|
# libraries.
|
||||||
|
|
||||||
default: all
|
default: all
|
||||||
|
|
||||||
include $(SPEC)
|
include $(SPEC)
|
||||||
include MakeBase.gmk
|
include MakeBase.gmk
|
||||||
|
include Modules.gmk
|
||||||
|
|
||||||
##########################################################################################
|
ALL_MODULES = $(call FindAllModules)
|
||||||
|
|
||||||
### CLDRConverter needs the JRE time zone names from the java.base source.
|
################################################################################
|
||||||
|
|
||||||
define cldrconverter_copytznames
|
TARGETS :=
|
||||||
$(MKDIR) -p '$(@D)'
|
|
||||||
$(RM) '$@'
|
|
||||||
$(SED) -e "s/package sun.util.resources/package build.tools.cldrconverter/" \
|
|
||||||
-e "s/extends TimeZoneNamesBundle//" \
|
|
||||||
-e "s/protected final/static final/" \
|
|
||||||
< $(<) > $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(eval $(call SetupCopyFiles,COPY_INTERIM_CLDRCONVERTER, \
|
$(foreach m, $(ALL_MODULES), \
|
||||||
SRC := $(TOPDIR)/src/java.base/share/classes/sun/util/resources, \
|
$(eval $(call SetupCopyFiles, COPY_STATIC_LIBS_$m, \
|
||||||
DEST := $(BUILDTOOLS_OUTPUTDIR)/interim_cldrconverter_classes/build/tools/cldrconverter, \
|
FLATTEN := true, \
|
||||||
FILES := TimeZoneNames.java, \
|
SRC := $(SUPPORT_OUTPUTDIR)/native/$m, \
|
||||||
MACRO := cldrconverter_copytznames))
|
DEST := $(STATIC_LIBS_IMAGE_DIR)/lib, \
|
||||||
|
FILES := $(filter %$(STATIC_LIBRARY_SUFFIX), \
|
||||||
##########################################################################################
|
$(call FindFiles, $(SUPPORT_OUTPUTDIR)/native/$m/*/static)), \
|
||||||
|
)) \
|
||||||
|
$(eval TARGETS += $$(COPY_STATIC_LIBS_$m)) \
|
||||||
|
)
|
||||||
|
|
||||||
all: $(COPY_INTERIM_CLDRCONVERTER)
|
################################################################################
|
||||||
|
|
||||||
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
@@ -37,10 +37,22 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
|||||||
$(call install-file)
|
$(call install-file)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
prepare-test-image: $(FIXPATH_COPY)
|
BUILD_INFO_PROPERTIES := $(TEST_IMAGE_DIR)/build-info.properties
|
||||||
|
|
||||||
|
FIXPATH_ECHO := $(FIXPATH) $(call FixPath, $(ECHO))
|
||||||
|
|
||||||
|
$(BUILD_INFO_PROPERTIES):
|
||||||
|
$(call MakeTargetDir)
|
||||||
|
$(ECHO) "# Build info properties for JDK tests" > $@
|
||||||
|
$(FIXPATH_ECHO) "build.workspace.root=$(WORKSPACE_ROOT)" >> $@
|
||||||
|
$(FIXPATH_ECHO) "build.output.root=$(OUTPUTDIR)" >> $@
|
||||||
|
|
||||||
|
prepare-test-image: $(FIXPATH_COPY) $(BUILD_INFO_PROPERTIES)
|
||||||
$(call MakeDir, $(TEST_IMAGE_DIR))
|
$(call MakeDir, $(TEST_IMAGE_DIR))
|
||||||
$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
|
$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
all: prepare-test-image
|
all: prepare-test-image
|
||||||
|
|
||||||
.PHONY: default all prepare-test-image
|
.PHONY: default all prepare-test-image
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -74,11 +74,15 @@ TOOL_TZDB = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
|||||||
build.tools.tzdb.TzdbZoneRulesCompiler
|
build.tools.tzdb.TzdbZoneRulesCompiler
|
||||||
|
|
||||||
TOOL_BLACKLISTED_CERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
TOOL_BLACKLISTED_CERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||||
|
--add-exports java.base/sun.security.util=ALL-UNNAMED \
|
||||||
build.tools.blacklistedcertsconverter.BlacklistedCertsConverter
|
build.tools.blacklistedcertsconverter.BlacklistedCertsConverter
|
||||||
|
|
||||||
TOOL_MAKEJAVASECURITY = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
TOOL_MAKEJAVASECURITY = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||||
build.tools.makejavasecurity.MakeJavaSecurity
|
build.tools.makejavasecurity.MakeJavaSecurity
|
||||||
|
|
||||||
|
TOOL_GENERATECACERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||||
|
build.tools.generatecacerts.GenerateCacerts
|
||||||
|
|
||||||
|
|
||||||
# TODO: There are references to the jdwpgen.jar in jdk/make/netbeans/jdwpgen/build.xml
|
# TODO: There are references to the jdwpgen.jar in jdk/make/netbeans/jdwpgen/build.xml
|
||||||
# and nbproject/project.properties in the same dir. Needs to be looked at.
|
# and nbproject/project.properties in the same dir. Needs to be looked at.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2017, 2019, 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
|
||||||
@@ -45,21 +45,13 @@ GLOBAL_SPECS_DEFAULT_CSS_FILE := $(TOPDIR)/make/data/docs-resources/resources/jd
|
|||||||
|
|
||||||
DOCS_DIR := $(TOPDIR)/doc
|
DOCS_DIR := $(TOPDIR)/doc
|
||||||
|
|
||||||
$(eval $(call SetupProcessMarkdown, building, \
|
$(eval $(call SetupProcessMarkdown, md_docs, \
|
||||||
FILES := $(DOCS_DIR)/building.md, \
|
FILES := $(call FindFiles, $(DOCS_DIR), *.md), \
|
||||||
DEST := $(DOCS_DIR), \
|
DEST := $(DOCS_DIR), \
|
||||||
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
|
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
|
||||||
OPTIONS := --toc, \
|
OPTIONS := --toc, \
|
||||||
))
|
))
|
||||||
TARGETS += $(building)
|
TARGETS += $(md_docs)
|
||||||
|
|
||||||
$(eval $(call SetupProcessMarkdown, testing, \
|
|
||||||
FILES := $(DOCS_DIR)/testing.md, \
|
|
||||||
DEST := $(DOCS_DIR), \
|
|
||||||
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
|
|
||||||
OPTIONS := --toc, \
|
|
||||||
))
|
|
||||||
TARGETS += $(testing)
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2014, 2019, 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
|
||||||
@@ -87,6 +87,7 @@ ifeq ($(SRC_GENERATED), true)
|
|||||||
EXCLUDE_FILES := $(SRC_ZIP_EXCLUDE_FILES), \
|
EXCLUDE_FILES := $(SRC_ZIP_EXCLUDE_FILES), \
|
||||||
SUFFIXES := .java, \
|
SUFFIXES := .java, \
|
||||||
ZIP := $(SUPPORT_OUTPUTDIR)/src.zip, \
|
ZIP := $(SUPPORT_OUTPUTDIR)/src.zip, \
|
||||||
|
FOLLOW_SYMLINKS := true, \
|
||||||
))
|
))
|
||||||
|
|
||||||
do-zip: $(BUILD_SRC_ZIP)
|
do-zip: $(BUILD_SRC_ZIP)
|
||||||
|
|||||||
@@ -645,6 +645,14 @@ AC_DEFUN_ONCE([BASIC_SETUP_PATHS],
|
|||||||
BASIC_FIXUP_PATH(CURDIR)
|
BASIC_FIXUP_PATH(CURDIR)
|
||||||
BASIC_FIXUP_PATH(TOPDIR)
|
BASIC_FIXUP_PATH(TOPDIR)
|
||||||
|
|
||||||
|
if test "x$CUSTOM_ROOT" != x; then
|
||||||
|
BASIC_FIXUP_PATH(CUSTOM_ROOT)
|
||||||
|
WORKSPACE_ROOT="${CUSTOM_ROOT}"
|
||||||
|
else
|
||||||
|
WORKSPACE_ROOT="${TOPDIR}"
|
||||||
|
fi
|
||||||
|
AC_SUBST(WORKSPACE_ROOT)
|
||||||
|
|
||||||
# Locate the directory of this script.
|
# Locate the directory of this script.
|
||||||
AUTOCONF_DIR=$TOPDIR/make/autoconf
|
AUTOCONF_DIR=$TOPDIR/make/autoconf
|
||||||
|
|
||||||
@@ -867,11 +875,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
|
|||||||
AC_MSG_RESULT([in build directory with custom name])
|
AC_MSG_RESULT([in build directory with custom name])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$CUSTOM_ROOT" != x; then
|
OUTPUTDIR="${WORKSPACE_ROOT}/build/${CONF_NAME}"
|
||||||
OUTPUTDIR="${CUSTOM_ROOT}/build/${CONF_NAME}"
|
|
||||||
else
|
|
||||||
OUTPUTDIR="${TOPDIR}/build/${CONF_NAME}"
|
|
||||||
fi
|
|
||||||
$MKDIR -p "$OUTPUTDIR"
|
$MKDIR -p "$OUTPUTDIR"
|
||||||
if test ! -d "$OUTPUTDIR"; then
|
if test ! -d "$OUTPUTDIR"; then
|
||||||
AC_MSG_ERROR([Could not create build directory $OUTPUTDIR])
|
AC_MSG_ERROR([Could not create build directory $OUTPUTDIR])
|
||||||
@@ -1212,17 +1216,41 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
|||||||
BASIC_REQUIRE_PROGS(MIG, mig)
|
BASIC_REQUIRE_PROGS(MIG, mig)
|
||||||
BASIC_REQUIRE_PROGS(XATTR, xattr)
|
BASIC_REQUIRE_PROGS(XATTR, xattr)
|
||||||
BASIC_PATH_PROGS(CODESIGN, codesign)
|
BASIC_PATH_PROGS(CODESIGN, codesign)
|
||||||
|
|
||||||
if test "x$CODESIGN" != "x"; then
|
if test "x$CODESIGN" != "x"; then
|
||||||
# Verify that the openjdk_codesign certificate is present
|
# Check for user provided code signing identity.
|
||||||
AC_MSG_CHECKING([if openjdk_codesign certificate is present])
|
# If no identity was provided, fall back to "openjdk_codesign".
|
||||||
|
AC_ARG_WITH([macosx-codesign-identity], [AS_HELP_STRING([--with-macosx-codesign-identity],
|
||||||
|
[specify the code signing identity])],
|
||||||
|
[MACOSX_CODESIGN_IDENTITY=$with_macosx_codesign_identity],
|
||||||
|
[MACOSX_CODESIGN_IDENTITY=openjdk_codesign]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_SUBST(MACOSX_CODESIGN_IDENTITY)
|
||||||
|
|
||||||
|
# Verify that the codesign certificate is present
|
||||||
|
AC_MSG_CHECKING([if codesign certificate is present])
|
||||||
$RM codesign-testfile
|
$RM codesign-testfile
|
||||||
$TOUCH codesign-testfile
|
$TOUCH codesign-testfile
|
||||||
$CODESIGN -s openjdk_codesign codesign-testfile 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD || CODESIGN=
|
$CODESIGN -s "$MACOSX_CODESIGN_IDENTITY" codesign-testfile 2>&AS_MESSAGE_LOG_FD \
|
||||||
|
>&AS_MESSAGE_LOG_FD || CODESIGN=
|
||||||
$RM codesign-testfile
|
$RM codesign-testfile
|
||||||
if test "x$CODESIGN" = x; then
|
if test "x$CODESIGN" = x; then
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([yes])
|
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
|
||||||
fi
|
fi
|
||||||
BASIC_REQUIRE_PROGS(SETFILE, SetFile)
|
BASIC_REQUIRE_PROGS(SETFILE, SetFile)
|
||||||
|
|||||||
@@ -75,6 +75,8 @@ JVM_LDFLAGS := @OPENJDK_BUILD_JVM_LDFLAGS@
|
|||||||
JVM_ASFLAGS := @OPENJDK_BUILD_JVM_ASFLAGS@
|
JVM_ASFLAGS := @OPENJDK_BUILD_JVM_ASFLAGS@
|
||||||
JVM_LIBS := @OPENJDK_BUILD_JVM_LIBS@
|
JVM_LIBS := @OPENJDK_BUILD_JVM_LIBS@
|
||||||
|
|
||||||
|
FDLIBM_CFLAGS := @OPENJDK_BUILD_FDLIBM_CFLAGS@
|
||||||
|
|
||||||
# The compiler for the build platform is likely not warning compatible with the official
|
# The compiler for the build platform is likely not warning compatible with the official
|
||||||
# compiler.
|
# compiler.
|
||||||
WARNINGS_AS_ERRORS := false
|
WARNINGS_AS_ERRORS := false
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
SRC#
|
#
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2019, 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
|
||||||
@@ -98,6 +98,9 @@ HOTSPOT_SETUP_JVM_VARIANTS
|
|||||||
# With basic setup done, call the custom early hook.
|
# With basic setup done, call the custom early hook.
|
||||||
CUSTOM_EARLY_HOOK
|
CUSTOM_EARLY_HOOK
|
||||||
|
|
||||||
|
# This only needs debug level to be setup
|
||||||
|
JDKOPT_ALLOW_ABSOLUTE_PATHS_IN_OUTPUT
|
||||||
|
|
||||||
# Check if we have devkits, extra paths or sysroot set.
|
# Check if we have devkits, extra paths or sysroot set.
|
||||||
BASIC_SETUP_DEVKIT
|
BASIC_SETUP_DEVKIT
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2019, 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
|
||||||
@@ -169,19 +169,7 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
|||||||
gcc)
|
gcc)
|
||||||
DISABLE_WARNING_PREFIX="-Wno-"
|
DISABLE_WARNING_PREFIX="-Wno-"
|
||||||
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
|
||||||
# Repeate the check for the BUILD_CC and BUILD_CXX. Need to also reset
|
|
||||||
# CFLAGS since any target specific flags will likely not work with the
|
|
||||||
# build compiler
|
|
||||||
CC_OLD="$CC"
|
|
||||||
CXX_OLD="$CXX"
|
|
||||||
CC="$BUILD_CC"
|
|
||||||
CXX="$BUILD_CXX"
|
|
||||||
CFLAGS_OLD="$CFLAGS"
|
|
||||||
CFLAGS=""
|
|
||||||
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
|
BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
|
||||||
CC="$CC_OLD"
|
|
||||||
CXX="$CXX_OLD"
|
|
||||||
CFLAGS="$CFLAGS_OLD"
|
|
||||||
;;
|
;;
|
||||||
clang)
|
clang)
|
||||||
DISABLE_WARNING_PREFIX="-Wno-"
|
DISABLE_WARNING_PREFIX="-Wno-"
|
||||||
@@ -221,6 +209,20 @@ AC_DEFUN([FLAGS_SETUP_QUALITY_CHECKS],
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Extra flags needed when building optional static versions of certain
|
||||||
|
# JDK libraries.
|
||||||
|
STATIC_LIBS_CFLAGS="-DSTATIC_BUILD=1"
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
|
STATIC_LIBS_CFLAGS="$STATIC_LIBS_CFLAGS -ffunction-sections -fdata-sections"
|
||||||
|
fi
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||||
|
# Disable relax-relocation to enable compatibility with older linkers
|
||||||
|
RELAX_RELOCATIONS_FLAG="-Xassembler -mrelax-relocations=no"
|
||||||
|
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${RELAX_RELOCATIONS_FLAG}],
|
||||||
|
IF_TRUE: [STATIC_LIBS_CFLAGS="$STATIC_LIBS_CFLAGS ${RELAX_RELOCATIONS_FLAG}"])
|
||||||
|
fi
|
||||||
|
AC_SUBST(STATIC_LIBS_CFLAGS)
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN([FLAGS_SETUP_OPTIMIZATION],
|
AC_DEFUN([FLAGS_SETUP_OPTIMIZATION],
|
||||||
@@ -362,6 +364,17 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS],
|
|||||||
|
|
||||||
FLAGS_SETUP_CFLAGS_CPU_DEP([TARGET])
|
FLAGS_SETUP_CFLAGS_CPU_DEP([TARGET])
|
||||||
|
|
||||||
|
# Repeat the check for the BUILD_CC and BUILD_CXX. Need to also reset CFLAGS
|
||||||
|
# since any target specific flags will likely not work with the build compiler.
|
||||||
|
CC_OLD="$CC"
|
||||||
|
CXX_OLD="$CXX"
|
||||||
|
CFLAGS_OLD="$CFLAGS"
|
||||||
|
CXXFLAGS_OLD="$CXXFLAGS"
|
||||||
|
CC="$BUILD_CC"
|
||||||
|
CXX="$BUILD_CXX"
|
||||||
|
CFLAGS=""
|
||||||
|
CXXFLAGS=""
|
||||||
|
|
||||||
FLAGS_OS=$OPENJDK_BUILD_OS
|
FLAGS_OS=$OPENJDK_BUILD_OS
|
||||||
FLAGS_OS_TYPE=$OPENJDK_BUILD_OS_TYPE
|
FLAGS_OS_TYPE=$OPENJDK_BUILD_OS_TYPE
|
||||||
FLAGS_CPU=$OPENJDK_BUILD_CPU
|
FLAGS_CPU=$OPENJDK_BUILD_CPU
|
||||||
@@ -371,21 +384,12 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS],
|
|||||||
FLAGS_CPU_LEGACY=$OPENJDK_BUILD_CPU_LEGACY
|
FLAGS_CPU_LEGACY=$OPENJDK_BUILD_CPU_LEGACY
|
||||||
FLAGS_CPU_LEGACY_LIB=$OPENJDK_BUILD_CPU_LEGACY_LIB
|
FLAGS_CPU_LEGACY_LIB=$OPENJDK_BUILD_CPU_LEGACY_LIB
|
||||||
|
|
||||||
FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
|
FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_], [BUILD_])
|
||||||
|
|
||||||
COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off"
|
CC="$CC_OLD"
|
||||||
# Check that the compiler supports -ffp-contract=off flag
|
CXX="$CXX_OLD"
|
||||||
# Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty
|
CFLAGS="$CFLAGS_OLD"
|
||||||
# otherwise.
|
CXXFLAGS="$CXXFLAGS_OLD"
|
||||||
# These flags are required for GCC-based builds of
|
|
||||||
# fdlibm with optimization without losing precision.
|
|
||||||
# Notably, -ffp-contract=off needs to be added for GCC >= 4.6.
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
|
||||||
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}],
|
|
||||||
IF_TRUE: [FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}],
|
|
||||||
IF_FALSE: [FDLIBM_CFLAGS=""])
|
|
||||||
fi
|
|
||||||
AC_SUBST(FDLIBM_CFLAGS)
|
|
||||||
|
|
||||||
# Tests are only ever compiled for TARGET
|
# Tests are only ever compiled for TARGET
|
||||||
CFLAGS_TESTLIB="$CFLAGS_JDKLIB"
|
CFLAGS_TESTLIB="$CFLAGS_JDKLIB"
|
||||||
@@ -496,15 +500,14 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||||
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -fcheck-new -fstack-protector"
|
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -fcheck-new -fstack-protector"
|
||||||
TOOLCHAIN_CFLAGS_JDK="-pipe -fstack-protector"
|
TOOLCHAIN_CFLAGS_JDK="-pipe -fstack-protector"
|
||||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX (but since this gives *worse* performance, use no-strict-aliasing everywhere!)
|
# reduce lib size on s390x in link step, this needs also special compile flags
|
||||||
|
if test "x$OPENJDK_TARGET_CPU" = xs390x; then
|
||||||
CXXSTD_CXXFLAG="-std=gnu++98"
|
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -ffunction-sections -fdata-sections"
|
||||||
FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CXXSTD_CXXFLAG -Werror],
|
TOOLCHAIN_CFLAGS_JDK="$TOOLCHAIN_CFLAGS_JDK -ffunction-sections -fdata-sections"
|
||||||
IF_FALSE: [CXXSTD_CXXFLAG=""])
|
fi
|
||||||
TOOLCHAIN_CFLAGS_JDK_CXXONLY="$CXXSTD_CXXFLAG"
|
# technically NOT for CXX (but since this gives *worse* performance, use
|
||||||
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM $CXXSTD_CXXFLAG"
|
# no-strict-aliasing everywhere!)
|
||||||
ADLC_CXXFLAG="$CXXSTD_CXXFLAG"
|
TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing"
|
||||||
|
|
||||||
|
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
# Restrict the debug information created by Clang to avoid
|
# Restrict the debug information created by Clang to avoid
|
||||||
@@ -595,6 +598,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
# Where does this really belong??
|
# Where does this really belong??
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
PICFLAG="-fPIC"
|
PICFLAG="-fPIC"
|
||||||
|
PIEFLAG="-fPIE"
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||||
PICFLAG="-KPIC"
|
PICFLAG="-KPIC"
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||||
@@ -646,15 +650,13 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
|||||||
OS_CFLAGS_JVM="$OS_CFLAGS_JVM -DNEEDS_LIBRT"
|
OS_CFLAGS_JVM="$OS_CFLAGS_JVM -DNEEDS_LIBRT"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# EXPORT
|
|
||||||
AC_SUBST(ADLC_CXXFLAG)
|
|
||||||
])
|
])
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
|
# $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
|
||||||
# conditionals against.
|
# conditionals against.
|
||||||
# $2 - Optional prefix for each variable defined.
|
# $2 - Optional prefix for each variable defined.
|
||||||
|
# $3 - Optional prefix for compiler variables (either BUILD_ or nothing).
|
||||||
AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||||
[
|
[
|
||||||
#### CPU DEFINES, these should (in theory) be independent on toolchain
|
#### CPU DEFINES, these should (in theory) be independent on toolchain
|
||||||
@@ -713,9 +715,21 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
|||||||
# CFLAGS PER CPU
|
# CFLAGS PER CPU
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
# COMMON to gcc and clang
|
# COMMON to gcc and clang
|
||||||
|
AC_MSG_CHECKING([if $1 is x86])
|
||||||
if test "x$FLAGS_CPU" = xx86; then
|
if test "x$FLAGS_CPU" = xx86; then
|
||||||
# Force compatibility with i586 on 32 bit intel platforms.
|
AC_MSG_RESULT([yes])
|
||||||
$1_CFLAGS_CPU="-march=i586"
|
AC_MSG_CHECKING([if control flow protection is enabled by additional compiler flags])
|
||||||
|
if echo "${EXTRA_CFLAGS}${EXTRA_CXXFLAGS}${EXTRA_ASFLAGS}" | ${GREP} -q 'fcf-protection' ; then
|
||||||
|
# cf-protection requires CMOV and thus i686
|
||||||
|
$1_CFLAGS_CPU="-march=i686"
|
||||||
|
AC_MSG_RESULT([yes, forcing ${$1_CFLAGS_CPU}])
|
||||||
|
else
|
||||||
|
# Force compatibility with i586 on 32 bit intel platforms.
|
||||||
|
$1_CFLAGS_CPU="-march=i586"
|
||||||
|
AC_MSG_RESULT([no, forcing ${$1_CFLAGS_CPU}])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -748,6 +762,13 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
|||||||
$1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
|
$1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
$1_CXXSTD_CXXFLAG="-std=gnu++98"
|
||||||
|
FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${$1_CXXSTD_CXXFLAG} -Werror],
|
||||||
|
PREFIX: $3, IF_FALSE: [$1_CXXSTD_CXXFLAG=""])
|
||||||
|
$1_TOOLCHAIN_CFLAGS_JDK_CXXONLY="${$1_CXXSTD_CXXFLAG}"
|
||||||
|
$1_TOOLCHAIN_CFLAGS_JVM="${$1_TOOLCHAIN_CFLAGS_JVM} ${$1_CXXSTD_CXXFLAG}"
|
||||||
|
$2ADLC_CXXFLAG="${$1_CXXSTD_CXXFLAG}"
|
||||||
|
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
if test "x$FLAGS_OS" = xlinux; then
|
if test "x$FLAGS_OS" = xlinux; then
|
||||||
# ppc test not really needed for clang
|
# ppc test not really needed for clang
|
||||||
@@ -784,20 +805,44 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||||
TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1))
|
FLAGS_SETUP_GCC6_COMPILER_FLAGS($1, $3)
|
||||||
$1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
|
$1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
|
||||||
|
|
||||||
$1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
|
$1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Prevent the __FILE__ macro from generating absolute paths into the built
|
||||||
|
# binaries. Depending on toolchain, different mitigations are possible.
|
||||||
|
# * GCC and Clang of new enough versions have -fmacro-prefix-map.
|
||||||
|
# * For most other toolchains, supplying all source files and -I flags as
|
||||||
|
# relative paths fixes the issue.
|
||||||
|
FILE_MACRO_CFLAGS=
|
||||||
|
if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
|
# Check if compiler supports -fmacro-prefix-map. If so, use that to make
|
||||||
|
# the __FILE__ macro resolve to paths relative to the workspace root.
|
||||||
|
workspace_root_trailing_slash="${WORKSPACE_ROOT%/}/"
|
||||||
|
FILE_MACRO_CFLAGS="-fmacro-prefix-map=${workspace_root_trailing_slash}="
|
||||||
|
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${FILE_MACRO_CFLAGS}],
|
||||||
|
PREFIX: $3,
|
||||||
|
IF_FALSE: [
|
||||||
|
FILE_MACRO_CFLAGS=
|
||||||
|
]
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_SUBST(FILE_MACRO_CFLAGS)
|
||||||
|
|
||||||
# EXPORT to API
|
# EXPORT to API
|
||||||
CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \
|
CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM \
|
||||||
|
$TOOLCHAIN_CFLAGS_JVM ${$1_TOOLCHAIN_CFLAGS_JVM} \
|
||||||
$OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
|
$OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
|
||||||
$WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG"
|
$WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG $FILE_MACRO_CFLAGS"
|
||||||
|
|
||||||
CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
|
CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
|
||||||
$OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
|
$OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
|
||||||
$WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK"
|
$WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK \
|
||||||
|
$FILE_MACRO_CFLAGS"
|
||||||
|
|
||||||
# Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
|
# Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
|
||||||
# (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
|
# (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
|
||||||
@@ -805,7 +850,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
|||||||
|
|
||||||
CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY \
|
CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY \
|
||||||
$WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}"
|
$WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}"
|
||||||
CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY $TOOLCHAIN_CFLAGS_JDK_CXXONLY \
|
CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY \
|
||||||
|
$TOOLCHAIN_CFLAGS_JDK_CXXONLY \
|
||||||
|
${$1_TOOLCHAIN_CFLAGS_JDK_CXXONLY} \
|
||||||
$WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
|
$WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
|
||||||
|
|
||||||
$1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
|
$1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
|
||||||
@@ -813,21 +860,40 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
|||||||
|
|
||||||
$2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
|
$2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
|
||||||
|
|
||||||
$2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK}"
|
$2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} $PIEFLAG"
|
||||||
$2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK}"
|
$2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} $PIEFLAG"
|
||||||
$2CFLAGS_JDKLIB="${$2CFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
|
$2CFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} \
|
||||||
$2CXXFLAGS_JDKLIB="${$2CXXFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
|
$JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
|
||||||
|
$2CXXFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} \
|
||||||
|
$JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
|
||||||
|
|
||||||
AC_SUBST($2JVM_CFLAGS)
|
AC_SUBST($2JVM_CFLAGS)
|
||||||
AC_SUBST($2CFLAGS_JDKLIB)
|
AC_SUBST($2CFLAGS_JDKLIB)
|
||||||
AC_SUBST($2CFLAGS_JDKEXE)
|
AC_SUBST($2CFLAGS_JDKEXE)
|
||||||
AC_SUBST($2CXXFLAGS_JDKLIB)
|
AC_SUBST($2CXXFLAGS_JDKLIB)
|
||||||
AC_SUBST($2CXXFLAGS_JDKEXE)
|
AC_SUBST($2CXXFLAGS_JDKEXE)
|
||||||
|
AC_SUBST($2ADLC_CXXFLAG)
|
||||||
|
|
||||||
|
COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off"
|
||||||
|
# Check that the compiler supports -ffp-contract=off flag
|
||||||
|
# Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty
|
||||||
|
# otherwise.
|
||||||
|
# These flags are required for GCC-based builds of
|
||||||
|
# fdlibm with optimization without losing precision.
|
||||||
|
# Notably, -ffp-contract=off needs to be added for GCC >= 4.6.
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
|
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}],
|
||||||
|
PREFIX: $3,
|
||||||
|
IF_TRUE: [$2FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}],
|
||||||
|
IF_FALSE: [$2FDLIBM_CFLAGS=""])
|
||||||
|
fi
|
||||||
|
AC_SUBST($2FDLIBM_CFLAGS)
|
||||||
])
|
])
|
||||||
|
|
||||||
# FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
|
# FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# $1 - Prefix for each variable defined.
|
# $1 - Prefix for each variable defined.
|
||||||
|
# $2 - Prefix for compiler variables (either BUILD_ or nothing).
|
||||||
AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS],
|
AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS],
|
||||||
[
|
[
|
||||||
# These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
|
# These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
|
||||||
@@ -835,14 +901,11 @@ AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS],
|
|||||||
# Notably, value range propagation now assumes that the this pointer of C++
|
# Notably, value range propagation now assumes that the this pointer of C++
|
||||||
# member functions is non-null.
|
# member functions is non-null.
|
||||||
NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
|
NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
|
||||||
dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
|
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror],
|
||||||
dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror],
|
PREFIX: $2, IF_FALSE: [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""])
|
||||||
dnl IF_FALSE: [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""])
|
|
||||||
NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
|
NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
|
||||||
dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
|
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror],
|
||||||
dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror],
|
PREFIX: $2, IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""])
|
||||||
dnl IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""])
|
|
||||||
AC_MSG_NOTICE([GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}])
|
|
||||||
$1_GCC6_CFLAGS="${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
|
$1_GCC6_CFLAGS="${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
@@ -72,12 +72,15 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Add -z defs, to forbid undefined symbols in object files.
|
# Add -z defs, to forbid undefined symbols in object files.
|
||||||
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs"
|
# add -z,relro (mark relocations read only) for all libs
|
||||||
|
# add -z,now ("full relro" - more of the Global Offset Table GOT is marked read only)
|
||||||
|
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs -Wl,-z,relro -Wl,-z,now"
|
||||||
|
# s390x : remove unused code+data in link step
|
||||||
|
if test "x$OPENJDK_TARGET_CPU" = xs390x; then
|
||||||
|
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections"
|
||||||
|
fi
|
||||||
|
|
||||||
BASIC_LDFLAGS_JVM_ONLY="-Wl,-z,noexecstack -Wl,-O1 -Wl,-z,relro"
|
BASIC_LDFLAGS_JVM_ONLY="-Wl,-O1"
|
||||||
|
|
||||||
BASIC_LDFLAGS_JDK_LIB_ONLY="-Wl,-z,noexecstack"
|
|
||||||
LIBJSIG_NOEXECSTACK_LDFLAGS="-Wl,-z,noexecstack"
|
|
||||||
|
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \
|
BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \
|
||||||
@@ -103,13 +106,19 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
|||||||
BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows"
|
BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
|
if test -n "$HAS_NOEXECSTACK"; then
|
||||||
|
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,noexecstack"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Setup OS-dependent LDFLAGS
|
# Setup OS-dependent LDFLAGS
|
||||||
if test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xgcc; then
|
if test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||||
# Assume clang or gcc.
|
# Assume clang or gcc.
|
||||||
# FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
|
# FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
|
||||||
OS_LDFLAGS_JVM_ONLY="-Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
|
OS_LDFLAGS_JVM_ONLY="-Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
|
||||||
OS_LDFLAGS_JDK_ONLY="-mmacosx-version-min=$MACOSX_VERSION_MIN"
|
OS_LDFLAGS="-mmacosx-version-min=$MACOSX_VERSION_MIN"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -118,13 +127,6 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
|||||||
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
if test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||||
if test x$DEBUG_LEVEL = xrelease; then
|
if test x$DEBUG_LEVEL = xrelease; then
|
||||||
DEBUGLEVEL_LDFLAGS_JDK_ONLY="$DEBUGLEVEL_LDFLAGS_JDK_ONLY -Wl,-O1"
|
DEBUGLEVEL_LDFLAGS_JDK_ONLY="$DEBUGLEVEL_LDFLAGS_JDK_ONLY -Wl,-O1"
|
||||||
else
|
|
||||||
# mark relocations read only on (fast/slow) debug builds
|
|
||||||
DEBUGLEVEL_LDFLAGS_JDK_ONLY="-Wl,-z,relro"
|
|
||||||
fi
|
|
||||||
if test x$DEBUG_LEVEL = xslowdebug; then
|
|
||||||
# do relocations at load
|
|
||||||
DEBUGLEVEL_LDFLAGS="-Wl,-z,now"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -140,6 +142,17 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
|||||||
# Setup LDFLAGS for linking executables
|
# Setup LDFLAGS for linking executables
|
||||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||||
EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"
|
EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"
|
||||||
|
# Enabling pie on 32 bit builds prevents the JVM from allocating a continuous
|
||||||
|
# java heap.
|
||||||
|
if test "x$OPENJDK_TARGET_CPU_BITS" != "x32"; then
|
||||||
|
EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -pie"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||||
|
BASIC_LDFLAGS="$BASIC_LDFLAGS -pdbaltpath:%_PDB%"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Export some intermediate variables for compatibility
|
# Export some intermediate variables for compatibility
|
||||||
@@ -196,13 +209,13 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
|
|||||||
|
|
||||||
# Export variables according to old definitions, prefix with $2 if present.
|
# Export variables according to old definitions, prefix with $2 if present.
|
||||||
LDFLAGS_JDK_COMMON="$BASIC_LDFLAGS $BASIC_LDFLAGS_JDK_ONLY \
|
LDFLAGS_JDK_COMMON="$BASIC_LDFLAGS $BASIC_LDFLAGS_JDK_ONLY \
|
||||||
$OS_LDFLAGS_JDK_ONLY $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}"
|
$OS_LDFLAGS $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}"
|
||||||
$2LDFLAGS_JDKLIB="$LDFLAGS_JDK_COMMON $BASIC_LDFLAGS_JDK_LIB_ONLY \
|
$2LDFLAGS_JDKLIB="$LDFLAGS_JDK_COMMON $BASIC_LDFLAGS_JDK_LIB_ONLY \
|
||||||
${$1_LDFLAGS_JDK_LIBPATH} $SHARED_LIBRARY_FLAGS"
|
${$1_LDFLAGS_JDK_LIBPATH} $SHARED_LIBRARY_FLAGS"
|
||||||
$2LDFLAGS_JDKEXE="$LDFLAGS_JDK_COMMON $EXECUTABLE_LDFLAGS \
|
$2LDFLAGS_JDKEXE="$LDFLAGS_JDK_COMMON $EXECUTABLE_LDFLAGS \
|
||||||
${$1_CPU_EXECUTABLE_LDFLAGS}"
|
${$1_CPU_EXECUTABLE_LDFLAGS}"
|
||||||
|
|
||||||
$2JVM_LDFLAGS="$BASIC_LDFLAGS $BASIC_LDFLAGS_JVM_ONLY $OS_LDFLAGS_JVM_ONLY \
|
$2JVM_LDFLAGS="$BASIC_LDFLAGS $BASIC_LDFLAGS_JVM_ONLY $OS_LDFLAGS $OS_LDFLAGS_JVM_ONLY \
|
||||||
$DEBUGLEVEL_LDFLAGS $DEBUGLEVEL_LDFLAGS_JVM_ONLY $BASIC_LDFLAGS_ONLYCXX \
|
$DEBUGLEVEL_LDFLAGS $DEBUGLEVEL_LDFLAGS_JVM_ONLY $BASIC_LDFLAGS_ONLYCXX \
|
||||||
${$1_CPU_LDFLAGS} ${$1_CPU_LDFLAGS_JVM_ONLY} ${$2EXTRA_LDFLAGS}"
|
${$1_CPU_LDFLAGS} ${$1_CPU_LDFLAGS_JVM_ONLY} ${$2EXTRA_LDFLAGS}"
|
||||||
|
|
||||||
|
|||||||
@@ -162,6 +162,10 @@ AC_DEFUN_ONCE([FLAGS_SETUP_USER_SUPPLIED_FLAGS],
|
|||||||
AC_MSG_WARN([Ignoring LDFLAGS($LDFLAGS) found in environment. Use --with-extra-ldflags])
|
AC_MSG_WARN([Ignoring LDFLAGS($LDFLAGS) found in environment. Use --with-extra-ldflags])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "x$ASFLAGS" != "x"; then
|
||||||
|
AC_MSG_WARN([Ignoring ASFLAGS($ASFLAGS) found in environment. Use --with-extra-asflags])
|
||||||
|
fi
|
||||||
|
|
||||||
AC_ARG_WITH(extra-cflags, [AS_HELP_STRING([--with-extra-cflags],
|
AC_ARG_WITH(extra-cflags, [AS_HELP_STRING([--with-extra-cflags],
|
||||||
[extra flags to be used when compiling jdk c-files])])
|
[extra flags to be used when compiling jdk c-files])])
|
||||||
|
|
||||||
@@ -171,9 +175,13 @@ AC_DEFUN_ONCE([FLAGS_SETUP_USER_SUPPLIED_FLAGS],
|
|||||||
AC_ARG_WITH(extra-ldflags, [AS_HELP_STRING([--with-extra-ldflags],
|
AC_ARG_WITH(extra-ldflags, [AS_HELP_STRING([--with-extra-ldflags],
|
||||||
[extra flags to be used when linking jdk])])
|
[extra flags to be used when linking jdk])])
|
||||||
|
|
||||||
|
AC_ARG_WITH(extra-asflags, [AS_HELP_STRING([--with-extra-asflags],
|
||||||
|
[extra flags to be passed to the assembler])])
|
||||||
|
|
||||||
USER_CFLAGS="$with_extra_cflags"
|
USER_CFLAGS="$with_extra_cflags"
|
||||||
USER_CXXFLAGS="$with_extra_cxxflags"
|
USER_CXXFLAGS="$with_extra_cxxflags"
|
||||||
USER_LDFLAGS="$with_extra_ldflags"
|
USER_LDFLAGS="$with_extra_ldflags"
|
||||||
|
USER_ASFLAGS="$with_extra_asflags"
|
||||||
])
|
])
|
||||||
|
|
||||||
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
|
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
|
||||||
@@ -216,10 +224,12 @@ AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
|
|||||||
# We also need -iframework<path>/System/Library/Frameworks
|
# We also need -iframework<path>/System/Library/Frameworks
|
||||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
|
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
|
||||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
|
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
|
||||||
# These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
|
if test -d "[$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks" ; then
|
||||||
# set this here so it doesn't have to be peppered throughout the forest
|
# These always need to be set on macOS 10.X, or we can't find the frameworks embedded in JavaVM.framework
|
||||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
# set this here so it doesn't have to be peppered throughout the forest
|
||||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
||||||
|
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST($1SYSROOT_CFLAGS)
|
AC_SUBST($1SYSROOT_CFLAGS)
|
||||||
@@ -265,10 +275,12 @@ AC_DEFUN_ONCE([FLAGS_PRE_TOOLCHAIN],
|
|||||||
EXTRA_CFLAGS="$MACHINE_FLAG $USER_CFLAGS"
|
EXTRA_CFLAGS="$MACHINE_FLAG $USER_CFLAGS"
|
||||||
EXTRA_CXXFLAGS="$MACHINE_FLAG $USER_CXXFLAGS"
|
EXTRA_CXXFLAGS="$MACHINE_FLAG $USER_CXXFLAGS"
|
||||||
EXTRA_LDFLAGS="$MACHINE_FLAG $USER_LDFLAGS"
|
EXTRA_LDFLAGS="$MACHINE_FLAG $USER_LDFLAGS"
|
||||||
|
EXTRA_ASFLAGS="$USER_ASFLAGS"
|
||||||
|
|
||||||
AC_SUBST(EXTRA_CFLAGS)
|
AC_SUBST(EXTRA_CFLAGS)
|
||||||
AC_SUBST(EXTRA_CXXFLAGS)
|
AC_SUBST(EXTRA_CXXFLAGS)
|
||||||
AC_SUBST(EXTRA_LDFLAGS)
|
AC_SUBST(EXTRA_LDFLAGS)
|
||||||
|
AC_SUBST(EXTRA_ASFLAGS)
|
||||||
|
|
||||||
# For autoconf testing to work, the global flags must also be stored in the
|
# For autoconf testing to work, the global flags must also be stored in the
|
||||||
# "unnamed" CFLAGS etc.
|
# "unnamed" CFLAGS etc.
|
||||||
@@ -406,17 +418,20 @@ AC_DEFUN([FLAGS_SETUP_FLAGS],
|
|||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Check that the C compiler supports an argument
|
# Check that the C compiler supports an argument
|
||||||
BASIC_DEFUN_NAMED([FLAGS_C_COMPILER_CHECK_ARGUMENTS],
|
BASIC_DEFUN_NAMED([FLAGS_C_COMPILER_CHECK_ARGUMENTS],
|
||||||
[*ARGUMENT IF_TRUE IF_FALSE], [$@],
|
[*ARGUMENT IF_TRUE IF_FALSE PREFIX], [$@],
|
||||||
[
|
[
|
||||||
AC_MSG_CHECKING([if the C compiler supports "ARG_ARGUMENT"])
|
AC_MSG_CHECKING([if ARG_PREFIX[CC] supports "ARG_ARGUMENT"])
|
||||||
supports=yes
|
supports=yes
|
||||||
|
|
||||||
saved_cflags="$CFLAGS"
|
saved_cflags="$CFLAGS"
|
||||||
|
saved_cc="$CC"
|
||||||
CFLAGS="$CFLAGS ARG_ARGUMENT"
|
CFLAGS="$CFLAGS ARG_ARGUMENT"
|
||||||
|
CC="$ARG_PREFIX[CC]"
|
||||||
AC_LANG_PUSH([C])
|
AC_LANG_PUSH([C])
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
|
||||||
[supports=no])
|
[supports=no])
|
||||||
AC_LANG_POP([C])
|
AC_LANG_POP([C])
|
||||||
|
CC="$saved_cc"
|
||||||
CFLAGS="$saved_cflags"
|
CFLAGS="$saved_cflags"
|
||||||
|
|
||||||
AC_MSG_RESULT([$supports])
|
AC_MSG_RESULT([$supports])
|
||||||
@@ -434,17 +449,20 @@ BASIC_DEFUN_NAMED([FLAGS_C_COMPILER_CHECK_ARGUMENTS],
|
|||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Check that the C++ compiler supports an argument
|
# Check that the C++ compiler supports an argument
|
||||||
BASIC_DEFUN_NAMED([FLAGS_CXX_COMPILER_CHECK_ARGUMENTS],
|
BASIC_DEFUN_NAMED([FLAGS_CXX_COMPILER_CHECK_ARGUMENTS],
|
||||||
[*ARGUMENT IF_TRUE IF_FALSE], [$@],
|
[*ARGUMENT IF_TRUE IF_FALSE PREFIX], [$@],
|
||||||
[
|
[
|
||||||
AC_MSG_CHECKING([if the C++ compiler supports "ARG_ARGUMENT"])
|
AC_MSG_CHECKING([if ARG_PREFIX[CXX] supports "ARG_ARGUMENT"])
|
||||||
supports=yes
|
supports=yes
|
||||||
|
|
||||||
saved_cxxflags="$CXXFLAGS"
|
saved_cxxflags="$CXXFLAGS"
|
||||||
|
saved_cxx="$CXX"
|
||||||
CXXFLAGS="$CXXFLAG ARG_ARGUMENT"
|
CXXFLAGS="$CXXFLAG ARG_ARGUMENT"
|
||||||
|
CXX="$ARG_PREFIX[CXX]"
|
||||||
AC_LANG_PUSH([C++])
|
AC_LANG_PUSH([C++])
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
|
||||||
[supports=no])
|
[supports=no])
|
||||||
AC_LANG_POP([C++])
|
AC_LANG_POP([C++])
|
||||||
|
CXX="$saved_cxx"
|
||||||
CXXFLAGS="$saved_cxxflags"
|
CXXFLAGS="$saved_cxxflags"
|
||||||
|
|
||||||
AC_MSG_RESULT([$supports])
|
AC_MSG_RESULT([$supports])
|
||||||
@@ -462,18 +480,22 @@ BASIC_DEFUN_NAMED([FLAGS_CXX_COMPILER_CHECK_ARGUMENTS],
|
|||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Check that the C and C++ compilers support an argument
|
# Check that the C and C++ compilers support an argument
|
||||||
BASIC_DEFUN_NAMED([FLAGS_COMPILER_CHECK_ARGUMENTS],
|
BASIC_DEFUN_NAMED([FLAGS_COMPILER_CHECK_ARGUMENTS],
|
||||||
[*ARGUMENT IF_TRUE IF_FALSE], [$@],
|
[*ARGUMENT IF_TRUE IF_FALSE PREFIX], [$@],
|
||||||
[
|
[
|
||||||
FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT],
|
FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT],
|
||||||
IF_TRUE: [C_COMP_SUPPORTS="yes"],
|
IF_TRUE: [C_COMP_SUPPORTS="yes"],
|
||||||
IF_FALSE: [C_COMP_SUPPORTS="no"])
|
IF_FALSE: [C_COMP_SUPPORTS="no"],
|
||||||
|
PREFIX: [ARG_PREFIX])
|
||||||
FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT],
|
FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT],
|
||||||
IF_TRUE: [CXX_COMP_SUPPORTS="yes"],
|
IF_TRUE: [CXX_COMP_SUPPORTS="yes"],
|
||||||
IF_FALSE: [CXX_COMP_SUPPORTS="no"])
|
IF_FALSE: [CXX_COMP_SUPPORTS="no"],
|
||||||
|
PREFIX: [ARG_PREFIX])
|
||||||
|
|
||||||
AC_MSG_CHECKING([if both compilers support "ARG_ARGUMENT"])
|
AC_MSG_CHECKING([if both ARG_PREFIX[CC] and ARG_PREFIX[CXX] support "ARG_ARGUMENT"])
|
||||||
supports=no
|
supports=no
|
||||||
if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
|
if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then
|
||||||
|
supports=yes;
|
||||||
|
fi
|
||||||
|
|
||||||
AC_MSG_RESULT([$supports])
|
AC_MSG_RESULT([$supports])
|
||||||
if test "x$supports" = "xyes" ; then
|
if test "x$supports" = "xyes" ; then
|
||||||
|
|||||||
@@ -99,6 +99,8 @@ apt_help() {
|
|||||||
PKGHANDLER_COMMAND="sudo apt-get install libfontconfig1-dev" ;;
|
PKGHANDLER_COMMAND="sudo apt-get install libfontconfig1-dev" ;;
|
||||||
freetype)
|
freetype)
|
||||||
PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
|
PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
|
||||||
|
harfbuzz)
|
||||||
|
PKGHANDLER_COMMAND="sudo apt-get install libharfbuzz-dev" ;;
|
||||||
ffi)
|
ffi)
|
||||||
PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
|
PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
|
||||||
x11)
|
x11)
|
||||||
@@ -124,6 +126,8 @@ yum_help() {
|
|||||||
PKGHANDLER_COMMAND="sudo yum install fontconfig-devel" ;;
|
PKGHANDLER_COMMAND="sudo yum install fontconfig-devel" ;;
|
||||||
freetype)
|
freetype)
|
||||||
PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
|
PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
|
||||||
|
harfbuzz)
|
||||||
|
PKGHANDLER_COMMAND="sudo yum install harfbuzz-devel" ;;
|
||||||
x11)
|
x11)
|
||||||
PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel" ;;
|
PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel" ;;
|
||||||
ccache)
|
ccache)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
# All valid JVM features, regardless of platform
|
# All valid JVM features, regardless of platform
|
||||||
VALID_JVM_FEATURES="compiler1 compiler2 zero minimal dtrace jvmti jvmci \
|
VALID_JVM_FEATURES="compiler1 compiler2 zero minimal dtrace jvmti jvmci \
|
||||||
graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc zgc nmt cds \
|
graal vm-structs jni-check services management cmsgc epsilongc g1gc parallelgc serialgc shenandoahgc zgc nmt cds \
|
||||||
static-build link-time-opt aot jfr"
|
static-build link-time-opt aot jfr"
|
||||||
|
|
||||||
# Deprecated JVM features (these are ignored, but with a warning)
|
# Deprecated JVM features (these are ignored, but with a warning)
|
||||||
@@ -47,8 +47,8 @@ AC_DEFUN([HOTSPOT_CHECK_JVM_VARIANT],
|
|||||||
[ [ [[ " $JVM_VARIANTS " =~ " $1 " ]] ] ])
|
[ [ [[ " $JVM_VARIANTS " =~ " $1 " ]] ] ])
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Check if the specified JVM features are explicitly enabled. To be used in
|
# Check if the specified JVM feature is enabled. To be used in shell if
|
||||||
# shell if constructs, like this:
|
# constructs, like this:
|
||||||
# if HOTSPOT_CHECK_JVM_FEATURE(jvmti); then
|
# if HOTSPOT_CHECK_JVM_FEATURE(jvmti); then
|
||||||
#
|
#
|
||||||
# Only valid to use after HOTSPOT_SETUP_JVM_FEATURES has setup features.
|
# Only valid to use after HOTSPOT_SETUP_JVM_FEATURES has setup features.
|
||||||
@@ -58,6 +58,20 @@ AC_DEFUN([HOTSPOT_CHECK_JVM_VARIANT],
|
|||||||
AC_DEFUN([HOTSPOT_CHECK_JVM_FEATURE],
|
AC_DEFUN([HOTSPOT_CHECK_JVM_FEATURE],
|
||||||
[ [ [[ " $JVM_FEATURES " =~ " $1 " ]] ] ])
|
[ [ [[ " $JVM_FEATURES " =~ " $1 " ]] ] ])
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Check if the specified JVM feature is explicitly disabled. To be used in
|
||||||
|
# shell if constructs, like this:
|
||||||
|
# if HOTSPOT_IS_JVM_FEATURE_DISABLED(jvmci); then
|
||||||
|
#
|
||||||
|
# This function is internal to hotspot.m4, and is only used when constructing
|
||||||
|
# the valid set of enabled JVM features. Users outside of hotspot.m4 should just
|
||||||
|
# use HOTSPOT_CHECK_JVM_FEATURE to check if a feature is enabled or not.
|
||||||
|
|
||||||
|
# Definition kept in one line to allow inlining in if statements.
|
||||||
|
# Additional [] needed to keep m4 from mangling shell constructs.
|
||||||
|
AC_DEFUN([HOTSPOT_IS_JVM_FEATURE_DISABLED],
|
||||||
|
[ [ [[ " $DISABLED_JVM_FEATURES " =~ " $1 " ]] ] ])
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Check which variants of the JVM that we want to build. Available variants are:
|
# Check which variants of the JVM that we want to build. Available variants are:
|
||||||
# server: normal interpreter, and a tiered C1/C2 compiler
|
# server: normal interpreter, and a tiered C1/C2 compiler
|
||||||
@@ -260,6 +274,14 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_CDS],
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Disable CDS on macos-aarch64
|
||||||
|
if test "x$OPENJDK_TARGET_OS" = "xmacosx" && test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||||
|
ENABLE_CDS="false"
|
||||||
|
if test "x$enable_cds" = "xyes"; then
|
||||||
|
AC_MSG_ERROR([CDS is currently not supported on AIX. Remove --enable-cds.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
AC_SUBST(ENABLE_CDS)
|
AC_SUBST(ENABLE_CDS)
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -338,6 +360,19 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Only enable Shenandoah on supported arches, and only if requested
|
||||||
|
AC_MSG_CHECKING([if shenandoah can be built])
|
||||||
|
if HOTSPOT_CHECK_JVM_FEATURE(shenandoahgc); then
|
||||||
|
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
|
||||||
|
AC_MSG_RESULT([no, platform not supported])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
|
||||||
|
fi
|
||||||
|
|
||||||
# Only enable ZGC on supported platforms
|
# Only enable ZGC on supported platforms
|
||||||
AC_MSG_CHECKING([if zgc can be built])
|
AC_MSG_CHECKING([if zgc can be built])
|
||||||
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||||
@@ -349,7 +384,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
|
|
||||||
# Disable unsupported GCs for Zero
|
# Disable unsupported GCs for Zero
|
||||||
if HOTSPOT_CHECK_JVM_VARIANT(zero); then
|
if HOTSPOT_CHECK_JVM_VARIANT(zero); then
|
||||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc zgc"
|
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc shenandoahgc zgc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Turn on additional features based on other parts of configure
|
# Turn on additional features based on other parts of configure
|
||||||
@@ -377,8 +412,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
|
|
||||||
AC_MSG_CHECKING([if jvmci module jdk.internal.vm.ci should be built])
|
AC_MSG_CHECKING([if jvmci module jdk.internal.vm.ci should be built])
|
||||||
# Check if jvmci is diabled
|
# Check if jvmci is diabled
|
||||||
DISABLE_JVMCI=`$ECHO $DISABLED_JVM_FEATURES | $GREP jvmci`
|
if HOTSPOT_IS_JVM_FEATURE_DISABLED(jvmci); then
|
||||||
if test "x$DISABLE_JVMCI" = "xjvmci"; then
|
|
||||||
AC_MSG_RESULT([no, forced])
|
AC_MSG_RESULT([no, forced])
|
||||||
JVM_FEATURES_jvmci=""
|
JVM_FEATURES_jvmci=""
|
||||||
INCLUDE_JVMCI="false"
|
INCLUDE_JVMCI="false"
|
||||||
@@ -404,8 +438,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
|
|
||||||
AC_MSG_CHECKING([if graal module jdk.internal.vm.compiler should be built])
|
AC_MSG_CHECKING([if graal module jdk.internal.vm.compiler should be built])
|
||||||
# Check if graal is diabled
|
# Check if graal is diabled
|
||||||
DISABLE_GRAAL=`$ECHO $DISABLED_JVM_FEATURES | $GREP graal`
|
if HOTSPOT_IS_JVM_FEATURE_DISABLED(graal); then
|
||||||
if test "x$DISABLE_GRAAL" = "xgraal"; then
|
|
||||||
AC_MSG_RESULT([no, forced])
|
AC_MSG_RESULT([no, forced])
|
||||||
JVM_FEATURES_graal=""
|
JVM_FEATURES_graal=""
|
||||||
INCLUDE_GRAAL="false"
|
INCLUDE_GRAAL="false"
|
||||||
@@ -437,8 +470,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
AC_SUBST(INCLUDE_GRAAL)
|
AC_SUBST(INCLUDE_GRAAL)
|
||||||
|
|
||||||
# Disable aot with '--with-jvm-features=-aot'
|
# Disable aot with '--with-jvm-features=-aot'
|
||||||
DISABLE_AOT=`$ECHO $DISABLED_JVM_FEATURES | $GREP aot`
|
if HOTSPOT_IS_JVM_FEATURE_DISABLED(aot); then
|
||||||
if test "x$DISABLE_AOT" = "xaot"; then
|
|
||||||
ENABLE_AOT="false"
|
ENABLE_AOT="false"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -462,7 +494,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
JVM_FEATURES_aot="aot"
|
JVM_FEATURES_aot="aot"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if test "x$enable_aot" = "xno" || test "x$DISABLE_AOT" = "xaot"; then
|
if test "x$enable_aot" = "xno" || HOTSPOT_IS_JVM_FEATURE_DISABLED(aot); then
|
||||||
AC_MSG_RESULT([no, forced])
|
AC_MSG_RESULT([no, forced])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
@@ -483,7 +515,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# All variants but minimal (and custom) get these features
|
# All variants but minimal (and custom) get these features
|
||||||
NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc jni-check jvmti management nmt services vm-structs zgc"
|
NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc shenandoahgc jni-check jvmti management nmt services vm-structs zgc"
|
||||||
|
|
||||||
AC_MSG_CHECKING([if cds should be enabled])
|
AC_MSG_CHECKING([if cds should be enabled])
|
||||||
if test "x$ENABLE_CDS" = "xtrue"; then
|
if test "x$ENABLE_CDS" = "xtrue"; then
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -283,7 +283,7 @@ AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
|
|||||||
AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||||
[
|
[
|
||||||
#
|
#
|
||||||
# NATIVE_DEBUG_SYMBOLS
|
# Native debug symbols.
|
||||||
# This must be done after the toolchain is setup, since we're looking at objcopy.
|
# This must be done after the toolchain is setup, since we're looking at objcopy.
|
||||||
#
|
#
|
||||||
AC_MSG_CHECKING([what type of native debug symbols to use])
|
AC_MSG_CHECKING([what type of native debug symbols to use])
|
||||||
@@ -295,24 +295,48 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
|||||||
if test "x$withval" = xexternal || test "x$withval" = xzipped; then
|
if test "x$withval" = xexternal || test "x$withval" = xzipped; then
|
||||||
AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols])
|
AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols])
|
||||||
fi
|
fi
|
||||||
|
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||||
|
if test "x$withval" = xinternal; then
|
||||||
|
AC_MSG_ERROR([Windows does not support the parameter 'internal' for --with-native-debug-symbols])
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
if test "x$STATIC_BUILD" = xtrue; then
|
||||||
# AIX doesn't support 'external' so use 'internal' as default
|
with_native_debug_symbols="none"
|
||||||
with_native_debug_symbols="internal"
|
|
||||||
else
|
else
|
||||||
if test "x$STATIC_BUILD" = xtrue; then
|
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||||
with_native_debug_symbols="none"
|
# AIX doesn't support 'external' so use 'internal' as default
|
||||||
|
with_native_debug_symbols="internal"
|
||||||
else
|
else
|
||||||
with_native_debug_symbols="external"
|
with_native_debug_symbols="external"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols
|
AC_MSG_RESULT([$with_native_debug_symbols])
|
||||||
AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS])
|
|
||||||
|
|
||||||
if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then
|
if test "x$with_native_debug_symbols" = xnone; then
|
||||||
|
COMPILE_WITH_DEBUG_SYMBOLS=false
|
||||||
|
COPY_DEBUG_SYMBOLS=false
|
||||||
|
ZIP_EXTERNAL_DEBUG_SYMBOLS=false
|
||||||
|
elif test "x$with_native_debug_symbols" = xinternal; then
|
||||||
|
COMPILE_WITH_DEBUG_SYMBOLS=true
|
||||||
|
COPY_DEBUG_SYMBOLS=false
|
||||||
|
ZIP_EXTERNAL_DEBUG_SYMBOLS=false
|
||||||
|
elif test "x$with_native_debug_symbols" = xexternal; then
|
||||||
|
|
||||||
|
if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||||
|
if test "x$OBJCOPY" = x; then
|
||||||
|
# enabling of enable-debug-symbols and can't find objcopy
|
||||||
|
# this is an error
|
||||||
|
AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
COMPILE_WITH_DEBUG_SYMBOLS=true
|
||||||
|
COPY_DEBUG_SYMBOLS=true
|
||||||
|
ZIP_EXTERNAL_DEBUG_SYMBOLS=false
|
||||||
|
elif test "x$with_native_debug_symbols" = xzipped; then
|
||||||
|
|
||||||
if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
|
if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
|
||||||
if test "x$OBJCOPY" = x; then
|
if test "x$OBJCOPY" = x; then
|
||||||
@@ -325,27 +349,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
|||||||
COMPILE_WITH_DEBUG_SYMBOLS=true
|
COMPILE_WITH_DEBUG_SYMBOLS=true
|
||||||
COPY_DEBUG_SYMBOLS=true
|
COPY_DEBUG_SYMBOLS=true
|
||||||
ZIP_EXTERNAL_DEBUG_SYMBOLS=true
|
ZIP_EXTERNAL_DEBUG_SYMBOLS=true
|
||||||
elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then
|
|
||||||
COMPILE_WITH_DEBUG_SYMBOLS=false
|
|
||||||
COPY_DEBUG_SYMBOLS=false
|
|
||||||
ZIP_EXTERNAL_DEBUG_SYMBOLS=false
|
|
||||||
elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then
|
|
||||||
COMPILE_WITH_DEBUG_SYMBOLS=true
|
|
||||||
COPY_DEBUG_SYMBOLS=false
|
|
||||||
ZIP_EXTERNAL_DEBUG_SYMBOLS=false
|
|
||||||
elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then
|
|
||||||
|
|
||||||
if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
|
|
||||||
if test "x$OBJCOPY" = x; then
|
|
||||||
# enabling of enable-debug-symbols and can't find objcopy
|
|
||||||
# this is an error
|
|
||||||
AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
COMPILE_WITH_DEBUG_SYMBOLS=true
|
|
||||||
COPY_DEBUG_SYMBOLS=true
|
|
||||||
ZIP_EXTERNAL_DEBUG_SYMBOLS=false
|
|
||||||
else
|
else
|
||||||
AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped])
|
AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped])
|
||||||
fi
|
fi
|
||||||
@@ -363,6 +366,33 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
|||||||
AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS)
|
AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS)
|
||||||
AC_SUBST(COPY_DEBUG_SYMBOLS)
|
AC_SUBST(COPY_DEBUG_SYMBOLS)
|
||||||
AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS)
|
AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS)
|
||||||
|
|
||||||
|
# Should we add external native debug symbols to the shipped bundles?
|
||||||
|
AC_MSG_CHECKING([if we should add external native debug symbols to the shipped bundles])
|
||||||
|
AC_ARG_WITH([external-symbols-in-bundles],
|
||||||
|
[AS_HELP_STRING([--with-external-symbols-in-bundles],
|
||||||
|
[which type of external native debug symbol information shall be shipped in product bundles (none, public, full)
|
||||||
|
(e.g. ship full/stripped pdbs on Windows) @<:@none@:>@])])
|
||||||
|
|
||||||
|
if test "x$with_external_symbols_in_bundles" = x || test "x$with_external_symbols_in_bundles" = xnone ; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
elif test "x$with_external_symbols_in_bundles" = xfull || test "x$with_external_symbols_in_bundles" = xpublic ; then
|
||||||
|
if test "x$OPENJDK_TARGET_OS" != xwindows ; then
|
||||||
|
AC_MSG_ERROR([--with-external-symbols-in-bundles currently only works on windows!])
|
||||||
|
elif test "x$COPY_DEBUG_SYMBOLS" != xtrue ; then
|
||||||
|
AC_MSG_ERROR([--with-external-symbols-in-bundles only works when --with-native-debug-symbols=external is used!])
|
||||||
|
elif test "x$with_external_symbols_in_bundles" = xfull ; then
|
||||||
|
AC_MSG_RESULT([full])
|
||||||
|
SHIP_DEBUG_SYMBOLS=full
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([public])
|
||||||
|
SHIP_DEBUG_SYMBOLS=public
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([$with_external_symbols_in_bundles is an unknown value for --with-external-symbols-in-bundles])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(SHIP_DEBUG_SYMBOLS)
|
||||||
])
|
])
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -630,3 +660,35 @@ AC_DEFUN([JDKOPT_ENABLE_DISABLE_MANPAGES],
|
|||||||
|
|
||||||
AC_SUBST(BUILD_MANPAGES)
|
AC_SUBST(BUILD_MANPAGES)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Disallow any output from containing absolute paths from the build system.
|
||||||
|
# This setting defaults to allowed on debug builds and not allowed on release
|
||||||
|
# builds.
|
||||||
|
#
|
||||||
|
AC_DEFUN([JDKOPT_ALLOW_ABSOLUTE_PATHS_IN_OUTPUT],
|
||||||
|
[
|
||||||
|
AC_ARG_ENABLE([absolute-paths-in-output],
|
||||||
|
[AS_HELP_STRING([--disable-absolute-paths-in-output],
|
||||||
|
[Set to disable to prevent any absolute paths from the build to end up in
|
||||||
|
any of the build output. @<:@disabled in release builds, otherwise enabled@:>@])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if absolute paths should be allowed in the build output])
|
||||||
|
if test "x$enable_absolute_paths_in_output" = "xno"; then
|
||||||
|
AC_MSG_RESULT([no, forced])
|
||||||
|
ALLOW_ABSOLUTE_PATHS_IN_OUTPUT="false"
|
||||||
|
elif test "x$enable_absolute_paths_in_output" = "xyes"; then
|
||||||
|
AC_MSG_RESULT([yes, forced])
|
||||||
|
ALLOW_ABSOLUTE_PATHS_IN_OUTPUT="true"
|
||||||
|
elif test "x$DEBUG_LEVEL" = "xrelease"; then
|
||||||
|
AC_MSG_RESULT([no, release build])
|
||||||
|
ALLOW_ABSOLUTE_PATHS_IN_OUTPUT="false"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([yes, debug build])
|
||||||
|
ALLOW_ABSOLUTE_PATHS_IN_OUTPUT="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(ALLOW_ABSOLUTE_PATHS_IN_OUTPUT)
|
||||||
|
])
|
||||||
|
|||||||
@@ -143,7 +143,9 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
|||||||
AC_MSG_ERROR([--with-vendor-url must have a value])
|
AC_MSG_ERROR([--with-vendor-url must have a value])
|
||||||
elif [ ! [[ $with_vendor_url =~ ^[[:print:]]*$ ]] ]; then
|
elif [ ! [[ $with_vendor_url =~ ^[[:print:]]*$ ]] ]; then
|
||||||
AC_MSG_ERROR([--with-vendor-url contains non-printing characters: $with_vendor_url])
|
AC_MSG_ERROR([--with-vendor-url contains non-printing characters: $with_vendor_url])
|
||||||
else
|
elif test "x$with_vendor_url" != x; then
|
||||||
|
# Only set VENDOR_URL if '--with-vendor-url' was used and is not empty.
|
||||||
|
# Otherwise we will use the value from "version-numbers" included above.
|
||||||
VENDOR_URL="$with_vendor_url"
|
VENDOR_URL="$with_vendor_url"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(VENDOR_URL)
|
AC_SUBST(VENDOR_URL)
|
||||||
@@ -155,7 +157,9 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
|||||||
AC_MSG_ERROR([--with-vendor-bug-url must have a value])
|
AC_MSG_ERROR([--with-vendor-bug-url must have a value])
|
||||||
elif [ ! [[ $with_vendor_bug_url =~ ^[[:print:]]*$ ]] ]; then
|
elif [ ! [[ $with_vendor_bug_url =~ ^[[:print:]]*$ ]] ]; then
|
||||||
AC_MSG_ERROR([--with-vendor-bug-url contains non-printing characters: $with_vendor_bug_url])
|
AC_MSG_ERROR([--with-vendor-bug-url contains non-printing characters: $with_vendor_bug_url])
|
||||||
else
|
elif test "x$with_vendor_bug_url" != x; then
|
||||||
|
# Only set VENDOR_URL_BUG if '--with-vendor-bug-url' was used and is not empty.
|
||||||
|
# Otherwise we will use the value from "version-numbers" included above.
|
||||||
VENDOR_URL_BUG="$with_vendor_bug_url"
|
VENDOR_URL_BUG="$with_vendor_bug_url"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(VENDOR_URL_BUG)
|
AC_SUBST(VENDOR_URL_BUG)
|
||||||
@@ -167,7 +171,9 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
|||||||
AC_MSG_ERROR([--with-vendor-vm-bug-url must have a value])
|
AC_MSG_ERROR([--with-vendor-vm-bug-url must have a value])
|
||||||
elif [ ! [[ $with_vendor_vm_bug_url =~ ^[[:print:]]*$ ]] ]; then
|
elif [ ! [[ $with_vendor_vm_bug_url =~ ^[[:print:]]*$ ]] ]; then
|
||||||
AC_MSG_ERROR([--with-vendor-vm-bug-url contains non-printing characters: $with_vendor_vm_bug_url])
|
AC_MSG_ERROR([--with-vendor-vm-bug-url contains non-printing characters: $with_vendor_vm_bug_url])
|
||||||
else
|
elif test "x$with_vendor_vm_bug_url" != x; then
|
||||||
|
# Only set VENDOR_URL_VM_BUG if '--with-vendor-vm-bug-url' was used and is not empty.
|
||||||
|
# Otherwise we will use the value from "version-numbers" included above.
|
||||||
VENDOR_URL_VM_BUG="$with_vendor_vm_bug_url"
|
VENDOR_URL_VM_BUG="$with_vendor_vm_bug_url"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(VENDOR_URL_VM_BUG)
|
AC_SUBST(VENDOR_URL_VM_BUG)
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ AC_DEFUN_ONCE([LIB_SETUP_BUNDLED_LIBS],
|
|||||||
LIB_SETUP_LIBPNG
|
LIB_SETUP_LIBPNG
|
||||||
LIB_SETUP_ZLIB
|
LIB_SETUP_ZLIB
|
||||||
LIB_SETUP_LCMS
|
LIB_SETUP_LCMS
|
||||||
|
LIB_SETUP_HARFBUZZ
|
||||||
])
|
])
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -260,3 +261,43 @@ AC_DEFUN_ONCE([LIB_SETUP_LCMS],
|
|||||||
AC_SUBST(LCMS_CFLAGS)
|
AC_SUBST(LCMS_CFLAGS)
|
||||||
AC_SUBST(LCMS_LIBS)
|
AC_SUBST(LCMS_LIBS)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup harfbuzz
|
||||||
|
################################################################################
|
||||||
|
AC_DEFUN_ONCE([LIB_SETUP_HARFBUZZ],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(harfbuzz, [AS_HELP_STRING([--with-harfbuzz],
|
||||||
|
[use harfbuzz from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for which harfbuzz to use])
|
||||||
|
|
||||||
|
DEFAULT_HARFBUZZ=bundled
|
||||||
|
# If user didn't specify, use DEFAULT_HARFBUZZ
|
||||||
|
if test "x${with_harfbuzz}" = "x"; then
|
||||||
|
with_harfbuzz=${DEFAULT_HARFBUZZ}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x${with_harfbuzz}" = "xbundled"; then
|
||||||
|
USE_EXTERNAL_HARFBUZZ=false
|
||||||
|
HARFBUZZ_CFLAGS=""
|
||||||
|
HARFBUZZ_LIBS=""
|
||||||
|
AC_MSG_RESULT([bundled])
|
||||||
|
elif test "x${with_harfbuzz}" = "xsystem"; then
|
||||||
|
AC_MSG_RESULT([system])
|
||||||
|
PKG_CHECK_MODULES([HARFBUZZ], [harfbuzz], [HARFBUZZ_FOUND=yes], [HARFBUZZ_FOUND=no])
|
||||||
|
if test "x${HARFBUZZ_FOUND}" = "xyes"; then
|
||||||
|
# PKG_CHECK_MODULES will set HARFBUZZ_CFLAGS and HARFBUZZ_LIBS
|
||||||
|
USE_EXTERNAL_HARFBUZZ=true
|
||||||
|
else
|
||||||
|
HELP_MSG_MISSING_DEPENDENCY([harfbuzz])
|
||||||
|
AC_MSG_ERROR([--with-harfbuzz=system specified, but no harfbuzz found! $HELP_MSG])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Invalid value for --with-harfbuzz: ${with_harfbuzz}, use 'system' or 'bundled'])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(USE_EXTERNAL_HARFBUZZ)
|
||||||
|
AC_SUBST(HARFBUZZ_CFLAGS)
|
||||||
|
AC_SUBST(HARFBUZZ_LIBS)
|
||||||
|
])
|
||||||
|
|||||||
@@ -85,6 +85,20 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBFFI],
|
|||||||
[LIBFFI_FOUND=no]
|
[LIBFFI_FOUND=no]
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
|
# on macos we need a special case for system's libffi as
|
||||||
|
# headers are located only in sdk in $SYSROOT and in ffi subfolder
|
||||||
|
if test "x$LIBFFI_FOUND" = xno; then
|
||||||
|
if test "x$SYSROOT" != "x"; then
|
||||||
|
AC_CHECK_HEADER([$SYSROOT/usr/include/ffi/ffi.h],
|
||||||
|
[
|
||||||
|
LIBFFI_FOUND=yes
|
||||||
|
LIBFFI_CFLAGS="-I${SYSROOT}/usr/include/ffi"
|
||||||
|
LIBFFI_LIBS=-lffi
|
||||||
|
],
|
||||||
|
[LIBFFI_FOUND=no]
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
if test "x$LIBFFI_FOUND" = xno; then
|
if test "x$LIBFFI_FOUND" = xno; then
|
||||||
HELP_MSG_MISSING_DEPENDENCY([ffi])
|
HELP_MSG_MISSING_DEPENDENCY([ffi])
|
||||||
AC_MSG_ERROR([Could not find libffi! $HELP_MSG])
|
AC_MSG_ERROR([Could not find libffi! $HELP_MSG])
|
||||||
|
|||||||
@@ -49,10 +49,23 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
|
|||||||
VAR_CPU_ENDIAN=little
|
VAR_CPU_ENDIAN=little
|
||||||
;;
|
;;
|
||||||
arm*)
|
arm*)
|
||||||
VAR_CPU=arm
|
# Second argument is the os name from the trip/quad.
|
||||||
VAR_CPU_ARCH=arm
|
# on macos-aarch64, triplet returned by autoconf is
|
||||||
VAR_CPU_BITS=32
|
# arm-darwin*, but on darwin only aarch64 is present.
|
||||||
VAR_CPU_ENDIAN=little
|
case "$2" in
|
||||||
|
*darwin*)
|
||||||
|
VAR_CPU=aarch64
|
||||||
|
VAR_CPU_ARCH=aarch64
|
||||||
|
VAR_CPU_BITS=64
|
||||||
|
VAR_CPU_ENDIAN=little
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
VAR_CPU=arm
|
||||||
|
VAR_CPU_ARCH=arm
|
||||||
|
VAR_CPU_BITS=32
|
||||||
|
VAR_CPU_ENDIAN=little
|
||||||
|
;;
|
||||||
|
esac
|
||||||
;;
|
;;
|
||||||
aarch64)
|
aarch64)
|
||||||
VAR_CPU=aarch64
|
VAR_CPU=aarch64
|
||||||
@@ -215,7 +228,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
|||||||
|
|
||||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||||
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
|
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
|
||||||
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
|
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu, $build_os)
|
||||||
# ..and setup our own variables. (Do this explicitly to facilitate searching)
|
# ..and setup our own variables. (Do this explicitly to facilitate searching)
|
||||||
OPENJDK_BUILD_OS="$VAR_OS"
|
OPENJDK_BUILD_OS="$VAR_OS"
|
||||||
if test "x$VAR_OS_TYPE" != x; then
|
if test "x$VAR_OS_TYPE" != x; then
|
||||||
@@ -245,7 +258,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
|||||||
|
|
||||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||||
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
|
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
|
||||||
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
|
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu, $host_os)
|
||||||
# ... and setup our own variables. (Do this explicitly to facilitate searching)
|
# ... and setup our own variables. (Do this explicitly to facilitate searching)
|
||||||
OPENJDK_TARGET_OS="$VAR_OS"
|
OPENJDK_TARGET_OS="$VAR_OS"
|
||||||
if test "x$VAR_OS_TYPE" != x; then
|
if test "x$VAR_OS_TYPE" != x; then
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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
|
||||||
@@ -130,8 +130,9 @@ SYSROOT_LDFLAGS := @SYSROOT_LDFLAGS@
|
|||||||
|
|
||||||
# The top-level directory of the source repository
|
# The top-level directory of the source repository
|
||||||
TOPDIR:=@TOPDIR@
|
TOPDIR:=@TOPDIR@
|
||||||
|
# Usually the top level directory, but could be something else if a custom
|
||||||
|
# root is defined.
|
||||||
|
WORKSPACE_ROOT:=@WORKSPACE_ROOT@
|
||||||
IMPORT_MODULES_CLASSES:=@IMPORT_MODULES_CLASSES@
|
IMPORT_MODULES_CLASSES:=@IMPORT_MODULES_CLASSES@
|
||||||
IMPORT_MODULES_CMDS:=@IMPORT_MODULES_CMDS@
|
IMPORT_MODULES_CMDS:=@IMPORT_MODULES_CMDS@
|
||||||
IMPORT_MODULES_LIBS:=@IMPORT_MODULES_LIBS@
|
IMPORT_MODULES_LIBS:=@IMPORT_MODULES_LIBS@
|
||||||
@@ -229,7 +230,8 @@ ifneq ($(COMPANY_NAME),)
|
|||||||
# Only export "VENDOR" to the build if COMPANY_NAME contains a real value.
|
# Only export "VENDOR" to the build if COMPANY_NAME contains a real value.
|
||||||
# Otherwise the default value for VENDOR, which is used to set the "java.vendor"
|
# Otherwise the default value for VENDOR, which is used to set the "java.vendor"
|
||||||
# and "java.vm.vendor" properties is hard-coded into the source code (i.e. in
|
# and "java.vm.vendor" properties is hard-coded into the source code (i.e. in
|
||||||
# System.c in the jdk for "vm.vendor" and vm_version.cpp in the VM for "java.vm.vendor")
|
# VersionProps.java.template in the jdk for "java.vendor" and
|
||||||
|
# vm_version.cpp in the VM for "java.vm.vendor")
|
||||||
ifneq ($(COMPANY_NAME), N/A)
|
ifneq ($(COMPANY_NAME), N/A)
|
||||||
VERSION_CFLAGS += -DVENDOR='"$(COMPANY_NAME)"'
|
VERSION_CFLAGS += -DVENDOR='"$(COMPANY_NAME)"'
|
||||||
endif
|
endif
|
||||||
@@ -285,6 +287,9 @@ USE_PRECOMPILED_HEADER := @USE_PRECOMPILED_HEADER@
|
|||||||
# Only build headless support or not
|
# Only build headless support or not
|
||||||
ENABLE_HEADLESS_ONLY := @ENABLE_HEADLESS_ONLY@
|
ENABLE_HEADLESS_ONLY := @ENABLE_HEADLESS_ONLY@
|
||||||
|
|
||||||
|
# Ship debug symbols (e.g. pdbs on Windows)
|
||||||
|
SHIP_DEBUG_SYMBOLS := @SHIP_DEBUG_SYMBOLS@
|
||||||
|
|
||||||
ENABLE_FULL_DOCS := @ENABLE_FULL_DOCS@
|
ENABLE_FULL_DOCS := @ENABLE_FULL_DOCS@
|
||||||
|
|
||||||
# JDK_OUTPUTDIR specifies where a working jvm is built.
|
# JDK_OUTPUTDIR specifies where a working jvm is built.
|
||||||
@@ -314,6 +319,8 @@ EXCLUDE_TRANSLATIONS := @EXCLUDE_TRANSLATIONS@
|
|||||||
|
|
||||||
BUILD_MANPAGES := @BUILD_MANPAGES@
|
BUILD_MANPAGES := @BUILD_MANPAGES@
|
||||||
|
|
||||||
|
ALLOW_ABSOLUTE_PATHS_IN_OUTPUT := @ALLOW_ABSOLUTE_PATHS_IN_OUTPUT@
|
||||||
|
|
||||||
# The boot jdk to use. This is overridden in bootcycle-spec.gmk. Make sure to keep
|
# The boot jdk to use. This is overridden in bootcycle-spec.gmk. Make sure to keep
|
||||||
# it in sync.
|
# it in sync.
|
||||||
BOOT_JDK:=@BOOT_JDK@
|
BOOT_JDK:=@BOOT_JDK@
|
||||||
@@ -357,6 +364,9 @@ LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
|
|||||||
ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
|
ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
|
||||||
LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@
|
LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@
|
||||||
GRAALUNIT_LIB := @GRAALUNIT_LIB@
|
GRAALUNIT_LIB := @GRAALUNIT_LIB@
|
||||||
|
FILE_MACRO_CFLAGS := @FILE_MACRO_CFLAGS@
|
||||||
|
|
||||||
|
STATIC_LIBS_CFLAGS := @STATIC_LIBS_CFLAGS@
|
||||||
|
|
||||||
PACKAGE_PATH=@PACKAGE_PATH@
|
PACKAGE_PATH=@PACKAGE_PATH@
|
||||||
|
|
||||||
@@ -387,6 +397,9 @@ 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
|
||||||
|
MACOSX_CODESIGN_IDENTITY=@MACOSX_CODESIGN_IDENTITY@
|
||||||
|
|
||||||
# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
|
# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
|
||||||
TOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
|
TOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
|
||||||
TOOLCHAIN_VERSION := @TOOLCHAIN_VERSION@
|
TOOLCHAIN_VERSION := @TOOLCHAIN_VERSION@
|
||||||
@@ -462,6 +475,7 @@ JVM_RCFLAGS := @JVM_RCFLAGS@
|
|||||||
EXTRA_CFLAGS = @EXTRA_CFLAGS@
|
EXTRA_CFLAGS = @EXTRA_CFLAGS@
|
||||||
EXTRA_CXXFLAGS = @EXTRA_CXXFLAGS@
|
EXTRA_CXXFLAGS = @EXTRA_CXXFLAGS@
|
||||||
EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
|
EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
|
||||||
|
EXTRA_ASFLAGS = @EXTRA_ASFLAGS@
|
||||||
|
|
||||||
CXX:=@FIXPATH@ @CCACHE@ @ICECC@ @CXX@
|
CXX:=@FIXPATH@ @CCACHE@ @ICECC@ @CXX@
|
||||||
|
|
||||||
@@ -470,6 +484,9 @@ CPP:=@FIXPATH@ @CPP@
|
|||||||
# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
|
# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
|
||||||
LD:=@FIXPATH@ @LD@
|
LD:=@FIXPATH@ @LD@
|
||||||
|
|
||||||
|
# Linker used by the jaotc tool for AOT compilation.
|
||||||
|
LD_JAOTC:=@LD_JAOTC@
|
||||||
|
|
||||||
# Xcode SDK path
|
# Xcode SDK path
|
||||||
SDKROOT:=@SDKROOT@
|
SDKROOT:=@SDKROOT@
|
||||||
|
|
||||||
@@ -600,7 +617,7 @@ JAVA_JAVAC=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_JAVAC) $(JAVA_FLAGS)
|
|||||||
JAVAC=@FIXPATH@ $(JAVAC_CMD)
|
JAVAC=@FIXPATH@ $(JAVAC_CMD)
|
||||||
JAVADOC=@FIXPATH@ $(JAVADOC_CMD)
|
JAVADOC=@FIXPATH@ $(JAVADOC_CMD)
|
||||||
JAR=@FIXPATH@ $(JAR_CMD)
|
JAR=@FIXPATH@ $(JAR_CMD)
|
||||||
JLINK = @FIXPATH@ $(JLINK_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
JLINK = @FIXPATH@ $(JLINK_CMD)
|
||||||
JMOD = @FIXPATH@ $(JMOD_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
JMOD = @FIXPATH@ $(JMOD_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
||||||
JARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
|
JARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
|
||||||
# A specific java binary with specific options can be used to run
|
# A specific java binary with specific options can be used to run
|
||||||
@@ -731,7 +748,7 @@ SETFILE:=@SETFILE@
|
|||||||
XATTR:=@XATTR@
|
XATTR:=@XATTR@
|
||||||
JT_HOME:=@JT_HOME@
|
JT_HOME:=@JT_HOME@
|
||||||
JTREGEXE:=@JTREGEXE@
|
JTREGEXE:=@JTREGEXE@
|
||||||
JIB_JAR:=@JIB_JAR@
|
JIB_HOME:=@JIB_HOME@
|
||||||
XCODEBUILD=@XCODEBUILD@
|
XCODEBUILD=@XCODEBUILD@
|
||||||
DTRACE := @DTRACE@
|
DTRACE := @DTRACE@
|
||||||
FIXPATH:=@FIXPATH@
|
FIXPATH:=@FIXPATH@
|
||||||
@@ -815,6 +832,10 @@ USE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@
|
|||||||
LCMS_CFLAGS:=@LCMS_CFLAGS@
|
LCMS_CFLAGS:=@LCMS_CFLAGS@
|
||||||
LCMS_LIBS:=@LCMS_LIBS@
|
LCMS_LIBS:=@LCMS_LIBS@
|
||||||
|
|
||||||
|
USE_EXTERNAL_HARFBUZZ:=@USE_EXTERNAL_HARFBUZZ@
|
||||||
|
HARFBUZZ_CFLAGS:=@HARFBUZZ_CFLAGS@
|
||||||
|
HARFBUZZ_LIBS:=@HARFBUZZ_LIBS@
|
||||||
|
|
||||||
USE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
|
USE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
|
||||||
PNG_LIBS:=@PNG_LIBS@
|
PNG_LIBS:=@PNG_LIBS@
|
||||||
PNG_CFLAGS:=@PNG_CFLAGS@
|
PNG_CFLAGS:=@PNG_CFLAGS@
|
||||||
@@ -858,13 +879,27 @@ DOCS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
|
|||||||
# Output docs directly into image
|
# Output docs directly into image
|
||||||
DOCS_OUTPUTDIR := $(DOCS_IMAGE_DIR)
|
DOCS_OUTPUTDIR := $(DOCS_IMAGE_DIR)
|
||||||
|
|
||||||
|
# Static libs image
|
||||||
|
STATIC_LIBS_IMAGE_SUBDIR := static-libs
|
||||||
|
STATIC_LIBS_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(STATIC_LIBS_IMAGE_SUBDIR)
|
||||||
|
|
||||||
|
# Graal builder image
|
||||||
|
GRAAL_BUILDER_IMAGE_SUBDIR := graal-builder-jdk
|
||||||
|
GRAAL_BUILDER_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(GRAAL_BUILDER_IMAGE_SUBDIR)
|
||||||
|
|
||||||
# Macosx bundles directory definitions
|
# Macosx bundles directory definitions
|
||||||
JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
|
JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
|
||||||
JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle
|
JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle
|
||||||
|
JDK_MACOSX_BUNDLE_SUBDIR_SIGNED=jdk-bundle-signed
|
||||||
|
JRE_MACOSX_BUNDLE_SUBDIR_SIGNED=jre-bundle-signed
|
||||||
JDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
|
JDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
|
||||||
JRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
|
JRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
|
||||||
JDK_MACOSX_CONTENTS_SUBDIR=jdk-$(VERSION_NUMBER).jdk/Contents
|
JDK_MACOSX_BUNDLE_DIR_SIGNED=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR_SIGNED)
|
||||||
JRE_MACOSX_CONTENTS_SUBDIR=jre-$(VERSION_NUMBER).jre/Contents
|
JRE_MACOSX_BUNDLE_DIR_SIGNED=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR_SIGNED)
|
||||||
|
JDK_MACOSX_BUNDLE_TOP_DIR=jdk-$(VERSION_NUMBER).jdk
|
||||||
|
JRE_MACOSX_BUNDLE_TOP_DIR=jre-$(VERSION_NUMBER).jre
|
||||||
|
JDK_MACOSX_CONTENTS_SUBDIR=$(JDK_MACOSX_BUNDLE_TOP_DIR)/Contents
|
||||||
|
JRE_MACOSX_CONTENTS_SUBDIR=$(JRE_MACOSX_BUNDLE_TOP_DIR)/Contents
|
||||||
JDK_MACOSX_CONTENTS_DIR=$(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR)
|
JDK_MACOSX_CONTENTS_DIR=$(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR)
|
||||||
JRE_MACOSX_CONTENTS_DIR=$(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR)
|
JRE_MACOSX_CONTENTS_DIR=$(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR)
|
||||||
|
|
||||||
@@ -886,6 +921,7 @@ JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
|
|||||||
TEST_DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests-demos$(DEBUG_PART).tar.gz
|
TEST_DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests-demos$(DEBUG_PART).tar.gz
|
||||||
TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz
|
TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz
|
||||||
DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
||||||
|
STATIC_LIBS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-static-libs$(DEBUG_PART).tar.gz
|
||||||
|
|
||||||
JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME)
|
JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME)
|
||||||
JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME)
|
JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME)
|
||||||
|
|||||||
@@ -429,9 +429,10 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION],
|
|||||||
# There is no specific version flag, but all output starts with a version string.
|
# There is no specific version flag, but all output starts with a version string.
|
||||||
# First line typically looks something like:
|
# First line typically looks something like:
|
||||||
# Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
|
# Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
|
||||||
|
# but the compiler name may vary depending on locale.
|
||||||
COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
|
COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
|
||||||
# Check that this is likely to be Microsoft CL.EXE.
|
# Check that this is likely to be Microsoft CL.EXE.
|
||||||
$ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null
|
$ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft" > /dev/null
|
||||||
if test $? -ne 0; then
|
if test $? -ne 0; then
|
||||||
AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.])
|
AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.])
|
||||||
AC_MSG_NOTICE([The result from running it was: "$COMPILER_VERSION_OUTPUT"])
|
AC_MSG_NOTICE([The result from running it was: "$COMPILER_VERSION_OUTPUT"])
|
||||||
@@ -460,7 +461,7 @@ AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION],
|
|||||||
COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
|
COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
|
||||||
$SED -e 's/ *Copyright .*//'`
|
$SED -e 's/ *Copyright .*//'`
|
||||||
COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
|
COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
|
||||||
$SED -e 's/^.* \(@<:@1-9@:>@\.@<:@0-9.@:>@*\)@<:@^0-9.@:>@.*$/\1/'`
|
$SED -e 's/^.* \(@<:@1-9@:>@<:@0-9@:>@*\.@<:@0-9.@:>@*\)@<:@^0-9.@:>@.*$/\1/'`
|
||||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
# clang --version output typically looks like
|
# clang --version output typically looks like
|
||||||
# Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
|
# Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
|
||||||
@@ -589,7 +590,7 @@ AC_DEFUN([TOOLCHAIN_FIND_COMPILER],
|
|||||||
AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION],
|
AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION],
|
||||||
[
|
[
|
||||||
LINKER=[$]$1
|
LINKER=[$]$1
|
||||||
LINKER_NAME=$2
|
LINKER_NAME="$2"
|
||||||
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||||
# cc -Wl,-V output typically looks like
|
# cc -Wl,-V output typically looks like
|
||||||
@@ -709,12 +710,18 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
|
|||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
fi
|
fi
|
||||||
LDCXX="$LD"
|
LDCXX="$LD"
|
||||||
|
# jaotc being a windows program expects the linker to be supplied with exe suffix.
|
||||||
|
LD_JAOTC="$LD$EXE_SUFFIX"
|
||||||
else
|
else
|
||||||
# All other toolchains use the compiler to link.
|
# All other toolchains use the compiler to link.
|
||||||
LD="$CC"
|
LD="$CC"
|
||||||
LDCXX="$CXX"
|
LDCXX="$CXX"
|
||||||
|
# jaotc expects 'ld' as the linker rather than the compiler.
|
||||||
|
BASIC_CHECK_TOOLS([LD_JAOTC], ld)
|
||||||
|
BASIC_FIXUP_EXECUTABLE(LD_JAOTC)
|
||||||
fi
|
fi
|
||||||
AC_SUBST(LD)
|
AC_SUBST(LD)
|
||||||
|
AC_SUBST(LD_JAOTC)
|
||||||
# FIXME: it should be CXXLD, according to standard (cf CXXCPP)
|
# FIXME: it should be CXXLD, according to standard (cf CXXCPP)
|
||||||
AC_SUBST(LDCXX)
|
AC_SUBST(LDCXX)
|
||||||
|
|
||||||
@@ -941,9 +948,14 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
|||||||
# FIXME: we should list the discovered compilers as an exclude pattern!
|
# FIXME: we should list the discovered compilers as an exclude pattern!
|
||||||
# If we do that, we can do this detection before POST_DETECTION, and still
|
# If we do that, we can do this detection before POST_DETECTION, and still
|
||||||
# find the build compilers in the tools dir, if needed.
|
# find the build compilers in the tools dir, if needed.
|
||||||
BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
|
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||||
|
BASIC_REQUIRE_PROGS(BUILD_CC, [clang cl cc gcc])
|
||||||
|
BASIC_REQUIRE_PROGS(BUILD_CXX, [clang++ cl CC g++])
|
||||||
|
else
|
||||||
|
BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
|
||||||
|
BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
|
||||||
|
fi
|
||||||
BASIC_FIXUP_EXECUTABLE(BUILD_CC)
|
BASIC_FIXUP_EXECUTABLE(BUILD_CC)
|
||||||
BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
|
|
||||||
BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
|
BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
|
||||||
BASIC_PATH_PROGS(BUILD_NM, nm gcc-nm)
|
BASIC_PATH_PROGS(BUILD_NM, nm gcc-nm)
|
||||||
BASIC_FIXUP_EXECUTABLE(BUILD_NM)
|
BASIC_FIXUP_EXECUTABLE(BUILD_NM)
|
||||||
@@ -1022,6 +1034,12 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
|
|||||||
# This is later checked when setting flags.
|
# This is later checked when setting flags.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
|
# Check if linker has -z noexecstack.
|
||||||
|
HAS_NOEXECSTACK=`$CC -Wl,--help 2>/dev/null | $GREP 'z noexecstack'`
|
||||||
|
# This is later checked when setting flags.
|
||||||
|
fi
|
||||||
|
|
||||||
# Setup hotspot lecagy names for toolchains
|
# Setup hotspot lecagy names for toolchains
|
||||||
HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
|
HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
|
||||||
if test "x$TOOLCHAIN_TYPE" = xclang; then
|
if test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||||
@@ -1144,5 +1162,5 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JIB],
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST(JIB_JAR)
|
AC_SUBST(JIB_HOME)
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -185,6 +185,8 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
|||||||
eval SDK_INSTALL_DIR="\${VS_SDK_INSTALLDIR_${VS_VERSION}}"
|
eval SDK_INSTALL_DIR="\${VS_SDK_INSTALLDIR_${VS_VERSION}}"
|
||||||
eval VS_ENV_ARGS="\${VS_ENV_ARGS_${VS_VERSION}}"
|
eval VS_ENV_ARGS="\${VS_ENV_ARGS_${VS_VERSION}}"
|
||||||
|
|
||||||
|
VS_ENV_CMD=""
|
||||||
|
|
||||||
# When using --with-tools-dir, assume it points to the correct and default
|
# When using --with-tools-dir, assume it points to the correct and default
|
||||||
# version of Visual Studio or that --with-toolchain-version was also set.
|
# version of Visual Studio or that --with-toolchain-version was also set.
|
||||||
if test "x$with_tools_dir" != x; then
|
if test "x$with_tools_dir" != x; then
|
||||||
@@ -202,8 +204,6 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
VS_ENV_CMD=""
|
|
||||||
|
|
||||||
if test "x$VS_COMNTOOLS" != x; then
|
if test "x$VS_COMNTOOLS" != x; then
|
||||||
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
|
||||||
[$VS_COMNTOOLS/../..], [$VS_COMNTOOLS_VAR variable])
|
[$VS_COMNTOOLS/../..], [$VS_COMNTOOLS_VAR variable])
|
||||||
@@ -693,7 +693,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
|||||||
if test "x$USE_UCRT" = "xtrue"; then
|
if test "x$USE_UCRT" = "xtrue"; then
|
||||||
AC_MSG_CHECKING([for UCRT DLL dir])
|
AC_MSG_CHECKING([for UCRT DLL dir])
|
||||||
if test "x$with_ucrt_dll_dir" != x; then
|
if test "x$with_ucrt_dll_dir" != x; then
|
||||||
if test -z "$(ls -d "$with_ucrt_dll_dir/*.dll" 2> /dev/null)"; then
|
if test -z "$(ls -d "$with_ucrt_dll_dir/"*.dll 2> /dev/null)"; then
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
AC_MSG_ERROR([Could not find any dlls in $with_ucrt_dll_dir])
|
AC_MSG_ERROR([Could not find any dlls in $with_ucrt_dll_dir])
|
||||||
else
|
else
|
||||||
@@ -713,8 +713,16 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
|||||||
fi
|
fi
|
||||||
UCRT_DLL_DIR="$CYGWIN_WINDOWSSDKDIR/Redist/ucrt/DLLs/$dll_subdir"
|
UCRT_DLL_DIR="$CYGWIN_WINDOWSSDKDIR/Redist/ucrt/DLLs/$dll_subdir"
|
||||||
if test -z "$(ls -d "$UCRT_DLL_DIR/"*.dll 2> /dev/null)"; then
|
if test -z "$(ls -d "$UCRT_DLL_DIR/"*.dll 2> /dev/null)"; then
|
||||||
AC_MSG_RESULT([no])
|
# Try with version subdir
|
||||||
AC_MSG_ERROR([Could not find any dlls in $UCRT_DLL_DIR])
|
UCRT_DLL_DIR="`ls -d $CYGWIN_WINDOWSSDKDIR/Redist/*/ucrt/DLLs/$dll_subdir \
|
||||||
|
2> /dev/null | $SORT -d | $HEAD -n1`"
|
||||||
|
if test -z "$UCRT_DLL_DIR" \
|
||||||
|
|| test -z "$(ls -d "$UCRT_DLL_DIR/"*.dll 2> /dev/null)"; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_ERROR([Could not find any dlls in $UCRT_DLL_DIR])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT($UCRT_DLL_DIR)
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT($UCRT_DLL_DIR)
|
AC_MSG_RESULT($UCRT_DLL_DIR)
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# 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,19 +23,21 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Default version numbers to use unless overridden by configure
|
# Default version, product, and vendor information to use,
|
||||||
|
# unless overridden by configure
|
||||||
|
|
||||||
DEFAULT_VERSION_FEATURE=11
|
DEFAULT_VERSION_FEATURE=11
|
||||||
DEFAULT_VERSION_INTERIM=0
|
DEFAULT_VERSION_INTERIM=0
|
||||||
DEFAULT_VERSION_UPDATE=5
|
DEFAULT_VERSION_UPDATE=11
|
||||||
DEFAULT_VERSION_PATCH=0
|
DEFAULT_VERSION_PATCH=0
|
||||||
DEFAULT_VERSION_EXTRA1=0
|
DEFAULT_VERSION_EXTRA1=0
|
||||||
DEFAULT_VERSION_EXTRA2=0
|
DEFAULT_VERSION_EXTRA2=0
|
||||||
DEFAULT_VERSION_EXTRA3=0
|
DEFAULT_VERSION_EXTRA3=0
|
||||||
DEFAULT_VERSION_DATE=2019-10-15
|
DEFAULT_VERSION_DATE=2021-04-20
|
||||||
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
||||||
|
DEFAULT_PROMOTED_VERSION_PRE=ea
|
||||||
|
|
||||||
LAUNCHER_NAME=openjdk
|
LAUNCHER_NAME=openjdk
|
||||||
PRODUCT_NAME=OpenJDK
|
PRODUCT_NAME=OpenJDK
|
||||||
@@ -43,6 +45,9 @@ 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_BUG=https://bugreport.java.com/bugreport/
|
||||||
|
VENDOR_URL_VM_BUG=https://bugreport.java.com/bugreport/crash.jsp
|
||||||
|
|
||||||
# Might need better names for these
|
# Might need better names for these
|
||||||
MACOSX_BUNDLE_NAME_BASE="OpenJDK"
|
MACOSX_BUNDLE_NAME_BASE="OpenJDK"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2019, 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
|
||||||
@@ -122,9 +122,9 @@ define SetupJarArchiveBody
|
|||||||
ifeq ($$($1_DEPENDENCIES), )
|
ifeq ($$($1_DEPENDENCIES), )
|
||||||
# Add all source roots to the find cache since we are likely going to run find
|
# Add all source roots to the find cache since we are likely going to run find
|
||||||
# on these more than once. The cache will only be updated if necessary.
|
# on these more than once. The cache will only be updated if necessary.
|
||||||
$$(eval $$(call FillCacheFind, $$($1_FIND_LIST)))
|
$$(call FillFindCache, $$($1_FIND_LIST))
|
||||||
$1_DEPENDENCIES:=$$(filter $$(addprefix %,$$($1_SUFFIXES)), \
|
$1_DEPENDENCIES:=$$(filter $$(addprefix %,$$($1_SUFFIXES)), \
|
||||||
$$(call CacheFind,$$($1_SRCS)))
|
$$(call FindFiles,$$($1_SRCS)))
|
||||||
ifneq (,$$($1_GREP_INCLUDE_PATTERNS))
|
ifneq (,$$($1_GREP_INCLUDE_PATTERNS))
|
||||||
$1_DEPENDENCIES:=$$(filter $$(addsuffix %,$$($1_GREP_INCLUDE_PATTERNS)),$$($1_DEPENDENCIES))
|
$1_DEPENDENCIES:=$$(filter $$(addsuffix %,$$($1_GREP_INCLUDE_PATTERNS)),$$($1_DEPENDENCIES))
|
||||||
endif
|
endif
|
||||||
@@ -135,7 +135,7 @@ define SetupJarArchiveBody
|
|||||||
$1_DEPENDENCIES+=$$(wildcard $$(foreach src, $$($1_SRCS), \
|
$1_DEPENDENCIES+=$$(wildcard $$(foreach src, $$($1_SRCS), \
|
||||||
$$(addprefix $$(src)/, $$($1_EXTRA_FILES))) $$($1_EXTRA_FILES))
|
$$(addprefix $$(src)/, $$($1_EXTRA_FILES))) $$($1_EXTRA_FILES))
|
||||||
ifeq (,$$($1_SKIP_METAINF))
|
ifeq (,$$($1_SKIP_METAINF))
|
||||||
$1_DEPENDENCIES+=$$(call CacheFind,$$(wildcard $$(addsuffix /META-INF,$$($1_SRCS))))
|
$1_DEPENDENCIES+=$$(call FindFiles,$$(wildcard $$(addsuffix /META-INF,$$($1_SRCS))))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
# The dependency list should never be empty
|
# The dependency list should never be empty
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user